Compare commits

...

491 Commits

Author SHA1 Message Date
zengchenxi bbc2867c7e Merge pull request '150' (#6) from 150 into master
7 months ago
qiuhongwu f961e0bea1 发货清单 不允许超过发货数量总数
7 months ago
qiuhongwu a001f64285 【生产任务派工单】、【装配任务派工单】派工数量,默认等于零件数量,不允许超过零件数量
7 months ago
qiuhongwu fc418e6c15 制造设备 状态默认为启用
7 months ago
qiuhongwu 8ed3590403 打印流程卡按钮颜色
7 months ago
qiuhongwu fca1253478 监听弹出框关闭方法 重置数据
7 months ago
qiuhongwu 98558f3385 产品工艺流程卡
7 months ago
zengchenxi dfa17a1941 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 47b8988d3c 【需求】临时隐藏
7 months ago
qiuhongwu 836da147c7 打印流程卡
7 months ago
qiuhongwu 7c6d3fe9d2 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
qiuhongwu 0f9f342808 打印流程卡字段
7 months ago
zengchenxi 7736336d4c 【需求】制造设备支持清空更新
7 months ago
zengchenxi bca04d8b6e 【需求】装配任务增加默认查询人
7 months ago
zengchenxi 0a437d7c91 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 395e4eca89 【需求】装配任务支持任务负责人查询
7 months ago
qiuhongwu 03d80dd4c5 整体盘点 点击确定获取全部物料
7 months ago
qiuhongwu f12161c96d 制造设备页面调整
7 months ago
siontion 465b26b0b8 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 1b7cf6564d 【生产任务单】刷新按钮出现时,如果单据状态为“已提交”,需要先提醒用户“请先取消提交,再点击此按钮!”
7 months ago
zengchenxi d0f7ec39af 【bug】修复装配任务展示问题
7 months ago
zengchenxi 0e72febc37 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 789852e157 【需求】增加指定字典类型查询
7 months ago
qiuhongwu 0faf8858cc 【生产任务单】单据提交以后,需要将这些字段设置为只读
7 months ago
qiuhongwu 8e5744a6d2 【生产任务派工单】、【装配任务派工单】1:设备型号这里需要修改下,现在没有做清空;2:将“设备型号”字段名修改为“制造设备”3.派工数量,默认等于零件数量,不允许超过零件数量
7 months ago
qiuhongwu 7dae610b70 制造设备
7 months ago
qiuhongwu ff7be7d37a 盘点信息 部分盘点
7 months ago
qiuhongwu 8f9e9bfd2c 【生产任务单】列表字段的BOM改成大写及点击单号到详情页
7 months ago
siontion f8d8c5fed0 生产任务 状态变更后页面刷新
7 months ago
siontion 86c05d894c 生产任务 Bom更新功能
7 months ago
siontion 28b1e618f3 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion dbe809034e 采购订单 库存数量 需求数量 统计
7 months ago
zengchenxi d59e7ce58d Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 4a1fa91bbe 【需求】优化项目操作逻辑+1
7 months ago
qiuhongwu d41cc1e2de 客户反馈质量编辑页
7 months ago
qiuhongwu ab3c315bcd 【订单发货】默认发货人姓名 用字典来获取id 获取名称
7 months ago
zengchenxi 9614a27843 【需求】优化项目操作逻辑
7 months ago
zengchenxi f3b05f21ed 【需求】优化bom明细零件重复性判断
7 months ago
qiuhongwu 9614805179 弹出框取消拖拽
7 months ago
qiuhongwu 80a37fab3a BOM版本号刷新按钮颜色
7 months ago
siontion d8fcb5d660 入库出库采购 物料选择框弹出优化
7 months ago
siontion 7c5a52d6f0 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion ca956dcc62 出入库 物料交互调整
7 months ago
qiuhongwu 42b331302c 【库存盘点】部分盘点时,点击“获取物料”,弹出框里面的查询条件进行回车搜索
7 months ago
qiuhongwu ffb41f4674 出库单
7 months ago
siontion 29aa08ccfb Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 5733af88b0 入库出库管理 仓库默认最小ID
7 months ago
qiuhongwu 66dc5efc3f 【订单信息】去发货获取发货数量
7 months ago
zengchenxi 30c4a22f14 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 0c87a22829 【bug】完善逻辑
7 months ago
qiuhongwu f20aaa3558 【生产任务单】任务明细负责人 为空=0问题
7 months ago
qiuhongwu 518bd8f5c0 【订单发货】1:提交以后需要把“项目编号“字段禁用掉;2:发货人电话需要根据发货人姓名带出来
7 months ago
siontion 793007c9db Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 794a753ea1 生成生产任务单优化
7 months ago
qiuhongwu 203cb834b4 【BOM清单明细】1:是否标准件,默认项改为“其他”;2:系统单位,默认项改为“EA”;3:BOM明细的高度需要固定下,先展示10条,超过的用滚动条
7 months ago
zengchenxi 7845a0d8b5 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 6466abb14d 【需求】支持清空更新
7 months ago
qiuhongwu 1c0f109f41 采购订单 实际价金额
7 months ago
qiuhongwu 04d64d0899 采购订单】按下图调整明细的字段名显示
7 months ago
qiuhongwu b9ed94eeb8 采购订单 按采购单类型 判断物料需求计划编号是否为必填项
7 months ago
siontion a80535c6b7 生产计划 异常处理优化
7 months ago
siontion b4f3c7d9a3 【采购订单】按“备库采购”+“加工件”下采购订单时,零件名称需要必填
7 months ago
siontion b40a32fed3 【库存盘点】获取物料的地方需要加上“规格型号”的搜索
7 months ago
siontion 80ea81053c 采购订单 备库 物料 控件更新 交互优化
7 months ago
siontion 7e29b3e585 【采购订单】头表汇总展示暂估价金额和实际价金额
7 months ago
siontion 2464d14fa6 生产任务 模具类型保存
7 months ago
siontion 1021c7e908 生产计划 模具类型 、设备型号调整为不可更改
7 months ago
siontion faeef0f0c1 生产计划 订单批准后自动生成
7 months ago
siontion bcb2e767b9 物料需求计划审核 去掉新增按钮
7 months ago
siontion 8aeb8902c0 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion d80c9472eb 出库管理 物料控件跟换,增加子项目弹框选择
7 months ago
zengchenxi 5a3cef16ab Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 70fe0579c1 【需求】初步完成打印子项目跟踪表
7 months ago
siontion 5ba533a230 库存管理 增加v_storage_material_all试图
7 months ago
siontion 7a88a3edf3 入库管理 物料编码名称组件更换,增加子项目弹框选择
7 months ago
siontion 7e1037d3b1 生产计划 项目负责人搜索修改
7 months ago
siontion 9524452c8e 入库单 取消仓库的输入条件
7 months ago
siontion 12e160ca37 采购订单 备库加工件增加零件名称必填项验证
7 months ago
siontion 895c32379b Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 0be830c893 生产任务 订单提交时增加判断bom是否存在
7 months ago
qiuhongwu 2de792955f 客户 材质 制造设备 客户设备 物料 工序 供应商 负责人 远程搜索框被禁用的数据在单据查询的时候加中划线展示
7 months ago
qiuhongwu 9123224051 被禁用的职工在单据查询的时候加横线展示出来
7 months ago
qiuhongwu c86e4266d7 生产计划新增打印子项目跟踪表
7 months ago
siontion 55c577b0b0 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 8588b9b600 工序DB 唯一索引增加租户ID
7 months ago
qiuhongwu 8ea967e2da 生产计划 明细表格长度调整
7 months ago
qiuhongwu 0a08886ef2 打印 模具生产计划单 附件接上页排序
7 months ago
zengchenxi 4b72a78262 【需求】历史序列号数据初始化
7 months ago
zengchenxi bf4151a49f 【优化】唯一索引调整
7 months ago
qiuhongwu 771e49e568 【库存盘点】修复 分页bug
7 months ago
zengchenxi c92db1688b Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 6943d46472 【需求】物料编码通过系统自动生成
7 months ago
qiuhongwu 8b96f856af 应收/应付管理模块 点击 发票号码到详情页
7 months ago
qiuhongwu 3d6ab4955a 质量管理模块 列表页 点击编号到详情页
7 months ago
qiuhongwu 8ac8394a94 BOM清单维护点击bom编号去详情页
7 months ago
qiuhongwu 3f418b8849 生产管理模块列表页点击单号进入详情页
7 months ago
zengchenxi aeaef9fb92 【需求】总页数字段优化+1
7 months ago
zengchenxi 790c3fc878 【需求】支持项目订单点选导出
7 months ago
zengchenxi ab58ec5286 【需求】总页数字段优化
7 months ago
qiuhongwu 2b0ca9d141 财务开票、发票接收页面调整
7 months ago
zengchenxi dd67674233 【需求】增加总页数字段
7 months ago
zengchenxi 93be931005 【需求】容许负责人更新+1
7 months ago
qiuhongwu 2679b4e043 负责人清空删除优化
7 months ago
zengchenxi eb5a6cc205 【需求】容许负责人更新
7 months ago
zengchenxi 2e7b2173b1 【需求】容许负责人更新
7 months ago
qiuhongwu 977e9d2580 处理负责人清空功能
7 months ago
zengchenxi 55fb78223d Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 71f7ebdcee 【需求】调整品质异常批准组件名称
7 months ago
qiuhongwu 23420b3de4 生产任务单更替远程搜索设备
7 months ago
qiuhongwu 9d45afd9fd 制造设备页面调整
7 months ago
zengchenxi 3810edff77 【需求】订单导出功能
7 months ago
zengchenxi 5ab458f0b1 【需求】派工任务完善+1
7 months ago
zengchenxi 2ddc8a2332 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi e48fdfb170 【需求】派工任务完善
7 months ago
qiuhongwu 815f582a88 【采购管理】新建采购单时,若采购单类型为“备库采购”,采购物类型默认为“物料”,不允许修改
7 months ago
qiuhongwu fb76468cc5 采购订单审核页
7 months ago
qiuhongwu 7be775e845 采购订单编辑页详情页按要求判断展示字段
7 months ago
zengchenxi 2f8ea83699 【需求】初步完成发票接收
7 months ago
zengchenxi 9c4b6bc7da 【需求】初步完成财务开票
7 months ago
zengchenxi bbfb2a6726 【优化】显示优化
7 months ago
qiuhongwu 20e9e4653a 新增制造设备远程搜索
7 months ago
zengchenxi 966e938f0f 【需求】增加编码或名称查询
7 months ago
zengchenxi 95d3ab73d4 【优化】新增按钮控制
7 months ago
siontion 5fa48afc06 生产任务单 提交时任务明细验证
7 months ago
siontion 36a4801ba6 入库管理 子项目名称更改弹出窗体选择
7 months ago
siontion 7f0e6c13b4 入库管理 物料改为弹窗筛选
7 months ago
qiuhongwu 350b3f0f1f 生产任务单
7 months ago
qiuhongwu cb6b072558 【质量管理】质量异常统计 客户反馈质量
7 months ago
siontion 437e6eab25 客户信息 简码、简称和全称字段调整
7 months ago
siontion 4996f0b5ff Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
siontion 579892eed0 生产计划 搜索修正
7 months ago
qiuhongwu c9a0e4a657 打印A3 初始化大小
7 months ago
qiuhongwu 90433f6768 优化库存盘点问题
7 months ago
siontion c372133ab5 生产计划任务单 功能实现
7 months ago
siontion 22e80d6c5d 生产任务单 生产计划自动生成
7 months ago
siontion 6e755160da 生产任务单 由生产计划生成
7 months ago
zengchenxi c33181b7c6 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 732789d400 【需求】初步完成制造设备
7 months ago
qiuhongwu 77814d960c 订单信息 项目名程重复出现问题
7 months ago
zengchenxi 55c863f330 【bug】修复角色启用状态问题
7 months ago
zengchenxi e1dd3d2c2d Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 2f66e75a4a 【需求】小程序接口补充
7 months ago
qiuhongwu 09892498a4 订单发货 默认剩余数量
7 months ago
qiuhongwu 9d98fa1096 【订单发货】待默认剩余数量
7 months ago
qiuhongwu 7c706572b4 品质异常单审核列表页样式
7 months ago
qiuhongwu 996b66ca46 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
7 months ago
qiuhongwu e0478db2b7 优化统一按需搜索框
7 months ago
zengchenxi dbd91ee581 Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 25de6b9b6c 【需求】增加发货数量
7 months ago
qiuhongwu f668fdbae8 过滤重复上传文件
7 months ago
zengchenxi 43af697a73 【需求】增加试模报告、认可报告功能
7 months ago
zengchenxi e2fef42584 【需求】初步完成质量异常统计
7 months ago
qiuhongwu 577161c261 客户信息 供应商信息 弹出对话框统一调整
7 months ago
zengchenxi 92d8bf6fab Merge remote-tracking branch 'origin/dev' into dev
7 months ago
zengchenxi 29241d2765 【需求】初步完成客户反馈质量
7 months ago
qiuhongwu 14c888d9b8 订单信息列表页
7 months ago
qiuhongwu 2f4bbf3272 生产计划列表页
7 months ago
zengchenxi d3574d9220 【需求】完成订单到派工单交互
7 months ago
zengchenxi a6e8cba474 【需求】初步完成品质异常通知单
7 months ago
zengchenxi f25fd0cd8b 【需求】初步完成品质异常通知单审核
7 months ago
zengchenxi e3e5551d12 【需求】优化展示
7 months ago
zengchenxi 88a820c88f 【需求】去除重复文件名称判断功能
7 months ago
zengchenxi dd1d0ba022 【需求】生产报工生成入库单
7 months ago
zengchenxi 0c79766f59 【需求】报工增加数值范围控制
7 months ago
zengchenxi 378f4bcf65 【需求】初步完成质量管理-检验报告上传
7 months ago
siontion 7a8ad652a6 生产计划任务 DB脚本
7 months ago
siontion 380c640eab 生产计划任务单 DB脚本及接口,UI代码导入
7 months ago
zengchenxi fd70830dfe 【需求】质量管理sql
7 months ago
zengchenxi 52c5340249 【需求】完善报工任务查询
7 months ago
qiuhongwu 83cafa780a 生产管理模块 派工单及报工记录页面调整
8 months ago
qiuhongwu 3dea2a212d 产品工艺流程卡打印功能
8 months ago
zengchenxi 6e67610601 【需求】完成派工任务操作部分
8 months ago
zengchenxi bdf6dc9719 【需求】微信小程序目录提交
8 months ago
zengchenxi 12122fbb65 【需求】派工任务分页查询
8 months ago
qiuhongwu f632f61cc3 添加打印单页面
8 months ago
zengchenxi d92ca511da Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi de8e00f29d 【需求】增加打印入口
8 months ago
qiuhongwu 31ac902403 产品工艺斜线和虚线添加
8 months ago
zengchenxi 9c1453ce64 【需求】完善报工记录
8 months ago
qiuhongwu 4d7f9d11ba 产品工艺流程卡初步
8 months ago
qiuhongwu 97dc32085f 工序远程优化
8 months ago
qiuhongwu 6690305233 库存盘点
8 months ago
zengchenxi fa3878f9b0 【需求】派工单详情完善
8 months ago
zengchenxi e53f349fd4 【需求】每日报工记录基础框架提交
8 months ago
zengchenxi 5def0102bc 【需求】v150 sql提交
8 months ago
qiuhongwu caf55bfb12 【订单信息】按照客户要求调整提出部门与项目名称
8 months ago
qiuhongwu 25e64adaa6 启动单隐藏费用说明
8 months ago
qiuhongwu de349879db 【订单发货】项目编号框换控件显示
8 months ago
zengchenxi db5ed1071b 【优化】增加业务接口展示
8 months ago
qiuhongwu 0184834ec8 【采购订单】采购编号 修改为 采购单号
8 months ago
siontion d8dcd19377 出入库 wms_storage stock_no长度设置为100
8 months ago
zengchenxi 6a491ef962 【优化】补充字段变更sql
8 months ago
siontion 636eea9d3d 物料审核计划审批 删除新增按钮
8 months ago
siontion b173018ea5 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion d3c99645b8 库存管理 库存盘点验证
8 months ago
qiuhongwu fb96296033 新增物料dialogbug
8 months ago
qiuhongwu 9e9f943928 采购管理模块 表格部分调整
8 months ago
zengchenxi 007e290bf8 【优化】查询条件调整
8 months ago
siontion 7d2e9a3f0e 采购订单 加工件明细保存展示
8 months ago
siontion 696c6c658d 物料需求计划 bom系统单位显示处理
8 months ago
siontion 95724dce6c Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 9640e0e1d2 入库管理 作废时验证库存是否小于作废数据
8 months ago
qiuhongwu ea3553b3f3 生产计划3D负责人
8 months ago
qiuhongwu 0f08e555ec 调整生产计划单号宽度
8 months ago
siontion dfc81d9a2c Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 7719050783 库存盘点 提交状态修正
8 months ago
zengchenxi e4ebe6cc53 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 00f37397aa 【优化】错误码配置优化
8 months ago
qiuhongwu 86c54456ad 优化全局表格靠右样式
8 months ago
siontion 58ea8e4814 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 634351f83e 采购订单 计划加工件需求数量展示
8 months ago
zengchenxi 9183d539aa 【优化】启动日志优化
8 months ago
siontion aeaa97671a Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion ae9059ec31 采购订单 物料明细展示修正
8 months ago
qiuhongwu 770cc39159 登录页提示 & 物料需求计划编辑和详情页布局
8 months ago
zengchenxi fa58e3b0e9 【优化】删除无用代码
8 months ago
zengchenxi 2cab1bc30e Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi eb2191f646 【需求】完善派工任务
8 months ago
qiuhongwu 59c9c6b7b8 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
qiuhongwu 5391d262f6 优化全部远程搜索
8 months ago
siontion f9eecdb2c3 采购订单 审核详情页数据展示
8 months ago
siontion 97881fd837 采购订单 加工件明细DB增加需求到货日期
8 months ago
siontion c148ca80f4 采购订单 增加需求到货日期
8 months ago
siontion 67ef9de7e6 采购订单 加工件DB脚本设计
8 months ago
siontion dfc8eabf4a 采购订单 加工件 需求数量保存
8 months ago
siontion b1b1a11ccf Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion cba27b3c6c 采购订单 编辑修改
8 months ago
zengchenxi 38c6665042 【需求】完善派工任务基础功能
8 months ago
zengchenxi eb278d6c98 【优化】删除子项逻辑优化,保留原有id
8 months ago
zengchenxi a6d9c61aba Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 85e503d119 【bug】修复删除明细不生效问题
8 months ago
qiuhongwu 4953005b4d 全局远程搜索替换
8 months ago
qiuhongwu 48dac377d7 优化
8 months ago
qiuhongwu ed8a3999a5 物料需求计划附件
8 months ago
qiuhongwu 9f72900ce2 物料需求计划
8 months ago
qiuhongwu cb81864ed6 【物料需求计划】
8 months ago
zengchenxi 7f1f16777f 【需求】新增物料导入功能
8 months ago
qiuhongwu 40ce037c65 封装供应商远程 及替换采购订单使用供应商部分
8 months ago
siontion 6583b2a0e5 采购订单 审核 编辑
8 months ago
qiuhongwu ff5131e289 设备型号 优化
8 months ago
siontion 7c57b7560f Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 5f52b645c8 采购订单 备库编辑
8 months ago
qiuhongwu e27b0a9dca 优化远程搜索
8 months ago
siontion 28b14030bd 采购订单 加工件明细DB脚本及接口
8 months ago
siontion af41059934 采购订单 新增物料需求计划
8 months ago
siontion 2aaff50a11 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 297cadd32d 物料需求计划审批 审批流程控制
8 months ago
qiuhongwu b140ee5e28 修改大屏数据
8 months ago
qiuhongwu b6fd5ec3c9 大屏数据
8 months ago
siontion 44491d90fb 物料需求计划 编辑页面功能开发
8 months ago
siontion 830ae38b0d Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion ac2ad4ec51 物料需求计划 加工件
8 months ago
siontion 65220620d8 物料需求计划 增加加工件
8 months ago
qiuhongwu 653cccdc1a 取消一次只能选择10个文件限制
8 months ago
qiuhongwu a74469150c 再次优化全部附件上传功能
8 months ago
zengchenxi 4afc2d2699 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi cb9809398a 【需求】工艺设计列表查询默认带入当前登录人
8 months ago
qiuhongwu 09bf4dfdee 采购订单附件
8 months ago
zengchenxi 0deeb7ea14 【需求】工艺设计所有进度页面增加生产状态
8 months ago
zengchenxi 54d60ce661 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi b1138cb777 【优化】增加子项目编号展示
8 months ago
qiuhongwu fd4e8a12b9 优化
8 months ago
qiuhongwu 0b513add12 物料需求计划 附件及远程优化
8 months ago
zengchenxi 2642e68573 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 4ebe8e6450 【优化】完善页面
8 months ago
qiuhongwu 398bbd101c 物料序号
8 months ago
zengchenxi 13e07e62e6 【优化】超时预警判断调整
8 months ago
qiuhongwu 2211599f40 优化
8 months ago
qiuhongwu 9f4888f2e9 订单发货附件
8 months ago
zengchenxi 2549519688 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi e73b202281 【优化】密度调整为浮点类型
8 months ago
qiuhongwu 70837c7c3e 订单信息附件优化
8 months ago
qiuhongwu 2debd78b9c bom优化
8 months ago
qiuhongwu 68d9c17f3a 工艺设计模块修复
8 months ago
qiuhongwu 860746b4dc 库存盘点 附件优化
8 months ago
siontion 359ad39db9 物料需求计划boom明细 DB设计及接口生成
8 months ago
zengchenxi 37a62f1752 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 772ed36b43 【优化】固定合立生产内网ip
8 months ago
qiuhongwu 1ce6bc16ce 出库管理附件
8 months ago
zengchenxi 7e521d6be5 【需求】派工任务详情页基础框架
8 months ago
siontion deff30bf07 出入库管理 物料展示控制
8 months ago
siontion f5961d5d8b Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
qiuhongwu 0940910c69 订单信息上传附件
8 months ago
siontion 5189b76361 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 415bf92fed 工序信息 增加类型显示
8 months ago
zengchenxi 6e1cee0898 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 28edfde268 【需求】增加密度单位展示
8 months ago
siontion 0b5beaf4b5 生产计划 打印
8 months ago
zengchenxi 6faf22a2d3 【bug】修复预警异常问题
8 months ago
qiuhongwu 7ee5fe3a20 新增工序远程搜索
8 months ago
zengchenxi c20f3cd8d2 【优化】展示调整
8 months ago
zengchenxi e855c0e600 【优化】去除无用文件
8 months ago
zengchenxi b228d5e2d8 【需求】初步完成生产任务派工单列表查询
8 months ago
zengchenxi fb7f8a7049 【bug】修复延期以及预警异常问题
8 months ago
qiuhongwu 6ab2c19608 生产计划优化
8 months ago
zengchenxi 72b8550e00 【优化】bom编号获取调整
8 months ago
qiuhongwu 3d3e3540f3 合同优化
8 months ago
qiuhongwu 8486f6bf07 优化
8 months ago
qiuhongwu a81e19e4f1 工艺设计编辑页/详情页 信息在input内展示
8 months ago
qiuhongwu bcfef4b969 工艺设计模块 全部列表页调整
8 months ago
zengchenxi fc924825aa Merge pull request 'v1.3.0' (#4) from dev into master
8 months ago
qiuhongwu 3955475b4a 修复 bug
8 months ago
siontion b49866f95f 物料需求计划 子项目编号
8 months ago
qiuhongwu 40cbd7dc84 优化
8 months ago
zengchenxi b104320c27 【需求】生产管理 生产任务基础框架提交
8 months ago
qiuhongwu d5be503399 订单信息远程搜索
8 months ago
qiuhongwu 98a2836da1 采购管理模块 编辑页/详情页布局调整
8 months ago
qiuhongwu 64b0851552 订单信息 客户名称替换远程搜索
8 months ago
zengchenxi 779d2be5ec 【需求】派工任务表结构提交
8 months ago
siontion 0e03e685ec 采购订单 审核页面币种锁定
8 months ago
siontion 93b9254fde 采购订单 导出文件重命名
8 months ago
siontion 7056783851 采购订单 金额DB字段更新
8 months ago
siontion c9e4f749df 采购订单 列表页搜索
8 months ago
siontion e51794e900 采购订单 物料渲染
8 months ago
siontion 6c32d75d7f 采购订单 搜索 数字控件保存
8 months ago
qiuhongwu 5b96759681 优化
8 months ago
qiuhongwu 03e08705a1 【物料采购】编辑页详情页 物料信息部分调整
8 months ago
zengchenxi 6435fe9329 【需求】去除无用表
8 months ago
zengchenxi d65b99a05e Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi b1725702a1 【优化】客户增加简称与全称合并查询、及查询优化
8 months ago
qiuhongwu 7f2edfe4e2 【入库管理】超出部分省略
8 months ago
qiuhongwu f43c38086e 【采购订单】复选框上下错位问题
8 months ago
qiuhongwu 59d8ae4382 【订单信息】新增时业务员默认登录人员
8 months ago
zengchenxi df4d5ab5a7 【需求】增加导出日期格式化工具
8 months ago
siontion 8146ad6516 生产计划 是否要工艺 页面控制调整
8 months ago
siontion fc228fa6b3 物料需求计划 新增后跳转到详情页
8 months ago
siontion b6d38c5ee3 物料需求计划 新增后跳转到详情页
8 months ago
siontion afa39f7cff 订单采购 按日期搜索
8 months ago
siontion b9463a550e 生产计划 销售订单推送设备信息
8 months ago
siontion dc480730be 采购订单 排序 设备信息展示
8 months ago
siontion 8a481e6adc 物料管理 接口过滤虚拟物料
8 months ago
qiuhongwu 63668f31c5 信息变更 表格列表行高光 及是否要工艺默认值为1
8 months ago
zengchenxi 94d8c82d50 【需求】提交时版本号+1
8 months ago
zengchenxi 40cb2543b4 【需求】完善工艺设计与订单交互
8 months ago
qiuhongwu 1782d55ace 【采购订单审核】
8 months ago
qiuhongwu dddd984c31 附件上传未上传完毕页面加载状态
8 months ago
qiuhongwu 20c0ecb109 物料远程搜索
8 months ago
siontion cd36d7125e 采购订单 批量下载
8 months ago
zengchenxi 9c09851332 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 1708f33271 【bug】修复跳转问题
8 months ago
qiuhongwu fa31dfd261 库存盘点 整体盘点不可选择
8 months ago
zengchenxi f7ad2273cd 【需求】新增子项高亮整行
8 months ago
zengchenxi c074eaaec3 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 0d6fe35ead 【需求】完善工艺设计与订单交互
8 months ago
qiuhongwu 7c9ede2af6 【采购订单】订单状态
8 months ago
qiuhongwu d117014c9b 库存盘点获取物料弹框 点击列表行勾选复选框
8 months ago
qiuhongwu 1cd843e272 【采购订单、物料需求计划、入库、出库】将物料编码与物料名称字段合并
8 months ago
qiuhongwu 6b301ac06f 【订单发货、库存盘点、采购订单】操作列注意靠右处理
8 months ago
qiuhongwu a00eb67a75 禅道问题优化
8 months ago
siontion 889cf8fc10 采购订单 新增保存后跳转到编辑页面
8 months ago
qiuhongwu 5715f2a134 工序弹出框字段修改
8 months ago
siontion 16dc0fdda4 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion f86f915c94 v1.4.0 DB脚本
8 months ago
qiuhongwu 68326e7250 【采购管理】物料需求计划及采购订单替换物料远程搜索
8 months ago
siontion 46b1e5c28b 采购订单 列表页订单状态控制
8 months ago
siontion 7a824573ee 库存盘点 新增跳转处理
8 months ago
zengchenxi fddeda466f Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi a59a198e16 【需求】已变更 后续所有行为只能针对可变更信息操作
8 months ago
siontion 427fd33751 物料远程搜索
8 months ago
siontion 09b382d0c6 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 32b8dec3ab 库存盘点 去除已删除
8 months ago
qiuhongwu 43da37d14d 优化预警通知
8 months ago
siontion 85354b486f 采购订单 路由跳转优化
8 months ago
siontion 6558e97c2c 采购订单 删除按钮
8 months ago
siontion a385d7d325 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
qiuhongwu b59a6ed2c6 采购订单新增页 采购单类型不可编辑
8 months ago
siontion bbce93db7d Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
qiuhongwu 820048a1ce 生产计划打印单日期部分优化
8 months ago
zengchenxi 54ac85277c 【需求】优化订单明细展示
8 months ago
siontion aca26fd060 物料管理 远程搜索接口
8 months ago
zengchenxi 546ec316e0 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 3b945c2655 【优化】增加用户选择disabled判断
8 months ago
qiuhongwu 6a9833be16 优化字典颜色
8 months ago
qiuhongwu 8d052fa277 采购订单导出修改
8 months ago
siontion 511c09e023 生产计划 菜单 打印
8 months ago
qiuhongwu ade045dbff 设备远程只获取启用值
8 months ago
zengchenxi ede8c52cc4 【需求】完善bom清单明细
8 months ago
siontion 5652a71423 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 739e5b4a1c 采购订单 乘税率导出 无税率按0处理
8 months ago
zengchenxi 8943ba5f11 【需求】初始化设备信息
8 months ago
zengchenxi 907ddb3a67 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 2b71b63d2e 【bug】优化变更字段判断逻辑
8 months ago
qiuhongwu 3dc3812fc3 工序信息字段替换
8 months ago
qiuhongwu 0517c2bbd3 生产计划字段修改
8 months ago
qiuhongwu ec44c55338 设计预警通知优化
8 months ago
zengchenxi bdbd390cd5 【需求】设备信息使用远程搜索
8 months ago
qiuhongwu 56aa10ece1 优化职工远程
8 months ago
qiuhongwu f4cc689b5a 封装设备型号远程搜索 及替换订单信息中设备型号搜索
8 months ago
siontion ebb112f8b3 采购订单 导出功能
8 months ago
zengchenxi 8130db9f25 【需求】bom完善
8 months ago
qiuhongwu a8702ce3d3 工艺设计 除BOM外的列表页调整
8 months ago
siontion f36dfde9e1 采购订单 编辑页重载
8 months ago
siontion eeaf391d3e 采购订单审核 采购单号链接跳转到详情页
8 months ago
siontion 91713f2450 采购订单 merge
8 months ago
siontion a987166ca9 采购订单审核 UI/UX 接口逻辑完成
8 months ago
qiuhongwu 0e7d284c7a 采购订单列表页
8 months ago
qiuhongwu d1392e4b83 问题修复
8 months ago
siontion be72e4f37f 采购订单 物料数据保存与再加载
8 months ago
siontion b510dce751 采购订单 UI/UX 接口代码生成
8 months ago
qiuhongwu bb6036aa2d 入库附件bug优化
8 months ago
zengchenxi 359036a915 【需求】bom明细页面基础展示框架提交
8 months ago
zengchenxi a20ebfddff 【需求】完成bom清单列表
8 months ago
zengchenxi 236510d24e 【需求】如生产计划已终止 不报预警
8 months ago
qiuhongwu 0f6ccfb46e 优化
8 months ago
zengchenxi 6d0a9992bf Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi f106a92256 【优化】刷新时如已手动关闭,则不再展示
8 months ago
qiuhongwu c17277ee5d 预警优化
8 months ago
zengchenxi c79a956369 【需求】bom基础框架提交
8 months ago
zengchenxi d4ccffb1f6 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 34999265e3 【需求】完成延期预警功能
8 months ago
siontion bf6d5a37d7 采购订单 DB脚本设计
8 months ago
qiuhongwu 0330250028 物料需求计划审核
8 months ago
qiuhongwu 1bc96f6e6f 物料需求计划
8 months ago
siontion ac05659313 生产计划 操作人员筛选增加工号
8 months ago
siontion 3712bdd76e 物料需求计划 审核列表详情页数据加载
8 months ago
qiuhongwu 362adc4b88 订单信息编辑页 业务员替换远程搜索
8 months ago
qiuhongwu acabafa8e8 预警初始化
8 months ago
siontion 0f139e169e 物料需求计划 详情页数据展示
8 months ago
zengchenxi 6f2c9b66e9 【优化】优化本地缓存 刷新后保留状态
8 months ago
qiuhongwu 8eb572ea2c header
8 months ago
zengchenxi 34e2810acf 【需求】初步完成设计进度一览
8 months ago
siontion 19086b7364 物料需求计划 编辑页 删除已有物料信息保存
8 months ago
siontion d5548fddde 物料需求计划 编辑页数据加载
8 months ago
qiuhongwu 345ab3f022 页面优化
8 months ago
qiuhongwu 28a554f123 过渡动画
8 months ago
zengchenxi 66b6e0d0bd 【需求】初步完成进度上报部分
8 months ago
qiuhongwu aa93a444a4 预警通告 拖动 隐藏
8 months ago
qiuhongwu ced36bfe69 预警弹框细节优化
8 months ago
siontion 47fe291ed0 物料需求计划 列表页面数据加载
8 months ago
zengchenxi 9f8cf8f198 【需求】完善页面显示
8 months ago
zengchenxi 0c1b34f472 【需求】完成工艺设计基础功能
8 months ago
qiuhongwu fdf2707d53 生产计划打印单优化
8 months ago
qiuhongwu f60c642939 预警通知 滚动条样式
8 months ago
qiuhongwu 664aae0ef3 预警通知 二版
8 months ago
qiuhongwu abbc9383f5 发货管理 计划管理 列表序号统一
8 months ago
qiuhongwu 1bfbd7871b 订单管理模块 列表序号统一
8 months ago
qiuhongwu 1128f80a6a 库存管理模块列表序号统一
8 months ago
qiuhongwu 1631d165f1 基础信息模块 列表序号统一
8 months ago
qiuhongwu 7257e36506 所有操作日志超过十条滑动查看
8 months ago
qiuhongwu 04f368a397 首页预警样式
8 months ago
qiuhongwu 9f7b6fffb5 优化
8 months ago
qiuhongwu cea7aab719 订单信息 材质远程搜索优化
8 months ago
zengchenxi 840f562afa Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi b34e1c646c 【需求】bom相关表sql
8 months ago
siontion 9bc78d239f 调整物料需求列表UI
8 months ago
zengchenxi a972cf272a 【优化】物料编码/名称 不容许修改
8 months ago
zengchenxi a40d9429a9 【优化】去除冗余表
8 months ago
siontion e5db1db169 物料需求计划 接口及页面生成
8 months ago
siontion 8df36cb0a3 Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 5e045615ad 增加 物料需求计划表 物料需求计划详情表 DB脚本
8 months ago
zengchenxi db3e135df4 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 1645d93e20 【优化】材质使用统一组件
8 months ago
qiuhongwu cb3f1cefef 优化
8 months ago
zengchenxi edb2aac013 Merge remote-tracking branch 'origin/dev' into dev
8 months ago
zengchenxi 1171ebe835 【优化】发货方式下拉增加清除功能
8 months ago
siontion 595dc70bf6 生产计划 隐藏新增按钮
8 months ago
qiuhongwu 4c30da1592 单选框 通用组件优化
8 months ago
qiuhongwu 6c8c096b7e 生产计划 项目编号 点击列表行选中复选框
8 months ago
qiuhongwu c032b2bc60 订单发货 项目编号弹框复选框 点击列表行选中
8 months ago
qiuhongwu 6190801297 通用组件 复选框点击列表行自动勾选
8 months ago
qiuhongwu 88dfe85d6a 优化
8 months ago
qiuhongwu 411428d486 出库附件信息上传文件失败 提示 及入库部分优化
8 months ago
qiuhongwu 7cc80a5602 入库附件信息上传失败文件提示
8 months ago
qiuhongwu d10767ac13 生产计划单 编辑、详情页项目共计日期
8 months ago
qiuhongwu a9291c9eda 设备型号 隐藏删除按钮
8 months ago
qiuhongwu 9ce0a237d2 设备型号
8 months ago
qiuhongwu e8b387a545 生产计划打印单 及生产计划单页面优化
8 months ago
siontion 522d302246 生产计划 增加生产计划编号搜索 去除业务员搜索
8 months ago
siontion 49ddb9c3b7 生产计划 订单 变更或终止 状态同步
8 months ago
siontion 32e9fe8135 生产计划 打印页面 首页数据加载
8 months ago
qiuhongwu cb0540b9ab 生产计划 打印
8 months ago
siontion 7389c5d418 生产计划 打印
8 months ago
qiuhongwu d880d03bac 设备型号
8 months ago
qiuhongwu 228bf02e6f Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
qiuhongwu da89c798b8 打印生产计划单
8 months ago
siontion 8beed27c5c Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion 6a01952b50 设备型号 UI/UX
8 months ago
qiuhongwu 6a1cce6ed4 盈亏差异 浮点计算保留两位小数
8 months ago
qiuhongwu e7d223b6b0 生产计划页面调整
8 months ago
siontion d92fc905da 生产计划 工艺流程数据 打印页面获取
8 months ago
siontion 590514c8fb 生产计划 打印模板页面数据初始化
8 months ago
siontion b2f4fadf9a 生产计划 打印模板页面数据初始化
8 months ago
siontion d20ea2c83a 出入库 保存按钮无物料验证取消
8 months ago
siontion 98d16154bf 生产计划 计划单号超链接
8 months ago
siontion f27df81383 生产计划 相关操作人下拉选择
8 months ago
siontion bc2a6c8098 生产计划 增加项目变更日期
8 months ago
siontion 9477f4e68e Merge branch 'dev' of http://222.71.165.188:3000/yunxi/mes-heli into dev
8 months ago
siontion af425f41f9 生产计划 子项目数据编辑
8 months ago
qiuhongwu 5db437404a 单据状态 操作 修改
8 months ago
siontion 1cbc705d7c 生产计划 状态修改
8 months ago
siontion 213006655a 生产计划 UI/UX 业务逻辑接口实现
8 months ago

@ -17,6 +17,9 @@ public final class PageResult<T> implements Serializable {
@Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED)
private Long total; private Long total;
@Schema(description = "总页数")
private Integer totalPages;
public PageResult() { public PageResult() {
} }
@ -25,6 +28,12 @@ public final class PageResult<T> implements Serializable {
this.total = total; this.total = total;
} }
public PageResult(List<T> list, Long total, Integer totalPages) {
this.list = list;
this.total = total;
this.totalPages = totalPages;
}
public PageResult(Long total) { public PageResult(Long total) {
this.list = new ArrayList<>(); this.list = new ArrayList<>();
this.total = total; this.total = total;

@ -31,7 +31,7 @@ public class BeanUtils {
if (source == null) { if (source == null) {
return null; return null;
} }
return new PageResult<>(toBean(source.getList(), targetType), source.getTotal()); return new PageResult<>(toBean(source.getList(), targetType), source.getTotal(), source.getTotalPages());
} }
} }

@ -20,36 +20,12 @@ public class BannerApplicationRunner implements ApplicationRunner {
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
ThreadUtil.execute(() -> { ThreadUtil.execute(() -> {
ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒,保证输出到结尾 ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒,保证输出到结尾
log.info("\n----------------------------------------------------------\n\t" + log.info("\n----------------------------------------------------------\n" +
"项目启动成功!\n\t" + "项目启动成功!\n" +
"接口文档: \t{} \n\t" + "\n" +
"开发文档: \t{} \n\t" + "{} \n" +
"视频教程: \t{} \n" +
"----------------------------------------------------------", "----------------------------------------------------------",
"https://doc.iocoder.cn/api-doc/", "Copyright ©上海长江云息数字科技有限公司,All Rights Reserved.");
"https://doc.iocoder.cn",
"https://t.zsxq.com/02Yf6M7Qn");
// 数据报表
if (isNotPresent("com.chanko.yunxi.mes.module.report.framework.security.config.SecurityConfiguration")) {
System.out.println("[报表模块 mes-module-report - 已禁用][参考 https://doc.iocoder.cn/report/ 开启]");
}
// 工作流
if (isNotPresent("com.chanko.yunxi.mes.framework.flowable.config.MesFlowableConfiguration")) {
System.out.println("[工作流模块 mes-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]");
}
// 微信公众号
if (isNotPresent("com.chanko.yunxi.mes.module.mp.framework.mp.config.MpConfiguration")) {
System.out.println("[微信公众号 mes-module-mp - 已禁用][参考 https://doc.iocoder.cn/mp/build/ 开启]");
}
// 商城系统
if (isNotPresent("com.chanko.yunxi.mes.module.trade.framework.web.config.TradeWebConfiguration")) {
System.out.println("[商城系统 mes-module-mall - 已禁用][参考 https://doc.iocoder.cn/mall/build/ 开启]");
}
// 支付平台
if (isNotPresent("com.chanko.yunxi.mes.module.pay.framework.pay.config.PayConfiguration")) {
System.out.println("[支付系统 mes-module-pay - 已禁用][参考 https://doc.iocoder.cn/pay/build/ 开启]");
}
}); });
} }

@ -72,6 +72,18 @@ public enum OperateTypeEnum {
* *
* */ * */
DELIVER(14), DELIVER(14),
/*
*
* */
SUBMIT(15),
/*
*
* */
CANCEL_SUBMIT(16),
/*
*
* */
CANCEL(17),
/** /**
* *
* *

@ -28,4 +28,15 @@ public interface OperateLogFrameworkService {
* @param content * @param content
*/ */
void createOperateLog(HttpServletRequest request, LocalDateTime startTime, String businessType, Long businessId, Integer type, String content); void createOperateLog(HttpServletRequest request, LocalDateTime startTime, String businessType, Long businessId, Integer type, String content);
/**
*
*
* @param startTime
* @param businessType
* @param businessId
* @param type
* @param content
*/
void createOperateLog(LocalDateTime startTime, String businessType, Long businessId, Integer type, String content);
} }

@ -58,4 +58,28 @@ public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkServic
operateLogApi.createOperateLog(reqDTO); operateLogApi.createOperateLog(reqDTO);
} }
@Override
public void createOperateLog(LocalDateTime startTime, String businessType, Long businessId, Integer type, String content) {
OperateLog operateLogObj = new OperateLog();
operateLogObj.setTraceId(TracerUtils.getTraceId());
operateLogObj.setStartTime(startTime);
operateLogObj.setBusinessType(businessType);
operateLogObj.setBusinessId(businessId);
operateLogObj.setUserId(WebFrameworkUtils.getLoginUserId());
operateLogObj.setUserType(WebFrameworkUtils.getLoginUserType());
operateLogObj.setModule("ignore");
operateLogObj.setName("ignore");
operateLogObj.setType(type);
operateLogObj.setContent(content);
operateLogObj.setRequestMethod("system");
operateLogObj.setRequestUrl("system");
operateLogObj.setUserIp("127.0.0.1");
operateLogObj.setUserAgent("system");
operateLogObj.setJavaMethod("system");
operateLogObj.setDuration((int) (LocalDateTimeUtil.between(startTime, LocalDateTime.now()).toMillis()));
operateLogObj.setResultCode(SUCCESS.getCode());
OperateLogCreateReqDTO reqDTO = BeanUtil.toBean(operateLogObj, OperateLogCreateReqDTO.class);
operateLogApi.createOperateLog(reqDTO);
}
} }

@ -0,0 +1,42 @@
package com.chanko.yunxi.mes.framework.excel.core.convert;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
*
*
* @author chenxi
* @date 2024-02-28 09:01
*/
public class TimestampToDateConvert implements Converter<Object> {
@Override
public WriteCellData<?> convertToExcelData(Object value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
try {
String date = "";
if(value instanceof Long){
long timestamp = (Long) value;
date = new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
}else if(value instanceof String){
long timestamp = Long.parseLong((String) value);
date = new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
}else if(value instanceof LocalDateTime){
LocalDateTime local = (LocalDateTime) value;
date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(local);
}
return new WriteCellData<>(date);
}catch (Exception e){
}
return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration);
}
}

@ -1,9 +1,6 @@
package com.chanko.yunxi.mes.framework.mybatis.core.mapper; package com.chanko.yunxi.mes.framework.mybatis.core.mapper;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.util.MyBatisUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -11,10 +8,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.toolkit.Db; import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.util.MyBatisUtils;
import com.github.yulichang.base.MPJBaseMapper; import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.interfaces.MPJBaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -37,7 +38,7 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
IPage<T> mpPage = MyBatisUtils.buildPage(pageParam); IPage<T> mpPage = MyBatisUtils.buildPage(pageParam);
selectPage(mpPage, queryWrapper); selectPage(mpPage, queryWrapper);
// 转换返回 // 转换返回
return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); return new PageResult<>(mpPage.getRecords(), mpPage.getTotal(), new BigDecimal(mpPage.getTotal()).divide(new BigDecimal(pageParam.getPageSize()),0, BigDecimal.ROUND_CEILING).intValue());
} }
default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, Class<DTO> resultTypeClass, MPJBaseJoin<T> joinQueryWrapper) { default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, Class<DTO> resultTypeClass, MPJBaseJoin<T> joinQueryWrapper) {

@ -28,6 +28,12 @@
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>

@ -0,0 +1,23 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-01 04:42
*/
@Getter
public enum BoomDetailTypeEnum {
MATERIAL("1", "原材料"),
OTHER("2", "加工件");
private String code;
private String description;
BoomDetailTypeEnum(String code, String description) {
this.code = code;
this.description = description;
}
}

@ -13,6 +13,17 @@ public enum BusinesTypeEnum {
PROJECT_ORDER("销售订单"), PROJECT_ORDER("销售订单"),
PROJECT_ORDER_SNAPSHOT("销售订单快照"), PROJECT_ORDER_SNAPSHOT("销售订单快照"),
DELIVER_ORDER("发货订单"), DELIVER_ORDER("发货订单"),
PROCESS_BOM("工艺BOM"),
TASK_DISPATCH("派工单"),
TASK_DISPATCH_PRODUCTION("生产任务派工单"),
TASK_DISPATCH_ASSEMBLE("装配任务派工单"),
INSPECTION_REPORT("检测报告"),
UNQUALIFIED_NOTIFICATION("品质异常通知单"),
PLAN_TASK("生产任务单"),
FINANCE_MAKE_INVOICE("财务开票"),
FINANCE_RECEIVE_INVOICE("发票接收"),
FINANCE_INVOICE("财务发票"),
MATERIAL("物料"),
; ;
private String description; private String description;

@ -12,7 +12,13 @@ public enum BusinessFileTypeEnum {
CONTRACT("合同"), CONTRACT("合同"),
TECHNOLOGY_PROTOCOL("技术协议"), TECHNOLOGY_PROTOCOL("技术协议"),
ID_CARD("身份证照片"); ID_CARD("身份证照片"),
COMPOSITION_REPORT("材质报告"),
HEAT_TREATMENT_REPORT("热处理报告"),
SCAN_REPORT("扫描报告"),
TRI_LINEAR_COORDINATES_MEASURING("三坐标检测报告"),
CERTIFICATE_OF_QUALIFICATION("合格证"),
;
private String description; private String description;

@ -43,6 +43,14 @@ public enum CodeEnum {
STOCK_CHECK("盘点单据", "WC", 3, "yyyyMM"), STOCK_CHECK("盘点单据", "WC", 3, "yyyyMM"),
PROJECT_ORDER("业务订单", 3, "yyyyMM"), PROJECT_ORDER("业务订单", 3, "yyyyMM"),
PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"), PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"),
PROJECT_PLAN("生产计划", "PP",3, "yyyyMM"),
PROJECT_PLAN_TASK("生产计划任务单", "PT",3, "yyyyMMdd"),
MATERIAL_PLAN("物料需求计划", "PR",4, "yyyyMMdd"),
PURCHASE_ORDER("采购订单", "PO",4, "yyyyMMdd"),
TASK_DISPATCH_PRODUCTION("生产任务派工单", "PTD", 3, "yyyyMMdd"),
TASK_DISPATCH_ASSEMBLE("装配任务派工单", "ATD", 3, "yyyyMMdd"),
UNQUALIFIED_NOTIFICATION("品质异常通知单", "RN", 4, "yyyyMMdd"),
MATERIAL("物料", 6),
; ;
@ -53,6 +61,13 @@ public enum CodeEnum {
private int sequenceArgsLength; private int sequenceArgsLength;
private String dateFormat; private String dateFormat;
CodeEnum(String description, int sequenceLength){
this.description = description;
this.sequenceLength = sequenceLength;
this.sequenceArgsLength = 2;
this.sequenceTemplate = "%s%0"+sequenceLength+"d";
}
CodeEnum(String description, String prefix, int sequenceLength) { CodeEnum(String description, String prefix, int sequenceLength) {
this.description = description; this.description = description;
this.prefix = prefix; this.prefix = prefix;

@ -0,0 +1,18 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
@Getter
public enum DictTypeConstants {
MATERIAL_TYPE("heli_material_type", "物料类型"),
MATERIAL_UNIT("heli_material_unit", "物料单位");
private String code;
private String description;
DictTypeConstants(String code, String description) {
this.code = code;
this.description = description;
}
}

@ -17,13 +17,19 @@ import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
* 004 * 004
* 005 * 005
* 006 * 006
* 007
* 008
* 009
* 010
* 011
* 3 * 3
*/ */
public interface ErrorCodeConstants { public interface ErrorCodeConstants {
ErrorCode CODE_REPEAT = new ErrorCode(1_000_001, "编码不能重复"); ErrorCode CODE_REPEAT = new ErrorCode(1_000_001, "编码不能重复");
ErrorCode INVALID_OPERATE = new ErrorCode(1_000_002, "无效操作"); ErrorCode INVALID_OPERATE = new ErrorCode(1_000_002, "无效操作");
ErrorCode IMPORT_ERROR = new ErrorCode(1_000_003, "导入失败:{}");
ErrorCode DICT_TYPE_ERROR = new ErrorCode(1_000_003, "无法识别枚举类型");
/************基础信息**********/ /************基础信息**********/
ErrorCode MATERIAL_NOT_EXISTS = new ErrorCode(1_001_001, "物料不存在"); ErrorCode MATERIAL_NOT_EXISTS = new ErrorCode(1_001_001, "物料不存在");
ErrorCode COMPOSITION_NOT_EXISTS = new ErrorCode(1_001_002, "材质不存在"); ErrorCode COMPOSITION_NOT_EXISTS = new ErrorCode(1_001_002, "材质不存在");
@ -33,6 +39,10 @@ public interface ErrorCodeConstants {
ErrorCode PROCEDURE_NOT_EXISTS = new ErrorCode(1_001_006, "工序不存在"); ErrorCode PROCEDURE_NOT_EXISTS = new ErrorCode(1_001_006, "工序不存在");
ErrorCode SERIAL_NUMBER_NOT_EXISTS = new ErrorCode(1_001_007, "序列号记录不存在"); ErrorCode SERIAL_NUMBER_NOT_EXISTS = new ErrorCode(1_001_007, "序列号记录不存在");
ErrorCode EQUIP_NOT_EXISTS = new ErrorCode(1_001_008, "设备信息不存在"); ErrorCode EQUIP_NOT_EXISTS = new ErrorCode(1_001_008, "设备信息不存在");
ErrorCode MATERIAL_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_001_009, "导入物料数据不能为空");
ErrorCode MATERIAL_IMPORT_CODE_REPEAT = new ErrorCode(1_001_010, "导入物料数据存在重复编码: {}");
ErrorCode EQUIP_MANUFACTURE_NOT_EXISTS = new ErrorCode(1_001_011, "制造设备不存在");
ErrorCode MATERIAL_IMPORT_CODE_NOT_STANDARD = new ErrorCode(1_001_012, "物料编码不符合标准");
/*********组织架构************/ /*********组织架构************/
ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_002_001, "车间不存在"); ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_002_001, "车间不存在");
@ -57,4 +67,30 @@ public interface ErrorCodeConstants {
ErrorCode DELIVER_AMOUNT_OVERFLOW = new ErrorCode(1_005_003, "超额发货"); ErrorCode DELIVER_AMOUNT_OVERFLOW = new ErrorCode(1_005_003, "超额发货");
/************工艺设计***********/ /************工艺设计***********/
ErrorCode PROCESS_DESIGN_NOT_EXISTS = new ErrorCode(1_006_001, "工艺设计不存在"); ErrorCode PROCESS_DESIGN_NOT_EXISTS = new ErrorCode(1_006_001, "工艺设计不存在");
ErrorCode PROCESS_BOM_NOT_EXISTS = new ErrorCode(1_006_002, "工艺bom不存在");
ErrorCode PROCESS_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_006_003, "工艺bom明细不存在");
/************生产计划管理***********/
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_007_001, "生产计划不存在");
ErrorCode PLAN_SUB_NOT_EXISTS = new ErrorCode(1_007_002, "生产计划子项目不存在");
ErrorCode PLAN_TASK_NOT_EXISTS = new ErrorCode(1_007_003, "生产计划任务不存在");
ErrorCode PLAN_TASK_BOM_NOT_EXISTS = new ErrorCode(1_007_004, "生产计划任务Bom不存在");
/************采购管理***********/
ErrorCode MATERIAL_PLAN_NOT_EXISTS = new ErrorCode(1_008_001, "物料需求计划不存在");
ErrorCode MATERIAL_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_008_002, "物料需求计划物料详情不存在");
ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_003, "采购订单不存在");
ErrorCode PURCHASE_ORDER_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_004, "采购单物料不存在");
ErrorCode MATERIAL_PLAN_BOOM_NOT_EXISTS = new ErrorCode(1_008_005, "物料需求计划加工件明细不存在");
ErrorCode PURCHASE_ORDER_BOOM_NOT_EXISTS = new ErrorCode(1_008_006, "采购订单加工件明细不存在");
/************生产管理***********/
ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在");
ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在");
ErrorCode TASK_REPORT_PARAMS_ERROR = new ErrorCode(1_009_003, "报工数量或报工工时不能为空");
ErrorCode TASK_DISPATCH_TASK_NOT_EXISTS = new ErrorCode(1_009_004, "任务不存在或已完成");
ErrorCode TASK_DISPATCH_TASK_NO_PERMISSION_FOR_OPERATE = new ErrorCode(1_009_005, "任务不满足操作条件");
ErrorCode TASK_DISPATCH_TASK_REPORT_AMOUNT_EXCESS = new ErrorCode(1_009_006, "无法超额报工");
/*************质量管理***********/
ErrorCode UNQUALIFIED_NOTIFICATION_NOT_EXISTS = new ErrorCode(1_010_001, "品质异常通知单审核不存在");
ErrorCode QUALITY_FEEDBACK_NOT_EXISTS = new ErrorCode(1_010_002, "客户反馈质量不存在");
/*************应收应付管理***********/
ErrorCode INVOICE_NOT_EXISTS = new ErrorCode(1_011_001, "财务发票不存在");
} }

@ -0,0 +1,24 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-26 11:25
*/
@Getter
public enum InvoiceStatusEnum {
SAVE(1, "已保存"),
SUBMIT(2, "已提交"),
CANCEL(3, "已作废");
private int code;
private String description;
InvoiceStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -2,6 +2,8 @@ package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter; import lombok.Getter;
import java.util.Arrays;
/** /**
* *
* @author chenxi * @author chenxi
@ -10,18 +12,24 @@ import lombok.Getter;
@Getter @Getter
public enum MaterialTypeEnum { public enum MaterialTypeEnum {
RAW("1", "原材料"), RAW("1", "原材料", "2"),
ACCESSORY("2", "副资材"), ACCESSORY("2", "副资材", "4"),
OFFICE("3", "办公/劳保"), OFFICE("3", "办公/劳保", "3"),
GIVING("4", "赠送物品"), GIVING("4", "赠送物品", "5"),
STANDARD("5", "标准件"), STANDARD("5", "标准件", "1"),
VIRTUAL("6", "虚拟物料"); VIRTUAL("6", "虚拟物料", "0");
private String code; private String code;
private String description; private String description;
private String prefix;
MaterialTypeEnum(String code, String description) { MaterialTypeEnum(String code, String description, String prefix) {
this.code = code; this.code = code;
this.description = description; this.description = description;
this.prefix = prefix;
}
public static MaterialTypeEnum getMaterialType(String code){
return Arrays.stream(MaterialTypeEnum.values()).filter(materialTypeEnum -> materialTypeEnum.code.equals(code)).findFirst().get();
} }
} }

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
* bom
* @author chenxi
* @date 2024-02-26 11:25
*/
@Getter
public enum ProcessBomStatusEnum {
SAVE(1, "已保存"),
SUBMIT(2, "已提交"),
CANCEL_SUBMIT(1, "取消提交"),
TERMINATE(3, "已终止");
private int code;
private String description;
ProcessBomStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,23 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-21 01:09
*/
@Getter
public enum ProcessDesignTypeEnum {
BLUEPRINT_FOUNDRY_TECHNOLOGY("铸造工艺"),
BLUEPRINT_3D("3D图纸"),
BLUEPRINT_2D("2D图纸"),
BLUEPRINT_WORKBLANK("毛坯图纸");
private String description;
ProcessDesignTypeEnum(String description) {
this.description = description;
}
}

@ -0,0 +1,26 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-01-18 01:19
*/
@Getter
public enum ProjectPlanStatusEnum {
START(1, "未开始"),
PRODUCING(2, "生产中"),
COMPLETE(3, "已完成"),
TERMINATE(4, "已终止"),
CHANGE(5, "已变更"),
;
private int code;
private String description;
ProjectPlanStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-01-18 01:19
*/
@Getter
public enum PurchaseStatusEnum {
START(1, "已保存"),
SUBMIT(2, "已送审"),
AUDIT(3, "已审核"),
REFUSE(4, "已打回"),
;
private int code;
private String description;
PurchaseStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,27 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-01 02:31
*/
@Getter
public enum StockInTypeEnum {
RECEIVE(1, "采购入库"),
GAIN(2, "盘盈入库"),
PRODUCTION(3, "生产入库"),
OTHER(4, "其他入库"),
RETURN(5, "车间退料")
;
private int code;
private String description;
StockInTypeEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,24 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-03-04 04:44
*/
@Getter
public enum TaskDispatchProcedureStatusEnum {
DEFAULT(0, "默认"),
SUBMITTED(1, "已提交"),
COMPLETED(2, "已完成");
private int code;
private String description;
TaskDispatchProcedureStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-26 11:25
*/
@Getter
public enum TaskDispatchStatusEnum {
SAVE(1, "已保存"),
SUBMIT(2, "已提交"),
CANCEL_SUBMIT(1, "取消提交"),
TERMINATE(3, "已终止");
private int code;
private String description;
TaskDispatchStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,28 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.TASK_DISPATCH_ASSEMBLE;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.TASK_DISPATCH_PRODUCTION;
/**
*
* @author chenxi
* @date 2024-03-12 02:28
*/
@Getter
public enum TaskDispatchTypeEnum {
PRODUCTION(BusinesTypeEnum.TASK_DISPATCH_PRODUCTION, TASK_DISPATCH_PRODUCTION, "生产任务"),
ASSEMBLE(BusinesTypeEnum.TASK_DISPATCH_ASSEMBLE, TASK_DISPATCH_ASSEMBLE, "装配任务");
private BusinesTypeEnum businesTypeEnum;
private CodeEnum codeEnum;
private String description;
TaskDispatchTypeEnum(BusinesTypeEnum businesTypeEnum, CodeEnum codeEnum, String description) {
this.businesTypeEnum = businesTypeEnum;
this.codeEnum = codeEnum;
this.description = description;
}
}

@ -0,0 +1,23 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-03-08 10:03
*/
@Getter
public enum TaskReportOperateEnum {
START("开始"),
END("结束"),
SUBMIT("提交"),
FINISH("完成")
;
private String description;
TaskReportOperateEnum(String description) {
this.description = description;
}
}

@ -0,0 +1,24 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-26 11:25
*/
@Getter
public enum UnqualifiedNotificationStatusEnum {
SAVE(1, "已保存"),
SUBMIT(2, "已送审"),
AUDIT(3, "已审核");
private int code;
private String description;
UnqualifiedNotificationStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,22 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-27 10:28
*/
@Getter
public enum ValidStatusEnum {
VALID(1, "有效"),
INVALID(2, "无效");
private int code;
private String description;
ValidStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,20 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-23 10:15
*/
@Getter
public enum WarningEnum {
PROCESS_DESIGN_DEFERRED_WARNING("工艺设计延期预警");
private String description;
WarningEnum(String description) {
this.description = description;
}
}

@ -0,0 +1,56 @@
package com.chanko.yunxi.mes.module.heli.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
*
*
* @author chenxi
* @date 2024-02-23 09:54
*/
@Data
@Accessors(chain = true)
public class WarningMessageVO {
@Schema(description = "是否包含预警信息")
private boolean hasWarning = false;
@Schema(description = "预警信息")
private List<WarningVO> warnings;
public static abstract class WarningVO {}
@Data
@Accessors(chain = true)
public static class ProcessDesignDeferredWarningVO extends WarningVO {
/**
* {@link com.chanko.yunxi.mes.module.heli.enums.WarningEnum}
*/
@Schema(description = "预警类型")
private String warningType;
/**
* {@link com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum}
*/
@Schema(description = "工艺设计类型")
private String processDesignType;
@Schema(description = "预警接收人")
private String ownerName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "剩余时间")
private long remainingTime;
}
}

@ -0,0 +1,24 @@
package com.chanko.yunxi.mes.module.heli.config;
import com.chanko.yunxi.mes.framework.swagger.config.MesSwaggerAutoConfiguration;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* system web Configuration
*
* @author
*/
@Configuration(proxyBeanMethods = false)
public class HeliWebConfiguration {
/**
* system API
*/
@Bean
public GroupedOpenApi heliGroupedOpenApi() {
return MesSwaggerAutoConfiguration.buildGroupedOpenApi("heli");
}
}

@ -1,10 +1,13 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -35,6 +38,6 @@ public class CompositionPageReqVO extends PageParam {
private String original; private String original;
@Schema(description = "密度") @Schema(description = "密度")
private String density; private BigDecimal density;
} }

@ -1,14 +1,14 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo;
import io.swagger.v3.oas.annotations.media.Schema; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import lombok.*; import com.alibaba.excel.annotation.ExcelProperty;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 材质 Response VO") @Schema(description = "管理后台 - 材质 Response VO")
@Data @Data
@ -46,6 +46,6 @@ public class CompositionRespVO {
@Schema(description = "密度") @Schema(description = "密度")
@ExcelProperty("密度") @ExcelProperty("密度")
private String density; private BigDecimal density;
} }

@ -1,37 +1,38 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.composition.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import javax.validation.constraints.*; import javax.validation.constraints.NotEmpty;
import java.util.*; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 材质新增/修改 Request VO")
@Data @Schema(description = "管理后台 - 材质新增/修改 Request VO")
public class CompositionSaveReqVO { @Data
public class CompositionSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "457")
private Long id; @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "457")
private Long id;
@Schema(description = "材质名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "材质名不能为空") @Schema(description = "材质名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
private String name; @NotEmpty(message = "材质名不能为空")
private String name;
@Schema(description = "材质代号")
private String code; @Schema(description = "材质代号")
private String code;
@Schema(description = "描述", example = "随便")
private String description; @Schema(description = "描述", example = "随便")
private String description;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空") @Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
private Integer status; @NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "来源", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "来源不能为空") @Schema(description = "来源", requiredMode = Schema.RequiredMode.REQUIRED)
private String original; @NotEmpty(message = "来源不能为空")
private String original;
@Schema(description = "密度")
private String density; @Schema(description = "密度")
private BigDecimal density;
}
}

@ -21,12 +21,15 @@ public class CustomerPageReqVO extends PageParam {
@Schema(description = "客户编码") @Schema(description = "客户编码")
private String code; private String code;
@Schema(description = "客户简称") @Schema(description = "简码")
private String brief; private String brief;
@Schema(description = "客户全称", example = "赵六") @Schema(description = "客户简称")
private String name; private String name;
@Schema(description = "客户全称")
private String fullName;
@Schema(description = "所属行业") @Schema(description = "所属行业")
private String industry; private String industry;
@ -119,4 +122,7 @@ public class CustomerPageReqVO extends PageParam {
@Schema(description = "公司税号") @Schema(description = "公司税号")
private String taxNo; private String taxNo;
} @Schema(description = "简称或全称")
private String briefOrName;
}

@ -23,13 +23,17 @@ public class CustomerRespVO {
@ExcelProperty("客户编码") @ExcelProperty("客户编码")
private String code; private String code;
@Schema(description = "简码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("简码")
private String brief;
@Schema(description = "客户简称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "客户简称", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("客户简称") @ExcelProperty("客户简称")
private String brief; private String name;
@Schema(description = "客户全称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @Schema(description = "客户全称", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("客户全称") @ExcelProperty("客户全称")
private String name; private String fullName;
@Schema(description = "所属行业") @Schema(description = "所属行业")
@ExcelProperty("所属行业") @ExcelProperty("所属行业")

@ -16,13 +16,17 @@ public class CustomerSaveReqVO {
@Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED)
private String code; private String code;
@Schema(description = "客户简称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "简码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "客户简称不能为空") @NotEmpty(message = "简码不能为空")
private String brief; private String brief;
@Schema(description = "客户简称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "客户简称不能为空")
private String name;
@Schema(description = "客户全称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @Schema(description = "客户全称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "客户全称不能为空") @NotEmpty(message = "客户全称不能为空")
private String name; private String fullName;
@Schema(description = "所属行业") @Schema(description = "所属行业")
private String industry; private String industry;

@ -1,95 +1,110 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.equip; package com.chanko.yunxi.mes.module.heli.controller.admin.equip;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import javax.validation.*; import javax.validation.*;
import javax.servlet.http.*; import javax.servlet.http.*;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
import com.chanko.yunxi.mes.module.heli.service.equip.EquipService; import com.chanko.yunxi.mes.module.heli.service.equip.EquipService;
@Tag(name = "管理后台 - 设备信息") @Tag(name = "管理后台 - 设备信息")
@RestController @RestController
@RequestMapping("/heli/equip") @RequestMapping("/heli/equip")
@Validated @Validated
public class EquipController { public class EquipController {
@Resource @Resource
private EquipService equipService; private EquipService equipService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备信息") @Operation(summary = "创建设备信息")
@PreAuthorize("@ss.hasPermission('heli:equip:create')") @PreAuthorize("@ss.hasPermission('heli:equip:create')")
public CommonResult<Long> createEquip(@Valid @RequestBody EquipSaveReqVO createReqVO) { public CommonResult<Long> createEquip(@Valid @RequestBody EquipSaveReqVO createReqVO) {
return success(equipService.createEquip(createReqVO)); return success(equipService.createEquip(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备信息") @Operation(summary = "更新设备信息")
@PreAuthorize("@ss.hasPermission('heli:equip:update')") @PreAuthorize("@ss.hasPermission('heli:equip:update')")
public CommonResult<Boolean> updateEquip(@Valid @RequestBody EquipSaveReqVO updateReqVO) { public CommonResult<Boolean> updateEquip(@Valid @RequestBody EquipSaveReqVO updateReqVO) {
equipService.updateEquip(updateReqVO); equipService.updateEquip(updateReqVO);
return success(true); return success(true);
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除设备信息") @Operation(summary = "删除设备信息")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:equip:delete')") @PreAuthorize("@ss.hasPermission('heli:equip:delete')")
public CommonResult<Boolean> deleteEquip(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteEquip(@RequestParam("id") Long id) {
equipService.deleteEquip(id); equipService.deleteEquip(id);
return success(true); return success(true);
} }
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得设备信息") @Operation(summary = "获得设备信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:equip:query')") @PreAuthorize("@ss.hasPermission('heli:equip:query')")
public CommonResult<EquipRespVO> getEquip(@RequestParam("id") Long id) { public CommonResult<EquipRespVO> getEquip(@RequestParam("id") Long id) {
EquipDO equip = equipService.getEquip(id); EquipDO equip = equipService.getEquip(id);
return success(BeanUtils.toBean(equip, EquipRespVO.class)); return success(BeanUtils.toBean(equip, EquipRespVO.class));
} }
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得设备信息分页") @Operation(summary = "获得设备信息分页")
@PreAuthorize("@ss.hasPermission('heli:equip:query')") @PreAuthorize("@ss.hasPermission('heli:equip:query')")
public CommonResult<PageResult<EquipRespVO>> getEquipPage(@Valid EquipPageReqVO pageReqVO) { public CommonResult<PageResult<EquipRespVO>> getEquipPage(@Valid EquipPageReqVO pageReqVO) {
PageResult<EquipDO> pageResult = equipService.getEquipPage(pageReqVO); PageResult<EquipDO> pageResult = equipService.getEquipPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, EquipRespVO.class)); return success(BeanUtils.toBean(pageResult, EquipRespVO.class));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出设备信息 Excel") @Operation(summary = "导出设备信息 Excel")
@PreAuthorize("@ss.hasPermission('heli:equip:export')") @PreAuthorize("@ss.hasPermission('heli:equip:export')")
@OperateLog(type = EXPORT) @OperateLog(type = EXPORT)
public void exportEquipExcel(@Valid EquipPageReqVO pageReqVO, public void exportEquipExcel(@Valid EquipPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<EquipDO> list = equipService.getEquipPage(pageReqVO).getList(); List<EquipDO> list = equipService.getEquipPage(pageReqVO).getList();
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "设备信息.xls", "数据", EquipRespVO.class, ExcelUtils.write(response, "设备信息.xls", "数据", EquipRespVO.class,
BeanUtils.toBean(list, EquipRespVO.class)); BeanUtils.toBean(list, EquipRespVO.class));
} }
} @GetMapping({"/all-simples"})
@Operation(summary = "TODO:获取设备信息信息列表", description = "只包含被开启的设备信息,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getSimpleList() {
List<Map<String, Object>> list = equipService.getEquipSimpleList();
// 拼接数据
return success(list);
}
@GetMapping({"/all-no-status-simples"})
@Operation(summary = "TODO:获取无状态设备信息信息列表", description = "设备信息,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getNoStatusSimpleList() {
List<Map<String, Object>> list = equipService.getEquipNoStatusSimpleList();
// 拼接数据
return success(list);
}
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.equipmanufacture;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.equipmanufacture.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO;
import com.chanko.yunxi.mes.module.heli.service.equipmanufacture.EquipManufactureService;
@Tag(name = "管理后台 - 制造设备")
@RestController
@RequestMapping("/heli/equip-manufacture")
@Validated
public class EquipManufactureController {
@Resource
private EquipManufactureService equipManufactureService;
@PostMapping("/create")
@Operation(summary = "创建制造设备")
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:create')")
public CommonResult<Long> createEquipManufacture(@Valid @RequestBody EquipManufactureSaveReqVO createReqVO) {
return success(equipManufactureService.createEquipManufacture(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新制造设备")
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:update')")
public CommonResult<Boolean> updateEquipManufacture(@Valid @RequestBody EquipManufactureSaveReqVO updateReqVO) {
equipManufactureService.updateEquipManufacture(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除制造设备")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:delete')")
public CommonResult<Boolean> deleteEquipManufacture(@RequestParam("id") Long id) {
equipManufactureService.deleteEquipManufacture(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得制造设备")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:query')")
public CommonResult<EquipManufactureRespVO> getEquipManufacture(@RequestParam("id") Long id) {
EquipManufactureDO equipManufacture = equipManufactureService.getEquipManufacture(id);
return success(BeanUtils.toBean(equipManufacture, EquipManufactureRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得制造设备分页")
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:query')")
public CommonResult<PageResult<EquipManufactureRespVO>> getEquipManufacturePage(@Valid EquipManufacturePageReqVO pageReqVO) {
PageResult<EquipManufactureDO> pageResult = equipManufactureService.getEquipManufacturePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, EquipManufactureRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出制造设备 Excel")
@PreAuthorize("@ss.hasPermission('heli:equip-manufacture:export')")
@OperateLog(type = EXPORT)
public void exportEquipManufactureExcel(@Valid EquipManufacturePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<EquipManufactureDO> list = equipManufactureService.getEquipManufacturePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "制造设备.xls", "数据", EquipManufactureRespVO.class,
BeanUtils.toBean(list, EquipManufactureRespVO.class));
}
}

@ -0,0 +1,40 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.equipmanufacture.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 制造设备分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class EquipManufacturePageReqVO extends PageParam {
@Schema(description = "编码 唯一")
private String code;
@Schema(description = "名称", example = "赵六")
private String name;
@Schema(description = "类型", example = "2")
private String type;
@Schema(description = "型号")
private String model;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "2")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "编码或名称")
private String codeOrName;
}

@ -0,0 +1,44 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.equipmanufacture.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 制造设备 Response VO")
@Data
@ExcelIgnoreUnannotated
public class EquipManufactureRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "6775")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "编码 唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("编码 唯一")
private String code;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("名称")
private String name;
@Schema(description = "类型", example = "2")
@ExcelProperty("类型")
private String type;
@Schema(description = "型号")
@ExcelProperty("型号")
private String model;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "2")
@ExcelProperty("状态,1表示正常2表示禁用默认是1")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,33 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.equipmanufacture.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
@Schema(description = "管理后台 - 制造设备新增/修改 Request VO")
@Data
public class EquipManufactureSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "6775")
private Long id;
@Schema(description = "编码 唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "编码 唯一不能为空")
private String code;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "名称不能为空")
private String name;
@Schema(description = "类型", example = "2")
private String type;
@Schema(description = "型号")
private String model;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "2")
private Integer status;
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.invoice;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.InvoicePageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.InvoiceRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.InvoiceSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice.InvoiceDO;
import com.chanko.yunxi.mes.module.heli.service.invoice.InvoiceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 财务发票")
@RestController
@RequestMapping("/heli/invoice")
@Validated
public class InvoiceController {
@Resource
private InvoiceService invoiceService;
@PostMapping("/create")
@Operation(summary = "创建财务发票")
@PreAuthorize("@ss.hasPermission('heli:invoice:create')")
public CommonResult<Long> createInvoice(@Valid @RequestBody InvoiceSaveReqVO createReqVO) {
return success(invoiceService.createInvoice(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新财务发票")
@PreAuthorize("@ss.hasPermission('heli:invoice:update')")
public CommonResult<Boolean> updateInvoice(@Valid @RequestBody InvoiceSaveReqVO updateReqVO) {
invoiceService.updateInvoice(updateReqVO);
return success(true);
}
@PostMapping("/operate")
@Operation(summary = "操作发票")
@PreAuthorize("@ss.hasPermission('heli:invoice:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult operate(@Valid @RequestBody InvoiceSaveReqVO operateReqVO) {
return success(invoiceService.operate(operateReqVO));
}
@DeleteMapping("/delete")
@Operation(summary = "删除财务发票")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:invoice:delete')")
public CommonResult<Boolean> deleteInvoice(@RequestParam("id") Long id) {
invoiceService.deleteInvoice(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得财务发票")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:invoice:query')")
public CommonResult<InvoiceRespVO> getInvoice(@RequestParam("id") Long id, @RequestParam("businessType") String businessType) {
InvoiceDO invoice = invoiceService.getInvoice(id, businessType);
return success(BeanUtils.toBean(invoice, InvoiceRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得财务发票分页")
@PreAuthorize("@ss.hasPermission('heli:invoice:query')")
public CommonResult<PageResult<InvoiceRespVO>> getInvoicePage(@Valid InvoicePageReqVO pageReqVO) {
PageResult<InvoiceDO> pageResult = invoiceService.getInvoicePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, InvoiceRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出财务发票 Excel")
@PreAuthorize("@ss.hasPermission('heli:invoice:export')")
@OperateLog(type = EXPORT)
public void exportInvoiceExcel(@Valid InvoicePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<InvoiceDO> list = invoiceService.getInvoicePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "财务发票.xls", "数据", InvoiceRespVO.class,
BeanUtils.toBean(list, InvoiceRespVO.class));
}
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 财务发票分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InvoicePageReqVO extends PageParam {
@Schema(description = "业务类型 FINANCE_MAKE|FINANCE_RECEIVE 开票|收票", example = "2")
private String businessType;
@Schema(description = "订单id", example = "30302")
private Long orderId;
@Schema(description = "发票号码")
private String number;
@Schema(description = "发票类型", example = "1")
private String type;
@Schema(description = "开票日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] billingDate;
@Schema(description = "发票金额")
private BigDecimal amount;
@Schema(description = "税率")
private BigDecimal rate;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "提交人")
private Long submitter;
@Schema(description = "提交时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] submitTime;
@Schema(description = "作废人")
private Long canceller;
@Schema(description = "作废时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] cancelTime;
@Schema(description = "单据状态 已保存|已提交|已作废 1|2|3", example = "1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "订单编号", example = "30302")
private String orderCode;
}

@ -0,0 +1,90 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 财务发票 Response VO")
@Data
@ExcelIgnoreUnannotated
public class InvoiceRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "9244")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "业务类型 FINANCE_MAKE|FINANCE_RECEIVE 开票|收票", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("业务类型 FINANCE_MAKE|FINANCE_RECEIVE 开票|收票")
private String businessType;
@Schema(description = "订单id", example = "30302")
@ExcelProperty("订单id")
private Long orderId;
@Schema(description = "发票号码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("发票号码")
private String number;
@Schema(description = "发票类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "发票类型", converter = DictConvert.class)
@DictFormat("heli_invoice_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String type;
@Schema(description = "开票日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("开票日期")
private LocalDateTime billingDate;
@Schema(description = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("发票金额")
private BigDecimal amount;
@Schema(description = "税率", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("税率")
private BigDecimal rate;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "提交人")
@ExcelProperty("提交人")
private Long submitter;
@Schema(description = "提交时间")
@ExcelProperty("提交时间")
private LocalDateTime submitTime;
@Schema(description = "作废人")
@ExcelProperty("作废人")
private Long canceller;
@Schema(description = "作废时间")
@ExcelProperty("作废时间")
private LocalDateTime cancelTime;
@Schema(description = "单据状态 已保存|已提交|已作废 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("单据状态 已保存|已提交|已作废 1|2|3")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "提交人名称")
private String submitterName;
@Schema(description = "创建人名称")
private String creatorName;
@Schema(description = "作废人名称")
private String cancellerName;
@Schema(description = "订单编号")
private String orderCode;
}

@ -0,0 +1,73 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 财务发票新增/修改 Request VO")
@Data
public class InvoiceSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "9244")
private Long id;
@Schema(description = "业务类型 FINANCE_MAKE|FINANCE_RECEIVE 开票|收票", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "业务类型 FINANCE_MAKE|FINANCE_RECEIVE 开票|收票不能为空")
private String businessType;
@Schema(description = "订单id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单不能为空")
private Long orderId;
@Schema(description = "发票号码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "发票号码不能为空")
private String number;
@Schema(description = "发票类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "发票类型不能为空")
private String type;
@Schema(description = "开票日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "开票日期不能为空")
private LocalDateTime billingDate;
@Schema(description = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "发票金额不能为空")
private BigDecimal amount;
@Schema(description = "税率", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "税率不能为空")
private BigDecimal rate;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "提交人")
private Long submitter;
@Schema(description = "提交时间")
private LocalDateTime submitTime;
@Schema(description = "作废人")
private Long canceller;
@Schema(description = "作废时间")
private LocalDateTime cancelTime;
@Schema(description = "单据状态 已保存|已提交|已作废 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "单据状态 已保存|已提交|已作废 1|2|3不能为空")
private Integer status;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
}

@ -1,33 +1,35 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.material; package com.chanko.yunxi.mes.module.heli.controller.admin.material;
import org.springframework.web.bind.annotation.*; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialExcelVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.service.material.MaterialService; import com.chanko.yunxi.mes.module.heli.service.material.MaterialService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 物料") @Tag(name = "管理后台 - 物料")
@RestController @RestController
@ -107,4 +109,17 @@ public class MaterialController {
// 拼接数据 // 拼接数据
return success(list); return success(list);
} }
@PostMapping("/import")
@Operation(summary = "导入用户")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
})
public CommonResult<Void> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
List<MaterialExcelVO> list = ExcelUtils.read(file, MaterialExcelVO.class);
materialService.importExcel(list, updateSupport);
return success(null);
}
} }

@ -0,0 +1,70 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.material.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 物料 Response VO")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false)
public class MaterialExcelVO {
@NotBlank(message = "物料编码 不能为空")
@ExcelProperty("*物料编码")
private String code;
@NotBlank(message = "物料名称 不能为空")
@ExcelProperty("*物料名称")
private String name;
@ExcelProperty(value = "*物料类型", converter = DictConvert.class)
@DictFormat("heli_material_type")
@NotBlank(message = "物料类型 不能为空")
private String materialType;
@NotBlank(message = "系统单位 不能为空")
@ExcelProperty(value = "*系统单位", converter = DictConvert.class)
@DictFormat("heli_material_unit")
private String unit;
@ExcelProperty("物料简称")
private String shortName;
@ExcelProperty("规格/型号")
private String spec;
@ExcelProperty("品牌")
private String brand;
@ExcelProperty(value = "物料主要来源", converter = DictConvert.class)
@DictFormat("heli_material_original")
private Integer mainFrom;
@ExcelProperty("首选供应商")
private String mainSupplierName;
@ExcelProperty("销项/进项税率(%")
private BigDecimal outputInputTaxRate;
@ExcelProperty("安全库存")
private BigDecimal invSafe;
@ExcelProperty("物料条码")
private String barcode;
@ExcelProperty("备注")
private String description;
}

@ -24,6 +24,9 @@ public class MaterialPageReqVO extends PageParam {
@Schema(description = "物料名称", example = "李四") @Schema(description = "物料名称", example = "李四")
private String name; private String name;
@Schema(description = "物料名称", example = "李四")
private String codeAndName;
@Schema(description = "品牌") @Schema(description = "品牌")
private String brand; private String brand;

@ -27,6 +27,9 @@ public class MaterialRespVO {
@ExcelProperty("物料名称") @ExcelProperty("物料名称")
private String name; private String name;
@Schema(description = "物料名称和编码")
private String codeAndName;
@Schema(description = "品牌") @Schema(description = "品牌")
@ExcelProperty("品牌") @ExcelProperty("品牌")
private String brand; private String brand;

@ -15,7 +15,6 @@ public class MaterialSaveReqVO {
private Long id; private Long id;
@Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "物料编码不能为空")
private String code; private String code;
@Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") @Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.service.materialplan.MaterialPlanService;
@Tag(name = "管理后台 - 物料需求计划")
@RestController
@RequestMapping("/heli/material-plan")
@Validated
public class MaterialPlanController {
@Resource
private MaterialPlanService materialPlanService;
@PostMapping("/create")
@Operation(summary = "创建物料需求计划")
@PreAuthorize("@ss.hasPermission('heli:material-plan:create')")
public CommonResult<Long> createMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO createReqVO) {
return success(materialPlanService.createMaterialPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料需求计划")
@PreAuthorize("@ss.hasPermission('heli:material-plan:update')")
public CommonResult<Boolean> updateMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO updateReqVO) {
materialPlanService.updateMaterialPlan(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料需求计划")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:material-plan:delete')")
public CommonResult<Boolean> deleteMaterialPlan(@RequestParam("id") Long id) {
materialPlanService.deleteMaterialPlan(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料需求计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<MaterialPlanRespVO> getMaterialPlan(@RequestParam("id") Long id) {
MaterialPlanDO materialPlan = materialPlanService.getMaterialPlan(id);
return success(BeanUtils.toBean(materialPlan, MaterialPlanRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得物料需求计划分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<PageResult<MaterialPlanRespVO>> getMaterialPlanPage(@Valid MaterialPlanPageReqVO pageReqVO) {
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan:export')")
@OperateLog(type = EXPORT)
public void exportMaterialPlanExcel(@Valid MaterialPlanPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MaterialPlanDO> list = materialPlanService.getMaterialPlanPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "物料需求计划.xls", "数据", MaterialPlanRespVO.class,
BeanUtils.toBean(list, MaterialPlanRespVO.class));
}
}

@ -0,0 +1,60 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPlanPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "物料计划单号")
private String projectMaterialPlanNo;
@Schema(description = "生产计划单号")
private String planNo;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "订单id")
private Long projectId;
@Schema(description = "生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
private String createTime;
}

@ -0,0 +1,75 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 物料需求计划 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialPlanRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料计划单号")
private String projectMaterialPlanNo;
@Schema(description = "生产计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产计划单号")
private String planNo;
@Schema(description = "项目单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目单号")
private String projectName;
@Schema(description = "订单id")
@ExcelProperty("订单id")
private Long projectId;
@Schema(description = "生产计划id")
@ExcelProperty("生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
@ExcelProperty("送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@ExcelProperty("送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
@ExcelProperty("审核人")
private Long auditor;
@Schema(description = "审核时间")
@ExcelProperty("审核时间")
private LocalDateTime auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
@ExcelProperty(value = "状态,1已保存2已送审3已审核4已打回 默认是1", converter = DictConvert.class)
@DictFormat("heli_project_material_plan_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建人")
@ExcelProperty("创建人")
private Long creator;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,45 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划新增/修改 Request VO")
@Data
public class MaterialPlanSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String projectMaterialPlanNo;
@Schema(description = "订单id")
private Long projectId;
@Schema(description = "生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "备注")
private String description;
}

@ -0,0 +1,115 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.service.materialplanboom.MaterialPlanBoomService;
@Tag(name = "管理后台 - 物料需求计划加工件明细")
@RestController
@RequestMapping("/heli/material-plan-boom")
@Validated
public class MaterialPlanBoomController {
@Resource
private MaterialPlanBoomService materialPlanBoomService;
@PostMapping("/create")
@Operation(summary = "创建物料需求计划加工件明细")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:create')")
public CommonResult<Long> createMaterialPlanBoom(@Valid @RequestBody MaterialPlanBoomSaveReqVO createReqVO) {
return success(materialPlanBoomService.createMaterialPlanBoom(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料需求计划加工件明细")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:update')")
public CommonResult<Boolean> updateMaterialPlanBoom(@Valid @RequestBody MaterialPlanBoomSaveReqVO updateReqVO) {
materialPlanBoomService.updateMaterialPlanBoom(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料需求计划加工件明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:delete')")
public CommonResult<Boolean> deleteMaterialPlanBoom(@RequestParam("id") Long id) {
materialPlanBoomService.deleteMaterialPlanBoom(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料需求计划加工件明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:query')")
public CommonResult<MaterialPlanBoomRespVO> getMaterialPlanBoom(@RequestParam("id") Long id) {
MaterialPlanBoomDO materialPlanBoom = materialPlanBoomService.getMaterialPlanBoom(id);
return success(BeanUtils.toBean(materialPlanBoom, MaterialPlanBoomRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得物料需求计划加工件明细分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:query')")
public CommonResult<PageResult<MaterialPlanBoomRespVO>> getMaterialPlanBoomPage(@Valid MaterialPlanBoomPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<MaterialPlanBoomDO> pageResult = materialPlanBoomService.getMaterialPlanBoomPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanBoomRespVO.class));
}
@GetMapping("/page-sum")
@Operation(summary = "获得物料需求计划加工件明细分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:query')")
public CommonResult<PageResult<MaterialPlanBoomRespVO>> getMaterialPlanBoomSumPage(@Valid MaterialPlanBoomPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<MaterialPlanBoomDO> pageResult = materialPlanBoomService.getMaterialPlanBoomSumPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanBoomRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划加工件明细 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:export')")
@OperateLog(type = EXPORT)
public void exportMaterialPlanBoomExcel(@Valid MaterialPlanBoomPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MaterialPlanBoomDO> list = materialPlanBoomService.getMaterialPlanBoomPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "物料需求计划加工件明细.xls", "数据", MaterialPlanBoomRespVO.class,
BeanUtils.toBean(list, MaterialPlanBoomRespVO.class));
}
@GetMapping("/boom")
@Operation(summary = "获得物料需求计划加工件明细分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:query')")
public CommonResult<PageResult<ProcessBomDetailDO>> getBoomByProjectPlanId(@Valid ProcessBoomPageReqVO pageReqVO) {
PageResult<ProcessBomDetailDO> pageResult = materialPlanBoomService.getProcessBoomDetailList(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessBomDetailDO.class));
}
}

@ -0,0 +1,54 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划加工件明细分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPlanBoomPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "物料需求计划id")
private Long projectMaterialPlanId;
@Schema(description = "工艺boom明细id零件类型加工件")
private Long boomDetailId;
@Schema(description = "订单子项目id")
private Long projectPlanSubId;
@Schema(description = "需求数量")
private BigDecimal boomAmount;
@Schema(description = "需求到货日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] boomArriveDate;
@Schema(description = "备注")
private String description;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "规格型号")
private String boomSpec;
@Schema(description = "材质")
private Long compositionId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,71 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 物料需求计划加工件明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialPlanBoomRespVO extends PageParam {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "物料需求计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料需求计划id")
private Long projectMaterialPlanId;
@Schema(description = "工艺boom明细id零件类型加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工艺boom明细id零件类型加工件")
private Long boomDetailId;
@Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单子项目id")
private Long projectPlanSubId;
@Schema(description = "需求数量")
@ExcelProperty("需求数量")
private BigDecimal boomAmount;
@Schema(description = "需求到货日期")
@ExcelProperty("需求到货日期")
private LocalDateTime boomArriveDate;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "零件名称")
@ExcelProperty("零件名称")
private String materialName;
@Schema(description = "子项目编号")
@ExcelProperty("子项目编号")
private String projectSubCode;
@Schema(description = "规格型号")
@ExcelProperty("规格型号")
private String boomSpec;
@Schema(description = "系统单位")
@ExcelProperty("系统单位")
private String boomUnit;
@Schema(description = "材质")
@ExcelProperty("材质")
private String compositionName;
@Schema(description = "材质id")
@ExcelProperty("材质id")
private Long compositionId;
}

@ -0,0 +1,40 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划加工件明细新增/修改 Request VO")
@Data
public class MaterialPlanBoomSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "物料需求计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料需求计划id不能为空")
private Long projectMaterialPlanId;
@Schema(description = "工艺boom明细id零件类型加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "工艺boom明细id零件类型加工件不能为空")
private Long boomDetailId;
@Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单子项目id不能为空")
private Long projectPlanSubId;
@Schema(description = "需求数量")
private BigDecimal boomAmount;
@Schema(description = "需求到货日期")
private LocalDateTime boomArriveDate;
@Schema(description = "备注")
private String description;
}

@ -0,0 +1,30 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划加工件明细分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessBoomPageReqVO extends PageParam {
@Schema(description = "生产计划id")
private Long planId;
@Schema(description = "加工件名称")
private String materialName;
@Schema(description = "生产计划子项目编号")
private String projectSubCode;
}

@ -0,0 +1,57 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划加工件明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessBoomRespVO {
@Schema(description = "生产计划Id")
private Long planId;
@Schema(description = "物料Id")
private Long materialId;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "生产计划子项目id")
private Long projectPlanSubId;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "加工件Id")
private Long boomDetailId;
@Schema(description = "需求数量")
private BigDecimal boomAmount;
@Schema(description = "需求到货日期")
private LocalDateTime boomArriveDate;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "规格型号")
@ExcelProperty("规格型号")
private String boomSpec;
@Schema(description = "系统单位")
@ExcelProperty("系统单位")
private String boomUnit;
@Schema(description = "材质")
@ExcelProperty("材质")
private String compositionName;
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
import com.chanko.yunxi.mes.module.heli.service.materialplandetail.MaterialPlanDetailService;
@Tag(name = "管理后台 - 物料需求计划物料详情")
@RestController
@RequestMapping("/heli/material-plan-detail")
@Validated
public class MaterialPlanDetailController {
@Resource
private MaterialPlanDetailService materialPlanDetailService;
@PostMapping("/create")
@Operation(summary = "创建物料需求计划物料详情")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:create')")
public CommonResult<Long> createMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO createReqVO) {
return success(materialPlanDetailService.createMaterialPlanDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料需求计划物料详情")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:update')")
public CommonResult<Boolean> updateMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO updateReqVO) {
materialPlanDetailService.updateMaterialPlanDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料需求计划物料详情")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:delete')")
public CommonResult<Boolean> deleteMaterialPlanDetail(@RequestParam("id") Long id) {
materialPlanDetailService.deleteMaterialPlanDetail(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料需求计划物料详情")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')")
public CommonResult<MaterialPlanDetailRespVO> getMaterialPlanDetail(@RequestParam("id") Long id) {
MaterialPlanDetailDO materialPlanDetail = materialPlanDetailService.getMaterialPlanDetail(id);
return success(BeanUtils.toBean(materialPlanDetail, MaterialPlanDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得物料需求计划物料详情分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')")
public CommonResult<PageResult<MaterialPlanDetailRespVO>> getMaterialPlanDetailPage(@Valid MaterialPlanDetailPageReqVO pageReqVO) {
PageResult<MaterialPlanDetailDO> pageResult = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanDetailRespVO.class));
}
@GetMapping("/page-sum")
@Operation(summary = "获得物料需求计划物料详情分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')")
public CommonResult<PageResult<MaterialPlanDetailRespVO>> getMaterialPlanDetailSumPage(@Valid MaterialPlanDetailPageReqVO pageReqVO) {
PageResult<MaterialPlanDetailDO> pageResult = materialPlanDetailService.getMaterialPlanDetailSumPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划物料详情 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:export')")
@OperateLog(type = EXPORT)
public void exportMaterialPlanDetailExcel(@Valid MaterialPlanDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MaterialPlanDetailDO> list = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "物料需求计划物料详情.xls", "数据", MaterialPlanDetailRespVO.class,
BeanUtils.toBean(list, MaterialPlanDetailRespVO.class));
}
}

@ -0,0 +1,55 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划物料详情分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPlanDetailPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "物料需求采购计划id")
private Long projectMaterialPlanId;
@Schema(description = "物料id")
private Long materialId;
@Schema(description = "物料名称")
private String matName;
@Schema(description = "物料编码")
private String matCode;
@Schema(description = "物料类型")
private Long matType;
@Schema(description = "子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] requireArriveTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,78 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 物料需求计划物料详情 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialPlanDetailRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料需求采购计划id")
private Long projectMaterialPlanId;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料id")
private Long materialId;
@Schema(description = "子项目编号")
@ExcelProperty("子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
@ExcelProperty("需求数量")
private BigDecimal requireAmount;
@Schema(description = "库存数量")
@ExcelProperty("库存数量")
private BigDecimal matRest;
@Schema(description = "需求到货日期")
@ExcelProperty("需求到货日期")
private LocalDateTime requireArriveTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料id")
private Long matId;
@Schema(description = "备注")
@ExcelProperty("物料名称")
private String matName;
@Schema(description = "备注")
@ExcelProperty("物料编码")
private String matCode;
@Schema(description = "备注")
@ExcelProperty("物料规格型号")
private String matSpec;
@Schema(description = "备注")
@ExcelProperty("物料单位")
private String matUnit;
@Schema(description = "备注")
@ExcelProperty("物料类型")
private String matType;
}

@ -0,0 +1,40 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划物料详情新增/修改 Request VO")
@Data
public class MaterialPlanDetailSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料需求采购计划id不能为空")
private Long projectMaterialPlanId;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料id不能为空")
private Long materialId;
@Schema(description = "子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
private LocalDateTime requireArriveTime;
@Schema(description = "备注")
private String description;
}

@ -99,4 +99,12 @@ public class MouldTypeController {
// 拼接数据 // 拼接数据
return success(list); return success(list);
} }
@GetMapping({"/all-no-status-simples"})
@Operation(summary = "TODO:获取无状态模块类型信息列表", description = "模块类型,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getNoStatusSimpleList() {
List<Map<String, Object>> list = mouldTypeService.getMouldTypeNoStatusSimpleList();
// 拼接数据
return success(list);
}
} }

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.service.plan.PlanService;
@Tag(name = "管理后台 - 生产计划")
@RestController
@RequestMapping("/heli/plan")
@Validated
public class PlanController {
@Resource
private PlanService planService;
@PostMapping("/create")
@Operation(summary = "创建生产计划")
@PreAuthorize("@ss.hasPermission('heli:plan:create')")
public CommonResult<Long> createPlan(@Valid @RequestBody PlanSaveReqVO createReqVO) {
return success(planService.createPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划")
@PreAuthorize("@ss.hasPermission('heli:plan:update')")
public CommonResult<Boolean> updatePlan(@Valid @RequestBody PlanSaveReqVO updateReqVO) {
planService.updatePlan(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan:delete')")
public CommonResult<Boolean> deletePlan(@RequestParam("id") Long id) {
planService.deletePlan(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PlanRespVO> getPlan(@RequestParam("id") Long id) {
PlanDO plan = planService.getPlan(id);
return success(BeanUtils.toBean(plan, PlanRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PageResult<PlanRespVO>> getPlanPage(@Valid PlanPageReqVO pageReqVO) {
PageResult<PlanDO> pageResult = planService.getPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanRespVO.class));
}
@GetMapping("/page-by-status")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PageResult<PlanRespVO>> getPlanPageByStatus(@Valid PlanPageReqVO pageReqVO) {
PageResult<PlanDO> pageResult = planService.getPlanPageByStatus(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划 Excel")
@PreAuthorize("@ss.hasPermission('heli:plan:export')")
@OperateLog(type = EXPORT)
public void exportPlanExcel(@Valid PlanPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanDO> list = planService.getPlanPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划.xls", "数据", PlanRespVO.class,
BeanUtils.toBean(list, PlanRespVO.class));
}
}

@ -0,0 +1,96 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一", example = "15769")
private Long id;
@Schema(description = "计划单号")
private String planNo;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String businessManName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "业务员")
private String customerName;
@Schema(description = "业务线")
private String businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "项目负责人")
private String projectOwner;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwner;
@Schema(description = "工艺开始日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] craftStartDate;
@Schema(description = "工艺结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] craftEndDate;
@Schema(description = "编辑人")
private String editor;
@Schema(description = "编辑日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] editorDate;
@Schema(description = "审核人")
private String auditor;
@Schema(description = "审核日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditDate;
@Schema(description = "批准人")
private String approver;
@Schema(description = "批准日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] approveDate;
@Schema(description = "备注", example = "随便")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
private Integer status;
@Schema(description = "项目变更次数")
private Integer changeNum;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,139 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 生产计划 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "15769")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计划单号")
private String planNo;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28157")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "项目负责人")
@ExcelProperty("项目负责人")
private Long projectOwner;
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String projectCode;
@Schema(description = "客户名称")
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String projectName;
@Schema(description = "业务员")
@ExcelProperty("业务员")
private String businessManName;
@Schema(description = "项目开始日期")
@ExcelProperty("项目开始日期")
private LocalDateTime projectStartTime;
@Schema(description = "项目结束日期")
@ExcelProperty("项目结束日期")
private LocalDateTime projectEndTime;
@Schema(description = "业务线")
@ExcelProperty("业务线")
private String businessLine;
@Schema(description = "性质")
@ExcelProperty("性质")
private Integer property;
@Schema(description = "是否已变更")
@ExcelProperty("是否已变更")
private Integer hasAlter;
@Schema(description = "是否紧急")
@ExcelProperty("是否紧急")
private Integer isUrgency;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
@ExcelProperty(value = "是否需要工艺:1表示需要0表示不需要", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer hasCraft;
@Schema(description = "工艺负责人")
@ExcelProperty("工艺负责人")
private Long craftOwner;
@Schema(description = "工艺开始日期")
@ExcelProperty("工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
@ExcelProperty("工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
@ExcelProperty("工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
private String craftContent;
@Schema(description = "编辑人")
@ExcelProperty("编辑人")
private Long editor;
@Schema(description = "编辑日期")
@ExcelProperty("编辑日期")
private LocalDateTime editorDate;
@Schema(description = "审核人")
@ExcelProperty("审核人")
private Long auditor;
@Schema(description = "审核日期")
@ExcelProperty("审核日期")
private LocalDateTime auditDate;
@Schema(description = "批准人")
@ExcelProperty("批准人")
private Long approver;
@Schema(description = "批准日期")
@ExcelProperty("批准日期")
private LocalDateTime approveDate;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
@ExcelProperty("状态,1未开始2生产中3已完成4已终止 默认是1")
private Integer status;
@Schema(description = "项目变更次数")
@ExcelProperty("项目变更次数")
private Integer changeNum;
@Schema(description = "项目变更日期")
@ExcelProperty("项目变更日期")
private LocalDateTime changeLastDate;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,70 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划新增/修改 Request VO")
@Data
public class PlanSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "15769")
private Long id;
@Schema(description = "计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String planNo;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28157")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "项目负责人")
private String projectOwner;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwner;
@Schema(description = "工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
private String craftContent;
@Schema(description = "编辑人")
private String editor;
@Schema(description = "编辑日期")
private LocalDateTime editorDate;
@Schema(description = "审核人")
private String auditor;
@Schema(description = "审核日期")
private LocalDateTime auditDate;
@Schema(description = "批准人")
private String approver;
@Schema(description = "批准日期")
private LocalDateTime approveDate;
@Schema(description = "备注", example = "随便")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
private Integer status;
@Schema(description = "项目变更次数")
private Integer changeNum;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.service.plansub.PlanSubService;
@Tag(name = "管理后台 - 生产计划子项目")
@RestController
@RequestMapping("/heli/plan-sub")
@Validated
public class PlanSubController {
@Resource
private PlanSubService planSubService;
@PostMapping("/create")
@Operation(summary = "创建生产计划子项目")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:create')")
public CommonResult<Long> createPlanSub(@Valid @RequestBody PlanSubSaveReqVO createReqVO) {
return success(planSubService.createPlanSub(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划子项目")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:update')")
public CommonResult<Boolean> updatePlanSub(@Valid @RequestBody PlanSubSaveReqVO updateReqVO) {
planSubService.updatePlanSub(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划子项目")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-sub:delete')")
public CommonResult<Boolean> deletePlanSub(@RequestParam("id") Long id) {
planSubService.deletePlanSub(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划子项目")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:query')")
public CommonResult<PlanSubRespVO> getPlanSub(@RequestParam("id") Long id) {
PlanSubDO planSub = planSubService.getPlanSub(id);
return success(BeanUtils.toBean(planSub, PlanSubRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划子项目分页")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:query')")
public CommonResult<PageResult<PlanSubRespVO>> getPlanSubPage(@Valid PlanSubPageReqVO pageReqVO) {
PageResult<PlanSubDO> pageResult = planSubService.getPlanSubPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanSubRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划子项目 Excel")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:export')")
@OperateLog(type = EXPORT)
public void exportPlanSubExcel(@Valid PlanSubPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanSubDO> list = planSubService.getPlanSubPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划子项目.xls", "数据", PlanSubRespVO.class,
BeanUtils.toBean(list, PlanSubRespVO.class));
}
}

@ -0,0 +1,61 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划子项目分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanSubPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "计划id")
private Long projectPlanId;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "子项目id")
private Long projectSubId;
@Schema(description = "模具类型id")
private Long mouldId;
@Schema(description = "设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] blankDate;
@Schema(description = "毛坯负责人")
private String blankOwner;
@Schema(description = "2D结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] twoDimDate;
@Schema(description = "2D负责人")
private String twoDimOwner;
@Schema(description = "3D结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] threeDimDate;
@Schema(description = "3D负责人")
private String threeDimOwner;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,79 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产计划子项目 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanSubRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计划id")
private Long projectPlanId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "子项目简称")
@ExcelProperty("子项目简称")
private String projectSubShortName;
@Schema(description = "子项目编码")
@ExcelProperty("子项目编码")
private String projectSubCode;
@Schema(description = "模具类型id")
@ExcelProperty("模具类型id")
private Long mouldId;
@Schema(description = "设备id")
@ExcelProperty("设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
@ExcelProperty("毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人")
@ExcelProperty("毛坯负责人")
private Long blankOwner;
@Schema(description = "2D结束日期")
@ExcelProperty("2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人")
@ExcelProperty("2D负责人")
private Long twoDimOwner;
@Schema(description = "3D结束日期")
@ExcelProperty("3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人")
@ExcelProperty("3D负责人")
private Long threeDimOwner;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "子项目名称")
private String projectSubName;
}

@ -0,0 +1,58 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划子项目新增/修改 Request VO")
@Data
public class PlanSubSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long projectPlanId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id")
private Long projectSubId;
@Schema(description = "子项目简称")
private String projectSubShortName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "模具类型id")
private Long mouldId;
@Schema(description = "设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人")
private String blankOwner;
@Schema(description = "2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人")
private String twoDimOwner;
@Schema(description = "3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人")
private String threeDimOwner;
}

@ -0,0 +1,130 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantask;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO;
import com.chanko.yunxi.mes.module.heli.service.plantask.PlanTaskService;
@Tag(name = "管理后台 - 生产计划任务")
@RestController
@RequestMapping("/heli/plan-task")
@Validated
public class PlanTaskController {
@Resource
private PlanTaskService planTaskService;
@Resource
private OperateLogFrameworkService operateLogFrameworkService;
@Resource
private HttpServletRequest request;
@PostMapping("/create")
@Operation(summary = "创建生产计划任务")
@PreAuthorize("@ss.hasPermission('heli:plan-task:create')")
public CommonResult<Long> createPlanTask(@Valid @RequestBody PlanTaskSaveReqVO createReqVO) {
return success(planTaskService.createPlanTask(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划任务")
@PreAuthorize("@ss.hasPermission('heli:plan-task:update')")
public CommonResult<Boolean> updatePlanTask(@Valid @RequestBody PlanTaskSaveReqVO updateReqVO) {
LocalDateTime startTime = LocalDateTime.now();
planTaskService.updatePlanTask(updateReqVO);
// 手动记录日志
operateLogFrameworkService.createOperateLog(request,
startTime,
BusinesTypeEnum.PLAN_TASK.name(),
updateReqVO.getId(),
OperateTypeEnum.valueOf(updateReqVO.getActive()).getType(),
"");
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划任务")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-task:delete')")
public CommonResult<Boolean> deletePlanTask(@RequestParam("id") Long id) {
planTaskService.deletePlanTask(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划任务")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan-task:query')")
public CommonResult<PlanTaskRespVO> getPlanTask(@RequestParam("id") Long id) {
PlanTaskDO planTask = planTaskService.getPlanTask(id);
return success(BeanUtils.toBean(planTask, PlanTaskRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划任务分页")
@PreAuthorize("@ss.hasPermission('heli:plan-task:query')")
public CommonResult<PageResult<PlanTaskRespVO>> getPlanTaskPage(@Valid PlanTaskPageReqVO pageReqVO) {
PageResult<PlanTaskDO> pageResult = planTaskService.getPlanTaskPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanTaskRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划任务 Excel")
@PreAuthorize("@ss.hasPermission('heli:plan-task:export')")
@OperateLog(type = EXPORT)
public void exportPlanTaskExcel(@Valid PlanTaskPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanTaskDO> list = planTaskService.getPlanTaskPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划任务.xls", "数据", PlanTaskRespVO.class,
BeanUtils.toBean(list, PlanTaskRespVO.class));
}
@GetMapping("/get-version-status")
@Operation(summary = "获得bom需要更新的状态")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-task:query')")
public CommonResult<Integer> getPlanTaskBomStatus(@RequestParam("id") Long id) {
return success(planTaskService.getPlanTaskBomStatus(id));
}
@GetMapping("/refresh")
@Operation(summary = "刷新生产计划任务单最新数据")
@Parameter(name = "id", description = "生产计划id", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-task:query')")
public CommonResult<Integer> refreshPlanTaskByPlanId(@RequestParam("id") Long id) {
return success(planTaskService.refreshPlanTaskByPlanId(id));
}
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划任务分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanTaskPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "生产计划id")
private Long projectPlanId;
@Schema(description = "生产计划子项目id")
private Long projectPlanSubId;
@Schema(description = "工艺bomid")
private Long processBomId;
@Schema(description = "生产计划编号,唯一")
private String taskNo;
@Schema(description = "bom版本号")
private Integer bomVersion;
@Schema(description = "备注")
private String description;
@Schema(description = "状态,1已保存2已提交3已终止 默认是1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "生产计划单号")
private String planNo;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "子项目名称")
private String projectSubName;
}

@ -0,0 +1,88 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产计划任务 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanTaskRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "项目id")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产计划id")
private Long projectPlanId;
@Schema(description = "生产计划子项目id")
@ExcelProperty("生产计划子项目id")
private Long projectPlanSubId;
@Schema(description = "工艺bomid")
@ExcelProperty("工艺bomid")
private Long processBomId;
@Schema(description = "生产计划编号,唯一")
@ExcelProperty("生产计划编号,唯一")
private String taskNo;
@Schema(description = "bom版本号")
@ExcelProperty("bom版本号")
private Integer bomVersion;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "状态,1已保存2已提交3已终止 默认是1")
@ExcelProperty("状态,1已保存2已提交3已终止 默认是1")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "客户名称")
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "项目编号")
@ExcelProperty("项目编号")
private String projectCode;
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String projectName;
@Schema(description = "生产计划编号")
@ExcelProperty("生产计划编号")
private String planNo;
@Schema(description = "子项目编号")
@ExcelProperty("子项目编号")
private String projectSubCode;
@Schema(description = "子项目名称")
@ExcelProperty("子项目名称")
private String projectSubName;
@Schema(description = "项目结束时间")
@ExcelProperty("项目结束时间")
private LocalDateTime projectEndTime;
@Schema(description = "bom编号")
@ExcelProperty("bom编号")
private String bomCode;
}

@ -0,0 +1,49 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
@Schema(description = "管理后台 - 生产计划任务新增/修改 Request VO")
@Data
public class PlanTaskSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "生产计划id不能为空")
private Long projectPlanId;
@Schema(description = "生产计划子项目id")
private Long projectPlanSubId;
@Schema(description = "工艺bomid")
private Long processBomId;
@Schema(description = "生产计划编号,唯一")
private String taskNo;
@Schema(description = "bom版本号")
private Integer bomVersion;
@Schema(description = "备注")
private String description;
@Schema(description = "状态,1已保存2已提交3已终止 默认是1")
private Integer status;
@Schema(description = "操作类型")
private String active;
@Schema(description = "工艺bom明细列表")
private List<PlanTaskBomDO> bomDetails;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO;
import com.chanko.yunxi.mes.module.heli.service.plantaskbom.PlanTaskBomService;
@Tag(name = "管理后台 - 生产计划任务Bom")
@RestController
@RequestMapping("/heli/plan-task-bom")
@Validated
public class PlanTaskBomController {
@Resource
private PlanTaskBomService planTaskBomService;
@PostMapping("/create")
@Operation(summary = "创建生产计划任务Bom")
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:create')")
public CommonResult<Long> createPlanTaskBom(@Valid @RequestBody PlanTaskBomSaveReqVO createReqVO) {
return success(planTaskBomService.createPlanTaskBom(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划任务Bom")
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:update')")
public CommonResult<Boolean> updatePlanTaskBom(@Valid @RequestBody PlanTaskBomSaveReqVO updateReqVO) {
planTaskBomService.updatePlanTaskBom(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划任务Bom")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:delete')")
public CommonResult<Boolean> deletePlanTaskBom(@RequestParam("id") Long id) {
planTaskBomService.deletePlanTaskBom(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划任务Bom")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:query')")
public CommonResult<PlanTaskBomRespVO> getPlanTaskBom(@RequestParam("id") Long id) {
PlanTaskBomDO planTaskBom = planTaskBomService.getPlanTaskBom(id);
return success(BeanUtils.toBean(planTaskBom, PlanTaskBomRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划任务Bom分页")
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:query')")
public CommonResult<PageResult<PlanTaskBomRespVO>> getPlanTaskBomPage(@Valid PlanTaskBomPageReqVO pageReqVO) {
PageResult<PlanTaskBomDO> pageResult = planTaskBomService.getPlanTaskBomPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanTaskBomRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划任务Bom Excel")
@PreAuthorize("@ss.hasPermission('heli:plan-task-bom:export')")
@OperateLog(type = EXPORT)
public void exportPlanTaskBomExcel(@Valid PlanTaskBomPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanTaskBomDO> list = planTaskBomService.getPlanTaskBomPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划任务Bom.xls", "数据", PlanTaskBomRespVO.class,
BeanUtils.toBean(list, PlanTaskBomRespVO.class));
}
}

@ -0,0 +1,51 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划任务Bom分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanTaskBomPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "生产任务id")
private Long taskId;
@Schema(description = "bom明细id")
private Long bomDetailId;
@Schema(description = "负责人")
private String owner;
@Schema(description = "要求完成日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] requireEndDate;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "子项目id")
private Long projectSubId;
@Schema(description = "零件类型 1 标准件|2 其它")
private String materialType;
private Long projectPlanId;
private Long projectPlanSubId;
private Boolean sortByBlueprintNo;
}

@ -0,0 +1,69 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划任务Bom Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanTaskBomRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "生产任务id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产任务id")
private Long taskId;
@Schema(description = "bom明细id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("bom明细id")
private Long bomDetailId;
@Schema(description = "负责人")
@ExcelProperty("负责人")
private String owner;
@Schema(description = "要求完成日期")
@ExcelProperty("要求完成日期")
private LocalDateTime requireEndDate;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "物料名称")
private String compositionName;
@Schema(description = "图号")
private String blueprintNo;
@Schema(description = "零件类型 1 标准件|2 其它")
private String type;
@Schema(description = "物料id")
private Long materialId;
@Schema(description = "物料编码")
private String materialCode;
@Schema(description = "材质id")
private Long compositionId;
@Schema(description = "规格")
private String spec;
@Schema(description = "单位")
private String unit;
@Schema(description = "数量")
private Integer amount;
@Schema(description = "负责人名称")
private String ownerName;
}

@ -0,0 +1,32 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划任务Bom新增/修改 Request VO")
@Data
public class PlanTaskBomSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "生产任务id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "生产任务id不能为空")
private Long taskId;
@Schema(description = "bom明细id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "bom明细id不能为空")
private Long bomDetailId;
@Schema(description = "负责人")
private String owner;
@Schema(description = "要求完成日期")
private LocalDateTime requireEndDate;
}

@ -0,0 +1,144 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 工艺bom")
@RestController
@RequestMapping("/heli/process-bom")
@Validated
public class ProcessBomController {
@Resource
private ProcessBomService processBomService;
@Resource
private OperateLogFrameworkService operateLogFrameworkService;
@Resource
private HttpServletRequest request;
@PostMapping("/create")
@Operation(summary = "创建工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
public CommonResult<Long> createProcessBom(@Valid @RequestBody ProcessBomSaveReqVO createReqVO) {
return success(processBomService.createProcessBom(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:update')")
public CommonResult<Boolean> updateProcessBom(@Valid @RequestBody ProcessBomSaveReqVO updateReqVO) {
processBomService.updateProcessBom(updateReqVO);
return success(true);
}
@PostMapping("/operate")
@Operation(summary = "操作工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operateProcessBom(@Valid @RequestBody ProcessBomSaveReqVO operateReqVO) {
LocalDateTime startTime = LocalDateTime.now();
processBomService.operateProcessBom(operateReqVO);
// 手动记录日志
operateLogFrameworkService.createOperateLog(request,
startTime,
BusinesTypeEnum.PROCESS_BOM.name(),
operateReqVO.getId(),
OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(),
operateReqVO.getActiveOpinion());
return success(operateReqVO.getId());
}
@DeleteMapping("/delete")
@Operation(summary = "删除工艺bom")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:process-bom:delete')")
public CommonResult<Boolean> deleteProcessBom(@RequestParam("id") Long id) {
processBomService.deleteProcessBom(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工艺bom")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<ProcessBomRespVO> getProcessBom(@RequestParam("id") Long id) {
ProcessBomDO processBom = processBomService.getProcessBom(id);
return success(BeanUtils.toBean(processBom, ProcessBomRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工艺bom分页")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<PageResult<ProcessBomRespVO>> getProcessBomPage(@Valid ProcessBomPageReqVO pageReqVO) {
PageResult<ProcessBomDO> pageResult = processBomService.getProcessBomPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessBomRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工艺bom Excel")
@PreAuthorize("@ss.hasPermission('heli:process-bom:export')")
@OperateLog(type = EXPORT)
public void exportProcessBomExcel(@Valid ProcessBomPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProcessBomDO> list = processBomService.getProcessBomPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "工艺bom.xls", "数据", ProcessBomRespVO.class,
BeanUtils.toBean(list, ProcessBomRespVO.class));
}
// ==================== 子表工艺bom明细 ====================
@GetMapping("/process-bom-detail/list-by-bom-id")
@Operation(summary = "获得工艺bom明细列表")
@Parameter(name = "bomId", description = "bom id")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<List<ProcessBomDetailDO>> getProcessBomDetailListByBomId(@RequestParam("bomId") Long bomId) {
return success(processBomService.getProcessBomDetailListByBomId(bomId));
}
@DeleteMapping("/process-bom-detail/delete")
@Operation(summary = "删除工艺bom明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:process-bom:delete')")
public CommonResult<Boolean> deleteProcessBomDetail(@RequestParam("id") Long id) {
processBomService.deleteProcessBomDetail(id);
return success(true);
}
}

@ -0,0 +1,64 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺bom分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessBomPageReqVO extends PageParam {
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "生产计划id", example = "19403")
private Long planId;
@Schema(description = "项目id", example = "32751")
private Long projectId;
@Schema(description = "子项目id", example = "12526")
private Long projectSubId;
@Schema(description = "子项目名称", example = "张三")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", example = "2")
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", example = "2")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "生产计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
}

@ -0,0 +1,81 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工艺bom Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessBomRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18511")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("编号,唯一")
private String code;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19403")
@ExcelProperty("生产计划id")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32751")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12526")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "子项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("子项目名称")
private String projectSubName;
@Schema(description = "子项目编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("bom版本号")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "bom状态 已保存|已提交 1|2", converter = DictConvert.class)
@DictFormat("heli_bom_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("状态,1表示正常2表示禁用")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "bom编号")
private String bomCode;
}

@ -0,0 +1,63 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
@Schema(description = "管理后台 - 工艺bom新增/修改 Request VO")
@Data
public class ProcessBomSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18511")
private Long id;
@Schema(description = "编号")
private String code;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19403")
@NotNull(message = "生产计划id不能为空")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32751")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12526")
@NotNull(message = "子项目id不能为空")
private Long projectSubId;
@Schema(description = "子项目名称", example = "张三")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "bom版本号不能为空")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "bom状态 已保存|已提交 1|2不能为空")
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "工艺bom明细列表")
private List<ProcessBomDetailDO> processBomDetails;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
}

@ -1,106 +1,113 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign;
import org.springframework.web.bind.annotation.*; import com.chanko.yunxi.mes.module.heli.vo.WarningMessageVO;
import javax.annotation.Resource; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import javax.annotation.Resource;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated;
import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*; import javax.validation.constraints.*;
import javax.servlet.http.*; import javax.validation.*;
import java.util.*; import javax.servlet.http.*;
import java.io.IOException; import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO;
import com.chanko.yunxi.mes.module.heli.service.processdesign.ProcessDesignService; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO;
import com.chanko.yunxi.mes.module.heli.service.processdesign.ProcessDesignService;
@Tag(name = "管理后台 - 工艺设计")
@RestController @Tag(name = "管理后台 - 工艺设计")
@RequestMapping("/heli/process-design") @RestController
@Validated @RequestMapping("/heli/process-design")
public class ProcessDesignController { @Validated
public class ProcessDesignController {
@Resource
private ProcessDesignService processDesignService; @Resource
private ProcessDesignService processDesignService;
@PostMapping("/create")
@Operation(summary = "创建工艺设计") @PostMapping("/create")
@PreAuthorize("@ss.hasPermission('heli:process-design:create')") @Operation(summary = "创建工艺设计")
public CommonResult<Long> createProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO createReqVO) { @PreAuthorize("@ss.hasPermission('heli:process-design:create')")
return success(processDesignService.createProcessDesign(createReqVO)); public CommonResult<Long> createProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO createReqVO) {
} return success(processDesignService.createProcessDesign(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工艺设计") @PutMapping("/update")
@PreAuthorize("@ss.hasPermission('heli:process-design:update')") @Operation(summary = "更新工艺设计")
public CommonResult<Boolean> updateProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO updateReqVO) { @PreAuthorize("@ss.hasPermission('heli:process-design:update')")
processDesignService.updateProcessDesign(updateReqVO); public CommonResult<Long> updateProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO updateReqVO) {
return success(true); return success(processDesignService.updateProcessDesign(updateReqVO));
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除工艺设计") @Operation(summary = "删除工艺设计")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:process-design:delete')") @PreAuthorize("@ss.hasPermission('heli:process-design:delete')")
public CommonResult<Boolean> deleteProcessDesign(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteProcessDesign(@RequestParam("id") Long id) {
processDesignService.deleteProcessDesign(id); processDesignService.deleteProcessDesign(id);
return success(true); return success(true);
} }
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得工艺设计") @Operation(summary = "获得工艺设计")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:process-design:query')") @PreAuthorize("@ss.hasPermission('heli:process-design:query')")
public CommonResult<ProcessDesignRespVO> getProcessDesign(@RequestParam("id") Long id) { public CommonResult<ProcessDesignRespVO> getProcessDesign(@RequestParam("id") Long id) {
ProcessDesignDO processDesign = processDesignService.getProcessDesign(id); ProcessDesignDO processDesign = processDesignService.getProcessDesign(id);
return success(BeanUtils.toBean(processDesign, ProcessDesignRespVO.class)); return success(BeanUtils.toBean(processDesign, ProcessDesignRespVO.class));
} }
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得工艺设计分页") @Operation(summary = "获得工艺设计分页")
@PreAuthorize("@ss.hasPermission('heli:process-design:query')") @PreAuthorize("@ss.hasPermission('heli:process-design:query')")
public CommonResult<PageResult<ProcessDesignRespVO>> getProcessDesignPage(@Valid ProcessDesignPageReqVO pageReqVO) { public CommonResult<PageResult<ProcessDesignRespVO>> getProcessDesignPage(@Valid ProcessDesignPageReqVO pageReqVO) {
PageResult<ProcessDesignDO> pageResult = processDesignService.getProcessDesignPage(pageReqVO); PageResult<ProcessDesignDO> pageResult = processDesignService.getProcessDesignPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessDesignRespVO.class)); return success(BeanUtils.toBean(pageResult, ProcessDesignRespVO.class));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出工艺设计 Excel") @Operation(summary = "导出工艺设计 Excel")
@PreAuthorize("@ss.hasPermission('heli:process-design:export')") @PreAuthorize("@ss.hasPermission('heli:process-design:export')")
@OperateLog(type = EXPORT) @OperateLog(type = EXPORT)
public void exportProcessDesignExcel(@Valid ProcessDesignPageReqVO pageReqVO, public void exportProcessDesignExcel(@Valid ProcessDesignPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProcessDesignDO> list = processDesignService.getProcessDesignPage(pageReqVO).getList(); List<ProcessDesignDO> list = processDesignService.getProcessDesignPage(pageReqVO).getList();
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "工艺设计.xls", "数据", ProcessDesignRespVO.class, ExcelUtils.write(response, "工艺设计.xls", "数据", ProcessDesignRespVO.class,
BeanUtils.toBean(list, ProcessDesignRespVO.class)); BeanUtils.toBean(list, ProcessDesignRespVO.class));
} }
// ==================== 子表(工艺设计进度) ==================== // ==================== 子表(工艺设计进度) ====================
@GetMapping("/process-design-progress/list-by-process-design-id") @GetMapping("/process-design-progress/list-by-process-design-id")
@Operation(summary = "获得工艺设计进度列表") @Operation(summary = "获得工艺设计进度列表")
@Parameter(name = "processDesignId", description = "工艺设计id") @Parameter(name = "processDesignId", description = "工艺设计id")
@PreAuthorize("@ss.hasPermission('heli:process-design:query')") @PreAuthorize("@ss.hasPermission('heli:process-design:query')")
public CommonResult<List<ProcessDesignProgressDO>> getProcessDesignProgressListByProcessDesignId(@RequestParam("processDesignId") Long processDesignId) { public CommonResult<List<ProcessDesignProgressDO>> getProcessDesignProgressListByProcessDesignId(@RequestParam("processDesignId") Long processDesignId) {
return success(processDesignService.getProcessDesignProgressListByProcessDesignId(processDesignId)); return success(processDesignService.getProcessDesignProgressListByProcessDesignId(processDesignId));
} }
} @GetMapping("/warnings")
@Operation(summary = "获得工艺设计预警信息")
@PreAuthorize("@ss.hasPermission('heli:process-design:query')")
public CommonResult<WarningMessageVO> getWarnings() {
return success(processDesignService.getWarnings());
}
}

@ -1,11 +1,14 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -18,13 +21,7 @@ public class ProcessDesignPageReqVO extends PageParam {
@Schema(description = "生产计划id", example = "87") @Schema(description = "生产计划id", example = "87")
private Long planId; private Long planId;
@Schema(description = "销售订单id", example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", example = "1")
private Long saleOrderId;
@Schema(description = "销售订单子项id", example = "7018")
private Long saleOrderSubId;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", example = "1")
private String processDesignType; private String processDesignType;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ -37,4 +34,58 @@ public class ProcessDesignPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
} @Schema(description = "项目id", example = "527")
private Long projectId;
@Schema(description = "子项目id", example = "28809")
private Long projectSubId;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "所属业务线")
private Integer businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "工艺负责人")
private String craftOwnerName;
@Schema(description = "3D负责人")
private String threeDimOwnerName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "2D负责人")
private String twoDimOwnerName;
@Schema(description = "毛坯负责人")
private String blankOwnerName;
@Schema(description = "设计类型列表")
private List<String> processDesignTypeList;
@Schema(description = "是否总览")
private Boolean isOverview = false;
@Schema(description = "子项目id列表")
private List<Long> projectSubIdList;
@Schema(description = "责任人")
private Long owner;
@Schema(description = "未完成设计")
private Boolean uncompletedDesign;
}

@ -1,12 +1,17 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.*; import java.util.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 工艺设计 Response VO") @Schema(description = "管理后台 - 工艺设计 Response VO")
@Data @Data
@ -21,16 +26,9 @@ public class ProcessDesignRespVO {
@ExcelProperty("生产计划id") @ExcelProperty("生产计划id")
private Long planId; private Long planId;
@Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("销售订单id") @ExcelProperty(value = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", converter = DictConvert.class)
private Long saleOrderId; @DictFormat("heli_process_design_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@Schema(description = "销售订单子项id", example = "7018")
@ExcelProperty("销售订单子项id")
private Long saleOrderSubId;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT")
private String processDesignType; private String processDesignType;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ -45,4 +43,87 @@ public class ProcessDesignRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "527")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目负责人")
private String projectOwnerName;
@Schema(description = "所属业务线")
private String businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "是否紧急")
private Integer isUrgency;
@Schema(description = "是否需要工艺")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwnerName;
@Schema(description = "工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人名称")
private String blankOwnerName;
@Schema(description = "毛坯最新进度")
private BigDecimal progressBlank;
@Schema(description = "2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人名称")
private String twoDimOwnerName;
@Schema(description = "2D最新进度")
private BigDecimal progress2d;
@Schema(description = "3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人名称")
private String threeDimOwnerName;
@Schema(description = "3D最新进度")
private BigDecimal progress3d;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编码")
private String projectSubCode;
@Schema(description = "最新进度")
private BigDecimal progress;
@Schema(description = "项目状态")
private Integer planStatus;
}

@ -1,42 +1,42 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.util.*; import java.util.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO;
@Schema(description = "管理后台 - 工艺设计新增/修改 Request VO") @Schema(description = "管理后台 - 工艺设计新增/修改 Request VO")
@Data @Data
public class ProcessDesignSaveReqVO { public class ProcessDesignSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "13152") @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "13152")
private Long id; private Long id;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "87") @Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "87")
@NotNull(message = "生产计划id不能为空") @NotNull(message = "生产计划id不能为空")
private Long planId; private Long planId;
@Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "销售订单id不能为空") @NotEmpty(message = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK不能为空")
private Long saleOrderId; private String processDesignType;
@Schema(description = "销售订单子项id", example = "7018") @Schema(description = "备注", example = "随便")
private Long saleOrderSubId; private String remark;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT不能为空") @NotNull(message = "状态,1表示正常2表示禁用不能为空")
private String processDesignType; private Integer status;
@Schema(description = "备注", example = "随便") @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "527")
private String remark; @NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空") @Schema(description = "子项目id", example = "28809")
private Integer status; private Long projectSubId;
@Schema(description = "工艺设计进度列表") @Schema(description = "工艺设计进度列表")
private List<ProcessDesignProgressDO> processDesignProgresss; private List<ProcessDesignProgressDO> processDesignProgressList;
} }

@ -8,12 +8,11 @@ import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService; import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager;
import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService; import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -49,6 +48,9 @@ public class ProjectOrderController {
@Resource @Resource
private HttpServletRequest request; private HttpServletRequest request;
@Resource
private CrossOrderManager crossOrderManager;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建项目订单") @Operation(summary = "创建项目订单")
@PreAuthorize("@ss.hasPermission('heli:project-order:create')") @PreAuthorize("@ss.hasPermission('heli:project-order:create')")
@ -84,7 +86,13 @@ public class ProjectOrderController {
// 批准、终止记录快照 // 批准、终止记录快照
switch (OperateTypeEnum.valueOf(operateReqVO.getActive())){ switch (OperateTypeEnum.valueOf(operateReqVO.getActive())){
case APPROVE: case APPROVE:
// 订单批准时创建或者更新生产计划数据
crossOrderManager.generatePlan(operateReqVO.getId());
projectOrderService.createProjectOrderSnapshot(operateReqVO);
break;
case TERMINATE: case TERMINATE:
// 订单终止时更新生产计划状态
crossOrderManager.updatePlanStatusToTerminate(operateReqVO.getId());
projectOrderService.createProjectOrderSnapshot(operateReqVO); projectOrderService.createProjectOrderSnapshot(operateReqVO);
break; break;
} }
@ -126,8 +134,8 @@ public class ProjectOrderController {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProjectOrderDO> list = projectOrderService.getProjectOrderPage(pageReqVO).getList(); List<ProjectOrderDO> list = projectOrderService.getProjectOrderPage(pageReqVO).getList();
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "项目订单.xls", "数据", ProjectOrderRespVO.class, ExcelUtils.write(response, "项目订单.xls", "数据", ProjectOrderExportVO.class,
BeanUtils.toBean(list, ProjectOrderRespVO.class)); BeanUtils.toBean(list, ProjectOrderExportVO.class));
} }
// ==================== 子表(项目订单子项目) ==================== // ==================== 子表(项目订单子项目) ====================
@ -140,4 +148,21 @@ public class ProjectOrderController {
return success(projectOrderService.getProjectOrderSubListByProjectOrderId(projectOrderId)); return success(projectOrderService.getProjectOrderSubListByProjectOrderId(projectOrderId));
} }
@DeleteMapping("/project-order-sub/delete")
@Operation(summary = "删除项目订单子项目")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:project-order:delete')")
public CommonResult<Boolean> deleteProjectOrderSub(@RequestParam("id") Long id) {
projectOrderService.deleteProjectOrderSub(id);
return success(true);
}
@GetMapping("/project-order-sub/page")
@Operation(summary = "获得项目订单子项分页")
@PreAuthorize("@ss.hasPermission('heli:project-order:query')")
public CommonResult<PageResult<ProjectOrderSubRespVO>> getProjectOrderSubPage(@Valid ProjectOrderSubPageReqVO pageReqVO) {
PageResult<ProjectOrderSubDO> pageResult = projectOrderService.getProjectOrderSubPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProjectOrderSubRespVO.class));
}
} }

@ -0,0 +1,70 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 项目订单 Export VO")
@Data
@ExcelIgnoreUnannotated
public class ProjectOrderExportVO {
@Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目编号")
private String code;
@Schema(description = "订单日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "订单日期", converter = TimestampToDateConvert.class)
private LocalDateTime orderTime;
@Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "27214")
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "合同编号")
@ExcelProperty("合同编号")
private String contractNo;
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("项目名称")
private String projectName;
@Schema(description = "是否有价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "28491")
@ExcelProperty(value = "是否有价格", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer hasPrice;
@Schema(description = "是否紧急", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "是否紧急", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer isUrgency;
@Schema(description = "性质", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "性质", converter = DictConvert.class)
@DictFormat("heli_project_property") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer property;
@Schema(description = "项目开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "项目开始时间", converter = TimestampToDateConvert.class)
private LocalDateTime projectStartTime;
@Schema(description = "项目结束时间")
@ExcelProperty(value = "项目结束时间", converter = TimestampToDateConvert.class)
private LocalDateTime projectEndTime;
@Schema(description = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "单据状态", converter = DictConvert.class)
@DictFormat("heli_project_order_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer orderStatus;
@Schema(description = "发货状态 未发货/部分发货/全部发货", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "发货状态", converter = DictConvert.class)
@DictFormat("heli_delivery_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer deliveryStatus;
}

@ -133,4 +133,7 @@ public class ProjectOrderPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] snapshotOrderTime; private LocalDateTime[] snapshotOrderTime;
@Schema(description = "id列表")
private List<Long> idList;
} }

@ -0,0 +1,26 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - 项目订单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProjectOrderSubPageReqVO extends PageParam {
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称", example = "赵六")
private String projectName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "子项目名称", example = "赵六")
private String projectSubName;
}

@ -0,0 +1,32 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 项目订单子项 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProjectOrderSubRespVO {
@Schema(description = "项目订单id")
private Long projectId;
@Schema(description = "项目订单子项id")
private Long projectSubId;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称", example = "赵六")
private String projectName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "子项目名称", example = "赵六")
private String projectSubName;
@Schema(description = "客户名称", example = "赵六")
private String customerName;
}

@ -0,0 +1,135 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanRespVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.math.BigDecimal;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseorder.PurchaseOrderService;
@Tag(name = "管理后台 - 采购订单")
@RestController
@RequestMapping("/heli/purchase-order")
@Validated
public class PurchaseOrderController {
@Resource
private PurchaseOrderService purchaseOrderService;
@PostMapping("/create")
@Operation(summary = "创建采购订单")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:create')")
public CommonResult<Long> createPurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO createReqVO) {
return success(purchaseOrderService.createPurchaseOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购订单")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:update')")
public CommonResult<Boolean> updatePurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO updateReqVO) {
purchaseOrderService.updatePurchaseOrder(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购订单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order:delete')")
public CommonResult<Boolean> deletePurchaseOrder(@RequestParam("id") Long id) {
purchaseOrderService.deletePurchaseOrder(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id);
return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购订单分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) {
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class));
}
@GetMapping("/page-by-status")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPageByStatus(@Valid PurchaseOrderPageReqVO pageReqVO) {
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPageByStatus(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购订单 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderExcel(@Valid PurchaseOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderDO> list = purchaseOrderService.getPurchaseOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
@GetMapping("/export-excel-with-tax")
@Operation(summary = "导出采购订单 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderExcelWithTax(@Valid PurchaseOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderDO> list = purchaseOrderService.getPurchaseOrderPageWithTax(pageReqVO).getList();
for(PurchaseOrderDO item : list) {
if(item.getEstimatedPrice() != null && item.getTaxRatio() !=null) {
item.setEstimatedPrice(item.getEstimatedPrice().multiply(BigDecimal.valueOf(item.getTaxRatio())).divide(BigDecimal.valueOf(100)));
}else{
item.setEstimatedPrice(BigDecimal.ZERO);
}
if(item.getActualPrice() != null && item.getTaxRatio() !=null) {
item.setActualPrice(item.getActualPrice().multiply(BigDecimal.valueOf(item.getTaxRatio())).divide(BigDecimal.valueOf(100)));
}else{
item.setActualPrice(BigDecimal.ZERO);
}
}
// 导出 Excel
ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
}

@ -0,0 +1,87 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 采购订单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PurchaseOrderPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "选中采购编号")
private List<Long> ids;
@Schema(description = "采购单号")
private String purchaseNo;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "采购合同号")
private String contractNo;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
private Integer purchaseType;
@Schema(description = "供应商id")
private Long projectMaterialPlanId;
@Schema(description = "供应商id")
private Long materialPlanNo;
@Schema(description = "采购物类型1物料2加工件")
private Integer goodsType;
@Schema(description = "结算币种")
private Integer currencyType;
@Schema(description = "税率")
private Integer taxRatio;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建者")
private String creator;
@Schema(description = "创建时间")
private String createTime;
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 采购订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PurchaseOrderRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购单号")
private String purchaseNo;
@Schema(description = "创建时间")
@ExcelProperty(value="单据日期", converter = TimestampToDateConvert.class)
private LocalDateTime createTime;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "供应商名称")
@ExcelProperty("供应商")
private String supplierName;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
@ExcelProperty(value = "采购单类型", converter = DictConvert.class)
@DictFormat("heli_project_purchase_order_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer purchaseType;
@Schema(description = "物料需求计划单号")
@ExcelProperty("物料需求计划单号")
private String materialPlanNo;
@Schema(description = "采购物类型1物料2加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "采购物料类型", converter = DictConvert.class)
@DictFormat("heli_project_purchase_goods_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer goodsType;
@Schema(description = "采购合同号")
@ExcelProperty("采购合同号")
private String contractNo;
@Schema(description = "物料需求计划id")
private Long projectMaterialPlanId;
@Schema(description = "结算币种")
@ExcelProperty(value ="结算币种",converter = DictConvert.class)
@DictFormat("heli_currency")
private Integer currencyType;
@Schema(description = "暂估价金额")
@ExcelProperty("暂估价金额(元)")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
@ExcelProperty("实际价金额(元)")
private BigDecimal actualPrice;
@Schema(description = "税率")
@ExcelProperty("税率(%)")
private Integer taxRatio;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
@ExcelProperty(value = "单据状态", converter = DictConvert.class)
@DictFormat("heli_purchase_order_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建者")
private String creator;
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 采购订单新增/修改 Request VO")
@Data
public class PurchaseOrderSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String purchaseNo;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "采购合同号")
private String contractNo;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
private Integer purchaseType;
@Schema(description = "供应商id")
private Long projectMaterialPlanId;
@Schema(description = "采购物类型1物料2加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "采购物类型1物料2加工件不能为空")
private Integer goodsType;
@Schema(description = "结算币种")
private Integer currencyType;
@Schema(description = "税率")
private Integer taxRatio;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "备注")
private String description;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderboom;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderboom.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderboom.PurchaseOrderBoomDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseorderboom.PurchaseOrderBoomService;
@Tag(name = "管理后台 - 采购订单加工件明细")
@RestController
@RequestMapping("/heli/purchase-order-boom")
@Validated
public class PurchaseOrderBoomController {
@Resource
private PurchaseOrderBoomService purchaseOrderBoomService;
@PostMapping("/create")
@Operation(summary = "创建采购订单加工件明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:create')")
public CommonResult<Long> createPurchaseOrderBoom(@Valid @RequestBody PurchaseOrderBoomSaveReqVO createReqVO) {
return success(purchaseOrderBoomService.createPurchaseOrderBoom(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购订单加工件明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:update')")
public CommonResult<Boolean> updatePurchaseOrderBoom(@Valid @RequestBody PurchaseOrderBoomSaveReqVO updateReqVO) {
purchaseOrderBoomService.updatePurchaseOrderBoom(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购订单加工件明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:delete')")
public CommonResult<Boolean> deletePurchaseOrderBoom(@RequestParam("id") Long id) {
purchaseOrderBoomService.deletePurchaseOrderBoom(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购订单加工件明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:query')")
public CommonResult<PurchaseOrderBoomRespVO> getPurchaseOrderBoom(@RequestParam("id") Long id) {
PurchaseOrderBoomDO purchaseOrderBoom = purchaseOrderBoomService.getPurchaseOrderBoom(id);
return success(BeanUtils.toBean(purchaseOrderBoom, PurchaseOrderBoomRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购订单加工件明细分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:query')")
public CommonResult<PageResult<PurchaseOrderBoomRespVO>> getPurchaseOrderBoomPage(@Valid PurchaseOrderBoomPageReqVO pageReqVO) {
PageResult<PurchaseOrderBoomDO> pageResult = purchaseOrderBoomService.getPurchaseOrderBoomPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderBoomRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购订单加工件明细 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-boom:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderBoomExcel(@Valid PurchaseOrderBoomPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderBoomDO> list = purchaseOrderBoomService.getPurchaseOrderBoomPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购订单加工件明细.xls", "数据", PurchaseOrderBoomRespVO.class,
BeanUtils.toBean(list, PurchaseOrderBoomRespVO.class));
}
}

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

Loading…
Cancel
Save