fix: 追加数量后重新打开已完成作业
This commit is contained in:
@@ -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);
|
||||
|
||||
/**
|
||||
* 乐观锁恢复已取消的订单状态,并清空前一订单状态。
|
||||
*/
|
||||
|
||||
@@ -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, "追加数量,重新开始套管");
|
||||
}
|
||||
}
|
||||
|
||||
/** 开始备货。 */
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user