主数据通用保存接口处理树形结构数据

2024年9月4日11:03:18
This commit is contained in:
xiang2lin 2024-09-04 11:03:28 +08:00
parent 11ee79ed1e
commit eb733789bb
5 changed files with 351 additions and 205 deletions

View File

@ -346,6 +346,7 @@ where id = #{id}
`org_id` varchar(50) DEFAULT NULL COMMENT '组织机构ID', `org_id` varchar(50) DEFAULT NULL COMMENT '组织机构ID',
`company_id` varchar(50) DEFAULT NULL COMMENT '公司id', `company_id` varchar(50) DEFAULT NULL COMMENT '公司id',
`data_id` varchar(100) DEFAULT NULL COMMENT 'data_id', `data_id` varchar(100) DEFAULT NULL COMMENT 'data_id',
`mdm_up_id` varchar(100) DEFAULT NULL COMMENT 'mdm_up_id',
</when> </when>
<when test="tableType == '2'.toString()"> <when test="tableType == '2'.toString()">
`id` varchar(50) NOT NULL COMMENT '唯一标识码', `id` varchar(50) NOT NULL COMMENT '唯一标识码',

View File

@ -52,6 +52,27 @@ public class ComparisonEntity extends BaseEntity {
private List<String> fields; private List<String> fields;
private List<String> returnField; private List<String> returnField;
/** 显示类型 1、树2、列表*/
private String viewName;
//下级结构树
private List<ComparisonEntity> comparisonEntities;
public List<ComparisonEntity> getComparisonEntities() {
return comparisonEntities;
}
public void setComparisonEntities(List<ComparisonEntity> comparisonEntities) {
this.comparisonEntities = comparisonEntities;
}
public String getViewName() {
return viewName;
}
public void setViewName(String viewName) {
this.viewName = viewName;
}
public List<String> getReturnField() { public List<String> getReturnField() {
return returnField; return returnField;
} }

View File

@ -35,7 +35,7 @@
from ${dbName} a from ${dbName} a
<trim prefix="where" prefixOverrides="and"> <trim prefix="where" prefixOverrides="and">
<foreach collection="map.entrySet()" item="value" index="key"> <foreach collection="map.entrySet()" item="value" index="key">
and ${key} like concat('%',#{value},'%') and ${key} = #{value}
</foreach> </foreach>
and sts='Y' and (data_status='Y' or data_status='F') and sts='Y' and (data_status='Y' or data_status='F')
</trim> </trim>

View File

@ -1,15 +1,17 @@
package com.hzya.frame.sysnew.comparison.service.impl; package com.hzya.frame.sysnew.comparison.service.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.hzya.frame.basedao.service.impl.BaseService; import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.mdm.mdmModule.dao.IMdmModuleDao; import com.hzya.frame.mdm.mdmModule.dao.IMdmModuleDao;
import com.hzya.frame.mdm.mdmModule.entity.MdmModuleEntity; import com.hzya.frame.mdm.mdmModule.entity.MdmModuleEntity;
import com.hzya.frame.mdm.mdmModuleDb.entity.MdmModuleDbEntity; import com.hzya.frame.mdm.mdmModuleDb.entity.MdmModuleDbEntity;
import com.hzya.frame.mdm.mdmModuleDbFileds.entity.MdmModuleDbFiledsEntity; import com.hzya.frame.mdm.mdmModuleDbFileds.entity.MdmModuleDbFiledsEntity;
import com.hzya.frame.mdm.mdmModuleView.dao.IMdmModuleViewDao;
import com.hzya.frame.mdm.mdmModuleView.entity.MdmModuleViewEntity;
import com.hzya.frame.mdm.service.impl.MdmServiceCache; import com.hzya.frame.mdm.service.impl.MdmServiceCache;
import com.hzya.frame.sysnew.application.entity.SysApplicationEntity; import com.hzya.frame.sysnew.application.entity.SysApplicationEntity;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
@ -20,15 +22,10 @@ import com.hzya.frame.sysnew.comparison.entity.ComparisonDetailsEntity;
import com.hzya.frame.sysnew.comparison.entity.ComparisonEntity; import com.hzya.frame.sysnew.comparison.entity.ComparisonEntity;
import com.hzya.frame.sysnew.comparison.service.IComparisonService; import com.hzya.frame.sysnew.comparison.service.IComparisonService;
import com.hzya.frame.uuid.UUIDLong; import com.hzya.frame.uuid.UUIDLong;
import com.hzya.frame.uuid.UUIDUtils;
import com.hzya.frame.web.entity.BaseEntity;
import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.ivy.Main;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import sun.java2d.pipe.AAShapePipe;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -49,6 +46,9 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
@Autowired @Autowired
private MdmServiceCache mdmServiceCache; private MdmServiceCache mdmServiceCache;
@Autowired
private IMdmModuleViewDao mdmModuleViewDao;
@Autowired @Autowired
public void setGeneralDataDao(IComparisonDao dao) { public void setGeneralDataDao(IComparisonDao dao) {
this.comparisonDao = dao; this.comparisonDao = dao;
@ -105,6 +105,12 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
comparisonEntity.setFields(fields); comparisonEntity.setFields(fields);
//查询主表数据 //查询主表数据
List<Map<String,Object>> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparisonEntity); List<Map<String,Object>> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparisonEntity);
//递归查询组织树
if(map.get("viewName").equals("1")){
return recursiveQueryComparison(comparisonEntitiePages,comparisonEntity);
}
if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){ if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){
for (Map<String, Object> comparisonEntitiePage : comparisonEntitiePages) { for (Map<String, Object> comparisonEntitiePage : comparisonEntitiePages) {
JSONObject jsonObjects=new JSONObject(); JSONObject jsonObjects=new JSONObject();
@ -150,21 +156,21 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
} }
ComparisonEntity comparisonEntity = jsonObject.toJavaObject(ComparisonEntity.class); ComparisonEntity comparisonEntity = jsonObject.toJavaObject(ComparisonEntity.class);
ComparisonDetailsEntity comparisonDetailsEntity=new ComparisonDetailsEntity(); ComparisonDetailsEntity comparisonDetailsEntity=new ComparisonDetailsEntity();
List<ComparisonEntity> comparisonEntities=new ArrayList<>(); List<ComparisonEntity> comparisonEntities=new ArrayList<>();
String uuid= String.valueOf(UUIDLong.longUUID()); String uuid= String.valueOf(UUIDLong.longUUID());
try { try {
//根据主数据编码查询表名称字段名称等信息 10001 //根据主数据编码查询表名称字段名称等信息 10001
// comparisonEntities = comparisonDao.queryComparison(comparisonEntity); // comparisonEntities = comparisonDao.queryComparison(comparisonEntity);
//comparisonEntities=getComparisonEntity(comparisonEntity); //comparisonEntities=getComparisonEntity(comparisonEntity);
comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); comparisonEntities=getComparisonEntityCache(comparisonEntity,"main");
}catch (Exception e){ }catch (Exception e){
logger.info("根据主数据编码查询信息错误:{}",e.getMessage()); logger.info("根据主数据编码查询信息错误:{}",e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败"); return BaseResult.getFailureMessageEntity("保存失败");
} }
JSONObject jsonObjectMain=new JSONObject(); JSONObject jsonObjectMain=new JSONObject();
JSONArray jsonArray=new JSONArray(); JSONArray jsonArray=new JSONArray();
List<JSONArray> arrayList=new ArrayList<>(); List<JSONArray> arrayList=new ArrayList<>();
String tableName=null; String tableName=null;
//根据dbtype和dbname分组拿到表名称和表类型 //根据dbtype和dbname分组拿到表名称和表类型
@ -176,192 +182,213 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
// keyPairs 得值为键值对键是表名称值是类型避免多个子表得键一样比如mdm_customer:1,mdm_customer_bank:2,mdm_customer_option_log:2 // keyPairs 得值为键值对键是表名称值是类型避免多个子表得键一样比如mdm_customer:1,mdm_customer_bank:2,mdm_customer_option_log:2
for (Map.Entry<String, String> keyPair : keyPairs) { for (Map.Entry<String, String> keyPair : keyPairs) {
//如果是1就是主表根据查询出来得主表是否是传输传递得主表 //如果是1就是主表根据查询出来得主表是否是传输传递得主表
if(keyPair.getValue().equals("1")){ if(keyPair.getValue().equals("1")){
String main = jsonObject.getString(keyPair.getKey()); String main = jsonObject.getString(keyPair.getKey());
tableName=keyPair.getKey(); tableName=keyPair.getKey();
if(main!=null){ if(main!=null){
jsonObjectMain = JSONObject.parseObject(main); jsonObjectMain = JSONObject.parseObject(main);
if(!checkStr(jsonObjectMain.getString("data_id"))){ if(!checkStr(jsonObjectMain.getString("data_id"))){
//保存操作日志 //保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2");
return BaseResult.getFailureMessageEntity("新增时候主表data_id不能为空"); return BaseResult.getFailureMessageEntity("新增时候主表data_id不能为空");
} }
} }
} }
//如果是2就是明细表根据查询出来得子表是否是传输传递得子表 //如果是2就是明细表根据查询出来得子表是否是传输传递得子表
if(keyPair.getValue().equals("2")){ if(keyPair.getValue().equals("2")){
jsonArray= jsonObject.getJSONArray(keyPair.getKey()); jsonArray= jsonObject.getJSONArray(keyPair.getKey());
if(jsonArray!= null) { if(jsonArray!= null) {
for (int i = 0; i < jsonArray.size(); i++) { for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObjectDetails = jsonArray.getJSONObject(i); JSONObject jsonObjectDetails = jsonArray.getJSONObject(i);
jsonObjectDetails.put("table_name", keyPair.getKey()); jsonObjectDetails.put("table_name", keyPair.getKey());
if(!checkStr(jsonObjectDetails.getString("data_id"))){ if(!checkStr(jsonObjectDetails.getString("data_id"))){
//保存操作日志 //保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2");
return BaseResult.getFailureMessageEntity("新增时候明细data_id不能为空"); return BaseResult.getFailureMessageEntity("新增时候明细data_id不能为空");
} }
} }
arrayList.add(jsonArray); arrayList.add(jsonArray);
} }
} }
} }
if(jsonObjectMain!=null && jsonObjectMain.size()>0) { if(jsonObjectMain!=null && jsonObjectMain.size()>0) {
Map<String, Object> map = new HashMap<>();//将主表数据存到map中 Map<String, Object> map = new HashMap<>();//将主表数据存到map中
List<List<Map<String, Object>>> mapDetails = new ArrayList<>();//将子表数据存到map中 List<List<Map<String, Object>>> mapDetails = new ArrayList<>();//将子表数据存到map中
if (comparisonEntities != null && comparisonEntities.size() > 0) { if (comparisonEntities != null && comparisonEntities.size() > 0) {
map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity, comparisonDetailsEntity); map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity, comparisonDetailsEntity);
//根据data_id判断数据是否已经保存在相关表中,避免重复保存 //根据data_id判断数据是否已经保存在相关表中,避免重复保存
List<String> fields = getFields(comparisonEntity); List<String> fields = getFields(comparisonEntity);
Map<String, Object> mapDataId = new HashMap<>(); Map<String, Object> mapDataId = new HashMap<>();
mapDataId.put("data_id", jsonObjectMain.getString("data_id")); mapDataId.put("data_id", jsonObjectMain.getString("data_id"));
ComparisonEntity comparisonDataId = new ComparisonEntity(); ComparisonEntity comparisonDataId = new ComparisonEntity();
comparisonDataId.setMap(mapDataId); comparisonDataId.setMap(mapDataId);
comparisonDataId.setDbName(comparisonEntity.getDbName()); comparisonDataId.setDbName(comparisonEntity.getDbName());
comparisonDataId.setFields(fields); comparisonDataId.setFields(fields);
List<Map<String, Object>> listDataId = comparisonDao.queryComparisonPage(comparisonDataId); List<Map<String, Object>> listDataId = comparisonDao.queryComparisonPage(comparisonDataId);
if (CollectionUtils.isNotEmpty(listDataId)) { if (CollectionUtils.isNotEmpty(listDataId)) {
//return BaseResult.getFailureMessageEntity(comparisonEntity.getDbName()+"表中已经存在data_id为:"+jsonObjectMain.getString("data_id")+"的数据"); //return BaseResult.getFailureMessageEntity(comparisonEntity.getDbName()+"表中已经存在data_id为:"+jsonObjectMain.getString("data_id")+"的数据");
return updateEntity(json); return updateEntity(json);
} else { } else {
//判断输入的主表字段是否是必填项
for (ComparisonEntity entity : comparisonEntities) {
//如果必填字段不为空
if (entity.getRuleValue() != null && entity.getDbType().equals("1")) {
//如果值为空说明没有传这个字段或者这个字段的值为空
if (jsonObjectMain.getString(entity.getEnName()) == null || jsonObjectMain.getString(entity.getEnName()).equals("")) {
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity(entity.getDbName() + "表的" + entity.getEnName() + "字段不能为空");
}
}
}
map.put("id", uuid); //如果是树形结构查询不存在新增时候需要得到parent_id,根据parent_id查询data_id是否有之后将查询得父id设置到mdm_up_id中
map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); if(comparisonEntities.get(0).getViewName().equals("1")){
map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); List<String> fieldParent = getFields(comparisonEntity);
map.put("org_id", "0"); Map<String, Object> mapParentId = new HashMap<>();
map.put("create_time", new Date()); mapDataId.put("data_id", jsonObjectMain.getString("parent_id"));
map.put("modify_time", new Date()); ComparisonEntity comparisonParentId = new ComparisonEntity();
map.put("sts", "Y"); comparisonParentId.setMap(mapParentId);
map.put("data_status", "Y");//新增状态 comparisonParentId.setDbName(comparisonEntity.getDbName());
map.put("add_status", "0");//新增状态 comparisonParentId.setFields(fieldParent);
map.put("update_status", "1");//修改状态 List<Map<String, Object>> listParentId = comparisonDao.queryComparisonPage(comparisonDataId);
map.put("delete_status", "1");//删除状态 //如果根据parentid查询数据不为空将dataid为parenti得id值设置到mdm_up_id中
ComparisonEntity comparisonEntityRule = comparisonEntities.get(0); if(CollectionUtils.isNotEmpty(listParentId)){
//查询单据规则 只查询主表得明细表不用 if(null != listParentId.get(0).get("mdm_up_id")){
try { map.put("mdm_up_id",listParentId.get(0).get("mdm_up_id")+","+listParentId.get(0).get("id"));
ComparisonEntity comparisonEntityRules = comparisonDao.queryComparisonById(comparisonEntityRule); }else{
String documentRule = comparisonEntityRules.getDocumentRule();//"KH-2024-05-30-1"; map.put("mdm_up_id",listParentId.get(0).get("id"));
logger.info("通用数据保存接口中根据mId查询出来的单据规则为:{}", documentRule); }
if (documentRule != null) { }
//获取规则前缀 CK }
String rulePrefix = documentRule.substring(0, documentRule.indexOf("-"));
//获取规则中间日期 yyyy-MM-dd
String ruleDate = documentRule.substring(documentRule.indexOf("-") + 1, documentRule.lastIndexOf("-"));
String ruleMiddle = getRuleDate(ruleDate);
//获取规则后缀
String ruleSuffixLength = documentRule.substring(documentRule.lastIndexOf("-") + 1);
int ruleSuffix = ruleSuffixLength.length();
//生成单据规则
comparisonEntityRule.setRulePrefix(rulePrefix);
comparisonEntityRule.setRuleMiddle(ruleMiddle);
comparisonEntityRule.setRuleSuffix(ruleSuffix);
try {
//新生成单据规则保存到数据库
ComparisonEntity comparisonEntityRuleGz = comparisonDao.queryComparisonRule(comparisonEntityRule);
map.put("document_rule", comparisonEntityRuleGz.getDocumentRule());//单据规则
map.put("document_rule_num", comparisonEntityRuleGz.getDocumentRuleNum());//单据规则流水号
comparisonEntityRule.setMap(map);
} catch (Exception e) {
logger.info("保存通用数据时候生成单据规则错误:{}", e.getMessage());
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity("保存失败"); //判断输入的主表字段是否是必填项
} for (ComparisonEntity entity : comparisonEntities) {
} //如果必填字段不为空
} catch (Exception e) { if (entity.getRuleValue() != null && entity.getDbType().equals("1")) {
logger.info("通用数据保存接口中查询单据规则错误:{}", e.getMessage()); //如果值为空说明没有传这个字段或者这个字段的值为空
//保存操作日志 if (jsonObjectMain.getString(entity.getEnName()) == null || jsonObjectMain.getString(entity.getEnName()).equals("")) {
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2"); //保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity(entity.getDbName() + "表的" + entity.getEnName() + "字段不能为空");
}
}
}
return BaseResult.getFailureMessageEntity("保存失败"); map.put("id", uuid);
} map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
try { map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
List<JSONObject> list = new ArrayList<>(); map.put("org_id", "0");
JSONObject jsonObjectList = new JSONObject(); map.put("create_time", new Date());
map.put("modify_time", new Date());
map.put("sts", "Y");
map.put("data_status", "Y");//新增状态
map.put("add_status", "0");//新增状态
map.put("update_status", "1");//修改状态
map.put("delete_status", "1");//删除状态
ComparisonEntity comparisonEntityRule = comparisonEntities.get(0);
//查询单据规则 只查询主表得明细表不用
try {
ComparisonEntity comparisonEntityRules = comparisonDao.queryComparisonById(comparisonEntityRule);
String documentRule = comparisonEntityRules.getDocumentRule();//"KH-2024-05-30-1";
logger.info("通用数据保存接口中根据mId查询出来的单据规则为:{}", documentRule);
if (documentRule != null) {
//获取规则前缀 CK
String rulePrefix = documentRule.substring(0, documentRule.indexOf("-"));
//获取规则中间日期 yyyy-MM-dd
String ruleDate = documentRule.substring(documentRule.indexOf("-") + 1, documentRule.lastIndexOf("-"));
String ruleMiddle = getRuleDate(ruleDate);
//获取规则后缀
String ruleSuffixLength = documentRule.substring(documentRule.lastIndexOf("-") + 1);
int ruleSuffix = ruleSuffixLength.length();
//生成单据规则
comparisonEntityRule.setRulePrefix(rulePrefix);
comparisonEntityRule.setRuleMiddle(ruleMiddle);
comparisonEntityRule.setRuleSuffix(ruleSuffix);
try {
//新生成单据规则保存到数据库
ComparisonEntity comparisonEntityRuleGz = comparisonDao.queryComparisonRule(comparisonEntityRule);
map.put("document_rule", comparisonEntityRuleGz.getDocumentRule());//单据规则
map.put("document_rule_num", comparisonEntityRuleGz.getDocumentRuleNum());//单据规则流水号
comparisonEntityRule.setMap(map);
} catch (Exception e) {
logger.info("保存通用数据时候生成单据规则错误:{}", e.getMessage());
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
//判断明细表字段是否是必填项 return BaseResult.getFailureMessageEntity("保存失败");
if (arrayList != null && arrayList.size() > 0) { }
for (JSONArray jsonArrayDetails : arrayList) { }
for (Object object : jsonArrayDetails) { } catch (Exception e) {
JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object); logger.info("通用数据保存接口中查询单据规则错误:{}", e.getMessage());
for (ComparisonEntity entity : comparisonEntities) { //保存操作日志
if (entity.getRuleValue() != null && entity.getDbType().equals("2")) { controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
//如果值为空说明没有传这个字段或者这个字段的值为空
if (jsonObjectDetails.getString(entity.getEnName()) == null || jsonObjectDetails.getString(entity.getEnName()).equals("")) {
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity(entity.getDbName() + "表的" + entity.getEnName() + "字段不能为空");
}
}
}
}
}
}
//保存主表数据 return BaseResult.getFailureMessageEntity("保存失败");
ComparisonEntity comparisonEntityOne = comparisonDao.saveComparison(comparisonEntityRule); }
jsonObjectList.put(comparisonEntityOne.getDbName(), map); try {
//保存子表数据 List<JSONObject> list = new ArrayList<>();
if (arrayList != null && arrayList.size() > 0) { JSONObject jsonObjectList = new JSONObject();
mapDetails = spliceDetailMap(comparisonEntities, mapDetails, arrayList);
if (mapDetails.size() > 0 && mapDetails != null) {
for (List<Map<String, Object>> mapDetail : mapDetails) {
for (Map<String, Object> stringObjectMap : mapDetail) {
stringObjectMap.put("id", UUIDLong.longUUID());
stringObjectMap.put("formmain_id", uuid);
stringObjectMap.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("org_id", "0");
stringObjectMap.put("create_time", new Date());
stringObjectMap.put("modify_time", new Date());
stringObjectMap.put("sts", "Y");
stringObjectMap.put("data_status", "Y");//新增状态
comparisonDetailsEntity.setMapDetails(stringObjectMap);
comparisonDetailsEntity.setDbName(String.valueOf(stringObjectMap.get("table_name")));
stringObjectMap.remove("table_name");
ComparisonDetailsEntity comparisonDetailsEntityOne = comparisonDetailsDao.saveComparisonDetails(comparisonDetailsEntity);
comparisonEntityOne.setComparisonDetailsEntity(comparisonDetailsEntityOne);
//保存操作日志
//controlsLogDaoimpl.saveControlsLog(uuidDetail,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),comparisonDetailsEntity.getDbName()+"_option_log");
}
}
jsonObjectList.put(comparisonDetailsEntity.getDbName(), mapDetails);
}
} else {
jsonObjectList.put(comparisonDetailsEntity.getDbName(), new ArrayList<>());
}
jsonObjectList.remove(null);
list.add(jsonObjectList);
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "1");
JSONObject json1 = new JSONObject();
json1.put("status", "200");
json1.put("list", list);
return json1;
} catch (Exception e) {
logger.info("保存通用数据时候错误:{}", e.getMessage());
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity("保存失败"); //判断明细表字段是否是必填项
} if (arrayList != null && arrayList.size() > 0) {
} for (JSONArray jsonArrayDetails : arrayList) {
} for (Object object : jsonArrayDetails) {
} JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object);
return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); for (ComparisonEntity entity : comparisonEntities) {
if (entity.getRuleValue() != null && entity.getDbType().equals("2")) {
//如果值为空说明没有传这个字段或者这个字段的值为空
if (jsonObjectDetails.getString(entity.getEnName()) == null || jsonObjectDetails.getString(entity.getEnName()).equals("")) {
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity(entity.getDbName() + "表的" + entity.getEnName() + "字段不能为空");
}
}
}
}
}
}
//保存主表数据
ComparisonEntity comparisonEntityOne = comparisonDao.saveComparison(comparisonEntityRule);
jsonObjectList.put(comparisonEntityOne.getDbName(), map);
//保存子表数据
if (arrayList != null && arrayList.size() > 0) {
mapDetails = spliceDetailMap(comparisonEntities, mapDetails, arrayList);
if (mapDetails.size() > 0 && mapDetails != null) {
for (List<Map<String, Object>> mapDetail : mapDetails) {
for (Map<String, Object> stringObjectMap : mapDetail) {
stringObjectMap.put("id", UUIDLong.longUUID());
stringObjectMap.put("formmain_id", uuid);
stringObjectMap.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("org_id", "0");
stringObjectMap.put("create_time", new Date());
stringObjectMap.put("modify_time", new Date());
stringObjectMap.put("sts", "Y");
stringObjectMap.put("data_status", "Y");//新增状态
comparisonDetailsEntity.setMapDetails(stringObjectMap);
comparisonDetailsEntity.setDbName(String.valueOf(stringObjectMap.get("table_name")));
stringObjectMap.remove("table_name");
ComparisonDetailsEntity comparisonDetailsEntityOne = comparisonDetailsDao.saveComparisonDetails(comparisonDetailsEntity);
comparisonEntityOne.setComparisonDetailsEntity(comparisonDetailsEntityOne);
//保存操作日志
//controlsLogDaoimpl.saveControlsLog(uuidDetail,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),comparisonDetailsEntity.getDbName()+"_option_log");
}
}
jsonObjectList.put(comparisonDetailsEntity.getDbName(), mapDetails);
}
} else {
jsonObjectList.put(comparisonDetailsEntity.getDbName(), new ArrayList<>());
}
jsonObjectList.remove(null);
list.add(jsonObjectList);
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "1");
JSONObject json1 = new JSONObject();
json1.put("status", "200");
json1.put("list", list);
return json1;
} catch (Exception e) {
logger.info("保存通用数据时候错误:{}", e.getMessage());
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2");
return BaseResult.getFailureMessageEntity("保存失败");
}
}
}
}
return BaseResult.getFailureMessageEntity("保存失败","请检查传递参数");
} }
//更新通用数据数据 //更新通用数据数据
@ -382,7 +409,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
List<ComparisonEntity> comparisonEntities=new ArrayList<>(); List<ComparisonEntity> comparisonEntities=new ArrayList<>();
//根据主数据编码查询表名称字段名称等信息 10001 //根据主数据编码查询表名称字段名称等信息 10001
try { try {
// comparisonEntities = comparisonDao.queryComparison(comparisonEntity); // comparisonEntities = comparisonDao.queryComparison(comparisonEntity);
//comparisonEntities=getComparisonEntity(comparisonEntity); //comparisonEntities=getComparisonEntity(comparisonEntity);
comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); comparisonEntities=getComparisonEntityCache(comparisonEntity,"main");
@ -440,6 +467,26 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
if(CollectionUtils.isEmpty(comparisonEntitiePages)){ if(CollectionUtils.isEmpty(comparisonEntitiePages)){
return BaseResult.getFailureMessageEntity("根据data_id查询id数据为空请检查data_id"); return BaseResult.getFailureMessageEntity("根据data_id查询id数据为空请检查data_id");
} }
//判断是否是树形结构
if(comparisonEntities.get(0).getViewName().equals("1")){
//根据data_id查询出parent_id再根据parent_id得值查询data_id字段中为这个得值,如果有将data_id为parent_id得id值保存到mdm_up_id中
Map<String,Object> mapParent=new HashMap<>();
mapParent.put("data_id",comparisonEntitiePages.get(0).get("parent_id"));
ComparisonEntity comparisonParent=new ComparisonEntity();
comparisonParent.setDbName(comparisonEntity.getDbName());
comparisonParent.setMap(mapParent);
comparisonParent.setFields(fields);
List<Map<String,Object>> comparisonEntitieParent = comparisonDao.queryComparisonPage(comparisonParent);
if(!CollectionUtils.isEmpty(comparisonEntitieParent)){
if(null != comparisonEntitieParent.get(0).get("mdm_up_id")){
map.put("mdm_up_id",comparisonEntitieParent.get(0).get("mdm_up_id")+","+comparisonEntitieParent.get(0).get("id"));
}else{
map.put("mdm_up_id",comparisonEntitieParent.get(0).get("id"));
}
}
}
String id = String.valueOf(comparisonEntitiePages.get(0).get("id")); String id = String.valueOf(comparisonEntitiePages.get(0).get("id"));
map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
@ -500,7 +547,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
return BaseResult.getFailureMessageEntity("更新失败"); return BaseResult.getFailureMessageEntity("更新失败");
} }
} }
return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); return BaseResult.getFailureMessageEntity("更新失败","请检查传递参数");
} }
private List<String> getFields(ComparisonEntity comparisonEntity) { private List<String> getFields(ComparisonEntity comparisonEntity) {
@ -527,7 +574,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
List<ComparisonEntity> comparisonEntities=new ArrayList<>(); List<ComparisonEntity> comparisonEntities=new ArrayList<>();
//根据主数据编码查询表名称字段名称等信息 10001 //根据主数据编码查询表名称字段名称等信息 10001
try { try {
// comparisonEntities = comparisonDao.queryComparison(comparisonEntity); // comparisonEntities = comparisonDao.queryComparison(comparisonEntity);
//comparisonEntities=getComparisonEntity(comparisonEntity); //comparisonEntities=getComparisonEntity(comparisonEntity);
comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); comparisonEntities=getComparisonEntityCache(comparisonEntity,"main");
@ -583,6 +630,12 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
if(CollectionUtils.isEmpty(comparisonEntitiePages)){ if(CollectionUtils.isEmpty(comparisonEntitiePages)){
return BaseResult.getFailureMessageEntity("根据data_id查询id数据为空请检查data_id"); return BaseResult.getFailureMessageEntity("根据data_id查询id数据为空请检查data_id");
} }
//递归删除树结构 1. 2.列表
if(map.get("viewName").equals("1")){
return recursiveDeleteComparison(comparisonEntitiePages,comparisonEntity);
}
String id = String.valueOf(comparisonEntitiePages.get(0).get("id")); String id = String.valueOf(comparisonEntitiePages.get(0).get("id"));
map.remove("id"); map.remove("id");
@ -612,7 +665,59 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
return BaseResult.getFailureMessageEntity("删除失败"); return BaseResult.getFailureMessageEntity("删除失败");
} }
} }
return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); return BaseResult.getFailureMessageEntity("删除失败","请检查传递参数");
}
//递归删除组织树
private Object recursiveDeleteComparison(List<Map<String,Object>> list,ComparisonEntity comparisonEntity){
for(int i=0;i<list.size();i++){
List<String> fields = getFields(comparisonEntity);
Map<String,Object> mapId=new HashMap<>();
mapId.put("mdm_up_id",list.get(0).get("id"));
ComparisonEntity comparison=new ComparisonEntity();
comparison.setDbName(comparisonEntity.getDbName());
comparison.setMap(mapId);
comparison.setFields(fields);
List<Map<String,Object>> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparison);
if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){
recursiveDeleteComparison(comparisonEntitiePages,comparisonEntity);
}
comparisonEntity.setId(String.valueOf(list.get(0).get("id")));
Integer integer = comparisonDao.deleteComparison(comparisonEntity);
JSONObject json1 = new JSONObject();
json1.put("status","200");
json1.put("integer",integer);
return json1;
}
return null;
}
//递归查询组织树
private Object recursiveQueryComparison(List<Map<String,Object>> list,ComparisonEntity comparisonEntity){
if(CollectionUtils.isNotEmpty(list)) {
for (int i = 0; i < list.size(); i++) {
List<String> fields = getFields(comparisonEntity);
Map<String,Object> mapId=new HashMap<>();
mapId.put("mdm_up_id",list.get(0).get("id"));
ComparisonEntity comparison=new ComparisonEntity();
comparison.setDbName(comparisonEntity.getDbName());
comparison.setMap(mapId);
comparison.setFields(fields);
List<Map<String,Object>> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparison);
if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){
recursiveQueryComparison(comparisonEntitiePages,comparisonEntity);
for (Map<String, Object> map : list) {
map.put("comparisonEntities",comparisonEntitiePages);
}
}
PageInfo pageInfo = new PageInfo(list);
JSONObject json1=new JSONObject();
json1.put("status","200");
json1.put("pageInfo",pageInfo);
return json1;
}
}
return null;
} }
//根据应用key和应用密钥获取应用编码和应用名称 //根据应用key和应用密钥获取应用编码和应用名称
@ -704,6 +809,11 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
comparisonEntity.setmId(mdmModuleEntity.getId()); comparisonEntity.setmId(mdmModuleEntity.getId());
List<ComparisonEntity> comparisonEntitiesFieldRule = comparisonDao.queryComparisonBymdmIdDbIdFiledId(comparisonEntity); List<ComparisonEntity> comparisonEntitiesFieldRule = comparisonDao.queryComparisonBymdmIdDbIdFiledId(comparisonEntity);
//根据mdm_module得id判断是树结构还是列表结构
MdmModuleViewEntity mdmModuleViewEntity=new MdmModuleViewEntity();
mdmModuleViewEntity.setMdmId(mdmModuleEntity.getId());
List<MdmModuleViewEntity> mdmModuleViewEntities = mdmModuleViewDao.query(mdmModuleViewEntity);
//根据mdm_id查询mdm_module_db的信息 //根据mdm_id查询mdm_module_db的信息
MdmModuleDbEntity mdmModuleDbEntity = new MdmModuleDbEntity(); MdmModuleDbEntity mdmModuleDbEntity = new MdmModuleDbEntity();
mdmModuleDbEntity.setMdmId(mdmModuleEntity.getId()); mdmModuleDbEntity.setMdmId(mdmModuleEntity.getId());
@ -736,6 +846,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
comparisonEntityFile.setmId(mdmModuleEntity.getId()); comparisonEntityFile.setmId(mdmModuleEntity.getId());
comparisonEntityFile.setMdmName(mdmModuleEntity.getMdmName()); comparisonEntityFile.setMdmName(mdmModuleEntity.getMdmName());
comparisonEntityFile.setMdmCode(String.valueOf(mdmModuleEntity.getMdmCode())); comparisonEntityFile.setMdmCode(String.valueOf(mdmModuleEntity.getMdmCode()));
comparisonEntityFile.setViewName(CollectionUtils.isNotEmpty(mdmModuleViewEntities)?mdmModuleViewEntities.get(0).getViewName():null);
if(CollectionUtils.isNotEmpty(comparisonEntitiesFieldRule)){ if(CollectionUtils.isNotEmpty(comparisonEntitiesFieldRule)){
for (ComparisonEntity entity : comparisonEntitiesFieldRule) { for (ComparisonEntity entity : comparisonEntitiesFieldRule) {
if(entity.getEnName().equals(moduleDbFiledsEntity.getEnName()) && entity.getDbType().equals(moduleDbEntity.getDbType())){ if(entity.getEnName().equals(moduleDbFiledsEntity.getEnName()) && entity.getDbType().equals(moduleDbEntity.getDbType())){

View File

@ -1,6 +1,7 @@
package com.hzya.frame.sysnew.grovy.service.impl; package com.hzya.frame.sysnew.grovy.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.sysnew.grovy.service.IGroovyIntegrationService; import com.hzya.frame.sysnew.grovy.service.IGroovyIntegrationService;
@ -34,7 +35,7 @@ public class GroovyIntegrationServiceImpl implements IGroovyIntegrationService {
} }
public static void main(String[] args) { public static void main(String[] args) {
java.lang.String str = "{\"data\":{\"document_rule\":\"DDUSER-2024-08-29-00001\",\"create_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"unionid\":\"coYVgzQqG4CQiia82l3iSsGQiEiE\",\"create_time\":1724917764000,\"modify_time\":1725003633000,\"mobile\":\"13934391285\",\"title\":\"\",\"userid\":\"255217304629918083\",\"document_rule_num\":1,\"add_status\":\"0\",\"update_status\":\"0\",\"event_type\":\"user_modify_org\",\"sts\":\"Y\",\"data_id\":\"255217304629918083\",\"delete_status\":\"1\",\"org_id\":\"0\",\"name\":\"相二林\",\"dept_id_list\":\"[1,921358750]\",\"id\":\"8979640169757689261\",\"job_number\":\"xel123\",\"data_status\":\"F\",\"modify_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"sorts\":1,\"email\":\"251481237@qq.com\"},\"query\":\"[]\",\"header\":\"[]\",\"body\":\"[{\\\"id\\\":\\\"e5faa5a5-8de4-45d4-bfa9-de80497cb222\\\",\\\"parameterName\\\":\\\"body\\\",\\\"first\\\":true}]\"}"; java.lang.String str = "{\"data\":{\"document_rule\":\"DDUSER-2024-09-04-00007\",\"create_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"unionid\":\"2fkFIWM9iSJAcLxiimUZdUWwiEiE\",\"create_time\":1725413884000,\"modify_time\":1725413884000,\"title\":\"高级软件工程师\",\"hired_date\":1677600000000,\"userid\":\"023822475524346736\",\"document_rule_num\":7,\"add_status\":\"0\",\"update_status\":\"1\",\"event_type\":\"user_modify_org\",\"sts\":\"Y\",\"data_id\":\"023822475524346736\",\"delete_status\":\"1\",\"org_id\":\"0\",\"mdm_dd_user_position\":[{\"create_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"formmain_id\":\"8740260843790486508\",\"create_time\":1725413884000,\"modify_time\":1725413884000,\"title\":\"高级软件工程师\",\"sts\":\"Y\",\"data_id\":\"5a79ab0bd206414aab97087915e6488a\",\"org_id\":\"0\",\"id\":\"-5911347781273497855\",\"data_status\":\"Y\",\"modify_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"dept_id\":\"66631023\",\"sorts\":7}],\"name\":\"徐新璐\",\"dept_id_list\":\"[66631023]\",\"id\":\"8740260843790486508\",\"job_number\":\"2176\",\"data_status\":\"Y\",\"modify_user_id\":\"c796fd9ba4c9f5ff3cc2fa41a040e443\",\"sorts\":446},\"query\":\"[]\",\"header\":\"[]\",\"body\":\"[{\\\"id\\\":\\\"e5faa5a5-8de4-45d4-bfa9-de80497cb222\\\",\\\"parameterName\\\":\\\"body\\\",\\\"first\\\":true}]\"}";
A88772 s = new A88772(); A88772 s = new A88772();
System.out.println(s.execute(str)); System.out.println(s.execute(str));
} }
@ -53,6 +54,18 @@ public class GroovyIntegrationServiceImpl implements IGroovyIntegrationService {
mdmUser.put("title",data.getString("title")); mdmUser.put("title",data.getString("title"));
mdmUser.put("dept_id_list",data.getString("dept_id_list")); mdmUser.put("dept_id_list",data.getString("dept_id_list"));
mdmUser.put("dataStatus",data.getString("event_type")); mdmUser.put("dataStatus",data.getString("event_type"));
com.alibaba.fastjson.JSONArray array = data.getJSONArray("mdm_dd_user_position");
com.alibaba.fastjson.JSONArray postArray = new com.alibaba.fastjson.JSONArray();
if (null != array && array.size() > 0){
for (int i=0; i<array.size();i++) {
com.alibaba.fastjson.JSONObject jsonObject = array.getJSONObject(i);
com.alibaba.fastjson.JSONObject post = new com.alibaba.fastjson.JSONObject();
post.put("dept_id",jsonObject.getString("dept_id"));
post.put("title",jsonObject.getString("title"));
postArray.add(post);
}
}
mdmUser.put("items",postArray);
bodys.put("mdm_dd_user",mdmUser); bodys.put("mdm_dd_user",mdmUser);
returnObject.put("bodys",bodys.toJSONString()); returnObject.put("bodys",bodys.toJSONString());
return returnObject.toJSONString(); return returnObject.toJSONString();