diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java index 47a06fc45..a0ed39ea1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java @@ -35,6 +35,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -364,4 +365,16 @@ public class ProjectLawsInventoryEOController extends JeroController change(@RequestParam(name="ids",required=true) String ids, + @RequestParam(name="cut",required=true) String cut) { + Map parmas = new HashMap<>(); + parmas.put("ids",ids); + parmas.put("cut",cut); + return this.projectLawsInventoryEOService.change(parmas); + } + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskInventoryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskInventoryEOController.java index 9410fbc84..34920988e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskInventoryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskInventoryEOController.java @@ -152,10 +152,21 @@ public class ProjectTaskInventoryEOController extends JeroController list, LoginUser currentUser, int isProjectRole, String cut); + + Result change(Map parmas); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskInventoryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskInventoryEOService.java index 7d6ed3cc9..034acff8a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskInventoryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskInventoryEOService.java @@ -6,6 +6,7 @@ import com.jero.modules.project.entity.ProjectTaskInventoryEO; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -82,4 +83,6 @@ public interface IProjectTaskInventoryEOService extends IService projectLawsInventoryIds); + + void exportXls(HttpServletResponse response, HttpServletRequest request, ProjectTaskInventoryEO projectTaskInventoryEO); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index a198e0a18..b0ed4d428 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -34,9 +34,7 @@ import com.jero.modules.project.enums.ProjectRoleEnum; import com.jero.modules.project.enums.RequestSourceEnum; import com.jero.modules.project.enums.TaskAffirmStatusEnum; import com.jero.modules.project.mapper.*; -import com.jero.modules.project.service.IProjectLawsInventoryEOService; -import com.jero.modules.project.service.IProjectTaskInventoryEOService; -import com.jero.modules.project.service.IProjectRelatedPersonnelService; +import com.jero.modules.project.service.*; import com.jero.modules.split.common.FileUnZip; import com.jero.modules.system.entity.SysAnnouncement; import com.jero.modules.system.entity.SysCategory; @@ -143,6 +141,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl list,LoginUser currentUser,int isProjectRole,String cut){ if(CollectionUtils.isNotEmpty(list)){ List userIdList = new ArrayList<>(); @@ -1838,6 +1843,44 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl change(Map parmas) { + List idList = Arrays.asList(parmas.get("ids").toString().split(",")); + if(CollectionUtils.isNotEmpty(idList)){ + QueryWrapper updateLawsInventoryWrapper = new QueryWrapper<>(); + updateLawsInventoryWrapper.lambda().in(ProjectLawsInventoryEO::getId,idList); + ProjectLawsInventoryEO projectLawsInventoryEO = new ProjectLawsInventoryEO(); + projectLawsInventoryEO.setInventoryAffirmStatus(InventoryAffirmStatusEnum.NOT_STARTED.getValue()); + projectLawsInventoryEO.setTaskAffirmStatus(TaskAffirmStatusEnum.NOT_STARTED.getValue()); + //清单、任务确认初始化。 + this.baseMapper.update(projectLawsInventoryEO,updateLawsInventoryWrapper); + + //项目任务清单数据初始化。 + List projectTaskInventoryEOList = new ArrayList<>(); + idList.forEach(id -> { + ProjectTaskInventoryEO projectTaskInventoryEO = new ProjectTaskInventoryEO(); + String projectTaskInventoryId = UUID.randomUUID().toString().replace("-", ""); + projectTaskInventoryEO.setId(projectTaskInventoryId); + projectTaskInventoryEO.setProjectLawsInventoryId(id); + projectTaskInventoryEOList.add(projectTaskInventoryEO); + }); + this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(idList); + this.projectTaskInventoryEOService.saveBatch(projectTaskInventoryEOList); + + //删除该法规的任务明细数据 + QueryWrapper deleteTaskInventoryDetailWrapper = new QueryWrapper<>(); + deleteTaskInventoryDetailWrapper.lambda().in(ProjectTaskInventoryDetailEO::getProjectTaskInventoryId,idList); + this.projectTaskInventoryDetailEOService.remove(deleteTaskInventoryDetailWrapper); + + //删除反馈意见数据 + QueryWrapper deleteTaskInventoryFeedbackWrapper = new QueryWrapper<>(); + deleteTaskInventoryFeedbackWrapper.lambda().in(ProjectTaskInventoryFeedbackEO::getProjectTaskInventoryId,idList); + this.projectTaskInventoryFeedbackEOService.remove(deleteTaskInventoryFeedbackWrapper); + + } + return Result.OK("变更成功!"); + } + private void importDatas(List dataList, List dictItemList, String zipEntryName, diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryEOServiceImpl.java index 9fa8de6d9..7020a7c93 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryEOServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.common.api.vo.Result; +import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.LoginUser; @@ -11,23 +12,34 @@ import com.jero.modules.project.entity.*; import com.jero.modules.project.enums.*; import com.jero.modules.project.mapper.*; import com.jero.modules.project.service.IConditionAssessmentEOService; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; import com.jero.modules.project.service.IProjectTaskInventoryEOService; import com.jero.modules.project.util.SendMessageUtils; +import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.mapper.SysUserMapper; +import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import com.jero.modules.wkflow.enums.FlowTypeEnum; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.IOException; +import java.io.OutputStream; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @Description: 项目库-任务清单表 @@ -56,6 +68,12 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl exportData = createExportData(request, projectTaskInventoryEO); + + String firstLineTitle = ""; + String secondLineTitle = ""; + if(StringUtils.equals(projectTaskInventoryEO.getCut(),CutEnum.CN.getValue())){ + firstLineTitle = "设计符合性确认,Pre-Homo确认,验证符合性确认"; + secondLineTitle = "编号,标题,责任领域," + + "发起人,责任人,截止时间,流程状态,任务状态,"+ + "发起人,责任人,截止时间,流程状态,任务状态,"+ + "发起人,责任人,截止时间,流程状态,任务状态,"+ + "认证进度,项目当前状态"; + }else if(StringUtils.equals(projectTaskInventoryEO.getCut(),CutEnum.EN.getValue())){ + firstLineTitle = "Confirm design conformance,Pre-Homo Confirm,Verify conformance validation"; + secondLineTitle = "SerialNumber,Title,Duty territory," + + "Initiator,Person in charge,Deadline,Process state,Task status,"+ + "Initiator,Person in charge,Deadline,Process state,Task status,"+ + "Initiator,Person in charge,Deadline,Process state,Task status,"+ + "Certification progress,Current Project Status"; + } + + OutputStream os = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + + try { + String fileName = "任务清单 " + ".xlsx"; + response.setHeader("Content-Disposition", + "attachment; filename=" + fileName); + response.setContentType("application/force-download"); + + HSSFSheet sheet = workbook.createSheet("任务清单"); + + CellStyle titleCellStyle = workbook.createCellStyle(); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中 + titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中 + titleCellStyle.setWrapText(true);//自动换行 + + setSheetStyle(sheet); + + //创建表头 + String[] firstLineTitleArr = firstLineTitle.split(","); + String[] secondLineTitleArr = secondLineTitle.split(","); + Row firstRow = sheet.createRow(0); + + //第0行 1到3列 19到20列 设置居中、表头值。 + for (int i = 0; i <= 19; i++){ + if(i >= 2 || i<=18){ + Cell cell = firstRow.createCell(i); + cell.setCellStyle(titleCellStyle); + cell.setCellValue(secondLineTitleArr[i]); + } + } + + Cell cell03 = firstRow.createCell(3); + cell03.setCellStyle(titleCellStyle); + cell03.setCellValue(firstLineTitleArr[0]); + + Cell cell08 = firstRow.createCell(8); + cell08.setCellStyle(titleCellStyle); + cell08.setCellValue(firstLineTitleArr[1]); + + Cell cell13 = firstRow.createCell(13); + cell13.setCellStyle(titleCellStyle); + cell13.setCellValue(firstLineTitleArr[2]); + + Row secondRow = sheet.createRow(1); + for (int i = 0; i < secondLineTitleArr.length; i++) { + secondRow.createCell(i).setCellValue(secondLineTitleArr[i]); + } + + //设置导出数据 + if(CollectionUtils.isNotEmpty(exportData)) { + int rowIndex = 2; + for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) { + Row dataRow = sheet.createRow(rowIndex); + dataRow.createCell(0).setCellValue(exportData.get(dataIndex).getSerialNumber()); + dataRow.createCell(1).setCellValue(exportData.get(dataIndex).getTitle()); + dataRow.createCell(2).setCellValue(exportData.get(dataIndex).getDutyTerritory()); + + dataRow.createCell(3).setCellValue(exportData.get(dataIndex).getDesignInitiatorName()); + dataRow.createCell(4).setCellValue(exportData.get(dataIndex).getDesignDutyName()); + String designDueDate = disposeDate(exportData.get(dataIndex).getDesignDueDate()); + dataRow.createCell(5).setCellValue(designDueDate); + dataRow.createCell(6).setCellValue(exportData.get(dataIndex).getDesignStatus()); + dataRow.createCell(7).setCellValue(exportData.get(dataIndex).getDesignFlowTaskStatus()); + + dataRow.createCell(8).setCellValue(exportData.get(dataIndex).getPrehomoInitiatorName()); + dataRow.createCell(9).setCellValue(exportData.get(dataIndex).getPrehomoDutyName()); + String prehomoDueDate = disposeDate(exportData.get(dataIndex).getPrehomoDueDate()); + dataRow.createCell(10).setCellValue(prehomoDueDate); + dataRow.createCell(11).setCellValue(exportData.get(dataIndex).getPrehomoStatus()); + dataRow.createCell(12).setCellValue(exportData.get(dataIndex).getPrehomoFlowTaskStatus()); + + dataRow.createCell(13).setCellValue(exportData.get(dataIndex).getVerifyInitiatorName()); + dataRow.createCell(14).setCellValue(exportData.get(dataIndex).getVerifyDutyName()); + String verifyDueDate = disposeDate(exportData.get(dataIndex).getVerifyDueDate()); + dataRow.createCell(15).setCellValue(verifyDueDate); + dataRow.createCell(16).setCellValue(exportData.get(dataIndex).getVerifyStatus()); + dataRow.createCell(17).setCellValue(exportData.get(dataIndex).getVerifyFlowTaskStatus()); + + dataRow.createCell(18).setCellValue(exportData.get(dataIndex).getCertificationProgress()); + dataRow.createCell(19).setCellValue(exportData.get(dataIndex).getProjectStatusAssess()); + + rowIndex ++; + } + } + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + }catch (IOException ex){ + if(CutEnum.CN.getValue().equals(projectTaskInventoryEO.getCut())){ + throw new JeroBootException("下载文件失败"); + }else{ + throw new JeroBootException("Failed to download file"); + } + } + } + + public void setSheetStyle(HSSFSheet sheet){ + for (int i = 0; i <= 19; i++){ + sheet.setColumnWidth(i,4000); + } + + //合并单元格 起始行,结束行,起始列,结束列 + CellRangeAddress region00 = new CellRangeAddress(0, 1, 0, 0); + sheet.addMergedRegion(region00); + CellRangeAddress region01 = new CellRangeAddress(0, 1, 1, 1); + sheet.addMergedRegion(region01); + CellRangeAddress region02 = new CellRangeAddress(0, 1, 2, 2); + sheet.addMergedRegion(region02); + CellRangeAddress region03 = new CellRangeAddress(0, 0, 3, 7); + sheet.addMergedRegion(region03); + CellRangeAddress region08 = new CellRangeAddress(0, 0, 8, 12); + sheet.addMergedRegion(region08); + CellRangeAddress region13 = new CellRangeAddress(0, 0, 13, 17); + sheet.addMergedRegion(region13); + CellRangeAddress region18 = new CellRangeAddress(0, 1, 18, 18); + sheet.addMergedRegion(region18); + CellRangeAddress region19 = new CellRangeAddress(0, 1, 19, 19); + sheet.addMergedRegion(region19); + } + + /** + * 创建导出的数据列表 + * @param request + * @param projectTaskInventoryEO + * @return + */ + public List createExportData(HttpServletRequest request, ProjectTaskInventoryEO projectTaskInventoryEO){ + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List projectTaskInventoryEOList = queryList(projectTaskInventoryEO, request); + + + if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){ + List projectLawsInventoryIdList = projectTaskInventoryEOList.stream(). + distinct().map(ProjectTaskInventoryEO::getProjectLawsInventoryId).collect(Collectors.toList()); + + QueryWrapper lawsInventoryEOQueryWrapper = new QueryWrapper<>(); + lawsInventoryEOQueryWrapper.lambda().in(ProjectLawsInventoryEO::getId,projectLawsInventoryIdList); + List projectLawsInventoryEOList = this.projectLawsInventoryEOMapper.selectList(lawsInventoryEOQueryWrapper); + projectLawsInventoryEOService.dataDispose(projectLawsInventoryEOList, + currentUser,Integer.parseInt(ProjectRoleEnum.STUDIO_ENGINEER.getValue()),projectTaskInventoryEO.getCut()); + + List dictItemList = sysDictItemServiceImpl.selectItemsByDictCode("duty_territory"); + + projectTaskInventoryEOList.forEach(projectTaskInventory -> { + List projectLawsInventoryEO = projectLawsInventoryEOList.stream(). + filter(e -> StringUtils.equals(e.getId(), projectTaskInventory.getProjectLawsInventoryId())).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(projectLawsInventoryEO)){ + //获取出 , 已经启动了 设计符合性、prehomo确认、验证符合性流程的数据 + if(StringUtils.isNotEmpty(projectTaskInventory.getDesignPId())){ + projectTaskInventory.setDesignDutyName(projectLawsInventoryEO.get(0).getDesignDutyName()); + projectTaskInventory.setDesignInitiatorName(projectLawsInventoryEO.get(0).getDesignInitiatorName()); + projectTaskInventory.setDesignFlowTaskStatus(ReviewResultEnum.getTextByValue(projectTaskInventory.getDesignFlowTaskStatus(),projectTaskInventoryEO.getCut())); + }else { + projectTaskInventory.setDesignDueDate(null); + } + if(StringUtils.isNotEmpty(projectTaskInventory.getPrehomoPId())){ + projectTaskInventory.setPrehomoDutyName(projectLawsInventoryEO.get(0).getPrehomoDutyName()); + projectTaskInventory.setPrehomoInitiatorName(projectLawsInventoryEO.get(0).getPrehomoInitiatorName()); + projectTaskInventory.setPrehomoFlowTaskStatus(ReviewResultEnum.getTextByValue(projectTaskInventory.getPrehomoFlowTaskStatus(),projectTaskInventoryEO.getCut())); + }else { + projectTaskInventory.setPrehomoDueDate(null); + } + if(StringUtils.isNotEmpty(projectTaskInventory.getVerifyPId())){ + projectTaskInventory.setVerifyDutyName(projectLawsInventoryEO.get(0).getVerifyDutyName()); + projectTaskInventory.setVerifyInitiatorName(projectLawsInventoryEO.get(0).getVerifyInitiatorName()); + projectTaskInventory.setVerifyFlowTaskStatus(ReviewResultEnum.getTextByValue(projectTaskInventory.getVerifyFlowTaskStatus(),projectTaskInventoryEO.getCut())); + }else { + projectTaskInventory.setVerifyDueDate(null); + } + } + + projectTaskInventory.setCertificationProgress(CertificationProgressEnum.getTextByValue(projectTaskInventory.getCertificationProgress(),projectTaskInventoryEO.getCut())); + projectTaskInventory.setProjectStatusAssess(CurrentProjectStatusEnum.getTextByValue(projectTaskInventory.getProjectStatusAssess(),projectTaskInventoryEO.getCut())); + + if(StringUtils.isNotEmpty(projectTaskInventory.getDutyTerritory())){ + List collect = dictItemList.stream().filter(dict -> StringUtils.equals(dict.getItemValue(), projectTaskInventory.getDutyTerritory())).collect(Collectors.toList()); + if(StringUtils.equals(projectTaskInventoryEO.getCut(),CutEnum.CN.getValue())){ + projectTaskInventory.setDutyTerritory(collect.get(0).getItemText()); + }else if(StringUtils.equals(projectTaskInventoryEO.getCut(),CutEnum.EN.getValue())){ + projectTaskInventory.setDutyTerritory(collect.get(0).getEnName()); + } + } + }); + } + return projectTaskInventoryEOList; + } + + public String disposeDate(Date date){ + String result = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if(date != null){ + result = sdf.format(date); + } + }catch (Exception ex){ + ex.printStackTrace(); + log.error("处理日期失败:" +ex.getMessage()); + } + return result; + } }