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 14a67d1b..ee6bc310 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 @@ -7,6 +7,7 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; import com.nflg.wms.admin.pojo.dto.QCMaterialSyncDTO; @@ -1085,27 +1086,113 @@ public class NormalPGIController extends BaseController { //------------------------------------通过大包物料扫码收货------------------------------------ -// @PostMapping("scanPackage") -// @ApiMark(moduleName = "打包扫码", apiName = "通过打包码获取到打包码的信息") -// public ApiResult scanPackage(@Valid @RequestBody StrappingQO request) { -// -// } -// -// @PostMapping("getPackageOrders") -// @ApiMark(moduleName = "获取打包码对应的送货单信息", apiName = "获取打包码对应的送货单信息") -// public ApiResult scanPackage(@Valid @RequestBody StrappingQO request) { -// -// } -// -// @PostMapping("getPackageOrderItems") -// @ApiMark(moduleName = "根据送货单单号和大码的ID获取到具体的物料信息", apiName = "根据送货单单号和大码的ID获取到具体的物料信息") -// public ApiResult scanPackage(@Valid @RequestBody StrappingQO request) { -// -// } -// -// @PostMapping("getPackageOrderItems") -// @ApiMark(moduleName = "根据送货单单号和大码的ID获取到具体的物料信息", apiName = "根据送货单单号和大码的ID获取到具体的物料信息") -// public ApiResult scanPackage(@Valid @RequestBody StrappingQO request) { -// -// } + + /** + * 通过打包码获取到打包码的信息 + * @param request + * @return + */ + @PostMapping("scanPackage") + @ApiMark(moduleName = "打包扫码", apiName = "通过打包码获取到打包码的信息") + public ApiResult scanPackage(@Valid @RequestBody PackingPDASearchQO request) { + // 首先判断当前包是否已经收货了 + PacageScanVO pacageScanVO = wmsPackageService.getPackageInfo(request.getPackageCode()); + VUtil.trueThrowBusinessError(ObjectUtil.isNull(pacageScanVO)).throwMessage("打包码不存在"); + VUtil.trueThrowBusinessError(pacageScanVO.getPackageStatus() == 0).throwMessage("此打包码尚未打包"); + VUtil.trueThrowBusinessError(pacageScanVO.getPackageStatus() == 2).throwMessage("此打包码已收货"); + + return ApiResult.success(pacageScanVO); + } + + /** + * 获取打包码对应的送货单信息 + * @param request + * @return + */ + @PostMapping("getPackageOrders") + @ApiMark(moduleName = "获取打包码对应的送货单信息", apiName = "获取打包码对应的送货单信息") + public ApiResult> getPackageOrders(@Valid @RequestBody FilterIdQO request) { + return ApiResult.success(wmsPackageService.getPackageOrders(request.getId())); + } + + /** + * 根据送货单单号和大码的ID获取到具体的物料信息 + * @param request + * @return + */ + @PostMapping("getPackageOrderItems") + @ApiMark(moduleName = "根据送货单单号和大码的ID获取到具体的物料信息", apiName = "根据送货单单号和大码的ID获取到具体的物料信息") + public ApiResult> scanPackage(@Valid @RequestBody PackagePoSearchQO request) { + return ApiResult.success(wmsPackageService.getPackageOrderItems(request.getPackageId(), request.getDeliveryNo())); + } + + /** + * 根据送货单单号和大码的ID获取到具体的物料信息 + * @param request id= 大码的ID + * @return + */ + @PostMapping("getPackageOrderItems") + @ApiMark(moduleName = "根据送货单单号和大码的ID获取到具体的物料信息", apiName = "根据送货单单号和大码的ID获取到具体的物料信息") + public ApiResult> scanPackage(@Valid @RequestBody FilterIdQO request) { + List list = wmsPackageService.getPendingScannings(request.getId()); + if (CollectionUtil.isNotEmpty(list)) { + list.forEach(vo -> { + if (vo.getIsCounting() != null && vo.getIsCounting() == 0) { + vo.setPendingScanQuantity(vo.getPackingQuantity()); + } + }); + } + return ApiResult.success(list); + } + + @PostMapping("takeDeliveryConfirmUnScan") + @ApiMark(moduleName = "无需扫码收货", apiName = "无需扫码收货") + public ApiResult takeDeliveryConfirmUnScan(@Valid @RequestBody PendingUnScanningQO request) { + VUtil.trueThrowBusinessError(request.getBarcodeIds().stream().distinct().count() != request.getBarcodeIds().size()).throwMessage("存在重复的码"); + // 重新验证所有码的合法性 1、是否是已打包未收货的状态;2、是否全部是已启用储位管理的状态 + List pacageScanVO = wmsPackageService.getPackageInfos(request.getBarcodeIds()); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(pacageScanVO)).throwMessage("打包码不存在"); + + long count = pacageScanVO.stream() + .filter(pkg -> Objects.equals(pkg.getPackageStatus(), (short) 0)) + .count(); + VUtil.trueThrowBusinessError(count >= 0).throwMessage("存在尚未打包的码"); + long count1 = pacageScanVO.stream() + .filter(pkg -> Objects.equals(pkg.getPackageStatus(), (short) 2)) + .count(); + VUtil.trueThrowBusinessError(count1 >= 0).throwMessage("存在已经收货的码"); + + long count2 = pacageScanVO.stream() + .filter(pkg -> Objects.equals(pkg.getIsCounting(), 1)) + .count(); + VUtil.trueThrowBusinessError(count2 >= 0).throwMessage("存在必须扫码的包装"); + List items = wmsPackageService.getScanningItems(request.getBarcodeIds()); + //对箱码要做出来,将箱码换成对应的物料码 + List<> + + //根据包装信息获取对应的物料收货信息 + List receiptQOS = new ArrayList<>(); + //首先要对上面的信息 按照 srmId进行分组,汇总quantity + + for (PendingScanningItemDTO item : items) + { + SrmMaterialReceiptQO qo = new SrmMaterialReceiptQO() + .setNoteNum(item.getDeliveryNo()) + .setLineNumber(item.getDeliveryLineNo()) + .setPoNum(item.getPoNumber()) + .setPoLineNumber(item.getPoLineNumber()) + .setItemCode(item.getMaterialCode()) + .setId(item.getSrmId()) + .setReceiptNum(item.getQuantity()); + + // .setScanCodes(item.getScanCodes()); + } + + + } + + @PostMapping("takeDeliveryConfirmByScan") + @ApiMark(moduleName = "需扫码收货", apiName = "需扫码收货") + public ApiResult takeDeliveryConfirmByScan(@Valid @RequestBody List request) { + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PendingScanningItemDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PendingScanningItemDTO.java new file mode 100644 index 00000000..a7c4ee2d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PendingScanningItemDTO.java @@ -0,0 +1,68 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class PendingScanningItemDTO { + /** + * 待扫描的包装物ID + */ + private Long id; + /** + * 待扫描的包装物条码 + */ + private String barcodeCode; + /** + * 待扫描的包装物数量 + */ + private BigDecimal quantity; + /** + * 待扫描的包装物物料编码 + */ + private String materialCode; + /** + * 待扫描的包装物包装类型 0 物料;1 箱 + */ + private short packagingType; + /** + * 待扫描的包装物PO单号 + */ + private String poNumber; + /** + * 待扫描的包装物PO行号 + */ + private String poLineNumber; + /** + * 待扫描的包装物收货单号 + */ + private String deliveryNo; + /** + * 待扫描的包装物收货单行号 + */ + private String deliveryLineNo; + /** + * 待扫描的包装物单位 + */ + private String unit; + /** + * 待扫描的包装物序列号 + */ + private String serialNo; + /** + * 待扫描的包装物批次号 + */ + private String batchNo; + /** + * 待扫描的包装物物料描述 + */ + private String materialDescription; + + /** + * srm传入的送货单项ID + */ + private Long srmId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackagePoSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackagePoSearchQO.java new file mode 100644 index 00000000..b59bc42f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackagePoSearchQO.java @@ -0,0 +1,17 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PackagePoSearchQO { + /** + * 包ID + */ + private Long packageId; + /** + * 送货单号 + */ + private String deliveryNo; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingScanningQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingScanningQO.java new file mode 100644 index 00000000..23a761a4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingScanningQO.java @@ -0,0 +1,21 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class PendingScanningQO { + /** + * 物料二维码ID + */ + private Long barcodeId; + + /** + * 待扫数量 + */ + private BigDecimal pendingScanQuantity; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingUnScanningQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingUnScanningQO.java new file mode 100644 index 00000000..0168c251 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PendingUnScanningQO.java @@ -0,0 +1,15 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class PendingUnScanningQO { + /** + * 包装物ID + */ + private List barcodeIds; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PacageScanVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PacageScanVO.java index 54e629a1..0c262300 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PacageScanVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PacageScanVO.java @@ -28,6 +28,10 @@ public class PacageScanVO { */ private String packageName; + /** + * 状态 0 未打包;1 已打包;2 已收货 + */ + private Short packageStatus; /** * 是否需要点数 0 不需要点数;1 需要点数 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PendingScanningVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PendingScanningVO.java index 65babab6..4d4dd1d4 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PendingScanningVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/PendingScanningVO.java @@ -83,4 +83,8 @@ public class PendingScanningVO { */ private String deliveryLineNo; + /** + * 是否需要点数 0 不需要点数;1 需要点数 + */ + private Integer isCounting; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsPackageMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsPackageMapper.java index 02c014d2..b297fb68 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsPackageMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsPackageMapper.java @@ -4,10 +4,10 @@ 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.PageData; +import com.nflg.wms.common.pojo.dto.PendingScanningItemDTO; import com.nflg.wms.common.pojo.qo.PackingQO; import com.nflg.wms.common.pojo.qo.PackingSearchQO; -import com.nflg.wms.common.pojo.vo.PackingItemPDAVO; -import com.nflg.wms.common.pojo.vo.PackingVO; +import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.repository.entity.WmsPackage; import java.util.List; @@ -27,4 +27,16 @@ public interface WmsPackageMapper extends BaseMapper { IPage search(PackingSearchQO request, Page objectPage); List getChildPackageContent(Long id); + + PacageScanVO getPackageInfo(String packageCode); + + List getPackageOrders(Long id); + + List getPackageOrderItems(Long packageId, String deliveryNo); + + List getPendingScannings(Long id); + + List getPackageInfos(List barcodeIds); + + List getScanningItems(List barcodeIds); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsPackageService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsPackageService.java index 9b947d6e..8120b958 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsPackageService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsPackageService.java @@ -2,10 +2,10 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.PendingScanningItemDTO; import com.nflg.wms.common.pojo.qo.PackingQO; import com.nflg.wms.common.pojo.qo.PackingSearchQO; -import com.nflg.wms.common.pojo.vo.PackingItemPDAVO; -import com.nflg.wms.common.pojo.vo.PackingVO; +import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.repository.entity.WmsPackage; import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.wms.repository.entity.WmsPackageItem; @@ -35,4 +35,16 @@ public interface IWmsPackageService extends IService { IPage serach(@Valid PackingSearchQO request); List getChildPackageContent(@NotNull Long id); + + PacageScanVO getPackageInfo(String packageCode); + + List getPackageOrders(@NotNull Long id); + + List getPackageOrderItems(Long packageId, String deliveryNo); + + List getPendingScannings(@NotNull Long id); + + List getPackageInfos(List barcodeIds); + + List getScanningItems(List barcodeIds); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsPackageServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsPackageServiceImpl.java index 0789e9d0..341b77dd 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsPackageServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsPackageServiceImpl.java @@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.PendingScanningItemDTO; import com.nflg.wms.common.pojo.qo.PackingQO; import com.nflg.wms.common.pojo.qo.PackingSearchQO; -import com.nflg.wms.common.pojo.vo.PackingItemPDAVO; -import com.nflg.wms.common.pojo.vo.PackingVO; +import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.repository.entity.WmsPackage; import com.nflg.wms.repository.entity.WmsPackageItem; import com.nflg.wms.repository.entity.WmsQrCodeMaster; @@ -107,5 +107,35 @@ public class WmsPackageServiceImpl extends ServiceImpl getPackageOrders(Long id) { + return baseMapper.getPackageOrders(id); + } + + @Override + public List getPackageOrderItems(Long packageId, String deliveryNo) { + return baseMapper.getPackageOrderItems(packageId, deliveryNo); + } + + @Override + public List getPendingScannings(Long id) { + return baseMapper.getPendingScannings(id); + } + + @Override + public List getPackageInfos(List barcodeIds) { + return baseMapper.getPackageInfos(barcodeIds); + } + + @Override + public List getScanningItems(List barcodeIds) { + return baseMapper.getScanningItems(barcodeIds); + } + } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsPackageMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsPackageMapper.xml index 66604ac8..dc98ea85 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsPackageMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsPackageMapper.xml @@ -28,7 +28,7 @@ + + + + + + + + + + + + +