|
|
|
|
@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldBrandSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO;
|
|
|
|
|
import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldBrandMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.common.enums.MoldBrandStatusEnum;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInAuditReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
|
|
|
|
|
@ -78,6 +79,8 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpStockInMapper stockInMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private MoldBrandMapper moldBrandMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpStockInItemMapper stockInItemMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpStockInApproveRecordMapper stockInApproveRecordMapper;
|
|
|
|
|
@ -118,7 +121,7 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean needAudit = needAudit();
|
|
|
|
|
Integer status = needAudit ? ErpAuditStatus.DRAFT.getStatus() : ErpAuditStatus.APPROVE.getStatus();
|
|
|
|
|
Integer status = ErpAuditStatus.DRAFT.getStatus();
|
|
|
|
|
ErpStockInDO stockIn = BeanUtils.toBean(createReqVO, ErpStockInDO.class, in -> in
|
|
|
|
|
.setNo(no)
|
|
|
|
|
.setNeedAudit(needAudit)
|
|
|
|
|
@ -129,11 +132,16 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
stockInItems.forEach(item -> item.setInId(stockIn.getId()));
|
|
|
|
|
stockInItemMapper.insertBatch(stockInItems);
|
|
|
|
|
|
|
|
|
|
if (!needAudit) {
|
|
|
|
|
applyStockInEffect(stockIn, stockInItems, null);
|
|
|
|
|
createApproveRecord(stockIn.getId(), ErpStockInApproveActionEnum.AUTO_APPROVE, null,
|
|
|
|
|
ErpAuditStatus.APPROVE.getStatus(), null, "无需审核,系统自动入库");
|
|
|
|
|
|
|
|
|
|
//修改模具组状态
|
|
|
|
|
for (ErpStockInSaveReqVO.Item item : createReqVO.getItems()) {
|
|
|
|
|
MoldBrandDO moldBrandDO = moldBrandMapper.selectById(item.getMoldSetId());
|
|
|
|
|
moldBrandDO.setStatus(MoldBrandStatusEnum.IN_STOCK.getStatus());
|
|
|
|
|
moldBrandMapper.updateById(moldBrandDO);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return stockIn.getId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -201,12 +209,25 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
&& !ErpAuditStatus.UN_APPROVE.getStatus().equals(stockIn.getStatus())) {
|
|
|
|
|
throw exception(STOCK_IN_SUBMIT_FAIL_STATUS);
|
|
|
|
|
}
|
|
|
|
|
Integer fromStatus = stockIn.getStatus();
|
|
|
|
|
if (!Boolean.TRUE.equals(stockIn.getNeedAudit())) {
|
|
|
|
|
int updateCount = stockInMapper.updateByIdAndStatus(stockIn.getId(), fromStatus,
|
|
|
|
|
new ErpStockInDO().setStatus(ErpAuditStatus.APPROVE.getStatus()));
|
|
|
|
|
if (updateCount == 0) {
|
|
|
|
|
throw exception(STOCK_IN_SUBMIT_FAIL_STATUS);
|
|
|
|
|
}
|
|
|
|
|
List<ErpStockInItemDO> stockInItems = stockInItemMapper.selectListByInId(stockIn.getId());
|
|
|
|
|
applyStockInEffect(stockIn, stockInItems, null);
|
|
|
|
|
createApproveRecord(stockIn.getId(), ErpStockInApproveActionEnum.AUTO_APPROVE, fromStatus,
|
|
|
|
|
ErpAuditStatus.APPROVE.getStatus(), null,
|
|
|
|
|
submitReqVO.getRemark() != null ? submitReqVO.getRemark() : "无需审核,提交后自动入库");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Long auditUserId = submitReqVO.getAuditUserId() != null ? submitReqVO.getAuditUserId() : stockIn.getAuditUserId();
|
|
|
|
|
if (auditUserId == null) {
|
|
|
|
|
throw exception(STOCK_IN_SUBMIT_FAIL_AUDIT_USER_EMPTY);
|
|
|
|
|
}
|
|
|
|
|
adminUserApi.validateUser(auditUserId);
|
|
|
|
|
Integer fromStatus = stockIn.getStatus();
|
|
|
|
|
ErpStockInDO updateObj = new ErpStockInDO()
|
|
|
|
|
.setAuditUserId(auditUserId)
|
|
|
|
|
.setNeedAudit(true)
|
|
|
|
|
@ -377,7 +398,6 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<ErpStockInItemDO> validateStockInItems(List<ErpStockInSaveReqVO.Item> list, String inType) {
|
|
|
|
|
validateWarehouseAreas(list);
|
|
|
|
|
if (Objects.equals(inType, "模具入库")) {
|
|
|
|
|
List<MoldBrandDO> moldList = moldBrandService.validMoldList(convertSet(list, ErpStockInSaveReqVO.Item::getMoldSetId));
|
|
|
|
|
Map<Long, MoldBrandDO> moldMap = convertMap(moldList, MoldBrandDO::getId);
|
|
|
|
|
@ -409,6 +429,8 @@ public class ErpStockInServiceImpl implements ErpStockInService {
|
|
|
|
|
.build();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
validateWarehouseAreas(list);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<ErpProductDO> productList = productService.validProductList(convertSet(list, ErpStockInSaveReqVO.Item::getProductId));
|
|
|
|
|
Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
|
|
|
|
|
|