Browse Source

生成盘点调整接口,盘点计划增加维度。

master
刘忱 2 years ago
parent
commit
91b7439281
  1. 1
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRecord/CountRecordMainController.java
  3. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestDetailBaseVO.java
  4. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestDetailCreateReqVO.java
  5. 46
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/CountadjustRequestMainController.java
  6. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java
  7. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRequest/CountadjustRequestMainMapper.java
  8. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnJob/PurchasereturnJobMainMapper.java
  9. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java
  10. 68
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java
  11. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainService.java
  12. 82
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainServiceImpl.java

1
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -954,6 +954,7 @@ public interface ErrorCodeConstants {
//盘点调整申请ErrorCode
ErrorCode COUNTADJUST_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_156_000, "盘点调整申请主不存在");
ErrorCode COUNTADJUST_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_156_001, "盘点调整申请子不存在");
ErrorCode COUNTADJUST_REQUEST_EXISTS = new ErrorCode(1_000_156_001, "不能重复生成盘点调整");
ErrorCode COUNTADJUST_REQUEST_RECORD_EXISTS = new ErrorCode(1_000_078_003, "盘点调整申请存在盘点调整记录单");
ErrorCode COUNTADJUST_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_078_004, "盘点调整申请状态不支持关闭");
ErrorCode COUNTADJUST_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_078_005, "盘点调整申请状态不支持提交");

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRecord/CountRecordMainController.java

@ -19,6 +19,7 @@ import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.countRecord.CountRecordDetailService;
import com.win.module.wms.service.countRecord.CountRecordMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@ -119,4 +120,13 @@ public class CountRecordMainController {
return resultList;
}
@PutMapping("/generate")
@Operation(summary = "生成盘点调整")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:count-record-main:generate')")
public CommonResult<Boolean> handleCountRequestMain(@RequestParam("id") Long id) {
int count = countRecordMainService.generateCountadjustRequest(id);
return success(count > 0);
}
}

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestDetailBaseVO.java

@ -1,13 +1,11 @@
package com.win.module.wms.controller.countRequest.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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;

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestDetailCreateReqVO.java

@ -1,12 +1,31 @@
package com.win.module.wms.controller.countRequest.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
@Schema(description = "管理后台 - 盘点申请子创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CountRequestDetailCreateReqVO extends CountRequestDetailBaseVO {
@Override
public boolean equals(Object anObject) {
if (this == anObject) { //判断一下如果是同一个对象直接返回true,提高效率
return true;
}
if (anObject == null || anObject.getClass() != this.getClass()) { //如果传进来的对象为null或者二者为不同类,直接返回false
return false;
}
CountRequestDetailCreateReqVO obj = (CountRequestDetailCreateReqVO) anObject;
return this.getPackingNumber().equals(obj.getPackingNumber()) && this.getItemCode().equals(obj.getItemCode())
&& this.getBatch().equals(obj.getBatch()) && this.getInventoryStatus().equals(obj.getInventoryStatus())
&& this.getLocationCode().equals(obj.getLocationCode());
}
@Override
public int hashCode() {
return (this.getPackingNumber() + this.getItemCode() + this.getBatch() + this.getInventoryStatus() + this.getLocationCode()).hashCode();
}
}

46
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countadjustRequest/CountadjustRequestMainController.java

@ -20,6 +20,7 @@ import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.countadjustRequest.CountadjustRequestDetailService;
import com.win.module.wms.service.countadjustRequest.CountadjustRequestMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@ -118,4 +119,49 @@ public class CountadjustRequestMainController {
return resultList;
}
@PutMapping("/close")
@Operation(summary = "关闭盘点调整申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:countadjust-request-main:close')")
public CommonResult<Boolean> closeCountadjustRequestMain(@RequestParam("id") Long id) {
Integer count = countadjustRequestMainService.closeCountadjustRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交盘点调整申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:countadjust-request-main:submit')")
public CommonResult<Boolean> submitCountadjustRequestMain(@RequestParam("id") Long id) {
Integer count = countadjustRequestMainService.submitCountadjustRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过盘点调整申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:countadjust-request-main:agree')")
public CommonResult<Boolean> agreeCountadjustRequestMain(@RequestParam("id") Long id) {
Integer count = countadjustRequestMainService.agreeCountadjustRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "执行盘点调整申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:countadjust-request-main:handle')")
public CommonResult<Boolean> handleCountadjustRequestMain(@RequestParam("id") Long id) {
Integer count = countadjustRequestMainService.handleCountadjustRequestMain(id);
return success(count > 0);
}
@PutMapping("/abort")
@Operation(summary = "审批拒绝盘点调整申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:count-request-main:abort')")
public CommonResult<Boolean> abortCountadjustRequestMain(@RequestParam("id") Long id) {
Integer count = countadjustRequestMainService.abortCountadjustRequestMain(id);
return success(count > 0);
}
}

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java

@ -94,6 +94,29 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> {
return selectOne(queryWrapper);
}
/**
* 更新库存余额数量出库qty是负数
*/
default List<BalanceDO> getBalanceList(String packingNumber, String itemCode, String batch, String inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
if(packingNumber != null && !packingNumber.isEmpty()) {
queryWrapper.eq("packing_number", packingNumber);
}
if(itemCode != null && !itemCode.isEmpty()) {
queryWrapper.eq("item_code", itemCode);
}
if(batch != null && !batch.isEmpty()) {
queryWrapper.eq("batch", batch);
}
if(inventoryStatus != null && !inventoryStatus.isEmpty()) {
queryWrapper.eq("inventory_status", inventoryStatus);
}
if(locationCode != null && !locationCode.isEmpty()) {
queryWrapper.eq("location_code", locationCode);
}
return selectList(queryWrapper);
}
default PageResult<BalanceDO> selectPage(BalancePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BalanceDO>()
.eqIfPresent(BalanceDO::getPackingNumber, reqVO.getPackingNumber())

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRequest/CountadjustRequestMainMapper.java

@ -74,4 +74,8 @@ public interface CountadjustRequestMainMapper extends BaseMapperX<CountadjustReq
return selectOne(CountadjustRequestMainDO::getNumber, number);
}
default CountadjustRequestMainDO selectByCountRecordNumber(String countRecordNumber) {
return selectOne(CountadjustRequestMainDO::getCountRecordNumber, countRecordNumber);
}
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnJob/PurchasereturnJobMainMapper.java

@ -24,7 +24,6 @@ public interface PurchasereturnJobMainMapper extends BaseMapperX<PurchasereturnJ
default PageResult<PurchasereturnJobMainDO> selectPage(PurchasereturnJobMainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PurchasereturnJobMainDO>()
.inIfPresent(PurchasereturnJobMainDO::getStatus, reqVO.getTypes())
.eqIfPresent(PurchasereturnJobMainDO::getRequestNumber, reqVO.getRequestNumber())
.eqIfPresent(PurchasereturnJobMainDO::getPurchaseReceiptRecordNumber, reqVO.getPurchaseReceiptRecordNumber())
.eqIfPresent(PurchasereturnJobMainDO::getAsnNumber, reqVO.getAsnNumber())

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java

@ -18,14 +18,10 @@ import com.win.module.wms.dal.dataobject.countJob.CountJobMainDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO;
import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO;
import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper;
import com.win.module.wms.enums.job.JobStatusEnum;
import com.win.module.wms.enums.job.JobStatusState;
import com.win.module.wms.enums.request.RequestStatusEnum;
@ -64,10 +60,6 @@ public class CountJobMainServiceImpl implements CountJobMainService {
private SerialNumberApi serialNumberApi;
@Resource
private CountRequestMainMapper countRequestMainMapper;
@Resource
private CountadjustRequestMainMapper countadjustRequestMainMapper;
@Resource
private CountadjustRequestDetailMapper countadjustRequestDetailMapper;
@Override
public CountJobMainDO getCountJobMain(Long id) {
@ -178,9 +170,7 @@ public class CountJobMainServiceImpl implements CountJobMainService {
countRecordMainDO.setUpdateTime(null);
countRecordMainMapper.insert(countRecordMainDO);
List<CountJobDetailUpdateReqVO> countJobDetailUpdateReqVOList = countJobMainUpdateReqVO.getSubList();
List<CountadjustRequestDetailDO> countadjustRequestDetailDOList = new ArrayList<>();
List<CountRecordDetailDO> countRecordDetailDOList = new ArrayList<>();
int countDetailNumber = 1;
for(CountJobDetailUpdateReqVO countJobDetailUpdateReqVO : countJobDetailUpdateReqVOList) {
CountRecordDetailDO countRecordDetailDO = new CountRecordDetailDO();
BeanUtils.copyProperties(countJobDetailUpdateReqVO, countRecordDetailDO);
@ -193,47 +183,8 @@ public class CountJobMainServiceImpl implements CountJobMainService {
countRecordDetailDO.setUpdater(null);
countRecordDetailDO.setUpdateTime(null);
countRecordDetailDOList.add(countRecordDetailDO);
//盘点记录数量不一致时生成盘点调整申请
if(countRecordDetailDO.getCountQty().compareTo(countRecordDetailDO.getQty()) != 0) {
CountadjustRequestDetailDO countadjustRequestDetailDO = new CountadjustRequestDetailDO();
BeanUtils.copyProperties(countRecordDetailDO, countadjustRequestDetailDO);
countadjustRequestDetailDO.setCountDetailNumber(String.valueOf(countDetailNumber));
countadjustRequestDetailDO.setInventoryQty(countRecordDetailDO.getQty());
countadjustRequestDetailDO.setCountQty(countRecordDetailDO.getCountQty());
//库存数量减盘点数量等于调整数量
countadjustRequestDetailDO.setAdjustQty(countRecordDetailDO.getQty().subtract(countRecordDetailDO.getCountQty()));
//调整数量的绝对值
countadjustRequestDetailDO.setQty(countadjustRequestDetailDO.getAdjustQty().abs());
countadjustRequestDetailDO.setId(null);
countadjustRequestDetailDO.setCreator(null);
countadjustRequestDetailDO.setCreateTime(null);
countadjustRequestDetailDO.setUpdater(null);
countadjustRequestDetailDO.setUpdateTime(null);
countadjustRequestDetailDOList.add(countadjustRequestDetailDO);
countDetailNumber++;
}
}
countRecordDetailMapper.insertBatch(countRecordDetailDOList);
//增加库存跳转
if(!countadjustRequestDetailDOList.isEmpty()) {
CountadjustRequestMainDO countadjustRequestMainDO = new CountadjustRequestMainDO();
BeanUtils.copyProperties(countRecordMainDO, countadjustRequestMainDO);
String adjustNumber = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_REQUEST.getCode());
countadjustRequestMainDO.setNumber(adjustNumber);
countadjustRequestMainDO.setCountRecordNumber(number);
countadjustRequestMainDO.setStatus(RequestStatusEnum.NEW.getCode());
countadjustRequestMainDO.setId(null);
countadjustRequestMainDO.setCreator(null);
countadjustRequestMainDO.setCreateTime(null);
countadjustRequestMainDO.setUpdater(null);
countadjustRequestMainDO.setUpdateTime(null);
countadjustRequestMainMapper.insert(countadjustRequestMainDO);
for(CountadjustRequestDetailDO countadjustRequestDetailDO : countadjustRequestDetailDOList) {
countadjustRequestDetailDO.setMasterId(countadjustRequestMainDO.getId());
countadjustRequestDetailDO.setNumber(adjustNumber);
}
countadjustRequestDetailMapper.insertBatch(countadjustRequestDetailDOList);
}
List<String> typeList = new ArrayList<>();
typeList.add(JobStatusEnum.PENDING.getCode());
typeList.add(JobStatusEnum.PROCESSING.getCode());

68
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java

@ -41,9 +41,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -298,42 +296,58 @@ public class CountPlanMainServiceImpl implements CountPlanMainService {
countRequestMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
countRequestMainCreateReqVO.setRequestTime(LocalDateTime.now());
countRequestMainCreateReqVO.setDueTime(LocalDateTime.now());
List<CountRequestDetailCreateReqVO> subList = new ArrayList<>();
int countDetailNumber = 1;
List<BalanceDO> countBanlanceDOList = new ArrayList<>();
for (BalanceDO balanceDO : balanceDOList) {
if(balanceDO.getQty().compareTo(BigDecimal.ZERO) == 0) {
if ("TRUE".equals(mainDO.getIsCountZeroInventory())) {//盘点零库存
countBanlanceDOList.add(balanceDO);
}
} else if (balanceDO.getQty().compareTo(BigDecimal.ZERO) < 0) {
if ("TRUE".equals(mainDO.getIsCountNegativeInventory())) {//盘点负库存
countBanlanceDOList.add(balanceDO);
}
} else {
countBanlanceDOList.add(balanceDO);
}
//维度,按照库存扩大范围,比如维度是库位时,盘点库位上某一个物品,那要扩大到这个物品所在库位的所有物品,BY_INVENTORY,按库存 BY_ITEM,按物品 BY_BATCH,按批次 BY_LOCATION,按库位
switch (mainDO.getDimension()) {
case "BY_ITEM": {
List<BalanceDO> balanceDOListDimension = balanceMapper.getBalanceList(null, balanceDO.getItemCode(), null, null, null);
countBanlanceDOList.addAll(balanceDOListDimension);
break;
}
case "BY_BATCH": {
List<BalanceDO> balanceDOListDimension = balanceMapper.getBalanceList(null, null, balanceDO.getBatch(), null, null);
countBanlanceDOList.addAll(balanceDOListDimension);
break;
}
case "BY_LOCATION": {
List<BalanceDO> balanceDOListDimension = balanceMapper.getBalanceList(null, null, null, null, balanceDO.getLocationCode());
countBanlanceDOList.addAll(balanceDOListDimension);
break;
}
}
}
//利用set去重
Set<CountRequestDetailCreateReqVO> subSet = new HashSet<>();
for(BalanceDO balanceDO : countBanlanceDOList) {
//忽略物品或者忽略库位直接continue
if(mainDO.getIgnoreListOfItem().contains(balanceDO.getItemCode()) || mainDO.getIgnoreListOfLocation().contains(balanceDO.getLocationCode())) {
continue;
}
//维度,按照库存扩大范围,比如维度是库位时,盘点库位上某一个物品,那要扩大到这个物品所在库位的所有物品,BY_INVENTORY,按库存 BY_ITEM,按物品 BY_BATCH,按批次 BY_LOCATION,按库位
//if(mainDO.getDimension().equals("BY_INVENTORY")) {
//}
CountRequestDetailCreateReqVO countRequestDetailCreateReqVO = new CountRequestDetailCreateReqVO();
BeanUtils.copyProperties(balanceDO, countRequestDetailCreateReqVO);
ItembasicDO itembasicDO = itembasicService.selectItembasic(balanceDO.getItemCode());
countRequestDetailCreateReqVO.setItemName(itembasicDO.getName());
countRequestDetailCreateReqVO.setItemDesc1(itembasicDO.getDesc1());
countRequestDetailCreateReqVO.setItemDesc2(itembasicDO.getDesc2());
subSet.add(countRequestDetailCreateReqVO);
}
List<CountRequestDetailCreateReqVO> subList = new ArrayList<>();
int countDetailNumber = 1;
for(CountRequestDetailCreateReqVO countRequestDetailCreateReqVO : subSet) {
countRequestDetailCreateReqVO.setCountDetailNumber(String.valueOf(countDetailNumber));
int listSize1 = subList.size();
if(countRequestDetailCreateReqVO.getQty().compareTo(BigDecimal.ZERO) == 0) {
if ("TRUE".equals(mainDO.getIsCountZeroInventory())) {//盘点零库存
subList.add(countRequestDetailCreateReqVO);
}
} else if (countRequestDetailCreateReqVO.getQty().compareTo(BigDecimal.ZERO) < 0) {
if ("TRUE".equals(mainDO.getIsCountNegativeInventory())) {//盘点负库存
subList.add(countRequestDetailCreateReqVO);
}
} else {
subList.add(countRequestDetailCreateReqVO);
}
//增加了数据并且冻结盘点时,冻结库存余额
if(subList.size() > listSize1 && "TRUE".equals(mainDO.getIsFreeze())) {
balanceDO.setFrozen("TRUE");
balanceDO.setFrozenReason("冻结盘点");
balanceMapper.updateById(balanceDO);
}
subList.add(countRequestDetailCreateReqVO);
countDetailNumber++;
}
//盘点空库位,补齐空库位,在生成任务时拆分为只有主的盘点任务

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainService.java

@ -46,4 +46,10 @@ public interface CountRecordMainService {
*/
List<CountRecordMainDO> getCountRecordMainList(CustomConditions conditions);
/**
* 根据盘点记录生成库存调整申请
* @param countRecordMainId
* @return
*/
int generateCountadjustRequest(Long countRecordMainId);
}

82
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRecord/CountRecordMainServiceImpl.java

@ -1,17 +1,33 @@
package com.win.module.wms.service.countRecord;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainExportReqVO;
import com.win.module.wms.controller.countRecord.vo.CountRecordMainPageReqVO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordDetailDO;
import com.win.module.wms.dal.dataobject.countRecord.CountRecordMainDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO;
import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper;
import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper;
import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import static com.win.module.wms.enums.ErrorCodeConstants.COUNTADJUST_REQUEST_EXISTS;
/**
* 盘点记录主 Service 实现类
*
@ -23,6 +39,16 @@ public class CountRecordMainServiceImpl implements CountRecordMainService {
@Resource
private CountRecordMainMapper countRecordMainMapper;
@Resource
private CountRecordDetailMapper countRecordDetailMapper;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private CountadjustRequestMainMapper countadjustRequestMainMapper;
@Resource
private CountadjustRequestDetailMapper countadjustRequestDetailMapper;
@Resource
private TrendsApi trendsApi;
@Override
public PageResult<CountRecordMainDO> getCountRecordMainPage(CountRecordMainPageReqVO pageReqVO) {
@ -42,4 +68,60 @@ public class CountRecordMainServiceImpl implements CountRecordMainService {
return countRecordMainMapper.selectList(conditions);
}
@Override
public int generateCountadjustRequest(Long countRecordMainId) {
CountRecordMainDO countRecordMainDO = countRecordMainMapper.selectById(countRecordMainId);
CountadjustRequestMainDO countadjustRequestMainDOExists = countadjustRequestMainMapper.selectByCountRecordNumber(countRecordMainDO.getNumber());
if(countadjustRequestMainDOExists != null) {
throw new ServiceException(COUNTADJUST_REQUEST_EXISTS);
}
List<CountRecordDetailDO> countRecordDetailDOList = countRecordDetailMapper.selectList(countRecordMainId);
List<CountadjustRequestDetailDO> countadjustRequestDetailDOList = new ArrayList<>();
int countDetailNumber = 1;
for(CountRecordDetailDO countRecordDetailDO : countRecordDetailDOList) {
//盘点记录数量不一致时生成盘点调整申请
if(countRecordDetailDO.getCountQty().compareTo(countRecordDetailDO.getQty()) != 0) {
CountadjustRequestDetailDO countadjustRequestDetailDO = new CountadjustRequestDetailDO();
BeanUtils.copyProperties(countRecordDetailDO, countadjustRequestDetailDO);
countadjustRequestDetailDO.setCountDetailNumber(String.valueOf(countDetailNumber));
countadjustRequestDetailDO.setInventoryQty(countRecordDetailDO.getQty());
countadjustRequestDetailDO.setCountQty(countRecordDetailDO.getCountQty());
//库存数量减盘点数量等于调整数量
countadjustRequestDetailDO.setAdjustQty(countRecordDetailDO.getQty().subtract(countRecordDetailDO.getCountQty()));
//调整数量的绝对值
countadjustRequestDetailDO.setQty(countadjustRequestDetailDO.getAdjustQty().abs());
countadjustRequestDetailDO.setId(null);
countadjustRequestDetailDO.setCreator(null);
countadjustRequestDetailDO.setCreateTime(null);
countadjustRequestDetailDO.setUpdater(null);
countadjustRequestDetailDO.setUpdateTime(null);
countadjustRequestDetailDOList.add(countadjustRequestDetailDO);
countDetailNumber++;
}
}
int result = 0;
//增加库存调整
if(!countadjustRequestDetailDOList.isEmpty()) {
CountadjustRequestMainDO countadjustRequestMainDO = new CountadjustRequestMainDO();
BeanUtils.copyProperties(countRecordMainDO, countadjustRequestMainDO);
String adjustNumber = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_REQUEST.getCode());
countadjustRequestMainDO.setNumber(adjustNumber);
countadjustRequestMainDO.setCountRecordNumber(countRecordMainDO.getNumber());
countadjustRequestMainDO.setStatus(RequestStatusEnum.NEW.getCode());
countadjustRequestMainDO.setId(null);
countadjustRequestMainDO.setCreator(null);
countadjustRequestMainDO.setCreateTime(null);
countadjustRequestMainDO.setUpdater(null);
countadjustRequestMainDO.setUpdateTime(null);
result = countadjustRequestMainMapper.insert(countadjustRequestMainDO);
for(CountadjustRequestDetailDO countadjustRequestDetailDO : countadjustRequestDetailDOList) {
countadjustRequestDetailDO.setMasterId(countadjustRequestMainDO.getId());
countadjustRequestDetailDO.setNumber(adjustNumber);
}
countadjustRequestDetailMapper.insertBatch(countadjustRequestDetailDOList);
trendsApi.createTrends(countadjustRequestMainDO.getId(), "countadjustRequest", "生成了盘点调整申请", TrendsTypeEnum.CREATE);
}
return result;
}
}

Loading…
Cancel
Save