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("查询失败","请检查传递参数");
     }