fix:物料检化验接口调整

This commit is contained in:
shusir
2026-03-30 18:12:50 +08:00
parent 5559145b7f
commit d12f6be2b2
11 changed files with 90 additions and 17 deletions

View File

@@ -13,6 +13,7 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg
import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.module.qms.resource.material.controller.vo.*; import com.zt.plat.module.qms.resource.material.controller.vo.*;
import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialLifecycleDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialLifecycleDO;
import com.zt.plat.module.qms.resource.material.listener.MaterialAssayResultListener;
import com.zt.plat.module.qms.resource.material.service.MaterialLifecycleService; import com.zt.plat.module.qms.resource.material.service.MaterialLifecycleService;
import com.zt.plat.module.qms.resource.material.valid.AddGroup; import com.zt.plat.module.qms.resource.material.valid.AddGroup;
import com.zt.plat.module.qms.resource.material.valid.UpdateGroup; import com.zt.plat.module.qms.resource.material.valid.UpdateGroup;
@@ -22,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -49,6 +51,8 @@ public class MaterialLifecycleController extends AbstractFileUploadController im
@Resource @Resource
private MaterialLifecycleService materialLifecycleService; private MaterialLifecycleService materialLifecycleService;
@Autowired
private MaterialAssayResultListener materialAssayResultListener;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "新建物料流程") @Operation(summary = "新建物料流程")
@@ -122,6 +126,11 @@ public class MaterialLifecycleController extends AbstractFileUploadController im
return success(materialLifecycleService.inventoryCheckInfomation(inventoryReqVO)); return success(materialLifecycleService.inventoryCheckInfomation(inventoryReqVO));
} }
@GetMapping("/test")
public void test() {
materialAssayResultListener.bpmTest();
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出物料通用流程,物料验收、退换货 Excel") @Operation(summary = "导出物料通用流程,物料验收、退换货 Excel")
@PreAuthorize("@ss.hasPermission('qms:material-lifecycle:export')") @PreAuthorize("@ss.hasPermission('qms:material-lifecycle:export')")

View File

@@ -1,11 +1,17 @@
package com.zt.plat.module.qms.resource.material.controller.vo; package com.zt.plat.module.qms.resource.material.controller.vo;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
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 io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
@Schema(description = "管理后台 - 物料检化验关联信息 Response VO") @Schema(description = "管理后台 - 物料检化验关联信息 Response VO")
@Data @Data
@@ -36,6 +42,9 @@ public class MaterialCorrelationAssayRespVO {
@ExcelProperty("样品大类id,检化验业务样品大类") @ExcelProperty("样品大类id,检化验业务样品大类")
private Long sampleId; private Long sampleId;
@Schema(description = "样品标签模板")
private String sampleLabelTemplate;
@Schema(description = "批次id", example = "3150") @Schema(description = "批次id", example = "3150")
@ExcelProperty("批次id") @ExcelProperty("批次id")
private Long batchId; private Long batchId;
@@ -48,6 +57,10 @@ public class MaterialCorrelationAssayRespVO {
@ExcelProperty("检测项") @ExcelProperty("检测项")
private String item; private String item;
@Schema(description = "检测项列表")
@ExcelProperty("检测项列表")
private List<Long> items;
@Schema(description = "状态,未开始、进行中、已完成", example = "2") @Schema(description = "状态,未开始、进行中、已完成", example = "2")
@ExcelProperty("状态,未开始、进行中、已完成") @ExcelProperty("状态,未开始、进行中、已完成")
private String assayStatus; private String assayStatus;
@@ -76,4 +89,13 @@ public class MaterialCorrelationAssayRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
// 设置检测项列表
public List<Long> getItems() {
if (StrUtil.isBlank(this.item)) {
return List.of();
}
JSONArray array = JSONUtil.parseArray(this.item);
return array.toList(Long.class);
}
} }

View File

@@ -1,8 +1,11 @@
package com.zt.plat.module.qms.resource.material.controller.vo; package com.zt.plat.module.qms.resource.material.controller.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 物料检化验关联信息新增/修改 Request VO") @Schema(description = "管理后台 - 物料检化验关联信息新增/修改 Request VO")
@Data @Data
public class MaterialCorrelationAssaySaveReqVO { public class MaterialCorrelationAssaySaveReqVO {
@@ -34,6 +37,9 @@ public class MaterialCorrelationAssaySaveReqVO {
@Schema(description = "检测项") @Schema(description = "检测项")
private String item; private String item;
@Schema(description = "检测项列表")
private List<Long> items;
@Schema(description = "状态,未开始、进行中、已完成", example = "2") @Schema(description = "状态,未开始、进行中、已完成", example = "2")
private String assayStatus; private String assayStatus;

View File

@@ -98,14 +98,17 @@ public class MaterialLifecycleDetailRespVO {
@ExcelProperty("是否检化验,1-是0-否") @ExcelProperty("是否检化验,1-是0-否")
private Integer assayFlag; private Integer assayFlag;
@Schema(description = "检化验信息")
private MaterialCorrelationAssayRespVO assayInfo;
@Schema(description = "检化验id") @Schema(description = "检化验id")
private Long assayId; private Long assayId;
@Schema(description = "检化验样品大类") /*@Schema(description = "检化验样品大类")
private Long assaySampleId; private Long assaySampleId;
@Schema(description = "检化验检测项") @Schema(description = "检化验检测项")
private List<Long> assayItemIds; private List<Long> assayItemIds;*/
@Schema(description = "物料实例id", example = "968") @Schema(description = "物料实例id", example = "968")
@ExcelProperty("物料实例id") @ExcelProperty("物料实例id")

View File

@@ -29,11 +29,14 @@ public class MaterialLifecycleDetailSaveReqVO {
@Schema(description = "是否检化验,1-是0-否") @Schema(description = "是否检化验,1-是0-否")
private Integer assayFlag; private Integer assayFlag;
@Schema(description = "检化验样品大类") @Schema(description = "检化验信息")
private MaterialCorrelationAssaySaveReqVO assayInfo;
/*@Schema(description = "检化验样品大类")
private Long assaySampleId; private Long assaySampleId;
@Schema(description = "检化验检测项") @Schema(description = "检化验检测项")
private List<Long> assayItemIds; private List<Long> assayItemIds;*/
@Schema(description = "物料实例id", example = "968") @Schema(description = "物料实例id", example = "968")
private Long infomationId; private Long infomationId;

View File

@@ -77,7 +77,7 @@ public class MaterialLifecycleSaveReqVO {
@Schema(description = "盘点项") @Schema(description = "盘点项")
private List<MaterialInventoryCheckItemSaveReqVO> checkItems; private List<MaterialInventoryCheckItemSaveReqVO> checkItems;
@Schema(description = "工段列表") @Schema(description = "明细列表")
private List<MaterialLifecycleDetailSaveReqVO> detailList; private List<MaterialLifecycleDetailSaveReqVO> detailList;
} }

View File

@@ -3,10 +3,15 @@ package com.zt.plat.module.qms.resource.material.dal.mapper;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigBaseSampleDO;
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayPageReqVO; 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.dal.dataobject.MaterialCorrelationAssayDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialCorrelationAssayDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* 物料检化验关联信息 Mapper * 物料检化验关联信息 Mapper
* *
@@ -35,4 +40,12 @@ public interface MaterialCorrelationAssayMapper extends BaseMapperX<MaterialCorr
.orderByDesc(MaterialCorrelationAssayDO::getId)); .orderByDesc(MaterialCorrelationAssayDO::getId));
} }
default List<MaterialCorrelationAssayRespVO> selectRespListByIds(List<Long> ids) {
MPJLambdaWrapperX<MaterialCorrelationAssayDO> wrapper = new MPJLambdaWrapperX<MaterialCorrelationAssayDO>()
.selectAll(MaterialCorrelationAssayDO.class)
.selectAs(ConfigBaseSampleDO::getPrintTemplate, MaterialCorrelationAssayRespVO::getSampleLabelTemplate)
.leftJoin(ConfigBaseSampleDO.class, ConfigBaseSampleDO::getBaseSampleId, MaterialCorrelationAssayDO::getSampleId)
.inIfPresent(MaterialCorrelationAssayDO::getId, ids);
return selectJoinList(MaterialCorrelationAssayRespVO.class, wrapper);
}
} }

View File

@@ -89,4 +89,12 @@ public interface MaterialCorrelationAssayService {
* @param needUpdateAssays 检化验关联信息列表 * @param needUpdateAssays 检化验关联信息列表
*/ */
void updateBatch(List<MaterialCorrelationAssayDO> needUpdateAssays); void updateBatch(List<MaterialCorrelationAssayDO> needUpdateAssays);
/**
* 根据id查询
*
* @param ids id列表
* @return 检化验关联信息列表
*/
List<MaterialCorrelationAssayRespVO> getRespListByIds(List<Long> ids);
} }

View File

@@ -108,4 +108,10 @@ public class MaterialCorrelationAssayServiceImpl implements MaterialCorrelationA
materialCorrelationAssayMapper.updateBatch(needUpdateAssays); materialCorrelationAssayMapper.updateBatch(needUpdateAssays);
} }
@Override
public List<MaterialCorrelationAssayRespVO> getRespListByIds(List<Long> ids) {
if (CollUtil.isEmpty(ids)) return List.of();
return materialCorrelationAssayMapper.selectRespListByIds(ids);
}
} }

View File

@@ -7,6 +7,7 @@ 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.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;
import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailSaveReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailSaveReqVO;
@@ -143,14 +144,12 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta
List<MaterialLifecycleDetailRespVO> assayDetails = details.stream().filter(detail -> detail.getAssayId() != null).toList(); List<MaterialLifecycleDetailRespVO> assayDetails = details.stream().filter(detail -> detail.getAssayId() != null).toList();
if (CollUtil.isEmpty(assayDetails)) return details; if (CollUtil.isEmpty(assayDetails)) return details;
List<Long> asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList(); List<Long> asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList();
List<MaterialCorrelationAssayDO> assayDOS = materialCorrelationAssayService.getListByIds(asyIds); List<MaterialCorrelationAssayRespVO> assayRespVOS = materialCorrelationAssayService.getRespListByIds(asyIds);
if (CollUtil.isEmpty(assayDOS)) return details; if (CollUtil.isEmpty(assayRespVOS)) return details;
Map<Long, MaterialCorrelationAssayDO> assayDOMapById = assayDOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayDO::getId, Function.identity())); Map<Long, MaterialCorrelationAssayRespVO> assayRespVOMapById = assayRespVOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayRespVO::getId, Function.identity()));
details.forEach(detail -> { details.forEach(detail -> {
MaterialCorrelationAssayDO assayDO = assayDOMapById.get(detail.getAssayId()); MaterialCorrelationAssayRespVO assayRespVO = assayRespVOMapById.get(detail.getAssayId());
JSONArray array = JSONUtil.parseArray(assayDO.getItem()); detail.setAssayInfo(assayRespVO);
detail.setAssaySampleId(assayDO.getSampleId())
.setAssayItemIds(CollUtil.isEmpty(array) ? List.of() : array.toList(Long.class));
}); });
return details; return details;
} }

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