Commit 22b650b7 by 王志超

feat:变更配置管理,导出增加行动项配置相关信息

parent 3b3e7c98
Pipeline #88919 passed with stages
in 1 minute 32 seconds
package com.netease.mail.yanxuan.change.biz.callback; package com.netease.mail.yanxuan.change.biz.callback;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
...@@ -8,6 +9,7 @@ import java.util.Map; ...@@ -8,6 +9,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -18,12 +20,14 @@ import com.netease.mail.dp.des.process.api.entity.CallbackQueryReq; ...@@ -18,12 +20,14 @@ import com.netease.mail.dp.des.process.api.entity.CallbackQueryReq;
import com.netease.mail.dp.des.process.api.entity.ExcelCell; import com.netease.mail.dp.des.process.api.entity.ExcelCell;
import com.netease.mail.dp.des.process.api.entity.ExcelTitle; import com.netease.mail.dp.des.process.api.entity.ExcelTitle;
import com.netease.mail.dp.des.starter.callback.DesCallbackService; import com.netease.mail.dp.des.starter.callback.DesCallbackService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeExecConfigService;
import com.netease.mail.yanxuan.change.common.enums.ChangeCommanderEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeLevelEnum; import com.netease.mail.yanxuan.change.common.enums.ChangeLevelEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum; import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeCommanderEnum;
import com.netease.mail.yanxuan.change.common.enums.NeedFileEnum; import com.netease.mail.yanxuan.change.common.enums.NeedFileEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils; import com.netease.mail.yanxuan.change.common.util.DateUtils;
import com.netease.mail.yanxuan.change.common.util.ExcelUtil; import com.netease.mail.yanxuan.change.common.util.ExcelUtil;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecConfig;
import com.netease.mail.yanxuan.change.dal.entity.ChangeType; import com.netease.mail.yanxuan.change.dal.entity.ChangeType;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeConfigMapper; import com.netease.mail.yanxuan.change.dal.mapper.ChangeConfigMapper;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeTypeMapper; import com.netease.mail.yanxuan.change.dal.mapper.ChangeTypeMapper;
...@@ -35,7 +39,7 @@ import com.netease.mail.yanxuan.change.integration.excel.ChangeConfigExcelVo; ...@@ -35,7 +39,7 @@ import com.netease.mail.yanxuan.change.integration.excel.ChangeConfigExcelVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* 变更配置导出回调 * 变更配置导出回调。一层主表 + 二层行动项:无行动项时输出一行主数据,有多条行动项时主数据复制多行,总行数按展开后的行数。
*/ */
@Slf4j @Slf4j
@Component @Component
...@@ -47,6 +51,9 @@ public class ChangeConfigExportCallback implements DesCallbackService { ...@@ -47,6 +51,9 @@ public class ChangeConfigExportCallback implements DesCallbackService {
@Autowired @Autowired
private ChangeTypeMapper changeTypeMapper; private ChangeTypeMapper changeTypeMapper;
@Autowired
private ChangeExecConfigService changeExecConfigService;
@Override @Override
public ExcelTitle queryExcelTitle(CallbackQueryReq req) { public ExcelTitle queryExcelTitle(CallbackQueryReq req) {
log.info("[op: change config export callback queryExcelTitle] req={}", JSON.toJSONString(req)); log.info("[op: change config export callback queryExcelTitle] req={}", JSON.toJSONString(req));
...@@ -78,7 +85,9 @@ public class ChangeConfigExportCallback implements DesCallbackService { ...@@ -78,7 +85,9 @@ public class ChangeConfigExportCallback implements DesCallbackService {
private List<ChangeConfigExcelDTO> getExportList(ChangeConfigQueryReq query) { private List<ChangeConfigExcelDTO> getExportList(ChangeConfigQueryReq query) {
List<ChangeConfigPo> changeConfigPos = changeConfigMapper.selectChangeConfigPoWithLimit(query); List<ChangeConfigPo> changeConfigPos = changeConfigMapper.selectChangeConfigPoWithLimit(query);
if (changeConfigPos.isEmpty()) {
return new ArrayList<>();
}
// 处理执行部门格式 // 处理执行部门格式
changeConfigPos.forEach(i -> { changeConfigPos.forEach(i -> {
if (StringUtils.isNotBlank(i.getParticipateChangeExecDepartment())) { if (StringUtils.isNotBlank(i.getParticipateChangeExecDepartment())) {
...@@ -104,32 +113,41 @@ public class ChangeConfigExportCallback implements DesCallbackService { ...@@ -104,32 +113,41 @@ public class ChangeConfigExportCallback implements DesCallbackService {
Map<Long, ChangeType> changeTypeMap = new HashMap<>(); Map<Long, ChangeType> changeTypeMap = new HashMap<>();
if (!changeTypeIds.isEmpty()) { if (!changeTypeIds.isEmpty()) {
List<Long> idList = new java.util.ArrayList<>(changeTypeIds); List<ChangeType> changeTypes = changeTypeMapper.selectByIds(new ArrayList<>(changeTypeIds));
List<ChangeType> changeTypes = changeTypeMapper.selectByIds(idList);
if (changeTypes != null) { if (changeTypes != null) {
for (ChangeType changeType : changeTypes) { for (ChangeType ct : changeTypes) {
changeTypeMap.put(changeType.getId(), changeType); changeTypeMap.put(ct.getId(), ct);
} }
} }
} }
final Map<Long, ChangeType> finalChangeTypeMap = changeTypeMap; final Map<Long, ChangeType> finalChangeTypeMap = changeTypeMap;
return changeConfigPos.stream().map(po -> { List<ChangeConfigExcelDTO> expanded = new ArrayList<>();
for (ChangeConfigPo po : changeConfigPos) {
List<ChangeExecConfig> execs = changeExecConfigService.queryChangeExecConfig(po.getId());
if (CollectionUtils.isEmpty(execs)) {
expanded.add(buildRow(po, null, finalChangeTypeMap));
} else {
for (ChangeExecConfig exec : execs) {
expanded.add(buildRow(po, exec, finalChangeTypeMap));
}
}
}
return expanded;
}
private ChangeConfigExcelDTO buildRow(ChangeConfigPo po, ChangeExecConfig exec, Map<Long, ChangeType> changeTypeMap) {
ChangeConfigExcelDTO dto = new ChangeConfigExcelDTO(); ChangeConfigExcelDTO dto = new ChangeConfigExcelDTO();
// 一层:主表字段
dto.setId(po.getId()); dto.setId(po.getId());
// 变更主体
if (po.getChangeSubject() != null) { if (po.getChangeSubject() != null) {
dto.setChangeSubject(ChangeSubjectEnum.getChangeSubjectEnum(po.getChangeSubject()) != null dto.setChangeSubject(ChangeSubjectEnum.getChangeSubjectEnum(po.getChangeSubject()) != null
? ChangeSubjectEnum.getChangeSubjectEnum(po.getChangeSubject()).getDesc() : ""); ? ChangeSubjectEnum.getChangeSubjectEnum(po.getChangeSubject()).getDesc() : "");
} }
// 变更类型:从 Map 中获取,格式为"一级>二级"
String changeType = ""; String changeType = "";
if (po.getParentChangeClassId() != null && po.getSonChangeClassId() != null) { if (po.getParentChangeClassId() != null && po.getSonChangeClassId() != null) {
ChangeType parentType = finalChangeTypeMap.get(po.getParentChangeClassId().longValue()); ChangeType parentType = changeTypeMap.get(po.getParentChangeClassId().longValue());
ChangeType sonType = finalChangeTypeMap.get(po.getSonChangeClassId().longValue()); ChangeType sonType = changeTypeMap.get(po.getSonChangeClassId().longValue());
if (parentType != null && sonType != null) { if (parentType != null && sonType != null) {
changeType = parentType.getTypeName() + ">" + sonType.getTypeName(); changeType = parentType.getTypeName() + ">" + sonType.getTypeName();
} else if (parentType != null) { } else if (parentType != null) {
...@@ -139,47 +157,40 @@ public class ChangeConfigExportCallback implements DesCallbackService { ...@@ -139,47 +157,40 @@ public class ChangeConfigExportCallback implements DesCallbackService {
} }
} }
dto.setChangeType(changeType); dto.setChangeType(changeType);
// 变更等级
if (po.getChangeLevel() != null) { if (po.getChangeLevel() != null) {
dto.setChangeLevel(ChangeLevelEnum.getByType(po.getChangeLevel())); dto.setChangeLevel(ChangeLevelEnum.getByType(po.getChangeLevel()));
} }
dto.setChangeDepartment(po.getChangeDepartment()); dto.setChangeDepartment(po.getChangeDepartment());
dto.setParticipateChangeExecDepartment(po.getParticipateChangeExecDepartment()); dto.setParticipateChangeExecDepartment(po.getParticipateChangeExecDepartment());
// 变更负责人类型
if (po.getChangeCommanderType() != null) { if (po.getChangeCommanderType() != null) {
ChangeCommanderEnum commanderEnum = ChangeCommanderEnum.getChangeCommanderEnum(po.getChangeCommanderType()); ChangeCommanderEnum commanderEnum = ChangeCommanderEnum.getChangeCommanderEnum(po.getChangeCommanderType());
dto.setChangeCommanderType(commanderEnum != null ? commanderEnum.getName() : ""); dto.setChangeCommanderType(commanderEnum != null ? commanderEnum.getName() : "");
} }
dto.setChangeCommander(po.getChangeCommander()); dto.setChangeCommander(po.getChangeCommander());
// 是否需要资料
if (po.getNeedFile() != null) { if (po.getNeedFile() != null) {
String needFileDesc = ""; for (NeedFileEnum e : NeedFileEnum.values()) {
for (NeedFileEnum needFileEnum : NeedFileEnum.values()) { if (e.getStatus().equals(po.getNeedFile())) {
if (needFileEnum.getStatus().equals(po.getNeedFile())) { dto.setNeedFile(e.getDesc());
needFileDesc = needFileEnum.getDesc();
break; break;
} }
} }
dto.setNeedFile(needFileDesc);
} }
dto.setCreator(po.getCreator()); dto.setCreator(po.getCreator());
// 时间格式化
if (po.getCreateTime() != null) { if (po.getCreateTime() != null) {
dto.setCreateTime(DateUtils.parseLongToString(po.getCreateTime(), DateUtils.DATE_TIME_FORMAT)); dto.setCreateTime(DateUtils.parseLongToString(po.getCreateTime(), DateUtils.DATE_TIME_FORMAT));
} }
if (po.getUpdateTime() != null) { if (po.getUpdateTime() != null) {
dto.setUpdateTime(DateUtils.parseLongToString(po.getUpdateTime(), DateUtils.DATE_TIME_FORMAT)); dto.setUpdateTime(DateUtils.parseLongToString(po.getUpdateTime(), DateUtils.DATE_TIME_FORMAT));
} }
// 二层:行动项
if (exec != null) {
dto.setChangeExecDepartment(exec.getChangeExecDepartment());
dto.setChangeExecUser(exec.getChangeExecUser());
dto.setChangeRiskDesc(exec.getChangeRiskDesc());
dto.setChangeExecProject(exec.getChangeExecProject());
dto.setChangeChecking(exec.getChangeChecking());
}
return dto; return dto;
}).collect(Collectors.toList());
} }
} }
...@@ -4,7 +4,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel; ...@@ -4,7 +4,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data; import lombok.Data;
/** /**
* 变更配置导出DTO * 变更配置导出DTO(一层保持原样,二层为行动项:变更行动项部门、变更行动人、变更风险描述、行动项、变更验证措施)
*/ */
@Data @Data
public class ChangeConfigExcelDTO { public class ChangeConfigExcelDTO {
...@@ -44,5 +44,21 @@ public class ChangeConfigExcelDTO { ...@@ -44,5 +44,21 @@ public class ChangeConfigExcelDTO {
@Excel(name = "更新时间") @Excel(name = "更新时间")
private String updateTime; private String updateTime;
/** 二层:变更行动项部门 */
@Excel(name = "变更行动项部门")
private String changeExecDepartment;
/** 二层:变更行动人 */
@Excel(name = "变更行动人")
private String changeExecUser;
/** 二层:变更风险描述 */
@Excel(name = "变更风险描述")
private String changeRiskDesc;
/** 二层:行动项 */
@Excel(name = "行动项")
private String changeExecProject;
/** 二层:变更验证措施 */
@Excel(name = "变更验证措施")
private String changeChecking;
} }
...@@ -10,7 +10,7 @@ import com.netease.mail.yanxuan.change.common.anno.ExcelTitleName; ...@@ -10,7 +10,7 @@ import com.netease.mail.yanxuan.change.common.anno.ExcelTitleName;
import lombok.Data; import lombok.Data;
/** /**
* 变更配置导出VO * 变更配置导出VO(一层保持原样,二层新增:变更行动项部门、变更行动人、变更风险描述、行动项、变更验证措施)
*/ */
@Data @Data
public class ChangeConfigExcelVo { public class ChangeConfigExcelVo {
...@@ -50,6 +50,16 @@ public class ChangeConfigExcelVo { ...@@ -50,6 +50,16 @@ public class ChangeConfigExcelVo {
@ExcelTitleName(title = "更新时间", order = 12) @ExcelTitleName(title = "更新时间", order = 12)
private String updateTime; private String updateTime;
@ExcelTitleName(title = "变更行动项部门", order = 13)
private String changeExecDepartment;
@ExcelTitleName(title = "变更行动人", order = 14)
private String changeExecUser;
@ExcelTitleName(title = "变更风险描述", order = 15)
private String changeRiskDesc;
@ExcelTitleName(title = "行动项", order = 16)
private String changeExecProject;
@ExcelTitleName(title = "变更验证措施", order = 17)
private String changeChecking;
public static List<ExcelCell> init(ChangeConfigExcelDTO dto) { public static List<ExcelCell> init(ChangeConfigExcelDTO dto) {
List<ExcelCell> cells = new ArrayList<>(); List<ExcelCell> cells = new ArrayList<>();
...@@ -115,6 +125,30 @@ public class ChangeConfigExcelVo { ...@@ -115,6 +125,30 @@ public class ChangeConfigExcelVo {
excelCell = new ExcelCell(); excelCell = new ExcelCell();
excelCell.setValue(dto.getUpdateTime() != null ? dto.getUpdateTime() : ""); excelCell.setValue(dto.getUpdateTime() != null ? dto.getUpdateTime() : "");
cells.add(excelCell); cells.add(excelCell);
// 13. 变更行动项部门
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeExecDepartment() != null ? dto.getChangeExecDepartment() : "");
cells.add(excelCell);
// 14. 变更行动人
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeExecUser() != null ? dto.getChangeExecUser() : "");
cells.add(excelCell);
// 15. 变更风险描述
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeRiskDesc() != null ? dto.getChangeRiskDesc() : "");
cells.add(excelCell);
// 16. 行动项
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeExecProject() != null ? dto.getChangeExecProject() : "");
cells.add(excelCell);
// 17. 变更验证措施
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeChecking() != null ? dto.getChangeChecking() : "");
cells.add(excelCell);
return cells; return cells;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment