Browse Source

盘点调整。

master
刘忱 2 years ago
parent
commit
6fee81d231
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java
  3. 105
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java
  4. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

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

@ -941,7 +941,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_JOB_EXISTS = new ErrorCode(1_000_078_003, "盘点调整申请存在采购收货任务单");
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, "盘点调整申请状态不支持提交");
ErrorCode COUNTADJUST_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_078_006, "盘点调整申请状态不支持审批同意");

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java

@ -68,6 +68,11 @@ public interface CountadjustRecordMainMapper extends BaseMapperX<CountadjustReco
.orderByDesc(CountadjustRecordMainDO::getId));
}
default Long selectByRequestNumber(String requestNumber) {
return selectCount(new LambdaQueryWrapperX<CountadjustRecordMainDO>()
.eq(CountadjustRecordMainDO::getRequestNumber, requestNumber));
}
default List<CountadjustRecordMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}

105
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java

@ -5,23 +5,42 @@ 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.countadjustRecord.vo.CountadjustRecordDetailCreateReqVO;
import com.win.module.wms.controller.countadjustRecord.vo.CountadjustRecordMainCreateReqVO;
import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainExportReqVO;
import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainPageReqVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.countadjustRecord.CountadjustRecordDetailConvert;
import com.win.module.wms.convert.countadjustRecord.CountadjustRecordMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.countadjustRecord.CountadjustRecordMainDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO;
import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordDetailMapper;
import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordMainMapper;
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 com.win.module.wms.enums.request.RequestStatusState;
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.*;
/**
@ -40,7 +59,17 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
@Resource
private CountadjustRecordMainMapper countadjustRecordMainMapper;
@Resource
private CountadjustRecordDetailMapper countadjustRecordDetailMapper;
@Resource
private TransactionService transactionService;
@Resource
private BalanceMapper balanceMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private JobUtils jobUtils;
@Override
public PageResult<CountadjustRequestMainDO> getCountadjustRequestMainSenior(CustomConditions conditions) {
@ -67,10 +96,10 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
public Integer closeCountadjustRequestMain(Long id) {
// 校验存在存在下级单据
CountadjustRequestMainDO mainDO = validateCountadjustRequestMainExists(id);
// Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber());
// if(count > 0) {
// throw new ServiceException(COUNTADJUST_REQUEST_JOB_EXISTS);
// }
Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber());
if(count > 0) {
throw new ServiceException(COUNTADJUST_REQUEST_RECORD_EXISTS);
}
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus());
boolean flag = requestStatusState.close();
if(!flag) {
@ -93,7 +122,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "countadjustRequest", "提交了到货校验申请", TrendsTypeEnum.UPDATE);
return countadjustRequestMainMapper.updateById(mainDO);
@ -112,7 +141,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
mainDO.setStatus(requestStatusState.getState().getCode());
//调用自动执行方法
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) {
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
}
trendsApi.createTrends(id, "countadjustRequest", "审批同意了到货校验申请", TrendsTypeEnum.UPDATE);
return countadjustRequestMainMapper.updateById(mainDO);
@ -130,7 +159,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
}
mainDO.setStatus(requestStatusState.getState().getCode());
//调用执行方法
this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId()));
trendsApi.createTrends(id, "countadjustRequest", "执行了到货校验申请", TrendsTypeEnum.UPDATE);
return countadjustRequestMainMapper.updateById(mainDO);
}
@ -151,12 +180,64 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain
}
/**
* 生成收货检验任务不要改动事务传播方式否则会有事务问题
* @param mainDO 收货检验
* @param detailDOList 收货检验
* 生成盘点调整记录,并更新库存
* @param mainDO 盘点调整
* @param detailDOList 盘点调整
*/
private void generateJob(CountadjustRequestMainDO mainDO, List<CountadjustRequestDetailDO> detailDOList) {
private void generateRecord(CountadjustRequestMainDO mainDO, List<CountadjustRequestDetailDO> detailDOList) {
CountadjustRecordMainCreateReqVO countadjustRecordMainCreateReqVO = new CountadjustRecordMainCreateReqVO();
BeanUtils.copyProperties(mainDO, countadjustRecordMainCreateReqVO);
countadjustRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber());
String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_RECORD.getCode());
countadjustRecordMainCreateReqVO.setNumber(number);
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountadjustRecord");
countadjustRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode());
CountadjustRecordMainDO countadjustRecordMainDO = CountadjustRecordMainConvert.INSTANCE.convert(countadjustRecordMainCreateReqVO);
countadjustRecordMainMapper.insert(countadjustRecordMainDO);
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
for(CountadjustRequestDetailDO countadjustRequestDetailDO : detailDOList) {
CountadjustRecordDetailCreateReqVO countadjustRecordDetailCreateReqVO = new CountadjustRecordDetailCreateReqVO();
BeanUtils.copyProperties(countadjustRequestDetailDO, countadjustRecordDetailCreateReqVO);
countadjustRecordDetailCreateReqVO.setNumber(number);
countadjustRecordDetailMapper.insert(CountadjustRecordDetailConvert.INSTANCE.convert(countadjustRecordDetailCreateReqVO));
//添加库存事务list
BalanceDO balanceDO = balanceMapper.getBalanceQty(countadjustRecordDetailCreateReqVO.getPackingNumber(), countadjustRecordDetailCreateReqVO.getItemCode(), countadjustRecordDetailCreateReqVO.getBatch(), countadjustRecordDetailCreateReqVO.getInventoryStatus(), countadjustRecordDetailCreateReqVO.getLocationCode());
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(countadjustRecordDetailCreateReqVO, transactionCreateReqVO);
//增加业务类型
BusinesstypeDO countAdjustBusinesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountAdjust");
transactionCreateReqVO.setBusinessType(countAdjustBusinesstypeDO.getCode());
if(countadjustRecordDetailCreateReqVO.getAdjustQty().compareTo(BigDecimal.ZERO) > 0) {
TransactiontypeDO transactionTypeDOIn = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getInTransactionType());
transactionCreateReqVO.setInventoryAction(transactionTypeDOIn.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactionTypeDOIn.getCode());
} else {
TransactiontypeDO transactionTypeDOOut = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getOutTransactionType());
transactionCreateReqVO.setInventoryAction(transactionTypeDOOut.getInventoryAction());
transactionCreateReqVO.setTransactionType(transactionTypeDOOut.getCode());
}
transactionCreateReqVO.setBusinessType(mainDO.getBusinessType());
transactionCreateReqVO.setLocationCode(countadjustRecordDetailCreateReqVO.getLocationCode());
transactionCreateReqVO.setOwnerCode(countadjustRecordDetailCreateReqVO.getOwnerCode());
transactionCreateReqVO.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVO.setAmount(balanceDO.getAmount());
transactionCreateReqVO.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVO.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVO.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVO.setRecordNumber(number);
transactionCreateReqVO.setQty(countadjustRecordDetailCreateReqVO.getAdjustQty().abs());//绝对值
transactionCreateReqVO.setInventoryStatus(countadjustRecordDetailCreateReqVO.getInventoryStatus());
transactionCreateReqVO.setWarehouseCode(countadjustRecordMainDO.getWarehouseCode());
transactionCreateReqVO.setBatch(countadjustRecordDetailCreateReqVO.getBatch());
transactionCreateReqVO.setWorker(String.valueOf(getLoginUserId()));
transactionCreateReqVO.setPackingNumber(countadjustRecordDetailCreateReqVO.getPackingNumber());
transactionCreateReqVOList.add(transactionCreateReqVO);
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
//变更记录
trendsApi.createTrends(countadjustRecordMainDO.getId(), "countadjustRequest", "生成了盘点调整记录", TrendsTypeEnum.CREATE);
}
private CountadjustRequestMainDO validateCountadjustRequestMainExists(Long id) {

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

@ -13,7 +13,6 @@ import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.wms.controller.itembasic.vo.*;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.owner.OwnerDO;
import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -97,10 +96,12 @@ public class ItembasicServiceImpl implements ItembasicService {
public List<ItembasicDO> getItembasicList(CustomConditions conditions) {
return itembasicMapper.selectSeniorList(conditions);
}
@Override
public List<ItembasicDO> getItembasicList() {
return itembasicMapper.selectAllList();
}
@Override
public PageResult<ItembasicDO> getItembasicPage(ItembasicPageReqVO pageReqVO) {
return itembasicMapper.selectPage(pageReqVO);
@ -288,19 +289,19 @@ public class ItembasicServiceImpl implements ItembasicService {
}
@VisibleForTesting
private void validateIsStdPackExists(String stdPack) {
if (stdPack == null || stdPack == null) {
if (stdPack == null) {
throw exception(ITEMBASIC_IS_STDPACK_NOT_EXISTS);
}
}
@VisibleForTesting
private void validateEnableBuyExists(String enableBuy) {
if (enableBuy == null || enableBuy == null) {
if (enableBuy == null) {
throw exception(ITEMBASIC_ENABLE_BUY_NOT_EXISTS);
}
}
@VisibleForTesting
private void validateEnableMakeExists(String enableMark) {
if (enableMark == null || enableMark == null) {
if (enableMark == null) {
throw exception(ITEMBASIC_ENABLE_MAKE_NOT_EXISTS);
}
}
@ -348,7 +349,7 @@ public class ItembasicServiceImpl implements ItembasicService {
}
//公共方法 查询物料
public ItembasicDO selectItembasic(String code) {
QueryWrapper<ItembasicDO> queryWrapper = new QueryWrapper();
QueryWrapper<ItembasicDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",code);
queryWrapper.eq("available","TRUE");
// queryWrapper.eq("status","ENABLE");

Loading…
Cancel
Save