This commit is contained in:
2026-09-16 15:57:37 +08:00
parent 8f0622058d
commit 4571e3ac16
3 changed files with 42 additions and 15 deletions
@@ -59,7 +59,8 @@ public interface DropshipPalletizationMapper {
@Param("operationId") String operationId,@Param("operatorId") long operatorId,@Param("operatorName") String operatorName);
@Select("SELECT * FROM fl_dropship_pallet WHERE pallet_no=#{palletNo} FOR UPDATE") PalletRow palletByNo(@Param("palletNo") String palletNo);
@Select("SELECT COUNT(*) FROM fl_dropship_pallet WHERE task_id=#{taskId}") int palletCount(@Param("taskId") long taskId);
@Select("SELECT COUNT(*) FROM fl_dropship_pallet WHERE tenant_id=#{tenantId} AND inbound_id=#{inboundId}")
int palletCountByInbound(@Param("tenantId") long tenantId,@Param("inboundId") long inboundId);
@Select("SELECT * FROM fl_dropship_pallet WHERE seal_operation_id=#{operationId}") PalletRow palletBySealOperation(@Param("operationId") String operationId);
@Select("""
SELECT p.* FROM fl_dropship_pallet p
@@ -72,8 +73,8 @@ public interface DropshipPalletizationMapper {
WHERE EXISTS(SELECT 1 FROM fl_dropship_pallet_carton c WHERE c.pallet_id=p.id AND c.task_id=#{taskId})
ORDER BY p.id
""") List<PalletRow> pallets(@Param("taskId") long taskId);
@Select("SELECT * FROM fl_dropship_pallet WHERE task_id=#{taskId} ORDER BY id")
List<PalletRow> generatedPallets(@Param("taskId") long taskId);
@Select("SELECT * FROM fl_dropship_pallet WHERE tenant_id=#{tenantId} AND inbound_id=#{inboundId} ORDER BY id")
List<PalletRow> generatedPalletsByInbound(@Param("tenantId") long tenantId,@Param("inboundId") long inboundId);
@Select("""
SELECT p.* FROM fl_dropship_pallet p
WHERE ((p.tenant_id=#{tenantId} AND p.inbound_id=#{inboundId})
@@ -191,7 +191,8 @@ public class DropshipPalletizationService {
public List<Pallet> generatedPallets(long taskId,long warehouseId,long operatorId){
TaskRow task=requireTask(taskId,warehouseId);
if(task.getAssigneeId()!=null && task.getAssigneeId()!=operatorId) throw conflict("任务已由其他人员领取");
return mapper.generatedPallets(taskId).stream().map(p->palletView(p,task.getInboundCode())).toList();
return mapper.generatedPalletsByInbound(task.getTenantId(),task.getInboundId()).stream()
.map(p->palletView(p,task.getInboundCode())).toList();
}
private PalletRow requireAssignablePallet(TaskRow task,String palletNo){
@@ -211,7 +212,7 @@ public class DropshipPalletizationService {
private Task view(TaskRow row){
List<Pallet> pallets=mapper.pallets(row.getId()).stream().map(p->palletView(p,row.getInboundCode())).toList();
int expected=row.getExpectedPalletCount()==null?0:row.getExpectedPalletCount();
int generated=mapper.palletCount(row.getId());
int generated=mapper.palletCountByInbound(row.getTenantId(),row.getInboundId());
boolean palletSetupReady=expected>0 && generated==expected;
return new Task(row.getId(),row.getInboundId(),row.getInboundCode(),row.getTenantId(),row.getCustomerName(),row.getWarehouseId(),row.getWarehouseName(),
row.getTotalCartons(),row.getCountedCartons(),row.getAllocatedCartons(),row.getCountedCartons()-row.getAllocatedCartons(),row.getDiscrepancyCartons(),
@@ -268,8 +269,8 @@ public class DropshipPalletizationService {
}
private TaskRow requireWorkingTask(long taskId,long warehouseId,long operatorId){ TaskRow task=requireTask(taskId,warehouseId); if(!"CLAIMED".equals(task.getTaskStatus())) throw conflict("请先领取待清点组托任务"); if(!Objects.equals(task.getAssigneeId(),operatorId)) throw conflict("任务不属于当前操作员"); if(!"WAIT_PALLETIZE".equals(task.getProcessStatus())) throw conflict("入仓单已不在待清点组托状态"); requirePalletSetup(task); return task; }
private void requirePalletSetup(TaskRow task){ if(!palletSetupReady(task)) throw conflict(palletSetupMessage(task)); }
private boolean palletSetupReady(TaskRow task){ return task.getExpectedPalletCount()!=null && task.getExpectedPalletCount()>0 && mapper.palletCount(task.getId())==task.getExpectedPalletCount(); }
private String palletSetupMessage(TaskRow task){ int expected=task.getExpectedPalletCount()==null?0:task.getExpectedPalletCount(); return palletSetupMessage(expected,mapper.palletCount(task.getId())); }
private boolean palletSetupReady(TaskRow task){ return task.getExpectedPalletCount()!=null && task.getExpectedPalletCount()>0 && mapper.palletCountByInbound(task.getTenantId(),task.getInboundId())==task.getExpectedPalletCount(); }
private String palletSetupMessage(TaskRow task){ int expected=task.getExpectedPalletCount()==null?0:task.getExpectedPalletCount(); return palletSetupMessage(expected,mapper.palletCountByInbound(task.getTenantId(),task.getInboundId())); }
private static String palletSetupMessage(int expected,int generated){ return "预计 "+expected+" 托,当前仅生成 "+generated+" 个托盘码,请联系后台处理后刷新"; }
private TaskRow requireTask(long taskId,long warehouseId){ TaskRow task=mapper.task(taskId,warehouseId); if(task==null) throw new BizException(ResultCode.NOT_FOUND,"未找到当前仓库的一件代发清点组托任务"); return task; }
private PalletRow requireOpenPallet(long taskId,long palletId,long warehouseId){ PalletRow p=mapper.pallet(taskId,palletId,warehouseId); if(p==null) throw new BizException(ResultCode.NOT_FOUND,"托盘不存在"); if(!"OPEN".equals(p.getPalletStatus())) throw conflict("托盘已封托,不能修改"); return p; }