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 6ad4fa3c..30f624a6 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 @@ -1,41 +1,33 @@ package com.win.module.wms.controller.balance; +import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; -import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.common.pojo.PageResult; +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.*; -import com.win.module.wms.controller.barcode.vo.BarcodeImportExcelVo; -import com.win.module.wms.enums.DictTypeConstants; -import io.swagger.v3.oas.annotations.Parameters; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +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.convert.balance.BalanceConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.service.balance.BalanceService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; +import java.util.List; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.pojo.CommonResult; import static com.win.framework.common.pojo.CommonResult.success; - -import com.win.framework.excel.core.util.ExcelUtils; - -import com.win.framework.operatelog.core.annotations.OperateLog; -import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.win.module.wms.dal.dataobject.balance.BalanceDO; -import com.win.module.wms.convert.balance.BalanceConvert; -import com.win.module.wms.service.balance.BalanceService; -import org.springframework.web.multipart.MultipartFile; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 库存余额") @RestController @@ -48,48 +40,6 @@ public class BalanceController { @Resource private AdminUserApi userApi; - @PostMapping("/create") - @Operation(summary = "创建库存余额") - @PreAuthorize("@ss.hasPermission('wms:balance:create')") - public CommonResult createBalance(@Valid @RequestBody BalanceCreateReqVO createReqVO) { - return success(balanceService.createBalance(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新库存余额") - @PreAuthorize("@ss.hasPermission('wms:balance:update')") - public CommonResult updateBalance(@Valid @RequestBody BalanceUpdateReqVO updateReqVO) { - balanceService.updateBalance(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除库存余额") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:balance:delete')") - public CommonResult deleteBalance(@RequestParam("id") Long id) { - balanceService.deleteBalance(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得库存余额") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('wms:balance:query')") - public CommonResult getBalance(@RequestParam("id") String id) { - BalanceDO balance = balanceService.getBalance(id); - return success(BalanceConvert.INSTANCE.convert(balance)); - } - - @GetMapping("/list") - @Operation(summary = "获得库存余额列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('wms:balance:query')") - public CommonResult> getBalanceList(@RequestParam("ids") Collection ids) { - List list = balanceService.getBalanceList(ids); - return success(BalanceConvert.INSTANCE.convertList(list)); - } - @GetMapping("/page") @Operation(summary = "获得库存余额分页") @PreAuthorize("@ss.hasPermission('wms:balance:query')") @@ -111,6 +61,7 @@ public class BalanceController { } return success(result); } + @GetMapping("/export-excel") @Operation(summary = "导出库存余额 Excel") @PreAuthorize("@ss.hasPermission('wms:balance:export')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java index 0747f120..535ece19 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java @@ -1,22 +1,11 @@ package com.win.module.wms.controller.balance.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + import java.math.BigDecimal; import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java index 175dc505..4c10858d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java @@ -1,18 +1,23 @@ package com.win.module.wms.dal.mysql.balance; -import java.util.*; - +import cn.hutool.json.JSONObject; +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.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; +import com.win.module.wms.controller.balance.vo.BalanceCreateReqVO; import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; import com.win.module.wms.controller.balance.vo.BalancePageReqVO; +import com.win.module.wms.convert.balance.BalanceConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.rule.RuleDO; import org.apache.ibatis.annotations.Mapper; +import java.math.BigDecimal; +import java.util.List; + /** * 库存余额 Mapper * @@ -21,6 +26,35 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface BalanceMapper extends BaseMapperX { + /** + * 更新库存余额数量 + */ + default Boolean updateBalanceQty(BalanceCreateReqVO reqVO, RuleDO ruleDO) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("packing_number", reqVO.getPackingNumber()); + queryWrapper.eq("item_code", reqVO.getItemCode()); + queryWrapper.eq("batch", reqVO.getBatch()); + queryWrapper.eq("inventory_status", reqVO.getInventoryStatus()); + queryWrapper.eq("location_code", reqVO.getLocationCode()); + BalanceDO balanceDO = selectOne(queryWrapper); + int result; + if(balanceDO == null) {//不存在新增 + balanceDO = BalanceConvert.INSTANCE.convert(reqVO); + result = this.insert(balanceDO); + } else {//存在只更新数量 + balanceDO.setQty(balanceDO.getQty().add(reqVO.getQty())); + result = this.updateById(balanceDO); + } + // 此处增加判断是否允许零库存 + if(balanceDO.getQty().compareTo(BigDecimal.ZERO) == 0) { + JSONObject jsonObject = new JSONObject(ruleDO.getCondition()); + if(!"TRUE".equals(jsonObject.getStr("EnableKeepZero"))) { + this.deleteById(balanceDO.getId()); + } + } + return result > 0; + } + default PageResult selectPage(BalancePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(BalanceDO::getPackingNumber, reqVO.getPackingNumber()) 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 c9370db0..691a34c4 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 @@ -1,14 +1,12 @@ package com.win.module.wms.service.balance; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.balance.vo.*; -import com.win.module.wms.controller.itembasic.vo.ItembasicImportExcelVo; -import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; +import com.win.module.wms.controller.balance.vo.BalancePageReqVO; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; + +import java.util.List; /** * 库存余额 Service 接口 @@ -17,44 +15,6 @@ import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; */ public interface BalanceService { - /** - * 创建库存余额 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - String createBalance(@Valid BalanceCreateReqVO createReqVO); - - /** - * 更新库存余额 - * - * @param updateReqVO 更新信息 - */ - void updateBalance(@Valid BalanceUpdateReqVO updateReqVO); - - /** - * 删除库存余额 - * - * @param id 编号 - */ - void deleteBalance(Long id); - - /** - * 获得库存余额 - * - * @param id 编号 - * @return 库存余额 - */ - BalanceDO getBalance(String id); - - /** - * 获得库存余额列表 - * - * @param ids 编号 - * @return 库存余额列表 - */ - List getBalanceList(Collection ids); - /** * 获得库存余额分页 * @@ -83,44 +43,44 @@ public interface BalanceService { * TB2----BY_QUANTITY * 跟据管理模式查询数量 * @author lianhongxi - * @param itemcode 物品code + * @param itemCode 物品code * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ - public List selectNumber(String itemcode, List inventoryStatus, String locationcode); + public List selectNumber(String itemCode, List inventoryStatus, String locationCode); /** * TB2----BY_BATCH * 跟据管理模式查询批次 * @author lianhongxi - * @param itemcode 物品code + * @param itemCode 物品code * @param batch 批次 * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ - public List selectBatch(String itemcode, String batch, List inventoryStatus, String locationcode); + public List selectBatch(String itemCode, String batch, List inventoryStatus, String locationCode); /** * TB2----BY_PACKAGING * 跟据管理模式查询包装号 * @author lianhongxi - * @param itemcode 物品code + * @param itemCode 物品code * @param batch 批次 - * @param packingnumber 包装号 + * @param packingNumber 包装号 * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ - public List selectPackaging(String itemcode, String packingnumber, String batch, List inventoryStatus, String locationcode); + public List selectPackaging(String itemCode, String packingNumber, String batch, List inventoryStatus, String locationCode); /** * TB2----BY_UNIQUE_ID * 跟据管理模式查询唯一码 * @author lianhongxi - * @param packingnumber 包装号 + * @param packingNumber 包装号 * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ - public List selectUniqueId(String packingnumber, String locationcode, List inventoryStatus); + public List selectUniqueId(String packingNumber, String locationCode, List inventoryStatus); } 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 a171b821..4d471bd1 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 @@ -1,32 +1,17 @@ package com.win.module.wms.service.balance; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.exceptions.UtilException; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.common.annotations.VisibleForTesting; -import com.win.framework.common.exception.ErrorCode; -import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.balance.vo.*; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -import org.springframework.transaction.interceptor.TransactionAspectSupport; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.convert.balance.BalanceConvert; +import com.win.module.wms.controller.balance.vo.BalanceExportReqVO; +import com.win.module.wms.controller.balance.vo.BalancePageReqVO; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; -import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.*; +import javax.annotation.Resource; +import java.util.List; /** * 库存余额 Service 实现类 @@ -40,51 +25,6 @@ public class BalanceServiceImpl implements BalanceService { @Resource private BalanceMapper balanceMapper; - @Override - public String createBalance(BalanceCreateReqVO createReqVO) { - // 插入 - BalanceDO balance = BalanceConvert.INSTANCE.convert(createReqVO); - balanceMapper.insert(balance); - // 返回 - return balance.getId(); - } - - @Override - public void updateBalance(BalanceUpdateReqVO updateReqVO) { - // 校验存在 - validateBalanceExists(updateReqVO.getId()); - // 更新 - BalanceDO updateObj = BalanceConvert.INSTANCE.convert(updateReqVO); - balanceMapper.updateById(updateObj); - } - - @Override - public void deleteBalance(Long id) { - // 校验存在 - validateBalanceExists(id); - // 删除 - balanceMapper.deleteById(id); - } - - private void validateBalanceExists(Long id) { - if (id == null) { - return; - } - if (balanceMapper.selectById(id) == null) { - throw exception(BALANCE_NOT_EXISTS); - } - } - - @Override - public BalanceDO getBalance(String id) { - return balanceMapper.selectById(id); - } - - @Override - public List getBalanceList(Collection ids) { - return balanceMapper.selectBatchIds(ids); - } - @Override public PageResult getBalancePage(BalancePageReqVO pageReqVO) { return balanceMapper.selectPage(pageReqVO); @@ -104,17 +44,17 @@ public class BalanceServiceImpl implements BalanceService { * TB----TB2----BY_QUANTITY * 跟据管理模式查询数量 * @author lianhongxi - * @param itemcode 物品code + * @param itemCode 物品code * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ @Override - public List selectNumber(String itemcode, List inventoryStatus, String locationcode) { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("item_code", itemcode); + public List selectNumber(String itemCode, List inventoryStatus, String locationCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("item_code", itemCode); queryWrapper.eq("inventory_status", inventoryStatus); - queryWrapper.eq("location_code", locationcode); + queryWrapper.eq("location_code", locationCode); List balanceDO = balanceMapper.selectList(queryWrapper); if (!balanceDO.isEmpty()) { return balanceDO; @@ -127,19 +67,19 @@ public class BalanceServiceImpl implements BalanceService { * 按批次查找 * TB----TB2-----BY_BATCH * @author lianhongxi - * @param itemcode 物品code + * @param itemCode 物品code * @param batch 批次 * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ @Override - public List selectBatch(String itemcode, String batch, List inventoryStatus, String locationcode) { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("item_code", itemcode); + public List selectBatch(String itemCode, String batch, List inventoryStatus, String locationCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("item_code", itemCode); queryWrapper.eq("batch", batch); queryWrapper.eq("inventory_status", inventoryStatus); - queryWrapper.eq("location_code", locationcode); + queryWrapper.eq("location_code", locationCode); List balanceDO = balanceMapper.selectList(queryWrapper); if (!balanceDO.isEmpty()) { return balanceDO; @@ -154,21 +94,21 @@ public class BalanceServiceImpl implements BalanceService { * TB----TB2-----BY_PACKGING * 按包装查找 * @author lianhongxi - * @param itemcode 物品code - * @param packingnumber 包装号 + * @param itemCode 物品code + * @param packingNumber 包装号 * @param batch 批次 * @param inventoryStatus 库存状态 - * @param locationcode 库位code + * @param locationCode 库位code * @return */ @Override - public List selectPackaging(String itemcode, String packingnumber, String batch, List inventoryStatus, String locationcode) { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("item_code", itemcode); - queryWrapper.eq("packing_number", packingnumber); + public List selectPackaging(String itemCode, String packingNumber, String batch, List inventoryStatus, String locationCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("item_code", itemCode); + queryWrapper.eq("packing_number", packingNumber); queryWrapper.eq("batch", batch); queryWrapper.eq("inventory_status", inventoryStatus); - queryWrapper.eq("location_code", locationcode); + queryWrapper.eq("location_code", locationCode); List balanceDO = balanceMapper.selectList(queryWrapper); if (!balanceDO.isEmpty()) { return balanceDO; @@ -188,7 +128,7 @@ public class BalanceServiceImpl implements BalanceService { */ @Override public List selectUniqueId(String packingnumber, String locationcode, List inventoryStatus) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("packing_number", packingnumber); queryWrapper.in("inventory_status", inventoryStatus); queryWrapper.eq("location_code", locationcode);