diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java index d134e536..81f119ea 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.mq.producer; import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import com.zt.plat.module.qms.mq.SampleEntrustRegistrationAssayCompleteMessage; @@ -21,6 +22,7 @@ public class SampleEntrustRegistrationAssayCompleteProducer { * 发送到消息队列 * @param message */ + @Async public void sendMessage(SampleEntrustRegistrationAssayCompleteMessage message) { // rocketMQTemplate.syncSend(SampleEntrustRegistrationAssayCompleteMessage.TOPIC, message); rocketMQTemplate.syncSendDelayTimeSeconds(SampleEntrustRegistrationAssayCompleteMessage.TOPIC, message, 15); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java index 01218492..deaf1e67 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java @@ -102,7 +102,7 @@ public class SupplierPropertiesController extends AbstractFileUploadController i SupplierPropertiesDO supplierProperties = supplierPropertiesService.getSupplierProperties(id); CommonResult> result = businessFileService.getBusinessFileList(id); SupplierPropertiesRespVO respVO = BeanUtils.toBean(supplierProperties, SupplierPropertiesRespVO.class); - respVO.setBusinessFileRet(result.getData()); + respVO.setBusinessFileRet(result); return success(respVO); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java index fe599c1d..458d3eec 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.office.supplier.controller.vo; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; @@ -66,6 +67,6 @@ public class SupplierPropertiesRespVO { private LocalDateTime createTime; @Schema(description = "附件对象") - private List businessFileRet; + private CommonResult> businessFileRet; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java index 8466eae2..5f0bc380 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java @@ -8,6 +8,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import com.zt.plat.module.qms.resource.material.controller.vo.assist.MaterialAssayResult; +import com.zt.plat.module.qms.resource.material.enums.MaterialAssayStatus; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -79,7 +80,7 @@ public class MaterialCorrelationAssayRespVO { @Schema(description = "结果,检化验结果") @ExcelProperty("结果,检化验结果") - private MaterialAssayResult result; + private String result; @Schema(description = "是否合格,字典") @ExcelProperty("是否合格,字典") @@ -110,4 +111,24 @@ public class MaterialCorrelationAssayRespVO { return array.toList(Long.class); } + public String getAssayStatus_dictText() { + if (StrUtil.isBlank(this.assayStatus)) { + return MaterialAssayStatus.not_start.getName(); + } + try { + return MaterialAssayStatus.valueOf(this.assayStatus).getName(); + } catch (IllegalArgumentException e) { + return "未知状态"; + } + } + + public MaterialAssayResult getResultObj() { + try { + return JSONUtil.toBean(this.result, MaterialAssayResult.class); + } catch (Exception e) { + log.error("result解析失败:{}", e.getMessage()); + return null; + } + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java index 37e8909b..aa5d0bef 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.resource.material.controller.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; @@ -115,6 +116,6 @@ public class MaterialLifecycleRespVO { private List detailList; @Schema(description = "附件对象") - private List businessFileRet; + private CommonResult> businessFileRet; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchDO.java index c16fba52..f513332b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialBatchDO.java @@ -129,6 +129,11 @@ public class MaterialBatchDO extends BusinessBaseDO { @TableField("ACPT_STS") private String acceptanceStatus; /** + * 是否可入库,1-可入库,0-不可入库,要和验收状态联合判断 + */ + @TableField("INB_FLG") + private Integer inboundFlag; + /** * 是否检化验,1-是,0-否 */ @TableField("ASY_FLG") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialCorrelationAssayDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialCorrelationAssayDO.java index 96d0344c..7ed876cf 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialCorrelationAssayDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialCorrelationAssayDO.java @@ -88,8 +88,8 @@ public class MaterialCorrelationAssayDO extends BusinessBaseDO { /** * 结果,检化验结果 */ - @TableField(value = "RSLT", typeHandler = JacksonTypeHandler.class) - private MaterialAssayResult result; + @TableField("RSLT") + private String result; /** * 是否合格,字典 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchMapper.java index e7bbe411..9e483bdf 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialBatchMapper.java @@ -49,7 +49,8 @@ public interface MaterialBatchMapper extends BaseMapperX { .orderByDesc(MaterialBatchDO::getId)); } - @QmsPermission(deptIdColumn = "ASN_DEPT_ID", moduleDataRoleCodes = "ytjy_material_admin") +// @QmsPermission(deptIdColumn = "ASN_DEPT_ID", moduleDataRoleCodes = "ytjy_material_admin") + @QmsPermission(deptIdColumn = "ASN_DEPT_ID", moduleDataRoleCodes = "ytjyAdmin,ytjy_material_admin") default PageResult selectPageWithPdtInfo(MaterialBatchPageReqVO reqVO, List pdtIds) { MPJLambdaWrapper wrapper = new MPJLambdaWrapperX() diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayResultAssessmentType.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayResultAssessmentType.java new file mode 100644 index 00000000..ca6973de --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayResultAssessmentType.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.qms.resource.material.enums; + +import lombok.Getter; + +@Getter +public enum MaterialAssayResultAssessmentType { + + inbound("入库"), + + not_inbound("不入库"), + ; + + private final String name; + + MaterialAssayResultAssessmentType(String name) { + this.name = name; + } + + public static MaterialAssayResultAssessmentType fromName(String name) { + for (MaterialAssayResultAssessmentType type : MaterialAssayResultAssessmentType.values()) { + if (type.getName().equals(name)) { + return type; + } + } + throw new IllegalArgumentException("No enum constant with name: " + name); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayStatus.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayStatus.java new file mode 100644 index 00000000..029a4395 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialAssayStatus.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.qms.resource.material.enums; + +import lombok.Getter; + +@Getter +public enum MaterialAssayStatus { + + not_start("未开始"), + + in_progress("进行中"), + + completed("已完成"), + ; + + private final String name; + + MaterialAssayStatus(String name) { + this.name = name; + } + + public static MaterialAssayStatus fromName(String name) { + for (MaterialAssayStatus type : MaterialAssayStatus.values()) { + if (type.getName().equals(name)) { + return type; + } + } + throw new IllegalArgumentException("No enum constant with name: " + name); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/listener/MaterialAssayResultListener.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/listener/MaterialAssayResultListener.java index 3ef2e9e8..ab3187ad 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/listener/MaterialAssayResultListener.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/listener/MaterialAssayResultListener.java @@ -27,6 +27,8 @@ import com.zt.plat.module.qms.resource.material.service.MaterialCorrelationAssay import com.zt.plat.module.qms.resource.material.service.MaterialLifecycleDetailService; import com.zt.plat.module.qms.resource.material.service.MaterialLifecycleService; import com.zt.plat.module.qms.resource.material.utils.BpmnXmlUtil; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; @@ -34,6 +36,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @@ -55,6 +59,8 @@ public class MaterialAssayResultListener implements RocketMQListener assayResultPage = sampleResultQueryService.sampleProjectResultQuery( new SampleProjectResultPageReqVO().setBusinessSampleEntrustRegistrationId(entrustId)); List asyResults = assayResultPage.getList(); + log.info("检验结果:{}", asyResults); if (CollUtil.isEmpty(asyResults)) return; // 结果 SampleProjectResultRespVO oriAsyResult = asyResults.get(0); @@ -84,8 +92,9 @@ public class MaterialAssayResultListener implements RocketMQListener asyResultDetail = sampleResultQueryService.sampleProjectResultDetailQuery(detailReqVO); + log.info("检验结果明细:{}", asyResultDetail); assayResult.setDetailList(asyResultDetail); - assay.setResult(assayResult); + assay.setResult(JSONUtil.toJsonStr(assayResult)); assay.setAssayStatus(QmsCommonConstant.COMPLETED); materialCorrelationAssayService.updateById(assay); List detailsByAsyId = materialLifecycleDetailService.getDetailListByAsyId(assay.getId()); @@ -131,7 +140,10 @@ public class MaterialAssayResultListener implements RocketMQListener userRes = adminUserApi.getUser(assigneeUserId); + AdminUserRespDTO user = userRes.getData(); + if (user == null) return; LoginUser loginUser = new LoginUser().setId(assigneeUserId) - .setInfo(new HashMap<>()) + .setInfo(Map.of( + LoginUser.INFO_KEY_NICKNAME, user.getNickname(), + LoginUser.INFO_KEY_TENANT_ID, String.valueOf(user.getTenantId()))) .setExpiresTime(LocalDateTime.now().plusMinutes(10)); - SecurityFrameworkUtils.setLoginUser(loginUser, request); + //设置到Spring Security上下文 + Authentication authentication = new UsernamePasswordAuthenticationToken(loginUser, null, Collections.emptyList()); + SecurityContextHolder.getContext().setAuthentication(authentication); + SecurityFrameworkUtils.setLoginUser(loginUser, WebFrameworkUtils.getRequest()); log.debug("当前用户临时切换为任务审批人: user={}", loginUser); BpmTaskApproveReqDTO reqDTO = new BpmTaskApproveReqDTO().setId(curTask.getId()) .setReason("检化验已全部完成,节点自动提交") @@ -158,9 +178,9 @@ public class MaterialAssayResultListener implements RocketMQListener dos); + + /** + * 批量更新 + * + * @param gongs 批次信息 + */ + void updateBatch(List gongs); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java index a718f4ee..d944215e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java @@ -579,6 +579,11 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { materialBatchMapper.insertBatch(dos); } + @Override + public void updateBatch(List gongs) { + materialBatchMapper.updateBatch(gongs); + } + private void lockBatchOrGongReturnExchangeCount(LockType lockType, List batchOrGongDOS, Map lifecycleDetailDOMapByBatOrGongId) { for (MaterialBatchDO batOrGong : batchOrGongDOS) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java index bbfdf1b3..a259a912 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java @@ -1,15 +1,21 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssaySaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialCorrelationAssayDO; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialCorrelationAssayMapper; +import com.zt.plat.module.qms.resource.material.enums.MaterialAssayResultAssessmentType; import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.List; @@ -38,12 +44,16 @@ public class MaterialCorrelationAssayServiceImpl implements MaterialCorrelationA return BeanUtils.toBean(materialCorrelationAssay, MaterialCorrelationAssayRespVO.class); } + @Transactional @Override public void updateMaterialCorrelationAssay(MaterialCorrelationAssaySaveReqVO updateReqVO) { // 校验存在 - validateMaterialCorrelationAssayExists(updateReqVO.getId()); + MaterialCorrelationAssayDO assayDO = materialCorrelationAssayMapper.selectById(updateReqVO.getId()); + if (assayDO == null) throw exception(MATERIAL_CORRELATION_ASSAY_NOT_EXISTS); // 更新 MaterialCorrelationAssayDO updateObj = BeanUtils.toBean(updateReqVO, MaterialCorrelationAssayDO.class); + String qualified = updateObj.getQualified(); + if (StrUtil.isBlank(qualified)) throw new ServiceException(1_032_160_000, "判定结果不能为空"); materialCorrelationAssayMapper.updateById(updateObj); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java index e6dd2f5c..eef7668c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java @@ -292,6 +292,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , if (lifecycleDO == null) throw exception(MATERIAL_LIFECYCLE_NOT_EXISTS); if (lifecycleDO.getSubmitStatus() == 1) throw new ServiceException(1_032_160_000, "流程已提交,不可修改"); // 更新 + businessFileService.deleteBusinessFileList(updateReqVO.getDeleteFileIdList()); MaterialLifecycleDO mtrlLfc = BeanUtils.toBean(updateReqVO, MaterialLifecycleDO.class); MaterialFlowType flowType = MaterialFlowType.fromName(mtrlLfc.getBusinessType()); if (flowType == MaterialFlowType.inventory_check) { @@ -333,7 +334,6 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , if (flowType == MaterialFlowType.acceptance) { this.saveAssays(detailDOS, detailList); } - businessFileService.deleteBusinessFileList(updateReqVO.getDeleteFileIdList()); materialLifecycleMapper.updateById(mtrlLfc); return mtrlLfc; } @@ -645,7 +645,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , List detailRespVOS = materialLifecycleDetailService.getDetailListWithPdtInfoByLfcId(lifecycleDO); respVO.setDetailList(detailRespVOS); CommonResult> result = businessFileService.getBusinessFileList(id); - respVO.setBusinessFileRet(result.getData()); + respVO.setBusinessFileRet(result); MaterialFlowType flowType = MaterialFlowType.fromName(lifecycleDO.getBusinessType()); if (flowType == MaterialFlowType.inventory_check) { cn.hutool.json.JSONObject customConfig = JSONUtil.parseObj(lifecycleDO.getCustomConfig()); @@ -1003,7 +1003,6 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , log.info("物料流程回调信息:{}", reqDTO.toString()); JSONObject variables = reqDTO.getVariables(); - log.info("流程变量:{}", variables.toString()); String processInsId = reqDTO.getProcessInstanceId(); String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); String returnFlag = variables.getString(QmsBpmConstant.BPM_REJECT_TO_FIRST_FLAG); @@ -1016,7 +1015,6 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , try{ dataKeyCheckService.create(checkKey, this.getClass().getName()); } catch (Exception e){ - log.error("checkKey 创建失败:key={}", checkKey, e); log.error("checkKey 重复:key={}", checkKey); return CommonResult.success(new JSONObject()); } @@ -1024,7 +1022,6 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , String PROCESS_STATUS = variables.getString(QmsBpmConstant.PROCESS_INSTANCE_VARIABLE_STATUS); Integer assayFlag = variables.getInteger(MaterialConstants.ASSAY_FLAG); Integer assayResultAllOutput = variables.getInteger(MaterialConstants.ASSAY_RESULT_ALL_OUTPUT); - log.info("assayResultAllOutput:{}", assayResultAllOutput); String businessKey = reqDTO.getBusinessKey(); JSONArray fieldExtensions = new JSONArray(); if(variables.containsKey(QmsBpmConstant.BPM_FIELD_EXTENSIONS)){ @@ -1066,7 +1063,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , CommonResult> nextApprovalNodes = bpmProcessInstanceApi.getNextApprovalNodes(curTask.getAssignee(), approvalDetailReqDTO); List nextNodes = nextApprovalNodes.getData(); - log.info("流程【{}】下一个流程节点:{}", processInsId, nextNodes); + // log.info("流程【{}】下一个流程节点:{}", processInsId, nextNodes); // 判断下一节点是否为检化验判定节点 CommonResult bpmnModelView = bpmProcessInstanceApi.getProcessInstanceBpmnModelView(processInsId); BpmProcessInstanceBpmnModelViewRespDTO modelView = bpmnModelView.getData(); @@ -1074,12 +1071,12 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , throw new ServiceException(1_032_160_000, "流程模型不存在"); // 解析 BPMN XML,提取节点扩展字段 Map> nodeFieldExtensions = BpmnXmlUtil.parseBpmnFieldExtensions(modelView.getBpmnXml()); - log.info("节点扩展字段:{}", nodeFieldExtensions); + // log.info("节点扩展字段:{}", nodeFieldExtensions); boolean isNextNodeAssayAssessment = false; if (CollUtil.isNotEmpty(nextNodes)) { for (BpmApprovalDetailRespDTO.ActivityNode node : nextNodes) { Map nextNodeFields = nodeFieldExtensions.get(node.getId()); - log.info("下一节点 {} 的扩展字段:{}", node.getId(), nextNodeFields); + // log.info("下一节点 {} 的扩展字段:{}", node.getId(), nextNodeFields); if (nextNodeFields != null && "1".equals(nextNodeFields.get(MaterialConstants.ASSAY_RESULT_ASSESSMENT_NODE_MARK))) { isNextNodeAssayAssessment = true; break; @@ -1126,8 +1123,9 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , switch (flowType) { case acceptance: // 更新批次工段验收状态 - this.updateMaterialBatchAcceptStatusByLfcId(entity.getId(), MaterialAcceptStatus.accepted.name()); - break; + this.updateMaterialBatchesAcceptStatusByLfcId(entity.getId(), MaterialAcceptStatus.accepted.name()); + // 更新批次工段是否可入库状态 + this.updateMaterialBatchesInboundFlagByLfcId(entity.getId()); case verify_calibrate: // 批次检定完成后生成批次拆分 this.createVerifyBatchAssignsByLfcId(entity.getId()); @@ -1143,6 +1141,30 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , return CommonResult.success(new JSONObject()); } + private void updateMaterialBatchesInboundFlagByLfcId(Long lfcId) { + // 获取明细批次拆分 + List details = this.getDetailListByLfcId(lfcId); + // 筛选需要检化验的批次 + List assayDetails = details.stream() + .filter(detail -> detail.getAssayId() != null).toList(); + if (CollUtil.isEmpty(assayDetails)) return; + List asyIds = assayDetails.stream().map(MaterialLifecycleDetailDO::getAssayId).toList(); + List assays = materialCorrelationAssayService.getListByIds(asyIds); + if (CollUtil.isEmpty(assays)) return; + Map assayMapByGongId = assays.stream().collect(Collectors.toMap(MaterialCorrelationAssayDO::getGongduanId, Function.identity())); + List gongIds = assays.stream().map(MaterialCorrelationAssayDO::getGongduanId) + .filter(Objects::nonNull).toList(); + List gongs = materialBatchService.getListByIds(gongIds); + if (CollUtil.isEmpty(gongs)) return; + gongs.forEach(gong -> { + MaterialCorrelationAssayDO assayDO = assayMapByGongId.get(gong.getId()); + MaterialAssayResultAssessmentType assayResultAssessment = MaterialAssayResultAssessmentType.fromName(assayDO.getQualified()); + if (MaterialAssayResultAssessmentType.not_inbound == assayResultAssessment) + gong.setInboundFlag(0); + }); + materialBatchService.updateBatch(gongs); + } + private void initAssayByLfcId(Long lfcId) { // 获取明细批次拆分 List details = this.getDetailListByLfcId(lfcId); @@ -1222,7 +1244,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , materialBatchService.saveBatch(gongs); } - private void updateMaterialBatchAcceptStatusByLfcId(Long lfcId, String status) { + private void updateMaterialBatchesAcceptStatusByLfcId(Long lfcId, String status) { List detailList = this.getDetailListByLfcId(lfcId); if (CollUtil.isEmpty(detailList)) return; List gongIds = detailList.stream().map(MaterialLifecycleDetailDO::getBatchGongduanId).toList();