Commit 55d63374 by “zcwang”

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

parents 10a1f60b ce439b01
package com.netease.mail.yanxuan.change.biz.service;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc;
/**
* @author WangJiaXiang
......@@ -9,8 +10,7 @@ import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO;
*/
public interface InteriorChangeConfigService {
String queryCommanderInfo(ChangeCommanderPO changeCommander);
GoodsResponseRpc queryCommanderInfo(ChangeCommanderPO changeCommander);
}
......@@ -11,6 +11,8 @@ public interface ChangeConfigService {
ChangeConfig queryChangeConfig(Long id);
ChangeConfig queryChangeType(Long parentChangeClassId,Long sonChangeClassId);
Boolean deleteChangeConfig(Long id);
ChangeConfig addChangeConfig(ChangeConfig changeConfig);
......
......@@ -9,16 +9,18 @@ import com.netease.mail.yanxuan.change.common.enums.ChangeCommanderEnum;
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.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.integration.flow.goods.ItemcenterApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.PfuApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.QcApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author WangJiaXiang
......@@ -26,6 +28,8 @@ import java.util.Map;
*/
public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigService {
private static Logger logger = LoggerFactory.getLogger(InteriorChangeConfigServiceImpl.class);
@Autowired
private ChangeConfigService changeConfigService;
......@@ -38,16 +42,19 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
//查看商品BU
@Autowired
private ItemcenterApiRpcService itemcenterApiRpcService;
@Autowired
private FlowRpcSupplierSendService supplierSendService;
@Override
public String queryCommanderInfo(ChangeCommanderPO changeCommander) {
public GoodsResponseRpc queryCommanderInfo(ChangeCommanderPO changeCommander) {
//获取模板名称 通过一级变更类型 二级变更类型ID 定位模板
ChangeConfig changeConfig = changeConfigService.queryChangeConfig(changeCommander.getId());
ChangeConfig changeConfig = changeConfigService.queryChangeType(changeCommander.getParentChangeClassId(), changeCommander.getSonChangeClassId());
//查询出当前模板配置中选择的 角色
ChangeCommanderEnum changeCommanderEnum = ChangeCommanderEnum.getChangeCommanderEnum(changeConfig.getChangeCommanderType());
//直接排除 选项为固定人 或者发起人
if (changeCommanderEnum.getId() == 1 || changeCommanderEnum.getId() == 2){
return changeConfig.getChangeCommander();
//固定人或者发起人 changeConfig.getChangeCommander();
return null;
}
ChangeSubjectEnum changeSubjectEnum = ChangeSubjectEnum.getChangeSubjectEnum(changeConfig.getChangeSubject());
if (changeSubjectEnum.getType() == 1){
......@@ -57,8 +64,8 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
//供应商 采购 计划 SQE
return queryChangeSupplier(changeCommanderEnum,changeCommander.getChangeSupplierId(),changeConfig.getChangeCommander());
}
//其他变更 备注 其他变更之后固定人 和发起人在上面判断会被排除掉
return changeConfig.getChangeCommander();
//其他变更 备注 其他变更之后固定人 和发起人在上面判断会被排除掉 changeConfig.getChangeCommander();
return null;
}
......@@ -69,52 +76,75 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
* @param commander 商品的关联角色
* @return
*/
private String queryGoodsCommander(ChangeCommanderEnum commanderEnum,List<Long> goodsInfos,String commander){
private GoodsResponseRpc queryGoodsCommander(ChangeCommanderEnum commanderEnum,List<Long> goodsInfos,String commander){
if (commanderEnum.getId() != 3 || goodsInfos == null || goodsInfos.size() == 0 || commander == null){
return "类型错误 或者未选择商品";
return null;
}
Map<String,Integer> map = new HashMap<String,Integer>();
Map<String,GoodsResponseRpc> map = new HashMap<String,GoodsResponseRpc>();
//记录最大出现次数
int temp = 0;
//记录最大值
String name = "";
GoodsResponseRpc name = new GoodsResponseRpc();
//记录出现的所有值
List<String> emails = new ArrayList<String>();
List<GoodsResponseRpc> emails = new ArrayList<GoodsResponseRpc>();
//遍历取出所有商品关联的人
if (commander.equals("商品BU")) {
String detail = itemcenterApiRpcService.getDetail(goodsInfos);
logger.error("根据商品查看商品负责BU接口返回值\t"+detail);
getGoodsNameEmail(emails,detail);
} else if (commander.equals("采购")) {
//采购返回值处理逻辑
String detail = supplierSendService.queryGoodsPurchase(goodsInfos);
logger.error("根据商品查看商品负责采购接口返回值\t"+detail);
JSONObject jsonObject = JSONObject.parseObject(detail);
List<GoodsPurchaseRpc> purchaseRpcs = JSONObject.parseArray(jsonObject.get("data").toString(), GoodsPurchaseRpc.class);
for (GoodsPurchaseRpc purchaseRpc : purchaseRpcs){
GoodsResponseRpc goodsRpc = new GoodsResponseRpc();
goodsRpc.setEmail(purchaseRpc.getSupplierTraceBusiness());
goodsRpc.setName(purchaseRpc.getSupplierName());
emails.add(goodsRpc);
}
} else if (commander.equals("计划")) {
String detail = pfuApiRpcService.getDetail(goodsInfos);
logger.error("根据商品查看商品负责计划接口返回值\t"+detail);
getGoodsNameEmail(emails,detail);
} else if (commander.equals("SQE")) {
for (Long goods:goodsInfos) {
String detail = qcApiRpcService.getDetail(goods.intValue());
logger.error("根据商品查看商品负责SQE接口返回值\t"+detail);
JSONObject jsonObject = JSONObject.parseObject(detail);
GoodsResponseSqeRpc data = jsonObject.getObject("data", GoodsResponseSqeRpc.class);
if (data != null){
emails.add(data.getUserName());
//需要验证返回值 是否正确
GoodsResponseRpc rpc = new GoodsResponseRpc();
rpc.setEmail(data.getUserName());
rpc.setName(data.getRealName());
}
}
}
for (String email : emails){
if (!map.containsKey(email)){
map.put(email,1);
//逻辑发生变更
for (GoodsResponseRpc email : emails){
if (!map.containsKey(email.getName())){
email.setOccurrenceNumber(1);
}else{
Integer integer = map.get(email);
++integer;
if (temp < integer){
temp = integer;
name = email;
GoodsResponseRpc goodsResponseRpc = map.get(email.getName());
email.setOccurrenceNumber(goodsResponseRpc.getOccurrenceNumber()+1);
if (temp < goodsResponseRpc.getOccurrenceNumber()){
temp = goodsResponseRpc.getOccurrenceNumber();
name = goodsResponseRpc;
}
}
map.put(email,integer);
map.put(email.getName(),email);
}
if (name == null){
Iterator<GoodsResponseRpc> iterator = map.values().iterator();
name = iterator.next();
}
return name;
}
/**
* 供应商角色最终查询
* @param commanderEnum 查询方向 枚举
......@@ -122,9 +152,9 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
* @param commander 供应商关联角色
* @return
*/
private String queryChangeSupplier(ChangeCommanderEnum commanderEnum,String changeSupplierId,String commander){
private GoodsResponseRpc queryChangeSupplier(ChangeCommanderEnum commanderEnum,String changeSupplierId,String commander){
if (commanderEnum.getId() != 4 || changeSupplierId == null || commander == null){
return "返回空值 或者指示值";
return null;
}
//changeSupplier 根据提供的信息去查询 最终返回
if (commander.equals("采购")){
......@@ -143,14 +173,17 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
* @param emails 储存邮箱队列
* @param response 请求返结果
*/
private void getGoodsNameEmail(List<String> emails,String response){
private void getGoodsNameEmail(List<GoodsResponseRpc> emails,String response){
JSONObject jsonObject = JSONObject.parseObject(response);
Map<String,JSONObject> rpcMap = JSONObject.parseObject(jsonObject.get("data").toString(), Map.class);
if (rpcMap == null){
throw ExceptionFactory.createBiz(ResponseCode.OPERATOR_NOT_EXIST);
}
for (String rpc : rpcMap.keySet()){
emails.add(rpcMap.get(rpc).get("uid").toString());
GoodsResponseRpc goodsRpc = new GoodsResponseRpc();
goodsRpc.setEmail(rpcMap.get(rpc).get("uid").toString());
goodsRpc.setName(rpcMap.get(rpc).get("name").toString());
emails.add(goodsRpc);
}
}
......
......@@ -21,6 +21,14 @@ public class ChangeConfigServiceImpl implements ChangeConfigService {
}
@Override
public ChangeConfig queryChangeType(Long parentChangeClassId, Long sonChangeClassId) {
if (parentChangeClassId == null || sonChangeClassId == null){
return null;
}
return mapper.queryChangeType(parentChangeClassId, sonChangeClassId);
}
@Override
public Boolean deleteChangeConfig(Long id) {
mapper.deleteById(id);
return true;
......
......@@ -29,6 +29,9 @@ public interface ChangeConfigMapper extends tk.mybatis.mapper.common.Mapper<Chan
@Delete("delete from TB_YX_QC_CHANGE_CONFIG where id = #{id}")
void deleteById(@Param("id") Long id);
@Select("select * from TB_YX_QC_CHANGE_CONFIG where parent_change_class_id = #{parentChangeClassId} and son_change_class_id = #{sonChangeClassId}")
ChangeConfig queryChangeType(Long parentChangeClassId,Long sonChangeClassId);
List<ChangeConfigPo> selectChangeConfigPo(ChangeConfigQueryReq req);
List<ChangeType> queryByparentChangeClassId();
......
......@@ -12,10 +12,9 @@ import java.util.List;
@Data
public class ChangeCommanderPO {
/**
* 变更模板主键ID
*/
private Long id;
private Long parentChangeClassId;
private Long sonChangeClassId;
/**
* 供应商信息
......
package com.netease.mail.yanxuan.change.dal.meta.model.rpc;
import lombok.Data;
/**
* @author WangJiaXiang
* @date 2022/11/24/024$
* 商品采购人返回信息
*/
@Data
public class GoodsPurchaseRpc {
private String supplierName;
private String itemId;
private String supplierTraceBusiness;
}
package com.netease.mail.yanxuan.change.dal.meta.model.rpc;
import lombok.Data;
/**
* @author WangJiaXiang
* @date 2022/11/24/024$
* 根据商品查询对应负责人的信息
*/
@Data
public class GoodsResponseRpc {
private String name;
private String email;
private Integer occurrenceNumber;
}
package com.netease.mail.yanxuan.change.integration.flow;
import com.netease.yanxuan.missa.client.annotation.MissaClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author WangJiaXiang
* @date 2022/11/24/024$
*/
@Service
@MissaClient(serviceCode = "yanxuan-ius")
public interface FlowIusRpcService {
@GetMapping("/v1/qc/user/get")
String queryEmailInfo(@RequestParam(name = "uid")String uid);
@GetMapping("/v1/qc/user/queryLeaderChain")
String queryDepartment(@RequestParam(name = "uid")String uid);
}
......@@ -5,11 +5,10 @@ import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.biz.service.change.AdminChangeConfigService;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService;
import com.netease.mail.yanxuan.change.integration.flow.FlowIusRpcService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
......@@ -105,12 +104,16 @@ public class ChangeConfigController {
}
@Autowired
private FlowRpcSupplierSendService sendEmailService;
private FlowIusRpcService iusRpcService;
@PostMapping("/test")
public String queryGoods(@RequestBody List<Long> longList){
return sendEmailService.queryGoodsPurchase(longList);
@GetMapping("/test")
public String queryGoods(){
return iusRpcService.queryEmailInfo("grp.gyhtest1001@corp.netease.com");
}
@GetMapping("/test1")
public String queryGoods1(){
return iusRpcService.queryDepartment("grp.gyhtest1001@corp.netease.com");
}
}
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