diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysDictMapper.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysDictMapper.java index a94ef2d79..2aff71a9b 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysDictMapper.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysDictMapper.java @@ -51,6 +51,10 @@ public interface SysDictMapper extends BaseMapper { public String queryDictKeyByText(@Param("code") String code,@Param("text") String key); + /**根据code查询所有中文名*/ + @Select("select s.item_text from sys_dict_item s where s.dict_id = (select id from sys_dict where dict_code = #{code})") + public List queryDictNameByCode(@Param("code") String code); + @Deprecated public String queryTableDictTextByKey(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("key") String key); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryBaseEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryBaseEOService.java index 90159ed6d..c001cec47 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryBaseEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryBaseEOService.java @@ -36,7 +36,7 @@ public interface IDummyInventoryBaseEOService extends IService records = pageList.getRecords(); List createByList = records.stream().map(DummyInventoryBaseEO::getCreateBy).collect(Collectors.toList()); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(SysUser::getUsername, createByList); List userList = sysUserService.list(lambdaQueryWrapper); //订阅标识 @@ -187,7 +188,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl list = new ArrayList<>(); if(dummyInventoryBaseEOList.size() != 0){ - String base = JSONArray.fromObject(dummyInventoryBaseEOList).toString(); + String base = JSONArray.toJSONString(dummyInventoryBaseEOList); DummyContentChangeEO dummyContentChangeEOBase = new DummyContentChangeEO(); dummyContentChangeEOBase.setConnectId(dummyInventoryBaseEO.getId()); dummyContentChangeEOBase.setContentJson(base); list.add(dummyContentChangeEOBase); } if(dummyInventoryInfoEOList.size() != 0){ - String info = JSONArray.fromObject(dummyInventoryInfoEOList).toString(); + String info = JSONArray.toJSONString(dummyInventoryInfoEOList); DummyContentChangeEO dummyContentChangeEOInfo = new DummyContentChangeEO(); dummyContentChangeEOInfo.setParentId(dummyInventoryBaseEO.getId()); dummyContentChangeEOInfo.setContentJson(info); @@ -242,39 +243,53 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl dummyContentChangeEOInfoList = iDummyContentChangeEOService.list(wrapperInfo); - //3.截止到现在发布,期间修改的数据(基础) - //数据为-->dummyInventoryBaseEOList - String dibName = dummyInventoryBaseEOList.get(0).getName(); - String dibUseExplain = dummyInventoryBaseEOList.get(0).getUseExplain(); + //3.对比基础表数据 + //3.1截止到现在发布,期间修改的数据(基础) + //最新的数据为-->dummyInventoryBaseEOList + + //3.2基础表数据对比 + String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson(); + List baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list + + //对比,获取值不同的字段 + Map> diff = null; + for(int i=0;i<= baseCJlist.size();i++) { + baseCJlist.get(i); + dummyInventoryBaseEOList.get(i); + diff = ListDiff.compareObject(baseCJlist.get(i), dummyInventoryBaseEOList.get(i)); + System.out.println(diff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]} + } + + //4.对比详情表数据 + //4.1截止到现在发布,期间修改的数据(详情) + //现在的数据为-->dummyInventoryInfoEOList + //dummyInventoryInfoEOList + + //4.2详情表数据(一条基础数据可能对应多个详情数据---一对多) + /* String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson(); + List baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list + + //对比,获取值不同的字段 + Map> diff = null; + for(int i=0;i<= baseCJlist.size();i++) { + baseCJlist.get(i); + dummyInventoryBaseEOList.get(i); + diff = ListDiff.compareObject(baseCJlist.get(i), dummyInventoryBaseEOList.get(i)); + System.out.println(diff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]} + }*/ + + for(DummyContentChangeEO dummyContentChangeEO : dummyContentChangeEOInfoList){ + String infoCJ = dummyContentChangeEO.getContentJson(); + List infoCJlist = JSONArray.parseArray(infoCJ, DummyContentChangeEO.class);//json转list + System.out.println(infoCJlist); + System.out.println(infoCJlist); + + +// JsonDiff.compareJson(infoCJjson,info,null); - //4.截止到现在发布,期间修改的数据(详情) - //数据为-->dummyInventoryInfoEOList - List contentJson = Arrays.asList(dummyContentChangeEOInfoList.get(0).getContentJson().split("},\\{")); - for(String midCJ:contentJson){ - List dccContentJson = Arrays.asList( midCJ.split("\",\"")); - System.out.println(dccContentJson); - } - //5.分别对比基础表数据和详情表数据 - - //5.1.基础表数据对比 - List dibContentJson = Arrays.asList(dummyContentChangeEOBaseList.get(0).getContentJson().split("\",\"")); - - //获取原虚拟清单名称 - String cJName = dibContentJson.get(6); - String trueCJName = disposeContentJson(cJName); - //获取原虚拟清单使用说明 - String cJUseExplain = dibContentJson.get(1); - String trueCJUseExplain = disposeContentJson(cJUseExplain); - //拼接本次发布时的修改信息 - if(!trueCJName.equals(dibName)) { - String cJNameMessage = dummyInventoryBaseEO.getUpdateBy() + "把" + trueCJName + "改为了" + dibName; - } - if(!trueCJUseExplain.equals(dibUseExplain)) { - String cJUseExplainMessage = dummyInventoryBaseEO.getUpdateBy() + "把" + trueCJUseExplain + "改为" + dibUseExplain; } - //5.2详情表数据(一条基础数据可能对应多个详情数据---一对多) //6.数据对比完成后.删除之前保存的dummy_inventory_info中的数据,重新保存最新的数据 @@ -289,12 +304,4 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl { + public static Map> compareObject(T obj1, T Obj2) + throws Exception { + Map> result = new HashMap>(); + + Field[] fs = obj1.getClass().getDeclaredFields(); + for (Field f : fs) { + f.setAccessible(true); + Object v1 = f.get(obj1); + Object v2 = f.get(Obj2); + if( ! equals(v1, v2) /*&& !f.getName().contains("update")*/ + && !f.getName().equals("updateTime") ){ + List resultList=new ArrayList<>(); + resultList.add(v1); + resultList.add(v2); + result.put(f.getName(), resultList); + + } + } + return result; + } + + public static boolean equals(Object obj1, Object obj2) { + if (obj1 == obj2) { + return true; + } + if (obj1 == null || obj2 == null) { + return false; + } + return obj1.equals(obj2); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java index cec962527..8fb305fb6 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java @@ -4,7 +4,7 @@ package com.jero.modules.project.enums; */ public enum ExportTemplateEnum { - DUTY_TERRITORY("责任领域"," duty_territory"), + DUTY_TERRITORY("责任领域","duty_territory"), DUTY_TERRITORY_FIELD_of_PRODUCTION("生产领域","field_of_production"), // LAW_ENGINEER("法规工程师","lawEngineerName"), // ENGINEER_INTERFACE_PERSON("工程接口人","engineeringInterfacePersonName"), diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index e6c60bbe7..2f2c089b0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -9,11 +9,11 @@ import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; import com.jero.modules.enums.DictCodeEnum; import com.jero.modules.project.entity.ProjectRelatedPersonnel; -import com.jero.modules.project.enums.ExportTemplateEnum; import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper; import com.jero.modules.project.service.IProjectRelatedPersonnelService; import com.jero.modules.project.util.ExcelLangUtils; import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.mapper.SysDictMapper; import com.jero.modules.system.mapper.SysUserMapper; import com.jero.modules.system.service.ISysDictService; @@ -60,6 +60,8 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl clazz, String title,String cut){ - List records=new ArrayList<>(); - ProjectRelatedPersonnel projectRelatedPersonnel=new ProjectRelatedPersonnel(); + List records = new ArrayList<>();; + // Step.1 组装查询条件 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); ExportParams exportParams=null; // Step.2 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); try { + String fillingExplanationCN="填写说明\n" + + "1.导入数据从第三行开始,第一行为表头,第二行为填写说明,第三行是正式数据\n" + + "2.所有带*号的字段必须填写\n" + + "3.填写人员时,必须使用人员账号进行填写。\n" + + "4.填写的人员账号必须与系统中账号保持一致"; //中英切换模板 - if(CutEnum.CN.getValue().equals(cut)) { - projectRelatedPersonnel.setDutyTerritory(ExportTemplateEnum.DUTY_TERRITORY_FIELD_of_PRODUCTION.getName()); - exportParams=new ExportParams(title , "导出人:" + sysUser.getUsername(), title); + /* if(CutEnum.CN.getValue().equals(cut)) { + + exportParams=new ExportParams(title , fillingExplanationCN, title); }else{ - projectRelatedPersonnel.setDutyTerritory(ExportTemplateEnum.DUTY_TERRITORY_FIELD_of_PRODUCTION.getValue()); - exportParams=new ExportParams(title , "Exporter:" + sysUser.getUsername(), title); - } - projectRelatedPersonnel.setLawEngineerName("ning.chen,xinhui.wei"); - projectRelatedPersonnel.setEngineeringInterfacePersonName("ning.chen,xinhui.wei"); - projectRelatedPersonnel.setCertificationEngineerName("ning.chen,xinhui.wei"); - projectRelatedPersonnel.setRemark("xxxxx"); - if(projectRelatedPersonnel != null) { - records.add(projectRelatedPersonnel); + + exportParams=new ExportParams(title , ExportTemplateEnum.FILLING_EXPLANATION_EN.getName(), title); + }*/ + exportParams=new ExportParams(); + exportParams.setSheetName(title); + //查标签内容里的责任领域数据 + List dictItemNameList = sysDictMapper.queryDictNameByCode(DictCodeEnum.DUTY_TERRITORY.getValue()); + //新建相关人员表里的责任领域数据 + if (CollectionUtils.isNotEmpty(dictItemNameList)) { + for (String dictItemName : dictItemNameList) { + ProjectRelatedPersonnel projectRelatedPersonnel=new ProjectRelatedPersonnel(); + projectRelatedPersonnel.setDutyTerritory(dictItemName); + records.add(projectRelatedPersonnel); + } } + mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下 mv.addObject(NormalExcelConstants.CLASS, clazz);//!!!!这里设置中英切换 mv.addObject(NormalExcelConstants.PARAMS,exportParams);