fix 基础表同步修改

This commit is contained in:
周俊杰
2024-06-04 09:22:13 +08:00
parent fc545bdd40
commit 65cc0f7854
15 changed files with 307 additions and 37 deletions

View File

@@ -76,7 +76,7 @@ public class ExecutionController {
}
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/dtl/{id}")
@GetMapping("/dtl/{proc_inst_id}")
public ResponseEntity<Object> getDtl(@PathVariable String proc_inst_id) {
List<ActHiExecution> list = iActHiExecutionService.list(new LambdaQueryWrapper<ActHiExecution>().eq(ActHiExecution::getProc_inst_id, proc_inst_id));
JSONArray array = new JSONArray();

View File

@@ -3,6 +3,9 @@ package org.nl.wms.flow_manage.flow.service.history.dao.mapper;
import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 流程历史处理表 Mapper 接口
@@ -12,5 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2024-04-28
*/
public interface ActHiExecutionMapper extends BaseMapper<ActHiExecution> {
/**
* 根据数据表名获取所需字段名称
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNames(String tableName);
}

View File

@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.flow_manage.flow.service.history.dao.mapper.ActHiExecutionMapper">
<select id="getTableColumnNames" resultType="map">
SELECT COLUMN_COMMENT AS activity_name,
COLUMN_COMMENT AS update_time,
COLUMN_COMMENT AS form_id,
COLUMN_COMMENT AS form_type,
COLUMN_COMMENT AS form_data
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = #{tableName}
</select>
</mapper>

View File

@@ -1,7 +1,10 @@
package org.nl.wms.pm_manage.form_data.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
@@ -22,7 +25,7 @@ public interface IPmFormDataService extends IService<PmFormData> {
Integer syncFormData(String type,String dataString);
List<PmFormData> syncAnalyse(SyncFormMapping mapping, String dataString);
JSONObject mappingParse(JSONArray mappingJson, BmFormStruc one, JSONObject sourceData);
List<PmFormData> getByType(String from_type);
@@ -30,6 +33,7 @@ public interface IPmFormDataService extends IService<PmFormData> {
List<PmFormDataDto> queryTree(FormDataQuery query, PageQuery page);
List<PmFormData> syncAnalyse(SyncFormMapping formMapping, String sourceString);
Object getSonDtlFormData(String id);

View File

@@ -1,6 +1,7 @@
package org.nl.wms.pm_manage.form_data.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -71,7 +72,6 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
this.saveBatch(pmFormDatas);
return pmFormDatas.size();
}
@Override
public List<PmFormData> syncAnalyse(SyncFormMapping formMapping, String sourceString) {
BmFormStruc one = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type", formMapping.getForm_type()));
@@ -151,9 +151,8 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
return this.list(lqw);
}
private JSONObject mappingParse(JSONArray mapping_json, BmFormStruc formStruc, JSONObject sourceData) {
@Override
public JSONObject mappingParse(JSONArray mapping_json, BmFormStruc formStruc, JSONObject sourceData) {
if (CollectionUtils.isEmpty(sourceData)) {
throw new BadRequestException("当前业务数据为空");
}
@@ -185,7 +184,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
return data;
}
private JSONObject fieldMapping(Set<String> fields, Map<String, JSONObject> fieldMapping, JSONObject sourceData) {
public JSONObject fieldMapping(Set<String> fields, Map<String, JSONObject> fieldMapping, JSONObject sourceData) {
Map<String, String> SpelMap = new HashMap<>();
JSONObject data = new JSONObject();
for (String field : fields) {
@@ -210,7 +209,6 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
}
return data;
}
@Override
public List<PmFormData> getByType(String from_type) {
Assert.notNull(from_type,"表单类型参数不能为空");

View File

@@ -1,6 +1,9 @@
package org.nl.wms.sync_manage.controller.field_mapping;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
@@ -73,7 +76,10 @@ public class BmExternalFieldMappingController {
public ResponseEntity<Object> getTableColumnNames(@PathVariable String table_name) {
return new ResponseEntity<>(mappingsService.getTableColumnNames(table_name), HttpStatus.OK);
}
@GetMapping("/getTableColumnNamesdata/{table_name}")
public ResponseEntity<Object> getTableColumnNamesdata(@PathVariable String table_name) {
return new ResponseEntity<>(mappingsService.getTableColumnNamesdata(table_name), HttpStatus.OK);
}
@GetMapping("/getTableColumnNamesFromMapping/{table_name}")
public ResponseEntity<Object> getTableColumnNamesFromMapping(@PathVariable String table_name) {
return new ResponseEntity<>(mappingsService.getTableColumnNamesFromMapping(table_name), HttpStatus.OK);
@@ -88,5 +94,24 @@ public class BmExternalFieldMappingController {
public ResponseEntity<Object> getExistTableName() {
return new ResponseEntity<>(mappingsService.getExistTableName(), HttpStatus.OK);
}
@PostMapping("/syncAnalyse")
public ResponseEntity<Object> syncAnalyse(@RequestBody JSONObject form){
String fromType=form.getString("local_table_name");
JSONArray formMapping = new JSONArray();
try {
JSONObject jsonObject = new JSONObject(form.getJSONObject("mapping_json"));
for (String key : jsonObject.keySet()) {
JSONObject item = new JSONObject();
item.put("key", key);
item.put("value", jsonObject.get(key));
formMapping.add(item);
}
} catch (JSONException e) {
e.printStackTrace();
}
// JSONArray formMapping=form.getJSONArray("mapping_json");
String sourceString=form.getString("analyseData");
return new ResponseEntity<>(mappingsService.toJavaObject(JSONObject.class,fromType,formMapping,sourceString), HttpStatus.OK);
}
}

View File

@@ -1,6 +1,7 @@
package org.nl.wms.sync_manage.service.field_mapping;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.sync_manage.service.field_mapping.dao.BmExternalFieldMapping;
import org.nl.wms.sync_manage.service.field_mapping.dto.RequestMappingParam;
@@ -26,6 +27,13 @@ public interface IBmExternalFieldMappingService extends IService<BmExternalField
* @return
*/
List<Map<String, String>> getTableColumnNames(String tableName);
/**
* 根据数据表名获取所有字段和注释
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNamesdata(String tableName);
/**
* 获取数据库中所有表的名称
@@ -56,6 +64,7 @@ public interface IBmExternalFieldMappingService extends IService<BmExternalField
*/
void updateRows(RequestMappingParam param);
<T> List<T> toJavaObject(Class<T> clazz,String fromType, JSONArray formMapping, String sourceString);
/**
* 从映射关系表中获取已配置映射关系的
*
@@ -63,4 +72,5 @@ public interface IBmExternalFieldMappingService extends IService<BmExternalField
* @return
*/
BmExternalFieldMapping getTableColumnNamesFromMapping(String table_name);
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sync_manage.service.field_mapping.dao.mapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.sync_manage.service.field_mapping.dao.BmExternalFieldMapping;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.sync_manage.service.field_mapping.dto.RequestMappingParam;
import java.util.List;
import java.util.Map;
@@ -18,13 +19,26 @@ import java.util.Map;
public interface BmExternalFieldMappingMapper extends BaseMapper<BmExternalFieldMapping> {
/**
* 根据数据表名获取所有字段名称
* 根据数据表名获取所有字段名称和值
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNames(@Param("tableName") String tableName);
/**
* 根据数据表名获取所有字段和注释
*
* @param tableName
* @return
*/
List<Map<String, String>> getTableColumnNamesdata(String tableName);
/**
* 根据数据表名获取所有字段名称
*
* @param tableName
* @return
*/
List<String> getTablename(@Param("tableName") String tableName);
/**
* 获取数据库中所有表的名称
*
@@ -38,4 +52,5 @@ public interface BmExternalFieldMappingMapper extends BaseMapper<BmExternalField
* @return
*/
List<String> getExistTableName();
}

View File

@@ -10,7 +10,18 @@
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = #{tableName}
</select>
<select id="getTableColumnNamesdata" resultType="map">
SELECT column_name, column_comment
FROM information_schema.columns
WHERE table_name = #{tableName}
</select>
<select id="getTablename" resultType="java.lang.String">
SELECT COLUMN_NAME AS local_field_name,
COLUMN_COMMENT AS lable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = #{tableName}
</select>
<select id="getAllTableName" resultType="java.lang.String">
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES

View File

@@ -11,4 +11,5 @@ import lombok.Data;
public class MappingDto {
private String local_field_name;
private String external_field_name;
private String skipExpression;
}

View File

@@ -2,14 +2,27 @@ package org.nl.wms.sync_manage.service.field_mapping.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.hash.Hash;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.flow_manage.flow.framework.engine.cmd.unify.Command;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.impl.PmFormDataServiceImpl;
import org.nl.wms.sync_manage.service.field_mapping.IBmExternalFieldMappingService;
import org.nl.wms.sync_manage.service.field_mapping.dao.BmExternalFieldMapping;
import org.nl.wms.sync_manage.service.field_mapping.dao.mapper.BmExternalFieldMappingMapper;
@@ -18,10 +31,11 @@ import org.nl.wms.sync_manage.service.field_mapping.dto.RequestMappingParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import java.util.*;
import java.util.stream.Collectors;
import java.util.List;
/**
* <p>
* 同步字段映射表 服务实现类
@@ -35,11 +49,20 @@ public class BmExternalFieldMappingServiceImpl extends ServiceImpl<BmExternalFie
@Autowired(required = false)
private BmExternalFieldMappingMapper mappingMapper;
@Autowired(required = false)
private PmFormDataServiceImpl pmFormDataService;
@Autowired
private IBmFormStrucService formStrucService;
@Override
public List<Map<String, String>> getTableColumnNames(String tableName) {
return mappingMapper.getTableColumnNames(tableName);
}
@Override
public List<Map<String, String>> getTableColumnNamesdata(String tableName) {
return mappingMapper.getTableColumnNamesdata(tableName);
}
@Override
public List<String> getAllTableName() {
@@ -61,8 +84,18 @@ public class BmExternalFieldMappingServiceImpl extends ServiceImpl<BmExternalFie
BmExternalFieldMapping mapping = param.getBmExternalFieldMapping();
List<MappingDto> dtos = param.getDtos();
Assert.notNull(dtos, "映射关系不能为空!");
Map<String, String> mappingJson = dtos.stream().collect(Collectors.toMap(MappingDto::getExternal_field_name, MappingDto::getLocal_field_name));
mapping.setMapping_json(JSON.toJSONString(mappingJson));
Map<String, Map<String, String>> mapOfMaps = new HashMap<>();
for(MappingDto mappingDto:dtos){
Map<String, String> map1 = new HashMap<>();
map1.put("external_field_name",mappingDto.getExternal_field_name());
if(ObjectUtil.isNotEmpty(mappingDto.getSkipExpression())) {
map1.put("skipExpression",mappingDto.getSkipExpression());
}else{
map1.put("skipExpression","");
}
mapOfMaps.put(mappingDto.getLocal_field_name(),map1);
}
mapping.setMapping_json(JSON.toJSONString(mapOfMaps));
mapping.setId(IdUtil.getStringId());
mapping.setLast_update_id(SecurityUtils.getCurrentUserId());
mapping.setLast_update_name(SecurityUtils.getCurrentNickName());
@@ -78,34 +111,83 @@ public class BmExternalFieldMappingServiceImpl extends ServiceImpl<BmExternalFie
luw.eq(BmExternalFieldMapping::getLocal_table_name, mapping.getLocal_table_name());
List<MappingDto> dtos = param.getDtos();
mappingMapper.delete(luw);
if (ObjectUtil.isNotEmpty(dtos)) {
Map<String, String> mappingJson = dtos.stream().collect(Collectors.toMap(MappingDto::getExternal_field_name, MappingDto::getLocal_field_name));
mapping.setMapping_json(JSON.toJSONString(mappingJson));
Map<String, Map<String, String>> mapOfMaps = new HashMap<>();
for(MappingDto mappingDto:dtos){
Map<String, String> map1 = new HashMap<>();
map1.put("external_field_name",mappingDto.getExternal_field_name());
if(ObjectUtil.isNotEmpty(mappingDto.getSkipExpression())) {
map1.put("skipExpression",mappingDto.getSkipExpression());
}else{
map1.put("skipExpression","");
}
mapOfMaps.put(mappingDto.getLocal_field_name(),map1);
}
mapping.setMapping_json(JSON.toJSONString(mapOfMaps));
mapping.setId(IdUtil.getStringId());
mapping.setLast_update_id(SecurityUtils.getCurrentUserId());
mapping.setLast_update_name(SecurityUtils.getCurrentNickName());
mapping.setLast_update_time(DateUtil.now());
mappingMapper.insert(mapping);
}
@Override
public <T> List<T> toJavaObject(Class<T> clazz, String fromType, JSONArray formMapping, String sourceString) {
BmFormStruc one = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type", fromType));
if (one == null) {
throw new BadRequestException("当前表单无配置信息" + fromType);
}
JSONObject sourceData = JSONObject.parseObject(sourceString);
if (StringUtils.isNotEmpty(one.getConvert_json())) {
sourceData = sourceData.getJSONObject(one.getConvert_json());
}
JSONArray mapping_arr = new JSONArray();
for (int i = 0; i < formMapping.size(); i++) {
JSONObject item = formMapping.getJSONObject(i);
String value = item.getString("key");
JSONObject mappingJson = item.getJSONObject("value");
String skipExpression = mappingJson.getString("skipExpression");
String mapping_field = mappingJson.getString("external_field_name");
mapping_arr.add(new JSONObject(MapOf.of("value",value,"skipExpression",skipExpression,"mapping_field",mapping_field)));
}
Map<String, JSONObject> fieldMapping = mapping_arr.stream().collect(HashMap::new, (formMap, o) -> {
JSONObject item = (JSONObject) o;
formMap.put(item.getString("value"), item);
}, HashMap::putAll);
List<String> fields= mappingMapper.getTablename(fromType);
Set<String> set = new HashSet<>();
set.addAll(fields);
JSONObject target = pmFormDataService.fieldMapping(set,fieldMapping,sourceData);
T data = target.toJavaObject(clazz);
return ListOf.of(data);
}
@Override
public BmExternalFieldMapping getTableColumnNamesFromMapping(String table_name) {
LambdaQueryWrapper<BmExternalFieldMapping> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmExternalFieldMapping::getLocal_table_name, table_name);
BmExternalFieldMapping mapping = mappingMapper.selectOne(lqw);
String mapping_json = mapping.getMapping_json();
List<String> mapping_json1=mappingMapper.getTablename(table_name);
if (StrUtil.isNotBlank(mapping_json)) {
Map<String, String> map = JSON.parseObject(mapping_json, Map.class);
List<MappingDto> list = new ArrayList<>();
map.forEach((key, value) -> {
MappingDto dto = new MappingDto();
dto.setExternal_field_name(key);
dto.setLocal_field_name(value);
list.add(dto);
});
mapping.setDtos(list);
List<MappingDto> list1 = new ArrayList<>();
JSONObject jsonObject = JSONObject.parseObject(mapping_json);
for (int i = 0; i < mapping_json1.size(); i++) {
MappingDto mappingDto=new MappingDto();
mappingDto.setLocal_field_name(mapping_json1.get(i));
if (jsonObject.getJSONObject(mapping_json1.get(i)) != null){
mappingDto.setExternal_field_name(jsonObject.getJSONObject(mapping_json1.get(i)).getString("external_field_name"));
mappingDto.setSkipExpression(jsonObject.getJSONObject(mapping_json1.get(i)).getString("skipExpression"));
} else {
mappingDto.setExternal_field_name("");
mappingDto.setSkipExpression("");
}
list1.add(mappingDto);
}
mapping.setDtos(list1);
}
return mapping;
}
}
}