fix: persist PDA picking progress incrementally

This commit is contained in:
2026-09-11 18:24:18 +08:00
parent 019db2900a
commit 06b9f3eda7
5 changed files with 18 additions and 6 deletions
@@ -47,7 +47,7 @@ public final class LoadingPickDtos {
) {
}
/** PDA 在线草稿只在员工提交时发送一次,服务端原子处理整批明细。 */
/** PDA 已即时提交的明细不重复包含;收尾时服务端原子处理剩余全部待拣明细。 */
public record BatchRequest(
@NotNull @Min(1) Long warehouseId,
@NotNull @Min(1) Long loadingPlanId,
@@ -199,7 +199,7 @@ public interface LoadingPickItemMapper extends BaseMapper<LoadingPickItemEntity>
WHERE plan_item.id = fl_loading_pick_item.loading_plan_item_id
AND plan_item.deleted = 0)
AND item_status IN ('PENDING', 'PICKING')
AND picked_package_count < #{finalCount}
AND picked_package_count <= #{finalCount}
AND #{finalCount} < planned_package_count
""")
int partial(@Param("id") long id, @Param("finalCount") int finalCount,
@@ -405,7 +405,7 @@ public class LoadingPickService {
requirePackageUnit(item);
if (repository.partial(itemId, request.finalPickedPackageCount(), request.version(),
request.warehouseId()) != 1) {
throw conflict("部分拣货箱数必须大于已拣箱数且小于计划箱数,或明细版本已变化");
throw conflict("部分拣货最终箱数不能小于已拣箱数且必须小于计划箱数,或明细版本已变化");
}
insertHistory(taskId, itemId, operationId, requestHash, "PARTIAL",
request.finalPickedPackageCount(), null, operatorId, operatorName);
@@ -1068,9 +1068,9 @@ public class LoadingPickService {
int current = count(item.getPickedPackageCount());
int planned = count(item.getPlannedPackageCount());
if (requestItem.finalPickedPackageCount() == null
|| requestItem.finalPickedPackageCount() <= current
|| requestItem.finalPickedPackageCount() < current
|| requestItem.finalPickedPackageCount() >= planned) {
throw conflict("PARTIAL最终箱数必须大于已拣且小于计划箱数");
throw conflict("PARTIAL最终箱数不能小于已拣且必须小于计划箱数");
}
} else if ("SKIP".equals(action)) {
if (requestItem.pickedPackageCount() != null || requestItem.finalPickedPackageCount() != null) {