重新覆盖七天的数据

odoo切换查询方式
YXY 1 year ago
parent 58fdd270d0
commit c2666450d6

@ -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) { public static LocalDateTime long2ldt(long time) {
return LocalDateTime.ofInstant(Instant.ofEpochSecond(time), ZoneOffset.ofHours(8)); return LocalDateTime.ofInstant(Instant.ofEpochSecond(time), ZoneOffset.ofHours(8));
} }

@ -58,7 +58,7 @@
<select id="queryWaitDeleteRecordList" resultType="java.lang.String"> <select id="queryWaitDeleteRecordList" resultType="java.lang.String">
SELECT lark_key SELECT lark_key
FROM erp_lark_relation FROM erp_lark_relation
WHERE DATE (create_time) = #{currentDay} WHERE DATE (create_time) >= #{currentDay}
and remark = #{remark} and remark = #{remark}
and `method` = #{method} and `method` = #{method}
</select> </select>

@ -80,7 +80,8 @@ public class ManufactureOrderSyncJob extends SyncAccountsJobAbstract {
"ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc2", "ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc2",
"ManufactureOrder.ManufactureOrderDetails.Customer.Name", "ManufactureOrder.ManufactureOrderDetails.Customer.Name",
"ManufactureOrder.ManufactureOrderDetails.priuserdefnvc1", "ManufactureOrder.ManufactureOrderDetails.priuserdefnvc1",
"ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc1"); "ManufactureOrder.ManufactureOrderDetails.pubuserdefnvc1",
"ManufactureOrder.AuditedTime");
} }
@Override @Override

@ -76,7 +76,8 @@ public class PurchaseArrivalOpenSyncJob extends SyncAccountsJobAbstract{
"PurchaseArrival.VoucherState.Name", "PurchaseArrival.VoucherState.Name",
"PurchaseArrival.Details.Warehouse.Name", "PurchaseArrival.Details.Warehouse.Name",
// "",//todo yxy 货位 // "",//todo yxy 货位
"PurchaseArrival.Details.DetailMemo"); "PurchaseArrival.Details.DetailMemo",
"PurchaseArrival.AuditedTime");
} }
@Override @Override

@ -63,7 +63,8 @@ public class PurchaseOrderSyncJob extends SyncAccountsJobAbstract{
"PurchaseOrder.PurchaseOrderDetails.Unit.Name", "PurchaseOrder.PurchaseOrderDetails.Unit.Name",
"PurchaseOrder.PurchaseOrderDetails.AcceptDate", "PurchaseOrder.PurchaseOrderDetails.AcceptDate",
"PurchaseOrder.PurchaseOrderDetails.SaleOrderCode", "PurchaseOrder.PurchaseOrderDetails.SaleOrderCode",
"PurchaseOrder.PurchaseOrderDetails.DetailMemo"); "PurchaseOrder.PurchaseOrderDetails.DetailMemo",
"PurchaseOrder.AuditedTime");
} }
@Override @Override

@ -73,7 +73,7 @@ public class SaleDeliverySyncJob extends SyncAccountsJobAbstract {
"SaleDelivery.Customer.Name", "SaleDelivery.Customer.Name",
"SaleDelivery.BusinessType.Name", "SaleDelivery.BusinessType.Name",
"SaleDelivery.CreatedTime", "SaleDelivery.CreatedTime",
"SaleDelivery.auditeddate", "SaleDelivery.Auditeddate",
"SaleDelivery.VoucherDate", "SaleDelivery.VoucherDate",
"SaleDelivery.SaleDeliveryDetails.SaleOrderCode", "SaleDelivery.SaleDeliveryDetails.SaleOrderCode",
"SaleDelivery.SaleDeliveryDetails.Inventory.Code", "SaleDelivery.SaleDeliveryDetails.Inventory.Code",
@ -85,7 +85,8 @@ public class SaleDeliverySyncJob extends SyncAccountsJobAbstract {
"SaleDelivery.SaleDeliveryDetails.OrigDiscountAmount", "SaleDelivery.SaleDeliveryDetails.OrigDiscountAmount",
"SaleDelivery.Memo", "SaleDelivery.Memo",
"SaleDelivery.SaleDeliveryDetails.DetailMemo", "SaleDelivery.SaleDeliveryDetails.DetailMemo",
"SaleDelivery.SaleDeliveryDetails.Warehouse.Name"); "SaleDelivery.SaleDeliveryDetails.Warehouse.Name",
"SaleDelivery.AuditedTime");
} }
@Override @Override

@ -84,7 +84,8 @@ public class SaleOrderSyncJob extends SyncAccountsJobAbstract{
"SaleOrder.memo", "SaleOrder.memo",
"SaleOrder.SaleOrderDetails.pubuserdefnvc2", "SaleOrder.SaleOrderDetails.pubuserdefnvc2",
"SaleOrder.SaleOrderDetails.origDiscountAmount", "SaleOrder.SaleOrderDetails.origDiscountAmount",
"SaleOrder.CustomerMemo"); "SaleOrder.CustomerMemo",
"SaleOrder.AuditedTime");
} }
@Override @Override

@ -84,8 +84,8 @@ public abstract class SyncAccountsJobAbstract {
private Boolean asynchronousCheck(LocalDateTime now, String cjt) { private Boolean asynchronousCheck(LocalDateTime now, String cjt) {
int hour = now.getHour(); int hour = now.getHour();
if ((hour == 0 && CjtAccountEnum.ONE.getCode().equals(cjt)) if ((hour == 1 && CjtAccountEnum.ONE.getCode().equals(cjt))
|| (hour == 1 && CjtAccountEnum.TWO.getCode().equals(cjt))) { || (hour == 3 && CjtAccountEnum.TWO.getCode().equals(cjt))) {
//目前只给畅捷通账号二加工单开补偿 //目前只给畅捷通账号二加工单开补偿
// if ((AppType.SYNC_CJT_MANUFACTURE_ORDER_DATA_TO_MULTI_TABLE.getCode().equals(syncLarkAppType().getCode()) // 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()) // && 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); context.setAsynchronous(asynchronous);
if (StringUtils.isEmpty(queryFromTime)) { if (StringUtils.isEmpty(queryFromTime)) {
queryFromTime = asynchronous 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); : DateUtils.ldt2str(now.minusMinutes(REDUCE_MINUTES), DateUtils.YYYY_MM_DD_HH_MM_SS);
} }
context.setQueryFromTime(queryFromTime); context.setQueryFromTime(queryFromTime);
@ -170,12 +170,9 @@ public abstract class SyncAccountsJobAbstract {
log.info("===================== {} strat ======================", this.getClassName()); log.info("===================== {} strat ======================", this.getClassName());
//初始化飞书信息及相关配置 //初始化飞书信息及相关配置
initLarkInfo(context); initLarkInfo(context);
// if (Boolean.TRUE.equals(context.getAsynchronous())) { if (Boolean.TRUE.equals(context.getAsynchronous())) {
// Boolean deleteSuccess = handleRepeatData(now, cjt, context); Boolean deleteSuccess = handleRepeatData(now, cjt, context);
// if (!deleteSuccess){ }
// return;
// }
// }
//重置ticket //重置ticket
resetTicket(context); resetTicket(context);
//执行分页同步 //执行分页同步
@ -203,7 +200,7 @@ public abstract class SyncAccountsJobAbstract {
LarkCompanyRelation companyRelation = context.getCompanyRelation(); LarkCompanyRelation companyRelation = context.getCompanyRelation();
LarkTableRelation tableRelation = context.getTableRelation(); LarkTableRelation tableRelation = context.getTableRelation();
LarkTableRequest request = new LarkTableRequest(companyRelation.getAppId(), companyRelation.getSecret(), tableRelation.getToAppToken(), tableRelation.getToTableId()); 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<String> recordList = erpLarkRelationMapper.queryWaitDeleteRecordList(date, getRequestUrl(), cjt); List<String> recordList = erpLarkRelationMapper.queryWaitDeleteRecordList(date, getRequestUrl(), cjt);
List<String> waitDeleteList = new ArrayList<>(); List<String> waitDeleteList = new ArrayList<>();
for (String record : recordList) { for (String record : recordList) {
@ -443,21 +440,30 @@ public abstract class SyncAccountsJobAbstract {
//判断当前查询条件内是否存在重复数据 //判断当前查询条件内是否存在重复数据
Map<String, Integer> repeatMap = new HashMap<>(); Map<String, Integer> repeatMap = new HashMap<>();
List<AppTableRecord> waitUpdateList = new ArrayList<>(); List<AppTableRecord> 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<String> row : rows) { for (List<String> row : rows) {
String uniqueKey = null; String uniqueKey = null;
try { try {
Map<String, Object> body = new HashMap<>(); Map<String, Object> body = new HashMap<>();
List<String> uniqueKeyList = new ArrayList<>(); List<String> uniqueKeyList = new ArrayList<>();
for (int i = 0; i < row.size(); i++) { 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) { if (cjtSyncTypeRelation == null) {
continue; continue;
} }
String larkLabel = cjtSyncTypeRelation.getLarkFileName(); String larkLabel = cjtSyncTypeRelation.getLarkFileName();
String value = row.get(i); String value = row.get(i);
if (uniqueFields.contains(keyList.get(i))) { if (uniqueFields.contains(rowKey)) {
uniqueKeyList.add(value); uniqueKeyList.add(value);
} }
if (createTimeKey.equals(rowKey.toLowerCase())){
createTime = value;
}
body.put(larkLabel, this.changeValueType(value, cjtSyncTypeRelation)); body.put(larkLabel, this.changeValueType(value, cjtSyncTypeRelation));
} }
uniqueKey = String.join("_", uniqueKeyList).toUpperCase() + "_" + addRecordRequest.getAppTable(); uniqueKey = String.join("_", uniqueKeyList).toUpperCase() + "_" + addRecordRequest.getAppTable();
@ -471,7 +477,7 @@ public abstract class SyncAccountsJobAbstract {
//在飞书创建一行并根据创建返回的行id在本地保留一条映射纪律 //在飞书创建一行并根据创建返回的行id在本地保留一条映射纪律
CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(addRecordRequest); CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(addRecordRequest);
larkKey = respBody.getRecord().getRecordId(); larkKey = respBody.getRecord().getRecordId();
relationList.add(buildErpLarkRelation(uniqueKey, larkKey, cjt, asynchronous)); relationList.add(buildErpLarkRelation(uniqueKey, larkKey, cjt, asynchronous,createTime));
} else { } else {
if (!AppType.SYNC_CJT_SALE_DISPATCH_DATA_TO_MULTI_TABLE.equals(syncLarkAppType())) { if (!AppType.SYNC_CJT_SALE_DISPATCH_DATA_TO_MULTI_TABLE.equals(syncLarkAppType())) {
//根据本地保留映射确认飞书的更新行更新后防止影响后续更新需要将行id进行置空 //根据本地保留映射确认飞书的更新行更新后防止影响后续更新需要将行id进行置空
@ -506,7 +512,7 @@ public abstract class SyncAccountsJobAbstract {
} }
//构建飞书行与cjt唯一键的对应关系对象 //构建飞书行与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 erpLarkRelation = new ErpLarkRelation();
erpLarkRelation.setKey(key); erpLarkRelation.setKey(key);
erpLarkRelation.setLarkKey(larkKey); erpLarkRelation.setLarkKey(larkKey);
@ -514,12 +520,7 @@ public abstract class SyncAccountsJobAbstract {
erpLarkRelation.setFlag(FlagStatus.OK.getCode()); erpLarkRelation.setFlag(FlagStatus.OK.getCode());
erpLarkRelation.setRemark(cjt); erpLarkRelation.setRemark(cjt);
erpLarkRelation.setCreateBy("SYSTEM"); erpLarkRelation.setCreateBy("SYSTEM");
Date date = new Date(); erpLarkRelation.setCreateTime(DateUtils.str2Date(createTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
if (Boolean.TRUE.equals(asynchronous)) {
LocalDateTime localDateTime = LocalDateTime.now().minusDays(1L);
date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
erpLarkRelation.setCreateTime(date);
return erpLarkRelation; return erpLarkRelation;
} }

Loading…
Cancel
Save