diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/consumer/LarkApplicationRunner.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/consumer/LarkApplicationRunner.java index e35dd8e..93cf42b 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/consumer/LarkApplicationRunner.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/consumer/LarkApplicationRunner.java @@ -1,6 +1,7 @@ package com.ruoyi.flyingbook.consumer; import com.ruoyi.common.enums.EventOperateStatus; +import com.ruoyi.common.enums.FlagStatus; import com.ruoyi.flyingbook.domain.Event; import com.ruoyi.flyingbook.factory.LarkOperateFactory; import com.ruoyi.flyingbook.mapper.EventMapper; @@ -63,7 +64,7 @@ public class LarkApplicationRunner implements ApplicationRunner { @Override public void run() { while (true) { - List eventList = eventMapper.queryEventList(EventOperateStatus.PENDING.getCode()); + List eventList = eventMapper.queryEventList(EventOperateStatus.PENDING.getCode(), FlagStatus.OK.getCode()); if (CollectionUtils.isEmpty(eventList)) { try { // 没有订单,休息一下 diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/factory/LarkOperateTableFactory.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/factory/LarkOperateTableFactory.java index 604afaa..ea02d61 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/factory/LarkOperateTableFactory.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/factory/LarkOperateTableFactory.java @@ -101,6 +101,7 @@ public class LarkOperateTableFactory { tableRelation.setToTableId(event.getTableId()); tableRelation.setRelationType(TableRelationTypeEnum.DOUBLE_DIRECTION.getCode()); larkTableRelations = iLarkTableRelationService.selectLarkTableRelationList(tableRelation); + request.setTableRelationType(TableRelationTypeEnum.DOUBLE_DIRECTION); } List tableRelationTypeList = larkTableRelations.stream() @@ -115,8 +116,12 @@ public class LarkOperateTableFactory { log.error("LarkOperateTableFactory.check:{}", errorMessage); throw new RuntimeException(errorMessage); } + if (request.getTableRelationType() == null){ + TableRelationTypeEnum relationType = TableRelationTypeEnum.getByCode(tableRelationTypeList.get(0)); + relationType = relationType != null && relationType.equals(TableRelationTypeEnum.MAINTENANCE_ROW_RELATION) ? relationType : TableRelationTypeEnum.SINGLE_DIRECTION; + request.setTableRelationType(relationType); + } - request.setTableRelationType(TableRelationTypeEnum.getByCode(tableRelationTypeList.get(0))); request.setLarkTableRelations(larkTableRelations); return request; } diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mapper/EventMapper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mapper/EventMapper.java index e9e332d..ef7e9c2 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mapper/EventMapper.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mapper/EventMapper.java @@ -63,7 +63,7 @@ public interface EventMapper */ public int deleteEventByIds(Long[] ids); - public List queryEventList(@Param("status") String status); + public List queryEventList(@Param("status") String status,@Param("flag") Long flag); public int updateStatus(@Param("id") Long id,@Param("status") String status,@Param("numbers") Long numbers); diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/MultidimensionalTableMaintenanceRowOperate.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/MultidimensionalTableMaintenanceRowOperate.java index 2686c7f..fc8da48 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/MultidimensionalTableMaintenanceRowOperate.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/MultidimensionalTableMaintenanceRowOperate.java @@ -60,27 +60,6 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract { @Override protected void preOperate(RequestVo request) { - //主表与副表的列对应关系 - List tableRelationIdList = new ArrayList<>(); - for (LarkTableRelation larkTableRelation : request.getLarkTableRelations()) { - tableRelationIdList.add(larkTableRelation.getId()); - } - //主表与副表的行对应关系 - List larkTableRowRelations = iLarkTableRowRelationService.queryListByTableRelationIdList(tableRelationIdList); - Map> tableColRelationMap = new HashMap<>(); - for (LarkTableRowRelation larkTableRowRelation : larkTableRowRelations) { - if (TableDetailRelationTypeEnum.COL.getCode().equals(larkTableRowRelation.getType())) { - Map map = tableColRelationMap.getOrDefault(larkTableRowRelation.getTableRelationId(), new HashMap<>()); - map.put(larkTableRowRelation.getFromId(), larkTableRowRelation.getToId()); - tableColRelationMap.put(larkTableRowRelation.getTableRelationId(), map); - } - } - if (tableColRelationMap.isEmpty()) { - String errorMessage = String.format("tableId:{} 列关系未配置", request.getEvent().getTableId()); - log.error("iLarkTableRowRelationService.queryListByTableRelationIdList:{}", errorMessage); - throw new RuntimeException(errorMessage); - } - request.setTableColRelationMap(tableColRelationMap); } @Override @@ -90,62 +69,13 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract { detailRequest.setSafeCode(Arrays.asList(1254043)); GetAppTableRecordResp recordDetail = larkTokenHelper.getTableRecordDetail(detailRequest); request.setRespBody(recordDetail); - for (Map.Entry entry : request.getTableRelationMap().entrySet()) { - String[] arr = entry.getKey().split("_"); - request.setToAppToken(arr[0]); - request.setToTableId(arr[1]); - request.setTableRelationId(entry.getValue()); send(request); - } } @Override protected Map getBody(RequestVo request) { Map result = new HashMap<>(); - GetAppTableRecordResp respBody = request.getRespBody(); - int responseCode = respBody.getCode(); - Map rowMap = request.getTableRowRelationMap().getOrDefault(request.getTableRelationId(), new HashMap<>()); - if (1254043 == responseCode) { - request.setOperateType(DELETE_OPERATE); - } else if (0 == responseCode) { - result = parseMap(request); - if (rowMap.containsKey(request.getEvent().getRecordId())) { - request.setOperateType(UPDATE_OPERATE); - } else { - request.setOperateType(CREATE_OPERATE); - } - } - if (result.isEmpty() && DELETE_OPERATE != request.getOperateType()) { - throw new RuntimeException("post 的body为空,请检查映射参数"); - } - return result; - } - - /** - * 对两个表的列进行映射 - */ - private Map parseMap(RequestVo request) { - Map result = new HashMap<>(); - LarkTableFieldRequest tableFieldRequest = new LarkTableFieldRequest(request.getAppId(), request.getAppSecret(), request.getEvent().getAppToken(), request.getEvent().getTableId()); - Map tableFieldDetail = larkTableFieldHelper.getTableFieldDetail(tableFieldRequest); - Map colRelation = request.getTableColRelationMap().getOrDefault(request.getTableRelationId(), new HashMap<>()); - Map midMap = request.getRespBody().getData().getRecord().getFields(); - for (Map.Entry entry : midMap.entrySet()) { - String key = String.valueOf(entry.getKey()); - if (!colRelation.containsKey(key)) { - continue; - } - AppTableField appTableField = tableFieldDetail.get(key); - if (appTableField != null && TableFieldTypeEnum.FORMULA.getCode().equals(appTableField.getType())) { - List objects = (List) entry.getValue(); - Map map = (Map) objects.get(0); - result.put(colRelation.get(key), map.get("text")); - } else { - result.put(colRelation.get(key), entry.getValue()); - } - - } return result; } @@ -167,7 +97,6 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract { if(CollectionUtils.isNotEmpty(larkTableRowRelations)){ LarkTableRowRelation rowRelation = buildRelation(larkTableRowRelations.get(0),fields,recordId); request.setEventOperateType(EventOperateType.UPDATE); - iLarkTableRowRelationService.updateLarkTableRowRelation(rowRelation); }else { LarkTableRowRelation rowRelation = buildRelation(null,fields,recordId); @@ -199,7 +128,7 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract { rowRelation.setType(type != null ? type : TableDetailRelationTypeEnum.COL.getCode()); String subType = getTextFromObject(tableValueMap, "二级类型"); subType = TableDetailRelationTypeEnum.getByCode(subType); - rowRelation.setType(subType != null ? subType : TableDetailRelationTypeEnum.COL.getCode()); + rowRelation.setSubType(subType != null ? subType : TableDetailRelationTypeEnum.COL.getCode()); } rowRelation.setFromId(getTextFromObject(tableValueMap,"主表列")); rowRelation.setToId(getTextFromObject(tableValueMap,"副表列")); @@ -221,7 +150,11 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract { } private String getTextFromObject(Map tableValueMap,String paramName){ - return ""; + Object o = tableValueMap.get(paramName); + if (o == null){ + throw new RuntimeException("同步关系中存在空字段"); + } + return o.toString(); } @Override diff --git a/ruoyi-flyingbook/src/main/resources/mapper/EventMapper.xml b/ruoyi-flyingbook/src/main/resources/mapper/EventMapper.xml index 975770d..dae9e22 100644 --- a/ruoyi-flyingbook/src/main/resources/mapper/EventMapper.xml +++ b/ruoyi-flyingbook/src/main/resources/mapper/EventMapper.xml @@ -127,7 +127,7 @@