fix:物料验收检化验获取当前节点和下一个节点信息。

This commit is contained in:
shusir
2026-04-01 17:58:40 +08:00
parent 630ce302de
commit d9abb2cb93
11 changed files with 74 additions and 4 deletions

View File

@@ -66,4 +66,11 @@ public interface MaterialAssayStandardDetailService {
*/ */
PageResult<MaterialAssayStandardDetailDO> getMaterialAssayStandardDetailPage(MaterialAssayStandardDetailPageReqVO pageReqVO); PageResult<MaterialAssayStandardDetailDO> getMaterialAssayStandardDetailPage(MaterialAssayStandardDetailPageReqVO pageReqVO);
/**
* 获得物料检测标准检测项目
*
* @param ids 编号数组
* @return 列表
*/
List<MaterialAssayStandardDetailRespVO> getListWithExtendByIds(List<Long> ids);
} }

View File

@@ -110,4 +110,9 @@ public class MaterialAssayStandardDetailServiceImpl implements MaterialAssayStan
return materialAssayStandardDetailMapper.selectPage(pageReqVO); return materialAssayStandardDetailMapper.selectPage(pageReqVO);
} }
@Override
public List<MaterialAssayStandardDetailRespVO> getListWithExtendByIds(List<Long> ids) {
return materialAssayStandardDetailMapper.selectExtendByIds(ids);
}
} }

View File

@@ -6,6 +6,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.qms.core.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -42,6 +43,9 @@ public class MaterialCorrelationAssayRespVO {
@ExcelProperty("样品大类id,检化验业务样品大类") @ExcelProperty("样品大类id,检化验业务样品大类")
private Long sampleId; private Long sampleId;
@Schema(description = "样品编号")
private String sampleCode;
@Schema(description = "样品标签模板") @Schema(description = "样品标签模板")
private String sampleLabelTemplate; private String sampleLabelTemplate;
@@ -61,8 +65,13 @@ public class MaterialCorrelationAssayRespVO {
@ExcelProperty("检测项列表") @ExcelProperty("检测项列表")
private List<Long> items; private List<Long> items;
@Schema(description = "检测项显示名称")
@ExcelProperty("检测项显示名称")
private String itemsShowName;
@Schema(description = "状态,未开始、进行中、已完成", example = "2") @Schema(description = "状态,未开始、进行中、已完成", example = "2")
@ExcelProperty("状态,未开始、进行中、已完成") @ExcelProperty("状态,未开始、进行中、已完成")
@Dict(dicCode = "material_assay_status")
private String assayStatus; private String assayStatus;
@Schema(description = "结果,检化验结果") @Schema(description = "结果,检化验结果")

View File

@@ -95,6 +95,9 @@ public class MaterialLifecycleRespVO {
@Schema(description = "自定义json配置") @Schema(description = "自定义json配置")
private String customConfig; private String customConfig;
@Schema(description = "是否可进行检验结果判定,1-是0-否")
private Integer assayResultAssessment;
@Schema(description = "所属部门") @Schema(description = "所属部门")
@ExcelProperty("所属部门") @ExcelProperty("所属部门")
private String systemDepartmentCode; private String systemDepartmentCode;

View File

@@ -30,6 +30,9 @@ public class MaterialUseRecordRespVO {
@ExcelProperty("物料实例名称") @ExcelProperty("物料实例名称")
private String infomationName; private String infomationName;
@Schema(description = "规格")
private String specification;
@Schema(description = "型号") @Schema(description = "型号")
@ExcelProperty("型号") @ExcelProperty("型号")
private String modelNo; private String modelNo;

View File

@@ -111,6 +111,11 @@ public class MaterialLifecycleDO extends BusinessBaseDO {
*/ */
@TableField("CST_CFG") @TableField("CST_CFG")
private String customConfig; private String customConfig;
/**
* 是否可进行检验结果判定,1-是0-否
*/
@TableField("ASY_RSLT_ASMT")
private Integer assayResultAssessment;
/** /**
* 事由/说明 * 事由/说明
*/ */

View File

@@ -69,6 +69,7 @@ public interface MaterialUseRecordMapper extends BaseMapperX<MaterialUseRecordDO
.selectAll(MaterialUseRecordDO.class) .selectAll(MaterialUseRecordDO.class)
.selectAs(MaterialInfomationDO::getCode, MaterialUseRecordRespVO::getInfomationCode) .selectAs(MaterialInfomationDO::getCode, MaterialUseRecordRespVO::getInfomationCode)
.selectAs(MaterialProductDO::getName, MaterialUseRecordRespVO::getInfomationName) .selectAs(MaterialProductDO::getName, MaterialUseRecordRespVO::getInfomationName)
.selectAs(MaterialProductDO::getSpecification, MaterialUseRecordRespVO::getSpecification)
.selectAs(MaterialProductDO::getModelNo, MaterialUseRecordRespVO::getModelNo) .selectAs(MaterialProductDO::getModelNo, MaterialUseRecordRespVO::getModelNo)
.leftJoin(MaterialInfomationDO.class, MaterialInfomationDO::getId, MaterialUseRecordDO::getInfomationId) .leftJoin(MaterialInfomationDO.class, MaterialInfomationDO::getId, MaterialUseRecordDO::getInfomationId)
.leftJoin(MaterialProductDO.class, MaterialProductDO::getId, MaterialInfomationDO::getProductId) .leftJoin(MaterialProductDO.class, MaterialProductDO::getId, MaterialInfomationDO::getProductId)

View File

@@ -8,9 +8,7 @@ import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.framework.web.core.util.WebFrameworkUtils; 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.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi; 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.*;
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.enums.QmsCommonConstant;
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialCorrelationAssayDO; 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.MaterialLifecycleDO;
@@ -103,6 +101,19 @@ public class MaterialAssayResultListener implements RocketMQListener<Object> {
LoginUser loginUser = new LoginUser().setId(assigneeUserId) LoginUser loginUser = new LoginUser().setId(assigneeUserId)
.setExpiresTime(LocalDateTime.now().plusMinutes(10)); .setExpiresTime(LocalDateTime.now().plusMinutes(10));
SecurityFrameworkUtils.setLoginUser(loginUser, request); SecurityFrameworkUtils.setLoginUser(loginUser, request);
// 获取这个流程
CommonResult<BpmProcessInstanceRespDTO> processInstanceRes = bpmProcessInstanceApi.getProcessInstance(flowId);
BpmProcessInstanceRespDTO instance = processInstanceRes.getData();
log.info("流程实例:{}", instance);
// 获取下一个流程节点 2008359763063820290L 2038786007172124673L
CommonResult<List<BpmApprovalDetailRespDTO.ActivityNode>> nextApprovalNodes =
bpmProcessInstanceApi.getNextApprovalNodes(curTask.getAssignee(),
new BpmApprovalDetailReqDTO().setProcessDefinitionId(instance.getProcessDefinitionId())
.setProcessInstanceId(instance.getId())
.setTaskId(curTask.getId()));
log.info("下一个流程节点:{}", nextApprovalNodes.getData());
if (true) return;
List<BpmApprovalDetailRespDTO.ActivityNode> nextNodes = nextApprovalNodes.getData();
BpmTaskApproveReqDTO reqDTO = new BpmTaskApproveReqDTO().setId(curTask.getId()).setReason("已全部出检化验结果"); BpmTaskApproveReqDTO reqDTO = new BpmTaskApproveReqDTO().setId(curTask.getId()).setReason("已全部出检化验结果");
CommonResult<Boolean> result = bpmProcessInstanceApi.approveTask(reqDTO); CommonResult<Boolean> result = bpmProcessInstanceApi.approveTask(reqDTO);
if (!result.isSuccess()) { if (!result.isSuccess()) {

View File

@@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO;
import com.zt.plat.module.qms.business.config.service.MaterialAssayStandardDetailService;
import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO;
import com.zt.plat.module.qms.business.dic.service.DictionaryProjectService;
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayRespVO;
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailPageReqVO;
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailRespVO;
@@ -15,6 +19,7 @@ import com.zt.plat.module.qms.resource.material.dal.dataobject.*;
import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialLifecycleDetailMapper; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialLifecycleDetailMapper;
import com.zt.plat.module.qms.resource.material.enums.MaterialFlowType; import com.zt.plat.module.qms.resource.material.enums.MaterialFlowType;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -34,6 +39,7 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_LIFECYCLE
* *
* @author 后台管理 * @author 后台管理
*/ */
@Slf4j
@Service @Service
@Validated @Validated
public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDetailService { public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDetailService {
@@ -46,6 +52,8 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta
private MaterialProductService materialProductService; private MaterialProductService materialProductService;
@Autowired @Autowired
private MaterialCorrelationAssayService materialCorrelationAssayService; private MaterialCorrelationAssayService materialCorrelationAssayService;
@Autowired
private MaterialAssayStandardDetailService materialAssayStandardDetailService;
@Override @Override
public MaterialLifecycleDetailRespVO createMaterialLifecycleDetail(MaterialLifecycleDetailSaveReqVO createReqVO) { public MaterialLifecycleDetailRespVO createMaterialLifecycleDetail(MaterialLifecycleDetailSaveReqVO createReqVO) {
@@ -146,6 +154,21 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta
List<Long> asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList(); List<Long> asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList();
List<MaterialCorrelationAssayRespVO> assayRespVOS = materialCorrelationAssayService.getRespListByIds(asyIds); List<MaterialCorrelationAssayRespVO> assayRespVOS = materialCorrelationAssayService.getRespListByIds(asyIds);
if (CollUtil.isEmpty(assayRespVOS)) return details; if (CollUtil.isEmpty(assayRespVOS)) return details;
// 获取检测项显示名称
List<Long> allItemIds = assayRespVOS.stream().map(MaterialCorrelationAssayRespVO::getItems)
.flatMap(Collection::stream).toList();
if (CollUtil.isEmpty(allItemIds)) return details;
List<MaterialAssayStandardDetailRespVO> allItems = materialAssayStandardDetailService.getListWithExtendByIds(allItemIds);
assert CollUtil.isNotEmpty(allItems);
Map<Long, MaterialAssayStandardDetailRespVO> itemMapById = allItems.stream().collect(Collectors.toMap(MaterialAssayStandardDetailRespVO::getId, Function.identity()));
assayRespVOS.forEach(asy -> {
List<String> showNames = asy.getItems().stream()
.map(itemMapById::get)
.filter(Objects::nonNull)
.map(MaterialAssayStandardDetailRespVO::getDictionaryProjectShowName)
.toList();
asy.setItemsShowName(String.join(",", showNames));
});
Map<Long, MaterialCorrelationAssayRespVO> assayRespVOMapById = assayRespVOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayRespVO::getId, Function.identity())); Map<Long, MaterialCorrelationAssayRespVO> assayRespVOMapById = assayRespVOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayRespVO::getId, Function.identity()));
details.forEach(detail -> { details.forEach(detail -> {
MaterialCorrelationAssayRespVO assayRespVO = assayRespVOMapById.get(detail.getAssayId()); MaterialCorrelationAssayRespVO assayRespVO = assayRespVOMapById.get(detail.getAssayId());

View File

@@ -354,7 +354,9 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService ,
.setBatchId(detail.getBatchId()) .setBatchId(detail.getBatchId())
.setGongduanId(detail.getBatchGongduanId()) .setGongduanId(detail.getBatchGongduanId())
// 样品大类 // 样品大类
.setSampleId(assayInfo != null ? assayInfo.getSampleId() : null) .setSampleId(assayInfo != null && assayInfo.getSampleId() != null
? assayInfo.getSampleId()
: Long.parseLong(StrUtil.isNotBlank(product.getSampleIds()) ? product.getSampleIds() : "0"))
.setSampleName(product.getName()) .setSampleName(product.getName())
.setSampleCode(sequenceUtil.genCode(MaterialConstants.SEQUENCE_ASSAY_ACCEPT_SAMPLE_KEY)) .setSampleCode(sequenceUtil.genCode(MaterialConstants.SEQUENCE_ASSAY_ACCEPT_SAMPLE_KEY))
// 检测项 // 检测项

Some files were not shown because too many files have changed in this diff Show More