2025-10-28 12:20:20 +08:00
|
|
|
|
package com.klp.service;
|
|
|
|
|
|
|
|
|
|
|
|
import com.klp.domain.vo.WmsMaterialCoilVo;
|
|
|
|
|
|
import com.klp.domain.bo.WmsMaterialCoilBo;
|
|
|
|
|
|
import com.klp.common.core.page.TableDataInfo;
|
|
|
|
|
|
import com.klp.common.core.domain.PageQuery;
|
|
|
|
|
|
|
2025-12-02 13:28:52 +08:00
|
|
|
|
import javax.validation.constraints.NotEmpty;
|
2026-01-11 17:42:15 +08:00
|
|
|
|
import javax.validation.constraints.NotNull;
|
2025-10-28 12:20:20 +08:00
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 钢卷物料表Service接口
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author Joshi
|
|
|
|
|
|
* @date 2025-07-18
|
|
|
|
|
|
*/
|
|
|
|
|
|
public interface IWmsMaterialCoilService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询钢卷物料表
|
|
|
|
|
|
*/
|
|
|
|
|
|
WmsMaterialCoilVo queryById(Long coilId);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询钢卷物料表列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
TableDataInfo<WmsMaterialCoilVo> queryPageList(WmsMaterialCoilBo bo, PageQuery pageQuery);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询钢卷物料表列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
List<WmsMaterialCoilVo> queryList(WmsMaterialCoilBo bo);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 新增钢卷物料表
|
|
|
|
|
|
*/
|
2025-11-17 10:47:36 +08:00
|
|
|
|
WmsMaterialCoilVo insertByBo(WmsMaterialCoilBo bo);
|
2025-10-28 12:20:20 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 修改钢卷物料表
|
|
|
|
|
|
* 如果newCoils不为空,则进行批量更新(分卷/合卷)
|
|
|
|
|
|
* 如果newCoils为空,则进行单个更新
|
|
|
|
|
|
*/
|
|
|
|
|
|
Boolean updateByBo(WmsMaterialCoilBo bo);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 简单更新钢卷物料表
|
|
|
|
|
|
* 直接更新属性内容,不进行历史记录处理
|
|
|
|
|
|
*/
|
|
|
|
|
|
Boolean updateSimple(WmsMaterialCoilBo bo);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 校验并批量删除钢卷物料表信息
|
|
|
|
|
|
*/
|
|
|
|
|
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 钢卷溯源查询
|
|
|
|
|
|
* 根据入场钢卷号查询二维码,解析content中的steps,然后根据steps中的钢卷号反向查询数据库
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param enterCoilNo 入场钢卷号
|
|
|
|
|
|
* @param currentCoilNo 当前钢卷号(可选,用于查询特定子钢卷)
|
|
|
|
|
|
* @return 溯源结果(包含二维码信息和数据库记录)
|
|
|
|
|
|
*/
|
|
|
|
|
|
Map<String, Object> queryTrace(String enterCoilNo, String currentCoilNo);
|
2025-10-29 14:13:06 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询各个库区中不同类型的钢卷分布情况
|
2025-10-29 14:40:09 +08:00
|
|
|
|
* 按库区分组,统计每种物品类型和物品ID的钢卷数量和重量
|
2025-10-29 14:13:06 +08:00
|
|
|
|
*
|
2025-10-29 14:40:09 +08:00
|
|
|
|
* @param itemType 物品类型(可选)
|
|
|
|
|
|
* @param itemId 物品ID(可选)
|
|
|
|
|
|
* @return 分布情况列表,包含库区信息、物品类型、物品ID、数量、重量等
|
2025-10-29 14:13:06 +08:00
|
|
|
|
*/
|
2025-10-29 14:40:09 +08:00
|
|
|
|
List<WmsMaterialCoilVo> getDistributionByWarehouse(String itemType, Long itemId);
|
2025-10-29 14:13:06 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询不同类型的钢卷在不同库区的分布情况
|
2025-10-29 14:40:09 +08:00
|
|
|
|
* 按物品类型和物品ID分组,统计每个库区的钢卷数量和重量
|
2025-10-29 14:13:06 +08:00
|
|
|
|
*
|
2025-10-29 14:40:09 +08:00
|
|
|
|
* @param itemType 物品类型(可选)
|
|
|
|
|
|
* @param itemId 物品ID(可选)
|
|
|
|
|
|
* @return 分布情况列表,包含物品类型、物品ID、库区信息、数量、重量等
|
2025-10-29 14:13:06 +08:00
|
|
|
|
*/
|
2025-10-29 14:40:09 +08:00
|
|
|
|
List<WmsMaterialCoilVo> getDistributionByItemType(String itemType, Long itemId);
|
2025-11-03 17:06:17 +08:00
|
|
|
|
|
|
|
|
|
|
List<WmsMaterialCoilVo> getDistributionByActualWarehouse(String itemType, Long itemId);
|
2025-11-17 17:57:57 +08:00
|
|
|
|
|
|
|
|
|
|
List<WmsMaterialCoilVo> getDistributionByActualItemType(String itemType, Long itemId);
|
2025-11-27 13:08:09 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询钢卷导出数据列表
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param bo 查询条件
|
|
|
|
|
|
* @return 导出数据列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
List<com.klp.domain.vo.WmsMaterialCoilExportVo> queryExportList(WmsMaterialCoilBo bo);
|
2025-12-02 13:28:52 +08:00
|
|
|
|
|
|
|
|
|
|
int exportCoil(@NotEmpty(message = "主键不能为空") Long coilId);
|
2025-12-08 13:08:20 +08:00
|
|
|
|
|
2025-12-08 13:14:11 +08:00
|
|
|
|
|
|
|
|
|
|
Boolean batchUpdateDeliveryStatus(List<Long> coilIdList, Integer status);
|
2026-01-10 11:34:01 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 根据更新前的钢卷ID列表获取更新后的钢卷ID列表
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param oldCoilIds 更新前的钢卷ID列表
|
|
|
|
|
|
* @return 更新后的钢卷ID列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
Map<Long, String> getUpdatedCoilIdsByOldCoilIds(List<Long> oldCoilIds);
|
|
|
|
|
|
|
2026-01-11 17:42:15 +08:00
|
|
|
|
int withdrawExportCoil(@NotNull(message = "主键不能为空") Long coilId);
|
2026-01-12 15:51:43 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 检查钢卷号是否重复
|
|
|
|
|
|
* 根据入场钢卷号和当前钢卷号查询数据库,判断哪个钢卷号重复
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param enterCoilNo 入场钢卷号
|
|
|
|
|
|
* @param currentCoilNo 当前钢卷号
|
|
|
|
|
|
* @return 返回结果Map,包含:
|
|
|
|
|
|
* - duplicateType: "enter" (入场钢卷号重复), "current" (当前钢卷号重复), "both" (都重复), "none" (都不重复)
|
|
|
|
|
|
* - enterCoilNoDuplicate: 入场钢卷号是否重复 (true/false)
|
|
|
|
|
|
* - currentCoilNoDuplicate: 当前钢卷号是否重复 (true/false)
|
|
|
|
|
|
*/
|
|
|
|
|
|
Map<String, Object> checkCoilNoDuplicate(String enterCoilNo, String currentCoilNo);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 根据入场钢卷号前缀查询最大的入场钢卷号
|
|
|
|
|
|
* 前端传入入场钢卷号的前四位,查询所有符合的入场钢卷号,返回最大值
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param enterCoilNoPrefix 入场钢卷号前缀(前四位)
|
|
|
|
|
|
* @return 返回结果Map,包含:
|
|
|
|
|
|
* - maxEnterCoilNo: 最大的入场钢卷号
|
|
|
|
|
|
* - prefix: 前缀值
|
|
|
|
|
|
*/
|
|
|
|
|
|
Map<String, Object> getMaxEnterCoilNoByPrefix(String enterCoilNoPrefix);
|
2026-01-15 15:14:41 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询data_type=1时的重复钢卷分组
|
|
|
|
|
|
* 将入场钢卷号重复的分为一组,将当前钢卷号重复的分为一组
|
|
|
|
|
|
* 返回结构:
|
|
|
|
|
|
* {
|
|
|
|
|
|
* enterGroups: [ { enterCoilNo: "xxx", coils: [WmsMaterialCoilVo...] }, ...],
|
|
|
|
|
|
* currentGroups: [ { currentCoilNo: "yyy", coils: [WmsMaterialCoilVo...] }, ...]
|
|
|
|
|
|
* }
|
|
|
|
|
|
*/
|
|
|
|
|
|
Map<String, Object> getDuplicateCoilGroups();
|
2025-10-28 12:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|