增加多维表格字段映射管理完成

于相涌/mail
YXY 2 years ago
parent 1abe35e35c
commit 887e673815

@ -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<Event> eventList = eventMapper.queryEventList(EventOperateStatus.PENDING.getCode());
List<Event> eventList = eventMapper.queryEventList(EventOperateStatus.PENDING.getCode(), FlagStatus.OK.getCode());
if (CollectionUtils.isEmpty(eventList)) {
try {
// 没有订单,休息一下

@ -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<String> 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;
}

@ -63,7 +63,7 @@ public interface EventMapper
*/
public int deleteEventByIds(Long[] ids);
public List<Event> queryEventList(@Param("status") String status);
public List<Event> queryEventList(@Param("status") String status,@Param("flag") Long flag);
public int updateStatus(@Param("id") Long id,@Param("status") String status,@Param("numbers") Long numbers);

@ -60,27 +60,6 @@ public class MultidimensionalTableMaintenanceRowOperate extends LarkAbstract {
@Override
protected void preOperate(RequestVo request) {
//主表与副表的列对应关系
List<Long> tableRelationIdList = new ArrayList<>();
for (LarkTableRelation larkTableRelation : request.getLarkTableRelations()) {
tableRelationIdList.add(larkTableRelation.getId());
}
//主表与副表的行对应关系
List<LarkTableRowRelation> larkTableRowRelations = iLarkTableRowRelationService.queryListByTableRelationIdList(tableRelationIdList);
Map<Long, Map<String, String>> tableColRelationMap = new HashMap<>();
for (LarkTableRowRelation larkTableRowRelation : larkTableRowRelations) {
if (TableDetailRelationTypeEnum.COL.getCode().equals(larkTableRowRelation.getType())) {
Map<String, String> 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<String, Long> 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<String, Object> getBody(RequestVo request) {
Map<String, Object> result = new HashMap<>();
GetAppTableRecordResp respBody = request.getRespBody();
int responseCode = respBody.getCode();
Map<String, String> 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<String, Object> parseMap(RequestVo request) {
Map<String, Object> result = new HashMap<>();
LarkTableFieldRequest tableFieldRequest = new LarkTableFieldRequest(request.getAppId(), request.getAppSecret(), request.getEvent().getAppToken(), request.getEvent().getTableId());
Map<String, AppTableField> tableFieldDetail = larkTableFieldHelper.getTableFieldDetail(tableFieldRequest);
Map<String, String> colRelation = request.getTableColRelationMap().getOrDefault(request.getTableRelationId(), new HashMap<>());
Map<String, Object> midMap = request.getRespBody().getData().getRecord().getFields();
for (Map.Entry<String, Object> 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<JSONObject> objects = (List<JSONObject>) entry.getValue();
Map<String, Object> 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<String, Object> tableValueMap,String paramName){
return "";
Object o = tableValueMap.get(paramName);
if (o == null){
throw new RuntimeException("同步关系中存在空字段");
}
return o.toString();
}
@Override

@ -127,7 +127,7 @@
<select id="queryEventList" parameterType="com.ruoyi.flyingbook.domain.Event" resultMap="EventResult">
<include refid="selectEventVo"/>
where operate_status = #{status} and 3 > numbers
where operate_status = #{status} and 3 > numbers and flag = #{flag}
</select>
<update id="updateStatus">

Loading…
Cancel
Save