Browse Source

【华信科】【富勒WMS对接】【基础资料对接调整,避免锁表】

wuyx 6 months ago
parent
commit
d0a0424f1d

+ 138 - 77
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -60,9 +60,10 @@ public class ERPServiceImpl implements ERPService {
         Map<Object, List<Map<String, Object>>> groupedByFlag = docMsgResultList.stream()
                 .collect(Collectors.groupingBy(map -> map.get("pr_sendwmsflag")));
         StringBuffer errMsg = new StringBuffer();
+        List<Map<String,Object>> errorList = new ArrayList<>();
         // 处理分组后的数据
         groupedByFlag.forEach((sendflag, list) -> {
-            logger.info("Flag: {}, Count: {}", sendflag, list.size());
+            logger.info("sendProd Flag: {}, Count: {}", sendflag, list.size());
             // 其他处理逻辑
             String actionType = "update";
             String actionTypeName = "更新";
@@ -70,17 +71,27 @@ public class ERPServiceImpl implements ERPService {
                 actionType = "add";
                 actionTypeName = "创建";
             }
-            Map<String, Object> res = sendProdSigle(master,actionType,list);
-            if(!res.get("success").equals(true)){
+            Map<String, Object> sendProdRes = sendProdSigle(master,actionType,list);
+            if(!sendProdRes.get("success").equals(true)){
                 if(errMsg.length()>0){
                     errMsg.append("</br>");
                 }
-                errMsg.append("执行:"+actionTypeName+"操作失败:"+res.get("message"));
+                errMsg.append("执行:"+actionTypeName+"操作失败:"+sendProdRes.get("message"));
+                if(sendProdRes.get("errList")!=null){
+                    try {
+                        errorList.addAll((List<Map<String,Object>>) sendProdRes.get("errList"));
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
             }
         });
         if(errMsg.length()>0){
             retMap.put("success",false);
             retMap.put("message",errMsg.toString());
+            if(!CollectionUtil.isEmpty(errorList)){
+                retMap.put("errList",errorList);
+            }
             return retMap;
         }
         logger.info("sendProd-End:master {} ids {}",master,ids);
@@ -99,6 +110,7 @@ public class ERPServiceImpl implements ERPService {
             retMap.put("message","没有需要同步的商品(品牌需设置对接MWS)。");
             return retMap;
         }
+        String outBizCode = "sendProd-"+System.currentTimeMillis();
         for (Map<String, Object> map : list) {
             // 创建ProductReq对象
             docCodes.add(map.get("pr_code"));
@@ -129,7 +141,7 @@ public class ERPServiceImpl implements ERPService {
         prodBaseItemsReq.setActionType(actionType);
         prodBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
         prodBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
-        prodBaseItemsReq.setOutBizCode("sendProd-"+System.currentTimeMillis());
+        prodBaseItemsReq.setOutBizCode(outBizCode);
         // 创建BaseVastItem对象
         BaseItemsReq.BaseItems prodBaseItems = new BaseItemsReq<ProductReq>().new BaseItems<ProductReq>();
         // 设置BaseVastItem的item属性
@@ -142,59 +154,62 @@ public class ERPServiceImpl implements ERPService {
             // 将wrapper对象转换为JSON字符串
             String json = objectMapper.writeValueAsString(prodBaseReq);
 //            logger.info("Request JSON: {}", json);
-            //{{testapiurl}}?method=openapi.singleitem.synchronize&timestamp=2025-03-04 15:45:00
-            // &format={{format}}&app_key={{app_key}}&v=2.0&sign=B21FFFE48507569E72D573359856B19B
-            // &sign_method=md5&customerId={{customerId}}
             HttpUtil.Response response = HttpUtil.doPostToVWMS("openapi.items.synchronize", json,vwmsConfig);
 //            logger.info("response code: {} text: {}", response.getStatusCode(),response.getResponseText());
             if(!String.valueOf(response.getStatusCode()).startsWith("2")){
                 eMsg = StringUtil.nvl(response.getResponseText(),"未知");
                 retMap.put("success", false);
-                retMap.put("message", "请求失败:"+response.getStatusCode()+":"+eMsg);
-                baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                            " where pr_code IN ("+prCodes+")");
+                retMap.put("message", "["+outBizCode+"]请求失败:"+response.getStatusCode()+":"+eMsg);
+//                baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                            " where pr_code IN ("+prCodes+")");
             }else {
                 retMap.put("success",true);
-                List<String> sqls = new ArrayList<>();
+                List<Map<String,Object>> errorList = new ArrayList<>();
+//                List<String> sqls = new ArrayList<>();
                 BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
                 BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
                 if(baseVastRespResponse!=null){
                     //默认成功
-                    baseDao.execute("update  DATACENTER_P.product set pr_sendwmsstatus='同步成功' ,pr_sendwmserr=null where pr_code in ("+prCodes+")");
+//                    baseDao.execute("update  DATACENTER_P.product set pr_sendwmsstatus='同步成功' ,pr_sendwmserr=null where pr_code in ("+prCodes+")");
                     if("success".equals(baseVastRespResponse.getFlag())){
-                        logger.info("response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-success code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                     }else {
                         retMap.put("success",false);
-                        logger.info("response-failure code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-failure code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                         //不一定全部失败,此处只会返回失败提示
                         BaseVastResp.Items items = baseVastRespResponse.getItems();
                         if(items!=null&&!CollectionUtil.isEmpty(items.getItem())){
                             for (BaseVastResp.Item item : items.getItem()) {
                                 eMsg = item.getMessage();
                                 if(!eMsg.equals("The goods don't exists, you can't update it.")){//提示异常但是实际会自动创建 可以认定为请求成功
-                                    logger.info("response-failure-item code: {} message: {}", item.getItemCode(),item.getMessage());
-                                    sqls.add("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where pr_code ='"+item.getItemCode()+"'");
+                                    logger.info("response-{}-failure-item code: {} message: {}",outBizCode, item.getItemCode(),item.getMessage());
+//                                    sqls.add("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where pr_code ='"+item.getItemCode()+"'");
+                                    Map<String,Object> errorProd = new HashMap<>();
+                                    errorProd.put("code",item.getItemCode());
+                                    errorProd.put("eMsg",eMsg);
+                                    errorList.add(errorProd);
                                     if(errMsg.length()>0){
                                         errMsg.append("</br>");
-                                        errMsg.append("物料编号:"+item.getItemCode()+",失败原因:"+eMsg);
                                     }
+                                    errMsg.append("物料编号:"+item.getItemCode()+",失败原因:"+eMsg);
                                 }
                             }
-                            if(!CollectionUtil.isEmpty(sqls)){
-                                baseDao.execute(sqls);
+                            if(!CollectionUtil.isEmpty(errorList)){
+//                                baseDao.execute(sqls);
                                 retMap.put("message", errMsg.toString());
+                                retMap.put("errList",errorList);
                             }else {
-                                logger.info("response-failure-item all message: {}", "The goods don't exists, you can't update it.");
+                                logger.info("response-{}-failure-item all message: {}",outBizCode, "The goods don't exists, you can't update it.");
                                 retMap.put("success",true);//全部提示失败但实际创建成功
                             }
                         }else {
                             eMsg = StringUtil.nvl(baseVastRespResponse.getMessage(),"无");
-                            baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                                    " where pr_code IN ("+prCodes+")");
+//                            baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败',pr_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                                    " where pr_code IN ("+prCodes+")");
                             retMap.put("message", eMsg);
                         }
                     }
-                    baseDao.execute("update  DATACENTER_P.product set pr_sendwmsflag=-1 where pr_code in ("+prCodes+") AND NVL(pr_sendwmsflag,0) = 0 AND pr_sendwmsstatus='同步成功'");
+//                    baseDao.execute("update  DATACENTER_P.product set pr_sendwmsflag=-1 where pr_code in ("+prCodes+") AND NVL(pr_sendwmsflag,0) = 0 AND pr_sendwmsstatus='同步成功'");
                 }else {
                     retMap.put("success", false);
                     retMap.put("message", "转换失败:"+response.getStatusCode()+":"+response.getResponseText());
@@ -204,15 +219,19 @@ public class ERPServiceImpl implements ERPService {
             return retMap;
         } catch (JsonProcessingException e) {
             e.printStackTrace();
-            logger.info("sendProd-Error:JSON转换失败 codes {} ",prCodes);
+            logger.info("sendProd-Error:JSON转换失败 outBizCode {} codes {} ",outBizCode,prCodes);
             retMap.put("success", false);
             retMap.put("message", "JSON转换失败");
             return retMap;
         } catch (Exception e) {
+            logger.info("sendProd-Error:报错 outBizCode {} codes {} ",outBizCode,prCodes);
             e.printStackTrace();
             eMsg = StringUtil.nvl(e.getMessage(),"无");
-            baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败' ,pr_sendwmserr='操作:"+actionType+":"+eMsg+"' where pr_code in ("+prCodes+")");
-            throw new RuntimeException(e);
+            retMap.put("success", false);
+            retMap.put("message", eMsg);
+            return retMap;
+//            baseDao.execute("update DATACENTER_P.product set pr_sendwmsstatus='同步失败' ,pr_sendwmserr='操作:"+actionType+":"+eMsg+"' where pr_code in ("+prCodes+")");
+//            throw new RuntimeException(e);
         }
     }
 
@@ -237,6 +256,7 @@ public class ERPServiceImpl implements ERPService {
         Map<Object, List<Map<String, Object>>> groupedByFlag = docMsgResultList.stream()
                 .collect(Collectors.groupingBy(map -> map.get("sendwmsflag")));
         StringBuffer errMsg = new StringBuffer();
+        List<Map<String,Object>> errorList = new ArrayList<>();
         // 处理分组后的数据
         groupedByFlag.forEach((sendflag, list) -> {
             logger.info("Flag: {}, Count: {}", sendflag, list.size());
@@ -288,11 +308,21 @@ public class ERPServiceImpl implements ERPService {
                     errMsg.append("</br>");
                 }
                 errMsg.append("执行:"+actionTypeName+"操作失败:"+res.get("message"));
+                if(res.get("errList")!=null){
+                    try {
+                        errorList.addAll((List<Map<String,Object>>) res.get("errList"));
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
             }
         });
         if(errMsg.length()>0){
             retMap.put("success",false);
             retMap.put("message",errMsg.toString());
+            if(!CollectionUtil.isEmpty(errorList)){
+                retMap.put("errList",errorList);
+            }
             return retMap;
         }
         logger.info("sendVend-End:master {} ids {}",master,ids);
@@ -312,10 +342,11 @@ public class ERPServiceImpl implements ERPService {
             retMap.put("message","没有需要同步的商品(品牌需设置对接MWS)。");
             return retMap;
         }
+        String outBizCode = "sendVend-"+System.currentTimeMillis();
         for (Vendor vend : list) {
             // 创建Req对象
             docCodes.add(vend.getVeCode());
-            logger.info("sendVend-test: id {} code {}",vend.getVeId(),vend.getVeCode());
+//            logger.info("sendVend-test: id {} code {}",vend.getVeId(),vend.getVeCode());
             // 创建ProductReq对象
             PartnersReq req = PartnersReq.builder()
                     .partnerCode(vend.getVeCode())
@@ -352,7 +383,7 @@ public class ERPServiceImpl implements ERPService {
         vendBaseItemsReq.setActionType(actionType);
         vendBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
         vendBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
-        vendBaseItemsReq.setOutBizCode("sendVend-"+System.currentTimeMillis());
+        vendBaseItemsReq.setOutBizCode(outBizCode);
         // 创建BaseVastItem对象
         BaseItemsReq.BaseItems vendBaseItems = new BaseItemsReq<PartnersReq>().new BaseItems<PartnersReq>();
         // 设置BaseVastItem的item属性
@@ -364,56 +395,61 @@ public class ERPServiceImpl implements ERPService {
         try {
             // 将wrapper对象转换为JSON字符串
             String json = objectMapper.writeValueAsString(vendBaseReq);
-            logger.info("Request JSON: {}", json);
+//            logger.info("Request JSON: {}", json);
             HttpUtil.Response response = HttpUtil.doPostToVWMS("openapi.partners.batchcreate", json,vwmsConfig);
             if(!String.valueOf(response.getStatusCode()).startsWith("2")){
                 eMsg = StringUtil.nvl(response.getResponseText(),"未知");
                 retMap.put("success", false);
-                retMap.put("message", "请求失败:"+response.getStatusCode()+":"+eMsg);
-                baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                        " where ve_code IN ("+codes+")");
+                retMap.put("message", "["+outBizCode+"]请求失败:"+response.getStatusCode()+":"+eMsg);
+//                baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                        " where ve_code IN ("+codes+")");
             }else {
                 retMap.put("success",true);
-                List<String> sqls = new ArrayList<>();
+                List<Map<String,Object>> errorList = new ArrayList<>();
+//                List<String> sqls = new ArrayList<>();
                 BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
                 BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
                 if(baseVastRespResponse!=null){
                     //默认成功
-                    baseDao.execute("update  "+master+".vendor set ve_sendwmsstatus='同步成功' ,ve_sendwmserr=null where ve_code in ("+codes+")");
+//                    baseDao.execute("update  "+master+".vendor set ve_sendwmsstatus='同步成功' ,ve_sendwmserr=null where ve_code in ("+codes+")");
                     if("success".equals(baseVastRespResponse.getFlag())){
-                        logger.info("response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-success code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                     }else {
                         retMap.put("success",false);
-                        logger.info("response-failure code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-failure code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                         //不一定全部失败,此处只会返回失败提示
                         BaseVastResp.Items items = baseVastRespResponse.getItems();
                         if(items!=null&&!CollectionUtil.isEmpty(items.getItem())){
                             for (BaseVastResp.Item item : items.getItem()) {
                                 eMsg = item.getMessage();
-                                if(!eMsg.equals("The goods don't exists, you can't update it.")){//提示异常但是实际会自动创建 可以认定为请求成功
-                                    logger.info("response-failure-item code: {} message: {}", item.getItemCode(),item.getMessage());
-                                    sqls.add("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where ve_code ='"+item.getItemCode()+"'");
-                                    if(errMsg.length()>0){
-                                        errMsg.append("</br>");
-                                        errMsg.append("物料编号:"+item.getItemCode()+",失败原因:"+eMsg);
-                                    }
+                                logger.info("response-{}-failure-item code: {} message: {}",outBizCode, item.getPartnerCode(),item.getMessage());
+//                                    sqls.add("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where ve_code ='"+item.getItemCode()+"'");
+
+                                Map<String,Object> errorVe = new HashMap<>();
+                                errorVe.put("code",item.getPartnerCode());
+                                errorVe.put("eMsg",eMsg);
+                                errorList.add(errorVe);
+                                if(errMsg.length()>0){
+                                    errMsg.append("</br>");
                                 }
+                                errMsg.append("供应商编号:"+item.getPartnerCode()+",失败原因:"+eMsg);
                             }
-                            if(!CollectionUtil.isEmpty(sqls)){
-                                baseDao.execute(sqls);
+                            if(!CollectionUtil.isEmpty(errorList)){
+//                                baseDao.execute(sqls);
                                 retMap.put("message", errMsg.toString());
+                                retMap.put("errList",errorList);
                             }else {
-                                logger.info("response-failure-item all message: {}", "The goods don't exists, you can't update it.");
+                                logger.info("response-{}-failure-item all ok",outBizCode);
                                 retMap.put("success",true);//全部提示失败但实际创建成功
                             }
                         }else {
                             eMsg = StringUtil.nvl(baseVastRespResponse.getMessage(),"无");
-                            baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                                    " where ve_code IN ("+codes+")");
+//                            baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败',ve_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                                    " where ve_code IN ("+codes+")");
                             retMap.put("message", eMsg);
                         }
                     }
-                    baseDao.execute("update  "+master+".vendor set ve_sendwmsflag=-1 where ve_code in ("+codes+") AND NVL(ve_sendwmsflag,0) = 0 AND ve_sendwmsstatus='同步成功'");
+//                    baseDao.execute("update  "+master+".vendor set ve_sendwmsflag=-1 where ve_code in ("+codes+") AND NVL(ve_sendwmsflag,0) = 0 AND ve_sendwmsstatus='同步成功'");
                 }else {
                     retMap.put("success", false);
                     retMap.put("message", "转换失败:"+response.getStatusCode()+":"+response.getResponseText());
@@ -422,16 +458,20 @@ public class ERPServiceImpl implements ERPService {
             //TODO 考虑记录日志
             return retMap;
         } catch (JsonProcessingException e) {
+            logger.info("sendVend-Error:JSON转换失败 outBizCode{} codes {} ",outBizCode,codes);
             e.printStackTrace();
-            logger.info("sendProd-Error:JSON转换失败 codes {} ",codes);
             retMap.put("success", false);
             retMap.put("message", "JSON转换失败");
             return retMap;
         } catch (Exception e) {
+            logger.info("sendVend-Error:报错 outBizCode {} codes {} ",outBizCode,codes);
             e.printStackTrace();
             eMsg = StringUtil.nvl(e.getMessage(),"无");
-            baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败' ,ve_sendwmserr='操作:"+actionType+":"+eMsg+"' where ve_code in ("+codes+")");
-            throw new RuntimeException(e);
+            retMap.put("success", false);
+            retMap.put("message", eMsg);
+            return retMap;
+//            baseDao.execute("update "+master+".vendor set ve_sendwmsstatus='同步失败' ,ve_sendwmserr='操作:"+actionType+":"+eMsg+"' where ve_code in ("+codes+")");
+//            throw new RuntimeException(e);
         }
     }
 
@@ -455,6 +495,7 @@ public class ERPServiceImpl implements ERPService {
         Map<Object, List<Map<String, Object>>> groupedByFlag = docMsgResultList.stream()
                 .collect(Collectors.groupingBy(map -> map.get("sendwmsflag")));
         StringBuffer errMsg = new StringBuffer();
+        List<Map<String,Object>> errorList = new ArrayList<>();
         // 处理分组后的数据
         groupedByFlag.forEach((sendflag, list) -> {
             logger.info("Flag: {}, Count: {}", sendflag, list.size());
@@ -501,11 +542,21 @@ public class ERPServiceImpl implements ERPService {
                     errMsg.append("</br>");
                 }
                 errMsg.append("执行:"+actionTypeName+"操作失败:"+res.get("message"));
+                if(res.get("errList")!=null){
+                    try {
+                        errorList.addAll((List<Map<String,Object>>) res.get("errList"));
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
             }
         });
         if(errMsg.length()>0){
             retMap.put("success",false);
             retMap.put("message",errMsg.toString());
+            if(!CollectionUtil.isEmpty(errorList)){
+                retMap.put("errList",errorList);
+            }
             return retMap;
         }
         logger.info("sendCust-End:master {} ids {}",master,ids);
@@ -525,6 +576,7 @@ public class ERPServiceImpl implements ERPService {
             retMap.put("message","没有需要同步的客户。");
             return retMap;
         }
+        String outBizCode = "sendCust-"+System.currentTimeMillis();
         for (Customer cust : list) {
             // 创建Req对象
             docCodes.add(cust.getCuCode());
@@ -564,7 +616,7 @@ public class ERPServiceImpl implements ERPService {
         custBaseItemsReq.setActionType(actionType);
         custBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
         custBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
-        custBaseItemsReq.setOutBizCode("sendCust-"+System.currentTimeMillis());
+        custBaseItemsReq.setOutBizCode(outBizCode);
         // 创建BaseVastItem对象
         BaseItemsReq.BaseItems custBaseItems = new BaseItemsReq<PartnersReq>().new BaseItems<PartnersReq>();
         // 设置BaseVastItem的item属性
@@ -581,51 +633,57 @@ public class ERPServiceImpl implements ERPService {
             if(!String.valueOf(response.getStatusCode()).startsWith("2")){
                 eMsg = StringUtil.nvl(response.getResponseText(),"未知");
                 retMap.put("success", false);
-                retMap.put("message", "请求失败:"+response.getStatusCode()+":"+eMsg);
-                baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                        " where cu_code IN ("+codes+")");
+                retMap.put("message", "["+outBizCode+"]请求失败:"+response.getStatusCode()+":"+eMsg);
+//                baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                        " where cu_code IN ("+codes+")");
             }else {
                 retMap.put("success",true);
-                List<String> sqls = new ArrayList<>();
+//                List<String> sqls = new ArrayList<>();
+                List<Map<String,Object>> errorList = new ArrayList<>();
                 BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
                 BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
                 if(baseVastRespResponse!=null){
                     //默认成功
-                    baseDao.execute("update  "+master+".customer set cu_sendwmsstatus='同步成功' ,cu_sendwmserr=null where cu_code in ("+codes+")");
+//                    baseDao.execute("update  "+master+".customer set cu_sendwmsstatus='同步成功' ,cu_sendwmserr=null where cu_code in ("+codes+")");
                     if("success".equals(baseVastRespResponse.getFlag())){
-                        logger.info("response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-success code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                     }else {
                         retMap.put("success",false);
-                        logger.info("response-failure code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
+                        logger.info("response-{}-failure code: {} message: {}",outBizCode, baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
                         //不一定全部失败,此处只会返回失败提示
                         BaseVastResp.Items items = baseVastRespResponse.getItems();
                         if(items!=null&&!CollectionUtil.isEmpty(items.getItem())){
                             for (BaseVastResp.Item item : items.getItem()) {
                                 eMsg = item.getMessage();
-                                if(!eMsg.equals("The goods don't exists, you can't update it.")){
-                                    logger.info("response-failure-item code: {} message: {}", item.getItemCode(),item.getMessage());
-                                    sqls.add("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where cu_code ='"+item.getPartnerCode()+"'");
-                                    if(errMsg.length()>0){
-                                        errMsg.append("</br>");
-                                        errMsg.append("客户编号:"+item.getItemCode()+",失败原因:"+eMsg);
-                                    }
+//                                if(!eMsg.equals("The goods don't exists, you can't update it.")){
+                                logger.info("response-{}-failure-item code: {} message: {}",outBizCode, item.getPartnerCode(),item.getMessage());
+//                                    sqls.add("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') where cu_code ='"+item.getPartnerCode()+"'");
+                                Map<String,Object> errorCu = new HashMap<>();
+                                errorCu.put("code",item.getPartnerCode());
+                                errorCu.put("eMsg",eMsg);
+                                errorList.add(errorCu);
+                                if(errMsg.length()>0){
+                                    errMsg.append("</br>");
                                 }
+                                errMsg.append("客户编号:"+item.getPartnerCode()+",失败原因:"+eMsg);
+//                                }
                             }
-                            if(!CollectionUtil.isEmpty(sqls)){
-                                baseDao.execute(sqls);
+                            if(!CollectionUtil.isEmpty(errorList)){
+//                                baseDao.execute(sqls);
                                 retMap.put("message", errMsg.toString());
+                                retMap.put("errList",errorList);
                             }else {
-                                logger.info("response-failure-item all message: {}", "The goods don't exists, you can't update it.");
+                                logger.info("response-{}-failure-item all message: {}",outBizCode, "The goods don't exists, you can't update it.");
                                 retMap.put("success",true);
                             }
                         }else {
                             eMsg = StringUtil.nvl(baseVastRespResponse.getMessage(),"无");
-                            baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
-                                    " where cu_code IN ("+codes+")");
+//                            baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr=('操作:"+actionType+":"+eMsg.replaceAll("'","''")+"') " +
+//                                    " where cu_code IN ("+codes+")");
                             retMap.put("message", eMsg);
                         }
                     }
-                    baseDao.execute("update  "+master+".customer set cu_sendwmsflag=-1 where cu_code in ("+codes+") AND NVL(cu_sendwmsflag,0) = 0 AND cu_sendwmsstatus='同步成功'");
+//                    baseDao.execute("update  "+master+".customer set cu_sendwmsflag=-1 where cu_code in ("+codes+") AND NVL(cu_sendwmsflag,0) = 0 AND cu_sendwmsstatus='同步成功'");
                 }else {
                     retMap.put("success", false);
                     retMap.put("message", "转换失败:"+response.getStatusCode()+":"+response.getResponseText());
@@ -634,15 +692,18 @@ public class ERPServiceImpl implements ERPService {
             return retMap;
         } catch (JsonProcessingException e) {
             e.printStackTrace();
-            logger.info("sendCust-Error:JSON转换失败 codes {} ",codes);
+            logger.info("sendCust-Error:JSON转换失败 outBizCode {} codes {} ",outBizCode,codes);
             retMap.put("success", false);
             retMap.put("message", "JSON转换失败");
             return retMap;
         } catch (Exception e) {
+            logger.info("sendCust-Error:报错 outBizCode {} codes {} ",outBizCode,codes);
             e.printStackTrace();
             eMsg = StringUtil.nvl(e.getMessage(),"无");
-            baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败' ,cu_sendwmserr='操作:"+actionType+":"+eMsg+"' where cu_code in ("+codes+")");
-            throw new RuntimeException(e);
+//            baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败' ,cu_sendwmserr='操作:"+actionType+":"+eMsg+"' where cu_code in ("+codes+")");
+            retMap.put("success", false);
+            retMap.put("message",eMsg);
+            return retMap;
         }
     }
 

+ 37 - 0
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -40,6 +40,43 @@ public class UasEisApplicationTests {
 	private ERPService erpService;
 	@Autowired
 	private VwmsConfig vwmsConfig;
+	@Test
+	public void testSendCustError(){
+		// 设置测试数据
+		String master = "DATACENTER_P";
+		String id = "86362";
+		// 86361   测试测试
+		// 86362   测试测试2
+		String emCode = "ADMIN";
+		String caller = "Customer!Base";
+		Map<String, Object> result = erpService.sendCust(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+	@Test
+	public void testSendVendError(){
+		// 设置测试数据
+		String master = "DATACENTER_P";
+		String id = "104018";
+		// 104017   测试测试
+		// 104018   测试测试2
+		String emCode = "ADMIN";
+		String caller = "Vendor";
+		Map<String, Object> result = erpService.sendVend(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+
+
+	@Test
+	public void testSendTH(){
+		// 设置测试数据
+		String master = "HUAXK_P";
+		String id = "50791640";
+		String emCode = "E0161";
+		String caller = "ProdInOut!SaleReturn";
+		Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+
 	@Test
 	public void init_vend() {
 		//DATACENTER_P