|
|
|
|
@ -13,8 +13,10 @@ import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInItemMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockInCreateReqBO;
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@ -54,6 +56,8 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
private ErpWarehouseService warehouseService;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpSupplierService supplierService;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpStockRecordService stockRecordService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@ -102,23 +106,31 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void updateStockInStatus(Long id, Integer status) {
|
|
|
|
|
boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
|
|
|
|
|
// 1.1 校验存在
|
|
|
|
|
ErpStockInDO stockIn = validateStockInExists(id);
|
|
|
|
|
// 1.2 校验状态
|
|
|
|
|
if (stockIn.getStatus().equals(status)) {
|
|
|
|
|
throw exception(ErpAuditStatus.PROCESS.getStatus().equals(status) ?
|
|
|
|
|
STOCK_IN_PROCESS_FAIL : STOCK_IN_APPROVE_FAIL);
|
|
|
|
|
throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 2. 更新状态
|
|
|
|
|
int updateCount = stockInMapper.updateByIdAndStatus(id, stockIn.getStatus(),
|
|
|
|
|
new ErpStockInDO().setStatus(status));
|
|
|
|
|
if (updateCount == 0) {
|
|
|
|
|
throw exception(ErpAuditStatus.PROCESS.getStatus().equals(status) ?
|
|
|
|
|
STOCK_IN_PROCESS_FAIL : STOCK_IN_APPROVE_FAIL);
|
|
|
|
|
throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 3. TODO 芋艿:调整库存记录
|
|
|
|
|
// 3. 变更库存
|
|
|
|
|
List<ErpStockInItemDO> stockInItems = stockInItemMapper.selectListByInId(id);
|
|
|
|
|
Integer bizType = approve ? ErpStockRecordBizTypeEnum.OTHER_IN.getType()
|
|
|
|
|
: ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType();
|
|
|
|
|
stockInItems.forEach(stockInItem -> {
|
|
|
|
|
BigDecimal count = approve ? stockInItem.getCount() : stockInItem.getCount().negate();
|
|
|
|
|
stockRecordService.createStockRecord(new ErpStockInCreateReqBO(
|
|
|
|
|
stockInItem.getProductId(), stockInItem.getWarehouseId(), count,
|
|
|
|
|
bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo()));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<ErpStockInItemDO> validateStockInItems(List<ErpStockInSaveReqVO.Item> list) {
|
|
|
|
|
|