Compare commits

...

474 Commits

Author SHA1 Message Date
3ad3fd2fee feat(PlanDetailForm): 添加订单明细选择功能以快速录入成品信息
在成品信息组中添加选择订单明细按钮,点击可打开对话框选择订单明细并自动填充表单字段。移除未使用的订单类型列并优化附件查看按钮的样式。
2026-04-17 17:02:12 +08:00
79ee9d572d feat(contract): 替换产品内容组件为订单详情组件并优化表单字段
重构合同预览和订单详情展示,使用新的OrderDetail组件替代原有的ProductContent组件
调整订单详情表单字段,增加宽度、厚度等必要字段,移除不必要字段
优化表单验证规则和显示逻辑
2026-04-17 15:11:09 +08:00
c9742b08cf fix(wms): 修复规格分割可能导致的错误并增加分页大小
处理规格分割时可能出现的空值问题,使用可选链操作符和默认值
同时增加多个报表页面的分页大小限制
2026-04-17 15:10:21 +08:00
6bd5d2ded3 feat(CrmOrderItem): 添加订单项产品规格字段
- 在CrmOrderItem实体类中新增表面处理、切边要求、包装要求、宽度、厚度、用途字段
- 在CrmOrderItemBo业务对象中同步添加对应字段定义
- 在CrmOrderItemVo视图对象中添加Excel导出注解配置
- 更新MyBatis映射文件中的结果映射和插入字段列表
- 在查询条件构建器中添加新字段的查询支持
2026-04-17 14:16:46 +08:00
da1813e65a Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-17 09:54:43 +08:00
8dbb7d1113 feat(钢卷管理): 添加钢卷统计功能并优化仓库选择排序
新增钢卷统计接口和展示总净重功能
优化仓库选择组件,按使用频率排序选项
调整钢卷选择器布局和样式
2026-04-17 09:55:27 +08:00
ae77c529ae feat(wms): 添加物料卷统计总数功能
- 在WmsMaterialCoilServiceImpl中新增total_count字段统计
- 将统计结果添加到返回结果集中
- 处理空值情况并设置默认值为BigDecimal.ZERO
2026-04-17 09:54:34 +08:00
edcbf7a5f1 feat(退火操作): 新增退火操作事件记录功能
添加退火操作事件API及页面,实现退火炉操作记录功能
在计划管理页面增加操作事件记录,包括入炉、完成、添加和解绑操作
2026-04-16 17:12:08 +08:00
28622a2b16 refactor(wms): 优化钢卷计划和材料钢卷服务逻辑
- 在更新钢卷计划时设置创建时间和更新时间
- 添加登录用户信息到钢卷计划的创建者和更新者字段
- 初始化钢卷计划的状态和导出相关字段
- 移除占用仓库的冗余方法实现
- 在材料钢卷服务中同时更新数据类型和排他状态字段
2026-04-16 16:46:09 +08:00
44303cb1c7 fix(wms): 修复钢卷单个更新时的二维码步骤类型检查逻辑
- 修改了qrcodeStepType为空判断条件,从非空且不等于annealing改为直接判断是否为空
- 确保在qrcodeStepType为空时能够正确执行钢卷操作权限验证
- 修正了原有的逻辑错误,避免在特定条件下跳过必要的权限检查
2026-04-16 16:31:47 +08:00
c0f7c699a8 fix(wms): 修复钢卷更新时二维码步骤类型检查逻辑
- 在非退火步骤类型时才进行独占状态检查
- 添加对qrcodeStepType为空的边界情况处理
- 修复二维码内容更新中的空指针检查逻辑
2026-04-16 16:30:05 +08:00
e69dc5e76e fix(task): 关闭仓库使用次数定时任务
- 注释掉 cron 表达式以禁用定时执行
- 保留事务回滚配置以确保数据一致性
- 记录任务开始执行的日志信息功能仍然可用
2026-04-16 16:18:40 +08:00
ec0660acba refactor(vo): 让WmsAnnealOperateEventVo继承BaseEntity
- 添加com.klp.common.core.domain.BaseEntity导入
- 修改WmsAnnealOperateEventVo类继承BaseEntity
- 保持原有的Excel注解配置不变
2026-04-16 16:01:39 +08:00
110597657e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-16 15:56:39 +08:00
50670b64d8 feat(material-coil): 添加退火操作的二维码步骤类型支持
- 修改IWmsMaterialCoilService接口中的updateByBo方法,增加qrcodeStepType参数
- 在WmsFurnacePlanServiceImpl中实现退火操作的库位分配功能
- 添加updateQrcodeContentForCustomStep方法支持自定义二维码步骤类型
- 更新controller调用传入null作为默认值
- 完善退火操作的二维码内容更新逻辑
2026-04-16 15:56:26 +08:00
砂糖
823afd7a00 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-16 15:50:58 +08:00
砂糖
344488f08e 临时修改 2026-04-16 15:50:54 +08:00
c2da7640c3 feat(wms): 添加退火操作事件管理功能
- 创建退火操作事件实体类 WmsAnnealOperateEvent
- 定义退火操作事件服务接口 IWmsAnnealOperateEventService
- 实现退火操作事件服务业务逻辑 WmsAnnealOperateEventServiceImpl
- 添加退火操作事件控制器 WmsAnnealOperateEventController
- 创建退火操作事件数据访问层 WmsAnnealOperateEventMapper
- 实现退火操作事件业务对象 WmsAnnealOperateEventBo 和视图对象 WmsAnnealOperateEventVo
- 集成 MyBatis Plus 分页查询和基础 CRUD 功能
- 添加 Excel 导出功能和操作日志记录
- 实现表单验证和重复提交防护机制
2026-04-16 14:55:43 +08:00
e99d7709d2 feat(warehouse): 添加仓库使用次数统计功能
- 在WmsMaterialCoilMapper中新增selectWarehouseIdCount方法用于统计仓库钢卷数量
- 在WmsWarehouseBo中新增orderByUseCount字段支持按使用次数排序
- 修改WmsWarehouseServiceImpl实现按使用次数或序号排序逻辑
- 创建WarehouseUseCountTask定时任务每晚1点更新仓库使用次数
- 实现定时计算各仓库中钢卷数量并更新到useCount字段功能
2026-04-16 14:25:54 +08:00
623e78629d feat(warehouse): 添加仓库使用次数字段支持
- 在WmsWarehouse实体类中新增useCount字段及注释
- 在WmsWarehouseBo业务对象中添加useCount属性
- 更新WmsWarehouseMapper.xml映射文件,增加useCount字段映射
- 在WmsWarehouseServiceImpl查询条件中加入useCount过滤逻辑
- 在WmsWarehouseVo视图对象中添加useCount字段并配置Excel导出
2026-04-16 14:03:26 +08:00
c1938e29a4 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-16 13:54:24 +08:00
54d426984b feat(wms): 添加钢卷物料统计数据接口
- 在 IWmsMaterialCoilService 中新增 getStatistics 方法用于汇总统计
- 在 WmsMaterialCoilController 中添加 /statisticsList 接口
- 在 WmsMaterialCoilMapper 中新增 selectStatistics 查询方法
- 在 WmsMaterialCoilMapper.xml 中实现统计 SQL 查询
- 在 WmsMaterialCoilServiceImpl 中实现统计业务逻辑
- 支持按筛选条件统计总毛重、总净重和总数
- 采用高性能查询方式只查询 sum/count 聚合数据
- 独立统计接口不影响原有分页查询功能
2026-04-16 13:54:12 +08:00
砂糖
440e70ee82 feat(组件): 为多选组件添加全选功能并移除板面校验
- 在多选组件中增加全选选项和功能
- 移除异常管理中的板面校验逻辑
- 修复保存按钮加载状态显示问题
2026-04-16 10:18:21 +08:00
砂糖
220a24da78 fix(wms): 修复参数名错误并移除无用导入
修复pendingAction接口中newCoilIds参数默认值问题
将createBy/updateBy统一改为createBys/updateBys
移除report模板中未使用的listCoilWithIds导入
2026-04-16 10:17:35 +08:00
c31dc4948e feat(WmsMaterialCoil): 添加按创建人筛选功能
- 在 WmsMaterialCoilBo 中新增 createBys 字段用于多创建人筛选
- 实现逗号分隔的创建人列表解析功能
- 添加非空验证和字符串清理逻辑
- 构建 in 查询条件支持多创建人匹配
- 集成到现有查询条件构建流程中
2026-04-16 09:42:37 +08:00
7b55f358b4 feat(WmsCoilPendingAction): 支持按多个创建人筛选待办操作
- 在WmsCoilPendingActionBo中新增createBys字段用于接收多个创建人参数
- 修改查询条件支持逗号分隔的多个创建人筛选功能
- 实现将createBys字符串拆分为列表并进行in查询的逻辑
- 添加空值过滤和字符串清理确保查询准确性
2026-04-16 09:15:09 +08:00
2fcc7b3279 fix(wms): 修复卷材待处理操作完成时的空值设置问题
- 添加对 newCoilIds 的空值和 "-" 值检查
- 避免在无效值情况下设置 processedCoilIds 字段
- 确保只有有效的新卷材 ID 才会被更新到操作记录中
2026-04-16 09:10:39 +08:00
砂糖
8e5ce5c119 feat(报表): 添加发货配卷时间列
在报表配置中添加发货配卷时间列,用于显示配卷事件的时间信息
2026-04-15 15:29:13 +08:00
砂糖
ee275d3ea5 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-15 15:28:35 +08:00
砂糖
5e80208d61 feat(wms): 在完成操作时传递新钢卷ID参数
修改completeAction接口以接收新钢卷ID参数,并在多个视图中调用时传递该参数
2026-04-15 15:28:28 +08:00
05f0933514 feat(wms): 添加配卷时间和实际发货时间字段支持
- 在WmsDeliveryWaybillDetailVo中新增exportTime字段用于实际发货时间
- 将deliveryTime字段的Excel导出标签从发货时间改为配卷时间
- 在数据库映射文件中添加exportTime字段的映射关系
- 在查询语句中加入export_time字段以支持实际发货时间数据获取
2026-04-15 15:21:17 +08:00
ec5da2a7ca fix(WmsMaterialCoilController): 修改编辑接口返回类型
- 将返回类型从 R<Void> 更改为 R<String>
- 修改返回方式从 toAjax() 改为 R.ok()
- 确保接口返回操作结果字符串而非空值
2026-04-15 14:33:09 +08:00
7d6957165d Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-15 14:31:36 +08:00
31648431c8 feat(wms): 完善钢卷操作完成接口功能
- 在completeAction方法中添加newCoilIds参数支持
- 修改updateByBo方法返回值为String类型,支持返回新钢卷ID
- 添加分卷时返回逗号分隔的ID字符串,合卷时返回单个ID的功能
- 在操作完成时记录processedCoilIds信息
- 优化异常处理和返回值验证逻辑
2026-04-15 14:31:27 +08:00
砂糖
36ff376c55 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-15 14:07:49 +08:00
砂糖
f68167b102 feat(报表): 添加月视图折线图并优化分条线显示逻辑
添加月视图日数据趋势折线图展示产出和消耗数据
优化分条信息统计组件仅在分条线时显示
在日视图中添加昨日数据对比显示
重构日期选择逻辑支持多种视图模式
2026-04-15 14:07:42 +08:00
671a7e129f Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-15 14:07:07 +08:00
84a0cb43ee fix(export): 修正配卷时间字段导出标题
- 将发货时间字段标题更正为配卷时间
2026-04-15 14:06:56 +08:00
砂糖
d15f57ae6d feat(wms): 添加修复工序的样式和分条选项
为酸轧、镀锌、脱脂、拉矫、双机架和镀铬修复工序添加渐变样式标识
在分条功能中增加修复工序的原料库和成品库选项
2026-04-15 10:54:26 +08:00
砂糖
b32f826488 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-14 16:08:37 +08:00
砂糖
a99126a9a3 feat(CoilSelector): 添加物料类型选择并优化相关字段显示逻辑
添加物料类型选择下拉框,并根据选择的类型动态显示相关字段
将selectType默认值改为通过props传入的defaultType
优化查询逻辑,确保itemType与selectType保持一致
2026-04-14 16:08:33 +08:00
6e5b9fc962 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-14 15:45:26 +08:00
c9a93fe942 feat(crm): 添加订单定金相关字段支持
- 在CrmOrder实体类中新增unitPriceRemark、depositPayable、depositPaid、depositRatio字段
- 在CrmOrderBo业务对象中同步添加对应字段以支持查询条件
- 更新CrmOrderMapper.xml映射文件中的结果集和SQL查询语句
- 在CrmOrderServiceImpl服务实现中添加字段的查询条件处理逻辑
- 在CrmOrderVo视图对象中添加Excel导出注解配置
- 实现定金相关的业务查询功能包括应付定金、已付定金、定金比例等字段的检索
2026-04-14 15:45:15 +08:00
砂糖
5f5e5cacb4 feat(订单详情): 在钢卷选择器中添加订单详情显示功能
添加订单ID参数传递至钢卷选择器组件
在钢卷选择器中新增显示订单详情的复选框和面板
移除OrderDetail组件中未使用的API导入
2026-04-14 15:38:44 +08:00
砂糖
263c2b5f37 feat(报餐记录): 修改默认截止时间并支持动态配置
从系统配置获取报餐截止时间,默认值从12:00改为16:00
2026-04-14 11:13:56 +08:00
910ec2b22f fix(wms): 修复产品服务中更新时间字段设置问题
- 在WmsProductServiceImpl中添加了updateTime字段的正确设置
- 确保coils记录在更新时保持正确的更新时间戳
- 防止因时间字段未正确设置导致的数据同步问题
2026-04-14 10:14:52 +08:00
a62ef2d0b0 feat(wms): 添加物料卷数据过滤条件
- 添加数据类型过滤条件,只查询类型为1的数据
- 添加状态过滤条件,只查询状态为0的正常数据
- 优化物料卷查询逻辑,提高数据准确性
2026-04-14 10:10:54 +08:00
31d44c19ca Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-14 10:07:08 +08:00
fea3c78c4f feat(product): 添加批量更新钢卷itemId功能,由于只是一次性接口暂时不考虑速度
- 在IWmsProductService接口中添加batchUpdateCoilItemId方法定义
- 在WmsProductController中添加batchUpdateCoilItem REST端点
- 在WmsProductServiceImpl中实现批量更新逻辑
- 添加对WmsMaterialCoil和WmsRawMaterial实体的操作支持
- 实现根据逻辑库区ID查询并按itemType分类处理的功能
- 添加事务管理和异常回滚机制
- 返回产品和原料的数量统计结果
2026-04-14 10:06:59 +08:00
砂糖
8de4042bdf fix: 将库区显示改为规格显示并添加实际库区字段
在多个组件中将“库区”标签改为“规格”标签,并显示对应的规格数据
在CoilCard组件中添加实际库区字段的显示
2026-04-14 10:03:31 +08:00
砂糖
54bea01416 refactor(contract): 统一合同编号字段名从contractNo改为contractCode
修改多个组件中合同编号字段名以保持一致性,移除未使用的props和清理冗余代码
2026-04-14 10:03:16 +08:00
砂糖
9f3d402174 refactor(crm): 重构合同模块为订单模块并优化相关功能
重构合同模块为订单模块,包括以下主要变更:
1. 将合同编号字段从contractNo统一改为contractCode
2. 在CrmOrderBo中添加日期格式化注解
3. 重构ContractTabs组件为订单详情页
4. 添加销售员字段和相关选择器
5. 优化订单列表查询条件和展示
6. 调整订单附件管理功能
2026-04-13 17:48:19 +08:00
c3d6d7cece feat(crm): 添加订单合同详情字段映射和查询功能
- 在CrmOrderMapper.xml中新增合同名称、供应商、客户等相关字段映射
- 扩展SQL查询语句以支持合同详细信息的检索
- 在服务层实现中增加对新字段的搜索条件支持
- 添加合同签署时间、地点、内容等过滤条件的查询逻辑
- 实现供应商和客户联系信息的条件查询功能
- 集成技术附件、商务附件和生产进度的搜索过滤器
2026-04-13 16:50:18 +08:00
砂糖
37dc213605 feat(报表): 添加分条线统计组件并扩展合同字段
添加分条线专用的统计组件SplitSummary,用于展示分条处理的产出与消耗对比数据
在多个报表模板中集成该组件并添加钢卷高亮功能
扩展CrmOrder相关类的合同信息字段
2026-04-13 16:23:40 +08:00
砂糖
5ee730bffa feat(报表): 添加钢卷表格行高亮功能以标记共用卷
在分条线报表中,产出钢卷和投入钢卷可能存在共用卷的情况。添加高亮功能以便直观区分这些共用卷:
1. 在day.vue中计算共用卷ID列表
2. 在coilTable组件中实现行高亮逻辑和样式
2026-04-13 14:37:23 +08:00
砂糖
116d79e7c2 feat(wms): 新增调拨记录追溯功能并优化调拨表格
- 在调拨表格中添加生效状态列,显示已生效/未生效标签
- 新增调拨记录追溯页面,支持通过卷号查询调拨历史
- 实现常规筛选和特殊追溯两种查询方式
- 优化表格操作列显示逻辑,增加权限控制
2026-04-13 13:00:25 +08:00
砂糖
4c373e6af5 fix(wms): 修改标签中长度字段显示为钢卷长度并使用实际长度值
更新了两个标签渲染组件,将"参考长度"改为更准确的"钢卷长度"描述,并统一使用actualLength字段替代length字段显示实际长度值
2026-04-13 11:45:17 +08:00
砂糖
4beaf79fd6 feat(合同/客户): 添加发货单据展示功能
在合同和客户详情页新增发货单据标签页,展示wmsDeliveryWaybills数据
移除CustomerOrder中未使用的getSummary方法和相关代码
2026-04-11 16:24:04 +08:00
b4dc0ed9e4 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-11 16:03:26 +08:00
5efdcf99dc feat(order): 添加订单物流运单信息查询功能
- 在CrmContractOrderFinanceVo中新增wmsDeliveryWaybills字段用于存储物流运单信息
- 添加WmsDeliveryWaybillVo依赖引入
- 在CrmOrderItemServiceImpl的两个查询方法中增加物流运单数据查询逻辑
- 使用LambdaQueryWrapper按订单ID批量查询关联的物流运单信息
- 将查询到的物流运单列表设置到返回结果中
2026-04-11 16:03:16 +08:00
砂糖
3020a4244d feat(wms): 新增报表导出文件管理功能
新增报表导出文件管理模块,包含后端接口和前端页面
在各类报表页面添加保存报表功能
优化CoilSelector和CoilCard组件显示
调整分页大小和表格高度
统一各产线报表配置
修复文件预览组件高度问题
2026-04-11 15:36:50 +08:00
848ad2c3cd Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-10 15:07:38 +08:00
57b07885e3 refactor(wms): 优化调拨订单和钢卷信息更新逻辑
- 使用LambdaUpdateWrapper替代直接对象更新,支持显式设置NULL值
- 在审批通过时设置调拨状态为1
- 修复钢卷信息批量更新逻辑,使用updateBatchById提高性能
- 添加调拨后物料ID和类型校验,确保数据一致性
- 批量更新调拨明细的isTransferred字段标记为已调拨
- 过滤条件从调拨前值改为调拨后值进行验证
- 添加空值检查避免无效更新操作
2026-04-10 15:07:29 +08:00
砂糖
466ac13742 feat(钢卷卡片): 新增CoilCard组件并重构相关页面
将钢卷卡片相关逻辑抽离为独立组件CoilCard,并在correct.vue、correntAll.vue和do.vue页面中使用该组件替换原有卡片代码
在base.vue中添加发货状态筛选功能
在split.vue中新增拉矫修复工序的特殊分割逻辑
2026-04-10 15:00:20 +08:00
砂糖
8e2069cecf fix(wms): 修复调拨单二次调整按钮显示及仓库选择保存问题
修复调拨单列表中二次调整按钮的显示条件,从原审批状态为2或3改为仅状态为3时显示
移除执行全部按钮的注释状态
为仓库选择添加change事件自动保存功能
调整重新提交审批的提示信息和成功消息
2026-04-10 13:27:45 +08:00
92441e569e fix(wms): 修正转库订单审批状态判断逻辑
- 将审批通过状态从 1 修改为 2
- 确保只有在正确审批状态下才批量更新钢卷信息
2026-04-10 13:19:35 +08:00
509c41a4d4 feat(wms): 实现调拨单审批功能并完善钢卷信息批量更新
- 在WmsTransferOrderServiceImpl中添加钢卷、原料、产品的相关依赖注入
- 为approve方法添加事务注解确保数据一致性
- 实现调拨单审批状态更新功能
- 新增batchUpdateCoilsOnApprove方法处理审批通过后的钢卷信息批量更新
- 添加详细的钢卷信息校验和分组处理逻辑
- 实现按物料类型分组验证itemId存在的功能
- 添加批量查询和更新钢卷信息的完整流程
2026-04-10 13:13:58 +08:00
砂糖
ec0fa3966a fix(wms): 移除重新提交按钮并更新二次调整逻辑
移除批次调拨页面中的重新提交按钮,改为使用updateTransferOrder API更新调拨单状态
2026-04-10 11:43:47 +08:00
砂糖
9b52621df1 feat: 增加调拨单审批功能及界面优化
fix(调拨单): 修正审批状态校验逻辑
feat(调拨单): 添加审批API接口
refactor(调拨单明细): 重构表格组件支持不同状态操作
style(调拨单): 优化界面显示和操作按钮
perf(发货单): 自动设置发货时间为当前时间
chore: 删除无用调拨记录页面
2026-04-10 11:10:30 +08:00
c323ef7a52 feat(wms): 添加调拨订单项目调拨状态字段
- 在 WmsTransferOrderItem 实体中新增 isTransferred 字段用于标识是否已调拨
- 在 WmsTransferOrderItemBo 和 WmsTransferOrderItemVo 中同步添加调拨状态字段
- 在 MyBatis 映射文件中配置 isTransferred 字段映射关系
- 在查询条件中增加调拨状态过滤功能
- 添加调拨单审批状态校验逻辑确保只有审批通过才能调拨
- 在调拨操作完成后设置项目为已调拨状态(isTransferred=1)
2026-04-10 10:25:04 +08:00
1bbd3a6f4d Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-10 09:25:39 +08:00
c8987f6fdd feat(transfer): 添加调拨单审批功能和调拨类型字段
- 在WmsTransferOrder实体中添加调拨类型、审批人、审批时间和审批状态字段
- 在WmsMaterialCoil实体中添加调拨类型字段用于关联调拨信息
- 实现调拨单审批接口,支持通过或驳回操作
- 更新调拨单明细处理逻辑,确保调拨类型正确传递到钢卷信息
- 添加调拨单取消功能,可恢复调拨前的状态
- 在导出VO中增加调拨类型字段支持Excel导出
- 更新查询条件支持按调拨类型、审批状态等字段筛选
- 完善调拨流程中的数据验证和错误处理机制
2026-04-10 09:24:42 +08:00
砂糖
a19c4e4eaf feat(文件预览): 添加对PDF、Word和Excel文件的预览支持
添加新的文件预览组件,支持PDF、Word(docx)、Excel(xlsx/xls)文件类型预览
重构图片预览为独立组件,并添加相关依赖包
2026-04-10 08:42:59 +08:00
砂糖
255a6dc616 refactor(wms): 提取异常钢卷表格为公共组件 AbnormalTable
将多个页面中重复的异常钢卷表格逻辑提取为公共组件 AbnormalTable,提高代码复用性和维护性
2026-04-09 16:22:59 +08:00
砂糖
0e075fe5d4 refactor(wms): 清理异常管理组件中的注释代码并优化表单结构
移除ExceptionManager和AbnormalForm组件中已注释的旧代码
调整AbnormalForm组件字段顺序并添加缺陷描述字段
优化表单数据初始化逻辑
2026-04-09 15:40:41 +08:00
731dd21b0e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-09 13:51:38 +08:00
39d73c0f2c fix(wms): 异常改成缺陷明细
- 将异常按钮文本从"异常"更改为"缺陷明细"
- 保留异常计数显示功能
2026-04-09 13:51:09 +08:00
砂糖
b232cbf14d feat(钢卷管理): 在多个页面添加业务目的选择功能
为钢卷管理中的校正、拆分、合并、录入等操作添加业务目的选择功能,使用字典类型coil_business_purpose提供选项
2026-04-08 17:55:30 +08:00
砂糖
7930991eb8 feat(员工信息): 新增查看功能并优化附件展示
refactor(异常管理): 重构异常记录表格布局和保存逻辑

feat(库存管理): 新增CRM卷材库存视图和分组筛选功能
2026-04-08 17:40:30 +08:00
砂糖
9c83c9d9a5 feat(wms): 添加类型不匹配钢卷管理功能并优化材料类型处理
1. 新增类型不匹配钢卷查询接口和页面
2. 优化材料类型变更处理逻辑,自动清空物品选择
3. 移除表单复制时冗余的材料类型同步调用
2026-04-08 14:29:16 +08:00
cd5bca19f6 refactor(wms): 优化钢卷不匹配数据查询逻辑
- 在WmsMaterialCoilMapper中新增selectMismatchedItemCoils方法用于查询itemId和itemType不匹配的钢卷
- 在WmsMaterialCoilMapper.xml中添加对应的SQL查询语句,使用子查询直接筛选不匹配的数据
- 重构WmsMaterialCoilServiceImpl中的queryMismatchedItemCoils方法,改用SQL子查询替代原来的多次数据库查询
- 移除原有的批量验证逻辑,直接通过数据库层面进行数据校验
- 优化性能,减少不必要的数据库访问次数
- 使用批量填充方式处理关联对象信息
2026-04-08 14:18:59 +08:00
9adbc1ea0c Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-08 13:56:05 +08:00
f92d5c16e0 feat(wms): 添加钢卷物料的物品类型校验功能
- 启用 WmsProductMapper 和 WmsRawMaterialMapper 的依赖注入
- 实现根据 itemType 参数校验 itemId 存在性的逻辑
- 添加原材料类型的校验支持
- 添加产品的校验支持
- 对无效物品类型抛出异常
- 在钢卷修改逻辑中集成物品存在性验证
2026-04-08 13:55:54 +08:00
砂糖
9bd63d90fc Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-08 13:50:53 +08:00
砂糖
6b0fa81224 fix: 修复产品选择组件和原材料选择组件的数据验证问题
修复产品选择和原材料选择组件中当返回数据为空时仍尝试添加的问题,增加对res.data的验证
调整发货计划列表和运单页面的样式,优化高度计算和表单内边距
2026-04-08 13:50:49 +08:00
dc2624ece1 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-08 13:39:58 +08:00
b58a14bc87 feat(wms): 添加钢卷物料的物品类型校验功能
- 启用 WmsProductMapper 和 WmsRawMaterialMapper 的依赖注入
- 实现根据 itemType 参数校验 itemId 存在性的逻辑
- 添加原材料类型的校验支持
- 添加产品的校验支持
- 对无效物品类型抛出异常
- 在钢卷修改逻辑中集成物品存在性验证
2026-04-08 13:39:03 +08:00
砂糖
c68a4573dc feat(钢卷管理): 添加发货单相关功能及统计信息
- 新增发货单数量统计显示,展示已发货和未发货数量
- 添加从发货单移除钢卷的功能
- 移除不再使用的代码注释
2026-04-08 11:25:10 +08:00
砂糖
7e487a487d feat(发货管理): 优化发货单界面布局并新增功能
重构发货单界面布局,使用可拖拽面板组件提升用户体验。新增订单绑定、逻辑库区显示等功能,并调整页面样式。

- 使用DragResizePanel组件实现可拖拽分割布局
- 新增订单绑定、解绑和切换功能
- 在详情表格中添加逻辑库区、厂家和品质字段
- 优化左侧面板可折叠功能
- 调整页面样式和响应式布局
2026-04-08 10:36:23 +08:00
砂糖
6b9c05d5ee Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-07 17:40:05 +08:00
砂糖
43f28a4225 feat(异常管理): 重构异常管理界面并新增多选组件
- 新增MutiSelect组件支持下拉多选和复选框两种模式
- 重构异常管理界面,支持直接在表格中编辑异常记录
- 优化钢卷信息展示,增加刷新功能
- 修改AbnormalForm组件,使用MutiSelect替代原有单选组件
- 确保异常记录列表始终显示至少10行,方便快速添加
2026-04-07 17:40:01 +08:00
60d10c03a6 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-07 16:49:06 +08:00
f9a60cec99 feat(delivery): 添加发货计划ID字段支持按计划查询发货单明细
- 在WmsDeliveryWaybillDetailBo中新增planId字段
- 在查询条件中增加planId过滤逻辑
- 实现根据发货计划ID查询所有关联发货单明细的功能
2026-04-07 16:46:16 +08:00
砂糖
1bfd3a598a fix(wms): 修正表单校验逻辑和文字描述
修复位置校验允许0值的问题,将'版面'统一改为'板面'描述
2026-04-07 15:44:33 +08:00
砂糖
505f821df0 refactor(crm): 统一搜索字段名并优化搜索功能
- 将多个页面的搜索字段统一命名为"keyword"以提高一致性
- 优化搜索按钮布局和交互,添加明确的搜索按钮
- 调整字段标签和占位文本使其更准确
- 修复合同列表导出功能中的HTML内容处理逻辑
2026-04-07 11:47:41 +08:00
砂糖
dc92939262 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-04-07 11:43:31 +08:00
e32739cb09 feat(crm): 添加关键字搜索功能
- 在 CrmContractBo 中添加 keyword 字段支持合同多字段搜索
- 在 CrmCustomerBo 中添加 keyword 字段支持客户多字段搜索
- 在 CrmOrderBo 中添加 keyword 字段支持订单多字段搜索
- 实现合同服务的关键字搜索逻辑,支持合同名称、编号、供应商、客户等多个字段
- 实现客户服务的关键字搜索逻辑,支持客户代码、公司名称、联系人等多个字段
- 实现订单服务的关键字搜索逻辑,支持订单代码、客户ID、业务员等多个字段
- 添加搜索条件的空值校验避免无效查询
2026-04-07 11:42:30 +08:00
砂糖
ab9ab90ffa feat(钢卷异常管理): 新增上下板面和主缺陷字段并完善钢卷信息展示
在异常表单中增加上下板面选择器和主缺陷复选框
在多个页面表格中新增上下板面和主缺陷字段展示
在异常管理对话框和面板中增加钢卷详细信息展示
优化表单布局和部分字段标签描述
2026-04-07 11:06:09 +08:00
砂糖
38f980dbbf feat(界面): 添加刷新按钮并优化全屏对话框样式
在导航栏添加刷新按钮方便用户操作,同时优化全屏对话框的滚动和间距样式
2026-04-07 11:05:45 +08:00
砂糖
3d27e14620 feat(调拨单明细): 添加导出和刷新功能
- 在调拨单明细弹窗中添加导出按钮,支持将明细数据导出为CSV文件
- 添加刷新按钮用于重新加载明细数据
- 实现CSV导出功能,包含字段映射和中英文表头处理
2026-04-07 11:05:33 +08:00
d67054d891 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-04-07 10:55:38 +08:00
b399587841 feat(domain): 添加卷材异常记录中的板面字段
- 在 WmsCoilAbnormal 实体中添加 plateSurface 字段
- 在 WmsCoilAbnormalBo 中添加 plateSurface 属性及相关注释
- 在 WmsCoilAbnormalMapper.xml 中映射 plateSurface 字段
- 在查询条件中添加 plateSurface 的相等匹配逻辑
- 在 WmsCoilAbnormalVo 中添加 plateSurface 属性及 Excel 导出配置
2026-04-07 10:55:30 +08:00
砂糖
04081ab0ae fix(wms): 将钢卷号长度验证从10位改为11位
更新多个视图中的钢卷号验证规则,统一将最小长度要求从10位调整为11位以满足新的业务需求
2026-04-06 13:34:25 +08:00
砂糖
1fa4c55869 feat(CoilSelector): 新增入场卷号字段并调整当前卷号显示
feat(customer): 新增客户相关配卷和财务信息查询接口

fix(base.vue): 修复发货单时间条件显示问题

refactor(CustomerEdit): 替换地址选择组件为普通输入框

feat(CoilSelector): 增加入场卷号查询条件并调整对话框宽度

style(OrderEdit): 调整客户名称和销售员选择框宽度

refactor(ChinaAreaSelect): 优化地址解析逻辑并支持空对象处理

feat(FileUpload/FileList): 新增文件预览功能组件

refactor(KLPService/CustomerSelect): 优化客户选择组件并支持自定义字段绑定

fix(AbnormalForm): 修复异常位置校验逻辑并保留当前卷号

feat(ContractTabs): 新增合同附件展示功能

refactor(warehouse/record): 重构操作记录统计展示方式

feat(contract): 集成客户选择组件并优化合同信息填充

refactor(order): 调整订单表单布局并集成合同信息

feat(FilePreview): 新增文件预览组件

feat(customer): 新增财务状态和发货配卷展示

refactor(CustomerOrder): 移除冗余代码并优化布局

feat(PlanDetailForm): 新增合同附件查看功能

feat(dict): 新增字典管理页面
2026-04-06 13:16:45 +08:00
4075ead84e feat(crm): 新增客户相关订单数据查询接口
- 添加根据客户ID查询异议和财务信息的功能
- 添加根据客户ID查询发货单配卷的功能
- 实现客户订单关联数据的多层查询逻辑
- 集成CRM订单、异议、应收和发货单据的数据关联
- 提供完整的客户订单数据视图支持
2026-04-06 11:24:44 +08:00
031d7ba708 feat(crm): 添加合同实体中的客户ID字段支持
- 在CrmContract实体类中新增customerId字段
- 在CrmContractBo业务对象中添加customerId属性
- 更新CrmContractMapper.xml映射文件加入customer_id结果映射
- 在查询条件中增加customerId过滤逻辑
- 为CrmContractVo视图对象添加customerId字段并配置Excel导出
2026-04-06 10:43:32 +08:00
e82d015cea feat(aps): 添加排产单明细分页查询合同的技术涵
- 在ApsPlanDetailMapper中新增selectVoPagePlus方法支持分页查询
- 在ApsPlanDetailMapper.xml中添加对应的SQL查询语句
- 在ApsPlanDetailServiceImpl中实现分页查询逻辑和查询条件构建
- 在ApsPlanDetailVo中添加techAnnex字段用于显示技术附件信息
- 集成MyBatis-Plus分页插件和查询包装器功能
- 优化查询条件构建,支持按计划单ID、订单ID、合同编号等多条件筛选
- 实现按创建时间倒序排列的排序功能
2026-04-06 10:36:50 +08:00
82c801cf9c refactor(WmsTransferOrderService): 优化调拨单删除逻辑
- 添加事务注解确保数据一致性
- 注入调拨单明细相关的mapper和服务
- 删除调拨单时先删除关联的明细记录
- 使用LambdaQueryWrapper进行明细记录查询和删除
- 保持原有业务校验逻辑不变
- 提升代码结构清晰度和可维护性
2026-04-06 10:28:52 +08:00
砂糖
3f86f0be38 refactor: 将vxe-table和xe-utils依赖移至klp-ui的package.json
删除根目录的package.json和package-lock.json文件,将vxe-table和xe-utils依赖项合并到klp-ui的package.json中,以简化项目结构
2026-04-04 09:42:51 +08:00
砂糖
31d79a6c53 feat: 优化物料类型选择逻辑和表格配置
添加物料类型选择逻辑,根据原料或产品类型设置selectType
调整表格树形配置,无分组条件时禁用树形显示
移除调拨状态列和必填备注校验,自动生成调拨单号和时间
2026-04-03 16:26:39 +08:00
砂糖
ba3d2c2b35 feat(wms报表): 在splitConfig中添加actionQueryParams和baseQueryParams
为分条报表配置添加创建者查询参数,用于过滤特定用户创建的数据
2026-04-03 15:39:46 +08:00
砂糖
c4c9641901 feat: 添加钢卷ID字段并实现导出功能
- 在WmsActualWarehouseVo中添加coilId字段
- 在WmsActualWarehouseServiceImpl中设置coilId值
- 在WarehouseBird组件中添加导出库内钢卷信息功能
- 在CoilTable组件中添加总卷数和总净重统计显示
2026-04-03 15:34:19 +08:00
砂糖
b9385858f3 feat(PlanDetailForm): 添加订单选择功能并优化表单结构
refactor(CoilNo): 调整线圈号显示逻辑
2026-04-03 14:53:45 +08:00
砂糖
b9da0d6d76 feat(wms): 添加发货单时间范围查询功能
在基板面板中新增发货单时间范围选择器,并调整后端接口以支持格式化日期参数
2026-04-03 14:40:53 +08:00
0d4d7f4235 fix(wms): 修复卷料创建时字段初始化问题
- 移除父卷料ID的设置
- 清空导出相关字段避免数据残留
- 设置创建和更新时间为当前时间
- 添加创建人和更新人为当前登录用户
- 确保新创建的卷料状态正确初始化
2026-04-03 14:19:18 +08:00
47198a0d01 feat(wms): 添加按时间范围查询已绑定钢卷ID功能
- 在 IWmsDeliveryWaybillDetailService 接口中新增 getBoundCoilIdsByTimeRange 方法
- 在控制器中添加 startTime 和 endTime 参数支持时间范围查询
- 实现服务层方法根据时间段筛选已绑定的钢卷ID列表
- 使用 LambdaQueryWrapper 构建时间范围查询条件
- 对查询结果进行空值检查和去重处理
- 保持原有无时间范围查询的兼容性逻辑
2026-04-03 13:48:54 +08:00
砂糖
e6d63ef4f7 feat(库存管理): 将库存变动功能改为消耗功能
- 修改界面标签从"变动"改为"消耗"
- 移除增加/减少类型选择,只保留消耗功能
- 更新按钮图标和文字为消耗相关
- 为设备选择器添加可清空功能
- 初始化表单数量字段默认值为0
2026-04-03 13:21:38 +08:00
砂糖
e673dcbaeb feat(库存管理): 重构库存页面并添加分组功能
添加vxe-table依赖支持表格分组和筛选
重构库存页面为左右布局,左侧仓库树右侧分组表格
实现按物料类型、名称、材质等多维度分组功能
添加全表搜索和列筛选功能
移除不再使用的stockIo组件和旧版库存页面
2026-04-03 11:30:19 +08:00
砂糖
74eae50ab0 feat(contract): 新增产品内容组件并优化合同管理功能
refactor(contract): 重构合同预览和列表组件
fix(contract): 修复合同ID类型校验问题
style(contract): 优化合同列表样式
docs(contract): 更新合同默认内容模板
2026-04-02 16:49:07 +08:00
砂糖
5ec293fc94 feat(物料管理): 添加质量状态多选查询功能
在物料管理模块中新增质量状态多选查询功能,包括:
1. 后端添加qualityStatusCsv字段支持多选查询
2. 前端CoilSelector组件增加品质多选下拉框
3. 服务层实现多选条件过滤逻辑
2026-04-02 14:24:52 +08:00
砂糖
d31bd14692 feat(字典组件): 添加DictSelect组件并替换多处muti-select
添加DictSelect组件作为全局组件,并在多个报表模板中替换原有的muti-select组件
优化字典项筛选逻辑,调整样式和提示文本
2026-04-02 09:10:58 +08:00
821af42976 fix(export): 修正导出VO中的字段标签
- 将WmsMaterialCoilAllExportVo中的打包状态字段标签修正为原料材质
- 将WmsMaterialCoilExportVo中的打包状态字段标签修正为原料材质
2026-04-01 18:20:45 +08:00
砂糖
579bf3796f feat(wms): 新增钢卷表面处理字段及相关功能
在钢卷相关实体类、前端页面和查询逻辑中新增钢卷表面处理字段,包括:
1. 在WmsMaterialCoil、WmsMaterialCoilVo、WmsMaterialCoilBo中新增coilSurfaceTreatment字段
2. 在前端多个页面中新增钢卷表面处理的展示和编辑功能
3. 在查询逻辑中新增对钢卷表面处理的过滤条件
4. 新增仓库操作记录页面及相关统计图表功能
2026-04-01 14:50:56 +08:00
砂糖
f959f97099 feat(contract): 新增合同预览和列表组件
refactor(QRCode): 优化二维码组件并修复空值检查
将QRCode组件从print目录移动到components目录,并添加空值检查防止错误

feat(crm): 在合同模型中添加交货日期字段
在CrmContract、CrmContractVo、CrmContractBo及相关Mapper中添加deliveryDate字段

refactor(wms): 统一使用全局QRCode组件路径
将多个文件中的QRCode引用路径从相对路径改为@/components/QRCode

style(order): 调整订单页面标签顺序
调整操作记录和发货配卷标签的顺序

chore: 删除废弃的打印相关文件
移除print目录下不再使用的QRCode、CodeRenderer等组件和页面
2026-04-01 10:44:51 +08:00
砂糖
800cf0c8d1 fix(wms报表): 修正异常率计算逻辑并统一百分比格式
- 在异常率计算中增加质量状态判断条件
- 将分母从totalCount改为outCount以匹配业务需求
- 统一异常率和正品率的百分比格式输出
2026-03-31 18:54:56 +08:00
砂糖
0223102269 feat(wms/report): 添加差值计算和异常信息展示功能
refactor(wms/report): 替换合计信息为差值显示
feat(wms/coil): 增加创建时间和创建人字段
feat(crm/contract): 添加合同导出按钮
2026-03-31 18:37:17 +08:00
砂糖
abcc644f74 feat(crm/contract): 添加状态变更功能并优化代码
在合同管理页面添加状态变更下拉选择功能,支持草稿、已生效、已作废和已完成四种状态切换。同时移除base.vue中无用的注释代码。
2026-03-31 14:16:08 +08:00
砂糖
62444ef743 feat(crm): 添加订单和合同的发货配卷查询功能
添加新的API接口和组件用于查询订单和合同下的发货配卷情况
在订单和合同详情页中新增"发货配卷"标签页展示相关数据
2026-03-31 13:49:00 +08:00
砂糖
a253d1ccea feat(crm): 传递合同ID至订单页面并完善标签逻辑
在合同页面将合同ID传递给订单页面,确保订单与合同关联
优化标签渲染逻辑,根据仓库类型显示不同标签
移除无用注释和代码
2026-03-31 11:32:16 +08:00
砂糖
aca10bcd45 feat(客户管理): 新增税号字段并优化客户信息展示
feat(订单管理): 增加宽度和厚度公差字段,优化销售员选择方式

feat(合同管理): 新增合同管理模块及相关API接口

refactor(文件列表): 重构文件列表组件样式和布局

fix(QRCode): 修复内容为空时仍触发生成的bug

perf(线圈管理): 优化用户列表加载条件,减少不必要请求

style(代码): 移除多余的空行和注释代码
2026-03-31 11:16:48 +08:00
b7d8463198 fix(crm): 修复客户查询条件匹配逻辑
- 将联系人姓名字段从精确匹配改为模糊匹配
- 将联系方式字段从精确匹配改为模糊匹配
- 将地址字段从精确匹配改为模糊匹配
- 将银行信息字段从精确匹配改为模糊匹配
- 将税号字段从精确匹配改为模糊匹配
- 提升客户搜索功能的灵活性和准确性
2026-03-30 15:07:41 +08:00
砂糖
4617328b8e Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-30 14:34:55 +08:00
砂糖
070b0aea8d fix(wms): 修复异常表单和报表导出功能
修正异常表单中的产线字段名从line改为productionLine
优化报表导出功能,使用actionIds替代coilIds
为异常管理添加程度字典显示和产线字段
移除冗余代码并统一报表模板中的导出逻辑
2026-03-30 14:34:51 +08:00
6835a35c02 feat(crm): 订单ID数据类型优化及配卷查询功能扩展
- 将CrmOrder、CrmOrderItem及其相关BO、VO类中的orderId和itemId字段从String类型改为Long类型
- 修改selectOrderItemsByOrderIds方法参数类型为List<Long>
- 在CrmOrderItemController中新增根据订单ID和合同ID查询配卷的接口
- 实现queryCoilsByOrderId和queryCoilsByContractId服务方法
- 移除WmsMaterialCoilServiceImpl中冗余的嵌套对象构建逻辑
- 更新销售报表中订单ID的类型转换和分组逻辑以适配Long类型
2026-03-30 14:33:06 +08:00
02469383f4 fix(exception): 修改全局异常处理器返回具体错误信息
- 修改 RuntimeException 处理器返回具体的异常消息而不是通用提示
- 修改 Exception 处理器返回具体的异常消息而不是通用提示
- 移除了硬编码的"系统异常,请联系管理员处理"消息
- 保留了原有的错误日志记录功能
2026-03-30 13:57:35 +08:00
15a3f843f1 feat(crm): 添加某一合同下财务和异议信息查询功能
- 在CrmOrderItemController中新增getContractFinance接口用于查询合同关联的财务和异议数据
- 在CrmOrderItemService及其实现类中添加queryFinanceAndObjectionByContractId方法
- 创建CrmContractOrderFinanceVo数据传输对象封装异议列表和应收款列表
- 实现通过合同ID查询其下属订单的销售异议和财务信息的完整逻辑
- 修改全局异常处理器统一返回系统异常提示信息
2026-03-30 13:47:10 +08:00
8a5f2bc4df feat(crm): 添加订单关联合同ID和附件字段支持
- 在CrmOrder实体类中新增contractId和annexFiles字段
- 在CrmOrderBo业务对象中同步添加对应字段
- 更新CrmOrderMapper.xml映射文件中的结果映射和查询字段
- 在CrmOrderServiceImpl服务实现中添加字段查询条件支持
- 在CrmOrderVo视图对象中增加Excel导出注解配置
2026-03-30 13:39:27 +08:00
ca176de4ef feat(crm): 添加合同管理功能模块
- 新增合同信息实体类、业务对象和视图对象
- 创建合同产品明细相关的实体、业务对象和视图对象
- 实现合同信息的增删改查和分页查询功能
- 实现合同产品明细的增删改查和分页查询功能
- 添加合同信息和产品明细的导出Excel功能
- 创建合同信息和产品明细的数据库映射配置
- 实现合同服务层业务逻辑和数据校验功能
- 配置合同相关控制器接口和请求映射关系
2026-03-30 13:28:37 +08:00
d26bdb38ca Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-30 13:19:26 +08:00
2dff94c3bd feat(order): 添加订单项宽度公差和厚度公差字段
- 在CrmOrderItem实体类中新增widthTolerance和thicknessTolerance字段
- 在CrmOrderItemBo业务对象中添加对应的公差字段定义
- 更新CrmOrderItemMapper.xml映射文件中的结果映射和查询字段
- 在服务实现类中添加公差字段的查询条件支持
- 在CrmOrderItemVo视图对象中增加Excel导出支持的公差字段
2026-03-30 13:19:17 +08:00
砂糖
bb9252e3a2 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-30 13:13:49 +08:00
砂糖
aacf433462 feat: 修改打包状态为原料材质并优化异常管理功能
修改所有打包状态字段为原料材质,统一业务术语
重构异常管理功能,新增异常记录列表和删除功能
优化分条钢卷面板显示更多物料信息
将切边要求和包装要求改为下拉选择框
2026-03-30 13:13:46 +08:00
e553bfcb22 feat(crm): 添加客户纳税人识别号字段支持
- 在 CrmCustomer 实体类中新增 taxNumber 字段
- 在 CrmCustomerBo 业务对象中添加 taxNumber 属性
- 在 CrmCustomerVo 视图对象中增加 taxNumber 并配置 Excel 导出
- 更新 MyBatis 映射文件 CrmCustomerMapper.xml 添加字段映射
- 在查询条件构建中加入纳税人识别号的过滤逻辑
2026-03-30 12:57:57 +08:00
cb9998e0c4 feat(wms): 添加钢卷异常记录中的产线名称字段
- 在 WmsCoilAbnormal 实体类中新增 productionLine 字段
- 在 WmsCoilAbnormalBo 中添加 productionLine 查询条件字段
- 更新数据库映射文件 WmsCoilAbnormalMapper.xml 映射关系
- 在服务层实现类中添加产线名称查询过滤逻辑
- 在 WmsCoilAbnormalVo 视图对象中添加产线名称导出支持
2026-03-30 12:57:19 +08:00
15058727d0 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-30 11:10:52 +08:00
ab7af2ade8 feat(wms): 添加配送单详情中的原材料和产品信息字段
- 在 WmsDeliveryWaybillDetailVo 中新增物品名称、规格、材质等属性
- 添加厂家、表面处理描述、镀层等原材料/产品相关信息
- 在 Mapper 中增加原材料和产品的关联查询逻辑
- 实现原材料和产品表的左连接查询支持
- 添加状态描述字段用于显示库存状态信息
- 完善 Excel 导出功能中的新字段映射配置
2026-03-30 11:10:44 +08:00
砂糖
9cf0d289c3 feat(wms): 添加表面处理字段显示和查询功能
在发货单明细表和钢卷选择器中添加表面处理字段的显示和查询功能
同时优化钢卷选择时的品质状态校验逻辑
2026-03-30 11:02:36 +08:00
砂糖
4988630db9 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-30 10:29:07 +08:00
cdf49ab8fe feat(wms): 添加发货单明细查询功能支持导出功能
- 在WmsDeliveryWaybillDetailMapper中新增VO查询方法
- 实现联查发货单、计划、钢卷信息的数据映射
- 更新WmsDeliveryWaybillDetailVo实体类字段结构
- 优化服务层查询逻辑并添加分页支持
- 配置MyBatis XML映射文件查询语句
- 整合多表关联数据展示完整业务信息
2026-03-30 10:15:10 +08:00
砂糖
a43cedc00f feat(wms/delivery): 改进发货单页面布局和交互
添加可拖拽分割线调整表格和详情区域高度
固定顶部操作栏和表格区域滚动
优化页面整体样式和用户体验
2026-03-30 09:50:52 +08:00
砂糖
667c411997 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-30 09:29:46 +08:00
砂糖
05fb0358a2 fix(wms): 在导出功能中添加waybillId参数
确保导出功能包含必要的waybillId参数以正确过滤数据
2026-03-30 09:29:40 +08:00
e767502d7b Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-28 18:10:29 +08:00
112cdce0d0 feat(wms): 完善物料卷VO结构并优化运单查询排序
- 在WmsMaterialCoilVo中新增actualWarehouse字段存储仓库信息
- 为WmsMaterialCoilVo补充WmsActualWarehouse导入声明
- 在物料卷服务实现中设置仓库名称和实际仓库信息
- 为运单查询条件添加按创建时间降序排列功能
2026-03-28 18:10:21 +08:00
砂糖
49427608ad Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-28 17:52:03 +08:00
砂糖
97cb78bbbe feat(wms): 在钢卷修正页面添加实测厚度输入框
为钢卷修正功能添加实测厚度(m)的输入框,使用户能够输入钢卷的实测厚度数据
2026-03-28 17:52:00 +08:00
086d01fa3f Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-28 16:39:41 +08:00
c3f2f5ef83 refactor(WmsTransferOrderItemService): 优化调拨单明细查询速率
- 简化导入语句,使用通配符导入相关域类和映射器
- 添加WmsWarehouseMapper依赖注入以支持仓库信息批量查询
- 将原有的分步查询逻辑重构为统一的fillBatchInfo方法
- 实现批量查询钢卷、原料、产品和仓库信息以提高性能
- 添加物料类型名称映射和前后置物料信息填充功能
- 在创建和更新钢卷时设置物料类型字段
2026-03-28 16:39:33 +08:00
砂糖
8d6c3302a3 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-28 15:58:27 +08:00
砂糖
97cc86c6c4 feat(钢卷操作): 将操作类型显示从静态文本改为可编辑的下拉选择框
修改操作类型显示方式,从静态文本替换为可编辑的下拉选择框,支持用户直接修改操作类型。同时保留原有字典类型的选项支持,提升用户体验和操作便捷性。
2026-03-28 15:58:23 +08:00
f3d5e1f0bf feat(transfer): 添加调拨订单项确认功能中的订单项ID参数支持
- 在confirmTransfer方法中添加orderItemId参数获取
- 更新查询条件以支持根据订单项ID进行筛选
- 添加对orderItemId和transferId为null的安全检查
- 优化查询包装器的条件判断逻辑
2026-03-28 15:27:35 +08:00
砂糖
499654907b feat(调拨单): 新增调拨单管理功能
- 新增调拨单主表和明细表相关API接口
- 新增调拨单主表和明细表前端页面
- 新增钢卷选择器组件和调拨明细表格组件
- 修改产品信息和原料信息渲染组件支持更多字段
- 修改产品选择和原料选择组件支持数值类型值
- 修改钢卷号渲染组件支持更多字段和外部数据
- 新增调拨单匹配物料接口
2026-03-28 14:08:27 +08:00
00939dae2f refactor(wms): 优化调拨单项目物料信息填充逻辑
- 将通用的fillMaterialInfo方法拆分为fillMaterialInfoBefore和fillMaterialInfoAfter两个专用方法
- 修复了物料信息填充时字段映射错误问题,确保Before和After字段正确设置
- 增强了代码可读性和维护性,明确区分前后物料信息处理逻辑
- 保持了原有的业务逻辑不变,仅优化方法结构和字段赋值准确性
2026-03-28 13:35:48 +08:00
6e23e932da refactor(transfer): 优化转库订单项目确认逻辑
- 移除 WmsTransferOrderItemBo 中的 itemType 字段
- 将 itemType 替换为 materialTypeAfter 的转换逻辑
- 添加对 itemId、itemType 和 warehouseId 的空值检查
- 实现字段选择性更新机制
- 修复查询条件添加 transferId 筛选
- 完善默认值回退逻辑
2026-03-28 11:47:33 +08:00
c554508000 feat(transfer): 添加调拨订单项目中的钢卷详情查询和重复检查功能
- 优化导入语句,使用java.util.*统一导入
- 在分页查询中添加钢卷详情关联查询逻辑
- 通过coilId收集并查询对应的钢卷信息并建立映射关系
- 为每个调拨订单项目设置关联的钢卷详情信息
- 添加调拨单内钢卷重复性检查机制
- 防止同一调拨单下添加相同coilId的重复项目
- 提供详细的重复钢卷号错误提示信息
2026-03-28 11:33:19 +08:00
317b7187f5 perf(WmsTransferOrderItemService): 优化调拨明细信息查询性能
- 使用流式处理批量获取钢卷ID并去重
- 通过单次查询获取所有相关钢卷信息
- 使用Map映射避免循环中的重复数据库查询
- 移除原有的逐条查询逻辑减少数据库交互次数
- 提升列表查询的整体性能表现
2026-03-28 10:58:15 +08:00
d28f50ba65 feat(wms): 完善调拨单明细查询功能
- 新增钢卷信息查询和服务注入
- 新增库房服务依赖以获取库区名称
- 实现调拨单明细详情信息填充功能
- 添加改前后物料信息的完整查询支持
- 扩展VO类以包含物料类型名称和库区名称字段
- 优化查询方法以自动填充关联的物料和库房信息
- 实现物料类型转换显示为中文描述功能
- 添加异常处理确保库房信息查询失败时不影响主流程
2026-03-28 10:39:43 +08:00
862efcfabd Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-28 09:27:38 +08:00
d51b555fa2 fix(excel): 修复排产表导出功能中的日期格式和表格合并问题
- 添加SimpleDateFormat用于日期格式化处理
- 将计划日期格式化为yyyy-MM-dd格式避免显示异常
- 修正表格合并区域从38列扩展到40列
- 为整个合并区域的所有单元格应用标题样式
- 确保合并单元格后样式的一致性显示
2026-03-28 09:27:30 +08:00
砂糖
f685ea4cea Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-28 09:09:55 +08:00
砂糖
9c2d8cfb4a feat(计划单): 添加序号字段并在表格中显示
在计划单详情表单中添加序号输入字段,并在详情表格中新增序号列显示。移除不再使用的修改按钮代码。
2026-03-28 09:09:50 +08:00
ba722e0439 refactor(aps): 重构排产单查询和导出功能
- 移除日期范围、产线ID和客户名称查询条件
- 修改排序规则为按业务序号升序排列
- 删除查询请求DTO中的废弃字段
- 优化Excel导出功能,添加标题动态显示和表头样式
- 实现前7列数据居中对齐和自动合并功能
- 修复POI依赖导入路径问题
- 更新转储订单项映射配置
2026-03-27 18:21:53 +08:00
砂糖
bc00846f14 feat(排产单): 新增只读模式并优化导出功能
添加只读视图组件 read.vue,修改 detail.vue 和 index.vue 以支持 readonly 属性
将导出按钮移至行操作列并支持单行导出
优化排产日期列宽度和操作列布局
2026-03-27 17:27:06 +08:00
1c9a59636a feat(wms): 添加调拨单明细取消功能并优化字段映射
- 在IWmsTransferOrderItemService中新增cancelTransfer方法
- 修改WmsTransferOrderItem实体类将itemId字段重命名为orderItemId
- 在WmsTransferOrderItemBo和WmsTransferOrderItemVo中同步字段名称变更
- 为WmsTransferOrderBo的transferTime字段添加日期格式化注解
- 在WmsTransferOrderItemController中添加cancel接口支持取消操作
- 实现WmsTransferOrderItemServiceImpl的cancelTransfer业务逻辑
- 移除未使用的工具类依赖和冗余的coilService注入
- 修复confirmTransfer方法中的字段赋值错误
2026-03-27 17:13:45 +08:00
b842f267cc feat(transfer): 新增调拨单明细确认功能
- 在IWmsTransferOrderItemService接口中添加confirmTransfer方法
- 在WmsTransferOrderItemBo中增加itemType字段用于物料类型标识
- 创建WmsTransferOrderItemController的confirm端点处理确认请求
- 实现WmsTransferOrderItemServiceImpl中的confirmTransfer业务逻辑
- 集成IWmsMaterialCoilService服务更新钢卷相关状态信息
- 完成调拨单明细数据同步更新确保数据一致性
2026-03-27 16:59:20 +08:00
5be8f2857e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-27 16:44:03 +08:00
62eb5aedfb feat(wms): 添加调拨单明细批量新增功能
- 在 IWmsTransferOrderItemService 中添加 batchInsert 方法
- 在 WmsTransferOrderItemBo 中新增 coilIds 字段用于接收钢卷id列表
- 在 WmsTransferOrderItemController 中添加 /batch 接口支持批量新增
- 在 WmsTransferOrderItemServiceImpl 中实现批量插入业务逻辑
- 新增 WmsMaterialCoil 相关依赖注入和数据查询操作
- 实现根据 itemType 自动设置 materialType 的转换逻辑
2026-03-27 16:43:42 +08:00
砂糖
cd00b9562d refactor(wms/report): 重构报表模块数据获取逻辑,提取公共方法到fetch.js
feat(wms/report): 新增报表结果存储页面,支持JSON数据横向对比

style(wms/coil/do): 调整钢卷修正页面样式和代码格式

fix(wms/coil/do): 修复操作记录查询参数传递问题,优化钢卷选择逻辑
2026-03-27 16:37:59 +08:00
c294149274 feat(wms): 新增调拨单明细物料匹配或创建功能
- 在IWmsTransferOrderItemService接口中添加matchOrCreateMaterial方法
- 在WmsTransferOrderItemController中添加/matchOrCreate接口端点
- 实现matchOrCreateMaterial业务逻辑,支持根据itemId和itemType匹配或新增物料
- 添加从原料到产品的转换匹配逻辑
- 添加从产品到原料的转换匹配逻辑
- 集成WmsRawMaterialMapper和WmsProductMapper数据访问层
- 实现基于名称、规格、制造商等字段的精确匹配机制
- 支持itemType参数区分原料(material)和成品(product)处理流程
2026-03-27 16:32:32 +08:00
0d3bde95f3 feat(wms): 添加调拨单功能模块
- 创建调拨单主表实体类、业务对象类和视图对象类
- 创建调拨单明细表实体类、业务对象类和视图对象类
- 实现调拨单主表和明细表的数据库映射和XML配置文件
- 开发调拨单主表和明细表的服务接口及实现类
- 创建调拨单主表和明细表的控制器,提供CRUD操作接口
- 实现分页查询、新增、修改、删除和导出功能
- 添加参数验证和数据校验机制
- 集成MyBatis-Plus进行数据库操作
- 配置Excel导出功能支持调拨单数据导出
2026-03-27 16:15:17 +08:00
15a2920053 feat(WmsCoilPendingAction): 添加按钢卷ID列表查询功能
- 在WmsCoilPendingActionBo中新增coilIds字段用于存储钢卷ID列表
- 实现字符串形式的钢卷ID逗号分隔解析为Long类型列表
- 扩展buildQueryWrapperPlus方法支持按多个钢卷ID批量查询
- 添加非空验证确保coilIds参数有效时才进行in条件构建
- 保持原有单个coilId查询逻辑不变,实现向后兼容
- 提供更灵活的批量查询接口以提升数据检索效率
2026-03-27 16:08:59 +08:00
砂糖
ab3914811a feat(wms): 新增报结果存储API及页面
refactor(aps): 修改导出接口为POST并调整表格高度
2026-03-27 13:00:58 +08:00
砂糖
19b48d711a Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-27 09:57:27 +08:00
砂糖
1e6be8cd76 feat(aps): 新增排产单管理功能模块
添加排产单主表和明细表的API接口
实现排产单列表、新增、修改、删除功能
添加排产单明细表单和列表展示组件
2026-03-27 09:57:24 +08:00
2041cb3e5d fix(wms): 删除钢卷时同步更新二维码状态为失效
- 在删除钢卷操作中添加二维码状态更新逻辑
- 遍历钢卷列表检查是否存在关联的二维码记录ID
- 将关联的二维码记录状态设置为0表示失效
- 通过generateRecordService更新二维码记录状态
- 确保删除钢卷后对应的二维码同步失效
2026-03-27 09:55:09 +08:00
d4b5f09882 fix(wms): 解决合卷操作中钢卷重复检查问题
- 添加钢卷ID去重验证逻辑
- 防止相同钢卷重复参与合卷操作
- 抛出明确的业务异常提示重复问题
2026-03-27 09:43:14 +08:00
278cb24d54 feat(aps): 添加日期时间格式化注解支持
- 在 ApsPlanDetail 实体类中为 startTime 和 endTime 字段添加 JsonFormat 和 DateTimeFormat 注解
- 在 ApsPlanDetailBo 业务对象中为 startTime 和 endTime 字段添加 JsonFormat 和 DateTimeFormat 注解
- 在 ApsPlanDetailVo 视图对象中为 startTime 和 endTime 字段添加 JsonFormat 和 DateTimeFormat 注解
- 在 ApsPlanSheet 实体类中为 planDate 字段添加 JsonFormat 和 DateTimeFormat 注解
- 在 ApsPlanSheetBo 业务对象中为 planDate 字段添加 JsonFormat 和 DateTimeFormat 注解
- 在 ApsPlanSheetVo 视图对象中为 planDate 字段添加 JsonFormat 和 DateTimeFormat 注解
- 统一日期时间字段的序列化和反序列化格式配置
2026-03-26 16:21:40 +08:00
1b9787f983 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-26 15:14:06 +08:00
0f760e90b5 feat(aps): 添加根据排产单ID删除明细功能
- 在ApsPlanDetailMapper中新增deleteByPlanSheetIds方法
- 在ApsPlanDetailMapper.xml中添加对应的DELETE语句实现软删除
- 在ApsPlanDetailServiceImpl中实现deleteByPlanSheetIds方法
- 在ApsPlanSheetServiceImpl中注入IApsPlanDetailService依赖
- 在排产单删除时调用planDetailService.deleteByPlanSheetIds方法
- 在IApsPlanDetailService接口中定义deleteByPlanSheetIds方法
2026-03-26 15:13:54 +08:00
砂糖
5d3cbde044 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-26 15:13:11 +08:00
砂糖
a389a98664 feat(wms): 新增分条报表配置及功能优化
- 添加分条报表相关配置及视图组件
- 优化标签打印尺寸及布局
- 增加实测厚度字段及相关展示逻辑
- 重构报表数据获取逻辑,统一处理异常情况
- 完善分条操作表单,增加异常信息管理
2026-03-26 15:13:08 +08:00
38862cf0ea feat(aps): 添加排产单导出功能
- 新增 ApsPlanSheetQueryReq 查询参数类
- 新增 ApsPlanSheetRowVo 数据传输对象
- 实现 controller 层 exportAll 接口
- 实现 service 层 exportExcel 导出逻辑
- 添加 mapper 层 selectList 查询方法
- 配置 mybatis xml 查询映射
- 优化 Excel 导出样式和数据处理
2026-03-26 14:59:33 +08:00
281f86ca8c feat(aps): 添加排产单和排产明细功能模块
- 创建排产单主实体类 ApsPlanSheet 和业务对象 ApsPlanSheetBo
- 创建排产单明细实体类 ApsPlanDetail 和业务对象 ApsPlanDetailBo
- 实现排产单主和明细的控制器、服务层和数据访问层
- 添加排产单主和明细的查询、新增、修改、删除和导出功能
- 配置 MyBatis Plus 映射和 XML 结果映射
- 实现分页查询和条件筛选功能
- 添加数据校验和业务逻辑处理
2026-03-26 11:35:33 +08:00
fb0dfb0d76 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-26 10:42:32 +08:00
7e7f03e19f feat(domain): 添加材料卷实测厚度字段支持
- 在WmsMaterialCoil实体类中新增actualThickness字段
- 在WmsMaterialCoilAllExportVo导出对象中添加厚度导出映射
- 在WmsMaterialCoilBo业务对象中增加厚度查询条件支持
- 在WmsMaterialCoilExportVo导出对象中补充厚度字段定义
- 更新WmsMaterialCoilMapper.xml映射文件中的厚度字段映射
- 在WmsMaterialCoilServiceImpl服务实现中加入厚度查询逻辑
- 在WmsMaterialCoilVo视图对象中添加厚度字段定义
2026-03-26 10:41:50 +08:00
砂糖
feb50e038d refactor(ems/dashboard): 重构能源类型选择为标签页形式并设置默认值
将能源类型选择从下拉框改为标签页形式,提升用户体验
移除未使用的标签页代码,并设置默认选中的能源类型
2026-03-26 10:41:27 +08:00
砂糖
c2ba4b0193 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-25 17:22:24 +08:00
砂糖
564086c72a fix(wms报表): 修复fetchLossList参数传递及规格分割处理
修复fetchLossList函数未正确处理传入的actionTypes参数问题,并添加时间参数。同时处理规格分割时的空值情况,避免报错。
2026-03-25 17:22:21 +08:00
9dc8d589f0 feat(wms): 添加报表结果存储功能支持JSON和横向对比
- 创建WmsReportResultStorage实体类用于存储报表结果数据
- 实现IWmsReportResultStorageService服务接口及其实现类
- 添加WmsReportResultStorageController控制器提供CRUD操作
- 创建WmsReportResultStorageMapper数据访问层
- 配置WmsReportResultStorageMapper.xml映射文件
- 定义WmsReportResultStorageBo业务对象和WmsReportResultStorageVo视图对象
- 实现报表数据按日期、类型、产线进行查询和去重逻辑
- 添加Excel导出功能支持报表数据导出
2026-03-25 16:23:39 +08:00
e8568b6ec7 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-25 14:37:00 +08:00
31bbdedb8f feat(wms): 获取消耗钢卷接口,用作报表或者导出
- 在IWmsCoilPendingActionService中新增queryActionIdCoilIdList方法
- 在WmsCoilPendingActionController中新增/actionCoilIdList端点
- 在WmsCoilPendingActionMapper中新增selectActionIdCoilIdList查询方法
- 在WmsCoilPendingActionMapper.xml中添加对应的SQL查询语句
- 在WmsCoilPendingActionServiceImpl中实现查询逻辑
- 创建WmsCoilPendingActionIdCoilVo数据传输对象,仅包含actionId和coilId字段
2026-03-25 14:36:53 +08:00
砂糖
e47d6e159e Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-25 14:34:29 +08:00
砂糖
33c003d2ca refactor(mes/eqp): 重构备件和辅料库存变动页面
优化库存变动功能,增加新增变动记录弹窗
统一备件和辅料变动操作逻辑
移除不再使用的报表组件
2026-03-25 14:34:26 +08:00
b98b4593f6 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-25 13:50:13 +08:00
7afc9ac04f feat(eqp): 修改辅料和备品备件新增接口返回值
- 将 EqpAuxiliaryMaterialController 的 add 方法返回值从 R<Void> 改为 R<Long>
- 将 EqpAuxiliaryMaterialService 和实现类的 insertByBo 方法返回值从 Boolean 改为 Long
- 将 EqpSparePartController 的 add 方法返回值从 R<Void> 改为 R<Long>
- 将 EqpSparePartService 和实现类的 insertByBo 方法返回值从 Boolean 改为 Long
- 新增操作成功后返回具体的 ID 值而非布尔值
- 统一了接口返回格式,便于前端获取新增记录的主键信息
2026-03-25 13:50:05 +08:00
砂糖
8e2159a6cf feat(LogTable): 添加日志导出功能并优化日期处理
- 新增导出按钮及导出功能实现
- 默认设置查询时间为昨天0点到今天23:59:59
- 优化表格高度适应页面
- 重置功能现在保留coilId并重置为默认时间范围
2026-03-25 10:21:40 +08:00
8baf165840 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-25 10:16:48 +08:00
c01074582d feat(controller): 修复吞吐各个接口的查询时间问题
- 引入 Jackson 的 @JsonFormat 注解用于日期格式化
- 添加 Spring 的 @DateTimeFormat 注解用于日期参数解析
- 配置 startTime 和 endTime 参数的日期时间格式为 yyyy-MM-dd HH:mm:ss
- 确保日期参数在请求中的正确序列化和反序列化
2026-03-25 10:16:19 +08:00
砂糖
519e91b299 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-25 09:04:54 +08:00
砂糖
bb79b02ee4 refactor(wms): 优化报表查询逻辑和界面显示
- 将查询参数中的 updateBy 改为 createBy 以匹配实际业务需求
- 移除不再使用的 selectType 参数
- 优化员工信息页面显示,调整离职时间展示
- 提取公共的 fetch 逻辑到单独文件
- 重构报表查询逻辑,使用 Promise.all 并行请求
- 调整钢卷文档页面,增加创建人选择功能
2026-03-25 09:04:48 +08:00
6cb78bd3bf feat(wms): 添加钢卷报表汇总功能
- 新增 WmsMaterialCoilReportSummaryBo 请求参数类
- 新增 WmsMaterialCoilReportSummaryVo 响应结果类
- 在 IWmsMaterialCoilService 中添加 reportSummary 方法定义
- 在 WmsMaterialCoilController 中添加 /reportSummary 接口
- 实现 reportSummary 业务逻辑,支持待操作条件和钢卷条件组合筛选
- 实现钢卷ID合并、异常库汇总、班组汇总等统计功能
- 提供空数据情况下的默认汇总结果处理
2026-03-24 18:01:46 +08:00
45f58a7d3e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-24 15:42:48 +08:00
b31c3284b6 feat(WmsCoilPendingActionService): 添加创建人筛选功能
- 根据创建人筛选待处理钢卷操作记录
- 在查询条件中新增 create_by 字段匹配
2026-03-24 15:42:38 +08:00
砂糖
602b10b689 feat(wms): 重构报表配置并添加销售员管理功能
重构各报表模块配置,将重复配置提取到config.js统一管理
在打包记录和打包页面添加销售员选择和显示功能
新增销售员管理页面,支持销售员标签的增删改查
2026-03-24 15:38:30 +08:00
砂糖
0e808964c9 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-24 14:52:50 +08:00
砂糖
062bcd0b71 feat(标签打印): 添加分条成品标签类型及打印组件
新增分条成品标签类型,支持在特定仓库中自动识别并打印分条成品标签。添加SplitTag.vue组件用于分条成品标签的渲染,并更新相关逻辑以支持新的标签类型。
2026-03-24 14:52:47 +08:00
876bb48b1d feat(employee): 添加员工离职时间字段及查询功能
- 在WmsEmployeeInfo实体类中添加离职时间字段
- 在WmsEmployeeInfoBo业务对象中添加离职时间及相关查询条件字段
- 在WmsEmployeeInfoVo视图对象中添加离职时间字段并配置日期格式
- 更新MyBatis映射文件添加离职时间字段映射
- 实现离职时间范围查询功能支持
2026-03-24 14:48:45 +08:00
890c6dd01d feat(wms): 添加操作类型多选筛选功能
- 在 WmsCoilPendingActionBo 中新增 actionTypes 字段支持多选
- 修改查询逻辑以支持单个操作类型或多个操作类型的筛选条件
- 使用 in 条件查询实现多选筛选功能
- 保持原有单选功能的兼容性
- 更新 Lambda 查询方式下的多选逻辑处理
2026-03-24 14:21:28 +08:00
砂糖
cbc4334db9 refactor(wms): 移除调试代码和注释,优化规格分割逻辑
移除console.log调试语句和已注释的代码
为specification.split添加空值保护,防止undefined错误
简化标签类型判断逻辑
2026-03-24 14:05:07 +08:00
砂糖
ae68b40ee6 refactor(wms): 重构物料信息展示逻辑,移除冗余组件
重构物料信息展示逻辑,统一使用itemName等字段替代原有的product和rawMaterial嵌套结构
删除不再使用的BomInfo、CategoryRenderer等冗余组件
新增report模块配置集中管理
优化代码结构,提升可维护性
2026-03-24 13:55:10 +08:00
9738a32d9d refactor(controller): 优化发货单详情控制器中的钢卷绑定列表查询
- 移除 WmsMaterialCoilVo 导入并添加 WmsMaterialCoilBindVo 导入
- 将 boundCoilList 方法返回类型从 WmsMaterialCoilVo 更改为 WmsMaterialCoilBindVo
- 调用 queryPageListWithBindInfo 方法替代 queryPageList 方法以获取绑定信息
2026-03-24 13:51:47 +08:00
66e529a068 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-24 13:25:19 +08:00
b39471ddac refactor(material-coil): 重构钢卷物料查询服务
- 移除 WmsMaterialCoilVo 中的嵌套对象结构(rawMaterial、product、bomItemList)
- 新增 WmsMaterialCoilBindVo 视图对象专门处理发货绑定信息
- 添加 queryPageListWithBindInfo 方法支持发货绑定增强字段查询
- 将联查字段改为扁平化结构,直接填充基础物料属性
- 优化分页查询逻辑,分离通用查询和绑定信息查询流程
- 移除 BOM 项批量查询功能,简化服务依赖关系
2026-03-24 13:25:10 +08:00
砂糖
e76799f4e0 feat(coil): 添加钢卷加工流程图组件并优化界面
- 新增ProcessFlow组件展示钢卷加工流程
- 在base面板中添加流程图显示开关
- 调整DragResizeBox的z-index确保显示层级
- 修复部分样式问题和代码格式
- 更新字典项从warehouse_sync改为wms_next_warehouse
2026-03-24 10:51:09 +08:00
74cf838844 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-24 10:36:59 +08:00
ad100083ed feat(wms): 添加钢卷库区操作记录导出功能以及优化查询速率
- 在服务接口中新增 exportBySecondWarehouseIdAndTimeRange 方法用于导出功能
- 在控制器中新增 exportByWarehouseAndTime 接口支持报表导出
- 在映射器中新增 selectVoListWithJoin 查询方法优化关联查询
- 在 XML 映射文件中新增完整的关联查询 SQL 和结果映射配置
- 在服务实现类中重构查询逻辑使用新的关联查询方法
- 新增 WmsCoilWarehouseOperationLogExportVo 导出数据对象
- 实现导出逻辑将操作记录转换为 Excel 格式并支持多表关联
- 添加状态描述转换方法支持中文显示
- 更新 VO 类继承 BaseEntity 基础实体类
2026-03-24 10:35:57 +08:00
砂糖
ccb0e2683a feat(waybill): 添加车牌号搜索功能并修改查询条件为模糊匹配
refactor(CoilSelector): 增加已选钢卷统计信息显示并优化样式

fix(report): 将actionQueryParams中的updateBy改为createBy
2026-03-24 10:01:14 +08:00
1fc85c990f Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-24 09:49:15 +08:00
e843cd7488 fix(wms): 修复运单查询中车牌号匹配逻辑
- 将车牌号精确匹配改为模糊匹配以支持部分查询
- 保留原有的非空检查逻辑确保查询条件正确应用
2026-03-24 09:49:05 +08:00
砂糖
396f861882 feat(打包模块): 新增打包单据功能及相关组件
refactor(CoilSelector): 修改change事件返回参数包含完整钢卷信息

chore: 添加打包模块相关图标和API文件

test: 添加打包模块单元测试

docs: 更新打包模块API文档
2026-03-24 09:16:22 +08:00
f5a8d35831 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-23 15:52:23 +08:00
b06e16aab6 feat(wms): 完善钢卷打包功能的事务处理和数据一致性
- 添加事务注解确保新增、修改、删除操作的数据一致性
- 新增对打包主表ID和钢卷ID的空值校验
- 实现打包记录重量自动更新功能,包括总毛重、总净重和钢卷数量
- 在删除打包记录时自动还原钢卷到原库区状态
- 添加对钢卷销售名称的同步更新处理
- 完善删除操作中的关联明细记录清理逻辑
- 新增钢卷存在性验证确保数据完整性
2026-03-23 15:52:13 +08:00
f87ac6149c 快速排查新增字段与前端保存逻辑 2026-03-23 15:39:02 +08:00
7f8a927502 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-23 15:33:46 +08:00
31f85e7cd6 快速排查新增字段与前端保存逻辑 2026-03-23 15:33:12 +08:00
84583bb052 feat(wms): 添加钢卷打包明细关联钢卷信息查询功能
- 在 WmsCoilPackingDetailServiceImpl 中新增 IWmsMaterialCoilService 依赖注入
- 为分页查询和列表查询方法添加钢卷信息丰富逻辑
- 实现 enrichCoilInfo 方法通过钢卷ID批量获取钢卷完整信息
- 重构 WmsCoilPackingRecordServiceImpl 中的详情查询逻辑
- 移除 WmsCoilPackingDetailVo 中冗余的钢卷字段定义
- 使用关联查询替代原有的独立字段存储方式
2026-03-23 15:23:01 +08:00
6029256b42 feat(WmsMaterialCoil): 添加排除已打包钢卷功能
- 在 WmsMaterialCoilBo 中新增 excludePacked 字段用于控制是否排除已打包钢卷
- 在 WmsMaterialCoilServiceImpl 的查询逻辑中添加对已打包钢卷的过滤条件
- 实现通过 excludePacked 参数防止钢卷重复打包的业务需求
- 优化查询性能避免返回不必要的已打包钢卷数据
2026-03-23 14:04:54 +08:00
ca8596cab7 fix(wms): 修复印章申请查询时根据创建人进行筛选
- 添加 StringUtils 工具类导入用于字符串判空
- 在查询条件中增加对 createBy 字段的非空字符串验证
- 防止空字符串作为查询条件导致的数据库异常
2026-03-23 13:10:46 +08:00
7a14cf7cb6 feat(wms): 扩展钢卷打包记录详情功能
- 在 WmsCoilPackingDetailVo 中新增钢卷相关字段包括入场钢卷号、当前钢卷号、厂家原料卷号等
- 添加 WmsMaterialCoilVo 引用到 WmsCoilPackingDetailVo 中存储钢卷完整信息
- 在 WmsCoilPackingRecordVo 中增加明细列表用于存储打包详情
- 实现服务层查询时自动关联钢卷详细信息并填充到返回结果中
- 优化查询逻辑支持分页和列表查询时同时获取关联的钢卷详情数据
2026-03-23 10:57:09 +08:00
3ed5b6a6ab feat(wms): 添加钢卷打包功能
- 在IWmsCoilPackingRecordService中新增packing方法接口
- 为WmsCoilPackingDetailBo添加saleName字段
- 为WmsCoilPackingRecordBo添加details列表字段
- 在WmsCoilPackingRecordController中新增executePacking接口
- 实现WmsCoilPackingRecordServiceImpl的packing方法,包含事务处理
- 添加钢卷打包的核心业务逻辑,包括重量计算、库存转移等
- 集成日志记录和重复提交防护功能
2026-03-23 10:39:50 +08:00
c1fe964d20 feat(wms): 添加钢卷打包记录功能模块
- 创建钢卷打包明细实体类WmsCoilPackingDetail及业务对象WmsCoilPackingDetailBo
- 创建钢卷打包记录主实体类WmsCoilPackingRecord及业务对象WmsCoilPackingRecordBo
- 实现钢卷打包明细服务接口IWmsCoilPackingDetailService及其实现类
- 实现钢卷打包记录主服务接口IWmsCoilPackingRecordService及其实现类
- 添加钢卷打包明细和记录的控制器WmsCoilPackingDetailController和WmsCoilPackingRecordController
- 创建对应的MyBatis映射器WmsCoilPackingDetailMapper和WmsCoilPackingRecordMapper
- 实现数据库映射文件WmsCoilPackingDetailMapper.xml和WmsCoilPackingRecordMapper.xml
- 添加视图对象WmsCoilPackingDetailVo和WmsCoilPackingRecordVo支持Excel导出功能
2026-03-23 10:10:36 +08:00
080fe1dd0f feat(material): 添加销售人员信息功能
- 在 WmsMaterialCoil 实体中新增 saleName 字段
- 在导出 VO 类中添加销售人员导出映射
- 在 Bo 类中添加销售人员查询条件字段
- 更新 MyBatis 映射文件中的查询结果映射
- 实现销售人员姓名模糊查询功能
- 添加销售关联数据的查询逻辑
2026-03-23 10:02:33 +08:00
dcff086f72 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-23 09:20:28 +08:00
e1dd76ee4a feat(employee): 添加员工信息和变动记录的排序功能
- 在WmsEmployeeInfoBo中新增sortByRegularTime和sortByEntryTime字段
- 实现员工信息按入职时间、转正时间或创建时间的倒序排序
- 添加员工变动记录按变动时间的倒序排序
- 实现员工转岗记录按转岗时间的倒序排序
- 优化查询条件构建逻辑,支持多维度排序需求
2026-03-23 09:20:19 +08:00
砂糖
ea73305ebb feat(员工信息): 添加时间范围筛选功能并新增员工报表页面
在员工信息各页面添加入职/转正/调岗/离职时间范围筛选功能
新增员工报表页面,包含统计卡片、图表和数据表格
2026-03-21 17:45:37 +08:00
99488b828a feat(employee): 添加员工转正时间范围查询功能
- 在 WmsEmployeeInfoBo 中新增转正开始时间和转正结束时间字段
- 为新字段添加 JSON 格式化和日期时间格式化注解
- 在服务实现中添加按转正时间范围查询的条件构建逻辑
- 支持通过转正开始时间和结束时间进行员工信息筛选查询
2026-03-21 15:25:40 +08:00
92c2fb2f28 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-21 15:20:13 +08:00
0eba0b5def feat(employee): 添加员工管理模块中的时间范围查询功能
- 在WmsEmployeeChangeBo中新增异动时间范围字段changeStartTime和changeEndTime
- 在WmsEmployeeInfoBo中新增入职时间范围字段entryStartTime和entryEndTime
- 在WmsEmployeeTransferBo中新增转岗时间范围字段transferStartTime和transferEndTime
- 为所有时间字段添加DateTimeFormat注解支持日期格式化
- 在对应的服务实现类中添加时间范围查询条件
- 实现时间段筛选逻辑以支持更精确的数据查询需求
2026-03-21 15:19:13 +08:00
砂糖
a48b148756 feat(报表组件): 为线圈表格添加筛选、排序和分页功能
添加关键词筛选、多列选择筛选、字段排序和分页控制功能
优化表格布局和响应式设计
重构数据处理逻辑实现前端筛选和排序
2026-03-21 14:10:01 +08:00
砂糖
e266f36e39 feat(员工信息): 添加转正记录查看功能并优化状态显示
- 在员工信息页面添加转正记录查看按钮和对话框
- 将超过90天未转正的状态显示从warning改为danger
- 移除表单中未使用的备注和附件字段
- 修改综合报表的时间参数命名以保持一致性
2026-03-21 13:47:58 +08:00
砂糖
69c43a7edf Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-21 10:40:17 +08:00
砂糖
1b22ec6173 feat(分条/更新): 添加复制源卷信息功能
在分条和更新页面添加复制源卷信息按钮,方便用户快速填充表单。复制时自动排除卷号等特定字段,并处理数值类型转换。同时优化了复制逻辑,确保相关字段的联动更新。
2026-03-21 10:40:14 +08:00
09de6e4e62 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-21 10:17:12 +08:00
14df649282 feat(wms): 优化卷材数据类型显示
- 移除 ExcelDictFormat 注解,改用文本字段显示数据类型
- 添加 dataTypeText 字段用于存储历史/现存文本描述
- 添加 isRelatedToOrderText 字段用于存储是/否文本描述
- 在服务层实现数据类型转换逻辑,将数字值转为对应文本
- 在服务层实现订单关联状态转换逻辑,将数字值转为对应文本
- 保持原有的 Excel 导出功能完整性
2026-03-21 10:17:02 +08:00
砂糖
0c86b80fb2 feat(标签打印): 统一标签字体样式并增强镀锌分步加工功能
- 为所有标签组件添加统一的粗体黑体字体样式
- 修改getGalvanize1TypingPrefill方法参数以支持分页查询
- 在分步加工面板中增加镀锌二级数据展示功能
- 优化分步加工逻辑,支持根据actionType动态加载数据
2026-03-21 10:10:21 +08:00
砂糖
4478921d9b feat(报表): 增强报表功能并优化标签显示
- 新增镀锌1预填接口和报表字段
- 优化标签材质显示逻辑,移除content前缀
- 增加报表分页大小选项和耗时格式化
- 扩展报表可选列和默认列配置
- 改进报表统计计算逻辑,考虑质量状态
- 调整报表页面大小限制为99999
2026-03-20 17:56:08 +08:00
25e4ce9b76 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-20 17:41:11 +08:00
0da1386a5d feat(material): 优化钢卷物料导出功能
- 添加Excel字典格式注解支持数据类型转换
- 新增钢卷ID字段用于数据关联
- 增加操作完成时间字段显示
- 实现根据操作ID查询钢卷待办动作完成时间
- 添加钢卷ID到数据库查询映射
- 重构导出查询逻辑支持操作完成时间获取
2026-03-20 17:39:41 +08:00
砂糖
3f503eab0c refactor(标签渲染): 将输入框替换为静态文本显示
移除标签渲染组件中的可编辑输入框,统一使用静态文本显示内容
恢复修正按钮功能,移除质量状态表单字段
注释掉未使用的统计信息组件
2026-03-20 15:15:51 +08:00
195df97521 二级更新计划新增软推荐,计划录入和实绩内容添加入场钢卷号信息 2026-03-20 14:46:10 +08:00
b2b1eed8a9 二级更新计划新增软推荐,计划录入和实绩内容添加入场钢卷号信息 2026-03-20 14:43:06 +08:00
d14e5d2a1d Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-20 13:37:14 +08:00
017961e3b2 OEE添加镀锌接口 2026-03-20 13:36:42 +08:00
砂糖
d6e30d4d50 feat(报表): 新增综合报表模板及M卷统计功能
新增综合报表模板,支持按不同仓库类型展示统计信息。添加M卷处理功能,在统计中自动过滤并计算M卷数据。优化报表展示顺序,默认显示产出钢卷。修复异常率计算问题,完善统计信息展示。

新增仓库特定报表页面,包括镀铬、拉矫、脱脂、双机架、镀锌和酸连轧成品库报表。调整KLPTable组件支持高度设置,优化基础面板显示逻辑。

修复API请求超时问题,统一设置超时时间为10分钟。调整标签显示文本,优化用户体验。
2026-03-20 13:34:56 +08:00
076b0e8e24 fix(wms): 修正钢卷列表异常排序逻辑
- 将异常钢卷排序从降序改为升序,确保异常钢卷始终排在前面
- 保持非异常钢卷按创建时间倒序排列的原有逻辑不变
2026-03-20 12:57:04 +08:00
dba9a02636 feat(WmsMaterialCoil): 添加钢卷按异常数量排序功能
- 在WmsMaterialCoilBo中新增orderByAbnormal字段用于控制排序方式
- 实现按异常数量排序逻辑:异常钢卷在前按创建时间倒序,无异常钢卷在后按创建时间倒序
- 使用CASE语句实现异常状态的条件排序
- 保持原有创建时间排序作为默认选项
2026-03-20 11:18:54 +08:00
b5d1dd64e6 fix(wms): 添加质量状态检查防止不合格钢卷发货
- 实现质量状态为O时的发货限制功能
- 添加"当前钢卷为质检未通过,请勿发货!"错误提示
- 确保只有合格钢卷才能进行发货操作
2026-03-20 11:04:08 +08:00
砂糖
e1cb4683af feat(wms报表): 添加正品率显示并优化异常统计
在报表模板中添加正品率(passRate2)显示项
重构getLossList调用逻辑,改为在getList完成后调用
优化calc.js中的异常统计计算,添加各异常库占比数据
2026-03-20 10:33:51 +08:00
7e1e4b7b62 OEE重构完成 2026-03-19 18:46:27 +08:00
52b77991d5 OEE添加合格品次品待判级内容 2026-03-19 18:41:08 +08:00
a858abccea Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-19 18:17:56 +08:00
ca14b88b18 OEE重构完成 2026-03-19 18:17:08 +08:00
砂糖
10cb260a2b refactor(employeeInfo): 移除家庭住址列并添加转正时间列
移除不再需要的家庭住址列,同时添加转正时间列以显示员工转正信息
2026-03-19 17:59:13 +08:00
砂糖
2c4f5b3e53 feat(钢卷异常): 重构钢卷异常表单组件并集成到各相关页面
新增AbnormalForm组件统一管理钢卷异常表单,减少代码重复
在合卷、分条、打字等页面添加异常信息管理功能
优化异常信息展示样式,支持添加、编辑和删除操作
2026-03-19 17:50:37 +08:00
砂糖
f4518be3f4 feat: 更新审批逻辑、分页功能及表格列显示
fix(leave): 将请假天数审批阈值从3天改为72小时
feat(coilTable): 添加分页大小和当前页改变处理方法
refactor(column): 简化发货相关表格列标题
feat(eqp): 在备件和辅料管理中添加机组筛选和显示
2026-03-19 16:14:56 +08:00
35cd5b03ff feat(eqp): 添加机组字段支持
- 在EqpAuxiliaryMaterial实体类中添加unitTeam字段
- 在EqpAuxiliaryMaterialBo业务对象中添加unitTeam字段
- 更新EqpAuxiliaryMaterialMapper.xml映射文件添加unitTeam映射
- 在EqpAuxiliaryMaterialServiceImpl服务实现中添加机组查询条件
- 在EqpAuxiliaryMaterialVo视图对象中添加unitTeam字段并配置Excel导出
- 在EqpSparePart实体类中添加unitTeam字段
- 在EqpSparePartBo业务对象中添加unitTeam字段
- 更新EqpSparePartMapper.xml映射文件添加unitTeam映射和查询字段
- 在EqpSparePartServiceImpl服务实现中添加机组查询条件
- 在EqpSparePartVo视图对象中添加unitTeam字段并配置Excel导出
2026-03-19 15:46:20 +08:00
f7b2d2c3bf Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-19 15:30:41 +08:00
1207072092 feat(wms): 新增用印审批功能
- 在审批API中添加按业务ID查询审批信息的方法
- 配置用印详情页面路由,支持通过业务ID查看用印详情
- 修改待办列表,为用印类型申请隐藏同意驳回按钮
- 在待办列表数据中添加业务ID字段,完善申请类型映射
- 更新审批服务接口和实现类,添加queryByBizId方法
- 重构用印详情页面,集成审批信息加载和权限校验逻辑
- 更新领域模型中的申请类型枚举,添加用印类型支持
- 完善审批任务服务,支持用印申请详情查询和申请人姓名显示
2026-03-19 15:30:28 +08:00
砂糖
5b6ad4796e feat(wms报表): 添加列设置功能并重构表格组件
引入可配置的列设置功能,允许用户自定义表格显示列
创建CoilTable通用组件替换原有表格实现
添加列设置对话框和默认列配置初始化逻辑
2026-03-19 15:08:04 +08:00
2a4fc70b72 feat(wms): 钢卷加工时添加异常信息
- 在 WmsMaterialCoilBo 中新增 abnormals 字段用于存储钢卷异常信息列表
- 注入 IWmsCoilAbnormalService 服务用于处理异常信息插入操作
- 在更新钢卷时同步插入关联的异常信息记录
- 在分卷操作中为子钢卷插入对应的异常信息
- 在合卷操作中为新钢卷插入合并的异常信息
- 在创建子钢卷时同时插入其异常信息记录
2026-03-19 11:52:35 +08:00
7f35c77590 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-19 10:54:38 +08:00
fe164edae1 feat(wms): 消耗报表拿到完成时间
- 在WmsMaterialCoilBo中新增actionIds字段用于存储操作记录ID列表
- 在WmsMaterialCoilVo中新增actionCompleteTime字段用于显示操作完成时间
- 修改listByPost接口支持通过actionIds查询钢卷数据并关联完成时间
- 添加对wms_coil_pending_action表的查询逻辑以获取钢卷ID和完成时间映射
- 实现actionIds解析、过滤和转换为Long类型的处理逻辑
- 添加coilPendingActionService和coilPendingActionMapper依赖注入
2026-03-19 10:54:21 +08:00
砂糖
d918ed2496 feat(员工信息): 添加转正和在情况筛选功能并增强员工信息管理
refactor(员工信息): 重构员工转正页面,增加更多查询条件和信息展示
feat(报表): 为合并报表添加规格计算功能
2026-03-19 10:33:53 +08:00
砂糖
9c9f2fa84d fix: 修改O卷标签并添加禁用O卷功能
更新优品卷标签为O卷,同时在CoilSelector组件中添加disableO属性以禁用O卷选择
在发货单相关组件中设置disableO为true,防止选择O卷
2026-03-18 18:14:29 +08:00
砂糖
fbe2340423 feat(wms报表): 新增各仓库的损耗、出库及日报表等组件
添加镀铬、拉矫、脱脂和双机架仓库的损耗报表、出库报表、日报表、月报表、年报表和班组报表组件
使用模板组件统一结构,根据不同仓库配置不同的actionTypes和queryParams
2026-03-18 17:07:20 +08:00
砂糖
dd32b86445 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-18 16:32:53 +08:00
砂糖
f46cee495a fix(wms): 修复酸轧判断条件格式错误
修复酸轧判断条件中的格式错误,移除多余的空行并添加括号以提升代码可读性
2026-03-18 16:32:50 +08:00
8df6ff1576 用印 2026-03-18 16:23:54 +08:00
砂糖
8f8729d2b2 feat(卷管理): 在技术页面添加优品卷标签页
添加优品卷标签页并设置默认激活,同时新增对应的查询参数配置
2026-03-18 16:05:54 +08:00
砂糖
0b451a9fb9 feat(报表): 添加宽度和厚度列并调整产品类型列宽
在合并报表页面中新增宽度和厚度显示列,同时将产品类型列的宽度从250调整为150以优化布局
2026-03-18 15:59:41 +08:00
砂糖
43d75de61f feat(wms报表): 添加宽度和厚度列并调整产品类型列宽
在团队、日、月、年和合并报表模板中,添加了宽度和厚度列,并将产品类型列的宽度从250调整为150,以优化表格布局并显示更多产品维度信息
2026-03-18 15:50:03 +08:00
砂糖
55af6de20b refactor(wms/report): 重构报表页面,提取公共组件和逻辑
将多个报表页面的公共逻辑提取到模板组件中,包括:
1. 创建out.vue和loss.vue作为基础模板
2. 重构zha.vue、zinc.vue等页面使用模板组件
3. 统一处理规格解析逻辑,添加宽度和厚度显示列
4. 优化仓库选择和查询参数处理
2026-03-18 15:41:09 +08:00
砂糖
69d2c4acc3 fix(hrm): 将请假时长单位从天改为小时
修改所有相关组件中的请假时长显示单位,从"天"改为"小时",包括图表、表格和表单中的标签。同时调整时间差计算逻辑,直接计算小时数而非天数。
2026-03-18 13:36:51 +08:00
砂糖
49331dcc24 feat(员工管理): 新增员工转正、转岗和离职功能
- 添加员工转正API和页面
- 新增员工转岗功能及相关API和页面
- 实现员工离职功能及相关API和页面
- 在员工信息页面添加在职天数显示
- 调整接收报表页面分页大小
- 完善员工入职补录表单
2026-03-18 13:09:40 +08:00
8fe459dae5 feat(wms): 添加员工转岗功能
- 在IWmsEmployeeTransferService中新增employeeTransfer方法
- 在WmsEmployeeTransferController中添加transfer接口
- 实现WmsEmployeeTransferServiceImpl中的员工转岗业务逻辑
- 添加事务注解确保数据一致性
- 在查询方法中关联员工信息表获取完整数据
- 验证员工状态确保在职员工才能转岗
- 记录转岗前后的部门和岗位信息
- 更新WmsEmployeeTransferVo以包含员工信息字段
2026-03-18 11:03:43 +08:00
7dcb779412 feat(employee): 添加员工转正状态管理功能
- 在WmsEmployeeInfo实体类中新增isRegular和regularTime字段
- 在WmsEmployeeInfoBo业务对象中添加转正相关属性定义
- 配置MyBatis映射文件中的转正状态字段映射关系
- 实现员工服务层中的转正状态查询条件过滤逻辑
- 在WmsEmployeeInfoVo视图对象中添加转正状态返回字段
2026-03-18 10:56:27 +08:00
70097733f6 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-18 10:53:22 +08:00
f7fdc03b5b feat(wms): 添加员工转正接口
- 在员工异动类型中新增转正选项(类型值为2)
- 更新数据库实体和业务对象中的异动类型定义
- 实现员工转正业务逻辑,包括状态验证和数据更新
- 添加转正API接口和相应的控制器方法
- 更新相关注释和文档以反映新的转正功能
- 修改Excel导出功能以支持转正类型的显示
2026-03-18 10:53:14 +08:00
砂糖
891f83f743 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-18 10:24:33 +08:00
砂糖
8e6f89ee55 feat(生产时间): 添加生产开始时间自动填充功能
在卷材操作的各个页面中,自动将待操作任务的创建时间设置为生产开始时间。同时在生产面板中新增生产时间相关字段的显示列
2026-03-18 10:24:28 +08:00
9c11ce7c9d Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-18 10:06:57 +08:00
8414d48dc8 feat(wms): 添加员工转岗记录管理功能
- 创建员工转岗记录实体类 WmsEmployeeTransfer
- 实现员工转岗记录服务接口 IWmsEmployeeTransferService
- 添加员工转岗记录控制器 WmsEmployeeTransferController
- 创建员工转岗记录数据访问层 WmsEmployeeTransferMapper
- 实现员工转岗记录业务逻辑 WmsEmployeeTransferServiceImpl
- 定义员工转岗记录业务对象 WmsEmployeeTransferBo 和视图对象 WmsEmployeeTransferVo
- 配置员工转岗记录 MyBatis 映射文件
- 实现员工转岗记录的增删改查功能
- 添加员工转岗记录导出功能
2026-03-18 10:06:48 +08:00
砂糖
3d6391bf32 feat(钢卷管理): 新增生产时间记录及耗时计算功能
添加TimeInput组件用于时间输入,并在钢卷合并、分条、打字、分步操作中增加生产开始/结束时间字段
实现生产耗时自动计算功能,支持显示xx天xx小时xx分钟格式
在基础面板中增加生产时间修正对话框,支持批量修改时间
2026-03-17 18:01:46 +08:00
砂糖
3c9f82add4 feat: 添加开始时间列并优化发货单打印功能
- 在coil面板的do.vue中添加开始时间列
- 新增widthEdit.vue组件用于宽度编辑
- 修改MaterialTag.vue中的标签显示为厂家名称
- 合并发货单打印功能,添加吨数统计显示
2026-03-17 17:07:49 +08:00
砂糖
b6387a53d8 feat(钢卷异常): 重构异常记录功能,增加开始/结束位置字段
refactor(发货单): 添加发货计划选择功能

feat(报表): 新增合并报表页面,支持投入产出钢卷统计

style: 移除多余的空格和注释代码
2026-03-17 14:52:54 +08:00
3c745b8ce4 feat(wms): 更新钢卷异常实体类增加缺陷详细信息字段
- 将lengthCoord字段替换为length、startPosition、endPosition三个精确数值字段
- 新增defectType缺陷类型字段用于详细分类(如划痕、边裂、厚度超标等)
- 新增defectRate缺陷率字段用于记录百分比数据
- 新增defectWeight缺陷重量字段用于记录具体重量值
- 新增mainMark主标记字段标识是否为主要缺陷
- 新增wholeCoilMark整卷标记字段标识是否影响整卷
- 更新Mapper映射文件适配新的实体字段结构
- 更新查询条件构造器支持新增字段的筛选功能
- 更新VO类Excel导出配置适配新的业务字段需求
2026-03-17 13:59:13 +08:00
76aff879c7 feat(WmsMaterialCoil): 添加生产时间和预留宽度字段支持
- 在 WmsMaterialCoil 实体类中新增生产开始时间、生产结束时间、生产耗时和预留宽度字段
- 在 WmsMaterialCoilBo 业务对象中添加对应的生产时间相关字段和格式化注解
- 在 WmsMaterialCoilVo 视图对象中增加生产时间字段和 Excel 导出支持
- 更新 MyBatis 映射文件中的结果映射和查询字段列表
- 在服务实现类中添加生产时间相关的查询条件过滤逻辑
2026-03-17 13:54:17 +08:00
7632c63185 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-17 10:07:13 +08:00
f8b2d2458c refactor(WmsFurnacePlanService): 移除逻辑库位禁用功能
- 删除了设置仓库为禁用状态的相关代码
- 移除了updateById调用以禁用指定warehouseId的仓库记录
- 简化了炉计划服务中的仓库状态管理逻辑
2026-03-17 10:05:28 +08:00
砂糖
347ec849ae feat(annealPlan): 添加钢卷绑定信息更新功能并优化界面
- 新增updateAnnealPlanCoil API用于更新钢卷绑定信息
- 移除加入计划按钮的状态限制
- 将实际库位改为钢卷去向选择器并添加钢卷层级输入
- 实现钢卷信息变更自动保存功能
- 按层级排序钢卷列表
- 完善完成处理时的库位校验逻辑
2026-03-17 09:48:17 +08:00
0aee6cecaa feat(wms): 添加退火计划钢卷关系管理功能
- 创建了IWmsFurnacePlanCoilService接口定义CRUD操作方法
- 实现了WmsFurnacePlanCoilServiceImpl业务逻辑处理类
- 添加了WmsFurnacePlanCoilController REST控制器提供API接口
- 配置了WmsFurnacePlanCoilMapper.xml数据库映射文件
- 实现了分页查询、新增、修改、删除和导出功能
- 集成了数据验证、日志记录和重复提交防护机制
2026-03-17 09:23:28 +08:00
砂糖
65d7e4a1fd feat(wms): 新增退火计划控制页面并优化性能展示
refactor(anneal): 重构退火计划页面布局和交互逻辑
style(anneal): 调整表单元素换行和表格列宽
2026-03-16 17:54:56 +08:00
砂糖
53692fd024 fix(EmployeeSelector): 修复员工选择器中重复员工的问题
因为员工可能出现重名情况,添加去重逻辑确保selectedEmployees中每个员工的keyField是唯一的
2026-03-16 17:32:28 +08:00
砂糖
b6b460386e refactor(wms): 移除导出文件名中的日期参数
文件名已使用时间戳保证唯一性,移除冗余的日期参数以简化命名
2026-03-16 17:06:26 +08:00
砂糖
cff26eaac7 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-16 16:58:08 +08:00
砂糖
bb78fba24e feat(wms/report): 新增合并报表模板及多个物料类型页面
添加合并报表通用模板组件merge.vue,包含统计信息展示、明细查询及导出功能
创建acid/duge/zinc/lajiao/shuang/tuozhi等物料类型的报表页面,通过actionType区分不同物料类型
2026-03-16 16:58:06 +08:00
95987d352c refactor(wms): 完成退火选逻辑库位而不是实际库位
- 修改 WmsFurnacePlanLocationItemBo 中的 actualWarehouseId 字段为 warehouseId
- 更新验证注解消息从"实际库位"改为"逻辑库位"
- 修改 occupyActualWarehouse 方法为 occupyWarehouse 并调整参数
- 替换 ActualWarehouse 相关操作为 Warehouse 操作
- 在占用库位时同步更新 wmsfurnace_plan_coil 表中的逻辑库区信息
- 更新服务实现中所有相关字段引用和方法调用
2026-03-16 16:45:52 +08:00
4c26e708da Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-16 15:58:19 +08:00
10a28f8c62 feat(analytics): 更新炉火实绩功能以支持详细的钢卷信息以及层级和库区信息
- 在 WmsAnnealPerformanceDetailVo 中新增逻辑库区ID、库区名称、炉火层级和钢卷列表字段
- 修改 WmsAnnealPerformanceMapper.xml 查询语句以优化性能并移除冗余字段
- 在 WmsAnnealPerformanceServiceImpl 中实现批量查询逻辑,包括钢卷关联、库区信息和钢卷详情
- 新增仓库映射器和服务依赖注入以支持数据获取
- 在 WmsMaterialCoilVo 中添加炉火层级字段以存储钢卷在炉内的层数信息
- 实现按计划ID分组处理钢卷数据并设置相应的库区和层级属性
2026-03-16 15:58:10 +08:00
砂糖
71e2467572 feat(wms): 优化退火炉界面和修复钢卷合卷功能
- 重构退火炉界面为卡片式布局,增加可视化状态展示
- 修复钢卷合卷API路径和方法,添加操作ID和类型参数
- 移除标签打印中冗余的itemName字段
- 修复退火计划物料卡片布局自适应问题
2026-03-16 15:38:11 +08:00
砂糖
e5821a3f68 fix(wms): 提高html2canvas缩放比例并优化发货单页面布局
调整wayBill和wayBill2组件的html2canvas缩放比例从3提高到6,以获得更清晰的打印效果
重构发货单页面布局,将表格和分页组件放入滚动容器,表单区域设为固定位置
2026-03-16 15:34:53 +08:00
d8821db4b2 refactor(WmsMaterialCoilService): 优化合卷操作的待办事项处理流程
- 调整代码执行顺序,先创建待操作记录再执行合卷操作
- 引入中间步骤收集原始钢卷与操作ID的映射关系
- 修改待办事项状态更新时机,在合卷完成后统一更新为已完成
- 为新创建的待办事项设置初始状态为处理中而不是直接完成
- 修复空指针检查逻辑,同时验证coilId和actionType非空
- 重构操作记录更新流程,确保在合卷成功后再更新processedCoilIds
2026-03-16 15:29:05 +08:00
a51c5a4d88 feat(wms): 添加钢卷退火计划中的逻辑库区和炉火层级功能
- 在 WmsFurnacePlanCoil 实体类中新增逻辑库区ID和炉火层级字段
- 在 WmsFurnacePlanCoilBo 中添加对应的业务对象属性
- 在 WmsFurnacePlanCoilVo 中增加Excel导出相关字段和映射
- 更新 WmsFurnacePlanServiceImpl 服务实现类中的依赖注入
- 实现逻辑库区信息的查询和名称设置功能
- 将逻辑库区ID和炉火层级信息保存到数据库中
2026-03-16 14:47:02 +08:00
275f6181ce feat(wms): 在操作记录中添加合卷之后的钢卷
- 在 IWmsMaterialCoilService 中新增 mergeCoils 方法实现合卷操作
- 扩展 WmsMaterialCoilBo 类添加 actionId、actionType 和 mergedCoilId 字段
- 在 WmsMaterialCoilController 中添加 /merge 接口支持合卷新功能
- 实现合卷逻辑为 newCoils 中每个被合的卷添加 actionId 和 actionType
- 支持通过 actionId 更新操作记录状态并设置完成时间
- 实现合卷后新钢卷 ID 的返回和操作记录的自动创建更新
2026-03-16 14:10:17 +08:00
58653da48b Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-16 13:20:50 +08:00
f84168396c feat(wms): 添加加工后钢卷ID字段支持
- 在WmsCoilPendingAction实体类中新增processedCoilIds字段
- 在WmsCoilPendingActionBo业务对象中添加processedCoilIds属性
- 更新WmsCoilPendingActionMapper.xml映射文件中的结果映射
- 在WmsCoilPendingActionServiceImpl服务实现中添加模糊查询条件
- 在WmsCoilPendingActionVo视图对象中增加processedCoilIds字段
2026-03-16 13:20:40 +08:00
砂糖
3b26b060db Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-16 13:15:57 +08:00
砂糖
b27f246fa0 feat(钢卷): 重构标签打印逻辑并添加合卷操作功能
重构钢卷标签打印逻辑,提取公共方法到coilPrint.js
添加合卷操作区功能,支持200-299操作类型
为合卷表单添加验证规则
2026-03-16 13:15:54 +08:00
e84e41b20f Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-16 10:56:55 +08:00
a22d79b858 feat(wms): 入炉钢卷不能被操作
- 在退火计划取消时将钢卷独占状态设置为2(退火中)
- 在实际库位占用时将钢卷独占状态设置为0(未独占)
- 扩展独占状态枚举值:0=未独占,1=单步分卷中,2=退火中
- 修改钢卷独占状态检查方法为获取完整状态值
- 增强钢卷操作权限验证,支持多种独占状态判断
2026-03-16 10:56:39 +08:00
砂糖
d613058104 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-16 10:41:53 +08:00
砂糖
c8f576dea3 refactor(wms): 优化合卷逻辑和员工选择组件
- 移除合卷流程中的箭头图示和最小源卷数量限制
- 修改处理时间显示为完成时间并更新相关字段
- 优化员工选择组件的前端筛选和取消操作处理
2026-03-16 10:41:50 +08:00
4d21c43416 refactor(KLPApplication): 移除Flyway自动配置 删除数据库表
- 移除了对FlywayAutoConfiguration的排除配置
- 恢复默认的Spring Boot自动配置行为
- 简化了应用程序启动配置
2026-03-16 09:41:12 +08:00
8972a45fcc refactor(database): 移除Flyway数据库迁移配置
- 从application.yml中移除flyway相关配置项
- 从application-dev.yml中移除flyway相关配置项
- 从application-prod.yml中移除flyway相关配置项
- 将EmsEnergyConsumptionController中的StringUtils替换为Spring工具类
- 删除FlywayConfig配置类及其命令行启动器实现
- 从klp-common模块的pom.xml中移除flyway依赖
- 从根pom.xml中移除flyway核心依赖
2026-03-16 09:29:53 +08:00
砂糖
319553702e Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-16 09:05:16 +08:00
砂糖
f2c7e20eb6 feat(标签打印): 添加钢卷标签打印功能并调整标签样式
- 在入库页面添加打印按钮及处理逻辑
- 修改标签样式,使用黑体并设置黑色字体
- 添加隐藏的label-render组件用于打印
2026-03-16 09:05:12 +08:00
bd565aba8e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-15 15:10:38 +08:00
5487f04cf5 完成wip-退火模块 2026-03-15 15:10:17 +08:00
砂糖
3ff82f85dc Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-15 11:03:53 +08:00
砂糖
5a3ff60fca refactor(wms): 优化物料标签显示布局并调整样式
- 将仓库名称从输入框改为直接显示文本
- 移除未使用的库区和班组输入框
- 新增规格和班组显示行
- 调整值单元格的字体加粗样式
2026-03-15 11:03:49 +08:00
9a645100df 更新wip-退火 缺少实际库区选择,重新占据库位能力 2026-03-14 18:39:19 +08:00
砂糖
8c2b85edf1 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-14 18:09:45 +08:00
砂糖
c30c755df0 feat(合卷操作): 扩展合卷操作类型范围支持200-299
fix(文件上传): 添加docx到默认支持文件类型列表
refactor(员工信息): 统一部门字段命名并修复备注字段
feat(酸轧合卷): 实现酸轧合卷页面功能
feat(员工入职): 新增员工入职页面及功能
style(合卷页面): 优化合卷页面布局和样式
2026-03-14 18:07:30 +08:00
7740531fc5 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-14 15:16:40 +08:00
8cc5549850 更新快速排查功能 2026-03-14 15:06:18 +08:00
砂糖
27dbed7b35 feat(wms): 新增员工异动管理功能并优化员工信息界面
refactor(员工信息): 重构员工信息界面,使用下拉选择替代输入框
feat(员工异动): 新增员工入职和离职功能及相关API
fix(合卷): 修复扫码日期格式化问题
style(交付): 统一结算类型为卷重结算
2026-03-14 15:00:02 +08:00
9b82d7230a feat(wms): 新增员工入职离职功能
- 在 IWmsEmployeeChangeService 中添加 employeeEntry 和 employeeLeave 方法
- 扩展 WmsEmployeeChangeBo 类增加员工详细信息字段
- 在 WmsEmployeeChangeController 中添加入职和离职接口
- 实现 WmsEmployeeChangeServiceImpl 的入职离职业务逻辑
- 集成员工信息查询功能并在查询结果中关联员工详情
- 添加事务管理确保数据一致性操作
2026-03-14 10:40:44 +08:00
0091a46811 feat(employee): 添加员工离职状态字段
- 在WmsEmployeeInfo实体类中添加isLeave字段
- 在WmsEmployeeInfoBo业务对象中添加isLeave字段
- 在WmsEmployeeInfoVo视图对象中添加isLeave字段
- 在MyBatis映射文件中添加isLeave字段映射
- 在查询条件构造器中添加离职状态筛选逻辑
2026-03-14 09:57:31 +08:00
e0b4d16701 feat(wms): 添加员工异动管理功能
- 创建员工异动实体类 WmsEmployeeChange,包含异动记录主键、员工信息关联、异动类型等字段
- 定义员工异动业务对象 WmsEmployeeChangeBo 和视图对象 WmsEmployeeChangeVo
- 实现员工异动服务接口 IWmsEmployeeChangeService 及其具体实现类 WmsEmployeeChangeServiceImpl
- 添加员工异动数据访问层 WmsEmployeeChangeMapper 及对应的 MyBatis XML 映射文件
- 开发员工异动控制器 WmsEmployeeChangeController,提供增删改查及导出功能
- 集成分页查询、数据校验、重复提交防护等通用功能
2026-03-14 09:54:40 +08:00
砂糖
80640b5b39 feat(钢卷管理): 添加钢卷追溯功能并调整次品标签顺序
在correct.vue中添加钢卷追溯功能,包括追溯对话框和API调用
调整scrap.vue中次品标签的位置,使其显示在第一个标签页
在correct.vue中新增逻辑库区查询条件
2026-03-13 17:43:24 +08:00
砂糖
8f1e8c9381 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-13 11:25:04 +08:00
砂糖
60576864bf fix(coil): 修复工序面板显示及仓库选择逻辑
修复镀锌工序面板中无进行中工序的显示问题,使用动态label替代硬编码
修复currentTab为0时仓库ID未清空的问题
添加纵剪分条工序的仓库选项并更新特殊分割逻辑
2026-03-13 11:25:00 +08:00
砂糖
f4be9312c3 feat(钢卷修正): 添加钢卷类型筛选和强制入库功能
- 在搜索栏新增钢卷类型下拉选择框,支持按不同类型筛选钢卷
- 为未入库钢卷添加强制入库按钮及处理逻辑
- 根据选择的钢卷类型动态调整查询参数
2026-03-13 11:24:50 +08:00
56b05a02a1 fix(wms): 解决已发货钢卷占用实际库区的问题
- 添加了对已发货钢卷的状态检查,防止其占用实际库区
- 实现了已发货钢卷释放旧库区的功能
- 优化了库区状态更新逻辑,增加了对-1标识的判断
- 在钢卷占用库区时添加了发货状态验证

refactor(da): 优化酸轧OEE月度任务初始化方式

- 将@PostConstruct替换为ApplicationRunner接口实现
- 添加@Async注解实现异步执行,避免阻塞项目启动
- 重构了启动时OEE汇总计算的执行时机和方式
2026-03-13 10:58:59 +08:00
64d1d4683b feat(mapper): 添加根据操作ID和删除标志查询功能
- 在WmsCoilPendingActionMapper接口中新增selectByActionIdAndDelFlag方法
- 在WmsCoilPendingActionMapper.xml中添加对应的SQL查询语句
- 修改WmsCoilPendingActionServiceImpl中的查询逻辑使用新方法
- 移除原有的QueryWrapper查询方式并导入UpdateWrapper依赖
2026-03-12 17:24:14 +08:00
93e3a71c50 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-12 17:05:31 +08:00
bfba3ce49a feat(warehouse): 添加库位排序号修正功能并优化钢卷查询排序
- 在 IWmsActualWarehouseService 中新增 fixSortNoByParentId 方法用于修正库位排序号
- 在 WmsActualWarehouseController 中新增 /fixSortNo/{parentId} 接口
- 实现 WmsActualWarehouseServiceImpl 中的 fixSortNoByParentId 业务逻辑
- 添加正则表达式处理库位编码的排序键解析
- 新增 WmsMaterialCoilMapper 的 selectVoPagePlusOrderBy 查询方法
- 重构 WmsMaterialCoilMapper.xml 中的排序辅助字段查询逻辑
- 修改 WmsMaterialCoilServiceImpl 中的分页查询逻辑以支持排序功能
2026-03-12 17:05:22 +08:00
砂糖
3e9a08308f feat(卷材管理): 添加实测长度和实测宽度字段
在卷材管理的多个组件和视图中添加实测长度(actualLength)和实测宽度(actualWidth)字段,包括显示、表单输入和数据模型。这些字段用于记录卷材的实际测量尺寸,提高数据记录的准确性。
2026-03-12 17:03:02 +08:00
e589bb6496 feat(mapper): 添加删除标志更新功能到WmsCoilPendingActionMapper
- 新增updateDelFlag方法用于直接更新删除标志
- 绕过@TableLogic注解限制实现逻辑删除
- 添加方法参数验证和返回值定义
- 完善JavaDoc注释说明方法
2026-03-12 16:51:54 +08:00
db8696f9e7 feat(wms): 添加钢卷待操作记录恢复功能
- 在restoreAction方法中添加actionId参数非空验证
- 添加updateDelFlag自定义SQL方法绕过@TableLogic注解限制
- 修改restoreAction逻辑使用新的updateDelFlag方法更新删除标志
- 优化异常处理使用ServiceException替换RuntimeException
- 修正查询条件将del_flag检查从2改为1表示已删除状态
2026-03-12 16:48:16 +08:00
2b213f7475 feat(wms): 添加钢卷实测尺寸功能并优化库位排序
- 在WmsMaterialCoil实体类中新增actualLength和actualWidth字段
- 在WmsMaterialCoilBo业务对象中添加实测长度宽度属性
- 在WmsMaterialCoilVo视图对象中增加Excel导出注解配置
- 更新MyBatis映射文件添加实测尺寸数据库字段映射
- 实现根据实测长度宽度的查询过滤功能
- 优化库位排序逻辑,增加全局交错排序辅助字段
- 添加库位层级排序键和库位ID键用于精确排序控制
2026-03-12 16:32:09 +08:00
0abec84a2e feat(domain): 添加删除逻辑注解到待处理
- 在WmsCoilPendingAction实体的delFlag字段上添加@TableLogic注解
- 实现软删除功能以支持数据恢复操作
2026-03-12 16:30:25 +08:00
砂糖
223a745991 feat(钢卷待操作): 新增还原已删除记录功能并优化查询
新增还原已删除钢卷待操作记录的功能,包括前后端接口实现。优化查询逻辑,支持查看已删除记录。调整页面操作状态显示为下拉选择,并增加删除/还原按钮的显示控制。同时修改多处报表页面的分页参数为9999以提高数据展示量。

修改删除标志查询条件,将已删除状态从1改为2以区分逻辑删除状态。在钢卷待操作页面增加"查看被删除操作"复选框,支持切换显示正常/已删除记录。
2026-03-12 16:23:45 +08:00
5f8ec04a17 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-12 14:29:40 +08:00
ae410d85e5 feat(wms): 添加钢卷待操作列表查询功能支持已删除记录
- 新增listPendingActionWithDeleted方法用于查询包含已删除记录的钢卷待操作列表
- 新增listDeletedPendingAction方法用于仅查询已删除的钢卷待操作列表
- 在WmsCoilPendingActionBo中添加includeDeleted字段支持三种查询模式
- 修改WmsCoilPendingActionServiceImpl实现支持includeDeleted参数的逻辑删除过滤
- 支持includeDeleted参数值为0(不包含已删除)、1(包含已删除)、2(仅查询已删除)三种模式
2026-03-12 14:29:28 +08:00
砂糖
016e5dc246 feat(钢卷管理): 新增钢卷物料添加功能并优化修正功能
将新增按钮从基础面板移至修正页面,并实现新增钢卷物料的功能
优化修正功能,根据操作类型动态显示标题
新增时隐藏创建时间和创建人字段
2026-03-12 11:49:46 +08:00
砂糖
c766904b45 feat(组件): 为DragResizeBox添加localStorage持久化功能
添加storageKey属性支持将位置和尺寸保存到localStorage
初始化时优先读取存储值,拖动结束后自动保存
同时优化了CoilSelector的钢卷地图显示逻辑
2026-03-12 10:41:19 +08:00
砂糖
3c96211cc5 feat(wms): 添加订单号显示并改进日期格式化功能
1. 在发货单组件中增加订单号显示,替换原有电话字段
2. 实现统一的日期格式化工具函数,修复参数冲突问题
3. 发货操作后自动添加待操作记录
4. 优化钢卷操作中的日期处理逻辑
2026-03-12 09:20:23 +08:00
砂糖
5b6286326b feat(HRM): 添加附件显示组件并优化表单逻辑
添加FileList组件用于显示附件列表
在请假和外出申请详情页中显示附件
优化审批部门选择逻辑,仅在新增时显示
修复请假申请编辑时的审批类型校验问题
2026-03-11 16:48:44 +08:00
砂糖
f561b4eb0b feat(审批): 添加撤回审批功能并优化审批状态显示
- 在approval.js中添加withdrawApproval API方法
- 在leave.vue和goout.vue中启用撤回按钮并调用新API
- 在todo/index.vue中优化审批状态显示逻辑
2026-03-11 16:03:14 +08:00
30a06d297b feat(approval): 添加审批撤销功能
- 在IWmsApprovalService中新增cancelApproval方法定义
- 在IWmsApprovalTaskService中新增deleteByApprovalId方法定义
- 在WmsApprovalController中新增cancelApproval接口
- 在WmsApprovalServiceImpl中实现撤销审批业务逻辑
- 在WmsApprovalTaskServiceImpl中实现按审批ID删除任务功能
- 添加撤销审批的权限验证和重复提交限制
- 实现审批状态校验和关联任务清理机制
2026-03-11 15:52:28 +08:00
70b9d620b2 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-11 15:21:37 +08:00
71c7876bf9 feat(wms): 添加审批流程按创建人筛选功能
- 在WmsApprovalServiceImpl中增加根据创建人筛选条件
- 使用StringUtils判断创建人参数是否为空避免查询异常
- 保持原有查询逻辑不变仅增加创建人筛选功能
- 按照创建时间倒序排序逻辑不受影响
2026-03-11 15:21:29 +08:00
砂糖
fb96148d1f feat(钢卷管理): 添加厂家原料卷号校验功能
在钢卷入库表单中,将厂家原料卷号设为必填项并添加远程校验逻辑,防止重复卷号入库
2026-03-11 15:10:17 +08:00
砂糖
8d73342e9e feat(wms): 添加镀锌纵剪分条原料库支持并扩展分条功能
扩展分条功能以支持更多工序类型,包括镀锌、脱脂、拉矫平整等。添加镀锌纵剪分条原料库选项,并改进分条按钮样式和操作流程。同时调整时间格式显示为更易读的形式。

新增镀铬工序分条支持,优化分条操作界面显示当前工序名称。修复分条列表加载逻辑,确保在操作类型有效时才进行加载。添加新的分条操作页面用于管理分条任务。
2026-03-11 14:52:59 +08:00
b61cea837a Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-11 14:18:19 +08:00
09c8b9cc4a feat(material): 钢卷特殊分卷功能新增操作类型参数
- 在IWmsMaterialCoilService接口中为startSpecialSplit方法添加actionType参数
- 在WmsMaterialCoilController控制器中接收前端传递的操作类型参数
- 在WmsMaterialCoilServiceImpl实现类中将操作类型参数传递给待处理动作对象
- 修改事务处理逻辑以支持动态操作类型设置
2026-03-11 14:18:11 +08:00
砂糖
aa286d66f2 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-11 13:10:14 +08:00
砂糖
6f6acf0c3c feat(发货单): 添加简单打印功能
新增简单打印功能按钮,支持选择不同打印模板。引入WayBill2组件作为简单打印模板,通过printType控制显示不同模板。
2026-03-11 13:10:11 +08:00
18bffc4325 feat(employee): 添加员工社保类型字段
- 在 WmsEmployeeInfo 实体类中新增 socialInsuranceType 字段
- 在 WmsEmployeeInfoBo 业务对象中新增 socialInsuranceType 字段
- 在 WmsEmployeeInfoVo 视图对象中新增 socialInsuranceType 字段
- 在 MyBatis 映射文件中添加社保类型字段映射配置
- 在查询条件构建器中添加社保类型筛选条件
2026-03-11 11:15:37 +08:00
12207aa421 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-11 11:15:08 +08:00
7679b0475a fix(wms): 修复待处理查询的时间字段改为更新时间
- 将查询条件从 update_time 修改为 complete_time 字段
- 确保开始时间和结束时间筛选使用正确的完成时间字段
2026-03-11 11:15:01 +08:00
砂糖
b6add4e739 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-11 10:47:52 +08:00
砂糖
e1fbb7805f feat(CoilSelector): 添加可拖拽库位视图和品质列显示
refactor(WarehouseInterlaced): 修复props格式问题
fix(DuGeTag): 修正电话号码格式
2026-03-11 10:47:49 +08:00
ba6b2e201f fix(wms): 解决钢卷删除时二维码状态未同步失效的问题
- 在删除合卷钢卷时将对应的二维码记录状态更新为失效
- 在删除子钢卷时将对应的二维码记录状态更新为失效
- 在删除普通钢卷时将对应的二维码记录状态更新为失效
- 确保钢卷删除后二维码无法继续使用避免重复操作
2026-03-11 10:42:58 +08:00
7133ac4225 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-11 09:14:23 +08:00
3afc296e40 feat(service): 扩展钢卷号重复检查功能支持厂家原料卷号
- 在 checkCoilNoDuplicate 方法中新增 supplierCoilNo 参数
- 添加厂家原料卷号重复检查逻辑并排除自身记录
- 更新重复类型判断增加 supplier 选项
- 完善返回结果包含厂家原料卷号重复状态
- 同步更新控制器层接口参数传递
- 修正方法注释文档说明新增参数和返回值字段
2026-03-11 09:14:13 +08:00
砂糖
a6efe02046 feat(透视表): 添加检查今日透视表是否存在的功能并优化空状态显示
添加checkCoilStatisticsSummaryExist接口检查今日是否已创建同类型透视表
在创建透视表前进行校验并提示用户是否覆盖
优化空状态显示为el-empty组件
2026-03-10 17:02:11 +08:00
1862908eb1 refactor(service): 修改统计记录检查方法返回类型
- 将 checkExistsByStatTypeToday 方法返回值从 Boolean 改为 Long
- 服务层实现中返回存在的记录ID,不存在则返回null
- 控制器接口同步更新返回类型和文档注释
- 优化查询逻辑直接返回记录ID而不是布尔值
2026-03-10 16:50:08 +08:00
9e5e7cf0af Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-10 16:28:17 +08:00
927cbf9586 feat(wms): 添加钢卷统计记录存在性检查功能
- 在服务接口中新增 checkExistsByStatTypeToday 方法用于检查当天指定类型统计记录的存在性
- 在控制器中新增 /checkToday 接口提供统计记录存在性检查服务
- 在服务实现类中实现具体的数据库查询逻辑,使用日期函数过滤当天数据
- 添加参数校验确保统计类型参数不为空
- 使用分页限制优化查询性能,仅返回是否存在标识
2026-03-10 16:28:07 +08:00
砂糖
da2caa1c46 fix(wms): 修复透视表数据展示和边料统计问题
修复透视表预览条件判断错误,将currentRow.summaryId改为liveData
修正边料统计接口调用错误,将listCoilTrimStatistics改为listMaterialCoil
添加可选链操作符处理可能为null的数据遍历
2026-03-10 16:18:21 +08:00
砂糖
6e909212bf feat(标签系统): 添加脱脂原料库标签类型并优化透视表功能
新增脱脂原料库标签类型6及相关组件TuoZhiTag
优化透视表功能,增加保存明细选项和导出功能
在标签渲染组件中添加对脱脂原料库类型的判断
更新相关API调用和UI交互逻辑
2026-03-10 15:38:22 +08:00
e937ff50f6 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-10 14:03:48 +08:00
891ec659de refactor(service): 修改钢卷统计汇总服务返回值类型
- 将 insertByBo 方法返回值从 Boolean 改为 WmsCoilStatisticsSummaryVo
- 更新控制器方法返回完整的业务对象而不是布尔值
- 实现新增后查询并返回完整的汇总记录信息
- 提供更丰富的新增操作响应数据
2026-03-10 14:03:38 +08:00
砂糖
730148e966 feat(wms): 新增导出功能并优化发货单显示
- 在base.vue中新增导出按钮和按库区排序选项
- 添加exportCoilWithAll API接口用于批量导出
- 在waybill.vue中新增showNewExport属性控制导出按钮显示
- 优化发货单页面显示,增加订单编号和备注显示
- 新增delivery/canuse页面用于展示可用钢卷
- 修复发货单修改时订单编号显示问题
2026-03-10 13:33:30 +08:00
8927760eb1 refactor(WmsMaterialCoilService): 替换查询包装器实现以优化导出功能
- 将 queryExportList 方法中的 buildQueryWrapper 替换为 buildQueryWrapperPlus
- 移除旧的 buildQueryWrapper 方法及其完整的查询条件构建逻辑
- 保留导出列表的基本查询和数据处理流程
2026-03-10 13:14:09 +08:00
328c46b8b8 refactor(material): 优化材料卷查询导出功能
- 将查询包装器构建方法从 buildQueryWrapper 替换为 buildQueryWrapperPlus
- 提升导出列表查询的数据完整性和准确性
2026-03-10 11:58:34 +08:00
c21f5dc813 feat(material): 添加钢卷物料完整字段导出功能
- 新增 WmsMaterialCoilAllExportVo 完整字段导出 VO 类
- 在 IWmsMaterialCoilService 中添加 queryExportListAll 方法
- 实现 queryExportListAll 方法支持完整字段导出
- 添加 /exportAll 接口支持完整字段导出
- 更新数据库查询映射添加班组和发货人字段
- 修改 WmsMaterialCoilExportVo 添加班组、业务用途等字段
- 调整导出接口注释从完整字段改为精简字段描述
2026-03-10 11:47:42 +08:00
c5089faaea Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-10 10:43:08 +08:00
f5017443d5 feat(wms): 新增卷材统计摘要附件功能
- 在 WmsCoilStatisticsSummary 实体中添加 attachmentInfo 字段
- 在 WmsCoilStatisticsSummaryBo 中添加 attachmentInfo 字段
- 在 WmsCoilStatisticsSummaryVo 中添加 attachmentInfo 字段
- 更新 Mapper XML 映射文件中的结果映射配置
- 修改 Vo 类继承 BaseEntity 基类
2026-03-10 10:42:57 +08:00
砂糖
f5904fa7f3 feat(wms): 添加次品标签页并优化钢卷统计表格
refactor(LeftList): 移除表单包装简化对话框结构
feat(Perspective): 新增宽度分类统计组件
perf(TrimStatistics): 优化表格宽度分组和过滤逻辑
2026-03-09 17:19:06 +08:00
砂糖
3f4ee0fce3 fix(wms): 更新镀锌原料标签判断逻辑并调整标签尺寸
修改多个文件中的镀锌原料仓库判断条件,增加新的仓库ID支持
调整DuGeTag.vue中标签的高度为100mm
更新base.vue中的标签类型判断逻辑,增加更多产品类型处理
修正DuGeTag.vue中的联系电话信息
2026-03-09 16:33:52 +08:00
砂糖
fef2f132d0 feat(wms): 添加冷硬卷板切边统计和类别宽度统计功能
- 新增冷硬卷板切边统计页面和API接口
- 新增类别宽度统计页面和API接口
- 修改发货单页面,调整列显示
- 扩展统计预览功能,支持多种统计类型展示
2026-03-09 16:07:07 +08:00
砂糖
1038b17a66 feat(标签打印): 添加镀铬卷标签类型支持
新增镀铬卷(DuGeTag)标签组件,包含对应的样式和布局
在do.vue和LabelRender/index.vue中增加镀铬卷类型判断逻辑
调整标签尺寸配置以适配镀铬卷标签规格
2026-03-09 15:24:04 +08:00
砂糖
bd5e0ac5e9 style(ZincRawTag): 调整标签样式和二维码大小
增加标签容器的内边距和值单元格的字体加粗
设置二维码组件的大小为80px
2026-03-09 14:52:58 +08:00
896c6b89ca Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-09 14:10:23 +08:00
a8e94ac34d feat(WmsMaterialCoilController): 更新统计接口URL路径
- 将trimStatistics接口路径从/trimStatistics修改为/statistics/trimStatistics
- 将categoryWidthStatistics接口路径从/categoryWidthStatistics修改为/statistics/categoryWidthStatistics
- 统一统计类接口的URL命名空间,增强API路径的一致性
2026-03-09 14:10:14 +08:00
砂糖
f389576c92 feat(标签打印): 增加镀锌原料标签类型并优化标签选择逻辑
- 在LabelRender组件中新增类型5的标签尺寸配置
- 修改ZincRawTag组件中下工序默认值为'镀锌卷'
- 在do.vue中新增标签尺寸映射并实现根据物料类型和仓库自动选择标签类型
2026-03-09 13:24:16 +08:00
砂糖
a2b90f3b72 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-09 13:06:33 +08:00
砂糖
693edbb543 feat(wms): 新增热轧原料库存透视功能及相关组件
添加热轧原料库存透视表API接口
创建透视表展示组件HotZhaRaw.vue和Perspective.vue
实现数据持久化功能及左右布局管理界面
优化锌卷标签显示样式及字段名称
2026-03-09 13:06:30 +08:00
194c481e12 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-09 10:46:54 +08:00
0050af7677 feat(wms): 添加钢卷类别统计——汇总统计
- 新增 CategoryWidthRawVo 和 CategoryWidthStatisticsVo 数据传输对象
- 在 IWmsMaterialCoilService 中添加 getCategoryWidthStatistics 方法定义
- 实现 WmsMaterialCoilController 的 categoryWidthStatistics 接口
- 添加 WmsMaterialCoilMapper 的 selectCategoryWidthStatistics 查询方法
- 实现 WmsMaterialCoilServiceImpl 中的 getCategoryWidthStatistics 业务逻辑
- 在 XML 映射文件中添加类别宽度统计的 SQL 查询语句
2026-03-09 10:46:22 +08:00
砂糖
d3da84f65e fix: 修复产线能力查询参数错误及调整分页默认值
修复产线能力查询时lineId参数传递错误的问题,增加参数校验
调整分页组件默认的pageSizes选项,增加10的选项
修改物料线圈查询状态参数为0
优化线圈吞吐记录展示方式,改为行点击触发
移除用餐记录中不必要的部门字典依赖
2026-03-09 10:34:05 +08:00
砂糖
c532d7f753 feat(标签打印): 添加镀锌原料标签组件及显示逻辑
新增 ZincRawTag 组件用于显示镀锌原料标签,并在特定仓库条件下自动选择该标签类型。标签包含冷卷号、热卷号、规格等字段,并支持二维码显示和打印适配。
2026-03-09 10:33:17 +08:00
7736ac3311 完成排产(测试过了) 2026-03-08 16:02:44 +08:00
b660ddcc3e refactor(WmsMaterialCoilService): 移除废弃的厚度分组统计逻辑
- 删除了基于修剪需求的厚度分组统计代码
- 移除了 CoilTrimStatisticsVo 和 TrimWidthStatisticsVo 的构建逻辑
- 保留了净边和毛边列表的获取功能
- 简化了数据处理流程并提高代码可读性
2026-03-07 15:57:42 +08:00
e6c588af63 feat(wms): 添加钢卷生产统计汇总持久化功能
- 创建了WmsCoilStatisticsSummary实体类用于数据持久化
- 定义了IWmsCoilStatisticsSummaryService服务接口及其实现
- 开发了WmsCoilStatisticsSummaryController控制器提供REST API
- 实现了数据查询、新增、修改、删除等基本CRUD操作
- 集成了分页查询和导出Excel功能
- 添加了数据验证和业务逻辑处理机制
- 配置了MyBatis映射文件和数据库表结构映射
2026-03-07 15:43:54 +08:00
7a78ad3eb7 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-07 14:37:25 +08:00
db379748f2 feat(wms): 新增第三个报表统计——冷硬卷统计
- 在IWmsMaterialCoilService中添加getCoilTrimStatistics方法
- 在WmsMaterialCoilController中新增trimStatistics接口
- 在WmsMaterialCoilMapper中添加selectCoilTrimStatistics查询方法
- 在WmsMaterialCoilMapper.xml中实现切边统计数据SQL查询
- 在WmsMaterialCoilServiceImpl中实现切边统计业务逻辑
- 新增CoilTrimRawVo、CoilTrimStatisticsVo和TrimWidthStatisticsVo数据传输对象
- 按厚度、宽度、切边要求(净边/毛边)统计钢卷数量和重量
- 实现数据分组和排序功能,支持前端展示需求
2026-03-07 14:37:12 +08:00
砂糖
44013170f5 feat(wms/coil): 添加业务目的和关联订单功能
在基础面板中添加业务目的下拉选择和关联订单开关功能,并创建两个新的视图组件分别展示这些功能。同时更新字典数据以支持业务目的选项。
2026-03-07 14:18:30 +08:00
e5acc06e1c feat(WmsRawMaterialMapper): 添加原材料查询过滤条件
- 在左连接中增加data_type和status条件过滤
- 添加原材料名称模糊匹配查询功能
- 优化查询逻辑以提高数据筛选准确性
2026-03-07 11:39:37 +08:00
71159a496b feat(domain): 添加材料卷材业务用途和订单关联字段
- 在 WmsMaterialCoil 实体类中新增 businessPurpose 和 isRelatedToOrder 字段
- 在 WmsMaterialCoilBo 业务对象中同步添加对应字段
- 在 WmsMaterialCoilVo 视图对象中添加相应属性定义
- 更新 MyBatis 映射文件中的查询字段和条件过滤逻辑
- 实现在查询条件中支持按业务用途和订单关联状态进行筛选
2026-03-07 11:28:39 +08:00
141d0a1c4e Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-07 10:29:46 +08:00
e5147564ce feat(wms): 历史钢卷不允许占用实际库区
- 实现历史钢卷(dataType=0)禁止修改实际库区的业务规则
- 当原钢卷为历史钢卷时阻止实际库区ID的更新操作
- 添加置空(-1)判断避免误操作历史钢卷库区占用
- 抛出运行时异常提示历史钢卷不允许占用实际库区
2026-03-07 10:29:36 +08:00
砂糖
273d7c44b7 feat(wms/coil): 新增按名称查询钢卷功能并优化产品信息展示
添加镀锌卷、热轧卷、冷轧卷、冷硬卷的按名称查询页面组件
在产品信息和原材料信息展示中增加镀层信息显示
移除base.vue中未使用的BomInfoMini组件
优化DrillDownTable.vue的代码结构
新增ByName.vue作为通用查询面板
2026-03-07 10:24:28 +08:00
砂糖
4fdddac389 feat(wms): 新增员工报餐日历页面
添加员工报餐日历功能页面,包含月份切换、餐型和部门筛选功能,展示每日报餐人数统计
2026-03-06 17:22:18 +08:00
砂糖
3afac814c4 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-06 15:23:18 +08:00
砂糖
cbfea329f0 fix(wms): 修复钢卷入库时库区操作记录未正确创建的问题
当钢卷实际库区存在时,确保正确创建库区操作记录并添加入库备注
2026-03-06 15:23:12 +08:00
5b0e35ce03 fix(wms): 修复钢卷发货出库操作日志记录逻辑
- 调整操作日志记录位置,确保仅在仓库更新成功时才记录日志
- 添加oldActualWarehouseId非空检查条件
- 优化代码执行流程,避免无效的日志记录操作
2026-03-06 14:57:01 +08:00
砂糖
e3727abebf fix(wms): 调整运单表格列宽以匹配Web端显示
修改Excel导出和页面表格的列宽配置,使两者显示一致。主要调整了第2列和第5列的宽度。
2026-03-06 14:41:48 +08:00
砂糖
a024be0858 feat(wms): 添加钢卷吞吐记录功能及优化日志查询
- 新增根据钢卷ID查询操作记录的API接口
- 在钢卷管理页面添加吞吐记录查看功能
- 优化日志表格组件,支持按业务类型和出入库类型筛选
- 增加日志删除功能
- 调整ActualWarehouseSelect组件支持清除输入
2026-03-06 13:04:17 +08:00
bc99d985f5 feat(wms): 添加按钢卷ID查询操作记录功能
- 在 IWmsCoilWarehouseOperationLogService 中新增 queryByCoilId 方法
- 在 WmsCoilWarehouseOperationLogController 中新增 /byCoilId 接口
- 在 WmsCoilWarehouseOperationLogServiceImpl 中实现按钢卷ID查询逻辑
- 实现关联查询钢卷信息和库区信息的功能
- 支持按操作类型、出入库类型、时间范围进行筛选
- 将原有仓库ID查询接口的参数改为可选参数
2026-03-06 11:41:07 +08:00
1f6b3a9ace fix(wms): 修复钢卷库区绑定清理逻辑
- 移除注释掉的库区绑定清理代码
- 将库区绑定清理逻辑移到新记录插入后执行
- 添加对实际库区ID为-1的条件判断避免无效操作
- 修复clearActualWarehouseBinding方法中的空指针检查逻辑
2026-03-06 11:17:30 +08:00
7bb102a17f fix(wms): 优化仓库操作日志查询和钢卷库区绑定逻辑
- 修改查询条件,当operationType和inOutType为空时不添加到查询条件中
- 简化钢卷库区变更的日志记录逻辑,移除-1置空的特殊处理分支
- 注释掉实际库区ID为-1时清空钢卷库区绑定的相关代码
- 移除加工操作中对-1值的特殊处理,统一入库操作逻辑
- 在合卷操作中增加对实际库区ID不等于-1的判断条件
2026-03-06 11:00:36 +08:00
78a7bb4123 feat(wms): 扩展钢卷仓库操作日志查询功能
- 在服务接口中增加操作类型和出入库类型参数
- 在控制器层添加相应的请求参数映射
- 在服务实现类中修改查询方法以支持动态过滤条件
- 更新查询逻辑将固定值替换为动态传入的操作类型和出入库类型
- 保持原有的时间范围查询功能并增强其灵活性
2026-03-06 10:21:02 +08:00
0edeb429c6 feat(wms): 添加退货操作的加工日志记录功能
- 在退货流程中增加加工日志记录逻辑
- 当老的实际库区存在时自动添加加工出库记录
- 使用operationType=2标识退货操作类型
- 记录退货操作的仓库作业日志信息
2026-03-06 10:17:33 +08:00
f9c192a5b4 feat(wms): 添加钢卷操作日志记录功能
- 在简单更新操作中添加调拨日志记录,区分入库和出库操作
- 在单个更新操作中添加加工日志记录,处理钢卷ID变化的情况
- 在分卷操作中添加加工日志记录,为原钢卷和子钢卷分别记录出入库
- 在合卷操作中添加加工日志记录,为参与合卷的钢卷记录出入库
- 在单步分卷完成操作中添加加工日志记录,确保完整流程追踪
- 根据实际库区变化判断是否需要记录操作日志,避免重复记录
2026-03-06 10:09:49 +08:00
88741bc062 feat(project): 添加 klp-aps 模块并配置依赖关系
- 在父项目 pom.xml 中添加 klp-aps 模块依赖
- 新增 klp-aps 子模块的 pom.xml 配置文件
- 在主 pom.xml 中将 klp-aps 添加到模块列表
- 配置 klp-aps 模块继承父项目的版本信息
- 添加 lombok 和 klp-common 作为 klp-aps 的依赖项
2026-03-05 18:13:19 +08:00
17e6f793c7 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-05 17:28:27 +08:00
砂糖
f6c60226ba refactor(wms): 移除钢卷号重复校验并替换部门选择组件
移除多个组件中关于钢卷号重复的远程校验逻辑,改为本地校验
将部门选择从DictSelect替换为el-select组件,直接从API获取部门数据
2026-03-05 17:28:13 +08:00
b257afdb6b refactor(WmsMaterialCoilService): 移除钢卷号重复检查逻辑和步骤标识创建方法
- 删除了 createStepKey 方法,移除了基于操作类型的步骤唯一标识生成功能
- 注释掉了钢卷回滚操作中的钢卷号重复检查逻辑
- 移除了分卷、合卷、新增等操作的重复性验证代码
- 简化了子钢卷创建时的重复性检查流程
2026-03-05 17:26:20 +08:00
砂糖
9e24368d4c feat(仓库管理): 新增钢卷库区操作日志功能
添加钢卷库区操作日志记录功能,包括:
1. 在入库操作时自动记录日志
2. 新增日志查询API接口
3. 实现日志查看页面和表格组件
4. 处理拒签和删除操作时的日志清理
2026-03-05 17:19:48 +08:00
428e94d4f9 refactor(WmsCoilWarehouseOperationLogService): 优化仓库ID获取逻辑
- 添加空值检查避免空指针异常
- 修改查询策略减少数据库访问次数
- 使用流式处理和分组收集子仓库ID
- 实现队列遍历算法提高查询效率
- 优化内存使用减少不必要的对象创建
2026-03-05 16:36:44 +08:00
4a11ae2079 feat(wms): 实现钢卷列表按发货状态排序功能
- 在WmsMaterialCoilBo中新增statusFirst字段用于控制排序逻辑
- 在WmsDeliveryWaybillDetailController中设置statusFirst为true以启用新排序
- 在WmsMaterialCoilServiceImpl中实现按发货状态排序的SQL逻辑
- 未发货钢卷(status=0)将排在已发货钢卷之前显示
- 保持原有的仓库ID和创建时间排序规则作为备选方案
2026-03-05 16:30:18 +08:00
e8b40d2fa3 refactor(wms): 将仓库操作日志服务中的仓库实体替换为实际仓库实体
- 替换 WmsWarehouse 为 WmsActualWarehouse 相关类
- 更新 WmsActualWarehouseMapper 的依赖注入
- 修改查询条件中仓库ID字段的映射关系
- 调整子仓库ID获取逻辑以适配新的实体结构
- 更新VO类中仓库属性的数据类型定义
2026-03-05 15:38:50 +08:00
f30fd06dc4 更新sql 2026-03-05 15:31:38 +08:00
86812a655b refactor(wms): 移除未使用的实体映射器依赖
- 注释掉 WmsDeliveryPlanMapper 的注入
- 注释掉 WmsProductMapper 的注入
- 注释掉 WmsRawMaterialMapper 的注入
- 保持其他依赖注入不变
- 减少类的不必要的依赖项
2026-03-05 13:56:43 +08:00
0e6357253a feat(wms): 添加钢卷库区操作日志记录功能
- 在WmsMaterialCoilServiceImpl中注入WmsCoilWarehouseOperationLogMapper
- 在钢卷发货出库操作后添加操作日志记录功能
- 新增recordWarehouseOperationLog方法用于记录库区操作日志
- 创建CoilWarehouseOperationLog注解用于标记需要记录操作日志的方法
- 实现CoilWarehouseOperationLogAspect切面自动记录操作日志
- 支持通过注解配置操作类型、出入库方向和备注信息
- 提供参数名映射功能自动获取钢卷ID和库区ID参数值
2026-03-05 13:55:38 +08:00
612fd8bf12 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-05 13:07:10 +08:00
625ef6330b feat(wms): 添加钢卷库区操作记录的查询和删除功能
- 新增根据钢卷ID、操作类型和出入库类型删除操作记录的方法
- 新增根据二级库区ID和时间范围查询操作记录的功能
- 在WmsCoilWarehouseOperationLogVo中添加创建时间和关联对象字段
- 实现递归查询子库区ID的功能支持范围查询
- 添加钢卷和库区信息的关联查询和映射
- 在控制器中暴露新的API接口供前端调用
2026-03-05 13:07:01 +08:00
砂糖
3e343f5a07 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-05 11:15:36 +08:00
砂糖
15e59c10da fix(wms): 修正合卷操作状态查询参数并添加绑定钢卷列表功能
将actionStatus从0改为-1以正确查询不为2的记录
添加listBoundCoil接口用于查询已绑定发货的钢卷列表
在基础面板中显示单据状态标签并优化仓库查询逻辑
2026-03-05 11:15:34 +08:00
04de7e267c feat(wms): 添加钢卷库区操作记录管理功能
- 创建钢卷库区操作记录实体类WmsCoilWarehouseOperationLog
- 定义服务接口IWmsCoilWarehouseOperationLogService及其实现
- 实现控制器WmsCoilWarehouseOperationLogController提供CRUD操作
- 添加数据传输对象WmsCoilWarehouseOperationLogBo和WmsCoilWarehouseOperationLogVo
- 配置MyBatis映射器WmsCoilWarehouseOperationLogMapper及XML映射文件
- 实现出入库操作类型和方向的业务字段定义
- 集成分页查询、导出Excel等功能
2026-03-05 11:12:44 +08:00
ffc42d110a fix(wms): 修复库区状态更新逻辑
- 修改实际库区启用状态更新方法的参数传递
- 将旧库区ID设置为null以避免不必要的状态变更
- 确保只有新库区ID有效时才执行状态更新操作
2026-03-05 10:05:46 +08:00
dfd2ba15d9 feat(delivery): 添加查询已绑定钢卷列表功能
- 在 IWmsDeliveryWaybillDetailService 中新增 getBoundCoilIds 方法
- 在 WmsDeliveryWaybillDetailController 中新增 boundCoilList 接口
- 实现 WmsDeliveryWaybillDetailServiceImpl 的 getBoundCoilIds 查询逻辑
- 集成 WmsMaterialCoilService 查询已发货绑定的钢卷信息
- 添加钢卷 ID 去重处理确保数据准确性
- 支持分页查询返回 TableDataInfo 格式数据
2026-03-05 09:57:00 +08:00
28839275d2 fix(wms): 修复待处理操作查询状态条件判断逻辑
- 修改了 action_status 查询条件的处理方式
- 添加了对 action_status 为 -1 的特殊处理逻辑
- 当 action_status 为 -1 时执行不等于 2 的查询条件
- 其他情况继续使用相等查询条件
- 修复了原有的状态过滤异常问题
2026-03-05 09:55:44 +08:00
0b5fe00d94 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-05 09:36:00 +08:00
5c6a3c4981 refactor(WmsMaterialCoilService): 简化库区状态更新条件并优化代码注释
- 移除库区ID比较条件,仅检查新库区ID是否为空
- 更新实际库区启用状态的方法调用逻辑
- 添加关于退货操作的详细注释说明
- 优化代码可读性和维护性
2026-03-05 09:35:51 +08:00
砂糖
8659847e96 fix(wms报表): 为待办动作列表添加actionStatus参数
统一为所有报表页面的待办动作列表请求添加actionStatus=2参数,确保查询结果的一致性
2026-03-05 09:34:30 +08:00
砂糖
721c48d6a4 style(wms): 调整表单和表格的布局及样式
- 减少表单标签宽度和表格列宽
- 移除出口长度列
- 调整主内容区网格布局宽度
- 优化样式细节
2026-03-04 21:47:35 +08:00
砂糖
d601dc8320 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-04 17:29:54 +08:00
砂糖
ee05f031a4 fix(wms): 注释掉加载历史记录的方法调用
避免在加载钢卷信息时不必要的历史记录查询,提高页面响应速度
2026-03-04 17:29:49 +08:00
2bfecfbbb2 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-04 16:54:43 +08:00
f6681b73af fix(wms): 修复钢卷合并拆分回滚时二维码状态管理问题
- 在合卷回滚操作中恢复原始钢卷的二维码为生效状态并更新相关记录
- 在拆卷回滚操作中恢复母卷的二维码为生效状态并更新相关记录
- 修改updateQrcodeForMergeRollback方法参数以正确传递恢复的钢卷ID
- 更新合卷回滚步骤中的钢卷ID记录逻辑以准确追踪操作流程
- 在钢卷拆分操作中将母卷的二维码标记为失效状态确保数据一致性
2026-03-04 16:54:32 +08:00
砂糖
03bf7f7398 Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-04 16:15:16 +08:00
砂糖
341606c051 feat(wms): 新增发货单据相关展示列及状态标签
在基础面板组件中添加发货计划、发货单据和发货状态的展示列
新增showWaybill属性控制相关列的显示
2026-03-04 16:15:13 +08:00
8b47e91598 refactor(wms): 修改钢卷溯源查询方法参数和优化查询逻辑
- 将溯源查询方法参数从入场钢卷号改为钢卷ID
- 通过钢卷ID直接获取钢卷信息和关联的二维码记录
- 移除原有的复杂二维码查询逻辑,简化为直接通过钢卷ID获取
- 优化钢卷记录查询方式,移除重复和不必要的查询步骤
- 简化溯源步骤处理逻辑,移除重复步骤合并功能
- 调整返回结果结构,精简二维码相关信息
- 优化数据库查询性能,使用更直接的关联查询方式
2026-03-04 16:09:32 +08:00
砂糖
f26960e4c7 fix(wms): 将材料卷追踪参数从enterCoilNo改为coilId
使用coilId作为追踪参数更准确,避免使用已弃用的enterCoilNo字段
2026-03-04 15:35:58 +08:00
8d9613a350 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-04 15:05:01 +08:00
181f0726d8 fix(wms): 解决钢卷回滚操作中的独占状态检查问题
- 添加最后一步操作信息解析功能,用于检查独占状态
- 实现分卷操作的独占状态验证,防止母卷正在进行分卷时回滚
- 修复分卷回滚时子钢卷ID匹配逻辑
- 优化二维码内容解析,支持多步骤操作回滚
- 添加分卷回滚前的子钢卷有效性检查
2026-03-04 15:04:51 +08:00
砂糖
9ed926e4ce Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-03-04 14:02:28 +08:00
砂糖
261f55dded feat(钢卷管理): 在多个页面添加当前钢卷号显示组件
为提升用户体验,在钢卷分切、合并、录入等页面统一添加current-coil-no组件,用于显示当前钢卷号信息
2026-03-04 14:02:25 +08:00
砂糖
a4b77f9654 feat(发货单明细): 添加实际库区显示并优化数据加载逻辑
修改发货单明细表格,新增实际库区列显示。同时将数据加载逻辑改为异步方式,并添加卷号对应的实际库区信息查询功能。移除数量列的显示以简化界面。
2026-03-04 13:55:43 +08:00
779 changed files with 77085 additions and 16376 deletions

View File

@@ -119,6 +119,10 @@
<groupId>com.klp</groupId>
<artifactId>klp-reader</artifactId>
</dependency>
<dependency>
<groupId>com.klp</groupId>
<artifactId>klp-aps</artifactId>
</dependency>
<dependency>

View File

@@ -11,7 +11,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
*/
//@SpringBootApplication
@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration.class)
@SpringBootApplication
public class KLPApplication {
public static void main(String[] args) {

View File

@@ -130,10 +130,6 @@ spring:
# 多久检查一次连接的活性
keepaliveTime: 30000
flyway:
baseline-on-migrate: true # 第一次运行时建立记录,不执行历史脚本
clean-disabled: true # 禁止清空库
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
spring:
redis:

View File

@@ -124,10 +124,6 @@ spring:
# 多久检查一次连接的活性
keepaliveTime: 30000
flyway:
baseline-on-migrate: true # 第一次运行时建立记录,不执行历史脚本
clean-disabled: true # 禁止清空库
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
spring:
redis:

View File

@@ -101,11 +101,6 @@ spring:
deserialization:
# 允许对象忽略json中不存在的属性
fail_on_unknown_properties: false
# 实时更新数据库结构
flyway:
enabled: true
locations: classpath:db/migration
table: flyway_schema_history
# Sa-Token配置
sa-token:
@@ -342,3 +337,9 @@ stamp:
base-url: http://python-stamp-service.example.com # 替换为实际地址
api-key: changeme # 替换为实际鉴权信息
timeout-ms: 5000 # 可按需调整
# OEE配置
oee:
acid:
# 酸轧入场卷创建人wms_material_coil.create_by
coil-create-by: suanzhakuguan

View File

@@ -0,0 +1,28 @@
CREATE TABLE IF NOT EXISTS aps_quick_sheet (
quick_sheet_id BIGINT AUTO_INCREMENT PRIMARY KEY,
plan_date DATE NOT NULL COMMENT '计划日期',
line_id BIGINT NULL COMMENT '产线ID',
line_name VARCHAR(120) NULL COMMENT '产线名称',
plan_code VARCHAR(60) NOT NULL COMMENT '计划号',
order_code VARCHAR(80) NULL COMMENT '订单号',
customer_name VARCHAR(120) NULL COMMENT '客户',
salesman VARCHAR(60) NULL COMMENT '业务员',
product_name VARCHAR(120) NULL COMMENT '产品',
raw_material_id VARCHAR(64) NULL COMMENT '原料钢卷',
raw_coil_nos VARCHAR(255) NULL COMMENT '原料卷号',
raw_location VARCHAR(120) NULL COMMENT '钢卷位置',
raw_packaging VARCHAR(120) NULL COMMENT '包装要求',
raw_edge_req VARCHAR(120) NULL COMMENT '切边要求',
raw_coating_type VARCHAR(120) NULL COMMENT '镀层种类',
raw_net_weight DECIMAL(18, 3) NULL COMMENT '原料净重',
plan_qty DECIMAL(18, 3) NULL COMMENT '计划数量',
start_time DATETIME NULL COMMENT '开始时间',
end_time DATETIME NULL COMMENT '结束时间',
del_flag TINYINT DEFAULT 0 COMMENT '删除标记(0正常 1删除)',
create_by VARCHAR(64) NULL,
update_by VARCHAR(64) NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_aps_quick_sheet_plan_date (plan_date),
INDEX idx_aps_quick_sheet_line_id (line_id)
) COMMENT = '快速排产表(Excel样式)';

View File

@@ -0,0 +1,47 @@
CREATE TABLE IF NOT EXISTS wms_furnace (
furnace_id BIGINT AUTO_INCREMENT PRIMARY KEY,
furnace_code VARCHAR(50) NOT NULL COMMENT '炉编号',
furnace_name VARCHAR(100) NOT NULL COMMENT '名称',
busy_flag TINYINT DEFAULT 0 COMMENT '是否忙碌(0否1是)',
status TINYINT DEFAULT 1 COMMENT '状态(0停用1启用)',
remark VARCHAR(500) NULL COMMENT '备注',
del_flag TINYINT DEFAULT 0 COMMENT '删除标记(0正常 1删除)',
create_by VARCHAR(64) NULL,
update_by VARCHAR(64) NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_wms_furnace_code (furnace_code)
) COMMENT = '退火炉信息表';
CREATE TABLE IF NOT EXISTS wms_furnace_plan (
plan_id BIGINT AUTO_INCREMENT PRIMARY KEY,
plan_no VARCHAR(60) NOT NULL COMMENT '计划号',
plan_start_time DATETIME NULL COMMENT '计划开始时间',
actual_start_time DATETIME NULL COMMENT '实际开始时间',
end_time DATETIME NULL COMMENT '结束时间',
target_furnace_id BIGINT NOT NULL COMMENT '目标炉子ID',
status TINYINT DEFAULT 0 COMMENT '计划状态(0未开始 1进行中 2已完成)',
remark VARCHAR(500) NULL COMMENT '备注',
del_flag TINYINT DEFAULT 0 COMMENT '删除标记(0正常 1删除)',
create_by VARCHAR(64) NULL,
update_by VARCHAR(64) NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_wms_furnace_plan_no (plan_no),
INDEX idx_wms_furnace_plan_furnace (target_furnace_id),
INDEX idx_wms_furnace_plan_status (status)
) COMMENT = '退火计划表';
CREATE TABLE IF NOT EXISTS wms_furnace_plan_coil (
plan_coil_id BIGINT AUTO_INCREMENT PRIMARY KEY,
plan_id BIGINT NOT NULL COMMENT '计划ID',
coil_id BIGINT NOT NULL COMMENT '钢卷ID',
del_flag TINYINT DEFAULT 0 COMMENT '删除标记(0正常 1删除)',
create_by VARCHAR(64) NULL,
update_by VARCHAR(64) NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_wms_furnace_plan_coil (plan_id, coil_id),
INDEX idx_wms_furnace_plan_coil_plan (plan_id),
INDEX idx_wms_furnace_plan_coil_coil (coil_id)
) COMMENT = '退火计划钢卷关系表';

25
klp-aps/pom.xml Normal file
View File

@@ -0,0 +1,25 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.klp</groupId>
<artifactId>klp-oa</artifactId>
<version>0.8.3</version>
</parent>
<artifactId>klp-aps</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.klp</groupId>
<artifactId>klp-common</artifactId>
</dependency>
<dependency>
<groupId>com.klp</groupId>
<artifactId>klp-wms</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,93 @@
package com.klp.aps.controller;
import com.klp.common.annotation.Log;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.bo.ApsCalendarBo;
import com.klp.aps.domain.vo.ApsCalendarVo;
import com.klp.aps.service.ApsCalendarService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 工厂日历Controller
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/calendar")
public class ApsCalendarController extends BaseController {
private final ApsCalendarService apsCalendarService;
/**
* 查询工厂日历列表
*/
@GetMapping("/list")
public TableDataInfo<ApsCalendarVo> list(ApsCalendarBo bo, PageQuery pageQuery) {
return apsCalendarService.queryPageList(bo, pageQuery);
}
/**
* 导出工厂日历列表
*/
@Log(title = "工厂日历", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsCalendarBo bo, HttpServletResponse response) {
List<ApsCalendarVo> list = apsCalendarService.queryList(bo);
ExcelUtil.exportExcel(list, "工厂日历", ApsCalendarVo.class, response);
}
/**
* 获取工厂日历详细信息
*/
@GetMapping("/{calendarId}")
public R<ApsCalendarVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long calendarId) {
return R.ok(apsCalendarService.queryById(calendarId));
}
/**
* 新增工厂日历
*/
@Log(title = "工厂日历", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsCalendarBo bo) {
return toAjax(apsCalendarService.insertByBo(bo));
}
/**
* 修改工厂日历
*/
@Log(title = "工厂日历", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsCalendarBo bo) {
return toAjax(apsCalendarService.updateByBo(bo));
}
/**
* 删除工厂日历
*/
@Log(title = "工厂日历", businessType = BusinessType.DELETE)
@DeleteMapping("/{calendarIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] calendarIds) {
return toAjax(apsCalendarService.deleteWithValidByIds(Arrays.asList(calendarIds), true));
}
}

View File

@@ -0,0 +1,103 @@
package com.klp.aps.controller;
import com.klp.common.annotation.Log;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.bo.ApsCalendarShiftBo;
import com.klp.aps.domain.vo.ApsCalendarShiftVo;
import com.klp.aps.service.ApsCalendarShiftService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 日历班次配置Controller
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/calendar-shift")
public class ApsCalendarShiftController extends BaseController {
private final ApsCalendarShiftService apsCalendarShiftService;
/**
* 查询日历班次配置列表
*/
@GetMapping("/list")
public TableDataInfo<ApsCalendarShiftVo> list(ApsCalendarShiftBo bo, PageQuery pageQuery) {
return apsCalendarShiftService.queryPageList(bo, pageQuery);
}
/**
* 导出日历班次配置列表
*/
@Log(title = "日历班次配置", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsCalendarShiftBo bo, HttpServletResponse response) {
List<ApsCalendarShiftVo> list = apsCalendarShiftService.queryList(bo);
ExcelUtil.exportExcel(list, "日历班次配置", ApsCalendarShiftVo.class, response);
}
/**
* 获取日历班次配置详细信息
*/
@GetMapping("/{configId}")
public R<ApsCalendarShiftVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long configId) {
return R.ok(apsCalendarShiftService.queryById(configId));
}
/**
* 新增日历班次配置
*/
@Log(title = "日历班次配置", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsCalendarShiftBo bo) {
return toAjax(apsCalendarShiftService.insertByBo(bo));
}
/**
* 修改日历班次配置
*/
@Log(title = "日历班次配置", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsCalendarShiftBo bo) {
return toAjax(apsCalendarShiftService.updateByBo(bo));
}
/**
* 删除日历班次配置
*/
@Log(title = "日历班次配置", businessType = BusinessType.DELETE)
@DeleteMapping("/{configIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] configIds) {
return toAjax(apsCalendarShiftService.deleteWithValidByIds(Arrays.asList(configIds), true));
}
/**
* 一键生成全年工作日日历
*/
@Log(title = "日历班次配置", businessType = BusinessType.INSERT)
@PostMapping("/generate-workday-year/{year}")
public R<Integer> generateWorkdayYear(@PathVariable Integer year,
@RequestParam(value = "overwriteExisting", required = false, defaultValue = "false") Boolean overwriteExisting) {
return R.ok(apsCalendarShiftService.generateWorkdayForYear(year, overwriteExisting));
}
}

View File

@@ -0,0 +1,45 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsGanttQueryReq;
import com.klp.aps.domain.vo.ApsFactoryCalendarRespVo;
import com.klp.aps.domain.vo.ApsGanttItemVo;
import com.klp.aps.service.ApsGanttService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* APS 甘特图查询MVP
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps")
public class ApsGanttController extends BaseController {
private final ApsGanttService apsGanttService;
/**
* GET /aps/gantt
* 参数lineId/queryStart/queryEnd/planId/orderId
*/
@GetMapping("/gantt")
public R<List<ApsGanttItemVo>> gantt(@Validated ApsGanttQueryReq req) {
return R.ok(apsGanttService.selectGanttItems(req));
}
/**
* 工厂日历聚合接口(减轻前端计算压力)
*/
@GetMapping("/factory-calendar")
public R<ApsFactoryCalendarRespVo> factoryCalendar(@Validated ApsGanttQueryReq req) {
return R.ok(apsGanttService.queryFactoryCalendar(req));
}
}

View File

@@ -0,0 +1,93 @@
package com.klp.aps.controller;
import com.klp.common.annotation.Log;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.bo.ApsLineCapabilityBo;
import com.klp.aps.domain.vo.ApsLineCapabilityVo;
import com.klp.aps.service.ApsLineCapabilityService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 产线能力Controller
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/line-capability")
public class ApsLineCapabilityController extends BaseController {
private final ApsLineCapabilityService apsLineCapabilityService;
/**
* 查询产线能力列表
*/
@GetMapping("/list")
public TableDataInfo<ApsLineCapabilityVo> list(ApsLineCapabilityBo bo, PageQuery pageQuery) {
return apsLineCapabilityService.queryPageList(bo, pageQuery);
}
/**
* 导出产线能力列表
*/
@Log(title = "产线能力", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsLineCapabilityBo bo, HttpServletResponse response) {
List<ApsLineCapabilityVo> list = apsLineCapabilityService.queryList(bo);
ExcelUtil.exportExcel(list, "产线能力", ApsLineCapabilityVo.class, response);
}
/**
* 获取产线能力详细信息
*/
@GetMapping("/{capabilityId}")
public R<ApsLineCapabilityVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long capabilityId) {
return R.ok(apsLineCapabilityService.queryById(capabilityId));
}
/**
* 新增产线能力
*/
@Log(title = "产线能力", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsLineCapabilityBo bo) {
return toAjax(apsLineCapabilityService.insertByBo(bo));
}
/**
* 修改产线能力
*/
@Log(title = "产线能力", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsLineCapabilityBo bo) {
return toAjax(apsLineCapabilityService.updateByBo(bo));
}
/**
* 删除产线能力
*/
@Log(title = "产线能力", businessType = BusinessType.DELETE)
@DeleteMapping("/{capabilityIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] capabilityIds) {
return toAjax(apsLineCapabilityService.deleteWithValidByIds(Arrays.asList(capabilityIds), true));
}
}

View File

@@ -0,0 +1,44 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsLockReq;
import com.klp.aps.service.ApsLockService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APS 锁定/解锁
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps")
public class ApsLockController extends BaseController {
private final ApsLockService apsLockService;
/**
* POST /aps/lock
*/
@PostMapping("/lock")
public R<Long> lock(@Validated @RequestBody ApsLockReq req) {
Long lockId = apsLockService.createLock(req, getUsername());
return R.ok(lockId);
}
/**
* POST /aps/lock/release/{lockId}
*/
@PostMapping("/lock/release/{lockId}")
public R<Void> release(@PathVariable Long lockId) {
apsLockService.releaseLock(lockId, getUsername());
return R.ok();
}
}

View File

@@ -0,0 +1,34 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsRescheduleReq;
import com.klp.aps.service.ApsOperationService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APS 工序级操作(重排等)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/operation")
public class ApsOperationController extends BaseController {
private final ApsOperationService apsOperationService;
/**
* POST /aps/operation/reschedule
*/
@PostMapping("/reschedule")
public R<Void> reschedule(@Validated @RequestBody ApsRescheduleReq req) {
apsOperationService.reschedule(req, getUsername());
return R.ok();
}
}

View File

@@ -0,0 +1,48 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsConvertFromCrmReq;
import com.klp.aps.domain.dto.ApsConvertFromCrmResp;
import com.klp.aps.domain.dto.ApsConvertFromProductReq;
import com.klp.aps.domain.dto.ApsConvertFromProductsReq;
import com.klp.aps.service.ApsPlanService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/order")
public class ApsOrderController extends BaseController {
private final ApsPlanService apsPlanService;
@PostMapping("/convert-from-crm")
public R<ApsConvertFromCrmResp> convertFromCrm(@Validated @RequestBody ApsConvertFromCrmReq req) {
Long wmsOrderId = apsPlanService.convertFromCrmOrderWithItems(req.getCrmOrderId(), req.getCrmItemIds(), getUsername());
return R.ok(new ApsConvertFromCrmResp(wmsOrderId, null));
}
@PostMapping("/convert-from-product")
public R<ApsConvertFromCrmResp> convertFromProduct(@Validated @RequestBody ApsConvertFromProductReq req) {
Long wmsOrderId = apsPlanService.convertFromProduct(
req.getProductId(),
req.getQuantity(),
req.getProductName(),
req.getRemark(),
getUsername()
);
return R.ok(new ApsConvertFromCrmResp(wmsOrderId, null));
}
@PostMapping("/convert-from-products")
public R<ApsConvertFromCrmResp> convertFromProducts(@Validated @RequestBody ApsConvertFromProductsReq req) {
Long wmsOrderId = apsPlanService.convertFromProducts(req.getItems(), req.getRemark(), getUsername());
return R.ok(new ApsConvertFromCrmResp(wmsOrderId, null));
}
}

View File

@@ -0,0 +1,55 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsAutoScheduleReq;
import com.klp.aps.domain.dto.ApsPlanCreateReq;
import com.klp.aps.service.ApsAutoScheduleService;
import com.klp.aps.service.ApsPlanService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* APS 计划MVP
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/plan")
public class ApsPlanController extends BaseController {
private final ApsPlanService apsPlanService;
private final ApsAutoScheduleService apsAutoScheduleService;
/**
* POST /aps/plan/create
* 创建计划头与明细,返回 planId
*/
@PostMapping("/create")
public R<Long> create(@Validated @RequestBody ApsPlanCreateReq req) {
Long planId = apsPlanService.createPlan(req, getUsername());
return R.ok(planId);
}
/**
* POST /aps/plan/auto-schedule
* 自动排程生成 operation + change_log并更新 plan 状态
*/
@PostMapping("/auto-schedule")
public R<Void> autoSchedule(@Validated @RequestBody ApsAutoScheduleReq req) {
apsAutoScheduleService.autoSchedule(req, getUsername());
return R.ok();
}
/**
* POST /aps/plan/publish/{planId}
* 仅允许已排产(plan.status=1) 的计划发布,状态流转为 2已发布/生产中)
*/
@PostMapping("/publish/{planId}")
public R<Void> publish(@PathVariable Long planId) {
apsPlanService.publishPlan(planId, getUsername());
return R.ok();
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.aps.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.vo.ApsPlanDetailVo;
import com.klp.aps.domain.bo.ApsPlanDetailBo;
import com.klp.aps.service.IApsPlanDetailService;
import com.klp.common.core.page.TableDataInfo;
/**
* 排产单明细
*
* @author klp
* @date 2026-03-26
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/planDetail")
public class ApsPlanDetailController extends BaseController {
private final IApsPlanDetailService iApsPlanDetailService;
/**
* 查询排产单明细列表
*/
@GetMapping("/list")
public TableDataInfo<ApsPlanDetailVo> list(ApsPlanDetailBo bo, PageQuery pageQuery) {
return iApsPlanDetailService.queryPageList(bo, pageQuery);
}
/**
* 导出排产单明细列表
*/
@Log(title = "排产单明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsPlanDetailBo bo, HttpServletResponse response) {
List<ApsPlanDetailVo> list = iApsPlanDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "排产单明细", ApsPlanDetailVo.class, response);
}
/**
* 获取排产单明细详细信息
*
* @param planDetailId 主键
*/
@GetMapping("/{planDetailId}")
public R<ApsPlanDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long planDetailId) {
return R.ok(iApsPlanDetailService.queryById(planDetailId));
}
/**
* 新增排产单明细
*/
@Log(title = "排产单明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsPlanDetailBo bo) {
return toAjax(iApsPlanDetailService.insertByBo(bo));
}
/**
* 修改排产单明细
*/
@Log(title = "排产单明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsPlanDetailBo bo) {
return toAjax(iApsPlanDetailService.updateByBo(bo));
}
/**
* 删除排产单明细
*
* @param planDetailIds 主键串
*/
@Log(title = "排产单明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{planDetailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] planDetailIds) {
return toAjax(iApsPlanDetailService.deleteWithValidByIds(Arrays.asList(planDetailIds), true));
}
}

View File

@@ -0,0 +1,105 @@
package com.klp.aps.controller;
import java.util.List;
import java.util.Arrays;
import com.klp.aps.domain.dto.ApsPlanSheetQueryReq;
import com.klp.aps.domain.dto.ApsQuickSheetQueryReq;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.vo.ApsPlanSheetVo;
import com.klp.aps.domain.bo.ApsPlanSheetBo;
import com.klp.aps.service.IApsPlanSheetService;
import com.klp.common.core.page.TableDataInfo;
/**
* 排产单主
*
* @author klp
* @date 2026-03-26
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/planSheet")
public class ApsPlanSheetController extends BaseController {
private final IApsPlanSheetService iApsPlanSheetService;
/**
* 查询排产单主列表
*/
@GetMapping("/list")
public TableDataInfo<ApsPlanSheetVo> list(ApsPlanSheetBo bo, PageQuery pageQuery) {
return iApsPlanSheetService.queryPageList(bo, pageQuery);
}
/**
* 导出排产单主列表
*/
@Log(title = "排产单主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsPlanSheetBo bo, HttpServletResponse response) {
List<ApsPlanSheetVo> list = iApsPlanSheetService.queryList(bo);
ExcelUtil.exportExcel(list, "排产单主", ApsPlanSheetVo.class, response);
}
@PostMapping("/exportAll")
public void export(@Validated ApsPlanSheetQueryReq req, javax.servlet.http.HttpServletResponse response) {
iApsPlanSheetService.exportExcel(req, response);
}
/**
* 获取排产单主详细信息
*
* @param planSheetId 主键
*/
@GetMapping("/{planSheetId}")
public R<ApsPlanSheetVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long planSheetId) {
return R.ok(iApsPlanSheetService.queryById(planSheetId));
}
/**
* 新增排产单主
*/
@Log(title = "排产单主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsPlanSheetBo bo) {
return toAjax(iApsPlanSheetService.insertByBo(bo));
}
/**
* 修改排产单主
*/
@Log(title = "排产单主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsPlanSheetBo bo) {
return toAjax(iApsPlanSheetService.updateByBo(bo));
}
/**
* 删除排产单主
*
* @param planSheetIds 主键串
*/
@Log(title = "排产单主", businessType = BusinessType.DELETE)
@DeleteMapping("/{planSheetIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] planSheetIds) {
return toAjax(iApsPlanSheetService.deleteWithValidByIds(Arrays.asList(planSheetIds), true));
}
}

View File

@@ -0,0 +1,55 @@
package com.klp.aps.controller;
import com.klp.aps.domain.dto.ApsQuickSheetQueryReq;
import com.klp.aps.domain.dto.ApsQuickSheetSaveReq;
import com.klp.aps.domain.vo.ApsQuickSheetRowVo;
import com.klp.aps.service.ApsQuickSheetService;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/quick-sheet")
public class ApsQuickSheetController extends BaseController {
private final ApsQuickSheetService quickSheetService;
@GetMapping("/list")
public R<List<ApsQuickSheetRowVo>> list(@Validated ApsQuickSheetQueryReq req) {
return R.ok(quickSheetService.queryList(req));
}
@GetMapping("/preset")
public R<List<ApsQuickSheetRowVo>> preset(@RequestParam(value = "lineId", required = false) Long lineId) {
String salesman = LoginHelper.getNickName();
return R.ok(quickSheetService.buildPresetRows(lineId, salesman));
}
@PostMapping("/save")
public R<Void> save(@Validated @RequestBody ApsQuickSheetSaveReq req) {
quickSheetService.saveRows(req, getUsername());
return R.ok();
}
@GetMapping("/export")
public void export(@Validated ApsQuickSheetQueryReq req, javax.servlet.http.HttpServletResponse response) {
quickSheetService.exportExcel(req, response);
}
@PostMapping("/delete")
public R<Void> delete(@RequestParam("quickSheetId") Long quickSheetId) {
quickSheetService.deleteById(quickSheetId, getUsername());
return R.ok();
}
}

View File

@@ -0,0 +1,55 @@
package com.klp.aps.controller;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.aps.domain.dto.ApsScheduleSheetQueryReq;
import com.klp.aps.domain.dto.ApsScheduleSheetSupplementSaveReq;
import com.klp.aps.domain.vo.ApsScheduleSheetResp;
import com.klp.aps.service.ApsScheduleSheetService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* 统一排产表(查询 + 导出)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps")
public class ApsScheduleSheetController extends BaseController {
private final ApsScheduleSheetService apsScheduleSheetService;
/**
* GET /aps/schedule-sheet
*/
@GetMapping("/schedule-sheet")
public R<ApsScheduleSheetResp> query(@Validated ApsScheduleSheetQueryReq req) {
return R.ok(apsScheduleSheetService.query(req));
}
/**
* GET /aps/schedule-sheet/export
*/
@GetMapping("/schedule-sheet/export")
public void export(@Validated ApsScheduleSheetQueryReq req, HttpServletResponse response) {
apsScheduleSheetService.exportExcel(req, response);
}
/**
* POST /aps/schedule-sheet/supplement/save
*/
@PostMapping("/schedule-sheet/supplement/save")
public R<Void> saveSupplement(@Validated @RequestBody ApsScheduleSheetSupplementSaveReq req) {
apsScheduleSheetService.saveSupplement(req, getUsername());
return R.ok();
}
}

View File

@@ -0,0 +1,93 @@
package com.klp.aps.controller;
import com.klp.common.annotation.Log;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.aps.domain.bo.ApsShiftTemplateBo;
import com.klp.aps.domain.vo.ApsShiftTemplateVo;
import com.klp.aps.service.ApsShiftTemplateService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 班次模板Controller
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/aps/shift-template")
public class ApsShiftTemplateController extends BaseController {
private final ApsShiftTemplateService apsShiftTemplateService;
/**
* 查询班次模板列表
*/
@GetMapping("/list")
public TableDataInfo<ApsShiftTemplateVo> list(ApsShiftTemplateBo bo, PageQuery pageQuery) {
return apsShiftTemplateService.queryPageList(bo, pageQuery);
}
/**
* 导出班次模板列表
*/
@Log(title = "班次模板", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ApsShiftTemplateBo bo, HttpServletResponse response) {
List<ApsShiftTemplateVo> list = apsShiftTemplateService.queryList(bo);
ExcelUtil.exportExcel(list, "班次模板", ApsShiftTemplateVo.class, response);
}
/**
* 获取班次模板详细信息
*/
@GetMapping("/{shiftId}")
public R<ApsShiftTemplateVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long shiftId) {
return R.ok(apsShiftTemplateService.queryById(shiftId));
}
/**
* 新增班次模板
*/
@Log(title = "班次模板", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ApsShiftTemplateBo bo) {
return toAjax(apsShiftTemplateService.insertByBo(bo));
}
/**
* 修改班次模板
*/
@Log(title = "班次模板", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ApsShiftTemplateBo bo) {
return toAjax(apsShiftTemplateService.updateByBo(bo));
}
/**
* 删除班次模板
*/
@Log(title = "班次模板", businessType = BusinessType.DELETE)
@DeleteMapping("/{shiftIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] shiftIds) {
return toAjax(apsShiftTemplateService.deleteWithValidByIds(Arrays.asList(shiftIds), true));
}
}

View File

@@ -0,0 +1,30 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
/**
* 工厂日历业务对象
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsCalendarBo extends BaseEntity {
private Long calendarId;
@NotNull(message = "日期不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalDate calendarDate;
@NotNull(message = "日历类型不能为空", groups = {AddGroup.class, EditGroup.class})
private Integer calendarType;
private String factoryCode;
private String remark;
}

View File

@@ -0,0 +1,38 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 日历班次配置业务对象
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsCalendarShiftBo extends BaseEntity {
private Long configId;
@NotNull(message = "日期不能为空", groups = {AddGroup.class, EditGroup.class})
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate calendarDate;
@NotNull(message = "产线ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long lineId;
@NotNull(message = "班次ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long shiftId;
private BigDecimal plannedHours;
private Integer status;
private String remark;
}

View File

@@ -0,0 +1,38 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 产线能力业务对象
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsLineCapabilityBo extends BaseEntity {
private Long capabilityId;
@NotNull(message = "产线ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long lineId;
private Long productId;
private Long processId;
@NotNull(message = "每小时产能不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal capacityPerHour;
private Integer setupMinutes;
private Integer priority;
private Integer isEnabled;
private String remark;
}

View File

@@ -0,0 +1,224 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 排产单明细业务对象 aps_plan_detail
*
* @author klp
* @date 2026-03-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsPlanDetailBo extends BaseEntity {
/**
* 排产明细主键ID
*/
private Long planDetailId;
/**
* 关联排产单ID
*/
private Long planSheetId;
/**
* 内容序号
*/
private String bizSeqNo;
/**
* 订单ID
*/
private Long orderId;
/**
* 销售内容:订单号
*/
private String orderCode;
/**
* 销售内容:订单合同号
*/
private String contractCode;
/**
* 销售内容:客户
*/
private String customerName;
/**
* 销售内容:业务员
*/
private String salesman;
/**
* 原料信息:厂家
*/
private String rawManufacturer;
/**
* 原料信息:材质
*/
private String rawMaterial;
/**
* 原料信息:厚度mm
*/
private BigDecimal rawThick;
/**
* 原料信息:宽度mm
*/
private BigDecimal rawWidth;
/**
* 原料钢卷ID
*/
private Long rawMaterialId;
/**
* 原料卷号
*/
private String rawCoilNos;
/**
* 钢卷位置
*/
private String rawLocation;
/**
* 包装要求
*/
private String rawPackaging;
/**
* 宽度要求
*/
private String rawEdgeReq;
/**
* 镀层种类
*/
private String rawCoatingType;
/**
* 原料净重
*/
private BigDecimal rawNetWeight;
/**
* 成品信息:成品名称
*/
private String productName;
/**
* 成品信息:材质
*/
private String productMaterial;
/**
* 成品信息:镀层g
*/
private BigDecimal coatingG;
/**
* 成品信息:成品宽度
*/
private BigDecimal productWidth;
/**
* 成品信息:轧制厚度
*/
private BigDecimal rollingThick;
/**
* 成品信息:标签厚度
*/
private BigDecimal markCoatThick;
/**
* 成品信息:吨钢长度区间m
*/
private String tonSteelLengthRange;
/**
* 成品信息:数量
*/
private BigDecimal planQty;
/**
* 成品信息:重量
*/
private BigDecimal planWeight;
/**
* 成品信息:表面处理
*/
private String surfaceTreatment;
/**
* 成品信息:切边要求
*/
private String widthReq;
/**
* 成品信息:包装要求
*/
private String productPackaging;
/**
* 成品信息:宽度要求
*/
private String productEdgeReq;
/**
* 成品信息:用途
*/
private String usageReq;
/**
* 后处理
*/
private String postProcess;
/**
* 下工序
*/
private String nextProcess;
/**
* 取样
*/
private String sampleReq;
/**
* 生产开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/**
* 生产结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,66 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 排产单主业务对象 aps_plan_sheet
*
* @author klp
* @date 2026-03-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsPlanSheetBo extends BaseEntity {
/**
* 排产单主键ID
*/
private Long planSheetId;
/**
* 排产日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planDate;
/**
* 产线ID
*/
private Long lineId;
/**
* 产线名称
*/
private String lineName;
/**
* 排产单号
*/
private String planCode;
/**
* 排产类型
*/
private String planType;
/**
* 排产人
*/
private String scheduler;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,40 @@
package com.klp.aps.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalTime;
/**
* 班次模板业务对象
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ApsShiftTemplateBo extends BaseEntity {
private Long shiftId;
@NotBlank(message = "班次编码不能为空", groups = {AddGroup.class, EditGroup.class})
private String shiftCode;
@NotBlank(message = "班次名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String shiftName;
@NotNull(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalTime startTime;
@NotNull(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalTime endTime;
private Integer crossDay;
private BigDecimal efficiencyRate;
private String remark;
}

View File

@@ -0,0 +1,22 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 自动排程请求
*/
@Data
public class ApsAutoScheduleReq {
/** 必填计划ID */
@NotNull(message = "planId 不能为空")
private Long planId;
/** 是否清理旧排程(默认 true仅删除未锁定记录 */
private Boolean clearOld;
/** 备注/预留 */
private String remark;
}

View File

@@ -0,0 +1,18 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class ApsConvertFromCrmReq {
@NotBlank(message = "crmOrderId 不能为空")
private String crmOrderId;
/**
* 可选:指定转换的 CRM 明细 itemId 列表;为空则转换该订单全部明细
*/
private List<String> crmItemIds;
}

View File

@@ -0,0 +1,12 @@
package com.klp.aps.domain.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class ApsConvertFromCrmResp {
private Long wmsOrderId;
private String wmsOrderCode;
}

View File

@@ -0,0 +1,22 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
public class ApsConvertFromProductReq {
@NotNull(message = "productId 不能为空")
private Long productId;
@NotNull(message = "quantity 不能为空")
@DecimalMin(value = "0.0001", message = "quantity 必须大于 0")
private BigDecimal quantity;
private String productName;
private String remark;
}

View File

@@ -0,0 +1,17 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApsConvertFromProductsReq {
@Valid
@NotEmpty(message = "items 不能为空")
private List<ApsConvertFromProductReq> items;
private String remark;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 甘特查询参数
*/
@Data
public class ApsGanttQueryReq {
/** 可空:不传则查全部产线 */
private Long lineId;
/** 必填:查询开始时间 */
@NotNull(message = "queryStart 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryStart;
/** 必填:查询结束时间 */
@NotNull(message = "queryEnd 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryEnd;
/** 可空:按计划过滤 */
private Long planId;
/** 可空:按订单过滤 */
private Long orderId;
}

View File

@@ -0,0 +1,30 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 排产锁定请求
*/
@Data
public class ApsLockReq {
/**
* 锁定类型1计划 2产线时间窗 3工序
*/
private Integer lockType;
private Long planId;
private Long lineId;
private Long operationId;
private LocalDateTime lockStartTime;
private LocalDateTime lockEndTime;
private String lockReason;
}

View File

@@ -0,0 +1,38 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 创建计划请求
*/
@Data
public class ApsPlanCreateReq {
/** 必填订单ID */
@NotNull(message = "orderId 不能为空")
private Long orderId;
/** 可空:排产计划编号,不传则后端生成 */
private String planCode;
/** 可空:版本,不传默认 V1 */
private String version;
/** 可空优先级0低 1中 2高 3VIP */
private Integer priority;
/** 可空目标产线ID不传则按默认产线 */
private Long lineId;
/** 可空:计划开始时间 */
private LocalDateTime startDate;
/** 可空:计划结束时间 */
private LocalDateTime endDate;
/** 可空:备注 */
private String remark;
}

View File

@@ -0,0 +1,13 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
public class ApsPlanSheetQueryReq {
// planSheetId
private Long planSheetId;
}

View File

@@ -0,0 +1,59 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApsPlanSheetSaveReq {
@NotEmpty(message = "rows 不能为空")
private List<ApsQuickSheetSaveReq.Row> rows;
@Data
public static class Row {
private Long quickSheetId;
private Long lineId;
private String lineName;
private String planCode;
private String planType;
private String scheduler;
private String remark;
private String bizSeqNo;
private String orderCode;
private String contractCode;
private String customerName;
private String salesman;
private String productName;
private String productMaterial;
private String coatingG;
private String productWidth;
private String rollingThick;
private String markCoatThick;
private String tonSteelLengthRange;
private String planQty;
private String planWeight;
private String surfaceTreatment;
private String widthReq;
private String usageReq;
private String postProcess;
private String nextProcess;
private String sampleReq;
private String rawManufacturer;
private String rawMaterial;
private String rawThick;
private String rawWidth;
private String rawMaterialId;
private String rawCoilNos;
private String rawLocation;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private String rawNetWeight;
private String startTime;
private String endTime;
}
}

View File

@@ -0,0 +1,20 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
public class ApsQuickSheetQueryReq {
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;
private Long lineId;
private String customerName;
}

View File

@@ -0,0 +1,60 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApsQuickSheetSaveReq {
@NotEmpty(message = "rows 不能为空")
private List<Row> rows;
@Data
public static class Row {
private Long quickSheetId;
private Long lineId;
private String lineName;
private String planCode;
private String planType;
private String scheduler;
private String remark;
private String bizSeqNo;
private String orderCode;
private String contractCode;
private String customerName;
private String salesman;
private String productName;
private String productMaterial;
private String coatingG;
private String productWidth;
private String rollingThick;
private String markCoatThick;
private String tonSteelLengthRange;
private String planQty;
private String planWeight;
private String surfaceTreatment;
private String widthReq;
private String usageReq;
private String postProcess;
private String nextProcess;
private String sampleReq;
private String rawManufacturer;
private String rawMaterial;
private String rawThick;
private String rawWidth;
private String rawMaterialId;
private String rawCoilNos;
private String rawLocation;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private String rawNetWeight;
private String startTime;
private String endTime;
}
}

View File

@@ -0,0 +1,34 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 单工序重排请求
*/
@Data
public class ApsRescheduleReq {
/** 必填工序排程ID */
@NotNull(message = "operationId 不能为空")
private Long operationId;
/** 必填目标产线ID */
@NotNull(message = "targetLineId 不能为空")
private Long targetLineId;
/** 必填:目标开始时间 */
@NotNull(message = "targetStartTime 不能为空")
private LocalDateTime targetStartTime;
/** 必填:目标结束时间 */
@NotNull(message = "targetEndTime 不能为空")
private LocalDateTime targetEndTime;
/** 必填:重排原因 */
@NotNull(message = "reason 不能为空")
private String reason;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 统一排产表查询参数MVP
*/
@Data
public class ApsScheduleSheetQueryReq {
/** 可空:计划查询关键字(支持 planId 或 planCode */
private String planId;
/** 可空:订单查询关键字(支持 orderId 或 orderCode */
private String orderId;
/** 可空产线ID不传查全部产线 */
private Long lineId;
/** 必填:查询开始时间 */
@NotNull(message = "queryStart 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryStart;
/** 必填:查询结束时间 */
@NotNull(message = "queryEnd 不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryEnd;
}

View File

@@ -0,0 +1,31 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
public class ApsScheduleSheetSupplementSaveReq {
@Valid
@NotEmpty(message = "rows 不能为空")
private List<Row> rows;
@Data
public static class Row {
@NotNull(message = "operationId 不能为空")
private Long operationId;
private Long rawMaterialId;
private String rawCoilNos;
private BigDecimal rawNetWeight;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private String rawLocation;
}
}

View File

@@ -0,0 +1,20 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsWmsOrderCreateReq {
private String orderCode;
private Long customerId;
private String customerName;
private String salesManager;
private Integer orderStatus;
private String remark;
private BigDecimal taxAmount;
private BigDecimal noTaxAmount;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,21 @@
package com.klp.aps.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsWmsOrderDetailCreateReq {
private Long orderId;
private Long productId;
private BigDecimal quantity;
private String unit;
private String remark;
private BigDecimal taxPrice;
private BigDecimal noTaxPrice;
private Long groupId;
private Integer delFlag;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,30 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
/**
* 工厂日历实体 wms_calendar
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_calendar")
public class ApsCalendarEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "calendar_id", type = IdType.AUTO)
private Long calendarId;
private LocalDate calendarDate;
private Integer calendarType;
private String factoryCode;
private String remark;
}

View File

@@ -0,0 +1,35 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 日历班次配置实体 wms_calendar_shift
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_calendar_shift")
public class ApsCalendarShiftEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "config_id", type = IdType.AUTO)
private Long configId;
private LocalDate calendarDate;
private Long lineId;
private Long shiftId;
private BigDecimal plannedHours;
private Integer status;
private String remark;
}

View File

@@ -0,0 +1,38 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 产线能力实体 wms_line_capability
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_line_capability")
public class ApsLineCapabilityEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "capability_id", type = IdType.AUTO)
private Long capabilityId;
private Long lineId;
private Long productId;
private Long processId;
private BigDecimal capacityPerHour;
private Integer setupMinutes;
private Integer priority;
private Integer isEnabled;
private String remark;
}

View File

@@ -0,0 +1,193 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 排产单明细对象 aps_plan_detail
*
* @author klp
* @date 2026-03-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("aps_plan_detail")
public class ApsPlanDetail extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 排产明细主键ID
*/
@TableId(value = "plan_detail_id")
private Long planDetailId;
/**
* 关联排产单ID
*/
private Long planSheetId;
/**
* 内容序号
*/
private String bizSeqNo;
/**
* 订单ID
*/
private Long orderId;
/**
* 销售内容:订单号
*/
private String orderCode;
/**
* 销售内容:订单合同号
*/
private String contractCode;
/**
* 销售内容:客户
*/
private String customerName;
/**
* 销售内容:业务员
*/
private String salesman;
/**
* 原料信息:厂家
*/
private String rawManufacturer;
/**
* 原料信息:材质
*/
private String rawMaterial;
/**
* 原料信息:厚度mm
*/
private BigDecimal rawThick;
/**
* 原料信息:宽度mm
*/
private BigDecimal rawWidth;
/**
* 原料钢卷ID
*/
private Long rawMaterialId;
/**
* 原料卷号
*/
private String rawCoilNos;
/**
* 钢卷位置
*/
private String rawLocation;
/**
* 包装要求
*/
private String rawPackaging;
/**
* 宽度要求
*/
private String rawEdgeReq;
/**
* 镀层种类
*/
private String rawCoatingType;
/**
* 原料净重
*/
private BigDecimal rawNetWeight;
/**
* 成品信息:成品名称
*/
private String productName;
/**
* 成品信息:材质
*/
private String productMaterial;
/**
* 成品信息:镀层g
*/
private BigDecimal coatingG;
/**
* 成品信息:成品宽度
*/
private BigDecimal productWidth;
/**
* 成品信息:轧制厚度
*/
private BigDecimal rollingThick;
/**
* 成品信息:标签厚度
*/
private BigDecimal markCoatThick;
/**
* 成品信息:吨钢长度区间m
*/
private String tonSteelLengthRange;
/**
* 成品信息:数量
*/
private BigDecimal planQty;
/**
* 成品信息:重量
*/
private BigDecimal planWeight;
/**
* 成品信息:表面处理
*/
private String surfaceTreatment;
/**
* 成品信息:切边要求
*/
private String widthReq;
/**
* 成品信息:包装要求
*/
private String productPackaging;
/**
* 成品信息:宽度要求
*/
private String productEdgeReq;
/**
* 成品信息:用途
*/
private String usageReq;
/**
* 后处理
*/
private String postProcess;
/**
* 下工序
*/
private String nextProcess;
/**
* 取样
*/
private String sampleReq;
/**
* 生产开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 生产结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
* 备注
*/
private String remark;
/**
* 删除标记(0正常 1删除)
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,66 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 排产单主对象 aps_plan_sheet
*
* @author klp
* @date 2026-03-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("aps_plan_sheet")
public class ApsPlanSheet extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 排产单主键ID
*/
@TableId(value = "plan_sheet_id")
private Long planSheetId;
/**
* 排产日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planDate;
/**
* 产线ID
*/
private Long lineId;
/**
* 产线名称
*/
private String lineName;
/**
* 排产单号
*/
private String planCode;
/**
* 排产类型
*/
private String planType;
/**
* 排产人
*/
private String scheduler;
/**
* 备注
*/
private String remark;
/**
* 删除标记(0正常 1删除)
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,60 @@
package com.klp.aps.domain.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class ApsQuickSheetEntity {
private Long quickSheetId;
private LocalDate planDate;
private Long lineId;
private String lineName;
private String planCode;
private String planType;
private String scheduler;
private String remark;
private String bizSeqNo;
private String orderCode;
private String contractCode;
private String customerName;
private String salesman;
private String productName;
private String productMaterial;
private BigDecimal coatingG;
private BigDecimal productWidth;
private BigDecimal rollingThick;
private BigDecimal markCoatThick;
private String tonSteelLengthRange;
private BigDecimal planQty;
private BigDecimal planWeight;
private String surfaceTreatment;
private String widthReq;
private String usageReq;
private String postProcess;
private String nextProcess;
private String sampleReq;
private String rawManufacturer;
private String rawMaterial;
private BigDecimal rawThick;
private BigDecimal rawWidth;
private String rawMaterialId;
private String rawCoilNos;
private String rawLocation;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private BigDecimal rawNetWeight;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String createBy;
private String updateBy;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private Integer delFlag;
}

View File

@@ -0,0 +1,18 @@
package com.klp.aps.domain.entity;
import lombok.Data;
/**
* wms_schedule_change_logAPS 自动排程审计)
*/
@Data
public class ApsScheduleChangeLogEntity {
private Long logId;
private Long operationId;
private String changeType;
private String beforeValue;
private String afterValue;
private String changeReason;
private String changeBy;
}

View File

@@ -0,0 +1,24 @@
package com.klp.aps.domain.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* wms_schedule_lock
*/
@Data
public class ApsScheduleLockEntity {
private Long lockId;
private Integer lockType;
private Long planId;
private Long lineId;
private Long operationId;
private LocalDateTime lockStartTime;
private LocalDateTime lockEndTime;
private String lockReason;
private Integer status;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,32 @@
package com.klp.aps.domain.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* wms_schedule_operationAPS 自动排程落库)
*/
@Data
public class ApsScheduleOperationEntity {
private Long operationId;
private Long planId;
private Long detailId;
private Long orderId;
private Long orderDetailId;
private Long productId;
private Long processId;
private Long lineId;
private Integer sequenceNo;
private BigDecimal planQty;
private LocalDateTime startTime;
private LocalDateTime endTime;
private Integer setupMinutes;
private Integer status;
private Integer lockedFlag;
private String remark;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,26 @@
package com.klp.aps.domain.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* wms_schedule_plan_detail仅用于 APS MVP 插入)
*/
@Data
public class ApsSchedulePlanDetailEntity {
private Long detailId;
private Long planId;
private Long lineId;
private Long taskId;
private Long productId;
private BigDecimal quantity;
private LocalDate startDate;
private LocalDate endDate;
private String remark;
private Integer delFlag;
private String createBy;
private String updateBy;
}

View File

@@ -0,0 +1,25 @@
package com.klp.aps.domain.entity;
import lombok.Data;
import java.time.LocalDateTime;
/**
* wms_schedule_plan仅用于 APS MVP 插入/回填主键)
*/
@Data
public class ApsSchedulePlanEntity {
private Long planId;
private String planCode;
private String version;
private Long orderId;
private Integer status;
private String remark;
private Integer delFlag;
private String createBy;
private String updateBy;
private Integer priority;
private LocalDateTime startDate;
private LocalDateTime endDate;
}

View File

@@ -0,0 +1,37 @@
package com.klp.aps.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalTime;
/**
* 班次模板实体 wms_shift_template
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_shift_template")
public class ApsShiftTemplateEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "shift_id", type = IdType.AUTO)
private Long shiftId;
private String shiftCode;
private String shiftName;
private LocalTime startTime;
private LocalTime endTime;
private Integer crossDay;
private BigDecimal efficiencyRate;
private String remark;
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsCrmOrderItemRow {
private String itemId;
private String orderId;
private String productType;
private Long productNum;
private BigDecimal contractPrice;
private String remark;
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApsCrmOrderRow {
private String orderId;
private String orderCode;
private String customerId;
private String salesman;
private BigDecimal orderAmount;
private String remark;
}

View File

@@ -0,0 +1,17 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
/**
* 产线能力wms_line_capability最小行
*/
@Data
public class ApsLineCapabilityRow {
private Long lineId;
private BigDecimal capacityPerHour;
private Integer setupMinutes;
private Integer priority;
}

View File

@@ -0,0 +1,9 @@
package com.klp.aps.domain.row;
import lombok.Data;
@Data
public class ApsLineMetaRow {
private Long lineId;
private String lineName;
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
/**
* wms_order_detail 最小取数行
*/
@Data
public class ApsOrderDetailRow {
private Long detailId;
private Long productId;
private BigDecimal quantity;
}

View File

@@ -0,0 +1,17 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
/**
* 计划明细最小行(用于自动排程)
*/
@Data
public class ApsPlanDetailRow {
private Long detailId;
private Long taskId;
private Long lineId;
private Long productId;
private BigDecimal quantity;
}

View File

@@ -0,0 +1,11 @@
package com.klp.aps.domain.row;
import lombok.Data;
@Data
public class ApsProductMetaRow {
private Long productId;
private String productName;
private String specification;
private String material;
}

View File

@@ -0,0 +1,13 @@
package com.klp.aps.domain.row;
import lombok.Data;
/**
* 产品工艺路线wms_product_processe最小行
*/
@Data
public class ApsProductProcessRow {
private Long processId;
private Integer processSequence;
}

View File

@@ -0,0 +1,20 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.time.LocalDateTime;
/**
* wms_schedule_plan 最小行(用于自动排程)
*/
@Data
public class ApsSchedulePlanRow {
private Long planId;
private String planCode;
private String version;
private Long orderId;
private Integer status;
private LocalDateTime startDate;
private LocalDateTime endDate;
}

View File

@@ -0,0 +1,23 @@
package com.klp.aps.domain.row;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
/**
* 日历班次时段wms_calendar_shift + wms_shift_template
*/
@Data
public class ApsShiftSlotRow {
private LocalDate calendarDate;
private Long lineId;
private Long shiftId;
private BigDecimal plannedHours;
private LocalTime startTime;
private LocalTime endTime;
private Integer crossDay;
private BigDecimal efficiencyRate;
}

View File

@@ -0,0 +1,10 @@
package com.klp.aps.domain.row;
import lombok.Data;
@Data
public class ApsWmsOrderRow {
private Long orderId;
private String orderCode;
}

View File

@@ -0,0 +1,46 @@
package com.klp.aps.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 日历班次配置视图对象
*/
@Data
@ExcelIgnoreUnannotated
public class ApsCalendarShiftVo {
@ExcelProperty(value = "主键")
private Long configId;
@ExcelProperty(value = "日期")
private LocalDate calendarDate;
@ExcelProperty(value = "产线ID")
private Long lineId;
@ExcelProperty(value = "产线名称")
private String lineName;
@ExcelProperty(value = "班次ID")
private Long shiftId;
@ExcelProperty(value = "班次名称")
private String shiftName;
@ExcelProperty(value = "计划工时")
private BigDecimal plannedHours;
@ExcelProperty(value = "状态")
private Integer status;
@ExcelProperty(value = "状态名称")
private String statusName;
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.time.LocalDate;
/**
* 工厂日历视图对象
*/
@Data
@ExcelIgnoreUnannotated
public class ApsCalendarVo {
@ExcelProperty(value = "主键")
private Long calendarId;
@ExcelProperty(value = "日期")
private LocalDate calendarDate;
@ExcelProperty(value = "日历类型")
private Integer calendarType;
@ExcelProperty(value = "日历类型名称")
private String calendarTypeName;
@ExcelProperty(value = "工厂编码")
private String factoryCode;
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ApsFactoryCalendarDayVo {
private Integer taskCount = 0;
private Integer shiftCount = 0;
private Integer lineCount = 0;
/** 1=工作日,0=休息日,null=未知 */
private Integer dayStatus;
private List<ApsFactoryCalendarTaskLiteVo> tasks = new ArrayList<>();
}

View File

@@ -0,0 +1,15 @@
package com.klp.aps.domain.vo;
import lombok.Data;
@Data
public class ApsFactoryCalendarOverviewVo {
private Integer taskCount;
private Integer activeLineCount;
private Integer totalLineCount;
private Integer shiftCount;
private String totalHours;
private String peakDayText;
private String busiestLineText;
private String busiestLineShiftText;
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class ApsFactoryCalendarRespVo {
private ApsFactoryCalendarOverviewVo overview;
private List<String> dateList;
private Map<Long, String> lineNameMap;
private Map<Long, String> shiftNameMap;
private Map<String, ApsFactoryCalendarDayVo> lineDayMap;
private Map<String, ApsFactoryCalendarDayVo> lineShiftDayMap;
}

View File

@@ -0,0 +1,9 @@
package com.klp.aps.domain.vo;
import lombok.Data;
@Data
public class ApsFactoryCalendarTaskLiteVo {
private String label;
private String title;
}

View File

@@ -0,0 +1,33 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 甘特图条目返回
*/
@Data
public class ApsGanttItemVo {
private Long operationId;
private Long planId;
private String planCode;
private Long orderId;
private Long orderDetailId;
private Long productId;
private String productName;
private String material;
private String specification;
private Long processId;
private String processName;
private Long lineId;
private String lineName;
private Integer sequenceNo;
private BigDecimal planQty;
private LocalDateTime startTime;
private LocalDateTime endTime;
private Integer status;
private Integer lockedFlag;
}

View File

@@ -0,0 +1,54 @@
package com.klp.aps.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 产线能力视图对象
*/
@Data
@ExcelIgnoreUnannotated
public class ApsLineCapabilityVo {
@ExcelProperty(value = "主键")
private Long capabilityId;
@ExcelProperty(value = "产线ID")
private Long lineId;
@ExcelProperty(value = "产线名称")
private String lineName;
@ExcelProperty(value = "产品ID")
private Long productId;
@ExcelProperty(value = "产品名称")
private String productName;
@ExcelProperty(value = "工序ID")
private Long processId;
@ExcelProperty(value = "工序名称")
private String processName;
@ExcelProperty(value = "每小时产能")
private BigDecimal capacityPerHour;
@ExcelProperty(value = "换产时间(分钟)")
private Integer setupMinutes;
@ExcelProperty(value = "优先级")
private Integer priority;
@ExcelProperty(value = "是否启用")
private Integer isEnabled;
@ExcelProperty(value = "是否启用名称")
private String isEnabledName;
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,271 @@
package com.klp.aps.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 排产单明细视图对象 aps_plan_detail
*
* @author klp
* @date 2026-03-26
*/
@Data
@ExcelIgnoreUnannotated
public class ApsPlanDetailVo {
private static final long serialVersionUID = 1L;
/**
* 排产明细主键ID
*/
@ExcelProperty(value = "排产明细主键ID")
private Long planDetailId;
/**
* 关联排产单ID
*/
@ExcelProperty(value = "关联排产单ID")
private Long planSheetId;
/**
* 内容序号
*/
@ExcelProperty(value = "内容序号")
private String bizSeqNo;
/**
* 订单ID
*/
@ExcelProperty(value = "订单ID")
private Long orderId;
/**
* 销售内容:订单号
*/
@ExcelProperty(value = "销售内容:订单号")
private String orderCode;
/**
* 销售内容:订单合同号
*/
@ExcelProperty(value = "销售内容:订单合同号")
private String contractCode;
/**
* 销售内容:客户
*/
@ExcelProperty(value = "销售内容:客户")
private String customerName;
/**
* 销售内容:业务员
*/
@ExcelProperty(value = "销售内容:业务员")
private String salesman;
/**
* 原料信息:厂家
*/
@ExcelProperty(value = "原料信息:厂家")
private String rawManufacturer;
/**
* 原料信息:材质
*/
@ExcelProperty(value = "原料信息:材质")
private String rawMaterial;
/**
* 原料信息:厚度mm
*/
@ExcelProperty(value = "原料信息:厚度mm")
private BigDecimal rawThick;
/**
* 原料信息:宽度mm
*/
@ExcelProperty(value = "原料信息:宽度mm")
private BigDecimal rawWidth;
/**
* 原料钢卷ID
*/
@ExcelProperty(value = "原料钢卷ID")
private Long rawMaterialId;
/**
* 原料卷号
*/
@ExcelProperty(value = "原料卷号")
private String rawCoilNos;
/**
* 钢卷位置
*/
@ExcelProperty(value = "钢卷位置")
private String rawLocation;
/**
* 包装要求
*/
@ExcelProperty(value = "包装要求")
private String rawPackaging;
/**
* 宽度要求
*/
@ExcelProperty(value = "宽度要求")
private String rawEdgeReq;
/**
* 镀层种类
*/
@ExcelProperty(value = "镀层种类")
private String rawCoatingType;
/**
* 原料净重
*/
@ExcelProperty(value = "原料净重")
private BigDecimal rawNetWeight;
/**
* 成品信息:成品名称
*/
@ExcelProperty(value = "成品信息:成品名称")
private String productName;
/**
* 成品信息:材质
*/
@ExcelProperty(value = "成品信息:材质")
private String productMaterial;
/**
* 成品信息:镀层g
*/
@ExcelProperty(value = "成品信息:镀层g")
private BigDecimal coatingG;
/**
* 成品信息:成品宽度
*/
@ExcelProperty(value = "成品信息:成品宽度")
private BigDecimal productWidth;
/**
* 成品信息:轧制厚度
*/
@ExcelProperty(value = "成品信息:轧制厚度")
private BigDecimal rollingThick;
/**
* 成品信息:标签厚度
*/
@ExcelProperty(value = "成品信息:标签厚度")
private BigDecimal markCoatThick;
/**
* 成品信息:吨钢长度区间m
*/
@ExcelProperty(value = "成品信息:吨钢长度区间m")
private String tonSteelLengthRange;
/**
* 成品信息:数量
*/
@ExcelProperty(value = "成品信息:数量")
private BigDecimal planQty;
/**
* 成品信息:重量
*/
@ExcelProperty(value = "成品信息:重量")
private BigDecimal planWeight;
/**
* 成品信息:表面处理
*/
@ExcelProperty(value = "成品信息:表面处理")
private String surfaceTreatment;
/**
* 成品信息:切边要求
*/
@ExcelProperty(value = "成品信息:切边要求")
private String widthReq;
/**
* 成品信息:包装要求
*/
@ExcelProperty(value = "成品信息:包装要求")
private String productPackaging;
/**
* 成品信息:宽度要求
*/
@ExcelProperty(value = "成品信息:宽度要求")
private String productEdgeReq;
/**
* 成品信息:用途
*/
@ExcelProperty(value = "成品信息:用途")
private String usageReq;
/**
* 后处理
*/
@ExcelProperty(value = "后处理")
private String postProcess;
/**
* 下工序
*/
@ExcelProperty(value = "下工序")
private String nextProcess;
/**
* 取样
*/
@ExcelProperty(value = "取样")
private String sampleReq;
/**
* 生产开始时间
*/
@ExcelProperty(value = "生产开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 生产结束时间
*/
@ExcelProperty(value = "生产结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 技术附件
*/
@ExcelProperty(value = "技术附件")
private String techAnnex;
}

View File

@@ -0,0 +1,56 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApsPlanSheetRowVo {
private Long detailSheetId;
private java.time.LocalDate planDate;
private Long lineId;
private String lineName;
private String planCode;
private String planType;
private String scheduler;
private String masterRemark;
private String updateBy;
private String bizSeqNo;
private String orderCode;
private String contractCode;
private String customerName;
private String salesman;
private String productName;
private String productMaterial;
private BigDecimal coatingG;
private BigDecimal productWidth;
private BigDecimal rollingThick;
private BigDecimal markCoatThick;
private String tonSteelLengthRange;
private BigDecimal planQty;
private BigDecimal planWeight;
private String surfaceTreatment;
private String widthReq;
private String usageReq;
private String postProcess;
private String nextProcess;
private String sampleReq;
private String rawManufacturer;
private String rawMaterial;
private BigDecimal rawThick;
private BigDecimal rawWidth;
private String rawMaterialId;
private String rawCoilNos;
private String rawLocation;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private BigDecimal rawNetWeight;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String detailRemark;
}

View File

@@ -0,0 +1,76 @@
package com.klp.aps.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 排产单主视图对象 aps_plan_sheet
*
* @author klp
* @date 2026-03-26
*/
@Data
@ExcelIgnoreUnannotated
public class ApsPlanSheetVo {
private static final long serialVersionUID = 1L;
/**
* 排产单主键ID
*/
@ExcelProperty(value = "排产单主键ID")
private Long planSheetId;
/**
* 排产日期
*/
@ExcelProperty(value = "排产日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date planDate;
/**
* 产线ID
*/
@ExcelProperty(value = "产线ID")
private Long lineId;
/**
* 产线名称
*/
@ExcelProperty(value = "产线名称")
private String lineName;
/**
* 排产单号
*/
@ExcelProperty(value = "排产单号")
private String planCode;
/**
* 排产类型
*/
@ExcelProperty(value = "排产类型")
private String planType;
/**
* 排产人
*/
@ExcelProperty(value = "排产人")
private String scheduler;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,54 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApsQuickSheetRowVo {
private Long quickSheetId;
private java.time.LocalDate planDate;
private Long lineId;
private String lineName;
private String planCode;
private String planType;
private String scheduler;
private String remark;
private String bizSeqNo;
private String orderCode;
private String contractCode;
private String customerName;
private String salesman;
private String productName;
private String productMaterial;
private BigDecimal coatingG;
private BigDecimal productWidth;
private BigDecimal rollingThick;
private BigDecimal markCoatThick;
private String tonSteelLengthRange;
private BigDecimal planQty;
private BigDecimal planWeight;
private String surfaceTreatment;
private String widthReq;
private String usageReq;
private String postProcess;
private String nextProcess;
private String sampleReq;
private String rawManufacturer;
private String rawMaterial;
private BigDecimal rawThick;
private BigDecimal rawWidth;
private String rawMaterialId;
private String rawCoilNos;
private String rawLocation;
private String rawPackaging;
private String rawEdgeReq;
private String rawCoatingType;
private BigDecimal rawNetWeight;
private LocalDateTime startTime;
private LocalDateTime endTime;
}

View File

@@ -0,0 +1,30 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 统一排产表返回
*/
@Data
public class ApsScheduleSheetResp {
/** 表头元信息(可扩展:计划号/日期/机组等) */
private Map<String, Object> header;
/** 明细行 */
private List<ApsScheduleSheetRowVo> rows;
/** 合计 */
private Summary summary;
@Data
public static class Summary {
private Integer totalCount;
private BigDecimal totalPlanQty;
private BigDecimal totalRawNetWeight;
}
}

View File

@@ -0,0 +1,53 @@
package com.klp.aps.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 统一排产表行(前端统一展示用)
*
* 说明:字段是“统一超集”,不同机组可只展示子集,但表头保持一致。
*/
@Data
public class ApsScheduleSheetRowVo {
/** 排程主键 */
private Long operationId;
/** 产线 */
private Long lineId;
private String lineName;
/** 计划/订单 */
private Long planId;
private String planCode;
private Long orderId;
private String orderCode;
/** 销售信息 */
private String salesman;
private String customerName;
/** 产品/工序 */
private Long productId;
private String productName;
private String material;
private String specification;
private Long processId;
private String processName;
/** 排程数量/时间 */
private BigDecimal planQty;
private String startTime;
private String endTime;
/** 原料钢卷(来自 wms_material_coil 的展示字段MVP按 productId 兜底关联) */
private Long rawMaterialId; // 回填钢卷ID
private String rawCoilNos; // current_coil_no 逗号分隔
private String rawLocation; // 实际库位名称
private BigDecimal rawNetWeight; // 合计净重(吨/或 kg按库表单位展示
private String rawPackaging; // packaging_requirement
private String rawEdgeReq; // trimming_requirement
private String rawCoatingType; // coating_type
}

View File

@@ -0,0 +1,43 @@
package com.klp.aps.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalTime;
/**
* 班次模板视图对象
*/
@Data
@ExcelIgnoreUnannotated
public class ApsShiftTemplateVo {
@ExcelProperty(value = "主键")
private Long shiftId;
@ExcelProperty(value = "班次编码")
private String shiftCode;
@ExcelProperty(value = "班次名称")
private String shiftName;
@ExcelProperty(value = "开始时间")
private LocalTime startTime;
@ExcelProperty(value = "结束时间")
private LocalTime endTime;
@ExcelProperty(value = "跨天标识")
private Integer crossDay;
@ExcelProperty(value = "跨天标识名称")
private String crossDayName;
@ExcelProperty(value = "效率系数")
private BigDecimal efficiencyRate;
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,64 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.entity.ApsScheduleChangeLogEntity;
import com.klp.aps.domain.entity.ApsScheduleOperationEntity;
import com.klp.aps.domain.row.ApsLineCapabilityRow;
import com.klp.aps.domain.row.ApsLineMetaRow;
import com.klp.aps.domain.row.ApsOrderDetailRow;
import com.klp.aps.domain.row.ApsPlanDetailRow;
import com.klp.aps.domain.row.ApsProductMetaRow;
import com.klp.aps.domain.row.ApsSchedulePlanRow;
import com.klp.aps.domain.row.ApsShiftSlotRow;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.util.List;
public interface ApsAutoScheduleMapper {
ApsSchedulePlanRow selectPlanByIdForUpdate(@Param("planId") Long planId);
List<ApsOrderDetailRow> selectOrderDetailsByOrderId(@Param("orderId") Long orderId);
List<ApsPlanDetailRow> selectPlanDetailsByPlanId(@Param("planId") Long planId);
List<ApsLineCapabilityRow> selectLineCandidatesByProductAndLine(@Param("productId") Long productId,
@Param("lineId") Long lineId);
ApsLineMetaRow selectLineMetaById(@Param("lineId") Long lineId);
ApsProductMetaRow selectProductMetaById(@Param("productId") Long productId);
List<ApsShiftSlotRow> selectAvailableShifts(@Param("lineId") Long lineId,
@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate);
Long selectPlanDetailId(@Param("planId") Long planId, @Param("taskId") Long taskId);
int deleteUnlockedOperationsByPlanId(@Param("planId") Long planId);
/**
* 返回冲突记录的 end_time若无冲突返回 null
*/
LocalDateTime selectFirstConflictEndTime(@Param("lineId") Long lineId,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime,
@Param("excludeOperationId") Long excludeOperationId);
/**
* 返回命中锁定的 lock_end_time若未命中返回 null
*/
LocalDateTime selectFirstHitLockEndTime(@Param("lineId") Long lineId,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime,
@Param("planId") Long planId,
@Param("excludeOperationId") Long excludeOperationId);
int insertOperation(ApsScheduleOperationEntity op);
int insertChangeLog(ApsScheduleChangeLogEntity log);
int updatePlanStatus(@Param("planId") Long planId, @Param("status") Integer status, @Param("updateBy") String updateBy);
}

View File

@@ -0,0 +1,27 @@
package com.klp.aps.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.klp.aps.domain.entity.ApsCalendarEntity;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.util.List;
/**
* 工厂日历Mapper接口
*/
public interface ApsCalendarMapper extends BaseMapper<ApsCalendarEntity> {
/**
* 查询工厂日历列表
*/
List<ApsCalendarEntity> selectCalendarList(@Param("calendarDate") LocalDate calendarDate,
@Param("calendarType") Integer calendarType,
@Param("factoryCode") String factoryCode);
/**
* 根据日期和工厂编码查询
*/
ApsCalendarEntity selectByDateAndFactory(@Param("calendarDate") LocalDate calendarDate,
@Param("factoryCode") String factoryCode);
}

View File

@@ -0,0 +1,23 @@
package com.klp.aps.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.klp.aps.domain.entity.ApsCalendarShiftEntity;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.util.List;
/**
* 日历班次配置Mapper接口
*/
public interface ApsCalendarShiftMapper extends BaseMapper<ApsCalendarShiftEntity> {
/**
* 根据日期、产线和班次查询
*/
ApsCalendarShiftEntity selectByDateLineAndShift(@Param("calendarDate") LocalDate calendarDate,
@Param("lineId") Long lineId,
@Param("shiftId") Long shiftId);
List<Long> selectDistinctLineIds();
}

View File

@@ -0,0 +1,11 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.dto.ApsGanttQueryReq;
import com.klp.aps.domain.vo.ApsGanttItemVo;
import java.util.List;
public interface ApsGanttMapper {
List<ApsGanttItemVo> selectGanttItems(ApsGanttQueryReq req);
}

View File

@@ -0,0 +1,18 @@
package com.klp.aps.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.klp.aps.domain.entity.ApsLineCapabilityEntity;
import org.apache.ibatis.annotations.Param;
/**
* 产线能力Mapper接口
*/
public interface ApsLineCapabilityMapper extends BaseMapper<ApsLineCapabilityEntity> {
/**
* 根据产线、产品、工序查询
*/
ApsLineCapabilityEntity selectByLineProductAndProcess(@Param("lineId") Long lineId,
@Param("productId") Long productId,
@Param("processId") Long processId);
}

View File

@@ -0,0 +1,14 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.entity.ApsScheduleLockEntity;
import org.apache.ibatis.annotations.Param;
public interface ApsLockMapper {
int insertLock(ApsScheduleLockEntity lock);
int updateLockStatus(@Param("lockId") Long lockId,
@Param("status") Integer status,
@Param("updateBy") String updateBy);
}

View File

@@ -0,0 +1,15 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.entity.ApsScheduleChangeLogEntity;
import com.klp.aps.domain.entity.ApsScheduleOperationEntity;
import org.apache.ibatis.annotations.Param;
public interface ApsOperationMapper {
ApsScheduleOperationEntity selectByIdForUpdate(@Param("operationId") Long operationId);
int updateSlot(ApsScheduleOperationEntity op);
int insertChangeLog(ApsScheduleChangeLogEntity log);
}

View File

@@ -0,0 +1,24 @@
package com.klp.aps.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.klp.aps.domain.entity.ApsPlanDetail;
import com.klp.aps.domain.vo.ApsPlanDetailVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
/**
* 排产单明细Mapper接口
*
* @author klp
* @date 2026-03-26
*/
public interface ApsPlanDetailMapper extends BaseMapperPlus<ApsPlanDetailMapper, ApsPlanDetail, ApsPlanDetailVo> {
int deleteByPlanSheetIds(Collection<Long> planSheetIds);
Page<ApsPlanDetailVo> selectVoPagePlus(Page<ApsPlanDetailVo> page, @Param("ew") QueryWrapper<ApsPlanDetail> queryWrapper);
}

View File

@@ -0,0 +1,35 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.dto.ApsWmsOrderCreateReq;
import com.klp.aps.domain.dto.ApsWmsOrderDetailCreateReq;
import com.klp.aps.domain.entity.ApsSchedulePlanDetailEntity;
import com.klp.aps.domain.entity.ApsSchedulePlanEntity;
import com.klp.aps.domain.row.ApsCrmOrderItemRow;
import com.klp.aps.domain.row.ApsCrmOrderRow;
import com.klp.aps.domain.row.ApsOrderDetailRow;
import com.klp.aps.domain.row.ApsWmsOrderRow;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ApsPlanMapper {
List<ApsOrderDetailRow> selectOrderDetailsByOrderId(@Param("orderId") Long orderId);
ApsCrmOrderRow selectCrmOrderById(@Param("crmOrderId") String crmOrderId);
List<ApsCrmOrderItemRow> selectCrmOrderItemsByOrderId(@Param("crmOrderId") String crmOrderId);
ApsWmsOrderRow selectWmsOrderByCode(@Param("orderCode") String orderCode);
int insertWmsOrder(ApsWmsOrderCreateReq req);
int insertWmsOrderDetail(ApsWmsOrderDetailCreateReq req);
Long selectAnyProductionLineId();
int insertSchedulePlan(ApsSchedulePlanEntity plan);
int insertSchedulePlanDetail(ApsSchedulePlanDetailEntity detail);
}

View File

@@ -0,0 +1,22 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.dto.ApsPlanSheetQueryReq;
import com.klp.aps.domain.dto.ApsQuickSheetQueryReq;
import com.klp.aps.domain.entity.ApsPlanSheet;
import com.klp.aps.domain.vo.ApsPlanSheetRowVo;
import com.klp.aps.domain.vo.ApsPlanSheetVo;
import com.klp.aps.domain.vo.ApsQuickSheetRowVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* 排产单主Mapper接口
*
* @author klp
* @date 2026-03-26
*/
public interface ApsPlanSheetMapper extends BaseMapperPlus<ApsPlanSheetMapper, ApsPlanSheet, ApsPlanSheetVo> {
List<ApsPlanSheetRowVo> selectList(ApsPlanSheetQueryReq req);
}

View File

@@ -0,0 +1,111 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.dto.ApsQuickSheetQueryReq;
import com.klp.aps.domain.vo.ApsQuickSheetRowVo;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
public interface ApsQuickSheetMapper {
List<ApsQuickSheetRowVo> selectList(ApsQuickSheetQueryReq req);
int countToday(@Param("planDate") LocalDate planDate);
Long selectIdByPlanCode(@Param("planCode") String planCode);
int insertRow(@Param("lineId") Long lineId,
@Param("lineName") String lineName,
@Param("planDate") LocalDate planDate,
@Param("planCode") String planCode,
@Param("planType") String planType,
@Param("scheduler") String scheduler,
@Param("remark") String remark,
@Param("bizSeqNo") String bizSeqNo,
@Param("orderCode") String orderCode,
@Param("contractCode") String contractCode,
@Param("customerName") String customerName,
@Param("salesman") String salesman,
@Param("productName") String productName,
@Param("productMaterial") String productMaterial,
@Param("coatingG") BigDecimal coatingG,
@Param("productWidth") BigDecimal productWidth,
@Param("rollingThick") BigDecimal rollingThick,
@Param("markCoatThick") BigDecimal markCoatThick,
@Param("tonSteelLengthRange") String tonSteelLengthRange,
@Param("planQty") BigDecimal planQty,
@Param("planWeight") BigDecimal planWeight,
@Param("surfaceTreatment") String surfaceTreatment,
@Param("widthReq") String widthReq,
@Param("usageReq") String usageReq,
@Param("postProcess") String postProcess,
@Param("nextProcess") String nextProcess,
@Param("sampleReq") String sampleReq,
@Param("rawManufacturer") String rawManufacturer,
@Param("rawMaterial") String rawMaterial,
@Param("rawThick") BigDecimal rawThick,
@Param("rawWidth") BigDecimal rawWidth,
@Param("rawMaterialId") String rawMaterialId,
@Param("rawCoilNos") String rawCoilNos,
@Param("rawLocation") String rawLocation,
@Param("rawPackaging") String rawPackaging,
@Param("rawEdgeReq") String rawEdgeReq,
@Param("rawCoatingType") String rawCoatingType,
@Param("rawNetWeight") BigDecimal rawNetWeight,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime,
@Param("createBy") String createBy,
@Param("updateBy") String updateBy);
int updateRow(@Param("id") Long id,
@Param("lineId") Long lineId,
@Param("lineName") String lineName,
@Param("planCode") String planCode,
@Param("planType") String planType,
@Param("scheduler") String scheduler,
@Param("remark") String remark,
@Param("bizSeqNo") String bizSeqNo,
@Param("orderCode") String orderCode,
@Param("contractCode") String contractCode,
@Param("customerName") String customerName,
@Param("salesman") String salesman,
@Param("productName") String productName,
@Param("productMaterial") String productMaterial,
@Param("coatingG") BigDecimal coatingG,
@Param("productWidth") BigDecimal productWidth,
@Param("rollingThick") BigDecimal rollingThick,
@Param("markCoatThick") BigDecimal markCoatThick,
@Param("tonSteelLengthRange") String tonSteelLengthRange,
@Param("planQty") BigDecimal planQty,
@Param("planWeight") BigDecimal planWeight,
@Param("surfaceTreatment") String surfaceTreatment,
@Param("widthReq") String widthReq,
@Param("usageReq") String usageReq,
@Param("postProcess") String postProcess,
@Param("nextProcess") String nextProcess,
@Param("sampleReq") String sampleReq,
@Param("rawManufacturer") String rawManufacturer,
@Param("rawMaterial") String rawMaterial,
@Param("rawThick") BigDecimal rawThick,
@Param("rawWidth") BigDecimal rawWidth,
@Param("rawMaterialId") String rawMaterialId,
@Param("rawCoilNos") String rawCoilNos,
@Param("rawLocation") String rawLocation,
@Param("rawPackaging") String rawPackaging,
@Param("rawEdgeReq") String rawEdgeReq,
@Param("rawCoatingType") String rawCoatingType,
@Param("rawNetWeight") BigDecimal rawNetWeight,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime,
@Param("updateBy") String updateBy);
int deleteRow(@Param("id") Long id, @Param("updateBy") String updateBy);
int softDelete(@Param("id") Long id,
@Param("updateBy") String updateBy);
int deleteById(@Param("id") Long id, @Param("updateBy") String updateBy);
}

View File

@@ -0,0 +1,18 @@
package com.klp.aps.mapper;
import com.klp.aps.domain.dto.ApsScheduleSheetQueryReq;
import com.klp.aps.domain.vo.ApsScheduleSheetRowVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ApsScheduleSheetMapper {
List<ApsScheduleSheetRowVo> selectSheetRows(ApsScheduleSheetQueryReq req);
int deleteOperationCoils(@Param("operationId") Long operationId, @Param("updateBy") String updateBy);
int insertOperationCoil(@Param("operationId") Long operationId, @Param("coilId") Long coilId, @Param("createBy") String createBy);
int updateOperationSupplement(@Param("operationId") Long operationId, @Param("remarkJson") String remarkJson, @Param("updateBy") String updateBy);
}

View File

@@ -0,0 +1,16 @@
package com.klp.aps.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.klp.aps.domain.entity.ApsShiftTemplateEntity;
import org.apache.ibatis.annotations.Param;
/**
* 班次模板Mapper接口
*/
public interface ApsShiftTemplateMapper extends BaseMapper<ApsShiftTemplateEntity> {
/**
* 根据班次编码查询
*/
ApsShiftTemplateEntity selectByShiftCode(@Param("shiftCode") String shiftCode);
}

View File

@@ -0,0 +1,8 @@
package com.klp.aps.service;
import com.klp.aps.domain.dto.ApsAutoScheduleReq;
public interface ApsAutoScheduleService {
void autoSchedule(ApsAutoScheduleReq req, String operator);
}

View File

@@ -0,0 +1,45 @@
package com.klp.aps.service;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.aps.domain.bo.ApsCalendarBo;
import com.klp.aps.domain.vo.ApsCalendarVo;
import java.util.Collection;
import java.util.List;
/**
* 工厂日历Service接口
*/
public interface ApsCalendarService {
/**
* 查询工厂日历
*/
ApsCalendarVo queryById(Long calendarId);
/**
* 查询工厂日历列表
*/
TableDataInfo<ApsCalendarVo> queryPageList(ApsCalendarBo bo, PageQuery pageQuery);
/**
* 查询工厂日历列表
*/
List<ApsCalendarVo> queryList(ApsCalendarBo bo);
/**
* 新增工厂日历
*/
Boolean insertByBo(ApsCalendarBo bo);
/**
* 修改工厂日历
*/
Boolean updateByBo(ApsCalendarBo bo);
/**
* 校验并批量删除工厂日历
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,52 @@
package com.klp.aps.service;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.aps.domain.bo.ApsCalendarShiftBo;
import com.klp.aps.domain.vo.ApsCalendarShiftVo;
import java.util.Collection;
import java.util.List;
/**
* 日历班次配置Service接口
*/
public interface ApsCalendarShiftService {
/**
* 查询日历班次配置
*/
ApsCalendarShiftVo queryById(Long configId);
/**
* 查询日历班次配置列表
*/
TableDataInfo<ApsCalendarShiftVo> queryPageList(ApsCalendarShiftBo bo, PageQuery pageQuery);
/**
* 查询日历班次配置列表
*/
List<ApsCalendarShiftVo> queryList(ApsCalendarShiftBo bo);
/**
* 新增日历班次配置
*/
Boolean insertByBo(ApsCalendarShiftBo bo);
/**
* 修改日历班次配置
*/
Boolean updateByBo(ApsCalendarShiftBo bo);
/**
* 校验并批量删除日历班次配置
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 一键生成指定年份的工作日日历(状态=启用)
* @param overwriteExisting true=覆盖已有记录为工作日false=仅补齐缺失记录
*/
Integer generateWorkdayForYear(Integer year, Boolean overwriteExisting);
}

View File

@@ -0,0 +1,14 @@
package com.klp.aps.service;
import com.klp.aps.domain.dto.ApsGanttQueryReq;
import com.klp.aps.domain.vo.ApsFactoryCalendarRespVo;
import com.klp.aps.domain.vo.ApsGanttItemVo;
import java.util.List;
public interface ApsGanttService {
List<ApsGanttItemVo> selectGanttItems(ApsGanttQueryReq req);
ApsFactoryCalendarRespVo queryFactoryCalendar(ApsGanttQueryReq req);
}

View File

@@ -0,0 +1,45 @@
package com.klp.aps.service;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.page.TableDataInfo;
import com.klp.aps.domain.bo.ApsLineCapabilityBo;
import com.klp.aps.domain.vo.ApsLineCapabilityVo;
import java.util.Collection;
import java.util.List;
/**
* 产线能力Service接口
*/
public interface ApsLineCapabilityService {
/**
* 查询产线能力
*/
ApsLineCapabilityVo queryById(Long capabilityId);
/**
* 查询产线能力列表
*/
TableDataInfo<ApsLineCapabilityVo> queryPageList(ApsLineCapabilityBo bo, PageQuery pageQuery);
/**
* 查询产线能力列表
*/
List<ApsLineCapabilityVo> queryList(ApsLineCapabilityBo bo);
/**
* 新增产线能力
*/
Boolean insertByBo(ApsLineCapabilityBo bo);
/**
* 修改产线能力
*/
Boolean updateByBo(ApsLineCapabilityBo bo);
/**
* 校验并批量删除产线能力
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

Some files were not shown because too many files have changed in this diff Show More