package com.gaotao.modules.automatedWarehouse.service; import com.gaotao.modules.automatedWarehouse.entity.*; import com.gaotao.modules.base.entity.PalletType; import java.util.List; import java.util.Map; public interface WcsIntegrationService { List palletListForPartNo(PartPalletData inData); void callPalletFromWcs(List data); /** * 【新方法】直接Call栈板(不使用定时任务方式) - rqrq * @param data 栈板明细列表 * @return 包含成功数量和失败栈板列表的Map * @author rqrq * @date 2025/10/04 */ Map callPalletFromWcsNew(List data); // ==================== 打托相关方法 - AI制作 ==================== /** * 检查栈板是否存在并获取位置信息 - AI制作 */ Map checkPalletExists(Map params) ; /** * @Description 简单查询栈板信息(无任何校验)- rqrq * @Title getPalletInfoSimple * @param params 查询参数(site, palletId) * @return 栈板信息(包含positions) * @author rqrq * @date 2025/10/09 */ Map getPalletInfoSimple(Map params); /** * 获取栈板明细 - AI制作 */ List> getPalletDetails(Map params) throws Exception; /** * 根据位置获取层数 - AI制作 */ List getLayersByPosition(Map params) throws Exception; /** * 保存栈板明细(扫进) - AI制作 */ void savePalletDetail(Map params) throws Exception; /** * 删除栈板明细(扫出) - AI制作 */ void deletePalletDetail(Map params) throws Exception; /** * 获取编辑位置时的层数选项(排除指定标签) - AI制作 */ List getLayersForEdit(Map params) throws Exception; /** * 更新栈板明细位置 - AI制作 */ void updatePalletDetailPosition(Map params) throws Exception; // ==================== 运输任务相关方法 - AI制作 ==================== /** * 获取AGV站点列表 - AI制作 */ List> getAgvStations(Map params) throws Exception; /** * 获取可用的AGV站点列表(已在后台过滤状态和类型)- AI制作 * @param params statusDb: 站点状态(0-空闲,1-有货),null则不过滤 * @return 符合条件的正式站点列表 */ List getAvailableAgvStations(Map params) throws Exception; /** * 根据起点站点获取可达目标站点 - AI制作 */ List> getTargetStations(Map params) throws Exception; /** * 创建栈板运输任务 - AI制作 */ void createPalletTransportTask(Map params) throws Exception; /** * Call栈板到指定站点 - AI制作 */ void callPalletToStation(CallPalletRequestDto request) ; /** * Call栈板到指定站点(包含组盘处理) - AI制作 */ void callPalletToStationWithUpdateZuPan(CallPalletRequestDto request) ; /** * 更新栈板明细的wcs_flag为0(已传输给WCS) - AI制作 */ void updatePalletDetailWcsFlag(String site, String palletId) throws Exception; /** * */ void pushPalletDetailNew(String site, String palletId,String taskNo ,Integer itemNo,String endFlag); /** * 获取栈板详细信息(包含palletType和autoSort) - AI制作 */ /** * 获取栈板详细信息(包含类型关联数据) - AI制作 * @param params 查询参数(包含site和palletId) * @return 栈板详细信息实体类 */ com.gaotao.modules.warehouse.entity.PalletData getPalletInfo(Map params) throws Exception; /** * 更新栈板类型和自动分拣标志 - AI制作 */ void updatePalletTypeAndAutoSort(Map params) throws Exception; /** * 完成组托(不创建运输任务,只推送组托数据到WCS) - AI制作 * @param params 包含site和palletId */ void completePalletAssembly(Map params) throws Exception; void completePalletAssemblyForFenJian(Map params) throws Exception; /** * 获取指定层数下各个位置的可用状态 - rqrq * @param params {site, palletId, layer} * @return 包含positions(位置列表)、availablePositions(可用位置)、maxLayer(最大层数)、isMixed(是否混装) */ Map getAvailablePositionsForLayer(Map params) throws Exception; /** * @Description 恢复标签到原栈板(分拣撤回,保留所有原始字段包括wcs_flag)- rqrq * @Title restorePalletDetail * @param data 恢复标签请求参数实体 * @return void * @author rqrq * @date 2025/10/09 */ void restorePalletDetail(RestorePalletDetailData data) throws Exception; /** * @Description 查询标签当前所在栈板的信息(包括wcs_flag等完整字段)- rqrq * @Title getLabelInfo * @param data 查询标签信息请求参数实体 * @return LabelInfoResult 标签信息结果实体 * @author rqrq * @date 2025/10/09 */ LabelInfoResult getLabelInfo(GetLabelInfoData data) throws Exception; // ==================== 栈板换站相关方法 - rqrq ==================== /** * @Description 检查栈板是否可以换站(判断calling_flag和获取当前站点信息)- rqrq * @Title checkPalletForChangeStation * @param params {site, palletId} * @return 栈板信息(包含callingFlag、currentStationId、currentStationCode) * @author rqrq * @date 2025/10/16 */ CheckPalletResult checkPalletForChangeStation(Map params); /** * @Description 获取可选择的区域列表(choose_able为Y)- rqrq * @Title getAreaOptionsForChange * @param params 查询参数 * @return 区域列表 * @author rqrq * @date 2025/10/16 */ List getAreaOptionsForChange(Map params); /** * @Description 根据区域获取可用站点列表 - rqrq * @Title getStationsByArea * @param params {areaId} * @return 站点列表(active=Y, station_type=正式站点, status_db=0) * @author rqrq * @date 2025/10/16 */ List getStationsByArea(Map params); // ==================== 手工移动托盘相关方法 - rqrq ==================== /** * @Description 检查托盘是否可以手工移动 - rqrq * @Title checkPalletForManualMove * @param params {site, palletId} * @return 托盘信息(包含calling_flag、当前站点编码、站点类型、是否可操作) * @author rqrq * @date 2025/10/16 */ CheckPalletResult checkPalletForManualMove(Map params); /** * @Description 移出站点(更新托盘location_code为null,更新站点状态为空闲)- rqrq * @Title removeFromStation * @param params {site, palletId, stationCode} * @author rqrq * @date 2025/10/16 */ void removeFromStation(Map params); /** * @Description 绑定托盘到站点(更新托盘location_code,更新站点状态为有货)- rqrq * @Title bindPalletToStation * @param params {site, palletId, stationCode} * @author rqrq * @date 2025/10/16 */ void bindPalletToStation(Map params); // ==================== 空托盘组盘相关方法 - rqrq ==================== /** * @Description 检查托盘是否为空托盘 - rqrq * @Title checkEmptyPallet * @param params {site, palletId} * @return 托盘信息(包含当前站点ID、站点编码、托盘类型、是否为空托盘) * @author rqrq * @date 2025/10/16 */ CheckPalletResult checkEmptyPallet(Map params); /** * @Description 获取托盘类型列表(根据pallet_family过滤)- rqrq * @Title getPalletTypes * @param params {site, palletFamily} * @return 托盘类型列表 * @author rqrq * @date 2025/10/16 */ List getPalletTypes(Map params); /** * @Description 空托盘通知入库 - rqrq * @Title notifyEmptyPalletInbound * @param params {site, palletId, transportFlag} * @author rqrq * @date 2025/10/16 */ void notifyEmptyPalletInbound(Map params); }