Commit 5c693a2d by “zcwang”

add: 查询列表

parent ae0a5747
......@@ -26,7 +26,7 @@ server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{
# mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# redis
spring.redis.password=xc0CdqWMzMj6hBvpIY5HrciHX85txmftyXukMnyKdK8X
......
......@@ -12,13 +12,15 @@ import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.netease.mail.yanxuan.change.biz.config.AppConfig;
import com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory;
import com.netease.mail.yanxuan.change.biz.service.ChangeFileService;
......@@ -26,6 +28,7 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.bean.ResponseCode;
import com.netease.mail.yanxuan.change.common.bean.ResponseCodeEnum;
......@@ -35,15 +38,19 @@ 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.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.dal.entity.ChangeConfig;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeFile;
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.po.ChangeConfigPo;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq;
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;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO;
......@@ -65,6 +72,9 @@ import lombok.extern.slf4j.Slf4j;
public class ChangeFlowBiz {
@Autowired
private ChangeConfigService changeConfigService;
@Autowired
private ChangeTypeService changeTypeService;
@Autowired
......@@ -82,6 +92,9 @@ public class ChangeFlowBiz {
@Autowired
private ChangeFlowExecService changeFlowExecService;
@Autowired
private ChangeRecordMapper changeRecordMapper;
public String createAndSubmit(ChangeFlowCreateReq changeFlowCreateReq) {
// String uid = RequestLocalBean.getUid();
String uid = "x@mesg.com";
......@@ -89,14 +102,15 @@ public class ChangeFlowBiz {
// 校验变更主体
checkSubject(changeFlowCreateReq);
// 检验是否需要资料
// ChangeConfig changeConfig = changeConfigService.queryChangeConfig(changeFlowCreateReq.getSonChangeClassId());
// Assert.notNull(changeConfig, "二级变更类型不存在");
// Integer needFile = changeConfig.getNeedFile();
// if (NeedFileEnum.NEED.getStatus().equals(needFile)) {
// Assert.notEmpty(changeFlowCreateReq.getFiles(), "必须上传资料");
// }
ChangeConfig changeConfig = changeConfigService.queryChangeConfig(changeFlowCreateReq.getSonChangeClassId());
Assert.notNull(changeConfig, "二级变更类型不存在");
Integer needFile = changeConfig.getNeedFile();
if (NeedFileEnum.NEED.getStatus().equals(needFile)) {
Assert.notEmpty(changeFlowCreateReq.getFiles(), "必须上传资料");
}
// 变更行动项不可为空,最多20项
Assert.isTrue(changeFlowCreateReq.getChangeExecProject().size() <= appConfig.getChangeExecLimit(),
List<ChangeExecConfigReq> changeExecProject = changeFlowCreateReq.getChangeExecProject();
Assert.isTrue(changeExecProject.size() <= appConfig.getChangeExecLimit(),
"变更行动方案配置数超限");
// 结束时间不可晚于第二天定时任务执行时间
Long tomorrowSpecificTime = DateUtils.getTomorrowSpecificTime("09:00:00");
......@@ -118,8 +132,11 @@ public class ChangeFlowBiz {
// todo: 根据类型查询负责人详情,格式邮箱
String changeCommander = "";
// 保存工单数据
ChangeRecord changeRecord = buildRecord(flowId, nodeId, changeFlowCreateReq, changeCommander);
ChangeRecord changeRecord = buildChangeRecord(flowId, nodeId, changeFlowCreateReq, changeCommander);
changeFlowService.saveRecord(changeRecord);
// 保存变更行动方案记录
List<ChangeExecRecord> changeExecRecords = buildChangeExecRecord(changeRecord.getFlowId(), changeExecProject);
changeFlowExecService.batchSaveRecord(changeExecRecords);
// todo:判断发起人和审核人
// 如果发起人=变更负责人
......@@ -134,6 +151,24 @@ public class ChangeFlowBiz {
return flowId;
}
private List<ChangeExecRecord> buildChangeExecRecord(Long changeRecordId, List<ChangeExecConfigReq> 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, "变更主体不存在");
......@@ -224,7 +259,7 @@ public class ChangeFlowBiz {
return flowId;
}
private ChangeRecord buildRecord(String flowId, String nodeId, ChangeFlowCreateReq changeFlowCreateReq,
private ChangeRecord buildChangeRecord(String flowId, String nodeId, ChangeFlowCreateReq changeFlowCreateReq,
String changeCommander) {
ChangeRecord changeRecord = new ChangeRecord();
changeRecord.setFlowId(Long.parseLong(flowId));
......@@ -387,4 +422,12 @@ public class ChangeFlowBiz {
changeFlowVO.setChangeResult(changeRecord.getChangeResult());
return changeFlowVO;
}
public AjaxResult<PageInfo<ChangeConfigPo>> query(Integer page, Integer pageSize, ChangeFlowListQueryReq changeFlowListQueryReq) {
//进行分页
PageHelper.startPage(page,pageSize);
changeRecordMapper.selectByCondition(changeFlowListQueryReq);
PageInfo<ChangeConfigPo> pageInfo = new PageInfo<>(changeConfigPos);
return AjaxResult.success(pageInfo);
}
}
......@@ -9,6 +9,7 @@ package com.netease.mail.yanxuan.change.biz.service;
import java.util.List;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO;
/**
......@@ -23,4 +24,10 @@ public interface ChangeFlowExecService {
* @return
*/
List<ChangeFlowExecVO> getChangeFlowExecRecord(Long id);
/**
* 批量保存变更行动执行记录
* @param changeExecRecordList
*/
void batchSaveRecord(List<ChangeExecRecord> changeExecRecordList);
}
\ No newline at end of file
......@@ -17,6 +17,7 @@ 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;
/**
......@@ -43,4 +44,9 @@ public class ChangeFlowExecServiceImpl implements ChangeFlowExecService {
}
return new ArrayList<>();
}
@Override
public void batchSaveRecord(List<ChangeExecRecord> changeExecRecordList) {
changeExecRecordMapper.insertList(changeExecRecordList);
}
}
\ 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.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
......@@ -23,4 +24,11 @@ public interface ChangeExecRecordMapper extends tk.mybatis.mapper.common.Mapper<
@Select("SELECT * FROM TB_YX_QC_CHANGE_EXEC_RECORD WHERE change_record_id = #{changeRecordId}}")
List<ChangeExecRecord> selectByChangeRecordId(@Param("id") Long id);
@Insert({ "<script>",
"insert into TB_YX_QC_CHANGE_EXEC_RECORD(change_record_id, change_exec_department, change_exec_user_type, change_exec_user, change_risk_desc,change_exec_project, change_checking, change_exec_finish_time, change_exec_finish_desc, createTime, updateTime) values ",
"<foreach collection='list' item='item' index='index' separator=','>",
"(#{item.changeRecordId}, #{item.changeExecDepartment}, #{item.changeExecUserType}, #{item.changeExecUser}, #{item.changeRiskDesc}, #{item.changeExecProject}, #{item.changeChecking}, #{item.changeExecFinishTime}, #{item.changeExecFinishDesc}, #{item.thirtyDaysReturnRate}, #{item.createTime}, #{item.updateTime})",
"</foreach>", "</script>" })
void insertList(@Param("list") List<ChangeExecRecord> changeExecRecordList);
}
......@@ -6,11 +6,14 @@
*/
package com.netease.mail.yanxuan.change.dal.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq;
/**
* @Author zcwang
......@@ -21,4 +24,6 @@ public interface ChangeRecordMapper extends tk.mybatis.mapper.common.Mapper<Chan
@Select("select * from TB_YX_QC_CHANGE_RECORD where `flow_id` = #{flowId}")
ChangeRecord selectByFlowId(@Param("flowId") Long flowId);
List<ChangeRecord> selectByCondition(ChangeFlowListQueryReq changeFlowListQueryReq);
}
\ No newline at end of file
......@@ -6,6 +6,9 @@
*/
package com.netease.mail.yanxuan.change.dal.meta.model.req;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
......@@ -18,11 +21,13 @@ public class ChangeExecConfigReq {
/**
* 变更类型配置记录id
*/
@NotNull(message = "变更记录id不可为空")
private Long changeTemplateId;
/**
* 变更执行部门名
*/
@NotBlank(message = "变更执行部门名不能为空")
private String changeExecDepartment;
/**
......@@ -49,4 +54,14 @@ public class ChangeExecConfigReq {
* 变更验证措施
*/
private String changeChecking;
/**
* 行动完成时间
*/
private Long changeExecFinishTime;
/**
* 行动完成情况
*/
private String changeExecFinishDesc;
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ package com.netease.mail.yanxuan.change.dal.meta.model.req;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
......@@ -119,6 +120,7 @@ public class ChangeFlowCreateReq {
* 行动项
*/
@NotEmpty(message = "变更行动项不可为空")
@Valid
private List<ChangeExecConfigReq> changeExecProject;
/**
......
/**
* @(#)ChangeFlowListQueryReq.java, 2022/11/21.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.dal.meta.model.req;
import lombok.Data;
/**
* @Author zcwang
* @Date 2022/11/21
*/
@Data
public class ChangeFlowListQueryReq {
/**
* 变更商品(变更主体为商品时有效)
*/
private String itemId;
/**
* 变更供应商(变更主体为供应商时有效)
*/
private String supplier;
/**
* 一级变更类型id
*/
private Long parentChangeClassId;
/**
* 二级变更类型id
*/
private Long sonChangeClassId;
/**
* 工单状态
*/
private Integer state;
/**
* 变更负责人
*/
private String changeCommander;
/**
* 变更负责部门名
*/
private String changeDepartment;
/**
* 变更行动部门
*/
private String changeExecDepartment;
/**
* 开始时间
*/
private Long startTime;
/**
* 结束时间
*/
private Long endTime;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper">
<resultMap id="BaseResultMap" type="com.netease.mail.yanxuan.change.dal.entity.ChangeRecord">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="flow_id" jdbcType="BIGINT" property="flowId" />
<result column="flow_node" jdbcType="VARCHAR" property="flowNode" />
<result column="change_subject" jdbcType="INTEGER" property="changeSubject" />
<result column="parent_change_class_id" jdbcType="INTEGER" property="parentChangeClassId" />
<result column="son_change_class_id" jdbcType="INTEGER" property="sonChangeClassId" />
<result column="change_level" jdbcType="INTEGER" property="changeLevel" />
<result column="change_commander" jdbcType="VARCHAR" property="changeCommander" />
<result column="change_department" jdbcType="VARCHAR" property="changeDepartment" />
<result column="participate_change_exec_department" jdbcType="VARCHAR" property="participateChangeExecDepartment" />
<result column="change_item" jdbcType="VARCHAR" property="changeItem" />
<result column="change_supplier" jdbcType="VARCHAR" property="changeSupplier" />
<result column="change_reason" jdbcType="VARCHAR" property="changeReason" />
<result column="change_content" jdbcType="VARCHAR" property="changeContent" />
<result column="change_risk_desc" jdbcType="VARCHAR" property="changeRiskDesc" />
<result column="change_checking" jdbcType="VARCHAR" property="changeChecking" />
<result column="change_profit" jdbcType="INTEGER" property="changeProfit" />
<result column="change_profit_desc" jdbcType="VARCHAR" property="changeProfitDesc" />
<result column="change_confirm_result_time" jdbcType="BIGINT" property="changeConfirmResultTime" />
<result column="state" jdbcType="INTEGER" property="state" />
<result column="cancel_reason" jdbcType="VARCHAR" property="cancelReason" />
<result column="change_result" jdbcType="INTEGER" property="changeResult" />
<result column="create_source" jdbcType="INTEGER" property="createSource" />
<result column="create_supplier" jdbcType="VARCHAR" property="createSupplier" />
<result column="change_result_desc" jdbcType="VARCHAR" property="changeResultDesc" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="creator" jdbcType="VARCHAR" property="creator" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
id, flow_id, flow_node, change_subject, parent_change_class_id, son_change_class_id,
change_level, change_commander, change_department, participate_change_exec_department,
change_item, change_supplier, change_reason, change_content, change_risk_desc, change_checking,
change_profit, change_profit_desc, change_confirm_result_time, `state`, cancel_reason,
change_result, create_source, create_supplier, change_result_desc, remark, creator,
create_time, update_time
</sql>
<select id="selectByCondition" resultMap="BaseResultMap" parameterType="com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq">
select <include refid="Base_Column_List" />
from TB_YX_QC_CHANGE_RECORD
<where>
<if test="itemId != null ">
change_item like "%" #{itemId} "%" and
</if>
<if test="supplier != null ">
change_supplier = #{supplier} and
</if>
<if test="parentChangeClassId != null and changeLevel != ''">
parent_change_class_id = #{parentChangeClassId} and
</if>
<if test="sonChangeClassId != null and changeDepartment != ''">
son_change_class_id = #{sonChangeClassId} and
</if>
<if test="state != null">
`state` = #{state} and
</if>
<if test="changeCommander != null">
`change_commander` = #{changeCommander} and
</if>
<if test="changeDepartment != null">
`change_department` = #{changeDepartment} and
</if>
<if test="changeExecDepartment != null and changeExecDepartment != ''">
participate_change_exec_department like "%" #{changeExecDepartment} "%"
</if>
<if test="startTime != null">
create_time > #{startTime} and
</if>
<if test="endTime != null">
create_time <![CDATA[ < ]]> #{endTime} and
</if>
</where>
</select>
</mapper>
\ No newline at end of file
......@@ -8,7 +8,6 @@ package com.netease.mail.yanxuan.change.web.controller;
import javax.validation.Valid;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -20,10 +19,11 @@ import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz;
import com.netease.mail.yanxuan.change.biz.config.TitleConfig;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
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.ChangeFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowVO;
......@@ -59,8 +59,31 @@ public class ChangeFlowController {
* @return
*/
@GetMapping("/query")
public AjaxResult<Void> query() {
return AjaxResult.success();
public AjaxResult<Void> query(@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "itemId", required = false) String itemId,
@RequestParam(name = "supplier", required = false) String supplier,
@RequestParam(name = "parentChangeClassId", required = false) Long parentChangeClassId,
@RequestParam(name = "sonChangeClassId", required = false) Long sonChangeClassId,
@RequestParam(name = "changeState", required = false) Integer changeState,
@RequestParam(name = "changeCommander", required = false) String changeCommander,
@RequestParam(name = "changeDepartment", required = false) String changeDepartment,
@RequestParam(name = "changeExecDepartment", required = false) String changeExecDepartment,
@RequestParam(name = "startTime", required = false) Long startTime,
@RequestParam(name = "endTime", required = false) Long endTime) {
ChangeFlowListQueryReq changeFlowListQueryReq = new ChangeFlowListQueryReq();
changeFlowListQueryReq.setItemId(itemId);
changeFlowListQueryReq.setSupplier(supplier);
changeFlowListQueryReq.setParentChangeClassId(parentChangeClassId);
changeFlowListQueryReq.setSonChangeClassId(sonChangeClassId);
changeFlowListQueryReq.setState(changeState);
changeFlowListQueryReq.setChangeCommander(changeCommander);
changeFlowListQueryReq.setChangeDepartment(changeDepartment);
changeFlowListQueryReq.setChangeExecDepartment(changeExecDepartment);
changeFlowListQueryReq.setStartTime(startTime);
changeFlowListQueryReq.setEndTime(endTime);
return AjaxResult
.success(changeFlowBiz.query(page, pageSize, changeFlowListQueryReq);
}
/**
......
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