|
|
@@ -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×tamp=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;
|
|
|
}
|
|
|
}
|
|
|
|