Merge remote-tracking branch 'refs/remotes/惠信/dev_zhangke' into develop

This commit is contained in:
曹鹏飞 2025-09-08 09:14:27 +08:00
commit 99aa608eff
8 changed files with 118 additions and 57 deletions

View File

@ -161,6 +161,7 @@ public class NormalPGIController extends BaseController {
.setOrderNo(order.getNoteNum()) .setOrderNo(order.getNoteNum())
.setCreateUserName(UserUtil.getUserName()) .setCreateUserName(UserUtil.getUserName())
.setFactoryCode(order.getIuCode()) .setFactoryCode(order.getIuCode())
.setIsCheck(false)
.setCreateUserId(UserUtil.getUserId()); .setCreateUserId(UserUtil.getUserId());
List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>(); List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>();
@ -615,6 +616,7 @@ public class NormalPGIController extends BaseController {
.setPoNum(item.getPoNum()) .setPoNum(item.getPoNum())
.setPoLineNumber(item.getPoLineNumber()) .setPoLineNumber(item.getPoLineNumber())
.setReceiveId(receiveId) .setReceiveId(receiveId)
.setCheckQty(BigDecimal.valueOf(0))
.setMaterialDoc("") .setMaterialDoc("")
.setMaterialDocYear(""); .setMaterialDocYear("");

View File

@ -2,6 +2,7 @@ package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes; import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes;
import com.nflg.wms.admin.pojo.dto.*; import com.nflg.wms.admin.pojo.dto.*;
import com.nflg.wms.admin.service.NormalPGIControllerService; import com.nflg.wms.admin.service.NormalPGIControllerService;
@ -118,8 +119,7 @@ public class NormalQMController extends BaseController {
.apply("check_qty>in_qty") .apply("check_qty>in_qty")
.list(); .list();
if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("不存在待入库的物料(或此物料已入库)");
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("不存在待入库的物料(或此物料已入库)");
//首先根据采购单的编号进行分类 //首先根据采购单的编号进行分类
List<String> poNums = request.stream() List<String> poNums = request.stream()
@ -140,22 +140,22 @@ public class NormalQMController extends BaseController {
.filter(q -> q.getPoNum().equals(poNum)) .filter(q -> q.getPoNum().equals(poNum))
.collect(Collectors.toList()); .collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(qcReceiveTaskConfirmQOS)) { if (CollectionUtil.isNotEmpty(qcReceiveTaskConfirmQOS)) {
for (QCReceiveTaskConfirmQO item : qcReceiveTaskConfirmQOS) { for (QCReceiveTaskConfirmQO item : qcReceiveTaskConfirmQOS) {
WmsQcReceiveItem wmsQcReceiveItem = wmsQcReceiveItems.stream() WmsQcReceiveItem wmsQcReceiveItem = wmsQcReceiveItems.stream()
.filter(wmsQcReceiveItem1 -> wmsQcReceiveItem1.getId().equals(item.getId())) .filter(wmsQcReceiveItem1 -> wmsQcReceiveItem1.getId().equals(item.getId()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (Objects.isNull(wmsQcReceiveItem)) if (Objects.isNull(wmsQcReceiveItem)) {
continue; continue;
}
ZWM3A18DTO zwm3A18DTO = new ZWM3A18DTO() qcReceiveDTO.setZwm3a18DTO(new ZWM3A18DTO()
.setEbeln(item.getPoNum()) .setEbeln(item.getPoNum())
.setUsnam(UserUtil.getUserName()) .setUsnam(UserUtil.getUserName())
.setMblnr(wmsQcReceiveItem.getMaterialDoc()) .setMblnr(wmsQcReceiveItem.getMaterialDoc())
.setMjahr(wmsQcReceiveItem.getMaterialDocYear()) .setMjahr(wmsQcReceiveItem.getMaterialDocYear())
.setItem1(new ArrayList<>()) .setItem1(new ArrayList<>())
.setItem2(new ArrayList<>()); .setItem2(new ArrayList<>()));
//获取质检物料信息 //获取质检物料信息
List<WmsSrmQualityInspection> qualityInspections = wmsSrmQualityInspectionService.lambdaQuery() List<WmsSrmQualityInspection> qualityInspections = wmsSrmQualityInspectionService.lambdaQuery()
@ -163,11 +163,12 @@ public class NormalQMController extends BaseController {
.eq(WmsSrmQualityInspection::getIsIn, false) .eq(WmsSrmQualityInspection::getIsIn, false)
.list(); .list();
if (CollectionUtil.isEmpty(qualityInspections)) if (CollectionUtil.isEmpty(qualityInspections)) {
continue; continue;
}
// 储位变化的信息 // 储位变化的信息
if (!item.getStorageLocation().equals(item.getStorageLocationNew())) { if (StrUtil.isNotBlank(item.getStorageLocationNew()) && !item.getStorageLocation().equals(item.getStorageLocationNew())) {
List<String> bins = Arrays.asList(item.getStorageLocation().split("/")); List<String> bins = Arrays.asList(item.getStorageLocation().split("/"));
qcReceiveDTO.getStorageLocationDTOS().add(new StorageLocationDTO() qcReceiveDTO.getStorageLocationDTOS().add(new StorageLocationDTO()
.setBinNos(bins) .setBinNos(bins)
@ -179,7 +180,7 @@ public class NormalQMController extends BaseController {
// 组装SAP信息 // 组装SAP信息
for (WmsSrmQualityInspection code : qualityInspections) { for (WmsSrmQualityInspection code : qualityInspections) {
//SAP 信息 //SAP 信息
set3A18DTOS(zwm3A18DTO, code, item); set3A18DTOS(qcReceiveDTO.getZwm3a18DTO(), code, item);
//修改物料状态 //修改物料状态
qcReceiveDTO.getQcIdList().add(code.getId()); qcReceiveDTO.getQcIdList().add(code.getId());
// 计算物料的质检信息 // 计算物料的质检信息
@ -197,24 +198,52 @@ public class NormalQMController extends BaseController {
// 库存信息 // 库存信息
if (code.getUnqualifiedQty().compareTo(BigDecimal.ZERO) > 0) { if (code.getUnqualifiedQty().compareTo(BigDecimal.ZERO) > 0) {
// 不合格品数量大于0时的处理逻辑 InventoryDTO inventoryDTO = qcReceiveDTO.getUnqualifiedInventories()
qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO() .stream()
.setMaterialNo(code.getItemCode()) .filter(inventoryDTO1 ->
.setFactoryNo(code.getFactory()) inventoryDTO1.getMaterialNo().equals(code.getItemCode())
.setWarehouseNo("9004") // 不合格仓固定 && inventoryDTO1.getWarehouseNo().equals("9004")
.setNum(code.getUnqualifiedQty()) && inventoryDTO1.getBatchNumber().equals(code.getMaterialBatch())
.setBatchNumber(code.getMaterialBatch()) && inventoryDTO1.getFactoryNo().equals(code.getFactory()))
); .findFirst()
.orElse(null);
if (Objects.isNull(inventoryDTO)) {
// 不合格品数量大于0时的处理逻辑
qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO()
.setMaterialNo(code.getItemCode())
.setFactoryNo(code.getFactory())
.setWarehouseNo("9004") // 不合格仓固定
.setNum(code.getUnqualifiedQty())
.setBatchNumber(code.getMaterialBatch())
);
} else {
inventoryDTO.setNum(inventoryDTO.getNum().add(code.getUnqualifiedQty()));
}
} }
if (code.getQualifiedQty().compareTo(BigDecimal.ZERO) > 0) { if (code.getQualifiedQty().compareTo(BigDecimal.ZERO) > 0) {
// 合格品数量大于0时的处理逻辑 // 合格品数量大于0时的处理逻辑
qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO() InventoryDTO inventoryDTO = qcReceiveDTO.getQualifiednventories()
.setMaterialNo(code.getItemCode()) .stream()
.setFactoryNo(code.getFactory()) .filter(inventoryDTO1 ->
.setWarehouseNo(item.getReceivedWarehouse()) // 不合格仓固定 inventoryDTO1.getMaterialNo().equals(code.getItemCode())
.setNum(code.getQualifiedQty()) && inventoryDTO1.getWarehouseNo().equals(item.getReceivedWarehouse())
.setBatchNumber(code.getMaterialBatch()) && inventoryDTO1.getBatchNumber().equals(code.getMaterialBatch())
); && inventoryDTO1.getFactoryNo().equals(code.getFactory()))
.findFirst()
.orElse(null);
if (Objects.isNull(inventoryDTO)) {
qcReceiveDTO.getQualifiednventories().add(new InventoryDTO()
.setMaterialNo(code.getItemCode())
.setFactoryNo(code.getFactory())
.setWarehouseNo(item.getReceivedWarehouse()) // 不合格仓固定
.setNum(code.getQualifiedQty())
.setBatchNumber(code.getMaterialBatch())
);
} else {
inventoryDTO.setNum(inventoryDTO.getNum().add(code.getQualifiedQty()));
}
} }
} }
} }
@ -229,24 +258,42 @@ public class NormalQMController extends BaseController {
private void set3A18DTOS(ZWM3A18DTO zwm3A18DTO, private void set3A18DTOS(ZWM3A18DTO zwm3A18DTO,
WmsSrmQualityInspection code, WmsSrmQualityInspection code,
QCReceiveTaskConfirmQO item) { QCReceiveTaskConfirmQO item) {
ZWM3A18Item1DTO item1DTO = new ZWM3A18Item1DTO() ZWM3A18Item1DTO item1DTO = zwm3A18DTO.getItem1().stream()
.setErfmg(code.getInspectionQty()) .filter(dto ->
.setErfmg1(code.getQualifiedQty()) dto.getEbelp().equals(Integer.valueOf(code.getPoLineNumber()))
.setErfmg2(code.getUnqualifiedQty()) && dto.getMatnr().equals(code.getItemCode())
.setEbelp(Integer.valueOf(code.getPoLineNumber())) && dto.getMeins().equals(code.getUnit())
.setMatnr(code.getItemCode()) && dto.getCharg().equals(code.getMaterialBatch())
.setMeins(code.getUnit()) && dto.getLgort().equals(item.getReceivedWarehouse())
.setCharg(code.getMaterialBatch()) && dto.getWerks().equals(item.getReceivedWarehouse())
.setLgort(item.getReceivedWarehouse()) )
.setSgtxt("") .findFirst()
.setWerks(code.getFactory()); .orElse(null);
zwm3A18DTO.getItem1().add(item1DTO); if (Objects.isNull(item1DTO)) {
String flag = code.getInspectionResult().equals("合格") ? "X" : ""; item1DTO = new ZWM3A18Item1DTO()
ZWM3A17Item2DTO item2DTO = new ZWM3A17Item2DTO() .setErfmg(code.getInspectionQty())
.setEBELP(code.getPoLineNumber()) .setErfmg1(code.getQualifiedQty())
.setFLAG(code.getSerialNum()) .setErfmg2(code.getUnqualifiedQty())
.setFLAG(flag); .setEbelp(Integer.valueOf(code.getPoLineNumber()))
zwm3A18DTO.getItem2().add(item2DTO); .setMatnr(code.getItemCode())
.setMeins(code.getUnit())
.setCharg(code.getMaterialBatch())
.setLgort(item.getReceivedWarehouse())
.setSgtxt("")
.setWerks(code.getFactory());
zwm3A18DTO.getItem1().add(item1DTO);
} else {
item1DTO.setErfmg1(item1DTO.getErfmg1().add(code.getQualifiedQty()));
item1DTO.setErfmg2(item1DTO.getErfmg2().add(code.getUnqualifiedQty()));
}
if (StrUtil.isNotBlank(code.getSerialNum())) {
String flag = code.getInspectionResult().equals("合格") ? "X" : "";
ZWM3A17Item2DTO item2DTO = new ZWM3A17Item2DTO()
.setEBELP(code.getPoLineNumber())
.setFLAG(code.getSerialNum())
.setFLAG(flag);
zwm3A18DTO.getItem2().add(item2DTO);
}
} }
} }

View File

@ -2,6 +2,7 @@ package com.nflg.wms.admin.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil;
import com.nflg.wms.admin.pojo.dto.QCReceiveDTO; import com.nflg.wms.admin.pojo.dto.QCReceiveDTO;
import com.nflg.wms.common.pojo.vo.QCTaskItemScanCodesVO; import com.nflg.wms.common.pojo.vo.QCTaskItemScanCodesVO;
import com.nflg.wms.common.pojo.vo.QCTaskItemVO; import com.nflg.wms.common.pojo.vo.QCTaskItemVO;
@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -50,6 +52,10 @@ public class NormalQMControllerService {
.eq(WmsSrmQualityInspection::getReceiveId, taskItemVO.getId()) .eq(WmsSrmQualityInspection::getReceiveId, taskItemVO.getId())
.eq(WmsSrmQualityInspection::getIsIn, false) .eq(WmsSrmQualityInspection::getIsIn, false)
.list(); .list();
if (CollectionUtil.isEmpty(taskItemVO.getScanCodes())) {
taskItemVO.setScanCodes(new ArrayList<>());
}
if (CollectionUtil.isNotEmpty(qualityInspections)) { if (CollectionUtil.isNotEmpty(qualityInspections)) {
qualityInspections.forEach(code -> { qualityInspections.forEach(code -> {
@ -63,9 +69,14 @@ public class NormalQMControllerService {
.setQualifiedQty(code.getQualifiedQty()) .setQualifiedQty(code.getQualifiedQty())
.setUnqualifiedQty(code.getUnqualifiedQty()) .setUnqualifiedQty(code.getUnqualifiedQty())
); );
taskItemVO.setUnqualifiedQty(taskItemVO.getUnqualifiedQty().add(code.getUnqualifiedQty())); taskItemVO.setUnqualifiedQty(
taskItemVO.setQualifiedQty(taskItemVO.getQualifiedQty().add(code.getQualifiedQty())); ObjectUtil.defaultIfNull(taskItemVO.getUnqualifiedQty(), BigDecimal.ZERO)
taskItemVO.setInQty(code.getQualifiedQty().add(code.getUnqualifiedQty())); .add(ObjectUtil.defaultIfNull(code.getUnqualifiedQty(), BigDecimal.ZERO)));
taskItemVO.setQualifiedQty(
ObjectUtil.defaultIfNull(taskItemVO.getQualifiedQty(), BigDecimal.ZERO)
.add(ObjectUtil.defaultIfNull(code.getQualifiedQty(), BigDecimal.ZERO)));
taskItemVO.setInQty(ObjectUtil.defaultIfNull(code.getQualifiedQty(), BigDecimal.ZERO)
.add(ObjectUtil.defaultIfNull(code.getUnqualifiedQty(), BigDecimal.ZERO)));
}); });
} }
} }
@ -78,8 +89,9 @@ public class NormalQMControllerService {
@Transactional @Transactional
public void confirmReceive(List<QCReceiveDTO> qcReceiveDTOS) { public void confirmReceive(List<QCReceiveDTO> qcReceiveDTOS) {
if (CollectionUtil.isEmpty(qcReceiveDTOS)) if (CollectionUtil.isEmpty(qcReceiveDTOS)) {
return; return;
}
for (QCReceiveDTO qcReceiveDTO : qcReceiveDTOS) { for (QCReceiveDTO qcReceiveDTO : qcReceiveDTOS) {
//库存处理 //库存处理
if (CollectionUtil.isNotEmpty(qcReceiveDTO.getQualifiednventories())) { if (CollectionUtil.isNotEmpty(qcReceiveDTO.getQualifiednventories())) {

View File

@ -19,7 +19,7 @@ public interface WmsQcReceiveItemMapper extends BaseMapper<WmsQcReceiveItem> {
List<QCTaskItemVO> getTaskItem(Long taskId); List<QCTaskItemVO> getTaskItem(Long taskId);
void updateCheckNum(String receiveNum, String noteNum, String lineNumber, String itemCode); void updateCheckNum(BigDecimal InspectionQty, String noteNum, String lineNumber, String itemCode, String materialDoc);
void updateInQty(Long id, BigDecimal inQty, BigDecimal unqualifiedQty, BigDecimal qualifiedQty); void updateInQty(Long id, BigDecimal inQty, BigDecimal unqualifiedQty, BigDecimal qualifiedQty);
} }

View File

@ -21,7 +21,7 @@ public interface IWmsQcReceiveItemService extends IService<WmsQcReceiveItem> {
List<QCTaskItemVO> getTaskItem(@Valid @NotNull Long taskId); List<QCTaskItemVO> getTaskItem(@Valid @NotNull Long taskId);
void updateCheckNum(String receiveNum, String noteNum, String lineNumber, String itemCode); void updateCheckNum(BigDecimal InspectionQty, String noteNum, String lineNumber, String itemCode,String materialDoc);
void updateInQty(Long id, BigDecimal inQty,BigDecimal unqualifiedQty,BigDecimal qualifiedQty); void updateInQty(Long id, BigDecimal inQty,BigDecimal unqualifiedQty,BigDecimal qualifiedQty);
} }

View File

@ -27,8 +27,8 @@ public class WmsQcReceiveItemServiceImpl extends ServiceImpl<WmsQcReceiveItemMap
} }
@Override @Override
public void updateCheckNum(String receiveNum, String noteNum, String lineNumber, String itemCode) { public void updateCheckNum(BigDecimal InspectionQty, String noteNum, String lineNumber, String itemCode, String materialDoc) {
baseMapper.updateCheckNum(receiveNum, noteNum, lineNumber, itemCode); baseMapper.updateCheckNum(InspectionQty, noteNum, lineNumber, itemCode, materialDoc);
} }
@Override @Override

View File

@ -31,10 +31,10 @@
<update id="updateCheckNum"> <update id="updateCheckNum">
update wms_qc_receive_item update wms_qc_receive_item
set check_qty=check_qty + #{ inspectionQty} set check_qty=check_qty + #{InspectionQty}
where note_num = #{ noteNum} where note_num = #{ noteNum}
and line_number = #{ lineNumber} and line_number = #{ lineNumber}
and material_doc = #{ materialDoc} and material_doc = #{materialDoc}
and item_code = #{ itemCode} and item_code = #{ itemCode}
</update> </update>
</mapper> </mapper>

View File

@ -119,8 +119,9 @@ public class SRMController extends BaseController {
/** /**
* SRM 推送质检单到WMS * SRM 推送质检单到WMS
*/ */
@Transactional
@PostMapping("/SendNFInspect") @PostMapping("/SendNFInspect")
@Transactional
public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) { public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) {
SRMQualityInspectionResultDTO data = JSONUtil.toBean(request.getJsonstring(), SRMQualityInspectionResultDTO.class); SRMQualityInspectionResultDTO data = JSONUtil.toBean(request.getJsonstring(), SRMQualityInspectionResultDTO.class);
List<WmsSrmQualityInspection> inspects = srmQualityInspectionService.lambdaQuery() List<WmsSrmQualityInspection> inspects = srmQualityInspectionService.lambdaQuery()
@ -152,7 +153,7 @@ public class SRMController extends BaseController {
.setSupplerNum(data.getSupplierNum()) .setSupplerNum(data.getSupplierNum())
.setInspectionType(data.getInspectionType()) .setInspectionType(data.getInspectionType())
.setPoLineNumber(String.valueOf(data.getPoLineNumber())) .setPoLineNumber(String.valueOf(data.getPoLineNumber()))
.setInspectionQty(ObjectUtil.defaultIfNull(data.getInspectionQty(), BigDecimal.ZERO)) .setInspectionQty(data.getQualifiedQty().add(data.getUnqualifiedQty()))
.setItemName(data.getItemName()) .setItemName(data.getItemName())
.setUnit(data.getUnit()) .setUnit(data.getUnit())
.setReceivedWarehouse(data.getReceivedWarehouse()) .setReceivedWarehouse(data.getReceivedWarehouse())
@ -165,17 +166,16 @@ public class SRMController extends BaseController {
.setSerialNum(data.getSerialNum()) .setSerialNum(data.getSerialNum())
.setLineNumber(data.getLineNumber()) .setLineNumber(data.getLineNumber())
.setNoteNum(data.getNoteNum()) .setNoteNum(data.getNoteNum())
.setReceiveId(receiveItem.getReceiveId()) .setReceiveId(receiveItem.getId())
.setIsIn(false) .setIsIn(false)
.setAcceptTime(LocalDateTime.now()); .setAcceptTime(LocalDateTime.now());
try { try {
srmQualityInspectionService.save(inspect); srmQualityInspectionService.save(inspect);
qcReceiveService.lambdaUpdate() qcReceiveService.lambdaUpdate()
.eq(WmsQcReceive::getOrderNo, inspect.getNoteNum()) .eq(WmsQcReceive::getOrderNo, inspect.getNoteNum())
.eq(WmsQcReceive::getIsCheck, false)
.set(WmsQcReceive::getIsCheck, true) .set(WmsQcReceive::getIsCheck, true)
.update(); .update();
qcReceiveItemService.updateCheckNum(inspect.getReceiveNum(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode()); qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), inspect.getReceiveNum());
log.error("质检单生成上架任务成功"); log.error("质检单生成上架任务成功");
return 0; return 0;
} catch (Exception ex) { } catch (Exception ex) {