Commit aad7e88e by 王志超

feat: 子工单分批流转逻辑处理

parent 5443ba39
...@@ -10,6 +10,7 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowRecordService; ...@@ -10,6 +10,7 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowRecordService;
import com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowService; import com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.FlowService; import com.netease.mail.yanxuan.change.biz.service.rpc.FlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.IusService; import com.netease.mail.yanxuan.change.biz.service.rpc.IusService;
import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService;
import com.netease.mail.yanxuan.change.integration.flow.ius.IusRpcService; import com.netease.mail.yanxuan.change.integration.flow.ius.IusRpcService;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants; import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.biz.util.PageUtils; import com.netease.mail.yanxuan.change.biz.util.PageUtils;
...@@ -18,9 +19,12 @@ import com.netease.mail.yanxuan.change.common.bean.ResponseCode; ...@@ -18,9 +19,12 @@ 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.ChangeResultEnum; import com.netease.mail.yanxuan.change.common.enums.ChangeResultEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum; import com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum;
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.FileTypeEnum;
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.integration.email.enums.EmailTemplateEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils; import com.netease.mail.yanxuan.change.common.util.DateUtils;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
...@@ -58,6 +62,9 @@ import javax.validation.Valid; ...@@ -58,6 +62,9 @@ import javax.validation.Valid;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
* @author TmindA
*/
@Component @Component
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
...@@ -77,6 +84,7 @@ public class ChangeSubFlowBiz { ...@@ -77,6 +84,7 @@ public class ChangeSubFlowBiz {
private final IusService iusService; private final IusService iusService;
private final AppConfig appConfig; private final AppConfig appConfig;
private final ChangeSubFlowFileService changeSubFlowFileService; private final ChangeSubFlowFileService changeSubFlowFileService;
private final SupplierSendService sendSupplierEmail;
public String createAndSubmit(@Valid ChangeSubFlowCreateReq changeSubFlowCreateReq) { public String createAndSubmit(@Valid ChangeSubFlowCreateReq changeSubFlowCreateReq) {
...@@ -413,6 +421,9 @@ public class ChangeSubFlowBiz { ...@@ -413,6 +421,9 @@ public class ChangeSubFlowBiz {
log.info("[handleSubFlowFinish] 子单完成,subFlowId:{}, result:{}", subFlowRecord.getSubFlowId(), resultStatus); log.info("[handleSubFlowFinish] 子单完成,subFlowId:{}, result:{}", subFlowRecord.getSubFlowId(), resultStatus);
// 发送邮件
sendSubFlowFinishEmail(subFlowRecord);
return endNodeId; return endNodeId;
} }
...@@ -442,6 +453,9 @@ public class ChangeSubFlowBiz { ...@@ -442,6 +453,9 @@ public class ChangeSubFlowBiz {
log.info("[handleSubFlowCancel] 子单已取消,subFlowId:{}, reason:{}", subFlowRecord.getSubFlowId(), req.getCancelReason()); log.info("[handleSubFlowCancel] 子单已取消,subFlowId:{}, reason:{}", subFlowRecord.getSubFlowId(), req.getCancelReason());
// 发送邮件
sendSubFlowFinishEmail(subFlowRecord);
return cancelNodeId; return cancelNodeId;
} }
...@@ -511,6 +525,63 @@ public class ChangeSubFlowBiz { ...@@ -511,6 +525,63 @@ public class ChangeSubFlowBiz {
} }
/** /**
* 发送子单完成/取消邮件
*
* @param subFlowRecord 子单记录
*/
private void sendSubFlowFinishEmail(ChangeSubFlowRecord subFlowRecord) {
try {
// 查询主单信息
ChangeRecord mainRecord = changeRecordMapper.selectByPrimaryKey(subFlowRecord.getChangeRecordId());
if (mainRecord == null) {
log.warn("[sendSubFlowFinishEmail] 主单不存在,跳过发送邮件,changeRecordId:{}", subFlowRecord.getChangeRecordId());
return;
}
// 收件人:变更负责人+所有变更行动人+变更管理QM
String changeExecUserEmail = subFlowRecord.getChangeExecUserEmail();
List<String> receiverList = Collections.singletonList(changeExecUserEmail);
receiverList.add(mainRecord.getChangeCommander());
receiverList.add(appConfig.getChangeManageQM());
// 抄送人:所有变更行动人上一级LEADER+变更管理委员会
List<String> ccList = departmentLeaderBiz.getDepartmentLeaders(Collections.singletonList(changeExecUserEmail));
ccList.add(appConfig.getChangeCommittee());
// 构建邮件主题:【已完结】变更主体+变更内容+工单ID-子单ID
String subjectParam = ChangeSubjectEnum
.getChangeSubjectEnum(mainRecord.getChangeSubject()).getDesc()
+ mainRecord.getChangeContent() + mainRecord.getFlowId() + "-" + subFlowRecord.getSubFlowId();
// 构建邮件参数
HashMap<String, Object> emailMap = new HashMap<>();
emailMap.put("changeId", mainRecord.getFlowId() + "-" + subFlowRecord.getSubFlowId());
emailMap.put("changeSubject", ChangeSubjectEnum.getChangeSubjectEnum(mainRecord.getChangeSubject()).getDesc());
emailMap.put("flowUrl", mainRecord.getFlowId());
// 发送邮件
changeFlowBiz.qcSendEmail(receiverList, ccList, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_FINISH, emailMap);
// 如果是供应商,再次发送供应商邮件
if (mainRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(mainRecord.getCreateSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, emailMap);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if (!mainRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())
&& ChangeSubjectEnum.SUPPLIER.getType().equals(mainRecord.getChangeSubject())) {
sendSupplierEmail.sendSupplierEmail(mainRecord.getChangeSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, emailMap);
}
log.info("[sendSubFlowFinishEmail] 子单邮件发送成功,subFlowId:{}", subFlowRecord.getSubFlowId());
} catch (Exception e) {
log.error("[sendSubFlowFinishEmail] 子单邮件发送失败,subFlowId:{}", subFlowRecord.getSubFlowId(), e);
}
}
/**
* 根据变更行动工单ID查询详情 * 根据变更行动工单ID查询详情
* 说明:展示内容和主单的detail一样,但行动项只展示该变更行动工单下绑定的行动项 * 说明:展示内容和主单的detail一样,但行动项只展示该变更行动工单下绑定的行动项
* *
......
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