diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/BalanceController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/BalanceController.java index 743706ca..fe920d14 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/BalanceController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/BalanceController.java @@ -7,10 +7,8 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.balance.vo.BalanceExcelVO; -import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; -import com.win.module.wms.controller.balance.vo.BalancePageReqVO; -import com.win.module.wms.controller.balance.vo.BalanceRespVO; +import com.win.module.wms.controller.balance.vo.*; +import com.win.module.wms.controller.productdismantleRecord.vo.ProductdismantleRecordMainUpdateReqVO; import com.win.module.wms.convert.balance.BalanceConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.service.balance.BalanceService; @@ -40,6 +38,14 @@ public class BalanceController { @Resource private AdminUserApi userApi; + @PutMapping("/update") + @Operation(summary = "更新库存余额") + @PreAuthorize("@ss.hasPermission('wms:balance:update')") + public CommonResult updateBalance(@Valid @RequestBody BalanceUpdateReqVO updateReqVO) { + balanceService.updateBalance(updateReqVO); + return success(true); + } + @GetMapping("/page") @Operation(summary = "获得库存余额分页") @PreAuthorize("@ss.hasPermission('wms:balance:query')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java index 691a34c4..710302d3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java @@ -4,6 +4,7 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; import com.win.module.wms.controller.balance.vo.BalancePageReqVO; +import com.win.module.wms.controller.balance.vo.BalanceUpdateReqVO; import com.win.module.wms.dal.dataobject.balance.BalanceDO; import java.util.List; @@ -83,4 +84,5 @@ public interface BalanceService { */ public List selectUniqueId(String packingNumber, String locationCode, List inventoryStatus); + void updateBalance(BalanceUpdateReqVO updateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java index aa8692b5..b37080eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java @@ -3,16 +3,34 @@ package com.win.module.wms.service.balance; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.system.api.user.AdminUserApi; import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; import com.win.module.wms.controller.balance.vo.BalancePageReqVO; +import com.win.module.wms.controller.balance.vo.BalanceUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.balance.BalanceConvert; +import com.win.module.wms.convert.productdismantleRecord.ProductdismantleRecordMainConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordMainDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; +import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; +import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_RECORD_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS; + /** * 库存余额 Service 实现类 * @@ -22,6 +40,12 @@ import java.util.List; @Validated public class BalanceServiceImpl implements BalanceService { + @Resource + private TransactionService transactionService; + @Resource + private AdminUserApi userApi; + @Resource + private JobUtils jobUtils; @Resource private BalanceMapper balanceMapper; @@ -144,4 +168,69 @@ public class BalanceServiceImpl implements BalanceService { return null; } } + + private BalanceDO validateBalanceExists(Long id) { + BalanceDO balanceDO = balanceMapper.selectById(id); + if (balanceDO == null) { + throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS); + } + return balanceDO; + } + + @Override + @Transactional + public void updateBalance(BalanceUpdateReqVO updateReqVO) { + // 校验存在 + // 修改前 + BalanceDO balanceDO = validateBalanceExists(updateReqVO.getId()); + // 修改后 + BalanceDO updateBalanceDO = BalanceConvert.INSTANCE.convert(updateReqVO); + //库存事务 + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + List transactionCreateReqVOList = new ArrayList<>(); + // 判断修改的数据项 + // 入动作 + BeanUtils.copyProperties(updateBalanceDO, transactionCreateReqVOIn); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType("RCT-CHG"); // 更改入库 + transactionCreateReqVOIn.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOIn.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVOIn.setBusinessType(""); + transactionCreateReqVOIn.setOwnerCode(updateBalanceDO.getOwnerCode()); + transactionCreateReqVOIn.setRecordNumber(""); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOIn.setPackingNumber(balanceDO.getPackingNumber()); + transactionCreateReqVOIn.setBatch(updateBalanceDO.getBatch()); + transactionCreateReqVOIn.setContainerNumber(balanceDO.getContainerNumber()); + transactionCreateReqVOIn.setAmount(balanceDO.getAmount()); + transactionCreateReqVOIn.setWarehouseCode(balanceDO.getWarehouseCode()); + transactionCreateReqVOIn.setLocationCode(balanceDO.getLocationCode()); + transactionCreateReqVOIn.setInventoryStatus(updateBalanceDO.getInventoryStatus()); + transactionCreateReqVOIn.setQty(updateBalanceDO.getQty()); + transactionCreateReqVOIn.setExpireDate(updateBalanceDO.getExpireDate()); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + // 出动作 + BeanUtils.copyProperties(balanceDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType("ISS-CHG"); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(""); + transactionCreateReqVOOut.setOwnerCode(balanceDO.getOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(""); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(balanceDO.getPackingNumber()); + transactionCreateReqVOOut.setBatch(balanceDO.getBatch()); + transactionCreateReqVOOut.setContainerNumber(balanceDO.getContainerNumber()); + transactionCreateReqVOOut.setAmount(balanceDO.getAmount()); + transactionCreateReqVOOut.setWarehouseCode(balanceDO.getWarehouseCode()); + transactionCreateReqVOOut.setLocationCode(balanceDO.getLocationCode()); + transactionCreateReqVOOut.setInventoryStatus(balanceDO.getInventoryStatus()); + transactionCreateReqVOOut.setQty(balanceDO.getQty()); + transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + } }