From d77c8669a19a7712e2375851c61c66abde2a1c3f Mon Sep 17 00:00:00 2001 From: zhangke Date: Mon, 18 Aug 2025 18:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../document/SrmMaterialReceiptScanCodes.java | 53 ++++++++ .../SrmMaterialReceiptCanCodesRepository.java | 9 ++ .../service/NormalPGIControllerService.java | 36 +++--- .../wms/common/pojo/qo/PDAScanCodeQO.java | 2 +- .../entity/WmsSrmMaterialQmsReceiptItem.java | 119 ++++++++++++++++++ .../entity/WmsSrmMaterialReceipt.java | 62 +++++++-- .../entity/WmsSrmMaterialReceiptItem.java | 56 +++++++-- .../repository/entity/WmsSrmOrderItem.java | 7 +- .../entity/WmsSrmQualityInspection.java | 5 + .../WmsSrmMaterialQmsReceiptItemMapper.java | 16 +++ .../IWmsSrmMaterialQmsReceiptItemService.java | 16 +++ .../IWmsSrmQualityInspectionService.java | 2 + ...sSrmMaterialQmsReceiptItemServiceImpl.java | 20 +++ .../WmsSrmQualityInspectionServiceImpl.java | 51 +++++++- .../WmsSrmMaterialQmsReceiptItemMapper.xml | 5 + .../mapper/WmsSrmQualityInspectionMapper.xml | 6 +- .../wms/repository/CodeGeneratorTest.java | 2 +- .../srm/receive/controller/SRMController.java | 108 +++++----------- 18 files changed, 449 insertions(+), 126 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptCanCodesRepository.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialQmsReceiptItem.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmMaterialQmsReceiptItemMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmMaterialQmsReceiptItemService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmMaterialQmsReceiptItemServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsSrmMaterialQmsReceiptItemMapper.xml diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java new file mode 100644 index 00000000..b62ed00d --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java @@ -0,0 +1,53 @@ +package com.nflg.wms.admin.pojo.document; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +@Document(collection = "SrmMaterialReceiptScanCodes") +public class SrmMaterialReceiptScanCodes{ + @Id + private String id; + + /** + * 收货单的单号 + */ + private String orderNo; + + /*** + * 收货单的单行ID号 + * + */ + private String orderItemId; + /** + * 二维码编号 + */ + private String codeId; + + /** + * 数量 + */ + @NotNull + private BigDecimal codeNum; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号 + */ + private String serialNumbers; + + /** + * 二维码内容 + */ + private String codeContent; +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptCanCodesRepository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptCanCodesRepository.java new file mode 100644 index 00000000..e7b02237 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptCanCodesRepository.java @@ -0,0 +1,9 @@ +package com.nflg.wms.admin.repository; + +import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SrmMaterialReceiptCanCodesRepository extends MongoRepository { +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java index ee3e57b7..44c6b1e9 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java @@ -98,7 +98,6 @@ public class NormalPGIControllerService { WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).one(); if (Objects.isNull(order)) return null; - PDAOrderVO pdaOrderVO = new PDAOrderVO(); // 设置订单头基本信息 pdaOrderVO.setNoteNum(order.getNoteNum()); @@ -164,7 +163,7 @@ public class NormalPGIControllerService { if ("3".equals(lbprt) || "4".equals(lbprt)) { VUtil.trueThrowBusinessError( CollectionUtil.isEmpty(item.getScanCodes()) || - item.getScanCodes().stream().anyMatch(code -> CollectionUtil.isEmpty(code.getSerialNumbers())) + item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getSerialNumbers())) ).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum()); } } @@ -208,21 +207,25 @@ public class NormalPGIControllerService { receipt.setCreateUserId(UserUtil.getUserId()); receipt.setCreateUserName(UserUtil.getUserName()); //条码内容 + WmsSrmMaterialReceiptItem receiptItem = new WmsSrmMaterialReceiptItem(); + receiptItem.setCodeId(scanCode.getCodeId()); + receiptItem.setCodeNum(scanCode.getCodeNum()); + receiptItem.setBatchNumber(scanCode.getBatchNumber()); + receiptItem.setSerialNumber(scanCode.getSerialNumbers()); + receiptItem.setCodeContent(scanCode.getCodeContent()); + receiptItem.setOrderItemId(item.getOrderItemId()); + receiptItem.setCreateUserId(UserUtil.getUserId()); + receiptItem.setCreateUserName(UserUtil.getUserName()); + receiptItem.setCreateTime(LocalDateTime.now()); + receiptItem.setReceiptId(receiptId); + receiptItem.setId(IdUtil.getSnowflakeNextId()); + receiptItems.add(receiptItem); + + if (CollectionUtil.isNotEmpty(item.getScanCodes())) { item.getScanCodes().forEach(scanCode -> { - WmsSrmMaterialReceiptItem receiptItem = new WmsSrmMaterialReceiptItem(); - receiptItem.setCodeId(scanCode.getCodeId()); - receiptItem.setCodeNum(scanCode.getCodeNum()); - receiptItem.setBatchNumber(scanCode.getBatchNumber()); - receiptItem.setSerialNumber(StrUtil.join(";", scanCode.getSerialNumbers())); - receiptItem.setCodeContent(scanCode.getCodeContent()); - receiptItem.setOrderItemId(item.getOrderItemId()); - receiptItem.setCreateUserId(UserUtil.getUserId()); - receiptItem.setCreateUserName(UserUtil.getUserName()); - receiptItem.setCreateTime(LocalDateTime.now()); - receiptItem.setReceiptId(receiptId); - receiptItem.setId(IdUtil.getSnowflakeNextId()); - receiptItems.add(receiptItem); + + if (isQuality) { //质检物料发送到质检单 @@ -291,8 +294,9 @@ public class NormalPGIControllerService { //序列号和批次号验证 validateScanCodes(item, materialInfoInOrder); boolean isQuality = materialInfoInOrder.getKzkri().equals("X"); - // 生成相关单据 + // 生成收货单、任务单、质检单 数据集合 generyReceipt(item, isQuality, materialInfoInOrder, receipts, receiptitems, tasks, srmLineVOListItems); + generateSAPData(item, materialInfoInOrder, zwm3A17DTOS); }); //生成wms的单据 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java index fdd1c861..c20918d8 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PDAScanCodeQO.java @@ -29,7 +29,7 @@ public class PDAScanCodeQO { /** * 序列号 */ - private List serialNumbers; + private String serialNumbers; /** * 二维码内容 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialQmsReceiptItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialQmsReceiptItem.java new file mode 100644 index 00000000..f4801f22 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialQmsReceiptItem.java @@ -0,0 +1,119 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_srm_material_qms_receipt_item") +public class WmsSrmMaterialQmsReceiptItem implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 收货单的ID + */ + private Long receiptId; + + /** + * 订单id + */ + private Long orderId; + + /** + * 送货单行号 + */ + private String lineNumber; + + /** + * 采购订单号 + */ + private String poNum; + + /** + * 采购订单行号 + */ + private String poLineNumber; + + /** + * 物料编码 + */ + private String itemCode; + + /** + * 物料描述 + */ + private String itemName; + + /** + * 单位 + */ + private String uomCode; + + /** + * 收货人编号 + */ + private Long createUserId; + + /** + * 收货人名称 + */ + private String createUserName; + + /** + * 扫描时间 + */ + private LocalDateTime createTime; + + /** + * 收货数量 + */ + private BigDecimal receiptNum; + + /** + * 仓库编号 + */ + private String receivedWarehouse; + + /** + * 储位 + */ + private String storageLocation; + + /** + * 已入库数量 + */ + private BigDecimal inQty; + + /** + * 已检数量 + */ + private BigDecimal checkQty; + + /** + * 送货单号 + */ + private String noteNum; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceipt.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceipt.java index 0dc2e6a2..38af61ec 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceipt.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceipt.java @@ -1,5 +1,7 @@ package com.nflg.wms.repository.entity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; @@ -7,7 +9,6 @@ import lombok.ToString; import lombok.experimental.Accessors; import java.io.Serializable; -import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -27,33 +28,59 @@ public class WmsSrmMaterialReceipt implements Serializable { private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** - * 普通物料送货单的详情ID + * 工厂 */ - private Long orderItemId; + private String iuCode; /** - * 收货数量,如果是需要质检的,数量为0 + * 送货单号 */ - private BigDecimal receiptNum; + private String noteNum; /** - * 是否质检 + * 采购组 */ - private Boolean isQuality; + private String purchaseGroup; /** - * 越库数量 + * 运单号 */ - private BigDecimal crossNumber; + private String waybillNum; /** - * 收货数量 + * 供应商编码 + */ + private String supplierNum; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 创建时间 */ private LocalDateTime createTime; + /** + * 公司 + */ + private String ouCode; + + /** + * 发货时间 + */ + private LocalDateTime deliveryNoteDate; + + /** + * 收货单编号 + */ + private String receiptNo; + /** * 收货人编号 */ @@ -63,4 +90,19 @@ public class WmsSrmMaterialReceipt implements Serializable { * 收货人名称 */ private String createUserName; + + /** + * 是否存在质检的物料 + */ + private Boolean isQuality; + + /** + * 质检物料的入库状态 0 未完成,1 已完成 + */ + private Short qualitySapStatus; + + /** + * 未质检物料的入库状态 + */ + private Short sapStatus; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceiptItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceiptItem.java index 47fff290..91102913 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceiptItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmMaterialReceiptItem.java @@ -33,34 +33,44 @@ public class WmsSrmMaterialReceiptItem implements Serializable { private Long id; /** - * 收货信息ID + * 收货单的ID */ private Long receiptId; /** - * 二维码编号 + * 订单id */ - private String codeId; + private Long orderId; /** - * 数量 + * 送货单行号 */ - private BigDecimal codeNum; + private String lineNumber; /** - * 批次号 + * 采购订单号 */ - private String batchNumber; + private String poNum; /** - * 序列号,多个序列号使用;号隔开 + * 采购订单行号 */ - private String serialNumber; + private String poLineNumber; /** - * 二维码内容 + * 物料编码 */ - private String codeContent; + private String itemCode; + + /** + * 物料描述 + */ + private String itemName; + + /** + * 单位 + */ + private String uomCode; /** * 收货人编号 @@ -78,7 +88,27 @@ public class WmsSrmMaterialReceiptItem implements Serializable { private LocalDateTime createTime; /** - * 送货单的单号ID + * 收货数量 */ - private Long orderItemId; + private BigDecimal receiptNum; + + /** + * 仓库编号 + */ + private String receivedWarehouse; + + /** + * 储位 + */ + private String storageLocation; + + /** + * 已入库数量 + */ + private BigDecimal inQty; + + /** + * 送货单号 + */ + private String noteNum; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java index 9ce035b8..3cd1720b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java @@ -13,7 +13,7 @@ import java.math.BigDecimal; /** *

- * + * *

* * @author 代码生成器生成 @@ -95,4 +95,9 @@ public class WmsSrmOrderItem implements Serializable { * 是否质检 */ private Boolean isQuality; + + /** + * 收货数量 + */ + private BigDecimal receiptQty; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmQualityInspection.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmQualityInspection.java index 206b2c11..4d9fee46 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmQualityInspection.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmQualityInspection.java @@ -146,4 +146,9 @@ public class WmsSrmQualityInspection implements Serializable { * 最后修改时间 */ private LocalDateTime lastModifyTime; + + /** + * SAP同步状态 0 已同步,1 未同步 + */ + private Short sapStatus; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmMaterialQmsReceiptItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmMaterialQmsReceiptItemMapper.java new file mode 100644 index 00000000..da09f0e8 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsSrmMaterialQmsReceiptItemMapper.java @@ -0,0 +1,16 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsSrmMaterialQmsReceiptItemMapper extends BaseMapper { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmMaterialQmsReceiptItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmMaterialQmsReceiptItemService.java new file mode 100644 index 00000000..dc4a1c24 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmMaterialQmsReceiptItemService.java @@ -0,0 +1,16 @@ +package com.nflg.wms.repository.service; + +import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsSrmMaterialQmsReceiptItemService extends IService { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmQualityInspectionService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmQualityInspectionService.java index ec8a162b..350c2504 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmQualityInspectionService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsSrmQualityInspectionService.java @@ -19,4 +19,6 @@ import jakarta.validation.Valid; public interface IWmsSrmQualityInspectionService extends IService { IPage search(@Valid NomalQMOrderSearchQO request); + + boolean saveQualityInspection(@Valid WmsSrmQualityInspection request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmMaterialQmsReceiptItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmMaterialQmsReceiptItemServiceImpl.java new file mode 100644 index 00000000..00d2b375 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmMaterialQmsReceiptItemServiceImpl.java @@ -0,0 +1,20 @@ +package com.nflg.wms.repository.service.impl; + +import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem; +import com.nflg.wms.repository.mapper.WmsSrmMaterialQmsReceiptItemMapper; +import com.nflg.wms.repository.service.IWmsSrmMaterialQmsReceiptItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsSrmMaterialQmsReceiptItemServiceImpl extends ServiceImpl implements IWmsSrmMaterialQmsReceiptItemService { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmQualityInspectionServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmQualityInspectionServiceImpl.java index 02e6ca5e..f0f37154 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmQualityInspectionServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsSrmQualityInspectionServiceImpl.java @@ -2,24 +2,31 @@ package com.nflg.wms.repository.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.NomalQMOrderSearchQO; import com.nflg.wms.common.pojo.vo.QualityInspectionVO; import com.nflg.wms.common.pojo.vo.StorageVO; -import com.nflg.wms.repository.entity.WmsBin; -import com.nflg.wms.repository.entity.WmsSrmQualityInspection; +import com.nflg.wms.repository.entity.*; import com.nflg.wms.repository.mapper.WmsSrmQualityInspectionMapper; +import com.nflg.wms.repository.service.IWmsSrmMaterialQmsReceiptItemService; +import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptItemService; +import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptService; import com.nflg.wms.repository.service.IWmsSrmQualityInspectionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.postgresql.core.Utils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; /** *

- * 服务实现类 + * 服务实现类 *

* * @author 代码生成器生成 @@ -28,8 +35,42 @@ import java.util.List; @Service public class WmsSrmQualityInspectionServiceImpl extends ServiceImpl implements IWmsSrmQualityInspectionService { + @Resource + private IWmsSrmMaterialQmsReceiptItemService wmsSrmMaterialQmsReceiptItemService; + + @Resource + private IWmsSrmMaterialReceiptService wmsSrmMaterialReceiptService; + @Override public IPage search(NomalQMOrderSearchQO request) { - return baseMapper.search(request,new Page<>(request.getPage(),request.getPageSize())); + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + @Transactional + public boolean saveQualityInspection(WmsSrmQualityInspection request) { + boolean result = this.save(request); + if (result) { + result = wmsSrmMaterialQmsReceiptItemService.update( + new LambdaUpdateWrapper() + .setSql("check_qty = check_qty + " + request.getUnqualifiedQty().add(request.getQualifiedQty())) + .eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum()) + .eq(WmsSrmMaterialQmsReceiptItem::getLineNumber, request.getLineNumber()) + ); + //修改状态 + List receiptItems = wmsSrmMaterialQmsReceiptItemService.lambdaQuery() + .eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum()) + .apply("check_qty>in_qty") + .list(); + //修改下状态 + if (CollectionUtil.isNotEmpty(receiptItems)) { +// result =wmsSrmMaterialReceiptService.update( +// new LambdaUpdateWrapper() +// .setSql("check_qty = check_qty + " + request.getUnqualifiedQty().add(request.getQualifiedQty())) +// .eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum()) +// .eq(WmsSrmMaterialQmsReceiptItem::getLineNumber, request.getLineNumber()) +// ); + } + return result; + } } -} diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmMaterialQmsReceiptItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmMaterialQmsReceiptItemMapper.xml new file mode 100644 index 00000000..581b0265 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmMaterialQmsReceiptItemMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml index 25a3fffb..5de904a2 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmQualityInspectionMapper.xml @@ -17,10 +17,8 @@ select a.inspection_num,a.factory,a.suppler_num as supplier_num,c.supplier_name,a.delivery_qty,a.inspection_result,a.item_code,a.inspection_type, a.po_line_number,a.inspection_qty,a.item_name,a.unit,a.received_warehouse,a.unqualified_reason,a.po_num,a.receive_num,a.unqualified_qty, - a.qualified_qty,a.material_batch as receive_batch_num,a.serial_num,a.line_number,a.note_num,COALESCE(b.data_status,0) as - in_status - from wms_srm_quality_inspection a left join wms_in_task_item b on a.note_num=b.note_num and - a.line_number=b.line_number + a.qualified_qty,a.material_batch as receive_batch_num,a.serial_num,a.line_number,a.note_num,,a.sap_status as in_status + from wms_srm_quality_inspection a left join user_supplier c on a.suppler_num=c.supplier_code diff --git a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java index 9e892c67..3086f7c9 100644 --- a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java +++ b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java @@ -33,7 +33,7 @@ public class CodeGeneratorTest { ) .strategyConfig(builder -> { builder - .addInclude("wms_in_produce_back_ticket_item") //只生成指定表 + .addInclude("wms_srm_material_receipt") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel() diff --git a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java index 7dd0058c..78e978d6 100644 --- a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java +++ b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -80,6 +81,7 @@ public class SRMController extends BaseController { srmOrderItemService.saveBatch(request.getResultSet().stream().map(it -> { WmsSrmOrderItem item = Convert.convert(WmsSrmOrderItem.class, it); item.setOrderId(finalOrder.getId()); + item.setReceiptQty(new BigDecimal(0)); return item; }).toList()); return 0; @@ -97,82 +99,38 @@ public class SRMController extends BaseController { @PostMapping("/SendNFInspect") public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) { Integer result = 1; + WmsSrmQualityInspection inspect = new WmsSrmQualityInspection() + .setId(IdUtil.getSnowflakeNextId()) + .setInspectionNum(request.getInspectionNum()) + .setFactory(request.getFactory()) + .setDeliveryQty(request.getDeliveryQty()) + .setInspectionResult(request.getInspectionResult()) + .setItemCode(request.getItemCode()) + .setSupplerNum(request.getSupplierNum()) + .setInspectionType(request.getInspectionType()) + .setPoLineNumber(String.valueOf(request.getPoLineNumber())) + .setInspectionQty(request.getInspectionQty()) + .setItemName(request.getItemName()) + .setUnit(request.getUnit()) + .setReceivedWarehouse(request.getReceivedWarehouse()) + .setUnqualifiedReason(request.getUnqualifiedReason()) + .setReceiveNum(request.getReceiveNum()) + .setPoNum(request.getPoNum()) + .setUnqualifiedQty(request.getUnqualifiedQty()) + .setQualifiedQty(request.getQualifiedQty()) + .setMaterialBatch(request.getMaterialBatch()) + .setSerialNum(request.getSerialNum()) + .setLineNumber(request.getLineNumber()) + .setNoteNum(request.getNoteNum()) + .setSapStatus((short) 0) + .setAcceptTime(LocalDateTime.now()); try { - WmsSrmQualityInspection inspect = srmQualityInspectionService.lambdaQuery() - .eq(WmsSrmQualityInspection::getInspectionNum, request.getInspectionNum()) - .one(); - List tasks = new ArrayList(); - if (Objects.nonNull(inspect)) { - inspect.setFactory(request.getFactory()) - .setDeliveryQty(request.getDeliveryQty()) - .setInspectionResult(request.getInspectionResult()) - .setItemCode(request.getItemCode()) - .setItemName(request.getItemName()) - .setSupplerNum(request.getSupplierNum()) - .setInspectionType(request.getInspectionType()) - .setPoLineNumber(String.valueOf(request.getPoLineNumber())) - .setInspectionQty(request.getInspectionQty()) - .setUnit(request.getUnit()) - .setReceivedWarehouse(request.getReceivedWarehouse()) - .setUnqualifiedQty(request.getUnqualifiedQty()) - .setPoNum(request.getPoNum()) - .setQualifiedQty(request.getQualifiedQty()) - .setMaterialBatch(request.getMaterialBatch()) - .setSerialNum(request.getSerialNum()) - .setLineNumber(request.getLineNumber()) - .setNoteNum(request.getNoteNum()) - .setLastModifyTime(LocalDateTime.now()); - result = srmQualityInspectionService.updateById(inspect) ? 0 : 1; - } else { - inspect = new WmsSrmQualityInspection() - .setId(IdUtil.getSnowflakeNextId()) - .setInspectionNum(request.getInspectionNum()) - .setFactory(request.getFactory()) - .setDeliveryQty(request.getDeliveryQty()) - .setInspectionResult(request.getInspectionResult()) - .setItemCode(request.getItemCode()) - .setItemName(request.getItemName()) - .setSupplerNum(request.getSupplierNum()) - .setInspectionType(request.getInspectionType()) - .setPoLineNumber(String.valueOf(request.getPoLineNumber())) - .setInspectionQty(request.getInspectionQty()) - .setUnit(request.getUnit()) - .setReceivedWarehouse(request.getReceivedWarehouse()) - .setUnqualifiedQty(request.getUnqualifiedQty()) - .setPoNum(request.getPoNum()) - .setQualifiedQty(request.getQualifiedQty()) - .setMaterialBatch(request.getMaterialBatch()) - .setSerialNum(request.getSerialNum()) - .setLineNumber(request.getLineNumber()) - .setNoteNum(request.getNoteNum()) - .setAcceptTime(LocalDateTime.now()); - result = srmQualityInspectionService.save(inspect) ? 0 : 1; - } - tasks.add( - new WmsInTaskItem().setItemCode(request.getItemCode()) - .setItemName(request.getItemName()) - .setReceivedWarehouse(request.getReceivedWarehouse()) - .setInspectionQty(request.getInspectionQty()) - .setIsQuality(true) - .setFactory(request.getFactory()) - .setFailResult(request.unqualifiedReason) - .setPoLineNumber(String.valueOf(request.getPoLineNumber())) - .setPoNum(request.getPoNum()) - .setUnit(request.getUnit()) - .setUnqualifiedQty(request.getUnqualifiedQty()) - .setQualifiedQty(request.getQualifiedQty()) - .setSerialNumber(String.valueOf(request.getSerialNum())) - .setSerialNumber(String.valueOf(request.getSerialNum())) - .setLineNumber(String.valueOf(request.getLineNumber())) - .setNoteNum(request.getNoteNum()) - .setInspectionOrder(request.receiveNum) - ); - - if (result == 0 && CollectionUtil.isNotEmpty(tasks)) - if (!taskService.generateTask(tasks, (short) 1)) - log.error("质检单生成上架任务失败"); - - return result; + result = srmQualityInspectionService.saveQualityInspection(inspect) ? 0 : 1; + if (result == 0) { + log.error("质检单生成上架任务成功"); + return result; + } else + return "质检单生成上架任务失败"; } catch (Exception ex) { log.error("SRM送货单保存失败", ex); return ex.getMessage();