Commit 37e88e7a by “zcwang”

add: 变更提交申请附件及变更行动项替换

parent 597fc9d4
......@@ -197,6 +197,24 @@ public class ChangeFlowBiz {
}).collect(Collectors.toList());
}
private List<ChangeExecRecord> buildChangeExecUpdateRecord(Long changeRecordId, List<ChangeExecProject> changeExecProject) {
return changeExecProject.stream().map(c -> {
ChangeExecRecord changeExecRecord = new ChangeExecRecord();
changeExecRecord.setChangeRecordId(changeRecordId);
changeExecRecord.setChangeExecDepartment(c.getChangeExecDepartment());
changeExecRecord.setChangeExecUserType(c.getChangeExecUserType());
changeExecRecord.setChangeExecUser(c.getChangeExecUser());
changeExecRecord.setChangeRiskDesc(c.getChangeRiskDesc());
changeExecRecord.setChangeExecProject(c.getChangeExecProject());
changeExecRecord.setChangeChecking(c.getChangeChecking());
changeExecRecord.setChangeExecFinishTime(c.getChangeExecFinishTime());
changeExecRecord.setChangeExecFinishDesc(c.getChangeExecFinishDesc());
changeExecRecord.setCreateTime(DateUtils.getCurrentTime());
changeExecRecord.setUpdateTime(DateUtils.getCurrentTime());
return changeExecRecord;
}).collect(Collectors.toList());
}
private void checkSubject(ChangeFlowCreateReq changeFlowCreateReq) {
ChangeSubjectEnum type = ChangeSubjectEnum.getByType(changeFlowCreateReq.getChangeSubject());
Assert.notNull(type, "变更主体不存在");
......@@ -360,9 +378,19 @@ public class ChangeFlowBiz {
switch (node) {
// 变更申请提交节点,可以修改数据,以新的数据为准
case CHANGE_FLOW_SUBMIT:
// 检验是否需要资料
ChangeConfig changeConfig = changeConfigService.getSonChange(changeFlowSubmitReq.getSonChangeClassId());
Assert.notNull(changeConfig, "二级变更类型不存在");
Integer needFile = changeConfig.getNeedFile();
if (NeedFileEnum.NEED.getStatus().equals(needFile)) {
Assert.notEmpty(changeFlowSubmitReq.getFiles(), "必须上传资料");
}
// 变更行动项不可为空,最多20项
List<ChangeExecProject> changeExecProjectList = changeFlowSubmitReq.getChangeExecProjectList();
Assert.isTrue(changeExecProjectList.size() <= appConfig.getChangeExecLimit(),
"变更行动方案配置数超限");
changeRecord.setParentChangeClassId(changeFlowSubmitReq.getParentChangeClassId());
changeRecord.setSonChangeClassId(changeFlowSubmitReq.getSonChangeClassId());
List<ChangeExecProject> changeExecProjectList = changeFlowSubmitReq.getChangeExecProjectList();
List<String> execDepartmentList = changeExecProjectList.stream().map(ChangeExecProject::getChangeExecDepartment)
.collect(Collectors.toList());
changeRecord.setParticipateChangeExecDepartment(JSON.toJSONString(execDepartmentList));
......@@ -376,12 +404,26 @@ public class ChangeFlowBiz {
changeRecord.setChangeProfitDesc(changeFlowSubmitReq.getChangeProfitDesc());
changeRecord.setChangeConfirmResultTime(changeFlowSubmitReq.getChangeConfirmResultTime());
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
// 提交工单
String submitNode = this.submitFlow(flowId.toString(), flowDataDTO, uid,
ChangeFlowEnum.CHANGE_FLOW_SUBMIT.getTopoId(), JSON.toJSONString(content));
// 更新工单数据
changeRecord.setFlowNode(submitNode);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
// 更新行动执行方案,覆盖操作,先删除,后插入
Integer changeExecCount = changeFlowExecService.deleteByChangeRecordId(changeRecord.getId());
log.info("[CHANGE_FLOW_SUBMIT] delete changeExecCount:{}", changeExecCount);
// 保存变更行动方案记录
List<ChangeExecRecord> changeExecRecords = buildChangeExecUpdateRecord(changeRecord.getId(), changeFlowSubmitReq.getChangeExecProjectList());
changeFlowExecService.batchSaveRecord(changeExecRecords);
// 更新附件,覆盖操作,先删除,后插入
List<ChangeFlowFile> files = changeFlowSubmitReq.getFiles();
if (CollectionUtils.isNotEmpty(files)) {
changeFileService.deleteByChangeRecordId(changeRecord.getId());
List<ChangeFile> changeFiles = buildChangeFileRecord(changeRecord.getId(), files);
changeFileService.batchSaveRecord(changeFiles);
}
// todo: 发送邮件
return submitNode;
......@@ -397,7 +439,7 @@ public class ChangeFlowBiz {
case FINISH_ALL:
case FINISH_PART:
List<ChangeExecProject> execProjectList = changeFlowSubmitReq.getChangeExecProjectList();
List<ChangeExecRecord> changeExecRecords = execProjectList.stream().map(exec -> {
List<ChangeExecRecord> changeExecRecordList = execProjectList.stream().map(exec -> {
Long changeExecFinishTime = exec.getChangeExecFinishTime();
Assert.notNull(changeExecFinishTime, "行动完成时间不可为空" + exec.getChangeTemplateId());
String changeExecFinishDesc = exec.getChangeExecFinishDesc();
......@@ -415,7 +457,7 @@ public class ChangeFlowBiz {
changeRecord.setFlowNode(confirmNode);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
changeExecRecords.forEach(exec->changeFlowExecService.update(exec));
changeExecRecordList.forEach(exec->changeFlowExecService.update(exec));
//todo: 发送邮件
return confirmNode;
case CANCEL:
......
......@@ -25,4 +25,6 @@ public interface ChangeFileService {
List<ChangeFlowFile> getChangeFileList(Long changeRecordId);
void batchSaveRecord(List<ChangeFile> changeFiles);
Integer deleteByChangeRecordId(Long changeRecordId);
}
\ No newline at end of file
......@@ -32,4 +32,6 @@ public interface ChangeFlowExecService {
void batchSaveRecord(List<ChangeExecRecord> changeExecRecordList);
Boolean update(ChangeExecRecord exec);
Integer deleteByChangeRecordId(Long id);
}
\ No newline at end of file
......@@ -43,4 +43,9 @@ public class ChangeFileServiceImpl implements ChangeFileService {
public void batchSaveRecord(List<ChangeFile> changeFiles) {
changeFileMapper.insertList(changeFiles);
}
@Override
public Integer deleteByChangeRecordId(Long changeRecordId) {
return changeFileMapper.deleteByBaseId(changeRecordId);
}
}
\ No newline at end of file
......@@ -53,4 +53,9 @@ public class ChangeFlowExecServiceImpl implements ChangeFlowExecService {
public Boolean update(ChangeExecRecord changeExecRecord) {
return changeExecRecordMapper.updateByPrimaryKeySelective(changeExecRecord) > 0;
}
@Override
public Integer deleteByChangeRecordId(Long changeRecordId) {
return changeExecRecordMapper.deleteByBaseId(changeRecordId);
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ package com.netease.mail.yanxuan.change.dal.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -32,4 +33,7 @@ public interface ChangeExecRecordMapper extends tk.mybatis.mapper.common.Mapper<
"(#{item.changeRecordId}, #{item.changeExecDepartment}, #{item.changeExecUserType}, #{item.changeExecUser}, #{item.changeRiskDesc}, #{item.changeExecProject}, #{item.changeChecking}, #{item.changeExecFinishTime}, #{item.changeExecFinishDesc}, #{item.createTime}, #{item.updateTime})",
"</foreach>", "</script>" })
void insertList(@Param("list") List<ChangeExecRecord> changeExecRecordList);
@Delete("delete from TB_YX_QC_CHANGE_EXEC_RECORD where change_record_id = #{changeRecordId}}")
Integer deleteByBaseId(@Param("changeRecordId") Long changeRecordId);
}
......@@ -8,6 +8,7 @@ package com.netease.mail.yanxuan.change.dal.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -31,4 +32,7 @@ public interface ChangeFileMapper extends tk.mybatis.mapper.common.Mapper<Change
"(#{item.changeRecordId}, #{item.fileType}, #{item.fileName}, #{item.fileUrl}, #{item.createTime}, #{item.updateTime})",
"</foreach>", "</script>" })
void insertList(List<ChangeFile> changeFiles);
@Delete("delete from TB_YX_QC_CHANGE_FILE where change_record_id = #{changeRecordId}}")
Integer deleteByBaseId(Long changeRecordId);
}
\ No newline at end of file
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