diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/external/MaterialController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/external/MaterialController.java new file mode 100644 index 00000000..1bd67ff3 --- /dev/null +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/external/MaterialController.java @@ -0,0 +1,42 @@ +package com.nflg.qms.admin.controller.external; + +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.qo.ExemptMaterialCheckQO; +import com.nflg.wms.common.pojo.vo.ExemptMaterialCheckVO; +import com.nflg.wms.repository.service.IQmsExemptMaterialService; +import com.nflg.wms.starter.BaseController; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 对外接口-物料信息 + * @folder 对外接口/物料信息 + */ +@Validated +@RestController +@RequestMapping("/external/material") +public class MaterialController extends BaseController { + + @Resource + private IQmsExemptMaterialService exemptMaterialService; + + /** + * 批量判断物料是否免检 + * - 参数为供应商编号和物料编号的组合列表 + * - 根据系统中已审核、已启用且在有效期内的免检设置判断 + * - 返回每个组合的免检标志(exempt=true 表示免检) + */ + @PostMapping("batchCheckExempt") + public ApiResult> batchCheckExempt( + @Valid @RequestBody @NotEmpty List request) { + return ApiResult.success(exemptMaterialService.batchCheckExempt(request)); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ExemptMaterialCheckQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ExemptMaterialCheckQO.java new file mode 100644 index 00000000..b9ca62bb --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ExemptMaterialCheckQO.java @@ -0,0 +1,23 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * 免检物料判断 单条请求对象 + */ +@Data +public class ExemptMaterialCheckQO { + + /** + * 供应商编号 + */ + @NotBlank(message = "供应商编号不能为空") + private String supplierCode; + + /** + * 物料编号 + */ + @NotBlank(message = "物料编号不能为空") + private String materialNo; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ExemptMaterialCheckVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ExemptMaterialCheckVO.java new file mode 100644 index 00000000..28e71c37 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ExemptMaterialCheckVO.java @@ -0,0 +1,25 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +/** + * 免检物料判断 结果VO + */ +@Data +public class ExemptMaterialCheckVO { + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 是否免检:true=免检,false=非免检 + */ + private Boolean exempt; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsExemptMaterialMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsExemptMaterialMapper.java index 97d6242f..90a8ee4d 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsExemptMaterialMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsExemptMaterialMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialSearchQO; +import com.nflg.wms.common.pojo.vo.ExemptMaterialCheckVO; import com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO; import com.nflg.wms.repository.entity.QmsExemptMaterial; import org.apache.ibatis.annotations.Param; @@ -29,4 +30,11 @@ public interface QmsExemptMaterialMapper extends BaseMapper { * 按物料编号查询关联的供应商免检明细 */ List detailByMaterial(@Param("materialNo") String materialNo); + + /** + * 批量查询有效免检物料(供应商编号+物料编号组合) + * 仅返回审核通过、启用且在有效期内的记录 + */ + List batchCheckExempt(@Param("supplierCodes") List supplierCodes, + @Param("materialNos") List materialNos); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsExemptMaterialService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsExemptMaterialService.java index cb3cd358..ada35116 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsExemptMaterialService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsExemptMaterialService.java @@ -2,9 +2,11 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.qo.ExemptMaterialCheckQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialAuditQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialSaveQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialSearchQO; +import com.nflg.wms.common.pojo.vo.ExemptMaterialCheckVO; import com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO; import com.nflg.wms.repository.entity.QmsExemptMaterial; @@ -44,4 +46,10 @@ public interface IQmsExemptMaterialService extends IService { * 审核免检物料 */ void audit(QmsExemptMaterialAuditQO request); + + /** + * 批量判断物料是否免检 + * 根据供应商编号和物料编号判断,返回每个组合的免检标志 + */ + List batchCheckExempt(List items); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsExemptMaterialServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsExemptMaterialServiceImpl.java index eb2e1d2f..9451323b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsExemptMaterialServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsExemptMaterialServiceImpl.java @@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; +import com.nflg.wms.common.pojo.qo.ExemptMaterialCheckQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialAuditQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialSaveQO; import com.nflg.wms.common.pojo.qo.QmsExemptMaterialSearchQO; +import com.nflg.wms.common.pojo.vo.ExemptMaterialCheckVO; import com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO; import com.nflg.wms.common.util.StringUtil; import com.nflg.wms.common.util.UserUtil; @@ -21,7 +23,10 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * 免检物料 服务实现类 @@ -166,4 +171,36 @@ public class QmsExemptMaterialServiceImpl extends ServiceImpl batchCheckExempt(List items) { + // 提取所有供应商编号和物料编号 + List supplierCodes = items.stream() + .map(ExemptMaterialCheckQO::getSupplierCode) + .distinct() + .collect(Collectors.toList()); + List materialNos = items.stream() + .map(ExemptMaterialCheckQO::getMaterialNo) + .distinct() + .collect(Collectors.toList()); + + // 一次性查询所有有效免检组合 + List exemptList = baseMapper.batchCheckExempt(supplierCodes, materialNos); + + // 构建免检组合的快速查询集合,格式:supplierCode:materialNo + Set exemptSet = exemptList.stream() + .map(v -> v.getSupplierCode() + ":" + v.getMaterialNo()) + .collect(Collectors.toCollection(HashSet::new)); + + // 构建返回结果 + List result = new ArrayList<>(items.size()); + for (ExemptMaterialCheckQO item : items) { + ExemptMaterialCheckVO vo = new ExemptMaterialCheckVO(); + vo.setSupplierCode(item.getSupplierCode()); + vo.setMaterialNo(item.getMaterialNo()); + vo.setExempt(exemptSet.contains(item.getSupplierCode() + ":" + item.getMaterialNo())); + result.add(vo); + } + return result; + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsExemptMaterialMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsExemptMaterialMapper.xml index 67476fff..022d9336 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsExemptMaterialMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsExemptMaterialMapper.xml @@ -134,4 +134,27 @@ ORDER BY em.create_time DESC + + +