|
|
@ -2,6 +2,7 @@ package com.ruoyi.quartz.task.odoo;
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
|
|
|
import com.lark.oapi.service.bitable.v1.model.AppTableRecord;
|
|
|
|
import com.lark.oapi.service.bitable.v1.model.CreateAppTableRecordRespBody;
|
|
|
|
import com.lark.oapi.service.bitable.v1.model.CreateAppTableRecordRespBody;
|
|
|
|
import com.ruoyi.common.enums.AppType;
|
|
|
|
import com.ruoyi.common.enums.AppType;
|
|
|
|
import com.ruoyi.common.enums.FlagStatus;
|
|
|
|
import com.ruoyi.common.enums.FlagStatus;
|
|
|
@ -121,17 +122,29 @@ public abstract class OdooAbstrackob {
|
|
|
|
List<Integer> retryPageList = new ArrayList<>();
|
|
|
|
List<Integer> retryPageList = new ArrayList<>();
|
|
|
|
List<ErpLarkRelation> waitCreateRelation = new ArrayList<>();
|
|
|
|
List<ErpLarkRelation> waitCreateRelation = new ArrayList<>();
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
List<AppTableRecord> updateRecords = new ArrayList<>();
|
|
|
|
dateList = getDate(context, pageMap, context.getWarehouseId(), retryPageList);
|
|
|
|
dateList = getDate(context, pageMap, context.getWarehouseId(), retryPageList);
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(dateList)) {
|
|
|
|
if (CollectionUtils.isNotEmpty(dateList)) {
|
|
|
|
Map<String, String> relationMap = getLarkRelation(dateList, context.getWarehouseId());
|
|
|
|
Map<String, String> relationMap = getLarkRelation(dateList, context.getWarehouseId());
|
|
|
|
for (JSONObject jsonObject : dateList) {
|
|
|
|
for (JSONObject jsonObject : dateList) {
|
|
|
|
sync(jsonObject, errorList, relationMap, larkRequest, waitCreateRelation, context.getWarehouseId());
|
|
|
|
sync(jsonObject, errorList, relationMap, larkRequest, waitCreateRelation, context.getWarehouseId(),updateRecords);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(updateRecords)) {
|
|
|
|
|
|
|
|
larkRequest.setAppTableRecords(updateRecords.toArray(new AppTableRecord[0]));
|
|
|
|
|
|
|
|
larkTableHelper.updateTableRecordBatch(larkRequest);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (CollectionUtils.isNotEmpty(waitCreateRelation)) {
|
|
|
|
if (CollectionUtils.isNotEmpty(waitCreateRelation)) {
|
|
|
|
erpLarkRelationMapper.batchInsert(waitCreateRelation);
|
|
|
|
erpLarkRelationMapper.batchInsert(waitCreateRelation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
|
|
|
log.error("{} 获取数据失败", this.getClassName(), e);
|
|
|
|
|
|
|
|
Integer integer = pageMap.get(PAGE_OFFSET_KEY);
|
|
|
|
|
|
|
|
if (!retryPageList.contains(integer)) {
|
|
|
|
|
|
|
|
retryPageList.add(integer);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
pageMap.put(PAGE_OFFSET_KEY, pageMap.get(PAGE_OFFSET_KEY) + PAGE_SIZE);
|
|
|
|
pageMap.put(PAGE_OFFSET_KEY, pageMap.get(PAGE_OFFSET_KEY) + PAGE_SIZE);
|
|
|
|
} while (dateList == null || (CollectionUtils.isNotEmpty(dateList) && dateList.size() == PAGE_SIZE));
|
|
|
|
} while (dateList == null || (CollectionUtils.isNotEmpty(dateList) && dateList.size() == PAGE_SIZE));
|
|
|
|
if (retryPageList.size() > 0 && retryCount <= 3) {
|
|
|
|
if (retryPageList.size() > 0 && retryCount <= 3) {
|
|
|
@ -142,7 +155,8 @@ public abstract class OdooAbstrackob {
|
|
|
|
|
|
|
|
|
|
|
|
private void sync(JSONObject jsonObject, List<String> errorList
|
|
|
|
private void sync(JSONObject jsonObject, List<String> errorList
|
|
|
|
, Map<String, String> relationMap, LarkTableRequest larkRequest
|
|
|
|
, Map<String, String> relationMap, LarkTableRequest larkRequest
|
|
|
|
, List<ErpLarkRelation> waitCreateRelation, Integer warehouseId) {
|
|
|
|
, List<ErpLarkRelation> waitCreateRelation, Integer warehouseId
|
|
|
|
|
|
|
|
, List<AppTableRecord> updateRecords) {
|
|
|
|
String uniqueKey = null;
|
|
|
|
String uniqueKey = null;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Map<String, Object> larkBodyMap = this.buildLarkBodyMap(jsonObject);
|
|
|
|
Map<String, Object> larkBodyMap = this.buildLarkBodyMap(jsonObject);
|
|
|
@ -152,8 +166,10 @@ public abstract class OdooAbstrackob {
|
|
|
|
TableRelationTypeEnum tableRelationTypeEnum = this.syncLarkType(warehouseId);
|
|
|
|
TableRelationTypeEnum tableRelationTypeEnum = this.syncLarkType(warehouseId);
|
|
|
|
if (StringUtils.isNotBlank(larkRecord)) {
|
|
|
|
if (StringUtils.isNotBlank(larkRecord)) {
|
|
|
|
if (!tableRelationTypeEnum.equals(TableRelationTypeEnum.SYNC_ODOO_ACCOUNT_MOVE_LINE)) {
|
|
|
|
if (!tableRelationTypeEnum.equals(TableRelationTypeEnum.SYNC_ODOO_ACCOUNT_MOVE_LINE)) {
|
|
|
|
larkRequest.setRecord(larkRecord);
|
|
|
|
AppTableRecord appTableRecord = new AppTableRecord();
|
|
|
|
larkTableHelper.updateTableRecord(larkRequest);
|
|
|
|
appTableRecord.setFields(larkBodyMap);
|
|
|
|
|
|
|
|
appTableRecord.setRecordId(larkRecord);
|
|
|
|
|
|
|
|
updateRecords.add(appTableRecord);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(larkRequest);
|
|
|
|
CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(larkRequest);
|
|
|
|