diff --git a/docs/oee-report-design.md b/docs/oee-report-design.md new file mode 100644 index 00000000..915b6763 --- /dev/null +++ b/docs/oee-report-design.md @@ -0,0 +1,492 @@ +# OEE 报表页面设计(酸轧线、镀锌一线) + +> ⚠️ **状态说明(2026-01)**:`klp-da` 中 `OeeReportServiceImpl` 的旧实现已全部移除,目前仅保留可编译运行的空骨架(接口返回空数据)。本设计文档中所有“✅ 当前实现口径/实现说明/回归实现细节”等内容已不再成立,需要以新的实现方案为准。 + +> 目标:在现阶段**不依赖班次/工单/客户维度**的前提下,完成可对比的两条产线 OEE 报表页面,包含 **OEE + 三大构成指标(时间稼动率/性能稼动率/良品率)**、**趋势**、**7 大损失**、**明细**,并在页面中**展示公式与口径**,方便统一认知与复核。 + +--- + +## 1. 范围与非范围 + +### 1.1 本期范围(V1) +- **对象**:两条产线 + - 酸轧线 + - 镀锌一线 +- **时间粒度**: + - 报表查询:按日(必做) + - 趋势图:按日(必做),可扩展按小时/班次(后续) +- **核心指标**: + - OEE + - 时间稼动率(Availability) + - 性能稼动率(Performance) + - 良品率(Quality) +- **分析内容**: + - 两线对比:KPI + 趋势 + - 7 大损失(分类汇总 + Top 原因) + - 停机/损失明细列表(可筛选:产线/日期/损失类别) + +### 1.2 非范围(V1 不做) +- 班次维度、工单维度、客户维度 +- 设备级 OEE(仅产线级;如产线下含多设备,可在数据层聚合) +- 复杂的理论产能模型(先以**标准节拍**/标准速度为主) + +--- + +## 2. 页面信息架构(IA)与交互 + +### 2.1 页面入口与路由建议 +- 菜单:EMS / 报表 / **OEE 报表** +- 路由:`/ems/oee`(建议) + +### 2.2 查询区(页面顶部) +- **日期范围**:开始日期、结束日期(默认最近 7 天/30 天) +- **产线选择**: + - 默认勾选:酸轧线、镀锌一线(两线同时展示) + - 支持单选/多选(便于对比) +- **统计口径选择(可选)**: + - 负荷时间口径:是否扣除“计划停机”(默认扣除) + - 性能口径:使用标准节拍(默认)/使用标准速度(可选) +- 查询按钮、重置按钮 + +### 2.3 KPI 总览区(第一屏) +以“产线”为列,指标为行(或每条产线一张卡片): +- **OEE(%)** +- **时间稼动率(%)** +- **性能稼动率(%)** +- **良品率(%)** +- 辅助数值(建议展示,便于解释指标波动): + - 负荷时间(min) + - 停机时间(min) + - 实际运转时间(min) + - 产量(件/吨/卷,按你们产线计量单位) + - 不良数 + +> 建议:KPI 卡片中同时显示“数值 + 分子/分母”摘要,例如:时间稼动率 87%(运转 400 / 负荷 460)。 + +### 2.4 趋势区(第二屏) +- 折线图 1:两条产线 **OEE 日趋势**(同一图两条线) +- 折线图 2:两条产线 **三大指标日趋势**(可 Tab 切换或分三图) + +### 2.5 7 大损失区(第三屏) +- 维度:产线(Tab:酸轧线 / 镀锌一线 / 合计) +- 图表: + - 柱状图:7 大损失分类的**时间损失(min)** + - 帕累托:TopN 原因(来自停机原因/质量原因)占比 +- 表格: + - 7 大损失分类:损失时间、占比、次数(可选)、平均时长(可选) + +### 2.6 明细区(第四屏) +- 停机/损失事件明细表 + - 日期时间、产线、损失类别、原因、开始/结束、时长、备注 +- 支持筛选: + - 产线、日期、损失类别、关键词(原因/备注) + +### 2.7 公式与口径说明区(页面底部或抽屉) +> 你希望页面上展示公式:建议做成“口径说明”卡片 + 可折叠(默认折叠),避免占用首屏空间。 + +内容包括:OEE 公式、三大指标公式、字段定义、边界规则(见第 3、6 节)。 + +--- + +## 3. 指标定义与公式(页面需展示) + +### 3.1 总公式 +**设备综合效率(OEE)**: +\[ +OEE = 时间稼动率 \times 性能稼动率 \times 良品率 +\] + +### 3.2 时间稼动率(Availability) +定义:在负荷时间内,真正处于“运转”的时间比例。 + +\[ +时间稼动率 = \frac{负荷时间 - 停机时间}{负荷时间} \times 100\% +\] + +字段解释: +- **负荷时间**:计划生产时间扣除计划停机后的时间(V1 默认扣除计划停机) +- **停机时间**:属于“停止损失”的所有停机/中断的总时长 + +### 3.3 性能稼动率(Performance) +定义:在实际运转时间内,理论应完成的产量对应的时间占比(或等价的速度比)。 + +以“标准节拍”为口径(推荐、通用): +\[ +性能稼动率 = \frac{理论节拍 \times 产量}{实际运转时间} \times 100\% +\] + +字段解释: +- **理论节拍**:每单位产出的理论加工时间(如 min/吨、sec/卷,需统一单位) +- **产量**:该期间内的产出总量(单位需与理论节拍匹配) +- **实际运转时间**:负荷时间 - 停机时间 + +> 备注:如果你们更习惯“标准速度”,可替换为速度比口径: +> \[ +> 性能稼动率 = \frac{实际产量}{理论产量} \times 100\% +> \] +> 其中理论产量 = 实际运转时间 / 理论节拍。 + +### 3.4 良品率(Quality) +\[ +良品率 = \frac{良品数}{总产量} \times 100\% +\] + +字段解释: +- **总产量**:产出总量(良品 + 不良/报废/返工产出,按你们定义) +- **良品数**:合格产出数量 + +--- + +## 4. 7 大损失(分类口径) + +> 7 大损失的目的:把 OEE 的损失拆解成可行动的改善项。V1 先做“分类汇总 + Top 原因”,不强依赖复杂的自动归因。 + +### 4.1 7 大损失分类(建议编码) +1. **故障**(Breakdown) +2. **换模换线/调整**(Setup & Adjustment) +3. **刀具交换**(Tool Change) +4. **暖机**(Warm-up) +5. **空转/短暂停机**(Idling & Minor Stops) +6. **速度下降**(Reduced Speed) +7. **不良/修正**(Defects & Rework) + +### 4.2 数据落地建议(最小可用) +V1 推荐按“事件表 + 分类映射”实现: +- 停机事件(1~5 类):从停机事件表按原因映射到分类 +- 速度下降(6 类):允许先不拆事件,直接以“性能损失分钟数”计算后挂到第 6 类 +- 不良/修正(7 类):从质量数据汇总;可换算成时间损失或先仅显示数量/比例(见 5.3) + +> 关键点:**分类映射表**要可配置(原因码 -> 损失类别),便于后期持续维护与纠正。 + +--- + +## 5. 数据需求(V1 最小数据集) + +### 5.1 维表:产线定义(必需) +用于固定两条产线的展示与筛选。 +- `line_id`:产线 ID(建议固定,例如 `SY`、`DX1`) +- `line_name`:产线名称(酸轧线、镀锌一线) + +### 5.2 事实表 A:产线日汇总(推荐:可由明细聚合生成) +用于 KPI 与趋势图(按日、按产线)。 + +字段(按日、按产线一行): +- `stat_date`:日期(yyyy-MM-dd) +- `line_id` +- `planned_time_min`:计划时间(min,可选) +- `planned_downtime_min`:计划停机(min,可选;若无则置 0) +- `loading_time_min`:负荷时间(min)= planned_time_min - planned_downtime_min +- `downtime_min`:停机时间(min,来自停机事件汇总) +- `run_time_min`:实际运转时间(min)= loading_time_min - downtime_min +- `total_output`:总产量(单位:吨/卷/件,需统一) +- `good_output`:良品量 +- `defect_output`:不良量(= total_output - good_output,或单独提供) +- `ideal_cycle_time_min_per_unit`:理论节拍(min/单位;若按产品不同,可取当日主产品或加权平均) + +派生指标(后端返回也可以,前端不必重复算): +- `availability`:时间稼动率(0~1 或 0~100) +- `performance`:性能稼动率 +- `quality`:良品率 +- `oee`:OEE + +### 5.3 事实表 B:停机/损失事件明细(必需) +用于“停机明细”和 7 大损失(1~5 类)。 + +字段(每次事件一行): +- `line_id` +- `event_start_time`:开始时间 +- `event_end_time`:结束时间 +- `duration_min`:时长(min,可由 start/end 计算) +- `raw_reason_code`:原始原因码(PLC/MES/人工) +- `raw_reason_name`:原因描述 +- `loss_category_code`:损失分类(7 大损失之一;可由映射表生成) +- `loss_category_name` +- `remark`:备注(可选) + +### 5.4 映射表:原因 -> 7 大损失类别(强烈建议) +- `reason_code` +- `reason_name` +- `loss_category_code`(1~7 或枚举) +- `enabled` +- `updated_by/updated_time` + +### 5.5 事实表 C:质量汇总(必需,至少按日/产线) +用于良品率与第 7 类损失。 + +字段(按日、按产线一行,或更细): +- `stat_date` +- `line_id` +- `total_output` +- `good_output` +- `defect_output` +- `defect_reason_code`/`defect_reason_name`(如有则可做 Pareto) + +> 若当前系统只有“总产量 + 不良量”,也可先做,Pareto 暂缺。 + +--- + +## 6. 计算规则与边界(避免口径争议) + +### 6.1 单位与精度 +- 时间统一用 **分钟(min)**,产量统一用某一个单位(吨/卷/件三选一,不建议混用) +- 比例类指标输出: + - 存储:`0~1`(推荐)或 `0~100`(二选一,接口需固定) + - 展示:百分比 `%`,保留 1~2 位小数 + +### 6.2 负荷时间缺失的处理 +若 V1 暂无计划时间/计划停机: +- 方案 A(推荐):先把 **负荷时间**直接作为外部输入(由业务提供/班组报工) +- 方案 B:以“日历时间(24h)”近似(不推荐,会误导) + +### 6.3 性能稼动率上限与异常 +理论上性能稼动率可能 > 100%(标准节拍偏大、或实际速度超标)。 +建议规则: +- **展示值**:允许 >100%,但同时给出提示“标准节拍/标准速度需校准” +- **可选**:提供开关将 performance clamp 到 100%(不建议默认 clamp,会掩盖问题) + +### 6.4 速度下降(第 6 类)如何得到“分钟数” +当你们没有“速度下降事件”时,建议以性能损失折算分钟数: +- `ideal_time_min = ideal_cycle_time_min_per_unit * total_output` +- `performance_loss_min = max(0, run_time_min - ideal_time_min)` +将 `performance_loss_min` 作为第 6 类“速度下降”损失时间。 + +> 注意:如果 `ideal_time_min > run_time_min`,说明当日速度优于标准(或标准过宽),此时性能损失为 0。 + +### 6.5 不良/修正(第 7 类)如何换算“分钟数”(可选) +V1 可先只展示“不良量/不良率”;若要换算成时间损失: +- `quality_loss_min = defect_output * ideal_cycle_time_min_per_unit` +并作为第 7 类损失时间。 + +--- + +## 7. 接口设计(建议) + +> 下面为接口设计说明。注意:本文不再描述“当前后端实现细节”,仅给出建议的接口形态与字段含义,具体实现以代码为准。 + +### 7.0 多服务(多 IP/端口)接入原则 + +当前两条产线来自**两个不同服务**(不同 IP/端口),需在接口设计中显式考虑: + +- **方式 A(推荐):后端统一网关/中台** + - 在现有 Java 服务或 API 网关中,新增一个 **OEE 聚合接口** 模块: + - 内部分别调用「酸轧线服务」与「镀锌一线服务」的地址 + - 对外仍暴露统一的 `/api/ems/oee/...` 风格接口 + - 优点:前端无感知多服务、网络安全/鉴权可统一;后期扩展新产线也只需后端配置。 +- **方式 B:前端直连多服务(不推荐,仅在现有架构强约束时考虑)** + - 需在 `vue.config.js` 中配置多个 `proxy`,例如 `/ems-sy` -> 酸轧线、`/ems-dx1` -> 镀锌一线 + - 前端在请求时根据 `lineId` 选择不同前缀(易产生逻辑分叉、难复用) + +> 设计目标:**对前端暴露统一接口**,由后端负责区分产线来源服务并做数据聚合与清洗。 + +以下接口路径均以“后端统一聚合后”的 API 为准。 + +- 路由前缀:以 `klp-da` 实际 Controller 为准(本文不再假设已实现的固定前缀)。 + +### 7.1 KPI + 趋势汇总 +`GET /oee/line/summary` + +参数: +- `startDate`:yyyy-MM-dd +- `endDate`:yyyy-MM-dd +- `lineIds`:逗号分隔(例如 `SY,DX1`) + +返回(示例结构): +- `lines[]` + - `lineId` + - `lineName` + - `total`:区间汇总 + - `loadingTimeMin` + - `downtimeMin` + - `runTimeMin` + - `totalOutput` + - `goodOutput` + - `defectOutput` + - `availability` + - `performance` + - `quality` + - `oee` + - `daily[]`:按日明细(用于趋势图) + +- 指标口径:以业务定义为准(负荷时间/停机/运转/产出/良品率/理论节拍的具体取数来源与规则需在新实现中明确)。 + +### 7.2 7 大损失汇总 +`GET /oee/line/loss7` + +参数同上,额外: +- `topN`:默认 10 + +返回: +- `byLine[]` + - `lineId` + - `lineName` + - `losses[]` + - `lossCategoryCode` + - `lossCategoryName` + - `lossTimeMin` + - `lossTimeRate`(占比,分母为“停机损失 + 速度下降损失”) + - `count`(次数,部分分类可能为空) + - `avgDurationMin`(平均时长,部分分类可能为空) + - `topReasons[]`:TopN 原因(按原因文本聚合) + +- 速度下降(第 6 类)建议口径:可用“性能损失分钟数”折算(详见 6.4),具体落地以新实现为准。 + +### 7.3 停机/损失事件明细 +`GET /oee/line/events` + +参数: +- `startTime`、`endTime`(支持到分钟) +- `lineId`(可选) +- `lossCategoryCode`(可选) +- `keyword`(可选) +- `pageNum`、`pageSize` + +返回: +- `rows[]`:事件列表 +- `total` + +> ✅ **当前实现说明** +> - 事件来源:分别调用两条产线各自的停机事件接口进行聚合;并支持 `keyword/lossCategoryCode` 过滤与分页。 + +### 7.4 理论节拍回归(散点 + 拟合线,用于前端绘图) +`GET /oee/line/theoryCycle/regression` + +用途: +- 前端绘制“散点 + 回归折线”的**理论节拍回归图** +- 同时为 `summary` / `loss7` 提供 **理论节拍(分钟/吨)** 数据源(Performance 计算) + +参数: +- 复用 `OeeQueryBo` 的 `startTime/endTime`(可选,格式 `yyyy-MM-dd HH:mm:ss`) +- 不传时默认近 6 个月(由 WMS 侧默认) + +返回(结构透传 WMS 回归结果): +- `lines[]` + - `lineId`:`SY` / `DX1` + - `lineName` + - `slopeMinPerTon`:**分钟/吨(核心值,可作为理论节拍)** + - `interceptMin`:截距(分钟) + - `r2`:拟合优度 + - `sampleCount`:参与回归样本数 + - `startTime` / `endTime` + - `points[]`:散点 + - `weightTon`(X) + - `durationMin`(Y) + - `actionId` + - `createTime` + - `linePoints[]`:拟合线两个端点(前端可直接画线) + +> ✅ **当前实现的数据来源(WMS)** +> - `SY`:`wms_coil_pending_action.action_type=11`,单卷,吨数来自该记录 `coil_id` 对应钢卷的 `netWeight/grossWeight`。 +> - `DX1`:`action_type=501`,`remark` 为钢卷 id 列表字符串(提取数字),按列表汇总吨数。 +> - 样本过滤:`action_status=2`、`create_time` 在近 6 个月、`completeTime-createTime` > 0、吨数 > 0。 + +--- + +## 8. 前端页面实现建议(klp-ui) + +### 8.1 组件拆分建议 +- `views/ems/oee/index.vue`(主页面) + - `OeeQueryBar`:查询区 + - `OeeKpiCards`:KPI 区 + - `OeeTrendCharts`:趋势区 + - `OeeLoss7Panel`:7 大损失区 + - `OeeEventTable`:明细区 + - `OeeFormulaCard`:公式与口径说明(可折叠) + +### 8.2 公式展示(建议文案) +页面“口径说明”中直接展示下列内容(与第 3 节一致): +- \( OEE = A \times P \times Q \) +- \( A = (负荷时间-停机时间)/负荷时间 \) +- \( P = (理论节拍 \times 产量)/实际运转时间 \) +- \( Q = 良品数/总产量 \) + +并附“字段解释”与“边界规则”(第 6 节)。 + +--- + +## 9. 打印与 Word 导出设计 + +当前会议使用**打印好的纸张**,因此 OEE 报表页面必须: +- 在浏览器中**一屏内可阅读**,同时 +- 能以固定版式打印到 A4 纸上(或多页),并且 +- 能方便地导出到 **Word 文档** 中(便于留存与二次编辑)。 + +### 9.1 页面布局对打印友好化 + +- 整体布局遵循「自上而下」结构: + 1. 标题 + 查询条件概览(日期范围、产线) + 2. KPI 总览(两产线对比表格) + 3. OEE & 三大指标趋势图 + 4. 7 大损失汇总表 + 图 + 5. 停机/损失明细表(可只打印 Top N,避免过多页) + 6. 公式与口径说明 +- 为打印准备专用 CSS: + - 使用 `@media print` 隐藏页面导航、按钮等交互元素 + - 控制分页:在关键模块间加 `page-break-before/after: always;`,保证章节不要被随机拆页 + - 统一字体(建议 `SimSun` 或 `Microsoft YaHei`)与字号(正文 10–12pt) + +### 9.2 打印实现(浏览器直接打印) + +- 页面中提供 **“打印 OEE 报表”** 按钮: + - 触发 `window.print()`,由浏览器生成打印预览 + - 打印模板由 `@media print` 样式控制 +- 打印前展示一个小弹窗/提示: + - 确认当前查询条件(日期范围、产线) + - 提示:如“明细表仅打印前 50 条记录” + +### 9.3 Word 导出方案(前后端二选一) + +#### 方案 A(推荐):后端生成 Word 模板 +- 在 Java 后端使用如 **Apache POI** 或 **docx4j**: + - 准备一个固定 Word 模板(包括标题、表格样式、公司抬头等) + - 将 OEE 汇总、趋势(可只写数据表)、7 大损失、公式说明填入模板 + - 返回 `application/vnd.openxmlformats-officedocument.wordprocessingml.document` 文件流 +- 前端仅需增加一个 **“导出 Word”** 按钮: + - 请求 `/oee/line/exportWord?startDate=...&endDate=...&lineIds=...` + - 将响应保存为 `.docx` 文件。 + +#### 方案 B:前端转为 Word(适合作为备选) +- 使用 JS 库(如 `html-docx-js` / `PizZip + Docxtemplater` 等): + - 将页面区域(或结构化数据)转换为 docx + - 但对版式与中文支持不如后端模板稳妥 + +> 综上,建议优先采用:**后端模板 + 导出 Word 接口**,前端仅承载触发与参数传递。 + +--- + +## 10. 验收标准(V1) +- 支持选择日期范围,展示两条产线(酸轧线、镀锌一线)的: + - KPI:OEE、A、P、Q + 辅助数值 + - 按日趋势:OEE + A/P/Q + - 7 大损失:分类时间损失 + 占比 + - 明细:停机事件列表可筛选/分页 +- 页面包含“口径说明/公式展示”,且与接口口径一致 +- 任一指标可追溯:KPI 卡片能够对上分子/分母(至少时间稼动率与良品率) + - 页面支持 **直接打印为纸质报表**(版式稳定),并提供 **Word 导出** 功能 + +--- + +## 11. 需要你补充/确认的最少信息(不影响先做页面骨架) +1. **产量计量单位**:酸轧/镀锌使用“吨/卷/件”的哪一个?能否统一? +2. **标准节拍来源**:是否已有“产线/产品”标准节拍表?若暂时没有,V1 可先按产线固定一个标准值。 +3. **停机事件来源**:当前是否已有停机记录表(start/end/reason)?原因码是否稳定? + +--- + +## 12. 后端实现与配置(用于前端对接与联调) + +### 12.1 路由前缀说明 +- **DA 聚合服务**(OEE 对外统一接口):`/oee/line/*` +- **WMS 回归服务**(内部数据源,DA 会代理调用):`/wms/coilPendingAction/theoryCycle/regression` + +### 12.2 DA(klp-da)需要的配置项 +- `da.oee.acid-line-base-url`:酸轧线数据源服务地址(klp-pocket) +- `da.oee.galvanize-line-base-url`:镀锌一线数据源服务地址(Fizz) +- `da.oee.wms-base-url`:WMS 服务地址(用于代理调用理论节拍回归接口;不配默认 `http://localhost:8080`) +- `da.oee.ideal-cycle-time-min-per-unit.sy`:理论节拍兜底值(分钟/吨) +- `da.oee.ideal-cycle-time-min-per-unit.dx1`:理论节拍兜底值(分钟/吨) + +### 12.3 WMS 回归与缓存说明 +- WMS 会将回归的斜率(分钟/吨)写入 Redis: + - Key:`oee:ideal-cycle-time`,field:`SY` / `DX1`,value:`slopeMinPerTon` + - Key:`oee:ideal-cycle-time:intercept`,field:`SY` / `DX1`,value:`interceptMin` +- DA 在计算 `summary/loss7` 时会优先使用回归斜率(并在 DA 内做 60s 本地 TTL 缓存),回归不可用时才回退到 `da.oee.ideal-cycle-time-min-per-unit.*`。 diff --git a/ems-cost-allocation-notes.md b/ems-cost-allocation-notes.md new file mode 100644 index 00000000..4b2d3a6f --- /dev/null +++ b/ems-cost-allocation-notes.md @@ -0,0 +1,225 @@ +# 能源分摊(现有实现)与加入“备件/辅料分摊”的接入方案 + +## 0. 时间线(用于交接,持续更新) + +- **2026-01-20** + - **已改动(代码)**: + - `klp-ems/src/main/java/com/klp/ems/domain/vo/CoilTotalCostVo.java`:新增 `auxCost/spareCost` 字段,`totalCost` 注释更新。 + - `klp-ems/src/main/java/com/klp/ems/domain/vo/CoilTotalMergedExportVo.java`:新增导出列 `auxCost/spareCost`。 + - `klp-ems/src/main/resources/mapper/WmsEnergyCoilDailyMapper.xml`:`selectCoilTotalMerged` 与 `selectCoilTotalMergedExport` 已加入 `auxCost/spareCost` 计算与 join,并更新 `totalCost` 公式。 + - `klp-ems/src/main/java/com/klp/ems/controller/EnergyCostReportController.java`:导出接口已补充 `auxCost/spareCost` 赋值。 + - `klp-ui/src/views/ems/cost/cost.vue`:列表新增列展示 `auxCost/spareCost`;顶部卡片展示 `materialSummary`(当前按列表行求和);总成本计算加入备件/辅料。 + +- **2026-01-26** + - **新增(前端页面)**:按数据库路由方式新增两个独立页面(不在前端代码写路由)。 + - `klp-ui/src/views/ems/cost/auxAllocation.vue`:辅料成本分摊页面(按入场卷号汇总),包含“分摊明细”弹窗与导出;并新增“辅料消耗构成(分摊口径)”区域(展示用了哪些辅料、几种、数量与金额)。 + - `klp-ui/src/views/ems/cost/spareAllocation.vue`:备件成本分摊页面(按入场卷号汇总),包含“分摊明细”弹窗与导出;并新增“备件消耗构成(分摊口径)”区域(展示用了哪些备件、几种、数量与金额)。 + - **路由 component 配置建议(写入数据库)**: + - 辅料:`ems/cost/auxAllocation` + - 备件:`ems/cost/spareAllocation` + - **接口复用说明**: + - 汇总:两个页面均复用 `GET /ems/energy/report/coilTotal/merged` 与 `GET /ems/energy/report/coilTotal/merged/export`,分别取字段 `auxCost` / `spareCost`。 + - 构成:新增两个接口返回“按物料/备件聚合后的分摊构成”(数量与金额均按日分摊系数切分): + - `GET /ems/energy/report/material/aux/breakdown` + - `GET /ems/energy/report/material/spare/breakdown` + - **口径(构成)**: + - 全厂按日聚合消耗(`eqp_*_change`,`change_type='减少'`,金额取 `ABS(amount)`,数量取 `ABS(change_quantity)`) + - 当日卷分摊系数:`coil_minutes_day / total_minutes_day`(分钟基于 `wms_coil_pending_action.create_time ~ complete_time/now`) + - 最终按物料/备件汇总:`allocatedQty = Σ_D (day_item_qty * factor_day)`,`allocatedAmount = Σ_D (day_item_amount * factor_day)` + - **重要说明**: + - merged 仍不返回按日池/分钟明细;页面“分摊明细”弹窗仍为汇总占位。 + - 构成接口可在不强制 enterCoilNo 的情况下使用:不传 enterCoilNo 时可用于查看全厂消耗构成(allocated≈total)。 + +- **2026-01-20** + - **口径确认**:备件/辅料分摊池按**全厂**聚合(不按库区/设备/产线拆分)。 + - **过滤规则确认**: + - `wms_coil_pending_action`:按 `pa.create_time` 落在 `[startDate, endDate]` 过滤。 + - `eqp_*_change`:按 `change_time` 落在同一 `[startDate, endDate]` 过滤。 + - 仅统计 `change_type = '减少'`(消耗)。 + - **金额按天切分规则确认**:采用 **A 方案**(按 `DATE(pa.create_time)` 归属到某一天;不做跨天拆分时长)。消耗金额按天形成日池(例如 3 天形成 3 个日池、5 天形成 5 个日池),再在当日内按钢卷时长占比分摊。 + - **跨库可达性确认**:EMS/WMS 可以直接查询到 MES 的 `eqp_auxiliary_material_change`、`eqp_spare_parts_change` 两张变动表(可在 EMS 侧 SQL 直接使用)。 + - **已完成**:梳理前端 `klp-ui/src/views/ems/cost/cost.vue` 的查询/展示/接口调用。 + - **已完成**:定位后端 `EnergyCostReportController` 与 `WmsEnergyCoilDailyMapper.xml`。 + - **已修正**:早期将能源分摊概括为“库区时间窗”会误导备件/辅料接入;备件/辅料分摊以 `wms_coil_pending_action` 的待操作时间窗为中心(见本时间线确认项)。 + - **已确认(MES 成本记账规则)**: + - 台账表(`eqp_spare_part`、`eqp_auxiliary_material`)补充 `unit_price/total_amount`。 + - 入库单价来源:**前端必传**(老接口与前端一并改造)。 + - 入库/增加时采用移动加权平均价:`new_unit_price = (old_unit_price*old_qty + in_unit_price*in_qty) / (old_qty+in_qty)`。 + - 消耗/减少时在变动表写入 `unit_price_snapshot` 并计算 `amount`(**有符号**;减少为负:`-unit_price_snapshot * change_quantity`)。 + - 分摊侧聚合消耗金额使用 `ABS(amount)`。 + +> 范围: +> - 前端页面:`klp-ui/src/views/ems/cost/cost.vue` +> - 后端接口:`klp-ems/src/main/java/com/klp/ems/controller/EnergyCostReportController.java` +> - 主要 SQL:`klp-ems/src/main/resources/mapper/WmsEnergyCoilDailyMapper.xml` +> - MES 表结构:`script/sql/mysql/eqp_auxiliary_material.sql` + +## 1. 现有页面做了什么(前端) + +页面名称:`CoilTotalCost`(钢卷成本汇总) + +### 1.1 查询条件 + +`queryParams`: + +- `enterCoilNo`:入场卷号(页面标记 required,支持模糊) +- `currentCoilNo`:当前卷号(支持模糊) +- `startDate`:开始日期(yyyy-MM-dd) +- `endDate`:结束日期(yyyy-MM-dd) + +点击“查询”会同时触发三块数据加载: + +- **能源成本汇总 + 明细**(EMS) +- **囤积成本明细/汇总**(WMS) +- **能源+囤积 合并汇总**(EMS 聚合接口) + +### 1.2 页面展示结构 + +- **顶部 4 个卡片** + - **能源成本**:来自 `energySummary.totalEnergyCost`,并展示耗能、时长 + - **本日囤积成本**:来自 `stockSummary.todayCost`,并展示净重/毛重 + - **辅料成本**:当前写死 `0.00`(`暂不计`) + - **总成本**:`能源 + 囤积 + 辅料(当前为 0)` + +- **表格:成本汇总(按入场卷号)** + - 数据源:`mergedRows` + - 列:入场卷号、当前卷号、能源成本、囤积成本(当日)、总成本、净重、毛重 + - 操作:查看详情 + +- **详情弹窗** + - 能源分摊明细(按待操作时间跨度分摊) + - 囤积成本(单行汇总) + +### 1.3 前端调用的接口 + +能源相关(同一模块 `@/api/ems/energyCostReport`): + +- `fetchCoilTotalEnergySummary(params)` + - 对应后端:`GET /ems/energy/report/coilTotal/summary` + +- `fetchCoilTotalEnergyDetail(params)` + - 对应后端:`GET /ems/energy/report/coilTotal/detail` + +- `fetchCoilTotalMerged(params)` + - 对应后端:`GET /ems/energy/report/coilTotal/merged` + +- `exportCoilTotalMerged(params)` + - 对应后端:`GET /ems/energy/report/coilTotal/merged/export` + +囤积成本(WMS 模块 `@/api/wms/cost`): + +- `getStockpileCostList(params)` + +## 2. 现有“能源分摊”后端是怎么做的(与备件/辅料接入相关的部分) + +核心 Controller:`EnergyCostReportController` + +- `GET /ems/energy/report/coilTotal/summary` +- `GET /ems/energy/report/coilTotal/detail` +- `GET /ems/energy/report/coilTotal/merged` +- `GET /ems/energy/report/coilTotal/merged/export` + +入参对象:`CoilTotalCostBo`:`enterCoilNo/currentCoilNo/startDate/endDate` + +当前实现中,`coilTotal/*` 相关 SQL 主要围绕 `wms_coil_pending_action` 的时间跨度计算(分钟/小时),并将能耗/成本按占比分配到卷。 + +## 3. 备件/辅料分摊:最新确认的正确口径(可直接实现) + +### 3.1 总体思路 + +- 备件/辅料成本池:按**全厂**聚合。 +- 成本池按**日**切分:以 `DATE(change_time)` 形成每日消耗金额池。 +- 分摊权重按**日**切分:以 `DATE(pa.create_time)` 形成每日钢卷“待操作时长”池。 +- 当天内按“入场卷号的总时长 / 全厂总时长”占比,将当日消耗金额分摊到各入场卷号。 + +### 3.2 关键定义(A 方案:不拆跨天时长) + +#### (1) 当日消耗金额池(仅减少) + +- `aux_pool_day(D) = SUM(eqp_auxiliary_material_change.amount)` +- `spare_pool_day(D) = SUM(eqp_spare_parts_change.amount)` + +过滤: + +- `change_type = '减少'` +- `DATE(change_time) = D` +- 且 `change_time` 在 `[startDate, endDate]` 范围内(与查询一致) + +#### (2) 当日全厂总时长池 + +- `minutes(pa) = TIMESTAMPDIFF(MINUTE, pa.create_time, COALESCE(pa.complete_time, NOW()))` +- `total_minutes_day(D) = SUM(minutes(pa))` + +过滤: + +- `pa.create_time` 在 `[startDate, endDate]` +- `DATE(pa.create_time) = D` + +#### (3) 当日按入场卷号的时长 + +- `coil_minutes_day(D, enter_coil_no) = SUM(minutes(pa))` + +其中 `enter_coil_no` 通过: + +- `wms_coil_pending_action.pa.coil_id -> wms_material_coil.coil_id -> wms_material_coil.enter_coil_no` + +#### (4) 当日分摊与汇总 + +- `aux_cost_day = aux_pool_day(D) * coil_minutes_day / total_minutes_day` +- `spare_cost_day = spare_pool_day(D) * coil_minutes_day / total_minutes_day` + +最终: + +- `auxCost = Σ_D aux_cost_day` +- `spareCost = Σ_D spare_cost_day` + +### 3.3 SQL 接入点(在 EMS merged 中 join) + +建议在 `WmsEnergyCoilDailyMapper.xml`: + +- `selectCoilTotalMerged` +- `selectCoilTotalMergedExport` + +新增 join 结构: + +1. 先构造“按入场卷号的每日分钟数”子查询:`coil_day_minutes` +2. 再构造“全厂每日总分钟数”子查询:`total_day_minutes` +3. 再构造“全厂每日消耗金额池(备件/辅料)”子查询:`aux_day_amount` / `spare_day_amount` +4. 通过 `day` 将以上子查询 join 起来,得到 `Σ( day_amount * coil_day_minutes / total_day_minutes )` +5. 最终在 `merged` 的 select 列表中补充: + - `IFNULL(x.aux_cost, 0) AS auxCost` + - `IFNULL(x.spare_cost, 0) AS spareCost` + - `totalCost = energy_cost + stock_cost + aux_cost + spare_cost` + +> 注意:实现时需要防止分母为 0:`CASE WHEN total_day_minutes > 0 THEN ... ELSE 0 END`。 + +## 4. 需要改动的后端/前端文件清单(待实现) + +### 4.1 EMS 后端(klp-ems) + +- `klp-ems/src/main/java/com/klp/ems/domain/vo/CoilTotalCostVo.java` + - 增加字段:`auxCost`、`spareCost`(以及 `totalCost` 公式更新) + +- `klp-ems/src/main/resources/mapper/WmsEnergyCoilDailyMapper.xml` + - 修改:`selectCoilTotalMerged`、`selectCoilTotalMergedExport` + +- `klp-ems/src/main/java/com/klp/ems/controller/EnergyCostReportController.java` + - 导出映射:`coilTotalMergedExport` 增加导出字段赋值 + +- `klp-ems/src/main/java/com/klp/ems/domain/vo/CoilTotalMergedExportVo.java` + - 增加列:备件成本、辅料成本(以及总成本) + +### 4.2 前端(klp-ui) + +- `klp-ui/src/views/ems/cost/cost.vue` + - 顶部卡片:“辅料成本”从 0 改为接口返回(或新增 summary 聚合) + - 表格增加两列:`auxCost`、`spareCost` + - 总成本公式更新:能源 + 囤积 + 备件 + 辅料 + +--- + +## 5. 当前状态(给新 agent 的交接结论) + +- 分摊口径已最终确认并记录:**全厂池 + 按天切分 + A 方案(按 `DATE(pa.create_time)` 归属)**。 +- EMS/WMS 可直接查询 MES 的 change 表,允许在 `WmsEnergyCoilDailyMapper.xml` 内直接 join 实现。 +- 尚未开始实际代码改造;下一步按第 4 节清单逐项实现,并在每次提交后回写本文件时间线(记录修改了哪些文件/字段/SQL)。 diff --git a/galvanize1.sql b/galvanize1.sql new file mode 100644 index 00000000..e69de29b diff --git a/klp-admin/src/main/resources/application-prod.yml b/klp-admin/src/main/resources/application-prod.yml index a2fb885c..eb4177b7 100644 --- a/klp-admin/src/main/resources/application-prod.yml +++ b/klp-admin/src/main/resources/application-prod.yml @@ -69,14 +69,23 @@ spring: url: jdbc:mysql://140.143.206.120:13306/klp-oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: klp password: KeLunPu@123 - # 从库数据源 - slave: + # 从库数据源(酸轧库) + acid: lazy: true type: ${spring.datasource.type} driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://140.143.206.120:13306/klp_pocketfactory?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: klp password: KeLunPu@123 + + # 从库数据源(镀锌一库) + galvanize1: + lazy: true + type: ${spring.datasource.type} + driverClassName: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://140.143.206.120:3306/cgldb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + username: klp + password: KeLunPu123@ # oracle: # type: ${spring.datasource.type} # driverClassName: oracle.jdbc.OracleDriver diff --git a/klp-da/src/main/java/com/klp/da/controller/OeeReportController.java b/klp-da/src/main/java/com/klp/da/controller/OeeReportController.java index 997b0dee..4b16dcaa 100644 --- a/klp-da/src/main/java/com/klp/da/controller/OeeReportController.java +++ b/klp-da/src/main/java/com/klp/da/controller/OeeReportController.java @@ -2,16 +2,7 @@ package com.klp.da.controller; import com.klp.common.annotation.Log; import com.klp.common.core.controller.BaseController; -import com.klp.common.core.domain.PageQuery; -import com.klp.common.core.domain.R; -import com.klp.common.core.page.TableDataInfo; -import com.klp.common.enums.BusinessType; -import com.klp.da.domain.bo.OeeQueryBo; -import com.klp.da.domain.vo.OeeLineSummaryVo; -import com.klp.da.domain.vo.OeeEventVo; -import com.klp.da.service.IOeeReportService; -import com.klp.da.service.OeeSummaryJobService; -import com.klp.da.service.OeeTheoryCycleJobService; + import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -25,8 +16,6 @@ import java.util.Map; /** * OEE 报表聚合 Controller(方式 A:后端统一聚合多服务) * - * 当前仅提供接口“架子”,具体聚合逻辑在 {@link IOeeReportService} 中实现。 - * * 路由前缀与 docs/oee-report-design.md 设计文档保持一致: * - /api/ems/oee/line/summary * - /api/ems/oee/line/loss7 @@ -39,92 +28,6 @@ import java.util.Map; @RequestMapping("/oee/line") public class OeeReportController extends BaseController { - private final IOeeReportService oeeReportService; - private final OeeTheoryCycleJobService oeeTheoryCycleJobService; - private final OeeSummaryJobService oeeSummaryJobService; - /** - * KPI + 趋势汇总 - */ - @Log(title = "OEE 报表-汇总", businessType = BusinessType.OTHER) - @GetMapping("/summary") - public R> summary(OeeQueryBo queryBo) { - return R.ok(oeeReportService.summary(queryBo)); - } - - /** - * KPI + 趋势汇总(异步任务):立即返回 jobId,通过 WebSocket 推送进度与结果。 - * - * 前端订阅: - * ws://{host}/websocket?type={wsType} - */ - @Log(title = "OEE 报表-汇总(异步)", businessType = BusinessType.OTHER) - @GetMapping("/summary/job") - public R> summaryJob(OeeQueryBo queryBo) { - System.out.println("[OEE][summary][job][controller] request received, thread=" + Thread.currentThread().getName() - + ", startDate=" + (queryBo == null ? null : queryBo.getStartDate()) - + ", endDate=" + (queryBo == null ? null : queryBo.getEndDate()) - + ", lineIds=" + (queryBo == null ? null : queryBo.getLineIds())); - Map resp = oeeSummaryJobService.createAndStart(queryBo); - System.out.println("[OEE][summary][job][controller] job created, resp=" + resp); - return R.ok(resp); - } - - /** - * 7 大损失汇总 - */ - @Log(title = "OEE 报表-7大损失", businessType = BusinessType.OTHER) - @GetMapping("/loss7") - public R> lossSummary(OeeQueryBo queryBo) { - Map result = oeeReportService.lossSummary(queryBo); - return R.ok(result); - } - - /** - * 停机/损失事件明细 - */ - @Log(title = "OEE 报表-事件明细", businessType = BusinessType.OTHER) - @GetMapping("/events") - public TableDataInfo events(OeeQueryBo queryBo, PageQuery pageQuery) { - return oeeReportService.events(queryBo, pageQuery); - } - - /** - * 导出 Word 报表(整体版式由后端模板控制) - */ - @Log(title = "OEE 报表-导出Word", businessType = BusinessType.EXPORT) - @GetMapping("/exportWord") - public void exportWord(OeeQueryBo queryBo, HttpServletResponse response) { - oeeReportService.exportWord(queryBo, response); - } - - /** - * 理论节拍回归(散点+拟合线) - * - * 说明:该接口用于前端绘制“散点+回归折线”的图形,节拍数据来源于 WMS 回归结果。 - */ - @Log(title = "OEE 报表-理论节拍回归", businessType = BusinessType.OTHER) - @GetMapping("/theoryCycle/regression") - public R> theoryCycleRegression(OeeQueryBo queryBo) { - return R.ok(oeeReportService.theoryCycleRegression(queryBo)); - } - - /** - * 理论节拍回归(异步任务):立即返回 jobId,通过 WebSocket 推送进度与结果。 - * - * 前端订阅: - * ws://{host}/websocket?type={wsType} - */ - @Log(title = "OEE 报表-理论节拍回归(异步)", businessType = BusinessType.OTHER) - @GetMapping("/theoryCycle/regression/job") - public R> theoryCycleRegressionJob(OeeQueryBo queryBo) { - System.out.println("[OEE][theoryCycle][job][controller] request received, thread=" + Thread.currentThread().getName() - + ", startTime=" + (queryBo == null ? null : queryBo.getStartTime()) - + ", endTime=" + (queryBo == null ? null : queryBo.getEndTime()) - + ", lineIds=" + (queryBo == null ? null : queryBo.getLineIds())); - Map resp = oeeTheoryCycleJobService.createAndStart(queryBo); - System.out.println("[OEE][theoryCycle][job][controller] job created, resp=" + resp); - return R.ok(resp); - } } diff --git a/klp-da/src/main/java/com/klp/da/controller/占位.txt b/klp-da/src/main/java/com/klp/da/controller/占位.txt index e69de29b..1e6f45ad 100644 --- a/klp-da/src/main/java/com/klp/da/controller/占位.txt +++ b/klp-da/src/main/java/com/klp/da/controller/占位.txt @@ -0,0 +1 @@ +占位文件,无需使用。 diff --git a/klp-da/src/main/java/com/klp/da/domain/vo/OeeEventVo.java b/klp-da/src/main/java/com/klp/da/domain/vo/OeeEventVo.java deleted file mode 100644 index f358bb79..00000000 --- a/klp-da/src/main/java/com/klp/da/domain/vo/OeeEventVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.klp.da.domain.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * OEE 事件(停机/损失)明细 VO - */ -@Data -public class OeeEventVo { - - private String lineId; - - private String lineName; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime eventStartTime; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime eventEndTime; - - /** - * 时长(分钟) - */ - private Integer durationMin; - - private String rawReasonCode; - - private String rawReasonName; - - private String lossCategoryCode; - - private String lossCategoryName; - - private String remark; -} - diff --git a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLineSummaryVo.java b/klp-da/src/main/java/com/klp/da/domain/vo/OeeLineSummaryVo.java deleted file mode 100644 index 1d4cf5c4..00000000 --- a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLineSummaryVo.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.klp.da.domain.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.List; - -/** - * 产线 OEE 汇总 + 日趋势 VO - * - * 对应设计文档 7.1 返回结构中的一条 line 记录。 - */ -@Data -public class OeeLineSummaryVo { - - /** - * 产线 ID - */ - private String lineId; - - /** - * 产线名称 - */ - private String lineName; - - /** - * 区间汇总 - */ - private Summary total; - - /** - * 日粒度数据(用于趋势图) - */ - private List daily; - - @Data - public static class Summary { - private Integer loadingTimeMin; - private Integer downtimeMin; - private Integer runTimeMin; - private BigDecimal totalOutput; - private BigDecimal goodOutput; - private BigDecimal defectOutput; - - private BigDecimal availability; - private BigDecimal performance; - private BigDecimal quality; - private BigDecimal oee; - } - - @Data - public static class Daily { - @JsonFormat(pattern = "yyyy-MM-dd") - private LocalDate statDate; - - private Integer loadingTimeMin; - private Integer downtimeMin; - private Integer runTimeMin; - private BigDecimal totalOutput; - private BigDecimal goodOutput; - private BigDecimal defectOutput; - - private BigDecimal availability; - private BigDecimal performance; - private BigDecimal quality; - private BigDecimal oee; - } -} - diff --git a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossCategorySummaryVo.java b/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossCategorySummaryVo.java deleted file mode 100644 index 4700c9f7..00000000 --- a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossCategorySummaryVo.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.klp.da.domain.vo; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 7 大损失分类汇总 VO - */ -@Data -public class OeeLossCategorySummaryVo { - - /** - * 损失类别编码(1~7 或枚举) - */ - private String lossCategoryCode; - - /** - * 损失类别名称 - */ - private String lossCategoryName; - - /** - * 损失时间(分钟) - */ - private Integer lossTimeMin; - - /** - * 损失占比(0~1 或 0~100,随整体口径配置) - */ - private BigDecimal lossTimeRate; - - /** - * 事件次数(可选) - */ - private Integer count; -} - diff --git a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossReasonVo.java b/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossReasonVo.java deleted file mode 100644 index 8e4498d4..00000000 --- a/klp-da/src/main/java/com/klp/da/domain/vo/OeeLossReasonVo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.klp.da.domain.vo; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 损失原因 TopN VO - */ -@Data -public class OeeLossReasonVo { - - private String lineId; - - /** - * 原因编码 - */ - private String reasonCode; - - /** - * 原因名称 - */ - private String reasonName; - - /** - * 所属损失类别编码 - */ - private String lossCategoryCode; - - /** - * 损失时间(分钟) - */ - private Integer lossTimeMin; - - /** - * 时间占比 - */ - private BigDecimal lossTimeRate; -} - diff --git a/klp-da/src/main/java/com/klp/da/service/IOeeReportService.java b/klp-da/src/main/java/com/klp/da/service/IOeeReportService.java deleted file mode 100644 index f0fb5d05..00000000 --- a/klp-da/src/main/java/com/klp/da/service/IOeeReportService.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.klp.da.service; - -import com.klp.common.core.domain.PageQuery; -import com.klp.common.core.page.TableDataInfo; -import com.klp.da.domain.bo.OeeQueryBo; -import com.klp.da.domain.vo.OeeEventVo; -import com.klp.da.domain.vo.OeeLineSummaryVo; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; -import java.util.Map; - -/** - * OEE 报表聚合 Service 接口(方式 A:后端统一聚合多服务) - * - * 实现类负责: - * - 调用酸轧线、镀锌一线等外部服务 - * - 做数据汇总、口径统一和格式转换 - */ -public interface IOeeReportService { - - /** - * KPI + 趋势汇总 - */ - List summary(OeeQueryBo queryBo); - - /** - * 7 大损失汇总 - * - * 返回 Map 以便后续扩展: - * - byLine: List - * - topReasons: List - * 等 - */ - Map lossSummary(OeeQueryBo queryBo); - - /** - * 事件明细 - */ - TableDataInfo events(OeeQueryBo queryBo, PageQuery pageQuery); - - /** - * 导出 Word 报表 - */ - void exportWord(OeeQueryBo queryBo, HttpServletResponse response); - - /** - * 理论节拍线性回归(散点+拟合线),用于前端绘图。 - */ - Map theoryCycleRegression(OeeQueryBo queryBo); -} - diff --git a/klp-da/src/main/java/com/klp/da/service/OeeSummaryJobService.java b/klp-da/src/main/java/com/klp/da/service/OeeSummaryJobService.java deleted file mode 100644 index 7e0d51fe..00000000 --- a/klp-da/src/main/java/com/klp/da/service/OeeSummaryJobService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.klp.da.service; - -import com.klp.da.domain.bo.OeeQueryBo; - -import java.util.Map; - -/** - * OEE summary 异步任务(WebSocket 推送) - */ -public interface OeeSummaryJobService { - - /** - * 创建任务并异步执行,立即返回 job 信息。 - * - * @return Map: { jobId, wsType } - */ - Map createAndStart(OeeQueryBo queryBo); -} - diff --git a/klp-da/src/main/java/com/klp/da/service/OeeTheoryCycleJobService.java b/klp-da/src/main/java/com/klp/da/service/OeeTheoryCycleJobService.java deleted file mode 100644 index 6d69685d..00000000 --- a/klp-da/src/main/java/com/klp/da/service/OeeTheoryCycleJobService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.klp.da.service; - -import com.klp.da.domain.bo.OeeQueryBo; - -import java.util.Map; - -/** - * 理论节拍回归异步任务(WebSocket 推送) - */ -public interface OeeTheoryCycleJobService { - - /** - * 创建任务并异步执行,立即返回 job 信息。 - * - * @return Map: { jobId, wsType } - */ - Map createAndStart(OeeQueryBo queryBo); -} - diff --git a/klp-da/src/main/java/com/klp/da/service/impl/OeeReportServiceImpl.java b/klp-da/src/main/java/com/klp/da/service/impl/OeeReportServiceImpl.java deleted file mode 100644 index aa09f416..00000000 --- a/klp-da/src/main/java/com/klp/da/service/impl/OeeReportServiceImpl.java +++ /dev/null @@ -1,1369 +0,0 @@ -package com.klp.da.service.impl; - -import com.klp.common.core.domain.PageQuery; -import com.klp.common.core.page.TableDataInfo; -import com.klp.da.domain.bo.OeeQueryBo; -import com.klp.da.domain.vo.OeeEventVo; -import com.klp.da.domain.vo.OeeLineSummaryVo; -import com.klp.da.service.IOeeReportService; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.UriComponentsBuilder; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.web.client.ResourceAccessException; -import org.springframework.http.client.SimpleClientHttpRequestFactory; - -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.net.URI; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.stream.Collectors; - -/** - * OEE 报表聚合 Service 实现(方式 A) - * - * 仅搭建“架子”,并预先约定两条线的数据来源: - * - {@link #acidLineBaseUrl}:酸轧线(TCM1)服务基础地址,本地 klp-pocket 模块,例如 http://localhost:8080 - * - {@link #galvanizeLineBaseUrl}:镀锌一线服务基础地址,Fizz 平台,例如 http://140.143.206.120:18081 - * - * 配置示例(application-*.yml): - * da: - * oee: - * acid-line-base-url: http://localhost:8080 - * galvanize-line-base-url: http://140.143.206.120:18081 - */ -@Slf4j -@RequiredArgsConstructor -@Service -public class OeeReportServiceImpl implements IOeeReportService { - - private final RestTemplate restTemplate; - - private final ObjectMapper objectMapper = new ObjectMapper(); - - /** - * 仅用于耗时/大报文的下游调用(例如理论节拍回归),避免默认 60s readTimeout 导致连接被中止。 - */ - private final RestTemplate longReadRestTemplate = buildLongReadRestTemplate(); - - @Value("${da.oee.acid-line-base-url:}") - private String acidLineBaseUrl; - - @Value("${da.oee.galvanize-line-base-url:}") - private String galvanizeLineBaseUrl; - - /** - * WMS 服务基础地址(用于理论节拍回归接口) - */ - @Value("${da.oee.wms-base-url:}") - private String wmsBaseUrl; - - /** - * 理论节拍(标准节拍):min / 单位(建议单位为 吨,保持两条线一致) - * 用于计算 Performance:ideal_time_min = ideal_cycle_time * total_output - */ - @Value("${da.oee.ideal-cycle-time-min-per-unit.sy:0}") - private BigDecimal idealCycleTimeMinPerUnitSy; - - @Value("${da.oee.ideal-cycle-time-min-per-unit.dx1:0}") - private BigDecimal idealCycleTimeMinPerUnitDx1; - - /** - * 回归结果本地缓存(避免每次 summary/loss 都调用 WMS) - */ - private static final long REGRESSION_CACHE_TTL_MS = 60_000L; - private static final ConcurrentHashMap REGRESSION_CACHE = new ConcurrentHashMap<>(); - private static final ConcurrentHashMap REGRESSION_REFRESHING = new ConcurrentHashMap<>(); - private static final ConcurrentHashMap REGRESSION_LAST_FAIL_TS = new ConcurrentHashMap<>(); - private static final long REGRESSION_FAIL_BACKOFF_MS = 120_000L; - private static final ExecutorService REGRESSION_EXECUTOR = Executors.newSingleThreadExecutor(r -> { - Thread t = new Thread(r); - t.setName("oee-theory-cycle-regression-refresh"); - t.setDaemon(true); - return t; - }); - - private static final String HEADER_AUTHORIZATION = "Authorization"; - private static final String HEADER_BEARER_PREFIX = "Bearer "; - - /** - * 异步任务透传用:当 RequestContextHolder 不可用时,从 ThreadLocal 读取 Authorization。 - */ - private static final ThreadLocal AUTH_OVERRIDE = new ThreadLocal<>(); - - public static void setAuthOverride(String authorization) { - if (authorization == null || authorization.trim().isEmpty()) { - AUTH_OVERRIDE.remove(); - } else { - AUTH_OVERRIDE.set(authorization.trim()); - } - } - - public static void clearAuthOverride() { - AUTH_OVERRIDE.remove(); - } - - @Override - public List summary(OeeQueryBo queryBo) { - log.info("OEE summary query: {}", queryBo); - LocalDate start = queryBo.getStartDate(); - LocalDate end = queryBo.getEndDate(); - if (start == null || end == null) { - return Collections.emptyList(); - } - - List lineIds = (queryBo.getLineIds() == null || queryBo.getLineIds().isEmpty()) - ? java.util.Arrays.asList("SY", "DX1") - : queryBo.getLineIds(); - - List result = new ArrayList<>(); - for (String lineId : lineIds) { - if (isAcidLine(lineId)) { - result.add(buildAcidLineSummary(lineId, "酸轧线", start, end)); - } else if (isGalvanizeLine(lineId)) { - result.add(buildGalvanizeLineSummary(lineId, "镀锌一线", start, end)); - } else { - // 未识别的产线:跳过(后续可扩展配置化) - log.warn("Unknown lineId: {}", lineId); - } - } - return result; - } - - @Override - public Map lossSummary(OeeQueryBo queryBo) { - log.info("OEE loss summary query: {}", queryBo); - LocalDate start = queryBo.getStartDate(); - LocalDate end = queryBo.getEndDate(); - if (start == null || end == null) { - return new HashMap<>(); - } - List lineIds = (queryBo.getLineIds() == null || queryBo.getLineIds().isEmpty()) - ? java.util.Arrays.asList("SY", "DX1") - : queryBo.getLineIds(); - - List> byLine = new ArrayList<>(); - for (String lineId : lineIds) { - List events = fetchEvents(lineId, start, end); - - // 过滤掉“计划停机”,它应该进入 planned_downtime_min,用于扣除负荷时间,而不算 7 大损失 - List effective = events.stream() - .filter(e -> !isPlannedDowntime(e)) - .collect(Collectors.toList()); - - int downtimeLossMin = effective.stream().mapToInt(e -> safeInt(e.getDurationMin())).sum(); - - Map> byCat = effective.stream() - .collect(Collectors.groupingBy(e -> { - LossCategory c = mapLossCategory(e); - return c.code; - })); - - // 追加第6类:速度下降(根据 Performance 损失折算分钟数) - BigDecimal slope = resolveIdealCycleMinPerUnit(lineId, queryBo); - PerformanceLoss perfLoss = calcPerformanceLossMinutes(lineId, start, end, slope); - int performanceLossMin = perfLoss.performanceLossMin; - - int totalLossMin = downtimeLossMin + performanceLossMin; - - List> losses = byCat.entrySet().stream() - .map(entry -> { - String catCode = entry.getKey(); - List es = entry.getValue(); - int lossMin = es.stream().mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int cnt = es.size(); - BigDecimal avg = cnt <= 0 ? BigDecimal.ZERO - : BigDecimal.valueOf(lossMin).divide(BigDecimal.valueOf(cnt), 2, RoundingMode.HALF_UP); - BigDecimal rate = totalLossMin <= 0 ? BigDecimal.ZERO - : BigDecimal.valueOf(lossMin).divide(BigDecimal.valueOf(totalLossMin), 6, RoundingMode.HALF_UP); - - LossCategory cat = LossCategory.byCode(catCode); - Map m = new HashMap<>(); - m.put("lossCategoryCode", cat.code); - m.put("lossCategoryName", cat.name); - m.put("lossTimeMin", lossMin); - m.put("lossTimeRate", rate); - m.put("count", cnt); - m.put("avgDurationMin", avg); - return m; - }) - .collect(Collectors.toList()); - - if (performanceLossMin > 0 || (slope != null && slope.compareTo(BigDecimal.ZERO) > 0)) { - Map m6 = new HashMap<>(); - m6.put("lossCategoryCode", "6"); - m6.put("lossCategoryName", "速度下降"); - m6.put("lossTimeMin", performanceLossMin); - m6.put("lossTimeRate", totalLossMin <= 0 ? BigDecimal.ZERO - : BigDecimal.valueOf(performanceLossMin).divide(BigDecimal.valueOf(totalLossMin), 6, RoundingMode.HALF_UP)); - m6.put("count", null); - m6.put("avgDurationMin", null); - // 额外信息:回归斜率、runTime/idealTime - m6.put("idealCycleTimeMinPerUnit", slope == null ? null : slope); - m6.put("runTimeMin", perfLoss.runTimeMin); - m6.put("idealTimeMin", perfLoss.idealTimeMin); - losses.add(m6); - } - - losses = losses.stream() - .sorted((a, b) -> Integer.compare((Integer) b.get("lossTimeMin"), (Integer) a.get("lossTimeMin"))) - .collect(Collectors.toList()); - - // TopN 原因(按 rawReasonName/remark 聚合) - int topN = queryBo.getTopN() == null || queryBo.getTopN() <= 0 ? 10 : queryBo.getTopN(); - Map> byReason = effective.stream() - .collect(Collectors.groupingBy(this::reasonKey)); - List> topReasons = byReason.entrySet().stream() - .map(entry -> { - List es = entry.getValue(); - int lossMin = es.stream().mapToInt(e -> safeInt(e.getDurationMin())).sum(); - Map m = new HashMap<>(); - m.put("reason", entry.getKey()); - m.put("lossTimeMin", lossMin); - m.put("count", es.size()); - return m; - }) - .sorted((a, b) -> Integer.compare((Integer) b.get("lossTimeMin"), (Integer) a.get("lossTimeMin"))) - .limit(topN) - .collect(Collectors.toList()); - - Map lineBlock = new HashMap<>(); - lineBlock.put("lineId", lineId); - lineBlock.put("lineName", isAcidLine(lineId) ? "酸轧线" : (isGalvanizeLine(lineId) ? "镀锌一线" : lineId)); - lineBlock.put("losses", losses); - lineBlock.put("topReasons", topReasons); - byLine.add(lineBlock); - } - - Map resp = new HashMap<>(); - resp.put("byLine", byLine); - return resp; - } - - @Override - public Map theoryCycleRegression(OeeQueryBo queryBo) { - // 同步:直接向 WMS 请求线性回归结果,等待计算完成后再返回给前端 - log.info("OEE theoryCycleRegression query: {}", queryBo); - if (queryBo == null) { - queryBo = new OeeQueryBo(); - } - long t0 = System.currentTimeMillis(); - - // 直接同步调用 WMS 接口(通过 RestTemplate),不再走异步刷新逻辑 - Map data; - try { - data = fetchTheoryCycleRegressionFromWms(queryBo, null); - } catch (Exception e) { - log.warn("theoryCycleRegression sync call failed, queryBo={}", queryBo, e); - data = new HashMap<>(); - } - if (data == null) { - data = new HashMap<>(); - } - - // 计算元信息,并写入本地缓存,供其他地方(如 resolveIdealCycleMinPerUnit)复用 - boolean empty = isEmptyRegression(data); - Map meta = buildRegressionMeta( - empty ? "FAILED" : "SUCCESS", - empty ? "empty regression result" : null, - System.currentTimeMillis() - t0, - data - ); - String cacheKey = buildRegressionCacheKey(queryBo); - long now = System.currentTimeMillis(); - REGRESSION_CACHE.put(cacheKey, new CachedRegression(now, data, meta)); - - // 对前端保持与原来尽量一致的返回结构 - Map resp = new HashMap<>(); - resp.putAll(data); - resp.put("cacheHit", false); - resp.put("refreshing", false); - resp.put("cacheTime", now); - resp.put("meta", meta); - return resp; - } - - @Override - public TableDataInfo events(OeeQueryBo queryBo, PageQuery pageQuery) { - log.info("OEE events query: {}, pageQuery: {}", queryBo, pageQuery); - LocalDate start = queryBo.getStartDate(); - LocalDate end = queryBo.getEndDate(); - if (start == null || end == null) { - TableDataInfo empty = new TableDataInfo<>(); - empty.setRows(Collections.emptyList()); - empty.setTotal(0); - return empty; - } - - List lineIds = (queryBo.getLineIds() == null || queryBo.getLineIds().isEmpty()) - ? java.util.Arrays.asList("SY", "DX1") - : queryBo.getLineIds(); - - List all = new ArrayList<>(); - for (String lineId : lineIds) { - all.addAll(fetchEvents(lineId, start, end)); - } - - // keyword / lossCategoryCode 简单过滤 - if (queryBo.getLossCategoryCode() != null && !queryBo.getLossCategoryCode().trim().isEmpty()) { - all = all.stream() - .filter(e -> Objects.equals(queryBo.getLossCategoryCode(), e.getLossCategoryCode())) - .collect(Collectors.toList()); - } - if (queryBo.getKeyword() != null && !queryBo.getKeyword().trim().isEmpty()) { - String kw = queryBo.getKeyword().trim(); - all = all.stream() - .filter(e -> (e.getRawReasonName() != null && e.getRawReasonName().contains(kw)) - || (e.getRemark() != null && e.getRemark().contains(kw))) - .collect(Collectors.toList()); - } - - // 默认按开始时间倒序 - all.sort((a, b) -> { - LocalDateTime at = a.getEventStartTime(); - LocalDateTime bt = b.getEventStartTime(); - if (at == null && bt == null) return 0; - if (at == null) return 1; - if (bt == null) return -1; - return bt.compareTo(at); - }); - - int pageNum = pageQuery.getPageNum() == null ? 1 : pageQuery.getPageNum(); - int pageSize = pageQuery.getPageSize() == null ? 10 : pageQuery.getPageSize(); - int from = Math.max(0, (pageNum - 1) * pageSize); - int to = Math.min(all.size(), from + pageSize); - List pageRows = from >= all.size() ? Collections.emptyList() : all.subList(from, to); - - TableDataInfo table = new TableDataInfo<>(); - table.setRows(pageRows); - table.setTotal(all.size()); - return table; - } - - @Override - public void exportWord(OeeQueryBo queryBo, HttpServletResponse response) { - // TODO: 1) 聚合数据;2) 调用 Word 导出模板生成 .docx;3) 写入 response 输出流 - log.info("OEE exportWord query: {}", queryBo); - } - - /** - * 构建镀锌一线 Fizz 报表汇总接口 URL:/api/report/summary - * 对应 ReportController.getReportSummary(groupNo, shiftNo, startTime, endTime) - */ - private String buildGalvanizeSummaryUrl(OeeQueryBo queryBo) { - String base = normalizeBaseUrl(galvanizeLineBaseUrl); - UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(base + "/api/report/summary"); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - if (queryBo != null && queryBo.getStartTime() != null) { - builder.queryParam("startTime", queryBo.getStartTime().format(formatter)); - } - if (queryBo != null && queryBo.getEndTime() != null) { - builder.queryParam("endTime", queryBo.getEndTime().format(formatter)); - } - // groupNo / shiftNo 暂不使用,后续需要可从 queryBo 中扩展字段再拼接 - return builder.toUriString(); - } - - private boolean isAcidLine(String lineId) { - if (lineId == null) return false; - String v = lineId.trim().toUpperCase(); - return v.equals("SY") || v.equals("TCM1") || v.contains("酸") || v.contains("ACID"); - } - - private boolean isGalvanizeLine(String lineId) { - if (lineId == null) return false; - String v = lineId.trim().toUpperCase(); - return v.equals("DX1") || v.equals("G1") || v.contains("镀") || v.contains("GALV"); - } - - private OeeLineSummaryVo buildAcidLineSummary(String lineId, String lineName, LocalDate start, LocalDate end) { - OeeLineSummaryVo vo = new OeeLineSummaryVo(); - vo.setLineId(lineId); - vo.setLineName(lineName); - - List daily = new ArrayList<>(); - BigDecimal totalOutput = BigDecimal.ZERO; - BigDecimal goodOutput = BigDecimal.ZERO; - BigDecimal defectOutput = BigDecimal.ZERO; - int downtimeSum = 0; - int loadingSum = 0; - int runSum = 0; - - for (LocalDate d = start; !d.isAfter(end); d = d.plusDays(1)) { - PocketProductionStats stats = fetchPocketProductionStats(d, d); - BigDecimal qualityRate = fetchCoilQualityRateByDay(d, lineId); - List events = fetchPocketStoppageEvents(d, d); - int plannedDowntime = events.stream().filter(this::isPlannedDowntime).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int downtime = events.stream().filter(e -> !isPlannedDowntime(e)).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int planned = (int) ChronoUnit.MINUTES.between(d.atStartOfDay(), d.plusDays(1).atStartOfDay()); - int loading = Math.max(0, planned - plannedDowntime); - int run = Math.max(0, loading - downtime); - - OeeLineSummaryVo.Daily day = new OeeLineSummaryVo.Daily(); - day.setStatDate(d); - day.setLoadingTimeMin(loading); - day.setDowntimeMin(downtime); - day.setRunTimeMin(run); - // 产量口径:使用出口重量作为“总产量”,良品量 = 出口重量 * 良品率,保证 goodOutput 不大于 totalOutput - BigDecimal total = nvl(stats.totalExitWeight); - day.setTotalOutput(total); - BigDecimal good = total.multiply(qualityRate); - BigDecimal defect = total.subtract(good).max(BigDecimal.ZERO); - day.setGoodOutput(good); - day.setDefectOutput(defect); - - day.setAvailability(calcRate(run, loading)); - day.setQuality(qualityRate); - BigDecimal ict = resolveIdealCycleMinPerUnit(lineId, null); - if (ict == null || ict.compareTo(BigDecimal.ZERO) <= 0) { - ict = idealCycleTimeMinPerUnitSy; - } - BigDecimal perf = calcPerformance(run, nvl(day.getTotalOutput()), ict); - day.setPerformance(perf); - day.setOee(day.getAvailability().multiply(day.getPerformance()).multiply(day.getQuality())); - - daily.add(day); - - totalOutput = totalOutput.add(nvl(day.getTotalOutput())); - goodOutput = goodOutput.add(good); - defectOutput = defectOutput.add(defect); - downtimeSum += downtime; - loadingSum += loading; - runSum += run; - } - - OeeLineSummaryVo.Summary total = new OeeLineSummaryVo.Summary(); - total.setLoadingTimeMin(loadingSum); - total.setDowntimeMin(downtimeSum); - total.setRunTimeMin(runSum); - total.setTotalOutput(totalOutput); - total.setGoodOutput(goodOutput); - total.setDefectOutput(defectOutput); - total.setAvailability(calcRate(runSum, loadingSum)); - // 汇总口径下的良品率 = 区间“良品总量 / 总产量”,同样基于出口重量 - BigDecimal qualityRate = calcRate(goodOutput, totalOutput); - total.setQuality(qualityRate); - BigDecimal ict = resolveIdealCycleMinPerUnit(lineId, null); - if (ict == null || ict.compareTo(BigDecimal.ZERO) <= 0) { - ict = idealCycleTimeMinPerUnitSy; - } - BigDecimal perf = calcPerformance(runSum, nvl(totalOutput), ict); - total.setPerformance(perf); - total.setOee(total.getAvailability().multiply(total.getPerformance()).multiply(total.getQuality())); - - vo.setDaily(daily); - vo.setTotal(total); - return vo; - } - - private OeeLineSummaryVo buildGalvanizeLineSummary(String lineId, String lineName, LocalDate start, LocalDate end) { - OeeLineSummaryVo vo = new OeeLineSummaryVo(); - vo.setLineId(lineId); - vo.setLineName(lineName); - - List daily = new ArrayList<>(); - BigDecimal totalOutput = BigDecimal.ZERO; - BigDecimal goodOutput = BigDecimal.ZERO; - BigDecimal defectOutput = BigDecimal.ZERO; - int downtimeSum = 0; - int loadingSum = 0; - int runSum = 0; - - for (LocalDate d = start; !d.isAfter(end); d = d.plusDays(1)) { - FizzReportSummary stats = fetchFizzReportSummary(d.atStartOfDay(), d.plusDays(1).atStartOfDay().minusSeconds(1)); - BigDecimal qualityRate = fetchCoilQualityRateByDay(d, lineId); - List events = fetchFizzStoppageEvents(d, d); - int plannedDowntime = events.stream().filter(this::isPlannedDowntime).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int downtime = events.stream().filter(e -> !isPlannedDowntime(e)).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int planned = (int) ChronoUnit.MINUTES.between(d.atStartOfDay(), d.plusDays(1).atStartOfDay()); - int loading = Math.max(0, planned - plannedDowntime); - int run = Math.max(0, loading - downtime); - - OeeLineSummaryVo.Daily day = new OeeLineSummaryVo.Daily(); - day.setStatDate(d); - day.setLoadingTimeMin(loading); - day.setDowntimeMin(downtime); - day.setRunTimeMin(run); - // 产量口径:使用实际产出重量作为“总产量”,良品量 = 出口重量 * 良品率 - BigDecimal total = nvl(stats.totalActualWeight); - day.setTotalOutput(total); - BigDecimal good = total.multiply(qualityRate); - BigDecimal defect = total.subtract(good).max(BigDecimal.ZERO); - day.setGoodOutput(good); - day.setDefectOutput(defect); - - day.setAvailability(calcRate(run, loading)); - day.setQuality(qualityRate); - BigDecimal ict = resolveIdealCycleMinPerUnit(lineId, null); - if (ict == null || ict.compareTo(BigDecimal.ZERO) <= 0) { - ict = idealCycleTimeMinPerUnitDx1; - } - BigDecimal perf = calcPerformance(run, nvl(day.getTotalOutput()), ict); - day.setPerformance(perf); - day.setOee(day.getAvailability().multiply(day.getPerformance()).multiply(day.getQuality())); - - daily.add(day); - - totalOutput = totalOutput.add(nvl(day.getTotalOutput())); - goodOutput = goodOutput.add(good); - defectOutput = defectOutput.add(defect); - downtimeSum += downtime; - loadingSum += loading; - runSum += run; - } - - OeeLineSummaryVo.Summary total = new OeeLineSummaryVo.Summary(); - total.setLoadingTimeMin(loadingSum); - total.setDowntimeMin(downtimeSum); - total.setRunTimeMin(runSum); - total.setTotalOutput(totalOutput); - total.setGoodOutput(goodOutput); - total.setDefectOutput(defectOutput); - total.setAvailability(calcRate(runSum, loadingSum)); - BigDecimal qualityRate = calcRate(goodOutput, totalOutput); - total.setQuality(qualityRate); - BigDecimal ict = resolveIdealCycleMinPerUnit(lineId, null); - if (ict == null || ict.compareTo(BigDecimal.ZERO) <= 0) { - ict = idealCycleTimeMinPerUnitDx1; - } - BigDecimal perf = calcPerformance(runSum, nvl(totalOutput), ict); - total.setPerformance(perf); - total.setOee(total.getAvailability().multiply(total.getPerformance()).multiply(total.getQuality())); - - vo.setDaily(daily); - vo.setTotal(total); - return vo; - } - - private List fetchEvents(String lineId, LocalDate start, LocalDate end) { - if (isAcidLine(lineId)) { - return fetchPocketStoppageEvents(start, end); - } - if (isGalvanizeLine(lineId)) { - return fetchFizzStoppageEvents(start, end); - } - return Collections.emptyList(); - } - - /** - * 酸轧线(klp-pocket)生产统计汇总:GET /pocket/productionStatistics/summary - * 响应为 com.klp.common.core.domain.R 包裹。 - */ - private PocketProductionStats fetchPocketProductionStats(LocalDate startDate, LocalDate endDate) { - try { - String base = normalizeBaseUrl(acidLineBaseUrl); - String url = base + "/pocket/productionStatistics/summary" - + "?startDate=" + startDate - + "&endDate=" + endDate; - String json = exchangeGet(url); - JsonNode root = objectMapper.readTree(json); - JsonNode data = root.get("data"); - PocketProductionStats s = new PocketProductionStats(); - s.totalExitWeight = toBigDecimal(data, "totalExitWeight"); - s.totalEntryWeight = toBigDecimal(data, "totalEntryWeight"); - return s; - } catch (Exception e) { - log.warn("fetchPocketProductionStats failed: {}~{}", startDate, endDate, e); - return new PocketProductionStats(); - } - } - - /** - * 酸轧线(klp-pocket)停机事件:GET /pocket/proStoppage/list - * - * 该接口是 TableDataInfo 包裹,对应的 Bo 为 Klptcm1ProStoppageBo, - * 其中查询字段名就是 startDate/endDate(已确认)。 - */ - private List fetchPocketStoppageEvents(LocalDate startDate, LocalDate endDate) { - try { - String base = normalizeBaseUrl(acidLineBaseUrl); - String url = base + "/pocket/proStoppage/list" - + "?pageNum=1&pageSize=10000" - + "&startDate=" + startDate - + "&endDate=" + endDate; - String json = exchangeGet(url); - JsonNode root = objectMapper.readTree(json); - JsonNode rows = root.get("rows"); - if (rows == null || !rows.isArray()) return Collections.emptyList(); - - List list = new ArrayList<>(); - for (JsonNode n : rows) { - OeeEventVo e = new OeeEventVo(); - e.setLineId("SY"); - e.setLineName("酸轧线"); - e.setEventStartTime(toLocalDateTime(n, "startDate")); - e.setEventEndTime(toLocalDateTime(n, "endDate")); - // 源库 duration 为“秒”,这里统一换算成分钟(向上取整),与整体 OEE 口径保持一致 - Integer sec = toInt(n, "duration"); - int minutes = sec == null ? 0 : (int) Math.ceil(sec / 60.0); - e.setDurationMin(minutes); - e.setRawReasonCode(toText(n, "stopType")); - e.setRawReasonName(toText(n, "remark")); - e.setLossCategoryCode(toText(n, "stopType")); - e.setLossCategoryName(toText(n, "stopType")); - e.setRemark(toText(n, "remark")); - list.add(e); - } - return list; - } catch (Exception e) { - log.warn("fetchPocketStoppageEvents failed: {}~{}", startDate, endDate, e); - return Collections.emptyList(); - } - } - - /** - * 镀锌一线(Fizz)生产实绩汇总:GET /api/report/summary - * 响应为 ReportSummaryVO 结构(无 R 包裹)。 - */ - private FizzReportSummary fetchFizzReportSummary(LocalDateTime startTime, LocalDateTime endTime) { - try { - OeeQueryBo qb = new OeeQueryBo(); - qb.setStartTime(startTime); - qb.setEndTime(endTime); - String url = buildGalvanizeSummaryUrl(qb); - String json = exchangeGet(url); - JsonNode root = objectMapper.readTree(json); - FizzReportSummary s = new FizzReportSummary(); - s.totalActualWeight = toBigDecimal(root, "totalActualWeight"); - s.totalEntryWeight = toBigDecimal(root, "totalEntryWeight"); - return s; - } catch (Exception e) { - log.warn("fetchFizzReportSummary failed: {}~{}", startTime, endTime, e); - return new FizzReportSummary(); - } - } - - /** - * 使用本地 WMS 钢卷物料接口,根据“质量等级”统计某一天某条线的良品率: - * - 质量字段:quality_status,取值包括 A/B/...、C+、C、C-、D+、D、D- 等 - * - 规则:C+、C、C-、D+、D、D- 视为次品,其余全部视为良品 - * - 分母:当天该实际库区的钢卷数量(按创建时间 byCreateTimeStart/End + actualWarehouseId) - * - 分子:分母减去“次品数量”(onlyScrap=true,对应 C/D 整个等级) - * - * lineId -> 库区映射: - * - 酸轧线:actualWarehouseId = 1988150099140866050 - * - 镀锌一线:actualWarehouseId = 1988150323162836993 - */ - private BigDecimal fetchCoilQualityRateByDay(LocalDate day, String lineId) { - try { - Long actualWarehouseId = null; - if (isAcidLine(lineId)) { - actualWarehouseId = 1988150099140866050L; - } else if (isGalvanizeLine(lineId)) { - actualWarehouseId = 1988150323162836993L; - } - if (actualWarehouseId == null) { - // 未知产线:退化为全厂口径 - return fetchCoilQualityRateByDay(day); - } - - String base = normalizeBaseUrl(acidLineBaseUrl); - String start = day.atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - String end = day.plusDays(1).atStartOfDay().minusSeconds(1) - .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - - // 全部钢卷数量 - 使用 UriComponentsBuilder 正确构建 URL 并处理编码 - String allUrl = UriComponentsBuilder.fromHttpUrl(base + "/wms/materialCoil/list") - .queryParam("pageNum", 1) - .queryParam("pageSize", 1) - .queryParam("byCreateTimeStart", start) - .queryParam("byCreateTimeEnd", end) - .queryParam("actualWarehouseId", actualWarehouseId) - .toUriString(); - String allJson = exchangeGet(allUrl); - JsonNode allRoot = objectMapper.readTree(allJson); - long totalAll = allRoot.path("total").asLong(0); - if (totalAll <= 0) { - return BigDecimal.ONE; - } - - // 次品钢卷数量:onlyScrap = true => quality_status IN ('C+','C','C-','D+','D','D-') - String goodUrl = UriComponentsBuilder.fromHttpUrl(base + "/wms/materialCoil/list") - .queryParam("pageNum", 1) - .queryParam("pageSize", 1) - .queryParam("byCreateTimeStart", start) - .queryParam("byCreateTimeEnd", end) - .queryParam("actualWarehouseId", actualWarehouseId) - .queryParam("onlyScrap", "true") - .toUriString(); - String goodJson = exchangeGet(goodUrl); - JsonNode goodRoot = objectMapper.readTree(goodJson); - long totalScrap = goodRoot.path("total").asLong(0); - long totalGood = Math.max(0, totalAll - totalScrap); - return calcRate(BigDecimal.valueOf(totalGood), BigDecimal.valueOf(totalAll)); - } catch (Exception e) { - log.warn("fetchCoilQualityRateByDay failed for day {}: {}", day, e.getMessage()); - // 失败时默认按 100% 良品率处理,避免影响主逻辑 - return BigDecimal.ONE; - } - } - - /** - * 全厂整体良品率(仅在无法识别产线时兜底使用)。 - */ - private BigDecimal fetchCoilQualityRateByDay(LocalDate day) { - try { - String base = normalizeBaseUrl(acidLineBaseUrl); - String start = day.atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - String end = day.plusDays(1).atStartOfDay().minusSeconds(1) - .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - - // 全部钢卷数量 - 使用 UriComponentsBuilder 正确构建 URL 并处理编码 - String allUrl = UriComponentsBuilder.fromHttpUrl(base + "/wms/materialCoil/list") - .queryParam("pageNum", 1) - .queryParam("pageSize", 1) - .queryParam("byCreateTimeStart", start) - .queryParam("byCreateTimeEnd", end) - .toUriString(); - String allJson = exchangeGet(allUrl); - JsonNode allRoot = objectMapper.readTree(allJson); - long totalAll = allRoot.path("total").asLong(0); - if (totalAll <= 0) { - return BigDecimal.ONE; - } - - // 良品钢卷数量:quality_status = '0' - String goodUrl = UriComponentsBuilder.fromHttpUrl(base + "/wms/materialCoil/list") - .queryParam("pageNum", 1) - .queryParam("pageSize", 1) - .queryParam("byCreateTimeStart", start) - .queryParam("byCreateTimeEnd", end) - .queryParam("qualityStatus", "0") - .toUriString(); - String goodJson = exchangeGet(goodUrl); - JsonNode goodRoot = objectMapper.readTree(goodJson); - long totalGood = goodRoot.path("total").asLong(0); - - return calcRate(BigDecimal.valueOf(totalGood), BigDecimal.valueOf(totalAll)); - } catch (Exception e) { - log.warn("fetchCoilQualityRateByDay(all) failed for day {}: {}", day, e.getMessage()); - return BigDecimal.ONE; - } - } - - /** - * 镀锌一线(Fizz)停机事件:POST /api/stoppage/list - * 响应为 com.ruoyi.common.core.domain.R 包裹。 - */ - private List fetchFizzStoppageEvents(LocalDate startDate, LocalDate endDate) { - try { - String base = normalizeBaseUrl(galvanizeLineBaseUrl); - String url = base + "/api/stoppage/list"; - Map body = new HashMap<>(); - body.put("startDate", startDate.toString()); - body.put("endDate", endDate.toString()); - - String json = exchangePost(url, body); - JsonNode root = objectMapper.readTree(json); - JsonNode data = root.get("data"); - if (data == null || !data.isArray()) return Collections.emptyList(); - - List list = new ArrayList<>(); - for (JsonNode n : data) { - OeeEventVo e = new OeeEventVo(); - e.setLineId("DX1"); - e.setLineName("镀锌一线"); - e.setEventStartTime(toLocalDateTime(n, "startDate")); - e.setEventEndTime(toLocalDateTime(n, "endDate")); - // duration 在 Fizz 为 BigDecimal,单位为“秒”,这里统一换算成分钟(向上取整) - BigDecimal sec = toBigDecimal(n, "duration"); - int minutes = sec == null ? 0 : (int) Math.ceil(sec.doubleValue() / 60.0); - e.setDurationMin(minutes); - e.setRawReasonCode(toText(n, "stopType")); - e.setRawReasonName(toText(n, "remark")); - e.setLossCategoryCode(toText(n, "stopType")); - e.setLossCategoryName(toText(n, "stopType")); - e.setRemark(toText(n, "remark")); - list.add(e); - } - return list; - } catch (Exception e) { - log.warn("fetchFizzStoppageEvents failed: {}~{}", startDate, endDate, e); - return Collections.emptyList(); - } - } - - private String normalizeBaseUrl(String baseUrl) { - if (baseUrl == null || baseUrl.trim().isEmpty()) { - // 默认指向当前应用(同域调用) - return "http://localhost:8080"; - } - String s = baseUrl.trim(); - if (s.endsWith("/")) s = s.substring(0, s.length() - 1); - return s; - } - - /** - * 透传当前请求的 Authorization(Bearer Token)到下游服务调用。 - */ - private HttpHeaders buildForwardHeaders() { - HttpHeaders headers = new HttpHeaders(); - try { - String override = AUTH_OVERRIDE.get(); - if (override != null && !override.trim().isEmpty()) { - headers.set(HEADER_AUTHORIZATION, override.trim()); - return headers; - } - ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attrs == null) { - return headers; - } - HttpServletRequest req = attrs.getRequest(); - if (req == null) { - return headers; - } - String auth = req.getHeader(HEADER_AUTHORIZATION); - if (auth != null && !auth.trim().isEmpty()) { - headers.set(HEADER_AUTHORIZATION, auth); - } else { - // 兜底:若上游只传 token,则按 Bearer 拼接(兼容性处理) - String token = req.getHeader("token"); - if (token != null && !token.trim().isEmpty()) { - headers.set(HEADER_AUTHORIZATION, HEADER_BEARER_PREFIX + token.trim()); - } - } - } catch (Exception ignore) { - } - return headers; - } - - /** - * 用于异步线程:显式带入上游 Authorization,避免 RequestContextHolder 不可用导致无法透传 token。 - */ - private HttpHeaders buildForwardHeaders(String authorization) { - HttpHeaders headers = new HttpHeaders(); - if (authorization != null && !authorization.trim().isEmpty()) { - headers.set(HEADER_AUTHORIZATION, authorization.trim()); - } - return headers; - } - - private String exchangeGet(String url) { - return exchangeGet(url, null); - } - - private String exchangeGet(String url, String authorization) { - HttpHeaders headers = (authorization == null) ? buildForwardHeaders() : buildForwardHeaders(authorization); - HttpEntity entity = new HttpEntity<>(headers); - // 注意:url 可能已经包含 %20 等编码字符。使用 URI 形态调用可避免 RestTemplate 再次对 % 进行转义导致 %2520。 - URI uri = URI.create(url); - return restTemplate.exchange(uri, HttpMethod.GET, entity, String.class).getBody(); - } - - private String exchangePost(String url, Object body) { - HttpEntity entity = new HttpEntity<>(body, buildForwardHeaders()); - URI uri = URI.create(url); - return restTemplate.exchange(uri, HttpMethod.POST, entity, String.class).getBody(); - } - - private BigDecimal calcRate(int numerator, int denominator) { - if (denominator <= 0) return BigDecimal.ZERO; - return BigDecimal.valueOf(numerator) - .divide(BigDecimal.valueOf(denominator), 6, RoundingMode.HALF_UP); - } - - private BigDecimal calcRate(BigDecimal numerator, BigDecimal denominator) { - if (denominator == null || denominator.compareTo(BigDecimal.ZERO) <= 0) { - return BigDecimal.ZERO; - } - return nvl(numerator).divide(denominator, 6, RoundingMode.HALF_UP); - } - - private BigDecimal nvl(BigDecimal v) { - return v == null ? BigDecimal.ZERO : v; - } - - /** - * 性能稼动率(Performance) - * P = ideal_time_min / run_time_min = (ideal_cycle_time * total_output) / run_time_min - * - * 注意:如果 idealCycleTimeMinPerUnit 未配置(<=0),则退化为 1(不让报表全为 0)。 - */ - private BigDecimal calcPerformance(int runTimeMin, BigDecimal totalOutput, BigDecimal idealCycleTimeMinPerUnit) { - if (runTimeMin <= 0) { - return BigDecimal.ZERO; - } - BigDecimal ict = nvl(idealCycleTimeMinPerUnit); - if (ict.compareTo(BigDecimal.ZERO) <= 0) { - return BigDecimal.ONE; - } - BigDecimal idealTimeMin = ict.multiply(nvl(totalOutput)); // min - return idealTimeMin.divide(BigDecimal.valueOf(runTimeMin), 6, RoundingMode.HALF_UP); - } - - /** - * 从 WMS 回归结果中解析“分钟/吨”的斜率作为理论节拍(优先用近6个月默认窗口;如 queryBo 带 startTime/endTime,则以其为窗口)。 - */ - private BigDecimal resolveIdealCycleMinPerUnit(String lineId, OeeQueryBo queryBo) { - try { - OeeQueryBo qb = queryBo == null ? new OeeQueryBo() : queryBo; - String cacheKey = buildRegressionCacheKey(qb); - CachedRegression cached = REGRESSION_CACHE.get(cacheKey); - long now = System.currentTimeMillis(); - boolean expired = cached == null || (now - cached.ts) > REGRESSION_CACHE_TTL_MS; - if (expired) { - long t0 = System.currentTimeMillis(); - Map m = fetchTheoryCycleRegressionFromWmsSafe(qb, captureAuthorization()); - Map meta = buildRegressionMeta(isEmptyRegression(m) ? "FAILED" : "SUCCESS", - isEmptyRegression(m) ? "empty regression result" : null, System.currentTimeMillis() - t0, m); - REGRESSION_CACHE.put(cacheKey, new CachedRegression(System.currentTimeMillis(), m, meta)); - cached = REGRESSION_CACHE.get(cacheKey); - } - if (cached == null || cached.data == null) return null; - - Object linesObj = cached.data.get("lines"); - if (!(linesObj instanceof List)) return null; - List lines = (List) linesObj; - for (Object o : lines) { - if (!(o instanceof Map)) continue; - Map lm = (Map) o; - Object lid = lm.get("lineId"); - if (lid == null) continue; - if (!Objects.equals(lid.toString().trim().toUpperCase(), lineId.trim().toUpperCase())) continue; - Object slope = lm.get("slopeMinPerTon"); - if (slope == null) return null; - return new BigDecimal(slope.toString()); - } - return null; - } catch (Exception e) { - log.warn("resolveIdealCycleMinPerUnit failed for lineId={}", lineId, e); - return null; - } - } - - private String buildRegressionCacheKey(OeeQueryBo queryBo) { - if (queryBo == null) return "DEFAULT"; - String s = queryBo.getStartTime() == null ? "" : queryBo.getStartTime().toString(); - String e = queryBo.getEndTime() == null ? "" : queryBo.getEndTime().toString(); - return s + "|" + e; - } - - /** - * 安全地从 WMS 拉取回归结果,异常时返回空 Map,避免影响主流程。 - */ - private Map fetchTheoryCycleRegressionFromWmsSafe(OeeQueryBo queryBo, String authorization) { - try { - Map m = fetchTheoryCycleRegressionFromWms(queryBo, authorization); - return (m == null) ? new HashMap<>() : m; - } catch (ResourceAccessException e) { - String msg = e.getMostSpecificCause() == null ? e.getMessage() : e.getMostSpecificCause().getMessage(); - log.warn("fetchTheoryCycleRegressionFromWmsSafe timeout, queryBo={}, msg={}", queryBo, msg); - return new HashMap<>(); - } catch (Exception e) { - log.warn("fetchTheoryCycleRegressionFromWmsSafe failed, queryBo={}", queryBo, e); - return new HashMap<>(); - } - } - - /** - * 从当前请求上下文中提取 Authorization(或 token 拼接为 Bearer),供异步/安全调用使用。 - */ - private String captureAuthorization() { - try { - ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attrs == null || attrs.getRequest() == null) { - return null; - } - HttpServletRequest req = attrs.getRequest(); - String auth = req.getHeader(HEADER_AUTHORIZATION); - if (auth != null && !auth.trim().isEmpty()) { - return auth.trim(); - } - String token = req.getHeader("token"); - if (token != null && !token.trim().isEmpty()) { - return HEADER_BEARER_PREFIX + token.trim(); - } - } catch (Exception ignore) { - } - return null; - } - - private Map getTheoryCycleRegressionCached(OeeQueryBo queryBo, boolean triggerRefresh) { - if (queryBo == null) { - queryBo = new OeeQueryBo(); - } - String cacheKey = buildRegressionCacheKey(queryBo); - CachedRegression cached = REGRESSION_CACHE.get(cacheKey); - long now = System.currentTimeMillis(); - - boolean expired = cached == null || (now - cached.ts) > REGRESSION_CACHE_TTL_MS; - if (expired && triggerRefresh) { - triggerRegressionRefreshAsync(queryBo, cacheKey); - } - - Map resp = new HashMap<>(); - if (cached != null && cached.data != null && !cached.data.isEmpty()) { - resp.putAll(cached.data); - } - resp.put("cacheHit", cached != null && !expired); - resp.put("refreshing", Boolean.TRUE.equals(REGRESSION_REFRESHING.get(cacheKey))); - resp.put("cacheTime", cached == null ? null : cached.ts); - if (cached != null && cached.meta != null) { - resp.put("meta", cached.meta); - } - return resp; - } - - private void triggerRegressionRefreshAsync(OeeQueryBo queryBo, String cacheKey) { - if (Boolean.TRUE.equals(REGRESSION_REFRESHING.putIfAbsent(cacheKey, Boolean.TRUE))) { - return; - } - Long lastFail = REGRESSION_LAST_FAIL_TS.get(cacheKey); - long now = System.currentTimeMillis(); - if (lastFail != null && (now - lastFail) < REGRESSION_FAIL_BACKOFF_MS) { - REGRESSION_REFRESHING.remove(cacheKey); - return; - } - // 捕获当前请求的 Authorization(异步线程拿不到 RequestContextHolder) - String auth = null; - try { - ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attrs != null && attrs.getRequest() != null) { - auth = attrs.getRequest().getHeader(HEADER_AUTHORIZATION); - if ((auth == null || auth.trim().isEmpty())) { - String token = attrs.getRequest().getHeader("token"); - if (token != null && !token.trim().isEmpty()) { - auth = HEADER_BEARER_PREFIX + token.trim(); - } - } - } - } catch (Exception ignore) { - } - // 复制一份 queryBo,避免异步读取时对象被外部修改 - OeeQueryBo qb = new OeeQueryBo(); - qb.setStartTime(queryBo == null ? null : queryBo.getStartTime()); - qb.setEndTime(queryBo == null ? null : queryBo.getEndTime()); - - final String finalAuth = auth; - REGRESSION_EXECUTOR.submit(() -> { - long t0 = System.currentTimeMillis(); - log.info("theoryCycleRegression async refresh started, key={}, window={}~{}", cacheKey, qb.getStartTime(), qb.getEndTime()); - try { - Map m = fetchTheoryCycleRegressionFromWms(qb, finalAuth); - if (isEmptyRegression(m)) { - throw new IllegalStateException("empty regression result"); - } - Map meta = buildRegressionMeta("SUCCESS", null, System.currentTimeMillis() - t0, m); - REGRESSION_CACHE.put(cacheKey, new CachedRegression(System.currentTimeMillis(), m, meta)); - log.info("theoryCycleRegression async refresh finished: success, costMs={}, summary={}", (System.currentTimeMillis() - t0), summarizeRegression(m)); - } catch (ResourceAccessException e) { - // Read timed out 这类不要刷堆栈,避免噪音 - String msg = e.getMostSpecificCause() == null ? e.getMessage() : e.getMostSpecificCause().getMessage(); - Map meta = buildRegressionMeta("FAILED", msg, System.currentTimeMillis() - t0, null); - CachedRegression prev = REGRESSION_CACHE.get(cacheKey); - Map keep = prev == null ? new HashMap<>() : prev.data; - REGRESSION_CACHE.put(cacheKey, new CachedRegression(System.currentTimeMillis(), keep, meta)); - REGRESSION_LAST_FAIL_TS.put(cacheKey, System.currentTimeMillis()); - log.warn("theoryCycleRegression async refresh finished: failed(timeout), costMs={}, msg={}", (System.currentTimeMillis() - t0), msg); - } catch (Exception e) { - String msg = e.getMessage(); - Map meta = buildRegressionMeta("FAILED", msg, System.currentTimeMillis() - t0, null); - CachedRegression prev = REGRESSION_CACHE.get(cacheKey); - Map keep = prev == null ? new HashMap<>() : prev.data; - REGRESSION_CACHE.put(cacheKey, new CachedRegression(System.currentTimeMillis(), keep, meta)); - REGRESSION_LAST_FAIL_TS.put(cacheKey, System.currentTimeMillis()); - log.warn("theoryCycleRegression async refresh finished: failed, costMs={}, msg={}", (System.currentTimeMillis() - t0), msg); - } finally { - REGRESSION_REFRESHING.remove(cacheKey); - } - }); - } - - private Map buildRegressionMeta(String status, String errorMsg, long costMs, Map data) { - Map meta = new HashMap<>(); - meta.put("status", status); - meta.put("costMs", costMs); - meta.put("errorMsg", errorMsg); - meta.put("updatedAt", System.currentTimeMillis()); - meta.put("summary", summarizeRegression(data)); - return meta; - } - - private Map summarizeRegression(Map data) { - Map s = new HashMap<>(); - if (data == null) return s; - Object linesObj = data.get("lines"); - if (!(linesObj instanceof List)) return s; - List lines = (List) linesObj; - for (Object o : lines) { - if (!(o instanceof Map)) continue; - Map lm = (Map) o; - Object lineId = lm.get("lineId"); - if (lineId == null) continue; - Map one = new HashMap<>(); - one.put("slopeMinPerTon", lm.get("slopeMinPerTon")); - one.put("r2", lm.get("r2")); - one.put("sampleCount", lm.get("sampleCount")); - s.put(lineId.toString(), one); - } - return s; - } - - private Map fetchTheoryCycleRegressionFromWms(OeeQueryBo queryBo, String authorization) { - String base = normalizeBaseUrl(wmsBaseUrl); - String url = base + "/wms/coilPendingAction/theoryCycle/regression"; - UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url); - DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - if (queryBo != null && queryBo.getStartTime() != null) { - builder.queryParam("startTime", queryBo.getStartTime().format(f)); - } - if (queryBo != null && queryBo.getEndTime() != null) { - builder.queryParam("endTime", queryBo.getEndTime().format(f)); - } - // 默认不拉取 points,避免返回体过大导致连接写入中断 - builder.queryParam("includePoints", "false"); - builder.queryParam("maxPoints", "2000"); - String json = exchangeGetLongRead(builder.toUriString(), authorization); - if (json == null || json.trim().isEmpty()) { - return new HashMap<>(); - } - try { - JsonNode root = objectMapper.readTree(json); - JsonNode data = root.has("data") ? root.get("data") : root; - @SuppressWarnings("unchecked") - Map m = objectMapper.convertValue(data, Map.class); - return m == null ? new HashMap<>() : m; - } catch (Exception e) { - throw new IllegalStateException("parse regression response failed", e); - } - } - - private String exchangeGetLongRead(String url, String authorization) { - HttpHeaders headers = (authorization == null) ? buildForwardHeaders() : buildForwardHeaders(authorization); - HttpEntity entity = new HttpEntity<>(headers); - URI uri = URI.create(url); - return longReadRestTemplate.exchange(uri, HttpMethod.GET, entity, String.class).getBody(); - } - - private RestTemplate buildLongReadRestTemplate() { - SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); - factory.setConnectTimeout(30_000); - factory.setReadTimeout(300_000); // 5 分钟 - return new RestTemplate(factory); - } - - private boolean isEmptyRegression(Map m) { - if (m == null || m.isEmpty()) return true; - Object linesObj = m.get("lines"); - if (!(linesObj instanceof List)) return true; - return ((List) linesObj).isEmpty(); - } - - private PerformanceLoss calcPerformanceLossMinutes(String lineId, LocalDate start, LocalDate end, BigDecimal idealCycleTimeMinPerUnit) { - PerformanceLoss r = new PerformanceLoss(); - if (idealCycleTimeMinPerUnit == null || idealCycleTimeMinPerUnit.compareTo(BigDecimal.ZERO) <= 0) { - return r; - } - // 复用 summary 的聚合规则:runTimeSum + totalOutputSum - int runSum = 0; - BigDecimal outSum = BigDecimal.ZERO; - for (LocalDate d = start; !d.isAfter(end); d = d.plusDays(1)) { - int planned = (int) ChronoUnit.MINUTES.between(d.atStartOfDay(), d.plusDays(1).atStartOfDay()); - List events = fetchEvents(lineId, d, d); - int plannedDowntime = events.stream().filter(this::isPlannedDowntime).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int downtime = events.stream().filter(e -> !isPlannedDowntime(e)).mapToInt(e -> safeInt(e.getDurationMin())).sum(); - int loading = Math.max(0, planned - plannedDowntime); - int run = Math.max(0, loading - downtime); - runSum += run; - - if (isAcidLine(lineId)) { - PocketProductionStats stats = fetchPocketProductionStats(d, d); - outSum = outSum.add(nvl(stats.totalExitWeight)); - } else if (isGalvanizeLine(lineId)) { - FizzReportSummary stats = fetchFizzReportSummary(d.atStartOfDay(), d.plusDays(1).atStartOfDay().minusSeconds(1)); - outSum = outSum.add(nvl(stats.totalActualWeight)); - } - } - - BigDecimal idealTimeMin = idealCycleTimeMinPerUnit.multiply(nvl(outSum)); - BigDecimal runTimeMin = BigDecimal.valueOf(runSum); - BigDecimal loss = runTimeMin.subtract(idealTimeMin); - int lossMin = loss.compareTo(BigDecimal.ZERO) <= 0 ? 0 : loss.setScale(0, RoundingMode.HALF_UP).intValue(); - - r.runTimeMin = runSum; - r.idealTimeMin = idealTimeMin.setScale(2, RoundingMode.HALF_UP); - r.performanceLossMin = lossMin; - return r; - } - - private static class CachedRegression { - final long ts; - final Map data; - final Map meta; - - private CachedRegression(long ts, Map data, Map meta) { - this.ts = ts; - this.data = data; - this.meta = meta; - } - } - - private static class PerformanceLoss { - int runTimeMin = 0; - BigDecimal idealTimeMin = BigDecimal.ZERO; - int performanceLossMin = 0; - } - - private int safeInt(Integer v) { - return v == null ? 0 : v; - } - - private boolean isPlannedDowntime(OeeEventVo e) { - String s = (e == null) ? null : (e.getRawReasonName() != null ? e.getRawReasonName() : e.getRemark()); - if (s == null) return false; - String t = s.trim(); - return t.contains("计划停机"); - } - - private String reasonKey(OeeEventVo e) { - if (e == null) return "UNKNOWN"; - String name = e.getRawReasonName(); - if (name == null || name.trim().isEmpty()) { - name = e.getRemark(); - } - if (name == null || name.trim().isEmpty()) { - name = e.getRawReasonCode(); - } - return (name == null || name.trim().isEmpty()) ? "UNKNOWN" : name.trim(); - } - - private LossCategory mapLossCategory(OeeEventVo e) { - String reason = reasonKey(e); - // 计划停机不算损失(在上层已过滤),这里兜底 - if (reason.contains("计划停机")) { - return LossCategory.UNKNOWN; - } - // 换辊:更接近“刀具交换/换辊换刀” - if (reason.contains("换辊")) { - return LossCategory.TOOL_CHANGE; - } - // 故障类 - if (reason.contains("机械故障") || reason.contains("电气故障") || reason.contains("计算机") || reason.contains("网络")) { - return LossCategory.BREAKDOWN; - } - // 来料缺陷:先归到“短暂停机/待料” - if (reason.contains("来料缺陷")) { - return LossCategory.MINOR_STOPS; - } - // 外部干扰:待料、停电等 - if (reason.contains("外部干扰") || reason.contains("待料") || reason.contains("停电")) { - return LossCategory.MINOR_STOPS; - } - // 设备检修:通常更接近计划性停机;若你们口径上算停机损失,可调整为 BREAKDOWN / SETUP - if (reason.contains("设备检修") || reason.contains("检修")) { - return LossCategory.SETUP_ADJUSTMENT; - } - // 其他 - if (reason.contains("其他")) { - return LossCategory.UNKNOWN; - } - return LossCategory.UNKNOWN; - } - - private enum LossCategory { - BREAKDOWN("1", "故障"), - SETUP_ADJUSTMENT("2", "换模换线/调整"), - TOOL_CHANGE("3", "刀具交换"), - WARM_UP("4", "暖机"), - MINOR_STOPS("5", "空转/短暂停机"), - UNKNOWN("UNKNOWN", "未分类"); - - final String code; - final String name; - - LossCategory(String code, String name) { - this.code = code; - this.name = name; - } - - static LossCategory byCode(String code) { - for (LossCategory c : values()) { - if (Objects.equals(c.code, code)) return c; - } - return UNKNOWN; - } - } - - private BigDecimal toBigDecimal(JsonNode node, String field) { - if (node == null) return BigDecimal.ZERO; - JsonNode v = node.get(field); - if (v == null || v.isNull()) return BigDecimal.ZERO; - if (v.isNumber()) return v.decimalValue(); - String s = v.asText(); - if (s == null || s.trim().isEmpty()) return BigDecimal.ZERO; - try { - return new BigDecimal(s); - } catch (Exception e) { - return BigDecimal.ZERO; - } - } - - private String toText(JsonNode node, String field) { - if (node == null) return null; - JsonNode v = node.get(field); - if (v == null || v.isNull()) return null; - String s = v.asText(); - return (s == null || s.trim().isEmpty()) ? null : s; - } - - private Integer toInt(JsonNode node, String field) { - if (node == null) return 0; - JsonNode v = node.get(field); - if (v == null || v.isNull()) return 0; - if (v.isNumber()) return v.asInt(); - try { - return Integer.parseInt(v.asText()); - } catch (Exception e) { - return 0; - } - } - - private LocalDateTime toLocalDateTime(JsonNode node, String field) { - String s = toText(node, field); - if (s == null) return null; - try { - // 兼容 "yyyy-MM-dd HH:mm:ss" / ISO - if (s.contains("T")) { - return LocalDateTime.parse(s); - } - DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - return LocalDateTime.parse(s, f); - } catch (Exception e) { - return null; - } - } - - private static class PocketProductionStats { - BigDecimal totalEntryWeight = BigDecimal.ZERO; - BigDecimal totalExitWeight = BigDecimal.ZERO; - } - - private static class FizzReportSummary { - BigDecimal totalEntryWeight = BigDecimal.ZERO; - BigDecimal totalActualWeight = BigDecimal.ZERO; - } -} - diff --git a/klp-da/src/main/java/com/klp/da/service/impl/OeeSummaryJobServiceImpl.java b/klp-da/src/main/java/com/klp/da/service/impl/OeeSummaryJobServiceImpl.java deleted file mode 100644 index 1021aede..00000000 --- a/klp-da/src/main/java/com/klp/da/service/impl/OeeSummaryJobServiceImpl.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.klp.da.service.impl; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.klp.da.domain.bo.OeeQueryBo; -import com.klp.da.domain.vo.OeeLineSummaryVo; -import com.klp.da.service.IOeeReportService; -import com.klp.da.service.OeeSummaryJobService; -import com.klp.framework.websocket.TypeWebSocketUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -@Slf4j -@Service -@RequiredArgsConstructor -public class OeeSummaryJobServiceImpl implements OeeSummaryJobService { - - public static final String WS_TYPE_PREFIX = "oee_summary:"; - - private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(2, r -> { - Thread t = new Thread(r); - t.setName("oee-summary-job"); - t.setDaemon(true); - return t; - }); - - private final IOeeReportService oeeReportService; - private final ObjectMapper objectMapper = new ObjectMapper(); - - @Override - public Map createAndStart(OeeQueryBo queryBo) { - String jobId = UUID.randomUUID().toString().replace("-", ""); - String wsType = WS_TYPE_PREFIX + jobId; - - String auth = captureAuthorization(); - log.info("[OEE][summary][job] created jobId={}, wsType={}, window={}~{}, lines={}, authPresent={}", - jobId, - wsType, - queryBo == null ? null : queryBo.getStartDate(), - queryBo == null ? null : queryBo.getEndDate(), - queryBo == null ? null : queryBo.getLineIds(), - auth != null && !auth.trim().isEmpty()); - - push(jobId, wsType, "running", 5, "任务已创建,准备生成汇总…", null, null); - - OeeQueryBo qb = copyQueryBo(queryBo); - EXECUTOR.submit(() -> run(jobId, wsType, qb, auth)); - - Map resp = new HashMap<>(); - resp.put("jobId", jobId); - resp.put("wsType", wsType); - return resp; - } - - private void run(String jobId, String wsType, OeeQueryBo queryBo, String authorization) { - long t0 = System.currentTimeMillis(); - try { - System.out.println("[OEE][summary][job] start jobId=" + jobId + ", wsType=" + wsType - + ", thread=" + Thread.currentThread().getName() - + ", authPresent=" + (authorization != null && !authorization.trim().isEmpty())); - log.info("[OEE][summary][job] start jobId={}, wsType={}, thread={}, authPresent={}", - jobId, wsType, Thread.currentThread().getName(), authorization != null && !authorization.trim().isEmpty()); - push(jobId, wsType, "running", 20, "正在聚合 KPI 与趋势…", null, null); - OeeReportServiceImpl.setAuthOverride(authorization); - List lines = oeeReportService.summary(queryBo); - push(jobId, wsType, "running", 90, "正在整理汇总结果…", null, null); - - Map data = new HashMap<>(); - data.put("lines", lines); - - push(jobId, wsType, "success", 100, "汇总生成完成", data, null); - System.out.println("[OEE][summary][job] success jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0) - + ", lineCount=" + (lines == null ? 0 : lines.size())); - log.info("[OEE][summary][job] success jobId={}, costMs={}, lineCount={}", - jobId, (System.currentTimeMillis() - t0), lines == null ? 0 : lines.size()); - } catch (Exception e) { - log.warn("summary job failed, jobId={}", jobId, e); - push(jobId, wsType, "failed", 100, "汇总生成失败", null, e.getMessage()); - System.out.println("[OEE][summary][job] failed jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0) - + ", msg=" + e.getMessage()); - log.warn("[OEE][summary][job] failed jobId={}, costMs={}, msg={}", - jobId, (System.currentTimeMillis() - t0), e.getMessage()); - } finally { - OeeReportServiceImpl.clearAuthOverride(); - System.out.println("[OEE][summary][job] end jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0)); - log.info("[OEE][summary][job] end jobId={}, costMs={}", jobId, (System.currentTimeMillis() - t0)); - } - } - - private void push(String jobId, String wsType, String status, int progress, String text, - Map data, String errorMsg) { - try { - Map msg = new HashMap<>(); - msg.put("jobId", jobId); - msg.put("status", status); - msg.put("progress", progress); - msg.put("text", text); - if (data != null) { - msg.put("data", data); - } - if (errorMsg != null && !errorMsg.trim().isEmpty()) { - msg.put("errorMsg", errorMsg); - } - TypeWebSocketUtil.sendToType(wsType, objectMapper.writeValueAsString(msg)); - } catch (Exception ignore) { - } - } - - private OeeQueryBo copyQueryBo(OeeQueryBo queryBo) { - OeeQueryBo qb = new OeeQueryBo(); - if (queryBo == null) { - return qb; - } - qb.setStartDate(queryBo.getStartDate()); - qb.setEndDate(queryBo.getEndDate()); - qb.setLineIds(queryBo.getLineIds()); - qb.setStartTime(queryBo.getStartTime()); - qb.setEndTime(queryBo.getEndTime()); - qb.setTopN(queryBo.getTopN()); - qb.setLossCategoryCode(queryBo.getLossCategoryCode()); - qb.setKeyword(queryBo.getKeyword()); - return qb; - } - - private String captureAuthorization() { - try { - ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attrs == null || attrs.getRequest() == null) { - return null; - } - HttpServletRequest req = attrs.getRequest(); - String auth = req.getHeader("Authorization"); - if (auth != null && !auth.trim().isEmpty()) { - return auth.trim(); - } - String token = req.getHeader("token"); - if (token != null && !token.trim().isEmpty()) { - return "Bearer " + token.trim(); - } - } catch (Exception ignore) { - } - return null; - } -} - diff --git a/klp-da/src/main/java/com/klp/da/service/impl/OeeTheoryCycleJobServiceImpl.java b/klp-da/src/main/java/com/klp/da/service/impl/OeeTheoryCycleJobServiceImpl.java deleted file mode 100644 index 172411b2..00000000 --- a/klp-da/src/main/java/com/klp/da/service/impl/OeeTheoryCycleJobServiceImpl.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.klp.da.service.impl; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.klp.da.domain.bo.OeeQueryBo; -import com.klp.da.service.IOeeReportService; -import com.klp.da.service.OeeTheoryCycleJobService; -import com.klp.framework.websocket.TypeWebSocketUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -@Slf4j -@Service -@RequiredArgsConstructor -public class OeeTheoryCycleJobServiceImpl implements OeeTheoryCycleJobService { - - /** - * 推送 type 前缀:前端用 ws://host/websocket?type=oee_theory_cycle_regression:{jobId} 订阅。 - */ - public static final String WS_TYPE_PREFIX = "oee_theory_cycle_regression:"; - - private static final long TTL_MS = 10 * 60_000L; - private static final ConcurrentHashMap JOBS = new ConcurrentHashMap<>(); - - private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(2, r -> { - Thread t = new Thread(r); - t.setName("oee-theory-cycle-job"); - t.setDaemon(true); - return t; - }); - - private final IOeeReportService oeeReportService; - private final ObjectMapper objectMapper = new ObjectMapper(); - - @Override - public Map createAndStart(OeeQueryBo queryBo) { - String jobId = UUID.randomUUID().toString().replace("-", ""); - String wsType = WS_TYPE_PREFIX + jobId; - - JobState st = new JobState(); - st.updatedAt = System.currentTimeMillis(); - JOBS.put(jobId, st); - - String auth = captureAuthorization(); - log.info("[OEE][theoryCycle][job] created jobId={}, wsType={}, window={}~{}, lines={}, authPresent={}", - jobId, - wsType, - queryBo == null ? null : queryBo.getStartTime(), - queryBo == null ? null : queryBo.getEndTime(), - queryBo == null ? null : queryBo.getLineIds(), - auth != null && !auth.trim().isEmpty()); - - // 立即推送“已创建” - push(jobId, wsType, "running", 5, "任务已创建,准备计算…", null, null); - - // 异步执行 - OeeQueryBo qb = copyQueryBo(queryBo); - EXECUTOR.submit(() -> run(jobId, wsType, qb, auth)); - - Map resp = new HashMap<>(); - resp.put("jobId", jobId); - resp.put("wsType", wsType); - return resp; - } - - private void run(String jobId, String wsType, OeeQueryBo queryBo, String authorization) { - long t0 = System.currentTimeMillis(); - try { - cleanupExpired(); - System.out.println("[OEE][theoryCycle][job] start jobId=" + jobId + ", wsType=" + wsType - + ", thread=" + Thread.currentThread().getName() - + ", authPresent=" + (authorization != null && !authorization.trim().isEmpty())); - log.info("[OEE][theoryCycle][job] start jobId={}, wsType={}, thread={}, authPresent={}", - jobId, wsType, Thread.currentThread().getName(), authorization != null && !authorization.trim().isEmpty()); - push(jobId, wsType, "running", 20, "开始计算理论节拍回归…", null, null); - - // 这里复用现有 WMS 同步回归聚合逻辑(内部会走 WMS 接口) - push(jobId, wsType, "running", 50, "正在拉取样本并拟合回归…", null, null); - OeeReportServiceImpl.setAuthOverride(authorization); - Map data = oeeReportService.theoryCycleRegression(queryBo); - - push(jobId, wsType, "running", 90, "正在整理回归结果…", null, null); - JobState st = JOBS.get(jobId); - if (st != null) { - st.updatedAt = System.currentTimeMillis(); - } - push(jobId, wsType, "success", 100, "回归计算完成", data, null); - System.out.println("[OEE][theoryCycle][job] success jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0)); - log.info("[OEE][theoryCycle][job] success jobId={}, costMs={}", jobId, (System.currentTimeMillis() - t0)); - } catch (Exception e) { - log.warn("theoryCycle job failed, jobId={}", jobId, e); - JobState st = JOBS.get(jobId); - if (st != null) { - st.updatedAt = System.currentTimeMillis(); - } - push(jobId, wsType, "failed", 100, "回归计算失败", null, e.getMessage()); - System.out.println("[OEE][theoryCycle][job] failed jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0) - + ", msg=" + e.getMessage()); - log.warn("[OEE][theoryCycle][job] failed jobId={}, costMs={}, msg={}", - jobId, (System.currentTimeMillis() - t0), e.getMessage()); - } finally { - OeeReportServiceImpl.clearAuthOverride(); - System.out.println("[OEE][theoryCycle][job] end jobId=" + jobId + ", costMs=" + (System.currentTimeMillis() - t0)); - log.info("[OEE][theoryCycle][job] end jobId={}, costMs={}", jobId, (System.currentTimeMillis() - t0)); - } - } - - private void push(String jobId, String wsType, String status, int progress, String text, - Map data, String errorMsg) { - try { - Map msg = new HashMap<>(); - msg.put("jobId", jobId); - msg.put("status", status); - msg.put("progress", progress); - msg.put("text", text); - if (data != null) { - msg.put("data", data); - } - if (errorMsg != null && !errorMsg.trim().isEmpty()) { - msg.put("errorMsg", errorMsg); - } - TypeWebSocketUtil.sendToType(wsType, objectMapper.writeValueAsString(msg)); - } catch (Exception ignore) { - } - } - - private void cleanupExpired() { - long now = System.currentTimeMillis(); - JOBS.entrySet().removeIf(e -> e.getValue() == null || (now - e.getValue().updatedAt) > TTL_MS); - } - - private OeeQueryBo copyQueryBo(OeeQueryBo queryBo) { - OeeQueryBo qb = new OeeQueryBo(); - if (queryBo == null) { - return qb; - } - qb.setStartDate(queryBo.getStartDate()); - qb.setEndDate(queryBo.getEndDate()); - qb.setLineIds(queryBo.getLineIds()); - qb.setStartTime(queryBo.getStartTime()); - qb.setEndTime(queryBo.getEndTime()); - qb.setTopN(queryBo.getTopN()); - qb.setLossCategoryCode(queryBo.getLossCategoryCode()); - qb.setKeyword(queryBo.getKeyword()); - return qb; - } - - private String captureAuthorization() { - try { - ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attrs == null || attrs.getRequest() == null) { - return null; - } - HttpServletRequest req = attrs.getRequest(); - String auth = req.getHeader("Authorization"); - if (auth != null && !auth.trim().isEmpty()) { - return auth.trim(); - } - String token = req.getHeader("token"); - if (token != null && !token.trim().isEmpty()) { - return "Bearer " + token.trim(); - } - } catch (Exception ignore) { - } - return null; - } - - private static class JobState { - long updatedAt; - } -} - diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateCurrentController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateCurrentController.java similarity index 91% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateCurrentController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateCurrentController.java index 6bc56b72..fd79dc45 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateCurrentController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateCurrentController.java @@ -1,14 +1,13 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.domain.R; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent; -import com.klp.pocket.service.IKlptcm1ProPlantStateCurrentService; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateCurrent; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateCurrentService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.List; import java.util.Date; import java.math.BigDecimal; import org.springframework.format.annotation.DateTimeFormat; diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateDefineController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateDefineController.java similarity index 89% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateDefineController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateDefineController.java index 7d7bd38b..23c7227f 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateDefineController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateDefineController.java @@ -1,11 +1,11 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateDefine; -import com.klp.pocket.domain.vo.PlantStateWithValueVo; -import com.klp.pocket.service.IKlptcm1ProPlantStateDefineService; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateDefine; +import com.klp.pocket.acid.domain.vo.PlantStateWithValueVo; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateDefineService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateHistoryController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateHistoryController.java similarity index 91% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateHistoryController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateHistoryController.java index 1a99ba23..1fe27178 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProPlantStateHistoryController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProPlantStateHistoryController.java @@ -1,4 +1,4 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.annotation.Log; import com.klp.common.annotation.RepeatSubmit; @@ -11,9 +11,9 @@ import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.PageQuery; -import com.klp.pocket.domain.vo.Klptcm1ProPlantStateHistoryVo; -import com.klp.pocket.domain.bo.Klptcm1ProPlantStateHistoryBo; -import com.klp.pocket.service.IKlptcm1ProPlantStateHistoryService; +import com.klp.pocket.acid.domain.vo.Klptcm1ProPlantStateHistoryVo; +import com.klp.pocket.acid.domain.bo.Klptcm1ProPlantStateHistoryBo; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateHistoryService; import com.klp.common.core.page.TableDataInfo; import javax.validation.constraints.NotEmpty; diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProStoppageController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProStoppageController.java similarity index 92% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProStoppageController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProStoppageController.java index bbb7ca77..b6f6184e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProStoppageController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProStoppageController.java @@ -1,4 +1,4 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.annotation.Log; import com.klp.common.annotation.RepeatSubmit; @@ -11,9 +11,9 @@ import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.PageQuery; -import com.klp.pocket.domain.vo.Klptcm1ProStoppageVo; -import com.klp.pocket.domain.bo.Klptcm1ProStoppageBo; -import com.klp.pocket.service.IKlptcm1ProStoppageService; +import com.klp.pocket.acid.domain.vo.Klptcm1ProStoppageVo; +import com.klp.pocket.acid.domain.bo.Klptcm1ProStoppageBo; +import com.klp.pocket.acid.service.IKlptcm1ProStoppageService; import com.klp.common.core.page.TableDataInfo; import javax.validation.constraints.NotEmpty; diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProductionStatisticsController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProductionStatisticsController.java similarity index 89% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProductionStatisticsController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProductionStatisticsController.java index 59d6f6a8..f4a1bcc3 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ProductionStatisticsController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ProductionStatisticsController.java @@ -1,12 +1,12 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.R; -import com.klp.pocket.domain.vo.ProductionStatisticsVo; -import com.klp.pocket.domain.vo.CrewProductionVo; -import com.klp.pocket.domain.vo.SpecDistributionVo; -import com.klp.pocket.domain.vo.TeamPerformanceVo; -import com.klp.pocket.service.IKlptcm1PdoExcoilService; +import com.klp.pocket.acid.domain.vo.ProductionStatisticsVo; +import com.klp.pocket.acid.domain.vo.CrewProductionVo; +import com.klp.pocket.acid.domain.vo.SpecDistributionVo; +import com.klp.pocket.acid.domain.vo.TeamPerformanceVo; +import com.klp.pocket.acid.service.IKlptcm1PdoExcoilService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; diff --git a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ShiftCurrentController.java b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ShiftCurrentController.java similarity index 81% rename from klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ShiftCurrentController.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ShiftCurrentController.java index 4c1c4cab..3c8643dd 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/controller/Klptcm1ShiftCurrentController.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/controller/Klptcm1ShiftCurrentController.java @@ -1,9 +1,9 @@ -package com.klp.pocket.controller; +package com.klp.pocket.acid.controller; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.R; -import com.klp.pocket.domain.vo.Klptcm1ShiftCurrentVo; -import com.klp.pocket.service.IKlptcm1ShiftCurrentService; +import com.klp.pocket.acid.domain.vo.Klptcm1ShiftCurrentVo; +import com.klp.pocket.acid.service.IKlptcm1ShiftCurrentService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1PdoExcoil.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1PdoExcoil.java similarity index 96% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1PdoExcoil.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1PdoExcoil.java index 72adc8d9..623b27e2 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1PdoExcoil.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1PdoExcoil.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateCurrent.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateCurrent.java similarity index 99% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateCurrent.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateCurrent.java index 6b346895..158febe6 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateCurrent.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateCurrent.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateDefine.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateDefine.java similarity index 97% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateDefine.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateDefine.java index 18947eee..08001610 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateDefine.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateDefine.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateHistory.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateHistory.java similarity index 99% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateHistory.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateHistory.java index c76de46e..a99a2d6f 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProPlantStateHistory.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProPlantStateHistory.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProStoppage.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProStoppage.java similarity index 94% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProStoppage.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProStoppage.java index bf79e694..73d691db 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ProStoppage.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ProStoppage.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ShiftCurrent.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ShiftCurrent.java similarity index 92% rename from klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ShiftCurrent.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ShiftCurrent.java index 17a2539e..21e3036c 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/Klptcm1ShiftCurrent.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/Klptcm1ShiftCurrent.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain; +package com.klp.pocket.acid.domain; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateCurrentBo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateCurrentBo.java similarity index 99% rename from klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateCurrentBo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateCurrentBo.java index 6b754760..7996ba2e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateCurrentBo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateCurrentBo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.bo; +package com.klp.pocket.acid.domain.bo; import com.klp.common.core.domain.BaseEntity; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateHistoryBo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateHistoryBo.java similarity index 98% rename from klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateHistoryBo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateHistoryBo.java index 902a1dd6..d898e9e9 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProPlantStateHistoryBo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProPlantStateHistoryBo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.bo; +package com.klp.pocket.acid.domain.bo; import com.klp.common.core.domain.BaseEntity; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProStoppageBo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProStoppageBo.java similarity index 97% rename from klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProStoppageBo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProStoppageBo.java index 29c43213..88c278dd 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/bo/Klptcm1ProStoppageBo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/bo/Klptcm1ProStoppageBo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.bo; +package com.klp.pocket.acid.domain.bo; import com.klp.common.core.domain.BaseEntity; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/CrewProductionVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/CrewProductionVo.java similarity index 91% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/CrewProductionVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/CrewProductionVo.java index bba61df5..9f58a7bf 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/CrewProductionVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/CrewProductionVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateCurrentVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateCurrentVo.java similarity index 99% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateCurrentVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateCurrentVo.java index 4dc684aa..9fa7cea8 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateCurrentVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateCurrentVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import java.math.BigDecimal; import java.util.Date; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateHistoryVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateHistoryVo.java similarity index 98% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateHistoryVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateHistoryVo.java index cb6f44c8..1b6f1fe1 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProPlantStateHistoryVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProPlantStateHistoryVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import java.math.BigDecimal; import java.util.Date; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProStoppageVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProStoppageVo.java similarity index 94% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProStoppageVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProStoppageVo.java index c219b5a7..9ab0e248 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ProStoppageVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ProStoppageVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import java.util.Date; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ShiftCurrentVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ShiftCurrentVo.java similarity index 88% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ShiftCurrentVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ShiftCurrentVo.java index 35eb3f3a..8142584d 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/Klptcm1ShiftCurrentVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/Klptcm1ShiftCurrentVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/PlantStateWithValueVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/PlantStateWithValueVo.java similarity index 93% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/PlantStateWithValueVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/PlantStateWithValueVo.java index 2cca2910..f9db932b 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/PlantStateWithValueVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/PlantStateWithValueVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/ProductionStatisticsVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/ProductionStatisticsVo.java similarity index 92% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/ProductionStatisticsVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/ProductionStatisticsVo.java index cf8be18e..0cdf3283 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/ProductionStatisticsVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/ProductionStatisticsVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/SpecDistributionVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/SpecDistributionVo.java similarity index 83% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/SpecDistributionVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/SpecDistributionVo.java index cc3363a4..3c09d4e6 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/SpecDistributionVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/SpecDistributionVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; diff --git a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/TeamPerformanceVo.java b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/TeamPerformanceVo.java similarity index 95% rename from klp-pocket/src/main/java/com/klp/pocket/domain/vo/TeamPerformanceVo.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/TeamPerformanceVo.java index 5c82a1b8..e6e9629c 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/domain/vo/TeamPerformanceVo.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/domain/vo/TeamPerformanceVo.java @@ -1,4 +1,4 @@ -package com.klp.pocket.domain.vo; +package com.klp.pocket.acid.domain.vo; import lombok.Data; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1PdoExcoilMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1PdoExcoilMapper.java similarity index 87% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1PdoExcoilMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1PdoExcoilMapper.java index 18e6a6db..7095cf1b 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1PdoExcoilMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1PdoExcoilMapper.java @@ -1,9 +1,9 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; -import com.klp.pocket.domain.vo.ProductionStatisticsVo; -import com.klp.pocket.domain.vo.CrewProductionVo; -import com.klp.pocket.domain.vo.SpecDistributionVo; -import com.klp.pocket.domain.vo.TeamPerformanceVo; +import com.klp.pocket.acid.domain.vo.ProductionStatisticsVo; +import com.klp.pocket.acid.domain.vo.CrewProductionVo; +import com.klp.pocket.acid.domain.vo.SpecDistributionVo; +import com.klp.pocket.acid.domain.vo.TeamPerformanceVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateCurrentMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateCurrentMapper.java similarity index 79% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateCurrentMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateCurrentMapper.java index c46d3dbb..1f294ae7 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateCurrentMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateCurrentMapper.java @@ -1,11 +1,9 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.klp.common.core.domain.PageQuery; -import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateCurrent; import org.apache.ibatis.annotations.Mapper; -import java.util.List; + import java.util.Date; import java.math.BigDecimal; import org.apache.ibatis.annotations.Param; diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateDefineMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateDefineMapper.java similarity index 85% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateDefineMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateDefineMapper.java index 162d0a2f..d1188b9b 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateDefineMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateDefineMapper.java @@ -1,10 +1,9 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.klp.pocket.domain.Klptcm1ProPlantStateDefine; -import com.klp.pocket.domain.vo.PlantStateWithValueVo; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateDefine; +import com.klp.pocket.acid.domain.vo.PlantStateWithValueVo; import org.apache.ibatis.annotations.Mapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import java.math.BigDecimal; import java.util.List; diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateHistoryMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateHistoryMapper.java similarity index 63% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateHistoryMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateHistoryMapper.java index f8a6272a..5d54002a 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProPlantStateHistoryMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProPlantStateHistoryMapper.java @@ -1,7 +1,7 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; -import com.klp.pocket.domain.Klptcm1ProPlantStateHistory; -import com.klp.pocket.domain.vo.Klptcm1ProPlantStateHistoryVo; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateHistory; +import com.klp.pocket.acid.domain.vo.Klptcm1ProPlantStateHistoryVo; import com.klp.common.core.mapper.BaseMapperPlus; /** diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProStoppageMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProStoppageMapper.java similarity index 63% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProStoppageMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProStoppageMapper.java index 1c51a9fa..d3da694e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ProStoppageMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ProStoppageMapper.java @@ -1,7 +1,7 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; -import com.klp.pocket.domain.Klptcm1ProStoppage; -import com.klp.pocket.domain.vo.Klptcm1ProStoppageVo; +import com.klp.pocket.acid.domain.Klptcm1ProStoppage; +import com.klp.pocket.acid.domain.vo.Klptcm1ProStoppageVo; import com.klp.common.core.mapper.BaseMapperPlus; /** diff --git a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ShiftCurrentMapper.java b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ShiftCurrentMapper.java similarity index 67% rename from klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ShiftCurrentMapper.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ShiftCurrentMapper.java index b62d0c29..226e0f3e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/mapper/Klptcm1ShiftCurrentMapper.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/mapper/Klptcm1ShiftCurrentMapper.java @@ -1,7 +1,6 @@ -package com.klp.pocket.mapper; +package com.klp.pocket.acid.mapper; -import com.klp.pocket.domain.Klptcm1ShiftCurrent; -import com.klp.pocket.domain.vo.Klptcm1ShiftCurrentVo; +import com.klp.pocket.acid.domain.vo.Klptcm1ShiftCurrentVo; import org.apache.ibatis.annotations.Mapper; /** diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1PdoExcoilService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1PdoExcoilService.java similarity index 83% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1PdoExcoilService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1PdoExcoilService.java index cc196154..7dfbdb24 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1PdoExcoilService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1PdoExcoilService.java @@ -1,9 +1,9 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; -import com.klp.pocket.domain.vo.ProductionStatisticsVo; -import com.klp.pocket.domain.vo.CrewProductionVo; -import com.klp.pocket.domain.vo.SpecDistributionVo; -import com.klp.pocket.domain.vo.TeamPerformanceVo; +import com.klp.pocket.acid.domain.vo.ProductionStatisticsVo; +import com.klp.pocket.acid.domain.vo.CrewProductionVo; +import com.klp.pocket.acid.domain.vo.SpecDistributionVo; +import com.klp.pocket.acid.domain.vo.TeamPerformanceVo; import java.util.List; diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateCurrentService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateCurrentService.java similarity index 82% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateCurrentService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateCurrentService.java index 49e10015..46cb216d 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateCurrentService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateCurrentService.java @@ -1,9 +1,9 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent; -import java.util.List; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateCurrent; + import java.util.Date; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateDefineService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateDefineService.java similarity index 86% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateDefineService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateDefineService.java index fd373b50..c6bb18e7 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateDefineService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateDefineService.java @@ -1,9 +1,9 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateDefine; -import com.klp.pocket.domain.vo.PlantStateWithValueVo; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateDefine; +import com.klp.pocket.acid.domain.vo.PlantStateWithValueVo; import java.math.BigDecimal; diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateHistoryService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateHistoryService.java similarity index 85% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateHistoryService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateHistoryService.java index b33dc1d7..281f5e1e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProPlantStateHistoryService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProPlantStateHistoryService.java @@ -1,7 +1,7 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; -import com.klp.pocket.domain.vo.Klptcm1ProPlantStateHistoryVo; -import com.klp.pocket.domain.bo.Klptcm1ProPlantStateHistoryBo; +import com.klp.pocket.acid.domain.vo.Klptcm1ProPlantStateHistoryVo; +import com.klp.pocket.acid.domain.bo.Klptcm1ProPlantStateHistoryBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProStoppageService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProStoppageService.java similarity index 85% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProStoppageService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProStoppageService.java index 203d4d39..7fdd404c 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ProStoppageService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ProStoppageService.java @@ -1,7 +1,7 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; -import com.klp.pocket.domain.vo.Klptcm1ProStoppageVo; -import com.klp.pocket.domain.bo.Klptcm1ProStoppageBo; +import com.klp.pocket.acid.domain.vo.Klptcm1ProStoppageVo; +import com.klp.pocket.acid.domain.bo.Klptcm1ProStoppageBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ShiftCurrentService.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ShiftCurrentService.java similarity index 69% rename from klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ShiftCurrentService.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ShiftCurrentService.java index e43a1074..7c33325a 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/IKlptcm1ShiftCurrentService.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/IKlptcm1ShiftCurrentService.java @@ -1,6 +1,6 @@ -package com.klp.pocket.service; +package com.klp.pocket.acid.service; -import com.klp.pocket.domain.vo.Klptcm1ShiftCurrentVo; +import com.klp.pocket.acid.domain.vo.Klptcm1ShiftCurrentVo; /** * 当前班组Service接口 diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1PdoExcoilServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1PdoExcoilServiceImpl.java similarity index 76% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1PdoExcoilServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1PdoExcoilServiceImpl.java index 11b64573..e2b46ad4 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1PdoExcoilServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1PdoExcoilServiceImpl.java @@ -1,12 +1,12 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; -import com.klp.pocket.domain.vo.ProductionStatisticsVo; -import com.klp.pocket.domain.vo.CrewProductionVo; -import com.klp.pocket.domain.vo.SpecDistributionVo; -import com.klp.pocket.domain.vo.TeamPerformanceVo; -import com.klp.pocket.mapper.Klptcm1PdoExcoilMapper; -import com.klp.pocket.service.IKlptcm1PdoExcoilService; +import com.klp.pocket.acid.domain.vo.ProductionStatisticsVo; +import com.klp.pocket.acid.domain.vo.CrewProductionVo; +import com.klp.pocket.acid.domain.vo.SpecDistributionVo; +import com.klp.pocket.acid.domain.vo.TeamPerformanceVo; +import com.klp.pocket.acid.mapper.Klptcm1PdoExcoilMapper; +import com.klp.pocket.acid.service.IKlptcm1PdoExcoilService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,7 +16,7 @@ import java.util.List; * 生产统计Service实现类 */ @RequiredArgsConstructor -@DS("slave") +@DS("acid") @Service public class Klptcm1PdoExcoilServiceImpl implements IKlptcm1PdoExcoilService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java similarity index 84% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java index 3e9736a1..1f1aea36 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateCurrentServiceImpl.java @@ -1,19 +1,18 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent; -import com.klp.pocket.mapper.Klptcm1ProPlantStateCurrentMapper; -import com.klp.pocket.service.IKlptcm1ProPlantStateCurrentService; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateCurrent; +import com.klp.pocket.acid.mapper.Klptcm1ProPlantStateCurrentMapper; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateCurrentService; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.List; import java.util.Date; import java.math.BigDecimal; -@DS("slave") +@DS("acid") @Service public class Klptcm1ProPlantStateCurrentServiceImpl implements IKlptcm1ProPlantStateCurrentService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java similarity index 80% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java index e2da1847..c147199e 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateDefineServiceImpl.java @@ -1,26 +1,23 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; -import com.klp.pocket.domain.Klptcm1ProPlantStateCurrent; -import com.klp.pocket.domain.Klptcm1ProPlantStateDefine; -import com.klp.pocket.domain.vo.PlantStateWithValueVo; -import com.klp.pocket.mapper.Klptcm1ProPlantStateDefineMapper; -import com.klp.pocket.service.IKlptcm1ProPlantStateDefineService; -import com.baomidou.mybatisplus.core.metadata.IPage; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateDefine; +import com.klp.pocket.acid.domain.vo.PlantStateWithValueVo; +import com.klp.pocket.acid.mapper.Klptcm1ProPlantStateDefineMapper; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateDefineService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Collections; import java.util.List; /** * 工厂状态定义表Service实现类 * 具体业务逻辑实现,依赖Mapper操作数据库 */ -@DS("slave") +@DS("acid") @Service public class Klptcm1ProPlantStateDefineServiceImpl implements IKlptcm1ProPlantStateDefineService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java similarity index 97% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java index c70144e4..7a78d1bd 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProPlantStateHistoryServiceImpl.java @@ -1,4 +1,4 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.dynamic.datasource.annotation.DS; @@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.klp.pocket.domain.bo.Klptcm1ProPlantStateHistoryBo; -import com.klp.pocket.domain.vo.Klptcm1ProPlantStateHistoryVo; -import com.klp.pocket.domain.Klptcm1ProPlantStateHistory; -import com.klp.pocket.mapper.Klptcm1ProPlantStateHistoryMapper; -import com.klp.pocket.service.IKlptcm1ProPlantStateHistoryService; +import com.klp.pocket.acid.domain.bo.Klptcm1ProPlantStateHistoryBo; +import com.klp.pocket.acid.domain.vo.Klptcm1ProPlantStateHistoryVo; +import com.klp.pocket.acid.domain.Klptcm1ProPlantStateHistory; +import com.klp.pocket.acid.mapper.Klptcm1ProPlantStateHistoryMapper; +import com.klp.pocket.acid.service.IKlptcm1ProPlantStateHistoryService; import java.util.Collection; import java.util.Date; @@ -27,7 +27,7 @@ import java.util.Map; * @date 2025-10-27 */ @RequiredArgsConstructor -@DS("slave") +@DS("acid") @Service public class Klptcm1ProPlantStateHistoryServiceImpl implements IKlptcm1ProPlantStateHistoryService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProStoppageServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProStoppageServiceImpl.java similarity index 93% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProStoppageServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProStoppageServiceImpl.java index da1d3a90..39114f62 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ProStoppageServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ProStoppageServiceImpl.java @@ -1,4 +1,4 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.dynamic.datasource.annotation.DS; @@ -10,11 +10,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.klp.pocket.domain.bo.Klptcm1ProStoppageBo; -import com.klp.pocket.domain.vo.Klptcm1ProStoppageVo; -import com.klp.pocket.domain.Klptcm1ProStoppage; -import com.klp.pocket.mapper.Klptcm1ProStoppageMapper; -import com.klp.pocket.service.IKlptcm1ProStoppageService; +import com.klp.pocket.acid.domain.bo.Klptcm1ProStoppageBo; +import com.klp.pocket.acid.domain.vo.Klptcm1ProStoppageVo; +import com.klp.pocket.acid.domain.Klptcm1ProStoppage; +import com.klp.pocket.acid.mapper.Klptcm1ProStoppageMapper; +import com.klp.pocket.acid.service.IKlptcm1ProStoppageService; import java.time.LocalDate; import java.time.LocalDateTime; @@ -32,7 +32,7 @@ import java.util.Map; * @date 2025-10-27 */ @RequiredArgsConstructor -@DS("slave") +@DS("acid") @Service public class Klptcm1ProStoppageServiceImpl implements IKlptcm1ProStoppageService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ShiftCurrentServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ShiftCurrentServiceImpl.java similarity index 67% rename from klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ShiftCurrentServiceImpl.java rename to klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ShiftCurrentServiceImpl.java index 258868a2..c6735f99 100644 --- a/klp-pocket/src/main/java/com/klp/pocket/service/impl/Klptcm1ShiftCurrentServiceImpl.java +++ b/klp-pocket/src/main/java/com/klp/pocket/acid/service/impl/Klptcm1ShiftCurrentServiceImpl.java @@ -1,9 +1,9 @@ -package com.klp.pocket.service.impl; +package com.klp.pocket.acid.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; -import com.klp.pocket.domain.vo.Klptcm1ShiftCurrentVo; -import com.klp.pocket.mapper.Klptcm1ShiftCurrentMapper; -import com.klp.pocket.service.IKlptcm1ShiftCurrentService; +import com.klp.pocket.acid.domain.vo.Klptcm1ShiftCurrentVo; +import com.klp.pocket.acid.mapper.Klptcm1ShiftCurrentMapper; +import com.klp.pocket.acid.service.IKlptcm1ShiftCurrentService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service; * 当前班组Service实现类 */ @RequiredArgsConstructor -@DS("slave") +@DS("acid") @Service public class Klptcm1ShiftCurrentServiceImpl implements IKlptcm1ShiftCurrentService { diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CplSegmentTotalController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CplSegmentTotalController.java new file mode 100644 index 00000000..55577c03 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CplSegmentTotalController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.CplSegmentTotalBo; +import com.klp.pocket.galvanize1.domain.vo.CplSegmentTotalVo; +import com.klp.pocket.galvanize1.service.ICplSegmentTotalService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/cplSegmentTotal") +public class CplSegmentTotalController extends BaseController { + + private final ICplSegmentTotalService iCplSegmentTotalService; + + @GetMapping("/list") + public TableDataInfo list(CplSegmentTotalBo bo, PageQuery pageQuery) { + return iCplSegmentTotalService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(iCplSegmentTotalService.queryById(id)); + } + + @Log(title = "带钢段工艺参数汇总", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CplSegmentTotalBo bo) { + return toAjax(iCplSegmentTotalService.insertByBo(bo)); + } + + @Log(title = "带钢段工艺参数汇总", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CplSegmentTotalBo bo) { + return toAjax(iCplSegmentTotalService.updateByBo(bo)); + } + + @Log(title = "带钢段工艺参数汇总", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(iCplSegmentTotalService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdiPlanController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdiPlanController.java new file mode 100644 index 00000000..fefaab24 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdiPlanController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.CrmPdiPlanBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdiPlanVo; +import com.klp.pocket.galvanize1.service.ICrmPdiPlanService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/crmPdiPlan") +public class CrmPdiPlanController extends BaseController { + + private final ICrmPdiPlanService iCrmPdiPlanService; + + @GetMapping("/list") + public TableDataInfo list(CrmPdiPlanBo bo, PageQuery pageQuery) { + return iCrmPdiPlanService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(iCrmPdiPlanService.queryById(id)); + } + + @Log(title = "钢卷计划信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CrmPdiPlanBo bo) { + return toAjax(iCrmPdiPlanService.insertByBo(bo)); + } + + @Log(title = "钢卷计划信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CrmPdiPlanBo bo) { + return toAjax(iCrmPdiPlanService.updateByBo(bo)); + } + + @Log(title = "钢卷计划信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(iCrmPdiPlanService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdoExcoilController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdoExcoilController.java new file mode 100644 index 00000000..f874b058 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/CrmPdoExcoilController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.CrmPdoExcoilBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdoExcoilVo; +import com.klp.pocket.galvanize1.service.ICrmPdoExcoilService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/crmPdoExcoil") +public class CrmPdoExcoilController extends BaseController { + + private final ICrmPdoExcoilService iCrmPdoExcoilService; + + @GetMapping("/list") + public TableDataInfo list(CrmPdoExcoilBo bo, PageQuery pageQuery) { + return iCrmPdoExcoilService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(iCrmPdoExcoilService.queryById(id)); + } + + @Log(title = "钢卷生产数据", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CrmPdoExcoilBo bo) { + return toAjax(iCrmPdoExcoilService.insertByBo(bo)); + } + + @Log(title = "钢卷生产数据", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CrmPdoExcoilBo bo) { + return toAjax(iCrmPdoExcoilService.updateByBo(bo)); + } + + @Log(title = "钢卷生产数据", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(iCrmPdoExcoilService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/PdiSetupController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/PdiSetupController.java new file mode 100644 index 00000000..1d3de930 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/PdiSetupController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.PdiSetupBo; +import com.klp.pocket.galvanize1.domain.vo.PdiSetupVo; +import com.klp.pocket.galvanize1.service.IPdiSetupService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/pdiSetup") +public class PdiSetupController extends BaseController { + + private final IPdiSetupService iPdiSetupService; + + @GetMapping("/list") + public TableDataInfo list(PdiSetupBo bo, PageQuery pageQuery) { + return iPdiSetupService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(iPdiSetupService.queryById(id)); + } + + @Log(title = "张力参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PdiSetupBo bo) { + return toAjax(iPdiSetupService.insertByBo(bo)); + } + + @Log(title = "张力参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PdiSetupBo bo) { + return toAjax(iPdiSetupService.updateByBo(bo)); + } + + @Log(title = "张力参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(iPdiSetupService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageController.java new file mode 100644 index 00000000..d1b0515a --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageVo; +import com.klp.pocket.galvanize1.service.IProStoppageService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/proStoppage") +public class ProStoppageController extends BaseController { + + private final IProStoppageService iProStoppageService; + + @GetMapping("/list") + public TableDataInfo list(ProStoppageBo bo, PageQuery pageQuery) { + return iProStoppageService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{stopid}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long stopid) { + return R.ok(iProStoppageService.queryById(stopid)); + } + + @Log(title = "停机", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ProStoppageBo bo) { + return toAjax(iProStoppageService.insertByBo(bo)); + } + + @Log(title = "停机", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ProStoppageBo bo) { + return toAjax(iProStoppageService.updateByBo(bo)); + } + + @Log(title = "停机", businessType = BusinessType.DELETE) + @DeleteMapping("/{stopids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] stopids) { + return toAjax(iProStoppageService.deleteWithValidByIds(Arrays.asList(stopids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageTypeController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageTypeController.java new file mode 100644 index 00000000..3a990120 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ProStoppageTypeController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageTypeBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageTypeVo; +import com.klp.pocket.galvanize1.service.IProStoppageTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/proStoppageType") +public class ProStoppageTypeController extends BaseController { + + private final IProStoppageTypeService iProStoppageTypeService; + + @GetMapping("/list") + public TableDataInfo list(ProStoppageTypeBo bo, PageQuery pageQuery) { + return iProStoppageTypeService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{stopType}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Integer stopType) { + return R.ok(iProStoppageTypeService.queryById(stopType)); + } + + @Log(title = "停机类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ProStoppageTypeBo bo) { + return toAjax(iProStoppageTypeService.insertByBo(bo)); + } + + @Log(title = "停机类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ProStoppageTypeBo bo) { + return toAjax(iProStoppageTypeService.updateByBo(bo)); + } + + @Log(title = "停机类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{stopTypes}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Integer[] stopTypes) { + return toAjax(iProStoppageTypeService.deleteWithValidByIds(Arrays.asList(stopTypes), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftConfigController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftConfigController.java new file mode 100644 index 00000000..169a5bbc --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftConfigController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.ShiftConfigBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftConfigVo; +import com.klp.pocket.galvanize1.service.IShiftConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/shiftConfig") +public class ShiftConfigController extends BaseController { + + private final IShiftConfigService iShiftConfigService; + + @GetMapping("/list") + public TableDataInfo list(ShiftConfigBo bo, PageQuery pageQuery) { + return iShiftConfigService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Integer id) { + return R.ok(iShiftConfigService.queryById(id)); + } + + @Log(title = "班次配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ShiftConfigBo bo) { + return toAjax(iShiftConfigService.insertByBo(bo)); + } + + @Log(title = "班次配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ShiftConfigBo bo) { + return toAjax(iShiftConfigService.updateByBo(bo)); + } + + @Log(title = "班次配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Integer[] ids) { + return toAjax(iShiftConfigService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftCrewController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftCrewController.java new file mode 100644 index 00000000..d68f93a7 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftCrewController.java @@ -0,0 +1,61 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.ShiftCrewBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftCrewVo; +import com.klp.pocket.galvanize1.service.IShiftCrewService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/shiftCrew") +public class ShiftCrewController extends BaseController { + + private final IShiftCrewService iShiftCrewService; + + @GetMapping("/list") + public TableDataInfo list(ShiftCrewBo bo, PageQuery pageQuery) { + return iShiftCrewService.queryPageList(bo, pageQuery); + } + + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Integer id) { + return R.ok(iShiftCrewService.queryById(id)); + } + + @Log(title = "班次班组", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ShiftCrewBo bo) { + return toAjax(iShiftCrewService.insertByBo(bo)); + } + + @Log(title = "班次班组", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ShiftCrewBo bo) { + return toAjax(iShiftCrewService.updateByBo(bo)); + } + + @Log(title = "班次班组", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Integer[] ids) { + return toAjax(iShiftCrewService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftHistoryController.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftHistoryController.java new file mode 100644 index 00000000..99e386e1 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/controller/ShiftHistoryController.java @@ -0,0 +1,38 @@ +package com.klp.pocket.galvanize1.controller; + +import com.klp.common.annotation.Log; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.enums.BusinessType; +import com.klp.pocket.galvanize1.domain.bo.ShiftHistoryBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftHistoryVo; +import com.klp.pocket.galvanize1.service.IShiftHistoryService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/pocket/galvanize1/shiftHistory") +public class ShiftHistoryController extends BaseController { + + private final IShiftHistoryService iShiftHistoryService; + + @GetMapping("/list") + public TableDataInfo list(ShiftHistoryBo bo, PageQuery pageQuery) { + return iShiftHistoryService.queryPageList(bo, pageQuery); + } + + @Log(title = "班次履历", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ShiftHistoryBo bo) { + return toAjax(iShiftHistoryService.insertByBo(bo)); + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CplSegmentTotal.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CplSegmentTotal.java new file mode 100644 index 00000000..6f70d243 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CplSegmentTotal.java @@ -0,0 +1,35 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("cpl_segment_total") +public class CplSegmentTotal { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String enCoilId; + + private Integer picklingCount; + + private Integer segNo; + + private Double startPos; + + private Double endPos; + + private Double segLen; + + private String totalValuesJson; + + private Date createTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdiPlan.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdiPlan.java new file mode 100644 index 00000000..e01583a1 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdiPlan.java @@ -0,0 +1,137 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("crm_pdi_plan") +public class CrmPdiPlan { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private Integer seqid; + private String coilid; + private Integer dummyCoilFlag; + private String status; + private String planid; + private String planType; + + private java.math.BigDecimal yieldPoint; + private java.math.BigDecimal entryWeight; + private java.math.BigDecimal entryThick; + private java.math.BigDecimal entryWidth; + private java.math.BigDecimal entryLength; + private java.math.BigDecimal entryOuterDiameter; + private java.math.BigDecimal entryInnerDiameter; + private java.math.BigDecimal exitInnerDiameter; + + private String steelGrade; + private String exitCoilid; + private Integer tlvFlag; + private String orderNo; + private String custommerCode; + + private java.math.BigDecimal orderThick; + private java.math.BigDecimal orderWidth; + private java.math.BigDecimal orderLenLow; + private java.math.BigDecimal orderLenUp; + private java.math.BigDecimal orderWt; + private java.math.BigDecimal orderWtLow; + private java.math.BigDecimal orderWtUp; + private java.math.BigDecimal orderMetCoatTop; + private java.math.BigDecimal orderMetCoatBot; + + private String finalUse; + private String hotCoilCode; + + private java.math.BigDecimal exitLengthTar; + private java.math.BigDecimal exitLengthTolMax; + private java.math.BigDecimal exitLengthTolMin; + private java.math.BigDecimal exitThickTar; + private java.math.BigDecimal exitThickTolMax; + private java.math.BigDecimal exitThickTolMin; + private java.math.BigDecimal exitWidthTar; + private java.math.BigDecimal exitWidthTolMax; + private java.math.BigDecimal exitWidthTolMin; + + private String nextWholeBacklogCode; + private String prevWholeBacklogCode; + private String exitWtMode; + private Integer splitNum; + + private java.math.BigDecimal exitWeight1; + private java.math.BigDecimal exitWeight2; + private java.math.BigDecimal exitWeight3; + private java.math.BigDecimal exitWeight4; + private java.math.BigDecimal exitWeight5; + private java.math.BigDecimal exitWeight6; + + private String headSampleMode; + private String headSamplePosition; + private java.math.BigDecimal headSampleLength; + private String headSamplePlace; + private Integer headSampleNum; + + private String tailSampleMode; + private String tailSamplePosition; + private java.math.BigDecimal tailSampleLength; + private String tailSamplePlace; + private Integer tailSampleNum; + + private Date timestamp; + private Date onlineDate; + private Date startDate; + private Date endDate; + private Date furInDate; + private Date furOutDate; + private Date createTime; + private Date updateTime; + + private String surfaceVice; + private String weldCode; + + private Integer spmFlag; + private java.math.BigDecimal spmElongation; + private java.math.BigDecimal spmRollforce; + private String spmProcessType; + private String spmControlMode; + private java.math.BigDecimal spmBendingForce; + private java.math.BigDecimal spmCrimpingRollMesh; + private java.math.BigDecimal spmBillyRollMesh; + + private Integer trimFlag; + private String tlvMode; + private java.math.BigDecimal tlvElongation; + private Integer chromating; + private String coatingCode; + private Integer oilingFlag; + private String oilingType; + private java.math.BigDecimal oilingTop; + private java.math.BigDecimal oilingBottom; + + private String heatCycle; + private String coatingSelection; + private String coatingType; + private java.math.BigDecimal zincCoatingThickness; + private String chemTreatMode; + + private java.math.BigDecimal aimWeightTop; + private java.math.BigDecimal aimWeightBottom; + private java.math.BigDecimal maxTolWeightTop; + private java.math.BigDecimal maxTolWeightBottom; + private java.math.BigDecimal headendGaugeLength; + private java.math.BigDecimal tailendGaugeLength; + + private String unitCode; + private String originCoilid; + private Date onlineTime; + private Date producingTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdoExcoil.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdoExcoil.java new file mode 100644 index 00000000..b81ed0ca --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/CrmPdoExcoil.java @@ -0,0 +1,70 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("crm_pdo_excoil") +public class CrmPdoExcoil { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String exitMatId; + private String entryMatId; + private Integer subId; + private Double startPosition; + private Double endPosition; + private Long planId; + private String planNo; + private String prodCode; + private String groupNo; + private String shiftNo; + private String status; + private String steelGrade; + + private Double entryThick; + private Double entryWidth; + private Double entryLength; + private Double entryWeight; + + private Double weightTop; + private Double weightBottom; + + private Double exitLength; + private Double exitNetWeight; + private Double theoryWeight; + private Double actualWeight; + + private Double exitOuterDiameter; + private Double exitThickness; + private Double exitWidth; + + private String customer; + + private Date onlineTime; + private Date startTime; + private Date endTime; + + private Long delFlag; + private Date createTime; + private Date updateTime; + + private String unitCode; + private String processCode; + + private Boolean lastFlag; + private Boolean separateFlag; + + private String planOrigin; + + private BigDecimal zincCoatingThickness; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/PdiSetup.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/PdiSetup.java new file mode 100644 index 00000000..fd7b2b74 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/PdiSetup.java @@ -0,0 +1,40 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("pdi_setup") +public class PdiSetup { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String coilid; + private String planid; + private String steelGrade; + private Float thick; + private Float yieldStren; + + private Float porTension; + private Float celTension; + private Float cleanTension; + private Float passivationTension; + private Float cxlTension; + private Float trTension; + private Float levelerEntryTension; + private Float levelerExitTension; + private Float straightenerExitTension; + private Float furTension; + private Float towerTension; + + private Date createTime; + private Date updateTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppage.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppage.java new file mode 100644 index 00000000..e6abe4c5 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppage.java @@ -0,0 +1,34 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("pro_stoppage") +public class ProStoppage { + + private static final long serialVersionUID = 1L; + + @TableId(value = "STOPID", type = IdType.AUTO) + private Long stopid; + + private String coilid; + private String shift; + private String crew; + private String area; + private String unit; + private String seton; + + private Date startDate; + private Date endDate; + + private Float duration; + private Date insdate; + private String stopType; + private String remark; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppageType.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppageType.java new file mode 100644 index 00000000..2f6bf2c4 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ProStoppageType.java @@ -0,0 +1,22 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("pro_stoppage_type") +public class ProStoppageType { + + private static final long serialVersionUID = 1L; + + @TableId(value = "STOP_TYPE") + private Integer stopType; + + private String remark; + + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftConfig.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftConfig.java new file mode 100644 index 00000000..887d1558 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftConfig.java @@ -0,0 +1,42 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("shift_config") +public class ShiftConfig { + + @TableId(value = "configid", type = IdType.INPUT) + private Integer configid; + + @TableField("START_DATE") + private Date startDate; + + @TableField("SHIFT1") + private Float shift1; + + @TableField("SHIFT2") + private Float shift2; + + @TableField("SHIFT3") + private Float shift3; + + @TableField("SHIFT4") + private Float shift4; + + @TableField("SHIFT5") + private Float shift5; + + @TableField("SHIFT_NUM") + private Integer shiftNum; + + @TableField("FLAG") + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftCrew.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftCrew.java new file mode 100644 index 00000000..d96ff6e6 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftCrew.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("shift_crew") +public class ShiftCrew { + + @TableId(value = "seqno", type = IdType.INPUT) + private Integer seqno; + + @TableField("shift") + private String shift; + + @TableField("crew") + private String crew; + + @TableField("flag") + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftHistory.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftHistory.java new file mode 100644 index 00000000..4e09ca2a --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/ShiftHistory.java @@ -0,0 +1,22 @@ +package com.klp.pocket.galvanize1.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("shift_history") +public class ShiftHistory { + + @TableField("SHIFT") + private String shift; + + @TableField("CREW") + private String crew; + + @TableField("insdate") + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CplSegmentTotalBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CplSegmentTotalBo.java new file mode 100644 index 00000000..7a95ddc9 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CplSegmentTotalBo.java @@ -0,0 +1,31 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class CplSegmentTotalBo extends BaseEntity { + + private Long id; + + private String enCoilId; + + private Integer picklingCount; + + private Integer segNo; + + private Double startPos; + + private Double endPos; + + private Double segLen; + + private String totalValuesJson; + + private Date createTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdiPlanBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdiPlanBo.java new file mode 100644 index 00000000..de6213b6 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdiPlanBo.java @@ -0,0 +1,134 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class CrmPdiPlanBo extends BaseEntity { + + private Long id; + + private Integer seqid; + private String coilid; + private Integer dummyCoilFlag; + private String status; + private String planid; + private String planType; + + private BigDecimal yieldPoint; + private BigDecimal entryWeight; + private BigDecimal entryThick; + private BigDecimal entryWidth; + private BigDecimal entryLength; + private BigDecimal entryOuterDiameter; + private BigDecimal entryInnerDiameter; + private BigDecimal exitInnerDiameter; + + private String steelGrade; + private String exitCoilid; + private Integer tlvFlag; + private String orderNo; + private String custommerCode; + + private BigDecimal orderThick; + private BigDecimal orderWidth; + private BigDecimal orderLenLow; + private BigDecimal orderLenUp; + private BigDecimal orderWt; + private BigDecimal orderWtLow; + private BigDecimal orderWtUp; + private BigDecimal orderMetCoatTop; + private BigDecimal orderMetCoatBot; + + private String finalUse; + private String hotCoilCode; + + private BigDecimal exitLengthTar; + private BigDecimal exitLengthTolMax; + private BigDecimal exitLengthTolMin; + private BigDecimal exitThickTar; + private BigDecimal exitThickTolMax; + private BigDecimal exitThickTolMin; + private BigDecimal exitWidthTar; + private BigDecimal exitWidthTolMax; + private BigDecimal exitWidthTolMin; + + private String nextWholeBacklogCode; + private String prevWholeBacklogCode; + private String exitWtMode; + private Integer splitNum; + + private BigDecimal exitWeight1; + private BigDecimal exitWeight2; + private BigDecimal exitWeight3; + private BigDecimal exitWeight4; + private BigDecimal exitWeight5; + private BigDecimal exitWeight6; + + private String headSampleMode; + private String headSamplePosition; + private BigDecimal headSampleLength; + private String headSamplePlace; + private Integer headSampleNum; + + private String tailSampleMode; + private String tailSamplePosition; + private BigDecimal tailSampleLength; + private String tailSamplePlace; + private Integer tailSampleNum; + + private Date timestamp; + private Date onlineDate; + private Date startDate; + private Date endDate; + private Date furInDate; + private Date furOutDate; + private Date createTime; + private Date updateTime; + + private String surfaceVice; + private String weldCode; + + private Integer spmFlag; + private BigDecimal spmElongation; + private BigDecimal spmRollforce; + private String spmProcessType; + private String spmControlMode; + private BigDecimal spmBendingForce; + private BigDecimal spmCrimpingRollMesh; + private BigDecimal spmBillyRollMesh; + + private Integer trimFlag; + private String tlvMode; + private BigDecimal tlvElongation; + private Integer chromating; + private String coatingCode; + private Integer oilingFlag; + private String oilingType; + private BigDecimal oilingTop; + private BigDecimal oilingBottom; + + private String heatCycle; + private String coatingSelection; + private String coatingType; + private BigDecimal zincCoatingThickness; + private String chemTreatMode; + + private BigDecimal aimWeightTop; + private BigDecimal aimWeightBottom; + private BigDecimal maxTolWeightTop; + private BigDecimal maxTolWeightBottom; + private BigDecimal headendGaugeLength; + private BigDecimal tailendGaugeLength; + + private String unitCode; + private String originCoilid; + private Date onlineTime; + private Date producingTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdoExcoilBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdoExcoilBo.java new file mode 100644 index 00000000..d6727b4b --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/CrmPdoExcoilBo.java @@ -0,0 +1,66 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class CrmPdoExcoilBo extends BaseEntity { + + private Long id; + + private String exitMatId; + private String entryMatId; + private Integer subId; + private Double startPosition; + private Double endPosition; + private Long planId; + private String planNo; + private String prodCode; + private String groupNo; + private String shiftNo; + private String status; + private String steelGrade; + + private Double entryThick; + private Double entryWidth; + private Double entryLength; + private Double entryWeight; + + private Double weightTop; + private Double weightBottom; + + private Double exitLength; + private Double exitNetWeight; + private Double theoryWeight; + private Double actualWeight; + + private Double exitOuterDiameter; + private Double exitThickness; + private Double exitWidth; + + private String customer; + + private Date onlineTime; + private Date startTime; + private Date endTime; + + private Long delFlag; + private Date createTime; + private Date updateTime; + + private String unitCode; + private String processCode; + + private Boolean lastFlag; + private Boolean separateFlag; + + private String planOrigin; + + private BigDecimal zincCoatingThickness; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/PdiSetupBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/PdiSetupBo.java new file mode 100644 index 00000000..cdad8200 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/PdiSetupBo.java @@ -0,0 +1,36 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class PdiSetupBo extends BaseEntity { + + private Long id; + + private String coilid; + private String planid; + private String steelGrade; + private Float thick; + private Float yieldStren; + + private Float porTension; + private Float celTension; + private Float cleanTension; + private Float passivationTension; + private Float cxlTension; + private Float trTension; + private Float levelerEntryTension; + private Float levelerExitTension; + private Float straightenerExitTension; + private Float furTension; + private Float towerTension; + + private Date createTime; + private Date updateTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageBo.java new file mode 100644 index 00000000..580c256b --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageBo.java @@ -0,0 +1,37 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ProStoppageBo extends BaseEntity { + + private Long stopid; + + private String coilid; + private String shift; + private String crew; + private String area; + private String unit; + private String seton; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + private Float duration; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date insdate; + + private String stopType; + private String remark; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageTypeBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageTypeBo.java new file mode 100644 index 00000000..44af571b --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ProStoppageTypeBo.java @@ -0,0 +1,19 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ProStoppageTypeBo extends BaseEntity { + + private Integer stopType; + + private String remark; + + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftConfigBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftConfigBo.java new file mode 100644 index 00000000..8da21a02 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftConfigBo.java @@ -0,0 +1,31 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ShiftConfigBo extends BaseEntity { + + private Integer configid; + + private Date startDate; + + private Float shift1; + + private Float shift2; + + private Float shift3; + + private Float shift4; + + private Float shift5; + + private Integer shiftNum; + + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftCrewBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftCrewBo.java new file mode 100644 index 00000000..b52690a3 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftCrewBo.java @@ -0,0 +1,19 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ShiftCrewBo extends BaseEntity { + + private Integer seqno; + + private String shift; + + private String crew; + + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftHistoryBo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftHistoryBo.java new file mode 100644 index 00000000..9a205a79 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/bo/ShiftHistoryBo.java @@ -0,0 +1,19 @@ +package com.klp.pocket.galvanize1.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ShiftHistoryBo extends BaseEntity { + + private String shift; + + private String crew; + + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CplSegmentTotalVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CplSegmentTotalVo.java new file mode 100644 index 00000000..2350d7d3 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CplSegmentTotalVo.java @@ -0,0 +1,28 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class CplSegmentTotalVo { + + private Long id; + + private String enCoilId; + + private Integer picklingCount; + + private Integer segNo; + + private Double startPos; + + private Double endPos; + + private Double segLen; + + private String totalValuesJson; + + private Date createTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdiPlanVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdiPlanVo.java new file mode 100644 index 00000000..483e4add --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdiPlanVo.java @@ -0,0 +1,131 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class CrmPdiPlanVo { + + private Long id; + + private Integer seqid; + private String coilid; + private Integer dummyCoilFlag; + private String status; + private String planid; + private String planType; + + private BigDecimal yieldPoint; + private BigDecimal entryWeight; + private BigDecimal entryThick; + private BigDecimal entryWidth; + private BigDecimal entryLength; + private BigDecimal entryOuterDiameter; + private BigDecimal entryInnerDiameter; + private BigDecimal exitInnerDiameter; + + private String steelGrade; + private String exitCoilid; + private Integer tlvFlag; + private String orderNo; + private String custommerCode; + + private BigDecimal orderThick; + private BigDecimal orderWidth; + private BigDecimal orderLenLow; + private BigDecimal orderLenUp; + private BigDecimal orderWt; + private BigDecimal orderWtLow; + private BigDecimal orderWtUp; + private BigDecimal orderMetCoatTop; + private BigDecimal orderMetCoatBot; + + private String finalUse; + private String hotCoilCode; + + private BigDecimal exitLengthTar; + private BigDecimal exitLengthTolMax; + private BigDecimal exitLengthTolMin; + private BigDecimal exitThickTar; + private BigDecimal exitThickTolMax; + private BigDecimal exitThickTolMin; + private BigDecimal exitWidthTar; + private BigDecimal exitWidthTolMax; + private BigDecimal exitWidthTolMin; + + private String nextWholeBacklogCode; + private String prevWholeBacklogCode; + private String exitWtMode; + private Integer splitNum; + + private BigDecimal exitWeight1; + private BigDecimal exitWeight2; + private BigDecimal exitWeight3; + private BigDecimal exitWeight4; + private BigDecimal exitWeight5; + private BigDecimal exitWeight6; + + private String headSampleMode; + private String headSamplePosition; + private BigDecimal headSampleLength; + private String headSamplePlace; + private Integer headSampleNum; + + private String tailSampleMode; + private String tailSamplePosition; + private BigDecimal tailSampleLength; + private String tailSamplePlace; + private Integer tailSampleNum; + + private Date timestamp; + private Date onlineDate; + private Date startDate; + private Date endDate; + private Date furInDate; + private Date furOutDate; + private Date createTime; + private Date updateTime; + + private String surfaceVice; + private String weldCode; + + private Integer spmFlag; + private BigDecimal spmElongation; + private BigDecimal spmRollforce; + private String spmProcessType; + private String spmControlMode; + private BigDecimal spmBendingForce; + private BigDecimal spmCrimpingRollMesh; + private BigDecimal spmBillyRollMesh; + + private Integer trimFlag; + private String tlvMode; + private BigDecimal tlvElongation; + private Integer chromating; + private String coatingCode; + private Integer oilingFlag; + private String oilingType; + private BigDecimal oilingTop; + private BigDecimal oilingBottom; + + private String heatCycle; + private String coatingSelection; + private String coatingType; + private BigDecimal zincCoatingThickness; + private String chemTreatMode; + + private BigDecimal aimWeightTop; + private BigDecimal aimWeightBottom; + private BigDecimal maxTolWeightTop; + private BigDecimal maxTolWeightBottom; + private BigDecimal headendGaugeLength; + private BigDecimal tailendGaugeLength; + + private String unitCode; + private String originCoilid; + private Date onlineTime; + private Date producingTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdoExcoilVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdoExcoilVo.java new file mode 100644 index 00000000..a43d99ec --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/CrmPdoExcoilVo.java @@ -0,0 +1,63 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class CrmPdoExcoilVo { + + private Long id; + + private String exitMatId; + private String entryMatId; + private Integer subId; + private Double startPosition; + private Double endPosition; + private Long planId; + private String planNo; + private String prodCode; + private String groupNo; + private String shiftNo; + private String status; + private String steelGrade; + + private Double entryThick; + private Double entryWidth; + private Double entryLength; + private Double entryWeight; + + private Double weightTop; + private Double weightBottom; + + private Double exitLength; + private Double exitNetWeight; + private Double theoryWeight; + private Double actualWeight; + + private Double exitOuterDiameter; + private Double exitThickness; + private Double exitWidth; + + private String customer; + + private Date onlineTime; + private Date startTime; + private Date endTime; + + private Long delFlag; + private Date createTime; + private Date updateTime; + + private String unitCode; + private String processCode; + + private Boolean lastFlag; + private Boolean separateFlag; + + private String planOrigin; + + private BigDecimal zincCoatingThickness; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/PdiSetupVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/PdiSetupVo.java new file mode 100644 index 00000000..23417241 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/PdiSetupVo.java @@ -0,0 +1,33 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class PdiSetupVo { + + private Long id; + + private String coilid; + private String planid; + private String steelGrade; + private Float thick; + private Float yieldStren; + + private Float porTension; + private Float celTension; + private Float cleanTension; + private Float passivationTension; + private Float cxlTension; + private Float trTension; + private Float levelerEntryTension; + private Float levelerExitTension; + private Float straightenerExitTension; + private Float furTension; + private Float towerTension; + + private Date createTime; + private Date updateTime; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageTypeVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageTypeVo.java new file mode 100644 index 00000000..dafd2a8c --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageTypeVo.java @@ -0,0 +1,16 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ProStoppageTypeVo { + + private Integer stopType; + + private String remark; + + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageVo.java new file mode 100644 index 00000000..984b1518 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ProStoppageVo.java @@ -0,0 +1,27 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ProStoppageVo { + + private Long stopid; + + private String coilid; + private String shift; + private String crew; + private String area; + private String unit; + private String seton; + + private Date startDate; + private Date endDate; + + private Float duration; + private Date insdate; + private String stopType; + private String remark; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftConfigVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftConfigVo.java new file mode 100644 index 00000000..49f55a7d --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftConfigVo.java @@ -0,0 +1,28 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ShiftConfigVo { + + private Integer configid; + + private Date startDate; + + private Float shift1; + + private Float shift2; + + private Float shift3; + + private Float shift4; + + private Float shift5; + + private Integer shiftNum; + + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftCrewVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftCrewVo.java new file mode 100644 index 00000000..cde2f2e4 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftCrewVo.java @@ -0,0 +1,16 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +@Data +public class ShiftCrewVo { + + private Integer seqno; + + private String shift; + + private String crew; + + private Integer flag; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftHistoryVo.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftHistoryVo.java new file mode 100644 index 00000000..b4c6c3a5 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/domain/vo/ShiftHistoryVo.java @@ -0,0 +1,16 @@ +package com.klp.pocket.galvanize1.domain.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ShiftHistoryVo { + + private String shift; + + private String crew; + + private Date insdate; +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CplSegmentTotalMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CplSegmentTotalMapper.java new file mode 100644 index 00000000..a9627a2c --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CplSegmentTotalMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.CplSegmentTotal; +import com.klp.pocket.galvanize1.domain.vo.CplSegmentTotalVo; + +public interface CplSegmentTotalMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdiPlanMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdiPlanMapper.java new file mode 100644 index 00000000..9097c09a --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdiPlanMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.CrmPdiPlan; +import com.klp.pocket.galvanize1.domain.vo.CrmPdiPlanVo; + +public interface CrmPdiPlanMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdoExcoilMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdoExcoilMapper.java new file mode 100644 index 00000000..fabcf93d --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/CrmPdoExcoilMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.CrmPdoExcoil; +import com.klp.pocket.galvanize1.domain.vo.CrmPdoExcoilVo; + +public interface CrmPdoExcoilMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/PdiSetupMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/PdiSetupMapper.java new file mode 100644 index 00000000..4e80a03a --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/PdiSetupMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.PdiSetup; +import com.klp.pocket.galvanize1.domain.vo.PdiSetupVo; + +public interface PdiSetupMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageMapper.java new file mode 100644 index 00000000..6dd40f42 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.ProStoppage; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageVo; + +public interface ProStoppageMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageTypeMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageTypeMapper.java new file mode 100644 index 00000000..700d4555 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ProStoppageTypeMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.ProStoppageType; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageTypeVo; + +public interface ProStoppageTypeMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftConfigMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftConfigMapper.java new file mode 100644 index 00000000..f0fcc4d5 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftConfigMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.ShiftConfig; +import com.klp.pocket.galvanize1.domain.vo.ShiftConfigVo; + +public interface ShiftConfigMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftCrewMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftCrewMapper.java new file mode 100644 index 00000000..8ecc1d0a --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftCrewMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.ShiftCrew; +import com.klp.pocket.galvanize1.domain.vo.ShiftCrewVo; + +public interface ShiftCrewMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftHistoryMapper.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftHistoryMapper.java new file mode 100644 index 00000000..06fdd82e --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/mapper/ShiftHistoryMapper.java @@ -0,0 +1,9 @@ +package com.klp.pocket.galvanize1.mapper; + +import com.klp.common.core.mapper.BaseMapperPlus; +import com.klp.pocket.galvanize1.domain.ShiftHistory; +import com.klp.pocket.galvanize1.domain.vo.ShiftHistoryVo; + +public interface ShiftHistoryMapper extends BaseMapperPlus { +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICplSegmentTotalService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICplSegmentTotalService.java new file mode 100644 index 00000000..fd3d6f5c --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICplSegmentTotalService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.CplSegmentTotalBo; +import com.klp.pocket.galvanize1.domain.vo.CplSegmentTotalVo; + +import java.util.Collection; +import java.util.List; + +public interface ICplSegmentTotalService { + + CplSegmentTotalVo queryById(Long id); + + TableDataInfo queryPageList(CplSegmentTotalBo bo, PageQuery pageQuery); + + List queryList(CplSegmentTotalBo bo); + + Boolean insertByBo(CplSegmentTotalBo bo); + + Boolean updateByBo(CplSegmentTotalBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdiPlanService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdiPlanService.java new file mode 100644 index 00000000..71a080b5 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdiPlanService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.CrmPdiPlanBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdiPlanVo; + +import java.util.Collection; +import java.util.List; + +public interface ICrmPdiPlanService { + + CrmPdiPlanVo queryById(Long id); + + TableDataInfo queryPageList(CrmPdiPlanBo bo, PageQuery pageQuery); + + List queryList(CrmPdiPlanBo bo); + + Boolean insertByBo(CrmPdiPlanBo bo); + + Boolean updateByBo(CrmPdiPlanBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdoExcoilService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdoExcoilService.java new file mode 100644 index 00000000..a2d8b491 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/ICrmPdoExcoilService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.CrmPdoExcoilBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdoExcoilVo; + +import java.util.Collection; +import java.util.List; + +public interface ICrmPdoExcoilService { + + CrmPdoExcoilVo queryById(Long id); + + TableDataInfo queryPageList(CrmPdoExcoilBo bo, PageQuery pageQuery); + + List queryList(CrmPdoExcoilBo bo); + + Boolean insertByBo(CrmPdoExcoilBo bo); + + Boolean updateByBo(CrmPdoExcoilBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IPdiSetupService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IPdiSetupService.java new file mode 100644 index 00000000..228b8785 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IPdiSetupService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.PdiSetupBo; +import com.klp.pocket.galvanize1.domain.vo.PdiSetupVo; + +import java.util.Collection; +import java.util.List; + +public interface IPdiSetupService { + + PdiSetupVo queryById(Long id); + + TableDataInfo queryPageList(PdiSetupBo bo, PageQuery pageQuery); + + List queryList(PdiSetupBo bo); + + Boolean insertByBo(PdiSetupBo bo); + + Boolean updateByBo(PdiSetupBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageService.java new file mode 100644 index 00000000..77c9c774 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageVo; + +import java.util.Collection; +import java.util.List; + +public interface IProStoppageService { + + ProStoppageVo queryById(Long stopid); + + TableDataInfo queryPageList(ProStoppageBo bo, PageQuery pageQuery); + + List queryList(ProStoppageBo bo); + + Boolean insertByBo(ProStoppageBo bo); + + Boolean updateByBo(ProStoppageBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageTypeService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageTypeService.java new file mode 100644 index 00000000..9a30d4ab --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IProStoppageTypeService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageTypeBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageTypeVo; + +import java.util.Collection; +import java.util.List; + +public interface IProStoppageTypeService { + + ProStoppageTypeVo queryById(Integer stopType); + + TableDataInfo queryPageList(ProStoppageTypeBo bo, PageQuery pageQuery); + + List queryList(ProStoppageTypeBo bo); + + Boolean insertByBo(ProStoppageTypeBo bo); + + Boolean updateByBo(ProStoppageTypeBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftConfigService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftConfigService.java new file mode 100644 index 00000000..2949cdcb --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftConfigService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.ShiftConfigBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftConfigVo; + +import java.util.Collection; +import java.util.List; + +public interface IShiftConfigService { + + ShiftConfigVo queryById(Integer id); + + TableDataInfo queryPageList(ShiftConfigBo bo, PageQuery pageQuery); + + List queryList(ShiftConfigBo bo); + + Boolean insertByBo(ShiftConfigBo bo); + + Boolean updateByBo(ShiftConfigBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftCrewService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftCrewService.java new file mode 100644 index 00000000..fbb88b19 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftCrewService.java @@ -0,0 +1,25 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.ShiftCrewBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftCrewVo; + +import java.util.Collection; +import java.util.List; + +public interface IShiftCrewService { + + ShiftCrewVo queryById(Integer id); + + TableDataInfo queryPageList(ShiftCrewBo bo, PageQuery pageQuery); + + List queryList(ShiftCrewBo bo); + + Boolean insertByBo(ShiftCrewBo bo); + + Boolean updateByBo(ShiftCrewBo bo); + + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftHistoryService.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftHistoryService.java new file mode 100644 index 00000000..62512af7 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/IShiftHistoryService.java @@ -0,0 +1,18 @@ +package com.klp.pocket.galvanize1.service; + +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.bo.ShiftHistoryBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftHistoryVo; + +import java.util.List; + +public interface IShiftHistoryService { + + TableDataInfo queryPageList(ShiftHistoryBo bo, PageQuery pageQuery); + + List queryList(ShiftHistoryBo bo); + + Boolean insertByBo(ShiftHistoryBo bo); +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CplSegmentTotalServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CplSegmentTotalServiceImpl.java new file mode 100644 index 00000000..89bac601 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CplSegmentTotalServiceImpl.java @@ -0,0 +1,89 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.CplSegmentTotal; +import com.klp.pocket.galvanize1.domain.bo.CplSegmentTotalBo; +import com.klp.pocket.galvanize1.domain.vo.CplSegmentTotalVo; +import com.klp.pocket.galvanize1.mapper.CplSegmentTotalMapper; +import com.klp.pocket.galvanize1.service.ICplSegmentTotalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class CplSegmentTotalServiceImpl implements ICplSegmentTotalService { + + private final CplSegmentTotalMapper baseMapper; + + @Override + public CplSegmentTotalVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(CplSegmentTotalBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(CplSegmentTotalBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CplSegmentTotalBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getId() != null, CplSegmentTotal::getId, bo.getId()); + lqw.eq(StringUtils.isNotBlank(bo.getEnCoilId()), CplSegmentTotal::getEnCoilId, bo.getEnCoilId()); + lqw.eq(bo.getPicklingCount() != null, CplSegmentTotal::getPicklingCount, bo.getPicklingCount()); + lqw.eq(bo.getSegNo() != null, CplSegmentTotal::getSegNo, bo.getSegNo()); + lqw.ge(bo.getStartPos() != null, CplSegmentTotal::getStartPos, bo.getStartPos()); + lqw.le(bo.getEndPos() != null, CplSegmentTotal::getEndPos, bo.getEndPos()); + lqw.eq(bo.getSegLen() != null, CplSegmentTotal::getSegLen, bo.getSegLen()); + lqw.eq(StringUtils.isNotBlank(bo.getTotalValuesJson()), CplSegmentTotal::getTotalValuesJson, bo.getTotalValuesJson()); + lqw.eq(bo.getCreateTime() != null, CplSegmentTotal::getCreateTime, bo.getCreateTime()); + return lqw; + } + + @Override + public Boolean insertByBo(CplSegmentTotalBo bo) { + CplSegmentTotal add = BeanUtil.toBean(bo, CplSegmentTotal.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(CplSegmentTotalBo bo) { + CplSegmentTotal update = BeanUtil.toBean(bo, CplSegmentTotal.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(CplSegmentTotal entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdiPlanServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdiPlanServiceImpl.java new file mode 100644 index 00000000..8bdba133 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdiPlanServiceImpl.java @@ -0,0 +1,88 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.CrmPdiPlan; +import com.klp.pocket.galvanize1.domain.bo.CrmPdiPlanBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdiPlanVo; +import com.klp.pocket.galvanize1.mapper.CrmPdiPlanMapper; +import com.klp.pocket.galvanize1.service.ICrmPdiPlanService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class CrmPdiPlanServiceImpl implements ICrmPdiPlanService { + + private final CrmPdiPlanMapper baseMapper; + + @Override + public CrmPdiPlanVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(CrmPdiPlanBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(CrmPdiPlanBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CrmPdiPlanBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getId() != null, CrmPdiPlan::getId, bo.getId()); + lqw.eq(bo.getSeqid() != null, CrmPdiPlan::getSeqid, bo.getSeqid()); + lqw.eq(StringUtils.isNotBlank(bo.getCoilid()), CrmPdiPlan::getCoilid, bo.getCoilid()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CrmPdiPlan::getStatus, bo.getStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanid()), CrmPdiPlan::getPlanid, bo.getPlanid()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanType()), CrmPdiPlan::getPlanType, bo.getPlanType()); + lqw.eq(StringUtils.isNotBlank(bo.getUnitCode()), CrmPdiPlan::getUnitCode, bo.getUnitCode()); + lqw.orderByDesc(CrmPdiPlan::getId); + return lqw; + } + + @Override + public Boolean insertByBo(CrmPdiPlanBo bo) { + CrmPdiPlan add = BeanUtil.toBean(bo, CrmPdiPlan.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(CrmPdiPlanBo bo) { + CrmPdiPlan update = BeanUtil.toBean(bo, CrmPdiPlan.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(CrmPdiPlan entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdoExcoilServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdoExcoilServiceImpl.java new file mode 100644 index 00000000..815e0a3f --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/CrmPdoExcoilServiceImpl.java @@ -0,0 +1,87 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.CrmPdoExcoil; +import com.klp.pocket.galvanize1.domain.bo.CrmPdoExcoilBo; +import com.klp.pocket.galvanize1.domain.vo.CrmPdoExcoilVo; +import com.klp.pocket.galvanize1.mapper.CrmPdoExcoilMapper; +import com.klp.pocket.galvanize1.service.ICrmPdoExcoilService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class CrmPdoExcoilServiceImpl implements ICrmPdoExcoilService { + + private final CrmPdoExcoilMapper baseMapper; + + @Override + public CrmPdoExcoilVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(CrmPdoExcoilBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(CrmPdoExcoilBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CrmPdoExcoilBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getId() != null, CrmPdoExcoil::getId, bo.getId()); + lqw.eq(StringUtils.isNotBlank(bo.getExitMatId()), CrmPdoExcoil::getExitMatId, bo.getExitMatId()); + lqw.eq(StringUtils.isNotBlank(bo.getEntryMatId()), CrmPdoExcoil::getEntryMatId, bo.getEntryMatId()); + lqw.eq(bo.getPlanId() != null, CrmPdoExcoil::getPlanId, bo.getPlanId()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CrmPdoExcoil::getStatus, bo.getStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getUnitCode()), CrmPdoExcoil::getUnitCode, bo.getUnitCode()); + lqw.orderByDesc(CrmPdoExcoil::getId); + return lqw; + } + + @Override + public Boolean insertByBo(CrmPdoExcoilBo bo) { + CrmPdoExcoil add = BeanUtil.toBean(bo, CrmPdoExcoil.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(CrmPdoExcoilBo bo) { + CrmPdoExcoil update = BeanUtil.toBean(bo, CrmPdoExcoil.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(CrmPdoExcoil entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/PdiSetupServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/PdiSetupServiceImpl.java new file mode 100644 index 00000000..a4440168 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/PdiSetupServiceImpl.java @@ -0,0 +1,87 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.PdiSetup; +import com.klp.pocket.galvanize1.domain.bo.PdiSetupBo; +import com.klp.pocket.galvanize1.domain.vo.PdiSetupVo; +import com.klp.pocket.galvanize1.mapper.PdiSetupMapper; +import com.klp.pocket.galvanize1.service.IPdiSetupService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class PdiSetupServiceImpl implements IPdiSetupService { + + private final PdiSetupMapper baseMapper; + + @Override + public PdiSetupVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(PdiSetupBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(PdiSetupBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(PdiSetupBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getId() != null, PdiSetup::getId, bo.getId()); + lqw.eq(StringUtils.isNotBlank(bo.getCoilid()), PdiSetup::getCoilid, bo.getCoilid()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanid()), PdiSetup::getPlanid, bo.getPlanid()); + lqw.eq(StringUtils.isNotBlank(bo.getSteelGrade()), PdiSetup::getSteelGrade, bo.getSteelGrade()); + lqw.eq(bo.getThick() != null, PdiSetup::getThick, bo.getThick()); + lqw.eq(bo.getYieldStren() != null, PdiSetup::getYieldStren, bo.getYieldStren()); + lqw.orderByDesc(PdiSetup::getId); + return lqw; + } + + @Override + public Boolean insertByBo(PdiSetupBo bo) { + PdiSetup add = BeanUtil.toBean(bo, PdiSetup.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(PdiSetupBo bo) { + PdiSetup update = BeanUtil.toBean(bo, PdiSetup.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(PdiSetup entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageServiceImpl.java new file mode 100644 index 00000000..0f4febbc --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageServiceImpl.java @@ -0,0 +1,108 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.ProStoppage; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageVo; +import com.klp.pocket.galvanize1.mapper.ProStoppageMapper; +import com.klp.pocket.galvanize1.service.IProStoppageService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class ProStoppageServiceImpl implements IProStoppageService { + + private final ProStoppageMapper baseMapper; + + @Override + public ProStoppageVo queryById(Long stopid) { + return baseMapper.selectVoById(stopid); + } + + @Override + public TableDataInfo queryPageList(ProStoppageBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ProStoppageBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ProStoppageBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getStopid() != null, ProStoppage::getStopid, bo.getStopid()); + lqw.eq(StringUtils.isNotBlank(bo.getCoilid()), ProStoppage::getCoilid, bo.getCoilid()); + lqw.eq(StringUtils.isNotBlank(bo.getShift()), ProStoppage::getShift, bo.getShift()); + lqw.eq(StringUtils.isNotBlank(bo.getCrew()), ProStoppage::getCrew, bo.getCrew()); + lqw.eq(StringUtils.isNotBlank(bo.getArea()), ProStoppage::getArea, bo.getArea()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), ProStoppage::getUnit, bo.getUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getSeton()), ProStoppage::getSeton, bo.getSeton()); + lqw.eq(StringUtils.isNotBlank(bo.getStopType()), ProStoppage::getStopType, bo.getStopType()); + lqw.eq(StringUtils.isNotBlank(bo.getRemark()), ProStoppage::getRemark, bo.getRemark()); + + lqw.ge(bo.getStartDate() != null, ProStoppage::getStartDate, bo.getStartDate()); + if (bo.getEndDate() != null) { + Date endDate = bo.getEndDate(); + LocalDate localDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDateTime endOfDay = LocalDateTime.of(localDate, LocalTime.MAX); + Date endDateWithTime = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); + lqw.le(ProStoppage::getStartDate, endDateWithTime); + } + + lqw.eq(bo.getDuration() != null, ProStoppage::getDuration, bo.getDuration()); + lqw.eq(bo.getInsdate() != null, ProStoppage::getInsdate, bo.getInsdate()); + + lqw.orderByDesc(ProStoppage::getInsdate); + return lqw; + } + + @Override + public Boolean insertByBo(ProStoppageBo bo) { + ProStoppage add = BeanUtil.toBean(bo, ProStoppage.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setStopid(add.getStopid()); + } + return flag; + } + + @Override + public Boolean updateByBo(ProStoppageBo bo) { + ProStoppage update = BeanUtil.toBean(bo, ProStoppage.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(ProStoppage entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageTypeServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageTypeServiceImpl.java new file mode 100644 index 00000000..8ef14fd7 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ProStoppageTypeServiceImpl.java @@ -0,0 +1,80 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.ProStoppageType; +import com.klp.pocket.galvanize1.domain.bo.ProStoppageTypeBo; +import com.klp.pocket.galvanize1.domain.vo.ProStoppageTypeVo; +import com.klp.pocket.galvanize1.mapper.ProStoppageTypeMapper; +import com.klp.pocket.galvanize1.service.IProStoppageTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class ProStoppageTypeServiceImpl implements IProStoppageTypeService { + + private final ProStoppageTypeMapper baseMapper; + + @Override + public ProStoppageTypeVo queryById(Integer stopType) { + return baseMapper.selectVoById(stopType); + } + + @Override + public TableDataInfo queryPageList(ProStoppageTypeBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ProStoppageTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ProStoppageTypeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getStopType() != null, ProStoppageType::getStopType, bo.getStopType()); + lqw.eq(StringUtils.isNotBlank(bo.getRemark()), ProStoppageType::getRemark, bo.getRemark()); + lqw.eq(bo.getInsdate() != null, ProStoppageType::getInsdate, bo.getInsdate()); + lqw.orderByDesc(ProStoppageType::getStopType); + return lqw; + } + + @Override + public Boolean insertByBo(ProStoppageTypeBo bo) { + ProStoppageType add = BeanUtil.toBean(bo, ProStoppageType.class); + validEntityBeforeSave(add); + return baseMapper.insert(add) > 0; + } + + @Override + public Boolean updateByBo(ProStoppageTypeBo bo) { + ProStoppageType update = BeanUtil.toBean(bo, ProStoppageType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(ProStoppageType entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftConfigServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftConfigServiceImpl.java new file mode 100644 index 00000000..0bdd1f2c --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftConfigServiceImpl.java @@ -0,0 +1,81 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.pocket.galvanize1.domain.ShiftConfig; +import com.klp.pocket.galvanize1.domain.bo.ShiftConfigBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftConfigVo; +import com.klp.pocket.galvanize1.mapper.ShiftConfigMapper; +import com.klp.pocket.galvanize1.service.IShiftConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class ShiftConfigServiceImpl implements IShiftConfigService { + + private final ShiftConfigMapper baseMapper; + + @Override + public ShiftConfigVo queryById(Integer id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(ShiftConfigBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ShiftConfigBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ShiftConfigBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getConfigid() != null, ShiftConfig::getConfigid, bo.getConfigid()); + lqw.eq(bo.getFlag() != null, ShiftConfig::getFlag, bo.getFlag()); + lqw.orderByDesc(ShiftConfig::getConfigid); + return lqw; + } + + @Override + public Boolean insertByBo(ShiftConfigBo bo) { + ShiftConfig add = BeanUtil.toBean(bo, ShiftConfig.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setConfigid(add.getConfigid()); + } + return flag; + } + + @Override + public Boolean updateByBo(ShiftConfigBo bo) { + ShiftConfig update = BeanUtil.toBean(bo, ShiftConfig.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(ShiftConfig entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftCrewServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftCrewServiceImpl.java new file mode 100644 index 00000000..df3de459 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftCrewServiceImpl.java @@ -0,0 +1,83 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.ShiftCrew; +import com.klp.pocket.galvanize1.domain.bo.ShiftCrewBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftCrewVo; +import com.klp.pocket.galvanize1.mapper.ShiftCrewMapper; +import com.klp.pocket.galvanize1.service.IShiftCrewService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class ShiftCrewServiceImpl implements IShiftCrewService { + + private final ShiftCrewMapper baseMapper; + + @Override + public ShiftCrewVo queryById(Integer id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(ShiftCrewBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ShiftCrewBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ShiftCrewBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getSeqno() != null, ShiftCrew::getSeqno, bo.getSeqno()); + lqw.eq(StringUtils.isNotBlank(bo.getShift()), ShiftCrew::getShift, bo.getShift()); + lqw.eq(StringUtils.isNotBlank(bo.getCrew()), ShiftCrew::getCrew, bo.getCrew()); + lqw.eq(bo.getFlag() != null, ShiftCrew::getFlag, bo.getFlag()); + lqw.orderByDesc(ShiftCrew::getSeqno); + return lqw; + } + + @Override + public Boolean insertByBo(ShiftCrewBo bo) { + ShiftCrew add = BeanUtil.toBean(bo, ShiftCrew.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setSeqno(add.getSeqno()); + } + return flag; + } + + @Override + public Boolean updateByBo(ShiftCrewBo bo) { + ShiftCrew update = BeanUtil.toBean(bo, ShiftCrew.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(ShiftCrew entity) { + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + return baseMapper.deleteBatchIds(ids) > 0; + } +} + diff --git a/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftHistoryServiceImpl.java b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftHistoryServiceImpl.java new file mode 100644 index 00000000..246c6a36 --- /dev/null +++ b/klp-pocket/src/main/java/com/klp/pocket/galvanize1/service/impl/ShiftHistoryServiceImpl.java @@ -0,0 +1,55 @@ +package com.klp.pocket.galvanize1.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.utils.StringUtils; +import com.klp.pocket.galvanize1.domain.ShiftHistory; +import com.klp.pocket.galvanize1.domain.bo.ShiftHistoryBo; +import com.klp.pocket.galvanize1.domain.vo.ShiftHistoryVo; +import com.klp.pocket.galvanize1.mapper.ShiftHistoryMapper; +import com.klp.pocket.galvanize1.service.IShiftHistoryService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@RequiredArgsConstructor +@DS("galvanize1") +@Service +public class ShiftHistoryServiceImpl implements IShiftHistoryService { + + private final ShiftHistoryMapper baseMapper; + + @Override + public TableDataInfo queryPageList(ShiftHistoryBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(ShiftHistoryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ShiftHistoryBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getShift()), ShiftHistory::getShift, bo.getShift()); + lqw.eq(StringUtils.isNotBlank(bo.getCrew()), ShiftHistory::getCrew, bo.getCrew()); + lqw.orderByDesc(ShiftHistory::getInsdate); + return lqw; + } + + @Override + public Boolean insertByBo(ShiftHistoryBo bo) { + ShiftHistory add = BeanUtil.toBean(bo, ShiftHistory.class); + return baseMapper.insert(add) > 0; + } +} + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/CplSegmentTotalMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/CplSegmentTotalMapper.xml new file mode 100644 index 00000000..a019918b --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/CplSegmentTotalMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdiPlanMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdiPlanMapper.xml new file mode 100644 index 00000000..790be279 --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdiPlanMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdoExcoilMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdoExcoilMapper.xml new file mode 100644 index 00000000..272d8ade --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/CrmPdoExcoilMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/PdiSetupMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/PdiSetupMapper.xml new file mode 100644 index 00000000..bad87655 --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/PdiSetupMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageMapper.xml new file mode 100644 index 00000000..58b979c1 --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageTypeMapper.xml b/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageTypeMapper.xml new file mode 100644 index 00000000..f417b7a9 --- /dev/null +++ b/klp-pocket/src/main/resources/mapper/galvanize1/ProStoppageTypeMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1PdoExcoilMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1PdoExcoilMapper.xml index 3dc65119..0ce8935d 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1PdoExcoilMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1PdoExcoilMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -87,7 +87,7 @@ - + diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateCurrentMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateCurrentMapper.xml index 4bdfbc9b..a89d06a1 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateCurrentMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateCurrentMapper.xml @@ -1,7 +1,7 @@ - - + + @@ -146,7 +146,7 @@ - + INSERT INTO klptcm1_pro_plant_state_current ( @@ -166,7 +166,7 @@ - + UPDATE klptcm1_pro_plant_state_current SET YEAR=#{year}, MONTH=#{month}, DAY=#{day}, HOUR=#{hour}, MINUTE=#{minute}, diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateDefineMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateDefineMapper.xml index 41316684..48fac7a4 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateDefineMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateDefineMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -29,14 +29,14 @@ WHERE ID = #{id} - + INSERT INTO klptcm1_pro_plant_state_define (ID, NAME, UNITS, COMMENTS, MODELTYPE) VALUES (#{id}, #{name}, #{units}, #{comments}, #{modeltype}) - + UPDATE klptcm1_pro_plant_state_define SET NAME = #{name}, @@ -55,7 +55,7 @@ - + diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateHistoryMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateHistoryMapper.xml index d9b59ba0..ddb887e3 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateHistoryMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProPlantStateHistoryMapper.xml @@ -2,9 +2,9 @@ - + - + diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProStoppageMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProStoppageMapper.xml index 3095d8eb..d70fb0aa 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProStoppageMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ProStoppageMapper.xml @@ -2,9 +2,9 @@ - + - + diff --git a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ShiftCurrentMapper.xml b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ShiftCurrentMapper.xml index ac247306..5bbb93a7 100644 --- a/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ShiftCurrentMapper.xml +++ b/klp-pocket/src/main/resources/mapper/pocket/Klptcm1ShiftCurrentMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/klp-ui/src/views/da/oee/index.vue b/klp-ui/src/views/da/oee/index.vue index 37576b48..e69de29b 100644 --- a/klp-ui/src/views/da/oee/index.vue +++ b/klp-ui/src/views/da/oee/index.vue @@ -1,873 +0,0 @@ - - - - - - - \ No newline at end of file