diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 2a3a043..9c5e9c9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -173,6 +173,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } } + public static Date str2Date(String time, String pattern){ + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); + return simpleDateFormat.parse(time); + }catch (Exception e){ + + } + return new Date(); + } + public static LocalDateTime long2ldt(long time) { return LocalDateTime.ofInstant(Instant.ofEpochSecond(time), ZoneOffset.ofHours(8)); } diff --git a/ruoyi-flyingbook/src/main/resources/mapper/ErpLarkRelationMapper.xml b/ruoyi-flyingbook/src/main/resources/mapper/ErpLarkRelationMapper.xml index ddf6af6..3bb1954 100644 --- a/ruoyi-flyingbook/src/main/resources/mapper/ErpLarkRelationMapper.xml +++ b/ruoyi-flyingbook/src/main/resources/mapper/ErpLarkRelationMapper.xml @@ -58,7 +58,7 @@ diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/ManufactureOrderSyncJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/ManufactureOrderSyncJob.java index 8bff354..7755a1b 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/ManufactureOrderSyncJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/ManufactureOrderSyncJob.java @@ -80,7 +80,8 @@ public class ManufactureOrderSyncJob extends SyncAccountsJobAbstract { "ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc2", "ManufactureOrder.ManufactureOrderDetails.Customer.Name", "ManufactureOrder.ManufactureOrderDetails.priuserdefnvc1", - "ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc1"); + "ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc1", + "ManufactureOrder.AuditedTime"); } @Override diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseArrivalOpenSyncJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseArrivalOpenSyncJob.java index d77bdd4..a1e4326 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseArrivalOpenSyncJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseArrivalOpenSyncJob.java @@ -76,7 +76,8 @@ public class PurchaseArrivalOpenSyncJob extends SyncAccountsJobAbstract{ "PurchaseArrival.VoucherState.Name", "PurchaseArrival.Details.Warehouse.Name", // "",//todo yxy 货位 - "PurchaseArrival.Details.DetailMemo"); + "PurchaseArrival.Details.DetailMemo", + "PurchaseArrival.AuditedTime"); } @Override diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseOrderSyncJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseOrderSyncJob.java index 8d7e24f..25626ea 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseOrderSyncJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/PurchaseOrderSyncJob.java @@ -63,7 +63,8 @@ public class PurchaseOrderSyncJob extends SyncAccountsJobAbstract{ "PurchaseOrder.PurchaseOrderDetails.Unit.Name", "PurchaseOrder.PurchaseOrderDetails.AcceptDate", "PurchaseOrder.PurchaseOrderDetails.SaleOrderCode", - "PurchaseOrder.PurchaseOrderDetails.DetailMemo"); + "PurchaseOrder.PurchaseOrderDetails.DetailMemo", + "PurchaseOrder.AuditedTime"); } @Override diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleDeliverySyncJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleDeliverySyncJob.java index e1efd8b..565842f 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleDeliverySyncJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleDeliverySyncJob.java @@ -73,7 +73,7 @@ public class SaleDeliverySyncJob extends SyncAccountsJobAbstract { "SaleDelivery.Customer.Name", "SaleDelivery.BusinessType.Name", "SaleDelivery.CreatedTime", - "SaleDelivery.auditeddate", + "SaleDelivery.Auditeddate", "SaleDelivery.VoucherDate", "SaleDelivery.SaleDeliveryDetails.SaleOrderCode", "SaleDelivery.SaleDeliveryDetails.Inventory.Code", @@ -85,7 +85,8 @@ public class SaleDeliverySyncJob extends SyncAccountsJobAbstract { "SaleDelivery.SaleDeliveryDetails.OrigDiscountAmount", "SaleDelivery.Memo", "SaleDelivery.SaleDeliveryDetails.DetailMemo", - "SaleDelivery.SaleDeliveryDetails.Warehouse.Name"); + "SaleDelivery.SaleDeliveryDetails.Warehouse.Name", + "SaleDelivery.AuditedTime"); } @Override diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleOrderSyncJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleOrderSyncJob.java index 8cf5442..2a526da 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleOrderSyncJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SaleOrderSyncJob.java @@ -84,7 +84,8 @@ public class SaleOrderSyncJob extends SyncAccountsJobAbstract{ "SaleOrder.memo", "SaleOrder.SaleOrderDetails.pubuserdefnvc2", "SaleOrder.SaleOrderDetails.origDiscountAmount", - "SaleOrder.CustomerMemo"); + "SaleOrder.CustomerMemo", + "SaleOrder.AuditedTime"); } @Override diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java index f2cd170..e822aed 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java @@ -84,8 +84,8 @@ public abstract class SyncAccountsJobAbstract { private Boolean asynchronousCheck(LocalDateTime now, String cjt) { int hour = now.getHour(); - if ((hour == 0 && CjtAccountEnum.ONE.getCode().equals(cjt)) - || (hour == 1 && CjtAccountEnum.TWO.getCode().equals(cjt))) { + if ((hour == 1 && CjtAccountEnum.ONE.getCode().equals(cjt)) + || (hour == 3 && CjtAccountEnum.TWO.getCode().equals(cjt))) { //目前只给畅捷通账号二加工单开补偿 // if ((AppType.SYNC_CJT_MANUFACTURE_ORDER_DATA_TO_MULTI_TABLE.getCode().equals(syncLarkAppType().getCode()) // && CjtAccountEnum.TWO.getCode().equals(cjt)) || (AppType.SYNC_CJT_SALE_DISPATCH_DATA_TO_MULTI_TABLE.getCode().equals(syncLarkAppType().getCode()) @@ -114,7 +114,7 @@ public abstract class SyncAccountsJobAbstract { context.setAsynchronous(asynchronous); if (StringUtils.isEmpty(queryFromTime)) { queryFromTime = asynchronous - ? DateUtils.startOfDate(LocalDate.now().minusDays(8L)) + ? DateUtils.startOfDate(LocalDate.now().minusDays(7L)) : DateUtils.ldt2str(now.minusMinutes(REDUCE_MINUTES), DateUtils.YYYY_MM_DD_HH_MM_SS); } context.setQueryFromTime(queryFromTime); @@ -170,12 +170,9 @@ public abstract class SyncAccountsJobAbstract { log.info("===================== {} strat ======================", this.getClassName()); //初始化飞书信息及相关配置 initLarkInfo(context); -// if (Boolean.TRUE.equals(context.getAsynchronous())) { -// Boolean deleteSuccess = handleRepeatData(now, cjt, context); -// if (!deleteSuccess){ -// return; -// } -// } + if (Boolean.TRUE.equals(context.getAsynchronous())) { + Boolean deleteSuccess = handleRepeatData(now, cjt, context); + } //重置ticket resetTicket(context); //执行分页同步 @@ -203,7 +200,7 @@ public abstract class SyncAccountsJobAbstract { LarkCompanyRelation companyRelation = context.getCompanyRelation(); LarkTableRelation tableRelation = context.getTableRelation(); LarkTableRequest request = new LarkTableRequest(companyRelation.getAppId(), companyRelation.getSecret(), tableRelation.getToAppToken(), tableRelation.getToTableId()); - String date = DateUtils.ldt2str(now.minusDays(1L), DateUtils.YYYY_MM_DD); + String date = DateUtils.ldt2str(now.minusDays(7L), DateUtils.YYYY_MM_DD); List recordList = erpLarkRelationMapper.queryWaitDeleteRecordList(date, getRequestUrl(), cjt); List waitDeleteList = new ArrayList<>(); for (String record : recordList) { @@ -443,21 +440,30 @@ public abstract class SyncAccountsJobAbstract { //判断当前查询条件内是否存在重复数据 Map repeatMap = new HashMap<>(); List waitUpdateList = new ArrayList<>(); + String createTimeKey = "auditedTime"; + if (AppType.SYNC_CJT_SALE_DISPATCH_DATA_TO_MULTI_TABLE.equals(syncLarkAppType())) { + createTimeKey = "createdtime"; + } + String createTime = null; for (List row : rows) { String uniqueKey = null; try { Map body = new HashMap<>(); List uniqueKeyList = new ArrayList<>(); for (int i = 0; i < row.size(); i++) { - CJTSyncTypeRelation cjtSyncTypeRelation = queryFieldsMap.get(keyList.get(i)); + String rowKey = keyList.get(i); + CJTSyncTypeRelation cjtSyncTypeRelation = queryFieldsMap.get(rowKey); if (cjtSyncTypeRelation == null) { continue; } String larkLabel = cjtSyncTypeRelation.getLarkFileName(); String value = row.get(i); - if (uniqueFields.contains(keyList.get(i))) { + if (uniqueFields.contains(rowKey)) { uniqueKeyList.add(value); } + if (createTimeKey.equals(rowKey.toLowerCase())){ + createTime = value; + } body.put(larkLabel, this.changeValueType(value, cjtSyncTypeRelation)); } uniqueKey = String.join("_", uniqueKeyList).toUpperCase() + "_" + addRecordRequest.getAppTable(); @@ -471,7 +477,7 @@ public abstract class SyncAccountsJobAbstract { //在飞书创建一行,并根据创建返回的行id在本地保留一条映射纪律 CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(addRecordRequest); larkKey = respBody.getRecord().getRecordId(); - relationList.add(buildErpLarkRelation(uniqueKey, larkKey, cjt, asynchronous)); + relationList.add(buildErpLarkRelation(uniqueKey, larkKey, cjt, asynchronous,createTime)); } else { if (!AppType.SYNC_CJT_SALE_DISPATCH_DATA_TO_MULTI_TABLE.equals(syncLarkAppType())) { //根据本地保留映射,确认飞书的更新行,更新后防止影响后续更新,需要将行id进行置空 @@ -506,7 +512,7 @@ public abstract class SyncAccountsJobAbstract { } //构建飞书行与cjt唯一键的对应关系对象 - private ErpLarkRelation buildErpLarkRelation(String key, String larkKey, String cjt, Boolean asynchronous) { + private ErpLarkRelation buildErpLarkRelation(String key, String larkKey, String cjt, Boolean asynchronous,String createTime) { ErpLarkRelation erpLarkRelation = new ErpLarkRelation(); erpLarkRelation.setKey(key); erpLarkRelation.setLarkKey(larkKey); @@ -514,12 +520,7 @@ public abstract class SyncAccountsJobAbstract { erpLarkRelation.setFlag(FlagStatus.OK.getCode()); erpLarkRelation.setRemark(cjt); erpLarkRelation.setCreateBy("SYSTEM"); - Date date = new Date(); - if (Boolean.TRUE.equals(asynchronous)) { - LocalDateTime localDateTime = LocalDateTime.now().minusDays(1L); - date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } - erpLarkRelation.setCreateTime(date); + erpLarkRelation.setCreateTime(DateUtils.str2Date(createTime,DateUtils.YYYY_MM_DD_HH_MM_SS)); return erpLarkRelation; }