From 4399b58749ca585e4f4d21466e8224d446e8b832 Mon Sep 17 00:00:00 2001 From: wanghao Date: Mon, 8 Dec 2025 09:43:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=A0=B7=E5=93=81=E5=A4=84?= =?UTF-8?q?=E7=BD=AE=E5=BA=93=E5=AD=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/domain/WmsSampleDisposalRecord.java | 1 + .../dromara/wms/domain/WmsSampleLedger.java | 1 + .../domain/bo/WmsSampleDisposalRecordBo.java | 3 +- .../wms/mapper/WmsInventoryDetailsMapper.java | 2 + .../mapper/WmsSampleDisposalRecordMapper.java | 2 + .../service/IWmsInventoryDetailsService.java | 4 ++ .../impl/WmsInventoryDetailsServiceImpl.java | 15 ++++++ .../WmsSampleDisposalRecordServiceImpl.java | 47 ++++++++++++++----- .../impl/WmsSampleLedgerServiceImpl.java | 1 + .../mapper/wms/WmsInventoryDetailsMapper.xml | 11 +++++ 10 files changed, 74 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleDisposalRecord.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleDisposalRecord.java index d7b480df..584f4c5a 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleDisposalRecord.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleDisposalRecord.java @@ -81,4 +81,5 @@ public class WmsSampleDisposalRecord extends TenantEntity { */ @TableField(exist = false) private String productSpe; + } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleLedger.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleLedger.java index 45a56525..079bf9d8 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleLedger.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsSampleLedger.java @@ -125,6 +125,7 @@ public class WmsSampleLedger extends TenantEntity { */ private String projectCode; + @TableField(exist = false) /** * 项目名称 diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsSampleDisposalRecordBo.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsSampleDisposalRecordBo.java index af82676b..027f237d 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsSampleDisposalRecordBo.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsSampleDisposalRecordBo.java @@ -55,8 +55,9 @@ public class WmsSampleDisposalRecordBo extends BaseEntity { * 样品台账ID */ private Long sampleLedgerId; + private Long warehouseId; - + private Long inventoryDetailsId; } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInventoryDetailsMapper.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInventoryDetailsMapper.java index de2cb343..8ced6cdd 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInventoryDetailsMapper.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInventoryDetailsMapper.java @@ -22,4 +22,6 @@ public interface WmsInventoryDetailsMapper extends BaseMapperPlus { /** diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java index 7cc39970..7568bd8d 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInventoryDetailsService.java @@ -73,4 +73,8 @@ public interface IWmsInventoryDetailsService { WmsInventoryDetails queryInventory(WmsInventoryDetailsBo inventory); Double workUpdateInventory(Long inventoryDetailsId, Double disposalQty); + + WmsInventoryDetails selectDetailsById(Long sampleLedgerId); + + Boolean workAddUpdateInventory(WmsInventoryDetails inventoryDetails); } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java index 4b4e56c9..45dfe06d 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryDetailsServiceImpl.java @@ -166,6 +166,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi public WmsInventoryDetails queryInventory(WmsInventoryDetailsBo bo) { MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsInventoryDetails.class) .selectAll(WmsInventoryDetails.class) + .eq(WmsInventoryDetails::getDelFlag, "0") .eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryDetails::getLocationCode, bo.getLocationCode()) .eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId()) .eq(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId()) @@ -195,4 +196,18 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi baseMapper.updataDetailsByInventoryId(inventory); return inventoryAmount; } + + @Override + public WmsInventoryDetails selectDetailsById(Long sampleLedgerId) { + MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsInventoryDetails.class) + .selectAll(WmsInventoryDetails.class) + .eq(WmsInventoryDetails::getInventoryDetailsId, sampleLedgerId); + + return baseMapper.selectOne(lqw); + } + + @Override + public Boolean workAddUpdateInventory(WmsInventoryDetails inventoryDetails) { + return baseMapper.workAddUpdateInventory(inventoryDetails) > 0; + } } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleDisposalRecordServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleDisposalRecordServiceImpl.java index 74857844..74b358c2 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleDisposalRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleDisposalRecordServiceImpl.java @@ -4,15 +4,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.wms.domain.WmsBaseProduct; +import org.dromara.wms.domain.WmsInventoryDetails; +import org.dromara.wms.domain.WmsInventoryLedger; import org.dromara.wms.domain.WmsSampleDisposalRecord; import org.dromara.wms.domain.bo.WmsSampleDisposalRecordBo; import org.dromara.wms.domain.vo.WmsSampleDisposalRecordVo; +import org.dromara.wms.mapper.WmsInventoryLedgerMapper; import org.dromara.wms.mapper.WmsSampleDisposalRecordMapper; +import org.dromara.wms.service.IWmsInventoryDetailsService; import org.dromara.wms.service.IWmsSampleDisposalRecordService; import org.springframework.stereotype.Service; @@ -31,6 +37,8 @@ import java.util.Map; public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRecordService { private final WmsSampleDisposalRecordMapper baseMapper; + private final IWmsInventoryDetailsService inventoryDetailsService; + private final WmsInventoryLedgerMapper wmsInventoryLedgerMapper; /** * 查询样品处置记录 @@ -91,10 +99,34 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec @Override public Boolean insertByBo(WmsSampleDisposalRecordBo bo) { WmsSampleDisposalRecord add = MapstructUtils.convert(bo, WmsSampleDisposalRecord.class); - validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { - bo.setSampleRecordId(add.getSampleRecordId()); + // bo.setSampleRecordId(add.getSampleRecordId()); + if (add.getDisposalType().equals("0")) { + WmsInventoryDetails inventoryDetails = inventoryDetailsService.selectDetailsById(bo.getInventoryDetailsId()); + Double inventoryAmount = 0.0; + if (inventoryDetails != null) {//不直接操作数据库的情况下都有库存详情 + inventoryAmount = inventoryDetails.getInventoryAmount(); + inventoryDetails.setInventoryAmount(inventoryAmount + bo.getDisposalQty()); + inventoryDetails.setUpdateBy(LoginHelper.getUserId()); + inventoryDetails.setUpdateTime(DateUtils.getNowDate()); + inventoryDetailsService.workAddUpdateInventory(inventoryDetails); + }else { + + } + + + //库存变动 + WmsInventoryLedger wmsInventoryLedger = new WmsInventoryLedger(); + wmsInventoryLedger.setWarehouseId(bo.getWarehouseId()); + wmsInventoryLedger.setBatchNumber(bo.getBatchNumber()); + wmsInventoryLedger.setMaterielId(bo.getMaterielId()); + wmsInventoryLedger.setChangeType("5");//变动类型 + wmsInventoryLedger.setLedgerState("1"); + wmsInventoryLedger.setChangeAmount(bo.getDisposalQty()); + wmsInventoryLedger.setInventoryAmount(inventoryAmount); + wmsInventoryLedgerMapper.insert(wmsInventoryLedger); + } } return flag; } @@ -108,16 +140,9 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec @Override public Boolean updateByBo(WmsSampleDisposalRecordBo bo) { WmsSampleDisposalRecord update = MapstructUtils.convert(bo, WmsSampleDisposalRecord.class); - validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(WmsSampleDisposalRecord entity) { - //TODO 做一些数据校验,如唯一约束 - } /** * 校验并批量删除样品处置记录信息 @@ -128,9 +153,7 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 - } + return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java index 683fb808..f4634797 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java +++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsSampleLedgerServiceImpl.java @@ -139,6 +139,7 @@ public class WmsSampleLedgerServiceImpl implements IWmsSampleLedgerService { double obj = bo.getReturnQty() - disposalQty; update.setReturnQty(obj); update.setSampleState(obj == 0 ? "2" : "1"); + return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/ruoyi-wms/src/main/resources/mapper/wms/WmsInventoryDetailsMapper.xml b/ruoyi-modules/ruoyi-wms/src/main/resources/mapper/wms/WmsInventoryDetailsMapper.xml index b2a6ac4e..5dde58e5 100644 --- a/ruoyi-modules/ruoyi-wms/src/main/resources/mapper/wms/WmsInventoryDetailsMapper.xml +++ b/ruoyi-modules/ruoyi-wms/src/main/resources/mapper/wms/WmsInventoryDetailsMapper.xml @@ -18,4 +18,15 @@ where inventory_details_id = #{inventoryDetailsId} + + + update wms_inventory_details + set inventory_amount = #{inventoryAmount}, + del_flag =0, + update_by = #{updateBy}, + update_time = #{updateTime} + where inventory_details_id = #{inventoryDetailsId} + + +