fix: 追加数量后重新打开已完成作业

This commit is contained in:
zhouz
2026-08-14 17:28:33 +08:00
parent 80f5ddf87e
commit 1dd1f11384
3 changed files with 35 additions and 4 deletions

View File

@@ -97,6 +97,12 @@ public interface DailyPlanMapper extends BaseMapperX<DailyPlanDO> {
/** 原子确认数量并开始未开始订单。 */
int startOrderWithVersion(@Param("plan") DailyPlanDO plan);
/** 原子追加需求数量,并重新打开已经完成的备货、套管作业。 */
int appendQuantityWithVersion(@Param("dailyPlanId") Long dailyPlanId,
@Param("appendQty") Integer appendQty,
@Param("version") Integer version,
@Param("updater") String updater);
/**
* 乐观锁恢复已取消的订单状态,并清空前一订单状态。
*/

View File

@@ -400,11 +400,21 @@ public class DailyPlanServiceImpl implements DailyPlanService {
public void appendQuantity(DailyPlanAppendReqVO reqVO) {
DailyPlanDO current = validateVersion(reqVO.getId(), reqVO.getVersion());
validateOrderStatus(current, DailyPlanOrderStatusEnum.IN_PROGRESS, "追加数量");
DailyPlanDO update = newUpdate(current);
update.setAppendQty(safeAddQuantity(current.getAppendQty(), reqVO.getAppendQty()));
checkAffected(dailyPlanMapper.updateStateWithVersion(update));
Integer appendQty = safeAddQuantity(current.getAppendQty(), reqVO.getAppendQty());
checkAffected(dailyPlanMapper.appendQuantityWithVersion(current.getDailyPlanId(), reqVO.getAppendQty(),
current.getVersion(), String.valueOf(getLoginUserId())));
insertLog(current.getDailyPlanId(), TARGET_QUANTITY, TYPE_APPEND, String.valueOf(current.getAppendQty()),
String.valueOf(update.getAppendQty()), reqVO.getAppendQty(), null);
String.valueOf(appendQty), reqVO.getAppendQty(), null);
if (DailyPlanWorkStatusEnum.COMPLETED.getCode().equals(current.getStockingStatus())) {
insertLog(current.getDailyPlanId(), TARGET_STOCKING, TYPE_RESTORE,
String.valueOf(current.getStockingStatus()),
String.valueOf(DailyPlanWorkStatusEnum.IN_PROGRESS.getCode()), null, "追加数量,重新开始备货");
}
if (DailyPlanWorkStatusEnum.COMPLETED.getCode().equals(current.getSleevingStatus())) {
insertLog(current.getDailyPlanId(), TARGET_SLEEVING, TYPE_RESTORE,
String.valueOf(current.getSleevingStatus()),
String.valueOf(DailyPlanWorkStatusEnum.IN_PROGRESS.getCode()), null, "追加数量,重新开始套管");
}
}
/** 开始备货。 */

View File

@@ -264,6 +264,21 @@
AND deleted = b'0'
</update>
<update id="appendQuantityWithVersion">
UPDATE lms_daily_plan
SET stocking_complete_time = CASE WHEN stocking_status = 2 THEN NULL ELSE stocking_complete_time END,
sleeving_complete_time = CASE WHEN sleeving_status = 2 THEN NULL ELSE sleeving_complete_time END,
stocking_status = CASE WHEN stocking_status = 2 THEN 1 ELSE stocking_status END,
sleeving_status = CASE WHEN sleeving_status = 2 THEN 1 ELSE sleeving_status END,
append_qty = append_qty + #{appendQty},
updater = #{updater},
version = version + 1
WHERE daily_plan_id = #{dailyPlanId}
AND version = #{version}
AND order_status = 1
AND deleted = b'0'
</update>
<update id="updateSortWithVersion">
UPDATE lms_daily_plan
SET sort_seq = #{sortSeq}, updater = #{updater}, version = version + 1