|
|
|
@ -1,30 +1,37 @@
|
|
|
|
|
package com.chanko.yunxi.mes.module.biz.service.storage;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import com.chanjet.openapi.sdk.java.exception.ChanjetApiException;
|
|
|
|
|
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
|
|
|
|
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StoragePageReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageSaveReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.storagemat.vo.StorageMatPageReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.serialnumber.SerialNumberDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.storage.StorageDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.storagemat.StorageMatMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.enums.CodeEnum;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.enums.StockTypeEnum;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.enums.StorageStatusEnum;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.manager.CrossOrderManager;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.serialnumber.SerialNumberService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService;
|
|
|
|
|
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.text.SimpleDateFormat;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.CodeEnum.STOCK_IN;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.CodeEnum.STOCK_OUT;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.STORAGE_NOT_EXISTS;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 入/出库 Service 实现类
|
|
|
|
@ -44,6 +51,9 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
@Resource
|
|
|
|
|
private CrossOrderManager crossOrderManager;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private StorageMatService storageMatService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Long createStorage(StorageSaveReqVO createReqVO) {
|
|
|
|
@ -79,6 +89,7 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
public void updateStorage(StorageSaveReqVO updateReqVO) {
|
|
|
|
|
// 校验存在
|
|
|
|
|
validateStorageExists(updateReqVO.getId());
|
|
|
|
|
|
|
|
|
|
// 更新
|
|
|
|
|
StorageDO updateObj = BeanUtils.toBean(updateReqVO, StorageDO.class);
|
|
|
|
|
storageMapper.updateById(updateObj);
|
|
|
|
@ -88,6 +99,22 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
|
|
|
|
|
if(updateObj.getStatus() == StorageStatusEnum.SUBMIT.getCode()){
|
|
|
|
|
|
|
|
|
|
// 数据校验
|
|
|
|
|
StorageMatPageReqVO reqVO = new StorageMatPageReqVO();
|
|
|
|
|
reqVO.setStockId(updateReqVO.getId())
|
|
|
|
|
.setWhId(updateReqVO.getWhId());
|
|
|
|
|
List<StorageMatDO> storageMatList = storageMatService.getStorageMatPage(reqVO);
|
|
|
|
|
if(CollUtil.isEmpty(storageMatList)) {
|
|
|
|
|
throw exception(STORAGE_MAT_NOT_EXISTS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (StorageMatDO storageMatDO : storageMatList) {
|
|
|
|
|
if(storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0
|
|
|
|
|
|| storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0){
|
|
|
|
|
throw exception(STORAGE_STOCK_QUANTITY_LACK);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
crossOrderManager.createStockOutOrder(updateObj.getId());
|
|
|
|
|
} catch (ChanjetApiException e) {
|
|
|
|
|