You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1014 lines
42 KiB
1014 lines
42 KiB
package com.gaotao.modules.automatedWarehouse.mapper;
|
|
|
|
import com.gaotao.modules.api.entity.TaskNote;
|
|
import com.gaotao.modules.automatedWarehouse.entity.*;
|
|
import com.gaotao.modules.base.entity.PalletType;
|
|
import com.gaotao.modules.warehouse.entity.Pallet;
|
|
import com.gaotao.modules.warehouse.entity.PalletData;
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
import org.apache.ibatis.annotations.Param;
|
|
import org.hibernate.dialect.function.IntegralTimestampaddFunction;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Mapper
|
|
public interface WcsIntegrationMapper {
|
|
|
|
List<WmsLabelAndPalletData> palletListForPartNo(PartPalletData inData);
|
|
|
|
List<WmsTransportTask> checkPalletTask (@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
void batchSaveTransportTask(@Param("list") List<WmsTransportTask> transportTaskList);
|
|
void batchSaveOrderTask(@Param("list") List<WmsOrderTask> transportTaskList);
|
|
void batchSaveOrderTaskDetail(@Param("list") List<WmsOrderTaskDetail> inList);
|
|
// ==================== 打托相关方法 - AI制作 ====================
|
|
|
|
/**
|
|
* 检查栈板是否存在 - AI制作
|
|
*/
|
|
Map<String, Object> getPalletInfo(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 获取栈板明细数量 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 明细数量
|
|
*/
|
|
int getPalletDetailCount(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 获取栈板类型的位置信息 - AI制作
|
|
*/
|
|
List<String> getPalletTypePositions(@Param("site") String site, @Param("palletType") String palletType);
|
|
|
|
/**
|
|
* 获取栈板明细 - AI制作
|
|
*/
|
|
List<Map<String, Object>> getPalletDetails(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position, @Param("layer") Integer layer);
|
|
List<PalletDetailData> getPalletDetailsData(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
PalletType getPalletTypeInfoByPallet(@Param("site") String site,@Param("palletId") String palletId);
|
|
/**
|
|
* 根据位置获取层数 - AI制作
|
|
*/
|
|
List<Integer> getLayersByPosition(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position);
|
|
|
|
/**
|
|
* 验证标签 - AI制作
|
|
*/
|
|
Map<String, Object> validateLabel(@Param("site") String site, @Param("serialNo") String serialNo);
|
|
|
|
/**
|
|
* 获取栈板类型区域信息(用于校验层级规则) - AI制作
|
|
*/
|
|
List<Map<String, Object>> getPalletTypeAreaInfo(@Param("site") String site, @Param("palletType") String palletType);
|
|
|
|
/**
|
|
* 获取栈板指定层的明细统计 - AI制作
|
|
*/
|
|
List<Map<String, Object>> getPalletLayerStatistics(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("layer") Integer layer);
|
|
|
|
/**
|
|
* 保存栈板明细 - AI制作
|
|
*/
|
|
void savePalletDetail(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position, @Param("layer") Integer layer,
|
|
@Param("serialNo") String serialNo, @Param("partNo") String partNo,
|
|
@Param("createBy") String createBy);
|
|
|
|
/**
|
|
* @Description 保存栈板明细(无校验,用于自动拣选)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @param position 位置
|
|
* @param layer 层数
|
|
* @param serialNo 标签编码
|
|
* @param partNo 物料编号
|
|
* @param createBy 创建人
|
|
* @param wcsFlag WCS标记(1=待推送,0=已推送)
|
|
* @author rqrq
|
|
* @date 2025/10/09
|
|
*/
|
|
void savePalletDetailNoValidation(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position, @Param("layer") Integer layer,
|
|
@Param("serialNo") String serialNo, @Param("partNo") String partNo,
|
|
@Param("createBy") String createBy, @Param("wcsFlag") Integer wcsFlag);
|
|
|
|
/**
|
|
* 根据标签查找栈板信息 - AI制作
|
|
*/
|
|
Map<String, Object> findPalletByLabel(@Param("site") String site, @Param("serialNo") String serialNo);
|
|
AgvStation getNowStation(@Param("site") String site, @Param("palletId") String palletId);
|
|
/**
|
|
* 获取指定位置已占用的层数(排除指定标签) - AI制作
|
|
*/
|
|
List<Integer> getOccupiedLayersExcludeSerial(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position, @Param("excludeSerialNo") String excludeSerialNo);
|
|
|
|
void updatePalletLocationCode(@Param("site") String site, @Param("palletId") String palletId, @Param("newLocationCode") String newLocationCode);
|
|
/**
|
|
* 更新栈板明细位置 - AI制作
|
|
*/
|
|
void updatePalletDetailPosition(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("serialNo") String serialNo, @Param("newPosition") String newPosition,
|
|
@Param("newLayer") Integer newLayer, @Param("updatedBy") String updatedBy);
|
|
|
|
/**
|
|
* 删除栈板明细 - AI制作
|
|
*/
|
|
void deletePalletDetail(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("serialNo") String serialNo);
|
|
|
|
/**
|
|
* @Description 检查上层是否有标签 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @param position 位置
|
|
* @param layer 当前层数
|
|
* @return 上层标签数量
|
|
* @author rqrq
|
|
* @date 2025/11/22
|
|
*/
|
|
Integer checkUpperLayerLabels(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("position") String position, @Param("layer") Integer layer);
|
|
|
|
/**
|
|
* 根据条码删除栈板明细(不指定栈板ID,用于从任何栈板中移除条码) - AI制作
|
|
*/
|
|
void deletePalletDetailBySerialNo(@Param("site") String site, @Param("serialNo") String serialNo);
|
|
/**
|
|
* 恢复标签到原栈板(分拣撤回,保留所有原始字段包括wcs_flag) - rqrq
|
|
*/
|
|
void restorePalletDetail(@Param("site") String site, @Param("serialNo") String serialNo,
|
|
@Param("originalPalletId") String originalPalletId,
|
|
@Param("originalPosition") String originalPosition,
|
|
@Param("originalLayer") Integer originalLayer,
|
|
@Param("partNo") String partNo,
|
|
@Param("createDate") Date createDate,
|
|
@Param("createBy") String createBy,
|
|
@Param("wcsFlag") Integer wcsFlag);
|
|
|
|
/**
|
|
* 更新栈板调用状态 - AI制作
|
|
*/
|
|
void updatePalletCallingFlag(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("callingFlag") String callingFlag, @Param("updatedBy") String updatedBy);
|
|
|
|
/**
|
|
* 检查栈板是否正在被调用 - AI制作
|
|
*/
|
|
String checkPalletCallingFlag(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 查询栈板的运输任务(检查是否有进行中的AGV任务)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 运输任务(如果存在状态为"已预约"、"已创建"或"已下达"的任务)
|
|
* @author rqrq
|
|
* @date 2025/11/01
|
|
*/
|
|
WmsTransportTask getActivePalletTransportTask(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 统计栈板明细数量 - AI制作
|
|
*/
|
|
int countPalletDetails(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 更新栈板空栈板标记 - AI制作
|
|
*/
|
|
void updatePalletEmptyFlag(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("emptyFlag") String emptyFlag, @Param("updatedBy") String updatedBy);
|
|
|
|
// ==================== 运输任务相关方法 - AI制作 ====================
|
|
|
|
/**
|
|
* 获取AGV站点列表 - AI制作
|
|
*/
|
|
List<Map<String, Object>> getAgvStations();
|
|
|
|
/**
|
|
* 获取可用的AGV站点列表(按状态和类型过滤)- AI制作
|
|
* @param statusDb 站点状态(0-空闲,1-有货),null则不过滤
|
|
* @return 符合条件的正式站点列表
|
|
*/
|
|
List<AgvStation> getAvailableAgvStations(@Param("statusDb") Integer statusDb);
|
|
|
|
/**
|
|
* 根据目标区域查找第一个空闲站点 - AI制作
|
|
* @param stationArea 目标区域(station_area)
|
|
* @return 第一个空闲站点的station_code,如果没有返回null
|
|
*/
|
|
String findFirstFreeStationByArea(@Param("stationArea") String stationArea);
|
|
|
|
/**
|
|
* 根据起点站点获取可达目标站点 - AI制作
|
|
*/
|
|
List<Map<String, Object>> getTargetStationsByStart(@Param("startStation") String startStation);
|
|
|
|
/**
|
|
* 插入单个运输任务 - AI制作
|
|
*/
|
|
void insertTransportTask(WmsTransportTask task);
|
|
void insertOrderTask(WmsOrderTask task);
|
|
|
|
/**
|
|
* @Description 删除运输任务(根据taskNo)- rqrq
|
|
* @param taskNo 任务编号
|
|
* @author rqrq
|
|
* @date 2025/11/17
|
|
*/
|
|
void deleteTransportTask(@Param("taskNo") String taskNo);
|
|
|
|
/**
|
|
* 检查站点是否有栈板 - AI制作
|
|
*/
|
|
int checkStationHasPallet(@Param("site") String site, @Param("stationCode") String stationCode);
|
|
PalletData getPalletDataByStation(@Param("site") String site, @Param("stationCode") String stationCode);
|
|
/**
|
|
* 获取站点的栈板ID - AI制作
|
|
*/
|
|
String getPalletIdByStation(@Param("site") String site, @Param("stationCode") String stationCode);
|
|
|
|
/**
|
|
* 根据ID查询运输任务 - AI制作
|
|
*/
|
|
WmsTransportTask getTransportTaskById(@Param("id") Long id);
|
|
|
|
/**
|
|
* 根据taskNo查询运输任务 - AI制作
|
|
*/
|
|
WmsTransportTask getTransportTaskByTaskNo(@Param("taskNo") String taskNo);
|
|
|
|
/**
|
|
* 更新运输任务状态 - AI制作
|
|
*/
|
|
void updateTransportTaskStatus(@Param("id") Long id, @Param("status") String status);
|
|
|
|
/**
|
|
* 根据taskNo更新运输任务状态 - AI制作
|
|
*/
|
|
void updateTransportTaskStatusByTaskNo(@Param("taskNo") String taskNo, @Param("status") String status);
|
|
|
|
/**
|
|
* @Description 统计指定区域未完成的立库取货call料任务数量 - rqrq
|
|
* @param site 工厂编码
|
|
* @param areaType 区域类型
|
|
* @return 未完成的call料任务数量
|
|
* @author rqrq
|
|
* @date 2025/11/22
|
|
*/
|
|
Integer countUnfinishedCallTasksByArea(@Param("site") String site, @Param("areaType") String areaType);
|
|
|
|
/**
|
|
* 根据站点代码获取站点信息 - AI制作
|
|
*/
|
|
Map<String, Object> getStationInfoByCode(@Param("stationCode") String stationCode);
|
|
AgvStation getStationDataByCode(@Param("stationCode") String stationCode);
|
|
/**
|
|
* 更新栈板明细的wcs_flag为1 - AI制作
|
|
*/
|
|
void updatePalletDetailWcsFlag(@Param("site") String site, @Param("palletId") String palletId);
|
|
void reUpdatePalletDetailWcsFlag(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
List<PalletDetailData> getPalletDetailsNewDetail(@Param("site") String site, @Param("palletId") String palletId);
|
|
void updateSOIssueNotifyOrderMaterialListDetailOutWcsFlag(@Param("site") String site, @Param("serialNo") String serialNo);
|
|
|
|
/**
|
|
* @Description 根据序列号列表查询SOIssueNotifyOrderMaterialList_detail明细 - rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNos 序列号列表
|
|
* @return 明细列表
|
|
* @author rqrq
|
|
* @date 2025/01/XX
|
|
*/
|
|
List<com.gaotao.modules.notify.entity.SOIssueNotifyOrderMaterialListDetail> getSOIssueNotifyDetailsBySerialNos(
|
|
@Param("site") String site, @Param("serialNos") List<String> serialNos);
|
|
|
|
/**
|
|
* @Description 根据序列号列表查询handling_unit的reserve_order_ref信息 - rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNos 序列号列表
|
|
* @return reserve信息列表
|
|
* @author rqrq
|
|
* @date 2025/10/30
|
|
*/
|
|
List<HandlingUnitReserveInfo> getReserveOrderRefsBySerialNos(@Param("site") String site, @Param("serialNos") List<String> serialNos);
|
|
|
|
/**
|
|
* @Description 根据task_no+item_no+seq_no更新wms_order_task_detail状态为已完成已分拣 - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNo 任务编号
|
|
* @param itemNo 任务行号
|
|
* @param seqNo 序号
|
|
* @author rqrq
|
|
* @date 2025/01/XX
|
|
*/
|
|
void updateWmsOrderTaskDetailStatusForSorting(@Param("site") String site, @Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo, @Param("seqNo") Integer seqNo);
|
|
void updateWmsOrderTaskDetailStatusForAllOuting(@Param("site") String site, @Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo, @Param("seqNo") Integer seqNo);
|
|
|
|
/**
|
|
* @Description 批量更新wms_order_task_detail状态为已完成/已分拣(优化版,避免N+1查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param taskDetails 任务明细列表(包含taskNo, itemNo, seqNo)
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchUpdateWmsOrderTaskDetailStatusForSorting(@Param("site") String site, @Param("taskDetails") List<TaskDetailKey> taskDetails);
|
|
|
|
/**
|
|
* @Description 批量查找序列号所在的托盘信息(优化版,避免N+1查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNos 序列号列表
|
|
* @return Map<序列号, 托盘信息>,key为serialNo,value包含palletId等信息
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
List<Map<String, Object>> batchFindPalletsByLabels(@Param("site") String site, @Param("serialNos") List<String> serialNos);
|
|
|
|
/**
|
|
* @Description 批量删除指定序列号的托盘明细(优化版,避免N+1查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNos 序列号列表
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchDeletePalletDetailsBySerialNos(@Param("site") String site, @Param("serialNos") List<String> serialNos);
|
|
|
|
/**
|
|
* @Description 批量插入托盘明细(无校验,用于自动拣选,优化版)- rqrq
|
|
* @param detailList 明细列表
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchSavePalletDetailNoValidation(@Param("detailList") List<PalletDetailInsert> detailList);
|
|
|
|
/**
|
|
* @Description 检查某个任务的所有明细是否都已完成 - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNo 任务编号
|
|
* @param itemNo 任务行号
|
|
* @return 未完成的明细数量
|
|
* @author rqrq
|
|
* @date 2025/01/XX
|
|
*/
|
|
int checkAllTaskDetailCompleted(@Param("site") String site, @Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo);
|
|
|
|
/**
|
|
* @Description 更新wms_order_task主表状态为已完成 - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNo 任务编号
|
|
* @param itemNo 任务行号
|
|
* @author rqrq
|
|
* @date 2025/01/XX
|
|
*/
|
|
void updateWmsOrderTaskStatusCompleted(@Param("site") String site, @Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo);
|
|
|
|
/**
|
|
* @Description 根据task_ref+task_item+serialNo更新SOIssueNotifyOrderMaterialList_detail的out_wcs_flag为Y - rqrq
|
|
* @param site 工厂编码
|
|
|
|
* @param serialNo 序列号
|
|
* @author rqrq
|
|
* @date 2025/10/09
|
|
*/
|
|
void updateSOIssueNotifyDetailOutWcsFlagBySerialNo(@Param("site") String site, @Param("serialNo") String serialNo);
|
|
|
|
/**
|
|
* @Description 批量更新多个序列号的out_wcs_flag为Y(优化版,避免N+1查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNos 序列号列表
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchUpdateSOIssueNotifyDetailOutWcsFlag(@Param("site") String site, @Param("serialNos") List<String> serialNos);
|
|
|
|
/**
|
|
* @Description 批量更新wms_order_task_detail状态为已完成/直接出库(优化版,避免N+1查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param taskDetails 任务明细列表(包含taskNo, itemNo, seqNo)
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchUpdateWmsOrderTaskDetailStatus(@Param("site") String site, @Param("taskDetails") List<TaskDetailKey> taskDetails);
|
|
|
|
/**
|
|
* @Description 一次性更新所有已完成任务的主表状态(优化版,避免循环查询)- rqrq
|
|
* @param site 工厂编码
|
|
* @param taskKeys 任务主键列表(包含taskNo, itemNo)
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void batchUpdateCompletedTaskStatus(@Param("site") String site, @Param("taskKeys") List<TaskDetailKey> taskKeys);
|
|
|
|
void insertWmsTransportTaskDetail(WmsTransportTaskDetail inData);
|
|
void insertWmsOrderTaskDetail(WmsOrderTaskDetail inData);
|
|
|
|
Integer getMaxSeqNoForTaskDetail(@Param("site") String site, @Param("taskNo") String taskNo);
|
|
|
|
void updateTransportTaskStatusForSiteAndNo(@Param("site") String site, @Param("taskNo") String taskNo,@Param("status") String status);
|
|
|
|
/**
|
|
* @Description 锁定任务明细进行处理(使用status状态控制并发) - rqrq
|
|
* @param id 明细ID
|
|
* @return 更新的行数(0表示锁定失败,已被其他线程处理)
|
|
* @author rqrq
|
|
* @date 2025/10/18
|
|
*/
|
|
int lockTaskDetailForProcessing(@Param("id") Long id);
|
|
|
|
/**
|
|
* @Description 更新运输任务明细状态为最终状态 - rqrq
|
|
* @param id 明细ID
|
|
* @param status 新状态
|
|
* @author rqrq
|
|
* @date 2025/10/18
|
|
*/
|
|
void updateTransportTaskDetailStatusForId(@Param("id") Long id, @Param("status") String status);
|
|
|
|
/**
|
|
* @Description 更新运输任务明细为失败状态(包含错误信息) - rqrq
|
|
* @param id 明细ID
|
|
* @param errorCode 错误码(处理失败=500)
|
|
* @param errorMsg 错误信息
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void updateTransportTaskDetailWithError(@Param("id") Long id, @Param("errorCode") String errorCode, @Param("errorMsg") String errorMsg);
|
|
|
|
/**
|
|
* @Description 清除运输任务明细的错误信息(处理成功) - rqrq
|
|
* @param id 明细ID
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
void clearTransportTaskDetailError(@Param("id") Long id);
|
|
|
|
List<WmsTransportTaskDetail> getTransportTaskDetailListWithStatus(@Param("site") String site);
|
|
|
|
/**
|
|
* 查询指定状态的订单任务明细列表 - AI制作
|
|
*/
|
|
List<WmsOrderTaskDetail> getOrderTaskDetailListWithStatus(@Param("site") String site);
|
|
|
|
/**
|
|
* 根据ID更新订单任务明细状态 - AI制作
|
|
*/
|
|
void updateOrderTaskDetailStatusForId(@Param("id") Long id, @Param("status") String status);
|
|
|
|
/**
|
|
* 根据任务号获取栈板ID - AI制作
|
|
*/
|
|
String getPalletIdByOrderTaskNo(@Param("taskNo") String taskNo);
|
|
|
|
/**
|
|
* 根据栈板号和任务类型查找订单任务 - AI制作
|
|
*/
|
|
WmsOrderTask findOrderTaskByPalletAndType(@Param("site") String site, @Param("palletId") String palletId, @Param("sourceType") String sourceType);
|
|
|
|
/**
|
|
* 获取订单任务明细的最大序号 - AI制作
|
|
*/
|
|
Integer getMaxSeqNoForOrderTaskDetail(@Param("site") String site, @Param("taskNo") String taskNo);
|
|
|
|
/**
|
|
* 插入WCS回调任务 - AI制作
|
|
*/
|
|
void insertWcsCallbackTask(WcsCallbackTask callbackTask);
|
|
|
|
/**
|
|
* 查询指定状态的WCS回调任务列表 - AI制作
|
|
*/
|
|
List<WcsCallbackTask> getWcsCallbackTaskListWithStatus(@Param("site") String site);
|
|
|
|
/**
|
|
* 更新WCS回调任务状态 - AI制作
|
|
*/
|
|
void updateWcsCallbackTaskStatus(@Param("id") Long id, @Param("status") String status,
|
|
@Param("processStartTime") Date processStartTime,
|
|
@Param("processEndTime") Date processEndTime,
|
|
@Param("errorMsg") String errorMsg);
|
|
|
|
/**
|
|
* 原子性更新WCS回调任务状态(乐观锁,防止重复处理) - AI制作
|
|
* @param id 任务ID
|
|
* @param oldStatus 原状态(必须匹配才能更新)
|
|
* @param newStatus 新状态
|
|
* @param processStartTime 处理开始时间
|
|
* @return 影响的行数(0=更新失败,1=更新成功)
|
|
*/
|
|
int updateWcsCallbackTaskStatusWithLock(@Param("id") Long id,
|
|
@Param("oldStatus") String oldStatus,
|
|
@Param("newStatus") String newStatus,
|
|
@Param("processStartTime") Date processStartTime);
|
|
|
|
void updatePalletWcsLocation(@Param("site") String site, @Param("palletId") String palletId, @Param("location") String location);
|
|
/**
|
|
* 更新WCS回调任务重试次数 - AI制作
|
|
*/
|
|
void updateWcsCallbackTaskRetryCount(@Param("id") Long id, @Param("retryCount") Integer retryCount);
|
|
|
|
/**
|
|
* 根据栈板ID和动作类型查找订单任务 - AI制作
|
|
*/
|
|
List<WmsOrderTask> findOrderTasksByPalletAndActionType(@Param("site") String site,
|
|
@Param("palletId") String palletId,
|
|
@Param("sourceType") String sourceType,
|
|
@Param("status") String status);
|
|
|
|
List<WmsOrderTask> findOrderTasksByTaskNo(@Param("site") String site,
|
|
@Param("taskNo") String taskNo);
|
|
WmsOrderTask findOrderTasksByTaskNoItem(@Param("site") String site,
|
|
@Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo);
|
|
|
|
/**
|
|
* 更新订单任务状态和WMS状态 - AI制作
|
|
*/
|
|
void updateOrderTaskStatusAndWmsStatus(@Param("id") Long id,
|
|
@Param("status") String status,
|
|
@Param("wmsStatus") String wmsStatus);
|
|
/**
|
|
* 根据任务号更新订单任务明细状态 - AI制作
|
|
*/
|
|
void updateOrderTaskDetailStatusByTaskNo(@Param("taskNo") String taskNo, @Param("status") String status, @Param("wmsStatus") String wmsStatus);
|
|
void updateOrderTaskDetailStatusByTaskNoPalletId(@Param("site") String site,@Param("taskNo") String taskNo, @Param("status") String status, @Param("wmsStatus") String wmsStatus, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 查询立库调栈板出库的订单任务列表 - AI制作
|
|
*/
|
|
List<WmsOrderTask> getWcsOrderTaskListForPalletOut(@Param("site") String site);
|
|
|
|
/**
|
|
* 更新订单任务错误信息 - AI制作
|
|
*/
|
|
void updateOrderTaskErrorInfo(@Param("id") Long id, @Param("errorCode") String errorCode, @Param("errorMsg") String errorMsg);
|
|
|
|
/**
|
|
* 更新AGV站点状态 - AI制作
|
|
*/
|
|
void updateAgvStationStatus(@Param("stationCode") String stationCode, @Param("statusDb") Integer statusDb, @Param("status") String status);
|
|
void updateAgvStationAutoFlag(@Param("stationCode") String stationCode, @Param("flag") String flag);
|
|
|
|
|
|
void updateWTTToLocationForId(@Param("site") String site,@Param("taskNo") String taskNo, @Param("toLocation") String toLocation);
|
|
|
|
/**
|
|
* @Description 更新运输任务的目标区域 - rqrq
|
|
* @param taskNo 任务编号
|
|
* @param toArea 目标区域
|
|
* @author rqrq
|
|
* @date 2025/11/17
|
|
*/
|
|
void updateTransportTaskToArea(@Param("site") String site,@Param("taskNo") String taskNo, @Param("toArea") String toArea);
|
|
/**
|
|
* 获取AGV站点状态 - AI制作
|
|
*/
|
|
Integer getAgvStationStatus(@Param("stationCode") String stationCode);
|
|
String getAgvStationType(@Param("stationCode") String stationCode);
|
|
/**
|
|
* 获取栈板详细信息(包含palletType和autoSort以及托盘类型详情) - AI制作
|
|
*/
|
|
/**
|
|
* 获取栈板详细信息(包含类型关联数据) - AI制作
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 栈板详细信息实体类
|
|
*/
|
|
com.gaotao.modules.warehouse.entity.PalletData getPalletInfoWithTypeDetails(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* 更新栈板类型、自动分拣标志和存储类型 - AI制作/rqrq
|
|
*/
|
|
void updatePalletTypeAndAutoSort(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("palletType") String palletType, @Param("autoSort") String autoSort,
|
|
@Param("soreType") Integer soreType);
|
|
|
|
/**
|
|
* 获取指定层已占用的位置列表 - rqrq
|
|
*/
|
|
List<String> getOccupiedPositionsByLayer(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("layer") Integer layer);
|
|
|
|
/**
|
|
* @Description 插入WCS回调栈板扫描记录 - rqrq
|
|
* @param callback 回调记录
|
|
* @author rqrq
|
|
* @date 2025/10/07
|
|
*/
|
|
void insertCallbackPalletScan(@Param("callback") WcsCallbackPalletScan callback);
|
|
|
|
PalletType getPalletType(@Param("site") String site, @Param("palletType") String palletType);
|
|
AgvStation getAgvStation( @Param("stationCode") String stationCode);
|
|
// ==================== 栈板换站相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 检查栈板calling_flag并获取当前站点信息 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 栈板信息(包含calling_flag和当前站点ID、站点编码)
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
CheckPalletResult checkPalletForChangeStation(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 获取可选择的区域列表(choose_able为Y) - rqrq
|
|
* @return 区域列表
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
List<Area> getAreaOptionsForChange();
|
|
|
|
/**
|
|
* @Description 根据区域获取可用站点列表 - rqrq
|
|
* @param areaId 区域ID
|
|
* @return 站点列表(active=Y, station_type=正式站点, status_db=0)
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
List<AgvStation> getStationsByArea(@Param("areaId") String areaId);
|
|
|
|
/**
|
|
* @Description 根据区域查找第一个空闲站点(用于自动分配)- rqrq
|
|
* @param areaId 区域ID
|
|
* @return 第一个空闲站点的station_code,如果没有返回null
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
String findFirstFreeStationByAreaId(@Param("areaId") String areaId);
|
|
|
|
// ==================== 手工移动托盘相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 检查托盘是否可以手工移动(判断calling_flag、当前站点和站点类型)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 托盘编码
|
|
* @return 托盘信息(包含calling_flag、当前站点编码、站点类型、是否可操作)
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
CheckPalletResult checkPalletForManualMove(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 更新托盘location_code为null(移出站点)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 托盘编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void updatePalletRemoveStation(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 更新站点状态为空闲 - rqrq
|
|
* @param stationCode 站点编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void updateStationToFree(@Param("stationCode") String stationCode);
|
|
|
|
/**
|
|
* @Description 更新托盘location_code(绑定站点)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 托盘编码
|
|
* @param stationCode 站点编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void updatePalletBindStation(@Param("site") String site, @Param("palletId") String palletId, @Param("stationCode") String stationCode);
|
|
|
|
/**
|
|
* @Description 更新站点状态为有货 - rqrq
|
|
* @param stationCode 站点编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void updateStationToOccupied(@Param("stationCode") String stationCode);
|
|
|
|
// ==================== 空托盘组盘相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 检查托盘是否为空托盘(pallet_detail表无数据)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 托盘编码
|
|
* @return 托盘信息(包含当前站点ID、站点编码、托盘类型)
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
CheckPalletResult checkEmptyPallet(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 获取托盘类型列表(根据pallet_family过滤)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletFamily 托盘族(可为空)
|
|
* @return 托盘类型列表
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
List<PalletType> getPalletTypes(@Param("site") String site, @Param("palletFamily") String palletFamily);
|
|
|
|
/**
|
|
* @Description 获取需要自动续盘的站点列表 - rqrq
|
|
* @return 符合自动续盘条件的站点列表(auto_call_blank_pallet='Y', auto_call_blank_pallet_type有值, station_type='正式站点', status_db=0)
|
|
* @author rqrq
|
|
* @date 2025/10/19
|
|
*/
|
|
List<AgvStation> getAutoCallBlankPalletStations();
|
|
|
|
// ==================== 取消WCS组盘相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 检查栈板WCS组盘状态(是否被调用、是否发送组盘任务、是否有明细)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 栈板信息(包含callingFlag、hasSentWcsTask、hasDetail)
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
CheckPalletResult checkPalletWcsStatus(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 检查栈板是否有wcs_flag=0的明细(已发送组盘任务)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return wcs_flag=0的明细数量
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
int countPalletDetailWithWcsFlagZero(@Param("site") String site, @Param("palletId") String palletId);
|
|
int countPalletDetailWithWcsFlagOne(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 更新栈板所有明细的wcs_flag为1(取消组盘)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void updateAllPalletDetailWcsFlagToOne(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 删除栈板所有明细(移出全部物料)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @author rqrq
|
|
* @date 2025/10/16
|
|
*/
|
|
void deleteAllPalletDetail(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
// ==================== 预约取托盘相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 查询空托盘区可用的空托盘(area_type=Z101, calling_flag=N, 托盘类型匹配, 站点空闲)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletType 托盘类型
|
|
* @param stationCode 目标站点编码
|
|
* @return 可用的空托盘信息
|
|
* @author rqrq
|
|
* @date 2025/10/17
|
|
*/
|
|
Pallet findAvailableEmptyPallet(@Param("site") String site, @Param("palletType") String palletType, @Param("stationCode") String stationCode);
|
|
AgvStation getStationByCode(@Param("stationCode") String stationCode);
|
|
/**
|
|
* @Description 检查指定托盘是否就绪(area_type在Z101/Z103/Z104, calling_flag=N, 站点空闲)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 托盘编码
|
|
* @param stationCode 目标站点编码
|
|
* @return 托盘信息(如果就绪)
|
|
* @author rqrq
|
|
* @date 2025/10/17
|
|
*/
|
|
Pallet checkPalletReady(@Param("site") String site, @Param("palletId") String palletId, @Param("stationCode") String stationCode);
|
|
|
|
/**
|
|
* @Description 使用乐观锁更新运输任务状态(基于wms_status字段防止重复处理)- rqrq
|
|
* @param taskNo 任务编号
|
|
* @param newStatus 新状态
|
|
* @param palletId 托盘编码
|
|
* @param fromLocation 起始位置(栈板所在位置)
|
|
* @param toLocation 目标位置
|
|
* @param oldWmsStatus 旧的wms_status(乐观锁)
|
|
* @param newWmsStatus 新的wms_status
|
|
* @return 影响的行数(0=更新失败,1=更新成功)
|
|
* @author rqrq
|
|
* @date 2025/10/17
|
|
*/
|
|
int updateTransportTaskWithLock(@Param("taskNo") String taskNo, @Param("newStatus") String newStatus,
|
|
@Param("palletId") String palletId, @Param("fromLocation") String fromLocation,
|
|
@Param("toLocation") String toLocation,
|
|
@Param("oldWmsStatus") String oldWmsStatus, @Param("newWmsStatus") String newWmsStatus);
|
|
|
|
/**
|
|
* @Description 使用乐观锁更新AGV站点状态(检查期望状态,防止并发覆盖)- rqrq
|
|
* @param stationCode 站点编码
|
|
* @param expectedStatusDb 期望的当前状态(乐观锁)
|
|
* @param newStatusDb 新状态代码
|
|
* @param newStatus 新状态描述
|
|
* @return 影响的行数(0=更新失败,1=更新成功)
|
|
* @author rqrq
|
|
* @date 2025/11/04
|
|
*/
|
|
int updateAgvStationStatusWithLock(@Param("stationCode") String stationCode,
|
|
@Param("expectedStatusDb") Integer expectedStatusDb,
|
|
@Param("newStatusDb") Integer newStatusDb,
|
|
@Param("newStatus") String newStatus);
|
|
|
|
/**
|
|
* @Description 根据栈板ID和sourceType查询最新的OrderTask(按创建时间倒序)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @param sourceType 来源类型(如:手工Call料)
|
|
* @return 最新的OrderTask
|
|
* @author rqrq
|
|
* @date 2025/10/17
|
|
*/
|
|
WmsOrderTask findLatestOrderTaskByPallet(@Param("site") String site, @Param("palletId") String palletId, @Param("sourceType") String sourceType);
|
|
|
|
/**
|
|
* @Description 根据栈板ID更新最新的TransportTask的source_bill_no和source_line_id - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @param sourceBillNo 来源单据号
|
|
* @param sourceLineId 来源单据行号
|
|
* @author rqrq
|
|
* @date 2025/10/17
|
|
*/
|
|
void updateTransportTaskSourceInfo(@Param("site") String site, @Param("palletId") String palletId,
|
|
@Param("sourceBillNo") String sourceBillNo, @Param("sourceLineId") Integer sourceLineId);
|
|
|
|
/**
|
|
* @Description 根据任务编号更新运输任务的来源单据信息(优化版本)- rqrq
|
|
* @param taskNo 运输任务编号
|
|
* @param sourceBillNo 来源单号
|
|
* @param sourceLineId 来源行号
|
|
* @author rqrq
|
|
* @date 2025/11/22
|
|
*/
|
|
void updateTransportTaskSourceInfoByTaskNo(@Param("taskNo") String taskNo,
|
|
@Param("sourceBillNo") String sourceBillNo,
|
|
@Param("sourceLineId") Integer sourceLineId);
|
|
|
|
// ==================== 调度发货任务相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 根据栈板编码获取栈板信息 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 栈板信息
|
|
* @author rqrq
|
|
* @date 2025/10/18
|
|
*/
|
|
Pallet getPalletByCode(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
// ==================== 人工分拣补盘相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 根据任务号和行号成对匹配查询发料明细的序列号列表 - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNotes 任务明细列表(taskNo和itemNo成对匹配)
|
|
* @return 序列号列表
|
|
* @author rqrq
|
|
* @date 2025/10/19
|
|
*/
|
|
List<String> getSerialNosByTaskRefAndItem(@Param("site") String site, @Param("taskNotes") List<TaskNote> taskNotes);
|
|
|
|
/**
|
|
* @Description 根据序列号列表查询栈板ID列表(去重) - rqrq
|
|
* @param site 工厂编码
|
|
* @param serialNoList 序列号列表
|
|
* @return 栈板ID列表
|
|
* @author rqrq
|
|
* @date 2025/10/19
|
|
*/
|
|
List<String> getPalletIdsBySerialNos(@Param("site") String site, @Param("serialNoList") List<String> serialNoList);
|
|
|
|
/**
|
|
* @Description 检查栈板是否在指定wcsTaskID和站点生成过运输任务 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @param sourceBillNo 来源单号(wcsTaskID)
|
|
* @param stationCode 站点编码
|
|
* @return 任务数量(>0表示已存在)
|
|
* @author rqrq
|
|
* @date 2025/10/19
|
|
*/
|
|
int checkPalletTaskExists(@Param("site") String site, @Param("palletId") String palletId, @Param("sourceBillNo") String sourceBillNo, @Param("stationCode") String stationCode);
|
|
|
|
/**
|
|
* @Description 查询栈板是否存在未完成的运输任务 - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 未完成任务的任务编号(如果存在),不存在则返回null
|
|
* @author rqrq
|
|
* @date 2025/10/31
|
|
*/
|
|
String getUnfinishedTaskByPalletId(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 检查栈板是否放满(根据pallet_type_area的点位数和max_layer判断) - rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 是否已满(1=已满,0=未满)
|
|
* @author rqrq
|
|
* @date 2025/10/19
|
|
*/
|
|
int checkPalletIsFull(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
WmsTransportTask checkIfHasNeedTask(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 查询最新的一条等待通道机复核的任务明细 - rqrq
|
|
* @return 任务明细(action_type='等待通道机复核' 且 status='等待中')
|
|
* @author rqrq
|
|
* @date 2025/11/11
|
|
*/
|
|
WmsTransportTaskDetail getLatestWaitingRfidReviewTaskDetail();
|
|
|
|
/**
|
|
* @Description 更新任务明细的RFID复核结果 - rqrq
|
|
* @param id 任务明细ID
|
|
* @param agvCode AGV代码(复核结果:1=成功,2=失败)
|
|
* @param comment 备注(RFID列表JSON字符串)
|
|
* @param status 状态(已录入)
|
|
* @author rqrq
|
|
* @date 2025/11/11
|
|
*/
|
|
void updateTaskDetailWithRfidReviewResult(@Param("id") Long id,
|
|
@Param("agvCode") String agvCode,
|
|
@Param("comment") String comment,
|
|
@Param("status") String status);
|
|
|
|
/**
|
|
* @Description 批量更新任务明细状态为已取消 - rqrq
|
|
* @param site 站点
|
|
* @param taskNo 任务号
|
|
* @param status 状态(已取消)
|
|
* @author rqrq
|
|
* @date 2025/11/11
|
|
*/
|
|
void updateTaskDetailStatusByTaskNo(@Param("site") String site,
|
|
@Param("taskNo") String taskNo,
|
|
@Param("status") String status);
|
|
|
|
// ==================== 配送任务创建相关方法 - rqrq ====================
|
|
|
|
/**
|
|
* @Description 查询栈板物料的预约信息(关联pallet_detail和handling_unit)- rqrq
|
|
* @param site 工厂编码
|
|
* @param palletId 栈板编码
|
|
* @return 物料预约信息列表(包含serialNo、reserveFlag、reserveOrderRef1/2/3)
|
|
* @author rqrq
|
|
* @date 2025/11/14
|
|
*/
|
|
List<Map<String, Object>> getPalletMaterialReserveInfo(@Param("site") String site, @Param("palletId") String palletId);
|
|
|
|
/**
|
|
* @Description 根据notify_no和item_no查询申请单信息 - rqrq
|
|
* @param site 工厂编码
|
|
* @param notifyNo 申请单号
|
|
* @param itemNo 行号
|
|
* @return 订单信息(包含productionArea、orderType)
|
|
* @author rqrq
|
|
* @date 2025/11/14
|
|
*/
|
|
Map<String, Object> getOrderInfoByNotifyAndItem(@Param("site") String site,
|
|
@Param("notifyNo") String notifyNo,
|
|
@Param("itemNo") String itemNo);
|
|
|
|
/**
|
|
* @Description 根据site、taskNo、itemNo查询运输任务 - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNo 任务编号
|
|
* @param itemNo 任务行号
|
|
* @return 运输任务信息
|
|
* @author rqrq
|
|
* @date 2025/11/25
|
|
*/
|
|
WmsTransportTask getTransportTaskByTaskNoAndItem(@Param("site") String site,
|
|
@Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo);
|
|
|
|
/**
|
|
* @Description 更新运输任务的托盘ID - rqrq
|
|
* @param site 工厂编码
|
|
* @param taskNo 任务编号
|
|
* @param itemNo 任务行号
|
|
* @param palletId 新的托盘ID
|
|
* @author rqrq
|
|
* @date 2025/11/25
|
|
*/
|
|
void updateTransportTaskPalletId(@Param("site") String site,
|
|
@Param("taskNo") String taskNo,
|
|
@Param("itemNo") Integer itemNo,
|
|
@Param("palletId") String palletId);
|
|
|
|
}
|