Commit 7863360b by “zcwang”

modify: 提交工单

parent dcf0c65c
......@@ -48,6 +48,7 @@ import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeType;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecProject;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowFile;
......@@ -286,8 +287,9 @@ public class ChangeFlowBiz {
// 当变更类型是商品时有值
changeRecord.setChangeItem(changeFlowCreateReq.getChangeItems());
}
// todo: 当变更类型是供应商时有效
changeRecord.setChangeSupplier(changeFlowCreateReq.getChangeSupplier());
if (ChangeSubjectEnum.SUPPLIER.getType().equals(changeFlowCreateReq.getChangeSubject())) {
changeRecord.setChangeSupplier(changeFlowCreateReq.getChangeSupplier());
}
changeRecord.setChangeReason(changeFlowCreateReq.getChangeReason());
changeRecord.setChangeContent(changeFlowCreateReq.getChangeContent());
changeRecord.setChangeRiskDesc(changeFlowCreateReq.getChangeRiskDesc());
......@@ -296,7 +298,6 @@ public class ChangeFlowBiz {
changeRecord.setChangeConfirmResultTime(changeFlowCreateReq.getChangeConfirmResultTime());
changeRecord.setState(ChangeStatusEnum.IN.getStatus());
// 变更结论
changeRecord.setChangeResult(ChangeResultEnum.INIT.getStatus());
changeRecord.setCreateSource(changeFlowCreateReq.getCreateSource());
changeRecord.setCreateSupplier(changeFlowCreateReq.getChangeSupplier());
changeRecord.setCreateTime(DateUtils.getCurrentTime());
......@@ -322,16 +323,128 @@ public class ChangeFlowBiz {
if (flowDataDTO == null) {
throw ExceptionFactory.createBiz(ResponseCode.DETAIL_FLOW_ERROR, "工单查询错误,不存在");
}
return checkUpdateAndSubmit(flowId, flowDataDTO, uid, changeRecord, changeRecord.getFlowNode(), changeFlowSubmitReq);
}
private String checkUpdateAndSubmit(Long flowId, FlowDataDTO flowDataDTO, String uid, ChangeRecord changeRecord,
String currentNode, ChangeFlowSubmitReq changeFlowSubmitReq) {
ChangeFlowEnum node = ChangeFlowEnum.getByNodeId(currentNode);
Assert.notNull(node, "节点配置不存在");
log.debug("[checkUpdateAndSubmit] floeId:{}, nodeEnum:{}", flowId, node);
// 工单流传
Map<String, Object> content = new HashMap<>(CommonConstants.INIT_HASH_MAP_SIZE);
content.put("updateTime", System.currentTimeMillis());
content.put(CommonConstants.FLOW_OPERATION_KEY, FlowOperationTypeEnum.PASS.getValue());
String nextNodeId = this.submitFlow(flowId.toString(), flowDataDTO, uid,
ChangeFlowEnum.CHANGE_FLOW_SUBMIT.getTopoId(), JSON.toJSONString(content));
changeRecord.setFlowNode(nextNodeId);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
return nextNodeId;
switch (node) {
// 变更申请提交节点,可以修改数据,以新的数据为准
case CHANGE_FLOW_SUBMIT:
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));
changeRecord.setChangeItem(changeFlowSubmitReq.getChangeItems());
changeRecord.setChangeSupplier(changeFlowSubmitReq.getChangeSupplier());
changeRecord.setChangeReason(changeFlowSubmitReq.getChangeReason());
changeRecord.setChangeContent(changeFlowSubmitReq.getChangeContent());
changeRecord.setChangeRiskDesc(changeFlowSubmitReq.getChangeRiskDesc());
changeRecord.setChangeChecking(changeFlowSubmitReq.getChangeChecking());
changeRecord.setChangeProfit(changeFlowSubmitReq.getChangeProfit());
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);
// todo: 发送邮件
return submitNode;
case CHANGE_FLOW_CONFIRM:
Integer changeResult = changeFlowSubmitReq.getChangeResult();
ChangeResultEnum changeResultStatus = ChangeResultEnum.getByStatus(changeResult);
Assert.notNull(changeResultStatus, "变更结论类型错误");
// 填写变更结论
changeRecord.setChangeResult(changeResultStatus.getStatus());
// 填写备注
changeRecord.setRemark(changeFlowSubmitReq.getRemark());
switch (changeResultStatus) {
case FINISH_ALL:
case FINISH_PART:
List<ChangeExecProject> execProjectList = changeFlowSubmitReq.getChangeExecProjectList();
List<ChangeExecRecord> changeExecRecords = execProjectList.stream().map(exec -> {
Long changeExecFinishTime = exec.getChangeExecFinishTime();
Assert.notNull(changeExecFinishTime, "行动完成时间不可为空" + exec.getChangeTemplateId());
String changeExecFinishDesc = exec.getChangeExecFinishDesc();
Assert.isTrue(StringUtils.isNotBlank(changeExecFinishDesc),
"行动完成时间不可为空" + exec.getChangeTemplateId());
ChangeExecRecord changeExecRecord = new ChangeExecRecord();
changeExecRecord.setId(exec.getChangeTemplateId());
changeExecRecord.setChangeExecFinishTime(exec.getChangeExecFinishTime());
changeExecRecord.setChangeExecFinishDesc(exec.getChangeExecFinishDesc());
return changeExecRecord;
}).collect(Collectors.toList());
// 完成直接完结
String confirmNode = this.submitFlow(flowId.toString(), flowDataDTO, uid,
ChangeFlowEnum.CHANGE_FLOW_CONFIRM.getTopoId(), JSON.toJSONString(content));
changeRecord.setFlowNode(confirmNode);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
changeExecRecords.forEach(exec->changeFlowExecService.update(exec));
//todo: 发送邮件
return confirmNode;
case CANCEL:
// 取消填写取消原因
String cancelReason = changeFlowSubmitReq.getCancelReason();
Assert.isTrue(StringUtils.isNotBlank(cancelReason), "变更取消原因不可为空");
changeRecord.setCancelReason(cancelReason);
String cancelNode = this.submitFlow(flowId.toString(), flowDataDTO, uid,
ChangeFlowEnum.CHANGE_FLOW_CONFIRM.getTopoId(), JSON.toJSONString(content));
changeRecord.setFlowNode(cancelNode);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
//todo: 发送邮件
return confirmNode;
case DELAY:
// 延期不流转工单
long changeConfirmResultTime = changeFlowSubmitReq.getChangeConfirmResultTime();
Long tomorrowSpecificTime = DateUtils.getTomorrowSpecificTime("09:00:00");
Assert.isTrue(changeConfirmResultTime >= tomorrowSpecificTime, "时间不可晚于下次执行时间");
List<ChangeExecProject> execProjectList1 = changeFlowSubmitReq.getChangeExecProjectList();
List<ChangeExecRecord> changeExecRecords1 = execProjectList1.stream().map(exec -> {
Long changeExecFinishTime = exec.getChangeExecFinishTime();
Assert.notNull(changeExecFinishTime, "行动完成时间不可为空" + exec.getChangeTemplateId());
String changeExecFinishDesc = exec.getChangeExecFinishDesc();
Assert.isTrue(StringUtils.isNotBlank(changeExecFinishDesc),
"行动完成时间不可为空" + exec.getChangeTemplateId());
ChangeExecRecord changeExecRecord = new ChangeExecRecord();
changeExecRecord.setId(exec.getChangeTemplateId());
changeExecRecord.setChangeExecFinishTime(exec.getChangeExecFinishTime());
changeExecRecord.setChangeExecFinishDesc(exec.getChangeExecFinishDesc());
return changeExecRecord;
}).collect(Collectors.toList());
// 更改变更结果确认时间
changeRecord.setChangeConfirmResultTime(changeConfirmResultTime);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
changeExecRecords1.forEach(exec->changeFlowExecService.update(exec));
// 变更行动项
//todo: 发送邮件
return null;
default:
return null;
}
// 其他几点,不可提交
case CHANGE_FLOW_EXE:
case CHANGE_FLOW_START:
case END:
default:
throw ExceptionFactory.createBiz(ResponseCode.NODE_ERROR, "不可提交节点" + currentNode);
}
}
private ChangeRecord getFlowInfo(Long flowId) {
......
......@@ -30,4 +30,6 @@ public interface ChangeFlowExecService {
* @param changeExecRecordList
*/
void batchSaveRecord(List<ChangeExecRecord> changeExecRecordList);
Boolean update(ChangeExecRecord exec);
}
\ No newline at end of file
......@@ -17,7 +17,6 @@ import org.springframework.stereotype.Service;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeExecRecordMapper;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO;
/**
......@@ -49,4 +48,9 @@ public class ChangeFlowExecServiceImpl implements ChangeFlowExecService {
public void batchSaveRecord(List<ChangeExecRecord> changeExecRecordList) {
changeExecRecordMapper.insertList(changeExecRecordList);
}
@Override
public Boolean update(ChangeExecRecord changeExecRecord) {
return changeExecRecordMapper.updateByPrimaryKeySelective(changeExecRecord) > 0;
}
}
\ No newline at end of file
......@@ -33,4 +33,13 @@ public enum ChangeFlowEnum {
this.name = name;
this.topoId = topoId;
}
public static ChangeFlowEnum getByNodeId(String nodeId) {
for (ChangeFlowEnum value : ChangeFlowEnum.values()) {
if (value.getNodeId().equals(nodeId)) {
return value;
}
}
return null;
}
}
\ No newline at end of file
......@@ -12,7 +12,6 @@ package com.netease.mail.yanxuan.change.common.enums;
*/
public enum ChangeResultEnum {
INIT(0, "初始化"),
FINISH_ALL(1, "完成变更管理,风险可控,可实施变更"),
FINISH_PART(2, "完成变更管理,部分风险不可控,待修订变更方案"),
CANCEL(3, "不通过,变更取消"),
......@@ -25,6 +24,14 @@ public enum ChangeResultEnum {
this.status = status;
this.desc = desc;
}
public static ChangeResultEnum getByStatus(Integer status) {
for (ChangeResultEnum value : ChangeResultEnum.values()) {
if (value.getStatus().equals(status)) {
return value;
}
}
return null;
}
public Integer getStatus() {
return status;
......
......@@ -42,4 +42,14 @@ public class ChangeExecProject {
* 变更验证措施
*/
private String changeChecking;
/**
* 行动完成时间
*/
private Long changeExecFinishTime;
/**
* 行动完成情况
*/
private String changeExecFinishDesc;
}
\ No newline at end of file
......@@ -36,11 +36,11 @@ public class ChangeFlowSubmitReq {
/**
* 一级类型id
*/
private int parentChangeClassId;
private Long parentChangeClassId;
/**
* 二级类型id
*/
private int sonChangeClassId;
private Long sonChangeClassId;
/**
* 变更商品
*/
......@@ -90,11 +90,11 @@ public class ChangeFlowSubmitReq {
/**
* 变更结论
*/
private Long changeResult;
private Integer changeResult;
/**
* 原因说明(取消时存在)
* 取消原因说明(取消时存在)
*/
private String changeResultDesc;
private String cancelReason;
/**
* 备注
*/
......
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