虚拟清单发布-数据处理+项目库相关人员导出-责任领域设置
This commit is contained in:
+4
@@ -51,6 +51,10 @@ public interface SysDictMapper extends BaseMapper<SysDict> {
|
||||
|
||||
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<String> 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);
|
||||
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public interface IDummyInventoryBaseEOService extends IService<DummyInventoryBas
|
||||
* 发布
|
||||
* @param dummyInventoryBaseEO
|
||||
*/
|
||||
void issue(DummyInventoryBaseEO dummyInventoryBaseEO);
|
||||
void issue(DummyInventoryBaseEO dummyInventoryBaseEO) throws Exception;
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
|
||||
+50
-43
@@ -1,5 +1,6 @@
|
||||
package com.jero.modules.dummy.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -17,17 +18,17 @@ import com.jero.modules.dummy.service.IDummyContentChangeEOService;
|
||||
import com.jero.modules.dummy.service.IDummyInventoryBaseEOService;
|
||||
import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
|
||||
import com.jero.modules.dummy.service.IDummyReadEOService;
|
||||
import com.jero.modules.dummy.util.ListDiff;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import net.sf.json.JSONArray;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -137,7 +138,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
if (pageList.getRecords().size() != 0) {
|
||||
List<DummyInventoryBaseEO> records = pageList.getRecords();
|
||||
List<String> createByList = records.stream().map(DummyInventoryBaseEO::getCreateBy).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<SysUser> lambdaQueryWrapper = new LambdaQueryWrapper();
|
||||
LambdaQueryWrapper<SysUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(SysUser::getUsername, createByList);
|
||||
List<SysUser> userList = sysUserService.list(lambdaQueryWrapper);
|
||||
//订阅标识
|
||||
@@ -187,7 +188,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
* @param dummyInventoryBaseEO
|
||||
*/
|
||||
@Override
|
||||
public void issue(DummyInventoryBaseEO dummyInventoryBaseEO) {
|
||||
public void issue(DummyInventoryBaseEO dummyInventoryBaseEO) throws Exception {
|
||||
this.updateById(dummyInventoryBaseEO);
|
||||
//发布与撤回均需要发消息(向订阅的人员发消息)
|
||||
//首次发布不发消息
|
||||
@@ -216,14 +217,14 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
//没有添加过需要进行第一次添加
|
||||
List<DummyContentChangeEO> 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<DummyInventoryB
|
||||
wrapperInfo.in(DummyContentChangeEO::getParentId,dummyInventoryBaseEO.getId());
|
||||
List<DummyContentChangeEO> 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<DummyInventoryBaseEO> baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
|
||||
|
||||
//对比,获取值不同的字段
|
||||
Map<String, List<Object>> 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<DummyInventoryBaseEO> baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
|
||||
|
||||
//对比,获取值不同的字段
|
||||
Map<String, List<Object>> 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<DummyContentChangeEO> infoCJlist = JSONArray.parseArray(infoCJ, DummyContentChangeEO.class);//json转list
|
||||
System.out.println(infoCJlist);
|
||||
System.out.println(infoCJlist);
|
||||
|
||||
|
||||
// JsonDiff.compareJson(infoCJjson,info,null);
|
||||
|
||||
//4.截止到现在发布,期间修改的数据(详情)
|
||||
//数据为-->dummyInventoryInfoEOList
|
||||
List<String> contentJson = Arrays.asList(dummyContentChangeEOInfoList.get(0).getContentJson().split("},\\{"));
|
||||
for(String midCJ:contentJson){
|
||||
List<String> dccContentJson = Arrays.asList( midCJ.split("\",\""));
|
||||
System.out.println(dccContentJson);
|
||||
}
|
||||
|
||||
//5.分别对比基础表数据和详情表数据
|
||||
|
||||
//5.1.基础表数据对比
|
||||
List<String> 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<DummyInventoryB
|
||||
|
||||
|
||||
}
|
||||
public String disposeContentJson(String cJName){
|
||||
//获取cntentJson中原数据
|
||||
|
||||
String midCJName = cJName.substring(0, cJName.indexOf(":"));
|
||||
String trueCJName = cJName.substring(midCJName.length()+1, cJName.length()).replace("\"","");
|
||||
return trueCJName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.jero.modules.dummy.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
|
||||
public class ListDiff <T> {
|
||||
public static <T> Map<String, List<Object>> compareObject(T obj1, T Obj2)
|
||||
throws Exception {
|
||||
Map<String, List<Object>> result = new HashMap<String, List<Object>>();
|
||||
|
||||
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<Object> 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);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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"),
|
||||
|
||||
+28
-15
@@ -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<ProjectRelat
|
||||
|
||||
@Autowired
|
||||
private SysDictMapper sysDictMapper;
|
||||
@Autowired
|
||||
private SysDictItemMapper sysDictItemMapper;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -406,29 +408,40 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
|
||||
*/
|
||||
@Override
|
||||
public ModelAndView setExporTemplate(HttpServletRequest request, Class<ProjectRelatedPersonnel> clazz, String title,String cut){
|
||||
List<ProjectRelatedPersonnel> records=new ArrayList<>();
|
||||
ProjectRelatedPersonnel projectRelatedPersonnel=new ProjectRelatedPersonnel();
|
||||
List<ProjectRelatedPersonnel> 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<String> 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);
|
||||
|
||||
Reference in New Issue
Block a user