diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/core/util/qrcode/QrCodeJsonUtil.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/core/util/qrcode/QrCodeJsonUtil.java new file mode 100644 index 00000000..c79f2278 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/core/util/qrcode/QrCodeJsonUtil.java @@ -0,0 +1,66 @@ +package com.zt.plat.module.qms.core.util.qrcode; + +import cn.hutool.core.lang.func.Func1; +import cn.hutool.core.lang.func.LambdaUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.zt.plat.framework.common.exception.ServiceException; +import com.zt.plat.module.qms.resource.material.controller.vo.assist.QrCodeContent; + +import java.util.Map; + +public class QrCodeJsonUtil { + + @SafeVarargs + public static String getQrCode(QrCodeContent qrCode, + Func1... getters) { + JSONObject json = JSONUtil.createObj(); + for (Func1 getter : getters) { + String methodName = LambdaUtil.getMethodName(getter); + String fieldName = extractFieldName(methodName); + Object value; + try { + value = getter.call(qrCode); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (value != null) { + json.set(fieldName, value); + } + } + return json.toString(); + } + + public static String getQrCode(Map, Object> fieldValueMap){ + JSONObject json = JSONUtil.createObj(); + for (Map.Entry, Object> entry : fieldValueMap.entrySet()) { + Func1 getter = entry.getKey(); + Object value = entry.getValue(); + if (value != null) { + String methodName = LambdaUtil.getMethodName(getter); + String fieldName = extractFieldName(methodName); + json.set(fieldName, value); + } + } + return json.toString(); + } + + public static QrCodeContent parseQrCode(String json) { + QrCodeContent content; + try { + content = JSONUtil.toBean(json, QrCodeContent.class); + } catch (Exception e) { + throw new ServiceException(1_032_160_000,"二维码解析失败"); + } + return content; + } + + private static String extractFieldName(String methodName) { + if (methodName.startsWith("get")) { + String prop = methodName.substring(3); + return Character.toLowerCase(prop.charAt(0)) + prop.substring(1); + } + throw new UnsupportedOperationException("仅支持 getXxx 形式的 getter"); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialCorrelationAssayController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialCorrelationAssayController.java index 8373f22c..5744ef25 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialCorrelationAssayController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialCorrelationAssayController.java @@ -31,7 +31,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 物料检化验关联信息") @RestController -@RequestMapping("/qms/material-correlation-assay") +@RequestMapping("/qms/resource/material-correlation-assay") @Validated public class MaterialCorrelationAssayController implements BusinessControllerMarker { @@ -39,7 +39,7 @@ public class MaterialCorrelationAssayController implements BusinessControllerMar @Resource private MaterialCorrelationAssayService materialCorrelationAssayService; - @PostMapping("/create") +// @PostMapping("/create") @Operation(summary = "创建物料检化验关联信息") @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:create')") public CommonResult createMaterialCorrelationAssay(@Valid @RequestBody MaterialCorrelationAssaySaveReqVO createReqVO) { @@ -48,13 +48,13 @@ public class MaterialCorrelationAssayController implements BusinessControllerMar @PutMapping("/update") @Operation(summary = "更新物料检化验关联信息") - @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:update')") +// @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:update')") public CommonResult updateMaterialCorrelationAssay(@Valid @RequestBody MaterialCorrelationAssaySaveReqVO updateReqVO) { materialCorrelationAssayService.updateMaterialCorrelationAssay(updateReqVO); return success(true); } - @DeleteMapping("/delete") +// @DeleteMapping("/delete") @Operation(summary = "删除物料检化验关联信息") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:delete')") @@ -63,7 +63,7 @@ public class MaterialCorrelationAssayController implements BusinessControllerMar return success(true); } - @DeleteMapping("/delete-list") +// @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除物料检化验关联信息") @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:delete')") @@ -75,7 +75,7 @@ public class MaterialCorrelationAssayController implements BusinessControllerMar @GetMapping("/get") @Operation(summary = "获得物料检化验关联信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:query')") +// @PreAuthorize("@ss.hasPermission('qms:material-correlation-assay:query')") public CommonResult getMaterialCorrelationAssay(@RequestParam("id") Long id) { MaterialCorrelationAssayDO materialCorrelationAssay = materialCorrelationAssayService.getMaterialCorrelationAssay(id); return success(BeanUtils.toBean(materialCorrelationAssay, MaterialCorrelationAssayRespVO.class)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java index 45009446..f2e52e1a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java @@ -127,8 +127,9 @@ public class MaterialLifecycleController extends AbstractFileUploadController im } @GetMapping("/test") - public void test() { - materialAssayResultListener.bpmTest(); + @Parameter(name = "flowId", description = "流程id", required = true) + public void test(@RequestParam("flowId") String flowId) { + materialAssayResultListener.bpmTest(flowId); } @GetMapping("/export-excel") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationRespVO.java index 70bcfff8..07d70364 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInfomationRespVO.java @@ -1,9 +1,8 @@ package com.zt.plat.module.qms.resource.material.controller.vo; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import com.zt.plat.module.qms.core.aspect.annotation.Dict; -import com.zt.plat.module.qms.resource.material.controller.vo.assist.MaterialQrCode; +import com.zt.plat.module.qms.resource.material.controller.vo.assist.QrCodeContent; +import com.zt.plat.module.qms.core.util.qrcode.QrCodeJsonUtil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -58,7 +57,7 @@ public class MaterialInfomationRespVO { private String code; @Schema(description = "二维码内容") - private MaterialQrCode qrCode; + private QrCodeContent qrCode; @Schema(description = "来源,批次入库,标液配置、危化品配置等") @ExcelProperty("来源,批次入库,标液配置、危化品配置等") @@ -223,10 +222,10 @@ public class MaterialInfomationRespVO { // 设置二维码内容 public String getQrCode() { - MaterialQrCode qrCode = new MaterialQrCode(); + QrCodeContent qrCode = new QrCodeContent(); qrCode.setCode(this.code); - // qrCode.setName(this.name); - return JSONUtil.toJsonStr(qrCode); + qrCode.setName(this.name); + return QrCodeJsonUtil.getQrCode(qrCode, QrCodeContent::getCode); } // 用于标签 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailRespVO.java index 33254dda..e08f6a36 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryInboundDetailRespVO.java @@ -1,10 +1,9 @@ package com.zt.plat.module.qms.resource.material.controller.vo; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import com.zt.plat.module.qms.resource.material.controller.vo.assist.MaterialQrCode; +import com.zt.plat.module.qms.resource.material.controller.vo.assist.QrCodeContent; +import com.zt.plat.module.qms.core.util.qrcode.QrCodeJsonUtil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -105,14 +104,14 @@ public class MaterialInventoryInboundDetailRespVO { private LocalDateTime createTime; @Schema(description = "二维码内容") - private MaterialQrCode qrCode; + private QrCodeContent qrCode; // 设置二维码内容 public String getQrCode() { - MaterialQrCode qrCode = new MaterialQrCode(); + QrCodeContent qrCode = new QrCodeContent(); qrCode.setCode(this.infomationCode); -// qrCode.setName(this.infomationName); - return JSONUtil.toJsonStr(qrCode); + qrCode.setName(this.infomationName); + return QrCodeJsonUtil.getQrCode(qrCode, QrCodeContent::getCode); } } \ 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/assist/MaterialQrCode.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/assist/MaterialQrCode.java deleted file mode 100644 index 0dabe693..00000000 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/assist/MaterialQrCode.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zt.plat.module.qms.resource.material.controller.vo.assist; - -import lombok.Data; - -/** - * 物料二维码信息 - */ -@Data -public class MaterialQrCode { - /** - * 编号 - */ - private String code; -// /** -// * 名称 -// */ -// private String name; -// /** -// * 批次号 -// */ -// private String batchNo; -// /** -// * 规格 -// */ -// private String specification; -// /** -// * 制造商 -// */ -// private String manufacturer; -} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/assist/QrCodeContent.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/assist/QrCodeContent.java new file mode 100644 index 00000000..217c101d --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/assist/QrCodeContent.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.qms.resource.material.controller.vo.assist; + +import lombok.Data; + +/** + * 物料二维码信息 + */ +@Data +public class QrCodeContent { + /** + * 编号 + */ + private String code; + /** + * 名称 + */ + private String name; + /** + * 批次号 + */ + private String batchNo; + /** + * 规格 + */ + private String specification; + /** + * 制造商 + */ + private String manufacturer; +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java index e843fc03..abced02e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java @@ -3,7 +3,8 @@ package com.zt.plat.module.qms.resource.material.controller.vo.query; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.zt.plat.framework.common.exception.ServiceException; -import com.zt.plat.module.qms.resource.material.controller.vo.assist.MaterialQrCode; +import com.zt.plat.module.qms.core.util.qrcode.QrCodeJsonUtil; +import com.zt.plat.module.qms.resource.material.controller.vo.assist.QrCodeContent; import com.zt.plat.module.qms.resource.material.enums.MaterialInfomationOneBusinessType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -98,13 +99,9 @@ public class MaterialInfomationQueryVO { public String getCode() { // 优先从二维码字符串中解析 code if (StrUtil.isNotEmpty(this.qrCode)) { - try { - MaterialQrCode materialQrCode = JSONUtil.toBean(this.qrCode, MaterialQrCode.class); - if (materialQrCode == null) return this.code; - return StrUtil.isNotEmpty(materialQrCode.getCode()) ? materialQrCode.getCode() : this.code; - } catch (Exception e) { - throw new ServiceException(1_032_160_000,"二维码解析失败"); - } + QrCodeContent materialQrCode = QrCodeJsonUtil.parseQrCode(this.qrCode); + if (materialQrCode == null) return this.code; + return StrUtil.isNotEmpty(materialQrCode.getCode()) ? materialQrCode.getCode() : this.code; } return this.code; } 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 199cc062..559ca4a5 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 @@ -2,46 +2,121 @@ package com.zt.plat.module.qms.resource.material.listener; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.framework.web.core.util.WebFrameworkUtils; +import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskApproveReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskPageReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +import com.zt.plat.module.qms.enums.QmsCommonConstant; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialCorrelationAssayDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialLifecycleDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialLifecycleDetailDO; +import com.zt.plat.module.qms.resource.material.service.MaterialCorrelationAssayService; +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.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; 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.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @Slf4j @Component -//@RequiredArgsConstructor -//@RocketMQMessageListener( -// topic = "ASSAY_RESULT_CALLBACK_TOPIC", // 检化验结果主题 -// consumerGroup = "ASSAY_RESULT_CALLBACK_CONSUMER", -// selectorExpression = "material_assay_result_callback" // 标签 -//) -//public class MaterialAssayResultListener implements RocketMQListener { -public class MaterialAssayResultListener { +@RequiredArgsConstructor +@RocketMQMessageListener( + topic = "ASSAY_RESULT_CALLBACK_TOPIC", // 检化验结果主题 + consumerGroup = "ASSAY_RESULT_CALLBACK_CONSUMER", + selectorExpression = "material_assay_result_callback" // 标签 +) +public class MaterialAssayResultListener implements RocketMQListener { +//public class MaterialAssayResultListener { - /*@Autowired - private MaterialLifecycleService materialLifecycleService;*/ @Autowired private BpmTaskApi bpmTaskApi; - public void bpmTest() { - log.info("收到检化验结果回调:"); - CommonResult> taskListRes = bpmTaskApi.getTaskListByProcessInstanceId("2614cd91-2c1c-11f1-8770-005056c00001"); - log.info("任务数量 {} ,任务详情 {}", taskListRes.getData().size(), taskListRes.getData()); + @Autowired + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Autowired + private MaterialCorrelationAssayService materialCorrelationAssayService; + @Autowired + private MaterialLifecycleDetailService materialLifecycleDetailService; + @Autowired + private MaterialLifecycleService materialLifecycleService; - // 处理当前节点 - for (BpmTaskRespDTO currentTask : taskListRes.getData()) { - log.info("当前节点信息:"); - log.info(" - 任务名称:{}", currentTask.getName()); - log.info(" - 处理人:{}", currentTask.getAssignee()); - log.info(" - 状态:{}", currentTask.getStatus()); + @Override + public void onMessage(Object message) { + MaterialCorrelationAssayDO assay = BeanUtils.toBean(message, MaterialCorrelationAssayDO.class); + if (assay == null || assay.getEntrustId() == null) return; + assay = materialCorrelationAssayService.getByEntrustId(assay.getEntrustId()); + if (assay == null) return; + assay.setAssayStatus(QmsCommonConstant.COMPLETED); + // TODO 检化验结果 + materialCorrelationAssayService.updateById(assay); + List detailsByAsyId = materialLifecycleDetailService.getDetailListByAsyId(assay.getId()); + if (CollUtil.isEmpty(detailsByAsyId)) return; + MaterialLifecycleDO lifecycle = materialLifecycleService.getMaterialLifecycle(detailsByAsyId.get(0).getLifecycleId()); + if (lifecycle == null) return; + // 检查检化验结果有没有全部出来 + List detailsByLfcId = materialLifecycleDetailService.getDetailListByLfcId(lifecycle.getId()); + List asyIds = detailsByLfcId.stream().map(MaterialLifecycleDetailDO::getAssayId) + .filter(Objects::nonNull).toList(); + List assays = materialCorrelationAssayService.getListByIds(asyIds); + if (CollUtil.isEmpty(assays)) return; + for (MaterialCorrelationAssayDO asy : assays) { + if (!QmsCommonConstant.COMPLETED.equals(asy.getAssayStatus())) return; + } + // 获取到流程id + String flowId = lifecycle.getFlowInstanceId(); + } + public void bpmTest(String flowId) { + log.info("收到检化验结果回调:"); + CommonResult> taskListRes = bpmTaskApi.getTaskListByProcessInstanceId(flowId); + List taskList = taskListRes.getData(); + if (CollUtil.isEmpty(taskList)) return; + List curTasks = taskList.stream().filter(task -> task.getStatus() != null && task.getStatus() == 1).toList(); + if (CollUtil.isEmpty(curTasks)) return; + // 当前任务 + BpmTaskRespDTO curTask = curTasks.get(0); + log.info("MaterialAssayResultListener - 当前任务:{}", curTask); + // 检查是否为检化验节点 + // 保存当前登录用户 + LoginUser originalLoginUser = SecurityFrameworkUtils.getLoginUser(); + log.info("已保存登录用户上下文: user={}", originalLoginUser); + // 临时切换为任务审批人 + HttpServletRequest request = WebFrameworkUtils.getRequest(); + try { + Long assigneeUserId = curTask.getAssignee(); + LoginUser loginUser = new LoginUser().setId(assigneeUserId) + .setExpiresTime(LocalDateTime.now().plusMinutes(10)); + SecurityFrameworkUtils.setLoginUser(loginUser, request); + BpmTaskApproveReqDTO reqDTO = new BpmTaskApproveReqDTO().setId(curTask.getId()).setReason("已全部出检化验结果"); + CommonResult result = bpmProcessInstanceApi.approveTask(reqDTO); + if (!result.isSuccess()) { + log.error("检化验完成执行失败:{}", result.getMsg()); + } else { + log.info("检化验完成执行成功!"); + } + } finally { + if (originalLoginUser != null) { + SecurityFrameworkUtils.setLoginUser(originalLoginUser, request); + } else { + SecurityContextHolder.clearContext(); + } + log.info("已恢复登录用户上下文: user={}", SecurityFrameworkUtils.getLoginUser()); } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java index f2e5d818..efe018f0 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java @@ -97,4 +97,19 @@ public interface MaterialCorrelationAssayService { * @return 检化验关联信息列表 */ List getRespListByIds(List ids); + + /** + * 根据委托id查询 + * + * @param entrustId 委托id + * @return 检化验关联信息 + */ + MaterialCorrelationAssayDO getByEntrustId(Long entrustId); + + /** + * 根据id更新 + * + * @param assay 检化验关联信息 + */ + void updateById(MaterialCorrelationAssayDO assay); } \ 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/MaterialCorrelationAssayServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java index 44ade5a7..bbfdf1b3 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 @@ -114,4 +114,15 @@ public class MaterialCorrelationAssayServiceImpl implements MaterialCorrelationA return materialCorrelationAssayMapper.selectRespListByIds(ids); } + @Override + public MaterialCorrelationAssayDO getByEntrustId(Long entrustId) { + + return materialCorrelationAssayMapper.selectOne(MaterialCorrelationAssayDO::getEntrustId, entrustId); + } + + @Override + public void updateById(MaterialCorrelationAssayDO assay) { + materialCorrelationAssayMapper.updateById(assay); + } + } \ 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/MaterialLifecycleDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailService.java index 1cecde25..a7c3ed18 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailService.java @@ -160,4 +160,12 @@ public interface MaterialLifecycleDetailService { * @param assayDetails 批量实体 */ void updateBatch(List assayDetails); + + /** + * 根据检化验ids 获取流程明细数据 + * + * @param id ids + * @return 明细列表 + */ + List getDetailListByAsyId(Long id); } \ 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/MaterialLifecycleDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java index 71e8a1d5..fe35b77c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java @@ -278,4 +278,11 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta materialLifecycleDetailMapper.updateBatch(assayDetails); } + @Override + public List getDetailListByAsyId(Long id) { + + return materialLifecycleDetailMapper.selectList(Wrappers.lambdaQuery(MaterialLifecycleDetailDO.class) + .eq(MaterialLifecycleDetailDO::getAssayId, id)); + } + } \ 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/MaterialLifecycleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java index 07dfebc5..9be52ef4 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 @@ -953,7 +953,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , variables.put("applyDepartmentId", loginUser.getVisitDeptId()); variables.put("applyTime", sdf.format(new Date())); variables.put(BPM_CALLBACK_BEAN_NAME, "materialLifecycleService"); - variables.put("assayAssignee", null); + variables.put("assayAssignee", "2038786007172124673"); List detailList = materialLifecycleDetailService.getDetailListByLfcId(lifecycleDO.getId()); for (MaterialLifecycleDetailDO detailDO : detailList) { if (detailDO.getAssayFlag() == 1) {