fix:修改模具出入库后模具组状态及修改审批流程

main
HuangHuiKang 6 days ago
parent 7f905fa2af
commit 067d78a51f

@ -10,7 +10,6 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter; import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInApproveRecordRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInApproveRecordRespVO;
@ -185,9 +184,6 @@ public class ErpStockInController {
} }
private void fillPageReqDefault(ErpStockInPageReqVO pageReqVO) { private void fillPageReqDefault(ErpStockInPageReqVO pageReqVO) {
if (Boolean.TRUE.equals(pageReqVO.getRelatedToMe())) {
pageReqVO.setCurrentUserId(SecurityFrameworkUtils.getLoginUserId());
}
if (StringUtils.isEmpty(pageReqVO.getInType())) { if (StringUtils.isEmpty(pageReqVO.getInType())) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(StockInTypeEnum..getValue()); list.add(StockInTypeEnum..getValue());

@ -60,7 +60,7 @@ public class ErpStockInSaveReqVO {
private Long warehouseId; private Long warehouseId;
@Schema(description = "库区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") @Schema(description = "库区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
@NotNull(message = "库区编号不能为空") // @NotNull(message = "库区编号不能为空")
private Long areaId; private Long areaId;
@Schema(description = "产品编号", example = "3113") @Schema(description = "产品编号", example = "3113")

@ -29,9 +29,6 @@ public interface ErpStockInMapper extends BaseMapperX<ErpStockInDO> {
.eqIfPresent(ErpStockInDO::getCreator, reqVO.getCreator()) .eqIfPresent(ErpStockInDO::getCreator, reqVO.getCreator())
.eqIfPresent(ErpStockInDO::getAuditUserId, reqVO.getAuditUserId()) .eqIfPresent(ErpStockInDO::getAuditUserId, reqVO.getAuditUserId())
.orderByDesc(ErpStockInDO::getId); .orderByDesc(ErpStockInDO::getId);
query.and(Boolean.TRUE.equals(reqVO.getRelatedToMe()) && reqVO.getCurrentUserId() != null,
w -> w.eq(ErpStockInDO::getCreator, String.valueOf(reqVO.getCurrentUserId()))
.or().eq(ErpStockInDO::getAuditUserId, reqVO.getCurrentUserId()));
if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
query.leftJoin(ErpStockInItemDO.class, ErpStockInItemDO::getInId, ErpStockInDO::getId) query.leftJoin(ErpStockInItemDO.class, ErpStockInItemDO::getInId, ErpStockInDO::getId)
.eq(reqVO.getWarehouseId() != null, ErpStockInItemDO::getWarehouseId, reqVO.getWarehouseId()) .eq(reqVO.getWarehouseId() != null, ErpStockInItemDO::getWarehouseId, reqVO.getWarehouseId())

@ -368,7 +368,7 @@ public class MoldBrandServiceImpl implements MoldBrandService {
item.setDeviceName(null); item.setDeviceName(null);
return; return;
} }
if (Objects.equals(latestOperate.getOperateType(), "1")) { if (Objects.equals(latestOperate.getOperateType(), "1") && item.getStatus().equals(MoldBrandStatusEnum.ON_MACHINE.getStatus())) {
item.setDeviceName(latestOperate.getDeviceName()); item.setDeviceName(latestOperate.getDeviceName());
return; return;
} }

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

@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; 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.controller.admin.mold.vo.MoldBrandSaveReqVO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO; 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.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutAuditReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutAuditReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
@ -62,6 +64,8 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
@Resource @Resource
private ErpStockOutMapper stockOutMapper; private ErpStockOutMapper stockOutMapper;
@Resource @Resource
private MoldBrandMapper moldBrandMapper;
@Resource
private ErpStockOutItemMapper stockOutItemMapper; private ErpStockOutItemMapper stockOutItemMapper;
@Resource @Resource
private ErpStockOutApproveRecordMapper stockOutApproveRecordMapper; private ErpStockOutApproveRecordMapper stockOutApproveRecordMapper;
@ -103,7 +107,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
} }
boolean needAudit = needAudit(); boolean needAudit = needAudit();
Integer status = needAudit ? ErpAuditStatus.DRAFT.getStatus() : ErpAuditStatus.APPROVE.getStatus(); Integer status = ErpAuditStatus.DRAFT.getStatus();
ErpStockOutDO stockOut = BeanUtils.toBean(createReqVO, ErpStockOutDO.class, out -> out ErpStockOutDO stockOut = BeanUtils.toBean(createReqVO, ErpStockOutDO.class, out -> out
.setNo(no) .setNo(no)
.setNeedAudit(needAudit) .setNeedAudit(needAudit)
@ -114,11 +118,16 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
stockOutItems.forEach(item -> item.setOutId(stockOut.getId())); stockOutItems.forEach(item -> item.setOutId(stockOut.getId()));
stockOutItemMapper.insertBatch(stockOutItems); stockOutItemMapper.insertBatch(stockOutItems);
if (!needAudit) {
applyStockOutEffect(stockOut, stockOutItems, null); //修改模具组状态
createApproveRecord(stockOut.getId(), ErpStockOutApproveActionEnum.AUTO_APPROVE, null, for (ErpStockOutSaveReqVO.Item item : createReqVO.getItems()) {
ErpAuditStatus.APPROVE.getStatus(), null, "无需审核,系统自动出库"); MoldBrandDO moldBrandDO = moldBrandMapper.selectById(item.getMoldSetId());
moldBrandDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus());
moldBrandMapper.updateById(moldBrandDO);
} }
return stockOut.getId(); return stockOut.getId();
} }
@ -189,12 +198,25 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
&& !ErpAuditStatus.UN_APPROVE.getStatus().equals(stockOut.getStatus())) { && !ErpAuditStatus.UN_APPROVE.getStatus().equals(stockOut.getStatus())) {
throw exception(STOCK_OUT_SUBMIT_FAIL_STATUS); throw exception(STOCK_OUT_SUBMIT_FAIL_STATUS);
} }
Integer fromStatus = stockOut.getStatus();
if (!Boolean.TRUE.equals(stockOut.getNeedAudit())) {
int updateCount = stockOutMapper.updateByIdAndStatus(stockOut.getId(), fromStatus,
new ErpStockOutDO().setStatus(ErpAuditStatus.APPROVE.getStatus()));
if (updateCount == 0) {
throw exception(STOCK_OUT_SUBMIT_FAIL_STATUS);
}
List<ErpStockOutItemDO> stockOutItems = stockOutItemMapper.selectListByOutId(stockOut.getId());
applyStockOutEffect(stockOut, stockOutItems, null);
createApproveRecord(stockOut.getId(), ErpStockOutApproveActionEnum.AUTO_APPROVE, fromStatus,
ErpAuditStatus.APPROVE.getStatus(), null,
submitReqVO.getRemark() != null ? submitReqVO.getRemark() : "无需审核,提交后自动出库");
return;
}
Long auditUserId = submitReqVO.getAuditUserId() != null ? submitReqVO.getAuditUserId() : stockOut.getAuditUserId(); Long auditUserId = submitReqVO.getAuditUserId() != null ? submitReqVO.getAuditUserId() : stockOut.getAuditUserId();
if (auditUserId == null) { if (auditUserId == null) {
throw exception(STOCK_OUT_SUBMIT_FAIL_AUDIT_USER_EMPTY); throw exception(STOCK_OUT_SUBMIT_FAIL_AUDIT_USER_EMPTY);
} }
adminUserApi.validateUser(auditUserId); adminUserApi.validateUser(auditUserId);
Integer fromStatus = stockOut.getStatus();
ErpStockOutDO updateObj = new ErpStockOutDO() ErpStockOutDO updateObj = new ErpStockOutDO()
.setAuditUserId(auditUserId) .setAuditUserId(auditUserId)
.setNeedAudit(true) .setNeedAudit(true)

Loading…
Cancel
Save