|
@@ -603,17 +603,20 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
String factoryName = getString(formData.get("textField_m1fvucmd"));//工厂名称
|
|
String factoryName = getString(formData.get("textField_m1fvucmd"));//工厂名称
|
|
factory.put(dqNumber,factoryName);
|
|
factory.put(dqNumber,factoryName);
|
|
}
|
|
}
|
|
|
|
+ List<Map> errorList = new ArrayList<>();
|
|
|
|
|
|
- for (Integer dsSequence : factory.keySet()) {
|
|
|
|
- //同步当月内的数据 upsert
|
|
|
|
- DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
|
|
|
|
- String yesterday = dateTime.toString("yyyy-MM-dd");
|
|
|
|
|
|
+ //同步当月内的数据 upsert
|
|
|
|
+ DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
|
|
|
|
+ String yesterday = dateTime.toString("yyyy-MM-dd");
|
|
|
|
+
|
|
|
|
+ DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
|
+ String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
|
|
|
|
|
|
- DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
|
- String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
|
|
|
|
-// String beginOfMonthString = "2024-10-07";
|
|
|
|
|
|
+/* String beginOfMonthString = "2024-10-09";
|
|
|
|
|
|
-// String yesterday = "2024-10-07";
|
|
|
|
|
|
+ String yesterday = "2024-10-09";*/
|
|
|
|
+ for (Integer dsSequence : factory.keySet()) {
|
|
|
|
+ List<String> errorCodes = new ArrayList<>();
|
|
|
|
|
|
Map<String,Object> param = new HashMap<>();
|
|
Map<String,Object> param = new HashMap<>();
|
|
param.put("from_account",fromAccount);
|
|
param.put("from_account",fromAccount);
|
|
@@ -628,7 +631,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
Map<String, Object> map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
Map<String, Object> map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
if (!getString(map.get("errcode")).equals("0")){
|
|
if (!getString(map.get("errcode")).equals("0")){
|
|
- log.error("获取发货单失败:{}",map.get("errmsg"));
|
|
|
|
|
|
+ log.error("获取发货单列表失败:{}",map.get("errmsg"));
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
if (!map.get("page_count").equals("1")){
|
|
if (!map.get("page_count").equals("1")){
|
|
@@ -637,6 +640,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
}
|
|
}
|
|
List<Map> consignmentList = (List<Map>) map.get("consignmentlist");
|
|
List<Map> consignmentList = (List<Map>) map.get("consignmentlist");
|
|
|
|
+
|
|
for (Map consignment : consignmentList) {
|
|
for (Map consignment : consignmentList) {
|
|
//查询单个发货单详情
|
|
//查询单个发货单详情
|
|
String id = getString(consignment.get("code"));
|
|
String id = getString(consignment.get("code"));
|
|
@@ -669,6 +673,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
}
|
|
}
|
|
if (i1 > 5){
|
|
if (i1 > 5){
|
|
log.error("获取发货单详情失败");
|
|
log.error("获取发货单详情失败");
|
|
|
|
+ errorCodes.add(id);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -683,6 +688,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
}
|
|
}
|
|
|
|
|
|
formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
|
|
formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
|
|
|
|
+ formData.put("textField_m219zpzf",getString(consignment2.get("cusabbname")));//客户码
|
|
formData.put("textField_m18qfuiz",getString(consignment2.get("operation_type")));//操作类型
|
|
formData.put("textField_m18qfuiz",getString(consignment2.get("operation_type")));//操作类型
|
|
formData.put("textField_m18qfuj0",getString(consignment2.get("saletypename")));//销售类型
|
|
formData.put("textField_m18qfuj0",getString(consignment2.get("saletypename")));//销售类型
|
|
formData.put("textField_m18nvp87",getString(consignment2.get("code")));//发货单code
|
|
formData.put("textField_m18nvp87",getString(consignment2.get("code")));//发货单code
|
|
@@ -698,7 +704,8 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m18nvp8c", getString(item.get("socode")));//销售订单号
|
|
detail.put("textField_m18nvp8c", getString(item.get("socode")));//销售订单号
|
|
detail.put("textField_m18nvp8d", getString(item.get("warehouse_name")));//仓库名称
|
|
detail.put("textField_m18nvp8d", getString(item.get("warehouse_name")));//仓库名称
|
|
- detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//库存名称
|
|
|
|
|
|
+ detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//存货名称
|
|
|
|
+ detail.put("textField_m22mkwzk", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m18nvp8f", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("textField_m18nvp8f", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货长度
|
|
detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货长度
|
|
detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
|
|
detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
|
|
@@ -709,6 +716,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价
|
|
detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价
|
|
detail.put("dateField_m18yzlob", DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
|
|
detail.put("dateField_m18yzlob", DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
|
|
detail.put("textField_m18z3yn8", getString(consignment2.get("cusname")));//客户名称
|
|
detail.put("textField_m18z3yn8", getString(consignment2.get("cusname")));//客户名称
|
|
|
|
+ detail.put("textField_m219zpzg", getString(item.get("free1")));//客户码
|
|
|
|
+ detail.put("textField_m21b1bhg", getString(item.get("free2")));//产品颜色
|
|
|
|
+
|
|
detail.put("textField_m1odluob", factory.get(dsSequence));//工厂名称
|
|
detail.put("textField_m1odluob", factory.get(dsSequence));//工厂名称
|
|
|
|
|
|
return detail;
|
|
return detail;
|
|
@@ -719,15 +729,22 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
boolean flag = false;
|
|
boolean flag = false;
|
|
while (i<=5 && !flag){
|
|
while (i<=5 && !flag){
|
|
try{
|
|
try{
|
|
|
|
+ List<Map> jsonString = new ArrayList<>();
|
|
|
|
+ jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m18nvp87",getString(consignment2.get("code")),"TEXT","eq","TextField"));
|
|
|
|
+ jsonString.add(UtilMap.map("key, value, type, operator, componentName", "numberField_m18wkih7",new int[]{dsSequence,dsSequence},"DOUBLE","between","NumberField"));
|
|
|
|
+
|
|
|
|
+ String searchCondition = JSONObject.toJSONString(jsonString);
|
|
|
|
+
|
|
ydClient.operateData(YDParam.builder()
|
|
ydClient.operateData(YDParam.builder()
|
|
.formUuid(PRODUCT_REAL)
|
|
.formUuid(PRODUCT_REAL)
|
|
- .searchCondition(JSON.toJSONString(UtilMap.map("textField_m18nvp87, numberField_m18wkih7",getString(consignment2.get("code")),dsSequence)))
|
|
|
|
|
|
+// .searchCondition(JSON.toJSONString(UtilMap.map("textField_m18nvp87, numberField_m18wkih7",getString(consignment2.get("code")),dsSequence)))//模糊查询
|
|
|
|
+ .searchCondition(searchCondition)//精准查询
|
|
.formDataJson(JSON.toJSONString(formData))
|
|
.formDataJson(JSON.toJSONString(formData))
|
|
.build(), YDConf.FORM_OPERATION.upsert);
|
|
.build(), YDConf.FORM_OPERATION.upsert);
|
|
flag = true;
|
|
flag = true;
|
|
}catch (McException e){
|
|
}catch (McException e){
|
|
if (e.getMessage().contains("The request has failed due to a temporary failure of the server.")){
|
|
if (e.getMessage().contains("The request has failed due to a temporary failure of the server.")){
|
|
- log.error("请求失败,尝试次数:{}",i);
|
|
|
|
|
|
+ log.error("upsert失败,尝试次数:{}",i);
|
|
i++;
|
|
i++;
|
|
try {
|
|
try {
|
|
Thread.sleep(3000);
|
|
Thread.sleep(3000);
|
|
@@ -735,23 +752,50 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
throw new RuntimeException(ex);
|
|
throw new RuntimeException(ex);
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
- log.error("删除失败 失败原因:{}" , e.getMessage());
|
|
|
|
|
|
+ log.error("upsert,失败原因:{}" , e.getMessage());
|
|
|
|
+ errorCodes.add(id);
|
|
flag = true;
|
|
flag = true;
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , e.getMessage());
|
|
log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , e.getMessage());
|
|
|
|
+ errorCodes.add(id);
|
|
flag = true;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (i>5){
|
|
if (i>5){
|
|
|
|
+ errorCodes.add(id);
|
|
log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , "重试次数过多");
|
|
log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , "重试次数过多");
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ Map error = new HashMap();
|
|
|
|
+ error.put("ds_sequence",dsSequence);
|
|
|
|
+ error.put("error_count",errorCodes.size());
|
|
|
|
+ //errorCodes逗号分隔
|
|
|
|
+ error.put("error_codes",errorCodes.stream().collect(Collectors.joining(",")));
|
|
|
|
+ errorList.add(error);
|
|
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
long endTime = System.currentTimeMillis();
|
|
long endTime = System.currentTimeMillis();
|
|
- log.info("同步完成,耗时:{}秒", (endTime - beginTime) / 1000.0);
|
|
|
|
|
|
+ double time = (endTime - beginTime) / 1000.0;
|
|
|
|
+ log.info("同步完成,耗时:{}秒", time);
|
|
|
|
+ log.info("同步失败列表: {}", errorList);
|
|
|
|
+
|
|
|
|
+ //记录失败日志
|
|
|
|
+ Map<String,Object> formData = new HashMap<>();
|
|
|
|
+ formData.put("dateField_m21oifwi",beginTime);
|
|
|
|
+ formData.put("dateField_m21oifwp",endTime);
|
|
|
|
+ formData.put("numberField_m21oifwo",time);
|
|
|
|
+ //换行分隔errorList
|
|
|
|
+ String errorStr = errorList.stream().map(item -> {
|
|
|
|
+ String s = "数据源序号:" + item.get("ds_sequence") + ",错误数量:" + item.get("error_count") + ",发货单codes:" + item.get("error_codes");
|
|
|
|
+ return s;
|
|
|
|
+ }).collect(Collectors.joining("\n"));
|
|
|
|
+ formData.put("textareaField_m21oifwj",errorStr);
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
+ .formUuid("FORM-F297D439FFF747ACB26DEA940850CD9B13LM")
|
|
|
|
+ .formDataJson(JSON.toJSONString(formData))
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
return McR.success();
|
|
return McR.success();
|
|
}
|
|
}
|
|
|
|
|