From e0f22e765e5e3fc146a92196cc6b4c1c9db86e9d Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Mon, 12 Dec 2022 16:56:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A4=E8=AF=81=E5=B7=A5=E7=A8=8B=E5=B8=88-?= =?UTF-8?q?=E5=88=86=E9=85=8D=E5=A1=AB=E5=86=99=E4=BA=BA=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E3=80=82=20=E4=B8=8A=E6=8A=A5=E5=BA=93=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=98=8E=E7=BB=86=EF=BC=8C=E5=B8=A6=E5=8E=86=E5=8F=B2Log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ParamsCollectManifestEOController.java | 12 ++ .../IParamsCollectManifestEOService.java | 3 + .../ParamsCollectManifestEOServiceImpl.java | 187 ++++++++++++++++++ .../service/IParamsReportDetailEOService.java | 5 + .../impl/ParamsReportDetailEOServiceImpl.java | 80 ++++++++ .../src/components/AssignedByHomo/index.vue | 2 +- .../ParameterItemCollectionList.vue | 6 +- 7 files changed, 293 insertions(+), 2 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsCollectManifestEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsCollectManifestEOController.java index a0fa51878..66d706009 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsCollectManifestEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsCollectManifestEOController.java @@ -659,4 +659,16 @@ public class ParamsCollectManifestEOController extends JeroController mandatoryWithdraw(ParamsCollectManifestVO paramsCollectManifestVO) { return this.paramsCollectManifestEOService.mandatoryWithdraw(paramsCollectManifestVO); } + + /** + * 认证工程师-分配填写人 + * @param paramsCollectManifestVO + * @return + */ + @AutoLog(value = "参数项收集清单-认证工程师-分配填写人") + @ApiOperation(value="参数项收集清单-认证工程师-分配填写人", notes="参数项收集清单-认证工程师-分配填写人") + @PostMapping(value = "/certifiedEngineerUpdateDreBatch") + public Result certifiedEngineerUpdateDreBatch(ParamsCollectManifestVO paramsCollectManifestVO) { + return this.paramsCollectManifestEOService.certifiedEngineerUpdateDreBatch(paramsCollectManifestVO); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java index d64b702f5..74f1308df 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java @@ -190,4 +190,7 @@ public interface IParamsCollectManifestEOService extends IService mandatoryWithdraw(ParamsCollectManifestVO paramsCollectManifestVO); + + // 认证工程师-批量修改填写人 + Result certifiedEngineerUpdateDreBatch(ParamsCollectManifestVO paramsCollectManifestVO); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java index 07b15c5a5..b10ff8fdb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java @@ -5219,6 +5219,193 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl certifiedEngineerUpdateDreBatch(ParamsCollectManifestVO paramsCollectManifestVO) { + if (StringUtils.isEmpty(paramsCollectManifestVO.getIds()) + || StringUtils.isEmpty(paramsCollectManifestVO.getDre()) + || StringUtils.isEmpty(paramsCollectManifestVO.getProjectId()) || StringUtils.isEmpty(paramsCollectManifestVO.getParamsManifestId())) { + throw new JeroBootException("参数不能为空!"); + } + String paramsCollectManifestIds = paramsCollectManifestVO.getIds(); + String dre = paramsCollectManifestVO.getDre(); + String projectId = paramsCollectManifestVO.getProjectId(); + String paramsManifestId = paramsCollectManifestVO.getParamsManifestId(); + + ParamsManifestEO paramsManifestEO = paramsManifestEOService.queryById(paramsManifestId); // 获取清单信息 + ParamsManifestVO projectInfo = paramsManifestEOService.getProjectById(projectId, paramsManifestEO.getProjectVersion()); // 获取项目信息 + paramsManifestEO.setProjectName(projectInfo.getProjectName()); + + String[] paramsCollectManifestIdArr = paramsCollectManifestIds.split(","); + List updateEOList = new ArrayList<>(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ParamsCollectManifestEO::getId, Arrays.asList(paramsCollectManifestIdArr)) + .orderByAsc(ParamsCollectManifestEO::getDeadline).orderByAsc(ParamsCollectManifestEO::getNioNumber); + List paramsCollectManifestEOList = this.list(queryWrapper); + Date deadline = paramsCollectManifestEOList.get(0).getDeadline(); + + // 存放数据的前后填写与工程接口人信息 + List> paramsCollectManifestMapList = new ArrayList<>(); + for (ParamsCollectManifestEO paramsCollectManifestEO : paramsCollectManifestEOList) { + // 如果新分发的填写人和原填写人一致,直接跳过。 + if(StringUtils.equals(dre,paramsCollectManifestEO.getDre())){ + continue; + } + + Map paramsCollectManifestMap = new HashMap<>(); + paramsCollectManifestMap.put("paramsCollectManifestId",paramsCollectManifestEO.getId()); + paramsCollectManifestMap.put("dreUpdateFront",paramsCollectManifestEO.getDre()); + paramsCollectManifestMap.put("dreUpdateAfter",dre); + paramsCollectManifestMap.put("sdt",paramsCollectManifestEO.getSdt()); + paramsCollectManifestMap.put("paramsCollectManifestEO",paramsCollectManifestEO); + paramsCollectManifestMapList.add(paramsCollectManifestMap); + + ParamsCollectManifestEO updateEO = new ParamsCollectManifestEO(); + updateEO.setId(paramsCollectManifestEO.getId()); + updateEO.setDre(dre); // 设置填写人 + updateEO.setState(CollectManifestStateEnum.WAIT_FILL.getValue()); // 设置状态为:待填写 + updateEOList.add(updateEO); + } + if(CollectionUtils.isNotEmpty(updateEOList)){ + this.updateBatchById(updateEOList); + // 发送变更消息 + this.sendChangeMessage(paramsCollectManifestMapList,paramsManifestEO,projectInfo,dre,deadline); + } + return Result.OK("分配填写人成功!"); + } + + /** + * 发送变更消息 + * @param paramsCollectManifestMapList + * @param paramsManifestEO 清单信息 + * @param projectInfo + * @param dre + * @param deadline + */ + public void sendChangeMessage(List> paramsCollectManifestMapList,ParamsManifestEO paramsManifestEO,ParamsManifestVO projectInfo,String dre,Date deadline){ + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if(CollectionUtils.isNotEmpty(paramsCollectManifestMapList)){ + // 工程接口人 + Map>> sdtGroupMap = paramsCollectManifestMapList.stream().collect(Collectors.groupingBy((m -> (m.get("sdt").toString())))); + for (Map.Entry>> sdtMap : sdtGroupMap.entrySet()) { + String sdtUserName = sdtMap.getKey(); + + String nioNumbers = ""; + List> value = sdtMap.getValue(); + for (Map map : value) { + ParamsCollectManifestEO paramsCollectManifestEO = JSONObject.parseObject(JSONObject.toJSONString(map.get("paramsCollectManifestEO")), ParamsCollectManifestEO.class); + String nioNumber = paramsCollectManifestEO.getNioNumber(); + nioNumbers += nioNumber + ","; + } + + if(StringUtils.isNotEmpty(nioNumbers)){ + nioNumbers = nioNumbers.substring(0,nioNumbers.length()-1); + } + + String cnContentUpper = "您参与填写的参数 " + nioNumbers + ",已被 " + currentUser.getUsername() + " 重新分发给 " + dre + "请及时查看。"; + String enContentUpper = "The parameter " + nioNumbers + " you distributed have been re-assigned to " + currentUser.getUsername() + " by " + dre; + + // 消息内容 + SysUser sysUser = this.sysUserService.getUserByName(sdtUserName); + String[] thirdIds = new String[1]; + thirdIds[0] = sysUser.getThirdId(); + String urlParamsStr = parseUrlParams(paramsManifestEO); + String hrefFeishu = this.backUrl + "/ParameterItemCollection" + urlParamsStr; + + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn()); + feishuMsgVo.setCnContentUpper(cnContentUpper); + feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() + + "\n发起人: " + currentUser.getUsername()); + feishuMsgVo.setEnContentUpper(enContentUpper); + feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() + + "\nInitiator: " + currentUser.getUsername()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); + try { + this.feishuService.sendCard(thirdIds, feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + + // 修改前填写人 + Map>> dreUpdateFrontGroupMap = paramsCollectManifestMapList.stream().collect(Collectors.groupingBy((m -> (m.get("dreUpdateFront").toString())))); + for (Map.Entry>> dreUpdateFrontMap : dreUpdateFrontGroupMap.entrySet()) { + String dreUpdateFront = dreUpdateFrontMap.getKey(); + + String nioNumbers = ""; + List> value = dreUpdateFrontMap.getValue(); + for (Map map : value) { + ParamsCollectManifestEO paramsCollectManifestEO = JSONObject.parseObject(JSONObject.toJSONString(map.get("paramsCollectManifestEO")), ParamsCollectManifestEO.class); + String nioNumber = paramsCollectManifestEO.getNioNumber(); + nioNumbers += nioNumber + ","; + } + if(StringUtils.isNotEmpty(nioNumbers)){ + nioNumbers = nioNumbers.substring(0,nioNumbers.length()-1); + } + + String cnContentUpper = "您参与填写的参数 " + nioNumbers + " 已被 "+ currentUser.getUsername() +" 撤回。"; + String enContentUpper = "The parameter " + nioNumbers + " you filled in have been withdrawn by "+ currentUser.getUsername(); + + // 消息内容 + SysUser sysUser = sysUserService.getUserByName(dreUpdateFront); + String[] thirdIds = new String[1]; + thirdIds[0] = sysUser.getThirdId(); + String urlParamsStr = parseUrlParams(paramsManifestEO); + String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr; + + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn()); + feishuMsgVo.setCnContentUpper(cnContentUpper); + feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() + + "\n发起人: " + currentUser.getUsername()); + feishuMsgVo.setEnContentUpper(enContentUpper); + feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() + + "\nInitiator: " + currentUser.getUsername()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); + try { + this.feishuService.sendCard(thirdIds, feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + // 修改后填写人 + Map>> dreUpdateAfterGroupMap = paramsCollectManifestMapList.stream().collect(Collectors.groupingBy((m -> (m.get("dreUpdateAfter").toString())))); + for (Map.Entry>> dreUpdateAfterMap : dreUpdateAfterGroupMap.entrySet()) { + String dreUpdateAfter = dreUpdateAfterMap.getKey(); + + // 消息内容 + SysUser sysUser = sysUserService.getUserByName(dreUpdateAfter); + String[] thirdIds = new String[1]; + thirdIds[0] = sysUser.getThirdId(); + String urlParamsStr = parseUrlParams(paramsManifestEO); + String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr; + + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn()); + feishuMsgVo.setCnContentUpper("您好,"+ currentUser.getUsername() +"向您分发了认证参数填写任务,请及时处理。"); + feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() + + "\n发起人: " + currentUser.getUsername() + + "\n截止时间: " + sdf.format(deadline)); + feishuMsgVo.setEnContentUpper("Hello! "+ currentUser.getUsername() +" has assigned the task of filling in Homo Parameter to you. Please address it in a timely manner."); + feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() + + "\nInitiator: " + currentUser.getUsername() + + "\nDue Date: " + sdf.format(deadline)); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); + try { + this.feishuService.sendCard(thirdIds, feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + } + } + private void deadlineDateMap(Map> today, ParamsCollectManifestEO collectManifestEO, String thirdId) { List stringList = today.get(thirdId); if (ObjectUtils.isEmpty(stringList)) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/IParamsReportDetailEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/IParamsReportDetailEOService.java index 4d3ec06fa..9314749c2 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/IParamsReportDetailEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/IParamsReportDetailEOService.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.cert.report.entity.ParamsReportConfigDataEO; import com.jero.modules.cert.report.entity.ParamsReportDetailEO; import com.jero.modules.cert.report.vo.ParamsReportDetailVO; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -68,4 +70,7 @@ public interface IParamsReportDetailEOService extends IService listInfoForReferencesCol(String paramsReportId, String paramsReportConfigId); + + // 导出参数项历史Log信息 + void exportParamsReportDetailLog(String cut, XSSFWorkbook workbook, String sheetHistoryName, List> allParamsInfoList, XSSFCellStyle headerCellStyle,XSSFCellStyle bodyCellStyle); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java index 36e6ebe84..36b095838 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ZipUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -38,6 +39,7 @@ import com.jero.modules.split.common.ReadExcel; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.service.ISysDictItemService; import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.util.HSSFColor; @@ -600,8 +602,10 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl> allParamsInfoList,XSSFCellStyle headerCellStyle,XSSFCellStyle bodyCellStyle) { + // 处理历史log sheet里面的数据 + XSSFSheet sheetHistory = workbook.createSheet(sheetHistoryName); + String[] historyHeaderArr = new String[]{"NIO编号","操作详情","备注","操作时间"}; + if (StringUtils.equals(cut, CutEnum.EN.getValue())) { + historyHeaderArr = new String[]{"NIO Number", "Operation Details", "Comments", "Operation Time"}; + } + XSSFRow historyRowFirst = sheetHistory.createRow(0); + for (int i = 0; i < historyHeaderArr.length; i++) { + XSSFCell cell = historyRowFirst.createCell(i); + XSSFRichTextString text = new XSSFRichTextString(historyHeaderArr[i]); + cell.setCellValue(text); + cell.setCellStyle(headerCellStyle); + + // 设置单元格宽度 + String[] ParamsValueArr = new String[]{"操作详情","备注"}; + if (CutEnum.EN.getValue().equals(cut)) { + ParamsValueArr = new String[]{"Operation Details","Comments"}; + } + + String historyHeaderStr = historyHeaderArr[i]; + boolean widthFlag = false; + for (int i1 = 0; i1 < ParamsValueArr.length; i1++) { + if(StringUtils.equals(historyHeaderStr,ParamsValueArr[i1])){ + widthFlag = true; + } + } + if(widthFlag){ + sheetHistory.setColumnWidth(i, 80 * 256); + }else { + sheetHistory.setColumnWidth(i, 20 * 256); + } + } + // 查询历史log信息 + List detailIdList = allParamsInfoList.stream().map(e -> e.get("id").toString()).distinct().collect(Collectors.toList()); + QueryWrapper detailLogQueryWrap = new QueryWrapper<>(); + detailLogQueryWrap.lambda().in(ParamsReportDetailLogEO::getParamsReportDetailId,detailIdList); + detailLogQueryWrap.orderByDesc("params_report_detail_id"); + List detailLogList = this.paramsReportDetailLogEOService.list(detailLogQueryWrap); + if (CollectionUtils.isNotEmpty(detailLogList)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + int historyRowNumber = 1; + for (int i = 0; i < detailLogList.size(); i++) { + String paramsReportDetailId = detailLogList.get(i).getParamsReportDetailId(); + + String nioNumber = allParamsInfoList.stream().filter(paramsInfo -> { + boolean flag = false; + if(StringUtils.equals(paramsInfo.get("id").toString(),paramsReportDetailId)){ + flag = true; + } + return flag; + }).map(e -> e.get("nio_number").toString()).distinct().collect(Collectors.toList()).get(0); + String operatorDetails = detailLogList.get(i).getLogCnContent(); + String operatorTime = sdf.format(detailLogList.get(i).getCreateTime()); + if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + operatorDetails = detailLogList.get(i).getLogEnContent(); + } + + XSSFRow row1 = sheetHistory.createRow(historyRowNumber); + row1.createCell(0).setCellValue(nioNumber); + row1.createCell(1).setCellValue(operatorDetails); + row1.createCell(2).setCellValue(detailLogList.get(i).getRemarks()); + row1.createCell(3).setCellValue(operatorTime); + for (int j = 0; j < 4; j++) { + row1.getCell(j).setCellStyle(bodyCellStyle); + } + historyRowNumber ++; + } + } + } + @Override public List> getConfigLabelList(ParamsReportDetailVO paramsReportDetailVO) { String paramsManifestId = paramsReportDetailVO.getParamsManifestId(); diff --git a/jero-web/src/components/AssignedByHomo/index.vue b/jero-web/src/components/AssignedByHomo/index.vue index a7414c884..1e5cce5f5 100644 --- a/jero-web/src/components/AssignedByHomo/index.vue +++ b/jero-web/src/components/AssignedByHomo/index.vue @@ -204,7 +204,7 @@ export default { this.confirmLoading = false this.$emit('GetgetLoginUserType') this.$emit('GetgetTableList') - this.$emit('areaVisibleAssignedbyflag', false) + this.$emit('areaVisibleAssignedbyflaghomo', false) }else{ this.confirmLoading = false _this.$message.warning(_this.$t('operationFailed')) diff --git a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue index 01c3e7cae..b783e1bb4 100644 --- a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue +++ b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue @@ -319,7 +319,7 @@ + @areaVisibleAssignedbyflaghomo='areaVisibleAssignedbyflaghomo' @areaVisible='areaVisibleAssignedbyhomo = false'/> @@ -1780,6 +1780,10 @@ areaVisibleAssignedbyflag(val) { this.areaVisibleAssignedby = val }, + // 认证分配填写人确定后弹框关闭 + areaVisibleAssignedbyflaghomo(val) { + this.areaVisibleAssignedbyhomo = val + }, // 截止时间 // TaskCutOffTimeLibrary() { // let dreTaskCutOffTimeLibrary = this.dreTaskCutOffTimeLibrary()