diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 0c22fbf9..da1e3725 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -8,6 +8,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptNoScanCodes; import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes; import com.nflg.wms.admin.pojo.dto.QCMaterialSyncDTO; import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; @@ -16,6 +17,7 @@ import com.nflg.wms.admin.pojo.dto.ZWM3A17Item2DTO; import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository; import com.nflg.wms.admin.service.NormalPGIControllerService; import com.nflg.wms.admin.service.SAPCommonService; +import com.nflg.wms.admin.util.NoUtil; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.*; @@ -150,6 +152,7 @@ public class NormalPGIController extends BaseController { .setCreateUserName(UserUtil.getUserName()) .setCreateUserId(UserUtil.getUserId()) .setFactoryCode(order.getIuCode()) + .setSourceType(0) .setIsCompleted(false); WmsQcReceive wmsQcReceive = new WmsQcReceive() @@ -160,6 +163,7 @@ public class NormalPGIController extends BaseController { .setCreateUserName(UserUtil.getUserName()) .setFactoryCode(order.getIuCode()) .setIsCheck(false) + .setSourceType(0) .setCreateUserId(UserUtil.getUserId()); List wmsPoReceiptItems = new ArrayList<>(); @@ -628,39 +632,199 @@ public class NormalPGIController extends BaseController { qcDto.getReceiptIds().add(qmsReceiptItem.getId()); } -/**** - //一键收货 + /** + * 一键收货查询 + * + * @param request + * @return + */ + @PostMapping("getDeliveryByNoScan") + @ApiMark(moduleName = "送货单管理", apiName = "一键收货查询") + public ApiResult> getDeliveryByNoScan(@Valid @RequestBody BarcodeLessReceivingSearchQO request) { + List list = new ArrayList<>(); + List orders = wmsSrmOrderService.lambdaQuery() + .in(WmsSrmOrder::getId, request.getId()) + .eq(WmsSrmOrder::getIsCompleted, false) + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("不存在未完成收货的物料!"); + // 查找订单信息 + List items = wmsSrmOrderItemService.lambdaQuery() + .in(WmsSrmOrderItem::getOrderId, request.getId()) + .apply(" deliveryQty>receiptQty") + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(items)).throwMessage("不存在未收货的物料!"); + for (WmsSrmOrderItem item : items) { + WmsSrmOrder order = orders.stream().filter(o -> o.getId().equals(item.getOrderId())).findFirst().orElse(null); + if (Objects.isNull(order)) { + continue; + } + BarcodeLessReceivingVO qo = new BarcodeLessReceivingVO(); + qo.setId(item.getId()); + qo.setOrderId(item.getOrderId()); + qo.setPoNum(item.getPoNum()); + qo.setPoLineNumber(item.getPoLineNumber()); + qo.setLineNumber(item.getLineNumber()); + qo.setNoteNum(item.getNoteNum()); + qo.setItemCode(item.getItemCode()); + qo.setUnRecieveQty(item.getOrderQty().subtract(item.getReceiptQty())); + qo.setDeliveryQty(item.getDeliveryQty()); + qo.setSerialNumbers(""); + qo.setIuCode(order.getIuCode()); + qo.setSupplierNum(order.getSupplierNum()); + qo.setReceiptQty(item.getReceiptQty()); + // 获取当前订单的物料属性 + SAPSyncParamsDTO materialInfoInOrder = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), + order.getSupplierNum(), + item.getItemCode(), item.getPoLineNumber()); + VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("当前物料信息【" + item.getItemCode() + "】,订单号【" + item.getPoNum() + "】,供应商【" + order.getSupplierName() + "】在SAP中搜索不到有效信息"); + qo.setItemName(materialInfoInOrder.getMaktx()); + qo.setUomCode(materialInfoInOrder.getMeins()); + qo.setReceivedWarehouse(materialInfoInOrder.getWarehouseNo()); + qo.setBatchNumber(NoUtil.getBatchNo(order.getSupplierNum())); + qo.setBinNos(materialInfoInOrder.getBinNos()); + qo.setTransportNum(materialInfoInOrder.getTransportNum()); + qo.setLbprt(materialInfoInOrder.getLbprt()); + qo.setIsQuality(materialInfoInOrder.getKzkri().equals("X") ? true : false); + list.add(qo); + } + return ApiResult.success(list); + } - @PostMapping("takeDeliveryByNoScan") - @ApiMark(moduleName = "送货单管理", apiName = "一键收货") - public ApiResult takeDeliveryByNoScan(@Valid @RequestBody SrmMaterialReceiptQO request) { - WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.getNoteNum()).one(); - VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在"); - List items = wmsSrmOrderItemService.lambdaQuery() - .eq(WmsSrmOrderItem::getOrderId, order.getId()) - .list(); - VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(items)).throwMessage("收货单详情不存在"); - List requestList = new ArrayList<>(); - items.forEach(item -> { - SrmMaterialReceiptQO qoItem = new SrmMaterialReceiptQO(); - qoItem.setNoteNum(order.getNoteNum()); - qoItem.setLineNumber(item.getLineNumber()); - qoItem.setSupplierNum(order.getSupplierNum()); - qoItem.setSupplierName(order.getSupplierName()); + @PostMapping("takeDeliveryByNoScan") + @ApiMark(moduleName = "送货单管理", apiName = "一键收货") + public ApiResult takeDeliveryByNoScan(@Valid @RequestBody List request) { + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空"); + // 获取到多个收货单 + List orderNos = request.stream().map(BarcodeLessReceivingVO::getNoteNum).distinct().collect(Collectors.toList()); + List orders = wmsSrmOrderService.lambdaQuery().in(WmsSrmOrder::getNoteNum, orderNos) + .eq(WmsSrmOrder::getIsCompleted, false).list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("无效的送货单"); + List wmsPoReceipts = new ArrayList<>(); + List wmsQcReceives = new ArrayList<>(); + List wmsPoReceiptItems = new ArrayList<>(); + List wmsQcReceiveItems = new ArrayList<>(); + List qcMaterialSyncDTOS = new ArrayList<>(); + List codes = new ArrayList<>(); + for (WmsSrmOrder order : orders) { + WmsPoReceipt wmsPoReceipt = new WmsPoReceipt() + .setCreateTime(LocalDateTime.now()) + .setId(IdUtil.getSnowflakeNextId()) + .setOrderNo(order.getNoteNum()) + .setCreateUserName(UserUtil.getUserName()) + .setCreateUserId(UserUtil.getUserId()) + .setFactoryCode(order.getIuCode()) + .setSourceType(1) + .setIsCompleted(false); + wmsPoReceipts.add(wmsPoReceipt); + WmsQcReceive wmsQcReceive = new WmsQcReceive() + .setCreateTime(LocalDateTime.now()) + .setId(IdUtil.getSnowflakeNextId()) + .setIsCompleted((short) 0) + .setOrderNo(order.getNoteNum()) + .setCreateUserName(UserUtil.getUserName()) + .setFactoryCode(order.getIuCode()) + .setIsCheck(false) + .setSourceType(1) + .setCreateUserId(UserUtil.getUserId()); + wmsQcReceives.add(wmsQcReceive); + } + for (BarcodeLessReceivingVO item : request) { + if (item.getUnRecieveQty().equals(BigDecimal.ZERO)) { + continue; + } + SAPSyncParamsDTO materialInfoInOrder = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), + item.getSupplierNum(), + item.getItemCode(), item.getPoLineNumber()); + VUtil.trueThrowBusinessError(item.getUnRecieveQty().compareTo(materialInfoInOrder.getTransportNum()) > 0) + .throwMessage("物料收货数量[" + item.getUnRecieveQty() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum()); + //序列号和批次号验证 + //--------------------------------- + String lbprt = materialInfoInOrder.getLbprt(); + //判断序列号、批次号是否规范 + // 1 - 批次号为空,序列号为空 + // 2 - 批次号必填,序列号为空 + // 3 - 批次号为空,序列号必填 + // 4 - 批次号必填,序列号必填 + if ("2".equals(lbprt) || "4".equals(lbprt)) { + VUtil.trueThrowBusinessError(StrUtil.isBlank(item.getBatchNumber())).throwMessage("此物料[" + item.getItemCode() + "]必须填写批次号,订单号:" + item.getPoNum()); + } - qoItem.setPoNum(item.getPoNum()); - qoItem.setPoLineNumber(item.getPoLineNumber()); - qoItem.setItemCode(item.getItemCode()); + if ("3".equals(lbprt) || "4".equals(lbprt)) { + Integer serialNumbers = item.getUnRecieveQty() + VUtil.trueThrowBusinessError( + StrUtil.isBlank(item.getSerialNumbers()) - qoItem.setOrderItemId(item.getId()); - qoItem.setReceiptNum(item.getDeliveryQty()); - qoItem.setCrossNumber(new BigDecimal(0.00)); - requestList.add(qoItem); - }); - //获取到订单信息 - normalPGIControllerService.takeDelivery(requestList); - return ApiResult.success(); - } - */ + ).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum()); + + } + List srmMaterialReceiptScanCodes = new ArrayList<>(); + List codeIds = new ArrayList<>(); + for (PDAScanCodeQO scanCode : item.getScanCodes()) { + VUtil.trueThrowBusinessError(codeIds.contains(scanCode.getCodeId())).throwMessage("此物料[" + item.getItemCode() + "]中存在重复的条码" + scanCode.getCodeId()); + codeIds.add(scanCode.getCodeId()); + srmMaterialReceiptScanCodes.add( + new SrmMaterialReceiptScanCodes() + .setOrderItemId(item.getId()) + .setOrderNo(item.getNoteNum()) + .setCodeId(scanCode.getCodeId()) + .setCodeNum(scanCode.getCodeNum()) + .setBatchNumber(scanCode.getBatchNumber()) + .setSerialNumbers(scanCode.getSerialNumbers()) + .setIsIntoStorage(false) + .setCodeContent(scanCode.getCodeContent())); + } + //查看是否有重复的条码 + + List existingCodes = srmMaterialReceiptCanCodesRepository.findByCodeIdIn(codeIds); + VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(existingCodes)).throwMessage("存在已使用的条码,不能重复使用"); + + return srmMaterialReceiptScanCodes; + + //------------------------- + + + } + + WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.get(0).getNoteNum()).one(); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在"); + // List sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order); + + + List srmMaterialReceiptScanCodes = new ArrayList<>(); + + + for (SrmMaterialReceiptQO item : request) { + //序列号和批次号验证 + List codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder); + if (CollectionUtil.isNotEmpty(codes)) { + srmMaterialReceiptScanCodes.addAll(codes); + } + boolean isQuality = materialInfoInOrder.getKzkri().equals("X"); + // 如果是质检单 + if (isQuality) { + setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId()); + } else { + setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder); + } + } + // 盘点条码是否重复 + Map duplicateCodes = srmMaterialReceiptScanCodes.stream() + .collect(Collectors.groupingBy( + SrmMaterialReceiptScanCodes::getCodeId, + Collectors.counting() + )) + .entrySet() + .stream() + .filter(entry -> entry.getValue() > 1) + .collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + + VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码"); + + normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId()); + return ApiResult.success(); + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptNoScanCodes.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptNoScanCodes.java new file mode 100644 index 00000000..af0c5410 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptNoScanCodes.java @@ -0,0 +1,65 @@ +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 = "SrmMaterialReceiptNoScanCodes") +public class SrmMaterialReceiptNoScanCodes { + @Id + private String id; + + /** + * 收货单的单号 + */ + private String orderNo; + + /*** + * 收货单的单行ID号 + * + */ + private Long orderItemId; + /** + * 二维码编号 + */ + private String codeId; + + /** + * 数量 + */ + @NotNull + private BigDecimal codeNum; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号 + */ + private String serialNumbers; + + /** + * 二维码内容 + */ + private String codeContent; + + private String key; + + public String getKey() { + return this.batchNumber + ";" + this.serialNumbers; + } + + /** + * 是否已上架 + */ + private Boolean IsIntoStorage; +} 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 index 5d0d6b32..ff052d68 100644 --- 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 @@ -59,7 +59,8 @@ public class SrmMaterialReceiptScanCodes { } /** - * 是否在 + * 是否已上架 */ private Boolean IsIntoStorage; + } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptNoScanCodesRepository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptNoScanCodesRepository.java new file mode 100644 index 00000000..f55ce32f --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptNoScanCodesRepository.java @@ -0,0 +1,21 @@ +package com.nflg.wms.admin.repository; + +import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptNoScanCodes; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.mongodb.repository.Update; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SrmMaterialReceiptNoScanCodesRepository + extends MongoRepository { + List findByOrderItemId(Long orderItemId); + + List findByCodeIdIn(List attr0); + + @Query("{ 'codeId' : { $in : ?0 } }") + @Update("{ $set : { 'isIntoStorage' : ?1 } }") + void updateIsIntoStorage(List codeIds, boolean isIntoStorage); +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java index dd0bf70a..d90ea90e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java @@ -9,7 +9,8 @@ import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface SrmMaterialReceiptScanCodesRepository extends MongoRepository { +public interface SrmMaterialReceiptScanCodesRepository + extends MongoRepository { List findByOrderItemId(Long orderItemId); List findByCodeIdIn(List attr0); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java index 4aabd43a..07f2906d 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java @@ -20,27 +20,21 @@ public class SAPCommonService { @Resource private SapService sapService; - public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) { - -// SAPSyncParamsDTO dto = new SAPSyncParamsDTO(); -// dto.setMaktx("物料描述"); -// dto.setEbelp("1"); -// dto.setMatnr(materialNo); -// dto.setMenge(new BigDecimal(100)); -// dto.setWemng(new BigDecimal(10)); -// dto.setMeins("PC"); -// dto.setEbeln(orderNo); -// dto.setTransportNum(new BigDecimal(80)); -// dto.setMatkl("物料组"); -// dto.setWgbez("物料描述"); -// dto.setWerks("1010"); -// dto.setLbprt("1"); -// dto.setKzkri(""); -// dto.setWarehouseNo("122222"); -// dto.setBinNos("2121"); -// return dto; + /** + * 获取物料信息 + * + * @param orderNo 订单号 + * @param supplierNo 供应商代码 + * @param materialNo 物料编号 + * @param orderItemNo 订单行项目号 + * @return + */ + public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo, String orderItemNo) { //获取订单信息 - SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0); + List sapMaterialInfoInOrder = sapService.zim004(orderNo, supplierNo, materialNo); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(sapMaterialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo); + SAPMaterialInfoInOrderDTO materialInfoInOrder = sapMaterialInfoInOrder.stream().filter(item -> item.getEbelp().equals(orderItemNo)).findFirst().orElse(null); + // SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0); VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo); SAPSyncParamsDTO syncParams = new SAPSyncParamsDTO(); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodeLessReceivingQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodeLessReceivingQO.java index d68e87c5..6a1ab596 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodeLessReceivingQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BarcodeLessReceivingQO.java @@ -27,15 +27,23 @@ public class BarcodeLessReceivingQO { */ private String serialNumbers; - /** * 库存地点 */ private String receivedWarehouse; - /** * 是否质检 */ private Boolean isQuality; + + /** + * 未收货数量 + */ + private BigDecimal unRecieveQty; + + /** + * 制造商 + */ + private String supplierNum; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodeLessReceivingVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodeLessReceivingVO.java index ce013fbe..de0ff371 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodeLessReceivingVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BarcodeLessReceivingVO.java @@ -17,7 +17,7 @@ public class BarcodeLessReceivingVO { /** * 送货单ID */ - private String orderId; + private Long orderId; /** * 采购订单号 */ @@ -36,7 +36,7 @@ public class BarcodeLessReceivingVO { /** * 送货单号 */ - private String noteNum; + private String noteNum; /** * 物料编码 @@ -99,5 +99,23 @@ public class BarcodeLessReceivingVO { */ private Boolean isQuality; + /** + * 物料属性 + * // 1 - 批次号为空,序列号为空 + * // 2 - 批次号必填,序列号为空 + * // 3 - 批次号为空,序列号必填 + * // 4 - 批次号必填,序列号必填 + */ + private String lbprt; + + /** + * 货位编号 + */ + private String binNos; + + /** + *SAP 未收货数量 + */ + private BigDecimal transportNum; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsPoReceipt.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsPoReceipt.java index 927f1736..f2918a02 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsPoReceipt.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsPoReceipt.java @@ -77,4 +77,11 @@ public class WmsPoReceipt implements Serializable { * 入库人姓名 */ private String updateUserName; + + /** + * 入库单来源类型 + * 0 来源于扫码收货 + * 1 无码收货 + */ + private Integer sourceType; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceive.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceive.java index 5ca39cdb..4b37ae7e 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceive.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceive.java @@ -82,4 +82,11 @@ public class WmsQcReceive implements Serializable { * 是否已开检测 */ private Boolean isCheck; + + /** + * 入库单来源类型 + * 0 来源于扫码收货 + * 1 无码收货 + */ + private Integer sourceType; }