|
|
@@ -15,11 +15,13 @@ import com.malk.service.aliwork.YDClient;
|
|
|
import com.malk.utils.UtilMap;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.checkerframework.checker.units.qual.A;
|
|
|
+import org.slf4j.MDC;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -58,6 +60,10 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
@Autowired
|
|
|
private KdYdMaterialMapper kdYdMaterialMapper;
|
|
|
@Autowired
|
|
|
+ private KdYdTransferMapper kdYdTransferMapper;
|
|
|
+ @Autowired
|
|
|
+ private KdYdTransferDetailMapper kdYdTransferDetailMapper;
|
|
|
+ @Autowired
|
|
|
private YDConf ydConf;
|
|
|
@Autowired
|
|
|
private DDConf ddConf;
|
|
|
@@ -233,6 +239,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
|
|
|
@Override
|
|
|
public void synckdYdOutbound() {
|
|
|
+
|
|
|
log.info("定时同步-出库单");
|
|
|
// 查询需要删除的数据
|
|
|
LambdaQueryWrapper<KdYdOutbound> outbounddel = new LambdaQueryWrapper<>();
|
|
|
@@ -367,7 +374,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
tablemap.put("textField_mf6a0h6y", kdYdOutboundDetail.getJx());
|
|
|
String xlhjh = kdYdOutboundDetail.getXlh();
|
|
|
if (xlhjh != null && !xlhjh.trim().isEmpty()) {
|
|
|
- tableListxlh = Arrays.stream(xlhjh.split(","))
|
|
|
+ tableListxlh = Arrays.stream(xlhjh.split(","))
|
|
|
.map(String::trim)
|
|
|
.filter(item -> !item.isEmpty())
|
|
|
.map(item -> {
|
|
|
@@ -423,12 +430,12 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
}
|
|
|
HashMap<Object, Object> updateMap = new HashMap<>();
|
|
|
updateMap.put("tableField_mejnamfd", tableList);
|
|
|
- updateMap.put("tableField_migw33w7", tableListxlh);
|
|
|
+ updateMap.put("tableField_mips137b", tableListxlh);
|
|
|
if (fhdbh != null && fhdformInstanceId != null) {
|
|
|
updateMap.put("associationFormField_mejmml36",
|
|
|
Arrays.asList(getfhdAss(fhdbh, fhdformInstanceId)));
|
|
|
}
|
|
|
- updateMap.put("dateField_krbgloam", kdYdOutbound.getDateTime() != null ? String.valueOf(kdYdOutbound.getDateTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
|
|
|
+ updateMap.put("dateField_krbgloam", kdYdOutbound.getDateTime() != null ? String.valueOf(kdYdOutbound.getDateTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
|
|
|
updateMap.put("textField_krnn5bmr", kdYdOutbound.getXsDept());
|
|
|
updateMap.put("textField_mhjxw689", kdYdOutbound.getFhDept());
|
|
|
updateMap.put("textField_mhjxw686", kdYdOutbound.getCgy());
|
|
|
@@ -481,7 +488,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
// 批量删除处理
|
|
|
if (!kdYdReceivabledels.isEmpty()) {
|
|
|
log.info("开始处理应收单删除操作,共{}条数据", kdYdReceivabledels.size());
|
|
|
- ArrayList<String > deleteList = new ArrayList<>();
|
|
|
+ ArrayList<String> deleteList = new ArrayList<>();
|
|
|
int deleteSuccessCount = 0;
|
|
|
|
|
|
for (KdYdReceivable kdYdReceivable : kdYdReceivabledels) {
|
|
|
@@ -905,6 +912,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
String jyzt = kdYdMaterial.getJyzt();
|
|
|
String dzl = kdYdMaterial.getDzl();
|
|
|
String pzzt = kdYdMaterial.getPzzt();
|
|
|
+ String sdbb = kdYdMaterial.getSpeedname();
|
|
|
String wlbt = wlmc + wlbm;
|
|
|
// String materialtitle = kdYdMaterial.getMaterialtitle();
|
|
|
Map updateFormData = new HashMap();
|
|
|
@@ -921,6 +929,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
updateFormData.put("textField_mejl9nrp", dzl);
|
|
|
updateFormData.put("selectField_mejl9nrq", pzzt);
|
|
|
updateFormData.put("textField_mfxbtcdq", mrsl);
|
|
|
+ updateFormData.put("textField_mhabp7y0", sdbb);
|
|
|
updateFormData.put("textField_mfxbtcdr", chlb);
|
|
|
updateFormData.put("textField_mfxbtce5", xsy);
|
|
|
|
|
|
@@ -1284,6 +1293,267 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
|
|
|
successCount, failCount, kdYdPaymentReceipts.size());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void synckdYdTRANSFER() {
|
|
|
+ log.info("定时同步-调拨单");
|
|
|
+ LambdaQueryWrapper<KdYdTransfer> transferdel = new LambdaQueryWrapper<>();
|
|
|
+ transferdel.eq(KdYdTransfer::getOperationType, 3)
|
|
|
+ .eq(KdYdTransfer::getSyncStatus, "0");
|
|
|
+ List<KdYdTransfer> kdYdTRANSFERdels = kdYdTransferMapper.selectList(transferdel);
|
|
|
+
|
|
|
+ // 批量删除处理
|
|
|
+ if (!kdYdTRANSFERdels.isEmpty()) {
|
|
|
+ log.info("开始处理调拨单删除操作,共{}条数据", kdYdTRANSFERdels.size());
|
|
|
+ ArrayList<String> deleteList = new ArrayList<>();
|
|
|
+ int deleteSuccessCount = 0;
|
|
|
+
|
|
|
+ for (KdYdTransfer kdYdTransfer : kdYdTRANSFERdels) {
|
|
|
+ try {
|
|
|
+ String djbh = kdYdTransfer.getDjbh();
|
|
|
+ log.debug("查询需要删除的调拨单: djbh={}", djbh);
|
|
|
+
|
|
|
+ List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
|
|
|
+ .appType("APP_VQDMMWS6OR1VHL8VMFD3")
|
|
|
+ .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", djbh)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ if (list1 != null && !list1.isEmpty()) {
|
|
|
+ for (Map map : list1) {
|
|
|
+ String formInstanceId = UtilMap.getString(map, "formInstanceId");
|
|
|
+ if (formInstanceId != null) {
|
|
|
+ deleteList.add(formInstanceId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ deleteSuccessCount++;
|
|
|
+
|
|
|
+ // 同时删除对应的子表数据
|
|
|
+ Long transferId = kdYdTransfer.getId();
|
|
|
+ LambdaQueryWrapper<KdYdTransferDetail> detailDelqw = new LambdaQueryWrapper<>();
|
|
|
+ detailDelqw.eq(KdYdTransferDetail::getTransferId, transferId);
|
|
|
+ List<KdYdTransferDetail> detailDels = kdYdTransferDetailMapper.selectList(detailDelqw);
|
|
|
+
|
|
|
+ if (!detailDels.isEmpty()) {
|
|
|
+ for (KdYdTransferDetail detail : detailDels) {
|
|
|
+ detail.setSyncStatus("1");
|
|
|
+ kdYdTransferDetailMapper.updateById(detail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.warn("未找到对应的调拨单数据: djbh={}", djbh);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除操作完成后更新状态
|
|
|
+ kdYdTransfer.setSyncStatus("1");
|
|
|
+ kdYdTransferMapper.updateById(kdYdTransfer);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除调拨单数据查询异常: djbh={}", kdYdTransfer.getDjbh(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行批量删除
|
|
|
+ if (!deleteList.isEmpty()) {
|
|
|
+ try {
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
|
|
|
+ .appType("APP_VQDMMWS6OR1VHL8VMFD3")
|
|
|
+ .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
|
|
|
+ .formInstanceIdList(deleteList)
|
|
|
+ .build(), YDConf.FORM_OPERATION.delete_batch);
|
|
|
+ log.info("调拨单批量删除完成,共删除{}条数据", deleteList.size());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调拨单批量删除操作异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("调拨单删除操作处理完成: 成功查询={}, 待删除={}", deleteSuccessCount, deleteList.size());
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ log.info("【调拨单删除任务】无需要删除的数据");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<KdYdTransfer> paymentqw = new LambdaQueryWrapper<>();
|
|
|
+ paymentqw.eq(KdYdTransfer::getSyncStatus, "0");
|
|
|
+ List<KdYdTransfer> kdYdTransfers = kdYdTransferMapper.selectList(paymentqw);
|
|
|
+ if (kdYdTransfers.isEmpty()) {
|
|
|
+ log.info("【调拨单同步任务】无需要同步的数据,结束");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ log.info("【调拨单同步任务】开始同步,共{}条数据", kdYdTransfers.size());
|
|
|
+
|
|
|
+ int successCount = 0;
|
|
|
+ int failCount = 0;
|
|
|
+
|
|
|
+ for (KdYdTransfer kdYdTransfer : kdYdTransfers) {
|
|
|
+ try {
|
|
|
+ Long transferId = kdYdTransfer.getId();
|
|
|
+ String djbh = kdYdTransfer.getDjbh();
|
|
|
+
|
|
|
+ log.debug("开始同步调拨单: ID={}, 单据编号={}", transferId, djbh);
|
|
|
+
|
|
|
+ LambdaQueryWrapper<KdYdTransferDetail> transferdetailqw = new LambdaQueryWrapper<>();
|
|
|
+ transferdetailqw.eq(KdYdTransferDetail::getTransferId, transferId)
|
|
|
+ .orderByAsc(KdYdTransferDetail::getDetailId);
|
|
|
+ List<KdYdTransferDetail> kdYdTransferDetails = kdYdTransferDetailMapper.selectList(transferdetailqw);
|
|
|
+ ArrayList<Object> tableList = new ArrayList<>();
|
|
|
+ for (KdYdTransferDetail kdYdTransferDetail : kdYdTransferDetails) {
|
|
|
+ HashMap<String, String> tablemap = new HashMap<>();
|
|
|
+ tablemap.put("textField_mhubzsav", kdYdTransferDetail.getWlbm());
|
|
|
+ tablemap.put("textField_mhubzsaw", kdYdTransferDetail.getWlmc());
|
|
|
+ tablemap.put("textField_mhubzsax", kdYdTransferDetail.getGgxh());
|
|
|
+ tablemap.put("textField_mhubzsay", kdYdTransferDetail.getDw());
|
|
|
+ tablemap.put("numberField_mhubzsaz", String.valueOf(kdYdTransferDetail.getDbsl()));
|
|
|
+ tablemap.put("textField_mhubzsb0", kdYdTransferDetail.getPh());
|
|
|
+ tablemap.put("textField_mhubzsb1", kdYdTransferDetail.getDcck());
|
|
|
+ tablemap.put("textField_mhubzsb5", kdYdTransferDetail.getDcckzt());
|
|
|
+ tablemap.put("textField_mhubzsb2", kdYdTransferDetail.getDccw());
|
|
|
+ tablemap.put("textField_mhubzsb3", kdYdTransferDetail.getDrck());
|
|
|
+ tablemap.put("textField_mhubzsb6", kdYdTransferDetail.getDrckzt());
|
|
|
+ tablemap.put("textField_mhubzsb4", kdYdTransferDetail.getDrcw());
|
|
|
+ kdYdTransferDetail.setSyncStatus("1");
|
|
|
+ kdYdTransferDetailMapper.updateById(kdYdTransferDetail);
|
|
|
+ tableList.add(tablemap);
|
|
|
+
|
|
|
+ }
|
|
|
+ String xsddbh = kdYdTransfer.getDdbh();
|
|
|
+ String ddformInstanceId = null;
|
|
|
+ String ddbh = null;
|
|
|
+ String jydate = null;
|
|
|
+ String ghrq = null;
|
|
|
+ String jyyy = null;
|
|
|
+ String jtyy = null;
|
|
|
+ String xsy = null;
|
|
|
+ String khxypj = null;
|
|
|
+ String fj = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ log.debug("开始查询订单数据: xsddbh={}", xsddbh);
|
|
|
+
|
|
|
+ // 宜搭返回的数据结构:List<Map<String, Object>>
|
|
|
+ List<Map<String, Object>> ddlist = (List<Map<String, Object>>) ydClient.queryData(
|
|
|
+ YDParam.builder()
|
|
|
+ .formUuid("FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C")
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("serialNumberField_mewfgzku", xsddbh)))
|
|
|
+ .build(),
|
|
|
+ YDConf.FORM_QUERY.retrieve_list_all
|
|
|
+ ).getData();
|
|
|
+
|
|
|
+ if (ddlist != null && !ddlist.isEmpty()) {
|
|
|
+ for (Map<String, Object> khitem : ddlist) {
|
|
|
+ Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
|
|
|
+ if (khformData == null) continue;
|
|
|
+
|
|
|
+ // 安全获取字段值(避免 ClassCastException)
|
|
|
+ Object serialObj = khformData.get("serialNumberField_mewfgzku");
|
|
|
+ String serialStr = serialObj instanceof String ? (String) serialObj : String.valueOf(serialObj);
|
|
|
+
|
|
|
+ if (xsddbh.equals(serialStr)) {
|
|
|
+ ddformInstanceId = safeToString(khitem.get("formInstanceId"));
|
|
|
+ ddbh = serialStr;
|
|
|
+ jydate = safeToString(khformData.get("dateField_mdya1lom"));
|
|
|
+ ghrq = safeToString(khformData.get("dateField_meqpbxsj"));
|
|
|
+ jyyy = safeToString(khformData.get("multiSelectField_meqpbxsc"));
|
|
|
+ jtyy = safeToString(khformData.get("textareaField_meqpbxsd"));
|
|
|
+ khxypj = safeToString(khformData.get("selectField_mewirdx4"));
|
|
|
+ xsy = safeToString(khformData.get("employeeField_mejowmng_id"));
|
|
|
+ fj = safeToString(khformData.get("attachmentField_mfoqcctz"));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ddformInstanceId == null) {
|
|
|
+ log.warn("未找到与 xsddbh={} 完全匹配的订单数据", xsddbh);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.warn("未查询到订单数据: xsddbh={}", xsddbh);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询订单数据异常: xsddbh={}, 错误信息={}", xsddbh, e.getMessage(), e);
|
|
|
+ }
|
|
|
+
|
|
|
+// 构建更新数据
|
|
|
+ HashMap<String, Object> updateMap = new HashMap<>();
|
|
|
+ updateMap.put("tableField_mhubzsau", tableList);
|
|
|
+
|
|
|
+ if (ddbh != null && ddformInstanceId != null) {
|
|
|
+ updateMap.put("associationFormField_mhubzsaf",
|
|
|
+ Collections.singletonList(getddAss(ddbh, ddformInstanceId)));
|
|
|
+ }
|
|
|
+
|
|
|
+// 只有所有必要字段都非空时才填充关联字段
|
|
|
+ if (jydate != null && ghrq != null && jyyy != null && jtyy != null
|
|
|
+ && xsy != null && khxypj != null && ddformInstanceId != null) {
|
|
|
+
|
|
|
+ updateMap.put("dateField_mdya1lom", jydate);
|
|
|
+ updateMap.put("dateField_meqpbxsj", ghrq);
|
|
|
+ updateMap.put("multiSelectField_meqpbxsc", jyyy);
|
|
|
+ updateMap.put("textareaField_meqpbxsd", jtyy); // 注意:原代码这里写成了 jyyy,已修正为 jtyy
|
|
|
+ updateMap.put("employeeField_mejowmng", xsy);
|
|
|
+ updateMap.put("selectField_mewirdx4", khxypj);
|
|
|
+ updateMap.put("textField_miquh5zj", ddformInstanceId);
|
|
|
+ updateMap.put("attachmentField_mfoqcctz", fj);
|
|
|
+ }
|
|
|
+
|
|
|
+// 基础字段同步(这些字段即使为空也会覆盖,符合原逻辑)
|
|
|
+ updateMap.put("selectField_mhubzsa5", kdYdTransfer.getDjlx());
|
|
|
+ updateMap.put("textField_mhubzsas", kdYdTransfer.getKh());
|
|
|
+ updateMap.put("textField_miptelgh", kdYdTransfer.getDdbh());
|
|
|
+ updateMap.put("textField_miptelgc", kdYdTransfer.getDjbh());
|
|
|
+ updateMap.put("textField_miptelgd", kdYdTransfer.getCgy());
|
|
|
+ updateMap.put("selectField_mhubzsa7", kdYdTransfer.getDchzlx());
|
|
|
+ updateMap.put("textField_mhubzsa6", kdYdTransfer.getYwlx());
|
|
|
+
|
|
|
+// 日期字段:转为毫秒字符串(保持原逻辑)
|
|
|
+ String rqMillis = "";
|
|
|
+ if (kdYdTransfer.getRq() != null) {
|
|
|
+ rqMillis = String.valueOf(kdYdTransfer.getRq()
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toInstant()
|
|
|
+ .toEpochMilli());
|
|
|
+ }
|
|
|
+ updateMap.put("dateField_mhubzsab", rqMillis);
|
|
|
+
|
|
|
+ updateMap.put("selectField_mhubzsa9", kdYdTransfer.getDrhzlx());
|
|
|
+ updateMap.put("selectField_mhubzsaa", kdYdTransfer.getDbfx());
|
|
|
+ updateMap.put("selectField_mhubzsac", kdYdTransfer.getDbdlx());
|
|
|
+ updateMap.put("textField_miptelge", kdYdTransfer.getDcbm());
|
|
|
+ updateMap.put("textField_miptelgf", kdYdTransfer.getDchz());
|
|
|
+ updateMap.put("textField_miptelgg", kdYdTransfer.getDrbm());
|
|
|
+ updateMap.put("selectField_mhubzsah", kdYdTransfer.getHdfs());
|
|
|
+ updateMap.put("selectField_mhubzsai", kdYdTransfer.getYsfs());
|
|
|
+ updateMap.put("selectField_mhubzsar", kdYdTransfer.getKdgs());
|
|
|
+ updateMap.put("selectField_mhubzsag", kdYdTransfer.getFkfs());
|
|
|
+
|
|
|
+ log.debug("开始同步到宜搭: 单据编号={}, 表单UUID=FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR", kdYdTransfer.getDjbh());
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
|
|
|
+ .noExecuteExpression(false)
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", kdYdTransfer.getDjbh())))
|
|
|
+ .formDataJson(JSONObject.toJSONString(updateMap))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+
|
|
|
+// 更新同步状态
|
|
|
+ kdYdTransfer.setSyncStatus("1");
|
|
|
+ kdYdTransferMapper.updateById(kdYdTransfer);
|
|
|
+ successCount++;
|
|
|
+
|
|
|
+ log.info("调拨单同步成功: 单据编号={}", kdYdTransfer.getDjbh());
|
|
|
+ } catch (Exception e) {
|
|
|
+ failCount++;
|
|
|
+ log.error("同步单条调拨单数据异常: 单据编号={}, 错误信息={}",
|
|
|
+ kdYdTransfer.getDjbh(), e.getMessage(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("【调拨单同步任务】完成: 成功={}, 失败={}, 总计={}",
|
|
|
+ successCount, failCount, kdYdTRANSFERdels.size());
|
|
|
+ }
|
|
|
+ private static String safeToString(Object obj) {
|
|
|
+ return obj == null ? null : obj.toString();
|
|
|
+ }
|
|
|
private Object getddAss(String title, String id) {
|
|
|
return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C", "receipt", id, title, "");
|
|
|
}
|