Commit 97b41f00 by jx-art

Merge remote-tracking branch 'origin/feature-changeFlow-221110' into feature-changeFlow-221110

parents 9cf0739e 65b13bc4
......@@ -50,10 +50,10 @@ CREATE TABLE `TB_YX_QC_CHANGE_RECORD`
`parent_change_class_id` int(11) NOT NULL DEFAULT '0' COMMENT '一级变更类型id',
`son_change_class_id` int(11) NOT NULL DEFAULT '0' COMMENT '二级变更类型id',
`change_level` int(11) NOT NULL DEFAULT '0' COMMENT '变更等级',
`change_commander` varchar(20) NOT NULL DEFAULT '' COMMENT '变更负责人',
`change_commander` varchar(70) NOT NULL DEFAULT '' COMMENT '变更负责人',
`change_department` varchar(20) NOT NULL DEFAULT '' COMMENT '变更负责部门名',
`participate_change_exec_department` varchar(255) NOT NULL DEFAULT '' COMMENT '变更行动部门列表,JSON格式',
`change_item` varchar(20) NOT NULL DEFAULT '' COMMENT '变更商品(变更主体为商品时有效)',
`change_item` varchar(1020) NOT NULL DEFAULT '' COMMENT '变更商品(变更主体为商品时有效)',
`change_supplier` varchar(20) NOT NULL DEFAULT '' COMMENT '变更供应商(变更主体为供应商时有效)',
`change_reason` varchar(550) NOT NULL DEFAULT '' COMMENT '变更原因',
`change_content` varchar(550) NOT NULL DEFAULT '' COMMENT '变更内容',
......@@ -96,6 +96,7 @@ CREATE TABLE `TB_YX_QC_CHANGE_EXEC_RECORD`
`change_exec_department` varchar(50) NOT NULL DEFAULT '' COMMENT '变更执行部门名',
`change_exec_user_type` int(2) NOT NULL DEFAULT '0' COMMENT '变更行动人类型',
`change_exec_user` varchar(50) NOT NULL DEFAULT '' COMMENT '变更行动人(不同类型存储不同内容)',
`change_exec_user_email` varchar(60) NOT NULL DEFAULT '' COMMENT '变更行动人邮箱',
`change_risk_desc` varchar(550) NOT NULL DEFAULT '' COMMENT '变更风险描述',
`change_exec_project` varchar(550) NOT NULL DEFAULT '' COMMENT '行动项',
`change_checking` varchar(550) NOT NULL DEFAULT '' COMMENT '变更措施验证',
......
......@@ -73,6 +73,7 @@ import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowDeliverReq;
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.rpc.CommanderResponse;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.CategoryInfoVO;
......@@ -147,10 +148,25 @@ public class ChangeFlowBiz {
checkSubject(changeFlowCreateReq);
Long parentChangeClassId = changeFlowCreateReq.getParentChangeClassId();
Long sonChangeClassId = changeFlowCreateReq.getSonChangeClassId();
String changeItems = changeFlowCreateReq.getChangeItems();
List<Long> itemIds = null;
if (StringUtils.isNotBlank(changeItems)) {
List<ItemVO> itemVOS = JSON.parseArray(changeItems, ItemVO.class);
itemIds = itemVOS.stream().map(ItemVO::getItemId).collect(Collectors.toList());
}
// 获取工单负责人
GoodsResponseRpc goodsResponseRpc = interiorChangeConfigService.queryCommanderInfo(ChangeCommanderPO.builder()
.parentChangeClassId(parentChangeClassId).sonChangeClassId(sonChangeClassId).build());
Assert.notNull(goodsResponseRpc, "未查询到负责人信息");
GoodsResponseRpc goodsResponseRpc = interiorChangeConfigService.queryCommanderInfo(
ChangeCommanderPO.builder().parentChangeClassId(parentChangeClassId).sonChangeClassId(sonChangeClassId)
.changeSupplierId(changeFlowCreateReq.getChangeSupplier()).goodsInfos(itemIds).build());
// 工单负责人
String changeCommander;
if (goodsResponseRpc == null) {
// todo:获取负责人信息
changeCommander = appConfig.getTestEmail();
} else {
changeCommander = goodsResponseRpc.getEmail();
}
// Assert.notNull(goodsResponseRpc, "未查询到负责人信息");
// 检验是否需要资料
ChangeConfig changeConfig = changeConfigService.getSonChange(sonChangeClassId);
Assert.notNull(changeConfig, "二级变更类型不存在");
......@@ -179,14 +195,12 @@ public class ChangeFlowBiz {
// 查询工单详情
FlowDataDTO flowDataDTO = flowService.flowDetail(flowId);
String nodeId = flowDataDTO.getFlowMeta().getCurrNodeDataList().get(0).getNodeId();
// 获取负责人信息
String changeCommander = changeFlowCreateReq.getChangeCommander();
// 保存工单数据
ChangeRecord changeRecord = buildChangeRecord(flowId, nodeId, changeFlowCreateReq, changeCommander, uid);
changeFlowService.saveRecord(changeRecord);
// 保存变更行动方案记录
List<ChangeExecRecord> changeExecRecords = buildChangeExecRecord(changeRecord.getId(), changeExecProject);
List<ChangeExecRecord> changeExecRecords = buildChangeExecRecord(changeRecord.getId(), changeExecProject,
changeFlowCreateReq, uid);
changeExecRecords.forEach(exec->changeFlowExecService.saveRecord(exec));
List<ChangeFile> allFiles = new ArrayList<>();
// 变更前后图片/视频,非必填
......@@ -238,13 +252,20 @@ public class ChangeFlowBiz {
}).collect(Collectors.toList());
}
private List<ChangeExecRecord> buildChangeExecRecord(Long changeRecordId, List<ChangeExecConfigReq> changeExecProject) {
private List<ChangeExecRecord> buildChangeExecRecord(Long changeRecordId,
List<ChangeExecConfigReq> changeExecProject, ChangeFlowCreateReq changeFlowCreateReq, String uid) {
return changeExecProject.stream().map(c -> {
ChangeExecRecord changeExecRecord = new ChangeExecRecord();
changeExecRecord.setChangeRecordId(changeRecordId);
changeExecRecord.setChangeExecDepartment(c.getChangeExecDepartment());
changeExecRecord.setChangeExecUserType(c.getChangeExecUserType());
changeExecRecord.setChangeExecUser(c.getChangeExecUser());
// 查询对应的负责人
CommanderResponse commanderResponse = interiorChangeConfigService
.queryCommanderEmail(c.getChangeExecUserType(), c.getChangeExecUser(), changeFlowCreateReq, uid);
changeExecRecord.setChangeExecUserEmail(
StringUtils.isNotBlank(commanderResponse.getEmail()) ? commanderResponse.getEmail()
: appConfig.getTestEmail());
changeExecRecord.setChangeRiskDesc(c.getChangeRiskDesc());
changeExecRecord.setChangeExecProject(c.getChangeExecProject());
changeExecRecord.setChangeChecking(c.getChangeChecking());
......@@ -595,7 +616,7 @@ public class ChangeFlowBiz {
changeFlowVO.setChangeLevel(changeRecord.getChangeLevel());
changeFlowVO.setChangeDepartment(changeRecord.getChangeDepartment());
changeFlowVO.setChangeCommander(changeRecord.getChangeCommander());
changeFlowVO.setSupplier(changeRecord.getChangeSupplier());
changeFlowVO.setChangeSupplier(changeRecord.getChangeSupplier());
changeFlowVO.setChangeReason(changeRecord.getChangeReason());
changeFlowVO.setChangeContent(changeRecord.getChangeContent());
changeFlowVO.setChangeRiskDesc(changeRecord.getChangeRiskDesc());
......@@ -694,7 +715,7 @@ public class ChangeFlowBiz {
if (StringUtils.isNotBlank(itemJsonStr)) {
changeFlowVO.setChangeItems(JSON.parseArray(itemJsonStr, ItemVO.class));
}
changeFlowVO.setSupplier(c.getChangeSupplier());
changeFlowVO.setChangeSupplier(c.getChangeSupplier());
changeFlowVO.setChangeState(c.getState());
changeFlowVO.setChangeCreator(c.getCreator());
String participateChangeExecDepartment = c.getParticipateChangeExecDepartment();
......
package com.netease.mail.yanxuan.change.biz.service;
import java.util.List;
import java.util.Map;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.CommanderResponse;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc;
import java.util.List;
import java.util.Map;
/**
* @author WangJiaXiang
* @date 2022/11/18/018$
......@@ -18,4 +20,13 @@ public interface InteriorChangeConfigService {
Map<Long, ChangeGoodsPrincipalPO> queryGoodsPrincipalInfo(List<Long> itemIds);
/**
* 查询负责人信息
* @param changeExecUserType
* @param changeExecUser
* @return
*/
CommanderResponse queryCommanderEmail(Integer changeExecUserType, String changeExecUser,
ChangeFlowCreateReq changeFlowCreateReq, String uid);
}
package com.netease.mail.yanxuan.change.biz.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory;
import com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService;
......@@ -11,9 +27,12 @@ import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum;
import com.netease.mail.yanxuan.change.dal.entity.ChangeConfig;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.CommanderResponse;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsPurchaseRpc;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseSqeRpc;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
import com.netease.mail.yanxuan.change.integration.flow.goods.ItemcenterApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.PfuApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.QcApiRpcService;
......@@ -21,18 +40,14 @@ import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplier
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp;
import com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import lombok.extern.slf4j.Slf4j;
/**
* @author WangJiaXiang
* @date 2022/11/18/018$
*/
@Slf4j
@Service
public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigService {
......@@ -258,6 +273,40 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
return map;
}
@Override
public CommanderResponse queryCommanderEmail(Integer changeExecUserType, String changeExecUser,
ChangeFlowCreateReq changeFlowCreateReq, String uid) {
log.debug("[queryCommanderEmail] changeExecUserType:{}, changeExecUser:{}, changeFlowCreateReq:{}, uid:{}",
changeExecUserType, changeExecUser, changeFlowCreateReq, uid);
ChangeCommanderEnum changeCommanderEnum = ChangeCommanderEnum.getChangeCommanderEnum(changeExecUserType);
Assert.notNull(changeCommanderEnum, "变更负责人类型错误");
CommanderResponse commanderResponse = new CommanderResponse();
switch (changeCommanderEnum) {
case COMMANDER_ORIGINATOR:
commanderResponse.setEmail(uid);
break;
case FIXED_PERSON:
commanderResponse.setEmail(changeExecUser);
break;
case GOODS_ASSOCIATED:
String changeItems = changeFlowCreateReq.getChangeItems();
Assert.isTrue(StringUtils.isNotBlank(changeItems), "变更负责人为商品时,商品列表不可为空");
List<ItemVO> itemVOS = JSON.parseArray(changeItems, ItemVO.class);
List<Long> itemIdList = itemVOS.stream().map(ItemVO::getItemId).collect(Collectors.toList());
GoodsResponseRpc goodsResponseRpc = queryGoodsCommander(changeCommanderEnum, itemIdList, changeExecUser);
commanderResponse.setEmail(goodsResponseRpc.getEmail());
break;
case SUPPLIERS_ASSOCIATED:
GoodsResponseRpc supplierResponseRpc = queryChangeSupplier(changeCommanderEnum,
changeFlowCreateReq.getChangeSupplier(), changeExecUser);
commanderResponse.setEmail(supplierResponseRpc.getEmail());
break;
default:
throw ExceptionFactory.createBiz(ResponseCode.COMMANDER_TYPE_NOT_EXIST, "变更负责人类型错误");
}
return null;
}
/**
* 请求数据解析以及装载
* @param type 1:BU 2:计划
......
......@@ -55,7 +55,7 @@ public enum ResponseCode {
SEND_RED_PACKED_FAIL(225, "发红包失败"),
NO_SELECT_GOOD_POWER(226,"没有选商品的资格"),
NO_SELECT_GOOD_POWER(226, "没有选商品的资格"),
SEND_GIFT_CARD_FAIL(227, "发福利卡失败"),
......@@ -98,12 +98,12 @@ public enum ResponseCode {
LIMIT(407, "LIMIT"),
//该crmId在数据库已存在
SAME_CRM_ID(408,"该crmId在数据库已存在"),
SAME_CRM_ID(408, "该crmId在数据库已存在"),
// 风控异常, UGC检查失败等
RISK(411, "RISK"),
UNIQUE_KEY(412,"唯一索引异常"),
UNIQUE_KEY(412, "唯一索引异常"),
//----------5xx-----------
// 服务器错误: db异常等
......@@ -130,47 +130,61 @@ public enum ResponseCode {
CHANGE_SUBJECT_ERROR(1006, "变更主体类型错误"),
CHANGE_TYPE_NOT_EXIST(1007, "变更类型不存在"),
OPERATOR_NOT_EXIST(1008, "操作人不存在"),
CREATE_TODO_ERROR(1009, "传单待办错误"),
COMMANDER_TYPE_NOT_EXIST(1010,"变更负责人类型错误"),
/**
* 无权限
*/
NO_PERMISSION(2001, "无权限"),
NO_PERMISSION(2001,"无权限") {
},
CAN_NOT_DEL(2002, "不可删除"),
CAN_NOT_DEL(2002,"不可删除") {
},
UPDATE_FAIL(2003, "更改失败"),
UPDATE_FAIL(2003,"更改失败") {
},
CANT_FOUND(2004, "查询不到"),
CANT_FOUND(2004,"查询不到") {
},
SEND_FAIL(2005, "发送失败"),
SEND_FAIL(2005,"发送失败") {
},
ACT_END(2006, "活动结束"),
ACT_END(2006,"活动结束") {
},
/**
* 操作记录不存在
*/
OP_RECORD_NOT_EXIST(3000,"opRecord id not existed"),
OP_RECORD_NOT_EXIST(3000,"opRecord id not existed") {
},
/**
* 只有操作成功才允许进行验证
*/
ONLY_OP_SUCCESS_ALLOWED(3001,"verify only allowed when op success"),
ONLY_OP_SUCCESS_ALLOWED(3001,"verify only allowed when op success") {
},
PARAMETER_LENGTH(413, "请检查参数长度"),
PARAMETER_LENGTH(413,"请检查参数长度") {
},
EXEC_CONFIG_LENGTH(414, "请检查行动方案配置数量"),
EXEC_CONFIG_LENGTH(414,"请检查行动方案配置数量") {
},
PARAMETER_DEFICIENCY(415,"参数缺失请检查参数"),
PARAMETER_DEFICIENCY(415,"参数缺失请检查参数") {
},
CHANGE_TYPE_NAME_ONE(4001,"一级变更类型重复,请检查后添加~"),
CHANGE_TYPE_NAME_ONE(4001,"一级变更类型重复,请检查后添加~") {
},
CHANGE_TYPE_NAME_TOW(4002,"二级变更类型重复,请检查后添加~");
CHANGE_TYPE_NAME_TOW(4002,"二级变更类型重复,请检查后添加~") {
};
private int code;
private String msg;
ResponseCode(int code, String msg) {
this.code = code;
this.msg = msg;
......@@ -183,4 +197,4 @@ public enum ResponseCode {
public String getMsg() {
return msg;
}
}
}
......@@ -54,6 +54,11 @@ public class ChangeExecRecord {
private String changeExecUser;
/**
* 变更行动人(不同类型存储不同内容)
*/
private String changeExecUserEmail;
/**
* 变更风险描述
*/
private String changeRiskDesc;
......
......@@ -50,7 +50,6 @@ public class ChangeFlowCreateReq {
/**
* 变更负责人
*/
@NotBlank(message = "变更负责人不能为空")
private String changeCommander;
/**
......
/**
* @(#)CommanderResponse.java, 2022/12/6.
* <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.rpc;
import lombok.Data;
/**
* @Author zcwang
* @Date 2022/12/6
*/
@Data
public class CommanderResponse {
/**
* 用户名
*/
private String name;
/**
* 邮箱
*/
private String email;
}
\ No newline at end of file
......@@ -108,7 +108,7 @@ public class ChangeFlowVO {
/**
* 变更供应商
*/
private String supplier;
private String changeSupplier;
/**
* 变更状态
* @see ChangeStatusEnum
......
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