From 768a42166035e34360e92f90852f38301aab25ca Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期二, 22 五月 2018 17:29:13 +0800
Subject: [PATCH] 订单受理 同步 异步 逻辑处理完成待测试
---
CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java | 175 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 134 insertions(+), 41 deletions(-)
diff --git a/CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java b/CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java
index 642bcfd..ed101d1 100644
--- a/CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java
+++ b/CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java
@@ -379,7 +379,7 @@
/**
- * 7.0 浣滃簾璁㈠崟鍜屼笟鍔¢」
+ * 7.0 浣滃簾璁㈠崟鍜屼笟鍔¢」 鎻掑叆鎾ゅ崟璁板綍 绛夊緟鎾ゅ崟
*
* @param dataFlow
*/
@@ -392,12 +392,25 @@
return ;
}
+ //濡傛灉宸茬粡浣滃簾 涓嶅瓨鍦� 鎴栧け璐ワ紝鍒欎笉鍋氬鐞�
+
+ Map order = centerServiceDaoImpl.getOrderInfoByBId(dataFlow.getbId());
+
+ if(order == null || !order.containsKey("status_cd") || StatusConstant.STATUS_CD_DELETE.equals(order.get("status_cd"))
+ || StatusConstant.STATUS_CD_ERROR.equals(order.get("status_cd"))){
+ return ;
+ }
+
//浣滃簾 璁㈠崟
centerServiceDaoImpl.updateOrder(DataFlowFactory.getNeedInvalidOrder(dataFlow));
//浣滃簾璁㈠崟椤�
centerServiceDaoImpl.updateBusiness(DataFlowFactory.getNeedInvalidOrder(dataFlow));
+ //灏嗗綋鍓嶈鍗曢」鏀逛负 鎾ゅ崟鐘舵��
+ centerServiceDaoImpl.updateBusinessByBId(DataFlowFactory.getNeedDeleteBusiness(dataFlow));
+ //鎻掑叆鎾ゅ崟璁板綍
+ doAddDeleteOrderBusinessData(dataFlow);
DataFlowFactory.addCostTime(dataFlow, "invalidOrderAndBusiness", "浣滃簾璁㈠崟鍜屼笟鍔¢」鑰楁椂", startDate);
}
@@ -409,14 +422,28 @@
* @param dataFlow
*/
private void invalidCompletedBusinessSystem(DataFlow dataFlow) throws Exception{
+
+ if(!StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
+ return ;
+ }
+
+ //鍒ゆ柇 璁㈠崟instance 鏄惁閮藉彉鎴愪簡鎾ゅ崟鐘舵��
+ if(centerServiceDaoImpl.judgeAllBusinessCompleted(dataFlow.getoId(),StatusConstant.STATUS_CD_DELETE_ORDER) < 1){
+ return ;
+ }
+
// 鏍规嵁 c_business 琛ㄤ腑鐨勫瓧娈礲usiness_type_cd 鎵惧埌瀵瑰簲鐨勬秷鎭槦鍒楀悕绉�
- List<Map> completedBusinesses = centerServiceDaoImpl.getCommonOrderCompledBusinessByBId(dataFlow.getBusinesses().get(0).getbId());
+ Map paramIn = new HashMap();
+ paramIn.put("oId",dataFlow.getoId());
+ paramIn.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
+ List<Map> completedBusinesses = centerServiceDaoImpl.getBusinessByOId(paramIn);
for(AppRoute appRoute :dataFlow.getAppRoutes()){
for(Map completedBusiness : completedBusinesses){
if(completedBusiness.get("business_type_cd").equals(appRoute.getAppService().getBusinessTypeCd())){
+ //鍙戣捣鎾ゅ崟
KafkaFactory.sendKafkaMessage(appRoute.getAppService().getMessageQueueName(),"",
- DataFlowFactory.getCompletedBusinessErrorJson(dataFlow,completedBusiness,appRoute.getAppService()));
- saveLogMessage(DataFlowFactory.getCompletedBusinessErrorJson(dataFlow,completedBusiness,appRoute.getAppService()),null);
+ DataFlowFactory.getDeleteInstanceTableJson(dataFlow,completedBusiness,appRoute.getAppService()));
+ saveLogMessage(DataFlowFactory.getDeleteInstanceTableJson(dataFlow,completedBusiness,appRoute.getAppService()),null);
}
}
}
@@ -456,12 +483,29 @@
centerServiceDaoImpl.updateOrder(DataFlowFactory.getNeedInvalidOrder(dataFlow));
//浣滃簾璁㈠崟椤�
- centerServiceDaoImpl.updateBusiness(DataFlowFactory.getNeedInvalidOrder(dataFlow));
+ centerServiceDaoImpl.updateBusiness(DataFlowFactory.getNeedDeleteBusiness(dataFlow));
+
+ //鍔犲叆鎾ゅ崟璁板綍
+ //doAddDeleteOrderBusinessData(dataFlow);
DataFlowFactory.addCostTime(dataFlow, "updateOrderAndBusinessError", "璁㈠崟鐘舵�佹敼涓哄け璐ヨ�楁椂", startDate);
+ }
+
+ /**
+ * 鍔犲叆鎾ゅ崟璁板綍
+ * @param dataFlow
+ */
+ private void doAddDeleteOrderBusinessData(DataFlow dataFlow){
+ /* Map business = new HashMap();
+ business.put("bId",SequenceUtil.getBId());
+ business.put("oId",dataFlow.getoId());
+ business.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
+ business.put("remark","鍙戣捣鎾ゅ崟");
+ business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);*/
+ centerServiceDaoImpl.saveBusiness(DataFlowFactory.getDeleteOrderBusiness(dataFlow,"璁㈠崟澶辫触锛屽姞鍏ユ挙鍗�"));
}
@@ -485,22 +529,39 @@
return ;
}
+ //濡傛灉涓嶆槸 business 鍜宨nstance 杩囩▼ 鍒欑洿鎺ヨ烦鍑�
+ judgeBusinessOrInstance(dataFlow);
+
//2.0鍔犺浇鏁版嵁锛屾病鏈夋壘鍒癮ppId 鍙婇厤缃俊鎭� 鍒欐姏鍑篒nitConfigDataException
reloadOrderInfoAndConfigData(dataFlow);
//3.0 鍒ゆ柇鏄惁鎴愬姛,澶辫触浼氭姏鍑築usinessStatusException寮傚父
- judgeBusinessStatus(dataFlow);
+ judgeBusinessStatusAndCompleteBusiness(dataFlow);
//4.0 淇敼涓氬姟涓烘垚鍔�,濡傛灉鍙戠幇涓氬姟椤瑰凡缁忔槸浣滃簾鎴栧け璐ョ姸鎬侊紙D鎴朎锛夊垯鎶涘嚭BusinessException寮傚父
- completeBusiness(dataFlow);
- //5.0褰撴墍鏈変笟鍔″姩浣滄槸鍚﹂兘鏄疌锛屽皢璁㈠崟淇℃伅鏀逛负 C 骞朵笖鍙戝竷绔e伐娑堟伅锛岃繖閲屽湪骞挎挱涔嬪墠纭
- completeOrderAndNotifyBusinessSystem(dataFlow);
+ //completeBusiness(dataFlow);
+
+ //5.0 鍒ゆ柇 鍙戣捣 Instance 鏉′欢鏄惁婊¤冻锛屽鏋滄弧瓒� 鍙戣捣 Instance杩囩▼
+ judgeSendToInstance(dataFlow);
+
+ //7.0 鍒ゆ柇鎾ゅ崟鏉′欢鏄惁婊¤冻锛屽鏋滄弧瓒冲彂璧锋挙鍗�
+ invalidCompletedBusinessSystem(dataFlow);
}catch (BusinessStatusException e){
+
+ logger.error("璁㈠崟澶辫触:" ,e);
+ //8.0 灏嗚鍗曠姸鎬佹敼涓哄け璐ワ紝浜哄伐澶勭悊銆�
+ updateOrderAndBusinessError(dataFlow);
+
+ }catch (BusinessException e) {
+ //9.0璇存槑杩欎釜璁㈠崟宸茬粡澶辫触浜嗭紝鍐嶄笉闇�瑕�
+ //鎯虫硶锛岃繖閲屽箍鎾綋鍓嶅け璐ヤ笟鍔�
+ logger.error("淇敼涓氬姟鏁版嵁澶辫触",e);
+ }catch (InitConfigDataException e){ //杩欑涓�鑸笉浼氬嚭鐜帮紝闄ら潪浜哄伐鏀逛簡鏁版嵁
+ LoggerEngine.error("鍔犺浇閰嶇疆鏁版嵁鍑洪敊", e);
try {
//6.0 浣滃簾璁㈠崟鍜屾墍鏈変笟鍔¢」
invalidOrderAndBusiness(dataFlow);
-
//7.0 骞挎挱浣滃簾涓氬姟绯荤粺璁㈠崟淇℃伅,杩欓噷鍙湁 Instance 澶辫触鍚庢墠鍙戣捣 鎾ゅ崟
if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
invalidCompletedBusinessSystem(dataFlow);
@@ -510,28 +571,9 @@
//8.0 灏嗚鍗曠姸鎬佹敼涓哄け璐ワ紝浜哄伐澶勭悊銆�
updateOrderAndBusinessError(dataFlow);
}
- }catch (BusinessException e) {
- //9.0璇存槑杩欎釜璁㈠崟宸茬粡澶辫触浜嗭紝鍐嶄笉闇�瑕�
- //鎯虫硶锛岃繖閲屽箍鎾綋鍓嶅け璐ヤ笟鍔�
- try {
- notifyBusinessSystemErrorMessage(dataFlow);
- }catch (Exception e1){
- //杩欓噷璁板綍鏃ュ織
- }
- }catch (InitConfigDataException e){ //杩欑涓�鑸笉浼氬嚭鐜帮紝闄ら潪浜哄伐鏀逛簡鏁版嵁
- LoggerEngine.error("鍔犺浇閰嶇疆鏁版嵁鍑洪敊", e);
- try {
- //6.0 浣滃簾璁㈠崟鍜屾墍鏈変笟鍔¢」
- invalidOrderAndBusiness(dataFlow);
- //7.0 骞挎挱浣滃簾涓氬姟绯荤粺璁㈠崟淇℃伅
- //鎯虫硶锛岃繖閲屽彧骞挎挱宸茬粡瀹屾垚鐨勮鍗曢」
- invalidCompletedBusinessSystem(dataFlow);
- } catch (Exception e1) {
- LoggerEngine.error("浣滃簾璁㈠崟澶辫触", e1);
- //8.0 灏嗚鍗曠姸鎬佹敼涓哄け璐ワ紝浜哄伐澶勭悊銆�
- updateOrderAndBusinessError(dataFlow);
- }
+ }catch (NoSupportException e){
+ LoggerEngine.error("褰撳墠涓氬姟涓嶆敮鎸�", e);
}catch (Exception e){
LoggerEngine.error("浣滃簾璁㈠崟澶辫触", e);
//10.0 鎴愬姛鐨勬儏鍐典笅閫氱煡涓嬫父绯荤粺澶辫触灏嗙姸鎬佹敼涓篘E锛屼汉宸ュ鐞嗐��
@@ -540,6 +582,38 @@
DataFlowFactory.addCostTime(dataFlow, "receiveBusinessSystemNotifyMessage", "鎺ュ彈涓氬姟绯荤粺閫氱煡娑堟伅鑰楁椂", startDate);
saveLogMessage(dataFlow.getReqJson(),null);
}
+ }
+
+ /**
+ * Instance杩囩▼
+ * @param dataFlow
+ */
+ private void doSendInstance(DataFlow dataFlow) {
+ if(dataFlow == null || !StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType())){
+ return ;
+ }
+ try {
+ KafkaFactory.sendKafkaMessage(DataFlowFactory.getService(dataFlow, dataFlow.getCurrentBusiness().getServiceCode()).getMessageQueueName(), "",
+ DataFlowFactory.getBusinessTableDataInfoToInstanceTableJson(dataFlow, dataFlow.getCurrentBusiness()).toJSONString());
+ }catch (Exception e){
+
+ }
+
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁鏄� business 鎴栬�� instance杩囩▼
+ * @param dataFlow
+ * @throws NoSupportException
+ */
+ private void judgeBusinessOrInstance(DataFlow dataFlow) throws NoSupportException{
+
+ if(dataFlow == null || StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType()) ||
+ StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())){
+ return ;
+ }
+
+ throw new NoSupportException(ResponseConstant.RESULT_PARAM_ERROR,"褰撳墠鍙敮鎸� Business 鍜� Instance杩囩▼");
}
@@ -579,14 +653,26 @@
* 鍒ゆ柇鏄惁閮芥垚鍔熶簡
* @param dataFlow
*/
- private void judgeBusinessStatus(DataFlow dataFlow) throws BusinessStatusException{
+ private void judgeBusinessStatusAndCompleteBusiness(DataFlow dataFlow) throws BusinessStatusException{
List<Business> businesses = dataFlow.getBusinesses();
- for(Business business: businesses){
- if(!ResponseConstant.RESULT_CODE_SUCCESS.equals(business.getCode())){
- throw new BusinessStatusException(business.getCode(),"涓氬姟bId= "+business.getbId() + " 澶勭悊澶辫触锛岄渶瑕佷綔搴熻鍗�");
+ //1.0 鍒ゆ柇鏄惁瀛樺湪鎾ゅ崟锛屽鏋滄槸鎾ゅ崟鍒欏皢褰撳墠 bId 鏍囪涓烘挙鍗曠姸鎬�
+ if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
+ Map businessMap = centerServiceDaoImpl.getDeleteOrderBusinessByOId(dataFlow.getoId());
+ if(businessMap != null && !businessMap.isEmpty()){
+ centerServiceDaoImpl.updateBusinessByBId(DataFlowFactory.getNeedDeleteBusiness(dataFlow));
+ return ;
}
+ }
+
+ Business business = dataFlow.getCurrentBusiness();
+ if(!ResponseConstant.RESULT_CODE_SUCCESS.equals(business.getCode())){
+ //throw new BusinessStatusException(business.getCode(),"涓氬姟bId= "+business.getbId() + " 澶勭悊澶辫触锛岄渶瑕佷綔搴熻鍗�");
+ //浣滃簾璁㈠崟鍜屼笟鍔¢」 鎻掑叆鎾ゅ崟璁板綍 绛夊緟鎾ゅ崟
+ invalidOrderAndBusiness(dataFlow);
+ }else{
+ completeBusiness(dataFlow);
}
}
@@ -598,8 +684,14 @@
*/
private void completeBusiness(DataFlow dataFlow) throws BusinessException{
try {
- //瀹屾垚璁㈠崟椤�
- centerServiceDaoImpl.updateBusinessByBId(DataFlowFactory.getNeedCompleteBusiness(dataFlow));
+ if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
+ //瀹屾垚璁㈠崟椤�
+ centerServiceDaoImpl.updateBusinessByBId(DataFlowFactory.getNeedCompleteBusiness(dataFlow));
+ }else if(StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType())) {
+ centerServiceDaoImpl.updateBusinessByBId(DataFlowFactory.getNeedBusinessComplete(dataFlow));
+ }else{ //杩欓噷鍒颁笉浜嗭紝鍓嶉潰鍋氫簡鏍¢獙
+ throw new BusinessException(ResponseConstant.RESULT_PARAM_ERROR,"褰撳墠涓嶆敮鎸� 涓氬姟绫诲瀷涓� businessType" +dataFlow.getBusinessType());
+ }
}catch (DAOException e){
throw new BusinessException(e.getResult(),e);
@@ -610,11 +702,12 @@
* //4.0褰撴墍鏈変笟鍔″姩浣滄槸鍚﹂兘鏄疌锛屽皢璁㈠崟淇℃伅鏀逛负 C 骞朵笖鍙戝竷绔e伐娑堟伅锛岃繖閲屽湪骞挎挱涔嬪墠纭
* @param dataFlow
*/
- private void completeOrderAndNotifyBusinessSystem(DataFlow dataFlow) throws Exception{
+ private void judgeSendToInstance(DataFlow dataFlow) throws Exception{
try {
- centerServiceDaoImpl.completeOrderByBId(DataFlowFactory.getMoreBId(dataFlow));
- //閫氱煡鎴愬姛娑堟伅
- notifyBusinessSystemSuccessMessage(dataFlow);
+ if(centerServiceDaoImpl.judgeAllBusinessCompleted(dataFlow.getoId(),StatusConstant.STATUS_CD_BUSINESS_COMPLETE) > 0) {
+ //閫氱煡鎴愬姛娑堟伅
+ doSendInstance(dataFlow);
+ }
}catch (DAOException e){
//杩欓噷浠�涔堥兘涓嶅仛锛岃鏄庤鍗曟病鏈夊畬鎴�
}
--
Gitblit v1.8.0