Commit e4b66ced by 王志超

feat: 变更行动工单列表,组装主单数据

parent fd9f7de7
...@@ -16,6 +16,7 @@ import java.util.stream.Collectors; ...@@ -16,6 +16,7 @@ import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import com.netease.mail.yanxuan.change.common.enums.*;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.*; import com.netease.mail.yanxuan.change.dal.meta.model.vo.*;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -47,16 +48,6 @@ import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierService; ...@@ -47,16 +48,6 @@ import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierService;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants; import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean; import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yanxuan.change.common.bean.ResponseCode; import com.netease.mail.yanxuan.change.common.bean.ResponseCode;
import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeCommanderEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeResultEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeStatusEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum;
import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum;
import com.netease.mail.yanxuan.change.common.enums.FileTypeEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum;
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.dal.entity.ChangeConfig; import com.netease.mail.yanxuan.change.dal.entity.ChangeConfig;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord; import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
...@@ -387,10 +378,12 @@ public class ChangeFlowBiz { ...@@ -387,10 +378,12 @@ public class ChangeFlowBiz {
// 创建变更行动工单记录 // 创建变更行动工单记录
// 变更行动工单审批人:第一次新建时就是行动人 // 变更行动工单审批人:第一次新建时就是行动人
String approverJson = JSON.toJSONString(Collections.singletonList(execUserEmail)); String approverJson = JSON.toJSONString(Collections.singletonList(execUserEmail));
// 初始状态:待确认行动方案
ChangeSubFlowRecord subFlowRecord = ChangeSubFlowRecord.builder() ChangeSubFlowRecord subFlowRecord = ChangeSubFlowRecord.builder()
.changeRecordId(changeRecord.getId()) .changeRecordId(changeRecord.getId())
.subFlowId(subFlowId) .subFlowId(subFlowId)
.subFlowNode(subNodeId) .subFlowNode(subNodeId)
.status(ChangeSubFlowStatusEnum.WAIT_CONFIRM_ACTION_PLAN.getStatus())
.approver(approverJson) .approver(approverJson)
.createTime(DateUtils.getCurrentTime()) .createTime(DateUtils.getCurrentTime())
.updateTime(DateUtils.getCurrentTime()) .updateTime(DateUtils.getCurrentTime())
......
...@@ -13,6 +13,7 @@ import com.netease.mail.yanxuan.change.common.bean.CommonConstants; ...@@ -13,6 +13,7 @@ import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean; import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yanxuan.change.common.bean.ResponseCode; import com.netease.mail.yanxuan.change.common.bean.ResponseCode;
import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum; import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum; import com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum; import com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils; import com.netease.mail.yanxuan.change.common.util.DateUtils;
...@@ -182,6 +183,7 @@ public class ChangeSubFlowBiz { ...@@ -182,6 +183,7 @@ public class ChangeSubFlowBiz {
FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime()); FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime());
// 更新行动工单节点ID // 更新行动工单节点ID
subFlowRecord.setSubFlowNode(nextNodeId); subFlowRecord.setSubFlowNode(nextNodeId);
// TODO: 根据业务逻辑设置状态 subFlowRecord.setStatus(...)
subFlowRecord.setUpdateTime(DateUtils.getCurrentTime()); subFlowRecord.setUpdateTime(DateUtils.getCurrentTime());
changeSubFlowRecordService.update(subFlowRecord); changeSubFlowRecordService.update(subFlowRecord);
return nextNodeId; return nextNodeId;
...@@ -193,6 +195,7 @@ public class ChangeSubFlowBiz { ...@@ -193,6 +195,7 @@ public class ChangeSubFlowBiz {
FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime()); FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime());
// 更新行动工单节点ID // 更新行动工单节点ID
subFlowRecord.setSubFlowNode(execNodeId); subFlowRecord.setSubFlowNode(execNodeId);
// TODO: 根据业务逻辑设置状态 subFlowRecord.setStatus(...)
subFlowRecord.setUpdateTime(DateUtils.getCurrentTime()); subFlowRecord.setUpdateTime(DateUtils.getCurrentTime());
changeSubFlowRecordService.update(subFlowRecord); changeSubFlowRecordService.update(subFlowRecord);
return execNodeId; return execNodeId;
...@@ -204,6 +207,7 @@ public class ChangeSubFlowBiz { ...@@ -204,6 +207,7 @@ public class ChangeSubFlowBiz {
FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime()); FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime());
// 更新行动工单节点ID // 更新行动工单节点ID
subFlowRecord.setSubFlowNode(confirmNodeId); subFlowRecord.setSubFlowNode(confirmNodeId);
// TODO: 根据业务逻辑设置状态 subFlowRecord.setStatus(...)
subFlowRecord.setUpdateTime(DateUtils.getCurrentTime()); subFlowRecord.setUpdateTime(DateUtils.getCurrentTime());
changeSubFlowRecordService.update(subFlowRecord); changeSubFlowRecordService.update(subFlowRecord);
return confirmNodeId; return confirmNodeId;
...@@ -230,6 +234,7 @@ public class ChangeSubFlowBiz { ...@@ -230,6 +234,7 @@ public class ChangeSubFlowBiz {
FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime()); FlowxOperationEnum.SUBMIT.getName(), "提交工单", execRecord.getCreateTime());
// 更新行动工单节点ID // 更新行动工单节点ID
subFlowRecord.setSubFlowNode(endNodeId); subFlowRecord.setSubFlowNode(endNodeId);
// TODO: 根据业务逻辑设置状态 subFlowRecord.setStatus(...)
subFlowRecord.setUpdateTime(DateUtils.getCurrentTime()); subFlowRecord.setUpdateTime(DateUtils.getCurrentTime());
changeSubFlowRecordService.update(subFlowRecord); changeSubFlowRecordService.update(subFlowRecord);
...@@ -379,9 +384,6 @@ public class ChangeSubFlowBiz { ...@@ -379,9 +384,6 @@ public class ChangeSubFlowBiz {
queryReq.setSubFlowIds(subFlowIds); queryReq.setSubFlowIds(subFlowIds);
} }
// 第三步:将查询条件填充到 queryReq,用 changeRecordIds + subFlowIds + 其他条件(subFlowNode, startTime, endTime)直接查询子单
// 清空主单和行动项相关的查询条件,因为已经通过 changeRecordIds 和 subFlowIds 过滤了 // 清空主单和行动项相关的查询条件,因为已经通过 changeRecordIds 和 subFlowIds 过滤了
queryReq.setOnlyMyFollowed(null); queryReq.setOnlyMyFollowed(null);
queryReq.setCurrentUser(null); queryReq.setCurrentUser(null);
...@@ -429,7 +431,8 @@ public class ChangeSubFlowBiz { ...@@ -429,7 +431,8 @@ public class ChangeSubFlowBiz {
for (ChangeSubFlowRecord subFlowRecord : subFlowRecords) { for (ChangeSubFlowRecord subFlowRecord : subFlowRecords) {
ChangeSubFlowVO vo = new ChangeSubFlowVO(); ChangeSubFlowVO vo = new ChangeSubFlowVO();
vo.setSubFlowId(subFlowRecord.getSubFlowId()); vo.setSubFlowId(subFlowRecord.getSubFlowId());
vo.setSubFlowNode(subFlowRecord.getSubFlowNode()); vo.setStatus(subFlowRecord.getStatus());
vo.setStatusDesc(ChangeSubFlowStatusEnum.getDescByStatus(subFlowRecord.getStatus()));
vo.setCreateTime(subFlowRecord.getCreateTime()); vo.setCreateTime(subFlowRecord.getCreateTime());
// 获取主单信息 // 获取主单信息
......
/**
* 变更行动工单状态枚举
*
* @Author system
* @Date 2024/01/01
*/
package com.netease.mail.yanxuan.change.common.enums;
import lombok.Getter;
/**
* 变更行动工单状态枚举
*/
@Getter
public enum ChangeSubFlowStatusEnum {
/**
* 待确认行动方案
*/
WAIT_CONFIRM_ACTION_PLAN(1, "待确认行动方案"),
/**
* 待审批行动方案
*/
WAIT_APPROVE_ACTION_PLAN(2, "待审批行动方案"),
/**
* 待审批变更方案
*/
WAIT_APPROVE_CHANGE_PLAN(3, "待审批变更方案"),
/**
* 待提交执行结果
*/
WAIT_SUBMIT_RESULT(4, "待提交执行结果"),
/**
* 已完结
*/
FINISHED(5, "已完结"),
/**
* 已取消
*/
CANCELLED(6, "已取消");
private final Integer status;
private final String desc;
ChangeSubFlowStatusEnum(Integer status, String desc) {
this.status = status;
this.desc = desc;
}
/**
* 根据状态值获取枚举
*/
public static ChangeSubFlowStatusEnum getByStatus(Integer status) {
if (status == null) {
return null;
}
for (ChangeSubFlowStatusEnum statusEnum : values()) {
if (statusEnum.getStatus().equals(status)) {
return statusEnum;
}
}
return null;
}
/**
* 根据状态值获取描述
*/
public static String getDescByStatus(Integer status) {
ChangeSubFlowStatusEnum statusEnum = getByStatus(status);
return statusEnum != null ? statusEnum.getDesc() : null;
}
}
...@@ -52,6 +52,12 @@ public class ChangeSubFlowRecord { ...@@ -52,6 +52,12 @@ public class ChangeSubFlowRecord {
private String subFlowNode; private String subFlowNode;
/** /**
* 变更行动工单状态
* @see com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum
*/
private Integer status;
/**
* 变更行动工单审批人(JSON格式,存储审批人列表,第一次新建时就是行动人) * 变更行动工单审批人(JSON格式,存储审批人列表,第一次新建时就是行动人)
* 格式:["user1@example.com", "user2@example.com"] * 格式:["user1@example.com", "user2@example.com"]
*/ */
......
...@@ -49,9 +49,10 @@ public class ChangeSubFlowListQueryReq { ...@@ -49,9 +49,10 @@ public class ChangeSubFlowListQueryReq {
private String changeExecDepartment; private String changeExecDepartment;
/** /**
* 行动工单状态(subFlowNode) * 行动工单状态
* @see com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum
*/ */
private String subFlowNode; private Integer status;
/** /**
* 开始时间(行动工单发起时间) * 开始时间(行动工单发起时间)
......
...@@ -53,9 +53,15 @@ public class ChangeSubFlowVO { ...@@ -53,9 +53,15 @@ public class ChangeSubFlowVO {
private String changeExecDepartment; private String changeExecDepartment;
/** /**
* 行动工单状态(subFlowNode) * 行动工单状态
* @see com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum
*/ */
private String subFlowNode; private Integer status;
/**
* 行动工单状态描述
*/
private String statusDesc;
/** /**
* 行动完成时间(变更行动工单的完成时间,或预期完成时间) * 行动完成时间(变更行动工单的完成时间,或预期完成时间)
......
...@@ -6,13 +6,14 @@ ...@@ -6,13 +6,14 @@
<result column="change_record_id" jdbcType="BIGINT" property="changeRecordId" /> <result column="change_record_id" jdbcType="BIGINT" property="changeRecordId" />
<result column="sub_flow_id" jdbcType="VARCHAR" property="subFlowId" /> <result column="sub_flow_id" jdbcType="VARCHAR" property="subFlowId" />
<result column="sub_flow_node" jdbcType="VARCHAR" property="subFlowNode" /> <result column="sub_flow_node" jdbcType="VARCHAR" property="subFlowNode" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="approver" jdbcType="VARCHAR" property="approver" /> <result column="approver" jdbcType="VARCHAR" property="approver" />
<result column="create_time" jdbcType="BIGINT" property="createTime" /> <result column="create_time" jdbcType="BIGINT" property="createTime" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" /> <result column="update_time" jdbcType="BIGINT" property="updateTime" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, change_record_id, sub_flow_id, sub_flow_node, approver, create_time, update_time id, change_record_id, sub_flow_id, sub_flow_node, status, approver, create_time, update_time
</sql> </sql>
<select id="selectByCondition" resultMap="BaseResultMap" parameterType="com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowListQueryReq"> <select id="selectByCondition" resultMap="BaseResultMap" parameterType="com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowListQueryReq">
...@@ -22,8 +23,8 @@ ...@@ -22,8 +23,8 @@
<if test="subFlowId != null and subFlowId != ''"> <if test="subFlowId != null and subFlowId != ''">
and sub_flow_id = #{subFlowId} and sub_flow_id = #{subFlowId}
</if> </if>
<if test="subFlowNode != null and subFlowNode != ''"> <if test="status != null">
and sub_flow_node = #{subFlowNode} and status = #{status}
</if> </if>
<if test="startTime != null"> <if test="startTime != null">
and create_time >= #{startTime} and create_time >= #{startTime}
......
...@@ -80,7 +80,7 @@ public class ChangeSubFlowController { ...@@ -80,7 +80,7 @@ public class ChangeSubFlowController {
@RequestParam(name = "supplier", required = false) String supplier, @RequestParam(name = "supplier", required = false) String supplier,
@RequestParam(name = "changeExecUser", required = false) String changeExecUser, @RequestParam(name = "changeExecUser", required = false) String changeExecUser,
@RequestParam(name = "changeExecDepartment", required = false) String changeExecDepartment, @RequestParam(name = "changeExecDepartment", required = false) String changeExecDepartment,
@RequestParam(name = "subFlowNode", required = false) String subFlowNode, @RequestParam(name = "status", required = false) Integer status,
@RequestParam(name = "startTime", required = false) Long startTime, @RequestParam(name = "startTime", required = false) Long startTime,
@RequestParam(name = "endTime", required = false) Long endTime, @RequestParam(name = "endTime", required = false) Long endTime,
@RequestParam(name = "onlyMyFollowed", defaultValue = "true") Boolean onlyMyFollowed) { @RequestParam(name = "onlyMyFollowed", defaultValue = "true") Boolean onlyMyFollowed) {
...@@ -91,7 +91,7 @@ public class ChangeSubFlowController { ...@@ -91,7 +91,7 @@ public class ChangeSubFlowController {
queryReq.setSupplier(supplier); queryReq.setSupplier(supplier);
queryReq.setChangeExecUser(changeExecUser); queryReq.setChangeExecUser(changeExecUser);
queryReq.setChangeExecDepartment(changeExecDepartment); queryReq.setChangeExecDepartment(changeExecDepartment);
queryReq.setSubFlowNode(subFlowNode); queryReq.setStatus(status);
queryReq.setStartTime(startTime); queryReq.setStartTime(startTime);
queryReq.setEndTime(endTime); queryReq.setEndTime(endTime);
queryReq.setOnlyMyFollowed(onlyMyFollowed); queryReq.setOnlyMyFollowed(onlyMyFollowed);
......
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