From dbe44bba4305ef464d929b76f7aa147a8f8259a9 Mon Sep 17 00:00:00 2001 From: yinq Date: Wed, 25 Jun 2025 13:16:53 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E6=8C=89=E6=94=B6=E6=96=99?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=8D=95=E6=94=B6=E6=96=99=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E9=99=90=E5=88=B6=E5=85=A5=E5=BA=93=E3=80=81=E5=89=A9?= =?UTF-8?q?=E4=BD=99=E5=87=BA=E5=BA=93=E6=95=B0=E9=87=8F=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/controller/WmsMobileController.java | 2 +- .../java/com/hw/wms/domain/WmsRawInstock.java | 26 +++++++++++++++++++ .../hw/wms/mapper/WmsRawInstockMapper.java | 8 ++++++ .../wms/service/IWmsRawOutstockService.java | 2 +- .../impl/WmsRawInstockServiceImpl.java | 19 +++++++++++++- .../impl/WmsRawOutstockServiceImpl.java | 26 ++++++++++++------- .../mapper/wms/WmsRawInstockMapper.xml | 20 +++++++++++++- 7 files changed, 89 insertions(+), 14 deletions(-) diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsMobileController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsMobileController.java index 5e07d5ea..ae2ce161 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsMobileController.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsMobileController.java @@ -162,7 +162,7 @@ public class WmsMobileController extends BaseController { @Log(title = "原材料出库记录", businessType = BusinessType.CONFIRM) @PostMapping(("/confirmRawOutstock")) public AjaxResult confirmRawOutstock(@Validated @RequestBody WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) { - return toAjax(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo)); + return success(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo)); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawInstock.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawInstock.java index f8e7dd4c..6a7a9b08 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawInstock.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawInstock.java @@ -156,6 +156,32 @@ public class WmsRawInstock extends BaseEntity */ private String billNo; + /** + * 收料通知单ID + */ + private Long receiveBillId; + + /** + * 收料数量 + */ + private BigDecimal actLandAmount; + + public BigDecimal getActLandAmount() { + return actLandAmount; + } + + public void setActLandAmount(BigDecimal actLandAmount) { + this.actLandAmount = actLandAmount; + } + + public Long getReceiveBillId() { + return receiveBillId; + } + + public void setReceiveBillId(Long receiveBillId) { + this.receiveBillId = receiveBillId; + } + public String getBillNo() { return billNo; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java index 01e9423c..6dc60060 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java @@ -110,4 +110,12 @@ public interface WmsRawInstockMapper public WmsRawInstock fourthFloorLatestInstockList(); + + /** + * 通过物料条码查询收料通知单收料数量和已入库数量 + * @param materialBarcode + * @return + */ + WmsRawInstock selectPurchaseReceiveBillByBarcode(String materialBarcode); + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawOutstockService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawOutstockService.java index 51d7b60c..331e8484 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawOutstockService.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawOutstockService.java @@ -85,7 +85,7 @@ public interface IWmsRawOutstockService * @param wmsRawOutstockConfirmVo * @return */ - public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo); + public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo); /** * 查询原材料出库记录列表,供手持出库使用 diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java index de6b1bb9..b2caa0b2 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java @@ -1,6 +1,7 @@ package com.hw.wms.service.impl; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Date; import java.util.List; @@ -10,6 +11,7 @@ import com.hw.common.core.constant.WmsConstants; import com.hw.common.core.domain.R; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; +import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.RemoteMesService; @@ -152,6 +154,7 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService { @Transactional(rollbackFor = Exception.class) @Override public BigDecimal insertWmsRawInstock(WmsRawInstockVo wmsRawInstockVo) { + WmsRawInstock wmsRawInstock = new WmsRawInstock(); String materialBarcode = wmsRawInstockVo.getMaterialBarcode(); R baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER); if (baseBarcodeInfoR == null) { @@ -190,9 +193,23 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService { } } + //按收料通知单收料的数量限制入库 + WmsRawInstock checkRawInstock = wmsRawInstockMapper.selectPurchaseReceiveBillByBarcode(materialBarcode); + if (StringUtils.isNotNull(checkRawInstock) && StringUtils.isNotNull(checkRawInstock.getReceiveBillId())){ + wmsRawInstock.setReceiveBillId(checkRawInstock.getReceiveBillId()); + BigDecimal actLandAmount = checkRawInstock.getActLandAmount(); + if (instockAmount.subtract(actLandAmount).compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException("入库数量超出收料通知单数量(" + actLandAmount.setScale(2, RoundingMode.HALF_UP) + "),无法入库!"); + } + //可入库数量 + BigDecimal availableAmount = actLandAmount.subtract(checkRawInstock.getInstockAmount()); + if (instockAmount.subtract(availableAmount).compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException("可入库数量为" + checkRawInstock.getActLandAmount().setScale(2, RoundingMode.HALF_UP) + ",无法入库!"); + } + } + Date currentDate = new Date(); String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); - WmsRawInstock wmsRawInstock = new WmsRawInstock(); wmsRawInstock.setTaskCode(Seq.getId(Seq.rawInstockSeqType, Seq.rawInstockSeqCode)); wmsRawInstock.setWarehouseId(baseLocation.getWarehouseId()); wmsRawInstock.setLocationCode(locationCode); diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java index 2f7db80b..5e22f75b 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -299,11 +300,12 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { */ @Transactional(rollbackFor = Exception.class) @Override - public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) { + public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) { Long rawOutstockId = wmsRawOutstockConfirmVo.getRawOutstockDetailId(); String locationCode = wmsRawOutstockConfirmVo.getLocationCode(); String materialBarcode = wmsRawOutstockConfirmVo.getInstockBatch();//在此是物料条码,不是批次码 BigDecimal outstockAmount = wmsRawOutstockConfirmVo.getOutstockAmount(); + String result = "操作成功"; if (outstockAmount.compareTo(BigDecimal.ZERO) <= 0) { throw new ServiceException("数量需大于0"); } @@ -353,14 +355,14 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { } - WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail(); - queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId()); - queryRawOutstockDetail.setLocationCode(locationCode); - queryRawOutstockDetail.setMaterialBarcode(materialBarcode); - int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail); - if (rawOutstockDetailCount > 0) { - throw new ServiceException("此物料已经出库,不能重复出库"); - } +// WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail(); +// queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId()); +// queryRawOutstockDetail.setLocationCode(locationCode); +// queryRawOutstockDetail.setMaterialBarcode(materialBarcode); +// int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail); +// if (rawOutstockDetailCount > 0 && !batchFlag.equals(MesConstants.IS_BATCH)) { +// throw new ServiceException("此物料已经出库,不能重复出库"); +// } // if (wmsRawOutstockDetail.getQualityStatus() != null // && !wmsRawOutstockDetail.getQualityStatus().equals(WmsConstants.WMS_QUALITY_STATUS_PASS)) { @@ -376,6 +378,10 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { throw new ServiceException("出库数量不能大于" + planOutstockAmount.subtract(hadOutstockAmount)); } + if (updatedOutstockAmount.compareTo(planOutstockAmount) < 0) { + result = "剩余出库数量:" + planOutstockAmount.subtract(updatedOutstockAmount).setScale(2, RoundingMode.HALF_UP); + } + Date currentDate = new Date(); String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); @@ -399,7 +405,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { //rawstock的trigger中更新stocktotal的占用数量和库存数量 - return 1; + return result; } public WmsRawOutstock getWmsRawOutstock(WmsBaseLocation baseLocation, MesBaseBarcodeInfo baseBarcodeInfo) { diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawInstockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawInstockMapper.xml index 231f8e95..a0cd77ea 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawInstockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawInstockMapper.xml @@ -44,10 +44,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + - select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time from wms_raw_instock + select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time, receive_bill_id from wms_raw_instock + +