项目-标准评估

This commit is contained in:
caozhen
2023-09-13 15:37:01 +08:00
parent 19f42b4977
commit 15f9f8b820
6 changed files with 261 additions and 41 deletions
@@ -1,11 +1,19 @@
package com.jero.modules.projectLibrary.controller; package com.jero.modules.projectLibrary.controller;
import java.util.List; import java.io.OutputStream;
import java.util.Map; import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandard; import com.jero.common.exception.JeroBootException;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardService; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard; import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.laws.standard.entity.LawsOverseasStandard; import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
@@ -13,9 +21,10 @@ import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.projectLibrary.entity.LawsAssess; import com.jero.modules.projectLibrary.entity.LawsAssess;
import com.jero.modules.projectLibrary.service.ILawsAssessService; import com.jero.modules.projectLibrary.service.ILawsAssessService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.projectLibrary.vo.LawsAssessAddVo;
import com.sun.deploy.net.URLEncoder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -40,13 +49,12 @@ import org.apache.poi.ss.formula.functions.T;
public class LawsAssessController extends JeroController<LawsAssess, ILawsAssessService> { public class LawsAssessController extends JeroController<LawsAssess, ILawsAssessService> {
@Autowired @Autowired
private ILawsAssessService lawsAssessService; private ILawsAssessService lawsAssessService;
//国内标准
@Autowired @Autowired
private ILawsDomesticStandardService lawsDomesticStandardService; //国内标准 private ILawsDomesticStandardService lawsDomesticStandardService;
@Autowired //海外标准
private ILawsOverseasStandardService lawsOverseasStandardService; //海外标准 @Autowired
@Autowired private ILawsOverseasStandardService lawsOverseasStandardService;
private EnterpriseStandardService enterpriseStandardService; //企业标准
/** /**
* 分页列表查询 * 分页列表查询
@@ -62,7 +70,6 @@ public class LawsAssessController extends JeroController<LawsAssess, ILawsAssess
this.assignment(pageList.getRecords()); this.assignment(pageList.getRecords());
return Result.OK(pageList); return Result.OK(pageList);
} }
private void assignment(List<LawsAssess> records) { private void assignment(List<LawsAssess> records) {
for (LawsAssess assess : records) { for (LawsAssess assess : records) {
String standardId = assess.getStandardId(); String standardId = assess.getStandardId();
@@ -70,32 +77,130 @@ public class LawsAssessController extends JeroController<LawsAssess, ILawsAssess
if ("1".equals(source)){ if ("1".equals(source)){
//查询国内标准数据,赋值给collection //查询国内标准数据,赋值给collection
LawsDomesticStandard standard = lawsDomesticStandardService.queryById(standardId); LawsDomesticStandard standard = lawsDomesticStandardService.queryById(standardId);
BeanUtils.copyProperties(standard, assess); assess.setStandardEnglishName(standard.getStandardEnglishName());
assess.setStandardState(standard.getStandardState());
assess.setApplicableVehicle(standard.getApplicableVehicle());
assess.setOnTheProductionDate(standard.getOnTheProductionDate());
assess.setNewModelImplementationDate(standard.getNewModelImplementationDate());
assess.setEvaluationResults("这里要用额外方法查询");
assess.setResponsibleDepartment(standard.getResponsibleDepartment());
} }
if ("2".equals(source)){ if ("2".equals(source)){
//查询海外标准数据,赋值给collection //查询海外标准数据,赋值给collection
LawsOverseasStandard standard = lawsOverseasStandardService.queryById(standardId); LawsOverseasStandard standard = lawsOverseasStandardService.queryById(standardId);
BeanUtils.copyProperties(standard, assess); assess.setStandardEnglishName(standard.getStandardEnglishName());
} assess.setStandardState(standard.getStandardState());
if ("3".equals(source)){ assess.setApplicableVehicle(standard.getApplicableVehicle());
//查询企业标准数据,赋值给collection assess.setOnTheProductionDate(standard.getOnTheProductionDate());
EnterpriseStandard standard = enterpriseStandardService.getById(standardId); assess.setNewModelImplementationDate(standard.getNewModelImplementationDate());
BeanUtils.copyProperties(standard, assess); assess.setEvaluationResults("这里要用额外方法查询");
assess.setResponsibleDepartment(standard.getResponsibleDepartment());
} }
} }
} }
/** /**
* 添加 * 调取
*/ */
@AutoLog(value = "项目-标准评估-添加") @AutoLog(value = "项目-标准评估-调取")
@ApiOperation(value="项目-标准评估-添加", notes="项目-标准评估-添加") @ApiOperation(value="项目-标准评估-调取", notes="项目-标准评估-调取")
@PostMapping(value = "/add") @PostMapping(value = "/retrieval")
public Result<T> add(@Validated @RequestBody LawsAssess lawsAssess) { public Result<T> retrieval(@Validated @RequestBody LawsAssessAddVo lawsAssessAddVo) {
lawsAssessService.add(lawsAssess); String domesticStandardId = lawsAssessAddVo.getDomesticStandardId();
String overseasStandardId = lawsAssessAddVo.getOverseasStandardId();
if (StringUtils.isNotBlank(domesticStandardId) && StringUtils.isNotBlank(overseasStandardId)){
return Result.error("请至少选择一个标准进行调取!");
}
//查询当前项目已绑定的标准,为了不造成重复绑定
List<LawsAssess> assessArrayList = lawsAssessService.getAllByProjectId(lawsAssessAddVo.getProjectId());
List<String> collect = assessArrayList.stream().map(LawsAssess::getStandardId).distinct().collect(Collectors.toList());
Date now = new Date();
List<LawsAssess> lawsAssesses = new ArrayList<>();
if (StringUtils.isNotBlank(domesticStandardId)){
List<String> asList = Arrays.asList(domesticStandardId.split(","));
for (String id : asList) {
if (collect.contains(id)){
continue;
}
LawsAssess lawsAssess = new LawsAssess();
lawsAssess.setSource("1");
lawsAssess.setProjectId(lawsAssessAddVo.getProjectId());
lawsAssess.setStandardId(id);
LawsDomesticStandard standard = lawsDomesticStandardService.queryById(id);
lawsAssess.setStandardNumber(standard.getStandardNumber());
lawsAssess.setStandardName(standard.getStandardName());
lawsAssess.setProcessStatus("1");
lawsAssess.setCreateTime(now);
lawsAssess.setUpdateTime(now);
lawsAssesses.add(lawsAssess);
}
}
if (StringUtils.isNotBlank(overseasStandardId)){
List<String> asList = Arrays.asList(overseasStandardId.split(","));
for (String id : asList) {
if (collect.contains(id)){
continue;
}
LawsAssess lawsAssess = new LawsAssess();
lawsAssess.setSource("2");
lawsAssess.setProjectId(lawsAssessAddVo.getProjectId());
lawsAssess.setStandardId(id);
LawsOverseasStandard standard = lawsOverseasStandardService.queryById(id);
lawsAssess.setStandardNumber(standard.getStandardNumber());
lawsAssess.setStandardName(standard.getStandardName());
lawsAssess.setProcessStatus("1");
lawsAssess.setCreateTime(now);
lawsAssess.setUpdateTime(now);
lawsAssesses.add(lawsAssess);
}
}
if (lawsAssesses.isEmpty()){
return Result.error("调取标准全部存在,请重新选择标准!");
}
lawsAssessService.saveBatch(lawsAssesses);
return Result.OK("操作成功!"); return Result.OK("操作成功!");
} }
/**
* 复制
*/
@AutoLog(value = "项目-标准评估-复制")
@ApiOperation(value="项目-标准评估-复制", notes="项目-标准评估-复制")
@PostMapping(value = "/copy")
public Result<T> copy(@Validated @RequestBody LawsAssessAddVo lawsAssessAddVo) {
String copyProjectId = lawsAssessAddVo.getCopyProjectId();
if (StringUtils.isBlank(copyProjectId)){
return Result.error("请至少选择一个项目进行复制!");
}
Date now = new Date();
List<LawsAssess> lawsAssesses = new ArrayList<>();
List<LawsAssess> assessArrayList = lawsAssessService.getAllByProjectId(lawsAssessAddVo.getProjectId());
List<String> collect = assessArrayList.stream().map(LawsAssess::getStandardId).distinct().collect(Collectors.toList());
List<LawsAssess> copyAssessArrayList = lawsAssessService.getAllByProjectId(copyProjectId);
for (LawsAssess lawsAssess : copyAssessArrayList) {
String standardId = lawsAssess.getStandardId();
if (collect.contains(standardId)){
continue;
}
LawsAssess assess = new LawsAssess();
assess.setSource(lawsAssess.getSource());
assess.setProjectId(lawsAssessAddVo.getProjectId());
assess.setStandardId(standardId);
assess.setStandardNumber(lawsAssess.getStandardNumber());
assess.setStandardName(lawsAssess.getStandardName());
assess.setProcessStatus("1");
assess.setCreateTime(now);
assess.setUpdateTime(now);
lawsAssesses.add(assess);
}
if (lawsAssesses.isEmpty()){
return Result.error("复制项目标准全部存在,请重新选择项目!");
}
lawsAssessService.saveBatch(lawsAssesses);
return Result.OK("操作成功!");
}
/** /**
* 通过id删除 * 通过id删除
*/ */
@@ -110,14 +215,67 @@ public class LawsAssessController extends JeroController<LawsAssess, ILawsAssess
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
/**
* 导出excel
*/
@AutoLog(value = "项目-标准评估-导出excel")
@ApiOperation(value="项目-标准评估-导出excel", notes="项目-标准评估-导出excel")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsAssess lawsAssess) {
return super.exportXls(request, lawsAssess, LawsAssess.class, "项目-标准评估");
}
/**
* 导出excel
*/
@AutoLog(value = "项目-标准评估-导出excel")
@ApiOperation(value="项目-标准评估-导出excel", notes="项目-标准评估-导出excel")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsAssess lawsAssess, HttpServletResponse response) {
String outFileName = MessageUtils.getLanguage().equals("EN") ? "Internal Work Group Personnel Table" + System.currentTimeMillis() + ".xlsx" : "项目-标准评估" + System.currentTimeMillis() + ".xlsx";
String ENCODING = "UTF-8";
ExcelWriter writer = ExcelUtil.getWriter(true);
// 通过工具类创建writer并且进行别名
assembleWriter(writer);
//获取数据
List<LawsAssess> dos = null;
String selections = request.getParameter("selections");
if (StringUtils.isNotBlank(selections)){
dos = lawsAssessService.listByIds(Arrays.asList(selections.split(",")));
}else {
QueryWrapper<LawsAssess> queryWrapper = QueryGenerator.initQueryWrapper(lawsAssess, request.getParameterMap());
dos = lawsAssessService.list(queryWrapper);
}
if (dos.isEmpty()){
throw new JeroBootException("请选择数据导出!");
}
this.assignment(dos);
//导出表头只保留别名中的字段
writer.setOnlyAlias(true);
//表格高度
writer.setDefaultRowHeight(18);
//表格宽度
writer.setColumnWidth(-1, 20);
//放入数据
writer.write(dos, true);
try {
// 获取我们的输出流
final OutputStream output = response.getOutputStream();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + outFileName + ";filename*=utf-8"
+ URLEncoder.encode(outFileName, ENCODING));
writer.flush(output, true);
writer.close();
// 这里可以自行关闭资源或者写一个关闭资源的工具类
IoUtil.close(output);
} catch (Exception e) {
log.error("导出失败:", e);
}
return null;
}
private void assembleWriter(ExcelWriter writer) {
writer.addHeaderAlias("standardNumber", "标准号");
writer.addHeaderAlias("standardName", "标准名称");
writer.addHeaderAlias("standardState", "标准状态");
writer.addHeaderAlias("applicableVehicle", "适用车型");
writer.addHeaderAlias("onTheProductionDate", "在产车实施日期");
writer.addHeaderAlias("newModelImplementationDate", "新车型实施日期");
writer.addHeaderAlias("processStatus", "流程状态");
writer.addHeaderAlias("evaluationResults", "评估结果");
writer.addHeaderAlias("responsibleDepartment", "责任部门");
}
} }
@@ -155,10 +155,10 @@ public class LawsProjectLibraryController extends JeroController<LawsProjectLibr
QueryWrapper<LawsProjectLibrary> queryWrapper = QueryGenerator.initQueryWrapper(lawsProjectLibrary, request.getParameterMap()); QueryWrapper<LawsProjectLibrary> queryWrapper = QueryGenerator.initQueryWrapper(lawsProjectLibrary, request.getParameterMap());
dos = lawsProjectLibraryService.list(queryWrapper); dos = lawsProjectLibraryService.list(queryWrapper);
} }
this.translate(dos);
if (dos.isEmpty()){ if (dos.isEmpty()){
throw new JeroBootException("请选择数据导出!"); throw new JeroBootException("请选择数据导出!");
} }
this.translate(dos);
//导出表头只保留别名中的字段 //导出表头只保留别名中的字段
writer.setOnlyAlias(true); writer.setOnlyAlias(true);
@@ -58,10 +58,14 @@ public class LawsAssess implements Serializable {
private String source; private String source;
/**标准编号*/ /**标准编号*/
@NotBlank(message = "standardNum not null")
@Excel(name = "标准编号", width = 15) @Excel(name = "标准编号", width = 15)
@ApiModelProperty(value = "标准编号") @ApiModelProperty(value = "标准编号")
private String standardNum; private String standardNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private String standardName;
/**流程状态(1-未评估、2-评估中、3-已评估)*/ /**流程状态(1-未评估、2-评估中、3-已评估)*/
@Dict(dicCode = "process_status") @Dict(dicCode = "process_status")
@@ -94,9 +98,6 @@ public class LawsAssess implements Serializable {
@ApiModelProperty(value = "所属部门") @ApiModelProperty(value = "所属部门")
private String orgCode; private String orgCode;
@TableField(exist = false)
@ApiModelProperty(value = "标准名称")
private String standardName;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "英文名称") @ApiModelProperty(value = "英文名称")
@@ -73,4 +73,6 @@ public interface ILawsAssessService extends IService<LawsAssess> {
* @return * @return
*/ */
LawsAssess queryById(String id); LawsAssess queryById(String id);
List<LawsAssess> getAllByProjectId(String projectId);
} }
@@ -1,12 +1,16 @@
package com.jero.modules.projectLibrary.service.impl; package com.jero.modules.projectLibrary.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.projectLibrary.entity.LawsAssess; import com.jero.modules.projectLibrary.entity.LawsAssess;
import com.jero.modules.projectLibrary.mapper.LawsAssessMapper; import com.jero.modules.projectLibrary.mapper.LawsAssessMapper;
import com.jero.modules.projectLibrary.service.ILawsAssessService; import com.jero.modules.projectLibrary.service.ILawsAssessService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -115,4 +119,14 @@ public class LawsAssessServiceImpl extends ServiceImpl<LawsAssessMapper, LawsAss
public LawsAssess queryById(String id) { public LawsAssess queryById(String id) {
return getById(id); return getById(id);
} }
@Override
public List<LawsAssess> getAllByProjectId(String projectId) {
if (StringUtils.isBlank(projectId)){
return new ArrayList<>();
}
LambdaQueryWrapper<LawsAssess> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(LawsAssess::getProjectId, projectId);
return list(wrapper);
}
} }
@@ -0,0 +1,45 @@
package com.jero.modules.projectLibrary.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
/**
* 项目-标准评估 调取、复制接口当作入参对象使用
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="lawsAssessAddVo对象", description="项目-标准评估-调取、复制")
public class LawsAssessAddVo {
/**项目ID*/
@NotBlank(message = "projectId not null")
@ApiModelProperty(value = "所在项目ID")
private String projectId;
/**项目ID*/
@ApiModelProperty(value = "所选复制项目ID")
private String copyProjectId;
/**标准ID*/
@ApiModelProperty(value = "国内标准ID")
private String domesticStandardId;
/**标准编号*/
@ApiModelProperty(value = "国内标准编号")
private String domesticStandardNumber;
/**标准ID*/
@ApiModelProperty(value = "海外标准ID")
private String overseasStandardId;
/**标准编号*/
@ApiModelProperty(value = "海外标准编号")
private String overseasStandardNumber;
}