From eb733789bb5830d3fe544dd7d87054e913654a5d Mon Sep 17 00:00:00 2001 From: xiang2lin <251481237@qq.com> Date: Wed, 4 Sep 2024 11:03:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E6=95=B0=E6=8D=AE=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3=E5=A4=84=E7=90=86=E6=A0=91?= =?UTF-8?q?=E5=BD=A2=E7=BB=93=E6=9E=84=E6=95=B0=E6=8D=AE=202024=E5=B9=B49?= =?UTF-8?q?=E6=9C=884=E6=97=A511:03:18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mdm/mdmModule/entity/MdmModuleEntity.xml | 1 + .../comparison/entity/ComparisonEntity.java | 29 +- .../comparison/entity/ComparisonEntity.xml | 2 +- .../service/impl/ComparisonServiceImpl.java | 509 +++++++++++------- .../impl/GroovyIntegrationServiceImpl.java | 15 +- 5 files changed, 351 insertions(+), 205 deletions(-) diff --git a/service/src/main/java/com/hzya/frame/mdm/mdmModule/entity/MdmModuleEntity.xml b/service/src/main/java/com/hzya/frame/mdm/mdmModule/entity/MdmModuleEntity.xml index 3350ccbd..5143c6bf 100644 --- a/service/src/main/java/com/hzya/frame/mdm/mdmModule/entity/MdmModuleEntity.xml +++ b/service/src/main/java/com/hzya/frame/mdm/mdmModule/entity/MdmModuleEntity.xml @@ -346,6 +346,7 @@ where id = #{id} `org_id` varchar(50) DEFAULT NULL COMMENT '组织机构ID', `company_id` varchar(50) DEFAULT NULL COMMENT '公司id', `data_id` varchar(100) DEFAULT NULL COMMENT 'data_id', + `mdm_up_id` varchar(100) DEFAULT NULL COMMENT 'mdm_up_id', `id` varchar(50) NOT NULL COMMENT '唯一标识码', diff --git a/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.java b/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.java index 117880b0..f839be52 100644 --- a/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.java +++ b/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.java @@ -6,11 +6,11 @@ import java.util.List; import java.util.Map; /** - * + * * @content 通用数据实体类 - * @Param - * @Return - * @Author hecan + * @Param + * @Return + * @Author hecan * @Date 2024/5/7 15:50 * **/ public class ComparisonEntity extends BaseEntity { @@ -52,6 +52,27 @@ public class ComparisonEntity extends BaseEntity { private List fields; private List returnField; + /** 显示类型 1、树2、列表*/ + private String viewName; + //下级结构树 + private List comparisonEntities; + + public List getComparisonEntities() { + return comparisonEntities; + } + + public void setComparisonEntities(List comparisonEntities) { + this.comparisonEntities = comparisonEntities; + } + + public String getViewName() { + return viewName; + } + + public void setViewName(String viewName) { + this.viewName = viewName; + } + public List getReturnField() { return returnField; } diff --git a/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.xml b/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.xml index c1f5d334..23d379ca 100644 --- a/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.xml +++ b/service/src/main/java/com/hzya/frame/sysnew/comparison/entity/ComparisonEntity.xml @@ -35,7 +35,7 @@ from ${dbName} a - and ${key} like concat('%',#{value},'%') + and ${key} = #{value} and sts='Y' and (data_status='Y' or data_status='F') 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 229c0758..a1e60887 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 @@ -1,15 +1,17 @@ package com.hzya.frame.sysnew.comparison.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.dynamic.datasource.annotation.DS; import com.github.pagehelper.PageInfo; import com.hzya.frame.basedao.service.impl.BaseService; import com.hzya.frame.mdm.mdmModule.dao.IMdmModuleDao; import com.hzya.frame.mdm.mdmModule.entity.MdmModuleEntity; import com.hzya.frame.mdm.mdmModuleDb.entity.MdmModuleDbEntity; 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.sysnew.application.entity.SysApplicationEntity; 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.service.IComparisonService; 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.JsonResultEntity; import org.apache.commons.collections.CollectionUtils; -import org.apache.ivy.Main; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import sun.java2d.pipe.AAShapePipe; import java.util.*; import java.util.stream.Collectors; @@ -49,6 +46,9 @@ public class ComparisonServiceImpl extends BaseService @Autowired private MdmServiceCache mdmServiceCache; + @Autowired + private IMdmModuleViewDao mdmModuleViewDao; + @Autowired public void setGeneralDataDao(IComparisonDao dao) { this.comparisonDao = dao; @@ -105,6 +105,12 @@ public class ComparisonServiceImpl extends BaseService comparisonEntity.setFields(fields); //查询主表数据 List> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparisonEntity); + + //递归查询组织树 + if(map.get("viewName").equals("1")){ + return recursiveQueryComparison(comparisonEntitiePages,comparisonEntity); + } + if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){ for (Map comparisonEntitiePage : comparisonEntitiePages) { JSONObject jsonObjects=new JSONObject(); @@ -150,21 +156,21 @@ public class ComparisonServiceImpl extends BaseService } ComparisonEntity comparisonEntity = jsonObject.toJavaObject(ComparisonEntity.class); ComparisonDetailsEntity comparisonDetailsEntity=new ComparisonDetailsEntity(); - List comparisonEntities=new ArrayList<>(); + List comparisonEntities=new ArrayList<>(); String uuid= String.valueOf(UUIDLong.longUUID()); - try { - //根据主数据编码查询表名称,字段名称等信息 10001 - // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); + try { + //根据主数据编码查询表名称,字段名称等信息 10001 + // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); - //comparisonEntities=getComparisonEntity(comparisonEntity); - comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); - }catch (Exception e){ - logger.info("根据主数据编码查询信息错误:{}",e.getMessage()); - return BaseResult.getFailureMessageEntity("保存失败"); - } - JSONObject jsonObjectMain=new JSONObject(); - JSONArray jsonArray=new JSONArray(); - List arrayList=new ArrayList<>(); + //comparisonEntities=getComparisonEntity(comparisonEntity); + comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); + }catch (Exception e){ + logger.info("根据主数据编码查询信息错误:{}",e.getMessage()); + return BaseResult.getFailureMessageEntity("保存失败"); + } + JSONObject jsonObjectMain=new JSONObject(); + JSONArray jsonArray=new JSONArray(); + List arrayList=new ArrayList<>(); String tableName=null; //根据dbtype和dbname分组,拿到表名称和表类型 @@ -176,192 +182,213 @@ public class ComparisonServiceImpl extends BaseService // 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()); - tableName=keyPair.getKey(); - if(main!=null){ - jsonObjectMain = JSONObject.parseObject(main); - if(!checkStr(jsonObjectMain.getString("data_id"))){ - //保存操作日志 - controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); - return BaseResult.getFailureMessageEntity("新增时候主表data_id不能为空"); - } - } - } + if(keyPair.getValue().equals("1")){ + String main = jsonObject.getString(keyPair.getKey()); + tableName=keyPair.getKey(); + if(main!=null){ + jsonObjectMain = JSONObject.parseObject(main); + if(!checkStr(jsonObjectMain.getString("data_id"))){ + //保存操作日志 + controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); + return BaseResult.getFailureMessageEntity("新增时候主表data_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("data_id"))){ - //保存操作日志 - controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); - return BaseResult.getFailureMessageEntity("新增时候明细data_id不能为空"); - } - } - arrayList.add(jsonArray); - } - } + 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("data_id"))){ + //保存操作日志 + controlsLogDaoimpl.saveControlsLog(uuid,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),tableName+"_option_log","2"); + return BaseResult.getFailureMessageEntity("新增时候明细data_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 map = new HashMap<>();//将主表数据存到map中 + List>> mapDetails = new ArrayList<>();//将子表数据存到map中 + if (comparisonEntities != null && comparisonEntities.size() > 0) { + map = spliceMainMap(comparisonEntities, jsonObjectMain, map, comparisonEntity, comparisonDetailsEntity); - //根据data_id判断数据是否已经保存在相关表中,避免重复保存 - List fields = getFields(comparisonEntity); - Map mapDataId = new HashMap<>(); - mapDataId.put("data_id", jsonObjectMain.getString("data_id")); - ComparisonEntity comparisonDataId = new ComparisonEntity(); - comparisonDataId.setMap(mapDataId); - comparisonDataId.setDbName(comparisonEntity.getDbName()); - comparisonDataId.setFields(fields); - List> listDataId = comparisonDao.queryComparisonPage(comparisonDataId); - if (CollectionUtils.isNotEmpty(listDataId)) { - //return BaseResult.getFailureMessageEntity(comparisonEntity.getDbName()+"表中已经存在data_id为:"+jsonObjectMain.getString("data_id")+"的数据"); - return updateEntity(json); - } 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() + "字段不能为空"); - } - } - } + //根据data_id判断数据是否已经保存在相关表中,避免重复保存 + List fields = getFields(comparisonEntity); + Map mapDataId = new HashMap<>(); + mapDataId.put("data_id", jsonObjectMain.getString("data_id")); + ComparisonEntity comparisonDataId = new ComparisonEntity(); + comparisonDataId.setMap(mapDataId); + comparisonDataId.setDbName(comparisonEntity.getDbName()); + comparisonDataId.setFields(fields); + List> listDataId = comparisonDao.queryComparisonPage(comparisonDataId); + if (CollectionUtils.isNotEmpty(listDataId)) { + //return BaseResult.getFailureMessageEntity(comparisonEntity.getDbName()+"表中已经存在data_id为:"+jsonObjectMain.getString("data_id")+"的数据"); + return updateEntity(json); + } else { - map.put("id", uuid); - 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()); - //保存操作日志 - controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2"); + //如果是树形结构,查询不存在,新增时候需要得到parent_id,根据parent_id查询data_id是否有,之后将查询得父id设置到mdm_up_id中 + if(comparisonEntities.get(0).getViewName().equals("1")){ + List fieldParent = getFields(comparisonEntity); + Map mapParentId = new HashMap<>(); + mapDataId.put("data_id", jsonObjectMain.getString("parent_id")); + ComparisonEntity comparisonParentId = new ComparisonEntity(); + comparisonParentId.setMap(mapParentId); + comparisonParentId.setDbName(comparisonEntity.getDbName()); + comparisonParentId.setFields(fieldParent); + List> listParentId = comparisonDao.queryComparisonPage(comparisonDataId); + //如果根据parentid查询数据不为空,将dataid为parenti得id值设置到mdm_up_id中 + if(CollectionUtils.isNotEmpty(listParentId)){ + if(null != listParentId.get(0).get("mdm_up_id")){ + map.put("mdm_up_id",listParentId.get(0).get("mdm_up_id")+","+listParentId.get(0).get("id")); + }else{ + map.put("mdm_up_id",listParentId.get(0).get("id")); + } + } + } - return BaseResult.getFailureMessageEntity("保存失败"); - } - } - } 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"); + //判断输入的主表字段是否是必填项 + 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() + "字段不能为空"); + } + } + } - return BaseResult.getFailureMessageEntity("保存失败"); - } - try { - List list = new ArrayList<>(); - JSONObject jsonObjectList = new JSONObject(); + map.put("id", uuid); + 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()); + //保存操作日志 + controlsLogDaoimpl.saveControlsLog(uuid, jsonObject.getString("appName"), jsonObject.getString("appCode"), jsonObject.toJSONString(), "接口新增", jsonObject.getString("optionName"), tableName + "_option_log", "2"); - //判断明细表字段是否是必填项 - if (arrayList != null && arrayList.size() > 0) { - for (JSONArray jsonArrayDetails : arrayList) { - for (Object object : jsonArrayDetails) { - JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object); - 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() + "字段不能为空"); - } - } - } - } - } - } + return BaseResult.getFailureMessageEntity("保存失败"); + } + } + } 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"); - //保存主表数据 - 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", 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("保存失败"); + } + try { + List list = new ArrayList<>(); + JSONObject jsonObjectList = new JSONObject(); - return BaseResult.getFailureMessageEntity("保存失败"); - } - } - } - } - return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); + //判断明细表字段是否是必填项 + if (arrayList != null && arrayList.size() > 0) { + for (JSONArray jsonArrayDetails : arrayList) { + for (Object object : jsonArrayDetails) { + JSONObject jsonObjectDetails = (JSONObject) JSON.toJSON(object); + 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> mapDetail : mapDetails) { + for (Map 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 List comparisonEntities=new ArrayList<>(); //根据主数据编码查询表名称,字段名称等信息 10001 try { - // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); + // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); //comparisonEntities=getComparisonEntity(comparisonEntity); comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); @@ -440,6 +467,26 @@ public class ComparisonServiceImpl extends BaseService if(CollectionUtils.isEmpty(comparisonEntitiePages)){ 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 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> 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")); map.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); map.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); @@ -500,7 +547,7 @@ public class ComparisonServiceImpl extends BaseService return BaseResult.getFailureMessageEntity("更新失败"); } } - return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); + return BaseResult.getFailureMessageEntity("更新失败","请检查传递参数"); } private List getFields(ComparisonEntity comparisonEntity) { @@ -527,7 +574,7 @@ public class ComparisonServiceImpl extends BaseService List comparisonEntities=new ArrayList<>(); //根据主数据编码查询表名称,字段名称等信息 10001 try { - // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); + // comparisonEntities = comparisonDao.queryComparison(comparisonEntity); //comparisonEntities=getComparisonEntity(comparisonEntity); comparisonEntities=getComparisonEntityCache(comparisonEntity,"main"); @@ -583,6 +630,12 @@ public class ComparisonServiceImpl extends BaseService if(CollectionUtils.isEmpty(comparisonEntitiePages)){ 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")); map.remove("id"); @@ -612,7 +665,59 @@ public class ComparisonServiceImpl extends BaseService return BaseResult.getFailureMessageEntity("删除失败"); } } - return BaseResult.getFailureMessageEntity("查询失败","请检查传递参数"); + return BaseResult.getFailureMessageEntity("删除失败","请检查传递参数"); + } + + //递归删除组织树 + private Object recursiveDeleteComparison(List> list,ComparisonEntity comparisonEntity){ + for(int i=0;i fields = getFields(comparisonEntity); + Map 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> 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> list,ComparisonEntity comparisonEntity){ + if(CollectionUtils.isNotEmpty(list)) { + for (int i = 0; i < list.size(); i++) { + List fields = getFields(comparisonEntity); + Map 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> comparisonEntitiePages = comparisonDao.queryComparisonPage(comparison); + if(CollectionUtils.isNotEmpty(comparisonEntitiePages)){ + recursiveQueryComparison(comparisonEntitiePages,comparisonEntity); + for (Map 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和应用密钥获取应用编码和应用名称 @@ -704,6 +809,11 @@ public class ComparisonServiceImpl extends BaseService comparisonEntity.setmId(mdmModuleEntity.getId()); List comparisonEntitiesFieldRule = comparisonDao.queryComparisonBymdmIdDbIdFiledId(comparisonEntity); + //根据mdm_module得id判断是树结构还是列表结构 + MdmModuleViewEntity mdmModuleViewEntity=new MdmModuleViewEntity(); + mdmModuleViewEntity.setMdmId(mdmModuleEntity.getId()); + List mdmModuleViewEntities = mdmModuleViewDao.query(mdmModuleViewEntity); + //根据mdm_id查询mdm_module_db的信息 MdmModuleDbEntity mdmModuleDbEntity = new MdmModuleDbEntity(); mdmModuleDbEntity.setMdmId(mdmModuleEntity.getId()); @@ -736,6 +846,7 @@ public class ComparisonServiceImpl extends BaseService comparisonEntityFile.setmId(mdmModuleEntity.getId()); comparisonEntityFile.setMdmName(mdmModuleEntity.getMdmName()); comparisonEntityFile.setMdmCode(String.valueOf(mdmModuleEntity.getMdmCode())); + comparisonEntityFile.setViewName(CollectionUtils.isNotEmpty(mdmModuleViewEntities)?mdmModuleViewEntities.get(0).getViewName():null); if(CollectionUtils.isNotEmpty(comparisonEntitiesFieldRule)){ for (ComparisonEntity entity : comparisonEntitiesFieldRule) { if(entity.getEnName().equals(moduleDbFiledsEntity.getEnName()) && entity.getDbType().equals(moduleDbEntity.getDbType())){ diff --git a/service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java b/service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java index d2bbab3e..f4439fa3 100644 --- a/service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java @@ -1,6 +1,7 @@ package com.hzya.frame.sysnew.grovy.service.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; import com.hzya.frame.sysnew.grovy.service.IGroovyIntegrationService; @@ -34,7 +35,7 @@ public class GroovyIntegrationServiceImpl implements IGroovyIntegrationService { } 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(); System.out.println(s.execute(str)); } @@ -53,6 +54,18 @@ public class GroovyIntegrationServiceImpl implements IGroovyIntegrationService { mdmUser.put("title",data.getString("title")); mdmUser.put("dept_id_list",data.getString("dept_id_list")); 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