Compare commits

..

300 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

@ -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/ 开启]");
}
}); });
} }

@ -80,6 +80,10 @@ public enum OperateTypeEnum {
* *
* */ * */
CANCEL_SUBMIT(16), CANCEL_SUBMIT(16),
/*
*
* */
CANCEL(17),
/** /**
* *
* *

@ -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) {

@ -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;
}
}

@ -14,6 +14,16 @@ public enum BusinesTypeEnum {
PROJECT_ORDER_SNAPSHOT("销售订单快照"), PROJECT_ORDER_SNAPSHOT("销售订单快照"),
DELIVER_ORDER("发货订单"), DELIVER_ORDER("发货订单"),
PROCESS_BOM("工艺BOM"), 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;

@ -44,8 +44,13 @@ public enum CodeEnum {
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("生产计划", "PP",3, "yyyyMM"),
PROJECT_PLAN_TASK("生产计划任务单", "PT",3, "yyyyMMdd"),
MATERIAL_PLAN("物料需求计划", "PR",4, "yyyyMMdd"), MATERIAL_PLAN("物料需求计划", "PR",4, "yyyyMMdd"),
PURCHASE_ORDER("采购订单", "PO",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),
; ;
@ -56,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;
}
}

@ -20,13 +20,16 @@ import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
* 007 * 007
* 008 * 008
* 009 * 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, "材质不存在");
@ -36,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, "车间不存在");
@ -65,11 +72,25 @@ public interface ErrorCodeConstants {
/************生产计划管理***********/ /************生产计划管理***********/
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_007_001, "生产计划不存在"); ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_007_001, "生产计划不存在");
ErrorCode PLAN_SUB_NOT_EXISTS = new ErrorCode(1_007_002, "生产计划子项目不存在"); 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_NOT_EXISTS = new ErrorCode(1_008_001, "物料需求计划不存在");
ErrorCode MATERIAL_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_008_002, "物料需求计划物料详情不存在"); ErrorCode MATERIAL_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_008_002, "物料需求计划物料详情不存在");
ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_003, "采购订单不存在"); ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_003, "采购订单不存在");
ErrorCode PURCHASE_ORDER_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_004, "采购单物料不存在"); 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_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,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,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,10 +1,11 @@
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") @Schema(description = "管理后台 - 材质新增/修改 Request VO")
@Data @Data
@ -32,6 +33,6 @@ public class CompositionSaveReqVO {
private String original; private String original;
@Schema(description = "密度") @Schema(description = "密度")
private String density; 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;

@ -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;

@ -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;
}

@ -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,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;
}

@ -79,6 +79,14 @@ public class MaterialPlanDetailController {
return success(BeanUtils.toBean(pageResult, MaterialPlanDetailRespVO.class)); 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") @GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划物料详情 Excel") @Operation(summary = "导出物料需求计划物料详情 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:export')") @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:export')")

@ -26,6 +26,15 @@ public class MaterialPlanDetailPageReqVO extends PageParam {
@Schema(description = "物料id") @Schema(description = "物料id")
private Long materialId; private Long materialId;
@Schema(description = "物料名称")
private String matName;
@Schema(description = "物料编码")
private String matCode;
@Schema(description = "物料类型")
private Long matType;
@Schema(description = "子项目编号") @Schema(description = "子项目编号")
private Long projectSubId; private Long projectSubId;

@ -35,6 +35,10 @@ public class MaterialPlanDetailRespVO {
@ExcelProperty("需求数量") @ExcelProperty("需求数量")
private BigDecimal requireAmount; private BigDecimal requireAmount;
@Schema(description = "库存数量")
@ExcelProperty("库存数量")
private BigDecimal matRest;
@Schema(description = "需求到货日期") @Schema(description = "需求到货日期")
@ExcelProperty("需求到货日期") @ExcelProperty("需求到货日期")
private LocalDateTime requireArriveTime; private LocalDateTime requireArriveTime;

@ -62,7 +62,7 @@ public class PlanSaveReqVO {
private String description; private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2") @Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
private Boolean status; private Integer status;
@Schema(description = "项目变更次数") @Schema(description = "项目变更次数")
private Integer changeNum; private Integer changeNum;

@ -73,5 +73,7 @@ public class PlanSubRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "子项目名称")
private String projectSubName;
} }

@ -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;
}

@ -133,4 +133,12 @@ public class ProcessBomController {
return success(processBomService.getProcessBomDetailListByBomId(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);
}
} }

@ -1,14 +1,13 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.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.time.LocalDateTime;
@Schema(description = "管理后台 - 工艺bom Response VO") @Schema(description = "管理后台 - 工艺bom Response VO")
@Data @Data
@ -76,4 +75,7 @@ public class ProcessBomRespVO {
@Schema(description = "项目名称") @Schema(description = "项目名称")
private String projectName; private String projectName;
@Schema(description = "bom编号")
private String bomCode;
} }

@ -123,4 +123,7 @@ public class ProcessDesignRespVO {
@Schema(description = "最新进度") @Schema(description = "最新进度")
private BigDecimal progress; private BigDecimal progress;
@Schema(description = "项目状态")
private Integer planStatus;
} }

@ -8,9 +8,7 @@ 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;
@ -136,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));
} }
// ==================== 子表(项目订单子项目) ==================== // ==================== 子表(项目订单子项目) ====================
@ -150,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,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));
}
}

@ -0,0 +1,64 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderboom.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 PurchaseOrderBoomPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "采购单编号")
private Long purchaseOrderId;
@Schema(description = "加工件boom detail id")
private Long boomDetailId;
@Schema(description = "零件名称")
private String boomName;
@Schema(description = "规格型号")
private String boomSpec;
@Schema(description = "系统单位")
private Integer boomUnit;
@Schema(description = "材质")
private String composition;
@Schema(description = "采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] arriveTime;
@Schema(description = "需求到期日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] requireTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,77 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderboom.vo;
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 PurchaseOrderBoomRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购单编号")
private Long purchaseOrderId;
@Schema(description = "加工件boom detail id")
@ExcelProperty("加工件boom detail id")
private Long boomDetailId;
@Schema(description = "零件名称")
@ExcelProperty("零件名称")
private String boomName;
@Schema(description = "规格型号")
@ExcelProperty("规格型号")
private String boomSpec;
@Schema(description = "系统单位")
@ExcelProperty("系统单位")
private Integer boomUnit;
@Schema(description = "材质")
@ExcelProperty("材质")
private String composition;
@Schema(description = "采购数量")
@ExcelProperty("采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "需求数量")
@ExcelProperty("需求数量")
private BigDecimal boomAmount;
@Schema(description = "暂估价金额")
@ExcelProperty("暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
@ExcelProperty("实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
@ExcelProperty("预计到期日期")
private LocalDateTime arriveTime;
@Schema(description = "需求到期日期")
@ExcelProperty("需求到期日期")
private LocalDateTime requireTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,59 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorderboom.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 PurchaseOrderBoomSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "采购单编号不能为空")
private Long purchaseOrderId;
@Schema(description = "加工件boom detail id")
private Long boomDetailId;
@Schema(description = "零件名称")
private String boomName;
@Schema(description = "规格型号")
private String boomSpec;
@Schema(description = "系统单位")
private Integer boomUnit;
@Schema(description = "材质")
private String composition;
@Schema(description = "采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "需求数量")
private BigDecimal boomAmount;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
private LocalDateTime arriveTime;
@Schema(description = "需求到期日期")
private LocalDateTime requireTime;
@Schema(description = "备注")
private String description;
}

@ -1,5 +1,8 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial; package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseorder.PurchaseOrderService;
import org.springframework.util.StringUtils;
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;
@ -38,6 +41,7 @@ public class PurchaseOrderMaterialController {
@Resource @Resource
private PurchaseOrderMaterialService purchaseOrderMaterialService; private PurchaseOrderMaterialService purchaseOrderMaterialService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建采购单物料") @Operation(summary = "创建采购单物料")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:create')") @PreAuthorize("@ss.hasPermission('heli:purchase-order-material:create')")

@ -75,4 +75,17 @@ public class PurchaseOrderMaterialRespVO {
@ExcelProperty("物料类型") @ExcelProperty("物料类型")
private String matType; private String matType;
@Schema(description = "库存数量")
@ExcelProperty("库存数量")
private BigDecimal matRest;
@Schema(description = "需求数量")
@ExcelProperty("需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
@ExcelProperty("需求到货日期")
private LocalDateTime requireArriveTime;
} }

@ -0,0 +1,92 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback;
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.qualityfeedback.vo.QualityFeedbackPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback.vo.QualityFeedbackRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback.vo.QualityFeedbackSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.qualityfeedback.QualityFeedbackDO;
import com.chanko.yunxi.mes.module.heli.service.qualityfeedback.QualityFeedbackService;
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.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/quality-feedback")
@Validated
public class QualityFeedbackController {
@Resource
private QualityFeedbackService qualityFeedbackService;
@PostMapping("/create")
@Operation(summary = "创建客户反馈质量")
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:create')")
public CommonResult<Long> createQualityFeedback(@Valid @RequestBody QualityFeedbackSaveReqVO createReqVO) {
return success(qualityFeedbackService.createQualityFeedback(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新客户反馈质量")
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:update')")
public CommonResult<Long> updateQualityFeedback(@Valid @RequestBody QualityFeedbackSaveReqVO updateReqVO) {
return success(qualityFeedbackService.updateQualityFeedback(updateReqVO));
}
@DeleteMapping("/delete")
@Operation(summary = "删除客户反馈质量")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:delete')")
public CommonResult<Boolean> deleteQualityFeedback(@RequestParam("id") Long id) {
qualityFeedbackService.deleteQualityFeedback(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得客户反馈质量")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:query')")
public CommonResult<QualityFeedbackRespVO> getQualityFeedback(@RequestParam("id") Long id) {
QualityFeedbackDO qualityFeedback = qualityFeedbackService.getQualityFeedback(id);
return success(BeanUtils.toBean(qualityFeedback, QualityFeedbackRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得客户反馈质量分页")
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:query')")
public CommonResult<PageResult<QualityFeedbackRespVO>> getQualityFeedbackPage(@Valid QualityFeedbackPageReqVO pageReqVO) {
PageResult<QualityFeedbackDO> pageResult = qualityFeedbackService.getQualityFeedbackPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, QualityFeedbackRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出客户反馈质量 Excel")
@PreAuthorize("@ss.hasPermission('heli:quality-feedback:export')")
@OperateLog(type = EXPORT)
public void exportQualityFeedbackExcel(@Valid QualityFeedbackPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<QualityFeedbackDO> list = qualityFeedbackService.getQualityFeedbackPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "客户反馈质量.xls", "数据", QualityFeedbackRespVO.class,
BeanUtils.toBean(list, QualityFeedbackRespVO.class));
}
}

@ -0,0 +1,52 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback.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 QualityFeedbackPageReqVO extends PageParam {
@Schema(description = "项目订单id", example = "22876")
private Long projectId;
@Schema(description = "子项目id", example = "8582")
private Long projectSubId;
@Schema(description = "反馈人")
private String feedbacker;
@Schema(description = "联系电话")
private String mobile;
@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 projectCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
}

@ -0,0 +1,73 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback.vo;
import com.baomidou.mybatisplus.annotation.TableField;
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 QualityFeedbackRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "17478")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22876")
@ExcelProperty("项目订单id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8582")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "反馈人")
@ExcelProperty("反馈人")
private String feedbacker;
@Schema(description = "联系电话")
@ExcelProperty("联系电话")
private String mobile;
@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;
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "子项目编号")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "创建人名称")
private String creatorName;
@Schema(description = "更新人名称")
private String updaterName;
}

@ -0,0 +1,37 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualityfeedback.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 QualityFeedbackSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "17478")
private Long id;
@Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22876")
@NotNull(message = "项目订单id不能为空")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8582")
@NotNull(message = "子项目id不能为空")
private Long projectSubId;
@Schema(description = "反馈人")
private String feedbacker;
@Schema(description = "联系电话")
private String mobile;
@Schema(description = "反馈内容", example = "你猜")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
}

@ -0,0 +1,56 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualitymanagement;
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.module.heli.controller.admin.projectorder.vo.ProjectOrderRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.qualitymanagement.vo.InspectionReportPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.qualitymanagement.vo.InspectionReportRespVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.service.qualitymanagement.QualityManagementService;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
/**
*
*
* @author chenxi
* @date 2024-03-11 11:13
*/
@Tag(name = "管理后台 - 质量管理")
@RestController
@RequestMapping("/heli/quality-management")
@Validated
public class QualityManagementController {
@Resource
private QualityManagementService qualityManagementService;
@GetMapping("/inspection-report/page")
@Operation(summary = "获得检验报告分页")
public CommonResult<PageResult<InspectionReportRespVO>> getInspectionReportPage(@Valid InspectionReportPageReqVO pageReqVO) {
PageResult<InspectionReportRespVO> pageResult = qualityManagementService.getInspectionReportPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/inspection-report/get")
@Operation(summary = "获得检验报告")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<InspectionReportRespVO> getInspectionReport(@RequestParam("id") Long id) {
InspectionReportRespVO inspectionReport = qualityManagementService.getInspectionReport(id);
return success(inspectionReport);
}
}

@ -0,0 +1,27 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualitymanagement.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 InspectionReportPageReqVO extends PageParam {
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
}

@ -0,0 +1,39 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.qualitymanagement.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 检验报告 Response VO")
@Data
@ExcelIgnoreUnannotated
public class InspectionReportRespVO {
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19610")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21985")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "子项目编号")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "附件数量")
private Integer attachmentCount;
}

@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagelog;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogAll.StorageLogAllDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogAll.StorageLogAllDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO;
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;
@ -82,6 +83,30 @@ public class StorageLogController {
return success(pageResult); return success(pageResult);
} }
@GetMapping("/page-now-all")
@Operation(summary = "获得入/出库日志分页")
@PreAuthorize("@ss.hasPermission('heli:storage-log:query')")
public CommonResult<PageResult<StorageLogNowDO>> getStorageLogPageAll(@Valid StorageLogPageReqVO pageReqVO) {
PageResult<StorageLogNowDO> pageResult = storageLogService.getStorageNowPageAll(pageReqVO);
return success(pageResult);
}
@GetMapping("/page-material")
@Operation(summary = "获得入/出库日志分页")
@PreAuthorize("@ss.hasPermission('heli:storage-log:query')")
public CommonResult<PageResult<StorageMaterialDO>> getStorageLogPageInMaterial(@Valid StorageLogPageReqVO pageReqVO) {
PageResult<StorageMaterialDO> pageResult = storageLogService.getStorageNowPageInMaterial(pageReqVO);
return success(pageResult);
}
@GetMapping("/page-material-group")
@Operation(summary = "获得入/出库日志分页")
@PreAuthorize("@ss.hasPermission('heli:storage-log:query')")
public CommonResult<PageResult<StorageMaterialDO>> getStorageLogPageGroupMaterial(@Valid StorageLogPageReqVO pageReqVO) {
PageResult<StorageMaterialDO> pageResult = storageLogService.getStorageNowPageGroupMaterial(pageReqVO);
return success(pageResult);
}
@GetMapping("/now") @GetMapping("/now")
@Operation(summary = "获得入/出库实时分页") @Operation(summary = "获得入/出库实时分页")
@PreAuthorize("@ss.hasPermission('heli:storage-log:query')") @PreAuthorize("@ss.hasPermission('heli:storage-log:query')")

@ -25,6 +25,9 @@ public class StorageLogPageReqVO extends PageParam {
@Schema(description = "物料类型") @Schema(description = "物料类型")
private String matType; private String matType;
@Schema(description = "物料类型")
private String matSpec;
@Schema(description = "批次号") @Schema(description = "批次号")
private String lotNo; private String lotNo;

@ -16,6 +16,9 @@ public class StorageNowAllReqVO {
@Schema(description = "物料类型") @Schema(description = "物料类型")
private String matType; private String matType;
@Schema(description = "物料型号")
private String matSpec;
@Schema(description = "是否排除库存为0的物料") @Schema(description = "是否排除库存为0的物料")
private Integer noZero; private Integer noZero;

@ -50,6 +50,10 @@ public class StorageMatRespVO {
@ExcelProperty("子项目编号") @ExcelProperty("子项目编号")
private String projectNo; private String projectNo;
@Schema(description = "子项目名称")
@ExcelProperty("子项目名称")
private String projectSubName;
@Schema(description = "备注", example = "你猜") @Schema(description = "备注", example = "你猜")
@ExcelProperty("备注") @ExcelProperty("备注")
private String description; private String description;

@ -1,34 +1,36 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch; package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch;
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.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetail.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService;
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 = "管理后台 - 派工单") @Tag(name = "管理后台 - 派工单")
@RestController @RestController
@ -39,6 +41,12 @@ public class TaskDispatchController {
@Resource @Resource
private TaskDispatchService taskDispatchService; private TaskDispatchService taskDispatchService;
@Resource
private OperateLogFrameworkService operateLogFrameworkService;
@Resource
private HttpServletRequest request;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建派工单") @Operation(summary = "创建派工单")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:create')") @PreAuthorize("@ss.hasPermission('heli:task-dispatch:create')")
@ -54,6 +62,26 @@ public class TaskDispatchController {
return success(true); return success(true);
} }
@PostMapping("/operate")
@Operation(summary = "操作派工单")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operate(@Valid @RequestBody TaskDispatchSaveReqVO operateReqVO) {
LocalDateTime startTime = LocalDateTime.now();
taskDispatchService.operate(operateReqVO);
// 手动记录日志
operateLogFrameworkService.createOperateLog(request,
startTime,
BusinesTypeEnum.TASK_DISPATCH.name(),
operateReqVO.getId(),
OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(),
operateReqVO.getActiveOpinion());
return success(operateReqVO.getId());
}
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除派工单") @Operation(summary = "删除派工单")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@ -103,4 +131,31 @@ public class TaskDispatchController {
return success(taskDispatchService.getTaskDispatchDetailListByDispatchId(dispatchId)); return success(taskDispatchService.getTaskDispatchDetailListByDispatchId(dispatchId));
} }
@DeleteMapping("/task-dispatch-detail/delete")
@Operation(summary = "删除派工单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:delete')")
public CommonResult<Boolean> deleteTaskDispatchDetail(@RequestParam("id") Long id) {
taskDispatchService.deleteTaskDispatchDetail(id);
return success(true);
}
@GetMapping("/task-dispatch-detail/page")
@Operation(summary = "获得派工明细分页")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<PageResult<TaskDispatchDetailDO>> getTaskDispatchPageDetail(@Valid TaskDispatchDetailPageReqVO pageReqVO) {
PageResult<TaskDispatchDetailDO> pageResult = taskDispatchService.getTaskDispatchDetailPage(pageReqVO);
return success(pageResult);
}
@PostMapping("/task-dispatch-detail/operate")
@Operation(summary = "操作派工任务")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Void> operateDetail(@Valid @RequestBody TaskDispatchDetailVO operateReqVO) {
taskDispatchService.operateDetail(operateReqVO);
return success(null);
}
} }

@ -0,0 +1,35 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.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 java.util.List;
@Schema(description = "管理后台 - 派工单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TaskDispatchDetailPageReqVO extends PageParam {
@Schema(description = "负责人id")
private Long owner;
@Schema(description = "工序完成状态列表")
private List<Integer> procedureStatusList;
@Schema(description = "派工类型")
private String dispatchType;
@Schema(description = "是否需要报工")
private Integer isReport;
@Schema(description = "生产任务id")
private Long taskId;
@Schema(description = "bom明细id")
private Long bomDetailId;
}

@ -0,0 +1,35 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 派工单新增/修改 Request VO")
@Data
public class TaskDispatchDetailVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26723")
@NotNull(message = "id不能为空")
private Long id;
@Min(value = 0, message = "报工数量超出限定范围")
@Schema(description = "报工数量")
private Integer amount;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
@Positive(message = "报工工时超出限定范围")
@Schema(description = "报工工时")
private BigDecimal workTime;
}

@ -1,10 +1,12 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.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 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;
@ -49,4 +51,28 @@ public class TaskDispatchPageReqVO 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 = "生产任务单号")
private String taskCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "任务负责人")
private String ownerName;
@Schema(description = "生产计划单号")
private String planCode;
} }

@ -1,14 +1,13 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.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.time.LocalDateTime;
@Schema(description = "管理后台 - 派工单 Response VO") @Schema(description = "管理后台 - 派工单 Response VO")
@Data @Data
@ -65,4 +64,62 @@ public class TaskDispatchRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "生产任务单号")
private String taskCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "子项目编号")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目结束日期")
private LocalDateTime projectEndTime;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "物料id")
private Long compositionId;
@Schema(description = "物料名称")
private String compositionName;
@Schema(description = "规格")
private String spec;
@Schema(description = "图号")
private String blueprintNo;
@Schema(description = "数量")
private Integer amount;
@Schema(description = "系统单位")
private String unit;
@Schema(description = "负责人")
private String ownerName;
@Schema(description = "要求完成时间")
private LocalDateTime requiredCompletedDate;
@Schema(description = "要求开始日期")
private LocalDateTime requiredStartDate;
@Schema(description = "要求完成日期")
private LocalDateTime requiredEndDate;
} }

@ -5,7 +5,7 @@ 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.taskdispatchdetail.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
@Schema(description = "管理后台 - 派工单新增/修改 Request VO") @Schema(description = "管理后台 - 派工单新增/修改 Request VO")
@Data @Data
@ -53,4 +53,11 @@ public class TaskDispatchSaveReqVO {
@Schema(description = "派工明细列表") @Schema(description = "派工明细列表")
private List<TaskDispatchDetailDO> taskDispatchDetails; private List<TaskDispatchDetailDO> taskDispatchDetails;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
} }

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskreport;
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.taskreport.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO;
import com.chanko.yunxi.mes.module.heli.service.taskreport.TaskReportService;
@Tag(name = "管理后台 - 任务报工")
@RestController
@RequestMapping("/heli/task-report")
@Validated
public class TaskReportController {
@Resource
private TaskReportService taskReportService;
@PostMapping("/create")
@Operation(summary = "创建任务报工")
@PreAuthorize("@ss.hasPermission('heli:task-report:create')")
public CommonResult<Long> createTaskReport(@Valid @RequestBody TaskReportSaveReqVO createReqVO) {
return success(taskReportService.createTaskReport(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新任务报工")
@PreAuthorize("@ss.hasPermission('heli:task-report:update')")
public CommonResult<Boolean> updateTaskReport(@Valid @RequestBody TaskReportSaveReqVO updateReqVO) {
taskReportService.updateTaskReport(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除任务报工")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:task-report:delete')")
public CommonResult<Boolean> deleteTaskReport(@RequestParam("id") Long id) {
taskReportService.deleteTaskReport(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得任务报工")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:task-report:query')")
public CommonResult<TaskReportRespVO> getTaskReport(@RequestParam("id") Long id) {
TaskReportDO taskReport = taskReportService.getTaskReport(id);
return success(BeanUtils.toBean(taskReport, TaskReportRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得任务报工分页")
@PreAuthorize("@ss.hasPermission('heli:task-report:query')")
public CommonResult<PageResult<TaskReportRespVO>> getTaskReportPage(@Valid TaskReportPageReqVO pageReqVO) {
PageResult<TaskReportDO> pageResult = taskReportService.getTaskReportPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, TaskReportRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出任务报工 Excel")
@PreAuthorize("@ss.hasPermission('heli:task-report:export')")
@OperateLog(type = EXPORT)
public void exportTaskReportExcel(@Valid TaskReportPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<TaskReportDO> list = taskReportService.getTaskReportPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "任务报工.xls", "数据", TaskReportRespVO.class,
BeanUtils.toBean(list, TaskReportRespVO.class));
}
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskreport.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 TaskReportPageReqVO extends PageParam {
@Schema(description = "派工单任务明细id", example = "23399")
private Long dispatchDetailId;
@Schema(description = "负责人")
private Long owner;
@Schema(description = "数量")
private Integer amount;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] startTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
@Schema(description = "报工时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportTime;
@Schema(description = "是否已报工 0 默认否 1 是")
private Integer hasReport;
@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 = "报工工时")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private BigDecimal[] workTime;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "零件名称")
private String materialName;
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskreport.vo;
import com.baomidou.mybatisplus.annotation.TableField;
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.*;
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 TaskReportRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "7295")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "派工单任务明细id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23399")
@ExcelProperty("派工单任务明细id")
private Long dispatchDetailId;
@Schema(description = "负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("负责人")
private Long owner;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("数量")
private Integer amount;
@Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("开始时间")
private LocalDateTime startTime;
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("结束时间")
private LocalDateTime endTime;
@Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("报工时间")
private LocalDateTime reportTime;
@Schema(description = "是否已报工 0 默认否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "是否已报工 0 默认否 1 是", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer hasReport;
@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 = "修改时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("修改时间")
private LocalDateTime updateTime;
@Schema(description = "报工工时", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("报工工时")
private BigDecimal workTime;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目编码")
private String projectCode;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编码")
private String projectSubCode;
@Schema(description = "派工单号")
private String dispatchCode;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "规格型号")
private String spec;
@Schema(description = "报工人")
private String ownerName;
@Schema(description = "报工工序")
private String procedureName;
@Schema(description = "更新人名称")
private String updaterName;
@Schema(description = "单位")
private String unit;
}

@ -0,0 +1,56 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskreport.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 TaskReportSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "7295")
private Long id;
@Schema(description = "派工单任务明细id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23399")
@NotNull(message = "派工单任务明细id不能为空")
private Long dispatchDetailId;
@Schema(description = "负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "负责人不能为空")
private Long owner;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "数量不能为空")
private Integer amount;
@Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "开始时间不能为空")
private LocalDateTime startTime;
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "结束时间不能为空")
private LocalDateTime endTime;
@Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报工时间不能为空")
private LocalDateTime reportTime;
@Schema(description = "是否已报工 0 默认否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否已报工 0 默认否 1 是不能为空")
private Integer hasReport;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "报工工时", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报工工时不能为空")
private BigDecimal workTime;
}

@ -0,0 +1,116 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification;
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.module.heli.controller.admin.taskdispatch.vo.TaskDispatchSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.unqualifiednotification.UnqualifiedNotificationDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.unqualifiednotification.UnqualifiedNotificationService;
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.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 = "管理后台 - 品质异常通知单审核")
@RestController
@RequestMapping("/heli/unqualified-notification")
@Validated
public class UnqualifiedNotificationController {
@Resource
private UnqualifiedNotificationService unqualifiedNotificationService;
@PostMapping("/create")
@Operation(summary = "创建品质异常通知单审核")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:create')")
public CommonResult<Long> createUnqualifiedNotification(@Valid @RequestBody UnqualifiedNotificationSaveReqVO createReqVO) {
return success(unqualifiedNotificationService.createUnqualifiedNotification(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新品质异常通知单审核")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:update')")
public CommonResult<Boolean> updateUnqualifiedNotification(@Valid @RequestBody UnqualifiedNotificationSaveReqVO updateReqVO) {
unqualifiedNotificationService.updateUnqualifiedNotification(updateReqVO);
return success(true);
}
@PostMapping("/operate")
@Operation(summary = "操作更新品质异常通知单")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operate(@Valid @RequestBody UnqualifiedNotificationSaveReqVO operateReqVO) {
unqualifiedNotificationService.operate(operateReqVO);
return success(operateReqVO.getId());
}
@DeleteMapping("/delete")
@Operation(summary = "删除品质异常通知单审核")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:delete')")
public CommonResult<Boolean> deleteUnqualifiedNotification(@RequestParam("id") Long id) {
unqualifiedNotificationService.deleteUnqualifiedNotification(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得品质异常通知单审核")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')")
public CommonResult<UnqualifiedNotificationRespVO> getUnqualifiedNotification(@RequestParam("id") Long id) {
UnqualifiedNotificationDO unqualifiedNotification = unqualifiedNotificationService.getUnqualifiedNotification(id);
return success(BeanUtils.toBean(unqualifiedNotification, UnqualifiedNotificationRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得品质异常通知单审核分页")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')")
public CommonResult<PageResult<UnqualifiedNotificationRespVO>> getUnqualifiedNotificationPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) {
PageResult<UnqualifiedNotificationDO> pageResult = unqualifiedNotificationService.getUnqualifiedNotificationPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, UnqualifiedNotificationRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出品质异常通知单审核 Excel")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:export')")
@OperateLog(type = EXPORT)
public void exportUnqualifiedNotificationExcel(@Valid UnqualifiedNotificationPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<UnqualifiedNotificationDO> list = unqualifiedNotificationService.getUnqualifiedNotificationPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "品质异常通知单审核.xls", "数据", UnqualifiedNotificationRespVO.class,
BeanUtils.toBean(list, UnqualifiedNotificationRespVO.class));
}
@GetMapping("/statisticPage")
@Operation(summary = "获得品质异常单统计分页")
@PreAuthorize("@ss.hasPermission('heli:unqualified-notification:query')")
public CommonResult<PageResult<UnqualifiedNotificationRespVO>> getUnqualifiedNotificationStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO) {
PageResult<UnqualifiedNotificationDO> pageResult = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, UnqualifiedNotificationRespVO.class));
}
}

@ -0,0 +1,92 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.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 = "管理后台 - 品质异常通知单审核分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class UnqualifiedNotificationPageReqVO extends PageParam {
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "质检类型", example = "2")
private String type;
@Schema(description = "单据状态 已保存|已送审|已审核 1|2|3", example = "1")
private Integer notificationStatus;
@Schema(description = "项目订单id", example = "26682")
private Long projectId;
@Schema(description = "子项目id", example = "28456")
private Long projectSubId;
@Schema(description = "bom明细id", example = "21454")
private Long bomDetailId;
@Schema(description = "工序id", example = "14739")
private Long procedureId;
@Schema(description = "异常数量")
private Integer amount;
@Schema(description = "责任人")
private Long owner;
@Schema(description = "情况描述", example = "随便")
private String remark;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核意见")
private String auditOpinion;
@Schema(description = "状态,1表示正常2表示禁用", example = "1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "审核时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditTime;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "责任人名称")
private String ownerName;
@Schema(description = "创建人名称")
private String creatorName;
@Schema(description = "最小创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime minCreateTime;
@Schema(description = "最大创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime maxCreateTime;
}

@ -0,0 +1,133 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.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 UnqualifiedNotificationRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "11880")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "编号,唯一")
@ExcelProperty("编号,唯一")
private String code;
@Schema(description = "质检类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "质检类型", converter = DictConvert.class)
@DictFormat("heli_inspection_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String type;
@Schema(description = "单据状态 已保存|已送审|已审核 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "单据状态 已保存|已送审|已审核 1|2|3", converter = DictConvert.class)
@DictFormat("heli_unqualified_notification_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer notificationStatus;
@Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26682")
@ExcelProperty("项目订单id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28456")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "bom明细id", example = "21454")
@ExcelProperty("bom明细id")
private Long bomDetailId;
@Schema(description = "工序id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14739")
@ExcelProperty("工序id")
private Long procedureId;
@Schema(description = "异常数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("异常数量")
private Integer amount;
@Schema(description = "责任人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("责任人")
private Long owner;
@Schema(description = "情况描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@ExcelProperty("情况描述")
private String remark;
@Schema(description = "审核人")
@ExcelProperty("审核人")
private Long auditor;
@Schema(description = "审核意见")
@ExcelProperty(value = "审核意见", converter = DictConvert.class)
@DictFormat("heli_unqualified_notification_opinion") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String auditOpinion;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("状态,1表示正常2表示禁用")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "审核时间")
@ExcelProperty("审核时间")
private LocalDateTime auditTime;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "子项目编号")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "物料id")
private Long compositionId;
@Schema(description = "物料名称")
private String compositionName;
@Schema(description = "规格")
private String spec;
@Schema(description = "图号")
private String blueprintNo;
@Schema(description = "系统单位")
private String unit;
@Schema(description = "工序名称")
private String procedureName;
@Schema(description = "审核人名称")
private String auditorName;
@Schema(description = "责任人名称")
private String ownerName;
@Schema(description = "创建人名称")
private String creatorName;
@Schema(description = "异常统计数量")
private String statisticAmount;
}

@ -0,0 +1,72 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.unqualifiednotification.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 UnqualifiedNotificationSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "11880")
private Long id;
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "质检类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "质检类型不能为空")
private String type;
@Schema(description = "单据状态 已保存|已送审|已审核 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "单据状态 已保存|已送审|已审核 1|2|3不能为空")
private Integer notificationStatus;
@Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26682")
@NotNull(message = "项目订单id不能为空")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28456")
@NotNull(message = "子项目id不能为空")
private Long projectSubId;
@Schema(description = "bom明细id", example = "21454")
private Long bomDetailId;
@Schema(description = "工序id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14739")
@NotNull(message = "工序id不能为空")
private Long procedureId;
@Schema(description = "异常数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "异常数量不能为空")
private Integer amount;
@Schema(description = "责任人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "责任人不能为空")
private Long owner;
@Schema(description = "情况描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@NotEmpty(message = "情况描述不能为空")
private String remark;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核意见")
private String auditOpinion;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "操作")
private String active;
}

@ -46,6 +46,7 @@ public class ClassesDO extends BaseDO {
/** /**
* *
*/ */
@TableField(fill = FieldFill.UPDATE)
private Long leaderUserId; private Long leaderUserId;
/** /**
* *

@ -1,11 +1,12 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.composition; package com.chanko.yunxi.mes.module.heli.dal.dataobject.composition;
import lombok.*; import com.baomidou.mybatisplus.annotation.KeySequence;
import java.util.*; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.math.BigDecimal;
/** /**
* DO * DO
@ -52,6 +53,6 @@ public class CompositionDO extends BaseDO {
/** /**
* *
*/ */
private String density; private BigDecimal density;
} }

@ -32,13 +32,17 @@ public class CustomerDO extends BaseDO {
*/ */
private String code; private String code;
/** /**
* *
*/ */
private String brief; private String brief;
/** /**
* *
*/ */
private String name; private String name;
/**
*
*/
private String fullName;
/** /**
* *
*/ */
@ -52,6 +56,7 @@ public class CustomerDO extends BaseDO {
/** /**
* ID,ID * ID,ID
*/ */
@TableField(fill = FieldFill.UPDATE)
private String userId; private String userId;
/** /**
* *

@ -0,0 +1,51 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("base_equip_manufacture")
@KeySequence("base_equip_manufacture_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EquipManufactureDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private String type;
/**
*
*/
private String model;
/**
* ,121
*/
private Integer status;
}

@ -0,0 +1,127 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* DO
*
* @author
*/
@TableName("finance_invoice")
@KeySequence("finance_invoice_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class InvoiceDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* FINANCE_MAKE|FINANCE_RECEIVE |
*/
private String businessType;
/**
* id
*/
private Long orderId;
/**
*
*/
private String number;
/**
*
*
* {@link TODO heli_invoice_type }
*/
private String type;
/**
*
*/
private LocalDateTime billingDate;
/**
*
*/
private BigDecimal amount;
/**
*
*/
private BigDecimal rate;
/**
*
*/
private String remark;
/**
*
*/
private Long submitter;
/**
*
*/
private LocalDateTime submitTime;
/**
*
*/
private Long canceller;
/**
*
*/
private LocalDateTime cancelTime;
/**
* || 1|2|3
*/
private Integer status;
@TableField(exist = false)
private String submitterName;
@TableField(exist = false)
private String creatorName;
@TableField(exist = false)
private String cancellerName;
@TableField(exist = false)
private String orderCode;
public boolean canSave(){
return InvoiceStatusEnum.SAVE.getCode() == this.status.intValue();
}
public boolean canSubmit(){
return InvoiceStatusEnum.SAVE.getCode() == this.status.intValue();
}
public boolean canCancel(){
return InvoiceStatusEnum.SUBMIT.getCode() == this.status.intValue();
}
public boolean canOperate(OperateTypeEnum operateTypeEnum) {
switch (operateTypeEnum){
case SAVE:
return canSave();
case SUBMIT:
return canSubmit();
case CANCEL:
return canCancel();
default:
return false;
}
}
}

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

Loading…
Cancel
Save