From c5dc5449d093429cde987f87747bf5ac2d591362 Mon Sep 17 00:00:00 2001 From: hecan <1718492867@qq.com> Date: Mon, 24 Jun 2024 15:49:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=A1=A8=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=92=8C=E8=A1=A8=E7=B1=BB=E5=9E=8B=E8=BF=9B=E8=A1=8C=E5=88=86?= =?UTF-8?q?=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ComparisonServiceImpl.java | 223 ++++++++++-------- 1 file changed, 119 insertions(+), 104 deletions(-) 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..31873512 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<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,124 @@ 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(); + //根据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(keyPair.getValue().equals("2")){ + jsonArray= jsonObject.getJSONArray(keyPair.getKey()); + } + } + if(jsonObjectMain!=null && jsonObjectMain.size()>0) { + 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("保存失败"); + } + } + } return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); }