Merge branch 'dev' of http://192.168.2.237:3000/root/kangarooDataCenterV3 into yuecheng-project

This commit is contained in:
yuqh 2024-06-24 17:48:42 +08:00
commit dfc406864b
1 changed files with 204 additions and 136 deletions

View File

@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
import sun.java2d.pipe.AAShapePipe;
import java.util.*;
import java.util.stream.Collectors;
@Service(value = "comparisonServiceImpl")
public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String> implements IComparisonService {
@ -50,7 +51,6 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
}
//分页查询通用数据数据
@DS("master")
@Override
public JsonResultEntity queryEntityPage(JSONObject json) {
JSONObject jsonObject = json.getJSONObject("jsonStr");
@ -122,7 +122,6 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
}
//新增通用数据数据
@DS("master")
@Override
public JsonResultEntity saveEntity(JSONObject json) {
JSONObject jsonObject = json.getJSONObject("jsonStr");
@ -148,108 +147,139 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
logger.info("根据主数据编码查询信息错误:{}",e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败");
}
String main = jsonObject.getString("main");//获取主表数据
JSONArray jsonArray = jsonObject.getJSONArray("details");//获取子表数据
JSONObject jsonObjectMain = JSONObject.parseObject(main);
if(jsonObjectMain != null ) {
Map<String, Object> map = new HashMap<>();//将主表数据存到map中
List<Map<String, Object>> mapDetails = new ArrayList<>();//将子表数据存到map中
if (comparisonEntities != null && comparisonEntities.size() > 0) {
map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity,comparisonDetailsEntity);
String uuid = null;
if (jsonObjectMain.getString("id") == null) {
uuid = UUIDUtils.getUUID();
map.put("id", uuid);
} else {
uuid = jsonObjectMain.getString("id");
map.put("id", jsonObjectMain.getString("id"));
}
map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
map.put("org_id", "0");
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());
return BaseResult.getFailureMessageEntity("保存失败");
}
}
} catch (Exception e) {
logger.info("通用数据保存接口中查询单据规则错误:{}", e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败");
}
try {
List<JSONObject> list=new ArrayList<>();
JSONObject jsonObjectList=new JSONObject();
//保存主表数据
ComparisonEntity comparisonEntityOne = comparisonDao.saveComparison(comparisonEntityRule);
jsonObjectList.put(comparisonEntityOne.getDbName(),map);
//保存子表数据
if (jsonArray != null && jsonArray.size() > 0) {
mapDetails = spliceDetailMap(comparisonEntities, mapDetails, jsonArray);
if(mapDetails.size()>0 && mapDetails!=null){
for (Map<String, Object> mapDetail : mapDetails) {
String uuidDetail = UUIDUtils.getUUID();
mapDetail.put("id", uuidDetail);
mapDetail.put("formmain_id", uuid);
mapDetail.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
mapDetail.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
mapDetail.put("org_id", "0");
mapDetail.put("create_time", new Date());
mapDetail.put("modify_time", new Date());
mapDetail.put("sts", "Y");
mapDetail.put("data_status","Y");//新增状态
comparisonDetailsEntity.setMapDetails(mapDetail);
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<>());
}
list.add(jsonObjectList);
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),comparisonEntityRule.getDbName()+"_option_log");
return BaseResult.getSuccessMessageEntity("保存成功", list);
} catch (Exception e) {
logger.info("保存通用数据时候错误:{}", e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败");
}
}
}
JSONObject jsonObjectMain=new JSONObject();
JSONArray jsonArray=new JSONArray();
List<JSONArray> arrayList=new ArrayList<>();
//根据dbtype和dbname分组拿到表名称和表类型
Map<String, Map<String, List<ComparisonEntity>>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType)));
List<Map.Entry<String, String>> keyPairs = collect.entrySet().stream()
.flatMap(e1 -> e1.getValue().keySet().stream()
.map(dbname -> new AbstractMap.SimpleEntry<>(e1.getKey(), dbname)))
.collect(Collectors.toList());
// keyPairs 得值为键值对键是表名称值是类型避免多个子表得键一样比如mdm_customer:1,mdm_customer_bank:2,mdm_customer_option_log:2
for (Map.Entry<String, String> keyPair : keyPairs) {
//如果是1就是主表根据查询出来得主表是否是传输传递得主表
if(keyPair.getValue().equals("1")){
String main = jsonObject.getString(keyPair.getKey());
if(main!=null){
jsonObjectMain = JSONObject.parseObject(main);
}
}
//如果是2就是明细表根据查询出来得子表是否是传输传递得子表
if(keyPair.getValue().equals("2")){
jsonArray= jsonObject.getJSONArray(keyPair.getKey());
if(jsonArray!= null) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObjectDetails = jsonArray.getJSONObject(i);
jsonObjectDetails.put("table_name", keyPair.getKey());
}
arrayList.add(jsonArray);
}
}
}
if(jsonObjectMain!=null && jsonObjectMain.size()>0) {
Map<String, Object> map = new HashMap<>();//将主表数据存到map中
List<List<Map<String, Object>>> mapDetails = new ArrayList<>();//将子表数据存到map中
if (comparisonEntities != null && comparisonEntities.size() > 0) {
map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity, comparisonDetailsEntity);
String uuid = null;
if (jsonObjectMain.getString("id") == null) {
uuid = UUIDUtils.getUUID();
map.put("id", uuid);
} else {
uuid = jsonObjectMain.getString("id");
map.put("id", jsonObjectMain.getString("id"));
}
map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
map.put("org_id", "0");
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());
return BaseResult.getFailureMessageEntity("保存失败");
}
}
} catch (Exception e) {
logger.info("通用数据保存接口中查询单据规则错误:{}", e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败");
}
try {
List<JSONObject> list = new ArrayList<>();
JSONObject jsonObjectList = new JSONObject();
//保存主表数据
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) {
String uuidDetail = UUIDUtils.getUUID();
stringObjectMap.put("id", uuidDetail);
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<>());
}
list.add(jsonObjectList);
//保存操作日志
controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),comparisonEntityRule.getDbName()+"_option_log");
return BaseResult.getSuccessMessageEntity("保存成功", list);
} catch (Exception e) {
logger.info("保存通用数据时候错误:{}", e.getMessage());
return BaseResult.getFailureMessageEntity("保存失败");
}
}
}
return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数");
}
@ -268,11 +298,6 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
}
ComparisonEntity comparisonEntity = jsonObject.toJavaObject(ComparisonEntity.class);
ComparisonDetailsEntity comparisonDetailsEntity=new ComparisonDetailsEntity();
JSONObject jsonObjectMain=jsonObject.getJSONObject("main");//获取主表数据
JSONArray jsonArray = jsonObject.getJSONArray("details");//获取子表数据
if(!checkStr(jsonObjectMain.getString("id"))){
return BaseResult.getFailureMessageEntity("更新时候主表id不能为空");
}
List<ComparisonEntity> comparisonEntities=new ArrayList<>();
//根据主数据编码查询表名称字段名称等信息 10001
try {
@ -284,8 +309,41 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
logger.info("根据主数据编码查询信息错误:{}",e.getMessage());
return BaseResult.getFailureMessageEntity("更新失败");
}
JSONObject jsonObjectMain=new JSONObject();
JSONArray jsonArray=new JSONArray();
List<JSONArray> arrayList=new ArrayList<>();
//根据dbtype和dbname分组拿到表名称和表类型
Map<String, Map<String, List<ComparisonEntity>>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType)));
List<Map.Entry<String, String>> keyPairs = collect.entrySet().stream()
.flatMap(e1 -> e1.getValue().keySet().stream()
.map(dbname -> new AbstractMap.SimpleEntry<>(e1.getKey(), dbname)))
.collect(Collectors.toList());
for (Map.Entry<String, String> keyPair : keyPairs) {
if(keyPair.getValue().equals("1")){
String main = jsonObject.getString(keyPair.getKey());
if(main!=null){
jsonObjectMain = JSONObject.parseObject(main);
if(!checkStr(jsonObjectMain.getString("id"))){
return BaseResult.getFailureMessageEntity("更新时候主表id不能为空");
}
}
}
if(keyPair.getValue().equals("2")){
jsonArray= jsonObject.getJSONArray(keyPair.getKey());
if(jsonArray!= null) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObjectDetails = jsonArray.getJSONObject(i);
if(!checkStr(jsonObjectDetails.getString("id"))){
return BaseResult.getFailureMessageEntity("更新明细表时候明细表id不能为空");
}
jsonObjectDetails.put("table_name", keyPair.getKey());
}
arrayList.add(jsonArray);
}
}
}
Map<String,Object> map=new HashMap<>();//将主表数据存到map中
List<Map<String,Object>> mapDetails=new ArrayList<>();//将子表数据存到map中
List<List<Map<String,Object>>> mapDetails=new ArrayList<>();//将子表数据存到map中
if(comparisonEntities !=null && comparisonEntities.size()>0) {
map=spliceMainMap(comparisonEntities,jsonObjectMain,map,comparisonEntity,comparisonDetailsEntity);
map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
@ -315,21 +373,24 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
jsonObjectList.put(comparisonEntity.getDbName(),map);
if (integer>0) {
//保存子表数据
if (jsonArray != null && jsonArray.size() > 0) {
mapDetails=spliceDetailMap(comparisonEntities,mapDetails,jsonArray);
for (Map<String, Object> mapDetail : mapDetails) {
mapDetail.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
mapDetail.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
mapDetail.put("org_id", "0");
mapDetail.put("modify_time", new Date());
mapDetail.put("sts", "Y");
mapDetail.put("data_status","F");//数据状态
//comparisonDetailsEntity.setFormmainId(jsonObjectMain.getString("id"));
comparisonDetailsEntity.setId(String.valueOf(mapDetail.get("id")));
comparisonDetailsEntity.setMapDetails(mapDetail);
comparisonDetailsDao.updateComparisonDetailsByType(comparisonDetailsEntity);
//保存操作日志
// controlsLogDaoimpl.saveControlsLog(comparisonDetailsEntity.getId(),jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口更新",jsonObject.getString("optionName"),comparisonDetailsEntity.getDbName()+"_option_log");
if (arrayList != null && arrayList.size() > 0) {
mapDetails=spliceDetailMap(comparisonEntities,mapDetails,arrayList);
for (List<Map<String, Object>> mapDetail : mapDetails) {
for (Map<String, Object> stringObjectMap : mapDetail) {
stringObjectMap.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443");
stringObjectMap.put("org_id", "0");
stringObjectMap.put("modify_time", new Date());
stringObjectMap.put("sts", "Y");
stringObjectMap.put("data_status","F");//数据状态
comparisonDetailsEntity.setId(String.valueOf(stringObjectMap.get("id")));
comparisonDetailsEntity.setMapDetails(stringObjectMap);
comparisonDetailsEntity.setDbName(String.valueOf(stringObjectMap.get("table_name")));
stringObjectMap.remove("table_name");
comparisonDetailsDao.updateComparisonDetailsByType(comparisonDetailsEntity);
//保存操作日志
// controlsLogDaoimpl.saveControlsLog(comparisonDetailsEntity.getId(),jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口更新",jsonObject.getString("optionName"),comparisonDetailsEntity.getDbName()+"_option_log");
}
}
jsonObjectList.put(comparisonDetailsEntity.getDbName(),mapDetails);
}else{
@ -472,20 +533,27 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
}
//得到明细表数据
private List<Map<String, Object>> spliceDetailMap(List<ComparisonEntity> comparisonEntities,List<Map<String, Object>> mapDetails,JSONArray jsonArray){
if (jsonArray != null && jsonArray.size() > 0) {
for (Object object : jsonArray) {
JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object);
JSONObject jsonObject=new JSONObject();
//遍历主表下面的所有key,字段名
for (String key : jsonObjectDetails.keySet()) {
for (ComparisonEntity entity : comparisonEntities) {
if (entity.getDbType().equals("2") && entity.getEnName().equals(key)) {
jsonObject.put(key,jsonObjectDetails.getString(key));
private List<List<Map<String, Object>>> spliceDetailMap(List<ComparisonEntity> comparisonEntities,List<List<Map<String, Object>>> mapDetails,List<JSONArray> arrayList){
if (arrayList != null && arrayList.size() > 0) {
for (JSONArray jsonArray : arrayList) {
List<Map<String,Object>> list=new ArrayList<>();
for (Object object : jsonArray) {
JSONObject jsonObject = new JSONObject();
JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object);
//遍历主表下面的所有key,字段名
for (String key : jsonObjectDetails.keySet()) {
for (ComparisonEntity entity : comparisonEntities) {
if (entity.getDbType().equals("2") && entity.getEnName().equals(key)) {
jsonObject.put(key, jsonObjectDetails.getString(key));
}
if(key.equals("table_name")){
jsonObject.put(key,jsonObjectDetails.getString(key));
}
}
}
list.add(jsonObject);
}
mapDetails.add(jsonObject);
mapDetails.add(list);
}
}
return mapDetails;