报表更新数据弃用中间表

报表弃用中间表
YXY 12 months ago
parent a565d32782
commit fe56661e21

@ -3,6 +3,7 @@ package com.ruoyi.quartz.task.CJT;
import com.alibaba.fastjson.JSONObject;
import com.lark.oapi.service.bitable.v1.model.AppTableRecord;
import com.lark.oapi.service.bitable.v1.model.BatchCreateAppTableRecordRespBody;
import com.lark.oapi.service.bitable.v1.model.ListAppTableRecordRespBody;
import com.ruoyi.common.constant.RedisConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.AppType;
@ -94,10 +95,11 @@ public class SyncReportJob {
initLarkInfo(context);
//重置ticket
resetTicket(context);
preSync(context);
// preSync(context);
cleanTableDate(context);
//执行分页同步
sync(context);
finish(context);
// finish(context);
} catch (Exception e) {
log.error("{} 执行失败", getClassName(), e);
larkRobotHelper.sendMessageByBot(ROBOT_GROUP, buildRobotErrorCountMessage(e));
@ -256,6 +258,32 @@ public class SyncReportJob {
}
}
private void cleanTableDate(CJTJobContext context) {
CjtAccountEnum cjtAccountEnum = CjtAccountEnum.getByCode(context.getCjt());
if (cjtAccountEnum == null) {
return;
}
LarkCompanyRelation companyRelation = context.getCompanyRelation();
LarkTableRelation tableRelation = context.getTableRelation();
LarkTableRequest request = new LarkTableRequest(companyRelation.getAppId(), companyRelation.getSecret(), tableRelation.getToAppToken(), tableRelation.getToTableId());
request.setPageSize(500);
AppTableRecord[] items = null;
do {
try {
List<String> larkKeyList = new ArrayList<>();
ListAppTableRecordRespBody respBody = larkTableHelper.listTableRecord(request);
items = respBody.getItems();
for (AppTableRecord item : items) {
larkKeyList.add(item.getRecordId());
}
request.setRecords(larkKeyList.toArray(new String[0]));
larkTableHelper.deleteTableRecordBatch(request);
} catch (Exception e) {
log.info("Sync report job finish error", e);
}
} while (items != null && items.length > 0);
}
private Boolean executeDetail(CJTJobContext context, CJTRequest cjtRequest, LarkTableRequest addRecordRequest) {
cjtRequest.setOpenToken(generateToken(context));
//请求接口并序列化数据
@ -293,7 +321,6 @@ public class SyncReportJob {
try {
//错误唯一键
List<AppTableRecord> list = new ArrayList<>();
List<ErpLarkTempRelation> waitCreateList = new ArrayList<>();
for (CJTResponseReportBodyDetailRow row : rows) {
Map<String, Object> body = buildLarkBody(row);
addRecordRequest.setBody(body);
@ -304,13 +331,7 @@ public class SyncReportJob {
if (CollectionUtils.isNotEmpty(list)) {
addRecordRequest.setAppTableRecords(list.toArray(new AppTableRecord[0]));
//在飞书创建一行并根据创建返回的行id在本地保留一条映射纪律
BatchCreateAppTableRecordRespBody resp = larkTableHelper.addTableRecordBatch(addRecordRequest);
for (AppTableRecord record : resp.getRecords()) {
buildTempList(waitCreateList,record.getRecordId(),cjt);
}
if (CollectionUtils.isNotEmpty(waitCreateList)){
erpLarkTempRelationMapper.batchInsert(waitCreateList);
}
larkTableHelper.addTableRecordBatch(addRecordRequest);
}
} catch (Exception e) {
log.error("{} addOrUpdate exception", this.getClassName(), e);

Loading…
Cancel
Save