From dcecb5329fe7e1c0b6f26faed4572402704d14f4 Mon Sep 17 00:00:00 2001 From: YXY <932687738@qq.com> Date: Thu, 14 Sep 2023 23:18:10 +0800 Subject: [PATCH] =?UTF-8?q?odoo=E5=88=87=E6=8D=A2=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LarkHelper/LarkTableHelper.java | 25 ++++++++++++ .../quartz/task/odoo/OdooAbstrackob.java | 40 +++++++++++++------ 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkTableHelper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkTableHelper.java index 508b0c3..b5df280 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkTableHelper.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkTableHelper.java @@ -275,6 +275,31 @@ public class LarkTableHelper extends LarkHelper{ } } + public BatchUpdateAppTableRecordRespBody updateTableRecordBatch(LarkTableRequest request) { + BatchUpdateAppTableRecordResp update = null; + try { + update = buildClient(request).bitable().appTableRecord() + .batchUpdate( + BatchUpdateAppTableRecordReq.newBuilder() + .appToken(request.getAppToken()) + .tableId(request.getAppTable()) + .batchUpdateAppTableRecordReqBody( + BatchUpdateAppTableRecordReqBody.newBuilder() + .records(request.getAppTableRecords()) + .build() + ) + .build() + ); + } catch (Exception e) { + throw new RuntimeException(new LarkException("LarkTableHelper.updateTableRecordBatch",e.getMessage(),request).getErrorMessageBody()); + } + if (update != null && update.getCode() == 0){ + return update.getData(); + }else { + throw new RuntimeException(new LarkException("LarkTableHelper.updateTableRecordBatch",update.getMsg(),request).getErrorMessageBody()); + } + } + public ListAppTableRecordRespBody listTableRecord(LarkTableRequest request) { ListAppTableRecordResp list = null; try { diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java index c1a10d3..8f27c4a 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java @@ -2,6 +2,7 @@ package com.ruoyi.quartz.task.odoo; import com.alibaba.fastjson.JSONArray; 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.ruoyi.common.enums.AppType; import com.ruoyi.common.enums.FlagStatus; @@ -121,16 +122,28 @@ public abstract class OdooAbstrackob { List retryPageList = new ArrayList<>(); List waitCreateRelation = new ArrayList<>(); do { - dateList = getDate(context, pageMap, context.getWarehouseId(), retryPageList); - - if (CollectionUtils.isNotEmpty(dateList)) { - Map relationMap = getLarkRelation(dateList, context.getWarehouseId()); - for (JSONObject jsonObject : dateList) { - sync(jsonObject, errorList, relationMap, larkRequest, waitCreateRelation, context.getWarehouseId()); + try { + List updateRecords = new ArrayList<>(); + dateList = getDate(context, pageMap, context.getWarehouseId(), retryPageList); + if (CollectionUtils.isNotEmpty(dateList)) { + Map relationMap = getLarkRelation(dateList, context.getWarehouseId()); + for (JSONObject jsonObject : dateList) { + 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)) { + 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); } - } - if (CollectionUtils.isNotEmpty(waitCreateRelation)) { - erpLarkRelationMapper.batchInsert(waitCreateRelation); } pageMap.put(PAGE_OFFSET_KEY, pageMap.get(PAGE_OFFSET_KEY) + PAGE_SIZE); } while (dateList == null || (CollectionUtils.isNotEmpty(dateList) && dateList.size() == PAGE_SIZE)); @@ -142,7 +155,8 @@ public abstract class OdooAbstrackob { private void sync(JSONObject jsonObject, List errorList , Map relationMap, LarkTableRequest larkRequest - , List waitCreateRelation, Integer warehouseId) { + , List waitCreateRelation, Integer warehouseId + , List updateRecords) { String uniqueKey = null; try { Map larkBodyMap = this.buildLarkBodyMap(jsonObject); @@ -152,8 +166,10 @@ public abstract class OdooAbstrackob { TableRelationTypeEnum tableRelationTypeEnum = this.syncLarkType(warehouseId); if (StringUtils.isNotBlank(larkRecord)) { if (!tableRelationTypeEnum.equals(TableRelationTypeEnum.SYNC_ODOO_ACCOUNT_MOVE_LINE)) { - larkRequest.setRecord(larkRecord); - larkTableHelper.updateTableRecord(larkRequest); + AppTableRecord appTableRecord = new AppTableRecord(); + appTableRecord.setFields(larkBodyMap); + appTableRecord.setRecordId(larkRecord); + updateRecords.add(appTableRecord); } } else { CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(larkRequest);