From 52138c0319eb5727a9ed3c0e5dfc476b30b76534 Mon Sep 17 00:00:00 2001 From: wanghao Date: Fri, 5 Sep 2025 10:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E7=A7=BB=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/WmsPdaApiController.java | 43 +++++++++++--- .../wms/domain/vo/WmsOutstockDetailVo.java | 5 ++ .../wms/mapper/WmsOutstockRecordMapper.java | 34 ++++++++++- .../wms/mapper/WmsReturnOrderMapper.java | 4 ++ .../wms/service/IWmsInventoryService.java | 6 +- .../service/impl/WmsInventoryServiceImpl.java | 35 ++++++----- .../service/impl/WmsPdaApiServiceImpl.java | 58 +++++++++++-------- .../impl/WmsReturnOrderServiceImpl.java | 2 +- 8 files changed, 136 insertions(+), 51 deletions(-) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/WmsPdaApiController.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/WmsPdaApiController.java index f4db3657..749246a2 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/WmsPdaApiController.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/api/WmsPdaApiController.java @@ -5,6 +5,7 @@ import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; import org.dromara.wms.domain.*; import org.dromara.wms.domain.bo.WmsInstockPrintBo; +import org.dromara.wms.domain.bo.WmsMoveOrderBo; import org.dromara.wms.domain.bo.WmsReturnOrderBo; import org.dromara.wms.domain.vo.*; import org.dromara.wms.service.*; @@ -26,6 +27,8 @@ public class WmsPdaApiController extends BaseController { private final IWmsHppStorePlaceService wmsHppStorePlaceService; private final IWmsBaseAreaService baseAreaService; private final IWmsInstockPrintService wmsInstockPrintService; + private final IWmsInventoryService wmsInventoryService; + private final IWmsMoveOrderService wmsMoveOrderService; /** * 原材料退库-现场扫描 @@ -49,7 +52,7 @@ public class WmsPdaApiController extends BaseController { } /** - * 原材料退库提交 + * 退库申请提交 */ @PostMapping("/raw/returnSubmit") public R rawReturnSubmit(@RequestBody WmsReturnOrderBo bo) { @@ -68,8 +71,12 @@ public class WmsPdaApiController extends BaseController { } // 退库入库提交 - @PostMapping("/returnStore/submit") + @PostMapping("/returnInstore/submit") public R returnStoreSubmit(@RequestBody WmsReturnOrderVo data) { + WmsBaseLocationVo wmsBaseLocationVo = baseLocationService.selectLocationVoByCode(data.getReturnLocationCode()); + if (wmsBaseLocationVo == null) { + return R.fail("库位条码扫描错误"); + } Boolean result = wmsReturnOrderService.returnStoreSubmit(data); return toAjax(result); } @@ -143,6 +150,17 @@ public class WmsPdaApiController extends BaseController { @PostMapping("/raw/outSelectByOrderCode") public R> outSelectByOrderCode(String orderCode) { List wmsOutstockDetailVo = apiService.outSelectByOrderCode(orderCode); + wmsOutstockDetailVo.forEach(item -> { + WmsInventoryVo inventory = wmsInventoryService.selectOrderBeachCode(item.getMaterialId()); + if (inventory != null) { + item.setLocationCode(inventory.getLocationCode()); + item.setBatchCode(inventory.getBatchCode()); + item.setInventoryQty(inventory.getInventoryQty()); + } + + }); + + if (wmsOutstockDetailVo == null) return R.fail("出库单号不正确"); return R.ok(wmsOutstockDetailVo); } @@ -151,13 +169,13 @@ public class WmsPdaApiController extends BaseController { * 原材料出库提交 */ @PostMapping("/raw/selectInVentoryByBatchCode") - public R rawSelectInVentoryByBatchCode(WmsOutstockRecord outstockRecord) { + public R rawSelectInVentoryByBatchCode(@RequestBody WmsOutstockRecord outstockRecord) { // 验证库存 WmsInventory wmsInventory = apiService.outSelectInVentoryByBatch(outstockRecord); if (wmsInventory == null) { - R.fail("物料不在待出库列表内"); + return R.fail("物料扫描错误"); } - assert wmsInventory != null; + if (wmsInventory.getInventoryQty().compareTo(outstockRecord.getOutstockQty()) < 0) { R.fail("当前库位库存为:" + wmsInventory.getInventoryQty()); } @@ -173,10 +191,10 @@ public class WmsPdaApiController extends BaseController { // 验证库存 WmsInventoryVo WmsInventoryVo = apiService.selectInVentoryByBatchCode(outstockRecord.getBatchCode(), outstockRecord.getLocationCode()); if (WmsInventoryVo == null) { - R.fail("条码扫描错误"); + return R.fail("条码扫描错误"); } if (WmsInventoryVo.getInventoryQty().compareTo(outstockRecord.getOutstockQty()) < 0) { - R.fail("无法出库,当前库位库存为:" + WmsInventoryVo.getInventoryQty()); + return R.fail("无法出库,当前库位库存为:" + WmsInventoryVo.getInventoryQty()); } WmsInventory wmsInventory = new WmsInventory(); BeanUtils.copyProperties(WmsInventoryVo, wmsInventory); @@ -199,15 +217,24 @@ public class WmsPdaApiController extends BaseController { } // 移库提交 - @GetMapping("/moveSubmit") + @PostMapping("/moveSubmit") public R moveSubmit(@RequestBody WmsInventoryVo vo) { // 验证库位 WmsBaseLocationVo wmsBaseLocationVo = baseLocationService.selectLocationVoByCode(vo.getNewLocationCode()); if (wmsBaseLocationVo == null) { return R.fail("库位条码扫描错误"); } + WmsMoveOrderBo moveOrderBo = new WmsMoveOrderBo(); + moveOrderBo.setOrderStatus("1"); + moveOrderBo.setMaterialId(vo.getMaterialId()); + moveOrderBo.setWarehouseId(wmsBaseLocationVo.getWarehouseId()); + moveOrderBo.setPlanLocationCode(vo.getLocationCode()); + moveOrderBo.setTargetLocationCode(vo.getNewLocationCode()); + wmsMoveOrderService.insertByBo(moveOrderBo); boolean result = apiService.moveSubmit(vo); + + return result ? R.ok() : R.fail(); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsOutstockDetailVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsOutstockDetailVo.java index cac3efe9..bff1706f 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsOutstockDetailVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsOutstockDetailVo.java @@ -123,4 +123,9 @@ public class WmsOutstockDetailVo implements Serializable { * 出库数量 */ private BigDecimal outstockQty; + + + private String batchCode; + private String locationCode; + private BigDecimal inventoryQty; } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsOutstockRecordMapper.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsOutstockRecordMapper.java index 6eafe674..ac8ed6ad 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsOutstockRecordMapper.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsOutstockRecordMapper.java @@ -1,8 +1,10 @@ package org.dromara.wms.mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.wms.domain.WmsOutstockRecord; import org.dromara.wms.domain.vo.WmsOutstockRecordVo; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.springframework.stereotype.Repository; /** @@ -13,5 +15,33 @@ import org.springframework.stereotype.Repository; */ @Repository public interface WmsOutstockRecordMapper extends BaseMapperPlus { - +@Select("SELECT top 1 t.outstock_record_id,\n" + + " t.outstock_code,\n" + + " t.outstock_id,\n" + + " t.batch_code,\n" + + " t.material_id,\n" + + " t.location_code,\n" + + " t.outstock_qty,\n" + + " t.material_categories,\n" + + " t.erp_synchronous_status,\n" + + " t.erp_synchronous_qty,\n" + + " t.special_type,\n" + + " t.return_flag,\n" + + " t.tenant_id,\n" + + " t.create_dept,\n" + + " t.create_by,\n" + + " t.create_time,\n" + + " t.update_by,\n" + + " t.update_time,\n" + + " t1.material_code,\n" + + " t1.ro_id,\n" + + " t1.material_name,\n" + + " t1.material_unit,\n" + + " t1.material_spec\n" + + "FROM wms_outstock_record t\n" + + " LEFT JOIN base_material_info_copy1 t1 ON (t1.material_id = t.material_id)\n" + + "WHERE t.batch_code = #{code}\n" + + "\n" + + "ORDER BY t.create_time DESC") + WmsOutstockRecordVo returnSelectCode(@Param("code") String code); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReturnOrderMapper.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReturnOrderMapper.java index d261a0c2..c1e9bd62 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReturnOrderMapper.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReturnOrderMapper.java @@ -2,6 +2,7 @@ package org.dromara.wms.mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.wms.domain.WmsReturnOrder; import org.dromara.wms.domain.vo.WmsReturnOrderVo; @@ -18,4 +19,7 @@ public interface WmsReturnOrderMapper extends BaseMapperPlus queryInventoryLedgerList(WmsInventoryLedgerBo bo); + + WmsInventoryVo selectOrderBeachCode(Long materialId); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryServiceImpl.java index c2217057..35d7e59e 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryServiceImpl.java @@ -18,8 +18,8 @@ import org.dromara.wms.domain.WmsInventory; import org.dromara.wms.domain.bo.WmsInventoryBo; import org.dromara.wms.domain.bo.WmsInventoryLedgerBo; import org.dromara.wms.domain.bo.WmsMoveOrderBo; -import org.dromara.wms.domain.vo.WmsInventoryVo; import org.dromara.wms.domain.vo.WmsInventoryLedgerVo; +import org.dromara.wms.domain.vo.WmsInventoryVo; import org.dromara.wms.mapper.WmsInventoryMapper; import org.dromara.wms.service.IWmsInventoryService; import org.springframework.stereotype.Service; @@ -46,7 +46,7 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { * @return 物料库存 */ @Override - public WmsInventoryVo queryById(Long inventoryId){ + public WmsInventoryVo queryById(Long inventoryId) { return baseMapper.selectVoById(inventoryId); } @@ -168,7 +168,7 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(WmsInventory entity){ + private void validEntityBeforeSave(WmsInventory entity) { //TODO 做一些数据校验,如唯一约束 } @@ -202,22 +202,22 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { @Override public HashMap> selectInventorys(WmsMoveOrderBo bo) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(WmsInventory::getLocationCode,bo.getPlanLocationCode()) - .eq(WmsInventory::getMaterialId,bo.getMaterialId()); + lqw.eq(WmsInventory::getLocationCode, bo.getPlanLocationCode()) + .eq(WmsInventory::getMaterialId, bo.getMaterialId()); List planList = baseMapper.selectVoList(lqw); LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); - lqw1.eq(WmsInventory::getLocationCode,bo.getTargetLocationCode()) - .eq(WmsInventory::getMaterialId,bo.getMaterialId()); + lqw1.eq(WmsInventory::getLocationCode, bo.getTargetLocationCode()) + .eq(WmsInventory::getMaterialId, bo.getMaterialId()); List targetList = baseMapper.selectVoList(lqw1); HashMap> result = new HashMap<>(); - result.put("planList",planList); - result.put("targetList",targetList); + result.put("planList", planList); + result.put("targetList", targetList); return result; } @Override public BigDecimal materailCount(WmsInventory wmsInventory) { - return baseMapper.materailCount(wmsInventory); + return baseMapper.materailCount(wmsInventory); } /** @@ -229,7 +229,7 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; @@ -270,7 +270,8 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { /** * 根据批次码查询库存 - * @param batchCode 批次码 + * + * @param batchCode 批次码 * @param locationCode 库位编码 * @return 库存VO */ @@ -415,5 +416,13 @@ public class WmsInventoryServiceImpl implements IWmsInventoryService { } } - + @Override + public WmsInventoryVo selectOrderBeachCode(Long materialId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(WmsInventory::getMaterialId, materialId) + .gt(WmsInventory::getInventoryQty, BigDecimal.ZERO) + .eq(WmsInventory::getLockState, 0) + .orderByAsc(WmsInventory::getCreateTime); + return baseMapper.selectVoOne(lqw); + } } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java index 8af7a00a..2f400e6b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPdaApiServiceImpl.java @@ -49,27 +49,30 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { @Override public WmsOutstockRecordVo returnSelectCode(String code) { - MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsOutstockRecord.class) - .selectAll(WmsOutstockRecord.class) - .select(BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialUnit, BaseMaterialInfo::getMaterialSpec) - .leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsOutstockRecord::getMaterialId) +// MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsOutstockRecord.class) +// .selectAll(WmsOutstockRecord.class) +// .select(BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialUnit, BaseMaterialInfo::getMaterialSpec) +// .leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsOutstockRecord::getMaterialId) +// +// // +// // .select(BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialUnit, BaseMaterialInfo::getMaterialSpec) +// // .leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsOutstockRecord::getMaterialId) +// // +// // // .select(WmsBaseLocation::getWarehouseId) +// // // .leftJoin(WmsBaseLocation.class, WmsBaseLocation::getLocationCode, WmsOutstockRecord::getLocationCode) +// // /* 关联仓库改为关联区域,先查区域再查仓库 */ +// // // 关联库位信息获取区域ID +// // .select(WmsBaseLocation::getAreaId) +// // .leftJoin(WmsBaseLocation.class, WmsBaseLocation::getLocationCode, WmsOutstockRecord::getLocationCode) +// // // 关联区域信息获取仓库ID +// // .select(WmsBaseArea::getWarehouseId) +// // .leftJoin(WmsBaseArea.class, WmsBaseArea::getAreaId, WmsBaseLocation::getAreaId) +// .eq(WmsOutstockRecord::getBatchCode, code) +// .eq(WmsOutstockRecord::getReturnFlag, 0) +// .orderByDesc(WmsOutstockRecord::getCreateTime); -// .select(WmsBaseLocation::getWarehouseId) -// .leftJoin(WmsBaseLocation.class, WmsBaseLocation::getLocationCode, WmsOutstockRecord::getLocationCode) - /* 关联仓库改为关联区域,先查区域再查仓库 */ - // 关联库位信息获取区域ID - .select(WmsBaseLocation::getAreaId) - .leftJoin(WmsBaseLocation.class, WmsBaseLocation::getLocationCode, WmsOutstockRecord::getLocationCode) - // 关联区域信息获取仓库ID - .select(WmsBaseArea::getWarehouseId) - .leftJoin(WmsBaseArea.class, WmsBaseArea::getAreaId, WmsBaseLocation::getAreaId) - - .eq(WmsOutstockRecord::getBatchCode, code) - .eq(WmsOutstockRecord::getReturnFlag, 0) - .orderByDesc(WmsOutstockRecord::getCreateTime); - - return wmsOutstockRecordMapper.selectVoOne(lqw); + return wmsOutstockRecordMapper.returnSelectCode(code); } @Override @@ -225,7 +228,9 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { @Override public List outSelectByOrderCode(String orderCode) { - MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsOutstockDetail.class).selectAll(WmsOutstockDetail.class).select(BaseMaterialInfo::getMaterialUnit, BaseMaterialInfo::getMaterialSpec).leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsOutstockDetail::getMaterialId).eq(WmsOutstockDetail::getOutstockCode, orderCode); + MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsOutstockDetail.class) + .selectAll(WmsOutstockDetail.class) + .select(BaseMaterialInfo::getMaterialUnit, BaseMaterialInfo::getMaterialSpec).leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsOutstockDetail::getMaterialId).eq(WmsOutstockDetail::getOutstockCode, orderCode); return wmsOutstockDetailMapper.selectVoList(lqw); } @@ -257,14 +262,14 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { */ @Override public Boolean rawOutSubmit(WmsOutstockRecord outstockRecord, WmsInventory wmsInventory) { - outStoreOperation(outstockRecord, wmsInventory); + outStoreOperation(outstockRecord, wmsInventory,"5"); // 修改子表出库数量 wmsOutstockDetailMapper.updateOutNumberByObjId(wmsInventory.getOutstockDetailId(), outstockRecord.getOutstockQty()); return true; } // 出库操作 - private void outStoreOperation(WmsOutstockRecord outstockRecord, WmsInventory wmsInventory) { + private void outStoreOperation(WmsOutstockRecord outstockRecord, WmsInventory wmsInventory,String type) { // 出库数量 BigDecimal outstockQty = outstockRecord.getOutstockQty(); // 库存 @@ -282,6 +287,7 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { outstockRecord.setMaterialId(wmsInventory.getMaterialId()); outstockRecord.setCreateBy(LoginHelper.getUserId()); outstockRecord.setCreateTime(DateUtils.getNowDate()); + outstockRecord.setSpecialType(type); wmsOutstockRecordMapper.insert(outstockRecord); } @@ -295,7 +301,7 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { @Override public Boolean specialOutSubmit(WmsOutstockRecord outstockRecord, WmsInventory wmsInventory) { // 出库数量 - outStoreOperation(outstockRecord, wmsInventory); + outStoreOperation(outstockRecord, wmsInventory,"6"); return true; } @@ -305,15 +311,17 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService { @Override public WmsInventory outSelectInVentoryByBatch(WmsOutstockRecord outstockRecord) { MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsInventory.class) + .selectAll(WmsInventory.class) .rightJoin(WmsOutstockDetail.class, WmsOutstockDetail::getMaterialId, WmsInventory::getMaterialId). - select(WmsOutstockDetail::getOutstockDetailId).eq(WmsOutstockDetail::getOutstockCode, outstockRecord.getOutstockCode()) + select(WmsOutstockDetail::getOutstockDetailId) + .eq(WmsOutstockDetail::getOutstockCode, outstockRecord.getOutstockCode()) .eq(WmsInventory::getBatchCode, outstockRecord.getBatchCode()).eq(WmsInventory::getLocationCode, outstockRecord.getLocationCode()); return wmsInventoryMapper.selectOne(lqw); } @Override public List selectStoreInfo(String type) { - if (type.equals("原材料盘点")) { + if (type.equals("盘点")) { return apiMapper.selectRawStore(); } else if (type.equals("半成品盘点")) { return apiMapper.selectSemiStore(); diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReturnOrderServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReturnOrderServiceImpl.java index e7e498c8..89a0cfa5 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReturnOrderServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReturnOrderServiceImpl.java @@ -187,7 +187,7 @@ public class WmsReturnOrderServiceImpl implements IWmsReturnOrderService { wmsReturnOrder.setUpdateBy(LoginHelper.getUsername()); wmsReturnOrder.setReturnAmount(data.getPlanAmount()); wmsReturnOrder.setOrderStatus(String.valueOf(1)); - int i = baseMapper.updateById(wmsReturnOrder); + int i = baseMapper.updateTable(wmsReturnOrder); return i > 0; } }