diff --git a/service/src/main/java/com/hzya/frame/sysnew/comparison/service/impl/ComparisonServiceImpl.java b/service/src/main/java/com/hzya/frame/sysnew/comparison/service/impl/ComparisonServiceImpl.java index 286af9cc..8445dc71 100644 --- a/service/src/main/java/com/hzya/frame/sysnew/comparison/service/impl/ComparisonServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/sysnew/comparison/service/impl/ComparisonServiceImpl.java @@ -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 implements IComparisonService { @@ -50,7 +51,6 @@ public class ComparisonServiceImpl extends BaseService } //分页查询通用数据数据 - @DS("master") @Override public JsonResultEntity queryEntityPage(JSONObject json) { JSONObject jsonObject = json.getJSONObject("jsonStr"); @@ -100,13 +100,15 @@ public class ComparisonServiceImpl extends BaseService for (Map comparisonEntitiePage : comparisonEntitiePages) { JSONObject jsonObjects=new JSONObject(); jsonObjects.put(comparisonEntity.getDbName(),comparisonEntitiePage); - comparisonDetailsEntity.setFormmainId(String.valueOf(comparisonEntitiePage.get("id"))); - //查询明细表数据 - List> maps = comparisonDetailsDao.queryComparisonDetailsPage(comparisonDetailsEntity); - if(CollectionUtils.isNotEmpty(maps)){ - jsonObjects.put(comparisonDetailsEntity.getDbName(),maps); - }else { - jsonObjects.put(comparisonDetailsEntity.getDbName(),new JSONArray()); + if(comparisonDetailsEntity.getDbName()!=null){ + comparisonDetailsEntity.setFormmainId(String.valueOf(comparisonEntitiePage.get("id"))); + //查询明细表数据 + List> maps = comparisonDetailsDao.queryComparisonDetailsPage(comparisonDetailsEntity); + if(CollectionUtils.isNotEmpty(maps)){ + jsonObjects.put(comparisonDetailsEntity.getDbName(),maps); + }else { + jsonObjects.put(comparisonDetailsEntity.getDbName(),new JSONArray()); + } } list.add(jsonObjects); } @@ -122,7 +124,6 @@ public class ComparisonServiceImpl extends BaseService } //新增通用数据数据 - @DS("master") @Override public JsonResultEntity saveEntity(JSONObject json) { JSONObject jsonObject = json.getJSONObject("jsonStr"); @@ -148,108 +149,136 @@ public class ComparisonServiceImpl extends BaseService 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 map = new HashMap<>();//将主表数据存到map中 - List> 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 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 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 arrayList=new ArrayList<>(); + //根据dbtype和dbname分组,拿到表名称和表类型 + Map>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType))); + List> 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 keyPair : keyPairs) { + //如果是1,就是主表,根据查询出来得主表是否是传输传递得主表 + 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不能为空"); + } + } + } + //如果是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()); + if(!checkStr(jsonObjectDetails.getString("id"))){ + return BaseResult.getFailureMessageEntity("新增时候明细id不能为空"); + } + } + arrayList.add(jsonArray); + } + } + } + if(jsonObjectMain!=null && jsonObjectMain.size()>0) { + Map map = new HashMap<>();//将主表数据存到map中 + List>> mapDetails = new ArrayList<>();//将子表数据存到map中 + if (comparisonEntities != null && comparisonEntities.size() > 0) { + map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity, comparisonDetailsEntity); + 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 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> mapDetail : mapDetails) { + for (Map stringObjectMap : mapDetail) { + stringObjectMap.put("id", stringObjectMap.get("id")); + stringObjectMap.put("formmain_id", jsonObjectMain.getString("id")); + 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(jsonObjectMain.getString("id"),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 +297,6 @@ public class ComparisonServiceImpl extends BaseService } 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 comparisonEntities=new ArrayList<>(); //根据主数据编码查询表名称,字段名称等信息 10001 try { @@ -284,8 +308,41 @@ public class ComparisonServiceImpl extends BaseService logger.info("根据主数据编码查询信息错误:{}",e.getMessage()); return BaseResult.getFailureMessageEntity("更新失败"); } + JSONObject jsonObjectMain=new JSONObject(); + JSONArray jsonArray=new JSONArray(); + List arrayList=new ArrayList<>(); + //根据dbtype和dbname分组,拿到表名称和表类型 + Map>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType))); + List> keyPairs = collect.entrySet().stream() + .flatMap(e1 -> e1.getValue().keySet().stream() + .map(dbname -> new AbstractMap.SimpleEntry<>(e1.getKey(), dbname))) + .collect(Collectors.toList()); + for (Map.Entry 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 map=new HashMap<>();//将主表数据存到map中 - List> mapDetails=new ArrayList<>();//将子表数据存到map中 + List>> 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 +372,24 @@ public class ComparisonServiceImpl extends BaseService jsonObjectList.put(comparisonEntity.getDbName(),map); if (integer>0) { //保存子表数据 - if (jsonArray != null && jsonArray.size() > 0) { - mapDetails=spliceDetailMap(comparisonEntities,mapDetails,jsonArray); - for (Map 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> mapDetail : mapDetails) { + for (Map 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 +532,27 @@ public class ComparisonServiceImpl extends BaseService } //得到明细表数据 - private List> spliceDetailMap(List comparisonEntities,List> 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>> spliceDetailMap(List comparisonEntities,List>> mapDetails,List arrayList){ + if (arrayList != null && arrayList.size() > 0) { + for (JSONArray jsonArray : arrayList) { + List> 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;