diff --git a/src/main/java/com/spring/modules/lab/service/LabService.java b/src/main/java/com/spring/modules/lab/service/LabService.java index e50ce7c6..5b8f60e0 100644 --- a/src/main/java/com/spring/modules/lab/service/LabService.java +++ b/src/main/java/com/spring/modules/lab/service/LabService.java @@ -2,6 +2,7 @@ package com.spring.modules.lab.service; import com.baomidou.mybatisplus.extension.service.IService; import com.spring.common.utils.PageUtils; +import com.spring.modules.change.vo.ChangeRequestVo; import com.spring.modules.change.vo.ProcessFormVo; import com.spring.modules.lab.entity.LabEntity; import com.spring.modules.lab.entity.LabItemEntity; @@ -60,4 +61,9 @@ public interface LabService extends IService { * 删除属性信息 */ void deleteLabPropertyItems(String site, String referenceNo); + + /** + * 流程干预提交(节点更新/流程干预) + */ + void submitLabToFlow(ChangeRequestVo data); } diff --git a/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java b/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java index 6de9bf22..0fc43465 100644 --- a/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java +++ b/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java @@ -18,6 +18,7 @@ import com.spring.modules.change.entity.ParamData; import com.spring.modules.change.entity.ProcessFormEntity; import com.spring.modules.change.mapper.ChangeManagementMapper; import com.spring.modules.change.service.impl.ChangeManagementServiceImpl; +import com.spring.modules.change.vo.ChangeRequestVo; import com.spring.modules.change.vo.ProcessFormVo; import com.spring.modules.lab.entity.LabEntity; import com.spring.modules.lab.entity.LabItemEntity; @@ -401,6 +402,50 @@ public class LabServiceImpl extends ServiceImpl implements labItemMapper.deleteLabItems(site, referenceNo); } + /** + * 流程干预提交(节点更新/流程干预) + */ + @Override + @Transactional + public void submitLabToFlow(ChangeRequestVo data) { + if (data == null || StringUtils.isBlank(data.getSite()) || StringUtils.isBlank(data.getDocumentNo()) || StringUtils.isBlank(data.getUserName())) { + throw new RuntimeException("流程干预参数不完整,无法提交Lab流程"); + } + + Map baseData = changeManagementService.getSubmitBaseData(data.getSite(), data.getUserName(), data.getDocumentNo()); + LabEntity lab = this.getDetail(data.getSite(), data.getDocumentNo()); + if (lab == null) { + throw new RuntimeException("未找到对应Lab单据"); + } + + ParamData paramData = new ParamData(data.getSite(), baseData.get("nodeId"), baseData.get("nodeName"), data.getDocumentNo(), data.getUserName(), baseData.get("classificationNo"), + baseData.get("userId"), baseData.get("workflowId"), baseData.get("workflowname"), baseData.get("requestName"), baseData.get("path"), baseData.get("requestId"), + "plm_lab", "reference_no", "status", lab.getStepId(), data.getBu() == null ? "" : data.getBu(), + baseData.get("domainControlAccount"), baseData.get("menuId"), baseData.get("menuName"), data.getNodeConclusion(), data.getRejectOpinion() == null ? "" : data.getRejectOpinion(), data.getNodeId()); + + if ("update".equals(data.getProcessFlag())) { + List mainData = getSubmitMainData(data.getSite(), baseData, lab); + paramData.setMainData(mainData); + SubmitRequestParam submitRequestParam = new SubmitRequestParam(); + submitRequestParam.setUserId(data.getUpdateBy()); + submitRequestParam.setRequestId(paramData.getRequestId()); + submitRequestParam.setMainData(paramData.getMainData()); + String submitRequestURL = apiUrlOa + "/oa/interface/submitRequest"; + ResponseData submitRequestResponses = HttpClientUtil.doPostByRawWithOA(submitRequestURL, submitRequestParam); + if (!"0".equals(submitRequestResponses.getCode())) { + throw new RuntimeException("OA提交流程异常信息:" + submitRequestResponses.getMsg()); + } + // 节点更新时后续OA流转操作人使用上一节点审批人 + paramData.setUserId(data.getUpdateBy()); + } + + try { + changeManagementService.agreeFunction(paramData, Constant.LAB); + } catch (Exception e) { + handleSubmitRollback(paramData, e); + } + } + private List getSubmitMainData(String site, Map baseData, LabEntity lab) { List mainData = new ArrayList<>(); List nodeDetails = changeManagementMapper.queryNodeDetails(site, baseData.get("workflowId"), baseData.get("nodeId"), baseData.get("classificationNo")); diff --git a/src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java b/src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java index 2cf49c1d..7e763dad 100644 --- a/src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java +++ b/src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java @@ -25,6 +25,8 @@ import com.spring.modules.change.vo.ProcessFormVo; import com.spring.modules.part.vo.BomDetailVo; import com.spring.modules.part.vo.RoutingDetailVo; import com.spring.modules.proofing.service.impl.ProofingInformationServiceImpl; +import com.spring.modules.rohs.service.impl.RohsServiceImpl; +import com.spring.modules.lab.service.impl.LabServiceImpl; import com.spring.modules.quotation.service.impl.QuotationInformationServiceImpl; import com.spring.modules.quote.service.impl.QuoteServiceImpl; import com.spring.modules.request.entity.PlmFieldData; @@ -85,6 +87,10 @@ public class RequestManageServiceImpl extends ServiceImpl { * 删除RoHs材料明细 */ void removeMaterials(String site, String referenceNo); + + /** + * 流程干预提交(节点更新/流程干预) + */ + void submitRohsToFlow(ChangeRequestVo data); } diff --git a/src/main/java/com/spring/modules/rohs/service/impl/RohsServiceImpl.java b/src/main/java/com/spring/modules/rohs/service/impl/RohsServiceImpl.java index 5b0e1021..8bf2d7ca 100644 --- a/src/main/java/com/spring/modules/rohs/service/impl/RohsServiceImpl.java +++ b/src/main/java/com/spring/modules/rohs/service/impl/RohsServiceImpl.java @@ -17,6 +17,7 @@ import com.spring.modules.change.entity.ParamData; import com.spring.modules.change.entity.ProcessFormEntity; import com.spring.modules.change.mapper.ChangeManagementMapper; import com.spring.modules.change.service.impl.ChangeManagementServiceImpl; +import com.spring.modules.change.vo.ChangeRequestVo; import com.spring.modules.change.vo.ProcessFormVo; import com.spring.modules.request.vo.PlmRequestDetailVo; import com.spring.modules.rohs.entity.RohsEntity; @@ -437,6 +438,58 @@ public class RohsServiceImpl extends ServiceImpl impleme rohsMaterialService.remove(removeWrapper); } + /** + * 流程干预提交(节点更新/流程干预) + */ + @Override + @Transactional + public void submitRohsToFlow(ChangeRequestVo data) { + if (data == null || StringUtils.isBlank(data.getSite()) || StringUtils.isBlank(data.getDocumentNo()) || StringUtils.isBlank(data.getUserName())) { + throw new RuntimeException("流程干预参数不完整,无法提交RoHs流程"); + } + + Map baseData = changeManagementService.getSubmitBaseData(data.getSite(), data.getUserName(), data.getDocumentNo()); + RohsEntity rohs = this.getDetail(data.getSite(), data.getDocumentNo()); + if (rohs == null) { + throw new RuntimeException("未找到对应RoHs单据"); + } + + ParamData paramData = new ParamData(data.getSite(), baseData.get("nodeId"), baseData.get("nodeName"), data.getDocumentNo(), data.getUserName(), baseData.get("classificationNo"), + baseData.get("userId"), baseData.get("workflowId"), baseData.get("workflowname"), baseData.get("requestName"), baseData.get("path"), baseData.get("requestId"), + "plm_rohs", "reference_no", "status", rohs.getStepId(), data.getBu() == null ? "" : data.getBu(), + baseData.get("domainControlAccount"), baseData.get("menuId"), baseData.get("menuName"), data.getNodeConclusion(), data.getRejectOpinion() == null ? "" : data.getRejectOpinion(), data.getNodeId()); + + if ("update".equals(data.getProcessFlag())) { + List mainData = getSubmitMainData(data.getSite(), baseData, rohs); + paramData.setMainData(mainData); + SubmitRequestParam submitRequestParam = new SubmitRequestParam(); + submitRequestParam.setUserId(data.getUpdateBy()); + submitRequestParam.setRequestId(paramData.getRequestId()); + submitRequestParam.setMainData(paramData.getMainData()); + String submitRequestURL = apiUrlOa + "/oa/interface/submitRequest"; + ResponseData submitRequestResponses = HttpClientUtil.doPostByRawWithOA(submitRequestURL, submitRequestParam); + if (!"0".equals(submitRequestResponses.getCode())) { + throw new RuntimeException("OA提交流程异常信息:" + submitRequestResponses.getMsg()); + } + // 节点更新时后续OA流转操作人使用上一节点审批人 + paramData.setUserId(data.getUpdateBy()); + } + + try { + changeManagementService.agreeFunction(paramData, Constant.ROHS); + } catch (Exception e) { + DoForceDrawBackParam doForceDrawBackParam = new DoForceDrawBackParam(); + doForceDrawBackParam.setUserId(paramData.getUserId()); + doForceDrawBackParam.setRequestId(paramData.getRequestId()); + String doForceDrawBackURL = apiUrlOa + "/oa/interface/doForceDrawBack"; + ResponseData doForceDrawBackResponses = HttpClientUtil.doPostByRawWithOA(doForceDrawBackURL, doForceDrawBackParam); + if (!"0".equals(doForceDrawBackResponses.getCode())) { + throw new RuntimeException("OA撤回流程异常信息:" + doForceDrawBackResponses.getMsg()); + } + throw new RuntimeException(e.getMessage()); + } + } + private List getSubmitMainData(String site, Map baseData, RohsEntity rohs) { List mainData = new ArrayList<>(); List nodeDetails = changeManagementMapper.queryNodeDetails(site, baseData.get("workflowId"), baseData.get("nodeId"), baseData.get("classificationNo"));