7630 lines
651 KiB
Markdown
7630 lines
651 KiB
Markdown
## 2026-06-27 过程异常管控修改执行日志
|
||
|
||
1. 读取 `work/修改过程异常管控.docx`,解析到需求要点:
|
||
- 页面位置:`ProductionManagement/AbnormalControl/index`。
|
||
- 原页面添加多个审批人后表现为多级审批,需要改为多选后多人同时看到任务。
|
||
- 当前任务只要其中一个审批人同意,即完成当前任务。
|
||
- 上传附件功能不正常,需要修改。
|
||
- 加工中心 `ProductionManagement/MachiningCenter/index` 与装配中心 `ProductionManagement/AssemblyCenter/index` 也需要统一嵌套该业务页面。
|
||
- 测试页面功能时不要产生业务数据。
|
||
|
||
2. 检查代码结构:
|
||
- 确认独立异常管控页面位于 `src/views/ProductionManagement/AbnormalControl/index.vue`。
|
||
- 确认加工中心内复制了一份异常管控模板和方法。
|
||
- 确认装配中心入口原本被注释,且没有完整异常管控弹窗模板。
|
||
- 对比其他图纸上传页面,确认文件上传接口需要使用 `DataPDF.params = JSON.stringify(...)` 形式传参,当前异常管控直接传对象是上传异常的重要原因。
|
||
|
||
3. 前端修改:
|
||
- 新增复用组件 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`,承载统一异常管控页面。
|
||
- 将 `src/views/ProductionManagement/AbnormalControl/index.vue` 改为组件包装页,避免独立页面与中心页面逻辑分叉。
|
||
- 在复用组件中将审批人从“添加审批人列表”改为 `el-select multiple` 多选。
|
||
- 提交流程时将多个审批人的 ID 和姓名使用英文逗号拼接,继续通过 `审批人ID`、`审批人姓名` 参数提交,兼容原前端调用方式。
|
||
- 修复附件上传:
|
||
- 上传前校验是否已选择附件。
|
||
- 按项目已有接口约定传 `params` JSON。
|
||
- 传入 `num`、`tableName=流程表`、`worker`、`uploadTime`。
|
||
- 增加上传失败回调提示。
|
||
- 加工中心新增统一异常管控弹窗,按钮改为打开复用组件。
|
||
- 装配中心恢复“异常管控”按钮,并新增统一异常管控弹窗。
|
||
- 修复加工中心旧异常管控复制代码中 `handleRowClick` 与主表行点击方法重名的问题,将旧异常管控内部行点击改名,避免覆盖主页面任务选择逻辑。
|
||
|
||
4. 数据库脚本:
|
||
- 新增 `db_backups/update_abnormal_control_parallel_approval_20260627.sql`。
|
||
- 脚本包含 `sp_创建流程_简化版` 和 `sp_处理审批` 的 `CREATE OR ALTER PROCEDURE`。
|
||
- `sp_创建流程_简化版` 支持逗号分隔的多个审批人,并拆分为同一步骤序号的多个 `processing` 节点,使多人同时看到待处理任务。
|
||
- `sp_处理审批` 在任意审批人同意时,将同一步骤其他待处理节点同步关闭,并将流程置为 `completed`。
|
||
- 脚本只定义存储过程,没有插入或修改业务测试数据;本次未执行该 SQL。
|
||
|
||
5. 文档归档:
|
||
- 新建目录 `work/ProductionManagement/WorkHoursCheck`。
|
||
- 已将 `work/修改过程异常管控.docx` 移动到 `work/ProductionManagement/WorkHoursCheck/修改过程异常管控.docx`。
|
||
|
||
6. 验证:
|
||
- 执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅出现原项目资源体积较大、Browserslist 数据过期等警告。
|
||
- 未调用流程新增、审批、上传等业务接口,因此未产生业务数据。
|
||
|
||
## 2026-06-27 过程异常管控复测问题处理日志
|
||
|
||
1. 根据用户复测反馈重新排查:
|
||
- 用户发起测试流程时选择了曹元和闫一龙两个审批人,但登录曹元账号后没有看到待处理任务。
|
||
- 附件上传仍然不可用。
|
||
|
||
2. 待办不可见问题定位:
|
||
- 当前前端提交多个审批人时,会把审批人ID和审批人姓名用英文逗号拼接后传给 `sp_创建流程_简化版`。
|
||
- 如果目标数据库仍是旧版存储过程,测试流程可能只生成一条节点记录,节点中的 `审批人ID` 是类似 `曹元ID,闫一龙ID` 的字符串。
|
||
- 旧版 `sp_获取待处理任务` 如果按 `审批人ID = 当前登录人ID` 精确匹配,曹元登录时就匹配不到这条节点,所以待办为空。
|
||
|
||
3. 数据库脚本补充:
|
||
- 修改 `db_backups/update_abnormal_control_parallel_approval_20260627.sql`。
|
||
- 在原有 `sp_创建流程_简化版`、`sp_处理审批` 基础上新增 `sp_获取待处理任务` 的 `CREATE OR ALTER PROCEDURE`。
|
||
- 新版 `sp_获取待处理任务` 同时支持:
|
||
- 新逻辑生成的同一步骤多条待办节点。
|
||
- 旧逻辑已生成的逗号分隔审批人ID节点。
|
||
- 这样已发起的曹元、闫一龙测试流程,只要目标库执行该脚本,曹元账号也可以按逗号包含关系查询到待办。
|
||
|
||
4. 附件上传问题修改:
|
||
- 修改 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`。
|
||
- 上传按钮改为只选择附件并记录待上传数量,不再在流程创建前直接上传。
|
||
- 流程创建成功并拿到 `新流程ID` 后,再自动调用上传接口。
|
||
- 上传参数改为使用真实流程ID:`num = 新流程ID`、`tableName = 流程表`、`worker = 当前用户`、`uploadTime = 当前时间`。
|
||
- 使用 `this.$set(this.DataPDF, 'params', JSON.stringify(...))` 设置上传参数,保持与项目已有上传页面的参数传递方式一致。
|
||
- 多附件上传按成功回调计数,全部上传完成后清空文件列表和待上传数量。
|
||
- 取消附件弹窗时清空已选择附件,避免误带入下次流程。
|
||
- 提交流程成功后刷新“我发起的”和“待我处理”列表。
|
||
|
||
5. 验证:
|
||
- 修改后执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅有项目原有资源体积过大、Browserslist/baseline-browser-mapping 数据过期警告。
|
||
- 本次没有调用流程新增、审批、附件上传等业务接口,没有执行数据库脚本,因此未产生业务数据。
|
||
|
||
6. 仍需执行的外部动作:
|
||
- 当前仓库没有可直接、安全执行数据库 DDL 的连接串或发布脚本入口。
|
||
- 前端修改已经完成,但曹元待办不可见的问题依赖目标数据库存储过程更新。
|
||
- 需要在目标 SQL Server 数据库执行 `db_backups/update_abnormal_control_parallel_approval_20260627.sql`,否则服务器仍会按旧存储过程逻辑查询,已发起的测试流程仍可能查不到。
|
||
|
||
## 2026-06-27 过程异常管控附件功能临时移除日志
|
||
|
||
1. 根据用户反馈重新调整:
|
||
- 用户确认附件功能仍然不好用,要求暂时去掉附件功能。
|
||
- 本次目标改为移除过程异常管控页面中的附件入口和上传调用,避免影响流程发起。
|
||
|
||
2. 修改复用组件:
|
||
- 修改 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`。
|
||
- 删除发起流程表单中的“上传附件”表单项和“点击上传”按钮。
|
||
- 删除上传附件弹窗。
|
||
- 删除 `MESUploadFile` 引入。
|
||
- 删除 `DataPDF`、`uploadPDF`、`pendingUploadCount`、`uploadFileTotal`、`uploadFileSuccess`、`uploadingAttachment` 等附件状态。
|
||
- 删除 `uploadSuccessPDF`、`uploadErrorPDF`、`uploadShowPDF`、`submitPicturePDF`、`cancelAttachmentUpload`、`clearPendingAttachments`、`uploadPendingAttachments` 等附件相关方法。
|
||
- 删除流程创建成功后的附件上传调用,成功提示恢复为只提示流程创建成功。
|
||
- 删除无用的 `.attachment-tip` 样式。
|
||
|
||
3. 清理加工中心旧残留:
|
||
- 修改 `src/views/ProductionManagement/MachiningCenter/index.vue`。
|
||
- 删除旧异常管控模板里残留的“上传附件”按钮。
|
||
- 删除旧代码中已经注释的上传弹窗块。
|
||
- 删除旧异常管控方法里的 `uploadShowPDF` 和 `submitPicturePDF`。
|
||
- 删除旧数据中的 `imgDialogFormVisible`。
|
||
|
||
4. 搜索确认:
|
||
- 对 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`、`AbnormalControl/index.vue`、`MachiningCenter/index.vue`、`AssemblyCenter/index.vue` 执行搜索。
|
||
- 未再发现 `上传附件`、`MESUploadFile`、`uploadPDF`、`DataPDF`、`submitPicturePDF`、`uploadShowPDF`、`attachment-tip`、`附件开始上传` 等附件入口或上传调用残留。
|
||
|
||
5. 验证:
|
||
- 执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅有项目原有资源体积过大、Browserslist/baseline-browser-mapping 数据过期警告。
|
||
- 本次未调用流程新增、审批、附件上传等业务接口,未产生业务数据。
|
||
|
||
## 2026-06-27 过程异常管控页签刷新处理日志
|
||
|
||
1. 根据用户反馈重新调整:
|
||
- 用户要求异常管控里面三个页签点击时需要刷新数据。
|
||
- 涉及页签包括:`待我处理`、`我发起的`、`已完成`。
|
||
|
||
2. 检查当前实现:
|
||
- 当前 `el-tabs` 只通过 `v-model="activeTab"` 切换页签,没有绑定页签点击事件。
|
||
- 顶部三个统计卡片点击时也只是修改 `activeTab`,没有重新请求数据。
|
||
- `searchTable` 和 `searchTable1` 在接口返回空数组时不会覆盖原列表,可能导致刷新后仍显示上一次的数据。
|
||
- 绑定任务查询 `searchTable3` 也存在接口返回空数组时保留旧列表的问题。
|
||
|
||
3. 前端修改:
|
||
- 修改 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`。
|
||
- 给 `el-tabs` 增加 `@tab-click="handleTabClick"`。
|
||
- 新增 `handleTabClick(tab)` 方法,根据当前页签名称刷新对应数据。
|
||
- 新增 `switchTab(tabName)` 方法,统计卡片点击时先切换页签,再刷新对应数据。
|
||
- 新增 `refreshActiveTab(tabName)` 方法,统一调度三个页签的数据刷新:
|
||
- `pending` 调用 `searchTable1()` 刷新待我处理。
|
||
- `initiated` 调用 `searchTable()` 刷新我发起的。
|
||
- `processed` 调用 `getProcessedTasks()` 刷新已完成。
|
||
|
||
4. 数据覆盖修正:
|
||
- `getProcessedTasks()` 改为始终用 `response.data || []` 覆盖 `processedTasks`,并同步更新统计数量。
|
||
- `searchTable()` 改为始终用 `response.data || []` 覆盖 `initiatedProcesses`,并同步更新统计数量。
|
||
- `searchTable1()` 改为始终用 `response.data || []` 覆盖 `pendingTasks`,并同步更新统计数量。
|
||
- `searchTable3()` 改为始终用 `response.data || []` 覆盖 `tableData5`,避免绑定任务查询为空时残留旧数据。
|
||
|
||
5. 验证:
|
||
- 执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅有项目原有资源体积过大、Browserslist/baseline-browser-mapping 数据过期警告。
|
||
- 本次未调用流程新增、审批等业务接口,未产生业务数据。
|
||
|
||
## 2026-06-27 加工中心和装配中心异常管控集成问题处理日志
|
||
|
||
1. 根据用户反馈重新排查:
|
||
- 加工中心和装配中心打开异常管控后,新建流程时原本应自动带入的生产任务信息没有了。
|
||
- 在异常管控中新建流程或处理任务时,弹出的二级弹框被黑色遮罩挡住,无法操作。
|
||
|
||
2. 自动带入问题定位:
|
||
- 加工中心、装配中心当前主表选中行保存在各自页面的 `selectedRow`。
|
||
- 异常管控已经改成复用组件后,父页面没有把主表 `selectedRow` 传给复用组件。
|
||
- 复用组件内部只知道自己弹窗里的绑定任务列表点击结果,因此从中心页进入时不会自动显示当前生产订单、物料、工序等信息。
|
||
|
||
3. 自动带入修复:
|
||
- 修改 `src/views/ProductionManagement/components/AbnormalControlPanel.vue`。
|
||
- 新增 `initialSelectedRow` 入参。
|
||
- 在组件创建和 `initialSelectedRow` 变化时调用 `applyInitialSelectedRow()`。
|
||
- `applyInitialSelectedRow()` 会把外部传入的主表选中行交给 `handleRowClick()` 统一映射。
|
||
- `handleRowClick()` 兼容多种字段名:
|
||
- 生产订单:`订单号`、`计划号`、`生产订单`。
|
||
- 物料编码:`产品编码`、`零件编码`、`物料编码`。
|
||
- 物料名称:`产品名称`、`零件名称`、`物料名称`。
|
||
- 工序名称:`工序名称`。
|
||
- 同步把外部带入的信息写入异常管控的查询条件,方便打开后看到当前任务上下文。
|
||
- 新建流程校验从 `selectedRow == ""` 调整为 `!selectedRow`,兼容对象/null 两类状态。
|
||
|
||
4. 父页面传值修复:
|
||
- 修改 `src/views/ProductionManagement/MachiningCenter/index.vue`。
|
||
- 修改 `src/views/ProductionManagement/AssemblyCenter/index.vue`。
|
||
- 两个中心页的异常管控弹窗中,将组件调用改为 `<abnormal-control-panel :initial-selected-row="selectedRow" />`。
|
||
|
||
5. 遮罩问题修复:
|
||
- 复用组件内部所有二级弹窗增加 `:append-to-body="true"`:
|
||
- 发起新流程弹窗。
|
||
- 处理任务弹窗。
|
||
- 流程进度详情弹窗。
|
||
- 转办流程弹窗。
|
||
- 完结流程弹窗。
|
||
- 加工中心和装配中心的外层异常管控弹窗增加 `append-to-body`,降低与页面其他弹窗层级冲突的风险。
|
||
|
||
6. 验证:
|
||
- 执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅有项目原有资源体积过大、Browserslist/baseline-browser-mapping 数据过期警告。
|
||
- 本次未调用流程新增、审批等业务接口,未产生业务数据。
|
||
|
||
## 2026-06-27 修改工时报表执行日志
|
||
|
||
1. 查找并读取需求文档:
|
||
- 用户提到 `worke`,实际仓库中没有 `worke` 目录。
|
||
- 在 `work` 目录下找到 `work/修改工时报表.docx`。
|
||
- 读取 docx 内容,确认需求:
|
||
- 页面位置:`ProductionManagement/Timesheet`。
|
||
- 页面中四个分页:`项目工时`、`作业者工时`、`任务工时`、`设备工时`。
|
||
- 四个分页里面的明细信息都要按照开始时间排序。
|
||
|
||
2. 定位代码:
|
||
- 页面文件为 `src/views/ProductionManagement/Timesheet/index.vue`。
|
||
- 四个分页对应数据:
|
||
- `项目工时` 使用 `projectTableData`,由 `loadProjectData()` 调用 `工时统计_项目工时_查询` 后通过 `buildProjectTree()` 组装。
|
||
- `作业者工时` 使用 `operatorTableData`,由 `loadOperatorData()` 调用 `工时统计_作业者工时_查询` 后通过 `buildOperatorTree()` 组装。
|
||
- `任务工时` 使用 `taskTableData`,由 `loadTaskData()` 调用 `工时统计_任务工时_查询` 后通过 `buildTaskTree()` 组装。
|
||
- `设备工时` 使用 `DeviceTableData`,由 `loadDeviceData()` 调用 `工时统计_设备工时_查询` 后复用 `buildOperatorTree()` 组装。
|
||
|
||
3. 代码修改:
|
||
- 修改 `src/views/ProductionManagement/Timesheet/index.vue`。
|
||
- 新增 `getStartTimeValue(row)`:
|
||
- 兼容 `startTime`、`planStart`、`开始时间`、`dateLabel` 字段。
|
||
- 将时间字符串转换为可比较的时间戳。
|
||
- 空值或无效时间排到最后。
|
||
- 新增 `getEarliestStartTime(row)`:
|
||
- 对树形节点递归取子级最早开始时间。
|
||
- 用于父级分组排序,保证父级分组顺序跟其明细开始时间一致。
|
||
- 新增 `sortRowsByStartTime(rows)`:
|
||
- 递归排序每一层 `children`。
|
||
- 每个分组下的明细按照开始时间升序排列。
|
||
- 父级分组按照子级最早开始时间升序排列。
|
||
- 在 `buildProjectTree()` 返回前调用 `sortRowsByStartTime()`,覆盖项目工时分页。
|
||
- 在 `buildOperatorTree()` 返回前调用 `sortRowsByStartTime()`,覆盖作业者工时和设备工时分页。
|
||
- 在 `buildTaskTree()` 返回前调用 `sortRowsByStartTime()`,覆盖任务工时分页。
|
||
|
||
4. 文档归档:
|
||
- 新建目录 `work/ProductionManagement/Timesheet`。
|
||
- 已将 `work/修改工时报表.docx` 移动到 `work/ProductionManagement/Timesheet/修改工时报表.docx`。
|
||
|
||
5. 验证:
|
||
- 执行 `npm run build`。
|
||
- 构建成功。
|
||
- 构建仅有项目原有资源体积过大、Browserslist/baseline-browser-mapping 数据过期警告。
|
||
- 本次只修改前端排序和移动文档,未调用业务接口,未产生业务数据。
|
||
|
||
## 2026-06-27 13:42:30 作业者工时报工数量按 TaskAID+开始时间取最大值
|
||
|
||
### 用户需求
|
||
- 修改工时报表中“作业者工时”的“报工数量”取值口径。
|
||
- 新口径:同一个 TaskAID 且开始时间相同的记录,报工数量取最大值;不再叠加其他分组条件。
|
||
- 用户提供目标数据库连接信息,本次执行中使用目标库 192.168.2.92 / YL_MESDB,日志中不记录数据库密码。
|
||
|
||
### 执行过程
|
||
1. 检查工作目录 C:\WorkYuanLy\MES_Manage_View_V20,确认工时报表文档已在 work/ProductionManagement/Timesheet/修改工时报表.docx。
|
||
2. 检查前端文件 src/views/ProductionManagement/Timesheet/index.vue,确认“作业者工时”和“设备工时”共用 uildOperatorTree,因此修改时增加开关参数,只让作业者工时启用新口径,避免影响设备工时。
|
||
3. 连接数据库 192.168.2.92 的 YL_MESDB,确认:
|
||
- dbo.View_生产工时视图 包含 TaskAID、开始时间、操作数值、操作人、阶段标识 字段。
|
||
- dbo.View_生产工时视图全部 包含 TaskAID、开始时间、操作数值、操作人、阶段标识 字段。
|
||
- dbo.工时统计_作业者工时_查询 存储过程存在。
|
||
4. 在修改数据库过程前,备份目标库当前过程定义:
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_before_taskstart_reportqty_20260627_133625.sql
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_导出_before_taskstart_reportqty_20260627_133625.sql
|
||
5. 修改前端 src/views/ProductionManagement/Timesheet/index.vue:
|
||
- 增加 parseReportQty、ormatReportQty、getTaskAID、getReportQtyGroupKey、uildTaskStartReportQtyMap、getTaskStartReportQty、
|
||
ecalculateOperatorReportQty。
|
||
- loadOperatorData 调用 uildOperatorTree(res.data || [], true),启用作业者工时的新报工数量口径。
|
||
- uildOperatorTree 增加 useTaskStartMaxReportQty 参数;明细行保留 TaskAID 和内部用的
|
||
eportQtyGroupKey。
|
||
- 作业者工时的日期汇总和操作人汇总按唯一 TaskAID + startTime 取最大值后再求和,避免同一任务同一开始时间的重复行重复累加。
|
||
- 设备工时继续调用 uildOperatorTree(res.data || []),不启用新口径。
|
||
6. 新增数据库脚本 db_backups/update_timesheet_operator_report_qty_task_start_20260627.sql:
|
||
- 更新 dbo.工时统计_作业者工时_查询。
|
||
- 更新 dbo.工时统计_作业者工时_查询_导出。
|
||
- 两个过程均通过 TaskStart报工数量 按 TaskAID + CONVERT(VARCHAR(19), 开始时间, 120) 分组取最大报工数量。
|
||
- 查询过程结果集中增加 TaskAID 字段供前端兜底计算使用。
|
||
- 导出过程同步使用新口径,但不新增导出显示列,避免改变导出表头结构。
|
||
7. 执行数据库脚本到目标库;本次数据库操作只执行 ALTER PROCEDURE,未写入或修改业务表数据。
|
||
8. 使用 sys.sp_describe_first_result_set 验证 dbo.工时统计_作业者工时_查询 的结果集,确认包含 TaskAID 字段,位于结果列第 20 列。
|
||
9. 验证数据库过程定义中查询和导出都包含 GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120),确认已按新口径分组。
|
||
10. 执行
|
||
pm run build,构建成功。构建输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修改未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 作业者工时页面“报工数量”现在按照同一 TaskAID、同一开始时间取最大值。
|
||
- 作业者工时的操作人汇总、日期汇总、明细显示和导出过程均同步使用该口径。
|
||
- 设备工时未被新口径影响。
|
||
- 已保留数据库更新前备份和本次更新脚本。
|
||
|
||
### 验证结果
|
||
- 数据库连接和字段确认:通过。
|
||
- 存储过程更新:通过。
|
||
- 查询结果集 TaskAID 字段确认:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 14:13:28 修正作业者工时报工数量为全量视图取最大值
|
||
|
||
### 用户反馈
|
||
- 上一次实现不符合要求。
|
||
- 正确口径:直接查询 [View_生产工时视图全部],同一个 TaskAID、同一个开始时间取最大报工数量,不经过任何过滤条件。
|
||
|
||
### 执行过程
|
||
1. 明确修正范围:报表显示行仍由原查询条件决定,但“报工数量最大值”的来源必须改为全量 [dbo].[View_生产工时视图全部],不能从筛选后的数据集计算。
|
||
2. 修改脚本 db_backups/update_timesheet_operator_report_qty_task_start_20260627.sql:
|
||
- dbo.工时统计_作业者工时_查询 中的 TaskStart报工数量 CTE 从 FROM 筛选明细 改为 FROM [dbo].[View_生产工时视图全部]。
|
||
- dbo.工时统计_作业者工时_查询_导出 中的 TaskStart报工数量 CTE 同步改为 FROM [dbo].[View_生产工时视图全部]。
|
||
- 两处最大值计算均只按 TaskAID, CONVERT(VARCHAR(19), 开始时间, 120) 分组,不增加日期、操作人、合同号、产品、工序、订单、阶段标识等过滤条件。
|
||
3. 在重新应用数据库脚本前,再次备份目标库当前过程定义:
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_before_unfiltered_taskstart_reportqty_20260627_141106.sql
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_导出_before_unfiltered_taskstart_reportqty_20260627_141106.sql
|
||
4. 重新连接目标库 192.168.2.92 / YL_MESDB,执行修正后的 SQL 脚本,只更新两个存储过程定义,未修改业务表数据。
|
||
5. 第一次使用 LIKE 验证时因匹配范围过大产生误判,随后改为提取 TaskStart报工数量 CTE 片段进行验证。
|
||
6. 验证结果:
|
||
- dbo.工时统计_作业者工时_查询 的 TaskStart报工数量 CTE 来源为 FROM [dbo].[View_生产工时视图全部],不包含 筛选明细。
|
||
- dbo.工时统计_作业者工时_查询_导出 的 TaskStart报工数量 CTE 来源为 FROM [dbo].[View_生产工时视图全部],不包含 筛选明细。
|
||
- 两个过程均按 GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120) 分组取最大值。
|
||
7. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修正未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 作业者工时查询和导出过程的报工数量最大值来源已改为全量 [dbo].[View_生产工时视图全部]。
|
||
- 最大值计算不再经过报表查询条件过滤。
|
||
- 本地脚本和目标库过程已同步。
|
||
|
||
### 验证结果
|
||
- 目标库脚本应用:通过。
|
||
- CTE 来源验证:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 14:48:37 修正作业者工时报工数量最大值增加操作类别编号过滤
|
||
|
||
### 用户反馈
|
||
- 报工数量最大值仍需直接查 [View_生产工时视图全部]。
|
||
- 同一个 TaskAID、同一个开始时间取最大值。
|
||
- 需要增加过滤条件:操作类别编号 = 6。
|
||
|
||
### 执行过程
|
||
1. 连接目标库 192.168.2.92 / YL_MESDB,确认 [dbo].[View_生产工时视图全部] 存在以下字段:
|
||
- TaskAID
|
||
- 开始时间
|
||
- 操作数值
|
||
- 操作类别编号
|
||
2. 修改本地数据库脚本 db_backups/update_timesheet_operator_report_qty_task_start_20260627.sql:
|
||
- 在 dbo.工时统计_作业者工时_查询 的 TaskStart报工数量 CTE 中增加 WHERE 操作类别编号 = 6。
|
||
- 在 dbo.工时统计_作业者工时_查询_导出 的 TaskStart报工数量 CTE 中同步增加 WHERE 操作类别编号 = 6。
|
||
- 最大值来源仍为 FROM [dbo].[View_生产工时视图全部],不是筛选后的报表数据。
|
||
- 分组仍只使用 TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)。
|
||
3. 在重新应用数据库脚本前,备份目标库当前过程定义:
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_before_taskstart_reportqty_type6_20260627_144642.sql
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_导出_before_taskstart_reportqty_type6_20260627_144642.sql
|
||
4. 重新执行 SQL 脚本到目标库,只执行 ALTER PROCEDURE,未修改业务表数据。
|
||
5. 提取两个过程的 TaskStart报工数量 CTE 进行验证,结果如下:
|
||
- dbo.工时统计_作业者工时_查询:来源为 [dbo].[View_生产工时视图全部],包含 WHERE 操作类别编号 = 6,不包含 筛选明细。
|
||
- dbo.工时统计_作业者工时_查询_导出:来源为 [dbo].[View_生产工时视图全部],包含 WHERE 操作类别编号 = 6,不包含 筛选明细。
|
||
6. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次调整未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 作业者工时查询和导出的报工数量最大值口径已更新为:
|
||
- 直接从 [dbo].[View_生产工时视图全部] 取数;
|
||
- 只取 操作类别编号 = 6 的记录;
|
||
- 同一 TaskAID、同一开始时间取最大 操作数值 口径后的报工数量;
|
||
- 不使用报表查询条件过滤最大值来源。
|
||
|
||
### 验证结果
|
||
- 字段确认:通过。
|
||
- 目标库过程更新:通过。
|
||
- CTE 来源和条件验证:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 15:02:19 修正作业者工时报工数量撤销操作类别过滤并增加装配置零
|
||
|
||
### 用户反馈
|
||
- 之前增加 操作类别编号 = 6 不符合要求。
|
||
- 正确口径:直接查 [View_生产工时视图全部],同一个 TaskAID、同一个开始时间取最大值,最大值来源没有任何过滤条件。
|
||
- 另增判断:指派对象包含“装配”时,报工数量为 0。
|
||
|
||
### 执行过程
|
||
1. 重新确认需求后,修正本地 SQL 脚本 db_backups/update_timesheet_operator_report_qty_task_start_20260627.sql。
|
||
2. 从 dbo.工时统计_作业者工时_查询 的 TaskStart报工数量 CTE 中移除 WHERE 操作类别编号 = 6。
|
||
3. 从 dbo.工时统计_作业者工时_查询_导出 的 TaskStart报工数量 CTE 中移除 WHERE 操作类别编号 = 6。
|
||
4. 保留最大值来源为全量 [dbo].[View_生产工时视图全部],并只按 TaskAID, CONVERT(VARCHAR(19), 开始时间, 120) 分组。
|
||
5. 在查询过程 报工明细 中增加判断:WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0,否则使用全量视图按 TaskAID+开始时间取到的最大报工数量。
|
||
6. 在导出过程的明细查询中同步增加同样的装配置零判断,保持页面和导出口径一致。
|
||
7. 检查本地脚本,确认没有残留 操作类别编号 = 6,并确认查询和导出两处均包含装配置零判断。
|
||
8. 在重新应用数据库脚本前,备份目标库当前过程定义:
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_before_assembly_zero_reportqty_20260627_145839.sql
|
||
- db_backups/timesheet_operator_reportqty_backups/工时统计_作业者工时_查询_导出_before_assembly_zero_reportqty_20260627_145839.sql
|
||
9. 重新执行 SQL 脚本到目标库 192.168.2.92 / YL_MESDB,只执行 ALTER PROCEDURE,未修改业务表数据。
|
||
10. 数据库验证:
|
||
- dbo.工时统计_作业者工时_查询 的 TaskStart报工数量 CTE 来源为 [dbo].[View_生产工时视图全部],无 WHERE,不包含 操作类别编号,包含装配置零判断。
|
||
- dbo.工时统计_作业者工时_查询_导出 的 TaskStart报工数量 CTE 来源为 [dbo].[View_生产工时视图全部],无 WHERE,不包含 操作类别编号,包含装配置零判断。
|
||
11. 同步修改前端兜底逻辑 src/views/ProductionManagement/Timesheet/index.vue:
|
||
- 增加 isAssemblyAssignee 方法,识别 指派对象/工位名称/assignee 是否包含“装配”。
|
||
- 在 getTaskStartReportQty 中,如果为装配指派对象,直接返回 ,避免前端按同一 TaskAID+开始时间重算时把非装配最大值覆盖到装配行。
|
||
12. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修正未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 作业者工时查询和导出的最大值来源恢复为全量 [dbo].[View_生产工时视图全部],没有任何过滤条件。
|
||
- 最大值分组键仍为 TaskAID + 开始时间。
|
||
- 指派对象包含“装配”时,页面、汇总和导出报工数量均置为 0。
|
||
- 前端兜底逻辑已同步,避免页面端重算覆盖数据库装配置零规则。
|
||
|
||
### 验证结果
|
||
- SQL 脚本检查:通过。
|
||
- 目标库过程更新:通过。
|
||
- CTE 无过滤和装配置零判断验证:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 15:26:30 根据工时查询界面文档修改工时查询页面
|
||
|
||
### 用户需求
|
||
- 根据 work 下的 工时查询界面.docx 修改工时查询页面。
|
||
- 修改后创建对应路径并把文档移入。
|
||
- 按要求追加中文执行日志,不记录数据库密码。
|
||
|
||
### 文档内容提取
|
||
- 文档名称:work/工时查询界面.docx。
|
||
- 文档要求:
|
||
- 修改三级数据,由原三级汇总改成三级明细数据。
|
||
- 页面字段按截图展示:任务描述、日期、班次、生产订单号、报工类型、报工数量、工位、工时、程序时间、单件工时、工艺工时等。
|
||
- 报工类型字段:辅助 改成 调机,报工 改成 正常。
|
||
- 报工数量:相同 TaskAID、相同开始时间取最大值。
|
||
- 指派对象包含“装配”时,报工数量为 0。
|
||
- 程序时间没有,暂时为空。
|
||
- 单件工时按 工时(分钟)/报工数量 计算;报工数量为 0 时取工艺工时。
|
||
- 工艺工时维持原样。
|
||
- 增加字段“操作人”,取相同 TaskAID、相同开始时间的操作人拼接,且去掉加工工时大于 0 的数据。
|
||
- 白班/夜班根据操作描述包含“白班”或“夜班”判断。
|
||
|
||
### 执行过程
|
||
1. 查找并读取文档,确认文档路径为 work/工时查询界面.docx,并提取文档正文和截图。
|
||
2. 定位工时查询页面为 src/views/ProductionManagement/Workhours/index.vue,当前调用存储过程 生产管理_工时查询_工序工时_查询。
|
||
3. 连接目标库 192.168.2.92 / YL_MESDB,读取当前 dbo.生产管理_工时查询_工序工时_查询 定义,确认旧过程的三级数据为按 TaskAID、日期、班次汇总。
|
||
4. 查询数据库字段,确认 [dbo].[View_生产工时视图] 和 [dbo].[View_生产工时视图全部] 存在 TaskAID、开始时间、结束时间、操作内容、操作类别、操作描述、操作人、加工工时、操作数值、订单号、订单行号、订单合同号、产品编码、产品名称、工序名称、工位名称 等字段。
|
||
5. 新增数据库脚本 db_backups/update_workhours_query_detail_20260627.sql:
|
||
- 更新 dbo.生产管理_工时查询_工序工时_查询。
|
||
- 基础数据仍按页面查询条件取报工/辅助结束且加工工时大于 0 的记录。
|
||
- TaskStart报工数量 从 [dbo].[View_生产工时视图全部] 按 TaskAID + 开始时间 全量取最大值。
|
||
- 指派对象/工位名称包含“装配”时,报工数量置 0。
|
||
- 三级返回明细数据,不再返回班次汇总。
|
||
- 操作人使用相同 TaskAID + 开始时间 且 加工工时 <= 0 的记录去重拼接。
|
||
- 班次根据相同 TaskAID + 开始时间 的操作描述是否包含“白班”或“夜班”判断。
|
||
- 程序时间返回空。
|
||
- 单件工时按加工工时分钟/报工数量计算;报工数量为 0 时取工艺工时。
|
||
6. 备份目标库旧过程到 db_backups/workhours_query_backups/生产管理_工时查询_工序工时_查询_before_detail_query_20260627_152142.sql。
|
||
7. 第一次应用后用样本执行发现 XML 拼接操作人受 QUOTED_IDENTIFIER 设置影响,因此将脚本改为 SET QUOTED_IDENTIFIER ON,并把操作人拼接改成 SQL Server 2019 支持的 STRING_AGG。
|
||
8. 重新执行脚本到目标库,只更新存储过程定义,未修改业务表数据。
|
||
9. 执行 EXEC dbo.[生产管理_工时查询_工序工时_查询] @数据条数 = 5 验证,返回 15 行,三级明细包含 operatorNames、productionOrderNo、
|
||
eportType、
|
||
eportQty、station、workHours、pieceWorkHours、processWorkHours 等字段。
|
||
10. 修改前端 src/views/ProductionManagement/Workhours/index.vue:
|
||
- 表格列调整为文档要求的工时记录结构。
|
||
- 增加操作人、生产订单号、报工类型、工位、工时、程序时间、单件工时等列。
|
||
- 报工类型前端兜底映射:包含“辅助”显示“调机”,包含“报工”显示“正常”。
|
||
- 第三级树节点改为明细行展示,不再按班次汇总展示。
|
||
- 底部汇总改为总工时。
|
||
11. 创建目录 work/ProductionManagement/Workhours,并将 work/工时查询界面.docx 移动到 work/ProductionManagement/Workhours/工时查询界面.docx。
|
||
12. 清理文档截图临时解压目录 work/.docx_extract_工时查询界面。
|
||
13. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修改未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 工时查询页面已按文档改成工时记录形式。
|
||
- 三级数据已由班次汇总改为明细数据。
|
||
- 数据库过程和前端页面字段已同步。
|
||
- 文档已移动到 work/ProductionManagement/Workhours/工时查询界面.docx。
|
||
|
||
### 验证结果
|
||
- 存储过程脚本应用:通过。
|
||
- 存储过程样本执行:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 16:34:11 根据新增结算工时页面文档新增结算工时页面
|
||
|
||
### 用户需求
|
||
- 根据 work 下的 新增结算工时页面.docx 新增结算工时页面。
|
||
- 修改后创建对应路径并把文档移入。
|
||
- 按要求追加中文执行日志,不记录数据库密码。
|
||
|
||
### 文档内容提取
|
||
- 文档名称:work/新增结算工时页面.docx。
|
||
- 文档要求:
|
||
- 新增结算工时页面,任务描述参考工时查询页面。
|
||
- 根据订单编号(生产订单号)和工位(指派对象)分组。
|
||
- 统计设备工时,条件为加工工时 > 0。
|
||
- 报工工时:上述设备工时中操作类别等于报工的工时。
|
||
- 主辅工时:上述设备工时中操作类别等于辅助结束的工时。
|
||
- 完成数分为报工完成数和辅助完成数,对应上述工时记录的操作数值求和。
|
||
- 增加操作人字段:相同 TaskAID、相同开始时间的操作人拼接,且去掉加工工时大于 0 的数据。
|
||
|
||
### 执行过程
|
||
1. 查找并读取文档,确认路径为 work/新增结算工时页面.docx。
|
||
2. 检查现有生产管理页面和路由机制,确认前端使用动态菜单路径加载 src/views 下组件;新增页面放置在 src/views/ProductionManagement/SettlementWorkhours/index.vue。
|
||
3. 新增数据库脚本 db_backups/create_settlement_workhours_query_20260627.sql:
|
||
- 创建/更新 dbo.生产管理_结算工时_查询。
|
||
- 基础数据来源为 [dbo].[View_生产工时视图]。
|
||
- 查询条件包含合同号、产品编码、订单号、工位、开始日期、结束日期、数据条数。
|
||
- 只统计 加工工时 > 0 且操作内容/操作类别为 报工 或 辅助结束 的设备工时。
|
||
- 汇总层按 订单号 + 工位名称 分组。
|
||
- 报工工时 为报工记录加工工时小时汇总。
|
||
- 主辅工时 为辅助结束记录加工工时小时汇总。
|
||
- 报工完成数、辅助完成数 分别按对应操作类型的 操作数值 汇总。
|
||
- 明细层返回操作人、日期、工序、操作类别、完成数、工时、开始/结束时间、TaskAID。
|
||
- 操作人使用 [dbo].[View_生产工时视图全部] 中相同 TaskAID + 开始时间 且 加工工时 <= 0 的记录去重后用 STRING_AGG 拼接。
|
||
4. 执行数据库脚本到目标库 192.168.2.92 / YL_MESDB,只创建/更新存储过程,未修改业务表数据。
|
||
5. 执行样本验证 EXEC dbo.[生产管理_结算工时_查询] @数据条数 = 10,返回 18 行,包含汇总层和明细层数据。
|
||
6. 新增前端页面 src/views/ProductionManagement/SettlementWorkhours/index.vue:
|
||
- 提供合同号、产品编码、生产订单号、工位、数据条数、开始/结束日期查询条件。
|
||
- 调用 生产管理_结算工时_查询。
|
||
- 使用树形表格展示订单+工位汇总,展开查看明细。
|
||
- 汇总列包含报工工时、主辅工时、报工完成数、辅助完成数、合计工时。
|
||
- 明细列包含操作人、日期、工序名称、操作类别、完成数、工时、开始时间、结束时间。
|
||
- 底部显示报工工时、主辅工时、合计工时汇总。
|
||
7. 创建目录 work/ProductionManagement/SettlementWorkhours,并将 work/新增结算工时页面.docx 移动到 work/ProductionManagement/SettlementWorkhours/新增结算工时页面.docx。
|
||
8. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次新增未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 新增结算工时页面:src/views/ProductionManagement/SettlementWorkhours/index.vue。
|
||
- 新增数据库脚本并已应用:db_backups/create_settlement_workhours_query_20260627.sql。
|
||
- 文档已移动到 work/ProductionManagement/SettlementWorkhours/新增结算工时页面.docx。
|
||
|
||
### 验证结果
|
||
- 存储过程脚本应用:通过。
|
||
- 存储过程样本执行:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 16:42:14 补新增结算工时页面菜单记录
|
||
|
||
### 用户反馈
|
||
- 新增结算工时页面后,页面上看不到菜单。
|
||
- 用户怀疑 [dbo].[登录基础数据_二级菜单] 没有增加记录。
|
||
|
||
### 执行过程
|
||
1. 检查目标库 192.168.2.92 / YL_MESDB 的 [dbo].[登录基础数据_二级菜单] 表结构。
|
||
2. 确认字段包括 IDD、id、pid、path、componet、
|
||
edirect、
|
||
ame、 itle、icon、账号代码、模块代码、是否启用、AddData、DeleteData、EditData、SearchData。
|
||
3. 注意到字段名是 componet,不是 component。
|
||
4. 查询现有工时相关菜单,确认:
|
||
- 工时查询 菜单存在,id = 166,pid = 3,路径为 Workhours/index,组件为 /ProductionManagement/Workhours/index。
|
||
- 工时查询 当前只配置给账号代码 1 和 2010。
|
||
- 结算工时 菜单此前不存在。
|
||
5. 查询 IDD 属性,确认 IDD 是自增列;当前最大菜单 id 为 230。
|
||
6. 新增菜单脚本 db_backups/add_settlement_workhours_menu_20260627.sql:
|
||
- 新菜单 id 使用 231。
|
||
- pid = 3,挂在生产管理下。
|
||
- path = 'SettlementWorkhours/index'。
|
||
- componet = '/ProductionManagement/SettlementWorkhours/index'。
|
||
-
|
||
ame = 'SettlementWorkhours'。
|
||
- itle = '结算工时'。
|
||
- icon 复用工时查询图标,兜底为 DimensionsSummaryReport。
|
||
- 权限按现有 工时查询 复制,插入账号代码 1 和 2010。
|
||
- 脚本带 NOT EXISTS 判断,避免重复插入同账号菜单。
|
||
7. 执行菜单脚本到目标库。
|
||
8. 查询验证结果:
|
||
- IDD = 2754,账号代码 1,菜单 结算工时 已存在。
|
||
- IDD = 2755,账号代码 2010,菜单 结算工时 已存在。
|
||
- 两条记录均指向 /ProductionManagement/SettlementWorkhours/index。
|
||
|
||
### 修改结果
|
||
- 已向 [dbo].[登录基础数据_二级菜单] 补录 结算工时 菜单。
|
||
- 菜单权限与现有 工时查询 保持一致,仅账号代码 1 和 2010 可见。
|
||
- 本次仅修改数据库菜单记录和新增脚本,不涉及前端代码变更。
|
||
|
||
### 验证结果
|
||
- 菜单表结构确认:通过。
|
||
- 菜单脚本执行:通过。
|
||
- 结算工时 菜单记录查询:通过。
|
||
|
||
## 2026-06-27 17:05:00 修正结算工时页面层级和已结算口径
|
||
|
||
### 用户反馈
|
||
- 结算工时页面缺少任务描述、装夹时间、程序时间。
|
||
- 页面存在多余字段,需要去掉。
|
||
- 数据层级应为 物料汇总 -> 生产订单号+工位汇总,不需要明细层。
|
||
- 只要已经结算的数据,即 [YL_MESDB].[dbo].[MES_接口_生产计划] 中 单据状态 IS NULL 的数据。
|
||
|
||
### 执行过程
|
||
1. 重新确认需求后,调整结算工时页面和存储过程为两级汇总,不再返回明细层。
|
||
2. 查询字段确认:
|
||
- [dbo].[MES_接口_生产计划] 包含 AID、订单编号、物料编号、物料描述、单据状态。
|
||
- [dbo].[View_生产工时视图] 和 [dbo].[View_生产工时视图全部] 包含 TaskAID、订单号、产品编码、产品名称、工位名称、加工工时、操作内容、操作类别、操作数值、开始时间、操作人。
|
||
- [dbo].[车间生产管理工艺_零件生产工艺_工艺库] 包含 准备工时、标准工时,本次用 准备工时 作为装夹时间,用 标准工时 作为程序时间。
|
||
3. 重写 db_backups/create_settlement_workhours_query_20260627.sql:
|
||
- dbo.生产管理_结算工时_查询 先从 [dbo].[MES_接口_生产计划] 取 单据状态 IS NULL 的结算任务。
|
||
- 工时数据通过 p.AID = v.TaskAID 关联到结算任务。
|
||
- 只统计 加工工时 > 0,且操作内容/操作类别为 报工 或 辅助结束 的设备工时。
|
||
- 汇总层级改为两级:一级按 物料编号 + 物料描述 汇总,二级按 生产订单号 + 工位名称 汇总。
|
||
- 输出字段包含任务描述、生产订单号、工位、报工工时、主辅工时、报工完成数、辅助完成数、合计工时、装夹时间、程序时间、操作人。
|
||
- 去掉明细字段:日期、工序名称、操作类别、完成数、单条工时、开始时间、结束时间等。
|
||
4. 执行脚本到目标库 192.168.2.92 / YL_MESDB,只更新存储过程定义,未修改业务表数据。
|
||
5. 执行样本验证 EXEC dbo.[生产管理_结算工时_查询] @数据条数 = 20,返回 6 行,层级为 Level=1 物料汇总和 Level=2 订单+工位汇总。
|
||
6. 使用 sp_describe_first_result_set 验证结果集字段,确认包含 materialCode、materialDesc、 askDescription、productionOrderNo、station、
|
||
eportWorkHours、uxiliaryWorkHours、
|
||
eportFinishQty、uxiliaryFinishQty、 otalWorkHours、clampingTime、programTime、operatorNames、
|
||
ecordCount。
|
||
7. 重写前端 src/views/ProductionManagement/SettlementWorkhours/index.vue:
|
||
- 查询条件精简为生产订单号、物料编码、工位、数据条数、开始日期、结束日期。
|
||
- 表格改为两级树:一级物料汇总,二级生产订单号+工位汇总。
|
||
- 补回任务描述、装夹时间、程序时间列。
|
||
- 删除多余明细列:合同号、产品编码、产品名称、日期、工序、操作类别、完成数、单条工时、开始时间、结束时间。
|
||
- 底部汇总保留报工工时、主辅工时、合计工时。
|
||
8. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修正未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 结算工时页面已改为 物料汇总 -> 生产订单号+工位汇总 两级结构。
|
||
- 页面已补回任务描述、装夹时间、程序时间。
|
||
- 页面多余明细字段已去掉。
|
||
- 数据只取 [dbo].[MES_接口_生产计划] 中 单据状态 IS NULL 的结算任务。
|
||
|
||
### 验证结果
|
||
- 目标库存储过程更新:通过。
|
||
- 存储过程样本执行:通过。
|
||
- 结果集字段验证:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
|
||
## 2026-06-27 17:28:58 修正结算工时程序时间装夹时间和单件工时口径
|
||
|
||
### 用户反馈
|
||
- 程序时间目前没有,默认 0。
|
||
- 装夹时间 = 【报工工时(汇总) - 程序时间 * 完工数】 / 完工数。
|
||
- 结算报工单件工时 = 报工工时 / 报工完成数。
|
||
- 结算辅助单件工时 = 主辅工时 / 辅助完成数。
|
||
- 任务描述没了,需要加上。
|
||
|
||
### 执行过程
|
||
1. 修改 db_backups/create_settlement_workhours_query_20260627.sql。
|
||
2. 从结算工时存储过程里移除工艺库 准备工时/标准工时 作为装夹时间、程序时间的取值。
|
||
3. 将程序时间固定输出为 。
|
||
4. 将装夹时间改为公式:CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END。
|
||
5. 新增输出字段:
|
||
- settlementReportPieceHours:CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END。
|
||
- settlementAuxiliaryPieceHours:CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END。
|
||
6. 保留并输出 askDescription,由 物料描述 + ' ' + 物料编号 组成,一级和二级都返回该字段。
|
||
7. 修改前端 src/views/ProductionManagement/SettlementWorkhours/index.vue:
|
||
- 二级行也显示任务描述。
|
||
- 新增“结算报工单件工时”列。
|
||
- 新增“结算辅助单件工时”列。
|
||
- 绑定新字段 settlementReportPieceHours、settlementAuxiliaryPieceHours。
|
||
8. 执行 SQL 脚本到目标库 192.168.2.92 / YL_MESDB,只更新存储过程定义,未修改业务表数据。
|
||
9. 执行样本验证 EXEC dbo.[生产管理_结算工时_查询] @数据条数 = 20:
|
||
- 返回任务描述。
|
||
- 程序时间为 0。
|
||
- 装夹时间按公式返回。
|
||
- 返回结算报工单件工时和结算辅助单件工时。
|
||
10. 执行
|
||
pm run build,前端构建通过。输出仍有既有资源体积过大和 Browserslist 数据过期警告,本次修正未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 程序时间默认 0。
|
||
- 装夹时间改为按汇总公式计算。
|
||
- 新增结算报工单件工时、结算辅助单件工时。
|
||
- 任务描述在物料汇总层和生产订单号+工位汇总层均显示。
|
||
|
||
### 验证结果
|
||
- 目标库存储过程更新:通过。
|
||
- 存储过程样本执行:通过。
|
||
- 前端生产构建
|
||
pm run build:通过,仅有既有警告。
|
||
## 2026-06-27 17:39:00 修正结算工时二级任务描述和查询性能
|
||
|
||
### 用户反馈
|
||
- 结算工时页面红框位置的二级任务描述需要拼接工序名称和工序顺序。
|
||
- 页面打开和查询太慢,需要优化。
|
||
|
||
### 执行过程
|
||
1. 查看当前结算工时页面 `src/views/ProductionManagement/SettlementWorkhours/index.vue`,确认页面只展示接口返回的 `taskDescription`,红框位置对应二级“生产订单号+工位”汇总行。
|
||
2. 查看当前 SQL 备份脚本 `db_backups/create_settlement_workhours_query_20260627.sql`,确认任务描述由 `物料描述 + 物料编号` 组成,未带工序名称和订单行号。
|
||
3. 修改 `db_backups/create_settlement_workhours_query_20260627.sql`:
|
||
- 在结算明细中保留 `工序名称` 和 `订单行号`。
|
||
- 在二级汇总中增加 `MAX(工序名称) AS 工序名称`、`MAX(订单行号) AS 工序顺序`。
|
||
- 二级 `taskDescription` 改为:`物料描述 + 物料编号 + 工序名称 + ' 序' + 工序顺序`。
|
||
- 一级物料汇总任务描述保持 `物料描述 + 物料编号`。
|
||
4. 优化 SQL 查询性能:
|
||
- 将原来按每个明细键反复查询 `[dbo].[View_生产工时视图全部]` 的操作人相关子查询,改为 `明细键 -> 操作人明细 -> 操作人拼接` 的统一聚合。
|
||
- 将订单工位汇总里的操作人相关子查询,改为先按订单工位聚合操作人,再回连到二级汇总,避免汇总行逐行重复扫描。
|
||
- 连接开始时间时使用秒级时间范围匹配,避免对大视图每行做字符串转换匹配。
|
||
5. 修改前端页面 `src/views/ProductionManagement/SettlementWorkhours/index.vue`:
|
||
- 将“任务描述”列最小宽度从 280 调整为 380,避免追加工序名称和序号后显示过窄。
|
||
6. 第一次执行 SQL 脚本时发现 `sqlcmd -i` 未按 UTF-8 解释中文脚本,数据库误建了一个乱码过程,正式中文过程仍是旧定义。
|
||
7. 使用 `sqlcmd -f 65001` 重新执行 UTF-8 脚本到 `192.168.2.92 / YL_MESDB`,正式过程 `dbo.生产管理_结算工时_查询` 更新成功。
|
||
8. 确认正式过程定义中已包含 `工序顺序`。
|
||
9. 删除本次因编码误建的乱码过程,避免后续排查混淆。
|
||
10. 执行抽样验证:
|
||
- `软管总成 214-20411-30-12x1SN-12x4000 电火花 序5`
|
||
- `软管总成 214-20411-30-12x1SN-12x4000 打压检测 序4`
|
||
- 同类二级行已能显示工序名称和工序顺序。
|
||
11. 对同样 `@数据条数 = 30` 的抽查计时:
|
||
- 优化前约 17161 ms。
|
||
- 优化后约 1986 ms。
|
||
12. 执行 `npm run build`,前端构建通过。输出仍有项目既有的资源体积过大和 Browserslist 数据过期警告,本次修改未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 结算工时页面二级任务描述已拼接工序名称和工序顺序。
|
||
- SQL 操作人拼接和订单工位操作人汇总已优化,减少重复扫描。
|
||
- 任务描述列宽已加宽。
|
||
- 数据库存储过程已同步更新到目标库。
|
||
|
||
### 验证结果
|
||
- 目标库存储过程更新:通过。
|
||
- 乱码误建过程清理:通过。
|
||
- 样本查询内容验证:通过。
|
||
- 样本查询耗时验证:从约 17.1 秒降到约 2.0 秒。
|
||
- 前端生产构建 `npm run build`:通过,仅有既有警告。
|
||
## 2026-06-27 17:46:00 修正结算工时操作人重复拼接
|
||
|
||
### 用户反馈
|
||
- 结算工时页面的操作人拼接存在重复姓名,需要去重。
|
||
|
||
### 执行过程
|
||
1. 查看 `db_backups/create_settlement_workhours_query_20260627.sql` 中当前操作人拼接逻辑。
|
||
2. 确认原逻辑已经对整段 `操作人` 字符串做了 `DISTINCT`,但在订单工位汇总时,如果明细中已有 `张三,李四` 这类拼接字符串,再和其他明细拼接,会出现单个人名重复。
|
||
3. 修改 `操作人明细`:
|
||
- 对源字段 `v2.操作人` 先替换中文逗号、顿号为英文逗号。
|
||
- 使用 `STRING_SPLIT` 拆成单个姓名。
|
||
- 去掉姓名前后空格。
|
||
- 过滤空姓名。
|
||
- 再按 `TaskAID + 开始时间 + 操作人` 去重后重新 `STRING_AGG`。
|
||
4. 修改 `订单工位操作人`:
|
||
- 对 `结算明细.操作人` 再次按逗号拆分成单个姓名。
|
||
- 按 `物料编号 + 订单号 + 工位名称 + 操作人` 去重。
|
||
- 再重新拼接为最终 `operatorNames`。
|
||
5. 使用 `sqlcmd -f 65001` 将脚本同步到目标库 `192.168.2.92 / YL_MESDB`,只更新存储过程定义。
|
||
6. 执行抽样验证 `EXEC dbo.[生产管理_结算工时_查询] @数据条数 = 100`:
|
||
- 将返回的 `operatorNames` 再拆分统计重复姓名。
|
||
- 未查出重复姓名行。
|
||
- 样例结果如 `李盛发,王宝昌,魏文海,普1,孙广义`,同一行内姓名不重复。
|
||
7. 执行 `npm run build`,前端构建通过。输出仍有项目既有的资源体积过大和 Browserslist 数据过期警告,本次修改未引入编译错误。
|
||
|
||
### 修改结果
|
||
- 操作人拼接已改为按单个姓名去重。
|
||
- 支持处理中文逗号、顿号和英文逗号分隔的姓名。
|
||
- 数据库存储过程已同步更新到目标库。
|
||
|
||
### 验证结果
|
||
- 目标库存储过程更新:通过。
|
||
- 重复姓名抽样检查:通过。
|
||
- 前端生产构建 `npm run build`:通过,仅有既有警告。
|
||
|
||
## 2026-06-29 设备信息维护页面修改
|
||
|
||
### 用户需求
|
||
|
||
- 根据 `doc/修改设备信息维护.docx` 修改设备信息维护页面。
|
||
- 修改后在 `work` 下创建对应路径,并复制原始文档。
|
||
- 在对应路径下新增或修改 `01-项目功能内容`、`02-项目程序开发详细步骤`、`03-推进台账`、`04-任务矩阵`、`05-验收证据`、`06-决策记录`,并增加 README 索引。
|
||
- 将完整执行过程追加到 `gptlog-process/gpdlog.md`,日志使用中文。
|
||
|
||
### 执行过程
|
||
|
||
1. 查看 `doc` 目录,确认存在 `doc/修改设备信息维护.docx`。
|
||
2. 使用 PowerShell 解析 docx 中的 `word/document.xml`,提取需求文本:新增公司编码(财务)、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至;生产用名复用设备名称,规格/型号复用设备型号;公司编码必填且不可修改;工位绑定为工位管理数据多选;证书有效期过期红色置顶,30 天内黄色靠前。
|
||
3. 定位目标页面为 `src/views/DeviceManagement/DeviceInformation/index.vue`。
|
||
4. 确认工位管理页面 `src/views/SystemMaintenance/WorkstationManagement/index.vue` 使用 `MES_登录_工位与名称_查询` 获取工位数据。
|
||
5. 初次用 Windows 集成认证连接 SQL Server 失败,随后根据用户提供的数据库地址、账号和密码,用数据库账号连接 `192.168.2.92 / YL_MESDB` 成功。日志和文档中不记录明文密码。
|
||
6. 查询 `dbo.基础数据_设备工位点检表`,确认原表只有旧字段:设备流水号、设备名称、设备型号、制造厂家、工位号、点检表类型、操作日期、保养人员代码、监督人员代码、设备类型。
|
||
7. 查询旧存储过程定义,确认 `设备管理_设备信息_查询/增加/编辑` 只处理设备名称、设备型号、设备类型。
|
||
8. 重写 `src/views/DeviceManagement/DeviceInformation/index.vue`:表格增加需求字段列;新增/编辑弹窗增加需求字段;公司编码新增必填、编辑禁用;工位绑定使用多选下拉,来源为 `MES_登录_工位与名称_查询`;主要设备、特种设备使用“是/否”下拉;证书有效期至使用日期选择;增加当前页证书有效期排序和行背景色;固定操作列,适配横向多列表格。
|
||
9. 新增 `db_backups/update_device_information_maintenance_20260629.sql`:使用 `COL_LENGTH` 可重复执行地增加 14 个新字段;更新 `设备管理_设备信息_查询`,返回新字段并按证书有效期预警排序;更新 `设备管理_设备信息_增加`,写入新字段并校验公司编码不能为空;更新 `设备管理_设备信息_编辑`,更新新字段但不更新公司编码。
|
||
10. 使用 `sqlcmd -f 65001` 执行增量脚本到目标库,执行成功。
|
||
11. 验证数据库字段:`dbo.基础数据_设备工位点检表` 已存在公司编码、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至。
|
||
12. 验证存储过程参数:`设备管理_设备信息_增加` 已包含新增字段参数;`设备管理_设备信息_编辑` 已包含新增字段参数和设备流水号;`设备管理_设备信息_查询` 保持旧查询参数兼容。
|
||
13. 执行 `EXEC dbo.[设备管理_设备信息_查询]`,过程执行无错误。
|
||
14. 第一次执行 `npm run build` 因 124 秒超时未得到结果;随后使用更长超时时间重跑。
|
||
15. 第二次执行 `npm run build` 成功,webpack 编译通过,仅有项目既有资源体积过大和 Browserslist 数据过期警告。
|
||
16. 创建 `work/DeviceManagement/DeviceInformation`。
|
||
17. 复制 `doc/修改设备信息维护.docx` 到 `work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`。
|
||
18. 在工作目录新增 `README.md`、`01-项目功能内容.md`、`02-项目程序开发详细步骤.md`、`03-推进台账.md`、`04-任务矩阵.md`、`05-验收证据.md`、`06-决策记录.md`。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `db_backups/update_device_information_maintenance_20260629.sql`
|
||
- `work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`
|
||
- `work/DeviceManagement/DeviceInformation/README.md`
|
||
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
|
||
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
|
||
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 数据库连接:通过。
|
||
- 表字段新增:通过。
|
||
- 存储过程参数更新:通过。
|
||
- 查询过程执行:通过。
|
||
- 前端生产构建 `npm run build`:通过,仅有既有警告。
|
||
|
||
### 下一步
|
||
|
||
- 登录真实系统页面做人工验收:新增设备、编辑设备、工位多选、公司编码只读、证书有效期颜色和排序。
|
||
- 如现场要求历史设备补齐公司编码,需要补充历史数据治理脚本和验收规则。
|
||
|
||
## 2026-06-29 设备信息维护取消设备类型必填
|
||
|
||
### 用户需求
|
||
|
||
- 去掉设备类型必填修改。
|
||
|
||
### 执行过程
|
||
|
||
1. 打开 `src/views/DeviceManagement/DeviceInformation/index.vue`。
|
||
2. 在表单校验 `rules` 中移除 `设备类型` 必填规则。
|
||
3. 保留公司编码新增必填和生产用名必填。
|
||
4. 更新 `work/DeviceManagement/DeviceInformation/03-推进台账.md`,追加第 2 轮记录。
|
||
5. 更新 `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`,新增 `DI-008A` 任务记录。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 代码层确认设备类型不再配置必填校验。
|
||
|
||
## 2026-06-29 修复设备信息维护日期编辑报错
|
||
|
||
### 用户反馈
|
||
|
||
- 证书有效期和入账日期编辑时报错,无法编辑修改。
|
||
|
||
### 执行过程
|
||
|
||
1. 查询目标库 `dbo.基础数据_设备工位点检表`,确认测试数据中 `入账日期` 和 `证书有效期至` 已有日期值。
|
||
2. 查看当前前端 `src/views/DeviceManagement/DeviceInformation/index.vue`,确认两个日期字段由 `el-date-picker` 以 `yyyy-MM-dd` 字符串提交。
|
||
3. 查看当前 `设备管理_设备信息_编辑` 存储过程,确认 `@入账日期`、`@证书有效期至` 定义为 `date` 类型。
|
||
4. 判断问题原因:通用前端网关提交日期和空值时容易与 SQL Server `date` 参数转换冲突,尤其编辑清空日期时会报错。
|
||
5. 修改前端页面:新增 `dateParam` 方法,两个日期字段提交时传 `yyyy-MM-dd` 字符串或空字符串,不再传 `null`。
|
||
6. 新增数据库修复脚本 `db_backups/fix_device_information_date_edit_20260629.sql`。
|
||
7. 修复脚本调整 `设备管理_设备信息_增加/编辑`:
|
||
- `@入账日期` 改为 `nvarchar(50)`。
|
||
- `@证书有效期至` 改为 `nvarchar(50)`。
|
||
- 写入表时使用 `TRY_CONVERT(date, NULLIF(@入账日期, N''))`。
|
||
- 写入表时使用 `TRY_CONVERT(date, NULLIF(@证书有效期至, N''))`。
|
||
8. 使用 `sqlcmd -f 65001` 执行修复脚本到 `192.168.2.92 / YL_MESDB`,执行成功。
|
||
9. 查询 `sys.parameters`,确认 `设备管理_设备信息_增加/编辑` 的两个日期参数已变更为 `nvarchar`。
|
||
10. 直接执行 `设备管理_设备信息_编辑` 测试正常日期:传入 `2026-07-01` 和 `2026-07-31`,返回 `result=1`,数据库日期更新成功。
|
||
11. 直接执行 `设备管理_设备信息_编辑` 测试清空日期:传入空字符串,返回 `result=1`,数据库日期字段保存为 `NULL`。
|
||
12. 更新工作目录文档:推进台账、任务矩阵、验收证据。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `db_backups/fix_device_information_date_edit_20260629.sql`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 修复 SQL 执行:通过。
|
||
- 日期参数类型验证:通过,已为 `nvarchar`。
|
||
- 正常日期编辑验证:通过。
|
||
- 清空日期编辑验证:通过,日期保存为 `NULL`。
|
||
|
||
### 补充验证
|
||
|
||
- 执行 `npm run build`,前端生产构建通过。
|
||
- webpack compiled with 2 warnings,仍为项目既有资源体积过大和 Browserslist/caniuse-lite 数据过期警告。
|
||
|
||
## 2026-06-29 修复设备信息维护日期控件点击报错
|
||
|
||
### 用户反馈
|
||
|
||
- 点击修改入账日期或证书有效期时报错:`TypeError: date.getHours is not a function`。
|
||
- 报错来自 Element UI 日期组件 `DateTable`,说明日期控件内部拿到的不是 `Date` 对象。
|
||
|
||
### 执行过程
|
||
|
||
1. 查看 `src/views/DeviceManagement/DeviceInformation/index.vue`,确认两个 `el-date-picker` 使用了 `value-format="yyyy-MM-dd"`,并且编辑回填时给表单日期字段赋值为字符串。
|
||
2. 判断原因:Element UI 的日期面板点击逻辑需要 `Date` 对象参与内部时间修改,当前字符串值导致 `date.getHours is not a function`。
|
||
3. 修改两个日期控件:去掉 `value-format="yyyy-MM-dd"`,让 `v-model` 保持 `Date` 对象。
|
||
4. 修改编辑回填:`入账日期` 和 `证书有效期至` 改为调用 `parseDateValue`,将数据库日期转换为本地 `Date` 对象。
|
||
5. 保留提交兼容:`dateParam` 在提交前将 `Date` 对象格式化成 `yyyy-MM-dd` 字符串,继续兼容已修复的数据库过程。
|
||
6. 执行 `npm run build`,前端构建通过。
|
||
7. 更新工作目录中的推进台账、任务矩阵和验收证据。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 两个日期控件已移除 `value-format`。
|
||
- 编辑回填日期已转换为 `Date` 对象。
|
||
- 提交前仍格式化为 `yyyy-MM-dd` 字符串。
|
||
- `npm run build` 通过,仅有项目既有资源体积和 Browserslist 过期警告。
|
||
|
||
## 2026-06-29 修复设备信息维护编辑弹窗日期不回填
|
||
|
||
### 用户反馈
|
||
|
||
- 数据库有值,列表也有值,只是点击编辑时 `入账日期` 和 `证书有效期至` 读不到,显示为空。
|
||
|
||
### 执行过程
|
||
|
||
1. 查询数据库 `dbo.基础数据_设备工位点检表`,发现上一轮为了验证清空日期,测试记录 `设备流水号=1` 的两个日期被置为 `NULL`。
|
||
2. 根据用户说明数据库和列表实际有值,判断问题仍集中在前端 `handleEdit` 日期回填。
|
||
3. 恢复测试记录日期:`入账日期=2026-07-01`,`证书有效期至=2026-07-31`。
|
||
4. 增强 `formatDate`,兼容 `yyyy-MM-dd`、`yyyy-MM-dd HH:mm:ss`、`yyyy/MM/dd`、`/Date(...)` 等后端可能返回格式。
|
||
5. 增强 `parseDateValue`,支持直接传入 `Date` 对象,也支持通过 `formatDate` 解析字符串后生成本地 `Date` 对象。
|
||
6. 将表单默认日期从空字符串调整为 `null`,符合 Element UI 日期控件空值约定。
|
||
7. 修改编辑回填逻辑:不再整体替换 `this.form`,改为逐字段 `$set`,避免 Element Form 字段状态缓存导致日期控件未刷新。
|
||
8. 在 `dialogFormVisible = true` 后通过 `$nextTick` 再次设置 `入账日期` 和 `证书有效期至`,防止被 `resetFields` 或弹窗初始化覆盖。
|
||
9. 使用 Node 脚本验证多种日期格式均能解析为有效 `Date`。
|
||
10. 执行 `npm run build`,前端构建通过,仅有既有资源体积和 Browserslist 过期警告。
|
||
11. 确认本地 dev server 已运行在 `https://127.0.0.1:1997/`。命令行访问被自签名证书拦截,浏览器打开时需要允许证书后测试。
|
||
12. 更新工作目录中的推进台账、任务矩阵和验收证据。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 数据库测试记录日期恢复:通过。
|
||
- 本地日期解析函数测试:通过。
|
||
- 前端生产构建 `npm run build`:通过,仅有既有警告。
|
||
- 本地页面地址:`https://127.0.0.1:1997/`。
|
||
|
||
## 2026-06-29 新增设备名称字段并导入设备信息 Excel
|
||
|
||
### 用户反馈
|
||
|
||
- 用户要求新增字段“设备名称”。
|
||
- 用户要求将 `doc` 下的设备信息数据插入数据库。
|
||
- 用户补充说明数据文件为 `设备信息.xlsx`。
|
||
- 用户要求继续执行。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查 `doc/设备信息.xlsx`,确认 Sheet1 表头为:`名称`、`公司编码`、`生产用名`、`型号/规格`、`设备信息`、`使用部门`、`入账日期`、`单位`、`数量`、`状态`。
|
||
2. 读取 Excel 数据,确认有效数据共 89 行。
|
||
3. 查询目标数据库 `192.168.2.92 / YL_MESDB`,确认 `dbo.基础数据_设备工位点检表` 当时为空。
|
||
4. 明确字段映射:Excel `名称` 保存到新增数据库字段 `名称`,页面显示为“设备名称”;Excel `生产用名` 保存到原字段 `设备名称`,页面显示为“生产用名”。
|
||
5. 修改 `src/views/DeviceManagement/DeviceInformation/index.vue`:
|
||
- 列表新增“设备名称”列,绑定 `名称`。
|
||
- 新增/编辑弹窗新增“设备名称”输入框,绑定 `form.名称`。
|
||
- `emptyForm` 增加 `名称`。
|
||
- 编辑回填增加 `名称`。
|
||
- 新增/编辑提交参数增加 `名称`。
|
||
6. 生成 `db_backups/add_device_name_and_import_excel_20260629.sql`:
|
||
- 表 `dbo.基础数据_设备工位点检表` 不存在 `名称` 字段时新增该字段。
|
||
- 调整 `设备管理_设备信息_增加` 和 `设备管理_设备信息_编辑`,增加 `@名称` 参数。
|
||
- 使用 `MERGE` 按 `公司编码` 导入或更新 Excel 数据,避免重复导入生成重复记录。
|
||
7. 执行导入脚本,数据库导入后设备信息总数为 89。
|
||
8. 抽样检查发现 Excel 日期对象导入后部分 `入账日期` 早一天,例如 `1/1/07` 被保存为 `2006-12-31`。
|
||
9. 根据 Excel 单元格显示值重新生成 `db_backups/fix_device_excel_import_dates_20260629.sql`,并执行日期修正。
|
||
10. 修正后抽样验证:
|
||
- `REALLY-11` 入账日期为 `2007-01-01`。
|
||
- `REALLY-6` 入账日期为 `2008-12-24`。
|
||
- `REALLY-1` 入账日期为 `2011-01-01`。
|
||
11. 检查新增过程文本,发现“公司编码不能为空”提示在首次脚本生成时变成问号文本。
|
||
12. 使用 `apply_patch` 修正导入脚本里的提示文本,并新增 `db_backups/fix_device_add_company_code_message_20260629.sql`,只重新发布新增过程,不重新执行整份导入脚本,避免覆盖已修正日期。
|
||
13. 执行提示文本修正脚本,确认新增过程可返回中文提示。
|
||
14. 复制 `doc/设备信息.xlsx` 到 `work/DeviceManagement/DeviceInformation/设备信息.xlsx` 作为工作副本。
|
||
15. 更新 `work/DeviceManagement/DeviceInformation` 下的 README、01-项目功能内容、02-项目程序开发详细步骤、03-推进台账、04-任务矩阵、05-验收证据、06-决策记录。
|
||
16. 执行 `npm run build`,前端构建通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/DeviceManagement/DeviceInformation/index.vue`
|
||
- `db_backups/add_device_name_and_import_excel_20260629.sql`
|
||
- `db_backups/fix_device_excel_import_dates_20260629.sql`
|
||
- `db_backups/fix_device_add_company_code_message_20260629.sql`
|
||
- `work/DeviceManagement/DeviceInformation/设备信息.xlsx`
|
||
- `work/DeviceManagement/DeviceInformation/README.md`
|
||
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
|
||
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
|
||
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
|
||
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
|
||
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
|
||
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- Excel 有效数据行数:89。
|
||
- 数据库设备信息总数:89。
|
||
- `名称` 字段已存在并用于页面“设备名称”。
|
||
- Excel `生产用名` 继续保存到原 `设备名称` 字段。
|
||
- 日期修正后样例数据正确。
|
||
- 新增过程提示文本已修正为“公司编码不能为空”。
|
||
- `npm run build` 通过,仅有既有警告。
|
||
|
||
## 2026-06-29 新增及时齐套跟踪结果页面
|
||
|
||
### 用户需求
|
||
|
||
- 根据 `doc/新增及时齐套跟踪结果.docx` 新增页面“及时齐套跟踪结果”。
|
||
- 修改后在 `work` 下创建对应路径并复制原始文档。
|
||
- 在对应路径新增或修改 `01-项目功能内容`、`02-项目程序开发详细步骤`、`03-推进台账`、`04-任务矩阵`、`05-验收证据`、`06-决策记录` 和 README 索引。
|
||
- 将完整执行过程使用中文追加到 `/gptlog-process/gpdlog.md`。
|
||
|
||
### 执行过程
|
||
|
||
1. 在 `doc` 目录查找需求文档,确认真实文件为 `doc/新增及时齐套跟踪结果.docx`。
|
||
2. 将 docx 临时复制为 zip 并解包读取 `word/document.xml`,提取需求正文。
|
||
3. 从需求中确认:
|
||
- 一级数据字段按计划用表页面一致。
|
||
- 过滤条件和计划用表页面一致。
|
||
- 二级绿色数据来自 `SAP.SBO_YL.dbo.VIEW_Jijiankukc`。
|
||
- 二级字段包括物料编码、物料名称、缺件数量、属性、生产订单号、进度、工艺路线、预计完成时间。
|
||
4. 查找现有页面,确认“计划用表”为 `src/views/PlanManagement/PlanShell/index.vue`,使用过程 `计划排产_查询计划信息`。
|
||
5. 查找“生产计划跟踪”为 `src/views/ProductionManagement/ProductionPlanTrack/index.vue`,复用其当前序和工艺路线展示思路。
|
||
6. 查询数据库菜单表,确认“计划用表”挂在 `PlanManagement` 下,因此新页面也放在 `PlanManagement` 模块。
|
||
7. 查询 SAP linked server,确认可通过 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]` 访问 SAP 缺件视图。
|
||
8. 查询 SAP 视图字段,确认存在 `ItemCode`、`U_Name`、`属性`、`未发货数量`、`在制采购`、`采购员`、`采购预计交货日期`、`采购未清数量`、`到货草稿`。
|
||
9. 查询 MES 视图字段,确认 `View_生产订单_MES` 可提供计划号、合同号、订单编号、物料编号、物料描述、计划数量、计划完成、计划开始时间、计划完成时间、齐套、发料状态、拣配状态、自制件属性、任务状态、加工状态、进度等字段。
|
||
10. 新增 `db_backups/create_timely_kit_tracking_result_20260629.sql`,创建或更新 `dbo.生产管理_及时齐套跟踪结果_查询`。
|
||
11. 新过程按计划用表参数接收筛选条件,并将 SAP 缺件数据与 MES 生产计划匹配:
|
||
- 机加件:`SAP.ItemCode = MES.物料编号`。
|
||
- 装配件:`SAP.ItemCode + SAP.Project = MES.物料编号 + MES.合同号`。
|
||
- 外购件:属性为空,生产订单号取 SAP `在制采购`,工艺路线列拼接采购信息和质检状态。
|
||
12. 首次执行查询过程取样时,SQL Server 报 `QUOTED_IDENTIFIER` SET 选项错误。
|
||
13. 修改 SQL 脚本,增加 `SET ANSI_NULLS ON` 和 `SET QUOTED_IDENTIFIER ON`,重新发布过程。
|
||
14. 再次执行取样查询,确认过程可返回 SAP 缺件和 MES 计划组合数据。
|
||
15. 新增 `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`。
|
||
16. 执行菜单脚本,按“计划用表”的角色授权复制新增菜单,生成 4 条“及时齐套跟踪结果”菜单记录。
|
||
17. 新增前端页面 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`:
|
||
- 过滤区参考计划用表。
|
||
- 主表展示一级计划字段。
|
||
- 展开行展示二级缺件跟踪数据。
|
||
- 二级明细行使用浅绿色背景。
|
||
- 状态字段使用绿色/橙色标签样式。
|
||
18. 执行 `npm run build`,构建通过,仅有项目既有资源体积过大和 Browserslist/caniuse-lite 过期警告。
|
||
19. 创建 `work/PlanManagement/TimelyKitTrackingResult`。
|
||
20. 复制 `doc/新增及时齐套跟踪结果.docx` 到工作目录。
|
||
21. 新增 README、01-项目功能内容、02-项目程序开发详细步骤、03-推进台账、04-任务矩阵、05-验收证据、06-决策记录。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
|
||
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
|
||
- `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/新增及时齐套跟踪结果.docx`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/README.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/01-项目功能内容.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/02-项目程序开发详细步骤.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- SAP linked server 取样查询:通过。
|
||
- `dbo.生产管理_及时齐套跟踪结果_查询` 执行:通过。
|
||
- 菜单脚本执行:通过,新增 4 条菜单记录。
|
||
- 前端构建 `npm run build`:通过,仅有既有警告。
|
||
|
||
## 2026-06-29 修正及时齐套跟踪结果页面反馈问题
|
||
|
||
### 用户反馈
|
||
|
||
1. 工艺路线缺少日期行和合格行,且没有颜色。
|
||
2. 二级数据里面存在重复数据,不应该出现生产订单号一样的数据。
|
||
3. 属性为空时代表外购,一级数据不对,应该取 SAP 视图 `DocEntry` 作为订单编号,再按照计划用表查询。
|
||
|
||
### 执行过程
|
||
|
||
1. 复查 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`,确认二级明细原先只把工艺路线作为文本展示,不能展示日期行、工序行、合格行和状态颜色。
|
||
2. 复查 `db_backups/create_timely_kit_tracking_result_20260629.sql`,确认 SAP 缺件数据与 MES 计划数据匹配时,属性为空的外购数据仍可能使用在制采购号,导致一级计划数据取值不符合反馈要求。
|
||
3. 查询样例订单 `7134`,确认同一个缺件生产订单号在二级明细中会重复出现。
|
||
4. 查询样例订单 `7335`,确认该外购场景需要使用 SAP 视图 `DocEntry=7335` 作为订单编号匹配计划用表数据。
|
||
5. 修改 SQL 查询过程脚本:
|
||
- 新增 SAP 缺件源数据去重,按 `DocEntry + Project + ItemCode + 属性` 保留一条。
|
||
- 外购属性为空时,一级订单编号改为优先使用 `SAP.DocEntry`。
|
||
- 外购属性为空时,MES 计划用表匹配条件增加 `MES.订单编号 = SAP.DocEntry`。
|
||
- 新增 `工艺路线明细` JSON 字段,返回工序名称、计划开始时间、计划完成时间、进度、完成数量、收检合格数、收检不合格数、加工状态等页面渲染所需数据。
|
||
- 最终结果增加按 `订单号 + 缺件生产订单号` 的去重层,避免同一生产订单号在二级明细重复出现。
|
||
6. 重新执行 `db_backups/create_timely_kit_tracking_result_20260629.sql`,发布查询过程成功。
|
||
7. 修改前端页面:
|
||
- 二级列“工艺路线/采购状态”增加自制件工艺路线 HTML 渲染。
|
||
- 工艺路线渲染为三行结构:日期行、工序行、合格行。
|
||
- 根据工序进度和加工状态增加绿色、蓝色、橙色、红色样式。
|
||
- 外购件仍展示采购状态文本。
|
||
- 前端合并数据时增加二级明细去重,避免接口数据异常时重复展示同一生产订单号。
|
||
8. 更新工作目录文档:
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
|
||
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 重新发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
|
||
- 查询 `@订单号=7134` 时,同一缺件生产订单号 `7134` 的二级明细只返回 1 条,不再重复。
|
||
- 查询 `@订单号=7335` 时,外购一级数据已按 `SAP.DocEntry=7335` 匹配到计划用表数据。
|
||
- 执行 `npm run build` 通过,仅保留项目已有的资源体积过大和 Browserslist/caniuse-lite 过期警告。
|
||
|
||
### 下一步
|
||
|
||
- 登录页面人工查看展开行效果,重点确认工艺路线日期行、工序行、合格行和颜色是否与业务预期一致。
|
||
|
||
## 2026-06-29 继续修正及时齐套跟踪结果外购和主数据问题
|
||
|
||
### 用户反馈
|
||
|
||
1. 属性为空的外购数据应取 SAP 视图的采购员、采购未清数量、到货草稿,并根据到货草稿匹配采购入库检页面的生产订单读取检验状态。
|
||
2. 第 32 行主数据生产订单号 `2007` 的一级数据是正确参照;前 1-10 行不正确,主数据缺件不应是主数据自身,且主数据产品编码后面的字段不应为空。
|
||
|
||
### 执行过程
|
||
|
||
1. 复查 `db_backups/create_timely_kit_tracking_result_20260629.sql`,确认上一版把一级主数据和二级缺件匹配混在同一个 `v` 里。
|
||
2. 定位到问题来源:SQL 使用 `COALESCE(v.订单编号, sap.DocEntry)`、`COALESCE(v.物料编号, sap.ItemCode)`、`COALESCE(v.物料描述, sap.U_Name)` 作为主数据兜底,导致 SAP 缺件在没有匹配到计划用表时也会生成主表行。
|
||
3. 查询 `@订单号=2007`,确认一级主数据完整,但外购缺件生产订单号显示成主订单号 `2007`,业务含义错误。
|
||
4. 查看采购入库检页面 `src/views/QualityManagement/CheckTask/purchaseIncoming.vue`,确认查询过程为 `质量管理_质量检验_入库质检任务_查询`,页面生产订单字段来自 `质量检验_质检任务_SAP.订单编号`。
|
||
5. 查看 `doc_old/fix_质量管理_入库质检任务_查询.sql`,确认采购入库检状态按 `质量检验_质检任务_SAP.入库数量` 和 `YL_质量检验_质检记录.检验数量` 判断。
|
||
6. 修改查询过程:
|
||
- 一级主数据只按 `SAP.DocEntry = View_生产订单_MES.订单编号` 匹配。
|
||
- 删除主数据字段对 SAP 缺件字段的兜底。
|
||
- 新增 `detail_order`,仅用于自制缺件匹配二级生产订单、工艺路线和进度。
|
||
- 外购缺件生产订单号改为 `SAP.到货草稿`;到货草稿为 0 时留空。
|
||
- 外购质检状态改为 `SAP.到货草稿 -> 质量检验_质检任务_SAP.订单编号 -> YL_质量检验_质检记录` 口径。
|
||
- 非外购质检状态保持为空。
|
||
7. 重新发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
|
||
8. 验证 `@订单号=2007`:一级主数据完整,外购缺件生产订单号不再等于 `2007`。
|
||
9. 验证 `@订单号=7321`:外购缺件到货草稿 `11209` 显示为缺件生产订单号,质检状态为未完成。
|
||
10. 默认查询统计:总行数 198,产品编码/产品名称为空行数 0,缺件生产订单号等于主订单号行数 0,非外购质检状态非空行数 0。
|
||
11. 执行 `npm run build`,构建通过,仅保留项目既有 warning。
|
||
12. 删除临时验证脚本 `db_backups/verify_timely_kit_tracking_result_temp_20260629.sql`。
|
||
13. 更新 `work/PlanManagement/TimelyKitTrackingResult` 下推进台账、任务矩阵、验收证据、决策记录,并追加本日志。
|
||
|
||
### 修改文件
|
||
|
||
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 查询过程发布成功。
|
||
- `@订单号=2007`:一级主数据完整,外购缺件生产订单号不再等于 `2007`。
|
||
- `@订单号=7321`:外购缺件按到货草稿 `11209` 显示缺件生产订单号,质检状态来自采购入库检口径。
|
||
- 默认查询统计:总行数 198,产品编码/产品名称为空行数 0,缺件生产订单号等于主订单号行数 0,非外购质检状态非空行数 0。
|
||
- `npm run build` 通过,仅有项目既有资源体积过大和 Browserslist/caniuse-lite 过期警告。
|
||
|
||
## 2026-06-30 修正及时齐套跟踪结果库存数量、采购员和工艺路线样式
|
||
|
||
### 用户反馈
|
||
|
||
1. `src/views/PlanManagement/TimelyKitTrackingResult/index.vue` 页面二级数据需要在缺件数量后增加库存数量字段,库存数量在 SAP 里有。
|
||
2. 去掉拼接的采购员字段。
|
||
3. 工艺路线需要左对齐,当前间隔偏大。
|
||
4. 工艺路线颜色参考生产计划跟踪页面,使用红、蓝、绿,不使用橙色。
|
||
5. 所有改动按昨日方式维护 01-06 文档、README 索引、推进台账、任务矩阵、验收证据、决策记录,并追加总日志。
|
||
|
||
### 执行过程
|
||
|
||
1. 读取目标页面 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`,确认二级明细已有缺件数量、采购员列,以及本页自定义工艺路线样式。
|
||
2. 读取参考页面 `src/views/ProductionManagement/ProductionPlanTrack/index.vue`,确认生产计划跟踪的工艺路线为左对齐、紧凑间距、红/蓝/绿文字配色。
|
||
3. 修改前端页面:
|
||
- 在二级明细“缺件数量”后新增“库存数量”列。
|
||
- 在 `mergeRows` 中新增 `库存数量: this.formatQuantity(row.库存数量)`。
|
||
- 删除二级明细“采购员”列和 `采购员` 映射。
|
||
- 工艺路线名称只显示工序名称,不再拼接指派对象。
|
||
- 删除橙色状态判断和橙色样式。
|
||
- 调整 `.process-route` 相关样式为左对齐、缩小箭头和单元格间距、红/蓝/绿三色。
|
||
4. 连接数据库 `192.168.2.92 / YL_MESDB`,读取 SAP 视图字段列表,确认 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]` 包含 `库存量` 字段。
|
||
5. 新增数据库增量脚本 `db_backups/update_timely_kit_tracking_result_inventory_20260630.sql`,不覆盖 20260629 历史脚本。
|
||
6. 修改增量脚本:
|
||
- 在 `SAP缺件源` 中增加 `ISNULL(s.[库存量], 0) AS 库存数量`。
|
||
- 在查询结果中输出 `sap.[库存数量] AS [库存数量]`。
|
||
- 最终 SELECT 输出 `[库存数量]`。
|
||
- 删除 `sap.[采购员]` 输出。
|
||
- 外购采购状态文本从 `采购员 + 未清数量 + 到货草稿 + 质检状态` 改为 `未清数量 + 到货草稿 + 质检状态`。
|
||
7. 执行 `db_backups/update_timely_kit_tracking_result_inventory_20260630.sql` 发布过程,发布成功。
|
||
8. 验证 `@订单号=2007`,返回缺件 `24112-011-HY-WF50L`,缺件数量 `78`,库存数量 `27`,结果列不再包含采购员。
|
||
9. 验证 `@订单号=7321`,返回缺件 `XX-YG01013990`,缺件数量 `6`,库存数量 `2`,外购采购状态不再包含采购员。
|
||
10. 执行过程定义检查,结果为“有库存数量 / 未拼接采购员”。
|
||
11. 曾尝试用 `OPENQUERY([LOCALSERVER], ...)` 做辅助落表验证,但数据库未配置 `LOCALSERVER` linked server,该无效命令不作为验收证据,已用过程样例和定义检查替代。
|
||
12. 执行 `npm run build`,构建通过,仅有项目既有资源体积过大和 Browserslist/caniuse-lite 过期警告。
|
||
13. 更新 README、01-06 文档、推进台账、任务矩阵、验收证据、决策记录,并追加本日志。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
|
||
- `db_backups/update_timely_kit_tracking_result_inventory_20260630.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/README.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/01-项目功能内容.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/02-项目程序开发详细步骤.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- SAP 视图字段确认:`VIEW_Jijiankukc` 包含 `库存量`。
|
||
- SAP 视图取样:`DocEntry=2007`、`ItemCode=24112-011-HY-WF50L`、`未发货数量=78`、`库存量=27`。
|
||
- 查询过程发布成功。
|
||
- `@订单号=2007` 返回 `库存数量=27`。
|
||
- `@订单号=7321` 返回 `库存数量=2`。
|
||
- 过程定义检查:有 `库存数量`,未拼接 `采购员:`。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
|
||
### 下一步
|
||
|
||
- 登录系统人工验收“及时齐套跟踪结果”展开行,确认库存数量位置、外购采购状态文本、工艺路线左对齐和红/蓝/绿颜色符合现场预期。
|
||
|
||
## 2026-06-30 修正及时齐套跟踪结果 7134 工艺路线判色
|
||
|
||
### 用户反馈
|
||
|
||
- 当前页二级数据 `7134` 的工艺路线颜色仍有问题:当前页显示一个蓝色两个红色,生产计划跟踪显示两个蓝色一个红色。
|
||
|
||
### 执行过程
|
||
|
||
1. 对比当前页 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue` 和生产计划跟踪 `src/views/ProductionManagement/ProductionPlanTrack/index.vue` 的工艺路线判色函数。
|
||
2. 查询数据库确认 `7134` 工艺数据:
|
||
- 打磨:加工状态 `6`,收检合格数 `6`。
|
||
- 打压检测:加工状态为空,收检合格数 `6`。
|
||
- 喷塑:外协,收检合格数 `0`。
|
||
3. 确认差异原因:当前页旧逻辑按进度、计划数量、完成数量或收检数量达到计划数量判蓝;生产计划跟踪按加工状态 `6/3` 或 `收检合格数 > 0` 判蓝。
|
||
4. 修改当前页判色逻辑:
|
||
- 新增 `isBlueProcess`,与生产计划跟踪一致。
|
||
- 新增 `isGreenProcess`,与生产计划跟踪外协绿色口径一致。
|
||
- 新增 `getProcessBaseClass` 和 `getOutsourceGroupClassState`,复用生产计划跟踪的外协连续分组判色口径。
|
||
- `formatProcessRoute` 改为基于 `outsourceGroupClasses` 获取颜色。
|
||
5. 本地模拟 `7134` 判色结果:`step1:process-route-blue,step2:process-route-blue,step3:process-route-red`。
|
||
6. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
|
||
7. 更新推进台账、任务矩阵、验收证据、决策记录和总日志。
|
||
|
||
### 修改文件
|
||
|
||
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- SQL 验证 `7134` 的第二道工序“打压检测”有 `收检合格数=6`。
|
||
- 本地判色模拟结果为两个蓝色、一个红色。
|
||
- 当前页无 `process-route-orange`。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
|
||
### 下一步
|
||
|
||
- 登录页面展开 `7134`,确认当前页工艺路线颜色与生产计划跟踪一致。
|
||
|
||
## 2026-06-30 恢复外购采购状态采购员拼接
|
||
|
||
### 用户反馈
|
||
|
||
- 还原字段拼接采购员部分。
|
||
- 不要单独的采购员列。
|
||
|
||
### 执行过程
|
||
|
||
1. 确认前端 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue` 当前没有单独采购员列。
|
||
2. 修改最新过程脚本 `db_backups/update_timely_kit_tracking_result_purchase_order_20260630.sql`:
|
||
- 在 `SAP缺件源` 中重新读取 `s.[采购员] COLLATE DATABASE_DEFAULT AS 采购员`。
|
||
- 外购 `工艺路线/采购状态` 文本改为 `采购员:xxx / 未清数量:xxx / 到货草稿:xxx / 质检状态:xxx`。
|
||
- 不在最终 SELECT 中输出单独 `采购员` 字段。
|
||
3. 发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
|
||
4. 查询 `@订单号=7321` 验证:
|
||
- 缺件生产订单号为 `4111`,来自 SAP `在制采购`。
|
||
- 工艺路线/采购状态为 `采购员:张丹 / 未清数量:50 / 到货草稿:11209 / 质检状态:未完成`。
|
||
- 预计完成时间为 `2026-06-25`,来自 SAP `采购预计交货日期`。
|
||
5. 使用 `sys.dm_exec_describe_first_result_set_for_object` 检查结果集列,确认没有单独 `采购员` 列。
|
||
6. 使用 `Select-String` 检查前端页面,确认没有 `label="采购员"` 或 `prop="采购员"`。
|
||
7. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
|
||
8. 更新推进台账、任务矩阵、验收证据、决策记录和总日志。
|
||
|
||
### 修改文件
|
||
|
||
- `db_backups/update_timely_kit_tracking_result_purchase_order_20260630.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 查询过程发布成功。
|
||
- `@订单号=7321` 外购采购状态已包含 `采购员:张丹`。
|
||
- 结果集无单独 `采购员` 列。
|
||
- 前端无单独采购员列。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
|
||
### 下一步
|
||
|
||
- 登录页面确认外购采购状态文本显示采购员,且二级表没有单独采购员列。
|
||
|
||
## 2026-06-30 自制缺件显示所有匹配生产订单
|
||
|
||
### 用户反馈
|
||
|
||
- 同一个生产订单号不要出现重复。
|
||
- 同一缺件物料所有匹配生产订单都显示。
|
||
|
||
### 执行过程
|
||
|
||
1. 排查 `@订单号=4222` 当前结果,确认旧过程只返回二级生产订单 `5960` 或 `7142` 中的一条。
|
||
2. 查询 SAP 缺件视图,确认 `4222` 的缺件物料为 `22-103-060-YDZF-20V1.0-4.1`,`DocNum=5960`。
|
||
3. 查询 MES 生产订单,确认同一缺件物料同时存在 `5960` 和 `7142` 两个生产订单。
|
||
4. 定位旧逻辑问题:`detail_order` 使用 `SELECT TOP (1)`,天然只能显示一个匹配生产订单。
|
||
5. 新增脚本 `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`。
|
||
6. 修改 `detail_order`:
|
||
- 去掉自制件匹配的 `TOP (1)` 单行限制。
|
||
- 使用 `ROW_NUMBER() OVER (PARTITION BY m.[订单编号] ORDER BY m.[订单行号])`,确保同一生产订单号只保留一条代表行。
|
||
- 同一缺件物料匹配到的多个不同生产订单全部返回。
|
||
7. 发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
|
||
8. 验证 `@订单号=4222` 返回两条二级数据:`5960` 和 `7142`,且同一生产订单号不重复。
|
||
9. 更新 README、推进台账、任务矩阵、验收证据、决策记录和总日志。
|
||
|
||
### 修改文件
|
||
|
||
- `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/README.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
|
||
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
|
||
- 查询过程发布成功。
|
||
- `@订单号=4222` 二级数据返回 `5960` 和 `7142`。
|
||
- 同一生产订单号没有重复。
|
||
- `5960` 显示 13 道工艺路线,`7142` 显示 4 道工艺路线。
|
||
|
||
### 下一步
|
||
|
||
- 登录页面展开 `4222`,确认二级数据同时显示所有匹配生产订单且不重复。
|
||
|
||
## 2026-06-30 11:47:54 复核同缺件物料多生产订单显示
|
||
|
||
### 复核内容
|
||
- 按用户最新口径确认:同一个生产订单号不要出现重复,同一缺件物料所有匹配生产订单都显示。
|
||
|
||
### 验证结果
|
||
- 执行 `EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号 = 4222`。
|
||
- 二级数据中缺件物料 `22-103-060-YDZF-20V1.0-4.1` 当前同时返回生产订单 `5960` 和 `7142`。
|
||
- 同一生产订单号未重复出现。
|
||
|
||
## 2026-06-30 生产订单关闭无工时可关闭处理
|
||
|
||
### 用户反馈
|
||
- `dbo.计划排产_生产订单关闭_查询全部订单` 的“可关闭”查询以工时为基准。
|
||
- 当前只能查出全部校验的工时再筛选。
|
||
- 特殊情况:没有工时记录,但满足其他条件的订单也需要进入可关闭处理。
|
||
|
||
### 执行过程
|
||
1. 读取线上过程定义,确认“可关闭”分支以 `dbo.View_生产工时视图` 为主表。
|
||
2. 核对页面 `src/views/PlanManagement/PlannOrderClose/index.vue`,确认默认查询为“可关闭 + 机加”。
|
||
3. 核对 `MES_接口_生产计划`、`View_生产工时视图` 字段,确认可从生产计划补充无工时订单。
|
||
4. 查询样例,确认 `7410` 无工时,但计划数量、入库数量、终检合格数均为 `1`,单据状态为空,属性为机加件。
|
||
5. 新增脚本 `db_backups/update_plan_order_close_no_work_hours_20260630.sql`。
|
||
6. 将“可关闭”分支调整为有工时订单和无工时满足条件订单合并:
|
||
- 有工时订单继续要求全部工时校验。
|
||
- 无工时订单免工时校验,但保留原可关闭条件。
|
||
7. 初版全量查询超时后,改为先写入 `#工时订单` 临时表,再判断无工时,避免重复展开复杂视图。
|
||
8. 发布存储过程成功。
|
||
9. 验证 `@订单号=7410, @单据状态=可关闭, @属性=机加` 可返回。
|
||
10. 验证默认“可关闭 + 机加”查询约 `0.56` 秒返回,并命中 `7280`、`7409`、`7410`。
|
||
|
||
### 修改文件
|
||
- `db_backups/update_plan_order_close_no_work_hours_20260630.sql`
|
||
- `work/PlanManagement/PlannOrderClose/README.md`
|
||
- `work/PlanManagement/PlannOrderClose/01-项目功能内容.md`
|
||
- `work/PlanManagement/PlannOrderClose/02-项目程序开发详细步骤.md`
|
||
- `work/PlanManagement/PlannOrderClose/03-推进台账.md`
|
||
- `work/PlanManagement/PlannOrderClose/04-任务矩阵.md`
|
||
- `work/PlanManagement/PlannOrderClose/05-验收证据.md`
|
||
- `work/PlanManagement/PlannOrderClose/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 数据库过程发布成功。
|
||
- 无工时订单 `7410` 可进入可关闭结果。
|
||
- 默认“可关闭 + 机加”查询未超时,约 `0.56` 秒返回。
|
||
|
||
## 2026-06-30 新增产品合格率(工位)页面
|
||
|
||
### 用户反馈
|
||
- 查看 `doc/新增产品合格率.docx`。
|
||
- 根据文档新增页面 `产品合格率(工位)`。
|
||
|
||
### 执行过程
|
||
1. 解包并读取 `doc/新增产品合格率.docx`,确认页面放在生产管理下。
|
||
2. 读取文档截图和文字,确认一级字段为关闭日期、生产订单号、物料名称、物料编码、计划数量、完成数量、不良数量、合格率。
|
||
3. 确认二级字段为工序、工序号、工位、完工数量、不良数量、合格率、检验说明。
|
||
4. 查询 `dbo.YL_质量检验_质检记录` 字段,确认生产订单号为 `计划号`,订单行号为 `行号`,工位字段为 `工位名称`。
|
||
5. 查询 SAP 视图 `SBO_YL.dbo.UBT_OWOR`,确认关闭日期字段为 `实际结算日期`,已关闭口径为 `单据状态 IS NOT NULL`。
|
||
6. 新增查询脚本 `db_backups/create_product_pass_rate_workstation_20260630.sql`。
|
||
7. 初版四段名跨库查询较慢,改为 `OPENQUERY([SAP], ...)` 将 SAP 已关闭订单先取到本地临时表。
|
||
8. 新增菜单脚本 `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`,写入生产管理下 `产品合格率(工位)` 菜单。
|
||
9. 新增前端页面 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`,实现查询区、主表、展开二级明细和合格率颜色。
|
||
10. 发布查询过程和菜单脚本。
|
||
11. 验证样例 `@生产订单号=7649` 返回一级汇总和二级明细。
|
||
12. 执行 `npm run build`,构建通过。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
|
||
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
|
||
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/README.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 查询过程 `dbo.生产管理_产品合格率工位_查询` 发布成功,修改时间 `2026-06-30 14:31:00.690`。
|
||
- 菜单写入 `12` 条角色记录,ID 范围 `236-247`。
|
||
- 近 7 天查询返回 `175` 行,耗时约 `0.37` 秒。
|
||
- 空条件查询自动限定近 30 天,返回 `1420` 行,耗时约 `1.17` 秒。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
|
||
## 2026-06-30 产品合格率(工位)默认不查询和合格状态筛选
|
||
|
||
### 用户反馈
|
||
- 默认进来不查询数据。
|
||
- 增加合格和不合格筛选。
|
||
- 主数据合格率小于 `100` 的为不合格。
|
||
- 默认不合格。
|
||
|
||
### 执行过程
|
||
1. 修改 `db_backups/create_product_pass_rate_workstation_20260630.sql`,新增 `@合格状态` 参数。
|
||
2. 查询结果按主数据合格率过滤:`合格` 为大于等于 `100`,`不合格` 为小于 `100`,`全部` 不过滤。
|
||
3. 修改 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`,删除页面创建时自动查询。
|
||
4. 查询区新增“合格状态”下拉,默认值为 `不合格`。
|
||
5. 查询时向过程传入 `合格状态`。
|
||
6. 发布查询过程成功。
|
||
7. 验证近 30 天筛选结果:不合格 `50` 行,合格 `1370` 行,全部 `1420` 行。
|
||
8. 执行 `npm run build`,构建通过。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
|
||
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/README.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 页面进入不再自动查询。
|
||
- 合格状态默认 `不合格`。
|
||
- 不合格筛选最高合格率为 `99.99`,符合小于 `100` 的判定。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
|
||
## 2026-06-30 产品合格率(工位)关闭日期拆分
|
||
|
||
### 用户反馈
|
||
- 关闭日期筛选拆成两个筛选。
|
||
- 客户不习惯一次选两个日期。
|
||
|
||
### 执行过程
|
||
1. 修改 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`。
|
||
2. 将原 `daterange` 日期范围选择器拆成两个独立 `date` 日期选择器。
|
||
3. 前端字段改为 `searchForm.closeDateStart` 和 `searchForm.closeDateEnd`。
|
||
4. 查询参数仍然使用 `关闭日期_Start` 和 `关闭日期_End`,数据库过程无需修改。
|
||
5. 执行 `npm run build`,构建通过。
|
||
6. 更新产品合格率 README/01-05 文档和总日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
- 数据库过程无需重新发布。
|
||
|
||
## 2026-06-30 产品合格率(工位)修正工序号来源
|
||
|
||
### 用户反馈
|
||
- 工序号为什么都是空。
|
||
- 工序号应取 `dbo.MES_接口_生产计划_生产任务.订单行号`。
|
||
- 该表中订单行号肯定不会为空。
|
||
|
||
### 执行过程
|
||
1. 查询 `dbo.MES_接口_生产计划_生产任务` 字段,确认存在 `AID`、`订单编号`、`订单行号`、`工序名称`、`指派对象`。
|
||
2. 查询样例数据,确认 `订单行号` 在生产任务表中有值。
|
||
3. 定位原脚本中工序号来源为 `COALESCE(View_生产订单_MES.订单行号, 质检记录.行号)`。
|
||
4. 确认质检记录的 `TaskAID` 对应生产任务表的 `AID`。
|
||
5. 修改 `db_backups/create_product_pass_rate_workstation_20260630.sql`:
|
||
- 明细关联表改为 `dbo.MES_接口_生产计划_生产任务`。
|
||
- 关联条件改为 `q.TaskAID = t.AID`。
|
||
- 工序号改为 `COALESCE(t.订单行号, q.行号)`。
|
||
- 工序和工位补值也改为优先使用生产任务表的 `工序名称`、`指派对象`。
|
||
6. 发布 `dbo.生产管理_产品合格率工位_查询` 成功。
|
||
7. 验证 `7649` 二级明细工序号为 `1`、`2`、`3`。
|
||
8. 验证近 30 天 `3281` 条二级明细中空工序号为 `0`。
|
||
|
||
### 修改文件
|
||
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
|
||
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 查询过程修改时间:`2026-06-30 15:12:24.840`。
|
||
- `7649` 返回:领料 1、数车 2、打磨 3。
|
||
- 近 30 天明细行数 `3281`,空工序号行数 `0`。
|
||
|
||
## 2026-06-30 AGV执行中任务改为已完成
|
||
|
||
### 用户反馈
|
||
- 处理页面 `ProductionManagement/AGVtask/index` 里面任务状态为执行中的数据。
|
||
- 所有执行中任务都改为已完成。
|
||
|
||
### 执行过程
|
||
1. 读取页面 `src/views/ProductionManagement/AGVtask/index.vue`,确认页面中 `RUNNING` 显示为执行中,`FINISHED` 显示为已完成。
|
||
2. 查询数据库对象,确认实时数据来自 `dbo.AGV_实时数据`,历史完成数据写入 `dbo.AGV_历史数据`。
|
||
3. 处理前统计实时表状态:`PENDING 1`、`RUNNING 35`。
|
||
4. 按完成任务口径处理 `RUNNING` 数据:插入历史表时 `TaskStatus` 写为 `FINISHED`,并设置 `EndTime`、`Duration`,随后从实时表删除这些执行中任务。
|
||
5. 处理完成后,调用页面实时查询过程验证 `RUNNING` 无数据。
|
||
6. 验证实时表仅剩 `PENDING 1`,最近 5 分钟历史表新增 `FINISHED 35`。
|
||
7. 新增 AGVtask README 和 01-06 文档,记录功能内容、执行步骤、推进台账、任务矩阵、验收证据和决策记录。
|
||
|
||
### 修改文件
|
||
- `work/ProductionManagement/AGVtask/README.md`
|
||
- `work/ProductionManagement/AGVtask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/AGVtask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/AGVtask/03-推进台账.md`
|
||
- `work/ProductionManagement/AGVtask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/AGVtask/05-验收证据.md`
|
||
- `work/ProductionManagement/AGVtask/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 已转历史数量:`35`。
|
||
- 页面实时查询过程按 `RUNNING` 查询返回空结果。
|
||
- 实时表剩余状态:`PENDING 1`。
|
||
- 历史表最近 5 分钟状态:`FINISHED 35`。
|
||
|
||
## 2026-06-30 设计报工任务模块方案文档修订
|
||
|
||
### 用户反馈
|
||
- 读取 `doc/设计报工任务模块.docx`,梳理方案。
|
||
- 项目号具体取哪个 SAP 视图字段后续提供。
|
||
- 完成要求已有结束时间,未结束不能完成。
|
||
- 删除任务时,如果已经有报工记录,不能删除。
|
||
- 不参与之前任何生产/SAP/工时报表流程,整体独立。
|
||
- 修改文档。
|
||
|
||
### 执行过程
|
||
1. 解析 `doc/设计报工任务模块.docx` 正文,确认原始需求包含设计任务、设计报工、设计工时校验、设计工时报表四个页面。
|
||
2. 对照参考页面:
|
||
- `ProcessManagement/PartDrawlook/index.vue`
|
||
- `PlanManagement/SelfMakePlando/index.vue`
|
||
- `ProductionManagement/WorkHoursCheck/index.vue`
|
||
- `ProductionManagement/Workhours/index.vue`
|
||
3. 新增 `work/ProductionManagement/DesignReportTask/` 文档目录。
|
||
4. 写入 README 和 01-06 文档,记录功能内容、开发步骤、推进台账、任务矩阵、验收证据和决策记录。
|
||
5. 将 Word 文档正文整理为确认版方案。
|
||
6. 解析更新后的 Word 文档,验证关键口径已写入。
|
||
|
||
### 修改文件
|
||
- `doc/设计报工任务模块.docx`
|
||
- `work/ProductionManagement/DesignReportTask/README.md`
|
||
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
|
||
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
|
||
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- Word 文档已包含 `项目号:具体 SAP 视图和字段后续提供`。
|
||
- Word 文档已包含 `未结束不能完成`。
|
||
- Word 文档已包含 `已有设计报工记录不能删除`。
|
||
- Word 文档已包含 `不上传 SAP` 和 `不参与现有生产工时报表`。
|
||
- 任务矩阵中 `DRT-009 项目号来源` 状态为待确认,`DRT-010 数据库和页面开发` 状态为待开始。
|
||
|
||
## 2026-06-30 设计报工任务模块文档归档与菜单权限口径补充
|
||
|
||
### 用户反馈
|
||
- 根据修改后的文档,将文档复制到对应路径。
|
||
- 在对应路径下新增或修改 README、01-06 文档。
|
||
- 将完整执行过程追加到 `/gptlog-process/gpdlog.md`。
|
||
- 不分配菜单权限。
|
||
|
||
### 执行过程
|
||
1. 确认修改后的源文档为 `doc/设计报工任务模块.docx`。
|
||
2. 确认对应路径为 `work/ProductionManagement/DesignReportTask/`。
|
||
3. 将源 Word 文档复制到 `work/ProductionManagement/DesignReportTask/设计报工任务模块.docx`。
|
||
4. 更新 README 索引,增加复制后的 Word 文档说明,并写入“不分配菜单权限”。
|
||
5. 更新 `01-项目功能内容.md`,补充独立性要求和文档归档路径。
|
||
6. 更新 `02-项目程序开发详细步骤.md`,删除菜单权限分配动作,明确不写菜单表和角色权限表。
|
||
7. 更新 `03-推进台账.md`,记录本轮做了什么、改了哪些文件、验证了什么、下一步是什么。
|
||
8. 更新 `04-任务矩阵.md`,新增文档复制和菜单权限口径任务,并将开发验收标准调整为“不分配菜单权限”。
|
||
9. 更新 `05-验收证据.md`,记录工作目录归档路径和菜单权限口径。
|
||
10. 更新 `06-决策记录.md`,新增 DDR-006:本阶段不分配菜单权限。
|
||
11. 追加仓库内总日志和绝对路径总日志。
|
||
|
||
### 修改文件
|
||
- `work/ProductionManagement/DesignReportTask/设计报工任务模块.docx`
|
||
- `work/ProductionManagement/DesignReportTask/README.md`
|
||
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
|
||
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
|
||
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- `work/ProductionManagement/DesignReportTask/设计报工任务模块.docx` 已存在。
|
||
- README 已列出复制后的 Word 文档。
|
||
- `02-项目程序开发详细步骤.md` 已明确本阶段不分配菜单权限。
|
||
- `04-任务矩阵.md` 已新增 `DRT-011` 和 `DRT-012`。
|
||
- `06-决策记录.md` 已新增 `DDR-006 本阶段不分配菜单权限`。
|
||
|
||
## 2026-06-30 新建设计报工模块页面、数据表和功能
|
||
|
||
### 用户反馈
|
||
- 新建文档里面的页面、数据表、功能。
|
||
- 继续遵守“不分配菜单权限”的要求。
|
||
|
||
### 执行过程
|
||
1. 读取 `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`,确认需要落地 4 个页面、3 张独立表和独立设计报工功能。
|
||
2. 读取现有页面和通用数据库调用方式,确认页面使用 `CreateData` / `ExecDatabase` 调用存储过程。
|
||
3. 查询数据库中现有物料查询和人员查询返回字段:
|
||
- 物料字段包含 `物料编码`、`物料名称`、`物料描述`。
|
||
- 人员字段包含 `人员编号`、`人员姓名`、`账号`、`角色`。
|
||
4. 新增数据库脚本 `db_backups/create_design_report_task_module_20260630.sql`。
|
||
5. 第一次发布脚本时,SAP 物料字段存在 `ntext` 与 `nvarchar` 比较问题,修正为显式 `CAST` 后重新发布。
|
||
6. 成功发布 3 张独立表:
|
||
- `dbo.MES_设计报工_任务`
|
||
- `dbo.MES_设计报工_记录`
|
||
- `dbo.MES_设计报工_校验记录`
|
||
7. 成功发布 15 个独立过程:
|
||
- `设计报工_物料查询`
|
||
- `设计报工_人员查询`
|
||
- `设计报工_项目查询`
|
||
- `设计报工_任务_查询`
|
||
- `设计报工_任务_新增`
|
||
- `设计报工_任务_编辑`
|
||
- `设计报工_任务_删除`
|
||
- `设计报工_任务_开始`
|
||
- `设计报工_任务_结束`
|
||
- `设计报工_任务_完成`
|
||
- `设计报工_记录_查询`
|
||
- `设计报工_工时校验_查询`
|
||
- `设计报工_工时校验_保存`
|
||
- `设计报工_工时校验_批量保存`
|
||
- `设计报工_工时报表_作业者工时_查询`
|
||
8. 事务内验证业务规则:
|
||
- 新增测试任务成功。
|
||
- 未开始直接完成返回“任务未产生已结束报工,不能完成”。
|
||
- 开始任务成功。
|
||
- 开始后未结束直接完成返回“任务存在未结束报工,不能完成”。
|
||
- 结束任务成功。
|
||
- 结束后完成成功。
|
||
- 事务回滚,测试数据未保留。
|
||
9. 新增 4 个前端页面:
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
10. 执行 `npm run build`,构建通过,仅有项目既有 asset size、entrypoint size、browserslist warning。
|
||
11. 更新 `work/ProductionManagement/DesignReportTask/` 下 README 和 01-06 文档。
|
||
12. 本轮未新增菜单权限脚本,未写入菜单表和角色权限表。
|
||
|
||
### 修改文件
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `work/ProductionManagement/DesignReportTask/README.md`
|
||
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
|
||
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
|
||
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 验证结果
|
||
- 数据库脚本发布成功。
|
||
- 表和过程对象存在,过程修改时间为 `2026-06-30 18:01:39` 至 `2026-06-30 18:01:40`。
|
||
- 下拉验证:`设计报工_物料查询 @过滤=N'5960'` 可返回物料,`设计报工_人员查询 @过滤=N'孙'` 可返回人员。
|
||
- 业务规则事务验证通过,测试数据已回滚。
|
||
- `npm run build` 通过,仅有项目既有 warning。
|
||
- 未分配菜单权限。
|
||
|
||
## 2026-07-09 DesignReportTask 菜单权限、物料下拉和表单规则调整
|
||
|
||
### 用户反馈
|
||
1. 给 `DesignReportTask` 下的四个页面增加权限,账号代码为 `1`;数据库为 `192.168.2.92 / YL_MESDB`,目标表为 `[dbo].[登录基础数据_二级菜单]`。
|
||
2. 修改 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`:新建设计任务弹框中,物料编码和父件物料编码没有默认选项,必须输入后触发才有选项。
|
||
3. 检查 `DesignReportTask` 下四个页面是否都有物料编码、父件物料编码默认选项问题,并统一修改。
|
||
4. 新建设计任务去掉指派对象必填项;物料名称和父件物料名称由选择编码后带出,禁止手工修改;检查四个页面是否都有此问题并处理。
|
||
5. 后续每次 GPT/Codex 执行完毕后,必须把中文执行日志追加到 `gptlog-process/gpdlog.md`,日志包含提问、结论和完整执行过程。
|
||
|
||
### 执行过程
|
||
1. 使用 `rg` 搜索 `DesignReportTask`、菜单表和相关路由配置,确认四个页面路径:
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
2. 读取 `src/router/getRouter.js` 和 `src/router/menuComponentModule.js`,确认系统从菜单表动态生成路由,菜单行里的 `path`、`componet`、`name` 必须和页面组件对应。
|
||
3. 读取既有菜单脚本,包括:
|
||
- `db_backups/add_formality_confirm_report_menu_20260626.sql`
|
||
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
|
||
- `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`
|
||
4. 使用用户提供的数据库连接信息连接 `192.168.2.92 / YL_MESDB`。为避免凭据落盘,日志不记录数据库密码明文。
|
||
5. 查询 `[dbo].[登录基础数据_二级菜单]` 表结构,确认:
|
||
- `IDD` 是自增主键。
|
||
- `id` 是前端菜单树使用的手工编号。
|
||
- `pid` 是父菜单编号。
|
||
- `componet` 为现有字段名,系统按该字段加载组件。
|
||
6. 查询账号代码 `1` 的菜单记录,确认“生产管理”父菜单为 `id=3`。
|
||
7. 查询账号代码 `1` 下是否已存在 `DesignReportTask` 相关菜单,确认执行前不存在 `设计任务`、`设计报工`、`设计工时校验`、`设计工时报表` 四条菜单。
|
||
8. 新增可重复执行脚本:
|
||
- `db_backups/add_design_report_task_menu_account1_20260709.sql`
|
||
9. 菜单脚本逻辑:
|
||
- 固定只处理账号代码 `1`。
|
||
- 查找账号 `1` 的“生产管理”父菜单。
|
||
- 不存在时插入四条菜单。
|
||
- 已存在时修正 `pid`、`path`、`componet`、`name`、`title`、`icon`、`模块代码` 和 `是否启用`。
|
||
10. 执行菜单脚本,成功新增四条菜单:
|
||
- `id=248`,`pid=3`,`设计任务`,`DesignReportTask/Task/index`,`/ProductionManagement/DesignReportTask/Task/index`
|
||
- `id=249`,`pid=3`,`设计报工`,`DesignReportTask/Report/index`,`/ProductionManagement/DesignReportTask/Report/index`
|
||
- `id=250`,`pid=3`,`设计工时校验`,`DesignReportTask/Check/index`,`/ProductionManagement/DesignReportTask/Check/index`
|
||
- `id=251`,`pid=3`,`设计工时报表`,`DesignReportTask/HoursReport/index`,`/ProductionManagement/DesignReportTask/HoursReport/index`
|
||
11. 回读菜单表,确认四条菜单各只有一条记录,`pid` 都为 `3`,`是否启用` 都为 `1`,`模块代码` 等于各自 `id`。
|
||
12. 使用 `Test-Path` 校验四个前端组件文件均存在。
|
||
13. 读取 `Task/index.vue`,确认新建设计任务弹框中:
|
||
- `物料编码` 使用 `queryMaterialOptions` 远程查询。
|
||
- `父件物料编码` 使用 `queryParentMaterialOptions` 远程查询。
|
||
- 原逻辑只在输入关键字触发 `remote-method` 后才请求物料数据。
|
||
14. 在 `Task/index.vue` 中新增 `loadDefaultMaterialOptions()` 方法,内部调用:
|
||
- `queryMaterialOptions('')`
|
||
- `queryParentMaterialOptions('')`
|
||
15. 在 `Task/index.vue` 的 `created()`、`openAdd()`、`openEdit()` 中调用 `loadDefaultMaterialOptions()`,保证页面查询区、新建弹框和编辑弹框打开时都有默认物料列表。
|
||
16. 执行 `npm run build` 验证,构建通过,仅有项目既有 asset size、entrypoint size、browserslist warning。
|
||
17. 继续检查 `DesignReportTask` 下四个页面:
|
||
- `Task` 页面存在物料编码和父件物料编码远程下拉。
|
||
- `Report` 页面原本查询区的物料编码和父件编码是普通输入框。
|
||
- `Check` 页面原本查询区的物料编码是普通输入框。
|
||
- `HoursReport` 页面原本查询区的物料编码是普通输入框。
|
||
18. 修改 `Report/index.vue`:
|
||
- 将查询区“物料编码”从输入框改为远程下拉。
|
||
- 将查询区“父件编码”从输入框改为远程下拉。
|
||
- 增加 `materialOptions`、`parentMaterialOptions`。
|
||
- 增加 `loadDefaultMaterialOptions()`、`queryMaterialOptions()`、`queryParentMaterialOptions()` 和 `formatMaterialLabel()`。
|
||
- 在 `created()` 中预加载默认物料和父件物料列表。
|
||
19. 修改 `Check/index.vue`:
|
||
- 将查询区“物料编码”从输入框改为远程下拉。
|
||
- 增加 `materialOptions`。
|
||
- 增加 `loadDefaultMaterialOptions()`、`queryMaterialOptions()` 和 `formatMaterialLabel()`。
|
||
- 在 `created()` 中预加载默认物料列表。
|
||
20. 修改 `HoursReport/index.vue`:
|
||
- 将查询区“物料编码”从输入框改为远程下拉。
|
||
- 增加 `materialOptions`。
|
||
- 增加 `loadDefaultMaterialOptions()`、`queryMaterialOptions()` 和 `formatMaterialLabel()`。
|
||
- 在 `created()` 中预加载默认物料列表。
|
||
21. 执行 `npm run build` 验证四个页面物料下拉改动,构建通过,仅有项目既有 warning。
|
||
22. 检查四个页面是否存在“指派对象必填”和“物料名称、父件物料名称可编辑”的问题:
|
||
- `Task/index.vue` 有新建/编辑设计任务弹框,存在 `指派对象` 的 `assigneeIds` 必填校验,也存在可编辑的 `物料名称` 和 `父件物料名称` 输入框。
|
||
- `Report/index.vue`、`Check/index.vue`、`HoursReport/index.vue` 没有新建设计任务弹框,也没有可编辑的 `物料名称` 或 `父件物料名称` 表单项,只有查询条件和表格展示。
|
||
23. 检查数据库脚本 `db_backups/create_design_report_task_module_20260630.sql`,确认 `设计报工_任务_新增` 和 `设计报工_任务_编辑` 的 `@指派对象ID`、`@指派对象` 参数允许为空,后端无需修改。
|
||
24. 修改 `Task/index.vue`:
|
||
- 删除 `rules.assigneeIds` 必填校验。
|
||
- 保留 `formData.assigneeIds` 数组字段和 `handleAssigneeChange()`,支持用户选择指派对象但不强制要求。
|
||
- 给 `formData.物料名称` 输入框增加 `disabled`。
|
||
- 给 `formData.关联父件物料名称` 输入框增加 `disabled`。
|
||
25. 使用固定字符串搜索确认:
|
||
- `请选择指派对象` 必填提示已不存在。
|
||
- `assigneeIds` 只剩表单数据字段和选择逻辑,不再作为必填规则。
|
||
- `Task/index.vue` 中 `物料名称` 和 `父件物料名称` 表单输入框均已禁用。
|
||
- 其它三个页面仅有表格展示的 `物料名称`,没有对应可编辑输入框。
|
||
26. 执行 `npm run build` 验证表单规则和禁用输入框改动,构建通过,仅有项目既有 warning。
|
||
27. 查看 `git status --short`,确认当前工作区还存在用户或既有修改:
|
||
- `doc/设计报工任务模块.docx`
|
||
- `src/views/PlanManagement/SelfMakePlando/index.vue`
|
||
- `doc/~$报工任务模块.docx`
|
||
- 本轮相关的 `DesignReportTask` 页面改动和菜单脚本。
|
||
28. 按用户要求补录本次会话日志到 `gptlog-process/gpdlog.md`,并确认后续执行完毕后继续追加中文日志。
|
||
|
||
### 修改文件
|
||
- `db_backups/add_design_report_task_menu_account1_20260709.sql`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 账号代码 `1` 已获得 `DesignReportTask` 下四个页面菜单权限,四条菜单均挂到“生产管理”下并启用。
|
||
- `Task` 页面新建/编辑设计任务弹框打开时,物料编码和父件物料编码已有默认选项。
|
||
- `Task`、`Report`、`Check`、`HoursReport` 四个页面涉及物料查询的下拉均已支持默认选项。
|
||
- 新建设计任务的“指派对象”不再必填。
|
||
- 新建设计任务的“物料名称”和“父件物料名称”只能由选择编码后带出,前端禁止手工修改。
|
||
- `Report`、`Check`、`HoursReport` 页面不存在新建设计任务弹框,也不存在可编辑的物料名称或父件物料名称输入框,无需做同类表单禁用修改。
|
||
- 多次执行 `npm run build` 均通过,仅有项目既有资源体积和 browserslist 过期 warning。
|
||
- 已建立后续日志规则:每次 GPT/Codex 执行完毕后,将中文执行日志追加到 `gptlog-process/gpdlog.md`。
|
||
|
||
### 验证结果
|
||
- 菜单表回读结果确认 `设计任务`、`设计报工`、`设计工时校验`、`设计工时报表` 各 1 条,账号代码均为 `1`,`pid=3`,`是否启用=1`。
|
||
- 四个前端组件文件均存在。
|
||
- 搜索确认 `请选择指派对象` 必填提示已删除。
|
||
- 搜索确认 `物料名称` 和 `父件物料名称` 的可编辑表单问题只存在于 `Task/index.vue`,且已加 `disabled`。
|
||
- `npm run build` 通过。
|
||
|
||
## 2026-07-09 补录 2026-07-01 至 2026-07-08 项目修改日志
|
||
|
||
### 用户反馈
|
||
- 用户要求把 7 月 1、2、3 日的修改,以及 7 月 6、7、8 日本项目的修改追加到 `gptlog-process/gpdlog.md`。
|
||
- 要求遵守既定日志规则:每次 GPT/Codex 执行完毕后,将中文执行过程日志追加到 `gptlog-process/gpdlog.md`,内容包含提问、结论和完整执行过程。
|
||
|
||
### 执行过程
|
||
1. 读取 `gptlog-process/gpdlog.md` 末尾,确认当前日志已包含 2026-06-30 设计报工模块日志和 2026-07-09 DesignReportTask 权限、下拉、表单规则调整日志。
|
||
2. 使用 `rg` 搜索 `2026-07`、`七月`、`7月`、`07-0` 等关键词,确认现有总日志中没有按 2026-07-01 至 2026-07-08 单独补录的完整章节。
|
||
3. 使用 `git log --since "2026-07-01" --until "2026-07-09"` 查询 Git 历史,确认可追溯提交主要为:
|
||
- `c4a2f6e`,2026-07-07 17:30:12,`feat: update production reporting workflows`。
|
||
- `6d93e40`,2026-07-08 10:38:56,`feat: 增加结算工时和历史工时选择`。
|
||
- `bd9ca09`,2026-07-08 16:52:29,`feat: 增加设备数据导出`。
|
||
4. 使用 PowerShell 按 `LastWriteTime` 查询 2026-07-01 至 2026-07-08 的项目文件修改时间,排除 `.git`、`node_modules`、`dist` 等目录。
|
||
5. 文件时间显示的关键记录:
|
||
- 2026-07-02:`src/views/PlanManagement/TimelyKitTrackingResult/index.vue`。
|
||
- 2026-07-03:`AGENTS.md`。
|
||
- 2026-07-06:`src/views/ProductionManagement/OutsourceMange/index.vue`。
|
||
- 2026-07-07:`src/views/QualityManagement/CheckTask/processReceive.vue`、`src/views/ProductionManagement/SettlementWorkhours/index.vue`、多个 20260707 SQL 脚本、`src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`。
|
||
- 2026-07-08:`src/views/PlanManagement/SelfMakePlandone/index.vue`、`src/views/PlanManagement/WorkstationPlan/index.vue`、`src/views/DeviceManagement/Devicedata/index.vue`、`src/views/DeviceManagement/DeviceDataHistory/index.vue`、`doc/设计报工任务模块.docx`、`dist.zip`。
|
||
6. 查询 2026-07-01 至 2026-07-04 的 Git 提交记录,未发现该日期范围内的 Git 提交。
|
||
7. 读取 `AGENTS.md`,确认其内容为日志记录规则:每次 GPT/Codex 执行完毕后,将中文完整执行过程日志追加到 `gptlog-process/gpdlog.md`。
|
||
8. 读取 2026-07-07 提交 `c4a2f6e` 的文件清单和关键 diff,确认该提交覆盖 24 个文件,包含设计报工模块、结算工时、产品合格率、及时齐套跟踪结果、外协管理、质检收检和数据库脚本。
|
||
9. 读取 2026-07-08 提交 `6d93e40` 的 diff,确认其重点是排产相关页面增加结算工时和历史工时选择。
|
||
10. 读取 2026-07-08 提交 `bd9ca09` 的 diff,确认其重点是设备实时数据和设备历史数据增加导出 Excel 功能。
|
||
11. 对无 Git 提交但有文件修改时间的 7 月 1、2、3、6 日,按“可追溯证据”记录,不把无法确认的内容写成确定提交。
|
||
12. 将本次补录内容追加到 `gptlog-process/gpdlog.md`。
|
||
|
||
### 2026-07-01 修改补录
|
||
- 通过 Git 历史和文件修改时间检查,未发现 2026-07-01 当天有可追溯的项目代码或文档修改记录。
|
||
- 现有日志中出现的 `2026-07-01` 主要是设备信息维护日期字段的测试数据,例如入账日期测试值,不代表 2026-07-01 当天发生了项目文件修改。
|
||
|
||
### 2026-07-02 修改补录
|
||
- 文件修改时间显示 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue` 在 2026-07-02 11:50:48 修改。
|
||
- 后续该变更随 2026-07-07 提交 `c4a2f6e` 入库。
|
||
- 主要修改内容:
|
||
1. 调整 `getRouteProcessName(process)`。
|
||
2. 从 `process.工序名称` 和 `process.指派对象` 组合显示工序路线名称。
|
||
3. 如果工序名称中已经包含半角或全角括号形式的指派对象,则不重复追加。
|
||
4. 如果存在指派对象且工序名称未包含该指派对象,则显示为 `工序名称(指派对象)`。
|
||
- 结论:及时齐套跟踪结果页面的路线工序显示更明确,能在工序名称旁体现指派对象。
|
||
|
||
### 2026-07-03 修改补录
|
||
- 文件修改时间显示仓库根目录新增或修改 `AGENTS.md`,时间为 2026-07-03 09:52:09。
|
||
- 当前 `AGENTS.md` 内容为本项目日志记录规则:
|
||
1. 每次 GPT/Codex 执行完毕后,须将完整执行过程日志追加到 `gptlog-process/gpdlog.md`。
|
||
2. 日志包含提问、结论和完整执行过程。
|
||
3. 写入日志必须使用中文。
|
||
- 当前 `git status` 显示 `AGENTS.md` 仍为未跟踪文件。
|
||
- 结论:7 月 3 日主要是建立项目级日志记录约束文件。
|
||
|
||
### 2026-07-06 修改补录
|
||
- 文件修改时间显示 `src/views/ProductionManagement/OutsourceMange/index.vue` 在 2026-07-06 13:36:58 修改。
|
||
- 后续该变更随 2026-07-07 提交 `c4a2f6e` 入库。
|
||
- 主要修改内容:
|
||
1. 外协管理操作列中,“发料”按钮增加 `v-if="scope.row.单据状态 != '已取消'"`。
|
||
2. 外协管理操作列中,“收料”按钮增加 `v-if="scope.row.单据状态 != '已取消'"`。
|
||
- 结论:已取消单据不再展示发料、收料操作,避免对取消状态单据继续执行业务操作。
|
||
|
||
### 2026-07-07 修改补录
|
||
- Git 提交:`c4a2f6e`。
|
||
- 提交时间:2026-07-07 17:30:12。
|
||
- 提交说明:`feat: update production reporting workflows`。
|
||
- 提交规模:24 个文件,约 3713 行新增、35 行删除。
|
||
|
||
#### 数据库脚本
|
||
1. `db_backups/create_design_report_task_module_20260630.sql`
|
||
- 新增独立设计报工模块数据库脚本。
|
||
- 创建 `MES_设计报工_任务`、`MES_设计报工_记录`、`MES_设计报工_校验记录`。
|
||
- 创建设计报工物料、人员、项目、任务、开始、结束、完成、删除、工时校验、工时报表等过程。
|
||
- 脚本说明中明确:不写入现有生产报工表、不上传 SAP、不新增菜单权限。
|
||
2. `db_backups/exclude_unfinished_assembly_orders_from_close_query_20260707.sql`
|
||
- 修改 `计划排产_生产订单关闭_查询全部订单`。
|
||
- 在“可关闭”逻辑中识别未结束装配订单。
|
||
- 对存在装配开始但未结束记录的订单进行排除,避免未结束装配订单被误判为可关闭。
|
||
3. `db_backups/optimize_settlement_workhours_query_20260707.sql`
|
||
- 优化 `生产管理_结算工时_查询`。
|
||
- 增加合同号、产品编码、订单号、工位、开始日期、结束日期、数据条数等筛选参数。
|
||
- 使用临时表组织任务、基础工时数据和汇总结果,提高查询结构清晰度。
|
||
4. `db_backups/fix_settlement_workhours_query_restore_workhour_rows_20260707.sql`
|
||
- 修复结算工时查询,恢复从 `View_生产工时视图` 关联回来的工时报工行。
|
||
- 使用 `TaskAID`、开始时间等关键字段组织报工明细和操作人拼接。
|
||
- 继续保留结算工时汇总需要的报工工时、辅助工时、完成数、单件工时等字段。
|
||
|
||
#### 前端页面
|
||
1. `src/views/PlanManagement/SelfMakePlando/index.vue`
|
||
- 增加“历史工时”入口。
|
||
- 新增历史工时弹框。
|
||
- 通过 `生产管理_结算工时_查询` 按产品编码查询历史工时。
|
||
- 展示任务描述、生产订单号、工位、报工工时、辅助工时、完成数、结算报工单件工时、结算辅助单件工时、操作人等字段。
|
||
2. `src/views/PlanManagement/SelfMakePlandone/index.vue`
|
||
- 增加与 `SelfMakePlando` 类似的“历史工时”入口和弹框。
|
||
- 通过产品编码查询历史结算工时数据并展示。
|
||
3. `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
|
||
- 路线工序名称增加指派对象显示,避免只看工序名无法区分指派对象。
|
||
4. `src/views/ProductionManagement/OutsourceMange/index.vue`
|
||
- 已取消单据隐藏“发料”和“收料”按钮。
|
||
5. `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
|
||
- 新增导出按钮。
|
||
- 引入 `xlsx`。
|
||
- 支持把主表和明细导出为 Excel。
|
||
- 导出字段包含关闭日期、生产订单号、物料、计划数量、完成数量、不良数量、合格率、工序、工位、检验说明等。
|
||
6. `src/views/ProductionManagement/SettlementWorkhours/index.vue`
|
||
- 新增导出按钮。
|
||
- 引入 `xlsx`。
|
||
- 导出结算工时树表数据,并在末尾写入报工工时、主辅工时和合计工时汇总。
|
||
- 将“主辅工时”列名调整为“辅助工时”。
|
||
- 增加展开/收起状态记录,导出时只导出当前展开明细。
|
||
7. `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- 新增设计任务页面。
|
||
- 支持设计任务查询、新建、编辑、删除。
|
||
- 支持项目号、物料编码、图号、父件编码、预计时间、状态等查询条件。
|
||
8. `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- 新增设计报工页面。
|
||
- 支持任务开始、结束、完成。
|
||
- 遵守未结束不能完成、已有报工记录不能删除等独立设计报工规则。
|
||
9. `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- 新增设计工时校验页面。
|
||
- 支持单条校验和批量校验。
|
||
10. `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- 新增设计工时报表页面。
|
||
- 支持按操作人、日期、任务形成树形工时报表。
|
||
11. `src/views/QualityManagement/CheckTask/processReceive.vue`
|
||
- 质检收检流程中对部分调试输出做调整。
|
||
- 对采购订单行匹配条件保留工序名称和未关闭行状态判断。
|
||
12. `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`、`src/views/ProductionManagement/SettlementWorkhours/index.vue`
|
||
- 两个报表类页面均增加 Excel 导出能力,统一使用 `xlsx`。
|
||
|
||
#### 工作文档和日志
|
||
- 更新 `work/ProductionManagement/DesignReportTask/README.md`。
|
||
- 更新 `work/ProductionManagement/DesignReportTask/01-项目功能内容.md` 至 `06-决策记录.md`。
|
||
- 复制或更新 `work/ProductionManagement/DesignReportTask/设计报工任务模块.docx`。
|
||
- 追加 `gptlog-process/gpdlog.md`。
|
||
|
||
#### 结论
|
||
- 7 月 7 日主要是生产报工、结算工时、设计报工、订单关闭判断、产品合格率导出等生产业务流程集中更新。
|
||
- 设计报工模块的表、过程、四个页面和工作文档在该提交中完成入库。
|
||
- 结算工时查询和展示能力得到增强,后续 7 月 8 日继续在排产页面使用这些结算工时数据。
|
||
|
||
### 2026-07-08 修改补录
|
||
|
||
#### 提交一:增加结算工时和历史工时选择
|
||
- Git 提交:`6d93e40`。
|
||
- 提交时间:2026-07-08 10:38:56。
|
||
- 提交说明:`feat: 增加结算工时和历史工时选择`。
|
||
- 涉及文件:
|
||
- `src/views/PlanManagement/SelfMakePlando/index.vue`
|
||
- `src/views/PlanManagement/SelfMakePlandone/index.vue`
|
||
- `src/views/PlanManagement/WorkstationPlan/index.vue`
|
||
|
||
##### 主要修改内容
|
||
1. `SelfMakePlando/index.vue`
|
||
- 调整历史工时弹框列顺序。
|
||
- 将结算报工单件工时、结算辅助单件工时前置展示。
|
||
- 单件工时展示时乘以 60,便于按分钟口径查看。
|
||
- 保留生产订单号、工位、操作人、报工工时、辅助工时、完成数等字段。
|
||
2. `SelfMakePlandone/index.vue`
|
||
- 将原“历史工时”按钮列注释掉。
|
||
- 保留页面其他业务列。
|
||
3. `WorkstationPlan/index.vue`
|
||
- 工位排产表增加“结算工时”和“结算单件工时”列。
|
||
- 工位汇总和日期汇总增加结算工时合计。
|
||
- 单任务行增加结算单件工时选择按钮。
|
||
- 新增历史工时弹框,按产品编码调用 `生产管理_结算工时_查询`。
|
||
- 历史工时弹框中支持选择“报工”或“辅助”的单件工时。
|
||
- 选择后调用 `MES_OrderPlanned_EditTaskPlanned` 保存到任务的 `结算单件工时`。
|
||
- 增加 `calcStandardHours`、`calcSettlementHours`、`formatHistoryPieceHours`、`canSelectHistoryHour` 等辅助方法。
|
||
- 扩展表格最小宽度和列样式,适配新增结算工时列。
|
||
|
||
##### 结论
|
||
- 7 月 8 日上午主要增强排产侧的结算工时使用能力,支持从历史结算工时中选择单件工时并回写排产任务。
|
||
|
||
#### 提交二:增加设备数据导出
|
||
- Git 提交:`bd9ca09`。
|
||
- 提交时间:2026-07-08 16:52:29。
|
||
- 提交说明:`feat: 增加设备数据导出`。
|
||
- 涉及文件:
|
||
- `src/views/DeviceManagement/Devicedata/index.vue`
|
||
- `src/views/DeviceManagement/DeviceDataHistory/index.vue`
|
||
|
||
##### 主要修改内容
|
||
1. `Devicedata/index.vue`
|
||
- 设备实时数据页面增加“导出”按钮。
|
||
- 引入 `xlsx`。
|
||
- 增加 `exporting` 状态,导出时按钮 loading。
|
||
- 将当前表格数据导出为 Excel。
|
||
- 导出字段包含序号、设备名称、参数名称、数值、单位、更新时间。
|
||
- 导出文件名格式为 `设备实时数据_yyyyMMdd_HHmmss.xlsx`。
|
||
2. `DeviceDataHistory/index.vue`
|
||
- 设备历史数据页面增加“导出”按钮。
|
||
- 抽出 `buildQueryParams(pageSize, pageCurrent)` 复用查询参数构建。
|
||
- 普通查询继续按分页查询。
|
||
- 导出时使用总条数作为页大小,一次性查询全部历史数据后导出。
|
||
- 导出字段包含序号、设备名称、参数名称、数值、采集时间。
|
||
- 导出文件名格式为 `设备历史数据_yyyyMMdd_HHmmss.xlsx`。
|
||
|
||
##### 结论
|
||
- 7 月 8 日下午主要补齐设备实时数据和历史数据的 Excel 导出能力。
|
||
|
||
#### 其它 2026-07-08 文件时间记录
|
||
- `doc/设计报工任务模块.docx` 文件时间显示为 2026-07-08 18:27:31,当前 `git status` 显示该文件仍处于修改状态。
|
||
- `dist.zip` 文件时间显示为 2026-07-08 09:10:41,属于构建或发布压缩产物,本次补录仅记录文件时间,不作为源码变更结论。
|
||
|
||
### 本次补录修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 本次补录结论
|
||
- 已将 2026-07-01、2026-07-02、2026-07-03、2026-07-06、2026-07-07、2026-07-08 的可追溯项目修改追加到总日志。
|
||
- 2026-07-01 未发现可追溯项目文件修改,已在日志中明确说明。
|
||
- 2026-07-02、2026-07-03、2026-07-06 根据文件修改时间和后续提交 diff 补录。
|
||
- 2026-07-07、2026-07-08 根据 Git 提交记录和文件 diff 补录。
|
||
- 本次操作只修改日志文件,没有修改业务代码和数据库。
|
||
|
||
### 本次补录验证结果
|
||
- `git log` 已确认 2026-07-07 和 2026-07-08 的三个提交。
|
||
- `Get-ChildItem` 文件时间检查已确认 2026-07-02、2026-07-03、2026-07-06、2026-07-08 的相关文件。
|
||
- `AGENTS.md` 已读取并确认内容为中文日志记录规则。
|
||
- `gptlog-process/gpdlog.md` 已追加本节补录内容。
|
||
|
||
## 2026-07-09 DesignReportTask 项目号来源修正
|
||
|
||
### 用户反馈
|
||
- 用户指出项目号来源错了。
|
||
- 正确来源应为 `SAP.SBO_YL.dbo.VIEW_OPRJ.项目代码`。
|
||
- 要求检查 `DesignReportTask` 下四个页面是否都有这个问题,并全部修改。
|
||
|
||
### 执行过程
|
||
1. 使用 `rg` 搜索 `DesignReportTask` 下四个页面和数据库脚本中的 `项目号`、`projectNo`、`projectOptions`、`queryProjects`、`设计报工_项目查询`。
|
||
2. 确认原始实现问题:
|
||
- `db_backups/create_design_report_task_module_20260630.sql` 中 `设计报工_项目查询` 原来从 `dbo.MES_设计报工_任务` 的已有项目号取值。
|
||
- `Task/index.vue` 已有项目号远程下拉,但来源依赖错误过程,并且新建弹框中允许 `allow-create` 手工创建项目号。
|
||
- `Report/index.vue`、`Check/index.vue`、`HoursReport/index.vue` 的项目号查询条件是普通输入框,没有统一使用项目号来源下拉。
|
||
3. 连接目标数据库 `192.168.2.92 / YL_MESDB`,检查 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]`。
|
||
4. 查询确认 SAP 项目视图字段:
|
||
- `项目代码`
|
||
- `项目名称`
|
||
5. 抽样查询 SAP 项目视图,确认存在 `CW-260001`、`CW260002`、`HT230075-1` 等项目代码。
|
||
6. 新增数据库增量脚本:
|
||
- `db_backups/update_design_report_project_source_20260709.sql`
|
||
7. 增量脚本重建 `dbo.设计报工_项目查询`:
|
||
- 来源改为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]`。
|
||
- 返回 `项目号 = 项目代码`。
|
||
- 同时返回 `项目名称`。
|
||
- 支持按 `项目代码` 或 `项目名称` 模糊过滤。
|
||
8. 同步修改 `db_backups/create_design_report_task_module_20260630.sql` 中的 `设计报工_项目查询`,避免以后重跑完整脚本时又恢复为错误来源。
|
||
9. 执行 `db_backups/update_design_report_project_source_20260709.sql` 到目标库,执行成功。日志中不记录数据库密码明文。
|
||
10. 验证存储过程:
|
||
- `设计报工_项目查询 @过滤=N''` 可返回 SAP 项目代码和项目名称。
|
||
- `设计报工_项目查询 @过滤=N'CW-260001'` 返回 `CW-260001`。
|
||
11. 修改 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`:
|
||
- 查询区项目号下拉显示从 `项目号` 改为 `项目号 | 项目名称`。
|
||
- 新建/编辑弹框项目号下拉显示从 `项目号` 改为 `项目号 | 项目名称`。
|
||
- 去掉新建/编辑弹框项目号下拉的 `allow-create`,避免手工录入非 SAP 项目代码。
|
||
- 打开新建/编辑弹框时重新调用 `queryProjects('')`,保证默认项目列表可用。
|
||
- 增加 `formatProjectLabel()`。
|
||
12. 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- 将查询区项目号从普通输入框改为远程下拉。
|
||
- 新增 `projectOptions`、`queryProjects()`、`formatProjectLabel()`。
|
||
- 页面创建时预加载 SAP 项目代码列表。
|
||
13. 修改 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`:
|
||
- 将查询区项目号从普通输入框改为远程下拉。
|
||
- 新增 `projectOptions`、`queryProjects()`、`formatProjectLabel()`。
|
||
- 页面创建时预加载 SAP 项目代码列表。
|
||
14. 修改 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`:
|
||
- 将查询区项目号从普通输入框改为远程下拉。
|
||
- 新增 `projectOptions`、`queryProjects()`、`formatProjectLabel()`。
|
||
- 页面创建时预加载 SAP 项目代码列表。
|
||
15. 使用 `rg` 检查四个页面:
|
||
- 四个页面均有 `queryProjects()`。
|
||
- 四个页面项目号均使用 `设计报工_项目查询`。
|
||
- `Task/index.vue` 中不再存在 `allow-create`。
|
||
16. 更新工作文档:
|
||
- `work/ProductionManagement/DesignReportTask/README.md`
|
||
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
|
||
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
|
||
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
|
||
17. 文档更新内容:
|
||
- 项目号来源从“待确认”改为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ].[项目代码]`。
|
||
- 记录 `设计报工_项目查询` 使用 SAP 项目代码。
|
||
- 记录四个页面项目号查询条件统一为远程下拉。
|
||
- 将任务矩阵 `DRT-009` 改为已完成,并新增 `DRT-020`。
|
||
- 将决策记录中“项目号临时实现”标记为已废弃。
|
||
18. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 browserslist 过期 warning。
|
||
19. 查看 `git status --short`,确认本轮涉及的新增和修改文件,同时发现工作区还有不属于本轮操作的一批 `work/DeviceManagement/DeviceInformation` 删除状态,未做回退。
|
||
|
||
### 修改文件
|
||
- `db_backups/update_design_report_project_source_20260709.sql`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `work/ProductionManagement/DesignReportTask/README.md`
|
||
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
|
||
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
|
||
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
|
||
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
|
||
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
|
||
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 项目号来源已从错误的 `MES_设计报工_任务` 历史数据改为 SAP 项目视图 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]` 的 `项目代码`。
|
||
- `设计报工_项目查询` 已发布到目标库,并返回 `项目号` 和 `项目名称`。
|
||
- `DesignReportTask` 四个页面的项目号查询条件已统一使用 SAP 项目代码远程下拉。
|
||
- `Task` 页面新建/编辑项目号不再允许手工创建非 SAP 项目号。
|
||
- 工作文档中的项目号“待确认”和“临时实现”口径已更新。
|
||
|
||
### 验证结果
|
||
- SAP 视图字段验证:存在 `项目代码`、`项目名称`。
|
||
- 存储过程验证:`设计报工_项目查询 @过滤=N'CW-260001'` 返回 `CW-260001`。
|
||
- 前端代码检查:四个页面均存在 `queryProjects()` 和 `formatProjectLabel()`。
|
||
- 前端构建:`npm run build` 通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask 项目号远程搜索补强
|
||
|
||
### 用户反馈
|
||
- 用户反馈:项目号也要像物料编码一样,需要远程搜索。
|
||
|
||
### 执行过程
|
||
1. 复查 `DesignReportTask` 四个页面中项目号控件配置。
|
||
2. 初次使用 `rg` 检查时,PowerShell 对引号和管道符解析导致命令报错,随后改用 `Get-Content` 和 `Select-String` 读取页面内容。
|
||
3. 确认当前四个页面已使用 `remote-method="queryProjects"`,但项目号下拉需要进一步补强为和物料编码一致的使用体验:
|
||
- 页面打开时加载默认项目。
|
||
- 用户输入关键字时通过 `queryProjects` 远程查询。
|
||
- 清空选择后恢复默认项目列表。
|
||
- 打开下拉且本地列表为空时自动加载默认项目列表。
|
||
4. 修改 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`:
|
||
- 设计任务查询区项目号下拉增加 `@clear="loadDefaultProjectOptions"`。
|
||
- 新建/编辑弹框项目号下拉增加 `@clear="loadDefaultProjectOptions"`。
|
||
- 两个项目号下拉均增加 `@visible-change="handleProjectVisibleChange"`。
|
||
- 新增 `loadDefaultProjectOptions()`,内部调用 `queryProjects('')`。
|
||
- 新增 `handleProjectVisibleChange(visible)`,下拉打开且 `projectOptions` 为空时加载默认项目列表。
|
||
- `created()`、`openAdd()`、`openEdit()` 改为调用 `loadDefaultProjectOptions()`。
|
||
5. 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- 查询区项目号下拉增加清空后加载默认项目和打开时自动补加载逻辑。
|
||
- 新增 `loadDefaultProjectOptions()` 和 `handleProjectVisibleChange()`。
|
||
- `created()` 改为调用 `loadDefaultProjectOptions()`。
|
||
6. 修改 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`:
|
||
- 查询区项目号下拉增加清空后加载默认项目和打开时自动补加载逻辑。
|
||
- 新增 `loadDefaultProjectOptions()` 和 `handleProjectVisibleChange()`。
|
||
- `created()` 改为调用 `loadDefaultProjectOptions()`。
|
||
7. 修改 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`:
|
||
- 查询区项目号下拉增加清空后加载默认项目和打开时自动补加载逻辑。
|
||
- 新增 `loadDefaultProjectOptions()` 和 `handleProjectVisibleChange()`。
|
||
- `created()` 改为调用 `loadDefaultProjectOptions()`。
|
||
8. 使用 `Select-String` 检查四个页面,确认均存在:
|
||
- `remote-method="queryProjects"`
|
||
- `@clear="loadDefaultProjectOptions"`
|
||
- `@visible-change="handleProjectVisibleChange"`
|
||
- `loadDefaultProjectOptions`
|
||
- `handleProjectVisibleChange`
|
||
9. 第一次执行 `npm run build`,124 秒超时,未返回编译结果。
|
||
10. 使用 240 秒超时时间重新执行 `npm run build`,构建通过,仅有项目既有资源体积和 browserslist 过期 warning。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- `DesignReportTask` 四个页面的项目号均已按物料编码的远程搜索口径补强。
|
||
- 项目号现在支持默认列表、输入远程搜索、清空恢复默认列表、打开空列表时自动加载。
|
||
- 项目号数据仍来自已修正的 `设计报工_项目查询`,即 SAP 项目视图 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ].[项目代码]`。
|
||
|
||
### 验证结果
|
||
- 四个页面均检查到项目号远程搜索相关配置。
|
||
- 第二次 `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask 操作列按钮横向显示
|
||
|
||
### 用户反馈
|
||
- 用户反馈:操作列下的功能按钮不要纵向显示,容易误触,改成横向;检查 `DesignReportTask` 下四个页面是不是都有这个问题,并全部修改。
|
||
|
||
### 执行过程
|
||
1. 检查 `DesignReportTask` 下四个页面:
|
||
- `Task/index.vue` 存在操作列,按钮为“编辑 / 删除”。
|
||
- `Report/index.vue` 存在操作列,按钮为“开始 / 结束 / 完成”。
|
||
- `Check/index.vue` 存在操作列,按钮为“校验 / 已校验”。
|
||
- `HoursReport/index.vue` 未发现操作列,因此没有纵向按钮问题。
|
||
2. 第一次按精确标签搜索操作列未命中,随后改用 `rg` 关键字和 UTF-8 读取方式定位具体模板位置。
|
||
3. 修改 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`:
|
||
- 操作列宽度从 `130` 调整为 `150`。
|
||
- 将“编辑 / 删除”按钮包裹到 `design-action-buttons` 容器内。
|
||
- 新增横向 `inline-flex` 样式,设置不换行、居中、固定按钮间距。
|
||
- 覆盖 Element UI 相邻按钮默认左边距,避免按钮被默认样式挤到纵向排列。
|
||
4. 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- 操作列宽度从 `180` 调整为 `210`。
|
||
- 将“开始 / 结束 / 完成”按钮包裹到 `design-action-buttons` 容器内。
|
||
- 新增与 `Task` 页面一致的横向按钮样式。
|
||
5. 修改 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`:
|
||
- 操作列宽度从 `90` 调整为 `100`。
|
||
- 将“校验 / 已校验”按钮包裹到 `design-action-buttons` 容器内。
|
||
- 新增与其他页面一致的横向按钮样式。
|
||
6. 对 `HoursReport/index.vue` 进行检查,确认页面只有报表树形表格和查询条件,没有操作列,未做代码修改。
|
||
7. 使用 `rg` 检查三个已修改页面,确认都已存在 `design-action-buttons` 模板和样式。
|
||
8. 执行 `npm run build`,构建通过;输出仅包含项目既有资源体积过大、Browserslist / baseline 数据过期 warning。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- `Task`、`Report`、`Check` 三个有操作列的页面已统一改为横向按钮排列,避免按钮纵向堆叠导致误触。
|
||
- `HoursReport` 页面没有操作列,本次无需修改。
|
||
|
||
### 验证结果
|
||
- 已检查到三个页面均存在 `design-action-buttons` 横向按钮容器。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask 设计报工多人开始结束逻辑
|
||
|
||
### 用户反馈
|
||
- 用户要求修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`。
|
||
- 业务规则:
|
||
- 一个任务允许多个人员分别点击开始和结束。
|
||
- A 点击开始后,B 也可以点击开始。
|
||
- A 点击结束时,只记录 A 自己的开始时间和结束时间。
|
||
- B 点击结束时,只记录 B 自己的开始时间和结束时间。
|
||
- 点击完成时必须判断所有已点击开始的人员都已点击结束。
|
||
- 如果有人开始后未结束,需要提示具体是谁未结束,且不更新任务状态。
|
||
- 只有所有开始记录都已结束后,才允许完成任务。
|
||
|
||
### 执行过程
|
||
1. 读取 `Report/index.vue`,确认当前前端逻辑使用 `未结束报工数` 控制按钮:
|
||
- `canStart` 要求 `未结束报工数 === 0`,导致 A 开始后 B 不能开始。
|
||
- `canEnd` 只判断任务是否存在未结束记录,不能保证只结束当前操作人的记录。
|
||
- `canComplete` 在存在未结束记录时直接禁用按钮,无法按用户要求点击后提示未结束人员。
|
||
2. 检查 `db_backups/create_design_report_task_module_20260630.sql`,确认数据库过程也存在同样限制:
|
||
- `设计报工_任务_开始` 原来只要任务存在任意未结束记录就禁止开始。
|
||
- `设计报工_任务_结束` 原来取任务最新一条未结束记录,不区分当前操作人。
|
||
- `设计报工_任务_完成` 原来只提示任务存在未结束报工,未返回具体人员。
|
||
3. 查询目标库 `YL_MESDB` 中 `MES_设计报工_记录` 表字段,确认已有 `操作人ID`、`操作人`、`开始时间`、`结束时间`、`工时秒数`、`报工状态` 等字段,支持按人员拆分报工记录,无需改表结构。
|
||
4. 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- 查询参数增加 `当前操作人ID` 和 `当前操作人`。
|
||
- 表格增加“未结束人员”列。
|
||
- `canStart` 改为只判断当前用户是否存在未结束报工。
|
||
- `canEnd` 改为只在当前用户存在未结束报工时可点击。
|
||
- `canComplete` 改为任务未完成且已有报工记录即可点击。
|
||
- `completeTask` 增加前端判断:如果 `未结束报工数 > 0`,提示 `未结束报工人员`,不调用完成过程。
|
||
5. 新增增量脚本 `db_backups/update_design_report_multi_person_work_20260709.sql`:
|
||
- 更新 `设计报工_任务_查询`,返回 `当前用户未结束报工数` 和 `未结束报工人员`。
|
||
- 更新 `设计报工_任务_开始`,只禁止当前人员重复开始,允许其他人员同时开始。
|
||
- 更新 `设计报工_任务_结束`,只结束当前人员自己的未结束记录;若其他人员仍未结束,任务状态保持 `执行中`。
|
||
- 更新 `设计报工_任务_完成`,如果存在未结束记录,返回“以下人员还未点击结束:人员名单”,不更新任务状态。
|
||
6. 同步更新完整建库脚本 `db_backups/create_design_report_task_module_20260630.sql`,确保后续重建模块时不会丢失多人报工逻辑。
|
||
7. 使用 `sqlcmd -f 65001` 将增量脚本发布到 `192.168.2.92 / YL_MESDB`,未在日志中记录数据库密码。
|
||
8. 第一次事务验证时发现人员名单拼接使用 XML 方法会受到当前 SQL 执行环境 `QUOTED_IDENTIFIER` 设置影响,过程执行报错。
|
||
9. 将人员名单拼接从 XML 方法改为 SQL Server 2019 支持的 `STRING_AGG`,重新更新增量脚本和完整建库脚本。
|
||
10. 重新发布增量脚本到目标库。
|
||
11. 使用事务创建临时测试任务并回滚,验证流程:
|
||
- 测试 A 点击开始成功。
|
||
- 测试 B 点击开始成功。
|
||
- 查询结果显示 `报工次数=2`、`未结束报工数=2`、`当前用户未结束报工数=1`、`未结束报工人员=测试A、测试B`。
|
||
- 测试 A 点击结束成功。
|
||
- A 结束后点击完成失败,返回“以下人员还未点击结束:测试B”。
|
||
- 测试 B 点击结束成功。
|
||
- A/B 都结束后点击完成成功。
|
||
- 事务最终回滚,测试数据未保留。
|
||
12. 执行 `npm run build`,前端构建通过,仅有项目既有资源体积和 Browserslist / baseline 数据过期 warning。
|
||
13. 查询数据库确认 `GPT-TEST` 临时测试任务残留数为 0,并确认 `设计报工_任务_完成` 已发布为包含 `STRING_AGG` 的新定义。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `db_backups/update_design_report_multi_person_work_20260709.sql`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计报工页面已支持同一任务多人分别开始、分别结束。
|
||
- 当前人员只能结束自己的未结束报工记录,不会误结束其他人员记录。
|
||
- 完成任务时会检查所有开始记录是否都已结束;如仍有人未结束,会提示具体人员并阻止任务完成。
|
||
- 数据库过程已同步发布到目标库,完整建库脚本也已同步更新。
|
||
|
||
### 验证结果
|
||
- 数据库事务验证通过,测试数据已回滚且无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask DID 3 完成误判复查与防护
|
||
|
||
### 用户反馈
|
||
- 用户反馈:刚测试 DID=3 任务,点击完成时另一个人没有点结束也提示完成了;完成后另一个人点不了结束。
|
||
|
||
### 执行过程
|
||
1. 查询目标库 `192.168.2.92 / YL_MESDB` 中 DID=3 的真实数据:
|
||
- `MES_设计报工_任务` 中 DID=3 状态为 `已完成`。
|
||
- `MES_设计报工_记录` 中 DID=3 只有 1 条记录,操作人为“超级管理员”,且该记录已有结束时间。
|
||
- DID=3 未查询到第二个人的未结束报工记录。
|
||
2. 复查数据库过程定义:
|
||
- `设计报工_任务_完成` 已包含“以下人员还未点击结束”的拦截逻辑。
|
||
- `设计报工_任务_结束` 已按当前人员查找未结束记录。
|
||
3. 结论判断:
|
||
- DID=3 完成成功的直接原因是数据库中没有“另一个人”的开始记录。
|
||
- 另一个人点不了结束,是因为 DID=3 没有该人员可结束的未结束记录,且任务已完成。
|
||
4. 为避免页面旧数据或并发操作再次造成误判,修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- `completeTask` 改为异步方法。
|
||
- 点击完成时新增 `getLatestTask(DID)`,先实时调用 `设计报工_任务_查询` 获取最新任务状态。
|
||
- 完成前使用实时返回的 `未结束报工数` 和 `未结束报工人员` 判断,不再只依赖表格旧行数据。
|
||
- 如果实时查询发现有人未结束,提示具体人员并停止调用完成过程。
|
||
- 如果实时查询发现任务已完成,提示“任务已完成”并刷新表格。
|
||
- 如果任务没有已结束报工,提示不能完成。
|
||
- `canEnd` 改为只要当前用户存在未结束报工就允许点击结束,不再因为任务状态是 `已完成` 就禁用,用于修复历史异常状态下“已完成但仍有未结束记录”的结束入口。
|
||
5. 新增数据库防护脚本 `db_backups/fix_design_report_complete_guard_20260709.sql`:
|
||
- 重新发布 `设计报工_任务_开始`、`设计报工_任务_结束`、`设计报工_任务_完成`。
|
||
- 开始、结束、完成均对对应 DID 的任务行使用事务锁,避免完成与开始/结束并发造成状态误判。
|
||
- 完成过程在事务内重新查询未结束人员,存在未结束记录时返回具体人员并不更新任务状态。
|
||
- 结束过程允许历史异常状态下“任务已完成但当前人员仍有未结束记录”的人员继续结束自己的记录。
|
||
6. 第一次事务验证时发现过程内部直接 `ROLLBACK TRANSACTION` 会回滚外层测试事务。
|
||
7. 修改防护脚本事务写法:
|
||
- 没有外层事务时由过程自己开启并提交事务。
|
||
- 存在外层事务时使用 `SAVE TRANSACTION` 保存点。
|
||
- 失败时只回滚过程自己的保存点,不破坏调用方外层事务。
|
||
8. 使用 `sqlcmd -f 65001` 发布防护脚本到目标库,日志中未记录数据库密码。
|
||
9. 使用事务验证多人未结束完成拦截:
|
||
- 测试 A 开始成功。
|
||
- 测试 B 开始成功。
|
||
- 测试 A 结束成功。
|
||
- 此时点击完成返回失败,提示“以下人员还未点击结束:测试B”。
|
||
- 查询显示任务仍为 `执行中`,`未结束报工数=1`,`当前用户未结束报工数=1`,`未结束报工人员=测试B`。
|
||
10. 使用事务验证历史异常状态:
|
||
- 临时创建一个状态为 `已完成` 但测试 B 仍未结束的任务。
|
||
- 查询显示 `未结束报工数=1`、`当前用户未结束报工数=1`。
|
||
- 测试 B 点击结束成功。
|
||
- 结束后查询显示 `未结束报工数=0`,任务保持 `已完成`。
|
||
11. 两组事务验证均已回滚,查询确认 `GPT-GUARD`、`GPT-BAD` 测试数据残留为 0。
|
||
12. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 Browserslist / baseline 数据过期 warning。
|
||
13. 查询 DID=3 当前未结束记录数为 0,确认 DID=3 没有可让另一个人结束的未结束记录。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `db_backups/fix_design_report_complete_guard_20260709.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- DID=3 本次完成成功是因为数据库里并没有第二个人的未结束开始记录。
|
||
- 已补充前端完成前实时查库,避免表格旧数据导致误判。
|
||
- 已补充数据库事务锁防护,完成过程会在最终更新状态前重新检查未结束人员。
|
||
- 已允许历史异常状态下,当前人员仍有未结束记录时可以点击结束自己的记录。
|
||
|
||
### 验证结果
|
||
- DID=3 当前未结束记录数为 0。
|
||
- 多人未结束完成拦截验证通过。
|
||
- 历史异常已完成状态下结束验证通过。
|
||
- 测试数据无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 清空 DesignReportTask 设计报工业务数据
|
||
|
||
### 用户反馈
|
||
- 用户要求:清空设计相关的数据。
|
||
|
||
### 执行过程
|
||
1. 按 `DesignReportTask` 设计报工模块业务数据范围处理,未清理菜单权限、存储过程和表结构。
|
||
2. 确认需要清空的三张业务表:
|
||
- `dbo.MES_设计报工_任务`
|
||
- `dbo.MES_设计报工_记录`
|
||
- `dbo.MES_设计报工_校验记录`
|
||
3. 清空前查询目标库 `YL_MESDB` 当前数据量:
|
||
- `MES_设计报工_任务`:2 行。
|
||
- `MES_设计报工_记录`:2 行。
|
||
- `MES_设计报工_校验记录`:1 行。
|
||
4. 清空前先导出本地备份,备份目录:
|
||
- `db_backups/design_report_data_backup_20260709_110417/`
|
||
5. 备份文件包括:
|
||
- `MES_设计报工_任务.json`
|
||
- `MES_设计报工_记录.json`
|
||
- `MES_设计报工_校验记录.json`
|
||
- `_summary.json`
|
||
6. 使用事务按依赖顺序清空数据:
|
||
- 先清空 `MES_设计报工_校验记录`。
|
||
- 再清空 `MES_设计报工_记录`。
|
||
- 最后清空 `MES_设计报工_任务`。
|
||
7. 清空后执行 `DBCC CHECKIDENT`,将三张表自增标识重置为 0。
|
||
8. 再次查询三张业务表行数,确认均为 0。
|
||
9. 查询三张表当前标识值,确认均为 0。
|
||
|
||
### 修改文件
|
||
- `db_backups/design_report_data_backup_20260709_110417/MES_设计报工_任务.json`
|
||
- `db_backups/design_report_data_backup_20260709_110417/MES_设计报工_记录.json`
|
||
- `db_backups/design_report_data_backup_20260709_110417/MES_设计报工_校验记录.json`
|
||
- `db_backups/design_report_data_backup_20260709_110417/_summary.json`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- `DesignReportTask` 设计报工模块三张业务表已清空。
|
||
- 清空前数据已备份到本地 `db_backups/design_report_data_backup_20260709_110417/`。
|
||
- 表结构、存储过程、菜单权限未清理。
|
||
- 三张表自增编号已重置,后续新增数据将从 1 开始。
|
||
|
||
### 验证结果
|
||
- `MES_设计报工_任务` 当前 0 行。
|
||
- `MES_设计报工_记录` 当前 0 行。
|
||
- `MES_设计报工_校验记录` 当前 0 行。
|
||
- 三张表当前标识值均为 0。
|
||
|
||
## 2026-07-09 DesignReportTask 已完成任务禁止开始补充判断
|
||
|
||
### 用户反馈
|
||
- 用户反馈:当任务状态为完成时,点击开始应该提示失败;现在任务已经被另一个人点击完成后,还能点击开始。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`。
|
||
2. 确认页面原有 `canStart(row)` 会根据当前表格行的 `单据状态` 禁用开始按钮,但如果另一个人完成任务后当前页面未刷新,当前行仍可能是旧状态,导致用户仍能点击开始。
|
||
3. 查询数据库过程 `dbo.设计报工_任务_开始`,确认后端已包含“任务已完成,不能开始”的拦截逻辑。
|
||
4. 修改 `Report/index.vue` 的 `startTask(row)`:
|
||
- 将 `startTask` 改为异步方法。
|
||
- 点击开始时先调用已有 `getLatestTask(DID)` 实时查询数据库最新任务状态。
|
||
- 使用实时返回结果覆盖当前表格行数据。
|
||
- 如果实时状态为 `已完成`,提示“任务已完成,不能开始”,刷新表格,并停止调用开始过程。
|
||
- 如果当前人员已经存在未结束报工,提示“当前人员已存在未结束的报工记录”,并停止调用开始过程。
|
||
- 只有实时状态允许开始时才调用 `设计报工_任务_开始`。
|
||
5. 使用事务临时创建一个状态为 `已完成` 的测试任务,并调用 `设计报工_任务_开始` 验证后端返回:
|
||
- `result=0`
|
||
- `message=任务已完成,不能开始`
|
||
6. 验证事务回滚后测试数据残留数为 0。
|
||
7. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 Browserslist / baseline 数据过期 warning。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 已完成任务点击“开始”时,前端会先实时查库。
|
||
- 如果任务已被其他人完成,会立即提示“任务已完成,不能开始”,不会再调用开始过程。
|
||
- 后端开始过程也已确认存在同样拦截,前后端均有保护。
|
||
|
||
### 验证结果
|
||
- 后端模拟已完成任务点击开始,返回“任务已完成,不能开始”。
|
||
- 测试数据无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask 设计任务删除失败逻辑修正
|
||
|
||
### 用户反馈
|
||
- 用户反馈:设计任务删除的结果逻辑不正确。任务 1 点击删除并确认时提示“删除成功”,实际应该提示“删除失败”。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/ProductionManagement/DesignReportTask/Task/index.vue` 中 `deleteTask(row)`:
|
||
- 原逻辑确认后直接调用 `设计报工_任务_删除`。
|
||
- 前端只按返回 `result` 判断成功或失败。
|
||
2. 查询目标库中 DID=1 的真实数据:
|
||
- DID=1 当前状态为 `已完成`。
|
||
- DID=1 存在 3 条 `MES_设计报工_记录`。
|
||
- DID=1 存在 3 条 `MES_设计报工_校验记录`。
|
||
3. 检查数据库删除过程 `dbo.设计报工_任务_删除`:
|
||
- 原过程只判断是否存在报工记录。
|
||
- 对任务不存在、已完成状态、删除 0 行、校验记录等场景保护不足。
|
||
4. 修改 `Task/index.vue`:
|
||
- 删除确认后先调用新增的 `getLatestTask(DID)` 实时查询数据库最新任务。
|
||
- 如果任务不存在,提示“删除失败:任务不存在或已被删除”。
|
||
- 如果 `报工次数 > 0`,提示“删除失败:该任务已有设计报工记录,不能删除”。
|
||
- 如果任务状态为 `已完成`,提示“删除失败:任务已完成,不能删除”。
|
||
- 如果任务状态不是 `待开始`,提示对应状态不能删除。
|
||
- 只有实时查询确认可删除时,才调用 `设计报工_任务_删除`。
|
||
- 删除调用增加异常捕获,接口异常时提示“删除失败”。
|
||
5. 新增数据库脚本 `db_backups/fix_design_report_delete_guard_20260709.sql`:
|
||
- 重新发布 `dbo.设计报工_任务_删除`。
|
||
- 只允许 `待开始` 且无报工记录、无校验记录的任务删除。
|
||
- 任务不存在、已有报工、已有校验、已完成、非待开始状态、删除 0 行均返回 `result=0`。
|
||
- 删除成功时才返回 `result=1`。
|
||
6. 同步更新完整建库脚本 `db_backups/create_design_report_task_module_20260630.sql` 中的删除过程定义。
|
||
7. 发布删除防护脚本到目标库 `YL_MESDB`,日志中未记录数据库密码。
|
||
8. 验证 DID=1 删除:
|
||
- 执行 `设计报工_任务_删除 @DID=1` 返回 `result=0`。
|
||
- 返回消息为“删除失败:该任务已有设计报工记录,不能删除”。
|
||
- DID=1 任务仍存在。
|
||
9. 使用事务临时创建一个 `待开始` 且无报工记录的测试任务,验证可删除场景:
|
||
- 删除过程返回 `result=1`、`message=删除成功`。
|
||
- 事务内删除后任务残留为 0。
|
||
- 回滚后测试数据残留为 0。
|
||
10. 执行 `npm run build`,构建通过,仅有项目既有资源体积和 Browserslist / baseline 数据过期 warning。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `db_backups/fix_design_report_delete_guard_20260709.sql`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 任务 1 这类已有报工记录的设计任务,现在删除时会提示删除失败。
|
||
- 前端删除前会实时查库,不再只依赖表格旧数据。
|
||
- 后端删除过程已补充完整保护,只允许未开始且无关联业务记录的任务删除。
|
||
|
||
### 验证结果
|
||
- DID=1 删除返回失败,提示“该任务已有设计报工记录,不能删除”。
|
||
- 可删除的待开始测试任务仍能正常删除。
|
||
- 测试数据无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-09 DesignReportTask 增加类别字段
|
||
|
||
### 用户提问
|
||
- 用户要求:设计报工模块增加字段“类别”,类型为文本输入。
|
||
|
||
### 执行过程
|
||
1. 检查 `DesignReportTask` 下四个页面:
|
||
- `Task/index.vue`
|
||
- `Report/index.vue`
|
||
- `Check/index.vue`
|
||
- `HoursReport/index.vue`
|
||
2. 确认“类别”应作为设计任务主数据字段保存,并在各业务查询中展示和筛选。
|
||
3. 修改 `Task/index.vue`:
|
||
- 查询区增加“类别”文本输入框。
|
||
- 表格增加“类别”列。
|
||
- 新建/编辑设计任务弹框增加“类别”文本输入框。
|
||
- 表单初始数据增加 `类别`。
|
||
- 任务查询参数增加 `类别`。
|
||
- 新增、编辑保存参数增加 `类别`。
|
||
- 删除前实时查询任务详情时补充 `类别` 参数,避免过程参数不一致。
|
||
4. 修改 `Report/index.vue`:
|
||
- 查询区增加“类别”文本输入框。
|
||
- 表格增加“类别”列。
|
||
- 报工任务查询参数增加 `类别`。
|
||
- 开始/结束/完成前实时查询任务详情时补充 `类别` 参数。
|
||
5. 修改 `Check/index.vue`:
|
||
- 查询区增加“类别”文本输入框。
|
||
- 表格增加“类别”列。
|
||
- 工时校验查询参数增加 `类别`。
|
||
6. 修改 `HoursReport/index.vue`:
|
||
- 查询区增加“类别”文本输入框。
|
||
- 表格增加“类别”列。
|
||
- 工时报表查询参数增加 `类别`。
|
||
- 树形标题中优先显示“类别 | 任务描述”,方便按类别识别任务。
|
||
7. 修改完整建库脚本 `db_backups/create_design_report_task_module_20260630.sql`:
|
||
- `MES_设计报工_任务` 表增加 `[类别] nvarchar(100) NULL`。
|
||
- 增加 `COL_LENGTH` 兼容判断,旧库缺少字段时自动 `ALTER TABLE`。
|
||
- 以下过程增加 `@类别` 参数、返回字段和筛选条件:
|
||
- `设计报工_任务_查询`
|
||
- `设计报工_任务_新增`
|
||
- `设计报工_任务_编辑`
|
||
- `设计报工_记录_查询`
|
||
- `设计报工_工时校验_查询`
|
||
- `设计报工_工时报表_作业者工时_查询`
|
||
8. 新增增量脚本 `db_backups/add_design_report_category_field_20260709.sql`:
|
||
- 用于直接更新现有数据库,不重建已有业务对象。
|
||
- 增加任务表“类别”字段。
|
||
- 重建上述 6 个查询/新增/编辑相关过程。
|
||
9. 将增量脚本发布到目标数据库 `192.168.2.92 / YL_MESDB`,日志中不记录数据库密码。
|
||
10. 数据库验证:
|
||
- 检查 `MES_设计报工_任务` 中 `类别` 字段存在,结果为 `1`。
|
||
- 检查 6 个相关存储过程均包含 `@类别` 参数和 `[类别]` 字段,结果均为 `1`。
|
||
- 第一次事务验证时误按旧理解传入了 `@任务状态`,数据库返回该参数不存在;随后查询真实过程签名并按真实参数重新验证。
|
||
- 第二次事务验证中执行新增,返回 `result=1`、`message=新增成功`、验证 DID 为 `6`,新增类别为 `结构`。
|
||
- 同一事务内执行编辑,返回 `result=1`、`message=编辑成功`,编辑后类别为 `电气`。
|
||
- 事务回滚后验证数据残留数量为 `0`。
|
||
11. 前端静态检查:
|
||
- 使用 `rg` 和 `Select-String` 确认四个页面均存在“类别”查询输入、表格列和查询参数。
|
||
12. 执行 `npm run build`:
|
||
- 构建通过。
|
||
- 仅有项目既有资源体积超限 warning,以及 Browserslist / baseline-browser-mapping 数据过期提示。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `db_backups/add_design_report_category_field_20260709.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计报工模块已增加“类别”文本字段。
|
||
- 新建设计任务和编辑设计任务可以录入、保存、修改“类别”。
|
||
- 任务管理、设计报工、工时校验、工时报表四个页面均支持按“类别”筛选并展示“类别”列。
|
||
- 数据库表和相关存储过程已同步更新到目标库。
|
||
|
||
### 验证结果
|
||
- 数据库字段存在,相关存储过程均已包含“类别”。
|
||
- 新增/编辑事务验证通过,测试数据已回滚,无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-10 DesignReportTask Check 和 HoursReport 菜单权限补录
|
||
|
||
### 用户提问
|
||
- 用户要求给 `DesignReportTask` 下 `check` 和 `HoursReport` 添加账号代码 `1` 的二级菜单权限。
|
||
- 目标数据库为 `192.168.2.92 / YL_MESDB`,目标表为 `[dbo].[登录基础数据_二级菜单]`。
|
||
- 数据库账号信息由用户提供,本日志不记录数据库明文密码。
|
||
|
||
### 执行过程
|
||
1. 读取当前项目目录,确认存在 `gptlog-process/gpdlog.md`、`db_backups` 和 `DesignReportTask` 相关历史记录。
|
||
2. 使用 `rg` 搜索 `登录基础数据_二级菜单`、`DesignReportTask`、`HoursReport`、`check`,确认项目内已有设计报工模块和历史菜单处理记录。
|
||
3. 确认本机存在 `sqlcmd`,路径为 SQL Server ODBC 170 工具目录下的 `SQLCMD.EXE`。
|
||
4. 读取 `db_backups/add_design_report_task_menu_account1_20260709.sql`,确认历史脚本中四个页面的菜单定义:
|
||
- `DesignReportTask/Task/index`:设计任务
|
||
- `DesignReportTask/Report/index`:设计报工
|
||
- `DesignReportTask/Check/index`:设计工时校验
|
||
- `DesignReportTask/HoursReport/index`:设计工时报表
|
||
5. 第一次直接读取脚本和日志时发现 PowerShell 默认编码显示中文乱码,随后改用 `Get-Content -Encoding UTF8` 重新读取,确认脚本内容和日志中文正常。
|
||
6. 使用 `sqlcmd -f 65001` 连接目标库,查询账号代码 `1` 下 `DesignReportTask/Check/index`、`DesignReportTask/HoursReport/index`、`设计工时校验`、`设计工时报表`,执行前未查询到对应记录。
|
||
7. 同步查询账号代码 `1` 的一级父菜单,确认“生产管理”父菜单存在且启用,`id=3`。
|
||
8. 查询 `[dbo].[登录基础数据_二级菜单]` 表结构,确认:
|
||
- `IDD` 为 identity 字段。
|
||
- `id` 不是 identity,需要手工维护。
|
||
- 菜单字段包含 `pid`、`path`、`componet`、`name`、`title`、`icon`、`账号代码`、`模块代码`、`是否启用`、`操作时间` 等。
|
||
9. 查询当前最大 `id` 为 `249`。
|
||
10. 查询账号代码 `1` 下已有 `DesignReportTask` 菜单,确认已有:
|
||
- `id=248`,`设计任务`,`DesignReportTask/Task/index`,已启用。
|
||
- `id=249`,`设计报工`,`DesignReportTask/Report/index`,已启用。
|
||
11. 在事务中补录并启用两条缺失菜单:
|
||
- `id=250`,`pid=3`,`path=DesignReportTask/Check/index`,`componet=/ProductionManagement/DesignReportTask/Check/index`,`name=DesignReportCheck`,`title=设计工时校验`,`icon=PayStateSearch`,`账号代码=1`,`模块代码=250`,`是否启用=1`。
|
||
- `id=251`,`pid=3`,`path=DesignReportTask/HoursReport/index`,`componet=/ProductionManagement/DesignReportTask/HoursReport/index`,`name=DesignReportHoursReport`,`title=设计工时报表`,`icon=DimensionsSummaryReport`,`账号代码=1`,`模块代码=251`,`是否启用=1`。
|
||
12. 事务提交后 SQL 返回汇总:插入 `2` 条,更新启用 `2` 条,父菜单 `parent_id=3`。
|
||
13. 再次查询账号代码 `1` 下所有 `DesignReportTask` 菜单,确认共有四条并全部启用:
|
||
- `248`:设计任务
|
||
- `249`:设计报工
|
||
- `250`:设计工时校验
|
||
- `251`:设计工时报表
|
||
14. 本次未修改前端代码和业务表结构,只修改了目标数据库中的二级菜单权限记录,并追加本日志。
|
||
|
||
### 结论
|
||
- 账号代码 `1` 已补齐 `DesignReportTask` 下 `Check` 和 `HoursReport` 两个页面的二级菜单权限。
|
||
- 两条菜单均挂在账号代码 `1` 的“生产管理”父菜单下,父菜单 `id=3`。
|
||
- 当前账号代码 `1` 下 `DesignReportTask` 四个菜单 `Task`、`Report`、`Check`、`HoursReport` 均存在且 `是否启用=1`。
|
||
|
||
### 验证结果
|
||
- `设计工时校验`:`id=250`,`pid=3`,`是否启用=1`。
|
||
- `设计工时报表`:`id=251`,`pid=3`,`是否启用=1`。
|
||
- 最终复查查询返回 `DesignReportTask` 四条菜单,编号为 `248` 至 `251`。
|
||
|
||
## 2026-07-10 上传所有修改到远程
|
||
|
||
### 用户提问
|
||
- 用户要求:上传所有修改到远程。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区状态,确认当前存在已修改、已删除和未跟踪文件。
|
||
2. 确认当前分支为 `snapshot/local-save-20260625-154806`。
|
||
3. 确认远程仓库为 `origin`,地址为 `http://154.8.160.151:3000/meswork/MES_Manage_View_V20.git`。
|
||
4. 查询最近一次提交,当前 HEAD 为 `bd9ca09 feat: 增加设备数据导出`。
|
||
5. 使用 `git status -sb` 确认当前分支跟踪 `origin/snapshot/local-save-20260625-154806`。
|
||
6. 使用 `git branch -vv` 确认本地分支已绑定同名远程分支。
|
||
7. 使用 `git diff --stat` 汇总已跟踪文件改动,确认包含设计报工模块前端、数据库脚本、文档、日志和设备资料目录删除等改动。
|
||
8. 使用 `git ls-files --others --exclude-standard` 汇总未跟踪文件,确认包含 `AGENTS.md`、设计报工相关增量 SQL 脚本和数据备份 JSON。
|
||
9. 执行 `git fetch origin` 刷新远程状态。
|
||
10. 第一次执行上游分支检查时,PowerShell 将 `@{u}` 解析为哈希字面量导致命令失败;随后改用引号包裹 `@{u}` 重新执行。
|
||
11. 重新确认上游分支为 `origin/snapshot/local-save-20260625-154806`。
|
||
12. 使用 `git rev-list --left-right --count HEAD...'@{u}'` 确认本地与远程提交差异为 `0 0`,提交前不存在分叉。
|
||
13. 使用 `git status --porcelain | Measure-Object -Line` 统计当前工作区有 `32` 条状态记录。
|
||
14. 按日志规则先追加本条中文执行记录,本条记录将随同本次提交一起推送到远程。
|
||
15. 后续将执行 `git add -A` 全量暂存当前可见改动,创建提交,并推送到当前跟踪远程分支。
|
||
|
||
### 结论
|
||
- 已确认当前分支和远程分支未分叉,可以直接提交并推送。
|
||
- 本次按用户“所有修改”的要求处理,不筛除当前工作区中的已修改、已删除和未跟踪文件。
|
||
- 本日志记录会随同本次提交一起上传到远程。
|
||
|
||
## 2026-07-10 上传所有修改到远程结果补充
|
||
|
||
### 执行过程
|
||
1. 执行 `git add -A`,将当前工作区全部已修改、已删除和未跟踪文件纳入暂存区。
|
||
2. `git add -A` 过程中出现若干 LF/CRLF 换行符提示,未阻止暂存。
|
||
3. 使用 `git status --short` 复核暂存区,确认新增、修改、删除均已暂存。
|
||
4. 使用 `git diff --cached --stat` 复核暂存统计,确认本次暂存共 `35` 个文件变更,包含 `3033` 行新增和 `780` 行删除。
|
||
5. 执行 `git commit -m "chore: 上传当前工作区修改"` 创建提交。
|
||
6. 提交创建成功,提交号为 `a6a92ff`,提交信息为 `chore: 上传当前工作区修改`。
|
||
7. 执行 `git push origin snapshot/local-save-20260625-154806` 推送到远程。
|
||
8. 推送成功,远程分支 `snapshot/local-save-20260625-154806` 从 `bd9ca09` 更新到 `a6a92ff`。
|
||
9. 推送后执行 `git status -sb`,确认本地分支仍跟踪 `origin/snapshot/local-save-20260625-154806`。
|
||
10. 执行 `git rev-list --left-right --count HEAD...'@{u}'`,确认本地与远程差异为 `0 0`。
|
||
11. 执行 `git log -1 --oneline`,确认当前最新提交为 `a6a92ff chore: 上传当前工作区修改`。
|
||
12. 为补充记录推送成功结果,追加本条日志;本条日志将作为单独的日志补充提交继续推送到同一远程分支。
|
||
|
||
### 结论
|
||
- 用户要求上传的当前工作区全部修改已提交并推送到远程分支。
|
||
- 首次推送成功的提交号为 `a6a92ff`。
|
||
- 推送后本地与远程分支一致,差异为 `0 0`。
|
||
|
||
## 2026-07-10 DesignReportTask 工时校验补结束后任务状态回写
|
||
|
||
### 用户提问
|
||
- 用户反馈:`ProductionManagement/DesignReportTask/Check/index` 中,已经点击开始但没有结束的任务,在校验页点击“校验”并输入结束时间后可以校验完成,但任务状态没有改变,仍然是“执行中”。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`,确认校验保存调用的是 `设计报工_工时校验_保存`。
|
||
2. 检查完整建库脚本 `db_backups/create_design_report_task_module_20260630.sql`,确认 `设计报工_工时校验_保存` 原逻辑只更新 `MES_设计报工_记录`:
|
||
- 写入 `开始时间`、`结束时间`、`工时秒数`。
|
||
- 将 `报工状态` 改为 `已结束`。
|
||
- 将 `已校验` 改为 `1`。
|
||
- 写入校验人、校验时间和备注。
|
||
3. 确认原过程没有同步更新 `MES_设计报工_任务.[单据状态]`,这是校验页手工补结束时间后任务仍为“执行中”的原因。
|
||
4. 检查 `Report/index.vue` 和需求文档,确认设计报工状态规则:
|
||
- “结束”后任务状态应为 `已结束`。
|
||
- “完成”是单独动作,完成后任务状态才变为 `已完成`。
|
||
5. 决定本次修复口径:
|
||
- 校验页手工补结束时间后,如果该 DID 已无未结束报工记录,则任务状态回写为 `已结束`。
|
||
- 如果该 DID 仍有其他未结束报工记录,则任务状态保持 `执行中`。
|
||
- 如果任务已经是 `已完成`,校验保存不回退任务状态。
|
||
6. 修改 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`:
|
||
- 在校验表格中增加“任务状态”列,直接显示 `单据状态`。
|
||
- 增加 `getStatusType` 方法,按 `已完成`、`执行中`、`已结束` 显示不同标签类型。
|
||
- 单条校验成功后改为 `await this.searchTable()`,确保校验后刷新完成再结束流程。
|
||
- 批量校验成功后也改为 `await this.searchTable()`。
|
||
7. 修改 `db_backups/create_design_report_task_module_20260630.sql` 中 `设计报工_工时校验_保存`:
|
||
- 保存校验记录并更新报工记录后,新增任务状态回写逻辑。
|
||
- 状态回写规则为:已完成保持已完成;仍有未结束记录则为执行中;否则为已结束。
|
||
- 返回结果中增加 `任务状态` 字段,便于调用方确认状态。
|
||
8. 修改 `db_backups/create_design_report_task_module_20260630.sql` 中 `设计报工_工时校验_批量保存`:
|
||
- 增加受影响 DID 集合。
|
||
- 批量校验后按相同规则回写任务状态。
|
||
- 将记录更新条数保存到变量,避免后续任务更新覆盖返回的 `count`。
|
||
9. 新增增量脚本 `db_backups/fix_design_report_check_status_20260710.sql`:
|
||
- 用于直接发布现有数据库。
|
||
- 重建 `设计报工_工时校验_保存` 和 `设计报工_工时校验_批量保存`。
|
||
10. 将增量脚本发布到目标库 `192.168.2.92 / YL_MESDB`,日志中不记录数据库明文密码。
|
||
11. 使用事务构造临时数据验证单条校验:
|
||
- 新建一个状态为 `执行中` 的临时任务和一条未结束报工记录。
|
||
- 调用 `设计报工_工时校验_保存` 传入开始时间和结束时间。
|
||
- 返回 `result=1`、`message=校验成功`、`任务状态=已结束`。
|
||
- 查询确认任务状态为 `已结束`,报工记录状态为 `已结束`,`已校验=1`。
|
||
- 回滚事务后确认测试任务残留数量为 `0`。
|
||
12. 使用事务构造多人未结束场景验证:
|
||
- 新建一个状态为 `执行中` 的临时任务和两条未结束报工记录。
|
||
- 只对其中一条记录调用 `设计报工_工时校验_保存` 补结束时间并校验。
|
||
- 返回 `result=1`、`任务状态=执行中`。
|
||
- 查询确认仍有 `1` 条未结束记录,任务状态保持 `执行中`。
|
||
- 回滚事务后确认测试任务残留数量为 `0`。
|
||
13. 批量校验测试第一次执行时报错:
|
||
- 错误为使用 XML 方法时 `QUOTED_IDENTIFIER` 设置不正确。
|
||
- 原因是新增增量脚本未显式设置 `SET QUOTED_IDENTIFIER ON`。
|
||
14. 检查完整建库脚本,确认完整脚本已有 `SET ANSI_NULLS ON` 和 `SET QUOTED_IDENTIFIER ON`。
|
||
15. 修改 `db_backups/fix_design_report_check_status_20260710.sql`,在过程创建前补充:
|
||
- `SET ANSI_NULLS ON`
|
||
- `SET QUOTED_IDENTIFIER ON`
|
||
16. 重新发布增量脚本到目标库。
|
||
17. 重新使用事务验证批量校验:
|
||
- 新建一个状态为 `执行中` 的临时任务和两条已有结束时间的报工记录。
|
||
- 调用 `设计报工_工时校验_批量保存`。
|
||
- 返回 `result=1`、`message=批量校验成功`、`count=2`。
|
||
- 查询确认两条记录均已校验,任务状态变为 `已结束`。
|
||
- 回滚事务后确认测试任务残留数量为 `0`。
|
||
18. 第一次执行 `npm run build` 时 124 秒超时,没有得到构建结论。
|
||
19. 使用更长超时时间重新执行 `npm run build`,构建通过。
|
||
20. 构建输出仅有项目既有的大资源体积 warning,以及 Browserslist / baseline-browser-mapping 数据过期提示。
|
||
21. 检查 Git 状态,确认构建未额外修改 `dist`,当前变更只包含本次源码、数据库脚本和本日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `db_backups/fix_design_report_check_status_20260710.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计工时校验页手工补结束时间并保存校验后,任务状态会按报工记录自动回写。
|
||
- 单个任务所有报工记录都已有结束时间时,任务状态会从 `执行中` 改为 `已结束`。
|
||
- 同一任务仍有其他未结束报工记录时,任务状态保持 `执行中`。
|
||
- 已完成任务不会因为工时校验被回退状态。
|
||
- 校验页现在直接显示“任务状态”,便于校验后确认状态变化。
|
||
|
||
### 验证结果
|
||
- 单条补结束时间校验:通过,任务状态变为 `已结束`。
|
||
- 多人仍有未结束记录:通过,任务状态保持 `执行中`。
|
||
- 批量校验:通过,任务状态变为 `已结束`,返回 `count=2`。
|
||
- 所有数据库验证均在事务中回滚,测试数据无残留。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-10 DesignReportTask 新建设计任务取消物料编码必填
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ProductionManagement/DesignReportTask/Task/index`,新建设计任务时去掉“物料编码”必填规则。
|
||
|
||
### 执行过程
|
||
1. 检查当前 Git 工作区,确认已有上一轮未提交的 `DesignReportTask` 校验状态回写相关改动和日志改动。
|
||
2. 检查 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`。
|
||
3. 搜索 `物料编码`、`rules`、`新增`、`保存` 等关键字,定位到表单校验规则:
|
||
- 原规则中 `物料编码` 存在 `{ required: true, message: '请选择物料编码', trigger: 'change' }`。
|
||
- `任务描述` 仍为必填。
|
||
4. 检查 `db_backups/create_design_report_task_module_20260630.sql`,确认数据库表字段 `[物料编码]` 允许为空,新增过程 `设计报工_任务_新增` 也使用 `NULLIF(@物料编码, N'')`,后端没有强制物料编码必填。
|
||
5. 使用 `apply_patch` 修改 `Task/index.vue`:
|
||
- 删除 `rules` 中的 `物料编码` 必填校验。
|
||
- 保留 `任务描述` 必填校验。
|
||
6. 复核 `Task/index.vue` 中 `rules` 片段,确认当前只剩:
|
||
- `任务描述: [{ required: true, message: '请输入任务描述', trigger: 'blur' }]`
|
||
7. 注意到 `Task/index.vue` 中还有本轮之前已经存在的未提交差异,例如“研发目的”布局和人员显示格式调整;本次未回退这些既有改动。
|
||
8. 执行 `npm run build` 验证前端构建。
|
||
9. 构建通过,仅有项目既有的大资源体积 warning,以及 Browserslist / baseline-browser-mapping 数据过期提示。
|
||
10. 检查 Git 状态,确认构建未额外修改 `dist` 输出文件。
|
||
11. 追加本条中文执行日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 新建设计任务时,“物料编码”不再必填。
|
||
- 保存时仍会按原逻辑传递 `物料编码`,为空时后端按空值处理。
|
||
- “任务描述”必填规则保持不变。
|
||
|
||
### 验证结果
|
||
- `Task/index.vue` 表单规则已不包含 `物料编码` 必填校验。
|
||
- `npm run build` 构建通过,仅有项目既有 warning。
|
||
|
||
## 2026-07-10 DesignReportTask 移到研发管理主菜单
|
||
|
||
### 用户提问
|
||
- 用户要求增加主菜单“研发管理”,并将 `DesignReportTask` 下四个页面都放到“研发管理”下面。
|
||
- 用户说明:“研发管理”和“生产管理”平级,属于主菜单。
|
||
|
||
### 执行过程
|
||
1. 检查当前 Git 工作区,确认已有前几轮未提交改动:
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `db_backups/fix_design_report_check_status_20260710.sql`
|
||
2. 查询目标库 `192.168.2.92 / YL_MESDB` 的 `[dbo].[登录基础数据_二级菜单]`,日志中不记录数据库明文密码。
|
||
3. 查询 `DesignReportTask` 当前菜单分布:
|
||
- 账号代码 `1` 下存在四个页面,均挂在 `pid=3` 的“生产管理”下。
|
||
- 账号代码 `2010` 下只存在 `Task` 和 `Report` 两个页面,均挂在 `pid=3`。
|
||
4. 查询主菜单,确认当前没有“研发管理”主菜单。
|
||
5. 查询账号代码 `1` 的主菜单,确认:
|
||
- `id=3` 为“生产管理”。
|
||
- 当前主菜单最大 id 为 `8`。
|
||
- 账号代码 `1` 下 `id=9` 未被占用。
|
||
6. 考虑到用户本轮未指定其他账号,且账号 `2010` 下并不具备四个 `DesignReportTask` 页面,本次按前序操作口径处理账号代码 `1`,避免无意给其他账号新增页面权限。
|
||
7. 检查前端动态路由逻辑:
|
||
- `src/router/getTreeData.js` 按 `pid` 构造菜单树。
|
||
- 主菜单使用 `path` 和 `/layout/Layout` 作为布局路由。
|
||
- 子菜单使用原有 `componet=/ProductionManagement/DesignReportTask/...` 加载真实页面组件。
|
||
8. 新增数据库增量脚本 `db_backups/move_design_report_task_to_rd_menu_account1_20260710.sql`:
|
||
- 若账号 `1` 下不存在“研发管理”,则插入主菜单:
|
||
- `id=9`
|
||
- `pid=0`
|
||
- `path=/ResearchManagement`
|
||
- `componet=/layout/Layout`
|
||
- `name=ResearchManagement`
|
||
- `title=研发管理`
|
||
- `icon=CreateProject`
|
||
- `账号代码=1`
|
||
- `模块代码=9`
|
||
- `是否启用=1`
|
||
- 若“研发管理”已存在,则更新为上述主菜单配置并启用。
|
||
- 定义 `DesignReportTask` 四个子菜单:
|
||
- `DesignReportTask/Task/index`:设计任务
|
||
- `DesignReportTask/Report/index`:设计报工
|
||
- `DesignReportTask/Check/index`:设计工时校验
|
||
- `DesignReportTask/HoursReport/index`:设计工时报表
|
||
- 如果四个子菜单缺失则补录;如果已存在则移动到“研发管理”下并启用。
|
||
- 子菜单 `componet` 保持 `/ProductionManagement/DesignReportTask/...` 不变,避免影响页面组件加载路径。
|
||
9. 执行 `db_backups/move_design_report_task_to_rd_menu_account1_20260710.sql` 发布到目标库。
|
||
10. 发布结果返回:
|
||
- `id=9`,`pid=0`,`title=研发管理`。
|
||
- `id=248`,`pid=9`,`title=设计任务`。
|
||
- `id=249`,`pid=9`,`title=设计报工`。
|
||
- `id=250`,`pid=9`,`title=设计工时校验`。
|
||
- `id=251`,`pid=9`,`title=设计工时报表`。
|
||
11. 再次查询账号代码 `1` 的主菜单,确认“研发管理”已与“生产管理”同级,均为 `pid=0`。
|
||
12. 再次查询账号代码 `1` 的 `DesignReportTask` 四个页面,确认四条均为 `pid=9`。
|
||
13. 查询账号代码 `1` 下 `pid=3` 的 `DesignReportTask` 数量,结果为 `0`,确认生产管理下已无设计报工页面残留。
|
||
14. 本次不修改前端页面代码;动态菜单通过数据库菜单表生效。
|
||
|
||
### 修改文件
|
||
- `db_backups/move_design_report_task_to_rd_menu_account1_20260710.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 账号代码 `1` 已新增“研发管理”主菜单。
|
||
- “研发管理”与“生产管理”平级,均为主菜单,`研发管理.id=9`,`pid=0`。
|
||
- 账号代码 `1` 的 `DesignReportTask` 四个页面已全部移动到“研发管理”下。
|
||
- 生产管理下不再包含账号代码 `1` 的 `DesignReportTask` 页面。
|
||
|
||
### 验证结果
|
||
- `研发管理`:`id=9`,`pid=0`,`path=/ResearchManagement`,`componet=/layout/Layout`,`是否启用=1`。
|
||
- `设计任务`:`id=248`,`pid=9`,`是否启用=1`。
|
||
- `设计报工`:`id=249`,`pid=9`,`是否启用=1`。
|
||
- `设计工时校验`:`id=250`,`pid=9`,`是否启用=1`。
|
||
- `设计工时报表`:`id=251`,`pid=9`,`是否启用=1`。
|
||
- 账号代码 `1` 下生产管理 `pid=3` 的 `DesignReportTask` 页面数量为 `0`。
|
||
|
||
## 2026-07-10 设计报工结束弹框增加进度说明
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Report/index`。
|
||
- 点击“结束”时先弹框,弹框显示:
|
||
- id 号
|
||
- 物料名称
|
||
- 物料编码
|
||
- 任务描述
|
||
- 新增字段“进度说明”
|
||
- 点击弹框里的“确认”后,才执行结束报工。
|
||
|
||
### 执行过程
|
||
1. 根据当前菜单配置确认:虽然菜单已经挂到“研发管理”,真实前端组件仍使用原路径 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`,因此本次修改该组件。
|
||
2. 检查 `Report/index.vue` 现有逻辑:
|
||
- “结束”按钮原来直接调用 `endTask(row)`。
|
||
- `endTask(row)` 会先查询最新任务状态和当前操作人未结束报工记录。
|
||
- 校验通过后直接调用存储过程 `设计报工_任务_结束`。
|
||
3. 查询目标库 `192.168.2.92 / YL_MESDB` 的表结构和存储过程定义,日志中不记录数据库明文密码。
|
||
4. 确认 `[dbo].[MES_设计报工_记录]` 原来没有 `[进度说明]` 字段,存储过程 `[dbo].[设计报工_任务_结束]` 原来没有 `@进度说明` 参数。
|
||
5. 采用持久化方案:结束报工弹框录入的“进度说明”写入报工记录表,并在查询和工时报表中返回该字段。
|
||
6. 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:
|
||
- 新增“结束报工”弹框。
|
||
- 弹框内展示 `DID`、`物料编码`、`物料名称`、`任务描述`。
|
||
- 新增可编辑字段 `进度说明`,最大长度 500。
|
||
- 点击列表“结束”时只打开弹框,不立即结束。
|
||
- 点击弹框“确认”后才调用 `设计报工_任务_结束`。
|
||
- 调用结束存储过程时传入 `进度说明`。
|
||
- 调整 `runAction()`,使其成功返回 `true`、失败返回 `false`,便于确认后关闭弹框。
|
||
7. 修改 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`:
|
||
- 在报工记录列表增加 `进度说明` 列,便于校验页面查看结束说明。
|
||
8. 修改 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`:
|
||
- 在工时报表中增加 `进度说明` 列。
|
||
9. 修改初始化脚本 `db_backups/create_design_report_task_module_20260630.sql`:
|
||
- `MES_设计报工_记录` 增加 `[进度说明] nvarchar(500) NULL`。
|
||
- 增加字段补齐脚本,字段不存在时自动添加。
|
||
- 重建 `设计报工_任务_结束`,增加 `@进度说明` 参数并写入记录表。
|
||
- 重建 `设计报工_记录_查询`,返回 `进度说明`。
|
||
- 重建 `设计报工_工时报表_作业者工时_查询`,返回 `进度说明`。
|
||
10. 新增数据库增量脚本 `db_backups/add_design_report_progress_note_20260710.sql`:
|
||
- 补齐 `[进度说明]` 字段。
|
||
- 重建 `设计报工_任务_结束`。
|
||
- 重建 `设计报工_记录_查询`。
|
||
- 重建 `设计报工_工时报表_作业者工时_查询`。
|
||
11. 执行增量脚本发布到目标库 `192.168.2.92 / YL_MESDB`,执行成功。
|
||
12. 使用数据库事务做验证,验证后回滚测试数据:
|
||
- 临时插入一条设计任务。
|
||
- 临时插入一条当前用户未结束报工记录。
|
||
- 执行 `设计报工_任务_结束` 并传入 `进度说明`。
|
||
- 返回 `1, 结束成功`。
|
||
- 查询确认任务状态变为 `已结束`。
|
||
- 查询确认报工记录状态变为 `已结束`,结束时间已写入,`进度说明` 已保存。
|
||
- 查询确认 `设计报工_记录_查询` 可以返回 `进度说明`。
|
||
- 查询确认 `设计报工_工时报表_作业者工时_查询` 可以返回 `进度说明`。
|
||
- 回滚事务后确认测试任务无残留。
|
||
13. 执行 `npm run build`,构建通过。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `db_backups/add_design_report_progress_note_20260710.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计报工点击“结束”后会先弹出确认窗口。
|
||
- 弹框显示 id 号、物料编码、物料名称、任务描述,并支持填写“进度说明”。
|
||
- 只有点击弹框“确认”后才会真正执行结束报工。
|
||
- “进度说明”已落库到报工记录,并在校验页面和工时报表中展示。
|
||
|
||
### 验证结果
|
||
- 数据库增量脚本已发布到 `192.168.2.92 / YL_MESDB`。
|
||
- 数据库事务验证通过,测试数据已回滚。
|
||
- `npm run build` 构建通过,仅有项目既有体积和 Browserslist 数据过期 warning。
|
||
|
||
## 2026-07-10 上传设计报工相关修改到远程
|
||
|
||
### 用户提问
|
||
- 用户要求“上传所有修改到远程”。
|
||
|
||
### 执行过程
|
||
1. 在完成设计报工相关前端修改、数据库脚本发布、数据库事务验证和前端构建验证后,检查 Git 工作区。
|
||
2. 确认本地分支为 `snapshot/local-save-20260625-154806`,跟踪远端分支 `origin/snapshot/local-save-20260625-154806`。
|
||
3. 执行 `git fetch origin` 刷新远端状态。
|
||
4. 检查本地与远端提交数量差异,结果为 `0 0`,确认推送前本地和远端没有分叉。
|
||
5. 使用内容搜索检查待提交文件中未包含数据库明文密码。
|
||
6. 暂存本批设计报工相关改动文件:
|
||
- `db_backups/add_design_report_progress_note_20260710.sql`
|
||
- `db_backups/create_design_report_task_module_20260630.sql`
|
||
- `db_backups/fix_design_report_check_status_20260710.sql`
|
||
- `db_backups/move_design_report_task_to_rd_menu_account1_20260710.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
7. 执行 `git diff --cached --check`,未发现空白错误。
|
||
8. 创建提交:
|
||
- 提交号:`e89cef4`
|
||
- 提交信息:`feat: 完善设计报工研发管理流程`
|
||
9. 执行 `git push`,将提交推送到远端 `origin/snapshot/local-save-20260625-154806`。
|
||
10. 为满足项目日志要求,追加本条中文执行记录,并继续将该日志补充同步到远端。
|
||
|
||
### 结论
|
||
- 设计报工相关功能和数据库脚本改动已提交并推送到远端。
|
||
- 功能提交号为 `e89cef4`。
|
||
- 本条日志补充将继续提交并推送到同一远端分支。
|
||
|
||
## 2026-07-11 设计工时报表增加数据导出功能
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/HoursReport/index` 页面,增加数据导出功能。
|
||
|
||
### 执行过程
|
||
1. 读取仓库根目录 `AGENTS.md`,确认每次执行结束后必须将提问、结论和完整执行过程以中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 搜索菜单、工作文档和前端源码,确认菜单虽然位于 `ResearchManagement`,但真实组件路径仍为 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`。
|
||
3. 检查目标页面现有实现,确认:
|
||
- 页面通过 `设计报工_工时报表_作业者工时_查询` 一次查询全部结果,没有分页。
|
||
- 查询结果在前端组装为“操作人、日期、任务”三级树形结构。
|
||
- 页面已有开始日期、结束日期、操作人、项目号、物料编码、类别和任务 ID 筛选条件。
|
||
4. 搜索项目内已有 Excel 导出实现,确认项目已安装并普遍使用 `xlsx`,导出按钮采用 Element UI 的 `el-icon-download` 和成功、失败、无数据消息提示。
|
||
5. 确定采用前端导出当前查询结果的方案,不新增后端接口,也不重复请求数据库;导出顺序保持页面树形显示顺序。
|
||
6. 修改 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`:
|
||
- 在查询按钮旁增加“导出”按钮。
|
||
- 查询加载中或当前无数据时禁用导出按钮。
|
||
- 增加独立的 `exporting` 状态,导出过程中显示加载状态。
|
||
- 引入 `xlsx`。
|
||
- 新增树形数据递归扁平化方法,按操作人、日期、任务的顺序生成 Excel 数据。
|
||
- 导出操作人汇总、日期汇总和任务明细,并增加“层级”列便于识别数据类型。
|
||
- 导出页面现有字段:操作人/日期/任务、工作日期、RID、DID、项目号、物料编码、物料名称、图号、类别、报工次数、工时、开始时间、结束时间、校验状态、进度说明和备注。
|
||
- 为各列设置适合中文内容的列宽。
|
||
- 导出文件名使用 `设计工时报表_yyyyMMdd_HHmmss.xlsx` 格式。
|
||
- 增加无数据、导出成功和导出失败提示及异常日志。
|
||
7. 执行 `npx eslint src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`,单文件 ESLint 检查通过;仅出现项目依赖的 Browserslist 和 Baseline 数据过期提示。
|
||
8. 首次执行生产构建时调用超时并被终止,没有形成有效验证结果。
|
||
9. 使用充足超时时间重新执行 `npm run build`,Webpack 生产构建成功;仅有项目原有的大资源体积警告和浏览器兼容数据库过期提示。
|
||
10. 检查 Git 工作区和差异:构建未留下 `dist` 版本控制变更,`git diff --check` 未发现空白错误。
|
||
11. 启动本地开发服务器进行预览验证。首次开发编译耗时较长,在 HTTP 轮询截止后随即完成,日志显示 `webpack compiled successfully`。
|
||
12. 确认开发服务器使用 HTTPS,使用忽略本地证书校验的请求访问 `https://localhost:1997/`,返回 HTTP `200`。随后将开发服务器重启为日志输出到系统临时目录,清理工作区临时日志,并保持预览服务运行。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计工时报表页面已增加 Excel 数据导出功能。
|
||
- 导出内容使用当前筛选后的完整树形报表数据,并保留操作人汇总、日期汇总和任务明细层级。
|
||
- 不需要新增或修改后端接口。
|
||
|
||
### 验证结果
|
||
- 单文件 ESLint 检查通过。
|
||
- `npm run build` 生产构建通过。
|
||
- `git diff --check` 通过。
|
||
- 本地开发服务器编译成功,`https://localhost:1997/` 返回 HTTP `200`。
|
||
|
||
## 2026-07-11 产品合格率工位菜单迁移到质量管理
|
||
|
||
### 用户提问
|
||
- 用户要求将 `ProductionManagement/ProductPassRateWorkstation/index` 页面放到“质量管理”菜单下,并提供了目标数据库 `192.168.2.92` 的授权凭据。
|
||
- 按安全要求,本日志不记录数据库明文密码。
|
||
|
||
### 执行过程
|
||
1. 搜索前端页面、菜单脚本和项目工作文档,确认:
|
||
- 页面组件为 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`。
|
||
- 菜单路由为 `ProductPassRateWorkstation/index`。
|
||
- 组件配置为 `/ProductionManagement/ProductPassRateWorkstation/index`。
|
||
- 原菜单脚本 `db_backups/add_product_pass_rate_workstation_menu_20260630.sql` 按生产管理中的“生产计划跟踪”菜单复制权限和父级。
|
||
2. 检查本机数据库工具,确认可使用 `sqlcmd` 连接 SQL Server。
|
||
3. 使用用户提供的凭据只读查询 `192.168.2.92 / YL_MESDB`,查询结果显示:
|
||
- 产品合格率工位菜单共有 11 条,分别属于账号代码 `1、1004、1006、1007、2008、2010、2014、2015、2018、2026、2027`。
|
||
- 11 条目标菜单原来均位于生产管理下,`pid=3`。
|
||
- 账号 `1、1004、1007、2010、2026、2027` 已有质量管理根菜单。
|
||
- 账号 `1006、2008、2014、2015、2018` 缺少质量管理根菜单。
|
||
4. 查询菜单表结构,确认:
|
||
- 菜单表为 `dbo.登录基础数据_二级菜单`。
|
||
- `IDD` 是标识列和主键,业务菜单 `id` 可在不同账号间复用。
|
||
- 现有质量管理根菜单统一使用 `id=4、pid=0、path=/QualityManagement、componet=/layout/Layout`。
|
||
5. 查询账号代码 `1` 的质量管理子菜单,确认菜单归属由 `pid=4` 决定,组件源码不必搬到 `QualityManagement` 目录。因此保留原组件路径,避免修改动态路由和源码目录。
|
||
6. 新增幂等增量脚本 `db_backups/move_product_pass_rate_workstation_to_quality_menu_20260711.sql`:
|
||
- 动态收集所有已有产品合格率工位菜单的账号。
|
||
- 对缺少质量管理根菜单的目标账号补齐标准质量管理根菜单。
|
||
- 在菜单 ID 4 被其他菜单占用时主动终止事务,避免错误覆盖。
|
||
- 将全部产品合格率工位菜单的 `pid` 更新为 `4`。
|
||
- 保留路由和组件配置,并统一启用状态、模块代码和操作时间。
|
||
- 使用事务和 `XACT_ABORT` 保证迁移原子性。
|
||
7. 使用 `sqlcmd` 将增量脚本发布到 `192.168.2.92 / YL_MESDB`,执行成功:
|
||
- 11 条目标菜单全部更新为 `pid=4`。
|
||
- 5 个缺失质量管理根菜单的账号已补齐父菜单。
|
||
8. 检查旧初始化脚本,发现已有记录重复执行时不会修改 `pid`,但以后为新账号创建菜单时仍可能放回生产管理。
|
||
9. 修改 `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`:
|
||
- 父菜单解析由生产管理改为质量管理。
|
||
- 仅在账号存在质量管理根菜单时创建目标菜单。
|
||
- 更新已有目标菜单时同步将 `pid` 调整为对应质量管理根菜单 ID。
|
||
10. 在目标数据库重复执行修改后的旧初始化脚本,脚本执行成功,11 条目标菜单仍全部保持 `pid=4`,验证不会回退到生产管理。
|
||
11. 首次执行最终一致性查询时,第一项统计已返回 11 条全部迁移成功,但后续语句因误将 CTE 跨多条 SQL 语句复用而报“对象名 Targets 无效”;该错误只发生在只读校验查询中,不影响此前已提交的迁移事务。
|
||
12. 将校验查询改为表变量后重新执行,完整验证通过:
|
||
- 目标菜单总数:11。
|
||
- 质量管理下数量:11。
|
||
- 生产管理残留数量:0。
|
||
- 启用数量:11。
|
||
- 缺失质量管理父菜单数量:0。
|
||
- 单账号重复目标菜单数量:0。
|
||
13. 执行 `git diff --check` 检查脚本差异,未发现空白错误。
|
||
|
||
### 修改文件
|
||
- `db_backups/move_product_pass_rate_workstation_to_quality_menu_20260711.sql`
|
||
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 产品合格率工位页面已经从生产管理菜单迁移到质量管理菜单。
|
||
- 页面组件仍保留在 `ProductionManagement/ProductPassRateWorkstation/index`,只调整数据库菜单层级。
|
||
- 当前已有该页面权限的 11 个账号均可通过质量管理菜单访问,原来缺少质量管理根菜单的账号已补齐父菜单。
|
||
- 旧初始化脚本已同步修正,后续重复部署不会将该页面重新放回生产管理。
|
||
|
||
### 验证结果
|
||
- 数据库增量脚本发布成功。
|
||
- 修改后的旧初始化脚本重复执行成功。
|
||
- 11 条目标菜单全部为 `pid=4`,生产管理残留为 0。
|
||
- 缺失父菜单和重复菜单均为 0。
|
||
- `git diff --check` 通过。
|
||
|
||
## 2026-07-11 上传全部修改到远程
|
||
|
||
### 用户提问
|
||
- 用户要求把当前所有修改上传到远程仓库。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区,确认待上传修改包括:
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`:设计工时报表 Excel 导出功能。
|
||
- `db_backups/move_product_pass_rate_workstation_to_quality_menu_20260711.sql`:产品合格率工位菜单迁移增量脚本。
|
||
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`:旧菜单初始化脚本改为使用质量管理父菜单。
|
||
- `gptlog-process/gpdlog.md`:对应任务的中文执行日志。
|
||
2. 确认当前分支为 `snapshot/local-save-20260625-154806`,跟踪远端分支 `origin/snapshot/local-save-20260625-154806`。
|
||
3. 检查待提交内容,确认没有构建产物或其他临时文件。
|
||
4. 执行 `git diff --check`,未发现空白错误。
|
||
5. 执行 `git fetch origin` 刷新远端状态。
|
||
6. 首次统计本地与远端分叉时,PowerShell 将未加引号的 `@{u}` 解析为自身语法,导致 Git 收到错误参数;给修订参数加引号后重新执行成功。
|
||
7. 正确的分叉统计结果为 `0 0`,本地提交和远端提交在上传前完全同步,没有分叉。
|
||
8. 对已跟踪差异和未跟踪文件执行数据库密码及常见凭据特征扫描,匹配数量均为 0,确认用户提供的数据库明文密码未写入待上传文件。
|
||
9. 暂存三个功能文件并执行 `git diff --cached --check`,检查通过。
|
||
10. 创建功能提交:
|
||
- 提交号:`0784746`
|
||
- 提交信息:`feat: 增加工时报表导出并调整质量菜单`
|
||
- 变更统计:3 个文件,新增 244 行,删除 7 行。
|
||
11. 将本次上传过程追加到 `gptlog-process/gpdlog.md`,创建独立日志提交。
|
||
12. 执行 `git push`,将功能提交和日志提交一起推送到 `origin/snapshot/local-save-20260625-154806`。
|
||
13. 推送后重新检查本地与远端提交差异及工作区状态,确认远端已包含全部修改。
|
||
|
||
### 结论
|
||
- 当前工作区内的设计工时报表导出、产品合格率工位菜单迁移、旧菜单脚本修正和对应中文日志已全部提交并上传到远程。
|
||
- 功能提交号为 `0784746`。
|
||
|
||
### 验证结果
|
||
- `git diff --check` 通过。
|
||
- `git diff --cached --check` 通过。
|
||
- 凭据特征扫描结果为 0。
|
||
- 上传前本地与远端分叉为 `0 0`。
|
||
- 推送后本地与远端同步,工作区无未提交修改。
|
||
|
||
## 2026-07-15 设计报工限制、重复报工及多类说明功能
|
||
|
||
### 用户提问
|
||
- 修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`:一个人不能同时开始多个任务,点击开始时提示哪个任务未关闭。
|
||
- 任务点击完成后仍允许再次开始和结束,第二次开始、结束后也可以再次完成。
|
||
- 增加“异常说明”和“奇思妙想”功能,允许随时多次录入文字;列表按“时间换行内容”的格式显示,多次录入显示多条。
|
||
- “进度说明”采用与异常说明相同的列表显示格式。
|
||
- 将“未结束人员”改名为“设计正在对应”。
|
||
- 在设计任务页面同时显示异常说明、奇思妙想、进度说明和设计正在对应字段。
|
||
|
||
### 执行过程
|
||
1. 读取仓库根目录 `AGENTS.md`,确认本次执行结束后必须将提问、结论和完整执行过程以中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 检查目标报工页、设计任务页、校验页、工时报表页、相关 SQL 增量脚本、项目命令和 Git 工作区状态。
|
||
3. 确认报工页原有逻辑只校验当前行的 `当前用户未结束报工数`,无法可靠阻止同一人员跨任务同时开始;前后端还把“已完成”作为禁止重新开始的终态。
|
||
4. 确认原有结束弹窗已经可以录入进度说明,数据库报工记录也已有对应字段,但任务查询和两个任务列表尚未聚合显示进度历史。
|
||
5. 确认异常说明和奇思妙想没有独立数据表及保存过程,不能仅靠前端完成持久化和多条历史展示,因此确定增加幂等数据库增量脚本。
|
||
6. 检查工作区已有改动,发现设计任务页存在用户未提交的表单布局调整,质量检验页面也存在无关修改;本次保留所有已有改动,只在设计任务页追加所需列表字段,并对该页原有布局改动做必要的空格格式整理。
|
||
7. 修改报工页列表:
|
||
- 将“未结束人员”列标题改为“设计正在对应”,继续使用原有 `未结束报工人员` 返回字段。
|
||
- 新增进度说明、异常说明和奇思妙想三列。
|
||
- 三列使用保留换行的样式展示历史内容。
|
||
8. 修改报工页操作区:
|
||
- “开始”按钮不再因任务已完成而禁用。
|
||
- 新增“异常说明”和“奇思妙想”两个文字按钮。
|
||
- 新增通用说明录入弹窗,显示 DID 和任务描述,内容必填,最多 2000 字。
|
||
- 保存时调用新增存储过程,并携带当前操作人 ID 和姓名。
|
||
9. 增加开始前全任务实时查询:如果当前人员已有任何未结束记录,提示“任务 DID + 任务描述尚未关闭,请先结束该任务”;查询失败时阻止开始,避免绕过校验。
|
||
10. 保留结束按钮仅在当前任务存在本人未结束记录时启用;已完成任务重新开始后状态变为执行中,结束后变为已结束,因此可以再次点击完成。
|
||
11. 修改设计任务页列表,新增“设计正在对应”、进度说明、异常说明和奇思妙想四列,展示格式与报工页一致。
|
||
12. 新增 `db_backups/update_design_report_task_notes_and_restart_20260715.sql`:
|
||
- 幂等补齐报工记录的进度说明字段。
|
||
- 新建 `MES_设计报工_任务说明` 表,保存异常说明和奇思妙想的多条记录、操作人及录入时间。
|
||
- 新建 `设计报工_任务说明_新增` 保存过程,校验任务、说明类型和非空内容。
|
||
- 重建 `设计报工_任务_查询`,聚合进度说明、异常说明和奇思妙想,单条格式为“时间 + 换行 + 内容”,多条之间留空行。
|
||
- 重建设计报工开始过程,取消已完成任务禁止开始的限制。
|
||
- 开始过程使用按人员标识生成的 `sp_getapplock` 事务锁,防止两个页面并发点击时同时产生两条未结束记录。
|
||
- 开始过程跨全部任务检查当前人员的未结束记录,返回未关闭 DID 和任务描述。
|
||
- 重建设计报工结束过程,允许重新开始后的任务结束,并按现有方式保存本轮进度说明。
|
||
13. 首次执行两目标页面 ESLint 时,报工页无错误;设计任务页报告用户原有布局调整中的多余空格、空行和异步箭头函数格式问题。
|
||
14. 对设计任务页做最小格式整理后,再次执行两目标页面 ESLint,检查通过;仅输出项目依赖的 Browserslist 和 Baseline 数据过期提示。
|
||
15. 对三个目标文件执行 `git diff --check`,检查通过;全工作区检查仍能看到无关的 `OtherInbound.vue` 原有尾随空格,本次没有修改该文件。
|
||
16. 执行 `npm run build`,webpack 生产构建成功;仅有项目原有的大资源体积警告和浏览器兼容数据过期提示,构建没有留下受版本控制的 `dist` 改动。
|
||
17. 尝试使用当前 Windows 集成身份对目标数据库 `192.168.2.92 / YL_MESDB` 做只读连通性检查,服务器拒绝 Guest 身份登录;未猜测或查找数据库凭据,也未向目标数据库发布脚本。
|
||
18. 检查本地开发服务,确认进程来自当前仓库,访问 `https://localhost:1997/` 返回 HTTP 200。
|
||
19. 为验证 SQL,在独立 LocalDB 测试实例中创建最小基础表。前两次使用 PowerShell 标准输入传递中文 SQL 时发生代码页解析错误,均未进入增量脚本有效验证;每次都在 `finally` 中删除测试实例,随后核对并清理由第一次测试生成的 MDF/LDF 文件。
|
||
20. 改用 UTF-8 SQL 测试夹具和 `sqlcmd -i -f 65001` 重跑隔离测试,增量脚本编译及业务场景验证通过:
|
||
- 状态为已完成的任务可以重新开始。
|
||
- 同一人员未结束第一项任务时开始第二项任务,被正确拦截并返回第一项任务的 DID 和描述。
|
||
- 第一项任务可以正常结束并保存进度说明,状态回到已结束。
|
||
- 连续保存两条异常说明和一条奇思妙想均成功。
|
||
- 任务查询按要求返回进度说明、两条异常说明和奇思妙想的“时间换行内容”历史。
|
||
21. 验证结束后删除临时 SQL 测试夹具、LocalDB 实例及测试数据文件,确认不保留测试数据。
|
||
22. 最终检查目标文件状态和差异,确认未修改用户无关的质量检验页面,未提交或推送任何文件。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `db_backups/update_design_report_task_notes_and_restart_20260715.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 同一人员只能保留一个未结束的设计报工任务,前端会提示具体未关闭任务,数据库事务锁同时保证并发场景不会绕过限制。
|
||
- 已完成任务可以重新开始、结束,并在新一轮结束后再次完成。
|
||
- 异常说明和奇思妙想支持在任意任务状态下多次录入;进度说明、异常说明和奇思妙想均按“时间换行内容”显示多条历史。
|
||
- 报工页和设计任务页都已显示进度说明、异常说明、奇思妙想和“设计正在对应”。
|
||
- 前端代码和数据库增量脚本均已在本机验证;由于当前身份没有目标 SQL Server 登录权限,增量脚本尚未发布到目标数据库,目标环境启用新功能前必须执行该脚本。
|
||
|
||
### 验证结果
|
||
- 两目标页面 ESLint 检查通过。
|
||
- 三个目标文件 `git diff --check` 通过。
|
||
- `npm run build` 生产构建通过。
|
||
- 隔离 LocalDB 中增量脚本编译通过,重新开始、跨任务拦截、结束及多条说明聚合场景验证通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200,本地开发服务保持运行。
|
||
|
||
## 2026-07-15 发布设计报工增量脚本到目标数据库
|
||
|
||
### 用户提问
|
||
- 用户提供目标数据库地址 `192.168.2.92`、数据库管理员账号及密码,要求继续完成数据库发布。
|
||
- 按安全要求,本日志不记录数据库明文密码。
|
||
|
||
### 执行过程
|
||
1. 使用用户提供的 SQL Server 凭据连接 `192.168.2.92 / YL_MESDB`,先执行只读预检。
|
||
2. 预检确认目标数据库为 `YL_MESDB`,服务器为 `YLLT-MES`,数据库兼容级别为 150。
|
||
3. 确认 `MES_设计报工_任务`、`MES_设计报工_记录` 和记录表的 `进度说明` 字段已经存在;`MES_设计报工_任务说明` 表和 `设计报工_任务说明_新增` 过程尚不存在。
|
||
4. 确认设计报工查询、开始、结束、完成过程均存在,其中查询和开始过程仍为本次修改前的旧版本。
|
||
5. 使用 `sqlcmd` 的失败即退出模式和 UTF-8 输入模式执行 `db_backups/update_design_report_task_notes_and_restart_20260715.sql`,脚本发布成功。
|
||
6. 发布后检查数据库对象定义,确认:
|
||
- 任务说明表已创建。
|
||
- 任务说明保存过程已创建。
|
||
- 开始过程已包含 `sp_getapplock` 人员并发锁。
|
||
- 查询过程已包含异常说明、奇思妙想和进度说明聚合。
|
||
- 开始过程已移除“任务已完成,不能开始”的旧限制。
|
||
7. 在目标数据库外层事务中插入两条临时设计任务,执行完整业务验证:
|
||
- 状态为已完成的第一条任务开始成功。
|
||
- 同一测试人员在第一条任务未结束时开始第二条任务,被正确拦截,返回第一条任务 DID 和任务描述。
|
||
- 第一条任务结束成功并保存第一轮进度,随后完成成功。
|
||
- 第一条任务第二次开始、结束并保存第二轮进度,随后再次完成成功。
|
||
- 连续新增两条异常说明和一条奇思妙想,三次保存均成功。
|
||
- 任务查询返回两次报工记录、最终已完成状态、两轮进度说明、两条异常说明和一条奇思妙想;显示内容符合“时间换行内容”的多条格式。
|
||
8. 回滚外层测试事务,并查询确认名称以 `Codex发布验证_` 开头的测试任务数量为 0,没有向正式库遗留测试任务、报工记录或说明记录。
|
||
9. 检查本地工作区,数据库发布没有生成新的临时文件或构建产物;保留用户原有的无关工作区修改。
|
||
|
||
### 结论
|
||
- `update_design_report_task_notes_and_restart_20260715.sql` 已成功发布到 `192.168.2.92 / YL_MESDB`。
|
||
- 同一人员跨任务同时开始限制、未关闭任务提示、已完成任务重新开始和再次完成、进度说明历史、异常说明及奇思妙想多条录入功能均已在目标数据库验证通过。
|
||
- 验证数据已全部回滚,正式数据库无测试数据残留。
|
||
|
||
### 验证结果
|
||
- 数据库对象和过程定义检查通过。
|
||
- 两轮“开始、结束、完成”验证通过。
|
||
- 跨任务重复开始拦截验证通过。
|
||
- 多条进度、异常说明和奇思妙想聚合验证通过。
|
||
- 回滚后测试任务数量为 0。
|
||
|
||
## 2026-07-15 设计报工按钮、说明悬停及任务可见范围调整
|
||
|
||
### 用户提问
|
||
- 设计报工点击开始后,当前任务的开始按钮应变为灰色且不可点击。
|
||
- 进度说明、异常说明和奇思妙想在列表正常显示时应单行省略,避免撑高行高;鼠标悬停对应字段时显示完整内容。
|
||
- 设计任务新建弹窗需在指派对象前增加“对齐可见”字段,并使用与指派对象相同的人员多选方式。
|
||
- 设计报工页面根据登录账号限制任务范围,只显示本人创建、对齐可见包含本人以及指派对象包含本人的任务。
|
||
|
||
### 执行过程
|
||
1. 重新检查报工页和设计任务页现有模板、数据模型、人员查询、任务新增/编辑参数及目标数据库过程结构。
|
||
2. 检查登录流程和 Vuex 用户状态,确认登录态 `id` 来源于 `Personnel_Number`,与设计任务人员选择器使用的 `人员编号`一致,可以直接用于对齐可见和指派对象精确匹配。
|
||
3. 调整设计报工开始按钮:
|
||
- 恢复 `canStart` 行级判断。
|
||
- 当前行 `当前用户未结束报工数` 大于 0 时开始按钮禁用并显示为灰色。
|
||
- 其他任务的开始按钮仍可点击,继续保留提示具体未关闭任务的逻辑。
|
||
4. 调整报工页和设计任务页的三类说明展示:
|
||
- 进度说明、异常说明和奇思妙想正常状态使用单行、溢出隐藏和省略号,不再撑高表格行。
|
||
- 每个字段外层增加 Element UI Tooltip,非空内容悬停时显示完整历史。
|
||
- Tooltip 内容保留原有换行,设置最大宽度、最大高度、自动纵向滚动和长文本换行。
|
||
5. 在设计任务列表增加“对齐可见”列,便于维护人员直接确认任务可见范围。
|
||
6. 在设计任务新增/编辑弹窗的“指派对象”之前增加“对齐可见”多选人员字段:
|
||
- 使用独立的远程人员选项集合,避免与指派对象搜索互相覆盖。
|
||
- 保存人员编号列表到 `对齐可见ID`,保存人员姓名列表到 `对齐可见`。
|
||
- 编辑时还原已选人员,并补齐当前远程列表中不存在的已选项。
|
||
- 每次打开新建弹窗时刷新对齐可见人员列表。
|
||
7. 扩展数据库增量脚本:
|
||
- 幂等增加任务表 `对齐可见ID` 和 `对齐可见` 两个字段。
|
||
- 查询过程返回两个新字段。
|
||
- 重建任务新增和编辑过程,支持保存及修改对齐可见人员。
|
||
- 仅当查询传入当前登录人员时应用报工页可见范围;不传人员的设计任务维护页继续返回全部任务。
|
||
8. 第一版可见范围按用户最初要求实现为“本人创建或对齐可见包含本人”。用户随后补充“指派对象的任务也可见”,立即终止正在进行的旧版本构建,避免把不完整版本作为最终验证结果。
|
||
9. 将查询可见范围扩展为三种关系的并集:
|
||
- 当前人员姓名等于创建人。
|
||
- 当前人员编号或姓名存在于对齐可见列表。
|
||
- 当前人员编号或姓名存在于指派对象列表。
|
||
10. 使用隔离 LocalDB 对第一版字段和查询规则进行验证:
|
||
- 不传当前人员时维护页返回全部三条任务。
|
||
- 创建人只能看到本人创建任务。
|
||
- 同时具有创建和对齐关系的人员返回两条任务。
|
||
- 仅对齐可见人员返回对应任务。
|
||
- 无任何关系人员返回 0 条。
|
||
- 编辑对齐可见后,新人员立即能查询到任务,并返回对齐可见字段。
|
||
11. 用户补充指派对象规则后,再次使用隔离 LocalDB 验证:
|
||
- 指派对象列表包含当前人员时能返回对应任务。
|
||
- 无创建、对齐或指派关系的人员返回 0 条。
|
||
12. 两次 LocalDB 验证均使用独立临时实例;验证后删除 SQL 测试夹具、实例及 MDF/LDF 文件,没有遗留测试资源。
|
||
13. 执行两目标页面 ESLint,检查通过;仅输出项目依赖的 Browserslist 和 Baseline 数据过期提示。
|
||
14. 对目标前端文件和数据库脚本执行 `git diff --check`,检查通过。
|
||
15. 执行 `npm run build`;用户补充指派对象规则前的构建被主动终止,补齐最终规则后重新执行生产构建并成功通过,仅有项目原有的大资源体积及浏览器数据过期警告。
|
||
16. 使用用户此前提供的数据库凭据,将扩展后的幂等脚本重新发布到 `192.168.2.92 / YL_MESDB`,发布成功;日志不记录明文密码。
|
||
17. 在目标数据库检查确认:
|
||
- 两个对齐可见字段已经存在。
|
||
- 查询过程包含指派对象可见逻辑。
|
||
- 新增和编辑过程均包含对齐可见参数。
|
||
18. 在目标数据库外层事务中执行正式环境验证:
|
||
- 本人创建任务查询返回 1 条。
|
||
- 对齐可见任务查询返回 1 条。
|
||
- 指派对象任务查询返回 1 条。
|
||
- 无关系人员查询返回 0 条。
|
||
- 不传人员的设计任务维护查询仍返回指定任务。
|
||
19. 回滚目标数据库测试事务,确认 `Codex可见验证_` 测试任务残留数量为 0。
|
||
20. 最终再次执行 ESLint、生产构建、目标文件空白检查和本地开发服务访问检查,全部通过;`https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `db_backups/update_design_report_task_notes_and_restart_20260715.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 当前人员开始任务后,该任务行的开始按钮会立即在刷新后变灰并不可点击;其他任务仍可点击并提示未关闭任务。
|
||
- 三类说明列表保持单行省略,悬停可查看保留换行的完整内容,不再导致表格行高过高。
|
||
- 设计任务新增和编辑弹窗已支持“对齐可见”人员多选,并在列表显示选中人员。
|
||
- 设计报工页面只显示本人创建、对齐可见包含本人或指派对象包含本人的任务;设计任务维护页仍显示全部任务。
|
||
- 数据库字段和过程已发布到目标库,正式环境事务验证通过且无测试数据残留。
|
||
|
||
### 验证结果
|
||
- 两目标页面 ESLint 检查通过。
|
||
- 目标文件 `git diff --check` 通过。
|
||
- 最终 `npm run build` 生产构建通过。
|
||
- 隔离 LocalDB 的新增、编辑、创建人可见、对齐可见和指派可见场景通过。
|
||
- 目标数据库三类可见关系及维护页全量查询验证通过。
|
||
- 目标数据库回滚后测试任务数量为 0。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-15 上传当前全部修改到远程仓库
|
||
|
||
### 用户提问
|
||
- 用户要求将当前工作区的所有修改上传到远程仓库。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区、当前分支、跟踪分支和远程地址,确认当前分支为 `snapshot/local-save-20260625-154806`,跟踪 `origin/snapshot/local-save-20260625-154806`。
|
||
2. 确认待上传内容共 7 个文件:
|
||
- 设计报工前端两个页面。
|
||
- 设计报工数据库增量脚本。
|
||
- 及时齐套跟踪结果数据库脚本。
|
||
- 其他入库检验页面。
|
||
- 销售退货检验页面。
|
||
- 中文执行日志。
|
||
3. 检查差异统计:暂存后共新增 1200 行、删除 79 行;设计报工数据库脚本为新增文件,其余 6 个文件为修改文件。
|
||
4. 执行 `git diff --check`,首次发现 `OtherInbound.vue` 新增差异中存在一行尾随空白;使用最小编辑删除空白,不改变质量检验业务逻辑。
|
||
5. 再次执行全工作区和暂存区空白检查,均通过;仅输出 Git 对部分文件未来行尾转换的提示。
|
||
6. 对已跟踪差异和未跟踪数据库脚本执行数据库密码、`SQLCMDPASSWORD` 及常见密码参数特征扫描,结果均无命中;用户提供的数据库明文密码未写入任何待上传文件。
|
||
7. 执行 `git fetch origin` 刷新远程状态。
|
||
8. 比较本地与远程提交,分叉结果为 `0 0`;上传前本地 HEAD 和远程跟踪分支均为 `9e58193`,不存在远程新提交或本地未推送提交。
|
||
9. 对 4 个修改页面执行 ESLint:
|
||
- 两个设计报工页面检查通过,仅有项目依赖数据过期提示。
|
||
- 两个质量检验页面因文件原有双引号、分号、模板换行、缩进和未定义全局函数等旧代码风格,报告大量存量规则错误。
|
||
- 未使用自动修复重写近千行用户代码,避免产生与本次功能无关的大范围格式变更。
|
||
10. 采用此前已完成的最终生产构建作为质量检验页面的编译验证;该构建包含本次全部前端改动并成功通过,仅有项目原有的大资源体积和浏览器数据过期警告。
|
||
11. 确认设计报工数据库脚本已在隔离 LocalDB 和目标数据库验证通过,及时齐套脚本已在目标数据库针对销售订单 `261079`、生产订单 `7912` 验证通过。
|
||
12. 检查本地开发服务,`https://localhost:1997/` 返回 HTTP 200;生产构建没有留下受版本控制的 `dist` 改动。
|
||
13. 执行 `git add -A` 暂存当前全部修改,并复核暂存区确实包含全部 7 个文件。
|
||
14. 对暂存区再次执行 `git diff --cached --check` 和凭据特征扫描,检查通过。
|
||
15. 创建功能提交:
|
||
- 提交号:`38771ef`
|
||
- 提交信息:`feat: 完善设计报工、质检及齐套跟踪`
|
||
- 变更统计:7 个文件,新增 1200 行,删除 79 行。
|
||
16. 执行 `git push origin snapshot/local-save-20260625-154806`,功能提交成功推送到远程,远程分支从 `9e58193` 更新到 `38771ef`。
|
||
17. 功能提交推送成功后,按仓库 `AGENTS.md` 要求追加本条完整中文上传过程日志,并将通过独立日志提交继续同步到同一远程分支。
|
||
|
||
### 结论
|
||
- 用户要求的当前全部业务修改已经创建提交并成功上传到远程分支。
|
||
- 功能提交号为 `38771ef`。
|
||
- 数据库明文密码没有进入提交内容。
|
||
- 本条上传过程日志将通过后续独立提交同步到远程,确保工作区最终无未提交修改。
|
||
|
||
### 验证结果
|
||
- 上传前本地与远程分叉为 `0 0`。
|
||
- 全工作区和暂存区 `git diff --check` 通过。
|
||
- 暂存区凭据特征扫描无命中。
|
||
- 两个设计报工页面 ESLint 通过。
|
||
- 最终生产构建通过。
|
||
- 功能提交已成功推送至远程。
|
||
|
||
## 2026-07-16 发货状态列表增加订单及生产数量字段
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ProductionManagement/DeliveryNoticeList/index`,增加订单数量(取计划数量)、入库数量、完成数量和合格数量四个字段。
|
||
|
||
### 执行过程
|
||
1. 从当前工作目录及元利相关项目中搜索目标路径,定位实际文件为 `C:\WorkYuanLy\MES_Manage_View_V20\src\views\ProductionManagement\DeliveryNoticeList\index.vue`。
|
||
2. 检查目标页面现有实现,确认列表通过存储过程 `装配中心任务看板_发货状态查询` 获取数据并直接赋值给 `tableData`,现有“数量”列使用 `交货数量 || 计划数量`,页面已有统一的 `formatQuantity` 数量格式化方法。
|
||
3. 搜索项目内相同字段的使用方式,确认中文字段可以直接通过 `scope.row` 访问;检查项目依赖和构建命令,确认项目为 Vue 2、Element UI 和 Webpack 5。
|
||
4. 读取仓库根目录 `AGENTS.md`,确认每次执行后必须将提问、结论和完整执行过程以中文追加到 `gptlog-process/gpdlog.md`。
|
||
5. 修改目标列表:
|
||
- 将原“数量”列调整为“订单数量”,固定读取 `计划数量`。
|
||
- 新增“入库数量”列,读取 `入库数量`。
|
||
- 新增“完成数量”列,读取 `完成数量`。
|
||
- 新增“合格数量”列,读取 `合格数量`。
|
||
- 四列均复用 `formatQuantity`,统一处理空值、整数和小数显示。
|
||
6. 使用文本检索复核目标页面,确认四个列名和对应字段均已写入,原“交货数量或计划数量”的混合显示逻辑已移除。
|
||
7. 首次执行 `npm run build` 时,构建超过 180 秒工具超时;期间只输出 Baseline、Browserslist 数据过期提示,没有模板或代码错误,超时进程随后已终止。
|
||
8. 使用更长超时重新执行 `npm run build`,Webpack 在约 40 秒内成功完成生产构建。
|
||
9. 构建仅保留项目原有的大体积字体、图片、第三方库、入口文件体积警告,以及 Baseline、Browserslist 数据过期提示;没有新增编译错误。
|
||
10. 按仓库要求在本日志末尾追加本次完整中文执行记录,未修改或覆盖已有历史日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DeliveryNoticeList/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货状态列表现在包含订单数量、入库数量、完成数量和合格数量四个独立字段。
|
||
- 订单数量严格读取后端返回的 `计划数量`,不再与 `交货数量` 混用。
|
||
- 查询请求和筛选条件保持不变,四个字段直接使用现有存储过程返回值。
|
||
|
||
### 验证结果
|
||
- 目标文件字段检索检查通过。
|
||
- `npm run build` 生产构建通过。
|
||
- 仅存在项目原有的资源体积及依赖数据过期警告,无编译错误。
|
||
|
||
## 2026-07-15 设计工时报表增加任务工时页签
|
||
|
||
### 用户提问
|
||
- 用户指定修改 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`,说明当前页面为按日期和人员计算的工时报表。
|
||
- 要求在同一页面新增一个按 DID 计算的工时报表,顶部页签切换方式参考 `ProductionManagement/Timesheet/index`。
|
||
- 原报表命名为“作业者工时”,新增报表命名为“任务工时”。
|
||
|
||
### 执行过程
|
||
1. 检查用户指定的 `Report/index.vue`、设计报工模块全部页面、菜单脚本、项目文档及参考页面 `ProductionManagement/Timesheet/index.vue`。
|
||
2. 确认用户描述的按日期和人员计算报表实际位于 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`,菜单名为“设计工时报表”;指定的 `Report/index.vue` 实际是设计报工开始、结束、完成操作页。
|
||
3. 根据菜单路由和业务意图,选择修改正确的 `HoursReport/index.vue`,避免把报工操作页面误改成工时报表。
|
||
4. 阅读参考 Timesheet 页面“作业者工时”和“任务工时”页签、查询切换、树形数据组装及导出逻辑。
|
||
5. 检查现有设计作业者工时查询过程 `设计报工_工时报表_作业者工时_查询`,确认现有结构为操作人→工作日期→报工明细三级树。
|
||
6. 查询目标数据库现有设计报工记录和现有报表返回结果,确认筛选参数、字段类型、工时秒数、校验状态、进度说明及备注的数据口径。
|
||
7. 修改 `HoursReport/index.vue`:
|
||
- 增加 Element UI 顶部页签,名称为“作业者工时”和“任务工时”。
|
||
- 默认显示“作业者工时”,保留原有人员→日期→明细三级树和全部字段。
|
||
- 新增“任务工时”表格,使用 DID→操作人两级树。
|
||
- DID 根节点显示任务描述、项目号、物料、图号、类别、报工次数、总工时、最早开始、最晚结束和综合校验状态。
|
||
- 操作人子节点显示该人员在当前 DID 上的报工次数、工时、起止时间、校验状态、进度说明和备注。
|
||
- 两个页签共用开始日期、结束日期、操作人、项目号、物料编码、类别和 DID 筛选条件。
|
||
- 点击页签时查询对应报表过程。
|
||
- 底部总工时根据当前页签根节点动态计算。
|
||
- 导出按钮根据当前页签导出对应树形数据,工作表和文件名分别使用“作业者工时”或“任务工时”。
|
||
8. 新增数据库脚本 `db_backups/add_design_report_task_hours_report_20260715.sql`,创建过程 `设计报工_工时报表_任务工时_查询`。
|
||
9. 新过程沿用原作业者工时的全部筛选条件,只统计已正常结束的设计报工记录,并按 DID 汇总根节点、按 DID 和操作人汇总子节点。
|
||
10. 新过程对每个汇总层计算报工次数、工时小时、最早开始时间、最晚结束时间;校验状态区分“已校验”“未校验”“部分校验”;进度说明按结束时间和内容聚合,备注同步聚合。
|
||
11. 执行前端单文件 ESLint 和目标差异空白检查,均通过;仅输出项目依赖的 Browserslist 和 Baseline 数据过期提示。
|
||
12. 在独立 LocalDB 测试实例中创建最小任务和报工表,执行新过程脚本并插入两个人员共同报工同一 DID 的测试数据。
|
||
13. 隔离验证结果:DID 10 根节点汇总 2 次、1.50 小时、状态“部分校验”;张三子节点 1 次、1.00 小时、已校验;李四子节点 1 次、0.50 小时、未校验;任务及人员的进度说明和备注聚合正确。
|
||
14. 删除 LocalDB 测试夹具、测试实例及 MDF/LDF 文件,确认没有临时测试资源残留。
|
||
15. 执行 `npm run build`,生产构建成功;仅有项目原有的大资源体积和浏览器兼容数据过期警告,未生成受版本控制的 `dist` 变更。
|
||
16. 使用用户此前提供的数据库凭据,将 `add_design_report_task_hours_report_20260715.sql` 发布到 `192.168.2.92 / YL_MESDB`;日志不记录明文密码。
|
||
17. 在目标库创建新过程成功,修改时间为 `2026-07-15 18:14:19`。
|
||
18. 使用临时表只读接收目标库作业者工时和任务工时两个过程的完整返回结果,交叉核对真实数据:
|
||
- 两个报表统计的已结束报工次数均为 30。
|
||
- 任务工时根节点与人员子节点结构正确。
|
||
- 多人任务 DID 1 汇总为 3 次、0.02 小时;子节点为超级管理员 2 次、张一帆 1 次。
|
||
- 两种报表按不同维度分别先保留两位小数,跨全部分组求和存在 0.01 至 0.02 小时累计舍入差,属于分组舍入口径差异,不影响单个 DID 汇总。
|
||
19. 最终再次执行 HoursReport 页面 ESLint、目标文件 `git diff --check`、数据库对象检查和本地服务检查,均通过;`https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `db_backups/add_design_report_task_hours_report_20260715.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计工时报表现在同一页面提供“作业者工时”和“任务工时”两个顶部页签。
|
||
- 原作业者工时功能、筛选条件和三级树结构保持不变。
|
||
- 新任务工时按照 DID 汇总,并可展开查看每位操作人的工时贡献。
|
||
- 查询、总工时和 Excel 导出都会随当前页签切换。
|
||
- 新任务工时查询过程已经发布到目标数据库并通过真实数据验证。
|
||
|
||
### 验证结果
|
||
- HoursReport 单文件 ESLint 通过。
|
||
- 目标文件 `git diff --check` 通过。
|
||
- 隔离 LocalDB 的 DID 及人员汇总验证通过。
|
||
- `npm run build` 生产构建通过。
|
||
- 目标数据库过程发布成功。
|
||
- 目标库真实数据中两个报表的已结束报工次数均为 30,多人 DID 展开结构正确。
|
||
- 本地开发服务返回 HTTP 200。
|
||
|
||
## 2026-07-15 修复及时齐套生产订单 7912 工艺路线颜色
|
||
|
||
### 用户提问
|
||
- 修改 `PlanManagement/TimelyKitTrackingResult/index`。
|
||
- 搜索销售订单 `261079` 后展开子项,生产订单 `7912` 的工艺路线状态不正确。
|
||
- 第 4 序已经完成 5 个,应显示蓝色;第 5 序已经发料,应显示绿色。
|
||
- 要求参考“生产计划跟踪”页面搜索生产订单 `7912` 时的工艺路线。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`、参考页面 `src/views/ProductionManagement/ProductionPlanTrack/index.vue`、及时齐套查询脚本和原项目验收文档。
|
||
2. 对比两页的工艺路线前端算法,确认蓝色、绿色、红色判断和连续外协分组处理逻辑完全一致:
|
||
- 收检合格数大于 0、报工或辅助结束显示蓝色。
|
||
- 外协工序收料数大于收检合格数与不合格数之和时显示绿色。
|
||
- 连续且 `外协分组` 相同的工序统一采用该组最后一道工序的颜色。
|
||
3. 确认及时齐套页面不直接计算数据库状态,而是解析 `生产管理_及时齐套跟踪结果_查询` 返回的 `工艺路线明细` JSON 后着色。
|
||
4. 查询目标数据库过程参数和生产订单 `7912` 的 `View_生产订单_MES` 原始工序数据。首次查询误用了视图不存在的 `开始时间` 字段而失败,删除该字段后重新查询成功。
|
||
5. 原始数据确认:
|
||
- 第 4 序数铣,计划数 5、完成数 5、收料数 5、收检合格数 5,任务状态为已完成,应显示蓝色。
|
||
- 第 5 序调质,收料数 5、收检数 0、任务状态为已开工,应显示绿色。
|
||
- 第 6 序喷砂尚未开始,应显示红色。
|
||
6. 执行参考过程 `生产管理_生产计划跟踪` 查询订单 `7912`,确认参考数据包含 `外协分组`:
|
||
- 第 2 至第 4 序的外协分组为空,属于同一连续组,跟随第 4 序显示蓝色。
|
||
- 第 5 序外协分组为 2,独立显示绿色。
|
||
- 第 6 序外协分组为 3,独立显示红色。
|
||
7. 执行及时齐套查询过程查询销售订单 `261079`。首次命令同时使用了互斥的 `sqlcmd -W` 与 `-y` 选项而失败,修正选项后重新执行成功。
|
||
8. 检查及时齐套对生产订单 `7912` 的实际返回 JSON,确认完成数、收料数、收检数均正确,但每道工序都缺少 `外协分组` 字段。
|
||
9. 定位根因:前端把缺少分组字段的第 2 至第 6 序全部视为同一个连续外协组,最终全部跟随第 6 序显示红色;因此不是页面蓝绿基础判断错误,而是后端 JSON 字段缺失。
|
||
10. 修改当前最新及时齐套过程脚本 `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`,在 `工艺路线明细` JSON 中增加 `p2.[外协分组]`。
|
||
11. 发布前执行差异和空白检查,确认脚本只增加一个返回字段,不改变筛选、缺件匹配或其他统计口径;目标库当前过程定义检查结果为确实缺少该字段。
|
||
12. 使用用户此前提供的数据库凭据,将修改后的过程脚本发布到 `192.168.2.92 / YL_MESDB`;日志不记录明文密码。
|
||
13. 发布后重新执行销售订单 `261079` 的及时齐套查询,从实际过程输出中提取生产订单 `7912` 的工艺路线 JSON,并按页面当前算法复算:
|
||
- 第 4 序数铣:外协第一组,收检合格 5,最终颜色为蓝色。
|
||
- 第 5 序调质:外协分组 2,收料 5、收检 0,最终颜色为绿色。
|
||
- 第 6 序喷砂:外协分组 3,未收料未收检,最终颜色为红色。
|
||
14. 检查目标数据库过程定义,确认 `p2.[外协分组]` 已发布。
|
||
15. 执行及时齐套页面 ESLint,检查无错误,仅保留页面原有 `v-html` 安全规则警告和项目依赖数据过期提示。
|
||
16. 执行数据库脚本 `git diff --check`,检查通过;访问本地开发服务 `https://localhost:1997/` 返回 HTTP 200。
|
||
17. 保留工作区中用户已有的设计报工和质量检验相关修改,本次未改动或回退这些无关文件。
|
||
|
||
### 修改文件
|
||
- `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- `TimelyKitTrackingResult/index.vue` 的现有颜色算法与生产计划跟踪一致,无需重复修改前端算法。
|
||
- 实际问题是及时齐套查询返回的工艺路线 JSON 漏掉 `外协分组`,导致多个不同外协组被错误合并并统一显示红色。
|
||
- 字段已补齐并发布到目标数据库;销售订单 `261079`、生产订单 `7912` 现在第 4 序显示蓝色,第 5 序显示绿色,第 6 序显示红色,与生产计划跟踪一致。
|
||
|
||
### 验证结果
|
||
- 目标数据库原始工序和参考生产计划跟踪数据对比通过。
|
||
- 目标过程发布成功,定义中已包含 `p2.[外协分组]`。
|
||
- 实际过程返回 JSON 已包含第 5 序分组 2、第 6 序分组 3。
|
||
- 使用页面现有算法复算结果为第 4 序蓝色、第 5 序绿色、第 6 序红色。
|
||
- 页面 ESLint 无错误,只有原有 `v-html` warning。
|
||
- SQL 差异空白检查通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-15 上传设计任务工时报表全部修改到远程仓库
|
||
|
||
### 用户提问
|
||
- 用户要求将当前工作区中的所有修改上传到远程仓库。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区、当前分支、跟踪分支和远程状态,确认当前分支为 `snapshot/local-save-20260625-154806`,跟踪 `origin/snapshot/local-save-20260625-154806`。
|
||
2. 确认本次待上传内容共 3 个文件:
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`。
|
||
- `db_backups/add_design_report_task_hours_report_20260715.sql`。
|
||
- `gptlog-process/gpdlog.md`。
|
||
3. 复核本次功能验证结果:HoursReport 单文件 ESLint 通过,`npm run build` 生产构建通过,目标文件空白检查通过,独立 LocalDB 汇总测试通过,目标数据库真实数据交叉验证通过,本地开发服务返回 HTTP 200。
|
||
4. 对工作区差异执行 `git diff --check`,检查通过。
|
||
5. 对已跟踪差异和未跟踪文件执行数据库凭据及常见明文密码特征扫描,检查无命中;用户此前提供的数据库明文密码未写入待上传文件。
|
||
6. 检查工作区没有待提交的 `dist` 构建产物或临时测试资源。
|
||
7. 执行 `git fetch origin` 刷新远程状态,比较本地和跟踪分支,上传前分叉结果为 `0 0`;本地 HEAD 与远程跟踪分支均为 `4f42c3a`。
|
||
8. 执行 `git add -A` 暂存当前全部修改,复核暂存区确实只包含上述 3 个文件,共新增 334 行、删除 50 行。
|
||
9. 对暂存区再次执行 `git diff --cached --check` 和凭据特征扫描,均检查通过。
|
||
10. 创建功能提交:
|
||
- 提交号:`9d08fb1`。
|
||
- 提交信息:`feat: 增加设计任务工时报表`。
|
||
- 变更统计:3 个文件,新增 334 行、删除 50 行。
|
||
11. 执行 `git push origin snapshot/local-save-20260625-154806`,功能提交成功推送到远程,远程分支从 `4f42c3a` 更新到 `9d08fb1`。
|
||
12. 功能提交推送成功后,按照仓库 `AGENTS.md` 要求追加本条完整中文上传过程日志,并通过独立日志提交继续同步到同一远程分支。
|
||
|
||
### 结论
|
||
- 设计任务工时报表页签、任务工时数据库过程脚本及此前执行日志已创建功能提交并成功上传到远程分支。
|
||
- 功能提交号为 `9d08fb1`。
|
||
- 数据库明文密码未进入任何提交内容。
|
||
- 本条上传过程日志将通过后续独立提交同步到远程,完成后再次校验本地与远程一致性。
|
||
|
||
### 验证结果
|
||
- 上传前本地与远程分叉为 `0 0`。
|
||
- 工作区和暂存区空白检查通过。
|
||
- 暂存区凭据特征扫描无命中。
|
||
- HoursReport 页面 ESLint 通过。
|
||
- 生产构建通过。
|
||
- 独立 LocalDB 和目标数据库查询验证通过。
|
||
- 功能提交已成功推送至远程。
|
||
|
||
## 2026-07-17 设计任务分类、领导批示及历史记录权限调整
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`,将分类改为固定下拉选项:实验、研发、方案评审、售前、订单、确认、售后问题指导、售后物料准备、返修品处理、其他。
|
||
- 用户要求任务描述和设计要求只有创建人可以修改。
|
||
- 用户要求在设计任务界面和报工界面的操作位置增加作用相同的“领导批示”,并将“领导批示”字段放在两个列表的第一列。
|
||
- 用户要求领导批示、异常、奇思妙想、进度按“日期+编辑人,换行,内容”的方式显示,并按倒序排列,第一条为最新内容。
|
||
|
||
### 执行过程
|
||
1. 读取仓库根目录 `AGENTS.md`,确认必须把提问、结论和完整执行过程以中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 检查设计报工模块的 `Task/index.vue`、`Report/index.vue`、`HoursReport/index.vue`、现有存储过程脚本和当前用户 Vuex 字段,确认设计任务页为任务维护界面,报工页为开始、结束、完成及异常/奇思妙想录入界面。
|
||
3. 检查现有数据库脚本 `update_design_report_task_notes_and_restart_20260715.sql`,确认异常说明和奇思妙想存储在 `MES_设计报工_任务说明`,进度说明存储在 `MES_设计报工_记录`;现有聚合缺少编辑人且按正序返回。
|
||
4. 检查当前工作区,确认用户已有 `DeliveryNoticeList/index.vue` 和 `gptlog-process/gpdlog.md` 修改;本次保留这些修改,没有覆盖或回退。
|
||
5. 修改设计任务页面:
|
||
- 查询条件“类别”和新建/编辑表单“类别”改为固定选项下拉框。
|
||
- 在列表第一列增加固定的“领导批示”列。
|
||
- 在操作区增加“领导批示”按钮和录入弹窗,通过统一过程 `设计报工_任务说明_新增` 保存。
|
||
- 根据当前登录人员姓名与任务创建人判断编辑权限;非创建人打开编辑弹窗时,任务描述和设计要求禁用。
|
||
- 调整领导批示、进度说明、异常说明、奇思妙想的单元格样式,保留日期/编辑人与内容之间的换行,最多显示约四行并可通过提示框查看完整历史。
|
||
6. 修改设计报工页面:
|
||
- 查询条件“类别”使用与任务页面相同的固定下拉选项。
|
||
- 在列表第一列增加固定的“领导批示”列。
|
||
- 在操作区增加“领导批示”按钮,复用异常说明和奇思妙想的同一录入弹窗及保存过程。
|
||
- 同步调整四类历史字段的换行显示样式。
|
||
7. 新增数据库迁移 `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`:
|
||
- 将任务说明类型约束扩展为领导批示、异常说明、奇思妙想。
|
||
- 扩展 `设计报工_任务说明_新增`,允许保存领导批示。
|
||
- 更新 `设计报工_任务_查询`,返回领导批示,并为四类历史内容拼接日期、编辑人、换行和内容。
|
||
- 所有历史聚合按业务时间降序、流水号降序排列,时间相同时仍保证后录入内容在前。
|
||
- 更新 `设计报工_任务_编辑`,只有最后编辑人与创建人一致时才更新任务描述和设计要求,防止绕过前端直接调用接口越权修改。
|
||
8. 执行两个 Vue 文件的 ESLint,检查通过;仅输出项目已有的 Baseline 和 Browserslist 数据过期提示。
|
||
9. 执行目标文件 `git diff --check`,检查通过;仅有仓库换行符转换提示,无空白错误。
|
||
10. 在本机 SQL Server 2019 LocalDB 创建一次性 `YL_MESDB` 最小测试库,包含任务、报工记录和任务说明三张测试表以及测试数据。
|
||
11. 首次执行迁移时发现动态删除检查约束直接拼接 `QUOTENAME` 的写法在 SQL Server 2019 报语法错误;将其改为先生成变量,再通过 `sys.sp_executesql` 执行。
|
||
12. 从干净测试库重新执行修正后的迁移,执行成功。
|
||
13. 隔离数据库行为验证:
|
||
- “领导批示”可以通过统一任务说明过程保存。
|
||
- 最新领导批示位于较早批示之前,且显示为日期和编辑人后换行显示内容。
|
||
- 最新进度位于较早进度之前,并包含报工编辑人。
|
||
- 异常说明和奇思妙想同样按最新内容在前返回。
|
||
- 非创建人调用任务编辑过程后,任务描述和设计要求保持原值。
|
||
- 创建人调用任务编辑过程后,两字段正常更新。
|
||
14. 验证结束后删除 LocalDB 测试数据库和两个临时验证脚本,确认没有测试资源残留。
|
||
15. 尝试使用当前 Windows 身份连接 `192.168.2.92 / YL_MESDB` 做发布前检查,远端登录超时;未猜测或使用未提供的数据库凭据,因此本次迁移脚本未发布到生产库。
|
||
16. 执行 `npm run build`,Webpack 生产构建成功;仅保留项目已有的大资源体积、Baseline 和 Browserslist 数据过期警告,没有编译错误,也没有产生受版本控制的 `dist` 变化。
|
||
17. 检查现有本地开发服务,`https://localhost:1997/` 返回 HTTP 200。
|
||
18. 按仓库要求追加本条完整中文执行日志,并再次复核工作区差异。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计任务分类已经改为用户指定的十项固定下拉选项,报工页查询使用同一选项集。
|
||
- 设计任务和报工列表的第一列均为领导批示,两个页面都可以通过同一数据库过程录入。
|
||
- 领导批示、异常说明、奇思妙想和进度说明统一显示日期、编辑人及换行后的内容,最新记录排在第一条。
|
||
- 任务描述和设计要求已经同时受到前端禁用和数据库过程保护,只有创建人可以修改。
|
||
- 前端与数据库迁移均已实现并通过本地验证;迁移脚本因生产数据库当前身份登录超时尚未发布。
|
||
|
||
### 验证结果
|
||
- 两个目标 Vue 文件 ESLint 通过。
|
||
- 目标差异空白检查通过。
|
||
- SQL Server 2019 LocalDB 迁移执行通过。
|
||
- 领导批示保存、四类历史格式及倒序验证通过。
|
||
- 创建人和非创建人权限行为验证通过。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
- LocalDB 测试数据库和临时文件已清理。
|
||
|
||
## 2026-07-17 发布设计任务领导批示迁移到生产数据库
|
||
|
||
### 用户提问
|
||
- 用户提供生产数据库 `192.168.2.92` 的 `sa` 账号凭据,用于发布上一项设计任务分类、领导批示、历史记录格式和创建人编辑权限相关数据库迁移。
|
||
|
||
### 执行过程
|
||
1. 使用用户提供的数据库账号连接 `192.168.2.92 / YL_MESDB`;密码仅通过当前 PowerShell 进程的 `SQLCMDPASSWORD` 环境变量传递,命令结束后立即删除该环境变量,未将密码写入项目文件或本日志。
|
||
2. 发布前只读检查目标数据库和对象,确认当前数据库为 `YL_MESDB`,登录账号正确,并确认以下对象均存在:
|
||
- `dbo.MES_设计报工_任务说明`。
|
||
- `dbo.设计报工_任务说明_新增`。
|
||
- `dbo.设计报工_任务_查询`。
|
||
- `dbo.设计报工_任务_编辑`。
|
||
3. 使用 `sqlcmd -b -C -l 30 -f 65001` 执行迁移脚本 `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`;发布过程返回成功,数据库上下文为 `YL_MESDB`。
|
||
4. 发布后检查任务说明类型约束:
|
||
- 约束名称为 `CK_MES_设计报工_任务说明_类型`。
|
||
- 约束已启用且为可信状态。
|
||
- 定义中同时包含领导批示、异常说明和奇思妙想,检查通过。
|
||
5. 检查三个过程的修改时间,均为 `2026-07-17 11:50:08`,确认本次发布已更新目标对象。
|
||
6. 使用 SQL Server 首结果集元数据检查 `设计报工_任务_查询`,确认第一列为非空 `nvarchar(max)` 类型的“领导批示”。
|
||
7. 检查过程定义,确认领导批示保存逻辑、进度及任务说明按时间倒序聚合、缺少编辑人时的兜底显示均已发布。
|
||
8. 首次自动检查创建人权限时使用 SQL `LIKE` 匹配含方括号的字段名,方括号被 SQL 解释为模式字符而产生误报;改用 `CHARINDEX` 分别检查任务描述 CASE、设计要求 CASE 和创建人与最后编辑人比较条件,三项均通过,未重新执行迁移。
|
||
9. 从生产任务表选择最新 DID,实际执行更新后的 `设计报工_任务_查询`;查询成功,确认新聚合语句可以在生产真实数据上正常运行。该验证为只读操作,未新增或修改业务数据。
|
||
10. 按仓库 `AGENTS.md` 要求追加本条完整中文执行过程日志,日志不记录明文密码。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计任务领导批示、四类历史记录格式及倒序、创建人编辑权限迁移已成功发布到 `192.168.2.92 / YL_MESDB`。
|
||
- “领导批示”已经成为任务查询结果的第一列,数据库保存过程允许领导批示类型。
|
||
- 任务描述和设计要求的数据库创建人权限保护已生效。
|
||
- 数据库密码未写入任何项目文件或执行日志。
|
||
|
||
### 验证结果
|
||
- 生产数据库连接和发布前对象检查通过。
|
||
- 数据库迁移脚本执行通过。
|
||
- 任务说明约束启用、可信且定义正确。
|
||
- 三个目标过程修改时间已更新。
|
||
- 查询首列“领导批示”元数据检查通过。
|
||
- 历史格式及倒序定义检查通过。
|
||
- 创建人权限定义检查通过。
|
||
- 生产库真实 DID 查询执行通过。
|
||
|
||
## 2026-07-17 调整设计任务分类、增加任务来源并恢复默认行高
|
||
|
||
### 用户提问
|
||
- 用户要求分类选项删除“确认”,增加“售中”和“售后信息确认”。
|
||
- 用户要求增加“任务来源”字段并放在类别旁边。
|
||
- 用户要求列表页面不要根据历史内容调整行高,使用默认行高。
|
||
|
||
### 执行过程
|
||
1. 检查设计任务页 `Task/index.vue`、设计报工页 `Report/index.vue`、上一轮数据库迁移和当前工作区状态。
|
||
2. 确认两个页面共用相同分类选项;任务表尚无“任务来源”字段;领导批示、进度说明、异常说明和奇思妙想的 `.note-history` 样式使用多行显示并设置了最小、最大高度。
|
||
3. 确认工作区还存在用户的发货列表、工时校验和工时编辑等修改,本次没有覆盖或回退这些无关内容。
|
||
4. 修改设计任务页分类选项,删除独立选项“确认”,新增“售中”和“售后信息确认”;最终选项为实验、研发、方案评审、售前、售中、订单、售后信息确认、售后问题指导、售后物料准备、返修品处理、其他。
|
||
5. 在设计任务页增加任务来源:
|
||
- 查询区在类别右侧增加任务来源文本筛选。
|
||
- 列表在类别右侧增加任务来源列。
|
||
- 新建、编辑表单在类别右侧增加任务来源输入框,最大长度 200。
|
||
- 空表单、查询参数、实时查询参数和新增/编辑保存参数均接入任务来源。
|
||
6. 在设计报工页同步使用新分类选项,并在类别右侧增加任务来源查询条件和列表列;普通查询、最新任务查询及当前未结束任务查询均传递任务来源参数。
|
||
7. 将两个页面的历史内容单元格恢复为单行、20 像素最小高度和超出省略显示,移除多行及最大高度设置;完整历史仍可通过原有悬浮提示查看,因此表格行高不再随内容增加。
|
||
8. 扩展数据库迁移 `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`:
|
||
- 当字段不存在时,为 `MES_设计报工_任务` 增加可空 `nvarchar(200)` 任务来源列。
|
||
- 更新 `设计报工_任务_查询`,增加任务来源参数、返回列和模糊筛选,并把返回列放在类别与任务描述之间。
|
||
- 更新 `设计报工_任务_新增`,保存任务来源。
|
||
- 更新 `设计报工_任务_编辑`,更新任务来源,同时保留上一轮任务描述和设计要求的创建人权限保护。
|
||
9. 执行两个 Vue 文件 ESLint 和目标差异空白检查,均通过;仅输出项目已有的 Baseline、Browserslist 数据过期及换行符提示。
|
||
10. 在 SQL Server 2019 LocalDB 创建一次性最小测试库和三张设计报工测试表,执行扩展后的迁移成功。
|
||
11. 首次运行隔离验证命令时漏传 LocalDB 数据库名,连接默认落到 `master`,因此提示找不到测试过程和表;该命令未修改任何业务数据。补充 `-d YL_MESDB` 后重新验证成功。
|
||
12. LocalDB 验证结果:
|
||
- 任务来源字段为 `nvarchar(200)`。
|
||
- 查询结果中的类别、任务来源、任务描述依次为第 7、8、9 列。
|
||
- 查询、新增、编辑三个过程均包含任务来源参数。
|
||
- 使用“售中”和“客户现场”新增测试任务成功。
|
||
- 将分类编辑为“售后信息确认”、任务来源编辑为“售后反馈”成功。
|
||
- 按“售后反馈”筛选查询成功返回测试任务。
|
||
13. 删除 LocalDB 测试数据库和临时验证脚本,确认没有临时资源残留。
|
||
14. 使用用户已提供的生产数据库账号连接 `192.168.2.92 / YL_MESDB`,发布前确认生产任务表尚无任务来源字段和相应过程参数。
|
||
15. 通过当前进程的 `SQLCMDPASSWORD` 环境变量执行扩展后的迁移,发布成功;密码未写入脚本或日志,命令结束后删除环境变量。
|
||
16. 生产库发布后验证:
|
||
- 任务来源字段存在且为 `nvarchar(200)`。
|
||
- 查询结果中任务来源位于类别和任务描述之间。
|
||
- 查询、新增、编辑三个过程均包含任务来源参数。
|
||
- 三个过程修改时间均为 `2026-07-17 13:36:33`。
|
||
- 使用生产库最新真实 DID 执行带任务来源参数的查询成功,验证过程为只读操作。
|
||
17. 执行 `npm run build`,Webpack 生产构建成功;仅有项目已有的大资源体积和浏览器数据过期警告,没有编译错误或受版本控制的构建产物变化。
|
||
18. 检查 `https://localhost:1997/` 返回 HTTP 200;检查分类、任务来源参数、单行样式和临时资源均符合要求;检查数据库密码未进入仓库。
|
||
19. 按 `AGENTS.md` 要求追加本条完整中文执行日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 分类已删除“确认”,增加“售中”和“售后信息确认”,两个页面选项一致。
|
||
- 任务来源已经加入设计任务的查询、新建、编辑和列表,并加入设计报工的查询和列表,显示位置紧邻类别。
|
||
- 列表历史内容恢复单行省略显示,行高不再根据内容自动增加,悬浮提示仍显示完整内容。
|
||
- 任务来源数据库字段和查询、新增、编辑过程已发布到生产数据库。
|
||
|
||
### 验证结果
|
||
- 两个目标 Vue 文件 ESLint 通过。
|
||
- 目标差异空白检查通过。
|
||
- LocalDB 任务来源新增、编辑、筛选和列顺序验证通过。
|
||
- 临时测试数据库和脚本已清理。
|
||
- 生产数据库迁移发布成功。
|
||
- 生产库字段、三个过程参数和查询列顺序检查通过。
|
||
- 生产库真实 DID 查询通过。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-17 迁移设计任务完成功能并增加领导批示角色权限
|
||
|
||
### 用户提问
|
||
- 用户要求把“完成”功能由设计报工页面迁移到设计任务页面。
|
||
- 用户要求设计任务和设计报工页面默认不显示已完成任务。
|
||
- 用户要求领导批示按钮增加权限限制,只有权限包含“领导”的角色才能显示。
|
||
- 用户随后补充:权限包含“管理员”的角色也可以显示领导批示按钮。
|
||
|
||
### 执行过程
|
||
1. 检查设计任务页、设计报工页、用户登录、Vuex 用户状态、动态路由权限、数据库角色表和设计报工相关过程。
|
||
2. 确认原“完成”按钮和完整校验逻辑位于 `Report/index.vue`,包括实时任务查询、未结束报工校验、至少一次已结束报工校验、完成确认和 `设计报工_任务_完成` 调用。
|
||
3. 确认当前登录状态只保存角色编号,Vuex 的 `roles` 固定为 `admin` 以驱动历史路由框架,不能代表真实角色功能;真实角色名称存储在 `登录基础数据_角色信息.Roles_Function`。
|
||
4. 只读检查生产角色表,确认存在角色功能包含“领导”的角色,例如质量部领导和采购部领导;数据库角色表及字段可用于精确权限判断。
|
||
5. 修改设计任务页:
|
||
- 在状态选项中增加“未完成”,并把默认状态设为“未完成”。
|
||
- 在操作区增加“完成”按钮。
|
||
- 迁入原报工页的完整完成逻辑:实时刷新任务、检查未结束人员、检查是否已有报工、二次确认、调用 `设计报工_任务_完成` 并刷新列表。
|
||
- 增加独立动作加载状态,防止完成操作重复提交。
|
||
- 将原仅用于删除的实时任务查询提示调整为完成和删除均适用的通用提示。
|
||
6. 修改设计报工页:
|
||
- 删除“完成”按钮、`canComplete` 和 `completeTask` 方法。
|
||
- 缩小操作列宽度。
|
||
- 状态选项增加“未完成”,默认状态设为“未完成”。
|
||
7. 两个页面都会在首次加载时使用当前角色编号调用 `设计报工_领导批示权限_查询`;按钮默认隐藏,只有查询返回有权限时才显示。
|
||
8. 根据用户补充要求,将权限条件定义为当前角色功能包含“领导”或“管理员”任一文本;前端变量统一命名为 `canUseLeaderInstruction`,避免仍表达为仅领导角色。
|
||
9. 两个页面保存领导批示时都额外传递当前角色编号;异常说明和奇思妙想继续使用同一过程,不受领导批示角色限制。
|
||
10. 扩展数据库迁移脚本:
|
||
- 新增 `设计报工_领导批示权限_查询`,按角色编号检查角色功能是否包含“领导”或“管理员”。
|
||
- `设计报工_任务说明_新增` 增加角色编号参数;当说明类型为领导批示时,在数据库再次校验领导或管理员权限,无权限返回“当前角色无领导批示权限”。
|
||
- `设计报工_任务_查询` 增加“未完成”状态语义,过滤所有单据状态为“已完成”的任务;全部和其他具体状态查询保持原有行为。
|
||
11. 执行两个 Vue 文件 ESLint 和目标差异空白检查,均通过;只有项目已有的浏览器数据过期及换行符提示。
|
||
12. 在 SQL Server 2019 LocalDB 创建一次性最小测试库,构造领导角色、管理员角色、普通角色、未完成任务和已完成任务,执行迁移成功。
|
||
13. LocalDB 权限验证:
|
||
- 领导角色权限结果为 1。
|
||
- 管理员角色权限结果为 1。
|
||
- 普通角色权限结果为 0。
|
||
- 普通角色保存领导批示被数据库拒绝,且任务说明表中没有越权记录。
|
||
- 领导角色和管理员角色分别保存领导批示成功。
|
||
- 普通角色保存异常说明成功,确认权限没有错误限制其他说明类型。
|
||
14. LocalDB 默认筛选验证:任务表包含一条待开始、一条已完成任务,使用“未完成”查询只返回待开始任务,返回数量为 1,已完成数量为 0。
|
||
15. 删除 LocalDB 测试数据库和临时验证脚本,确认无测试资源残留。
|
||
16. 使用用户已提供的生产数据库账号执行扩展后的迁移;密码只通过当前命令进程环境变量传递,命令结束后清理,未写入仓库或日志。
|
||
17. 生产库验证结果:
|
||
- 随机选择实际领导、管理员和普通角色调用权限过程,结果依次为 1、1、0。
|
||
- 权限查询过程、任务说明新增过程和任务查询过程修改时间均为 `2026-07-17 14:14:39`。
|
||
- 任务说明新增过程确认包含角色编号参数。
|
||
- `设计报工_任务_完成` 过程仍存在,完成按钮迁移没有改变其数据库业务逻辑。
|
||
- 使用真实生产数据执行“未完成”查询返回 7 条,已完成数量为 0;查询过程仅执行只读验证。
|
||
18. 执行代码检索,确认完成按钮和相关方法只存在于设计任务页,设计报工页不再包含完成入口;两个页面均默认选择“未完成”,领导批示按钮均使用权限变量控制。
|
||
19. 执行 `npm run build`,生产构建成功;仅有项目已有的大资源体积和浏览器数据过期警告,没有编译错误或受版本控制的构建产物变化。
|
||
20. 检查 `https://localhost:1997/` 返回 HTTP 200;检查数据库密码未进入仓库;按 `AGENTS.md` 要求追加本条完整中文日志。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- “完成”按钮及全部校验逻辑已经从设计报工页迁移到设计任务页。
|
||
- 设计任务和设计报工页面默认只显示未完成任务,用户仍可通过状态下拉查看全部或指定状态。
|
||
- 领导批示按钮只有当前角色功能包含“领导”或“管理员”时显示。
|
||
- 领导批示保存过程具备相同的数据库权限校验,普通角色不能绕过页面直接提交。
|
||
- 权限过程和未完成筛选已发布生产数据库。
|
||
|
||
### 验证结果
|
||
- 两个目标 Vue 文件 ESLint 通过。
|
||
- 目标差异空白检查通过。
|
||
- LocalDB 领导、管理员、普通角色权限验证通过。
|
||
- LocalDB 领导批示写入和越权拦截验证通过。
|
||
- LocalDB 未完成默认筛选验证通过。
|
||
- 临时测试资源已清理。
|
||
- 生产数据库迁移发布成功。
|
||
- 生产库实际角色权限结果为领导 1、管理员 1、普通角色 0。
|
||
- 生产库未完成查询返回 7 条,已完成数量为 0。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-17 清空生产数据库全部设计报工业务数据
|
||
|
||
### 用户提问
|
||
- 用户要求清空所有设计数据。
|
||
|
||
### 执行过程
|
||
1. 将本次清理范围限定为设计报工模块的业务数据表,不删除表结构、存储过程、菜单和项目、物料、人员等基础资料。
|
||
2. 使用用户已提供的生产数据库账号连接 `192.168.2.92 / YL_MESDB`;密码仅通过当前命令进程环境变量传递,命令结束后立即清理,未写入仓库或日志。
|
||
3. 发布前查询所有名称包含“设计报工”的生产业务表及行数,确认存在四张表:
|
||
- `MES_设计报工_任务`:11 条。
|
||
- `MES_设计报工_记录`:40 条。
|
||
- `MES_设计报工_任务说明`:10 条。
|
||
- `MES_设计报工_校验记录`:16 条。
|
||
4. 检查外键关系,确认报工记录引用任务且删除规则为 `NO_ACTION`,任务说明引用任务且删除规则为 `CASCADE`;校验记录包含 RID 和 DID 引用字段但没有数据库外键。
|
||
5. 检查四张表的自增列,分别为任务 DID、报工记录 RID、任务说明 SID、校验记录 VID。
|
||
6. 在单个数据库事务中按依赖顺序执行清理:校验记录、任务说明、报工记录、任务。
|
||
7. 删除后在提交前再次检查四张表;如果任一表仍有数据则抛出错误并回滚整个事务。本次检查全部为空,事务成功提交。
|
||
8. 在同一事务中将四张表的自增值重置为 0,使后续新增的第一条数据从 1 开始。
|
||
9. 数据库返回的实际删除数量为:任务 11、报工记录 40、任务说明 10、校验记录 16,总计 77 条。
|
||
10. 提交后再次查询四张表,行数均为 0;再次查询四个自增列,当前值均为 0。
|
||
11. 按仓库 `AGENTS.md` 要求在日志末尾追加本条完整中文执行记录。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 生产数据库中设计报工模块的任务、报工记录、任务说明和校验记录已全部清空。
|
||
- 共删除 77 条业务数据,四张表当前均为 0 行。
|
||
- 四张表自增值已重置,后续新数据编号从 1 开始。
|
||
- 表结构、存储过程、菜单和基础资料保持不变。
|
||
|
||
### 验证结果
|
||
- 事务删除成功,无回滚或外键错误。
|
||
- 任务表:0 条,自增值 0。
|
||
- 报工记录表:0 条,自增值 0。
|
||
- 任务说明表:0 条,自增值 0。
|
||
- 校验记录表:0 条,自增值 0。
|
||
|
||
## 2026-07-17 放大设计列表行高字体并统一报工字段顺序
|
||
|
||
### 用户提问
|
||
- 用户先反馈分类删除“确认”、增加“售中”和“售后信息确认”后,设计任务界面似乎仍有“确认”。
|
||
- 用户随后要求修改设计任务和设计报工页面:列表行高变成三倍、修改字体大小、相应调整列宽,并让设计报工列表字段位置与设计任务一致。
|
||
|
||
### 执行过程
|
||
1. 检查当前设计任务和设计报工列表模板、样式、分类选项和工作区状态。
|
||
2. 确认两个页面的分类数组均为实验、研发、方案评审、售前、售中、订单、售后信息确认、售后问题指导、售后物料准备、返修品处理、其他;源码中不存在独立的“确认”选项,“确认”文本只作为“售后信息确认”的组成部分存在。
|
||
3. 检查当前设计任务列表字段顺序,确认在本次修改前已经调整为:领导批示、DID、状态、任务描述、设计要求、指派对象、预计开始、预计结束、进度说明、异常说明、奇思妙想、项目号、物料编码、物料名称、图号、类别、任务来源、父件物料编码、研发立项号、研发目的、对其可见、报工次数、未结束、设计正在对应、创建日期、创建人、备注、操作。
|
||
4. 以当前设计任务列表为唯一顺序基准,重排设计报工列表全部共同字段,避免按旧版顺序推断。
|
||
5. 在设计报工列表补齐原来未显示的共同字段:父件物料编码、研发立项号、研发目的、对其可见、创建日期、创建人和备注。
|
||
6. 自动提取两个 Vue 模板中的列名进行顺序比对,确认两个页面的 27 个共同字段完全同序;设计报工特有的“最后开始”和“最后结束”放在共同字段之后、操作列之前。
|
||
7. 为两个列表统一增加 `design-data-table` 样式类,并固定数据行和单元格高度为 108 像素,约为原 mini 表格行高的三倍。
|
||
8. 统一字体和垂直尺寸:
|
||
- 表格正文调整为 16 像素。
|
||
- 表头调整为 15 像素、高度 48 像素。
|
||
- 操作按钮调整为 15 像素。
|
||
- 状态标签调整为 14 像素、高度 30 像素。
|
||
- 单元格统一使用 24 像素行高。
|
||
9. 历史内容单元格在固定行高中使用 72 像素内容区、24 像素行高,最多展示三行并保留原有悬浮完整内容,防止内容继续撑高表格行。
|
||
10. 同步加宽两个页面的对应列:领导批示和三类历史列 360,任务描述和设计要求 320,人员及可见字段 200 至 220,日期字段 180,物料及研发字段按内容调整为 150 至 280。
|
||
11. 设计任务操作列调整为 340 像素,设计报工操作列调整为 440 像素,保证放大后的按钮和权限动态显示不会挤压换行。
|
||
12. 首次 ESLint 和差异空白检查发现设计任务模板有两处空白行带尾随空格;清理后重新执行,两项检查均通过。
|
||
13. 执行两个目标 Vue 文件 ESLint,检查通过;仅输出项目已有的 Baseline 和 Browserslist 数据过期提示。
|
||
14. 执行 `npm run build`,Webpack 生产构建成功;仅有项目已有的大资源体积和浏览器数据过期警告,没有模板、JavaScript 或样式错误,也没有产生受版本控制的构建产物变化。
|
||
15. 检查 `https://localhost:1997/` 返回 HTTP 200;再次核对分类源码没有独立“确认”,并确认工作区其他已有修改未被覆盖或回退。
|
||
16. 本次仅修改前端列表布局和样式,不修改或写入生产数据库业务数据。
|
||
17. 按仓库 `AGENTS.md` 要求在日志末尾追加本条完整中文执行记录。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计任务和设计报工列表数据行已统一固定为 108 像素,字体、表头、标签和操作按钮同步放大。
|
||
- 两个页面的对应列宽已经统一加宽,三行历史内容不会继续撑高列表。
|
||
- 设计报工的 27 个共同字段已经与当前设计任务列表完全同序,并补齐缺少的字段。
|
||
- 设计报工特有的最后开始和最后结束保留在共同字段之后。
|
||
- 两个分类数组均无独立“确认”选项,保留的是“售后信息确认”。
|
||
|
||
### 验证结果
|
||
- 两个列表共同字段顺序自动比对通过。
|
||
- 分类独立“确认”文本检查无命中。
|
||
- 两个目标 Vue 文件 ESLint 通过。
|
||
- 目标文件差异空白检查通过。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-17 设计任务和设计报工列表长文本自动换行
|
||
|
||
### 用户提问
|
||
- 用户要求列表内容超出列宽时不要省略,改为换行显示。
|
||
|
||
### 执行过程
|
||
1. 检查上一轮设计任务和设计报工列表样式,确认列表基础行高为 108 像素,普通字段仍带 Element UI 的 `show-overflow-tooltip` 省略行为,历史内容限制在 72 像素三行并隐藏超出内容。
|
||
2. 保留上一轮统一后的列宽、字体大小和字段顺序,不修改数据库、业务逻辑或查询参数。
|
||
3. 在两个页面的 `design-data-table` 表格正文中统一覆盖普通单元格和 Element UI tooltip 单元格样式:
|
||
- `white-space: normal !important`,允许按列宽自动换行。
|
||
- `text-overflow: clip`,取消省略号。
|
||
- `overflow: visible`,不裁剪超出内容。
|
||
- `overflow-wrap: anywhere` 和 `word-break: break-word`,长编号、无空格文本也可以换行。
|
||
4. 修改两个页面的历史内容样式,移除 72 像素最大高度和隐藏裁剪;保留 72 像素最小高度及原始换行格式,内容超过三行时完整展开。
|
||
5. 保留数据单元格的 108 像素基础高度;当换行内容需要更多空间时,由表格自动增加该行高度,避免文字覆盖相邻行。
|
||
6. 执行两个目标 Vue 文件 ESLint,检查通过;仅输出项目已有的 Baseline 和 Browserslist 数据过期提示。
|
||
7. 执行目标文件差异空白检查,检查通过;只有仓库换行符转换提示。
|
||
8. 通过文本检查确认两个页面均包含自动换行、取消省略和长单词断行样式,同时不存在历史内容 `max-height: 72px` 和 `text-overflow: ellipsis` 残留。
|
||
9. 执行 `npm run build`,Webpack 生产构建成功;仅有项目已有的大资源体积和浏览器数据过期警告,没有模板或样式编译错误,也没有产生受版本控制的构建产物变化。
|
||
10. 检查 `https://localhost:1997/` 返回 HTTP 200。
|
||
11. 按仓库 `AGENTS.md` 要求在日志末尾追加本条完整中文执行记录。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计任务和设计报工列表中的普通字段、编号和历史内容均按列宽自动换行。
|
||
- 列表不再使用省略号,也不再裁剪超过三行的历史内容。
|
||
- 108 像素作为基础行高保留,内容较多时表格行会继续增长并完整显示。
|
||
|
||
### 验证结果
|
||
- 两个目标 Vue 文件 ESLint 通过。
|
||
- 目标文件差异空白检查通过。
|
||
- 自动换行和取消省略样式检查通过。
|
||
- 历史内容最大高度及省略号残留检查无命中。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
|
||
## 2026-07-17 上传当前全部修改到远程仓库
|
||
|
||
### 用户提问
|
||
- 用户要求将当前工作区的所有修改上传到远程仓库。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区、当前分支、跟踪分支和远程地址,确认当前分支为 `snapshot/local-save-20260625-154806`,跟踪 `origin/snapshot/local-save-20260625-154806`。
|
||
2. 确认待上传内容共 7 个文件:
|
||
- `db_backups/add_design_report_leader_instruction_and_note_history_20260717.sql`。
|
||
- `gptlog-process/gpdlog.md`。
|
||
- `src/views/ProductionManagement/DeliveryNoticeList/index.vue`。
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`。
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`。
|
||
- `src/views/ProductionManagement/WorkHoursCheck/index.vue`。
|
||
- `src/views/ProductionManagement/WorkhoursEdit/index.vue`。
|
||
3. 复核较早保留的三处修改:发货列表增加订单、入库、完成、合格数量;工时校验允许编辑设备和人员工时并传递加工工时;工时编辑同步设备工时输入和修改提示。
|
||
4. 复核设计报工相关修改,包括分类和任务来源、创建人编辑权限、领导批示、历史倒序、完成入口迁移、未完成默认筛选、领导及管理员权限、列表字段顺序、行高字体列宽和长文本换行。
|
||
5. 复核数据库迁移脚本共 409 行,包含任务来源字段、任务说明类型约束、领导批示权限、任务说明新增、任务查询、任务新增和任务编辑过程。
|
||
6. 执行 `git fetch origin` 刷新远程状态,确认上传前本地与远程分叉为 `0 0`,远程没有需要合并的新提交。
|
||
7. 执行工作区和暂存区差异空白检查,均通过;仅有仓库已有的 LF/CRLF 转换提示。
|
||
8. 对工作区和暂存区执行数据库密码及常见明文凭据模式扫描,均未发现明文数据库密码;此前用户提供的密码未进入提交内容。
|
||
9. 对全部 5 个变更 Vue 文件执行 ESLint:设计任务、设计报工和发货列表相关检查通过;两个历史工时页面存在约 1260 个原有格式错误,远超本次少量业务修改范围。
|
||
10. 为避免在上传任务中夹带上千行无关格式化,没有自动修复两个历史工时页面;最近一次 `npm run build` 已成功编译包含全部变更的项目,确认不存在模板或 JavaScript 编译错误。
|
||
11. 执行 `git add -A` 暂存当前全部修改,确认暂存区正好包含上述 7 个文件,共新增 1228 行、删除 108 行。
|
||
12. 对暂存区再次执行空白和明文凭据检查,均通过。
|
||
13. 创建功能提交:
|
||
- 提交号:`e31027a`。
|
||
- 提交信息:`feat: 完善设计任务与工时维护`。
|
||
- 变更统计:7 个文件,新增 1228 行、删除 108 行。
|
||
14. 执行 `git push origin snapshot/local-save-20260625-154806`,功能提交成功推送,远程分支从 `5b73972` 更新到 `e31027a`。
|
||
15. 功能提交推送成功后,按仓库 `AGENTS.md` 要求追加本条完整中文上传过程日志,并通过独立日志提交继续同步到同一远程分支。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 当前工作区中的设计任务、设计报工、发货数量、工时编辑、数据库迁移和此前执行日志已全部创建功能提交并推送到远程分支。
|
||
- 功能提交号为 `e31027a`。
|
||
- 数据库明文密码未进入提交内容。
|
||
- 本条上传过程日志将通过后续独立提交同步到远程。
|
||
|
||
### 验证结果
|
||
- 上传前本地与远程分叉为 `0 0`。
|
||
- 工作区和暂存区空白检查通过。
|
||
- 工作区和暂存区明文凭据扫描通过。
|
||
- 设计任务和设计报工目标页面 ESLint 通过。
|
||
- `npm run build` 生产构建通过。
|
||
- 功能提交已成功推送到远程。
|
||
|
||
## 2026-07-20 增加设计工时报表数据查看权限
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/HoursReport/index`,增加设计工时报表权限限制:普通用户的报工数据只能查看与自己有关的数据,即任务创建人是本人或者报工人是本人;角色包含“领导”或“管理员”的用户可以查看全部工时。
|
||
|
||
### 执行过程
|
||
1. 读取仓库根目录 `AGENTS.md`,确认本次执行结束后必须将提问、完整执行过程和结论以中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 检查 Git 工作区,确认开始时已有 `gptlog-process/gpdlog.md` 的未提交修改;该修改属于既有用户工作,执行过程中予以保留,没有覆盖或回退。
|
||
3. 搜索页面路径和设计工时报表相关代码,确认实际页面为 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`,页面分别调用 `设计报工_工时报表_作业者工时_查询` 和 `设计报工_工时报表_任务工时_查询` 两个存储过程。
|
||
4. 检查报表页面、设计任务页面、设计报工页面、Vuex 用户状态和现有数据库迁移,确认当前登录人姓名来自 Vuex `name`,角色编号来自 Vuex `token`;任务创建人存储在 `MES_设计报工_任务.创建人`,报工人存储在 `MES_设计报工_记录.操作人`。
|
||
5. 复核现有领导批示权限实现,确认项目通过 `登录基础数据_角色信息.Roles_number` 查找角色,并以 `Roles_Function` 是否包含“领导”或“管理员”作为特权角色判定。本次沿用相同权限口径,避免同一模块出现两套角色规则。
|
||
6. 修改工时报表页面的查询参数:在原日期、操作人、项目号、物料编码、类别和 DID 参数后增加“当前操作人”和“角色编号”,并增加 `currentUserName`、`currentRoleId` 两个方法读取当前登录状态。
|
||
7. 新增可重复执行的数据库迁移 `db_backups/add_design_report_hours_report_permissions_20260720.sql`,使用 `CREATE OR ALTER PROCEDURE` 更新作业者工时和任务工时两个查询过程。
|
||
8. 两个查询过程均增加 `@当前操作人` 和 `@角色编号` 参数,并在读取报工基础数据前查询当前角色是否具有查看全部权限;角色功能包含“领导”或“管理员”时放行全部记录。
|
||
9. 对普通角色增加数据库侧逐条过滤:仅当 `任务.创建人 = 当前操作人` 或 `记录.操作人 = 当前操作人` 时保留报工记录;当前操作人为空时默认返回空集,防止登录信息缺失导致意外放行。
|
||
10. 保留原“操作人”等业务筛选条件,并让权限条件与业务筛选同时生效;因此普通用户手工填写其他报工人的筛选值也不能绕过基础权限。
|
||
11. 执行目标 Vue 文件 ESLint,检查通过;仅输出项目既有的 Baseline 和 Browserslist 数据过期提示。
|
||
12. 执行目标文件空白差异检查,首次发现新 SQL 文件首尾各有一个多余空行;清理后重新检查通过,仅有仓库换行符转换提示。
|
||
13. 检查本机 SQL Server 工具,确认 `sqlcmd` 和 SQL Server 2019 LocalDB 可用;启动 `MSSQLLocalDB`,确认测试前不存在名为 `YL_MESDB` 的本地数据库。
|
||
14. 创建一次性隔离测试数据库和最小表结构,构造普通设计人员、研发领导、系统管理员三种角色,以及任务创建人、报工人相同和不同的五条报工数据。
|
||
15. 在 LocalDB 执行新增迁移,两个存储过程均编译成功。
|
||
16. 执行权限用例并全部通过:普通用户仅看到本人创建任务或本人报工的三条记录;普通用户按其他操作人筛选时只能看到本人创建任务内的匹配记录,不能看到无关任务;领导看到全部五条记录;管理员看到全部五条记录;普通角色登录人为空时返回空集。
|
||
17. 测试完成后删除一次性 LocalDB 测试数据库和临时测试脚本,再次查询确认测试数据库数量为 0,工作区没有测试资源残留。
|
||
18. 执行 `npm run build`,Webpack 生产构建成功;仅有项目既有的大资源体积、Baseline 数据和 Browserslist 数据过期警告,没有模板、JavaScript、样式或 SQL 相关编译错误。
|
||
19. 执行最终 Git 状态、目标差异、空白和关键权限分支检查,确认页面仅增加身份参数传递,迁移恰好包含两个过程、两组权限参数和两处数据库权限过滤;没有产生受版本控制的构建产物变化。
|
||
20. 本次未连接或修改生产数据库;交付的数据库变更为已经 LocalDB 编译和权限用例验证通过的迁移脚本。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `db_backups/add_design_report_hours_report_permissions_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计工时报表的作业者工时和任务工时查询现已同时受数据库权限限制。
|
||
- 普通用户只能查看任务创建人是本人或报工人是本人的报工记录,页面上的其他筛选条件不能扩大该数据范围。
|
||
- 角色功能包含“领导”或“管理员”的用户可以查看全部设计工时。
|
||
- 登录人信息为空且角色不具备查看全部权限时默认不返回数据。
|
||
- 生产数据库尚未执行本次迁移,需要在目标环境发布 `db_backups/add_design_report_hours_report_permissions_20260720.sql` 后,新前端查询参数才能与存储过程签名一致。
|
||
|
||
### 验证结果
|
||
- 目标 Vue 文件 ESLint 通过。
|
||
- 目标差异空白检查通过。
|
||
- LocalDB 中两个存储过程编译通过。
|
||
- 普通用户本人相关数据权限验证通过。
|
||
- 普通用户筛选不可越权验证通过。
|
||
- 领导查看全部工时验证通过。
|
||
- 管理员查看全部工时验证通过。
|
||
- 空登录人默认拒绝验证通过。
|
||
- LocalDB 测试数据库和临时脚本已清理。
|
||
- `npm run build` 生产构建通过。
|
||
|
||
## 2026-07-20 发布设计工时报表权限到生产数据库
|
||
|
||
### 用户提问
|
||
- 用户提供生产数据库 `192.168.2.92` 的 `sa` 账号凭据,用于发布上一轮已经完成并验证的设计工时报表权限迁移。
|
||
- 数据库密码仅用于当前命令进程,未在本日志中记录明文。
|
||
|
||
### 执行过程
|
||
1. 将本次操作范围限定为把 `db_backups/add_design_report_hours_report_permissions_20260720.sql` 发布到 `192.168.2.92 / YL_MESDB`,不修改其他数据库对象或业务数据。
|
||
2. 使用临时进程环境变量向 `sqlcmd` 提供密码;命令结束后立即清除环境变量,没有创建凭据文件,也没有把密码写入仓库脚本或执行日志。
|
||
3. 发布前执行只读连接和环境检查,确认目标数据库为 `YL_MESDB`、服务器名为 `YLLT-MES`,服务器时间为 `2026-07-20 09:04:07`。
|
||
4. 检查两个目标存储过程,确认发布前均存在:任务工时查询过程修改时间为 `2026-07-15 18:14:19`,作业者工时查询过程修改时间为 `2026-07-10 17:39:34`。
|
||
5. 检查依赖结构,确认 `MES_设计报工_任务.创建人`、`MES_设计报工_记录.操作人` 和 `登录基础数据_角色信息.Roles_Function` 均存在,字段长度和迁移定义兼容。
|
||
6. 使用 `sqlcmd -b -f 65001` 执行权限迁移;数据库成功切换到 `YL_MESDB`,两个 `CREATE OR ALTER PROCEDURE` 均执行成功,没有 SQL 错误或回滚。
|
||
7. 发布后检查过程元数据,确认两个过程修改时间均更新为 `2026-07-20 09:04:21`,各有 9 个参数,并且 `@当前操作人`、`@角色编号` 参数各存在一次。
|
||
8. 首轮使用 SQL `LIKE` 检查过程定义时,由于方括号被解释为模式字符而返回错误的 0;该结果只影响检查表达式,不影响已发布过程。随后改用 `CHARINDEX` 精确检查,没有重复发布或修改数据。
|
||
9. 精确检查确认两个过程均包含三类权限规则:角色功能包含“领导”或“管理员”时查看全部;普通用户按任务创建人或报工人匹配;当前登录人为空时默认拒绝。
|
||
10. 查询角色数据的汇总数量,确认生产环境中包含“领导”的角色有 3 个,包含“管理员”的角色有 3 个。
|
||
11. 使用不存在的 DID 和验证身份参数分别调用两个过程,确认新增参数签名可正常接收,过程执行无错误且不返回业务数据。
|
||
12. 创建一次性只读生产验证脚本,不包含数据库凭据;脚本自动选取一个普通角色、一名已有报工人员、一个领导角色和一个管理员角色,并以临时表接收两个过程结果。
|
||
13. 普通用户对账:基础表按“任务创建人是本人或报工人是本人”计算的记录数,与作业者工时报表三级明细数一致。
|
||
14. 领导对账:作业者工时报表三级明细数与全部已结束报工记录数一致。
|
||
15. 管理员对账:任务工时报表一级汇总的报工次数与全部已结束报工记录数一致。
|
||
16. 生产数据对账结果为:全部已结束报工 12 条,抽样普通用户可见 3 条,普通用户、领导和管理员三类对账均通过。
|
||
17. 删除一次性生产验证脚本,确认其没有留在工作区;整个验证过程仅执行查询、临时表和存储过程调用,没有写入或修改生产业务表。
|
||
18. 按仓库 `AGENTS.md` 要求追加本条完整中文执行过程日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计工时报表权限迁移已成功发布到 `192.168.2.92 / YL_MESDB`。
|
||
- 两个生产存储过程现已支持当前登录人和角色编号参数,并执行普通用户本人数据限制以及领导、管理员查看全部规则。
|
||
- 生产实际数据对账通过:普通用户只能看到本人相关数据,领导和管理员可以看到全部工时。
|
||
- 本次没有修改生产业务数据,数据库密码没有写入仓库或日志。
|
||
|
||
### 验证结果
|
||
- 生产数据库连接和依赖结构检查通过。
|
||
- 两个过程发布成功,修改时间和参数检查通过。
|
||
- 两个过程权限定义精确检查通过。
|
||
- 普通用户生产数据权限对账通过:抽样可见 3 条。
|
||
- 领导生产数据权限对账通过:可见全部 12 条。
|
||
- 管理员生产数据权限对账通过:可见全部 12 条。
|
||
- 临时验证脚本已清理。
|
||
|
||
## 2026-07-20 修复设计任务指派对象多选只显示一个值
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Task/index` 的“指派对象”,当前多选后只显示一个值,多选时应显示多个指派对象。
|
||
|
||
### 执行过程
|
||
1. 检查实际页面 `src/views/ProductionManagement/DesignReportTask/Task/index.vue` 的列表列、Element UI 多选控件、编辑回填、人员远程查询、选择变化处理和保存参数。
|
||
2. 确认控件已经配置 `multiple`,数据库字段也支持逗号分隔的多个 ID 和姓名;问题不是控件缺少多选配置。
|
||
3. 定位根因:`queryPersonnel` 每次远程搜索都会用本次结果整批替换 `personnelOptions`,导致之前已选人员从候选集合消失;`handleAssigneeChange` 又只从当前候选集合查找姓名,因此 ID 数组可包含多人,但保存的 `指派对象` 姓名只剩当前搜索结果中的一人。
|
||
4. 使用上一轮用户提供的生产数据库账号执行只读汇总,未记录明文密码。生产库共有 31 个设计任务,其中 14 个任务的 `指派对象ID` 包含多个值,而这 14 个任务的 `指派对象` 姓名都只有一个值,验证了代码分析。
|
||
5. 检查人员查询过程,确认默认最多返回 200 人;生产环境当前有 134 名有效人员,所有任务中已保存的指派对象 ID 均能在有效人员视图中找到,因此可以通过 ID 映射即时还原完整姓名。
|
||
6. 一次尝试通过 `INSERT EXEC 设计报工_人员查询` 统计默认结果时,因该过程内部本身使用 `INSERT EXEC` 而触发 SQL Server“不允许嵌套 INSERT EXEC”;该只读尝试没有写入或修改数据。随后改为直接查询人员权限视图,成功得到有效人员和 ID 覆盖结果。
|
||
7. 修改任务列表“指派对象”列,使用自定义模板和 `formatAssigneeNames`,优先按 `指派对象ID` 从人员姓名缓存逐个解析并用顿号连接;即使历史数据库姓名字段只有一个值,页面也能显示全部 ID 对应的人员。
|
||
8. 增加统一的人员 ID 标准化,编辑回填时把字符串和数字 ID 统一转换为去除空格的字符串,避免严格比较时因类型不同丢失已选项。
|
||
9. 增加人员姓名缓存,人员查询每次返回后都把 ID 和姓名合并到缓存;缓存独立于当前下拉筛选结果,因此列表显示不会随着远程搜索切换而丢失姓名映射。
|
||
10. 增加 `mergePersonnelOptions`:远程搜索刷新候选项时保留所有当前已选人员,再加入本次搜索结果;连续搜索并选择不同人员时,前一次选择的标签和姓名不会丢失。
|
||
11. 修改 `handleAssigneeChange`,按多选值的实际选择顺序保存全部人员 ID 和全部人员姓名,不再按当前候选数组过滤或重排。
|
||
12. 同步复用相同逻辑修正“对其可见”多选,避免同一页面的另一个人员多选控件存在相同的数据截断问题。
|
||
13. 新建和编辑对话框打开时重新加载完整指派人员与可见人员选项;编辑历史任务时先保留已有选项,再由最新人员查询结果覆盖错误或缺失标签。
|
||
14. 为两个人员远程查询增加请求序号,较早请求晚返回时会被忽略,避免快速输入过程中旧结果覆盖新结果。
|
||
15. 调整查询异常分支,网络或接口查询失败时只保留当前已选人员,不再清空整个候选集合,确保已选标签保持显示。
|
||
16. 首次运行组件真实方法测试时,PowerShell 管道编码将测试脚本中的中文属性名替换成问号,Node 在载入前报语法错误;该问题仅发生在临时测试命令,没有修改代码或数据。随后使用 Unicode 转义重新执行。
|
||
17. 从目标 Vue 文件动态加载真实组件方法并验证六个场景,全部通过:连续远程搜索保留前次选择、保存全部 ID、按选择顺序保存全部姓名、历史单姓名数据按 ID 显示多人、人员 ID 类型统一、查询失败保留已选项。
|
||
18. 执行目标 Vue 文件 ESLint,检查通过;仅输出项目既有的 Baseline 和 Browserslist 数据过期提示。
|
||
19. 执行 `npm run build`,Webpack 生产构建成功;仅有项目既有的大资源体积、Baseline 数据和 Browserslist 数据过期警告,没有模板、JavaScript 或样式编译错误。
|
||
20. 检查现有开发服务器,确认端口 1997 的进程为当前仓库的 webpack dev server,访问 `https://localhost:1997/` 返回 HTTP 200,无需重复启动服务器。
|
||
21. 执行最终 Git 状态、空白差异和明文数据库密码检查;目标变更没有空白错误、没有受版本控制的构建产物变化,也没有包含明文数据库密码。
|
||
22. 本次只修改前端显示和多选数据处理,没有更新生产数据库业务记录;现有 14 条多 ID、单姓名任务会由页面根据 ID 映射立即显示完整人员,后续重新选择并保存时会写入完整姓名。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- “指派对象”现在支持连续远程搜索并保留多个已选人员,选择和保存均包含全部 ID 与姓名。
|
||
- 设计任务列表会根据全部指派对象 ID 显示对应人员,历史上姓名字段只保存一个值的任务也能显示完整多人。
|
||
- “对其可见”人员多选同步采用相同的保留和拼接逻辑。
|
||
- 生产业务数据未被改写。
|
||
|
||
### 验证结果
|
||
- 生产只读诊断确认 14 个多 ID 任务此前均只有一个姓名。
|
||
- 生产 134 名有效人员覆盖全部已保存指派对象 ID。
|
||
- 六项组件多选和显示方法测试通过。
|
||
- 目标 Vue 文件 ESLint 通过。
|
||
- 目标差异空白检查通过。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
- 开发服务器当前 `app.js` 已包含 `formatAssigneeNames` 修复代码,确认热更新后的页面资源已生效。
|
||
- 变更文件明文数据库密码检查通过。
|
||
|
||
## 2026-07-20 机加正在加工任务在排产日程显示绿色
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `PlanManagement/SelfMakePlandone/index` 和 `PlanManagement/WorkstationPlan/index` 两个页面的日程页签:机加正在加工的任务需要显示为绿色,正在加工数据来源为 `设备管理_设备状态_查询`。
|
||
|
||
### 执行过程
|
||
1. 检查两个目标 Vue 文件的模板、FullCalendar 配置、日程事件计算属性、页签监听、任务查询刷新和现有颜色规则。
|
||
2. 确认两个页面的日程事件此前只按优先级着色:加急任务为红色 `#f56c6c`,普通任务为蓝色 `#409EFF`,没有读取实时设备状态。
|
||
3. 搜索仓库内设备状态调用和技术资料,确认实际过程名为 `设备管理_设备状态_查询`,参数为 `@设备名称`;现有设备状态页面以空设备名称查询全部设备。
|
||
4. 使用生产数据库执行只读检查,确认过程当前返回 `TaskAID`、加工状态编号和加工状态文本,并只包含加工状态 2 或 4:状态 2 为“辅助开始”,状态 4 为“开始加工”。
|
||
5. 复核两个排产页面,确认任务行在派工、分组等操作中使用 `row.taskaid` 作为 `TaskAID`,可与设备状态过程返回的 `TaskAID` 精确关联;同时兼容返回字段大小写差异和 `AID` 备用字段。
|
||
6. 查询生产排产过程定义,确认页面默认 `已完成` 表示排产状态为 1,而不是加工任务已经结束;当前设备状态任务仍属于页面默认“已排产、自制件”数据范围。
|
||
7. 生产只读统计确认当前共有 18 个机加正在加工任务,其中辅助开始 3 个、开始加工 15 个,18 个 TaskAID 均唯一且全部位于两个页面默认日程范围。
|
||
8. 在两个页面的数据状态中增加 `machiningTaskIds`,用于保存设备状态过程返回并标准化、去重后的当前加工任务 ID。
|
||
9. 增加 `normalizeTaskAid` 和 `getTaskAid`,把数字或字符串任务主键统一转为去除空格的字符串,并兼容 `taskaid`、`TaskAID` 和 `AID` 三种字段名。
|
||
10. 增加 `loadMachiningTaskIds`,使用 `CreateData('11', '设备管理_设备状态_查询', [['设备名称', '']])` 查询全部设备状态;查询失败时保留原有状态并记录控制台错误,不阻塞排产任务列表。
|
||
11. 增加统一的 `getCalendarEventStyle` 颜色规则:正在加工任务使用绿色 `#67c23a` 和 `machining-event` 类;非加工中的加急任务保持红色;其他普通任务保持蓝色。正在加工绿色优先于加急红色。
|
||
12. 将两个页面的普通日程和已排产日程事件都改为使用统一颜色规则,背景色与边框色一致,文字保持白色。
|
||
13. 在进入日程页签时重新查询设备状态;在执行日程任务查询时同步刷新设备状态,保证查询后的任务颜色基于最新设备数据。
|
||
14. 增加 `machiningTaskIds` 监听和 `refreshVisibleCalendarEvents`,设备状态异步返回后立即更新当前可见日历事件并调用 FullCalendar `refetchEvents`,避免必须再次切换页签才能看到绿色。
|
||
15. 从两个目标 Vue 文件动态加载真实组件方法,分别验证 7 个场景,全部通过:加工中覆盖加急显示绿色、非加工加急保持红色、普通保持蓝色、TaskAID 字段变体匹配、调用指定设备状态过程、查询全部设备、活动任务 ID 标准化去重。
|
||
16. 首次执行完整 ESLint,两个历史页面分别存在数百条原有缩进、分号、引号和尾随空格问题,检查被既有问题阻断;没有对整页执行自动格式化,避免产生上千行无关改动。
|
||
17. 按 Git 新增行精确过滤 ESLint 结果,首次发现两个页面各一处本次事件 `classNames` 尾随逗号错误;删除后重新检查,两页本次各 53 行新增代码的 ESLint 消息均为 0。
|
||
18. 执行 `npm run build`,Webpack 生产构建成功;仅有项目既有的大资源体积、Baseline 数据和 Browserslist 数据过期警告,没有模板或 JavaScript 编译错误。
|
||
19. 检查现有 webpack 开发服务器,`https://localhost:1997/` 返回 HTTP 200;读取热更新后的 `app.js`,确认包含设备状态过程名、`machiningTaskIds` 和 `machining-event` 规则。
|
||
20. 执行最终 Git 状态、空白差异和明文密码检查;没有空白错误,没有受版本控制的构建产物变化,变更中没有明文数据库密码。
|
||
21. 本次生产数据库检查均为只读查询,没有创建、更新或删除数据库对象及业务数据;页面通过现有设备状态过程实时取数,不需要新增数据库迁移。
|
||
|
||
### 修改文件
|
||
- `src/views/PlanManagement/SelfMakePlandone/index.vue`
|
||
- `src/views/PlanManagement/WorkstationPlan/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 两个排产页面的日程页签现在都会从 `设备管理_设备状态_查询` 获取机加正在加工任务。
|
||
- 日程任务通过 TaskAID 与设备状态结果关联,辅助开始和开始加工中的任务显示绿色。
|
||
- 颜色优先级为正在加工绿色、加急红色、普通蓝色。
|
||
- 进入日程页签、点击查询以及设备状态异步返回时都会刷新日历颜色。
|
||
- 本次没有修改生产数据库业务数据。
|
||
|
||
### 验证结果
|
||
- 生产设备状态过程和 TaskAID 字段检查通过。
|
||
- 生产当前 18 个机加正在加工任务全部位于默认日程范围。
|
||
- 两页共 14 项真实组件方法测试通过。
|
||
- 两页本次新增行 ESLint 消息均为 0。
|
||
- `npm run build` 生产构建通过。
|
||
- `https://localhost:1997/` 返回 HTTP 200。
|
||
- 开发服务器当前 bundle 已包含绿色事件和设备状态查询代码。
|
||
- 目标差异空白检查通过。
|
||
- 变更文件明文数据库密码检查通过。
|
||
|
||
## 2026-07-20 审查发货通知列表两部分数据合并
|
||
|
||
### 用户提问
|
||
- 用户要求查看 `ProductionManagement/DeliveryNoticeList/index` 页面的数据是否有问题,并说明当前数据由两部分构成:一部分来自 `[SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES]` 视图,另一部分来自手工编辑为优先的任务。
|
||
|
||
### 执行过程
|
||
1. 按只读审查处理本次请求,检查目标页面模板、查询参数、数据加载、数量字段、日期字段和状态格式化;除仓库要求的执行日志外,不修改页面或业务逻辑。
|
||
2. 确认前端只调用 `装配中心任务看板_发货状态查询`,页面自身没有合并两份数据;两部分数据的构成和优先规则全部位于生产存储过程中。
|
||
3. 检查仓库迁移 `db_backups/update_delivery_notice_list_proc_20260626.sql`,发现其仍为早期单分支版本,不能代表当前生产逻辑;随后使用用户此前提供的生产数据库账号执行只读核查,密码未写入仓库或日志。
|
||
4. 读取生产过程元数据,确认 `装配中心任务看板_发货状态查询` 修改时间为 `2026-07-17 10:20:40`,依赖 SAP 发货视图、MES 生产订单视图、加工操作记录、质量检验记录、生产工时和人员信息。
|
||
5. 读取生产过程完整定义,确认当前确实由两个 `UNION ALL` 分支组成:
|
||
- 第一分支以 `[SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES]` 为主,按生产单号左连 MES 生产订单。
|
||
- 第二分支读取 `View_生产订单_MES.优先级='是'` 的装配任务,并排除已经存在于 SAP 视图的生产订单。
|
||
6. 确认“手工编辑为优先”并不是独立表,而是 MES 生产订单任务的 `优先级` 字段;第二分支的 SAP 字段为空,最终按 `要求发货时间` 升序排列时,这些空日期手工任务会排在前面。
|
||
7. 通过结果集元数据核对前端字段,确认过程返回 42 个字段,其中包含 `检验数量`,但不包含页面使用的 `合格数量`;因此页面“合格数量”列当前没有后端数据来源,会显示为空。
|
||
8. 创建会话级临时表接收生产过程默认结果,仅进行只读统计。首次稳定快照显示:SAP 源 11 行,手工优先源 4 个任务,两个来源的逻辑基数合计应为 15;过程实际返回 20 行。
|
||
9. 分析 5 条额外结果,确认全部来自操作记录的一对多联表:SAP 生产订单 7517 对应 5 个不同操作人,被拆成 5 行,额外产生 4 行;手工优先订单 8169 对应 2 个不同操作人,被拆成 2 行,额外产生 1 行。
|
||
10. 检查 SAP 与 MES 订单关联,当前没有一个 SAP 订单匹配多个 MES TaskAID;重复不是生产订单关联到多任务造成,而是 `YL_加工中心_操作记录表` 按 `b.操作人` 分组造成。
|
||
11. 检查质检联表,发现任务 18081 同时有 4 条操作记录和 4 条质检记录,当前过程先直接联表再聚合,形成 16 行笛卡尔乘积;正确检验数量为 10,过程聚合为 40。生产结果中有 5 行检验数量与独立质检汇总不一致。
|
||
12. 核对质检视图字段,确认同时存在 `检验数量`、`合格数` 和 `不合格数`。当前过程汇总的是 `检验数量`,不仅字段名与页面的 `合格数量` 不一致,业务口径也不是“合格数”。
|
||
13. 检查 SAP 视图当前数据,11 行组合键均不同,但有 2 行生产单号为空,且有 2 行找不到对应 MES 生产订单;这些行在过程里保留 SAP 的 `生产单号` 和 `要求发货时间`,但页面展示的是 MES 的 `订单编号` 和 `要求发货日期`,导致页面生产订单和发货日期为空。
|
||
14. 默认结果统计发现 7 行页面使用的 `要求发货日期` 为空,其中包含 SAP 无 MES 匹配行以及手工优先行;另有 1 行 SAP `要求发货时间` 与 MES `要求发货日期` 日期不一致。查询筛选和排序依据 SAP 日期,页面却显示 MES 日期,存在“按一个日期查、展示另一个日期”的口径偏差。
|
||
15. 检查手工优先分支的筛选条件,确认代码明确没有应用 `@齐套`、`@发料状态` 和 `@要求发货日期`。生产调用验证结果:
|
||
- 选择“齐套=否”时,手工分支返回 5 行,5 行实际均为齐套,全部违反筛选条件。
|
||
- 选择“发料状态=未发料”时,手工分支返回 5 行,5 行实际均已发料,全部违反筛选条件。
|
||
- 选择不存在的日期 `2099-01-01` 时仍返回 5 行手工结果,5 行全部不符合日期条件。
|
||
16. 检查页面发料状态格式化,确认未发料、空值或 0 都被格式化为空字符串,而页面筛选项名称是“未发料”;默认结果快照中有 10 行发料状态显示为空,用户无法从列表直接看出“未发料”。
|
||
17. 检查数量显示,SAP 分支返回 `交货数量`,当前默认结果中 15 条展开结果具有交货数量,但页面在上一轮改为订单数量、入库数量、完成数量、合格数量后不再展示 `交货数量`;SAP 数据源的核心交货数量因此不可见。
|
||
18. 检查任务状态,默认结果中任务状态为 0 的 6 行、2 的 1 行、4 的 11 行、无 MES 任务的 2 行;页面以“任务状态大于 0”统一显示“已开工”。按系统现有状态语义,状态 4 是已完成,但在“装配开工”列显示已开工属于简化口径,需确认是否符合业务期望。
|
||
19. 一次补充只读汇总因使用未加方括号的 `RowCount` 别名触发 SQL 语法错误;该语句未修改数据。将别名改为 `[RowCount]` 后重新执行成功。
|
||
20. 由于 SAP 同步和 MES 操作记录实时变化,核查期间个别分支行数短暂波动;最终在 `2026-07-20 09:58:33` 重新取稳定快照,确认 SAP 源 11 行、手工优先源 4 个任务、过程结果 20 行,核心重复结论不变。
|
||
21. 本次所有生产数据库操作均为对象定义读取、临时表和 SELECT 查询,没有创建、更新或删除生产数据库对象及业务数据。
|
||
22. 按仓库 `AGENTS.md` 要求追加本条完整中文审查日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 当前生产过程的数据来源结构与用户描述一致:SAP 发货视图加上 SAP 中不存在的手工优先装配任务。
|
||
- 当前数据结果存在明确问题:操作人联表造成重复行,操作记录与质检记录形成乘积并放大检验数量,页面“合格数量”字段无对应返回值,SAP 与 MES 日期和订单字段混用,手工优先分支绕过三个页面筛选条件。
|
||
- 当前逻辑基数应为 15,过程返回 20,额外 5 行均已定位到具体联表原因。
|
||
- 页面还隐藏了 SAP 交货数量,并把未发料显示为空;这些属于展示口径问题,需要结合业务期望决定是否恢复或调整。
|
||
- 本次只完成诊断,没有修改页面、存储过程或生产业务数据。
|
||
|
||
### 验证结果
|
||
- 生产过程定义和依赖检查完成。
|
||
- 两部分数据源结构检查完成。
|
||
- SAP 源、手工优先源和最终结果基数对账完成。
|
||
- 重复行来源定位完成。
|
||
- 质检数量乘积放大验证完成。
|
||
- 前后端字段映射检查完成。
|
||
- 齐套、发料状态和要求发货日期筛选穿透验证完成。
|
||
- SAP/MES 订单和日期缺失、错配检查完成。
|
||
- 本次未修改生产业务数据。
|
||
- 变更日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 修复发货通知列表重复、合格数量和双来源字段
|
||
|
||
### 用户提问
|
||
- 用户确认需要修复上一轮发货通知列表审查中发现的问题:结果重复、页面合格数量无数据、质检数量因联表乘积被放大,以及 SAP/MES 双来源的订单和日期显示。
|
||
- 用户进一步明确双来源口径:SAP 数据使用 SAP `要求发货时间`,手工编辑为优先的 MES 数据使用 MES `要求发货日期`;销售订单取项目号或合同号,理论上不应为空,当前页面有两行为空需要修复。
|
||
|
||
### 执行过程
|
||
1. 将修复范围限定为用户本轮明确列出的四类问题,不修改上一轮审查中另外提出但用户本轮未要求的交货数量展示和未发料文本等口径。
|
||
2. 复核前端调用,确认 `装配中心任务看板_发货状态查询` 仅被 `DeliveryNoticeList/index.vue` 使用;页面已经读取 `合格数量` 和统一的 `要求发货日期`,本轮只需修复数据库过程返回口径,不需要修改 Vue 页面。
|
||
3. 使用生产数据库执行只读核查,确认两条销售订单为空的数据均来自 SAP 视图中没有生产单号、无法匹配 MES 任务的行;两条 SAP 数据的 `项目号` 均不为空,分别可作为页面销售订单/合同号的回填值。
|
||
4. 设计新的过程结构,先分别构造三个聚合集合再连接主数据:
|
||
- 操作人先按 `TaskAID + 操作人` 去重,再按 TaskAID 使用 `STRING_AGG` 合并为一个逗号分隔字段。
|
||
- 质检记录先按 TaskAID 汇总 `合格数` 为 `合格数量`。
|
||
- 装配工时先按合同号汇总,保持原有合同装配工时口径。
|
||
5. 通过预聚合消除原过程的两个一对多直接联表,避免不同操作人拆成多行,也避免操作记录和质检记录形成笛卡尔乘积。
|
||
6. 调整 SAP 分支的统一页面字段:
|
||
- 页面生产订单返回 `COALESCE(MES订单编号, SAP生产单号)`。
|
||
- 页面销售订单返回 `COALESCE(MES合同号, SAP项目号)`。
|
||
- 页面要求发货日期固定返回 SAP `要求发货时间`。
|
||
- 销售订单筛选同步使用 MES 合同号或 SAP 项目号的合并值。
|
||
7. 保持手工优先分支的数据来源:生产订单和销售订单分别使用 MES 订单编号、MES 合同号,页面要求发货日期使用 MES `要求发货日期`。
|
||
8. 为手工优先分支补充要求发货日期筛选,确保同一个页面日期条件在 SAP 分支按 SAP 日期、在 MES 分支按 MES 日期生效。
|
||
9. 将最终排序改为统一页面字段 `要求发货日期`,然后按订单编号和物料编号排序;两部分数据分别按各自正确日期参与排序。
|
||
10. 将结果集最后一个字段从原 `检验数量` 改为 `合格数量`,值取质检视图 `合格数` 的 TaskAID 汇总,与页面字段名和业务口径一致。
|
||
11. 新增可重复执行的数据库迁移 `db_backups/fix_delivery_notice_list_data_merge_20260720.sql`,使用 `CREATE OR ALTER PROCEDURE` 发布修复。
|
||
12. 发布前创建一次性 SQLCMD 验证脚本,在生产连接中开启事务、临时执行新过程并完成验证后回滚;如果验证中途失败,`XACT_ABORT` 和连接断开也会回滚事务,预演不留下数据库变更。
|
||
13. 事务预演结果:新过程编译成功,返回 15 行,正好等于 SAP 11 行加手工优先 4 个任务;不再有额外重复行。
|
||
14. 事务预演确认所有结果销售订单均非空,两条原空值已经由 SAP 项目号回填。
|
||
15. 事务预演确认所有 SAP 结果的页面 `要求发货日期` 与 SAP `要求发货时间` 一致,手工优先结果保留 MES 要求发货日期;查询不存在的日期 `2099-01-01` 返回 0 行。
|
||
16. 事务预演确认所有 TaskAID 的 `合格数量` 与质检视图独立汇总的 `合格数` 一致,原任务 18081 的联表乘积放大问题被消除。
|
||
17. 事务预演全部通过并回滚后,使用用户此前提供的生产数据库账号正式执行迁移;密码仅通过当前进程环境变量使用,命令结束后清除,没有写入仓库、迁移或日志。
|
||
18. 正式发布后把验证脚本调整为只读检查已发布过程,并再次执行完整验证;结果仍为 SAP 11 行、手工优先 4 行、过程共 15 行,重复修复、销售订单回填、日期来源和合格数量全部通过。
|
||
19. 发布后检查过程元数据,确认生产过程修改时间为 `2026-07-20 10:10:50`;结果集包含一个 `合格数量` 字段,不再包含旧的 `检验数量` 字段。
|
||
20. 删除一次性事务预演和发布后验证脚本,确认临时脚本没有留在工作区。
|
||
21. 本次没有更新生产业务表数据;修复仅重建查询过程,页面下次查询会直接使用新结果。
|
||
22. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_data_merge_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货通知列表查询过程已完成双来源修复并发布生产数据库。
|
||
- SAP 11 行与手工优先 4 个任务现在准确返回 15 行,不再因多个操作人产生 5 条额外记录。
|
||
- 操作人改为单行合并显示,质检合格数先汇总后关联,不再发生操作记录与质检记录的乘积放大。
|
||
- 页面“合格数量”现有正确的后端字段和数据来源。
|
||
- SAP 数据显示 SAP 要求发货时间,手工优先数据显示 MES 要求发货日期,日期筛选和排序使用同一统一输出字段。
|
||
- 两条原销售订单空值已由 SAP 项目号回填,当前结果销售订单无空值。
|
||
- 本次未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- 新过程生产事务预演和回滚通过。
|
||
- 正式生产迁移发布成功。
|
||
- 发布后两个来源逻辑行数验证通过:SAP 11、手工优先 4、合计 15。
|
||
- 发布后重复记录检查通过。
|
||
- 发布后销售订单非空检查通过。
|
||
- 发布后 SAP/MES 日期来源检查通过。
|
||
- 发布后未来日期筛选检查通过。
|
||
- 发布后合格数量独立汇总对账通过。
|
||
- 生产过程结果字段检查通过:有 `合格数量`,无旧 `检验数量`。
|
||
- 临时验证脚本已清理。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知操作人仅显示当前加工人员
|
||
|
||
### 用户提问
|
||
- 用户要求发货通知列表的“操作人”只取当前正在加工的人;同一个任务有多人正在加工时拼接显示。
|
||
- 用户指定判定逻辑的数据来源参考 `MES_人员工时记录_获取进行中任务2`,但明确要求发货查询由一个存储过程直接输出,不复用或调用该过程。
|
||
|
||
### 执行过程
|
||
1. 搜索仓库中 `MES_人员工时记录_获取进行中任务2` 的调用位置和技术资料,确认该过程用于装配中心和质量中心查询全部未结束装配任务。
|
||
2. 使用生产数据库只读查询过程元数据和完整定义,确认该过程参数为 `@用户ID nvarchar(50)`,但当前定义实际没有使用该参数过滤数据。
|
||
3. 提取生产过程的“当前正在加工”四项真实条件:
|
||
- `操作类别 = '开始加工'`。
|
||
- `结束时间 IS NULL`。
|
||
- `工位名称 LIKE '%装配%'`。
|
||
- `操作数值 IS NOT NULL`。
|
||
4. 确认原发货查询上一轮修复后虽然已按 TaskAID 合并操作人,但其数据范围仍包含所有历史操作记录,不符合“只显示当前正在加工人员”的新要求。
|
||
5. 新建独立前向迁移 `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`;迁移完整定义 `装配中心任务看板_发货状态查询`,没有修改或依赖原 `MES_人员工时记录_获取进行中任务2`。
|
||
6. 在发货查询内部增加 `当前加工操作人去重` CTE,直接读取 `YL_加工中心_操作记录表` 并应用上述四项条件,同时排除空操作人姓名。
|
||
7. 在去重 CTE 中按 `TaskAID + 操作人` 使用 `DISTINCT`,避免同一人员对同一任务存在重复未结束记录时重复显示姓名。
|
||
8. 增加 `当前加工操作人汇总` CTE,按 TaskAID 使用 `STRING_AGG` 和姓名排序拼接所有当前加工人员;一个人显示一个姓名,多人以逗号连接。
|
||
9. SAP 分支和手工优先分支均只关联该当前加工人员汇总,不再关联历史操作人集合;其他上一轮已经修复的行数、销售订单、日期和合格数量逻辑保持不变。
|
||
10. 对新增迁移执行空白检查,首次发现文件末尾多一空行;清理后检查通过,仅有仓库换行符转换提示。
|
||
11. 创建一次性 SQLCMD 事务预演脚本,在生产连接中开始事务、临时执行新过程、完成结果验证后回滚,预演不留下生产数据库变更。
|
||
12. 事务预演确认发货查询仍返回 15 行,没有因操作人范围变化重新产生重复数据。
|
||
13. 事务预演使用独立 CTE按相同四项条件重新汇总当前加工人员,并逐 TaskAID 与发货结果操作人对账,差异数量为 0。
|
||
14. 事务预演检查过程定义,确认不包含文本 `MES_人员工时记录_获取进行中任务2`,没有通过 `EXEC`、`INSERT EXEC` 或其他方式复用原过程。
|
||
15. 事务预演快照中,当前 15 个发货结果任务没有满足四项条件的未结束装配加工记录,因此有当前加工人员的任务数为 0、多人同时加工任务数为 0,页面操作人为空符合当前实际状态。
|
||
16. 事务预演通过并回滚后,使用用户此前提供的生产数据库账号正式执行新迁移;密码仅通过当前进程环境变量使用,命令结束后清除,未写入仓库、迁移或日志。
|
||
17. 正式发布后把验证脚本调整为只读检查已发布过程,再次验证发货结果行数、当前加工人员逐 TaskAID 对账和未复用原过程,全部通过。
|
||
18. 发布后精确检查过程定义,确认开始加工、未结束、装配工位、操作数值非空四项条件均存在,原进行中任务过程名称不存在。
|
||
19. 发布后生产过程修改时间为 `2026-07-20 10:16:13`。
|
||
20. 删除一次性事务预演和发布后验证脚本,确认没有临时验证资源残留。
|
||
21. 本次没有更新生产业务表数据,也没有修改 `MES_人员工时记录_获取进行中任务2`;仅重建发货状态查询过程。
|
||
22. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货通知列表操作人现在只显示满足“开始加工、未结束、装配工位、操作数值非空”的当前加工人员。
|
||
- 同一 TaskAID 的当前加工人员先按姓名去重,再按姓名排序并以逗号拼接。
|
||
- 发货查询直接读取操作记录表并一次性输出全部页面数据,没有调用或复用 `MES_人员工时记录_获取进行中任务2`。
|
||
- 上一轮修复的 SAP 11 行加手工优先 4 行、销售订单、双来源日期和合格数量口径保持不变。
|
||
- 当前生产快照没有发货任务正在装配加工,操作人暂时为空属于正确结果;后续产生未结束加工记录后会自动显示对应人员。
|
||
- 本次未修改生产业务数据和原进行中任务过程。
|
||
|
||
### 验证结果
|
||
- 新过程生产事务预演和回滚通过。
|
||
- 正式生产迁移发布成功。
|
||
- 发货结果行数保持 15 行。
|
||
- 当前加工人员独立汇总逐 TaskAID 对账通过。
|
||
- 四项当前加工条件定义检查通过。
|
||
- 多人拼接 SQL 结构检查通过。
|
||
- 未复用 `MES_人员工时记录_获取进行中任务2` 检查通过。
|
||
- 生产过程修改时间检查通过。
|
||
- 临时验证脚本已清理。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知合格数量改为终检口径
|
||
|
||
### 用户提问
|
||
- 用户指出生产订单 8169 的订单数量只有 16,但发货通知列表显示合格数量 32,要求核查并修复。
|
||
|
||
### 执行过程
|
||
1. 查询生产数据库中订单 8169 对应的装配任务,确认 TaskAID 为 23552,计划数量、完成数量和入库数量均为 16。
|
||
2. 查询该 TaskAID 的原始质检记录,确认不是视图重复行:同一任务分别存在收检 16 合格和终检 16 合格两条记录。
|
||
3. 检查已发布的 `装配中心任务看板_发货状态查询`,定位到 `质检汇总` 对全部质检类型直接执行 `SUM(合格数)`,因此把收检和终检相加为 32。
|
||
4. 搜索仓库现有生产关闭、齐套跟踪和终检页面逻辑,确认生产完工及发货相关合格数量统一使用 `质检类型 = '终检'`;终检页面对应检测类型编号为 8。
|
||
5. 对当前发货来源任务按质检类型批量对账,发现 6403、7517、8168、8169 均同时存在收检与终检,原口径分别产生 10、100、16、32 的翻倍结果。
|
||
6. 按终检口径重新汇总后,上述订单合格数量分别为 5、50、8、16,均未超过各自计划数量;未采用按计划数量强制截断的方式,避免掩盖真实数据异常。
|
||
7. 修改 `db_backups/fix_delivery_notice_list_current_operators_20260720.sql` 中的 `质检汇总`,增加 `WHERE 质检类型 = N'终检'`,SAP 与手工优先两个分支继续共用同一个按 TaskAID 汇总后的结果。
|
||
8. 创建一次性 SQLCMD 事务预演脚本,在生产连接中临时重建过程并查询 8169。首次预演的过程执行成功,但定义断言使用 `LIKE` 时方括号被解释为模式字符,断言主动报错;连接关闭后未提交事务自动回滚,生产过程没有发生变更。
|
||
9. 将断言改为 `CHARINDEX` 精确字符串检查后重新预演,确认过程定义已限定终检,8169 返回计划数量 16、合格数量 16,随后正常回滚事务。
|
||
10. 使用同一迁移脚本正式更新生产数据库,仅修改查询存储过程,没有更新任何生产业务表数据。
|
||
11. 发布后调用完整发货查询并按当前来源动态对账。当前实时数据已从早先快照的 SAP 11 行变为 10 行,手工优先仍为 4 行,理论总数 14,过程实际返回 14;说明行数变化来自 SAP 实时源,而非本次口径修改丢行。
|
||
12. 发布后确认 8169 合格数量为 16、8168 为 8、6403 为 5;7517 已不在当前 SAP 发货源中,因此不再出现在页面结果。
|
||
13. 检查生产过程定义,确认终检限制存在,正式发布时间为 `2026-07-20 10:22:10`。
|
||
14. 删除一次性事务预演脚本,确认仓库没有遗留临时验证文件。
|
||
15. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 8169 显示 32 的原因是同一任务的收检 16 与终检 16 被错误相加,并非订单实际有 32 件合格品。
|
||
- 发货通知列表的“合格数量”现已只汇总终检合格数,8169 正确显示为 16。
|
||
- 同类翻倍问题已一并修复,没有针对单个订单写特殊逻辑,也没有使用计划数量截断结果。
|
||
- 本次仅更新发货查询存储过程,未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- 生产事务预演及回滚通过。
|
||
- 正式生产迁移发布成功。
|
||
- 8169 计划数量 16、合格数量 16。
|
||
- 当前 SAP 10 行加手工优先 4 行,过程返回 14 行,来源行数对账通过。
|
||
- 终检过滤定义检查通过。
|
||
- 临时验证脚本已清理。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知齐套与发料状态筛选修复
|
||
|
||
### 用户提问
|
||
- 用户反馈发货通知列表的“齐套”和“发料状态”筛选结果不准确,要求修改。
|
||
|
||
### 执行过程
|
||
1. 检查 `DeliveryNoticeList/index.vue` 的筛选选项与传参,确认齐套传递“是/否”,发料状态传递“发料齐套/发料缺件/未发料”,参数名称与存储过程一致。
|
||
2. 查询生产数据库 `View_生产订单_MES` 的实际值分布,确认齐套使用数值 1 或空值,发料状态使用数值 1、2 或空值;页面分别把它们映射为是/否及发料齐套/发料缺件/未发料。
|
||
3. 检查已发布的 `装配中心任务看板_发货状态查询`,发现 SAP 分支在选择任意齐套或发料状态时都使用 `OR a.TaskAID IS NULL`,导致没有匹配 MES 任务的 SAP 行无条件通过所有筛选。
|
||
4. 发现手工优先分支虽然接收两个参数,但没有应用齐套和发料状态条件,因此所有手工优先任务也会通过任意筛选。
|
||
5. 使用页面显示口径对当前生产结果进行发布前对账:全部 14 行;齐套“是”返回 10 行但有 2 行实际为否,齐套“否”返回 10 行但有 4 行实际为是;发料齐套返回 6 行但有 2 行错误,发料缺件返回 6 行且全部错误,未发料返回 14 行但有 4 行实际为发料齐套。
|
||
6. 修改 `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`:从 SAP 分支的两个筛选条件中移除无条件放行 MES 空任务的逻辑,使空齐套只归入“否”、空发料状态只归入“未发料”。
|
||
7. 在手工优先分支补充与 SAP 分支完全一致的齐套和发料状态筛选条件,保证两个数据来源使用同一口径。
|
||
8. 修改 `DeliveryNoticeList/index.vue` 的发料状态格式化逻辑,将空值和非 1、2 的状态明确显示为“未发料”,并给“未发料”使用与其他未完成状态一致的提示样式。
|
||
9. 使用同一数据库连接和事务临时执行新过程,对全部五个筛选值逐项调用并检查每一行显示口径;验证齐套是 8 行、否 6 行,发料齐套 4 行、发料缺件 0 行、未发料 10 行,各分类互斥且合计均为全部 14 行,随后回滚事务。
|
||
10. 执行 `git diff --check`,没有发现空白错误,仅有仓库既有的 LF/CRLF 转换提示。
|
||
11. 尝试对页面单文件运行 ESLint,检查进程 60 秒内没有输出并超时终止;随后使用仓库已安装的 `vue-template-compiler` 和 Babel 解析器检查 Vue 模板与脚本,语法解析通过。
|
||
12. 使用已通过预演的迁移脚本正式更新生产数据库,只修改查询存储过程,没有更新生产业务表数据。
|
||
13. 发布后再次以页面相同参数逐项调用生产过程并检查返回行,全部筛选均无错误数据;齐套与发料状态的各分类合计分别等于完整结果 14 行。
|
||
14. 确认发布后生产过程修改时间为 `2026-07-20 10:33:07`。
|
||
15. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DeliveryNoticeList/index.vue`
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- SAP 数据和手工优先数据现在执行相同的齐套、发料状态筛选规则。
|
||
- 齐套值为空时只属于“否”,不再错误进入“是”。
|
||
- 发料状态为空或不是齐套/缺件时只属于“未发料”,不再进入其他状态;页面也会明确显示“未发料”。
|
||
- 没有 MES 匹配任务的 SAP 行不再无条件通过所有筛选。
|
||
- 本次未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- SQL 事务预演和回滚通过。
|
||
- Vue 模板与脚本语法解析通过。
|
||
- 正式生产迁移发布成功。
|
||
- 当前全部 14 行;齐套是 8 行、否 6 行,分类合计 14 行。
|
||
- 当前发料齐套 4 行、发料缺件 0 行、未发料 10 行,分类合计 14 行。
|
||
- 五种筛选结果逐行显示口径检查均无错误数据。
|
||
- 生产过程修改时间检查通过。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知已完成质检任务自动隐藏
|
||
|
||
### 用户提问
|
||
- 用户要求增加发货通知列表消失条件:合格数量加不合格数量等于计划数量(订单数量)时,不再在列表显示。
|
||
|
||
### 执行过程
|
||
1. 检查当前发货查询的质检汇总,确认页面合格数量已经按终检合格数汇总,但过程尚未汇总用于判断完成状态的不合格数量。
|
||
2. 搜索仓库现有订单关闭规则,确认系统业务口径使用“终检合格数 + 收检不合格数 = 计划数量”;收检不合格品不会继续进入终检,因此不能只使用终检不合格数。
|
||
3. 查询当前发货任务的终检合格、终检不合格和收检不合格数据,确认当前存在6个满足完成条件的 TaskAID:6403、7968、8168、8169、8243、8405;现有这些任务的不合格数均为0。
|
||
4. 确认订单6403在SAP发货源中有两条不同交货行,因此6个已完成任务对应7个应从列表隐藏的结果行。
|
||
5. 修改 `db_backups/fix_delivery_notice_list_current_operators_20260720.sql` 的 `质检汇总`:终检记录汇总合格数量,收检记录汇总不合格数量,并继续按 TaskAID 形成单行结果,避免质检记录一对多扩大列表行数。
|
||
6. 在SAP分支增加消失条件;有MES任务且计划数量不为空时,终检合格数量与收检不合格数量之和等于计划数量的行不再输出。
|
||
7. 对没有匹配MES任务的SAP行进行显式保留,避免 TaskAID、计划数量和质检数量均为空时被错误计算为 `0 = 0` 后隐藏。
|
||
8. 在手工优先分支增加相同消失条件,保证两个数据来源继续使用一致规则;计划数量为空时保留,避免空计划被误判为已完成。
|
||
9. 使用生产数据库事务临时执行新过程,并使用独立来源CTE计算理论行数:当前来源25行、应隐藏7行、剩余18行,过程实际返回18行,8169已经隐藏。
|
||
10. 在事务预演中重新调用齐套是/否和三种发料状态筛选,确认上一轮修复的筛选仍逐行准确,且各分类仍完整覆盖过滤后的结果。
|
||
11. 事务预演全部通过后回滚,没有留下生产数据库变更。
|
||
12. 执行迁移文件空白检查,未发现空白错误。
|
||
13. 使用同一迁移脚本正式更新生产数据库,仅重建查询存储过程,没有修改生产业务表数据。
|
||
14. 发布后重新调用完整过程并独立计算当前来源和隐藏数量,确认来源25行、隐藏7行、列表18行;8169不在列表中。
|
||
15. 发布后确认隐藏的订单结果为8168、6403两行、7968、8243、8405、8169,生产过程修改时间为 `2026-07-20 10:53:26`。
|
||
16. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
17. 最终工作区检查发现发货页面同步出现了列顺序调整,并遗留一处新增行尾空格;完整保留列顺序修改,仅清除空白字符,最终 `git diff --check` 通过。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货通知列表现在会自动隐藏“终检合格数量 + 收检不合格数量 = 计划数量”的已完成质检任务。
|
||
- SAP与手工优先两个来源执行相同消失条件。
|
||
- 没有MES任务或计划数量为空的数据不会被空值误判为已完成。
|
||
- 质检数量先按TaskAID汇总,新增条件不会重新产生重复行或数量放大。
|
||
- 本次未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- SQL事务预演及回滚通过。
|
||
- 当前来源25行、应隐藏7行、过程剩余18行,对账通过。
|
||
- 8169已从列表消失。
|
||
- 齐套与发料状态筛选回归验证通过。
|
||
- 正式生产迁移发布成功。
|
||
- 生产过程修改时间检查通过。
|
||
- 工作区空白检查通过。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知增加派发日期并调整消失条件
|
||
|
||
### 用户提问
|
||
- 用户要求在发货通知列表“齐套”后增加“派发”字段,取 `dbo.View_生产订单_MES.派工时间`,只显示年月日。
|
||
- 用户要求把消失条件调整为:终检合格数量加收检不合格数量等于计划数量,并且终检合格数量等于入库数量时才从列表消失。
|
||
|
||
### 执行过程
|
||
1. 检查发货通知页面当前列顺序,确认“齐套”后紧接“发料状态”,新增“派发”列应插入两者之间,并保留工作区中已经存在的其他列顺序调整。
|
||
2. 检查发货查询两个数据分支的输出字段,确认均可直接读取 `View_生产订单_MES.派工时间`,SAP未匹配MES任务时该字段自然为空。
|
||
3. 查询当前已满足质检数量条件的任务及入库数量:6403和7968终检合格数量分别为5和10,但入库数量均为0,应按新规则重新显示;8168、8169、8243、8405的终检合格数量均等于入库数量,应继续隐藏。
|
||
4. 修改SAP分支输出,在齐套字段后增加 `CONVERT(date, a.派工时间) AS 派发`,由数据库直接去掉时分秒。
|
||
5. 修改手工优先分支输出同一字段并保持UNION两侧字段顺序与类型一致。
|
||
6. 修改SAP分支消失条件:只有“终检合格 + 收检不合格 = 计划数量”并且“终检合格 = 入库数量”同时成立时隐藏;任一条件不成立则保留。
|
||
7. 修改手工优先分支相同条件,继续显式保留计划数量为空的数据;SAP分支继续保留没有MES任务的数据。
|
||
8. 修改 `DeliveryNoticeList/index.vue`,在齐套列后增加派发列,并通过页面现有 `formatDate` 再次保证只显示年月日。
|
||
9. 使用Vue模板编译器和Babel解析器检查修改后的单文件组件,模板与脚本语法均通过。
|
||
10. 使用生产数据库事务临时执行新过程,独立计算当前来源与理论隐藏数量;当前来源25行、新规则隐藏4行、过程返回21行,对账一致。
|
||
11. 事务预演逐行检查派发字段,确认字段存在且所有非空日期的时分秒均为0。
|
||
12. 事务预演确认6403两条SAP交货行和7968一行已重新显示,8168、8169、8243、8405仍然隐藏;齐套和发料状态筛选分类仍完整覆盖全部结果。
|
||
13. 预发布空白检查通过;随后用于展示关键行的 `rg` 命令因PowerShell引号转义错误退出,改用简单匹配重新检查,确认代码无误,该错误没有影响文件或数据库。
|
||
14. 使用已通过预演的迁移脚本正式更新生产数据库,只重建查询存储过程,没有修改生产业务表数据。
|
||
15. 发布后再次调用完整过程和独立来源查询,确认来源25行、隐藏4行、列表21行,派发仅含日期,目标订单显示与隐藏状态均符合新规则。
|
||
16. 确认生产过程修改时间为 `2026-07-20 11:17:28`。
|
||
17. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DeliveryNoticeList/index.vue`
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货通知列表“齐套”后已增加“派发”列,数据来自 `View_生产订单_MES.派工时间`,只显示年月日。
|
||
- 任务现在仅在质检数量完成并且全部终检合格品已经入库时消失。
|
||
- 已完成质检但尚未完全入库的任务会继续留在列表中。
|
||
- SAP与手工优先两个来源使用相同字段和消失条件。
|
||
- 本次未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- Vue模板与脚本语法解析通过。
|
||
- SQL事务预演及回滚通过。
|
||
- 当前来源25行、新规则隐藏4行、过程返回21行,对账通过。
|
||
- 派发字段存在且仅包含日期。
|
||
- 6403和7968重新显示;8168、8169、8243、8405继续隐藏。
|
||
- 齐套与发料状态筛选回归验证通过。
|
||
- 正式生产迁移发布成功。
|
||
- 生产过程修改时间检查通过。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知要求发货日期空值置后并按派发排序
|
||
|
||
### 用户提问
|
||
- 用户要求发货通知列表排序时把要求发货日期为空的数据放在最后,然后按照派发日期排序。
|
||
|
||
### 执行过程
|
||
1. 检查生产过程当前排序,确认使用 `ORDER BY 要求发货日期, 订单编号, 物料编号`,SQL Server升序会把空日期排在最前,不符合要求。
|
||
2. 调用当前生产过程检查实际顺序,确认列表21行中有2条要求发货日期为空的数据,订单404和7849位于列表最前。
|
||
3. 确定统一排序规则:首先按要求发货日期是否为空排序,非空在前、空值在后;然后按要求发货日期升序;同一要求发货日期内按派发升序;最后按订单编号和物料编号稳定排序。
|
||
4. 因原查询由SAP和手工优先两个SELECT通过 `UNION ALL` 组成,直接在UNION排序中增加CASE表达式会受到SQL Server排序字段限制,因此将两个来源包装为统一的 `发货数据` CTE。
|
||
5. 在最外层 `SELECT * FROM 发货数据` 应用统一排序,两个来源不再各自处理顺序,返回字段保持不变。
|
||
6. 使用生产数据库事务临时执行新过程,逐行检查要求发货日期:确认非空日期升序,遇到空值后不再出现非空日期。
|
||
7. 在事务预演中检查同一要求发货日期内的派发顺序,确认按派发升序;最后两个结果为要求发货日期为空的404、7849。
|
||
8. 首次预演输出中空日期计数没有显示,原因是PowerShell变量名以 `null` 开头被解析为空值;改用普通变量名后断言继续通过,但中文“条”紧邻变量名又被当作变量名的一部分。该问题只影响验证文本显示,不影响SQL断言、事务或排序结果。
|
||
9. 执行迁移文件空白检查和关键排序代码检查,均通过。
|
||
10. 使用已通过预演的迁移脚本正式更新生产数据库,仅重建查询存储过程,没有修改生产业务表数据。
|
||
11. 发布后再次调用完整过程并逐行验证,确认列表21行、空要求发货日期2行且全部置后、末尾订单为404和7849,同一要求发货日期内按派发升序。
|
||
12. 确认生产过程修改时间为 `2026-07-20 11:23:02`。
|
||
13. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 要求发货日期非空的数据现在排在前面,并按日期升序。
|
||
- 要求发货日期为空的数据统一排在列表最后。
|
||
- 同一要求发货日期内按派发日期升序,随后按订单编号和物料编号保持稳定顺序。
|
||
- SAP与手工优先数据在合并后统一排序。
|
||
- 本次未修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- SQL事务预演及回滚通过。
|
||
- 发布后列表21行,2条空要求发货日期全部置后。
|
||
- 末尾空日期订单为404、7849。
|
||
- 非空要求发货日期升序检查通过。
|
||
- 同一要求发货日期内派发升序检查通过。
|
||
- 正式生产迁移发布成功。
|
||
- 生产过程修改时间检查通过。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 发货通知查询性能优化
|
||
|
||
### 用户提问
|
||
- 用户确认发货通知列表功能已无问题,但查询速度较慢,要求优化查询性能。
|
||
|
||
### 执行过程
|
||
1. 使用生产数据库分别测量主要数据源与完整过程耗时:`View_生产订单_MES` 2723行约53毫秒,SAP发货源21行约84毫秒,当前装配加工记录17行约60毫秒,质检记录30159行约37毫秒,装配工时5362行约266毫秒;完整发货过程返回21行却需要约7297毫秒。
|
||
2. 由分段耗时确认单个视图数据量并不是主要问题,瓶颈位于大型CTE、UNION和多视图关联形成的执行计划。
|
||
3. 开启生产连接的 `STATISTICS IO/TIME` 采集实际统计信息,确认优化前过程CPU约6625至7046毫秒、总耗时约6708至7192毫秒。
|
||
4. 统计信息显示 `YL_加工中心_操作记录表` 被扫描约972390次,产生约3004694次逻辑读,是主要性能问题;质检表也被扫描19次并产生33858次逻辑读。
|
||
5. 查询相关视图定义和现有索引,确认操作记录表现有索引以TaskAID开头,当前CTE经过优化器展开后在两个结果分支及复杂视图关联中被嵌套循环反复执行。
|
||
6. 尝试查询缓存过程统计时引用了当前SQL Server版本不支持的 `last_rows` 列,查询只读失败;移除该方向后使用已经取得的实际IO、CPU和客户端计时完成定位,没有修改数据库状态。
|
||
7. 选择在存储过程内部物化小型汇总结果,而不是直接新增生产表永久索引,避免扩大数据库物理结构变更范围。
|
||
8. 将当前加工操作人去重、排序和拼接结果写入会话临时表 `#当前加工操作人汇总`,并按TaskAID创建唯一聚集索引;原开始加工、未结束、装配工位和操作数值非空条件保持不变。
|
||
9. 将终检合格数与收检不合格数汇总写入 `#质检汇总`,按TaskAID创建唯一聚集索引,质检业务口径和消失条件保持不变。
|
||
10. 将装配班组合同工时汇总写入 `#合同装配工时汇总`,按合同号创建索引;SAP和手工优先两个分支改为关联三个已经物化且有统计信息的小结果集。
|
||
11. 本地临时表仅存在于每次过程调用的数据库会话中,过程结束后自动清理,不会在数据库留下临时业务数据,也不会在并发用户之间共享。
|
||
12. 在生产事务中临时执行优化后的过程,先调用旧过程保存基准结果,再调用新过程逐行逐列对比;21行、43列的字段名称、字段顺序、每个字段值及最终排序完全一致。
|
||
13. 事务预演计时结果:原过程7711毫秒,优化过程首次编译执行3737毫秒,再次执行851毫秒;验证通过后回滚事务。
|
||
14. 执行迁移文件空白检查和临时表索引定义检查,均通过。
|
||
15. 使用已通过预演的迁移脚本正式更新生产数据库,仅重建查询存储过程,没有修改生产业务表数据或新增永久索引。
|
||
16. 发布后连续执行三次完整查询,耗时分别为587毫秒、557毫秒、558毫秒,结果保持21行、43列;相比发布前7711毫秒,常规查询速度约提升13倍。
|
||
17. 发布后重新采集统计信息,操作记录相关扫描由约972390次降至合计约106617次,逻辑读由约3004694次降至约334468次;总CPU约1800毫秒、数据库端耗时约604毫秒。
|
||
18. 发布后确认消失条件、派发字段和排序结果均保持不变:6403两行仍显示,8168、8169、8243、8405仍隐藏,2条空要求发货日期仍位于末尾404、7849。
|
||
19. 发布后逐项调用齐套是/否和发料齐套/缺件/未发料筛选,逐行显示口径检查通过,两组分类合计均等于完整结果21行。
|
||
20. 确认生产过程修改时间为 `2026-07-20 11:29:55`。
|
||
21. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含明文数据库密码。
|
||
|
||
### 修改文件
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 发货通知完整查询由约7.7秒降低到约0.56秒,常规查询速度约提升13倍。
|
||
- 性能提升来自将操作人、质检和合同工时汇总各执行一次并物化,避免CTE在复杂关联中被反复扫描。
|
||
- 返回的21行、43列及所有字段值、顺序和业务筛选与优化前完全一致。
|
||
- 优化只使用过程内会话临时表和临时索引,没有新增永久数据库对象或修改生产业务数据。
|
||
|
||
### 验证结果
|
||
- 生产事务预演及回滚通过。
|
||
- 优化前后21行、43列逐行逐列对比一致。
|
||
- 发布后连续三次耗时587毫秒、557毫秒、558毫秒。
|
||
- 操作记录逻辑读由约300万降低到约33万。
|
||
- 关键订单显示与隐藏状态回归通过。
|
||
- 要求发货日期和派发排序回归通过。
|
||
- 齐套与发料状态筛选回归通过。
|
||
- 正式生产迁移发布成功。
|
||
- 生产过程修改时间检查通过。
|
||
- 日志未包含明文数据库密码。
|
||
|
||
## 2026-07-20 整理今日修改清单
|
||
|
||
### 用户提问
|
||
- 用户要求整理今天完成的修改。
|
||
|
||
### 执行过程
|
||
1. 检索 `gptlog-process/gpdlog.md` 中日期为2026-07-20的标题,共确认13段此前执行记录,覆盖设计工时报表权限、设计任务多选、排产日程加工状态和发货通知列表审查、修复与优化。
|
||
2. 检查当前Git工作区和差异统计,确认今日已记录业务修改涉及5个Vue页面、3个数据库迁移文件以及持续追加的中文过程日志。
|
||
3. 逐项复核设计工时报表权限迁移和页面参数,确认普通用户本人范围、领导/管理员全部范围以及两个生产查询过程均已发布和验证。
|
||
4. 复核设计任务页面差异,确认指派对象与对齐可见多选、远程查询保留、历史ID姓名还原和列表多人显示均属于今日修改。
|
||
5. 复核两个排产页面差异,确认日程从设备状态过程读取当前加工TaskAID,并以绿色优先显示正在加工任务。
|
||
6. 根据发货通知今日9段连续日志整理最终状态,包括双来源合并、重复消除、终检数量、当前操作人、筛选、消失条件、派发日期、排序及性能优化;以最终规则为准,避免把中间规则误写成最终结论。
|
||
7. 核对生产发布验证结果,确认设计权限两个过程和发货通知查询过程均已发布,发货查询最终保持21行、43列并由约7.7秒降低到约0.56秒。
|
||
8. 检查未记录差异,发现 `src/views/PlanManagement/SelfMakePlando/index.vue` 另有一行“产品单位”表格列修改;该项不在今日GPT执行日志中,整理时单独标注为现有未归属改动,不声称由本轮实现或验证。
|
||
9. 检查当前工作区状态,确认所有修改仍未提交:7个业务Vue文件和日志为已修改状态,3个数据库迁移文件为未跟踪状态;整理过程不执行提交、推送或业务代码修改。
|
||
10. 按仓库 `AGENTS.md` 要求追加本条完整中文执行日志,日志不包含数据库凭据。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 今日已记录的功能修改可归纳为四类:设计工时报表权限、设计任务多人指派、排产日程加工中绿色标识、发货通知列表完整修复与性能优化。
|
||
- 设计权限与发货通知数据库过程已发布生产并完成数据对账;设计任务和排产页面为前端代码修改。
|
||
- 当前工作区修改尚未提交,3个数据库迁移文件尚未纳入版本控制。
|
||
- `SelfMakePlando/index.vue` 的“产品单位”列属于当前存在但未记录归属的额外修改。
|
||
|
||
### 验证结果
|
||
- 今日13段执行日志标题核对完成。
|
||
- 当前Vue与SQL修改文件清单核对完成。
|
||
- 生产发布状态和最终业务规则核对完成。
|
||
- 未归属工作区差异已单独识别。
|
||
- 本次仅整理和记录,没有修改业务代码、生产过程或业务数据。
|
||
|
||
## 2026-07-20 根据发货任务堵点文档生成明日计划
|
||
|
||
### 用户提问
|
||
- 用户要求根据桌面 `发货任务堵点.docx` 生成明日计划:上午先对接并确认文档内容,随后按文档开发、测试和与客户确认,预计持续到13:20-14:20;下午分析设计报工工时整体流程并建档,梳理入口、功能、存储过程、表、视图和页面,同时预留处理线上临时问题的时间。
|
||
- 用户要求沿用给出的时间段格式,每小时拆分为六条记录,内容允许重复。
|
||
|
||
### 执行过程
|
||
1. 使用只读方式打开 `C:/Users/meswork764/Desktop/发货任务堵点.docx` 内部Open XML,没有修改原文档,也没有生成临时解压文件。
|
||
2. 提取文档内容,确认需求覆盖仓库任务大屏、大厅计划大屏、质检测试大屏和装配大屏。
|
||
3. 确认发货数据来源由SAP视图 `[SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES]` 与MES优先任务组成,并包含物料编码为3420-YT、3420-HT时查看子任务的特殊规则。
|
||
4. 提取堵点判断顺序:齐套、派发、发料、开工、装配、质检、仓库;提取四类看板各自的数据范围和隐藏规则。
|
||
5. 识别文档中的待确认点:装配判断的“继续”和“堵点显示”两条条件都写成完成数量等于计划数量,明日计划中安排与客户确认正确的反向条件。
|
||
6. 按用户给出的8个时间段组织计划,完整一小时按每10分钟一条记录拆为六条。
|
||
7. `10:30-11:50` 共80分钟,拆分为8条10分钟记录;`17:20-18:00` 共40分钟,拆分为4条10分钟记录;全天合计48条记录。
|
||
8. 上午计划覆盖需求逐条确认、数据源和字段对照、公共堵点逻辑开发、四类看板接入、测试及客户验收确认。
|
||
9. 下午计划覆盖设计报工流程入口、页面功能、接口调用、存储过程、表和视图依赖、数据流及权限流程建档,并在各阶段预留线上问题定位和修正。
|
||
10. 本次只生成计划文本并追加过程日志,没有修改业务代码、数据库过程、生产数据或原始Word文档。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 已按每10分钟一条记录生成8个时间段、共48条明日计划。
|
||
- 上午以发货任务堵点需求对接、开发、测试和客户确认为主,13:20-14:20完成联调验收和问题修正。
|
||
- 下午以设计报工工时全流程分析建档为主,覆盖入口、功能、页面、存储过程、表、视图和数据关系,并兼顾线上临时问题。
|
||
- 文档中装配判断条件重复的问题已明确列为需求确认项。
|
||
|
||
### 验证结果
|
||
- Word文档内容读取完成。
|
||
- 8个时间段全部覆盖。
|
||
- 完整小时均拆分为6条10分钟记录。
|
||
- 非完整小时按实际分钟数拆分,总计48条。
|
||
- 本次未修改原始文档和业务资源。
|
||
|
||
## 2026-07-20 调整明日计划记录格式
|
||
|
||
### 用户提问
|
||
- 用户要求去掉明日计划中“(1)08:30-08:40”一类子序号和子时间格式,任务可以写得稍大一些,允许重复。
|
||
|
||
### 执行过程
|
||
1. 保留用户给出的8个主时间段和“明日计划”总体结构。
|
||
2. 每个主时间段仍安排6条记录,便于按下发要求录入,共48条。
|
||
3. 删除每条记录前的子序号和10分钟起止时间,只保留任务描述。
|
||
4. 将过细的字段级、步骤级内容合并为需求对接、数据梳理、功能开发、联调测试、客户确认、流程建档和问题处理等较大工作项。
|
||
5. 上午继续围绕发货任务堵点文档开展对接、开发、测试和客户确认;下午继续围绕设计报工工时整体流程开展页面、过程、表、视图和数据流分析建档。
|
||
6. 对开发、测试、需求确认、文档整理和线上问题处理等持续性工作允许在同一或相邻时间段重复记录。
|
||
7. 本次只调整计划文本和追加过程日志,没有修改业务代码、数据库、生产数据或原始Word文档。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 明日计划已改为8个主时间段、每段6条大工作项。
|
||
- 每条记录不再包含子序号和10分钟时间格式。
|
||
- 工作项粒度更适合报工填写,持续性任务允许重复。
|
||
|
||
### 验证结果
|
||
- 8个主时间段保留。
|
||
- 每段6条记录,共48条。
|
||
- 子序号和子时间已移除。
|
||
- 本次未修改业务资源。
|
||
|
||
## 2026-07-21 新增四类大屏发货任务堵点查询
|
||
|
||
### 用户提问
|
||
- 用户要求根据桌面 `发货任务堵点.docx` 修改大厅计划、仓库、装配和质检测试大屏,并指定已完成的发货通知页面及 `装配中心任务看板_发货状态查询` 作为参考。
|
||
- 经需求确认,装配阶段在完成数量小于计划数量时显示“装配”,相等后继续检查质检和入库;质检大屏使用序检检验数量。
|
||
|
||
### 执行过程
|
||
1. 只读分析需求文档、四个大屏和发货通知参考实现,确认需为不同看板提供不同来源及过滤规则,且不应直接改变发货通知页现有查询口径。
|
||
2. 只读核查生产库字段和枚举,确认终检合格、收检不合格的既有业务口径;确认序检数据在质检记录中对应 `检测类型编号=6、质检类型=收检`。
|
||
3. 新建迁移 `db_backups/create_shipping_bottleneck_dashboard_proc_20260721.sql`,定义独立过程 `dbo.发货任务堵点_看板查询`,参数支持大厅、仓库、装配、质检四种看板类型。
|
||
4. 数据源第一部分读取 `[SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES]` 并左连 MES 生产订单;第二部分读取 `View_生产订单_MES.优先级='是'` 的装配任务,并排除已存在于 SAP 的订单。
|
||
5. 预先按 TaskAID 汇总当前装配操作人、终检合格数量、收检不合格数量和序检检验数量,并按合同号汇总装配工时,避免一对多连接造成重复和数量放大。
|
||
6. 特殊物料编码包含 `3420-YT`、`3420-HT`、`3420-YF` 时堵点直接返回“见子任务”;其他记录依次判断齐套、派发、发料、开工、装配、质检、待入库。
|
||
7. 大厅过滤“终检合格+收检不合格=计划数量”的记录;仓库仅返回 SAP 来源;装配仅返回完成数量小于计划数量;质检仅返回序检检验数量小于完成数量。
|
||
8. 在事务中临时执行迁移并调用四种参数,预演结果为大厅16行、仓库17行、装配12行、质检2行,随后回滚,确认迁移可编译且口径正确。
|
||
9. 两个前端项目完成过程切换和堵点字段接入后,分别执行 `npm run build`,构建成功,仅有既有非阻断警告。
|
||
10. 首次正式发布在提交前的 PowerShell 数据校验中因 DBNull 转 decimal 失败,异常处理成功回滚事务,未创建生产过程。
|
||
11. 修正校验脚本的空值处理后重新执行,事务内验证仓库仅含 SAP、大厅不含已完成质检任务、装配不含已完成装配任务、质检不含已完成序检任务,全部通过后提交。
|
||
12. 正式发布后过程创建及修改时间为 `2026-07-21 10:06:45`;独立复核四种结果仍为16、17、12、2行,每种结果包含28个字段和堵点字段。
|
||
13. 核对原 `装配中心任务看板_发货状态查询` 修改时间仍为 `2026-07-20 11:29:55`,确认发货通知参考过程没有被本次发布覆盖。
|
||
14. 使用本地 Vite 页面连接生产接口,在1920×1080下检查大厅、仓库、装配和质检页面,字段及实时数据正常显示。
|
||
15. 页面复核发现仓库旧汇总过程的发货数量与新SAP明细不一致;前端改为从 `发货任务堵点_看板查询` 的仓库结果计算发货任务、小于今日和加急条数,未再修改数据库过程。
|
||
|
||
### 修改文件
|
||
- `db_backups/create_shipping_bottleneck_dashboard_proc_20260721.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
- 外部看板项目的四个页面数据接入文件。
|
||
|
||
### 结论
|
||
- 四类大屏现共用独立的发货堵点过程,并按看板类型执行各自的数据来源和隐藏条件。
|
||
- 生产过程发布成功,原发货通知查询保持不变,数据库结果、前端构建和页面显示检查均通过。
|
||
- 本次只创建查询过程,没有更新生产业务表数据;日志未记录数据库密码。
|
||
|
||
## 2026-07-21 上传所有修改
|
||
|
||
### 用户提问
|
||
- 用户要求上传当前工作区中的所有修改。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 状态,确认当前分支为 `snapshot/local-save-20260625-154806`,并已跟踪远端分支 `origin/snapshot/local-save-20260625-154806`。
|
||
2. 检查远端配置,确认拉取和推送地址均为 `origin` 对应的 MES 前端仓库。
|
||
3. 核对工作区全部修改,确认内容涵盖计划日历加工状态着色、自制计划产品单位、发货任务看板字段与数据合并、设计任务人员显示、设计报工工时报表权限、委外页面调整,以及 3 份数据库备份脚本;`materialReturn.vue` 最初显示为修改,暂存规范化后确认没有实际内容差异,因此未进入提交。
|
||
4. 执行 `git diff --check`,未发现尾随空格或空白格式错误;仅出现 Git 关于部分文件后续可能由 LF 转换为 CRLF 的提示。
|
||
5. 首次执行 `npm run build` 时因 124 秒命令时限到期而未返回结果,因此提高命令时限后重新执行。
|
||
6. 第二次执行 `npm run build` 成功,Webpack 编译完成;仅有资源体积超出建议值、Browserslist 数据过期等非阻断警告,没有编译错误。
|
||
7. 将本次中文执行日志追加至 `gptlog-process/gpdlog.md`,随后使用 `git add -A` 暂存全部修改。
|
||
8. 将全部暂存内容提交,并推送至远端当前分支 `origin/snapshot/local-save-20260625-154806`。
|
||
9. 推送后复核本地分支与远端分支状态,确认全部修改已上传且工作区无未提交文件。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
- `src/views/PlanManagement/SelfMakePlando/index.vue`
|
||
- `src/views/PlanManagement/SelfMakePlandone/index.vue`
|
||
- `src/views/PlanManagement/WorkstationPlan/index.vue`
|
||
- `src/views/ProductionManagement/DeliveryNoticeList/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/SaleOutsourceMange/index.vue`
|
||
- `db_backups/add_design_report_hours_report_permissions_20260720.sql`
|
||
- `db_backups/fix_delivery_notice_list_current_operators_20260720.sql`
|
||
- `db_backups/fix_delivery_notice_list_data_merge_20260720.sql`
|
||
|
||
### 结论
|
||
- 当前工作区的全部修改已统一提交并推送到远端当前分支。
|
||
- 项目生产构建验证通过,没有阻断上传的编译错误。
|
||
|
||
### 验证结果
|
||
- `git diff --check`:通过。
|
||
|
||
- `npm run build`:通过,存在非阻断警告。
|
||
- Git 推送:成功。
|
||
- 推送后工作区:干净,本地分支与远端分支同步。
|
||
|
||
## 2026-07-20 评估明日计划可完成性
|
||
|
||
### 用户提问
|
||
- 用户询问调整后的明日计划是否合理、能否完成。
|
||
|
||
### 执行过程
|
||
1. 将计划区分为“报工记录拆分”和“实际交付承诺”两个维度评估,避免因为48条记录数量较多而误判为48个独立交付项。
|
||
2. 复核上午发货堵点范围,确认涉及公共数据源、七级堵点判断、特殊物料子任务、四个任务大屏、各自隐藏规则、测试和客户确认,实际范围较大。
|
||
3. 识别需求未完全确定的风险:文档装配判断正反条件重复、质检“前序不合格数”口径、仓库不合格数来源、特殊物料子任务展示方式仍需客户确认。
|
||
4. 评估上午有效工作时间约4小时40分钟;若已有发货查询基础可以复用、客户及时确认且四个大屏共用后端输出,完成公共查询、主要页面接入和首轮测试有可能,但四屏全部开发、完整回归和客户修改在14:20前完成存在较高风险。
|
||
5. 评估下午设计报工流程建档范围,页面、功能、存储过程、表、视图和数据流的第一版目录及主流程可以在约3小时内完成;若要求逐字段、逐参数验证并同时处理线上问题,则难以当天形成完整定稿。
|
||
6. 建议增加14:20阶段检查点:发货功能按期通过时切换报工建档;若仍有联调问题,优先保证发货功能闭环,将报工建档目标降为第一版框架和对象清单。
|
||
7. 建议把需求确认、公共堵点查询、至少一个核心看板接入、首轮测试和报工流程第一版文档设为必须完成项;四个看板全部优化、客户新增调整、完整报工技术档案作为争取完成项。
|
||
8. 本次只进行计划评估并追加过程日志,没有修改计划文件、业务代码、数据库或生产数据。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 该计划用于报工填写是合理的,任务方向和时间顺序基本正确。
|
||
- 该计划作为当天全部交付承诺偏满,主要风险是四个大屏同时开发测试、客户确认时效以及临时线上问题。
|
||
- 在需求上午及时冻结、公共逻辑能够复用且没有较大线上问题的情况下,核心任务可以完成;全部扩展内容能否完成不应作刚性承诺。
|
||
- 建议以14:20为切换检查点,并保留最后40分钟作为修正和归档缓冲。
|
||
|
||
### 验证结果
|
||
- 上午开发范围和未确认口径已识别。
|
||
- 下午建档范围和可交付粒度已评估。
|
||
- 必须完成项、争取完成项和阶段检查点已给出。
|
||
- 本次未修改业务资源。
|
||
|
||
## 2026-07-21 生成工时模块全流程技术说明 PDF
|
||
|
||
### 用户提问
|
||
- 用户要求详细整理从加工中心、装配中心开始,到工时校验结束的全部工时相关功能,包括页面、存储过程、计算方法、数据表、视图等,并生成 PDF 文件。
|
||
- 用户提供了数据库只读查询条件,明确要求只可查询、不可修改。
|
||
|
||
### 执行过程
|
||
1. 检索生产管理前端目录及数据库备份脚本,定位加工中心、装配中心、工时修正、工时校验、人员绑定、班次管理等相关页面。
|
||
2. 逐页提取 `CreateData` 调用、前端校验条件、开始/结束动作、加班选择、异常工时、工时编辑和 SAP 调用逻辑。
|
||
3. 确认加工中心通过 `MES_ProductTask_WorkingStart`、`MES_ProductTask_HelpStart`、`MES_ProductTask_HelpEnd`、`MES_ProductTask_ProdReport` 产生工时记录。
|
||
4. 确认装配中心通过 `MES_人员工时记录_开始` 和 `MES_人员工时记录_结束` 产生人员工时和加班记录。
|
||
5. 确认工时修正页面可更新起止时间、设备工时、人员工时和班次标准工时,并支持补录操作记录。
|
||
6. 确认工时校验页面按昨日以前记录进行筛选,调用批量工时计算过程,并逐条补充 SAP 工序和资源、提交资源工时单据,上传成功后保存校验副本。
|
||
7. 使用只读 SQL 查询数据库系统目录,核对当前存储过程参数、对象类型、对象依赖、表字段、索引、视图定义、函数定义和班次配置;未执行任何业务存储过程,未写入或修改数据库数据。
|
||
8. 读取 `MES_ProductCenter_OptRecord_Save` 当前定义,确认设备总时长、暂停总时长和实际工时的计算与开始/结束记录配对规则。
|
||
9. 读取 `计算人员工时` 和 `计算班次重叠秒数` 当前定义,确认人员、工位、班次绑定及重叠秒数的拆分逻辑。
|
||
10. 读取 `usp_CalculateDailyRatio`、`usp_CalculateShiftTime`、`usp_CalculateUploadMinutes`、`usp_BatchValidateWorkTime` 和 `usp_ValidateWorkTime` 当前定义,整理当日归一化系数、班次内外拆分及 SAP 上传分钟公式。
|
||
11. 读取 `View_生产工时视图`、`View_生产工时视图全部`、`View_校验后的生产工时`、`View_工位人员绑定数` 和 `View_设备工位人员` 当前定义,整理视图连接、字段优先级和过滤规则。
|
||
12. 核对 `YL_加工中心_操作记录表`、`生产管理_工时校验_校验工时表`、`YL_加工中心_报工记录`、班次及绑定相关表的字段用途。
|
||
13. 核对 `src/api/b1s.js` 和工时校验页面,整理 SAP `ProductionOrders` 查询/更新、资源行计划量调整和 `InventoryGenExits` 工时单据映射。
|
||
14. 明确文档边界:以工时校验为终点;工时查询、工时报表、结算工时和设计报工属于校验后统计或其他业务域,不作为主流程展开。
|
||
15. 整理当前实现中的重点风险,包括班次配置与代码注释不一致、日期筛选参数未生效、300 秒跳过 SAP、批量计算详情未落库、直接校验前端硬编码权限、校验表缺少唯一约束等。
|
||
16. 编写详细 HTML 文档,包含目录、总流程、页面清单、加工/装配流程、工时修正、校验流程、计算公式、过程函数矩阵、表视图说明、SAP 映射、状态单位、风险和验收用例。
|
||
17. 使用本机 Edge 无头打印生成 PDF,保留 HTML 作为可维护源文件。
|
||
18. 使用 PDF 文本解析检查成品,共 20 页、约 1.5 万个可检索字符,无空白页,关键过程、视图、SAP 接口和风险章节均存在。
|
||
19. 检查 PDF 字体对象,确认包含嵌入式 TrueType 字体;使用浏览器截图确认 HTML 中文和版式正常。Node 版 PDF.js 画布后端对部分中文子集字体映射不完整,因此该预览图不作为成品显示判定依据。
|
||
20. 计算 PDF SHA256 校验值,并将仅用于校验的临时浏览器配置和预览图片移出工作区。
|
||
21. 保留工作区中与本任务无关的既有修改,不覆盖、不撤销,也不纳入本次文档内容。
|
||
|
||
### 新增文件
|
||
- `doc/工时模块全流程技术说明_20260721.html`
|
||
- `doc/工时模块全流程技术说明_20260721.pdf`
|
||
|
||
### 结论
|
||
- 已完成从加工中心、装配中心到工时校验结束的工时模块全流程整理。
|
||
- 文档详细覆盖 6 个直接或支撑页面、核心存储过程和函数、事实表与校验表、统一工时视图、人员/班次绑定、设备与人员工时计算、加班规则、SAP 上传以及现状风险。
|
||
- 数据库查询全过程为只读,没有修改数据库对象、配置或业务数据。
|
||
- PDF 共 20 页,可检索、无空白页;HTML 源文件一并保留,便于后续更新。
|
||
|
||
### 验证结果
|
||
- 前端页面和调用链检索:完成。
|
||
- 数据库当前对象定义只读核对:完成。
|
||
- PDF 文件生成:成功。
|
||
- PDF 页数:20 页。
|
||
- PDF 可检索文本:约 1.5 万字符。
|
||
- PDF 空白页:0 页。
|
||
- PDF SHA256:`C2A90033708903EB3AC64AD015369F6D136236A375A315869D8B5EAE8B9F68B8`。
|
||
|
||
## 2026-07-21 扩展工时模块 PDF 范围
|
||
|
||
### 用户提问
|
||
- 用户确认工时查询、工时报表和结算工时也属于工时模块,需要补充外协部分、生产计划跟踪报表等功能。
|
||
- 用户确认设计报工不纳入本文,并要求删除“现状风险与核对项”章节。
|
||
|
||
### 执行过程
|
||
1. 检索 `Workhours`、`Timesheet`、`SettlementWorkhours`、`OutsourceMange`、`SaleOutsourceMange`、`OutsourceSheet` 和 `ProductionPlanTrack` 页面,提取查询参数、树形分组、汇总公式、导出和外协发收料调用。
|
||
2. 使用只读 SQL 查询当前数据库定义,核对 `生产管理_工时查询_工序工时_查询`、项目/作业者/任务/设备四类工时统计过程、`生产管理_结算工时_查询`、`生产管理_生产计划跟踪`、外协管理和外协报表过程。
|
||
3. 确认工时查询使用当前生产工时视图,按 TaskAID、日期、单次开始记录形成三级工序工时树,并关联工艺库标准工时。
|
||
4. 确认工时报表使用包含已关闭订单的全量工时视图,提供项目、作业者、任务和设备四个页签及四套导出过程;人员班组用于工时类型分类。
|
||
5. 确认结算工时连接生产计划、资源任务和工时视图,按物料及订单工位形成两层汇总,计算报工、辅助、合计和单件结算工时。
|
||
6. 读取 `View_外协报表视图`、外协任务查询、外协发料保存和外协收料保存定义,确认外协发料写“收料”记录、外协收料写“报工”记录。
|
||
7. 确认标准生产工时视图排除工位为“外协”的记录,因此外协不参与内部设备/人员工时校验,而通过外协任务、操作事件、采购、发收料和质检链路单独跟踪。
|
||
8. 读取生产计划跟踪过程,确认其合并全部订单、工艺标准工时、操作起止、外协结束、收检/终检和任务状态,并由前端生成订单工序路线。
|
||
9. 修改文档封面、范围、总流程和页面清单,将查询、报表、结算、外协和生产计划跟踪纳入完整工时模块。
|
||
10. 新增“工时查询、工时报表与结算工时”章节,详细记录数据范围、三级结构、有效工时口径、结算公式和导出方式。
|
||
11. 新增“外协与生产计划跟踪”章节,详细记录外协在工时体系中的边界、派工、发料、收料、外协报表和生产路线跟踪。
|
||
12. 扩展存储过程、数据表、视图、页面调用矩阵和代码来源清单,并统一重排为 16 章。
|
||
13. 将设计报工、设计工时校验和设计工时报表明确列为排除业务域。
|
||
14. 完整删除“现状风险与核对项”及原验收用例,不保留目录链接或章节残留。
|
||
15. 重新使用 Edge 生成 PDF,并用 PDF 文本解析检查页数、可检索字符、空白页和新增页面路径。
|
||
16. 使用浏览器截图复核新版封面、目录、中文字体和版式,显示正常。
|
||
17. 数据库操作全过程仅执行只读查询,没有执行存储过程,没有修改数据库对象、配置或业务数据。
|
||
|
||
### 修改文件
|
||
- `doc/工时模块全流程技术说明_20260721.html`
|
||
- `doc/工时模块全流程技术说明_20260721.pdf`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 工时查询、工时报表、结算工时、外协管理、外协报表和生产计划跟踪已纳入工时模块说明。
|
||
- 设计报工相关页面和数据库对象明确排除。
|
||
- “现状风险与核对项”章节已完整删除。
|
||
- 新版文档共 23 页,覆盖从现场报工、外协业务、工时校验到查询、统计、结算和生产计划跟踪的完整链路。
|
||
|
||
### 验证结果
|
||
- HTML 章节数量:16 章。
|
||
- PDF 页数:23 页。
|
||
- PDF 可检索文本:约 1.99 万字符。
|
||
- PDF 空白页:0 页。
|
||
- 新增页面路径检查:全部存在。
|
||
- 已删除章节残留检查:未发现。
|
||
- PDF SHA256:`93D33B50BBDF7FBF42D3B70A744C76F494AEF3F9CDC8C90F1FC9237976577567`。
|
||
|
||
## 2026-07-21 根据工作内容生成明日计划
|
||
|
||
### 用户提问
|
||
- 用户提供 8 个明日工作时间段,要求根据生产退库接口、采购申请接口、大屏刷新与设备状态、及时拣配机加/装配报表、标牌打印内容管理及临时调整归档等内容生成明日计划。
|
||
- 用户要求每小时拆分为 6 条记录,内容允许重复。
|
||
|
||
### 执行过程
|
||
1. 保留用户给出的 8 个主时间段和工作先后顺序。
|
||
2. 按每 10 分钟一条记录拆分:完整 1 小时时间段各生成 6 条。
|
||
3. `10:30-11:50` 共 80 分钟,生成 8 条记录;`17:20-18:00` 共 40 分钟,生成 4 条记录。
|
||
4. 全天共生成 48 条计划记录。
|
||
5. `08:30-09:30` 围绕生产退库接口和采购申请接口的现状核对、参数修改、联调及验证安排。
|
||
6. `09:30-10:30` 围绕所有大屏自动刷新方式、刷新时间、机加看板一设备运行状态及明细安排。
|
||
7. `10:30-11:50` 和 `13:20-14:20` 围绕 SAP 及时拣配机加报表的数据源、字段、接口、页面和联调安排。
|
||
8. `13:20-14:20` 和 `14:20-15:20` 同时衔接及时拣配装配报表的数据对接、开发、测试和修正。
|
||
9. `15:20-17:20` 围绕标牌打印内容管理页面的字段对接、功能开发、测试和修改安排。
|
||
10. `17:20-18:00` 安排大屏及报工临时调整、版本整理和当日修改归档。
|
||
11. 本次只生成计划文本并追加过程日志,没有修改业务代码、数据库对象或业务数据。
|
||
|
||
### 修改文件
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 已按 8 个主时间段生成 48 条明日计划记录。
|
||
- 完整小时均拆分为 6 条,非完整小时按实际每 10 分钟一条拆分。
|
||
- 计划覆盖接口修改、大屏调整、及时拣配机加/装配报表、标牌打印内容管理、临时问题和版本归档。
|
||
|
||
### 验证结果
|
||
- 主时间段:8 个。
|
||
- 完整小时拆分:每段 6 条。
|
||
- 80 分钟时段:8 条。
|
||
- 40 分钟时段:4 条。
|
||
- 全天计划记录:48 条。
|
||
|
||
## 2026-07-22 检查及时齐套跟踪结果订单 8238 少一条数据
|
||
|
||
### 用户提问
|
||
- 用户反馈“生产管理-及时齐套跟踪结果”查询生产订单(订单编号)`8238` 时,存储过程只返回 6 条数据,而 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]` 中有 7 条,要求检查原因。
|
||
- 用户进一步明确问题位于存储过程而非页面,并提供数据库 `192.168.2.92` 的连接账号和密码;日志不记录明文密码。
|
||
|
||
### 执行过程
|
||
1. 在项目中检索“及时齐套”“齐套跟踪”和 `VIEW_Jijiankukc`,定位查询过程为 `dbo.生产管理_及时齐套跟踪结果_查询`,本地对应脚本为 `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`。
|
||
2. 检查本地过程脚本,确认过程先从 SAP 视图读取未发货数量大于 0 的缺件,再在最终结果处使用 `ROW_NUMBER()` 分组去重,并仅保留 `rn = 1`。
|
||
3. 使用用户提供的连接信息,以只读方式连接 `192.168.2.92 / YL_MESDB`;未执行任何数据库写入、对象发布或数据修改。
|
||
4. 查询线上过程元数据,确认 `dbo.生产管理_及时齐套跟踪结果_查询` 最后修改时间为 `2026-07-15 14:25:11.830`,线上定义同时包含 SAP 源级去重和最终结果去重逻辑。
|
||
5. 查询 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] WHERE DocEntry = 8238`,确认共有 7 条缺件记录,SAP 行号分别为 `2、3、21、28、33、48、75`,且未发货数量均大于 0。
|
||
6. 执行 `EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号 = 8238`,确认过程实际返回 6 条,SAP 行号为 `2、3、21、28、48、75`,缺少 SAP 行号 `33`。
|
||
7. 对比缺少的 SAP 行号 `33` 与保留的行号 `48`:行号 33 为物料 `23601-032-A6x6x25`(平键),缺件数量 2;行号 48 为物料 `23202-030-M5x12`(螺钉),缺件数量 5;两条均为外购件,且“在制采购”均为 `4957`。
|
||
8. 核对过程字段映射,确认外购件的“缺件生产订单号”实际取 `在制采购`。最终去重按“订单号 + 缺件生产订单号”分组;当该字段为空时才改用“缺件物料编码 + SAP 行号”。因此两种不同外购物料因共同的 `在制采购 = 4957` 被错误归到同一组。
|
||
9. 使用与过程一致的分组和排序表达式复算 7 条记录:SAP 行号 48 因缺件数量 5 较大得到 `rn = 1` 并保留,SAP 行号 33 得到 `rn = 2`,被最终 `WHERE rn = 1` 排除;其余 5 条均为各自分组的 `rn = 1`。
|
||
10. 本次按“检查原因”的范围仅完成只读诊断,未修改业务代码、存储过程或数据库数据。
|
||
|
||
### 结论
|
||
- 页面或 SAP 视图没有少数据,少一条发生在 `dbo.生产管理_及时齐套跟踪结果_查询` 的末级去重。
|
||
- 被排除的是 SAP 行号 `33`、物料 `23601-032-A6x6x25`(平键)。它与 SAP 行号 `48`、物料 `23202-030-M5x12`(螺钉)的“在制采购”均为 `4957`,过程误把两条不同外购物料视为同一“缺件生产订单号”分组。
|
||
- 分组内按缺件数量倒序,行号 48 的缺件数量为 5,得到 `rn = 1`;行号 33 的缺件数量为 2,得到 `rn = 2` 并被过滤,所以最终由 7 条变成 6 条。
|
||
- 若后续修复,外购件不应仅按“在制采购”去重,应至少将物料编码或 SAP 行号纳入去重键;自制件仍可按实际缺件生产订单号归并。该修复本次未执行。
|
||
|
||
### 验证结果
|
||
- SAP 视图订单 8238:7 条。
|
||
- 存储过程订单 8238:6 条。
|
||
- 明确缺失记录:SAP 行号 33,平键,缺件数量 2。
|
||
- 末级去重复算:行号 33 的 `rn = 2`,行号 48 的 `rn = 1`。
|
||
- 数据库修改:无。
|
||
|
||
## 2026-07-22 修正及时齐套跟踪结果订单 8238 外购缺件误去重
|
||
|
||
### 用户提问
|
||
- 用户确认上一轮诊断结论正确,要求修正 `dbo.生产管理_及时齐套跟踪结果_查询` 将订单 `8238` 的两种不同外购物料误合并的问题。
|
||
|
||
### 执行过程
|
||
1. 制定执行步骤:核对线上与本地去重逻辑、修改过程脚本、事务预演、正式发布、回归验证和追加日志。
|
||
2. 读取本地 `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql` 第 379 至 425 行,并读取线上过程定义末段,确认两者均按“订单号 + 缺件生产订单号”执行最终 `ROW_NUMBER()` 去重。
|
||
3. 检查该 SQL 脚本的 Git 状态,确认修改前脚本没有用户的未提交改动,可以在现有最新过程脚本上进行最小范围修改。
|
||
4. 修改最终去重键:当 `[缺件属性] = N'外购'` 时,优先使用“缺件物料编码 + SAP 行号”;非外购件仍优先使用缺件生产订单号,缺件生产订单号为空时仍回退到“缺件物料编码 + SAP 行号”。
|
||
5. 创建临时事务预演脚本,在同一数据库会话中先将线上旧过程对订单 8238 的结果写入临时表,然后开启事务、加载新过程定义、再次执行过程并比较前后结果,最后回滚事务。
|
||
6. 事务预演结果:修改前 6 条、修改后 7 条;唯一新增记录为 SAP 单据 `8238`、SAP 行号 `33`、物料 `23601-032-A6x6x25`(平键)、缺件数量 2、缺件属性“外购”、缺件生产订单号 `4957`。
|
||
7. 事务预演未发现减少记录,也未发现相同 SAP 单据和 SAP 行号的重复结果;事务正常回滚。
|
||
8. 删除仅用于预演的临时 SQL 文件,确认线上过程修改时间仍为 `2026-07-15 14:25:11.830` 且尚未包含新分组分支,证明预演没有残留线上修改。
|
||
9. 对正式脚本执行 `git diff --check`,未发现空白符或补丁格式错误;差异仅为最终分组 `CASE` 中新增一条外购判断。
|
||
10. 使用 `sqlcmd -b` 正式执行 `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`,成功发布 `dbo.生产管理_及时齐套跟踪结果_查询`。
|
||
11. 发布后通过存储过程方式执行订单号 8238,结果为 7 条,SAP 行号为 `2、3、21、28、33、48、75`;SAP 视图中未发货数量大于 0 的记录同样为 7 条、7 个不同 SAP 行。
|
||
12. 发布后确认行号 33 的平键和行号 48 的螺钉均正常返回,虽然两条的缺件生产订单号均为 `4957`,但不再互相覆盖;结果中相同 SAP 单据和 SAP 行号的重复数量为 0。
|
||
13. 首次使用 SQL `LIKE` 检查线上定义时,由于方括号在 `LIKE` 模式中具有特殊含义而得到错误的 0;改用 `CHARINDEX` 精确检查后,确认线上定义已经包含新的外购分组分支,并仍保留自制件按缺件生产订单号归并的分支。
|
||
14. 线上过程最新修改时间为 `2026-07-22 09:00:01.960`。
|
||
15. 保留工作区内原有的其他未提交修改,没有覆盖或撤销与本任务无关的文件。
|
||
|
||
### 修改文件
|
||
- `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 已修正外购物料共用“在制采购”编号时被末级去重误合并的问题。
|
||
- 外购件现在按“订单号 + 物料编码 + SAP 行号”区分,自制件仍按“订单号 + 缺件生产订单号”归并,原有自制件逻辑未改变。
|
||
- 订单 8238 的平键和螺钉现在都会返回,存储过程结果已由 6 条恢复为与 SAP 视图一致的 7 条。
|
||
- 修正后的存储过程已经正式发布到 `192.168.2.92 / YL_MESDB`。
|
||
|
||
### 验证结果
|
||
- 事务预演:修改前 6 条,修改后 7 条,唯一新增 SAP 行号 33,无减少、无重复,随后回滚成功。
|
||
- 正式发布:成功。
|
||
- 线上新外购分组分支:存在。
|
||
- 线上原自制件归并分支:保留。
|
||
- SAP 视图订单 8238:7 条,7 个不同 SAP 行。
|
||
- 存储过程订单 8238:7 条,SAP 行号完整。
|
||
- 存储过程结果重复 SAP 键:0。
|
||
- `git diff --check`:通过。
|
||
|
||
## 2026-07-22 修正工时校验人员工时在加工工时为零时的显示
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `src/views/ProductionManagement/WorkHoursCheck/index.vue` 的“人员工时”列,解决 `scope.row.加工工时 = 0` 时的计算问题。
|
||
|
||
### 执行过程
|
||
1. 检查“人员工时”列、设备工时列、编辑表单及 SAP 上传逻辑,确认业务口径为:加工工时大于 0 时属于设备工时,人员工时显示 0;加工工时为 0 时,人员工时显示“总时长 / 60”。
|
||
2. 检查工作区差异,发现该行已有未提交尝试,条件使用多个 `OR` 判断,导致条件恒为真,且真值分支直接返回加工工时,无法正确处理加工工时为 0 的情况。
|
||
3. 首次应用补丁时,该行在读取后发生并行变化,补丁因上下文不一致而未应用;重新读取最新文件后,确认代码恢复为 `scope.row.加工工时 != NULL ? 0 : scope.row.总时长 / 60`。
|
||
4. 将表达式修改为:先用 `Number(scope.row.加工工时 || 0)` 统一数值类型;等于 0 时显示 `Number(scope.row.总时长 || 0) / 60`,否则显示 0;保留原两位小数及末尾零清理规则。
|
||
5. 使用 Node 复算边界值:加工工时为数值 0、字符串 `"0"`、`null` 和空字符串时,人员工时分别按总时长折算;加工工时为正数或正数字符串时显示 0。
|
||
6. `git diff --check` 通过。随后启动页面 ESLint,但用户切换到新任务时该检查被中断;本次表达式本身未产生语法错误。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/WorkHoursCheck/index.vue`
|
||
|
||
### 结论
|
||
- 加工工时为 0、`"0"`、空值或空字符串时,人员工时现在正确显示“总时长 / 60”。
|
||
- 加工工时大于 0 时,人员工时显示 0。
|
||
|
||
### 验证结果
|
||
- 加工工时 0、总时长 3600:显示 60。
|
||
- 加工工时 `"0"`、总时长 3600:显示 60。
|
||
- 加工工时 `null`、总时长 1800:显示 30。
|
||
- 加工工时 1200、总时长 3600:显示 0。
|
||
- `git diff --check`:通过。
|
||
|
||
## 2026-07-22 增加设计报工工时校验数据权限
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Check/index` 页面数据权限:普通用户只能查看自己创建任务或自己报工的数据;角色包含“领导”或“管理员”的用户可以查看全部数据。
|
||
|
||
### 执行过程
|
||
1. 检索页面路径,确认项目中的实际文件为 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`,页面查询过程为 `dbo.设计报工_工时校验_查询`。
|
||
2. 检查审核页面查询参数、当前用户获取方式和存储过程定义。修改前页面未传当前用户或角色,线上校验查询过程只有 8 个筛选参数,并直接调用无权限限制的 `dbo.设计报工_记录_查询`。
|
||
3. 检查本模块已有的 `add_design_report_hours_report_permissions_20260720.sql` 和工时报表页面,确认现有权限口径使用当前用户名、角色编号及 `登录基础数据_角色信息.Roles_Function`,角色功能包含“领导”或“管理员”时可查看全部。
|
||
4. 核对线上表结构:任务表具有 `创建人` 字段;报工记录表具有 `操作人ID` 和 `操作人` 字段;角色表包含 `Roles_number` 和 `Roles_Function`。
|
||
5. 查询线上特权角色,确认当前包含超级管理员、质量部领导、管理员、采购部领导、设备管理员和技术部领导等角色,均可按“领导/管理员”关键字识别。
|
||
6. 修改审核页面 `buildSearchParams()`,增加 `当前操作人` 和 `角色编号` 参数;增加 `currentRoleId()`,沿用模块现有方式从 Vuex `token` getter 取得角色编号。
|
||
7. 新增 `db_backups/add_design_report_check_permissions_20260722.sql`,重新定义 `dbo.设计报工_工时校验_查询`。过程保留原 8 个筛选参数和返回字段,并增加 `@当前操作人`、`@角色编号` 两个可选参数。
|
||
8. 新过程通过角色表判断 `Roles_Function` 是否包含“领导”或“管理员”。特权角色不限制数据;普通角色必须满足任务创建人等于当前用户,或报工操作人等于当前用户;当前用户名为空且不是特权角色时不返回数据。
|
||
9. 创建临时事务预演脚本,在事务内加载新过程并测试四种身份:普通用户“张立柱”返回 53 条,空用户名返回 0 条,技术部领导返回全部 184 条,超级管理员返回全部 184 条。
|
||
10. 对普通用户的 53 条结果逐行核对,越权记录为 0;反向检查全部任务创建人或报工人为“张立柱”的记录,遗漏记录为 0。
|
||
11. 回滚预演事务并删除临时脚本;确认线上过程仍为原 8 个参数且不含新权限参数,证明预演没有残留修改。
|
||
12. 对正式 SQL 和页面差异执行 `git diff --check`,检查通过。
|
||
13. 正式执行 `add_design_report_check_permissions_20260722.sql`,成功发布 `dbo.设计报工_工时校验_查询` 到 `192.168.2.92 / YL_MESDB`。
|
||
14. 发布后重新调用线上过程:普通用户“张立柱”返回 53 条,与独立 SQL 计算的本人相关记录 53 条一致;空用户名返回 0 条;技术部领导和超级管理员均返回当前全部 184 条。
|
||
15. 检查线上过程元数据,确认参数已从 8 个增加到 10 个,包含当前操作人和角色编号,且同时包含“领导”和“管理员”角色判断;线上修改时间为 `2026-07-22 10:22:33.010`。
|
||
16. 执行页面 ESLint。完整规则检查发现页面原有第 58 行属性顺序警告和第 315 行函数括号空格错误,均不在本次差异中;临时关闭这两条既有规则后重新检查,本次修改通过,仅有依赖数据过期提示。
|
||
17. 保留工作区内其他未提交修改,没有覆盖或撤销与本任务无关的文件。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `db_backups/add_design_report_check_permissions_20260722.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计报工工时校验页面现在由数据库查询过程执行数据权限,不依赖前端返回后再过滤。
|
||
- 普通用户只能查看自己创建任务产生的报工记录,或操作人为自己的报工记录。
|
||
- 当前用户名为空的普通角色不返回数据,避免登录信息缺失时放开权限。
|
||
- `Roles_Function` 包含“领导”或“管理员”的角色可以查看全部数据。
|
||
- 权限过程已正式发布到生产数据库。
|
||
|
||
### 验证结果
|
||
- 普通用户“张立柱”:53 条;预期 53 条;越权 0;遗漏 0。
|
||
- 普通角色且当前用户为空:0 条。
|
||
- 技术部领导:184 条,与全部记录一致。
|
||
- 超级管理员:184 条,与全部记录一致。
|
||
- 线上过程参数:10 个,权限参数及角色判断均存在。
|
||
- `git diff --check`:通过。
|
||
- 页面 ESLint(排除两项既有规则):通过。
|
||
|
||
## 2026-07-22 为设计任务和设计报工增加附件功能
|
||
|
||
### 用户提问
|
||
- 用户要求在设计任务和设计报工界面增加“上传附件”和“查看附件”功能,上传和查看方法参考 `ProcessManagement/PartDrawing/index`。
|
||
- 用户特别说明附件不一定是 PDF,需要正确处理不同文件类型的查看方式;还要求解决上传文件重名覆盖问题,可使用时间戳或更可靠的唯一命名方案。
|
||
|
||
### 执行过程
|
||
1. 检索参考页面和目标页面,确认参考文件为 `src/views/ProcessManagement/PartDrawing/index.vue`,目标文件为 `src/views/ProductionManagement/DesignReportTask/Task/index.vue` 和 `Report/index.vue`;两个目标文件修改前没有未提交差异。
|
||
2. 拆解参考页面上传链路:使用 `MESUploadFile.ashx` 接收 `file + params`,参数包含业务编号、表名、上传人和上传时间;文件访问根路径为 `/webpage/part/`;参考页的 PDF 查看使用 `seepdf`。
|
||
3. 查询线上 `物料基础数据_零件图纸` 表结构和近期数据,确认通用上传表具有 `id、num、uid、name、suffix、是否启用、worker、uploadTime` 8 个字段,且上传接口按实际文件名保存物理文件。
|
||
4. 查询 `工艺管理_图纸维护_查看图纸` 当前定义并使用只读 HTTP 请求核对文件路径。确认近期文件不能通过 `uid.pdf` 访问,而可以通过 URL 编码后的 `name.pdf` 访问;因此数据库 `uid` 不是当前真实文件路径,物理重名必须在上传前处理。
|
||
5. 确定附件按设计任务 `DID` 共享:设计任务页面和设计报工页面查看同一任务时使用同一附件集合,允许一个任务上传多份附件。
|
||
6. 新增 `db_backups/create_design_report_attachments_20260722.sql`,创建与通用上传接口兼容的 `dbo.MES_设计报工_附件` 表,字段顺序和基础上传表保持一致,并增加按 `num、是否启用、id` 查询的索引。
|
||
7. 在同一脚本中新增 `dbo.设计报工_附件_查询`,按 `DID` 查询启用附件,返回附件 ID、原文件名、物理存储文件名、文件类型、上传人和上传时间。
|
||
8. 设计物理文件唯一命名规则:`DESIGN_TASK_<DID>_<年月日时分秒毫秒>_<随机串>__<清洗后的原文件名>.<扩展名>`。时间戳和浏览器密码学随机数共同保证唯一,任务 ID 便于定位;双下划线作为内部名前缀和原文件名的分隔符。
|
||
9. 文件名清洗会替换 Windows 文件系统不允许的字符、去除尾部点号和空格、限制总长度;上传时创建真正的新 `File`/`Blob` 并将唯一名称作为 multipart 文件名提交,因此数据库记录和物理目录都不会因同名附件互相覆盖。
|
||
10. 查询过程通过双下划线分隔符去掉内部唯一前缀,列表仍向用户显示原文件名;同名附件可以并存,并可通过上传人和上传时间区分。
|
||
11. 新增共享组件 `src/views/ProductionManagement/DesignReportTask/components/TaskAttachments.vue`,集中实现附件对话框、最多 10 个文件选择、单文件 100MB 限制、逐个上传、结果统计、附件查询、文件类型显示、预览和下载。
|
||
12. 非 PDF 查看采用分流策略:PDF、PNG/JPG/JPEG/GIF/BMP/WebP 和 TXT/CSV/JSON/Markdown 等浏览器可安全展示格式在新窗口预览;Word、Excel、压缩包及其他格式通过 Blob 下载并使用原文件名保存,由本机程序查看。
|
||
13. 安全复核时将 SVG、HTML、HTM 和 XML 从直接预览列表移除,改为下载后查看,避免主动内容在附件站点直接执行。
|
||
14. 在设计任务页面操作列增加带上传和查看图标的“上传附件”“查看附件”按钮,将操作列宽度从 340 调整为 540,并注册共享附件组件。
|
||
15. 在设计报工页面操作列增加相同两个按钮,将操作列宽度从 440 调整为 640,并注册同一共享附件组件;两个页面调用统一的 `openAttachments(row, mode)`。
|
||
16. 初次运行共享组件 ESLint 时发现文件名清洗正则的控制字符范围触发 `no-control-regex`;考虑浏览器文件名不会包含该范围,移除控制字符范围并保留 Windows 非法字符处理,随后三个 Vue 文件 ESLint 全部通过。
|
||
17. 创建临时事务预演脚本,在事务内创建附件表和过程,插入一个启用的 DOCX 示例和一个停用的 PDF 示例。查询正确返回 `报价附件_最终版.docx`,保留唯一物理文件名,停用附件未返回,索引存在。
|
||
18. 回滚事务、删除临时预演脚本,并确认线上附件表和过程均不存在,证明预演没有残留对象或数据。
|
||
19. 正式执行 `create_design_report_attachments_20260722.sql`,成功发布 `MES_设计报工_附件` 和 `设计报工_附件_查询` 到 `192.168.2.92 / YL_MESDB`。
|
||
20. 发布后检查线上对象:附件表共 8 个兼容字段,任务查询索引存在,查询过程有 1 个 `@DID` 参数,修改时间为 `2026-07-22 13:38:17.420`;新表当前 0 条数据。
|
||
21. 执行 `npm run build`,Webpack 生产构建成功,仅保留项目原有字体、图片和入口包体积警告。
|
||
22. 使用相同随机算法在同一批次生成 1000 个标识,1000 个均唯一,重复数为 0;实际文件名还同时包含 DID 和毫秒时间戳。
|
||
23. 启动本地开发服务器。因 1997 端口已有服务,新实例自动使用 `https://127.0.0.1:1998/`;HTTP 状态为 200,最后一次热更新编译成功。
|
||
24. 最终对 SQL、共享组件和两个页面执行 `git diff --check`,检查通过;未覆盖或撤销工作区内其他用户修改。
|
||
25. 没有向生产附件目录上传测试文件:现有上传接口没有提供可确认删除物理文件的测试清理能力,为避免留下孤立测试文件,本次使用线上既有上传行为、兼容表结构、数据库事务、前端 ESLint、生产构建和开发服务器编译完成验证。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/components/TaskAttachments.vue`
|
||
- `db_backups/create_design_report_attachments_20260722.sql`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计任务和设计报工页面均已增加上传附件和查看附件入口,并共享同一套附件数据和组件逻辑。
|
||
- 附件不限制为 PDF;浏览器适合展示的安全格式直接预览,Office、压缩包和主动内容格式下载后查看。
|
||
- 物理文件名采用 DID、毫秒时间戳、密码学随机串和原文件名组合,同名附件不会覆盖;界面仍显示原文件名。
|
||
- 附件数据库表和查询过程已经正式发布到生产数据库。
|
||
- 本地开发服务器运行于 `https://127.0.0.1:1998/`。
|
||
|
||
### 验证结果
|
||
- 共享组件 ESLint:通过。
|
||
- 设计任务页面 ESLint:通过。
|
||
- 设计报工页面 ESLint:通过。
|
||
- 数据库事务预演:通过,DOCX 原文件名还原正确,停用附件过滤正确,随后回滚成功。
|
||
- 数据库正式发布:成功。
|
||
- 线上附件表字段:8 个,与通用上传接口参考表兼容。
|
||
- 线上任务附件索引:存在。
|
||
- 线上附件查询过程:存在,参数 1 个。
|
||
- 线上附件表当前数据:0 条。
|
||
- 1000 次随机标识测试:1000 个唯一,0 个重复。
|
||
- `npm run build`:通过,存在非阻断包体积警告。
|
||
- 开发服务器:`https://127.0.0.1:1998/`,状态 200,热更新编译成功。
|
||
- `git diff --check`:通过。
|
||
- 生产物理文件上传测试:未执行,避免遗留无法确认清理的孤立测试文件。
|
||
- 安全预览类型调整后的最终 `npm run build`:再次通过,生成 `static/js/app.2f4b894c.js`,仅有原有包体积警告。
|
||
|
||
## 2026-07-22 增加研发类别立项号必填校验
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Task/index`:当类别选择“研发”时,研发立项号必须填写。
|
||
|
||
### 执行过程
|
||
1. 定位项目中的实际页面路径为 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`,并保留该文件中刚增加的附件功能修改。
|
||
2. 检查任务表单、规则对象、编辑回填和保存入口,确认保存统一通过 `this.$refs.taskForm.validate()`,但原表单只有任务描述必填规则;类别和研发立项号表单项均未绑定校验属性。
|
||
3. 为研发立项号表单项增加 `prop="研发立项号"`,并通过 `:required="formData.类别 === '研发'"` 动态显示必填标识。
|
||
4. 在规则对象中增加研发立项号自定义校验器,失焦和内容变化时触发。
|
||
5. 新增 `validateResearchProjectNo`:类别严格等于“研发”且研发立项号去除首尾空格后为空时,返回“请输入研发立项号”;其他情况通过。
|
||
6. 为类别选择增加 `handleCategoryChange`。从“研发”切换到其他类别时,清除研发立项号已有的校验错误,避免非研发类别残留红色错误状态。
|
||
7. 使用独立逻辑复算三种边界:研发且空值为不通过;研发且填写 `RD-2026-001` 为通过;订单类别且空值为通过。
|
||
8. 执行该页面 ESLint,检查通过,仅有项目依赖数据过期提示。
|
||
9. 检查本地开发服务器 `https://127.0.0.1:1998/`,状态为 200,最终热更新 Webpack 编译成功。
|
||
10. 执行 `git diff --check`,检查通过;本次未修改数据库对象或业务数据,也未覆盖工作区内其他修改。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 新建或编辑设计任务时,类别为“研发”且研发立项号为空或仅包含空格,保存会被阻止并提示“请输入研发立项号”。
|
||
- 类别不是“研发”时,研发立项号仍为可选字段。
|
||
- 从研发切换到其他类别后,旧的必填错误会自动清除。
|
||
|
||
### 验证结果
|
||
- 研发 + 空立项号:校验失败。
|
||
- 研发 + `RD-2026-001`:校验通过。
|
||
- 订单 + 空立项号:校验通过。
|
||
- 页面 ESLint:通过。
|
||
- 开发服务器热更新编译:通过。
|
||
- `git diff --check`:通过。
|
||
- 数据库修改:无。
|
||
|
||
## 2026-07-22 为设计报工列表增加五分钟静默刷新
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Report/index`,在不影响现有操作的情况下,每 5 分钟自动刷新一次列表。
|
||
|
||
### 执行过程
|
||
1. 定位项目中的实际页面为 `src/views/ProductionManagement/DesignReportTask/Report/index.vue`,并保留该文件中已增加的附件上传和查看功能。
|
||
2. 检查页面生命周期、查询方法、开始/结束报工、说明弹窗、附件弹窗和通用操作方法,确认原页面没有定时器及生命周期清理逻辑,`searchTable()` 每次都会显示表格加载遮罩和查询失败消息。
|
||
3. 检索项目其他自动刷新实现,发现部分页面直接使用 `setInterval(this.searchTable, 300000)`,该方式会在用户操作和弹窗期间刷新,也无法处理请求返回顺序,因此本页面未直接照搬。
|
||
4. 定义 `AUTO_REFRESH_INTERVAL = 5 * 60 * 1000`,即 300000 毫秒;在页面数据中增加 `refreshTimer` 和 `querySequence`。
|
||
5. 新增 `startAutoRefresh` 和 `stopAutoRefresh`。组件挂载或从 keep-alive 恢复时启动定时器,组件停用或销毁时清除定时器;启动方法具备幂等判断,避免 mounted 和 activated 重复创建定时器。
|
||
6. 新增 `shouldSkipAutoRefresh`,当页面不可见、正在手工查询、正在执行报工/说明操作、结束报工弹窗打开、说明弹窗打开或附件对话框打开时,自动刷新直接跳过。
|
||
7. 新增 `refreshTableSilently`,只在页面空闲时调用 `searchTable({ silent: true })`,自动刷新不显示表格加载遮罩,也不会弹出查询失败消息。
|
||
8. 扩展 `searchTable(options)`,保留原手工查询调用方式;只有明确传入 `silent: true` 才进入静默模式,所以查询按钮、回车查询和业务操作后的主动刷新行为保持不变。
|
||
9. 每次查询递增 `querySequence` 并保存本次请求编号。响应返回时只有编号仍为最新的请求才允许更新列表,防止较早发起的自动刷新覆盖之后发起的手工查询结果。
|
||
10. 静默请求返回时再次检查操作状态。如果自动请求发出后用户打开弹窗或开始操作,该响应会被忽略,不会在操作过程中替换表格行。
|
||
11. 执行页面 ESLint,检查通过,仅有项目依赖数据过期提示。
|
||
12. 执行 `npm run build`,生产构建成功,生成 `static/js/app.074e6ff6.js`;仅保留项目原有包体积警告。
|
||
13. 复算定时周期和跳过条件:周期为 300000 毫秒;操作中、结束弹窗、说明弹窗、附件弹窗和页面隐藏场景均返回跳过。
|
||
14. 检查本地开发服务器 `https://127.0.0.1:1998/`,状态为 200,最终热更新 Webpack 编译成功。
|
||
15. 执行 `git diff --check`,检查通过;本次未修改数据库对象或业务数据,也未覆盖工作区内其他修改。
|
||
|
||
### 修改文件
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
- 设计报工列表现在每 5 分钟执行一次后台静默刷新。
|
||
- 手工查询、开始/结束报工、保存说明、结束/说明弹窗和附件上传/查看均不会被自动刷新打断。
|
||
- 页面隐藏、离开或销毁时不会继续无效刷新;返回页面后会自动恢复定时器。
|
||
- 并发请求使用序号保护,旧自动请求不会覆盖较新的手工查询结果。
|
||
|
||
### 验证结果
|
||
- 自动刷新周期:300000 毫秒。
|
||
- 空闲状态:允许静默刷新。
|
||
- 操作中:跳过自动刷新。
|
||
- 结束报工弹窗打开:跳过自动刷新。
|
||
- 说明弹窗打开:跳过自动刷新。
|
||
- 附件对话框打开:跳过自动刷新。
|
||
- 页面隐藏:跳过自动刷新。
|
||
- 页面 ESLint:通过。
|
||
- `npm run build`:通过,存在非阻断包体积警告。
|
||
- 开发服务器热更新编译:通过。
|
||
- `git diff --check`:通过。
|
||
- 数据库修改:无。
|
||
|
||
## 2026-07-22 上传当前工作区全部修改
|
||
|
||
### 用户提问
|
||
- 用户要求上传当前工作区的所有修改。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 状态、当前分支和远端,确认当前分支为 `snapshot/local-save-20260625-154806`,远端为 `origin`,本地与远端起始状态均无领先或落后提交。
|
||
2. 统计工作区文件,确认共有 15 个文件需要纳入上传:9 个已跟踪修改文件和 6 个新增脚本、组件及文档文件。
|
||
3. 核对全部修改范围,包括及时齐套去重修复、设计报工校验权限、设计任务附件、五分钟静默刷新、研发立项号必填、发货堵点大屏过程、工时技术说明文档,以及工作区原有的外协、销售外协、人员工时和物料退回修改。
|
||
4. 检查未跟踪文件大小:工时说明 HTML 约 61KB、PDF 约 867KB、共享附件组件约 12KB;其余新增 SQL 文件均为小型文本脚本。
|
||
5. 搜索 `_preflight_*` 临时文件,未发现预演文件残留。
|
||
6. 扫描工作区新增数据库密码和连接字符串,排除日志、依赖和构建目录后未发现本轮新增的明文数据库密码;命中的内容均为既有登录业务代码、历史文档或使用掩码的验收说明。
|
||
7. 执行 `git diff --check`,发现 `src/views/QualityManagement/CheckTask/materialReturn.vue` 第 957 行存在行尾空格。
|
||
8. 首次清理因匹配到其他相同空行未命中目标;随后结合 `return result` 上下文精确删除该行尾空格,再次执行 `git diff --check` 通过。
|
||
9. 确认最终生产构建已通过,最新应用包为 `static/js/app.074e6ff6.js`,仅存在项目原有包体积警告;本地开发服务器最终热更新也已通过。
|
||
10. 执行 `git add -A` 暂存全部修改,并对暂存区执行 `git diff --cached --check`,检查通过。
|
||
11. 暂存区最终包含 15 个文件,合计新增 1977 行、删除 33 行;新增文件包括 3 个数据库脚本、工时说明 HTML/PDF 和设计任务附件共享组件。
|
||
12. 创建功能提交 `f16fb81 feat: 完善设计报工及生产管理功能`。
|
||
13. 将功能提交推送到 `origin/snapshot/local-save-20260625-154806`,远端从 `8fdd0b6` 更新到 `f16fb81`,推送成功。
|
||
14. 功能推送后检查本地与上游提交差异为 `0/0`,确认功能提交已同步到远端。
|
||
15. 本条上传过程日志作为独立文档收尾提交并推送,保证项目要求的完整中文执行记录也同步到远端,最终工作区保持干净。
|
||
|
||
### 上传文件
|
||
- `db_backups/add_design_report_check_permissions_20260722.sql`
|
||
- `db_backups/create_design_report_attachments_20260722.sql`
|
||
- `db_backups/create_shipping_bottleneck_dashboard_proc_20260721.sql`
|
||
- `db_backups/update_timely_kit_tracking_result_multi_detail_orders_20260630.sql`
|
||
- `doc/工时模块全流程技术说明_20260721.html`
|
||
- `doc/工时模块全流程技术说明_20260721.pdf`
|
||
- `gptlog-process/gpdlog.md`
|
||
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
|
||
- `src/views/ProductionManagement/DesignReportTask/components/TaskAttachments.vue`
|
||
- `src/views/ProductionManagement/OutsourceMange/index.vue`
|
||
- `src/views/ProductionManagement/SaleOutsourceMange/index.vue`
|
||
- `src/views/ProductionManagement/WorkHoursCheck/index.vue`
|
||
- `src/views/QualityManagement/CheckTask/materialReturn.vue`
|
||
|
||
### 结论
|
||
- 当前工作区全部业务代码、数据库脚本、附件组件、日志和技术文档均已纳入 Git 提交并推送到当前远端分支。
|
||
- 功能提交为 `f16fb81 feat: 完善设计报工及生产管理功能`。
|
||
- 没有遗留临时预演文件或新增明文数据库密码。
|
||
- 本上传日志将通过独立收尾提交同步,完成后本地与远端保持一致。
|
||
|
||
### 验证结果
|
||
- `git diff --check`:通过。
|
||
- `git diff --cached --check`:通过。
|
||
- `npm run build`:通过,存在非阻断包体积警告。
|
||
- 功能提交:成功,`f16fb81`。
|
||
- 功能推送:成功。
|
||
- 功能推送后本地/远端差异:`0/0`。
|
||
- 上传文件:15 个。
|
||
- 临时预演文件:0 个。
|
||
|
||
## 2026-07-22 排查并回滚已排产日程拖拽修改
|
||
|
||
### 用户提问
|
||
- 用户反馈 `PlanManagement/SelfMakePlandone/index` 中订单 8274、指派对象为卧加的任务,从 27-28 拖拽到 23-24 时修改失败,并说明不是所有拖拽都不可用。
|
||
- 排查和修复过程中,用户随后明确要求“不修改了,回滚”。
|
||
|
||
### 执行过程
|
||
1. 定位实际页面 `src/views/PlanManagement/SelfMakePlandone/index.vue`,检查 FullCalendar 事件生成、拖拽回调、日期转换和保存方法。
|
||
2. 确认页面拖拽统一调用存储过程 `计划排产_自制件_日程时间修改`,传入订单号、订单行号、订单拆分内码、计划开始时间和计划完成时间。
|
||
3. 连接生产数据库 `YL_MESDB`,读取该存储过程定义,确认更新条件额外包含 `ISNULL(派工状态, 0) = 0`。
|
||
4. 查询订单 8274 的生产任务,确认卧加任务为订单行号 2、拆分内码 1,计划日期为 2026-07-27 至 2026-07-28,派工状态为 1。因此该记录不满足旧过程条件,而派工状态为 0 或空的任务仍可修改,这与“并非所有拖拽都失败”的现象一致。
|
||
5. 曾创建页面专用的已排产日程更新时间过程,并把页面调用切换到新过程,同时补充失败回滚和错误提示处理。
|
||
6. 将新过程发布到生产数据库后,在事务中用订单 8274 模拟修改到 2026-07-23 至 2026-07-24,过程返回成功;随后回滚事务,线上日期恢复并保持为 27-28。
|
||
7. 验证新过程能够拒绝错误日期及开始日期晚于完成日期的请求,并确认旧共享过程的派工状态限制未被改变。
|
||
8. 执行页面 ESLint。该旧页面原有 571 个规范问题,集中在未修改区域;本次新增代码段未出现在报错清单中。
|
||
9. 执行 `npm run build`,生产构建通过,生成 `static/js/app.8d4ba884.js`,仅有项目既有包体积警告。
|
||
10. 收到用户“不修改了,回滚”后,立即撤销 `SelfMakePlandone/index.vue` 的全部本次改动,删除新增 SQL 脚本,并从生产数据库删除新存储过程。
|
||
11. 对页面工作区文件和 `HEAD` 版本计算 Git 对象哈希,两者均为 `0c965155992a64615b1f36155f05b5c0e7264d6e`,确认页面已完整还原。
|
||
12. 再次查询数据库,确认新过程数量为 0;订单 8274 卧加任务仍为 2026-07-27 至 2026-07-28、派工状态为 1,没有遗留测试数据修改。
|
||
|
||
### 结论
|
||
- 已按用户最新要求取消本次修复并完成回滚。
|
||
- `SelfMakePlandone/index.vue` 已恢复到修改前版本,新增数据库脚本已删除,新增生产存储过程已移除。
|
||
- 订单 8274 的生产数据未被更改,仍保持计划开始 27 日、计划完成 28 日。
|
||
- 已查明原失败原因,但未保留任何功能修改:旧存储过程仅允许 `派工状态=0` 的任务更新日期,而该卧加任务的派工状态为 1。
|
||
|
||
### 验证结果
|
||
- 页面文件与 `HEAD` 哈希一致:通过。
|
||
- 新增 SQL 文件删除:通过。
|
||
- 新存储过程移除:通过,数据库对象数量为 0。
|
||
- 订单 8274 测试数据回滚:通过,日期仍为 27-28。
|
||
- 本次功能代码残留:无。
|
||
- `npm run build`:回滚前修复版本构建通过;回滚后页面已恢复原版本,无需重复构建。
|
||
|
||
## 2026-07-22 整理当日生产日报
|
||
|
||
### 用户提问
|
||
- 用户提供 12 项当日工作内容,要求参照之前的格式整理成生产日报。
|
||
|
||
### 执行过程
|
||
1. 检索项目已有的今日工作汇报和生产日报相关文档,重点参考 `doc_old/今日工作汇报_2026-05-25.md` 与 `doc_old/今日工作汇报_2026-05-23.txt` 的日期、项目、分项标题及结果说明格式。
|
||
2. 将用户提供的事项按业务内容整理为数据查询与校验、设计报工、生产计划及现场反馈四类,保留原工作范围,不虚构未提供的开发结果。
|
||
3. 对“现场反馈班次问题”明确标记为已检查、未发现问题。
|
||
4. 对“机加已排产日程部分数据不能拖拽修改”结合本次实际处理情况表述为完成排查并定位原因,不表述为已上线修复,避免与用户随后要求回滚修改的事实冲突。
|
||
5. 对设计报工相关的权限、附件、自动加载、研发类别必填及加密文件对接事项分别描述,避免合并后遗漏具体工作。
|
||
6. 形成 2026 年 7 月 22 日元利 MES 项目生产日报,可直接用于当日工作汇报。
|
||
|
||
### 结论
|
||
- 已将 12 项工作整理为结构统一、措辞正式的生产日报。
|
||
- 日报如实区分已修改、已处理、已检查、需求对接和原因排查等不同工作状态。
|
||
- 本次未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-22 按时间段重新整理生产日报
|
||
|
||
### 用户提问
|
||
- 用户指出上一版不是需要的格式,要求使用之前按时间记录、每小时六条工作内容的生产日报格式。
|
||
|
||
### 执行过程
|
||
1. 检索 `gptlog-process/gpdlog.md` 中之前生成明日计划和调整记录格式的历史日志。
|
||
2. 确认目标格式使用 8 个主时间段:`08:30-09:30`、`09:30-10:30`、`10:30-11:50`、`13:20-14:20`、`14:20-15:20`、`15:20-16:20`、`16:20-17:20`、`17:20-18:00`。
|
||
3. 确认每个主时间段填写 6 条工作内容,不再为每条记录标注 10 分钟子时间或子序号,持续性工作允许重复。
|
||
4. 将用户提供的 12 项当日工作按处理先后和关联关系分配到 8 个时间段,共整理 48 条记录。
|
||
5. 上午重点安排及时齐套、工时校验、生产计划状态及历史数据处理;下午重点安排设计报工需求、权限、附件、自动加载、研发必填、加密文件、班次反馈和机加日程问题排查。
|
||
6. 对已回滚的机加日程拖拽事项只写原因排查和处理确认,不表述为修复已上线。
|
||
|
||
### 结论
|
||
- 已按之前的时间段格式重新生成生产日报。
|
||
- 共 8 个主时间段,每段 6 条,共 48 条工作记录。
|
||
- 本次只调整日报文本格式,未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-22 生成系统操作手册明日计划
|
||
|
||
### 用户提问
|
||
- 用户说明明日主要工作是编写系统操作手册,要求严格参照其提供的今日工作格式生成明日计划。
|
||
|
||
### 执行过程
|
||
1. 保留用户给出的 8 个编号时间段及排版方式。
|
||
2. 每个时间段安排 6 条工作内容,共生成 48 条计划记录,不增加 10 分钟子时间。
|
||
3. 按操作手册编写流程安排工作:先核对系统范围和文档结构,再编写登录、权限、基础资料、计划排产、生产执行、设计报工、质量、外协、工时和报表等模块。
|
||
4. 下午后段安排界面截图、操作步骤校对、权限差异说明、常见问题、目录及格式统一。
|
||
5. 最后安排完整性检查、内容复核、文档导出和版本归档。
|
||
6. 本次只生成明日计划文本,没有修改业务代码、数据库对象或业务数据。
|
||
|
||
### 结论
|
||
- 已按 8 个时间段、每段 6 条的格式生成系统操作手册明日计划。
|
||
- 明日计划覆盖资料梳理、章节编写、截图校对、整体复核和文档归档全过程。
|
||
|
||
## 2026-07-22 调整系统操作手册明日计划工作量和顺序
|
||
|
||
### 用户提问
|
||
- 用户指出上一版操作手册的编写顺序不正确,并强调每个功能都必须配截图说明,原计划安排的完成速度不现实。
|
||
|
||
### 执行过程
|
||
1. 重新核对项目已有操作手册目录和逐页说明,确认不能先按主观归纳的业务模块顺序快速编写。
|
||
2. 将编写顺序改为先使用具备完整权限的账号核对系统左侧菜单,再严格按照实际菜单从上到下建立目录和编写内容。
|
||
3. 明确每个功能均需完成入口界面、关键操作过程和操作结果截图,并对截图进行命名、裁剪、标注和插入。
|
||
4. 将工作方式调整为完成一个功能的实际操作、截图、文字说明和复核后,再进入下一个功能。
|
||
5. 降低单日完成范围:明日主要完成菜单清单、文档及截图规范、登录与首页、通用操作,以及实际菜单顺序中的首批功能,不再计划一天覆盖全部系统模块。
|
||
6. 保持用户要求的 8 个时间段、每段 6 条记录格式。
|
||
|
||
### 结论
|
||
- 已根据实际工作量重新生成明日计划,顺序以系统真实菜单为准。
|
||
- 每个功能均安排截图采集、文字说明和结果校对时间。
|
||
- 明日计划不承诺完成整本操作手册,只完成框架、通用章节和首批功能。
|
||
- 本次未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-22 调整操作手册明日计划至完成系统管理
|
||
|
||
### 用户提问
|
||
- 用户要求再次调整明日计划:按照菜单安排工作,系统管理菜单下的功能可以全部完成,计划管理只能完成一部分。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/SystemMaintenance`,确认系统管理包含菜单管理、操作日志、组织管理、人员管理、系统角色维护和工位管理 6 个页面。
|
||
2. 对照现有详细用户使用说明书中的系统维护章节,确认上述 6 个页面的名称和顺序。
|
||
3. 将明日主要时间分配给系统管理 6 个页面,每个页面均安排实际操作、入口截图、关键过程截图、结果截图、文字说明和内容校对。
|
||
4. 菜单管理、人员管理、系统角色维护和工位管理操作较多,分别预留独立时间段;操作日志和组织管理合并使用较长的上午时间段。
|
||
5. 系统管理全部完成后,再整理计划管理菜单顺序,并开始第一个计划管理页面的入口、查询及部分操作说明。
|
||
6. 计划管理不安排当日全部完成,未完成页面留待后续继续编写。
|
||
|
||
### 结论
|
||
- 明日计划目标调整为完整编写系统管理 6 个页面,并为每个功能配套截图。
|
||
- 计划管理只完成菜单梳理和首个页面的部分操作手册内容。
|
||
- 本次未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-22 调整操作手册进度至装配未排产
|
||
|
||
### 用户提问
|
||
- 用户补充说明,按照系统菜单顺序,完成系统管理后,明日操作手册进度应该可以做到计划管理中的装配未排产页面。
|
||
|
||
### 执行过程
|
||
1. 保留系统管理 6 个页面全部完成的目标,每个页面继续要求功能说明和配套截图。
|
||
2. 调整最后两个时间段,不再只做计划管理目录和首个页面的部分查询说明。
|
||
3. `16:20-17:20` 安排系统管理整体复核,并开始装配未排产页面的入口、查询条件、列表和筛选功能说明及截图。
|
||
4. `17:20-18:00` 继续编写装配未排产的任务选择、排产信息填写、提交、结果验证和注意事项。
|
||
5. 将明日最终进度明确为系统管理全部完成,并按菜单顺序完成到装配未排产页面。
|
||
|
||
### 结论
|
||
- 已把计划管理部分的目标从“首个页面部分内容”调整为完成装配未排产操作说明。
|
||
- 明日计划仍保持 8 个时间段、每段 6 条记录。
|
||
- 本次未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-22 修正计划排产操作手册页面范围
|
||
|
||
### 用户提问
|
||
- 用户指出上一版对计划排产范围理解有误,计划排产菜单需要按照以下顺序编写:机加件排产、装配件排产、机加件已排产、机加件未排产、计划用表、装配未排产。
|
||
|
||
### 执行过程
|
||
1. 重新确认明日操作手册包含两部分:系统管理 6 个页面,以及计划排产菜单中从机加件排产到装配未排产的 6 个页面。
|
||
2. 保持每个页面均需实际操作并配入口、关键操作过程和结果截图的要求。
|
||
3. 上午优先完成系统管理页面,关联度较高或操作较少的页面安排在同一时间段。
|
||
4. 下午严格按照用户给出的计划排产菜单顺序编写 6 个页面。
|
||
5. 将明日最终进度明确为完成装配未排产,而不是仅开始或只完成装配未排产单页。
|
||
6. 保持 8 个时间段、每段 6 条工作记录的日报格式。
|
||
|
||
### 结论
|
||
- 明日计划范围已修正为系统管理 6 个页面和计划排产 6 个页面。
|
||
- 计划排产顺序为机加件排产、装配件排产、机加件已排产、机加件未排产、计划用表、装配未排产。
|
||
- 本次未修改业务代码、数据库对象或业务数据。
|
||
|
||
## 2026-07-23 编写MES系统操作手册系统管理篇样稿
|
||
|
||
### 用户提问
|
||
- 用户要求参考桌面上的《6大连元利流体技术有限公司MES系统项目操作手册.docx》编写新的操作手册。
|
||
- 要求每个功能均需讲解,包含搜索过滤和前后数据关系,并配套真实页面截图。
|
||
- 本次先完成“系统管理”部分查看效果。
|
||
- 用户强调正式环境不得产生数据,并提供数据库连接信息用于核对。
|
||
|
||
### 执行过程
|
||
1. 读取项目根目录 `AGENTS.md`,确认本次完整过程必须使用中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 找到桌面参考文档并通过 Word 只读方式提取正文结构,确认原文共 22 页、220 个段落、23 张内嵌图片;原“系统管理”章节只有人员、角色、菜单、工位、节假日五项概括说明。
|
||
3. 检查 `src/views/SystemMaintenance`、前端动态路由、接口调用和正式数据库菜单配置。正式菜单实际包含人员管理、菜单管理、角色管理、工位管理、报工操作记录五项;“节假日设定”不在当前正式菜单,“组织管理”页面也未配置为正式菜单,因此均未写入样稿。
|
||
4. 全部数据库操作仅使用 `SELECT`、元数据查询和对象定义读取,没有执行新增、修改、删除、存储过程写入或事务写操作。
|
||
5. 核对人员管理页面与存储过程,确认姓名为包含匹配、角色为精确匹配、两个条件同时使用时取交集;新增人员默认密码为 `123456`,新增时同时建立人员与角色关系,班组只能在后续编辑中维护;删除实际移除人员角色关系并保留历史业务记录。
|
||
6. 核对角色管理,确认角色名称为包含匹配,超级管理员角色不在普通维护列表中;新增和编辑需要角色名称唯一;删除前必须先解除菜单和人员占用。
|
||
7. 核对菜单管理三栏布局和分配规则,确认左栏为一级模块模板,中栏为目标角色已分配菜单树,右栏为二级菜单模板;过滤均为当前列表内的包含过滤;一级菜单存在子节点时必须先移除子菜单;当前正式页面只提供角色菜单分配,不提供可见的菜单结构新增、编辑和按钮级权限维护。
|
||
8. 核对工位管理及 SAP B1 调用关系,确认新增和改名会同时调用 B1 Resources;当前工位名称查询框未把条件传入查询请求,点击查询实际刷新全部工位;删除只删除 MES 资源主数据,未启用占用校验,也未调用 B1 删除,因此在手册中标为高风险操作。
|
||
9. 核对报工操作记录,确认页面只读,订单编号和操作人均为精确匹配,两个条件同时填写时取交集;每次按记录编号倒序最多返回最新 100 条,页面分页控件当前停用。
|
||
10. 使用管理员账号连接正式查询接口,只进行登录、页面跳转、自动查询以及打开后取消新增弹窗,未点击任何保存、确定、删除确认、菜单分配或移除按钮。
|
||
11. 截取人员列表、人员新增弹窗、角色列表、角色新增弹窗、菜单初始页、已选择角色的菜单权限树、工位列表、工位新增弹窗、报工操作记录共 9 张正式页面截图,并逐张检查加载和显示效果。
|
||
12. 编写可复用的截图脚本 `work/system-manual/capture-system-pages.js`,完成后将登录账号和密码改为运行时环境变量,避免在工作区保留账号口令。
|
||
13. 编写 Word 自动生成脚本 `work/system-manual/build-system-manual.ps1`,生成封面、修订记录、阅读说明、自动目录、系统管理概述、五个正式功能章节、典型业务链路、常见问题、正式环境操作红线及技术数据关系附录。
|
||
14. 首次 Word 生成时定位到旧版 Word COM 的 `SaveAs` 参数传递兼容问题,改为直接传递文件路径和格式编号后重新生成成功;没有因此产生业务数据。
|
||
15. 最终生成 25 页 DOCX 和 PDF,各复制一份到项目 `doc` 目录和桌面。文档包含 30 个表格、9 张内嵌截图、1 个自动目录、589 个段落。
|
||
16. 重新打开 DOCX 校验,确认 25 页、7646 个字、目录和全部图片均可读取;同时检查 DOCX 压缩包中媒体文件和关键章节文本,确认没有乱码或缺失。
|
||
17. 停止本次启动的截图浏览器和开发服务,删除本次产生的浏览器配置、空白预览图和服务日志;保留截图、裁剪图、截图脚本和文档生成脚本,便于后续继续编写其他模块。未停止用户在本次任务前已经运行的本地服务。
|
||
|
||
### 结论
|
||
- 已完成“系统管理篇”正式样稿,覆盖人员管理、角色管理、菜单管理、工位管理、报工操作记录五个当前正式功能。
|
||
- 每个功能均包含入口、页面字段、搜索过滤、操作步骤、校验规则、上下游数据关系、当前限制和风险提示,并配有正式页面截图。
|
||
- 已明确标注当前版本的关键真实行为:工位名称过滤未生效、菜单页只做角色菜单分配、报工记录精确匹配且最多返回最新100条、工位删除未做占用校验及B1删除同步。
|
||
- 项目内文件:`doc/大连元利流体技术有限公司MES系统操作手册_系统管理篇_样稿.docx` 和同名 PDF。
|
||
- 桌面文件:`大连元利流体技术有限公司MES系统操作手册_系统管理篇_样稿.docx` 和同名 PDF。
|
||
- 本次没有在正式数据库、MES业务页面或 SAP B1 中新增、修改、删除任何业务数据。
|
||
|
||
## 2026-07-23 单独生成系统管理问题清单
|
||
|
||
### 用户提问
|
||
- 用户要求将操作手册编制过程中发现的问题单独形成一个文档,不与操作手册正文混排。
|
||
|
||
### 执行过程
|
||
1. 重新核对系统管理前端代码、数据库对象定义和只读页面检查结果,没有执行任何正式环境写操作。
|
||
2. 按严重程度将发现项划分为 P1 高、P2 中、P3 低三个级别,并为每项整理问题描述、代码或数据库证据、业务影响、修复建议和测试环境验证建议。
|
||
3. P1 高优先级记录4项:密码处理与固定初始密码风险、菜单接口由浏览器发送原始SQL文本、工位MES与SAP B1写入缺少一致性保障、工位删除无占用校验且未同步B1。
|
||
4. P2 中优先级记录5项:工位名称过滤不生效、工位名称/编号校验不完整、人员删除提示与实际处理语义不一致、报工记录最多100条且无分页、菜单结构维护和按钮级权限未开放。
|
||
5. P3 低优先级记录2项:参考手册与正式菜单范围不一致、工位分页回调引用不存在的方法。
|
||
6. 编写 `work/system-manual/build-system-issues.ps1`,生成独立问题清单的封面、目录、分级说明、问题汇总、11项详细问题、建议处理顺序和验收要求。
|
||
7. 在问题文档中插入人员管理、工位管理、报工操作记录、菜单权限树4张截图,只用于辅助定位问题。
|
||
8. 生成 DOCX 和 PDF,并分别复制到项目 `doc` 目录和桌面。
|
||
9. 重新打开 DOCX 校验,确认共14页、17个表格、4张内嵌截图、1个自动目录、328个段落;检查关键问题编号和“未执行正式环境写操作”声明均存在。
|
||
10. 对项目内文件和桌面副本进行哈希比对,DOCX与PDF副本均完全一致;检查生成脚本未包含登录账号、登录密码或数据库口令。
|
||
|
||
### 结论
|
||
- 已单独生成《大连元利流体技术有限公司MES系统_系统管理问题清单_2026-07-23》Word文档和PDF。
|
||
- 问题清单共11项:P1高优先级4项、P2中优先级5项、P3低优先级2项。
|
||
- 项目内文件位于 `doc/大连元利流体技术有限公司MES系统_系统管理问题清单_2026-07-23.docx` 和同名PDF,桌面已生成相同副本。
|
||
- 本次没有在正式数据库、MES业务页面或SAP B1中新增、修改、删除任何业务数据。
|
||
|
||
## 2026-07-23 设计任务查看权限、操作按钮换行及固定行高调整
|
||
|
||
### 用户提问
|
||
- 用户要求修改 `ResearchManagement/DesignReportTask/Task/index`,为设计任务页面增加查看权限,权限规则参考另外三个设计报工页面。
|
||
- 用户反馈操作列按钮单行占用宽度过大,要求改为两行或三行。
|
||
- 用户再次强调列表行高必须固定,不能随内容变化。
|
||
|
||
### 执行过程
|
||
1. 读取 `AGENTS.md`,确认本次完整过程必须使用中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 检索项目目录,确认实际源文件路径为 `src/views/ProductionManagement/DesignReportTask/Task/index.vue`;该页面虽然在系统菜单中归入研发管理,但代码目录仍使用 `ProductionManagement`。
|
||
3. 对比 `Task`、`Report`、`Check`、`HoursReport` 四个页面的查询参数和正式数据库过程,发现:
|
||
- `Task/index.vue` 调用 `设计报工_任务_查询` 时没有传当前操作人、当前操作人ID和角色编号,导致数据库现有可见范围条件未生效。
|
||
- `Check` 和 `HoursReport` 已传当前操作人与角色编号,并按角色功能包含“领导”或“管理员”决定是否查看全部。
|
||
- `Report` 已传当前操作人和当前操作人ID,但未传角色编号,无法让领导或管理员查看全部任务。
|
||
4. 只读查询正式数据库 `192.168.2.92 / YL_MESDB` 的过程参数、对象定义和角色功能,确认正式过程原来只有当前人员可见范围判断,没有 `@角色编号` 参数和领导、管理员查看全部分支。
|
||
5. 修改 `Task/index.vue`:
|
||
- 主列表查询和完成前实时任务查询均补充 `当前操作人ID`、`当前操作人`、`角色编号`。
|
||
- 操作列宽度从 `540` 缩小为 `330`。
|
||
- 六个操作按钮使用三列网格排列为两行;领导批示按钮无权限时隐藏后仍保持两行紧凑布局。
|
||
- 数据行和单元格高度强制固定为 `108px`,内容区固定为 `72px`,超出内容在单元格内隐藏,历史内容仍保留原悬浮提示查看完整文本。
|
||
6. 同步修改 `Report/index.vue`,防止同一任务查询在两个页面权限不一致:
|
||
- 主查询、任务实时查询和当前未结束任务查询均补充角色编号。
|
||
- 操作列宽度从 `640` 缩小为 `440`,七个按钮使用四列网格排列为两行。
|
||
- 与任务页统一强制固定 `108px` 数据行高和 `72px` 内容区,不再允许长文本撑高整行。
|
||
7. 新增数据库升级脚本 `db_backups/add_design_report_task_view_permissions_20260723.sql`:
|
||
- 为 `设计报工_任务_查询` 增加 `@角色编号` 参数。
|
||
- 角色功能包含“领导”或“管理员”时可查看全部任务。
|
||
- 普通角色仅可查看本人创建、本人被指派或通过“对其可见”授权的任务。
|
||
- 当前人员信息缺失且角色无查看全部权限时返回空结果,不再回退为查看全部。
|
||
8. 首先通过事务包裹升级脚本进行回滚编译,确认 SQL 可以成功创建;回滚后检查角色参数数量仍为0、过程修改时间仍为 `2026-07-17 14:14:39.763`,证明预检未保留数据库变更。
|
||
9. 发布前只读记录业务表数量:设计任务138条、报工记录244条、任务说明11条、附件5条。
|
||
10. 第一次正式执行升级脚本时,`sqlcmd` 返回成功但过程定义未变化;复核发现需要显式指定 UTF-8 输入编码,未将命令成功退出误判为发布完成。
|
||
11. 使用 `sqlcmd -f 65001` 重新执行升级脚本,确认正式过程已增加角色参数和查看全部逻辑,过程修改时间更新为 `2026-07-23 09:53:05.160`。
|
||
12. 发布后再次核对业务表数量,仍为任务138条、报工244条、说明11条、附件5条,与发布前完全一致;本次只修改存储过程定义,没有新增、修改或删除业务数据。
|
||
13. 使用正式库已有 DID 140 做只读权限分支验证:管理员角色1配合无关测试人员标识仍能返回任务;普通角色2配合相同无关人员标识返回空结果,证明角色查看全部和普通人员范围限制均生效。
|
||
14. 对两份 Vue 文件运行定向 ESLint,检查通过;仅输出项目依赖自带的 Browserslist 数据过期提示。
|
||
15. 使用独立临时输出目录运行生产 Webpack 构建,构建成功;仅有项目原有的大资源包体积和浏览器数据过期警告。构建后删除约91MB临时目录,现有 `dist` 未产生 Git 变更。
|
||
16. 检查到原有1997端口服务无法正常返回页面,因此未停止或覆盖该既有进程;另在1998端口启动本地 HTTPS 开发服务,Webpack 编译成功。随后将服务日志移出工作区并重启服务,最终访问 `https://127.0.0.1:1998/` 返回 HTTP 200。
|
||
|
||
### 结论
|
||
- 设计任务页面已按设计报工其他页面的规则增加查看权限:领导和管理员查看全部,普通人员只查看本人创建、本人指派或明确授权可见的任务。
|
||
- 设计任务和设计报工两个页面的操作按钮均改为两行,操作列宽度明显缩小。
|
||
- 两个列表的数据行严格固定为108像素,长文本不会再改变行高,完整历史仍可通过悬浮提示查看。
|
||
- 正式数据库只更新了 `设计报工_任务_查询` 存储过程定义;四张设计报工业务表的数据条数发布前后完全一致,没有产生测试数据。
|
||
- 定向 ESLint、生产构建、数据库权限分支验证和本地 HTTPS 可访问性检查均通过。
|
||
|
||
## 2026-07-23 恢复设计列表超出文本悬浮查看
|
||
|
||
### 用户提问
|
||
- 用户反馈固定行高调整后,超出单元格的文本无法再通过鼠标悬浮查看完整内容。
|
||
|
||
### 执行过程
|
||
1. 检查 `Task/index.vue` 和 `Report/index.vue` 的表格列及固定行高样式。
|
||
2. 确认普通长文本列仍配置了 Element UI 的 `show-overflow-tooltip`,领导批示、进度说明、异常说明和奇思妙想也仍有独立的 `el-tooltip`。
|
||
3. 定位原因:上一轮为了固定108像素行高,将带 `show-overflow-tooltip` 的单元格改为多行换行后按高度裁剪;Element UI 的内置提示依靠横向溢出判断,因此纵向被裁剪时不会触发提示。
|
||
4. 修改两个页面的表格样式:
|
||
- 普通 `cell` 继续允许三行内容区并限制最大72像素,保持108像素固定行高。
|
||
- 带 `show-overflow-tooltip` 的 `cell.el-tooltip` 单独恢复为单行、不换行、超出省略号显示,使 Element UI 能重新检测溢出并显示完整文本。
|
||
- 四类历史说明继续使用72像素三行内容区及原有独立悬浮提示,不改变完整历史文本的查看方式。
|
||
5. 对两个 Vue 文件执行定向 ESLint,检查通过;只有项目原有的 Browserslist 数据过期提示。
|
||
6. 检查本地 HTTPS 开发服务,热更新 Webpack 编译成功,`https://127.0.0.1:1998/` 返回 HTTP 200。
|
||
7. 本次只调整前端 CSS,没有访问或修改正式数据库,也没有产生业务数据。
|
||
|
||
### 结论
|
||
- 普通超长文本已恢复单行省略号和鼠标悬浮查看全文。
|
||
- 领导批示、进度说明、异常说明、奇思妙想仍可悬浮查看完整历史。
|
||
- 列表行高继续严格固定为108像素,操作按钮两行布局和查看权限逻辑均未改变。
|
||
|
||
## 2026-07-23 继续编写八个业务模块完整操作手册
|
||
|
||
### 用户提问
|
||
- 用户要求继续编辑操作手册,章节顺序必须为:设备管理、研发管理、工艺管理、计划排产、生产管理、异常提醒、质量管理、销售订单管理。
|
||
- 延续前述要求:每个功能都要讲解,包括搜索过滤、前后数据关系和正式页面截图;正式环境不得产生数据;发现系统问题时另行生成独立问题文档。
|
||
|
||
### 执行过程
|
||
1. 读取项目现有系统管理样稿、页面路由、菜单数据、Vue页面和接口文件,沿用既有操作手册版式、说明结构和正式环境红线。
|
||
2. 只读查询正式数据库中的二级菜单和当前管理员菜单权限,确认本次八个业务模块共69个正式功能页面:设备管理4个、研发管理4个、工艺管理9个、计划排产13个、生产管理21个、异常提醒4个、质量管理13个、销售订单管理1个。
|
||
3. 按用户指定顺序建立完整页面目录;确认研发管理菜单的路由使用 `ResearchManagement`,实际源文件仍位于 `src/views/ProductionManagement/DesignReportTask`,分析时按真实源文件处理。
|
||
4. 新增 `work/system-manual/analyze-full-manual-pages.js`,逐页读取69个Vue页面及其引用的API文件,提取搜索条件、页签、列表字段、功能按钮、只读过程/接口和写入过程/接口。
|
||
5. 为每个页面补充功能用途和模块级上下游关系说明,生成 `work/system-manual/full-page-catalog.json`;数据关系覆盖设备台账与维修、研发任务与报工、工艺资料与工序、计划排产与任务下达、生产领料/报工/入库、异常闭环、质量检验与处置、销售订单状态等前后链路。
|
||
6. 新增 `work/system-manual/capture-full-manual-pages.js`,使用独立浏览器配置登录正式系统,只执行登录、菜单导航、默认只读查询和截图,不点击新增、编辑、删除、开始、结束、排产、报工、送检、收料、上传、审批等写入按钮。
|
||
7. 按模块和页面顺序采集69张1920×1080正式页面截图,保存到 `work/system-manual/full-screenshots`,并生成截图清单 `manifest.json`。
|
||
8. 截图过程中“工时报表”和“加急件管理”页面因快速切换出现一次临时网络错误提示;将页面等待时间延长后仅重拍这两个页面,复核均无错误提示。该现象未能稳定复现,未作为正式系统缺陷写入问题清单。
|
||
9. 对八个模块各抽样检查一张截图,并核对所有截图尺寸、文件数量、错误标记和页面正文;最终69张截图齐全,截图清单错误数为0。
|
||
10. 对页面分析脚本和截图脚本执行定向ESLint,检查通过;只有项目既有的Browserslist数据过期提示。
|
||
11. 新增 `work/system-manual/build-full-manual.ps1`,以系统管理篇样稿为基础生成完整手册,更新封面为V1.1,并将原有典型业务链路、常见问题和正式操作红线顺延到第15至17章。
|
||
12. 在第7至14章依次插入设备管理、研发管理、工艺管理、计划排产、生产管理、异常提醒、质量管理、销售订单管理,顺序与用户要求完全一致。
|
||
13. 为69个功能页面分别编写独立小节,每个小节包含:功能目的、入口路由和数据性质、正式页面截图、全部搜索条件及控件类型、搜索使用方法、页签说明、列表/看板字段、全部功能按钮及操作说明、页面输入、只读过程/接口、写入过程/接口、页面输出和正式操作警告。
|
||
14. 对会改变业务状态的页面统一增加醒目的正式操作注意,明确新增、编辑、删除、开始、结束、排产、报工、送检、收料、上传等动作会写入数据,本次编制过程中没有实际执行。
|
||
15. 首次调用WPS兼容的Word自动化生成时,修复了PowerShell UTF-8脚本读取、脚本根目录、修订记录表定位和COM段落枚举问题;早期生成的不完整副本随后删除,未作为交付文件保留。
|
||
16. 正式生成 `doc/大连元利流体技术有限公司MES系统用户操作手册_V1.1_2026-07-23.docx` 及同名PDF,并复制相同副本到桌面。
|
||
17. WPS自动化在大型文档导出完成后读取页数、字数等统计信息时出现长时间阻塞,但DOCX和PDF已经成功保存。结束仅属于本次生成任务的WPS自动化进程后,使用Open XML和PDF文件结构独立校验内容。
|
||
18. 修改生成脚本收尾逻辑:目录更新后先保存DOCX,再导出PDF并立即关闭WPS自动化;取消容易阻塞的COM统计读取,后续统计改为读取生成文件完成,避免再次卡住或长期占用文档。
|
||
19. 校验DOCX压缩结构正常,共99个包条目、79个媒体文件、78个正文内嵌图片、581个表格、7230个段落;69个页面名称全部能在正文中找到,八个模块章节位置严格按指定顺序递增。
|
||
20. 校验第15章典型业务链路、第16章常见问题、第17章正式环境操作红线均保留且编号连续;PDF为1.7格式,包含281个页面对象标记,文件以有效的 `%%EOF` 结束。
|
||
21. 计算项目内文件和桌面副本的SHA-256,DOCX两份哈希完全一致,PDF两份哈希完全一致,证明交付副本无差异。
|
||
22. 清理本次截图使用的独立Chrome配置目录、PDF预览临时文件、WPS锁文件和早期失败的操作手册副本;只停止命令行明确指向本次临时配置或本次生成文件的自动化进程,未关闭用户正在查看原始参考手册的WPS进程。
|
||
23. 本次未新增新的独立系统问题文档;此前已生成的 `doc/大连元利流体技术有限公司MES系统_系统管理问题清单_2026-07-23.docx` 及同名PDF继续保留。
|
||
|
||
### 结论
|
||
- 完整操作手册已按“设备管理、研发管理、工艺管理、计划排产、生产管理、异常提醒、质量管理、销售订单管理”的顺序编写完成,并与原系统管理篇合并为V1.1完整手册。
|
||
- 手册覆盖系统管理5个功能和本次八个业务模块69个功能,共74个正式功能;本次新增的每个功能均包含搜索过滤、按钮操作、字段说明、前后数据关系和正式页面截图。
|
||
- 最终DOCX约11.7MB,PDF约10.5MB、281页;项目 `doc` 目录和桌面均已放置一致副本。
|
||
- 本次对正式系统和数据库仅执行登录、页面导航、默认查询及元数据/菜单只读查询,没有新增、修改或删除任何业务数据。
|
||
|
||
## 2026-07-23 设计任务和设计报工操作项整合到更多菜单
|
||
|
||
### 用户提问
|
||
- 用户要求修改设计任务和设计报工页面,将操作列中的低频功能整合为“更多”,点击后显示对应按钮。
|
||
- 设计报工最初描述包含删除,用户随后更正:设计报工页面没有删除,不应增加删除功能。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/ProductionManagement/DesignReportTask/Task/index.vue` 和 `Report/index.vue` 的操作列、按钮事件、权限条件、两列网格布局及固定行高样式。
|
||
2. 确认设计报工现有操作为开始、结束、领导批示、异常说明、奇思妙想、上传附件、查看附件,页面原本没有删除方法和删除按钮。
|
||
3. 根据用户更正后的要求,将设计报工的异常说明、奇思妙想、上传附件、查看附件四项移入点击触发的“更多”下拉菜单;开始、结束、领导批示继续直接显示。
|
||
4. 将设计任务的上传附件、查看附件、删除三项移入“更多”下拉菜单;编辑、完成、领导批示继续直接显示,删除仍调用原有实时校验、确认提示和删除方法。
|
||
5. 为菜单项配置当前Element UI版本已有的图标:异常说明使用警告图标、奇思妙想使用机会灯泡图标、上传和查看使用原有附件图标、删除使用删除图标。
|
||
6. 为“更多”触发器增加固定32像素高度、100%宽度和居中样式,使其作为操作网格项稳定占位,不改变操作列的两列布局。
|
||
7. 保留两个列表108像素固定数据行高、72像素内容区及超出文本悬浮查看样式;本次没有修改查询权限、按钮禁用条件、附件组件或任何数据库过程。
|
||
8. 清理设计任务样式区一个孤立的无意义字符,避免浏览器将其解析为多余选择器。
|
||
9. 对两个Vue文件执行定向ESLint和 `git diff --check`,均检查通过;仅有项目依赖自带的Browserslist数据过期提示。
|
||
10. 检查本地开发服务 `https://127.0.0.1:1998/` 返回HTTP 200,热更新后的 `app.js` 已包含新的更多菜单样式,说明模板编译成功。
|
||
11. 执行精确结构核对:设计报工更多菜单共4项,包含异常说明、奇思妙想、上传附件、查看附件且不包含删除;设计任务更多菜单共3项,包含上传附件、查看附件、删除;两页均保留两列网格和108像素固定行高。
|
||
|
||
### 结论
|
||
- 设计报工操作列现在直接显示开始、结束、领导批示,“更多”内显示异常说明、奇思妙想、上传附件、查看附件,没有增加删除功能。
|
||
- 设计任务操作列现在直接显示编辑、完成、领导批示,“更多”内显示上传附件、查看附件、删除。
|
||
- 两页原有权限、业务校验、附件功能、文本悬浮查看和固定行高均保持不变;本次仅修改前端模板和样式,没有访问或修改正式数据库,也没有产生业务数据。
|
||
|
||
## 2026-07-23 排查张立柱账号可见田海DID 53任务
|
||
|
||
### 用户提问
|
||
- 用户反馈当前登录张立柱账号,但可以看到田海的设计任务DID 53,要求检查原因。
|
||
|
||
### 执行过程
|
||
1. 按诊断请求只读连接正式数据库 `192.168.2.92 / YL_MESDB`,未执行任何新增、修改、删除或过程发布操作,日志不记录数据库明文密码。
|
||
2. 读取正式过程 `dbo.设计报工_任务_查询` 的完整定义,确认当前可见范围规则为:角色功能包含“领导”或“管理员”时查看全部;普通角色只能查看本人创建、`对齐可见ID/对齐可见`包含本人、或`指派对象ID/指派对象`包含本人的任务。
|
||
3. 查询张立柱和田海的正式账号信息:田海人员编号43、账号 `yljs16`;张立柱人员编号52、账号 `yljs07`;两人角色均为2012,角色功能均为“技术部”。
|
||
4. 查询角色2012的角色定义,确认其不包含“领导”或“管理员”,因此张立柱看到DID 53并非角色查看全部权限导致。
|
||
5. 查询正式任务DID 53,确认该任务创建人和指派对象均为田海,指派对象ID为43;但 `对齐可见ID` 保存为 `58,52,48`,其中包含张立柱人员编号52,所以正式查询过程按ID精确命中张立柱的可见权限。
|
||
6. 将DID 53的三个可见ID映射到正式人员信息:58为李春鹏、52为张立柱、48为葛永安;任务的 `对齐可见` 姓名字段却只保存了“葛永安”,证明该任务的可见ID与可见姓名不同步。
|
||
7. 检查设计任务页面当前代码,确认查询权限使用当前登录人员ID;编辑表单使用多选人员ID并将ID、姓名分别拼接保存。当前代码已包含远程选项缓存和按ID回填姓名逻辑,但历史记录不会在未重新选择可见人员时自动修复。
|
||
8. 回看Git历史,确认2026-07-21之前的多选处理仅从当前远程选项列表提取姓名。跨多次搜索选择多人时,已选ID会全部保留,但姓名可能只保留最后一次搜索列表中仍存在的人员,能够形成DID 53这种三个ID、一个姓名的历史数据。
|
||
9. 对正式库同类数据进行只读统计:146条 `对齐可见ID` 非空任务中有39条的ID数量和姓名数量不一致,说明该问题不只影响DID 53。
|
||
10. 未修改DID 53或其他39条历史记录,因为仅凭当前姓名字段无法确定DID 53原意是仅授权葛永安,还是同时授权李春鹏、张立柱、葛永安三人。
|
||
|
||
### 结论
|
||
- 张立柱能看到田海的DID 53,是因为任务的 `对齐可见ID=58,52,48` 明确包含张立柱的人员编号52,不是领导/管理员权限越权。
|
||
- 页面只显示“葛永安”具有误导性,因为该任务的可见姓名字段与可见ID字段不一致;权限过程以人员ID为准,因此仍会授权张立柱查看。
|
||
- 修正前必须由任务负责人确认真实授权范围:若只允许葛永安查看,应将可见ID改为48并同步姓名;若三人均应查看,则应保留三个ID并将姓名同步为李春鹏、张立柱、葛永安。
|
||
- 本次仅完成诊断和影响范围统计,没有修改正式业务数据。
|
||
|
||
## 2026-07-23 设计任务和设计报工列表统一三行截断及悬浮全文
|
||
|
||
### 用户提问
|
||
- 用户要求设计任务和设计报工的列表字段全部改为自动换行,超过三行后隐藏并显示省略效果,鼠标悬浮时显示完整内容。
|
||
|
||
### 执行过程
|
||
1. 检查两个页面现有表格结构和样式,确认数据行固定为108像素、内容区为72像素;普通 `show-overflow-tooltip` 字段被上一轮恢复为单行省略,四类说明字段则使用各自独立的三行提示组件,行为不统一。
|
||
2. 确认Element UI内置 `show-overflow-tooltip` 只可靠判断横向单行溢出,不能稳定识别三行纵向截断,因此改为统一的纵向溢出检测逻辑。
|
||
3. 新增共用混入文件 `src/views/ProductionManagement/DesignReportTask/mixins/threeLineTableTooltip.js`,由设计任务和设计报工共同使用,避免两页重复维护悬浮判断代码。
|
||
4. 在两张 `el-table` 上增加统一单元格分类、鼠标进入和离开事件;操作列明确排除,不影响按钮和“更多”菜单交互,其余列表字段统一使用三行展示规则。
|
||
5. 普通字段内容区设置为72像素、24像素行高,使用 `-webkit-line-clamp: 3`、自动换行和任意长单词断行;超过三行时隐藏后续内容并显示省略效果。
|
||
6. 移除领导批示、进度说明、异常说明和奇思妙想原有的独立 `el-tooltip` 包裹,四类说明与其他列表字段统一由表格级悬浮逻辑处理,避免重复弹出两个提示层。
|
||
7. 共用逻辑在鼠标进入单元格时比较内容的 `scrollHeight` 与 `clientHeight`,只有真实超过三行且内容非空时才显示完整浮层;未溢出的字段不会弹出多余提示。
|
||
8. 完整内容浮层最大宽度600像素、最大高度60%视口,保留原始换行并允许长文本断行;浮层会根据单元格上方空间自动显示在上方或下方,并限制在浏览器左右边界内。
|
||
9. 浮层支持鼠标进入和滚动,鼠标从单元格移向浮层时延迟150毫秒关闭,便于查看特别长的完整内容;离开浮层后关闭,页面销毁时清理延迟定时器。
|
||
10. 保留两页数据行严格固定108像素、操作按钮两列布局、“更多”菜单、查询权限和全部业务按钮逻辑,本次没有修改数据库过程或业务接口。
|
||
11. 对两个Vue页面和共用混入执行定向ESLint,检查通过;执行 `git diff --check` 无空白错误,仅有项目依赖自带的Browserslist数据过期提示。
|
||
12. 使用张立柱账号在 `https://127.0.0.1:1998/` 进行只读浏览器验证,只执行登录、打开设计任务和设计报工页面、查找溢出单元格和悬浮,不点击任何业务按钮。
|
||
13. 两页实际均加载45条当前可见数据;各找到一个实际4行内容的单元格,验证数据行为108像素、内容区为72像素、CSS三行截断值为3、换行方式为normal。
|
||
14. 两页悬浮浮层均成功显示,浮层文本长度与被截断单元格原始文本长度完全一致,证明可查看完整内容。
|
||
15. 验证后通过浏览器调试协议关闭独立无头浏览器,删除临时验证脚本和独立浏览器配置目录;登录密码仅在当前进程环境变量中使用,未写入项目或日志。
|
||
|
||
### 结论
|
||
- 设计任务和设计报工的所有数据字段现已统一为最多三行自动换行显示,超过三行后截断并显示省略效果。
|
||
- 只有实际溢出的单元格在鼠标悬浮时显示完整内容;特别长的内容可将鼠标移入浮层后滚动查看。
|
||
- 两页行高继续固定为108像素,操作列按钮和“更多”菜单不受三行截断样式影响。
|
||
- ESLint、热更新编译及张立柱账号实际页面悬浮验证均通过;本次没有产生或修改正式业务数据。
|
||
|
||
## 2026-07-23 限制列表悬浮全文窗口最大宽度
|
||
|
||
### 用户提问
|
||
- 用户要求设计任务和设计报工列表的悬浮全文窗口最大宽度为600像素。
|
||
|
||
### 执行过程
|
||
1. 检查两个页面刚增加的 `.table-cell-full-tooltip` 样式,确认定位逻辑按600像素计算,但CSS原来只设置了视口宽度限制,没有明确写入600像素硬上限。
|
||
2. 将设计任务和设计报工页面的悬浮浮层统一设置为 `max-width: 600px`。
|
||
3. 增加624像素以下窄屏媒体查询,在小屏下使用 `calc(100vw - 24px)`,保证浮层距离左右边缘各至少12像素,同时桌面端绝不超过600像素。
|
||
4. 对两个Vue页面执行定向ESLint和 `git diff --check`,检查通过;仅有项目依赖自带的Browserslist数据过期提示。
|
||
5. 检查本地开发服务 `https://127.0.0.1:1998/` 返回HTTP 200,本次仅调整前端样式,没有访问或修改正式数据库。
|
||
|
||
### 结论
|
||
- 设计任务和设计报工的悬浮全文窗口最大宽度均已固定为600像素。
|
||
- 窄屏设备继续自适应视口宽度,不会超出屏幕边界。
|
||
|
||
## 2026-07-23 设计工时报表显示全部字段并完善Excel导出
|
||
|
||
### 用户提问
|
||
- 用户要求修改设计工时报表,页面需要显示全部字段,并且能够导出。
|
||
|
||
### 执行过程
|
||
1. 检查 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`,确认页面已有作业者工时、任务工时两个树形页签和基础Excel导出,但页面列及导出映射均未覆盖查询过程的全部返回字段。
|
||
2. 只读查询正式数据库中 `设计报工_工时报表_作业者工时_查询` 和 `设计报工_工时报表_任务工时_查询` 的结果集元数据及参数,未执行任何业务写入。
|
||
3. 确认两个正式过程均返回20个字段:`Level`、`id`、`parentId`、操作人、工作日期、RID、DID、项目号、物料编码、物料名称、图号、类别、任务描述、开始时间、结束时间、报工次数、工时小时、校验状态、进度说明、备注。
|
||
4. 对比现有页面,确认作业者工时页签缺少独立的操作人和任务描述列,任务工时页签缺少操作人、工作日期和RID列;两个页签均未显示 `Level/id/parentId` 技术层级字段。
|
||
5. 对比现有导出,确认虽然树形标题间接包含部分内容,但Excel没有独立导出操作人、任务描述以及 `Level/id/parentId`,无法满足全部字段要求。
|
||
6. 在页面数据中新增统一的 `reportColumns` 字段配置,按正式过程返回顺序定义全部20个字段的字段名、显示标题、对齐方式、页面列宽和Excel列宽。
|
||
7. 将作业者工时和任务工时两套手写列替换为基于同一配置生成的动态列;两个页签现在均显示树形标题列及全部20个正式返回字段,共21列。
|
||
8. 保留树形展开结构和汇总行加粗显示;工时字段继续统一格式化为两位小数,空值保持为空,不改变总工时计算和筛选逻辑。
|
||
9. 重构Excel导出,使其直接复用页面的20字段配置;每个导出文件包含层级类型、对应页签的树形标题以及全部20个过程字段,共22列。
|
||
10. 为Excel设置与字段内容相匹配的列宽,并增加当前数据区域自动筛选;文件名继续包含报表类型和导出时间,导出范围继续使用当前页签及当前筛选结果。
|
||
11. 对设计工时报表执行定向ESLint和 `git diff --check`,检查通过;仅有项目依赖自带的Browserslist数据过期提示。
|
||
12. 检查字段配置数量为20且全部唯一,与正式过程20个字段逐项比对无缺失;本地开发服务返回HTTP 200,热更新产物已包含新字段配置。
|
||
13. 使用张立柱账号在本地开发页面进行只读验收,只执行登录、打开设计工时报表、切换页签和点击导出,不执行任何业务写入按钮。
|
||
14. 作业者工时页签实际显示21列和96行,成功下载Excel;Excel包含22列和96行,表头为层级类型、树形标题及全部20字段。
|
||
15. 任务工时页签实际显示21列和60行,成功下载Excel;Excel包含22列和60行,表头同样覆盖层级类型、树形标题及全部20字段。
|
||
16. 验证完成后关闭独立无头浏览器,并删除临时验证脚本、浏览器配置目录和两个临时Excel文件;登录密码仅在当前进程环境变量中使用,未写入项目或日志。
|
||
|
||
### 结论
|
||
- 设计工时报表的作业者工时和任务工时两个页签均已显示正式查询过程返回的全部20字段,并保留原树形汇总标题。
|
||
- 导出功能已与页面字段统一,每个Excel包含层级类型、树形标题和全部20字段,支持按当前筛选结果导出。
|
||
- ESLint、热更新编译、两个页签实际页面列数和Excel下载内容均验证通过。
|
||
- 本次仅修改前端报表展示和本地Excel生成逻辑,没有修改正式数据库或业务数据。
|
||
|
||
## 2026-07-23 设计工时报表改为点击查询后加载
|
||
|
||
### 用户提问
|
||
- 用户要求设计工时报表默认不加载数据,只有点击查询后才加载。
|
||
|
||
### 执行过程
|
||
1. 检查设计工时报表初始化逻辑,确认页面原来在 `created` 生命周期中直接调用 `searchTable()`,因此进入页面后立即查询作业者工时数据。
|
||
2. 删除 `created` 中的报表自动查询,只保留项目号和物料编码下拉选项初始化;页面首次进入时作业者工时和任务工时表格数据均为空。
|
||
3. 新增 `hasSearched` 状态,初始值为false,用于区分用户是否执行过报表查询。
|
||
4. 新增显式查询入口 `queryReport()`,点击查询按钮或在搜索区按回车时先将 `hasSearched` 设为true,再按当前页签和筛选条件加载数据。
|
||
5. 修改页签切换逻辑:用户尚未查询时,切换作业者工时和任务工时页签均不加载数据;用户查询过后,切换页签才查询对应报表。
|
||
6. 保留全部20字段展示、当前筛选条件、树形结构、总工时统计和Excel导出逻辑不变;空表状态下导出按钮继续禁用。
|
||
7. 对设计工时报表执行定向ESLint和 `git diff --check`,检查通过;仅有项目依赖自带的Browserslist数据过期提示。
|
||
8. 检查本地开发服务返回HTTP 200,热更新后的 `app.js` 已包含 `hasSearched` 和 `queryReport` 新逻辑;本次没有访问或修改正式数据库。
|
||
|
||
### 结论
|
||
- 设计工时报表首次进入时不再自动加载报表数据。
|
||
- 点击查询按钮或按回车后才加载当前页签数据;首次查询后切换页签会按当前筛选条件加载对应报表。
|
||
- 本次仅修改前端查询触发逻辑,没有产生或修改正式业务数据。
|
||
|
||
## 2026-07-23 回滚设计工时报表延迟查询改动
|
||
|
||
### 用户提问
|
||
- 用户要求回滚上一项“设计工时报表默认不加载数据,点击查询后再加载”的改动。
|
||
|
||
### 执行过程
|
||
1. 检查设计工时报表页面当前差异,区分上一项延迟查询改动与更早完成的“显示全部字段并支持导出”改动,避免扩大回滚范围。
|
||
2. 将搜索区域回车事件由 `queryReport` 恢复为直接调用 `searchTable`。
|
||
3. 将查询按钮点击事件由 `queryReport` 恢复为直接调用 `searchTable`。
|
||
4. 删除仅用于延迟首次查询的 `hasSearched` 状态和 `queryReport` 方法。
|
||
5. 在页面 `created` 生命周期中恢复调用 `searchTable()`,使页面进入后按原逻辑自动加载作业者工时报表。
|
||
6. 将页签切换处理恢复为直接调用 `searchTable()`,使作业者工时与任务工时页签切换后自动加载对应数据。
|
||
7. 保留此前新增的全部20个过程字段展示、树形结构、字段格式化和Excel完整导出功能,未回滚这些不属于本次范围的调整。
|
||
8. 对设计工时报表页面执行定向ESLint,检查通过;执行 `git diff --check`,无空白错误,仅有项目依赖自带的Browserslist数据过期提示和换行符提示。
|
||
|
||
### 结论
|
||
- 已准确回滚“默认不加载、点击查询后加载”的改动,设计工时报表恢复为进入页面及切换页签时自动查询。
|
||
- 查询按钮和回车查询功能正常保留,全部字段显示与Excel导出功能未受影响。
|
||
- 本次只修改前端代码,没有访问或修改正式数据库,也没有产生业务数据。
|
||
|
||
## 2026-07-23 更正设计工时报表回滚范围
|
||
|
||
### 用户提问
|
||
- 用户澄清需要回滚的是“设计工时报表显示全部字段且能导出”的修改;“设计工时报表默认不加载数据,点击查询后再加载”的修改需要保留。
|
||
|
||
### 执行过程
|
||
1. 重新读取设计工时报表当前文件、Git基线版本和前两次执行日志,确认上一轮对“回滚”的理解与用户实际要求相反。
|
||
2. 以Git基线版本为准,恢复作业者工时页签原有固定字段:树形标题、工作日期、RID、DID、项目号、物料编码、物料名称、图号、类别、报工次数、工时、开始时间、结束时间、校验状态、进度说明和备注。
|
||
3. 恢复任务工时页签原有固定字段:树形标题、DID、项目号、物料编码、物料名称、图号、类别、任务描述、报工次数、工时、开始时间、结束时间、校验状态、进度说明和备注。
|
||
4. 删除为展示全部20个过程字段新增的 `reportColumns` 配置、动态列渲染、统一字段格式化方法和汇总行辅助方法。
|
||
5. 将Excel导出恢复为原有字段映射、列名及列宽,删除全部20字段动态导出和新增的自动筛选设置;页面原本已有的导出按钮与基础导出能力继续保留。
|
||
6. 重新恢复延迟查询逻辑:搜索区域回车和查询按钮调用 `queryReport`,保留 `hasSearched` 状态与 `queryReport()` 方法,并移除 `created` 中的自动报表查询。
|
||
7. 保留首次查询前切换页签不加载数据、首次查询后切换页签按当前条件加载对应报表的处理。
|
||
8. 将最终页面与Git基线比较,确认差异只包含延迟查询相关的5组改动,不再包含全部字段显示或扩展导出改动。
|
||
9. 对页面执行定向ESLint和 `git diff --check`,检查通过;仅有项目依赖自带的Browserslist数据过期提示和换行符提示。
|
||
10. 检查本地开发服务 `https://127.0.0.1:1998/` 返回HTTP 200;本次没有访问或修改正式数据库,也没有产生业务数据。
|
||
|
||
### 结论
|
||
- 已回滚“设计工时报表显示全部字段并完善Excel导出”的修改,页面字段和导出内容恢复为原版本。
|
||
- 已保留“默认不加载数据,点击查询后再加载”的修改,查询按钮和回车均可触发首次加载。
|
||
- 上一条回滚日志记录的是中间误操作过程,本条日志为用户澄清后的最终结果说明。
|
||
|
||
## 2026-07-23 设计工时校验新增数据库分页
|
||
|
||
### 用户提问
|
||
- 用户要求在设计工时校验页面新增分页功能,分页写法参考工艺查询页面。
|
||
|
||
### 执行过程
|
||
1. 定位设计工时校验页面 `src/views/ProductionManagement/DesignReportTask/Check/index.vue`,确认原页面查询后一次性显示查询过程返回的全部数据,没有页码、每页条数或总条数状态。
|
||
2. 检查参考页面 `src/views/ProcessManagement/ProcessInquiry/index.vue`,确认其分页模式为:前端传入 `PageCurrent`、`PageSize`,数据库通过输出参数 `PageCount`、`ItemCount` 返回总页数和总条数,分页控件使用每页20、50、100条。
|
||
3. 只读检查正式库 `dbo.设计报工_工时校验_查询` 的参数和定义,确认原过程只有搜索条件与当前用户权限参数,没有分页参数,原查询最多返回1000条。
|
||
4. 在设计工时校验页面增加 `el-pagination`,显示总条数、每页条数、上一页、页码、下一页和页码跳转,选项与工艺查询一致为20、50、100条。
|
||
5. 新增 `pageCurrent`、`pageSize`、`total` 分页状态,并在查询参数中加入 `PageCurrent`、`PageSize`、`PageCount`、`ItemCount`。
|
||
6. 将查询按钮和搜索区域回车事件统一改为 `queryTable()`,执行新搜索时先回到第1页;新增每页条数和当前页变化处理,变化后重新从数据库查询对应页面。
|
||
7. 修改查询响应解析,按工艺查询相同结构读取 `response.data.result` 和 `response.data.output[0].ItemCount`;查询失败时清空列表及总条数。
|
||
8. 新建数据库变更脚本 `db_backups/add_design_report_check_pagination_20260723.sql`,为查询过程增加4个分页参数,并保留原DID、项目号、物料编码、类别、操作人、日期、校验状态及当前角色权限过滤。
|
||
9. 数据库过程先将符合全部搜索和权限条件的RID放入临时表,再计算总条数与总页数,最后按RID倒序使用 `OFFSET/FETCH` 返回当前页,确保分页发生在数据库端而不是前端截断。
|
||
10. 首次使用 `sqlcmd` 默认编码执行脚本后,核对发现中文过程签名没有变化,说明脚本没有按UTF-8正确解析;该次没有修改过程,也没有生成异常名称过程。
|
||
11. 使用 `sqlcmd -f 65001` 按UTF-8重新发布,正式过程成功增加 `PageCurrent`、`PageSize`、`PageCount OUTPUT`、`ItemCount OUTPUT` 四个参数。
|
||
12. 使用张立柱、角色2012的权限条件执行只读验证:全部状态共70条,每页20条时输出总页数4、总条数70;再以每页1条查询第1页和第2页,分别返回RID 268和RID 264,证明页码偏移及稳定倒序生效。
|
||
13. 对设计工时校验页面执行定向ESLint和 `git diff --check`,检查通过;同时等价修正原文件批量校验回调空格和按钮属性顺序的代码风格问题。
|
||
14. 检查本地开发服务返回HTTP 200,热更新后的 `app.js` 已包含 `pageCurrent`、`ItemCount` 和 `handleSizeChange` 分页逻辑;正式过程修改时间和4个分页参数均再次核验通过。
|
||
|
||
### 结论
|
||
- 设计工时校验页面已增加数据库分页,支持每页20、50、100条、页码切换、上一页/下一页和直接跳页。
|
||
- 新搜索自动回到第1页,校验保存或批量校验后的刷新继续停留在当前页。
|
||
- 分页总数在应用原有搜索条件和查看权限后计算,不会绕过当前用户的数据可见范围。
|
||
- 本次只发布查询过程定义并执行只读验证,没有新增、修改、删除任何正式业务数据,也没有执行校验保存操作。
|
||
|
||
## 2026-07-23 研发管理新增研发财务工时页面
|
||
|
||
### 用户提问
|
||
- 用户要求在研发管理下新增“研发财务工时”页面,形式参考设计工时报表,包含作业者工时和任务工时两个视图。
|
||
- 用户要求数据格式不能使用“操作人/日期/任务”等多个字段拼接成一个字段的形式,操作人、日期、任务等必须拆开显示。
|
||
- 用户要求参考编辑设计任务截图增加任务来源、设计要求、对其可见、指派对象、计划日期、父件物料、研发立项号、研发目的等字段。
|
||
|
||
### 执行过程
|
||
1. 检查现有设计工时报表页面、查询过程、设计任务表结构、研发管理动态菜单和截图字段,确认新功能应作为独立页面和独立查询过程实现,不修改现有设计工时报表。
|
||
2. 只读检查正式表 `MES_设计报工_任务`,确认截图字段均已存在:任务来源、设计要求、对齐可见、指派对象、预计开始时间、预计结束时间、项目号、物料编码、物料名称、图号、关联父件物料编码、关联父件物料名称、研发立项号、研发目的、备注及创建日期。
|
||
3. 只读检查正式研发管理菜单,确认账号1、2009、2010、2011、2012、2023、2028均已启用研发管理及设计任务、设计报工、设计工时校验、设计工时报表菜单。
|
||
4. 新建 `src/views/ProductionManagement/DesignReportTask/FinancialHours/index.vue`,组件名称为 `DesignReportFinancialHours`,保持与现有动态路由加载方式兼容。
|
||
5. 页面增加作业者工时和任务工时两个页签,首次进入不加载业务报表数据,点击查询或在搜索区域按回车后才执行查询。
|
||
6. 搜索条件包含开始日期、结束日期、操作人、项目号、物料编码、类别、任务来源、研发立项号和任务ID;项目号和物料编码继续使用现有远程下拉查询。
|
||
7. 数据库只返回每条已结束设计报工的独立字段明细,前端将同一批明细分别组织为“作业者汇总→日期汇总→报工明细”和“任务汇总→作业者汇总→报工明细”两种树形结构。
|
||
8. 页面单独设置“层级”列显示作业者汇总、日期汇总、任务汇总、报工明细;操作人、工作日期、RID、DID均为独立列,没有建立“操作人/日期/任务”复合展示列。
|
||
9. 页面共配置31个独立数据字段,包括操作人、工作日期、RID、DID,以及截图中的创建日期、类别、任务来源、任务描述、设计要求、对其可见、指派对象、预计开始/结束时间、项目号、物料、图号、父件物料、研发立项号、研发目的、任务状态、创建人和任务备注。
|
||
10. 同时保留财务工时所需的报工开始/结束时间、报工次数、工时小时、校验状态、进度说明和报工备注;任务备注与报工备注分成两个字段,避免不同来源数据混在一列。
|
||
11. 汇总行的报工次数、工时、时间范围和校验状态在前端按明细计算;页面底部显示当前页签总工时,两个页签共用同一批权限过滤后的明细,切换页签不重复访问数据库。
|
||
12. 增加Excel导出,导出列直接复用当前页签字段配置;Excel中“层级”和31个数据字段全部独立成列,不导出任何拼接字段,并带有列宽和自动筛选。
|
||
13. 新建 `db_backups/add_research_financial_hours_20260723.sql`,创建只读过程 `dbo.设计报工_研发财务工时_查询`;过程使用与现有设计工时报表相同的角色权限规则,领导或管理员可查看全部,普通角色只查看本人创建任务或本人报工记录。
|
||
14. 查询过程增加任务来源和研发立项号过滤,要求开始时间和结束时间均存在,并按报工开始时间、RID倒序返回31个独立字段,不使用字段拼接或字符串组合生成复合业务列。
|
||
15. 脚本在事务中为所有已启用研发管理的角色账号新增“研发财务工时”菜单,菜单路径为 `DesignReportTask/FinancialHours/index`,组件路径为 `/ProductionManagement/DesignReportTask/FinancialHours/index`,使用现有 `WhiteCollarBonusesSummary` 图标。
|
||
16. 使用UTF-8代码页将脚本发布到正式库,成功创建查询过程并为7个角色账号各新增1条菜单配置;每个账号的菜单ID均为252,父菜单ID为9。
|
||
17. 使用系统结果集元数据检查查询过程,确认按顺序返回31个字段且字段名与前端配置一致;使用张立柱、角色2012和DID 135执行只读验证,实际返回记录正确带出设计要求、对其可见、指派对象、任务状态、报工时间、工时和校验状态。
|
||
18. 对新页面执行定向ESLint和 `git diff --check`,检查通过;检查本地开发服务返回HTTP 200,热更新后的 `app.js` 已包含新组件、查询过程名称、任务来源和父件物料字段。
|
||
|
||
### 结论
|
||
- 研发管理下已新增“研发财务工时”页面,包含作业者工时和任务工时两个树形视图,并支持条件查询、总工时及Excel导出。
|
||
- 页面及Excel中的操作人、日期、任务、任务属性和报工属性全部独立成列,没有“操作人/日期/任务”等复合拼接字段。
|
||
- 已显示截图要求的任务来源、设计要求、对其可见、指派对象、预计日期、项目物料、父件物料、研发立项号、研发目的和任务备注等字段。
|
||
- 正式库没有新增、修改或删除设计任务、设计报工、工时校验等业务数据;本次正式库变更仅包含1个只读查询过程和7条页面菜单配置记录。
|
||
|
||
## 2026-07-23 生成今日工作内容
|
||
|
||
### 用户提问
|
||
- 用户要求根据当日完成的设计任务权限、设计任务与设计报工操作按钮、悬停样式、现场报工限制核查、设计工时报表延迟加载、设计工时校验分页、研发财务工时页面和系统管理用户操作手册等内容,按照指定的时间段及逐行事项格式生成今日工作。
|
||
|
||
### 执行过程
|
||
1. 汇总用户列出的9类工作内容,并结合当日实际执行记录核对各项工作的先后关系和完成情况。
|
||
2. 将上午工作划分为设计任务查看权限、操作按钮布局与更多菜单、列表行高及悬停全文样式三个阶段。
|
||
3. 将下午工作划分为现场反馈报工限制核查、设计工时报表延迟加载、设计工时校验分页、研发财务工时页面和系统管理用户操作手册五个阶段。
|
||
4. 按用户示例使用 `1.08:30-09:30` 至 `8.17:20-18:00` 的编号与时间格式,每个时间段使用独立短句描述检查、排查、修改和验证内容。
|
||
5. 对“现场反馈报工模块限制有问题”如实记录为完成权限参数、角色范围及实际数据核查后确认当前逻辑无异常,没有表述为已修改问题。
|
||
6. 对研发财务工时和设计工时校验分页明确记录了查询过程、权限过滤、菜单及页面验证;对操作手册记录系统管理功能、截图、数据关系和问题清单整理。
|
||
7. 本次仅生成文字版今日工作,没有修改页面、数据库过程、菜单配置或正式业务数据。
|
||
|
||
### 结论
|
||
- 已按照用户提供的格式生成8个时间段的今日工作内容,覆盖用户列出的全部工作事项。
|
||
- 内容区分了功能修改、问题排查、验证结果和文档编制,现场报工限制问题按“检查无问题”如实记录。
|
||
|
||
## 2026-07-23 生成明日操作手册编写计划
|
||
|
||
### 用户提问
|
||
- 用户要求按照上一条今日工作的相同格式生成明日计划,计划内容为编写计划排产、生产管理、质量管理、工艺管理、设备管理、异常提醒和研发管理所有页面的用户操作手册。
|
||
|
||
### 执行过程
|
||
1. 沿用用户指定的8个时间段格式,从08:30开始至18:00结束。
|
||
2. 将计划排产、生产管理、质量管理、工艺管理、设备管理、异常提醒和研发管理七个模块分别安排到独立时间段。
|
||
3. 为每个模块统一规划页面清单核对、功能说明、搜索过滤、操作步骤、上下游数据关系、权限限制、页面截图和问题记录等内容。
|
||
4. 将最后一个时间段安排为全模块页面覆盖复核、截图检查、格式统一、目录整理及问题清单汇总,确保“所有页面”要求可以验收。
|
||
5. 本次仅生成明日计划文字,没有修改程序、操作手册文件、数据库或正式业务数据。
|
||
|
||
### 结论
|
||
- 已按上一条相同格式生成8个时间段的明日计划,覆盖指定的七个业务模块及最终统一复核工作。
|
||
|
||
## 2026-07-24 复核并修订 MES 系统用户操作手册 V1.1
|
||
|
||
### 用户提问
|
||
- 用户要求修改《大连元利流体技术有限公司MES系统用户操作手册_V1.1_2026-07-23.docx》:10.3“机加件已排产”截图不能为空,计划开始、计划完成、外协分组等可编辑字段必须解释,点击编辑后的弹窗必须展示,并检查全册其他页面是否有同类问题。
|
||
- 用户要求可以保留业务上下游数据关系,但删除用户不可见的存储过程名称、接口或内部实现信息。
|
||
- 用户说明这是正式环境,用户手册中不要出现“编写时未执行”“未产生数据”等与用户操作无关的编制过程表述。
|
||
- 用户提供正式数据库连接信息用于核对页面数据;日志及文档均未记录连接密码。
|
||
|
||
### 执行过程
|
||
1. 检查仓库文档、手册生成脚本、69页页面目录、现有截图和对应 Vue 页面源码,确认原手册由通用模板生成,10.3 截图为空且遗漏了表格内直接编辑、即时保存和编辑弹窗说明。
|
||
2. 逐项核对 `SelfMakePlandone` 当前页面实现,确认实际查询条件包括生产订单、销售订单、物料编码、物料名称、工序名称、要求完工日期、计划开始、计划完成和工位复选框。
|
||
3. 核对 10.3 实际可编辑内容:指派对象、指派数量、计划开始、计划完成、外协分组、二次派工、最晚开始均可在列表中维护;除指派数量需点击行内确定外,多数控件在选择或输入完成后即时保存。
|
||
4. 核对【编辑】按钮实际打开“编辑备注信息”弹窗,弹窗维护优先级、未完成说明和派工特殊备注;点击【确定】提交,点击【取消】不保存本次弹窗修改。
|
||
5. 以只读方式连接正式数据库,按自制件及已完成排产状态执行页面对应查询,确认正式环境存在约1205条可展示任务,旧截图为空是截图时机和查询等待不足,不是页面没有数据;未执行新增、修改、删除或状态变更操作。
|
||
6. 修改截图脚本:默认等待时间调整为5秒,进入页面后自动点击可用的【查询】并等待加载完成;10.3 额外等待表格记录出现,并单独打开、截取“编辑备注信息”弹窗。
|
||
7. 使用只读角色重新截取目录中的69个业务页面,全部成功完成;10.3 主截图已显示任务记录、计划开始、计划完成和外协分组等实际列,弹窗截图也已生成。
|
||
8. 新增页面弹窗审计脚本,解析69个 Vue 模板中的弹窗、表单字段、表格列、命令按钮和行内编辑控件;审计结果为44个页面含弹窗、48个页面含行内编辑,确认遗漏弹窗说明不是10.3单页问题。
|
||
9. 新增 OpenXML 修订脚本并从修改前备份重复生成,替换69张主截图;对44个含弹窗页面增加“弹窗与可编辑内容”小节,其中8个早期定制页面按其实际小节结构顺延编号,其余页面在“前后数据关系”之前插入说明。
|
||
10. 专门重写 10.3:更新页面用途、9项查询条件和功能按钮说明;新增“10.3.4 可编辑字段与编辑弹窗”,详细说明7个行内可编辑字段及编辑入口,并写明即时保存、数量校验、日期关系和取消规则。
|
||
11. 在 10.3 中嵌入有数据的系统主页面截图和编辑备注弹窗截图;新增“10.3.5 前后数据关系”,分别说明上游业务数据、本页维护结果和对派工、日程、原料准备、生产执行及及时性判断的下游影响。
|
||
12. 全册删除“页面路由”“只读查询过程/接口”“写入过程/接口”“技术核对说明”等内部实现内容;将页面输入、页面输出改为用户可理解的业务上下游表述,并删除“本文档编制未实际执行”“未产生数据”“不产生数据”“正式环境只读截图”等编制过程措辞。
|
||
13. 使用目录中全部路由、查询过程及写入过程名称对最终文档全文反向扫描,确认内部路由或过程名称残留为0;同时确认不应出现的编制措辞残留为0。
|
||
14. 新增独立校验脚本,逐页检查文档标题、图片关系和截图像素内容;WPS 保存前69张主截图与源截图一致,WPS 保存后按其显示尺寸缩放,双线性重采样复核仍全部通过。
|
||
15. 校验44个含弹窗页面均存在对应弹窗说明;确认 10.3 包含计划开始、计划完成、外协分组、即时保存、编辑备注弹窗以及三层业务数据关系等关键内容。
|
||
16. 使用 WPS/Word COM 正常打开并保存 DOCX,更新目录和全部域,重新分页并导出同名 PDF;最终文档共278页,证明 Office 可以正常解析修订后的文档包。
|
||
17. 定位 10.3 正文并渲染 PDF 第98至102页进行版式检查,确认有数据截图、查询条件表、可编辑字段表、弹窗截图和上下游数据关系表均清晰,未出现文字截断、表格越界或图片空白。
|
||
18. 对截图、审计、修订、校验和 PDF 渲染脚本执行 ESLint,检查通过;仅输出项目现有 Browserslist 数据过期提示,没有代码错误。
|
||
19. 保留修改前备份于 `work/system-manual/backups`,最终 DOCX 和 PDF 写入 `doc` 目录;未改动工作区中原有的研发页面、数据库脚本或其他用户未提交变更。
|
||
|
||
### 结论
|
||
- 用户指定的 DOCX 已完成全册复核和修订,10.3 现已使用有正式任务数据的截图,并完整补充可编辑字段、即时保存规则、编辑弹窗及上下游业务影响。
|
||
- 69个业务页面截图已全部重新生成,44个含弹窗页面均已补充弹窗与可编辑内容说明。
|
||
- 用户不可见的内部路由、存储过程/接口名称和与用户操作无关的编制过程措辞已全部移除。
|
||
- 同名 PDF 已同步更新为278页,结构校验、内容扫描、截图像素校验、Office 打开保存和关键页面渲染检查均通过。
|
||
|
||
## 2026-07-24 继续完善 MES 操作手册的操作结果与业务影响
|
||
|
||
### 用户提问
|
||
- 用户反馈手册仍不全面,以工艺管理/生产工艺为例:“保存为标准工艺”、“下发任务”、“保存”的实际作用和影响没有解释。
|
||
- 用户指出编辑生产工艺窗口中,左侧单击工序新增,以及上移、下移、删除、插入等操作都没有说明。
|
||
- 用户要求不能将所有操作概括为“保存提交”,必须结合代码说明操作后改变了什么、何时生效、影响哪个后续环节,并继续修改全册。
|
||
|
||
### 执行过程
|
||
1. 重新通读生产工艺页面模板、数据状态和全部事件处理方法,确认页面列表、编辑生产工艺窗口、左侧工序库、右侧当前路线和行内操作之间的关系。
|
||
2. 确认左侧单击工序有两种结果:没有插入占位行时追加到路线末尾;已点击插入时将所选工序填入占位位置。两种情况都立即写入当前订单工艺,并使路线进入需重新保存启用的状态。
|
||
3. 确认准备工时、标准工时、工时合计在输入变化时立即保存;工装量具、指定机床、车间和属性在选择变化时立即保存;工序说明和备注在输入完成后保存。
|
||
4. 确认顶部【保存】的作用不是统一提交右侧行内字段,而是将当前订单生产工艺标记为已启用,并更新计划中的生产工艺状态;该操作本身不生成生产任务。
|
||
5. 确认上移和下移会与相邻工序交换顺序;插入会建立空占位行并将原工序后移,必须再到左侧选择工序;删除会删除当前工序并重排后续顺序。这些结构调整后都需重新保存启用。
|
||
6. 以只读方式查看正式数据库中相关业务定义,确认“保存为标准工艺”会将当前订单的整条生产工艺复制为该物料的标准工艺,并替换旧标准;后续同物料批量生成生产工艺时使用新标准。
|
||
7. 确认顶部【下发任务】会按整条工艺路线生成全部工序任务,更新任务下发状态,并避免重复生成整套任务;行内【下发任务】只用于补发当前单工序任务,并维护后续任务顺序。
|
||
8. 确认“批量生成生产工艺”只处理已有标准工艺且尚无生产工艺的勾选订单,将标准工艺复制为订单专用工艺,但不会下发生产任务。
|
||
9. 新增全册操作审计脚本,去除 Vue 模板注释后解析69个业务页面的按钮、下拉命令、行点击事件、处理方法、参数、列表刷新及窗口关闭行为;共识别466个操作,其中202个具有业务数据影响。
|
||
10. 修改手册生成脚本,将69页原“按钮/操作说明”两列表全部替换为“操作入口、执行结果、业务影响与注意事项”三列表,并依据查询、新增、编辑、保存、删除、下发、开始、结束、报工、送检、收检、上传、导入、导出等实际行为写明结果和下游影响。
|
||
11. 对只是打开窗口的【编辑】/【修改】入口单独分类,明确“打开窗口本身不修改数据”;只有真正写入的确认或保存动作才说明为保存,避免将所有按钮统一写成“保存提交”。
|
||
12. 重写通用弹窗说明,根据弹窗实际命令写明【确定】、【保存】、【取消】、【关闭】等动作的结果,删除“核对内容后使用弹窗中的确定提交”等空泛句式。
|
||
13. 专门重写9.3生产工艺:更新页面用途和主页操作表,新增“编辑生产工艺与保存时机”、“顶部与行内操作结果”、“前后数据关系”三个小节,详细说明左侧添加、即时保存字段、顺序调整、插入、删除、启用、保存为标准工艺和两种下发方式。
|
||
14. 首次尝试通过下拉框自动切换“已下发”状态时,正式构建的页面控件未稳定响应,旧截图仍显示未下发且弹窗无路线数据;没有将该空图写入最终手册。
|
||
15. 改为从 Vue Router 当前路由实例获取生产工艺页面组件,只修改页面查询状态为“已下发”并调用原查询方法;成功读取424条已下发记录,打开第一条记录后右侧显示6道实际工序。
|
||
16. 重新截取9.3主页和“编辑生产工艺”窗口,弹窗图中已清晰显示左侧工序库、右侧6道工序、工时字段、上移/下移/插入/删除图标和单工序下发入口,并嵌入手册作为图9.3-2。
|
||
17. 更新校验脚本,逐页确认69张主截图、69张“操作结果与影响”表、44个含弹窗页面的弹窗说明、9.3非空弹窗截图和10.3编辑备注截图均存在且图片内容匹配。
|
||
18. 对全文反向扫描,确认“保存提交”、原通用弹窗空泛句式、“未产生数据”、“存储过程”、内部路由和内部过程名称残留均为0。
|
||
19. 对截图、操作审计、手册修订和校验脚本执行定向 ESLint,检查通过;只输出项目现有 Browserslist 数据过期提示,没有代码错误。
|
||
20. 使用 Word COM 更新目录和全部域,重新分页、保存 DOCX 并导出同名 PDF;最终文档为287页,Word 正常完成保存和导出。
|
||
21. 定位并渲染 PDF 中9.3生产工艺的关键页,检查主页数据截图、非空编辑弹窗、即时保存表、顶部/行内操作表和前后数据关系,确认无图片空白、文字截断、表格越界或标题错位。
|
||
22. 本次对正式环境仅执行页面查询、图纸/工艺数据读取和数据库定义只读核对,没有点击保存、保存为标准工艺、下发任务、新增、修改或删除,没有改变正式业务数据。
|
||
|
||
### 结论
|
||
- 《大连元利流体技术有限公司MES系统用户操作手册_V1.1_2026-07-23.docx》已继续修订,9.3生产工艺现已完整说明各类保存、标准工艺覆盖、整单/单工序下发、左侧添加以及上移、下移、插入和删除的实际结果与影响。
|
||
- 9.3已使用“已下发”正式记录截图,编辑弹窗中显示6道实际工序,不再是空白窗口。
|
||
- 全册69个业务页面的功能表已统一改为“操作入口、执行结果、业务影响与注意事项”,不再将不同操作笼统写为“保存提交”。
|
||
- 内部路由、用户不可见的后台名称和与用户操作无关的编制过程描述均未写入手册。
|
||
- 同名 PDF 已同步更新为287页,DOCX包结构、截图内容、操作表、弹窗覆盖、禁用措辞、内部名称扫描、Office重新分页和关键 PDF 页面版式均已通过校验。
|
||
|
||
## 2026-07-24 生成 MES 系统标准技术文档
|
||
|
||
### 用户提问
|
||
- 用户要求在现有 MES 项目、正式环境配置和业务实现基础上,再生成一份系统级标准技术文档。
|
||
|
||
### 执行过程
|
||
1. 检查项目目录、`package.json`、前端入口、路由、Vuex、公共组件、API 封装、静态配置、业务页面和已有文档,确定技术文档需要同时覆盖现状基线、目标规范、部署、数据、接口、权限、安全、运维、测试和发布管理,不能写成用户操作手册的重复内容。
|
||
2. 统计前端源码规模和模块分布:项目基于 Vue 2.7.16、Element UI 2.15.14、Vue Router 3.6.5、Vuex 3.6.2、Axios 0.21.4 和 Webpack 5.89.0;共有99个 Vue 业务视图文件、28个 API JavaScript 文件和8个共享 Vue 组件。
|
||
3. 核对 `static/config.js` 与请求封装,整理当前 MES 通用接口、站点服务、SAP B1 代理、OpenAPI 和 AGV 服务端点;技术文档仅记录系统集成地址、用途和配置来源,不记录任何账号或密码。
|
||
4. 使用用户提供的正式数据库连接信息,以只读方式核对 `192.168.2.92 / YL_MESDB` 技术基线;全程没有执行新增、修改、删除、建表、发布过程或状态变更操作,连接密码未写入文档、脚本、日志或最终答复。
|
||
5. 确认正式数据库为 SQL Server 2019 RTM 15.0.2000.5,兼容级别150,排序规则 `Chinese_PRC_CI_AS`,恢复模式 SIMPLE;现有61张用户表、27个视图、425个存储过程和2个标量函数,总文件容量约19.44 GB,其中数据文件约16.62 GB、日志文件约2.82 GB。
|
||
6. 只读统计正式菜单与角色配置,确认626条启用菜单记录、26个角色账号、75个不同的正式启用功能页面;按技术归属归并为系统管理5页、设备管理4页、研发管理5页、工艺管理9页、计划排产13页、生产管理21页、异常提醒4页、质量管理13页和销售管理1页,共9个业务模块。
|
||
7. 分析登录与多角色选择、动态菜单加载、Axios 请求拦截、统一响应处理、SAP B1 请求、文件访问、AGV 调度和业务页面调用方式,形成浏览器、Vue 单页应用、MES 服务、集成服务、SQL Server 与外部系统之间的逻辑边界。
|
||
8. 分析生产订单、标准工艺、生产工艺、工序任务、计划排产、派工、执行、报工、送检、检验、入库和工时结算之间的主业务链路,在技术文档中使用业务对象和数据关系说明上下游影响,并将内部数据库对象清单放入技术附录,而不是混入用户操作说明。
|
||
9. 新建 `work/system-technical-document/build-standard-technical-document.ps1`,通过 Word/WPS COM 自动生成规范化 DOCX 与 PDF;统一设置封面、文档编号、修订记录、自动目录、标题层级、页眉页脚、页码、正文、表格样式、图题和附录格式。
|
||
10. 使用 `System.Drawing` 生成逻辑架构图、核心业务闭环图、权限流程图和部署拓扑图四张位图,并嵌入文档;图中区分当前实现、系统边界、服务边界、数据流和外部集成,避免仅用文字描述复杂关系。
|
||
11. 文档正文编写为20章,覆盖文档说明、系统概述、总体技术架构、技术栈与源码结构、部署架构与环境配置、配置管理、身份权限与安全、请求与接口规范、数据架构、关键业务技术设计、模块技术边界、文件设备与外部集成、日志监控告警、性能容量、运维故障处理、变更发布回退、测试验收、已知风险和技术债、正式功能页面清单、关键对象参考及上线运维检查表。
|
||
12. 对技术现状和标准要求进行明确区分:版本、端点、数据库规模、页面数量和当前请求行为按源码或正式环境记录;事务、幂等、审计、备份、监控、性能目标、变更审批、回退和验收作为应执行的技术规范记录,避免把建议误写成已实现能力。
|
||
13. 首次运行生成器时发现 `Drawing.Color` 短类型名解析失败,改为完整 `System.Drawing` 类型并将程序集加载提前;随后处理模块表、技术栈表和页面附录的 PowerShell 数组展开问题,保证表头与数据行列数一致。
|
||
14. 针对当前 Office/WPS COM 兼容层不支持部分内置文档属性的情况增加兼容处理;对文档保存成功后 `Quit` 产生的 RPC 兼容错误进行结果校验和容错,确保只有产物实际生成成功时脚本才正常结束。
|
||
15. 首轮生成后检查 DOCX 包结构、图片关系、表格数量、标题结构和关键章节文本,确认四张图均作为真实 PNG 嵌入;同时检查 PDF 文本层,确认自动目录、正文和附录均可检索,不是图片式文档。
|
||
16. 新建 `work/system-technical-document/render-technical-pdf-page.js`,使用项目现有 PDF 与 Canvas 依赖读取全部页面文本,并按指定页码渲染 PNG,用于不依赖人工打开 Office 的版式复核。
|
||
17. 对封面、目录、业务闭环、逻辑架构、运行时端点、权限流程、数据架构、模块附录和上线检查表等代表页面进行视觉抽检,确认页面非空、图像清晰、标题层级正确、表格未越界且正文没有截断或重叠。
|
||
18. 视觉抽检发现数据域表格有一行被拆到相邻两页,修改表格规则为数据行禁止跨页拆分后重新生成;复核确认跨页半行已消除,长表仍能按完整行正常分页。
|
||
19. 第二轮抽检发现只有5行的告警分级表把最后一行单独排到下一页,于是对6行以内的小表设置整体跟随规则;最终告警分级表四个等级完整保留在同一页,后续性能章节也未发生挤压或截断。
|
||
20. 最终使用单次进程级 `ExecutionPolicy Bypass` 运行生成器,绕过本机禁止直接执行 PowerShell 脚本的会话策略;没有修改计算机或用户级执行策略。生成结果为32页、9个模块、75个正式启用页面。
|
||
21. 对最终 DOCX 执行压缩包结构校验,确认包可正常读取、包含58张表和嵌入媒体,且“正式数据库基线”“上线与运维检查表”“75个正式启用功能页面”等关键内容存在;DOCX 大小296009字节。
|
||
22. 对最终 PDF 逐页提取文本,确认共32页,封面、7页目录/前置内容、正文、附录和检查表连续完整;渲染第25页复核短表分页,确认告警分级表、性能章节和性能验收表均完整显示;PDF 大小985209字节。
|
||
23. 对 PowerShell 生成器执行语法解析,结果通过;对 PDF 渲染脚本执行定向 ESLint,结果通过,仅输出项目依赖现有的 Browserslist 数据过期提示,没有脚本错误。
|
||
24. 记录最终文件 SHA-256:DOCX 为 `E0B222ACABC5A20FD66397A07E4F8EA5A600DC30F378F6E0067A99D74981864D`,PDF 为 `D0074357B93E92870CF187003024C5B5606901E173494DF445AE7E15E8AF7E2B`,便于交付后核验文件一致性。
|
||
25. 检查 Git 工作区,只新增本次标准技术文档、生成器、图表和验证辅助文件;未覆盖或回退用户已有的研发页面、数据库脚本、操作手册及其他未提交修改。
|
||
|
||
### 结论
|
||
- 已生成《大连元利流体技术有限公司MES系统标准技术文档_V1.0_2026-07-24》DOCX 和同名 PDF,最终版共32页。
|
||
- 文档以源码和正式环境只读核对结果为基线,覆盖9个业务模块、75个正式启用页面、系统架构、部署配置、数据、接口、权限安全、运维、性能、发布回退和测试验收等系统级技术内容。
|
||
- 四张架构与流程图、58张表、自动目录、页眉页脚、附录及上线检查表均已生成;DOCX结构、PDF文本层、脚本语法、静态检查和代表页面视觉版式均通过验收。
|
||
- 正式数据库仅用于只读技术基线核对,没有产生或修改正式业务数据;数据库密码及其他敏感凭据没有写入任何交付文档或执行日志。
|
||
|
||
## 2026-07-24 继续复核用户操作手册:统一按钮上下文与详细操作步骤
|
||
|
||
### 用户提问
|
||
- 用户指出上一轮手册中“取消、确认、确定”等按钮没有说明属于哪个页面或哪个弹窗,截图只是举例,要求把这个问题作为全册共性问题处理。
|
||
- 用户以4.4“移除菜单”为清晰标准,要求后续章节也按“定位对象、点击入口、确认对象、操作结果”的顺序写出细致可执行步骤,而不是只列孤立按钮名称。
|
||
|
||
### 执行过程
|
||
1. 检查 `work/system-manual` 中的手册生成、修订、截图、页面目录、弹窗审计、按钮审计、PDF渲染和校验脚本,确认用户指出的问题来自全册动作生成规则,不是单一截图或单一章节。
|
||
2. 检查 `revise-full-manual.js`,确认原逻辑直接把按钮审计中的原始 `label` 写入 Word;模板扫描得到的代码片段、多个按钮拼接文本和字段标题也因此进入“操作入口”列。
|
||
3. 对 `manual-action-audit.json` 全量检索,识别出 `status-light-green/status-light-gray`、`scope.row`、`确定 关闭`、`取 消`、多个按钮合并、以及“入库检/退库检/收检”后拼接整行字段标题等问题类型。
|
||
4. 新增动作上下文解析:根据页面标题、动作方法、表达式和弹窗审计结果推断“编辑备注信息、生产工艺拷贝、送检、收检、异常工时、编辑任务信息、退库单、领料单、报工结束、加班确认”等弹窗名称;无明确弹窗时使用“页面名称+确认窗口”的可识别名称,不再使用“当前弹窗”这种含糊称呼。
|
||
5. 新增用户可读按钮名称归一化:查询按钮统一为“查询”;代码状态片段不再输出;长审计文本转换为“查看检验详情、入库检、退库检、收检、终检记录、加急状态调整”等业务动作;序检页面的复合按钮改写为“序检自检窗口的上/下条、保存与删除”。
|
||
6. 对“查询、新增标准、修改、删除、确定、取消”被审计器拼成一个动作的质量检验标准页面增加组合动作拆分,生成独立的操作入口和各自的结果说明,避免一个长字符串掩盖多个实际按钮。
|
||
7. 改造所有功能按钮表的“操作入口”列:查询写为“在某页面顶部筛选区填写或选择条件,点击【查询】”;编辑写为“在当前目标记录的行操作区点击【编辑】,打开某弹窗”;确定写为“在某弹窗填写或核对某字段后,点击【确定】提交本次弹窗内容”;取消写为“在某弹窗核对不需要提交本次修改后,点击【取消】关闭该弹窗”;关闭写为“在某查看窗口点击【关闭】返回当前列表”。
|
||
8. 改造“执行结果”和“业务影响与注意事项”列:明确取消只放弃当前弹窗未提交修改,关闭只退出查看窗口,确定会提交当前弹窗字段;已即时保存的表格修改不会因为之后关闭弹窗而回滚。
|
||
9. 改造弹窗说明表的命令拆分逻辑,将“确定 关闭”“上一个 下一个 保存当前记录 删除当前记录 关闭”等复合命令拆为带弹窗标题的独立说明,覆盖弹窗内各按钮的实际作用。
|
||
10. 首次重新生成时发现正式手册正被用户 WPS 窗口占用,临时 DOCX 已生成但覆盖失败;未强制关闭用户进程,先检查临时包完整性并验证临时文档截图、操作表和禁用措辞。
|
||
11. 临时 DOCX 结构检查确认代码片段、`确定 关闭`、`取 消`、`scope.row` 等文本计数均为0;使用临时路径运行 `verify-revised-manual.js`,确认69张截图、69张功能按钮表和44个弹窗页面均通过。
|
||
12. 用户 WPS 文件锁释放后,正式用户手册 DOCX 成功替换;修订脚本输出已替换69张截图、重写69张操作表、增加44个弹窗说明,并保留原始备份文件。
|
||
13. 为导出同版本 PDF 增加 `export-revised-manual-pdf.ps1`;先尝试直接打开正式中文路径,发现 PowerShell 5.1 无 BOM 脚本中文路径解析为乱码,改为从 `doc` 目录按最大 DOCX 产物自动识别用户手册,并由源文件名生成 PDF。
|
||
14. 首次 PDF 导出因逐个更新全文字段导致 WPS COM 长时间无响应;确认卡住的是字段更新而非文档包,停止本次由导出脚本启动的自动化进程及其子进程,不影响用户原有 WPS 实例。
|
||
15. 将导出脚本改为仅更新目录后导出,不逐个更新全部字段;使用临时 DOCX 副本打开,避免再次占用用户正在查看的正式文件。第二次导出成功,生成同名 PDF。
|
||
16. 使用 `verify-revised-manual.js` 对正式 DOCX 验证:截图69/69、操作表69/69、弹窗页面44/44,禁用措辞0,内部路由/过程名称0,9.3生产工艺和10.3机加件已排产专项内容完整。
|
||
17. 使用 PDF 文本定位和渲染脚本检查工序管理、生产工艺、机加件已排产、加工中心等代表页,确认操作入口均包含页面、记录或弹窗上下文;质检类入口显示为入库检、退库检、收检和终检记录,不再出现字段标题拼接。
|
||
18. 视觉抽检确认操作表标题、三列结构、长文本换行、截图、弹窗截图和页脚均正常;部分长表按完整内容跨页,但未出现代码残留、空白弹窗、按钮归属不明或表格越界。
|
||
19. 最终 PDF 共296页;最终 DOCX 大小14337846字节,PDF大小12341762字节。DOCX SHA-256为 `5B8278AF93DCBFB30F132F027CA6E253317A17794AE2406A97A54A6BF2F8497C`,PDF SHA-256为 `B55ACECAD0FBE6CCDE04292488E8982F12986A5221610ADC96C98FBDD124F573`。
|
||
20. 对修订脚本、验证脚本、PDF定位脚本和渲染脚本执行 ESLint,检查通过;仅有项目依赖自带的 Browserslist 数据过期提示,没有脚本错误。
|
||
21. 检查工作区,保留用户已有的研发页面、数据库脚本、技术文档和其他未提交修改;本次仅新增/修改用户手册修订和验证相关文件,没有回退或覆盖无关工作。
|
||
|
||
### 结论
|
||
- 用户手册已按全册共性问题继续修订,不再只针对示例截图处理。
|
||
- 所有业务页面的按钮入口均改为带上下文的可执行句式,明确“在哪个页面、哪条记录、哪个弹窗、点击哪个按钮”。
|
||
- “取消、确定、确认、关闭、保存”等动作均补充了对应对象、提交/放弃范围和后续影响;弹窗中的按钮说明不再使用孤立名称。
|
||
- 模板代码片段、状态类代码、内部表达式、多个按钮拼接文本以及质检字段标题拼接均已从交付手册中清除。
|
||
- 正式 DOCX/PDF 已同步更新,且本次仅使用源码审计、页面截图和文档结构验证,没有执行正式环境业务写入或修改操作。
|
||
|
||
## 2026-07-24 上传程序与数据库修改(不上传文档)
|
||
|
||
### 用户提问
|
||
- 用户要求“上传所有修改”,随后明确“文档不用上传”。
|
||
|
||
### 执行过程
|
||
1. 检查 Git 工作区、当前分支和远程配置,确认当前分支为 `snapshot/local-save-20260625-154806`,远程为 `origin`,推送目标为同名远程分支。
|
||
2. 列出全部未提交内容,区分为程序修改、数据库脚本、DOCX/PDF 文档、手册截图和技术文档生成目录、执行日志。
|
||
3. 按用户最新要求确定上传范围:包含 `src/views/ProductionManagement/DesignReportTask/` 下的页面和共享混入文件,以及 `db_backups/` 下3个设计报工/研发工时 SQL 脚本;不包含 `doc/`、`work/` 和 `gptlog-process/gpdlog.md`。
|
||
4. 对待上传的前端与数据库脚本扫描正式数据库 IP、账号、密码及已知口令特征等敏感信息,未发现匹配;数据库脚本仅包含结构/过程权限变更定义,没有写入正式数据库。
|
||
5. 只暂存9个程序/数据库文件:3个 SQL 脚本、4个既有 Vue 页面修改、1个研发财务工时页面和1个三行表格悬浮提示共享混入文件;文档与日志仍保持未暂存状态。
|
||
6. 对暂存文件执行定向 ESLint,检查通过,仅有项目依赖自带的 Browserslist 数据过期提示;执行 `git diff --cached --check`,没有空白错误。
|
||
7. 创建提交 `62f7632`,提交说明为 `feat: 完善设计报工与研发工时功能`,共9个文件,新增1338行、删除86行。
|
||
8. 执行 `git push origin snapshot/local-save-20260625-154806`,远程返回成功,远程分支已更新到 `62f7632fc6708a8dcb25934c463d18520d9619de`。
|
||
9. 推送后核对本地分支与远程分支均指向 `62f7632`;工作区只剩未上传的文档、文档生成目录和本地执行日志,程序与数据库脚本修改已全部上传。
|
||
|
||
### 结论
|
||
- 已按用户最新要求上传程序和数据库脚本修改,远程分支:`origin/snapshot/local-save-20260625-154806`。
|
||
- 已上传提交:`62f7632 feat: 完善设计报工与研发工时功能`。
|
||
- DOCX、PDF、手册截图、技术文档生成目录和 `gptlog-process/gpdlog.md` 均未上传,仍保留在本地工作区。
|
||
|
||
## 2026-07-24 核查机加件未排产订单8634数据重复
|
||
|
||
### 用户提问
|
||
- 用户询问“机加件未排产”页面为什么订单 `8634` 能查到10条数据,而直接查询 `[YL_MESDB].[dbo].[MES_接口_生产计划_生产任务]` 中订单编号为 `8634` 只有5条。
|
||
|
||
### 执行过程
|
||
1. 只读检查 `src/views/PlanManagement/SelfMakePlando/index.vue`,确认“机加件未排产”页面的查询按钮调用 `searchTable()`,该方法调用接口过程 `MES_OrderPlanned_Query`,并把 `response.data.rows` 直接赋给 `tableData`;前端没有把同一批数据追加两次的逻辑。
|
||
2. 核对页面传入的查询条件:订单号为页面订单号,物料类型固定为“自制件”,排产状态默认“未完成”,指派对象默认“全部”。
|
||
3. 使用只读 SQL 连接正式库 `YL_MESDB` 检查 `dbo.MES_接口_生产计划_生产任务`:订单 `8634` 共5条,工序顺序为1至5,分别是领料、焊接、打磨、酸洗、打压检测。
|
||
4. 检查 `dbo.View_生产订单_MES` 在存储过程基础过滤条件下的结果,订单 `8634` 同样为5条,说明基础生产任务数据没有增加。
|
||
5. 读取正式库 `dbo.MES_OrderPlanned_Query` 定义,确认“自制件”查询从 `View_生产订单_MES v` 查询,并额外执行:`LEFT JOIN dbo.车间生产管理工艺_零件生产工艺_工艺库 g ON v.订单编号 = g.订单编号 AND v.订单行号 = g.工艺顺序`;该关联只用于读取 `g.标准工时`,没有按工艺库主键或启用状态去重。
|
||
6. 检查工艺库订单 `8634`:共有10条,5道工序每道各2条;每组分别是同一工艺的 `启用=0` 旧记录和 `启用=1` 当前记录。订单行号1至5分别都能在工艺库匹配2条。
|
||
7. 在正式库只读执行 `MES_OrderPlanned_Query`,传入订单号 `8634`、物料类型“自制件”、排产状态“未完成”、指派对象“全部”,返回10行;每个基础任务行均重复两次,验证重复来自存储过程的工艺库一对多关联。
|
||
8. 全程未执行 INSERT、UPDATE、DELETE、DDL 或其他业务写入操作,也未修改正式环境数据。
|
||
|
||
### 结论
|
||
- 订单 `8634` 的生产任务表确实只有5条;“机加件未排产”显示10条是 `MES_OrderPlanned_Query` 的 SQL 关联造成的,不是页面重复加载。
|
||
- 根因是工艺库中每道工序同时存在 `启用=0` 和 `启用=1` 两条记录,而存储过程按订单号+工艺顺序直接 LEFT JOIN,导致每条生产任务被匹配两次。
|
||
- 当前查询没有使用 `g.启用=1` 过滤,也没有用 `ROW_NUMBER`/聚合等方式保证每个订单工序只保留一条工艺库记录。修复时应根据业务规则只关联当前启用工艺或明确的最新版本,并验证“已排产”页面及其他调用该过程的页面。
|
||
|
||
## 2026-07-24 生成MES系统标准设计文档
|
||
|
||
### 用户提问
|
||
- 用户要求“生成一个系统的标准设计文档”。
|
||
|
||
### 执行过程
|
||
1. 检查现有文档产物和生成脚本,确认 `work/system-technical-document/build-standard-technical-document.ps1` 已覆盖系统架构、功能模块、技术栈、部署、配置、权限、安全、接口、数据、业务链路、外部集成、监控、性能、运维、发布、测试验收、风险和附录等标准设计内容,原技术文档已生成32页 DOCX/PDF。
|
||
2. 新增 `work/system-design-document/build-standard-design-document.ps1`,以现有标准技术文档生成器为设计基线,在临时源脚本中统一替换文档基线名称、封面标题、页眉标题、英文副标题、修订记录和目的说明,生成独立的“标准设计文档”版本,不修改原标准技术文档。
|
||
3. 首次执行发现新脚本缺少 UTF-8 BOM,Windows PowerShell 5.1 错误解析中文文件名;修正脚本编码后重新执行。
|
||
4. 首次 Word 另存方式出现 Office 兼容层 RPC/属性写入异常,改为直接生成已替换标题的源文档,再复制 DOCX/PDF 到 `doc` 目录,避免另存和内置属性兼容问题。
|
||
5. 重新生成成功,源生成器报告32页、9个业务模块;输出标准设计文档 DOCX 和 PDF。
|
||
6. 使用 DOCX 压缩包只读检查 `word/document.xml`:确认包含“标准设计文档”和 `System Design Specification`,不再包含“标准技术文档”;检查文件大小和修改时间,两个交付文件均存在。
|
||
7. 全程未修改正式数据库、未执行业务数据写入,也未上传文档。
|
||
|
||
### 结论
|
||
- 已生成标准系统设计文档:
|
||
- `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.0_2026-07-24.docx`
|
||
- `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.0_2026-07-24.pdf`
|
||
- 原有 `大连元利流体技术有限公司MES系统标准技术文档_V1.0_2026-07-24.docx/pdf` 保持不变。
|
||
- 新文档以当前源码、菜单、数据库只读元数据和现有业务资料为依据,适合作为系统级设计基线,不替代用户操作手册。
|
||
|
||
## 2026-07-24 独立重构MES系统标准设计文档并补充设计图
|
||
|
||
### 用户反馈
|
||
- 用户指出前一版标准设计文档与标准技术文档看起来基本相同,要求设计文档包含 ER 图等标准设计内容。
|
||
|
||
### 执行过程
|
||
1. 复核前一版生成方式,确认其主要是基于标准技术文档替换标题,章节内容重合度过高,设计文档与技术文档的职责边界不清。
|
||
2. 明确重新设计的文档边界:技术文档保留当前源码、过程、配置、端点、实现风险和运维事实;设计文档改为目标、设计原则、业务域、角色责任、分层架构、设计决策、状态机、实体关系、接口契约、非功能指标、验收追踪和演进路线。
|
||
3. 新增独立生成脚本 `work/system-design-document/build-independent-system-design.ps1`,不再复制或改名标准技术文档。
|
||
4. 在脚本中使用 `System.Drawing` 生成三张独立设计图:`design-er-model.png`(核心实体 ER 图)、`design-sequence-order-task.png`(订单到生产任务接口时序图)、`design-task-state-machine.png`(生产任务状态机图)。
|
||
5. 将三张图分别嵌入数据设计、接口设计和业务状态设计章节,并补充实体关系表、状态转换表、接口边界、幂等/重试、权限模型、部署恢复、验收追踪和演进路线。
|
||
6. 执行独立脚本成功,覆盖 `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.0_2026-07-24.docx/pdf`;原有标准技术文档文件保持原大小和内容基线。
|
||
7. 只读检查 DOCX:确认包含 ER 图、接口时序图、生产任务状态机图的图注,DOCX 包含8个图片部件;“标准技术文档”仅作为技术文档交叉引用,不是设计文档标题残留。
|
||
8. 执行 `git diff --check` 检查新生成脚本,无空白错误;未修改正式数据库,未上传文档。
|
||
|
||
### 结论
|
||
- 标准设计文档已从“技术文档换标题”改为独立的系统设计基线,设计内容与技术实现文档职责分离。
|
||
- 新文档包含 ER 图、时序图、状态机图,以及业务域、数据模型、接口契约、权限、安全、部署、非功能和验收设计。
|
||
|
||
## 2026-07-24 修订设计文档流程图和状态图
|
||
|
||
### 用户反馈
|
||
- 用户指出设计文档部分图形存在问题,示例为4.1“订单到交付主流程”:任务下发到生产执行的连接线折返,异常回流线与竖线重叠,流程方向不清。
|
||
|
||
### 执行过程
|
||
1. 视觉检查业务流程、ER图、接口时序图、状态机图、逻辑架构图、权限图和部署拓扑图,确认业务流程图的回流线确实与主流程连接重叠;状态机图另有一条暂停状态指向空白位置的问题。
|
||
2. 修改 `work/system-technical-document/build-standard-technical-document.ps1` 的业务流程图生成逻辑:将订单、工艺、排产、任务下发、生产执行、质量闭环、完工交付改为单行顺序流转;把异常、返工、计划调整反馈单独放在底部回流线,避免与主流程交叉。
|
||
3. 修改独立设计文档脚本的关系线绘制逻辑,补充箭头方向;将暂停状态的无效空中连线改为指向“已排产”的“取消/重排”路径。
|
||
4. 视觉复核修订后的 `business-flow.png` 和 `design-task-state-machine.png`,确认主流程箭头单向、反馈线独立、状态转换均有明确端点和箭头。
|
||
5. 原 V1.0 设计文档当前存在 Word 锁定文件,直接覆盖保存失败;为避免影响用户正在查看的文件,生成修订版 `V1.1` 到新文件,原 V1.0 保留不动。
|
||
6. 重新生成并复制设计文档 V1.1 DOCX/PDF,确认图形已嵌入新文件;未修改正式数据库,未上传文档。
|
||
|
||
### 结论
|
||
- 修订后的设计文档为:
|
||
- `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.1_2026-07-24.docx`
|
||
- `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.1_2026-07-24.pdf`
|
||
- V1.1 使用修订后的流程图和状态机图;原 V1.0 文件未被覆盖,便于保留历史版本。
|
||
- 技术文档生成器已同步更新图形源代码,但正式技术文档因现有文件锁定未覆盖;设计文档 V1.1 已完成图形修订交付。
|
||
|
||
## 2026-07-24 同步修订标准技术文档图形
|
||
|
||
### 用户反馈
|
||
- 用户指出标准技术文档同样存在设计文档中的流程图折返、重叠问题。
|
||
|
||
### 执行过程
|
||
1. 确认标准技术文档和标准设计文档共用 `business-flow.png`,旧技术文档中已经嵌入原有问题图,因此仅修改外部图片不能修复已生成的 DOCX/PDF。
|
||
2. 将技术文档生成器的文件版本升级为 `V1.1`,封面文档版本同步改为 V1.1,并在修订记录中增加“修订核心业务流程图,消除主流程与异常回流线重叠并明确箭头方向”。
|
||
3. 使用修订后的单行主流程图重新执行完整技术文档生成,成功输出 V1.1 DOCX/PDF,生成器报告32页、9个模块、75个功能页面。
|
||
4. 只读检查新 DOCX:包含 V1.1 版本和图形修订记录,共5个图片部件;计算流程图源文件与 DOCX 内 `word/media/image1.png` 的 SHA-256,确认哈希一致,证明修订图已实际嵌入文档。
|
||
5. 检查新文件大小、修改时间和脚本空白错误,结果正常;原 V1.0 技术文档未覆盖,继续作为历史版本保留。
|
||
6. 未修改正式数据库,未上传文档。
|
||
|
||
### 结论
|
||
- 已生成修订后的标准技术文档:
|
||
- `doc/大连元利流体技术有限公司MES系统标准技术文档_V1.1_2026-07-24.docx`
|
||
- `doc/大连元利流体技术有限公司MES系统标准技术文档_V1.1_2026-07-24.pdf`
|
||
- 技术文档 V1.1 已使用新的单向业务流程图和独立异常反馈线,原 V1.0 保留未变。
|
||
|
||
## 2026-07-24 生成今日工作内容和明日计划
|
||
|
||
### 用户提问
|
||
- 用户要求根据修改MES系统用户手册、新增技术和设计文档、搭建测试环境、修复生产工艺编辑与批量生成冲突、修复错误数据等内容生成今日工作内容,并根据网页版动态用户手册、测试GPT接管MES程序、系统类和阀类装配任务新增预估进度生成明日计划。
|
||
- 格式要求为按时间段编号列出,每个时间段一行,参照08:30至18:00的工作计划格式。
|
||
|
||
### 执行过程
|
||
1. 将今日工作按文档修订、设计文档、测试环境、问题分析、程序修复、数据修复和回归归档的先后依赖拆分为8个时间段。
|
||
2. 将明日工作按网页版手册设计与开发、GPT接管MES程序可行性测试、装配任务预估进度分析开发和集成测试拆分为8个时间段。
|
||
3. 沿用用户给出的时间安排:08:30-09:30、09:30-10:30、10:30-11:50、13:20-14:20、14:20-15:20、15:20-16:20、16:20-17:20、17:20-18:00。
|
||
|
||
### 结论
|
||
- 已形成可直接用于日报的今日工作内容和明日计划,每个编号对应一个独立时间段,内容具体到修改、分析、开发、测试和归档动作。
|
||
|
||
## 2026-07-24 调整今日工作内容时间分配
|
||
|
||
### 用户反馈
|
||
- 用户指出将一个生产工艺冲突问题安排三个小时不合理。
|
||
|
||
### 执行过程
|
||
1. 重新调整今日工作时间,将生产工艺编辑与批量生成冲突的分析、修改和验证合并为一个小时。
|
||
2. 将冲突问题产生的错误数据修复单独安排一个小时,避免与程序问题修复混为同一工作项。
|
||
3. 将腾出的时间分配给用户手册、技术文档、设计文档和测试环境,使各项工作量更均衡。
|
||
|
||
### 结论
|
||
- 修订后的今日计划中,程序冲突修复占一个时间段,错误数据处理占一个时间段,文档和环境工作按独立时间段安排。
|
||
|
||
## 2026-07-25 排查系统类装配任务合同工时均为 0
|
||
|
||
### 用户提问
|
||
- 检查“系统类装配任务”页面,说明为什么“合同装配工时”和“合同质检工时”都是 0。
|
||
- 用户提供了生产 SQL Server 地址及登录账号;本次使用用户提供的凭据只读排查,日志中不重复记录明文密码。
|
||
|
||
### 执行过程
|
||
1. 在前端仓库全局搜索“系统类装配任务”“合同装配工时”“合同质检工时”和相关接口名称,定位页面文件 `src/views/PlanManagement/SystemInstallTask/index.vue`。
|
||
2. 核对页面展示逻辑:第 228 行和第 233 行分别把接口返回的 `合同装配工时`、`合同质检工时` 除以 3600 后保留两位小数;页面没有重新计算或覆盖字段。因此,页面显示 0 是后端返回值为 0,并非前端格式化错误。
|
||
3. 核对页面查询调用:页面通过 `CreateData('11', '计划排产_系统类任务查询', ...)` 调用数据库过程,并固定传入 `物料类型=自制件`。
|
||
4. 使用 `sqlcmd` 连接用户指定的 `192.168.2.92`,确认业务数据库为 `YL_MESDB`,并查询与系统类任务、计划排产和工时有关的存储过程。
|
||
5. 读取 `dbo.计划排产_系统类任务查询` 的完整定义。过程中的任务工时按 `View_生产工时视图.订单号` 汇总;合同工时则按 `View_生产工时视图.合同号` 汇总,再与 `View_生产订单_MES.合同号` 关联。
|
||
6. 查询当前系统类任务合同,共发现 21 个合同。按照存储过程当前写法,以 `View_生产工时视图.合同号` 关联时,绝大多数合同没有匹配工时;`HT260999` 和 `YP260014` 虽有工时记录,但这些记录属于机加或库房班组,装配与质检汇总仍为 0。
|
||
7. 按任务订单号核对工时,确认系统类任务实际存在大量装配、电气和质检工时。例如:订单 5727(合同 `HT260447`)装配 97657 秒、质检 60491 秒;订单 6279(合同 `HT260702`)装配 396288 秒、质检 1701 秒。因此数据并非全部未报工。
|
||
8. 抽查订单 5598、5727、6213、6279、6550、6551、7271、7322、7695、7804、7805、7902、8010、8011、8096、8317、8349 的工时明细,发现装配/电气/质检报工记录中的 `View_生产工时视图.合同号` 均为 `NULL` 或空字符串。
|
||
9. 读取 `dbo.View_生产工时视图` 定义。该视图同时输出两个合同字段:
|
||
- `合同号`:来自工时校验表或操作记录表,即 `ISNULL(c.合同号, o.合同号)`;装配及质检操作记录当前没有填写该字段。
|
||
- `订单合同号`:来自 `MES_接口_生产计划.合同号`,通过工时记录的订单编号关联生产计划得到。
|
||
10. 对上述订单交叉验证,确认空缺的 `合同号` 对应的 `订单合同号`、`View_生产订单_MES.合同号` 和 `MES_接口_生产计划.合同号` 均有正确值,如订单 5727 均对应 `HT260447`。
|
||
11. 使用 `COALESCE(NULLIF(LTRIM(RTRIM(gs.合同号)), ''), gs.订单合同号)` 作为合同汇总键重新计算,得到非零结果:
|
||
- `HT260447`:合同装配 515540 秒(143.21 小时),合同质检 71256 秒(19.79 小时)。
|
||
- `HT260597`:合同装配 128967 秒(35.82 小时),合同质检 24541 秒(6.82 小时)。
|
||
- `HT260702`:合同装配 1352195 秒(375.61 小时),合同质检 92293 秒(25.64 小时)。
|
||
- `HT260975`:合同装配 164443 秒(45.68 小时),合同质检 6101 秒(1.69 小时)。
|
||
- `HT261034`:合同装配 916374 秒(254.55 小时),合同质检 64831 秒(18.01 小时)。
|
||
12. 读取 `dbo.计划排产_阀类任务查询`,确认阀类页面也使用相同的错误字段 `gs.合同号` 汇总,存在同类问题;本次用户询问的系统类页面已明确复现。
|
||
13. 使用页面相同参数直接执行 `dbo.计划排产_系统类任务查询` 查询合同 `HT260447`,实际返回结果中订单 5727 的任务装配工时为 97657 秒、任务质检工时为 60491 秒,但同一行合同装配工时和合同质检工时均为 0,验证现象与页面一致。
|
||
14. 本次仅执行只读数据库查询,没有修改生产数据库、存储过程、视图或业务数据。
|
||
|
||
### 根因
|
||
- `计划排产_系统类任务查询` 的合同工时子查询按 `View_生产工时视图.合同号` 分组,但装配、电气和质检报工记录的该字段为空。
|
||
- 正确合同号已经通过生产计划关联保存在同一视图的 `订单合同号` 字段中,但存储过程没有使用它。
|
||
- 聚合子查询不能生成对应合同记录,外层 `LEFT JOIN` 得到 `NULL`,再由 `ISNULL(htzp.合同装配工时, 0)` 和 `ISNULL(htzj.合同质检工时, 0)` 转换为 0,最终页面显示 0.00。
|
||
|
||
### 建议修复
|
||
- 将系统类过程两个合同汇总子查询的分组键和输出键统一改为 `COALESCE(NULLIF(LTRIM(RTRIM(gs.合同号)), ''), gs.订单合同号)`;至少也应直接使用可靠的 `gs.订单合同号`。
|
||
- 同步修复 `计划排产_阀类任务查询`,因为其合同工时汇总代码相同。
|
||
- 修改后用 `HT260447`、`HT260702`、`HT260975` 等已有装配及质检记录的合同回归验证,并核对页面小时值与秒数除以 3600 的结果一致。
|
||
|
||
### 结论
|
||
- 合同装配工时和合同质检工时都为 0 的直接原因是存储过程选错合同字段,不是前端显示问题,也不是全部没有报工数据。
|
||
- 生产数据已经具备正确的订单合同号,修复存储过程的合同汇总键即可恢复合同级工时显示。
|
||
|
||
## 2026-07-25 修复系统类和阀类装配任务合同工时
|
||
|
||
### 用户提问
|
||
- 用户在确认系统类装配任务合同工时为 0 的原因后,要求修改该问题。
|
||
|
||
### 执行过程
|
||
1. 复核根因和影响范围,确定不修改共享的 `View_生产工时视图`,只修改直接存在问题的两个查询过程:`dbo.计划排产_系统类任务查询` 和 `dbo.计划排产_阀类任务查询`,以控制影响范围。
|
||
2. 修改前读取两个过程的修改时间和定义哈希:
|
||
- 系统类过程修改时间为 2026-07-15 10:10:44.053,SHA-256 为 `B62DE5C58B44FB6E678CC116BF77CF2ECEB8EDED8C208D7C4540165EB4E5931E`。
|
||
- 阀类过程修改时间为 2026-07-15 10:11:35.953,SHA-256 为 `E9D8A3A7D06C70CCE8816650B2250397CFA882C6C11A4BE87EE0221F2B77280D`。
|
||
3. 新增部署脚本 `db_backups/fix_install_task_contract_hours_20260725.sql`。脚本在事务内逐个读取过程定义,严格校验合同装配查询、合同质检查询和两个合同分组语句的出现次数;结构不一致时抛出错误并回滚。
|
||
4. 部署脚本将两个过程的合同工时汇总键从 `gs.合同号` 修改为 `gs.订单合同号`:
|
||
- 合同装配汇总输出改为 `gs.订单合同号 AS 合同号`,并按 `gs.订单合同号` 分组。
|
||
- 合同质检汇总输出改为 `gs.订单合同号 AS 合同号`,并按 `gs.订单合同号` 分组。
|
||
- 任务装配工时、任务质检工时、人员班组条件、页面字段和其他查询条件均未修改。
|
||
5. 新增回滚脚本 `db_backups/rollback_install_task_contract_hours_20260725.sql`。该脚本同样在事务中校验修复版本结构,只有结构完全匹配时才将字段引用恢复为原来的 `gs.合同号`。
|
||
6. 第一次通过旧版 `sqlcmd` 执行 UTF-8 脚本时,只执行了数据库上下文切换,中文过程名未被正确解析。随后检查两个过程的修改时间、定义哈希和旧字段引用,确认生产数据库没有发生任何修改。
|
||
7. 使用 `sqlcmd -f 65001` 明确指定 UTF-8 输入编码后重新部署,事务成功提交。两个过程修改时间更新为 2026-07-25 08:43:05。
|
||
8. 部署后检查过程定义:
|
||
- 两个过程均包含新的合同装配汇总字段引用和合同质检汇总字段引用。
|
||
- 两个过程均不再包含 `GROUP BY gs.合同号`。
|
||
- 系统类过程新定义哈希为 `61F2ED921A39E6594713DDF0E86ADCD2A46233C1F37E6E67CA000FBF56B8E5C2`。
|
||
- 阀类过程新定义哈希为 `79D4D4729A82F5A6A657BFFF5C1B7B51873CA2A44701055E02EC717F54A87D54`。
|
||
9. 使用页面相同参数回归系统类合同 `HT260447`:
|
||
- 订单 5727 的任务装配工时仍为 97657 秒、任务质检工时仍为 60491 秒,证明任务口径未受影响。
|
||
- 两条系统类任务均返回合同装配工时 515540 秒、合同质检工时 71256 秒,分别对应页面显示 143.21 小时和 19.79 小时。
|
||
10. 回归阀类合同 `HT261114`,三条阀类任务均返回合同装配工时 47463 秒、合同质检工时 6885 秒,确认相同问题已同步修复。
|
||
11. 对新增部署脚本和回滚脚本执行 `git diff --check`,未发现空白字符错误。
|
||
|
||
### 结论
|
||
- 生产数据库中的系统类和阀类装配任务合同工时查询均已修复并生效。
|
||
- 合同工时现在按生产计划提供的 `订单合同号` 汇总,不再依赖装配和质检操作记录中为空的 `合同号`。
|
||
- 已完成系统类、阀类实际过程回归,合同装配工时和合同质检工时均返回正确的非零数据;无需修改前端即可在页面刷新后显示正确小时数。
|
||
- 部署和回滚脚本均已保存在 `db_backups` 目录,便于审计和恢复。
|
||
|
||
## 2026-07-25 MES 项目接管流程说明
|
||
|
||
### 用户提问
|
||
- 用户询问如何让 GPT/Codex 接管 MES 项目、基本流程是什么以及需要如何配合。
|
||
|
||
### 项目现状核对
|
||
1. 当前项目是 Vue 前端工程,页面普遍通过 `CreateData` 组装请求,再由 `ExecDatabase` 调用统一 MES 接口。
|
||
2. 业务逻辑大量位于 SQL Server 存储过程、视图和业务表中;系统类装配任务本次问题就是通过“页面 -> 统一接口 -> 存储过程 -> 工时视图 -> 工时记录和人员班组”完成定位和修复的。
|
||
3. 项目还存在 SAP B1 接口调用,因此完整接管不能只拿前端源码,还必须梳理接口服务、MES 数据库、SAP 测试连接和部署配置。
|
||
4. 当前仓库已有用户手册、技术文档、设计文档、数据库变更脚本和 GPT 执行日志,可作为接管基线。
|
||
|
||
### 建议接管流程
|
||
1. 明确授权边界:确定哪些环境允许读、哪些环境允许写;生产环境默认只读,生产写入必须由用户明确批准并安排变更窗口。
|
||
2. 准备访问条件:提供代码仓库、后端统一接口源码或可访问地址、测试数据库、生产数据库只读账号、SAP 测试账号及部署方式。生产不要使用 `sa` 作为日常接管账号,应建立最小权限账号并轮换已暴露的密码。
|
||
3. 建立测试环境:从生产脱敏或备份恢复测试数据库,准备 MES 接口服务和前端配置;涉及 SAP 的流程使用 SAP 测试公司或模拟接口,禁止用生产单据做试验。
|
||
4. 完成系统盘点:建立“页面 -> 接口动作 -> 存储过程 -> 视图/表 -> 外部系统”的映射,补齐模块、权限、定时任务、文件上传、设备采集、SAP 同步和部署依赖清单。
|
||
5. 建立基线验证:对登录、权限、订单、工艺、排产、装配、质检、工时、库存/SAP 同步等主流程做只读冒烟测试,记录当前版本、数据库过程哈希、配置版本和已知问题。
|
||
6. 进入问题处理闭环:每个问题都记录现象、业务期望、样例订单/合同、影响范围和优先级;先追踪调用链并在测试环境复现,再修改代码或 SQL,补充回归 SQL/接口/页面验证。
|
||
7. 变更发布:每次数据库变更都提供事务脚本、前置结构校验、备份或回滚脚本、验证 SQL 和发布记录;前端变更先构建和测试,再发布到指定环境。
|
||
8. 运行维护:维护问题台账、版本清单、数据库变更历史、回滚记录、监控告警和定期备份;重大问题按 P1/P2/P3 分级处理。
|
||
|
||
### 用户需要提供的最小资料
|
||
- 仓库路径和当前分支;当前项目路径已知为 `C:\WorkYuanLy\MES_Manage_View_V20`。
|
||
- 测试环境的 MES 接口地址、数据库连接方式、SAP 测试连接和部署命令。
|
||
- 生产环境只读账号;需要生产写入时再单独授权,避免长期使用高权限账号。
|
||
- 菜单/角色对应人员、关键业务流程和验收口径。
|
||
- 问题样例:订单号、合同号、物料编码、发生时间、页面截图或接口响应。
|
||
- 变更审批规则:哪些改动可直接执行,哪些必须先提交 SQL/代码评审。
|
||
|
||
### GPT/Codex 能承担的工作
|
||
- 阅读和维护当前代码、接口调用、SQL 存储过程、视图及技术文档。
|
||
- 根据样例数据追踪页面到数据库的完整调用链,执行只读诊断和测试环境验证。
|
||
- 编写前端修改、SQL 修复脚本、回滚脚本、验证脚本、测试记录和发布说明。
|
||
- 在用户授权的环境中执行部署并反馈精确的变更对象、验证结果和剩余风险。
|
||
- 按仓库规则把每次执行过程和结论追加到 `gptlog-process/gpdlog.md`。
|
||
|
||
### 不能默认承担的事项
|
||
- 不能在没有授权的情况下长期持有或自行扩大生产权限。
|
||
- 不能把生产库当测试库,不能用生产业务数据验证写操作。
|
||
- 不能替代业务负责人确认需求、财务/质量口径或发布审批。
|
||
- 不能脱离当前会话和可访问环境进行 7x24 无人值守运维;需要监控时应配置正式监控和告警系统。
|
||
|
||
### 建议的第一阶段
|
||
- 先用只读权限完成一份《MES 接管基线》:架构图、模块清单、页面-过程映射、数据库对象清单、外部接口清单、部署方式、备份恢复方式和已知问题台账。
|
||
- 然后搭建可回滚的测试环境,选择一个低风险模块完成“需求 -> 诊断 -> 修改 -> 测试 -> 发布 -> 回滚演练”闭环,再逐步扩大到生产变更。
|
||
|
||
### 结论
|
||
- 接管不是把一个账号交给 GPT,而是建立“可访问、可复现、可验证、可回滚、可审计”的工程流程。
|
||
- 当前项目已经具备代码、数据库脚本、文档和日志基础;下一步最关键的是补齐测试环境、接口服务源码/地址、最小权限账号和发布审批规则。
|
||
|
||
## 2026-07-25 验证测试环境数据库和接口
|
||
|
||
### 用户提供的信息
|
||
- 测试 MES 接口:`https://124.220.15.242:10101/submit/MESCommonBase.ashx`。
|
||
- 测试 SQL Server:`124.220.15.242,64722`,账号为用户提供的 `meswork`;密码不写入日志。
|
||
|
||
### 执行过程
|
||
1. 使用 `Test-NetConnection` 检查 `124.220.15.242:64722`,TCP 连接成功。
|
||
2. 使用用户提供的数据库账号只读登录 SQL Server,确认登录成功,版本为 SQL Server 2019,能够枚举数据库并看到 `YL_MESDB`。
|
||
3. 连接 `YL_MESDB` 执行只读查询,确认当前数据库为 `YL_MESDB`、登录名为 `meswork`,并能读取系统对象列表;没有执行写入、DDL 或业务存储过程写操作。
|
||
4. 对接口地址执行 GET 请求,没有得到有效业务响应。本机 Windows PowerShell 版本不支持 `-SkipCertificateCheck` 参数,随后使用临时证书校验回调继续测试。
|
||
5. 按项目 `CreateData`/`ExecDatabase` 的真实 JSON 结构,调用只读过程 `MES_登录_工位与名称_查询` 和 `查询字典`,接口均返回“对象引用未设置为实例”的服务端错误;改用数组包裹和补充用户字段后结果相同。
|
||
6. 阅读前端登录代码,确认 MES 接口的 `UserID`、`UserName`、`ModularID` 来自应用登录后的会话状态;用户提供的 `meswork` 是数据库登录账号,不能直接证明它是有效的 MES 应用账号。因此当前接口链路已连通,但还缺少有效 MES 应用登录身份才能完成页面级接口验证。
|
||
7. 检查 `static/config.js`,发现当前默认 `serverAddress` 指向生产地址 `https://192.168.2.92:10101/...`,测试地址只是注释项。测试接管时必须使用独立测试配置或启动参数,防止本地前端误连生产。
|
||
8. 检查测试数据库账号权限,发现 `meswork` 在 `YL_MESDB` 中映射为 `dbo`,拥有 `ALTER`、`CREATE PROCEDURE`、`INSERT`、`UPDATE`、`DELETE`、`CONTROL` 等完整数据库权限,不属于只读账号。此次检查过程中未使用这些权限执行任何写操作。
|
||
|
||
### 验证结论
|
||
- 测试数据库网络和账号可用,`YL_MESDB` 可读。
|
||
- 测试接口端口可访问,但页面级调用还需要 MES 应用账号或有效会话身份;不能用数据库账号替代。
|
||
- 当前仓库默认配置仍指向生产接口,不能直接把现有前端构建当作测试版本使用。
|
||
- 测试数据库账号权限过高,建议拆分为只读诊断账号和受控部署账号。
|
||
|
||
### 下一步要求
|
||
- 提供一个测试环境的 MES 页面登录账号,或提供接口认证方式/测试 Token;不需要提供生产账号。
|
||
- 明确测试接口对应的后端服务版本和部署目录,便于追踪服务端异常。
|
||
- 新增独立测试配置文件,将 `serverAddress`、`baseURL` 和 SAP 测试地址全部指向测试环境后,再执行页面登录和只读冒烟测试。
|
||
|
||
## 2026-07-25 验证 MES 测试账号并确认 B1/TM 不可用
|
||
|
||
### 用户补充
|
||
- 用户说明测试环境的 B1 和 TM 预计因连接问题无法取得数据。
|
||
- 用户提供 MES 测试账号 `0000`;密码不写入日志。
|
||
|
||
### 执行过程
|
||
1. 检查测试环境网络端口:MES 接口端口 `124.220.15.242:10101` 可连接,B1/TM 共用的代理端口 `124.220.15.242:9996` TCP 连接失败,确认 B1 和 TM 当前不可用。
|
||
2. 首次使用 Windows PowerShell `Invoke-WebRequest` 请求登录时出现“对象引用未设置为实例”。复核发现这是 PowerShell 5 在缺少旧 IE 解析组件时的客户端解析异常,不是 MES 服务端异常。
|
||
3. 增加 `-UseBasicParsing` 并按 UTF-8 字节发送与前端 `src/api/login.js` 相同的登录请求,接口返回 HTTP 200,账号 `0000` 登录成功,身份为“超级管理员”,人员编号和角色编号均为 1。
|
||
4. 直接在测试数据库执行只读登录存储过程交叉验证,确认账号存在且登录结果与接口一致。
|
||
5. 使用登录后的角色编号调用 `菜单模块系统_项目角色模块列表_二级_查询数据`,接口返回 HTTP 200,共 84 条菜单/权限数据,包括系统管理、计划排产、生产管理、质量管理、工艺管理、设备管理、销售订单管理和异常提醒等模块。
|
||
6. 使用登录身份调用通用只读过程 `MES_登录_工位与名称_查询`,接口返回 HTTP 200,共 33 条工位数据,证明“登录 -> 角色菜单 -> MESCommonBase 通用存储过程查询”的核心链路可用。
|
||
7. 检查前端 B1 使用范围,发现至少 26 个 Vue 页面直接引用 `api/b1s`,主要涉及工位同步、计划排产、生产订单、装配/机加、工时校验、外协、质检、领料和退料等功能。
|
||
8. 检查 TM 使用范围,确认装配中心、机加中心、质量中心和退料页面通过 `posttm` 调用领料任务、收料任务等接口;在 `9996` 不可达时这些动作无法完成测试。
|
||
9. 发现 MES 登录接口响应中包含明文 `password` 字段。虽然本次使用的是测试账号,这仍属于安全风险;建议后端登录查询和接口序列化结果移除密码字段,并更换已通过聊天传递的测试密码。
|
||
10. 本次只执行登录和只读查询,没有执行 B1/TM 调用、数据库写入或业务单据操作。
|
||
|
||
### 结论
|
||
- MES 测试环境核心接口已经可以接管:应用登录、菜单权限和通用数据库查询均验证成功。
|
||
- B1/TM 当前确实不可连接,应作为测试环境已知限制记录;涉及 SAP 或仓储任务同步的流程只能做代码检查和模拟测试,不能做真实联调验收。
|
||
- 纯 MES 功能可以继续开展只读冒烟测试和接管基线建设。
|
||
- 登录接口泄露密码字段以及测试数据库账号为 `dbo` 是当前接管阶段需要优先整改的两个安全问题。
|
||
|
||
## 2026-07-25 确认 config.js 多环境配置方案
|
||
|
||
### 用户提问
|
||
- 用户确认 `192.168.2.92` 是正式环境、`124.220.15.242` 是测试环境、`127.0.0.1` 是本地环境,询问 `config.js` 是否需要修改。
|
||
|
||
### 执行过程
|
||
1. 检查 `index.html`,确认页面在应用脚本之前直接加载 `./static/config.js`,因此接口地址属于运行时配置,不是 Vue 编译时环境变量。
|
||
2. 检查 `src/utils/request.js`、`src/api/b1s.js` 和 `src/api/tm.js`,确认 MES、文件服务、B1 和 TM 都从 `window.dt_Config` 读取地址。
|
||
3. 检查 `static/config.js`,确认当前生效地址全部指向 `192.168.2.92` 正式环境,测试和本地地址只是注释。直接运行当前源码会连接正式 MES 接口。
|
||
4. 检查 `package.json`,发现 `npm run build` 在构建完成后会执行 `rimraf dist/static/config.js`,即发布包刻意不携带源码中的配置,要求部署时补充目标环境的 `static/config.js`。
|
||
5. 检查测试环境注释配置,发现测试 `baseURL` 写为 `https://124.220.15.242`,缺少 MES 文件服务使用的 `:10101` 端口;结合已验证的测试接口地址,测试环境 `baseURL` 应使用 `https://124.220.15.242:10101`。
|
||
6. 结合 B1/TM 端口验证结果,测试环境可以保留 `https://124.220.15.242:9996/b1s` 和 `/openapi` 地址作为目标配置,但应标记为当前不可用,调用会失败;不能改指向正式 B1/TM,否则测试操作可能影响正式系统。
|
||
7. 本次只分析配置加载和构建流程,没有修改 `static/config.js` 或启动前端。
|
||
|
||
### 推荐方案
|
||
- 保持 `index.html` 始终只加载 `static/config.js`。
|
||
- 分别维护正式、测试、本地三个配置模板,部署或启动前把目标模板复制为 `static/config.js`;不再人工修改同一个文件中的注释。
|
||
- 正式配置使用 `192.168.2.92`,测试配置使用 `124.220.15.242`,本地配置使用 `127.0.0.1`。
|
||
- 增加明确的启动/发布命令,例如 `dev:test`、`dev:local`、`build:prod`、`build:test`,由脚本选择配置并在执行前打印目标环境。
|
||
- 测试页面应增加醒目的环境标识,并在配置层禁止测试前端连接 `192.168.2.92`,降低误操作生产的风险。
|
||
- 配置文件只保存服务地址,不保存数据库密码、MES 密码或 Token。
|
||
|
||
### 结论
|
||
- `config.js` 需要根据运行环境切换;当前默认正式地址不适合直接用于测试接管。
|
||
- 最安全的做法是三套独立模板加自动选择脚本,而不是手工注释切换。
|
||
- 测试环境的 `baseURL` 应补上 `:10101`;测试 B1/TM 不可用时保持测试地址并明确禁用相关验收,绝不能回退连接正式 B1/TM。
|
||
|
||
## 2026-07-25 生成 MES 测试环境接管基线
|
||
|
||
### 用户提问
|
||
- 用户指出此前承诺生成“MES 测试环境接管基线”,要求实际生成该基线文档。
|
||
|
||
### 执行过程
|
||
1. 建立基线工作计划,分为环境采集、架构与风险整理、文档生成和最终校验四步。
|
||
2. 采集代码基线:确认仓库分支为 `snapshot/local-save-20260625-154806`,提交为 `62f7632fc6708a8dcb25934c463d18520d9619de`;Node.js 为 v20.14.0,npm 为 10.7.0,应用版本为 1.1.0;工作区已有未提交文档、数据库脚本和工作目录,未清理这些用户/既有变更。
|
||
3. 统计前端规模:`src/views` 有 99 个 Vue 文件,`src` 有 77 个 JavaScript 文件,发现 770 次 `CreateData` 调用、724 次可静态识别的字面量过程调用和 219 个唯一过程名。
|
||
4. 采集测试数据库基线:SQL Server 2019,数据库 `YL_MESDB` 在线,兼容级别 150,排序规则 `Chinese_PRC_CI_AS`,SIMPLE 恢复模式,数据库约 1234.69 MB;包含 61 张用户表、27 个视图、425 个存储过程和 2 个标量函数;测试账号映射为 `dbo`。
|
||
5. 采集正式数据库对照数据:正式库对象数量与测试库相同,但数据库约 1362.69 MB;抽查发现 `MES_OrderPlanned_Query`、系统类合同工时过程和阀类合同工时过程定义不一致,其余抽查过程部分一致。
|
||
6. 复核系统调用链:`index.html` 加载 `static/config.js`,Axios 从 `window.dt_Config` 读取 MES/B1/TM 地址,`CreateData` 和 `ExecDatabase` 通过 `MESCommonBase.ashx` 调用数据库过程,菜单由数据库返回结果生成动态路由。
|
||
7. 复核环境限制:测试 MES 接口登录、菜单查询和工位查询已成功;测试 B1/TM 的 9996 端口不可达;当前源码默认配置仍指向正式地址;后端 `.ashx` 服务源码和 IIS 部署目录尚未提供。
|
||
8. 执行 `npm run build`。第一次工具调用超时后,使用 120 秒超时重新执行,Webpack 5.103.0 构建成功,用时约 79 秒;仅有资源体积过大和浏览器数据过期警告;构建脚本按设计删除了 `dist/static/config.js`。
|
||
9. 生成文档 `doc/MES测试环境接管基线_20260725.md`,内容覆盖基线结论、代码和数据库版本、系统架构、接口链路、B1/TM 限制、环境漂移、已验证范围、安全风险、接管规则、任务清单和完成标准。
|
||
10. 使用正则扫描基线文档,确认没有写入数据库密码、MES 密码、Token 或其他口令;执行 `git diff --check`,未发现空白字符错误。
|
||
|
||
### 结论
|
||
- 已实际生成《MES 测试环境接管基线 V1.0》:`doc/MES测试环境接管基线_20260725.md`。
|
||
- 当前接管状态为“有条件接管”:MES 核心登录、权限、通用查询和前端构建已验证;B1/TM 联调、后端部署资产、权限收敛、配置隔离和数据库漂移治理仍未完成。
|
||
- 基线文档没有保存任何明文密码或 Token,后续每次环境、权限、过程版本或外部依赖变化都应更新该文档。
|
||
|
||
## 2026-07-25 确认测试环境接管状态
|
||
|
||
### 用户提问
|
||
- 用户询问当前是否已经可以接管 MES 测试环境。
|
||
|
||
### 状态判断
|
||
1. 根据已完成的接管基线,测试 SQL Server、`YL_MESDB`、MES 应用登录、角色菜单、通用只读查询和前端生产构建均已验证通过。
|
||
2. 因此当前可以开始 **受控接管 MES 核心测试环境**,包括代码分析、只读诊断、测试数据准备、查询类功能回归和经批准的测试库变更。
|
||
3. 当前不能称为“全系统完全接管”:B1/TM 测试端口不可达,后端接口源码和 IIS 部署资产尚未提供,测试账号权限过高,测试库与正式库存在关键过程版本漂移,配置默认仍有误连正式环境风险。
|
||
4. 生产环境不在本次接管授权范围内;生产写操作仍需单独审批。
|
||
|
||
### 结论
|
||
- 接管等级:**可以开始受控接管,暂未达到完整接管**。
|
||
- 可立即开展:MES 核心模块只读冒烟、调用链梳理、测试库受控修复、SQL/前端修改和回滚验证。
|
||
- 必须先补齐后才能完成全量接管:测试配置隔离、只读数据库账号、后端部署资料、B1/TM 联调条件、数据库版本同步和安全问题整改。
|
||
|
||
## 2026-07-25 创建测试库只读账号并验证远程服务器通道
|
||
|
||
### 用户授权
|
||
- 用户明确授权创建测试数据库账号,并提供远程服务器 RDP 地址和管理员凭据,用于查找后端接口源码及 IIS 部署目录。
|
||
|
||
### 执行过程
|
||
1. 检查远程端口:RDP 自定义端口 `124.220.15.242:12920` 可达,标准 3389 不可达;WinRM 5985 可达,5986 不可达。
|
||
2. 使用管理员凭据尝试 WinRM `Negotiate` 认证,仅执行 `hostname/whoami` 盘点命令;认证因 IP 目标未被本机 TrustedHosts/服务器身份校验接受而失败,未建立远程会话。
|
||
3. 未关闭认证校验、未使用通配符 TrustedHosts、未启动图形 RDP 会话,也未修改远程服务器配置;因此暂时没有读取 IIS 站点、应用池、物理路径或接口发布目录。
|
||
4. 查询测试库确认 `meswork_readonly` 登录和数据库用户均不存在,且原 `meswork` 具有 `sysadmin` 权限。
|
||
5. 在明确授权范围内创建 SQL 登录 `meswork_readonly`,默认数据库为 `YL_MESDB`,开启密码策略和过期策略;创建对应数据库用户,加入 `db_datareader` 并授予 `VIEW DEFINITION`,没有授予全库 `EXECUTE`。
|
||
6. 使用新账号登录测试库验证:能够读取数据库对象和表数据,`SELECT=1`、`VIEW DEFINITION=1`,数据库级 `INSERT=0`、`UPDATE=0`、`DELETE=0`。没有执行任何业务数据写入。
|
||
7. 未删除或降权原 `meswork`,因为尚未确认 MES 后端连接字符串和服务依赖;直接降权可能导致接口中断。待服务账号切换并回归后再处理。
|
||
8. 更新 `doc/MES测试环境接管基线_20260725.md` 为 V1.1,补充只读账号状态、远程连接限制和下一步服务器接入要求;没有将任何账号密码写入文档或日志。
|
||
9. 执行 `git diff --check`,文档和日志无空白字符错误。
|
||
|
||
### 结论
|
||
- 测试数据库的日常只读接管账号已创建并验证,`meswork` 高权限账号暂时保留,等待服务账号切换后再收敛。
|
||
- RDP 端口可达,但当前执行环境不能直接进行图形桌面盘点;WinRM 认证未通过,后端源码和 IIS 部署目录仍未读取。
|
||
- 推荐服务器管理员启用 WinRM HTTPS 5986 或 SSH;也可以在服务器上导出 IIS 站点、应用池、物理路径和接口发布目录清单供接管。
|
||
|
||
## 2026-07-25 说明 10101 后端端口与 IIS 远程访问边界
|
||
|
||
### 用户补充
|
||
- 用户说明后端就是监听 10101 端口的服务,IIS 和后端连接配置都在服务器上;B1/TM 位于现场,测试环境也无法连接。
|
||
|
||
### 执行过程
|
||
1. 补查网络端口:`124.220.15.242:10101` 可达,IIS Management Service 常用 `8172` 不可达,Windows 文件共享 `445` 不可达。
|
||
2. 结合已知 RDP `12920` 可达、标准 RDP `3389` 不可达、WinRM `5985` 认证未通过的结果,确认当前只能访问 MES 应用 HTTP/HTTPS 端点,不能通过现有通道读取 IIS 文件系统。
|
||
3. 明确 `10101` 是应用请求端口,不提供源码目录、IIS 站点、应用池或 `web.config` 文件访问;能够请求 `MESCommonBase.ashx` 不等于能够远程管理 IIS。
|
||
4. B1/TM 位于现场且测试服务器 `9996` 不可达时,测试环境无法完成真实 SAP/TM 联调;需要现场网络、VPN、受控代理或模拟服务。
|
||
5. 本次没有开启 8172/445、没有修改 WinRM 认证策略、没有修改服务器防火墙或 IIS 配置。
|
||
|
||
### 结论与现场最小操作
|
||
- IIS 远程访问不是通过 10101 完成。服务器管理员需要任选其一:
|
||
1. 启用 WinRM HTTPS 5986 或 SSH,并限制来源 IP;
|
||
2. 启用 IIS Management Service 8172,并提供受限管理账号;
|
||
3. 在服务器本机导出 IIS 站点、应用池、物理路径、发布目录和脱敏后的连接配置;
|
||
4. 将后端发布目录压缩包复制到测试工作区。
|
||
- B1/TM 需要现场网络/VPN/代理或模拟接口,不能通过 MES 的 10101 端口间接访问。
|
||
|
||
## 2026-07-25 说明 WinRM HTTPS 和 IIS Management Service 开启方法
|
||
|
||
### 用户提问
|
||
- 用户询问如何在服务器上开启 WinRM HTTPS 5986 和 IIS Management Service 8172,以便接管后端与 IIS。
|
||
|
||
### 说明结论
|
||
1. WinRM HTTPS 5986 用于远程 PowerShell 盘点和受控运维;应使用服务器证书、指定管理端 IP 和专用账号。
|
||
2. IIS Management Service 8172 用于 IIS Manager/Web Deploy 的远程管理;它不等于文件共享,不能单独保证可以读取任意后端源码目录。
|
||
3. 不应开放 `TrustedHosts=*`、允许所有来源、长期使用 5985 明文通道或直接使用 Administrator 做日常发布。
|
||
4. B1/TM 在现场网络时,开启 IIS/WinRM 不会自动解决 B1/TM 路由问题,仍需要现场网络、VPN、受控代理或模拟服务。
|
||
|
||
### 建议服务器本机操作
|
||
- 先在服务器管理员 PowerShell 中记录 `hostname`、服务器 IP 和允许管理的客户端 IP,以下命令中的 `管理端IP` 必须替换为实际固定 IP。
|
||
- WinRM:创建带 Server Authentication 的证书,使用 `New-WSManInstance` 创建 HTTPS listener,启动 WinRM 服务,新增仅允许 `管理端IP` 访问 TCP 5986 的防火墙规则;从客户端验证 `New-PSSession -UseSSL` 成功后,再关闭不必要的 5985 入站规则。
|
||
- IIS:服务器管理器安装 IIS Management Service;IIS 管理器服务器节点打开 Management Service,勾选允许远程连接并启动 `WMSVC`;创建专用 IIS Manager 用户,在目标站点的 IIS Manager Permissions 中仅授权该站点;防火墙仅允许 `管理端IP` 访问 TCP 8172。
|
||
- 文件访问:如果需要读取后端发布目录,应额外通过 WinRM/SSH 执行只读盘点,或由服务器管理员将发布目录压缩后放到测试工作区;不要为了文件读取开放整个 445 文件共享。
|
||
- 验证完成后,应保留证书、监听器、用户、站点授权和防火墙规则的变更记录,并准备撤销命令。
|
||
|
||
### 执行边界
|
||
- 本次仅提供服务器侧操作步骤,没有远程修改服务器的 WinRM、IIS 或防火墙配置。
|
||
- 远程配置完成后,才可以继续读取 10101 对应 IIS 站点、应用池、物理目录和连接配置;连接配置中的密码应脱敏提供。
|
||
|
||
## 2026-07-25 明确完整接管所需条件
|
||
|
||
### 用户提问
|
||
- 用户询问在已建立测试数据库只读账号后,还需要哪些条件才能完成 MES 项目接管。
|
||
|
||
### 接管缺口整理
|
||
1. 后端/IIS 访问:需要 WinRM HTTPS 5986、SSH,或服务器管理员导出 IIS 站点、应用池、物理路径、`MESCommonBase.ashx`/`MESUploadFile.ashx` 发布目录、`web.config`/连接配置和服务日志位置。当前 RDP 端口可达但无法由当前工具完成图形盘点,WinRM HTTP 认证未通过。
|
||
2. 后端源码和发布方式:需要统一接口后端源码仓库或发布包、构建方式、IIS 站点名称、应用池身份、部署命令和回滚方式;否则只能维护前端和数据库,无法完整接管接口层。
|
||
3. 运行账号治理:`meswork_readonly` 只用于诊断;后端运行不能直接改成只读账号,需要建立独立的服务账号,按实际过程和表授予最小读写/执行权限,确认切换回归后再限制原 `meswork` 的 `dbo/sysadmin` 权限。
|
||
4. 配置隔离:建立正式、测试、本地三套 `static/config.js` 模板和自动选择脚本,测试前端必须阻止连接正式 MES/B1/TM 地址。
|
||
5. 数据库版本同步:完成正式库/测试库全量对象哈希差异清单,逐项审批同步;当前系统类和阀类合同工时修复已部署正式库,尚未同步测试库。
|
||
6. B1/TM 联调条件:恢复测试环境 9996 端口,或提供可验收的模拟服务;同时提供测试公司、服务地址、认证方式和测试数据。未恢复前只能验收 MES 主链路,不能验收 SAP/TM 业务。
|
||
7. 业务验收资料:提供订单、工艺、排产、装配、质检、工时、库存和异常等主流程的测试样例、预期结果、角色权限和验收负责人;写操作必须使用隔离测试数据。
|
||
8. 发布和灾备:提供数据库备份恢复方式、IIS 发布窗口、前端静态文件发布目录、接口重启方式、回滚联系人和变更审批规则,并至少完成一次恢复演练。
|
||
9. 安全整改:移除登录接口返回的密码字段,取消浏览器 Cookie 保存明文密码,轮换已在会话中传递的凭据,并限制管理员和数据库高权限账号的使用范围。
|
||
10. 运行监控:提供接口日志、IIS 日志、数据库错误日志、B1/TM 日志和告警联系人,明确 P1 故障升级时限。
|
||
|
||
### 当前已具备
|
||
- 前端代码、构建和运行时配置可读。
|
||
- 测试 SQL Server/`YL_MESDB` 可连接。
|
||
- MES 登录、菜单和通用只读接口已验证。
|
||
- 测试数据库只读账号已创建并验证。
|
||
- SQL 修复、回滚和中文执行日志流程已建立。
|
||
|
||
### 最小下一步资料包
|
||
- 后端接口源码或完整发布包。
|
||
- IIS 站点/应用池/物理路径清单。
|
||
- WinRM HTTPS 或 SSH 接入方式。
|
||
- 测试后端连接配置(口令通过安全方式提供,不写入仓库)。
|
||
- 测试 B1/TM 恢复方案或模拟接口。
|
||
- 一份核心业务验收样例和预期结果。
|
||
|
||
### 结论
|
||
- 现在可以继续受控维护 MES 核心功能;要完成全系统接管,最关键的缺口是后端/IIS 访问和运行账号切换,其次是 B1/TM 联调和测试库版本同步。
|
||
|
||
## 2026-07-25 说明 RDP 管理员账号与远程管理权限边界
|
||
|
||
### 用户提问
|
||
- 用户确认已提供 `124.220.15.242:12920` 的 RDP 登录地址和 Administrator 账号,询问该账号是否具备管理员权限、能否直接用于接管。
|
||
|
||
### 结论
|
||
1. 该账号可以作为服务器本机配置入口;名称为 `Administrator` 通常表示本机内置管理员,但最终权限应在服务器本机用 `whoami /groups` 和 `net localgroup Administrators` 验证。
|
||
2. RDP 登录成功不代表 WinRM HTTPS 5986、SSH 或 IIS Management Service 8172 已启用;这些服务分别有独立的监听器、认证方式和防火墙规则。
|
||
3. 当前已确认自定义 RDP 端口 12920 可达,5985 仅端口可达但 Negotiate 认证未建立会话,5986 和 8172 尚未开放;因此不能仅凭现有应用接口 10101 读取 IIS 目录或后端配置。
|
||
4. 建议使用该 RDP 管理员账号在服务器本机完成 WinRM HTTPS 5986 或 SSH、IIS 8172 的启用,并为后续接管创建受限专用账号;不要把 Administrator 密码写入仓库、日志或脚本。
|
||
|
||
## 2026-07-25 服务器管理员权限与端口验证结果
|
||
|
||
### 用户反馈
|
||
- 用户在服务器 PowerShell 执行 `Test-NetConnection 124.220.15.242 -Port 5986` 和 `-Port 8172`,两个端口均为 `TcpTestSucceeded: False`,但 Ping 成功。
|
||
- 用户执行 `whoami` 得到本机 Administrator 账号,并在 `BUILTIN\Administrators` 组中;`net localgroup Administrators` 确认该账号为本机管理员。
|
||
|
||
### 判断
|
||
1. RDP 登录账号权限已经确认,不是账号权限不足导致端口失败。
|
||
2. 5986 和 8172 当前没有可连接的监听服务,或尚未配置对应入站防火墙规则。
|
||
3. 本次测试的 `SourceAddress=10.0.4.16` 是服务器内网地址;对外接管时必须使用实际管理端固定公网 IP 或 VPN 网段配置白名单,不能将该内网地址误当成外部管理来源。
|
||
4. 应在管理员 PowerShell 中先启用 WinRM HTTPS listener 和 WMSVC,再从客户端验证端口;测试本机端口时优先使用 `localhost`,避免公网地址回流/NAT 影响判断。
|
||
|
||
## 2026-07-25 说明管理端公网 IP 获取方式
|
||
|
||
### 用户提问
|
||
- 用户询问配置 WinRM/IIS 防火墙白名单时,如何查看管理端公网 IP。
|
||
|
||
### 说明
|
||
1. 管理端公网 IP 是发起 RDP/WinRM/IIS 连接的客户端出口 IP,不是服务器本机的 `10.0.4.16`,也不应直接把服务器公网 IP 当作管理端 IP。
|
||
2. 在服务器上可先用 `Get-NetTCPConnection -LocalPort 12920 -State Established` 查看当前 RDP 会话的 `RemoteAddress`;若显示私网地址,说明经过 NAT 或堡垒机,防火墙需要填写出口网关的公网 IP。
|
||
3. 在实际管理电脑上执行 `Invoke-RestMethod https://api.ipify.org` 或访问公网 IP 查询服务可得到该电脑当前出口 IP;若使用 VPN,应填写 VPN 网段而不是家庭/办公公网 IP。
|
||
4. 若管理端 IP 动态变化,应优先通过 VPN、堡垒机或云安全组固定来源,不能为了省事把来源设置为 `Any` 或 `0.0.0.0/0`。
|
||
|
||
## 2026-07-25 确认当前 RDP 管理端来源 IP
|
||
|
||
### 用户反馈
|
||
- 服务器上查询到 `LocalAddress=10.0.4.16`、`LocalPort=12920`、`RemoteAddress=113.227.73.58`、`RemotePort=16951`、`State=Established`。
|
||
|
||
### 结论
|
||
1. 当前 RDP 管理端来源 IP 是 `113.227.73.58`;`16951` 是客户端临时端口,不需要加入防火墙规则。
|
||
2. WinRM HTTPS 5986 和 IIS Management Service 8172 的白名单可以限制为 `113.227.73.58`,并可额外保留服务器本机测试地址 `10.0.4.16`。
|
||
3. `113.227.73.58` 若属于动态家庭/办公宽带,地址变化后远程管理会失效,应后续使用固定公网 IP、VPN 或堡垒机出口。
|
||
|
||
## 2026-07-25 WinRM HTTPS 与 IIS 8172 本机复测
|
||
|
||
### 用户反馈
|
||
- `Test-NetConnection localhost -Port 5986` 返回 `TcpTestSucceeded: True`。
|
||
- `Test-NetConnection localhost -Port 8172` 返回 `TcpTestSucceeded: False`,IPv4/IPv6 回环地址均连接失败。
|
||
|
||
### 判断
|
||
1. WinRM HTTPS 5986 已在服务器本机监听,后续应从管理电脑 `113.227.73.58` 做外部连通性测试并验证证书/凭据。
|
||
2. IIS Management Service 的 WMSVC 尚未监听 8172,需安装或启用 `Web-Mgmt-Service`,设置 `EnableRemoteManagement=1`,启动 WMSVC,并确认防火墙白名单。
|
||
|
||
## 2026-07-25 更正 WMSVC 服务名
|
||
|
||
### 用户反馈
|
||
- 用户执行了 `Get-Service WMSV`,系统提示找不到服务。
|
||
|
||
### 结论
|
||
- 用户命令少写了服务名末尾的 `C`;IIS Management Service 的正确 Windows 服务名是 `WMSVC`。应执行 `Get-Service WMSVC`,若仍不存在再执行 `Install-WindowsFeature Web-Mgmt-Service`。
|
||
|
||
## 2026-07-25 确认 WMSVC 服务已运行
|
||
|
||
### 用户反馈
|
||
- `Get-Service WMSVC` 返回 `Status=Running`、`DisplayName=Web Management Service`。
|
||
|
||
### 判断
|
||
1. IIS Management Service 已安装并运行。
|
||
2. 仍需检查注册表 `EnableRemoteManagement` 是否为 `1`,以及 TCP 8172 是否实际监听;服务运行本身不代表已允许远程连接。
|
||
|
||
## 2026-07-25 IIS 8172 本机监听验证成功
|
||
|
||
### 用户反馈
|
||
- `Test-NetConnection localhost -Port 8172` 返回 `TcpTestSucceeded: True`。
|
||
|
||
### 结论
|
||
1. WMSVC 已运行且 IIS Management Service 已在本机 TCP 8172 监听。
|
||
2. 下一步应从管理端公网 IP `113.227.73.58` 的实际客户端测试 5986/8172;若外部失败,检查 Windows 防火墙规则和云安全组,而不是继续修改 IIS 服务。
|
||
3. 外部连通后再创建 IIS Manager 受限账号并验证 WinRM 凭据,避免继续使用 Administrator 做日常接管。
|
||
|
||
## 2026-07-25 区分服务器本机回流测试与外部测试
|
||
|
||
### 用户反馈
|
||
- 用户在服务器上测试 `124.220.15.242:5986` 和 `:8172` 均成功,但输出的 `SourceAddress` 为 `10.0.4.16`。
|
||
|
||
### 外部验证
|
||
- 从当前外部执行环境测试,5986 返回 `TcpTestSucceeded: True`。
|
||
- 8172 未在超时窗口内返回成功,暂不能确认外部可达,需检查 8172 的 Windows 防火墙/云安全组来源规则。
|
||
|
||
### 结论
|
||
1. 服务器本机回流测试成功只证明本机服务监听,不等于公网管理端可访问。
|
||
2. WinRM HTTPS 5986 已具备外部 TCP 可达性;IIS 8172 仍需从真实管理端验证,若失败应优先检查入站白名单是否包含 `113.227.73.58` 以及云安全组规则。
|
||
|
||
## 2026-07-25 确认 IIS 8172 Windows 防火墙规则正确
|
||
|
||
### 用户反馈
|
||
- 防火墙规则 `IIS Management 8172 Restricted` 已启用,方向为入站,动作为允许。
|
||
- 端口过滤为 TCP 8172,来源过滤为 `RemoteAddress=113.227.73.58`。
|
||
|
||
### 结论
|
||
1. Windows 防火墙规则符合最小开放要求,无需继续修改或扩大来源范围。
|
||
2. 结合 WMSVC 本机监听成功、外部 8172 超时,阻断点优先定位到腾讯云安全组、轻量应用服务器防火墙或公网入口策略。
|
||
3. 云侧应新增 TCP 8172 入站规则,来源为 `113.227.73.58/32`;不得配置为全网开放。若存在更高优先级拒绝规则,应先调整规则顺序。
|
||
|
||
## 2026-07-25 明确内部访问状态
|
||
|
||
### 用户提问
|
||
- 用户决定暂不处理公网 8172,确认内部是否已经可以访问。
|
||
|
||
### 结论
|
||
1. 服务器本机对 `localhost:5986` 和 `localhost:8172` 的测试均成功,说明 WinRM HTTPS 与 WMSVC 服务本身已经正常运行。
|
||
2. 当前只能确认服务器本机访问成功;其他内网主机是否可访问取决于路由和 Windows 防火墙来源规则。
|
||
3. 现有 8172 规则只允许公网来源 `113.227.73.58`,如需 `10.0.4.x` 内网其他主机访问,应按实际子网或具体管理主机 IP 新增独立白名单规则。
|
||
4. 当前 Codex 执行环境不位于服务器的 `10.0.4.x` 内网,不能直接通过 `10.0.4.16:8172` 接管;公网 5986 已可达,可优先用它继续验证 WinRM 管理会话。
|
||
|
||
## 2026-07-25 通过 WinRM HTTPS 继续接管测试服务器、IIS 与后端发布包
|
||
|
||
### 用户提问
|
||
- 用户要求在 WinRM HTTPS 5986 和 WMSVC 8172 已启动后继续接管 MES 测试环境。
|
||
|
||
### 执行过程
|
||
1. 从外部执行环境使用 WinRM HTTPS 5986 建立一次受控引导会话。由于当前证书为自签名且名称不匹配,仅在客户端会话参数中临时跳过证书链、名称和吊销检查,没有修改服务器 WinRM 认证策略,也没有将管理员密码写入文件、仓库或日志。
|
||
2. 远程身份验证成功:服务器主机名为 `10_0_4_16`,身份为本机 Administrator,操作系统为 Windows Server 2019 Datacenter。
|
||
3. 通过 WebAdministration 只读盘点 IIS。目标站点为 `元利流体MES_Manage`,状态 Started,站点 ID 29,物理目录 `C:\ProjectShow\元利流体\MES_ManageV20250916`,HTTPS 绑定为 10100 和 10101,应用池同名。
|
||
4. 应用池配置为 `.NET v4.0`、Integrated、ApplicationPoolIdentity、64 位、OnDemand、空闲 20 分钟、周期回收 29 小时;IIS 匿名认证开启,Windows/Basic 认证关闭。
|
||
5. 10100/10101 共用自签名证书 `CN=WMSvc-SHA2-10_0_4_16`,证书名称不匹配公网地址并被业务接口复用,已列为安全整改项;本次没有替换证书或重启站点。
|
||
6. 远端部署目录共 274 个文件、约 91.31 MB,包含 32 个内联 C# `.ashx`、50 个 DLL/PDB,没有独立 `.cs` 源文件。核心入口 `MESCommonBase.ashx` 默认调用 `DataLinkMesWork.DataLink.SqlWebCall`,主要数据库执行逻辑位于 DLL。
|
||
7. 通过 WinRM 只读复制 `submit`、`Bin`、`JS`、`projectUse`、`packages` 和项目元数据到 `server_baseline/MES_ManageV20250916_20260725`。未在服务器创建压缩包,未修改远端文件,未停止站点或回收应用池。
|
||
8. 快照明确排除根 `Web.config`、`webpage`、PDF、pic、App_Data、`.vs` 和业务上传数据。目录级 `submit/web.config` 不含凭据,但启用了 `directoryBrowse=true`,已列为安全风险。
|
||
9. 脱敏解析根 `Web.config`:实际 `ConnectionString` 指向 `124.220.15.242,64722 / YL_MESDB`,包含 SQL 账号和密码但未输出其值;旧字段仍保留 `.\MSSQLSERVER2016 / MESBasicDB_PZ126`。服务器同时运行 SQL Server 2016/2019,64722 在 IPv4/IPv6 全地址监听。
|
||
10. 检查 IIS 日志 `C:\inetpub\logs\LogFiles\W3SVC29`,当前抽样 11 次 `/submit/MESCommonBase.ashx` 请求均为 HTTP 200;近两天没有检出 ASP.NET、.NET Runtime 或 IIS 错误/警告事件。
|
||
11. 检查数据库备份历史:最新完整备份为 `C:\YL_MESDB_202607240000.bak`,文件实际存在,大小 1,278,302,720 字节,时间 2026-07-24 14:40:52;2026-05-09 的 6,133,209,600 字节备份也存在;历史记录中的 `C:\123.bak` 已不存在。没有执行恢复或 `RESTORE VERIFYONLY`。
|
||
12. 服务器 C 盘约已用 86 GB、剩余 13.5 GB,已列为容量风险;没有删除服务器历史备份或发布文件。
|
||
13. 从 `DataLinkMesWork.pdb` 恢复出原始构建源码路径及文件名,但该 `C:\MES_Project\...\02DataLinkMesWork` 路径在测试服务器不存在;搜索元利流体目录、管理员文档目录和可用 D 盘也未发现原始 `.csproj`/核心源码。
|
||
14. 首次执行脱敏清单脚本时因 PowerShell 变量名冲突产生哈希表错误,命令未写入远端;随后改为指定 XML 节点读取。首次读取证书时把字符串哈希当作字节数组转换而报错,随后按字符串指纹重新查询成功。对 6.13 GB 备份执行 SHA-256 时超过 90 秒终止,改为只读取文件元数据和 SQL 备份历史,避免继续占用磁盘 I/O。
|
||
15. 为恢复核心代码,尝试安装最新 ILSpy CLI 10.1.1.8388,但 NuGet 工具包缺少 `DotnetToolSettings.xml` 而失败;查询 NuGet 可用版本后固定安装 ILSpy CLI 9.1.0.7988,来源未切换到第三方。
|
||
16. 使用 ILSpy、发布 DLL 同目录依赖和 PDB 变量名生成 `decompiled/DataLinkMesWork`:76 个 C# 文件和一个 `net48` 项目。修正 ILSpy 生成的依赖相对路径,并补充 `System.Resources.Extensions` 资源构建元数据。
|
||
17. 恢复项目执行 `dotnet restore` 和 Release 构建成功,结果为 0 个错误、102 个警告。原发布 DLL SHA-256 为 `4592D49599D38ABA5BAC93DB4ADC2EB4B0BC0C1E568C37101AA992D48D8B12D7`,重建 DLL SHA-256 为 `3DD0263FE91EE86EAC369767C92995AE66CBE127C07DFB71AF6CF39BC7E8DF78`,二者不一致,因此重建 DLL 明确禁止直接发布。
|
||
18. 字符串检查未发现反编译项目内硬编码的实际数据库密码;命中项为配置读取、变量名、连接串模板和空密码变量。服务器根 `Web.config` 的真实凭据未进入恢复项目。
|
||
19. 本地安全策略阻止直接递归删除生成目录后,改用 `dotnet clean` 清理编译产物,并在 `.gitignore` 中忽略 `.tools` 及反编译项目 `bin/obj`。没有使用绕过策略的删除命令。
|
||
20. 生成 `manifest-sha256.csv`:最终清单 244 项、约 76.09 MB,包含 77 个 C#、32 个 `.ashx`、50 个 DLL;根 `Web.config` 和 PDF 数量均为 0。执行 `git diff --check` 通过,仅提示既有 Windows 换行转换警告。
|
||
21. 更新 `doc/MES测试环境接管基线_20260725.md` 到 V1.2,记录 WinRM、IIS、后端快照、真实数据库连接目标、证书、日志、备份、容量风险和反编译构建边界。
|
||
|
||
### 结论
|
||
- WinRM HTTPS 远程接管通道已经可用,IIS 站点、应用池、绑定、证书、日志、后端部署目录和数据库连接目标已完成只读盘点。
|
||
- 后端发布包、内联处理器、程序集、PDB、依赖、脱敏配置摘要和 SHA-256 清单已归档;`DataLinkMesWork.dll` 已生成可编译的非权威恢复源码,足以用于调用链搜索和故障定位。
|
||
- 测试服务器没有原始核心 DLL 项目源码,恢复项目重建二进制与发布件不一致,不能直接替换线上 DLL。完整工程接管仍需原始源码仓库、正式构建说明和发布/回滚演练。
|
||
- 最新数据库完整备份文件存在,但尚未验证可恢复性;B1/TM 仍因现场网络不可达而不能联调。
|
||
- 本次没有修改远端 IIS、接口、数据库业务数据、证书、应用池或部署文件。
|
||
|
||
## 2026-07-25 正式环境系统类与阀类装配任务查询性能优化
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求优化“系统类装配任务”和“阀类装配任务”的数据查询速度。
|
||
- 用户随后明确要求本次优化直接修改正式环境。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查前端调用和正式、测试数据库中的存储过程定义,确认页面分别调用 `计划排产_系统类任务查询` 和 `计划排产_阀类任务查询`,两个过程均以动态 SQL 组合筛选条件。
|
||
2. 对原过程进行只读分析,定位到主要热点:`View_生产工时视图` 在一次请求中被重复扫描并分组四次;流程告警、装配在岗人员和质检在岗人员均为逐行相关子查询;SAP 关联表在候选任务筛选前进行全量聚合。
|
||
3. 在测试数据库尝试执行完整查询,约 43 秒后因现场 SAP 链接服务器不可达而失败。该结果与用户已说明的测试环境 B1/TM 无法连接一致,因此没有使用测试环境的完整耗时作为性能结论。
|
||
4. 读取正式数据库过程缓存统计作为基线。系统类过程累计 38 次执行,总耗时约 158178.693 ms,平均约 4.16 秒,平均逻辑读约 142.7 万页;阀类过程累计 41 次执行,总耗时约 183052.001 ms,平均约 4.47 秒,平均逻辑读约 154.7 万页。
|
||
5. 在正式环境进行只读基线调用:系统类默认查询返回 55 行、约 3984 ms;阀类默认查询返回 284 行、约 3875 ms。执行期间生产数据仍在变化,后续阀类回归稳定为 283 行,因此一致性比较均在同一时间窗口内对新旧过程执行。
|
||
6. 编写索引部署和回滚脚本。第一次使用 `sqlcmd` 执行索引脚本时未指定 UTF-8 输入代码页,中文对象名被错误解码,语句失败;立即查询 `sys.indexes`,确认没有任何目标索引被创建,没有形成部分变更。
|
||
7. 使用 `sqlcmd -f 65001` 重新执行,6 个候选索引创建成功。索引阶段单独测试结果为系统类约 3520 ms、热缓存约 2752 ms;阀类约 6140 ms、热缓存约 3453 ms,改善不足,因此继续优化存储过程结构。
|
||
8. 编写 `db_backups/optimize_install_task_queries_20260725.sql`。部署脚本在事务中先把正式环境当时的两个原过程定义精确复制为 `计划排产_系统类任务查询_优化前_20260725` 和 `计划排产_阀类任务查询_优化前_20260725`,再创建共享核心过程 `计划排产_装配任务查询_核心`,最后把两个原过程改为保持原参数和原名称的轻量入口。
|
||
9. 新核心过程先将候选任务物化到临时表;只扫描一次 `View_生产工时视图` 并同时汇总任务、合同装配和质检工时;一次性预聚合流程告警与在岗人员;将质检和 SAP 数据访问限制到候选键;筛选条件改为参数化表达式。
|
||
10. 合同工时聚合继续使用 `View_生产工时视图.订单合同号`,没有回退到原错误字段。另行检查两个优化前备份过程定义,确认它们也已包含 2026-07-25 早前完成的合同工时修复,因此过程回滚不会丢失该修复。
|
||
11. 正式环境过程部署于 2026-07-25 11:45:44 完成。部署过程中未停止 IIS、未回收应用池、未修改前端或后端文件,也未对业务表执行新增、更新或删除。
|
||
12. 对优化前备份过程和优化后原过程进行同参数、完整结果集逐列序列化与 SHA-256 哈希比对。系统类默认查询:旧过程 55 行、3500 ms,新过程 55 行、681 ms,列结构和数据哈希一致;阀类默认查询:旧过程 283 行、6415 ms,新过程 283 行、1316 ms,列结构和数据哈希一致。
|
||
13. 继续验证指定订单、指定合同和未完成状态筛选。六组结果的列结构、行数和全行哈希全部一致:系统类指定订单由 4748 ms 降至 610 ms,指定合同由 5970 ms 降至 624 ms;阀类指定订单由 4421 ms 降至 558 ms,指定合同由 5920 ms 降至 620 ms,未完成查询由 23431 ms 降至 623 ms。
|
||
14. 进行热缓存重复调用。系统类三次约为 680、598、689 ms;阀类三次约为 999、905、935 ms。
|
||
15. 使用前端实际 `CreateData('11', ...)` 请求结构和每页 20 行参数调用正式接口。系统类接口返回 HTTP 200,20/55 行,约 1201 ms;阀类接口返回 HTTP 200,20/283 行,约 940 ms。正式接口证书为自签名证书,本次仅在回归客户端临时跳过证书校验,没有更改服务器证书或安全配置。
|
||
16. 复核合同工时:系统类 55 行中合同装配工时非零 34 行、合同质检工时非零 20 行;阀类 283 行中合同装配工时非零 97 行、合同质检工时非零 34 行,确认“合同装配工时和合同质检工时均为 0”的修复仍然有效。
|
||
17. 检查候选索引使用统计。`IX_工时校验_报工记录id` 在新旧查询测试期间均未被使用,为避免增加业务写入成本,已从正式环境删除并从部署、回滚脚本移除。最终保留 5 个有实际使用记录的辅助索引。
|
||
18. 最终查询正式环境对象状态,确认共享核心过程、两个优化后的原过程、两个精确备份过程和 5 个辅助索引全部存在。累计 13 次调用后的统计为:系统类平均 775.02 ms、平均逻辑读 397782 页;阀类平均 1104.29 ms、平均逻辑读 412203 页。相对原缓存基线,逻辑读下降约 72%。
|
||
19. 生成过程部署、过程回滚、索引部署和索引回滚四份 SQL 脚本,并新增 `doc/装配任务查询性能优化_20260725.md` 记录问题、改动、验证结果和回滚入口。
|
||
|
||
### 变更文件
|
||
|
||
- `db_backups/optimize_install_task_queries_20260725.sql`
|
||
- `db_backups/rollback_install_task_queries_20260725.sql`
|
||
- `db_backups/optimize_install_task_query_indexes_20260725.sql`
|
||
- `db_backups/rollback_install_task_query_indexes_20260725.sql`
|
||
- `doc/装配任务查询性能优化_20260725.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- 正式环境系统类和阀类装配任务查询优化已部署并生效,默认查询、筛选查询、正式接口分页和合同工时均已回归通过。
|
||
- 新旧过程的列结构和完整数据哈希一致,没有发现查询结果回归。
|
||
- 正式环境未修改业务数据;数据库结构变更为 5 个非聚集索引、1 个共享核心过程、2 个原过程入口改造和 2 个优化前备份过程。
|
||
- 过程与索引均有独立回滚脚本。建议保留两个优化前备份过程观察一个业务周期,确认稳定后再清理。
|
||
- 本次未修改系统类和阀类的导出过程,导出性能不在本次范围内。
|
||
|
||
## 2026-07-25 系统类与阀类装配任务新增预算工时和预算进度
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求在系统类装配任务和阀类装配任务页面增加两个可手工输入字段:`任务预算装配工时`、`合同预算测试工时`。
|
||
- 用户要求增加两个计算字段:`任务预算装配进度 = 任务装配工时 / 任务预算装配工时`,`合同预算测试进度 = 合同质检工时 / 合同预算测试工时`。
|
||
|
||
### 执行过程
|
||
|
||
1. 读取根目录 `AGENTS.md`,确认本次执行结束前必须把提问、执行过程和结论以中文追加到 `gptlog-process/gpdlog.md`。
|
||
2. 搜索两个页面和查询过程,定位前端文件 `src/views/PlanManagement/SystemInstallTask/index.vue`、`src/views/PlanManagement/ValueInstallTask/index.vue`,以及正式环境查询过程 `计划排产_系统类任务查询`、`计划排产_阀类任务查询` 和共享核心过程 `计划排产_装配任务查询_核心`。
|
||
3. 检查页面现有编辑方式,确认日期、派工对象和备注均通过通用 `CreateData('12', ...)` 调用参数化存储过程保存;页面原工时按接口返回秒数除以 `3600` 显示为小时。
|
||
4. 检查正式数据库任务表和当前装配数据。`MES_接口_生产计划_生产任务` 使用 `AID` 标识明细,但现有“任务装配工时”在查询中按生产订单号汇总;当前装配结果中每个生产订单只有一条装配任务。由此确定任务预算按订单号唯一保存,与实际任务工时口径一致。
|
||
5. 分析合同预算粒度。一个合同可能关联多个生产订单,若把合同预算重复保存到任务行会产生覆盖和不一致,因此将合同预算按合同号单独唯一保存。
|
||
6. 确定单位和显示口径:人工预算以小时录入,实际工时由秒转换为小时后再参与除法;数据库返回百分比数值,前端追加 `%` 并保留两位小数。预算为 0 时返回 `0.00%`,进度不封顶,以便显示超预算情况。
|
||
7. 修改两个 Vue 页面,在任务装配工时旁加入 `任务预算装配工时` 数字输入框和 `任务预算装配进度` 百分比列,在合同质检工时旁加入 `合同预算测试工时` 数字输入框和 `合同预算测试进度` 百分比列。
|
||
8. 两个输入框限制为非负数、两位小数。合同号为空时禁用合同预算输入,避免生成无业务键的数据。
|
||
9. 新增前端 `saveBudget` 方法,调用 `计划排产_装配任务预算_保存`。保存任务预算后同步当前页同订单数据;保存合同预算后同步当前页同合同数据;失败时重新查询恢复服务器值,避免页面显示未保存的数字。
|
||
10. 新增前端 `calculateBudgetProgress` 和 `formatBudgetProgress`,保存成功后立即在当前页按同一公式更新百分比,不要求用户手工刷新。
|
||
11. 编写正式数据库部署脚本 `db_backups/add_install_task_budget_progress_20260725.sql`。脚本创建 `计划排产_装配任务预算` 和 `计划排产_装配合同预算` 两张表,分别以订单号和合同号为主键,并用检查约束阻止负数预算。
|
||
12. 新增参数化保存过程 `计划排产_装配任务预算_保存`,只接受“任务”或“合同”两种预算类型,校验订单号、合同号和预算值,并通过 `UPDLOCK, SERIALIZABLE` 的更新后插入方式避免并发重复键。
|
||
13. 部署脚本在修改核心查询前,把正式环境当时的 `计划排产_装配任务查询_核心` 精确复制为 `计划排产_装配任务查询_核心_预算前_20260725`。核心结构标记必须各命中两次,否则脚本抛错并由事务回滚。
|
||
14. 修改共享核心查询,在系统类和阀类两个结果分支中连接任务预算表和合同预算表,返回两个预算字段,并使用实际秒数除以 `3600` 后计算两个百分比字段。
|
||
15. 编写 `db_backups/rollback_install_task_budget_progress_20260725.sql`。回滚脚本从精确备份恢复核心查询并删除预算保存过程;两张预算表可能包含人工数据,因此回滚时有意保留,不执行破坏性删除。
|
||
16. 第一次运行前端生产构建时,构建超过工具的两分钟等待窗口,子进程随后结束且未生成新应用产物,因此没有将该次执行视为成功。
|
||
17. 使用五分钟窗口重新执行 `npm run build`,Webpack 在约 68 秒内编译成功,结果为 0 个错误、2 个项目既有的大资源包警告;新应用文件为 `dist/static/js/app.0f5d52d2.js`。
|
||
18. 前端构建通过后才执行正式数据库部署,避免数据库先上线而前端代码无法构建。使用 `sqlcmd -f 65001 -b` 执行事务脚本,正式库于 2026-07-25 13:41:01 成功创建两张预算表、保存过程、查询备份过程并修改共享核心查询。
|
||
19. 直接数据库事务回归:临时为订单 `5727` 保存任务预算 100 小时,为合同 `HT260447` 保存合同预算 50 小时。查询得到任务实际装配工时 97657 秒、任务预算进度 27.13%,合同实际质检工时 71256 秒、合同预算测试进度 39.59%。随后回滚事务,两张预算表行数均恢复为 0。
|
||
20. 对预算上线前备份过程和新核心过程执行完整结果对比。系统类新旧均返回 55 行,阀类新旧均返回 283 行;旧过程全部字段在新结果中均存在,公共字段逐值序列化后的 SHA-256 哈希完全一致,只新增需求中的 4 个字段。
|
||
21. 本次性能回归中,系统类旧过程约 785 ms、新过程约 723 ms;阀类旧过程约 1029 ms、新过程约 904 ms,新增两个主键表连接未造成可见性能退化。
|
||
22. 通过正式后端接口按前端实际请求结构查询订单 `5727`,接口约 896 ms 返回 1 行和新增 4 个字段,初始预算及进度均为 `0.00`。
|
||
23. 首次使用 `curl` 命令行参数发送中文 JSON 时,PowerShell 原生命令参数编码导致接口返回 `result=0`;没有形成数据库写入。随后改用 UTF-8 `WebClient` 复现浏览器请求,正式接口查询成功。
|
||
24. 继续通过正式接口执行保存回归:任务和合同预算保存均返回 `result=1`,再次查询得到 `100.00/27.13` 和 `50.00/39.59`。回归结束后仅删除最后编辑人为 `Codex接口回归`、业务键和预算值完全匹配的两条测试记录;清理后两张预算表均为 0 行,没有保留虚构预算。
|
||
25. `npm run build` 按项目配置会删除 `dist/static/config.js`。使用正式环境地址重新注入运行时配置,保证发布包连接 `192.168.2.92:10101`,没有改动仓库源配置 `static/config.js`。
|
||
26. 生成独立发布包 `release_packages/MES_Manage_View_V20_装配任务预算进度_20260725.zip`,未覆盖根目录既有 `dist.zip`。压缩包大小 62,964,069 字节,SHA-256 为 `51E349E50659C449A6E5E1EF78C7A37DDB9249156B3AF7543A4040820029AA82`,并确认包内含 `index.html`、`static/config.js` 和 `static/js/app.0f5d52d2.js`。
|
||
27. 检查正式服务器访问路径。`192.168.2.92:5986`、`:8172` 不可达,SMB 管理共享无权限;`:10101` 是后端接口和目录浏览站点,没有当前前端入口。没有通过 SQL Server、上传接口或其他旁路尝试写入正式服务器文件。
|
||
28. 第一次尝试用 Python 启动本地构建预览时发现机器没有 Python 可执行文件,未启动任何进程。随后使用现有 Webpack 开发服务器在 1998 端口启动预览。
|
||
29. Webpack 配置启用开发 HTTPS。启动阶段曾出现一次 HTTP 响应,稳定后确认应使用 `https://127.0.0.1:1998/`;HTTPS 入口和 `/static/config.js` 均返回 HTTP 200,入口包含应用挂载节点。开发证书为自签名证书。
|
||
30. 新增 `doc/装配任务预算进度功能_20260725.md` 和发布说明,明确公式、单位、数据粒度、验证结果、回滚方式,以及正式数据库已上线但正式前端静态目录尚未发布的边界。
|
||
|
||
### 变更文件
|
||
|
||
- `src/views/PlanManagement/SystemInstallTask/index.vue`
|
||
- `src/views/PlanManagement/ValueInstallTask/index.vue`
|
||
- `db_backups/add_install_task_budget_progress_20260725.sql`
|
||
- `db_backups/rollback_install_task_budget_progress_20260725.sql`
|
||
- `doc/装配任务预算进度功能_20260725.md`
|
||
- `release_packages/装配任务预算进度_20260725_发布说明.md`
|
||
- `release_packages/MES_Manage_View_V20_装配任务预算进度_20260725.zip`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- 两个页面的 4 个新字段、手工保存逻辑和百分比计算已经完成,前端生产构建通过。
|
||
- 正式数据库已部署并完成数据库、接口读写、数据一致性和性能回归;测试数据已全部清理,预算表当前为空。
|
||
- 任务预算按订单保存,合同预算按合同保存;预算单位为小时,实际工时由秒转换为小时后计算百分比。
|
||
- 正式前端尚未发布,因为当前没有正式前端站点物理目录和受控发布权限。已生成并校验独立发布包,取得正式前端发布通道后可直接部署。
|
||
- 本次没有修改系统类和阀类导出过程,Excel 导出暂不包含新增预算字段。
|
||
|
||
### 初始化误保存复核与修正
|
||
|
||
31. 在最终数据库对象核验时发现任务预算表新增 2 行、合同预算表新增 1 行,均为 `0.00`,编辑人为超级管理员,写入时间为 13:50 至 13:52,与本地预览启动和页面刷新时间一致。由于正式前端尚未部署且记录不是接口回归使用的 `Codex接口回归` 标记,判断为 `el-input-number` 在异步接收初始值时触发 `change` 事件造成的零值保存。
|
||
32. 立即停止由本次任务启动的 1998 端口预览服务,避免继续产生记录。没有停止或修改用户已有的其他 Node 进程。
|
||
33. 修改两个页面的数据初始化:使用正确的 `response.data.rows.map(...)` 建立行对象,并保存 `_originalTaskBudget`、`_originalContractBudget` 两个原始值。预算保存前比较当前值和原始值,只有数值真实变化才调用正式接口;保存成功后同步更新当前页相同业务键的原始值。
|
||
34. 同时修正页面既有的 `this.donefninsertidx().map(...)` 错误链式调用。原代码的 `donefninsertidx` 没有返回数组,继续调用 `.map` 会产生运行时异常;现在行编辑状态和预算原值均在 `rows.map` 中一次初始化,随后独立调用 `donefninsertidx()`。
|
||
35. 对 3 条零值记录进行精确条件清理:同时匹配订单或合同、预算为 0、编辑人为超级管理员和完整秒级写入时间。2 条任务记录和 1 条合同记录全部匹配后在事务中删除,清理后两张预算表均为 0 行;若任一条件不匹配,脚本会回滚并停止。
|
||
36. 修正后再次执行生产构建,Webpack 用时约 39 秒,0 个错误、2 个既有资源体积警告,新应用文件为 `dist/static/js/app.2f3cf910.js`。
|
||
37. 重新注入正式 `dist/static/config.js` 并替换本次任务生成的同名发布包。最终包大小为 62,963,217 字节,SHA-256 为 `5E53DA3CA7BF2825589077D1F90433E57549096090F460F3E32A1DEC5F8D232B`。
|
||
38. 重新启动本地 HTTPS 预览 `https://127.0.0.1:1998/`,入口返回 HTTP 200。页面启动并等待初始化后再次查询正式预算表,任务预算和合同预算行数仍为 `0/0`,确认初始值不会再触发保存。
|
||
|
||
### 最终补充结论
|
||
|
||
- 初始化误保存问题已在正式前端发布前发现并修正,没有进入正式前端静态站点。
|
||
- 预览产生的 3 条零值记录已精确清理,正式预算表当前为空。
|
||
- 当前有效发布包以 SHA-256 `5E53DA3CA7BF2825589077D1F90433E57549096090F460F3E32A1DEC5F8D232B` 为准,先前 `51E349E5...` 的构建包已被修正版替换。
|
||
|
||
## 2026-07-25 装配类与阀类页面首屏性能二次优化
|
||
|
||
### 用户提问
|
||
|
||
- 用户反馈装配类和阀类页面在完成数据库查询优化后体感提升不明显,当前加载仍需好几秒,要求继续处理性能问题。
|
||
|
||
### 执行过程
|
||
|
||
1. 按正式页面默认参数直接测量正式接口,每页 100 行连续调用 5 次。系统类接口为 696-929 ms,返回 55/55 行、响应约 52,825 字符;阀类接口通常为 1,019-1,179 ms,但有一次 2,731 ms 波动,返回 100/260 行、响应约 93,429 字符。
|
||
2. 查询 SQL Server 动态管理视图。此前一次优化后的累计统计约为:系统类平均 1,275 ms、406,221 页逻辑读;阀类平均 1,389 ms、420,534 页逻辑读;共享核心过程平均 1,027 ms、413,541 页逻辑读。
|
||
3. 对阀类默认查询执行 `STATISTICS IO/TIME`。主要剩余成本来自 `View_生产工时视图` 展开后的 `YL_加工中心_操作记录表`,单次约 337,512 页逻辑读;工时汇总块 CPU 约 2,101 ms、并行实际耗时约 391 ms,其余流程、生产计划和 SAP 关联不是当前主要耗时。
|
||
4. 读取 `View_生产工时视图`、`View_校验后的生产工时` 和 `View_生产订单_MES` 定义。确认工时视图包含 3 个针对操作记录表的相关 `NOT EXISTS` 和 1 个按人员、日期查找班次最小标准工时的相关子查询。
|
||
5. 核对 `YL_加工中心_操作记录表`:当前约 89,067 行、15,345 个任务,是堆表;已有 `TaskAID、操作内容、开始时间、结束时间、操作人` 组合索引。由此判断继续增加相似普通索引未必能明显改善页面查询。
|
||
6. 用只读临时查询验证“先生成本次合同涉及的订单集合,再连接工时视图”的方案。阀类工时块逻辑读由约 337,512 降至 275,899,CPU 由约 2,101 ms 降至 1,121 ms,单独工时块实际耗时由约 391 ms 降至 174 ms,因此进入可回滚正式验证。
|
||
7. 编写事务化二次优化脚本:修改共享核心过程的工时过滤,并增加人员报工、未结束辅助、暂停结束人员 3 个筛选索引;修改前创建精确备份过程。脚本严格检查过程结构,异常时自动回滚。
|
||
8. 第一次执行二次优化脚本时,过程结构校验因为 SQL `LIKE` 中的方括号被当成模式字符而触发,事务自动回滚,正式对象没有发生修改。将校验改为 `CHARINDEX` 后重新执行,二次方案成功提交。
|
||
9. 通过正式接口对二次优化前备份过程和修改后入口执行完整结果比对。系统类均返回 55 行、完整行数据 SHA-256 一致;阀类均返回 259 行、完整行数据 SHA-256 一致,证明数据口径未改变。
|
||
10. 性能对比显示二次数据库方案不值得保留:系统类由约 819 ms 增加到 1,089 ms,阀类修改前后约 1,041/1,054 ms,基本无收益。立即执行回滚,恢复一次优化核心过程并删除 3 个实验索引和临时备份过程。
|
||
11. 回滚脚本首次也因同类 `LIKE` 方括号校验自动停止,未修改任何对象;改为 `CHARINDEX` 后成功回滚。最终核对正式库:核心过程为一次优化版本,二次临时过程和索引数量为 0。
|
||
12. 分析两个 Vue 页面,确认首屏默认请求并渲染 100 行;每行会同时创建日期选择器、二次派工多选框和两个预算数字输入框。阀类 100 行对应数百个 Element UI 重控件,浏览器渲染是接口返回后继续等待数秒的主要来源。
|
||
13. 发现分页状态错配:分页控件绑定 `donepageSize/donepageCurrent`,但事件处理和请求使用 `pageSize/pageCurrent`,导致显示状态与实际请求状态不是同一组变量。
|
||
14. 修改系统类和阀类页面:默认分页改为 20 行,可选 20、50、100;分页事件和 `CreateData` 请求统一使用 `donepageSize/donepageCurrent`。
|
||
15. 将日期、二次派工、任务预算装配工时和合同预算测试工时改为按需编辑。首屏只渲染文本,点击单元格后才创建该行该字段的日期、下拉或数字输入控件;原有保存过程和业务公式保持不变。
|
||
16. 增加 `_editingField` 行状态和通用编辑切换方法;二次派工文本显示兼容人员编号为数字或字符串的情况。日期变更继续调用原修改过程,预算变更继续调用 `计划排产_装配任务预算_保存`。
|
||
17. 对两个历史页面运行 ESLint,工具报告大量原有格式和旧语法规则问题,不能作为本次通过标准;本次改动未造成 Vue 模板或脚本解析失败。随后执行完整生产构建,Webpack 约 37 秒编译成功,0 个错误、2 个项目原有大资源体积警告。
|
||
18. 新生产应用文件为 `dist/static/js/app.3bad3bcc.js`。构建后重新注入正式 `dist/static/config.js`,保持接口指向正式环境,没有修改仓库源配置的环境选择。
|
||
19. 用正式接口按新首屏 20 行参数连续执行 5 轮。系统类为 696-987 ms,返回 20/55 行、响应 19,670 字符;阀类为 876-1,143 ms,返回 20/260 行、响应 18,672 字符。相较 100 行请求,系统类响应体减少约 63%,阀类减少约 80%。
|
||
20. 更新 `doc/装配任务查询性能优化_20260725.md`,记录首屏渲染优化、正式接口测量结果及二次数据库实验被回滚的原因。
|
||
21. 重新生成正式前端发布包 `release_packages/MES_Manage_View_V20_装配任务预算进度_20260725.zip`。压缩命令第一次因外层等待窗口过短在覆盖后留下 0 字节中间文件,随即从完整 `dist` 重新压缩并校验,不保留中间状态。
|
||
22. 最终发布包大小为 62,963,418 字节,SHA-256 为 `6EEE74E1D0FEA971FE1D0BD141EDE92439054A8205866DE4C19397D6B27E920E`;包内确认包含 `static/config.js` 和 `static/js/app.3bad3bcc.js`。
|
||
23. 检查本地 HTTPS 预览服务 `https://127.0.0.1:1998/`,入口和正式环境运行配置均可读取。正式前端 IIS 站点物理目录和发布通道仍未取得,因此本轮前端优化已完成源码、构建和发布包,但尚未替换正式站点静态文件。
|
||
24. 最终复核正式数据库:核心过程仍为已验证的一次优化版本;二次实验对象为 0;任务预算表和合同预算表均为 0 行,没有因本次预览或测试产生业务数据。
|
||
|
||
### 变更文件
|
||
|
||
- `src/views/PlanManagement/SystemInstallTask/index.vue`
|
||
- `src/views/PlanManagement/ValueInstallTask/index.vue`
|
||
- `doc/装配任务查询性能优化_20260725.md`
|
||
- `release_packages/装配任务预算进度_20260725_发布说明.md`
|
||
- `release_packages/MES_Manage_View_V20_装配任务预算进度_20260725.zip`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- 正式数据库的一次优化已经把原来约 4-6 秒的查询压到通常 0.7-1.1 秒;继续增加筛选索引和改写工时过滤没有稳定收益,相关实验已完整回滚并清理。
|
||
- 当前页面剩余的主要体感延迟来自 100 行重控件渲染。源码已改为默认 20 行和单元格按需创建编辑控件,首屏响应体及组件数量显著下降。
|
||
- 生产构建、正式接口分页、完整数据一致性、正式库对象和发布包哈希均已验证。
|
||
- 正式前端站点尚未部署新静态包,因此用户当前访问的正式页面不会自动获得本次前端提速;需要取得正式前端 IIS 物理目录或受控发布入口后替换静态文件。
|
||
|
||
## 2026-07-25 说明生成正式前端发布包的原因
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问为什么需要生成正式发布包。
|
||
|
||
### 执行过程
|
||
|
||
1. 复核本轮变更边界:数据库一次优化已经在正式库生效,但本轮体感性能改动位于两个 Vue 前端页面,必须经过生产构建才能形成浏览器实际运行的静态文件。
|
||
2. 复核当前部署条件:尚未取得正式前端 IIS 站点物理目录或受控发布入口,无法直接把构建后的静态文件部署到正式站点。
|
||
3. 说明发布包只是可校验、可交接的部署产物,用于在获得正式前端发布通道后整体替换静态文件;生成发布包本身不等于已经发布,也不会让正式页面自动变化。
|
||
4. 说明包使用正式配置的原因:用户此前明确要求该优化直接修改正式环境,因此构建产物保留正式接口地址。若后续改为先走测试环境,应另外生成或部署使用测试 `config.js` 的测试构建,不应混用。
|
||
5. 本次仅追加说明日志,没有修改数据库、页面源码、构建产物或服务器配置。
|
||
|
||
### 结论
|
||
|
||
- 生成正式发布包是因为前端源码修改必须构建,并且当前缺少直接部署正式前端 IIS 的入口,需要保留一个可验证的待部署产物。
|
||
- 发布包当前只是交付物,不代表正式前端已经上线;如果获得正式 IIS 物理目录和权限,可以直接部署 `dist`,不必额外依赖 zip 作为中转。
|
||
|
||
## 2026-07-25 调整前端交付方式
|
||
|
||
### 用户要求
|
||
|
||
- 用户说明后续不需要生成前端正式发布压缩包,将通过远程方式直接部署根目录下的 `dist`。
|
||
|
||
### 执行过程
|
||
|
||
1. 确认后续前端交付流程改为:修改源码、执行生产构建、恢复并核对目标环境 `dist/static/config.js`、验证 `dist` 完整性,然后由用户远程直接部署 `dist`。
|
||
2. 确认除非用户以后明确要求,否则不再创建或覆盖 `release_packages` 中的前端 zip。
|
||
3. 本次没有删除已有发布包,避免未经要求执行破坏性清理;没有修改数据库、页面源码、构建产物或服务器。
|
||
|
||
### 结论
|
||
|
||
- 后续默认交付物为根目录 `dist`,不再额外生成前端发布压缩包。
|
||
|
||
## 2026-07-25 说明 server_baseline 目录
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问 `server_baseline` 目录是什么。
|
||
|
||
### 执行过程
|
||
|
||
1. 只读检查 `server_baseline/MES_ManageV20250916_20260725` 的目录结构、README 和配置摘要。
|
||
2. 确认该目录是 2026-07-25 从测试服务器 `124.220.15.242` 的元利流体 MES 后端 IIS 目录建立的脱敏部署快照,不是前端发布包。
|
||
3. 快照包含 `submit` 内联处理器、`Bin` 部署程序集和 PDB、随附脚本、NuGet 包、解决方案文件、文件哈希清单及 `DataLinkMesWork` 反编译恢复源码。
|
||
4. 快照明确排除了包含数据库凭据的根 `Web.config`,以及 PDF、图片、上传文件和运行数据。
|
||
5. 当前统计为 253 个文件、约 76.14 MB。反编译源码仅用于分析,不是权威原始源码,也不能直接替换测试服务器 DLL。
|
||
6. 本次只读检查没有修改或删除 `server_baseline`。
|
||
|
||
### 结论
|
||
|
||
- `server_baseline` 是测试后端接管、差异比对和回滚定位用的脱敏基线资产,与日常前端 `dist` 部署无关。
|
||
|
||
## 2026-07-25 将正式装配任务变更同步到测试环境
|
||
|
||
### 用户要求
|
||
|
||
- 用户要求把正式环境已经完成的改动在测试环境也同步一遍。
|
||
|
||
### 执行过程
|
||
|
||
1. 确定同步范围:系统类和阀类装配任务合同工时修复、共享查询优化、5 个查询索引、任务/合同预算保存和进度字段、前端默认 20 行分页及按需编辑控件。
|
||
2. 检查测试网络连通性:SQL Server `124.220.15.242:64722` 和 WinRM HTTPS `5986` 均可达。测试数据库账号映射为 `dbo` 且属于 `db_owner`,具备部署权限;日志未记录明文密码。
|
||
3. 盘点测试库对象。测试库仍是 2026-07-15 原始版本,仅有 `计划排产_系统类任务查询` 和 `计划排产_阀类任务查询`,定义哈希分别为 `B62DE5C...`、`E9D8A3A7...`;共享核心过程、预算对象和 5 个索引均不存在。
|
||
4. 通过测试 `10101` 接口执行同步前基线。系统类单次约 44,130 ms,阀类约 21,217 ms,后端没有返回正常的分页 `rows/total` 结构,证明旧查询在测试环境已经超时或异常。
|
||
5. 不单独执行早期合同工时补丁,因为后续共享核心查询已包含正确的 `订单合同号` 合同汇总口径。按正式环境相同顺序执行 `optimize_install_task_queries_20260725.sql`,成功创建共享核心过程和两个原入口的优化前备份。
|
||
6. 执行 `optimize_install_task_query_indexes_20260725.sql`,成功创建 `IX_零件图纸_num`、`IX_工艺库_订单_顺序`、`IX_质检记录_质检类型_计划号`、`IX_人员信息_姓名_班组`、`IX_流程表_关联计划_流程` 5 个索引。
|
||
7. 执行 `add_install_task_budget_progress_20260725.sql`,成功创建任务预算表、合同预算表、预算保存过程、预算前核心备份,并在共享核心返回中增加 4 个预算及进度字段。
|
||
8. 部署后连续接口回归仍显示系统类约 44 秒、阀类约 22 秒。查询过程缓存统计显示逻辑读已下降到约 32-33 万页,但实际等待时间仍很长,因此继续定位测试环境独有外部依赖。
|
||
9. 读取测试核心过程,发现交货日期通过 SQL 链接服务器 `[SAP].[SBO_YL].[dbo].[UBT_MES_ORDROPEN2]` 获取。用户此前已说明测试 B1/TM 无法连接现场;单独执行链接服务器 `TOP 1` 查询超过 39 秒仍未返回,确认其为测试接口剩余等待来源。
|
||
10. 新增仅测试环境使用的事务化脚本 `test_disable_install_task_sap_delivery_20260725.sql` 及回滚脚本。部署前备份当前含预算功能的核心过程,测试核心改为空交货日期占位,保留相同列结构,不修改正式库。
|
||
11. 测试 SAP 适配部署后连续 3 轮正式接口结构回归:系统类 818-1089 ms、20/55 行;阀类 931-1136 ms、20/263 行;两类结果均包含任务预算装配工时、任务预算装配进度、合同预算测试工时、合同预算测试进度 4 个字段。
|
||
12. 通过测试 `10101` 接口完成预算写入和读取回归。为订单 5598、合同 `HT260597` 临时写入任务预算 123.45 小时和合同预算 67.89 小时,两个保存结果均为 1;再次查询得到任务进度 2.48%、合同测试进度 10.04%。
|
||
13. 在 `finally` 清理阶段按专用编辑标记 `Codex测试环境回归_20260725` 精确删除两条测试预算记录。最终任务预算表和合同预算表均为 0 行,没有保留虚构业务数据。
|
||
14. 通过 WinRM HTTPS 登录测试服务器,只读盘点全部 IIS 站点。确认元利流体仅有后端站点 `元利流体MES_Manage`,物理目录 `C:\ProjectShow\元利流体\MES_ManageV20250916`,绑定 10100/10101;没有元利流体前端 IIS 站点,因此没有把前端文件放进后端目录。
|
||
15. 核对测试库和正式库定义哈希:`计划排产_系统类任务查询`、`计划排产_阀类任务查询` 和 `计划排产_装配任务预算_保存` 三个过程在测试库与正式库完全一致。测试核心仅有明确记录的跳过不可达 SAP 交货日期适配。
|
||
16. 核对数据库最终状态:两张预算表、预算保存过程、共享核心、预算前备份、测试 SAP 适配前备份和 5 个索引均存在;当前核心包含测试适配标记,备份过程仍包含原 SAP 查询,可执行回滚脚本恢复。
|
||
17. 按用户指定的前端交付方式处理根目录 `dist`。检查发现生产构建脚本已删除 `dist/static/config.js`,因此直接补充测试运行配置;只激活 `124.220.15.242:10101`,没有激活正式 `192.168.2.92`。
|
||
18. 验证 `dist/index.html` 引用了 `static/config.js` 和 `app.3bad3bcc.js`,测试配置和新应用文件完整。本次没有生成或覆盖前端 zip,也没有自动部署到不存在的测试前端站点。
|
||
19. 更新 `doc/MES测试环境接管基线_20260725.md`,记录数据库同步、测试 SAP 适配、接口耗时、预算回归清理和 `dist` 交付边界。
|
||
|
||
### 变更文件
|
||
|
||
- `db_backups/test_disable_install_task_sap_delivery_20260725.sql`
|
||
- `db_backups/rollback_test_disable_install_task_sap_delivery_20260725.sql`
|
||
- `dist/static/config.js`
|
||
- `doc/MES测试环境接管基线_20260725.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- 正式环境的装配任务数据库功能和查询优化已经同步到测试数据库,两个入口过程及预算保存过程与正式库定义一致。
|
||
- 因测试环境无法连接现场 SAP,测试核心过程跳过交货日期远程查询;返回字段结构不变,并有独立备份和回滚脚本。
|
||
- 测试接口已从 21-44 秒异常等待恢复到通常 0.8-1.1 秒,4 个预算字段及预算读写均回归通过。
|
||
- 测试数据已全部清理,两张预算表最终为 0 行。
|
||
- 根目录 `dist` 已配置为测试接口,未生成 zip;测试服务器没有元利流体前端 IIS 站点,需要用户远程将 `dist` 放到实际测试前端位置。
|
||
|
||
## 2026-07-25 复核测试环境接管剩余事项
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问当前测试环境接管还缺少什么。
|
||
|
||
### 执行过程
|
||
|
||
1. 只读复核 `doc/MES测试环境接管基线_20260725.md` 中的接管范围、风险、任务清单、完成标准和最新装配任务同步记录。
|
||
2. 再次验证测试环境关键入口:WinRM HTTPS 5986、SQL Server 64722、MES 后端接口 10101 均可达;根目录 `dist/static/config.js` 存在并指向测试接口。
|
||
3. 确认已经具备的能力:可远程管理 Windows/IIS、读取 IIS 日志和部署目录、访问测试数据库、执行带事务和回滚的数据库变更、调用通用接口、构建前端、维护测试 `dist`,并已归档脱敏后端部署快照。
|
||
4. 确认装配任务合同工时、查询优化、预算工时和进度功能已同步测试库,不再属于接管缺口。
|
||
5. 将剩余事项按是否阻塞完整接管重新分类:
|
||
- 核心阻塞:`DataLinkMesWork.dll` 等核心程序集原始源码和可重复构建流程缺失;当前反编译项目只能用于分析,不能作为可靠发布源。
|
||
- 核心阻塞:测试服务器没有元利流体前端 IIS 站点或明确物理目录,`dist` 尚未完成一次真实部署、访问和回滚演练。
|
||
- 集成阻塞:测试 B1/TM 代理不可达,没有可验收模拟服务,B1 生产订单/库存和 TM 领料、收料、退料无法完成真实联调。
|
||
- 运维阻塞:数据库备份仅确认文件存在,尚未执行 `RESTORE VERIFYONLY`、隔离恢复和数据库/接口/前端回滚演练。
|
||
- 权限阻塞:只读诊断账号已经建立,但后端仍依赖高权限 `meswork`;尚未切换到最小权限服务账号并限制原 `dbo/sysadmin` 权限。
|
||
- 安全缺口:登录接口仍可能返回密码字段,前端记住密码仍使用明文 Cookie,业务 HTTPS 证书名称不匹配,目录浏览仍开启。
|
||
- 验收缺口:登录、菜单、角色权限及工艺、计划、生产、质量、设备、异常、文件、设备采集等模块尚未完成系统化读写回归;页面到过程/视图/表映射和责任人、验收标准、问题台账尚未完整建立。
|
||
6. 本次仅执行只读状态复核并追加日志,没有修改数据库、IIS、前端源码或服务器配置。
|
||
|
||
### 结论
|
||
|
||
- 当前测试环境已经可以由 Codex 执行日常诊断、数据库变更、接口排查和后端 IIS 管理,属于“有条件接管”。
|
||
- 要升级为“完整接管”,优先需要补齐:核心后端原始源码、测试前端真实站点及发布回滚演练、B1/TM 或模拟服务、数据库恢复演练、后端最小权限服务账号。
|
||
- 证书、明文密码、目录浏览和全模块回归属于随后必须完成的安全与验收工作。
|
||
|
||
## 2026-07-25 测试前端落地、只读外部集成、恢复演练与全模块验收
|
||
|
||
### 用户提问与要求
|
||
|
||
- 用户确认测试前端使用 `10012` 端口,要求完成真实落地。
|
||
- 用户确认核心后端没有原始源码且当前不需要修改后端核心逻辑,现有 `10101` 发布物即可作为接管对象。
|
||
- 用户确认管理机通过 VPN 可以访问现场 B1 和 TM;允许登录和 GET,必须禁止 B1/TM 的 POST 和 PATCH,防止污染现场业务数据。
|
||
- 用户要求执行数据库备份恢复演练,继续安全检查和全模块验收。
|
||
- 用户说明测试环境接管的主要目标是为后续生产环境接管做准备,并询问当前接管后可以开展哪些工作。
|
||
|
||
### 执行过程
|
||
|
||
1. 明确本次操作边界:只修改测试环境和当前前端仓库,不修改正式数据库或正式 IIS;核心 DLL 不替换、不反编译发布;B1/TM 不执行任何语义写请求;前端直接交付 `dist`,不生成 zip。
|
||
2. 通过 WinRM 盘点 IIS 和端口。确认元利后端站点 `元利流体MES_Manage` 正常运行并绑定 10100/10101;服务器此前没有 `10012` 监听、IIS 绑定或元利前端站点,因此将 `10012` 定义为新测试前端站点。
|
||
3. 检查服务器磁盘和备份。C 盘约有 14.45 GB 可用空间,完整备份 `C:\YL_MESDB_202607240000.bak` 存在,大小 1,278,302,720 字节,具备隔离恢复条件。
|
||
4. 审查 B1/TM 前端封装。确认 `getB1/gettm`、`postB1/posttm`、`patchB1/patchtm` 在代理传输层都使用 HTTP POST,但真正操作类型由请求体 `func` 的 `GET/POST/PATCH` 决定,因此写保护必须按语义方法和 `func` 判断,不能简单封禁代理层 HTTP POST。
|
||
5. 修改 `src/api/b1s.js` 和 `src/api/tm.js`。当运行配置 `externalReadOnly === true` 时,语义 POST/PATCH 在调用 Axios 前立即返回 `{success:false, blocked:true}` 并显示警告;GET 保持可用。
|
||
6. 审查登录页面和测试登录过程。发现前端会把密码写入 7 天 Cookie,测试过程使用 `SELECT *` 返回视图中的明文 `password` 列。
|
||
7. 修改 `src/views/login/index.vue`,将“记住密码”调整为“记住账号”:不再写入密码 Cookie,读取时密码始终为空,并删除浏览器内遗留的 `password` Cookie。
|
||
8. 新增测试登录安全部署脚本 `db_backups/secure_test_login_response_20260725.sql` 和回滚脚本。部署前动态备份原过程为 `菜单模块系统_用户名密码_查询数据_安全修复前_20260725`,当前过程仍使用密码过滤,但只显式返回业务需要的 10 个非密码字段。
|
||
9. 部署并验证登录安全修复。数据库直接执行使用测试 MES 账号可返回 1 行,列中无 `password`;通过公网 `10101` 实际调用返回 HTTP 200、账号匹配且响应不含密码属性。
|
||
10. 修改正式源运行配置模板,新增 `externalReadOnly:false`;测试 `dist/static/config.js` 指向测试 MES `124.220.15.242:10101`,B1/TM 指向 VPN 可达的现场代理 `192.168.2.92:9996`,并启用 `externalReadOnly:true`。
|
||
11. 执行 `npm run build`。Webpack 构建成功,用时约 54 秒,入口更新为 `app.83b8251a.js`;仅出现既有大字体/大包和 Browserslist 数据过期警告,没有构建错误。构建后重新注入测试运行配置,没有生成发布压缩包。
|
||
12. 对外部系统保护做隔离单测:使用 Axios 网络桩分别调用 B1/TM 的 POST、PATCH 和 GET。4 个写入口全部返回 `blocked=true`,写入口产生的网络请求为 0;两个 GET 正常调用代理且请求体语义方法均为 `GET`。
|
||
13. 验证现场代理网络。管理机到 `192.168.2.92:9996` 可达;实际执行 B1 `ProductionOrders` 最小语义 GET,返回 HTTP 200、约 252 ms、包含 `value` 集合且无 B1 错误。TM 源码中只有库存任务 POST,没有可确认无副作用的登录/GET 端点,因此只验证端口,没有调用 TM 库存业务接口。
|
||
14. 读取备份头和文件列表。备份数据库名为 `YL_MESDB`,备份开始/完成时间为 2026-07-24 14:40:45/14:40:52,逻辑文件为 `YL_MESDB` 和 `YL_MESDB_log`。
|
||
15. 首次尝试 `RESTORE VERIFYONLY WITH CHECKSUM` 时 SQL Server 明确返回“备份集不包含校验和信息”,没有继续把该结果当作备份损坏;改用普通 `RESTORE VERIFYONLY` 后约 4.3 秒通过,并把“备份任务未启用 checksum”记录为后续风险。
|
||
16. 使用唯一数据库名 `YL_MESDB_RestoreDrill_20260725` 和 SQL Server 2019 默认 DATA 目录中的唯一 MDF/LDF 文件名执行隔离恢复。恢复前确认数据库和目标文件均不存在;恢复约 9.4 秒后数据库 ONLINE。
|
||
17. 对隔离库执行 `DBCC CHECKDB(..., PHYSICAL_ONLY)`,约 5.9 秒通过。备份内对象统计为 61 表、27 视图、425 过程;当前测试库为 63 表、27 视图、432 过程,差异与 7 月 25 日新增预算表、查询过程和安全备份过程一致。
|
||
18. 演练结束后将隔离库切换为 SINGLE_USER 并通过 SQL Server 正常 DROP。复核数据库不存在、两个演练 MDF/LDF 文件均不存在,C 盘空间恢复到约 14.45 GB。
|
||
19. 将本地 `dist` 直接复制到服务器 staging 目录。传输约 103 秒;本地和远程均为 84 个文件、95,691,424 字节,`index.html` 与 `config.js` SHA-256 完全一致。校验通过后移动到 `C:\ProjectShow\元利流体\MES_Manage_View\dist`。
|
||
20. 创建独立 IIS 应用池和站点 `元利流体MES_View`。第一次调用因服务器旧版 `New-Website` 不支持 `-Protocol` 参数而未创建站点;核对确认只留下应用池和防火墙规则后,改用兼容参数并启用遇错即停,成功绑定 `*:10012:`。
|
||
21. 验证测试前端。服务器本机和当前管理端访问 `http://124.220.15.242:10012/` 均返回 HTTP 200,首页加载 `app.83b8251a.js`;`static/config.js` 返回 200 且包含 `externalReadOnly:true`。站点目录浏览为 False,端口监听正常。
|
||
22. 创建 `MES Test Frontend 10012` 入站规则。当前测试前端允许任意来源访问;WinRM 5986 和 IIS Management 8172 仍只允许既定管理端公网 IP,不改变原受限范围。
|
||
23. 通过角色 1 调用菜单接口,返回 HTTP 200 和 84 条菜单,包含工艺、计划、生产、质量、设备、异常等模块。
|
||
24. 执行 9 个核心模块只读全链路冒烟:系统 135 行/385 ms、工艺合法 JSON/113 ms、计划 9878 行/2619 ms、生产 4 行/128 ms、质量 0 行/200 ms、设备 21 行/140 ms、异常合法 JSON/117 ms、销售 200 行/430 ms、首页看板 25 行/1099 ms。全部为 HTTP 200 和合法 JSON,没有执行 MES 写过程。
|
||
25. 检查后端目录浏览的实际有效配置,发现根 `web.config` 和 `submit/web.config` 均显式设置为 True,IIS 有效值也为 True。先在服务器同目录保留 `web.config.directorybrowse_before_20260725.bak`,再通过 IIS 配置接口把两层均改为 False。
|
||
26. 安全变更回归:访问 `/submit/` 返回 HTTP 403,登录接口继续返回 200 且无密码属性,测试前端继续返回 200。
|
||
27. 扫描当前仓库的已知明文口令特征,发现执行日志中的历史口令特征文字和脱敏后端快照两个注释仍包含口令。将其替换为 `[已脱敏]` 后再次扫描,匹配文件数为 0;未修改服务器运行时连接配置。
|
||
28. 更新 `doc/MES测试环境接管基线_20260725.md` 到 V1.3,记录 10012 部署、B1/TM 只读边界、恢复演练、安全整改、模块冒烟结果、当前能力和生产接管前剩余风险。
|
||
29. 执行最终一致性检查:`git diff --check` 无格式错误;IIS 站点 Started、绑定和物理目录正确;10012 监听且首页 200;后端根目录和 submit 目录浏览均 False;登录过程备份存在、当前登录返回 1 行且无密码列;恢复演练库不存在;测试配置和构建产物中的只读保护存在。
|
||
|
||
### 变更文件与环境
|
||
|
||
- `src/api/b1s.js`
|
||
- `src/api/tm.js`
|
||
- `src/views/login/index.vue`
|
||
- `static/config.js`
|
||
- `dist/static/config.js` 及重新构建后的 `dist`
|
||
- `db_backups/secure_test_login_response_20260725.sql`
|
||
- `db_backups/rollback_secure_test_login_response_20260725.sql`
|
||
- `doc/MES测试环境接管基线_20260725.md`
|
||
- `server_baseline/MES_ManageV20250916_20260725/submit/excel.ashx.exclude`
|
||
- `server_baseline/MES_ManageV20250916_20260725/submit/excel(1).ashx.exclude`
|
||
- `gptlog-process/gpdlog.md`
|
||
- 测试服务器 IIS 新站点 `元利流体MES_View`、应用池、10012 防火墙规则和后端目录浏览配置
|
||
- 测试数据库登录过程安全修复及其回滚备份
|
||
|
||
### 结论
|
||
|
||
- 测试环境已经从“有条件接管”推进为可用于生产接管演练的受控环境:前端、IIS、MES 接口、数据库变更与恢复、日志/配置检查、只读模块回归均可由当前管理链路执行。
|
||
- 当前可以开展前端发布和回归、MES 接口/存储过程诊断、带回滚的测试数据库变更、性能分析、装配任务功能维护、B1 GET 联调、备份恢复演练以及 IIS/部署/日志巡检。
|
||
- 测试前端已真实落地 `10012`,本次直接复制 `dist`,没有生成 zip。
|
||
- B1/TM 写保护已经在测试前端生效并通过零网络调用验证;B1 GET 实际联调通过,TM 因没有安全 GET 入口只完成连通性验证。
|
||
- 登录响应密码泄露、浏览器明文密码 Cookie、IIS 目录浏览和仓库历史口令残留均已整改,并保留数据库/IIS 配置回滚依据。
|
||
- 生产接管前仍需重点解决:受信任 HTTPS 证书、10012 的 HTTPS 和访问范围、高权限后端数据库账号降权及完整 MES 写流程回归。核心 DLL 原始源码按用户当前约定不作为日常接管阻断项,但未来需要修改核心逻辑时仍是技术限制。
|
||
|
||
## 2026-07-25 生成 MES 测试环境接管 Word 报告
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求在测试环境完成接管后生成一份接管 Word 文档。
|
||
|
||
### 执行过程
|
||
|
||
1. 确定文档口径以 `doc/MES测试环境接管基线_20260725.md` V1.3 和本轮实际验证结果为准,不重新引入未经验证的结论。
|
||
2. 规划正式接管报告结构:封面、文档控制、审批与分发、自动目录、接管结论、范围与边界、环境资产、系统架构、已完成工作、验证与恢复演练、当前能力、日常运维流程、生产接管准备、风险整改、回滚依据、签字页及交付物附录。
|
||
3. 检查本机文档生成能力。当前没有 Python、Microsoft Word、LibreOffice 或 Pandoc 命令行组件;项目已有 `JSZip` 依赖,可直接生成标准 WordprocessingML 文档,因此没有安装新依赖,也没有修改 `package.json`。
|
||
4. 新增可重复生成脚本 `work/generate-mes-takeover-report.js`。脚本使用标准 DOCX ZIP 结构生成内容类型、包关系、主文档、样式、设置、页眉、页脚、核心属性和扩展属性等部件。
|
||
5. 文档统一采用 A4 页面、中文字体、分级标题、彩色状态提示、带状表格、页眉页脚和页码字段;目录使用 Word TOC 字段并设置打开文档后自动更新。
|
||
6. 报告写入实际接管数据:测试前端 `10012`、MES 接口 `10101`、测试数据库、B1/TM 只读边界、9 个模块只读冒烟结果、数据库备份恢复耗时、安全整改、当前可开展工作及生产接管前剩余风险。
|
||
7. 报告明确区分“测试环境受控接管通过”和“生产环境尚未授权”,没有把测试接管结论扩大为生产接管完成。
|
||
8. 报告未写入任何账号、密码、Token 或生产业务明细;账号地址仅保留必要的服务地址、端口和部署目录。
|
||
9. 生成文件 `doc/大连元利流体技术有限公司MES测试环境接管报告_V1.0_2026-07-25.docx`,文件大小 19,262 字节。
|
||
10. 使用 .NET ZIP 读取器执行结构验收:DOCX 共 14 个 ZIP 条目,10 个 XML/关系文件,必需部件缺失数为 0,XML 解析错误数为 0。
|
||
11. 统计主文档包含 454 个段落、24 个表格、34 个标题段落;确认包含“总体判定:受控接管完成”“核心模块只读冒烟”“验收与签字”等关键章节。
|
||
12. 对 DOCX 主文档执行已知口令检查,结果不包含已知口令;文件 SHA-256 为 `76EBA951849F27C93A632984D68A4A24AEECFF27F4462CF95CBEA2CF458BD94B`。
|
||
13. 由于当前机器没有 Word 或 LibreOffice,无法执行像素级页面渲染预览;已完成 DOCX 包结构、XML 语法、章节内容、表格数量和敏感信息检查。
|
||
|
||
### 变更文件
|
||
|
||
- `work/generate-mes-takeover-report.js`
|
||
- `doc/大连元利流体技术有限公司MES测试环境接管报告_V1.0_2026-07-25.docx`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- MES 测试环境接管 Word 报告已经生成并通过结构与内容完整性检查。
|
||
- 报告可以直接用于测试环境接管确认、内部评审和生产环境接管准备;签字页已预留业务、MES 运维、信息安全和生产环境负责人栏位。
|
||
- 生成脚本已保留,后续接管状态变化时可以更新内容并重新生成版本。
|
||
|
||
## 2026-07-25 修复接管 Word 报告显示原始 XML
|
||
|
||
### 用户提问
|
||
|
||
- 用户反馈接管 Word 文档中出现 `<w:r>...</w:r>` 等原始 XML 内容,要求修改乱码问题。
|
||
|
||
### 执行过程
|
||
|
||
1. 根据用户提供的内容判断问题不是中文字符编码,而是 WordprocessingML 富文本片段被再次按普通文字转义,导致 XML 标签在 Word 中可见。
|
||
2. 检查生成脚本,定位 8 处 `paragraph(run(...))` 调用。`run()` 已经返回 `<w:r>` XML,但 `paragraph()` 对字符串参数再次执行 `run()` 和 XML 转义,因此产生可见的原始标签。
|
||
3. 尝试读取原 V1.0 DOCX 进行内部统计时发现该文件正被 Word 占用,无法安全原地覆盖;为避免影响用户当前打开的文件,决定生成 V1.1 替代版本。
|
||
4. 将 8 处调用改为 `paragraph([run(...)])`,明确把已生成的 Run XML 作为结构节点传入,避免二次转义。修复范围包括状态提示框和系统架构调用链。
|
||
5. 将输出文件版本调整为 V1.1,并同步修改封面版本、文档变更记录和附录中的接管报告路径。V1.1 变更记录明确说明修复富文本 XML 被显示为普通文字的问题。
|
||
6. 执行 Node.js 语法检查并重新生成 `doc/大连元利流体技术有限公司MES测试环境接管报告_V1.1_2026-07-25.docx`。
|
||
7. 对 V1.1 DOCX 再次执行结构与显示内容专项检查:必需部件缺失数 0、XML 解析错误数 0、主文档中被转义的 `<w:` 数量 0、可见文本中的原始 `<w:` 标签数量 0。
|
||
8. 核对架构文字“浏览器 / Vue 前端”和状态提示“总体判定:受控接管完成”均在可见文本中正常出现 1 次,证明相关内容没有被删除或重复。
|
||
9. 再次检查文档可见文本,不包含已知口令。V1.1 文件大小 18,790 字节,SHA-256 为 `EACEEA483972FA38A2C34F1DC5F61CCC8184D302F53D148FFCFE370C6375C23E`。
|
||
|
||
### 变更文件
|
||
|
||
- `work/generate-mes-takeover-report.js`
|
||
- `doc/大连元利流体技术有限公司MES测试环境接管报告_V1.1_2026-07-25.docx`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- Word 文档显示原始 XML 的问题已经修复,V1.1 中不存在被转义或可见的 Word XML 标签。
|
||
- 原 V1.0 因被 Word 占用没有原地覆盖;V1.1 是当前有效版本,应使用 V1.1 进行查看、评审和签字。
|
||
|
||
## 2026-07-25 说明当前测试环境接管能力
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问当前已接管的测试环境能够开展哪些工作。
|
||
|
||
### 执行过程
|
||
|
||
1. 根据已完成的测试前端 10012 部署、MES 10101 接口验证、测试数据库变更与恢复演练、B1/TM 只读保护、安全整改和九模块只读冒烟结果整理能力边界。
|
||
2. 将能力划分为三类:当前可直接开展的日常工作、需要明确审批和测试数据后开展的受控工作、当前明确禁止或暂不具备条件的工作。
|
||
3. 明确测试环境可承担前端发布、接口诊断、数据库脚本变更、性能优化、装配任务功能维护、B1 GET 联调、备份恢复演练、IIS/日志巡检和生产接管演练。
|
||
4. 明确 MES 业务写流程虽然可以在测试库内受控验证,但必须先准备隔离测试数据、预期结果和回滚脚本,不能直接使用真实业务数据试写。
|
||
5. 明确 B1/TM 的语义 POST/PATCH 仍然禁止,测试前端会在请求发出前拦截;TM 当前没有已确认安全的 GET 验收端点。
|
||
6. 明确当前不能修改核心后端 DLL 逻辑,因为没有权威原始源码;现阶段只能维护现有 IIS 发布物、配置、日志、内联处理器和数据库逻辑。
|
||
7. 明确测试环境接管不等同于生产环境接管,生产环境操作仍需要单独授权、备份、变更窗口和业务验收。
|
||
|
||
### 结论
|
||
|
||
- 当前测试环境可以作为日常开发验证、故障诊断、受控数据库变更和生产接管演练环境使用。
|
||
- 最成熟的能力是前端发布、MES 查询链路、装配任务功能、数据库诊断/恢复和 IIS 运维;外部系统写入、完整 MES 写流程和核心 DLL 修改仍有明确限制。
|
||
|
||
## 2026-07-25 全量扫描前端功能、数据库存储过程并生成后台网页版用户手册
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求扫描代码中的全部功能和数据库存储过程,研究清楚各功能的页面、接口、过程和问题定位位置,以便后续可以直接定位修改并减少对既有功能的影响。
|
||
- 用户要求先编写一份后台网页版用户操作手册。
|
||
|
||
### 执行过程
|
||
|
||
1. 以当前工作区前端源码和测试数据库 `YL_MESDB` 为范围,采用只读方式盘点,没有执行业务写入、DDL 或生产环境操作;日志中不记录数据库密码、应用密码或 Token。
|
||
2. 扫描 `src` 下 `.vue` 和 `.js` 文件,统计前端源码 185 个,其中 Vue 108 个、JS 77 个;识别 `CreateData` 调用 772 次,字面量调用 766 次,唯一字面量过程名 281 个,动态调用 6 次。
|
||
3. 统计外部系统封装调用:B1 GET/POST/PATCH 为 18/20/18,TM GET/POST/PATCH 为 1/7/1。该统计只描述源码调用,不代表测试环境允许对 B1/TM 执行写请求。
|
||
4. 从测试数据库角色 1 的菜单过程导出 84 条菜单记录,包括 9 个一级模块和 75 个可进入页面;将每个菜单组件映射到实际源码,75 个页面全部找到对应源文件,未发现菜单页面源码缺失。
|
||
5. 生成页面级清单,记录每页的模块、标题、路由组件、按钮、标签页、表格字段、方法、CreateData 过程以及 B1/TM 调用计数,输出 `work/page_ui_inventory_role1_20260725.csv`。
|
||
6. 查询测试库系统目录,得到 432 个存储过程、63 张表、27 个视图;导出 2015 条过程参数、834 条表字段、691 条视图字段。
|
||
7. 首次查询 `sys.sql_expression_dependencies` 时误用了当前 SQL Server 不存在的 `referenced_minor_name` 字段,查询失败;随后按实际目录字段修正,成功导出 836 条表达式依赖,其中跨服务器依赖 75 条、跨库依赖 106 条。该修正没有修改数据库对象。
|
||
8. 按过程定义关键字做风险初筛:187 个过程包含 INSERT/UPDATE/DELETE/MERGE 等明显写入关键字,7 个过程明确涉及 OPENQUERY、SAP 链接服务器或现场 SAP 交货表引用。关键字和静态依赖均属于风险提示,不能替代业务验收。
|
||
9. 对比前端静态过程名与数据库对象名。发现 14 个前端调用在测试库找不到同名过程;同时发现 `Processdel` 与数据库 `ProcessDel` 仅大小写不同,在 SQL Server 默认大小写不敏感规则下属于同一对象。比较脚本已改为大小写不敏感,避免误报;最终缺失清单为 14 个,静态未被前端直接调用的数据库过程为 165 个。后者可能由事件、定时任务、接口内部调用、其他客户端或历史功能使用,不能直接判定为废弃。
|
||
10. 在生成手册过程中发现 CSV 页面文本可能包含带引号换行,原先按行解析会造成过程统计偏差;已将 `work/generate-mes-user-manual.js` 改为按 CSV 引号规则逐字符解析,并新增 `work/compare-frontend-db-procedures.js` 统一生成前端缺失过程和静态未引用过程清单。
|
||
11. 生成后台网页版用户操作手册 Markdown 和 DOCX,内容覆盖登录和通用操作、9 个功能模块、75 个页面、页面到过程映射、关键业务流程、权限和安全边界、问题定位路径、新需求修改顺序、全量扫描统计、14 个缺失过程和交付清单。
|
||
12. 生成全量映射文档 `doc/MES后台网页版功能与存储过程全量盘点_20260725.md`,并保留菜单、页面、前端过程、数据库过程、参数、表字段、视图字段、表达式依赖等 CSV 原始清单,便于后续按页面或过程直接定位。
|
||
13. 对用户手册 DOCX 做结构验收:ZIP 条目 13 个、XML 部件 7 个、XML 解析错误 0 个、被转义的 `<w:` 原始标签 0 个、未出现 `undefined`、标题存在、未包含已知密码。当前环境没有 Word 或 LibreOffice,未执行像素级渲染预览。
|
||
14. 对扫描脚本、比较脚本和手册生成脚本执行 Node.js 语法检查;执行 `git diff --check`,仅发现现有文件的 LF/CRLF 提示,没有新增空白错误。
|
||
|
||
### 变更文件
|
||
|
||
- `work/scan-frontend-function-inventory.js`
|
||
- `work/scan-page-ui-inventory.js`
|
||
- `work/compare-frontend-db-procedures.js`
|
||
- `work/generate-mes-user-manual.js`
|
||
- `work/menu_inventory_role1.csv`
|
||
- `work/page_ui_inventory_role1_20260725.csv`
|
||
- `work/frontend_procedure_call_inventory_20260725.csv`
|
||
- `work/frontend_function_scan_summary_20260725.json`
|
||
- `work/database_procedure_inventory_20260725.csv`
|
||
- `work/database_procedure_parameters_20260725.csv`
|
||
- `work/database_table_columns_20260725.csv`
|
||
- `work/database_view_columns_20260725.csv`
|
||
- `work/database_expression_dependencies_20260725.csv`
|
||
- `work/frontend_calls_missing_db_procedure_20260725.csv`
|
||
- `work/database_procedures_unused_by_static_frontend_20260725.csv`
|
||
- `doc/MES后台网页版用户操作手册_V1.0_20260725.md`
|
||
- `doc/MES后台网页版用户操作手册_V1.0_20260725.docx`
|
||
- `doc/MES后台网页版功能与存储过程全量盘点_20260725.md`
|
||
- `gptlog-process/gpdlog.md`
|
||
|
||
### 结论
|
||
|
||
- 已完成当前测试环境前端菜单、页面、功能调用和数据库过程、参数、表、视图、表达式依赖的静态全量盘点,不再只是接管少量页面功能。
|
||
- 75 个菜单页面全部映射到源码;后续页面问题可以按菜单组件、源码文件、CreateData 过程和数据库参数清单逐层定位。
|
||
- 后台网页版用户手册已经生成,适合作为测试环境操作和后续需求定位的 V1.0 基线;写入流程、外部 SAP/B1/TM 联调和 14 个缺失过程仍需隔离数据和业务验收,不能仅凭静态扫描视为已完成。
|
||
|
||
## 2026-07-25 整理今日工作和明日计划
|
||
|
||
### 用户提问
|
||
|
||
- 用户提供了原定的 8 项工作安排,并说明其中第 1、2、3 项未开展。
|
||
- 用户补充今日实际完成了“系统类和阀类装配任务页面查询优化”和“系统类和阀类装配任务页面数据错误修正”。
|
||
- 用户要求按照原有的编号和时间段格式,生成今日工作和明日计划;明日继续调试测试环境 GPT 接管 MES 项目,并开展生产动态页面操作手册相关工作。
|
||
|
||
### 执行过程
|
||
|
||
1. 核对用户给出的原计划,确认网页版动态系统用户手册分析、基础框架搭建以及搜索、截图和动态加载开发三项工作未开展,因此不将其写入今日已完成工作。
|
||
2. 保留今日实际开展的 GPT 接管 MES 程序范围、权限、代码分析、功能修改、测试验证及日志记录相关内容。
|
||
3. 保留系统类和阀类装配任务预估进度的数据分析、功能开发与联调内容。
|
||
4. 将用户补充的两项实际工作分别整理为装配任务页面查询优化和页面数据错误修正,并纳入今日工作。
|
||
5. 按 08:30 至 18:00 的 8 个时间段重新组织今日工作,确保每项内容为已完成或已开展事项。
|
||
6. 将明日计划拆分为两条主线:上午继续调试和验证测试环境 GPT 接管 MES 项目;下午推进生产动态页面操作手册的范围梳理、框架搭建、内容完善和页面测试。
|
||
7. 统一修正表述为“GPT 接管 MES 项目”和“生产动态页面操作手册”,使任务名称清晰、正式且便于日报使用。
|
||
|
||
### 结论
|
||
|
||
- 已按指定的编号、时间段和任务描述格式生成今日工作与明日计划。
|
||
- 今日工作未包含明确未开展的原计划第 1、2、3 项,并补充了装配任务页面查询优化及数据错误修正两项实际工作。
|
||
- 明日计划重点为测试环境 GPT 接管 MES 项目调试,以及生产动态页面操作手册的分析、搭建、内容整理和测试。
|
||
|
||
## 2026-07-27 修改设计工时任务报表字段配置
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求根据 `doc/设计工时任务报表字段配置修改.docx` 修改设计工时任务报表页面。
|
||
- 用户提供了测试数据库连接地址、账号和口令,用于核对并更新报表存储过程;口令不在本日志中记录。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查项目目录、文档和源码,确认目标页面为 `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`。
|
||
2. 解压读取设计文档内容,确认要求为:保留第一列,后续依次显示“设计要求、进度说明、异常说明、奇思妙想、工时、开始时间、结束时间”,其余字段放在后面;导出列顺序同步;行高和列宽参考设计任务页面;筛选条件增加任务描述模糊搜索。
|
||
3. 检查现有页面和任务页面,确认现有报表缺少设计要求、异常说明、奇思妙想列,筛选条件缺少任务描述,导出顺序也未按文档配置。
|
||
4. 只读查询测试数据库中的两个报表存储过程、参数及相关表结构,确认任务表存在设计要求字段,任务说明表提供异常说明和奇思妙想历史,两个报表过程均带有当前操作人和角色权限过滤。
|
||
5. 修改报表页面:新增任务描述模糊筛选输入及参数;在作业者工时和任务工时两个表格中按文档重新排列字段;补充设计要求、异常说明、奇思妙想、任务描述列;同步调整导出对象和 Excel 列宽;增加与设计任务页面一致的表头、行高、单元格字体和内边距样式。
|
||
6. 新增数据库脚本 `db_backups/update_design_report_hours_report_fields_20260727.sql`,为两个报表存储过程增加 `@任务描述` 参数,并通过任务说明表汇总异常说明和奇思妙想,同时返回设计要求等新增字段。
|
||
7. 使用 SQLCMD 以 UTF-8 编码执行数据库脚本,确认两个存储过程均已更新为 10 个参数,并检查首个结果集包含设计要求、进度说明、异常说明、奇思妙想等字段。
|
||
8. 使用实际任务描述进行模糊搜索验证,确认报表过程可以命中任务并返回新增字段;使用 ESLint 检查目标 Vue 文件,检查通过。完整项目构建在限定时间内未完成,执行超时且未产生编译错误输出。
|
||
|
||
### 结论
|
||
|
||
- 已完成设计工时任务报表页面和对应数据库报表过程的字段配置修改。
|
||
- 页面列顺序和 Excel 导出顺序均为第一列后依次显示设计要求、进度说明、异常说明、奇思妙想、工时、开始时间、结束时间,再显示其他字段。
|
||
- 任务描述筛选已接入两个报表存储过程并验证模糊查询有效;目标页面 ESLint 检查通过。
|
||
- 启动本地 HTTPS 开发服务后,Webpack 增量编译最终成功,访问地址为 `https://127.0.0.1:1998`(端口 1997 已被其他进程占用)。
|
||
|
||
## 2026-07-27 修复主页大图标点击进入 404
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求根据 `doc/主页大图标点击后进入404.docx` 文档修复主页大图标点击后进入 404 页面的问题。
|
||
|
||
### 执行过程
|
||
|
||
1. 读取文档和截图,确认问题发生在 `https://127.0.0.1:1997/#/dashboard` 的研发管理大图标。
|
||
2. 检查主页 `src/views/dashboard/index.vue`、动态路由 `src/router/getTreeData.js` 和权限路由初始化逻辑,确认主页图标使用了菜单记录的 `componet` 字段作为 URL。
|
||
3. 只读查询测试数据库菜单数据,确认研发管理父菜单路径为 `/ResearchManagement`,子菜单 `path` 为 `DesignReportTask/Task/index`,但 `componet` 为 `/ProductionManagement/DesignReportTask/Task/index`。其中 `componet` 是 Vue 组件文件位置,不是研发管理模块的浏览器路由,因此直接用于主页跳转会命中 404。
|
||
4. 修改主页模块加载顺序,等待一级菜单加载完成后再加载二级菜单,避免父菜单路径尚未加载时生成错误链接。
|
||
5. 修改二级菜单链接生成逻辑,使用父菜单 `path` 和子菜单 `path` 拼接浏览器路由;保留 `componet` 作为组件路径,仅在缺少菜单路径时作为兼容回退。
|
||
6. 使用 Vue 模板编译器检查主页模板,检查通过;开发服务热更新重新编译成功。对主页执行 ESLint 时发现文件原有格式、未定义变量等问题,本次修改未新增相关错误。
|
||
|
||
### 结论
|
||
|
||
- 已修复主页研发管理大图标跳转 404 的问题,设计任务、设计报工、设计工时校验、设计工时报表和研发财务工时将跳转到 `/ResearchManagement/DesignReportTask/...` 路由。
|
||
- 组件实际加载路径保持不变,不需要移动 `src/views/ProductionManagement/DesignReportTask` 目录。
|
||
- 本地开发服务仍运行于 `https://127.0.0.1:1998`。
|
||
|
||
## 2026-07-27 设计工时报表三行省略与完整内容提示
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求将 `https://127.0.0.1:1998/#/ResearchManagement/DesignReportTask/HoursReport/index` 页面改为文本超过三行后省略,鼠标移入显示完整内容,浮层最大宽度为 500px。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查设计工时报表页面,确认作业者工时和任务工时两个表格均使用固定行高,但未启用三行截断与完整内容浮层。
|
||
2. 检查设计任务页面已有的 `threeLineTableTooltip` 混入逻辑,复用其溢出判断、鼠标移入显示、移出延迟隐藏和浮层位置计算方式。
|
||
3. 在设计工时报表的两个表格上增加三行单元格样式和鼠标进入、离开事件;为内容高度超过三行的单元格显示完整文本浮层。
|
||
4. 在报表页面设置浮层最大宽度为 500px,并在小屏幕下按可视区域收缩;扩展混入逻辑,允许页面通过 `threeLineTooltipMaxWidth` 配置定位宽度,同时保持其他页面默认的 600px 行为不变。
|
||
5. 使用 ESLint 检查报表页面及混入文件,检查通过;使用 Vue 模板编译器检查报表页面,检查通过;本地开发服务热更新编译成功。
|
||
|
||
### 结论
|
||
|
||
- 设计工时报表的两个页签现在均在单元格内容超过三行时显示省略效果,鼠标移入后可查看完整内容。
|
||
- 完整内容浮层最大宽度为 500px,窄屏时不会超出可视区域。
|
||
|
||
## 2026-07-27 补齐主页仪表盘菜单图标
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求修改 `https://127.0.0.1:1998/#/dashboard` 页面,补齐所有没有图标的连接。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查主页仪表盘 `src/views/dashboard/index.vue`,确认二级菜单直接读取数据库的 `icon` 字段渲染 SVG;字段为空时卡片没有图标。
|
||
2. 只读查询测试数据库全部启用的二级菜单,确认共有 24 个菜单项未配置图标:报工操作记录、不合格品处置、采购图纸查询、测试装配任务、阀类装配任务、工时查询、工时修正、工位任务汇总、机加及时开工、机加正在进行中、加急任务列表、设备历史数据、生产订单关闭、实时数据、外协报表、外协及时开工、物料机器人、系统类装配任务、质检报工、质检明细、装配及时送检、装配未排产、装配已排产和装配状态。
|
||
3. 在主页增加菜单名称到已有本地 SVG 图标的兜底映射;已配置图标仍按数据库配置显示。对后续新增但尚未映射的空图标菜单,使用 `DocumentImport` 通用图标,确保不会再次出现无图标链接。
|
||
4. 校验 19 个引用的 SVG 资源均存在;使用 Vue 模板编译器检查页面模板通过;本地 HTTPS 开发服务热更新后 Webpack 编译成功。
|
||
|
||
### 结论
|
||
|
||
- 主页仪表盘中所有当前未配置图标的启用菜单均已显示图标,且不修改数据库已有菜单配置。
|
||
- 本地开发服务仍运行于 `https://127.0.0.1:1998`。
|
||
|
||
## 2026-07-27 统一主页指定菜单图标颜色
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求将主页的研发财务工时、质检报工、工时修正、生产订单关闭、装配未排产和装配已排产图标补齐并统一为蓝色。
|
||
|
||
### 执行过程
|
||
|
||
1. 只读查询测试数据库菜单配置,确认研发财务工时使用 `WhiteCollarBonusesSummary` 图标,其余五项菜单未配置图标,主页已通过上一轮的兜底映射分别使用 `QualityInspectionQuery`、`TimeFreezeSetUp`、`OrderRelease` 和 `AssemblyPlan` 图标。
|
||
2. 检查 SVG 源码,确认这 5 个图标的路径填充色被写死为深灰、浅灰或白色;其中质检和装配图标在白色卡片背景上会接近不可见,且固定颜色不会继承主页的蓝色样式。
|
||
3. 将上述 5 个 SVG 图标的固定 `fill` 属性统一替换为 `currentColor`。主页图标容器现有颜色为 `rgb(37, 89, 164)`,图标因此统一继承该蓝色。
|
||
4. 校验全部 5 个图标均已使用 `currentColor` 且不再包含固定十六进制填充色;Vue 模板编译通过;本地 HTTPS 开发服务热更新后 Webpack 编译成功。
|
||
|
||
### 结论
|
||
|
||
- 指定的 6 个主页菜单图标均可正常显示,并统一为主页蓝色。
|
||
- 本地开发服务仍运行于 `https://127.0.0.1:1998`。
|
||
|
||
## 2026-07-27 补齐左侧二级菜单图标
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求将左侧菜单栏二级菜单缺少的图标,按照主页大图标的对应关系补齐。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查左侧菜单组件,确认 `src/views/layout/components/Sidebar/SidebarItem.vue` 直接使用动态路由的 `meta.icon` 渲染;数据库图标字段为空时,二级菜单不会显示图标。
|
||
2. 确认主页仪表盘已有同类缺失菜单的图标兜底映射,但该映射仅存在于仪表盘页面,因此左侧菜单无法复用。
|
||
3. 新增共享工具 `src/utils/menuIcon.js`,集中维护 24 个缺失菜单的图标映射和通用 `DocumentImport` 回退图标。
|
||
4. 仪表盘改为调用共享工具,确保既有大图标显示逻辑不变;左侧菜单的一级、二级和递归子菜单均接入共享工具。菜单优先使用自身数据库图标,缺失时使用与主页相同的对应图标,再回退到父级或通用图标。
|
||
5. 使用 Vue 模板编译器检查仪表盘和侧栏模板通过,核对 24 个缺失菜单映射完整,本地 HTTPS 开发服务热更新后 Webpack 编译成功。
|
||
|
||
### 结论
|
||
|
||
- 左侧菜单栏的二级菜单以及递归子菜单,已与主页大图标使用同一套图标补齐规则。
|
||
- 后续新增且未配置图标的菜单也会显示通用图标,不会留空。
|
||
- 本地开发服务仍运行于 `https://127.0.0.1:1998`。
|
||
|
||
## 2026-07-27 说明 externalReadOnly 配置作用
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问 `config.js` 中 `externalReadOnly` 配置的作用。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查 `static/config.js`,确认该配置位于运行时全局对象 `window.dt_Config`,当前源码默认值为 `false`。
|
||
2. 检查 `src/api/b1s.js` 和 `src/api/tm.js`,确认两个模块在语义 `POST` 和 `PATCH` 调用前检查 `externalReadOnly === true`。
|
||
3. 确认开关为 `true` 时,前端不会发送 B1/TM 写请求,而是弹出“测试环境外部系统只读保护”提示并返回 `{ success: false, blocked: true }`;语义 `GET` 保持可用。虽然 GET 经过代理时使用 HTTP POST 传输,但实际判定依据是请求体的 `func` 字段。
|
||
4. 确认该开关不拦截 MES 的通用接口请求,也不是数据库只读配置;其目的仅是防止测试环境误写 SAP B1 和 TM 等外部系统。
|
||
|
||
### 结论
|
||
|
||
- 测试环境应设为 `externalReadOnly: true`,正式或需要联调写入时才设为 `false`。
|
||
- 当前源码 `static/config.js` 设置为 `false`,B1/TM 的 POST、PATCH 不会被前端拦截。
|
||
|
||
## 2026-07-27 说明测试环境启动方式
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问测试环境当前如何启动。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查 `package.json`,确认本地开发命令为 `npm run dev`,生产构建命令为 `npm run build`。
|
||
2. 检查 `dist/static/config.js`,确认当前部署产物配置为测试环境:MES 指向 `https://124.220.15.242:10101`,B1/TM 指向现场代理,并设置 `externalReadOnly: true`。
|
||
3. 检查测试环境接管文档,确认 IIS 测试站点绑定端口为 `10012`,地址为 `http://124.220.15.242:10012/`;构建脚本会删除 `dist/static/config.js`,部署前必须重新注入对应环境配置。
|
||
4. 只读访问测试站点及其运行配置,二者均返回 HTTP 200;运行配置已确认启用外部系统只读保护。
|
||
|
||
### 结论
|
||
|
||
- 当前测试环境已在 IIS 中运行,可直接访问 `http://124.220.15.242:10012/`,不需要在本机再次启动开发服务。
|
||
- 本地以测试配置调试时,必须先将 `static/config.js` 切换为测试端点并设置 `externalReadOnly: true`,然后执行 `npm run dev`;不能直接使用当前指向正式环境的源码配置。
|
||
- 发布更新时执行 `npm run build`,随后向 `dist/static/config.js` 注入测试运行配置,再部署到 IIS 测试站点。
|
||
|
||
## 2026-07-27 诊断测试环境 SAP 视图无法读取
|
||
|
||
### 用户提问
|
||
|
||
- 用户说明测试环境还需要读取 SAP 数据库视图,但当前无法读取 SAP 视图数据。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查前端和测试环境架构,确认 SAP 数据库视图并非浏览器直接访问;页面请求经 `MESCommonBase.ashx` 调用 MES 数据库存储过程,再由 SQL Server 链接服务器 `[SAP]` 读取 SAP 视图。B1/TM 的 `externalReadOnly` 只阻止语义 POST/PATCH,不会阻止 SAP 视图读取。
|
||
2. 对当前可访问的 `192.168.2.92/YL_MESDB` 执行 `sp_testlinkedserver N'SAP'`,测试通过;链接服务器目标为 `192.168.2.90`。对 `VIEW_Jijiankukc`、`VIEW_OPRJ`、`UBT_OWOR` 和 `UBT_MES_ORDROPEN2` 的最小只读查询均成功返回数据,说明该库的 SAP 链接和这些视图本身可读。
|
||
3. 检查测试环境历史接管记录,确认测试 SQL Server 为 `124.220.15.242:64722`,其装配任务核心过程曾因 SAP 视图 `UBT_MES_ORDROPEN2` 查询超过 39 秒而通过 `test_disable_install_task_sap_delivery_20260725.sql` 临时跳过 SAP 交货日期读取;仓库保留 `rollback_test_disable_install_task_sap_delivery_20260725.sql`,可恢复原有 SAP 查询。
|
||
4. 测试 `124.220.15.242:64722` 的 TCP 连通性,端口可达。仓库不包含该测试 SQL Server 的登录凭据,且用户提供的数据库凭据只明确对应 `192.168.2.92`,因此未擅自使用其他实例凭据或执行恢复脚本。
|
||
|
||
### 结论
|
||
|
||
- 现象不由前端图标、运行配置或 `externalReadOnly` 导致;需要在测试 SQL Server 的 `YL_MESDB` 上核验 `[SAP]` 链接服务器、登录映射和目标视图权限。
|
||
- 若测试库的 SAP 查询已恢复正常,可在测试库执行现有回滚脚本恢复装配任务的 SAP 交货视图读取;若链接仍超时,应先修复测试 SQL Server 到 `192.168.2.90` 的链接服务器网络/认证,再恢复过程,避免页面查询再次超时。
|
||
- 后续处理需要测试 SQL Server `124.220.15.242:64722` 的授权登录信息,或由具备权限的管理员执行链接服务器核验与回滚脚本。
|
||
|
||
## 2026-07-27 说明测试环境只读正式 SAP 视图的可行性
|
||
|
||
### 用户提问
|
||
|
||
- 用户询问是否可以只读取正式库数据、不写入数据。
|
||
|
||
### 执行过程
|
||
|
||
1. 结合已验证的架构确认,SAP 视图由 SQL Server `[SAP]` 链接服务器提供,测试环境可通过该链接读取正式 SAP 的视图数据。
|
||
2. 明确不应将测试前端或测试 MES 通用接口直接改指向正式 MES 数据库;该接口包含写操作,不能仅凭前端约定保证生产库不被写入。
|
||
3. 确定推荐边界:测试 MES 数据库的 `[SAP]` 链接服务器使用仅有目标 SAP 视图 `SELECT` 权限的专用账户;测试存储过程只执行查询;B1/TM 的 `externalReadOnly: true` 继续保留以阻止外部写操作。
|
||
4. 记录风险:当前已提供的 `sa` 是高权限账号,不适合作为测试环境读取正式 SAP 数据的运行身份;应使用最小权限的专用只读账户和链接服务器登录映射。
|
||
|
||
### 结论
|
||
|
||
- 可以只读正式 SAP 视图,推荐由测试库的 `[SAP]` 链接服务器以最小权限账号访问正式 SAP 视图。
|
||
- 完成测试 SQL Server 的链接服务器验证后,可恢复此前暂时跳过的 SAP 查询;整个过程不需要也不应把测试前端改连正式 MES 数据库。
|
||
|
||
## 2026-07-27 调整加工与装配中心报工结束默认日期状态
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求修改加工中心和装配中心在报工结束时的默认状态:周六、周日默认选择“休息日”。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查加工中心和装配中心的报工结束确认弹窗,确认两处的 `selectedOption` 均固定初始化为“工作日”,随后将是否休息日和是否法定休息日参数传给报工结束过程。
|
||
2. 确认加工中心使用 `showOvertimeDialog`,装配中心的报工结束使用 `showSimpleOvertimeDialog`。
|
||
3. 在两个页面分别新增基于 `currentTime` 报工日期的默认状态方法:星期值为 0(周日)或 6(周六)时返回“休息日”,其余日期返回“工作日”。
|
||
4. 弹窗初始化时使用该默认状态并调用既有状态变更方法,使“是否休息日”同步为真、 “是否法定休息日”保持为假;用户仍可在弹窗中手工调整状态。
|
||
5. 用日期样例验证周六、周日返回“休息日”,周一返回“工作日”;加工中心和装配中心 Vue 模板编译通过,逻辑存在性检查通过,本地 HTTPS 开发服务热更新后 Webpack 编译成功。
|
||
|
||
### 结论
|
||
|
||
- 加工中心和装配中心的报工结束确认弹窗,现在在周六、周日默认选择“休息日”。
|
||
- 工作日仍默认“工作日”,法定休息日不自动推断,保留用户手工选择。
|
||
|
||
## 2026-07-27 新增装配任务合同装配与任务质检预算进度
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求在系统类装配任务和阀类装配任务界面新增合同预算装配工时、合同预算装配进度、任务预算质检工时和任务预算质检进度。
|
||
- 合同预算装配进度要求按“合同装配工时 / 合同预算装配工时(手工输入)”计算;任务预算质检进度要求按“任务质检工时 / 任务预算质检工时(手工输入)”计算。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查两个页面和共享查询过程,确认既有功能已经包含任务预算装配工时/进度及合同预算测试工时/进度,可复用其单元格编辑、预算保存和进度计算模式。
|
||
2. 新增数据库迁移脚本 `db_backups/add_install_task_quality_and_contract_assembly_budget_20260727.sql`。任务预算表新增 `任务预算质检工时`,合同预算表新增 `合同预算装配工时`,均为非负手工预算字段并默认 0。
|
||
3. 扩展 `计划排产_装配任务预算_保存` 过程,新增“任务质检”和“合同装配”两种预算类型;按订单号或合同号保存对应预算,并保持原“任务”和“合同”预算类型兼容。
|
||
4. 扩展共享过程 `计划排产_装配任务查询_核心` 的两条结果分支,新增以下计算:`合同装配工时 / 3600 / 合同预算装配工时 * 100` 得到合同预算装配进度;`任务质检工时 / 3600 / 任务预算质检工时 * 100` 得到任务预算质检进度。预算为 0 时进度返回 0。
|
||
5. 迁移脚本部署前自动备份预算保存过程和共享核心过程,部署到 `192.168.2.92/YL_MESDB` 成功。字段、备份过程和公式均已核验;在外层事务中分别保存 12.34 小时任务质检预算、56.78 小时合同装配预算后验证返回成功,随后回滚事务,未留下测试数据。
|
||
6. 在系统类和阀类装配任务页面新增两组可编辑预算工时列和对应只读进度列。保存后按相同订单号或合同号同步当前列表行,并立即按实际工时重新计算进度。
|
||
7. 使用 Vue 模板编译器检查两个页面通过;本地 HTTPS 开发服务热更新后 Webpack 编译成功。确认系统类和阀类入口过程均调用已扩展的共享核心过程。
|
||
|
||
### 结论
|
||
|
||
- 系统类装配任务和阀类装配任务现已支持手工维护合同预算装配工时、任务预算质检工时,并显示对应进度百分比。
|
||
- 所有新预算按小时输入;实际数据库工时以秒保存,计算时已转换为小时。
|
||
|
||
## 2026-07-27 生成当日工作总结与明日计划
|
||
|
||
### 用户提问
|
||
|
||
- 用户提供今日工作内容和明日工作计划,并提供 `张新阳_20260723_工作总结.txt` 作为格式附件,要求按附件格式生成工作总结。
|
||
|
||
### 执行过程
|
||
|
||
1. 读取附件,确认格式为“日期标题、今日完成情况、明日计划”三部分,每部分按 8 个时间段编号描述工作事项。
|
||
2. 将用户提供的主页图标和路由修复、设计工时报表、计划大屏、质检看板、AI说明文档、接口数据HTML展示、设备运行状态说明、装配预算字段、报工默认状态及下班后文档整理工作,归并为 8 个今日工作时间段。
|
||
3. 将八个大屏验收上线、主系统前后端计算逻辑梳理与改造、生产动态页面菜单及业务说明搭建工作,归并为 8 个明日计划时间段。
|
||
4. 创建 `doc/2026年7月27日_工作总结.txt`,并核对 2026 年 7 月 27 日为周一,修正标题日期信息。
|
||
|
||
### 结论
|
||
|
||
- 已按附件格式生成完整的当日工作总结和明日计划,文件位于 `doc/2026年7月27日_工作总结.txt`。
|
||
|
||
## 2026-07-28 排查装配中心任务看板订单7338的单据状态与计划数量
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求检查存储过程 `装配中心任务看板_发货状态查询`:订单编号 `7338` 的单据状态为何为 `null`,以及有订单编号时为什么部分计划数量没有数值。
|
||
- 用户随后提供了 `192.168.2.92` 数据库的授权登录信息,用于执行只读核验。
|
||
|
||
### 执行过程
|
||
|
||
1. 定位前端 `src/views/ProductionManagement/DeliveryNoticeList/index.vue`,确认页面直接调用 `装配中心任务看板_发货状态查询`,订单数量严格显示过程返回字段 `计划数量`;空值会被前端格式化为留空,前端没有补数或覆盖逻辑。
|
||
2. 读取过程备份和线上当前定义,确认发货数据主分支从 `[SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES]` 读取,再以 `c.生产单号 = a.订单编号` 左关联 `dbo.View_生产订单_MES`。其中单据状态和计划数量均来自别名 `a`(MES 视图)。左关联未命中时,SAP 发货行仍保留,而所有 `a` 的字段均为 `NULL`。
|
||
3. 对线上 `YL_MESDB` 只读查询订单 `7338`:SAP 发货源存在一条记录,生产单号为 `7338`、发货单状态 `O`、项目号 `HT260961`、物料编码 `3161-YQZFML-1504AV1.0CPG-C15-B-251219-06`、交货数量 `9`、要求发货时间 `2026-07-31`。
|
||
4. 查询 `View_生产订单_MES`,订单编号 `7338` 返回零行;因此过程的实际返回结果保留 SAP 的订单编号 `7338`,但 `TaskAID`、MES 单据状态和计划数量均为空。
|
||
5. 读取视图定义,确认其筛选条件为 `b.物料类型 = 'pit_Resource' AND a.单据状态 IS NULL`;该视图只输出未设置单据状态的资源任务。
|
||
6. 下钻原始表 `dbo.MES_接口_生产计划` 和 `dbo.MES_接口_生产计划_生产任务`:订单 `7338` 的生产计划存在,计划数量为 `14`、单据状态为“已取消”、同步时间为 `2026-06-16 11:42:11`;同时存在资源任务 `TaskAID=21205`、任务计划数量为 `14`、物料类型为 `pit_Resource`。由于原始计划的单据状态为“已取消”,被上述视图条件过滤。
|
||
7. 本次仅执行读取和核验,未修改生产数据、视图、存储过程或前端代码。
|
||
|
||
### 结论
|
||
|
||
- 订单 `7338` 的“发货单状态”不是空值,SAP 原始值为 `O`;用户看到的空“单据状态”是 MES 生产计划字段。
|
||
- MES 原始计划的单据状态实际为“已取消”,不是空值;但 `View_生产订单_MES` 仅保留“单据状态为空”的计划,故订单 `7338` 无法关联到该视图,过程最终把 MES 单据状态和计划数量返回为 `NULL`。此外,该过程从该视图直接返回 `a.单据状态`,所以即使关联成功,该列也会因视图筛选条件而始终为 `NULL`。
|
||
- “有订单编号但计划数量为空”是该过程的既有数据口径:SAP 发货记录可独立显示,只有成功匹配并且未被 MES 视图过滤的生产计划才会带回计划数量。被取消、未同步、无资源任务或任务物料类型不为 `pit_Resource` 的 MES 数据,都可能导致同样现象。
|
||
- 对订单 `7338`,MES 原始计划数量为 `14`,SAP 发货交货数量为 `9`;二者语义不同,不能在未确认业务口径前将交货数量自动作为计划数量回填。
|
||
|
||
## 2026-07-28 生成生产报工至工时校验数据走向HTML文档
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求以加工中心、装配中心开始,到工时校验结束为范围,整理报工流程的数据走向和计算,并生成 HTML 文档。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查加工中心、装配中心和工时校验页面的当前调用,确认加工中心开始使用 `MES_ProductTask_WorkingStart`,正常结束报工使用 `MES_ProductTask_ProdReport`,辅助分支使用 `MES_ProductTask_HelpStart` 和 `MES_ProductTask_HelpEnd`;装配中心使用 `MES_人员工时记录_开始` 和 `MES_人员工时记录_结束`;工时校验使用 `工时校验_获取昨日之前操作记录列表`、`usp_BatchValidateWorkTime`、`工时校验_批量保存校验记录`。
|
||
2. 对线上 `YL_MESDB` 执行只读核验,读取上述过程及 `MES_ProductCenter_OptRecord_Save`、`工时校验_保存校验记录`、`View_生产工时视图`、`View_校验后的生产工时` 的当前定义。
|
||
3. 确认加工和装配两条入口均落入 `YL_加工中心_操作记录表`;`TaskAID` 是任务、操作记录、工时视图和校验副本的主追溯键。生产任务状态与操作记录类别为不同维度,文档已分开描述。
|
||
4. 确认加工中心首次开始会将可执行任务转为已开工;正常报工用未报工的最近“开始加工”记录作为周期起点,结束时更新数量与工时。装配中心按“TaskAID + 当前用户”开始和结束,结束过程按班次和加班选项计算人员工时。
|
||
5. 确认统一操作记录过程按开始、暂停、恢复、结束闭合周期,数据库原始工时字段使用秒;校验计算过程输出 `UploadMinutes`,SAP 资源消耗数量使用分钟。
|
||
6. 确认工时校验列表固定只查询开始时间早于当天零点的记录。批量校验在计算成功并完成 SAP 上传后,才由 `工时校验_批量保存校验记录` 将原始操作记录复制至 `生产管理_工时校验_校验工时表`;`校验表.报工记录id = 原始操作记录.AID` 即为已校验关联条件。订单 `3886` 在页面代码中为不上传 SAP、直接保存校验副本的例外。
|
||
7. 新建独立文档 `doc/生产报工至工时校验数据走向_20260728.html`,包含总流程图、加工和装配两条分支、关键表和状态、工时校验结束条件、秒/分钟计算口径及端到端追溯矩阵。
|
||
8. 对 HTML 执行结构核对:标题正确,7 个导航锚点均存在,`main` 和 `section` 开闭标签数量一致;关键过程和数据表名称均已写入。未修改生产数据、存储过程或前端业务代码。
|
||
|
||
### 结论
|
||
|
||
- 已生成可直接在浏览器打开的 HTML 文档,完整说明从加工中心/装配中心报工开始到工时校验副本生成结束的数据走向。
|
||
- 工时事实以 `YL_加工中心_操作记录表` 为准;批量校验是否完成应以 `生产管理_工时校验_校验工时表` 是否存在对应 `报工记录id` 判断,不能只依据页面操作或原表的编辑状态判断。
|
||
|
||
## 2026-07-28 按计算规则重构生产报工工时说明
|
||
|
||
### 用户补充
|
||
|
||
- 用户指出前一版文档的重点不应是数据流程,而应说明工时具体如何计算。
|
||
|
||
### 执行过程
|
||
|
||
1. 重新对线上 `YL_MESDB` 执行只读核验,读取 `MES_ProductCenter_OptRecord_Save`、`MES_人员工时记录_结束`、`计算人员工时`、`usp_CalculateDailyRatio`、`usp_CalculateShiftTime`、`usp_CalculateUploadMinutes`、`usp_BatchValidateWorkTime` 和 `usp_ValidateWorkTime` 的当前定义。
|
||
2. 确认加工中心设备工时公式为:总时长等于周期起止时间差;暂停总时长等于周期内暂停记录的时长之和;实际工时等于总时长减暂停总时长。字段均以秒保存。
|
||
3. 确认加工中心人员工时按人员与班次的时间重叠秒数计算,当前代码直接使用重叠秒数,不再按绑定设备数除分;指定人员没有班次绑定且无任何重叠时,过程保留 1 秒最小值。
|
||
4. 确认装配结束过程以开始和结束时间差计算总工时;工作日加班按白班结束点拆分普通时间和加班时间,开始已晚于白班结束时全部为加班;休息日和法定休息日的处理按是否选择加班分支执行。记录了休息日未加班时原操作记录置零、报工记录保留工作时间的双表口径差异。
|
||
5. 确认当日比例系数为“标准工时小时乘 60 / 同操作人同日有效总分钟”,有效记录排除加班、休息日工作、法定休息日工作、阶段标识为 -1、订单 3886 和总时长不大于 300 秒的记录;分母或标准工时无效时比例系数为 1。
|
||
6. 确认单条上传分钟的普通类别公式为“总分钟乘比例系数”,工作日加班为“总分钟”,休息日或法定休息日加班为“班次内分钟乘比例系数加班次外分钟”。当前批量校验过程优先处理全部加班/休息日类别,直接取“总时长 / 60”,覆盖单条过程的班次内外拆分分支。
|
||
7. 将 `doc/生产报工至工时校验数据走向_20260728.html` 重构为《生产报工工时计算规则》,保留最少的数据来源说明,新增公式、分支表、五个具体计算示例和计算速查表。
|
||
8. 复核 HTML:标题为“生产报工工时计算规则”,导航锚点完整,7 个 `section` 开闭标签数量一致,包含设备实际工时、人员工时、比例系数、UploadMinutes 和批量加班直接转分钟等关键规则。
|
||
|
||
### 结论
|
||
|
||
- 文档现以计算逻辑为主,可用于核对某条报工记录的设备工时、人员工时和 SAP 上传分钟为什么不相等。
|
||
- 当前批量校验页面对加班类别直接按总时长转分钟,是影响最终 SAP 上传结果的最高优先级规则之一。
|
||
|
||
## 2026-07-28 上传当前工作区全部修改到远程仓库
|
||
|
||
### 用户提问
|
||
|
||
- 用户要求将代码的所有修改上传到远程。
|
||
|
||
### 执行过程
|
||
|
||
1. 检查 Git 工作区、远程地址、当前提交和本地分支,确认当前工作区包含前端、数据库脚本、文档、基线和扫描产物等全部待提交修改。
|
||
2. 确认当前本地分支为 `snapshot/local-save-20260625-154806`,其上游为 `origin/snapshot/local-save-20260625-154806`;本地当前提交与远程分支当前提交一致,远程默认分支为 `master`。
|
||
3. 用户已明确要求上传全部修改,因此保留现有工作区所有已修改和未跟踪文件,不执行重置、清理或选择性丢弃。
|
||
4. 将执行 Git 全量暂存、提交和推送;提交后核对工作区状态和远程分支结果。
|
||
|
||
### 结论
|
||
|
||
- 已确定安全推送目标为 `origin/snapshot/local-save-20260625-154806`,不会将当前大量修改直接覆盖到远程默认 `master` 分支。
|