docs(bi): 添加决策模块重构设计文档与BPM审批流程部署脚本
- 新增决策模块前端联调方案文档,包含API变更说明和KPI编码清单
- 新增决策模块重构设计方案文档,涵盖业务目标、现状分析和数据摸底
- 新增BPM审批流程手工部署脚本,包含6个仓储域审批流程定义
- 补充M6菜单权限配置,增加SN码更新和设备入库单相关权限点
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å³ç模åéæ - å端èè°æ¹æ¡ |
| | | |
| | | > çæ¬ï¼v1.0 ï½ æ¥æï¼2026-09-09 ï½ å端模åï¼yudao-module-biï¼å³çæ¯æï¼ |
| | | > 详ç»è®¾è®¡è§ [decision_module_redesign.md](./decision_module_redesign.md) |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - å³çæ»è§å¤§å±ï¼`/bi/decision-overview`ï¼ |
| | | - éè´éå®å¤§å±ï¼`/bi/purchase-sales`ï¼ |
| | | - ä»åºå¤§å±ï¼`/bi/warehouse`ï¼ |
| | | - ç产设å¤å¤§å±ï¼`/bi/production-equipment`ï¼ |
| | | - è´¨é大å±ï¼`/bi/quality`ï¼ |
| | | - è½èçæ§å¤§å±ï¼`/bi/energy`ï¼æ°å¢ï¼ |
| | | - è¥é客æ·å¤§å±ï¼`/bi/sales-customer`ï¼æ°å¢ï¼ |
| | | - å³ç BI å¤§å± / å¾è¡¨é
置管ç页 / æ°æ®æºé
置管çé¡µï¼æ¢æï¼ |
| | | |
| | | ## API åæ´è¯´æ |
| | | |
| | | æ¬æ¬¡ä¸ºæ°å¢æ¥å£ï¼ä¸æ¹å¨æ¢ææ¥å£ç¾åã |
| | | |
| | | ### 1. KPI åå²å¿«ç
§è¶å¿ï¼è¶å¿ç å¤ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/bi/decision/kpi/trend/{kpiCode}` | æå® KPI çåå²å¿«ç
§åºåï¼æçº¿å¾æ°æ®æºï¼ | |
| | | |
| | | **请æ±åæ°ï¼Queryï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | kpiCode | String | æ¯ | KPI ç¼ç ï¼è§ä¸æ¹ KPI æ¸
åï¼ | |
| | | | beginTime | String | å¦ | å¼å§æ¶é´ `yyyy-MM-dd HH:mm:ss`ï¼é»è®¤è¿ 30 天 | |
| | | | endTime | String | å¦ | ç»ææ¶é´ï¼é»è®¤å½å | |
| | | | periodType | String | å¦ | ç»è®¡å¨æ hour/day/week/monthï¼é»è®¤ hour | |
| | | |
| | | **ååºå段ï¼** |
| | | |
| | | ```json |
| | | { |
| | | "code": 0, |
| | | "data": { |
| | | "kpiCode": "device_operation_rate", |
| | | "kpiName": "弿ºç", |
| | | "category": "device_operation", |
| | | "unit": "%", |
| | | "periodType": "hour", |
| | | "points": [ |
| | | {"time": "2026-09-09T02:00:00", "value": 100.0000}, |
| | | {"time": "2026-09-09T03:00:00", "value": 100.0000} |
| | | ] |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | > å¿«ç
§ç±å®æ¶ä»»å¡æ¯å°æ¶èååå
¥ï¼KPI å®ä¹åéçå¾
ä¸ä¸æ´ç¹èååºæ°ï¼æ å¿«ç
§æ¶ `points` 为空æ°ç»ã |
| | | |
| | | ### 2. KPI ç¯æ¯ç å¤ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/bi/decision/kpi/compare/{kpiCode}` | å½åå¿«ç
§å¼è¾ä¸ä¸å¨æçååçåè¿ 24 æç»è®¡ | |
| | | |
| | | **ååºå段ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | currentValue / currentTime | Decimal / String | æè¿ä¸æå¿«ç
§å¼ä¸æ¶é´ | |
| | | | previousValue / previousTime | Decimal / String | ä¸ä¸æå¿«ç
§å¼ | |
| | | | changeRate | Decimal | ç¯æ¯ååçï¼%ï¼ï¼ä¸æä¸åå¨æä¸º 0 æ¶ä¸º null | |
| | | | avgValue / maxValue / minValue | Decimal | è¿ 24 æåå¼/æå¤§/æå° | |
| | | | periodCount | int | å®é
å¿«ç
§æ¡æ° | |
| | | |
| | | ### 3. 颿µçæï¼æ©å±æ¨¡ååæ°ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | `/bi/decision/forecast/generate` | çæé¢æµï¼æ°å¢ `model` åæ° | |
| | | |
| | | **æ°å¢ Query åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | forecastCode | String | æ¯ | 颿µç¼ç ï¼æ²¿ç¨ï¼ | |
| | | | model | String | å¦ | 模åï¼SMA/WMA/LR/SEASONAL/YOYï¼ç¼ºç SMA | |
| | | | window | int | å¦ | ç§»å¨å¹³åçªå£ï¼é»è®¤ 12 | |
| | | | period | int | å¦ | å£è卿ï¼é»è®¤ 7 | |
| | | |
| | | ### 4. åºäº KPI åå²çæé¢æµ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | `/bi/decision/forecast/generate-from-kpi` | ç¨ KPI å¿«ç
§åå²ææ¨¡åæ»å¨é¢æµæªæ¥ N æ | |
| | | |
| | | **请æ±åæ°ï¼Queryï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | kpiCode | String | æ¯ | ç¨åªä¸ª KPI çåå²å¿«ç
§é¢æµ | |
| | | | model | String | å¦ | SMA/WMA/LR/SEASONAL/YOYï¼ç¼ºç SMA | |
| | | | window | int | å¦ | é»è®¤ 12 | |
| | | | period | int | å¦ | é»è®¤ 7 | |
| | | | periods | int | å¦ | 颿µææ°ï¼é»è®¤ 30ï¼ä¸é 90 | |
| | | | intervalMinutes | int | å¦ | 颿µç¹é´éåéï¼é»è®¤ 360 | |
| | | |
| | | **ååºï¼** çæç颿µè®°å½æ°ï¼intï¼ |
| | | |
| | | **注æï¼** åå²å¿«ç
§ä¸è¶³æ¶è¿å `BI_FORECAST_NO_HISTORY` é误ç ï¼code é 0ï¼ï¼å端éæç¤º"ææ å岿°æ®ï¼æ æ³é¢æµ"ã |
| | | |
| | | ### 5. æ¢ææ¥å£ï¼æ åæ´ï¼ |
| | | |
| | | - `POST /bi/dashboard/{dashboardCode}/data` â 大屿°æ®ï¼æ²¿ç¨æ¢æ `bi_dashboard_frontend.md` èè°çº¦å®ï¼ |
| | | - `GET /bi/decision/forecast/list`ã`POST /bi/decision/forecast/history`ã`POST /bi/decision/forecast/generate-work-order`ã`GET /bi/decision/alert/page` ç |
| | | |
| | | ## KPI ç¼ç æ¸
åï¼å端å±ç¤ºç¨ï¼ |
| | | |
| | | | å | KPI ç¼ç | åç§° | åä½ | |
| | | |----|----------|------|------| |
| | | | energy | energy_telemetry_devices | 饿µå¨éè®¾å¤æ° | å° | |
| | | | energy | energy_telemetry_points | å¨éæµç¹æ»æ° | 个 | |
| | | | energy | energy_anomaly_rate | 饿µå¼å¸¸ç | % | |
| | | | energy | energy_power_load | 宿¶åçè´è· | kW | |
| | | | energy | energy_power_consumption | 卿ç¨çµé | kWh | |
| | | | device_operation | device_total / device_running | è®¾å¤æ»æ° / è¿è¡è®¾å¤æ° | å° | |
| | | | device_operation | device_operation_rate | 弿ºç | % | |
| | | | device_operation | device_avg_efficiency | å¹³åç产æç | ä»¶/æ¶ | |
| | | | device_operation | device_need_repair | å¾
ç»´ä¿®å·¥åæ° | å | |
| | | | production | prod_work_order_total / prod_work_order_finish | å·¥åæ»æ° / 累计产é | å / ä»¶ | |
| | | | production | prod_plan_achieve_rate / prod_feedback_qualified | 计åè¾¾æç / æ¥å·¥åæ ¼ç | % | |
| | | | production | prod_daily_output | 仿¥äº§é | ä»¶ | |
| | | | quality | quality_iqc_pass_rate / quality_ipqc_pass_rate / quality_oqc_pass_rate | æ¥æ/è¿ç¨/åºè´§åæ ¼ç | % | |
| | | | quality | quality_ncr_count | ä¸åæ ¼åæ¥åæ° | å | |
| | | | procurement | pur_request_amount / pur_order_amount / pur_order_pending_in | éè´ç³è¯·/订åéé¢ãå¾
å
¥åºé | å
/ ä»¶ | |
| | | | procurement | stock_amount_value / stock_low_alert | åºåè´§å¼ / ä½åºåç©ææ° | å
/ 个 | |
| | | | procurement | cost_payment_amount | åºä»æ¬¾è¿30天 | å
| |
| | | | sales | sale_order_amount / crm_contract_amount / crm_receivable_amount | éå®è®¢å/åå/忬¾éé¢ | å
| |
| | | | sales | crm_customer_count / srm_avg_score | å®¢æ·æ° / ä¾åºåè¯å | 个 / å | |
| | | | safety | safety_andon_count / safety_andon_unhandled | å®ç¯æ¥è¦æ° / æªå¤ç½®æ° | 次 / 个 | |
| | | |
| | | ## æ°å¢å¤§å± code 䏿°æ®å¸¦å
¥è¯´æ |
| | | |
| | | | dashboardCode | åç§° | æ°æ®å¸¦å
¥ / å·æ° | |
| | | |---------------|------|------------------| |
| | | | decision_overview | å³çæ»è§ | number/gauge å¡ç 5 åéå·æ°ï¼è¶å¿æçº¿ 10 åéå·æ° | |
| | | | energy | è½èçæ§ | 宿¶å¡ç 5 åéå·æ°ï¼æ åç/çµéæµç¹æ¶"åçè´è·"æ¾ç¤º 0 | |
| | | | sales_customer | è¥éå®¢æ· | ææ å¡ç 10 åéå·æ° | |
| | | |
| | | > 大å±ç»ä¸èµ° `POST /bi/dashboard/{code}/data`ï¼`position` ç¨ 12 åæ
æ ¼ï¼`{x,y,w,h}`ï¼ï¼å¾è¡¨ç±»å number/gauge/line/bar 渲æçº¦å®ä¸æ¢æ `bi_dashboard_frontend.md` ä¸è´ã |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | KPI 馿¬¡é
ç½® | å¿«ç
§ä»ä¸ä¸ä¸ªæ´ç¹å¼å§èåï¼è¶å¿æ¥å£æç©º | |
| | | | ä¸å¡è¡¨æ æ°æ® | KPI è¿å 0 æç©ºï¼ä¸è§ä¸ºå¼å¸¸ï¼è®¾å¤/饿µå½å峿ç宿°æ® | |
| | | | è½èæ åçæµç¹ | åçè´è·/ç¨çµéè¿å 0ï¼å±æ£å¸¸å ä½ï¼è¡¥å
åçç±»æµç¹åèªå¨åºå¼ | |
| | | | 颿µæ åå² | è¿å `BI_FORECAST_NO_HISTORY`ï¼å端æç¤ºæ å岿°æ® | |
| | | | é¢è¦å»é | åä¸ KPI å·²ææªå¤çé¢è¦æ¶ä¸éå¤çæï¼äººå·¥å¤çåæ¢å¤ | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - ææ å¡/仪表ç颿¿å»ºè®®å¯¹"åç±»"å tab åç»ï¼è½è/设å¤/ç产/è´¨é/éè´/è¥é/å®å
¨ï¼ï¼å
±ç¨åä¸å¥å¡çç»ä»¶ã |
| | | - é¢è¦ä¸å¿é¡µé¢ï¼æ¢æï¼å·²æ¯ææªå¤ç计æ°ä¸ç¡®è®¤/å¤çæä½ï¼å¯ç´æ¥å¤ç¨æ¬æ¬¡ KPI ä½ç³»äº§åºç `bi_alert_record`ã |
| | | - æéç¹æ²¿ç¨æ¢æï¼`bi:decision:kpi:query/update`ã`bi:decision:alert:query/confirm/handle`ï¼æ°æ¥å£ä¸æ°å¢æéï¼æ éæ¹èåã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å³ç模åéæè®¾è®¡æ¹æ¡ |
| | | |
| | | > çæ¬ï¼v1.0 ï½ æ¥æï¼2026-09-09 ï½ æ¨¡åï¼yudao-module-bi å³çæ¯æï¼decisionï¼ |
| | | > 对é½ç®æ ï¼æ°æ®çæ¿ä¸å¤ç»´åº¦æ¥è¡¨ã宿¶ KPI çæ§ä¸å¼å¸¸é¢è¦ãå岿°æ®é©±å¨çè´è·é¢æµä¸å³çç å¤ |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãèæ¯ä¸ç®æ |
| | | |
| | | ç°æ `yudao-module-bi` å³çæ¯æåæ¨¡åå·²å
·å¤ä»£ç 骨æ¶ï¼KPI / é¢è¦ / 颿µ / çæ¿å个åï¼ï¼ä½**é
ç½®æ°æ®å
¨é¨ä¸ºç©º**ï¼`bi_kpi_definition`ã`bi_dashboard`ã`bi_chart_config`ã`bi_alert_rule`ã`bi_forecast_data` å为 0 æ¡ï¼ï¼å°æªä¸ç³»ç»ä¸å¡æ°æ®æéã |
| | | |
| | | æ¬æ¬¡éæå´ç»ä¸å¤§ä¸å¡ç®æ ï¼ |
| | | |
| | | | # | ç®æ | è½å°å½¢æ | |
| | | |---|------|----------| |
| | | | 1 | æ´åç¨çµè¥éãç产è¿ç»´ãç©èµéè´ãåºåãè½èçæ ¸å¿æ°æ® | é
ç½®å¼å¯è§åçæ¿ï¼å¤§å±ï¼+ å¤ç»´åº¦æ¥è¡¨ | |
| | | | 2 | 宿¶çæ§ä¾çµéã设å¤è¿è¡ãç产æçãè´¨éãææ¬ãå®å
¨çæ ¸å¿ KPIï¼å¼å¸¸èªå¨é¢è¦ | KPI ææ åº + å¿«ç
§èå + é¢è¦è§åä¸å¿ | |
| | | | 3 | åºäºå岿°æ®å¼å±è´è·é¢æµãéæ±åæãè¶å¿ç å¤ | Java ç»è®¡é¢æµå¼æï¼æ¯æçµç½è°åº¦ãè¿ç»´è®¡åãéè´çç¥ã客æ·ç»è¥å³ç | |
| | | |
| | | --- |
| | | |
| | | ## äºãç°ç¶åæä¸æ°æ®æ¸åº |
| | | |
| | | ### 2.1 ç°æå³ç模å骨æ¶ï¼ä»£ç å·²å°±ç»ªï¼ |
| | | |
| | | | å | 表 | æå¡ | æ§å¶å¨ | 夿³¨ | |
| | | |----|----|------|--------|------| |
| | | | KPI ææ å®ä¹ | `bi_kpi_definition` | BiKpiDefinitionService | DecisionKpiDefinitionController | SQL é
ç½®å¼ï¼`query_sql` 宿¶æ§è¡ | |
| | | | KPI èåå±ç¤º | â | BiDecisionKpiService | DecisionKpiController | overview/detail/category/refresh | |
| | | | é¢è¦è§å | `bi_alert_rule` | BiAlertRuleService | DecisionAlertRuleController | éå¼ + æ¯è¾ç¬¦ + éç¥æ¹å¼ | |
| | | | é¢è¦è®°å½ | `bi_alert_record` | BiAlertRecordService | DecisionAlertController | å页/æªå¤çæ°/确认/å¤ç | |
| | | | è´è·é¢æµ | `bi_forecast_data` | BiForecastService | DecisionForecastController | ç°ä¸º SMA ç®åç§»å¨å¹³åå ä½ï¼æ¯æèå¨çæå·¥å | |
| | | | 仪表ç | `bi_dashboard` | DashboardService | DashboardController | æ `{code}/data` è¿åå¾è¡¨æ°æ® | |
| | | | å¾è¡¨é
ç½® | `bi_chart_config` | BiChartConfigService | BiChartConfigController | SQL + chartType + position + chartOptions | |
| | | | æ°æ®æºé
ç½® | `bi_data_source_config` | BiDataSourceConfigService | BiDataSourceConfigController | 夿°æ®æºé¢ç | |
| | | |
| | | ### 2.2 é¢è¦å®æ¶ä»»å¡ï¼å·²åå¨ï¼ |
| | | |
| | | `AlertEvaluationTask` æ¯ 5 åéï¼å¯é
`bi.alert.evaluation.interval`ï¼æ«æå¯ç¨é¢è¦è§å â æ§è¡ KPI SQL â ä¸é弿¯è¾ â çæé¢è¦è®°å½ï¼å¹¶å¯¹åä¸ KPI æªå¤çé¢è¦å»éã |
| | | |
| | | ### 2.3 ä¸å¡æ°æ®æ¸åºï¼mom-xgdl åº 2026-09-09ï¼ |
| | | |
| | | | æ°æ®å | 表 | ç°ç¶ | 说æ | |
| | | |--------|----|------|------| |
| | | | è®¾å¤ | `mes_dv_machinery` | 1 å°ï¼ç产æºï¼status=1ï¼æç100ï¼ | statusï¼0-å / 1-è¿è¡ | |
| | | | 饿µ | `mes_dv_telemetry` | 296 æ¡ï¼4 å°è®¾å¤ï¼ | å·¥èºåæ°ï¼æ¸©åº¦/åæ°çï¼ï¼å« `whether_anomaly` å¼å¸¸æ å¿ã`telemetry_data_time`ã`shift_name` | |
| | | | ç产 | `mes_pro_work_order / task / feedback` | 0 | å·¥å/ä»»å¡/æ¥å·¥ | |
| | | | è´¨é | `mes_qc_iqc/ipqc/oqc/ncr` | 0 | æ¥æ/è¿ç¨/åºè´§/ä¸åæ ¼å | |
| | | | åºå | `mes_wm_material_stock/transaction` | 1+1 | åºåä½é¢ + æµæ°´ | |
| | | | å®ç¯ | `mes_pro_andon_record` | 0 | ç°åºå¼å¸¸å¼å«ï¼å®å
¨çæ§å
¥å£ï¼ | |
| | | | éè´ | `erp_purchase_request/order` | 0 | éè´ç³è¯·/订å | |
| | | | éå® | `erp_sale_order` | 0 | éå®è®¢å | |
| | | | è´¢å¡ | `erp_finance_receipt/payment` | 0 | æ¶æ¬¾/仿¬¾ | |
| | | | å®¢æ· | `crm_customer/contract/receivable` | 0 | 客æ·/åå/忬¾ | |
| | | |
| | | > **ç»è®º**ï¼å½åå¤äºå¼å/è¯è¿è¡åæï¼ä¸å¡æ°æ®æªéºå¼ãKPI ææ ãé¢è¦è§åãçæ¿å¾è¡¨ä¸å¾æ**çå®è¡¨ç»æ + çå®å段**é
ç½®ï¼æ°æ®ç§¯ç´¯åèªå¨åºå¼ï¼è®¾å¤è¿è¡ä¸é¥æµå¼å¸¸ææ å½å峿ç宿°æ®æ¯æã |
| | | |
| | | ### 2.4 å
³é®æ°æ®ç¼ºå£ |
| | | |
| | | | ç¼ºå£ | ç°ç¶ | æ¬æ¬¡çç¥ | |
| | | |------|------|----------| |
| | | | è½è/ä¾çµéæ°æ® | æ ç¬ç«ç¨çµéè®°å½è¡¨ï¼`mes_dv_telemetry` 为工èºåæ°é¥æµï¼æ åç/çµéåæ° | **ä»é¥æµåæ°èå**ï¼æ `param_name` å¹é
åç/çµé/çµæµ ç±»åæ°èåï¼æ å¹é
åæ°æ¶ KPI è¿å 0 å ä½å¹¶ä¿çæ¥å£ | |
| | | | å®å
¨æ°æ® | æ äºæ
/鿣å°è´¦ï¼ä»
`mes_pro_andon_record` å®ç¯è®°å½ | å®å
¨ KPI åºäºå®ç¯è®°å½ï¼æ°é/æªå¤ç½®æ°ï¼ï¼éæ£å°è´¦çå¾
åç» | |
| | | | KPI åå² | æ åå²å¼åå¨ï¼æ æ³åè¶å¿/åæ¯ç¯æ¯/颿µ | **æ°å¢ `bi_kpi_value_history` å¿«ç
§è¡¨ + 宿¶èåä»»å¡** | |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãæ»ä½æ¶æè®¾è®¡ |
| | | |
| | | ``` |
| | | ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | â 管çå±ï¼å¤§å±/æ¥è¡¨ï¼ â |
| | | â bi_dashboard {code}/data â é
ç½®å¼å¤§å±ï¼éè´éå®/ä»åº/çäº§è®¾å¤ â |
| | | â /è´¨é/è½è/è¥é + å³çæ»è§ï¼ â |
| | | â å¤ç»´åº¦æ¥è¡¨ï¼æ æ¶é´ / è½¦é´ / 设å¤ç±»å / ç©æåç±» / å®¢æ· / ä¾åºå â |
| | | â 交ååæï¼æ°å¢ /bi/decision/report æ±æ»æ¥å£ï¼ â |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⤠|
| | | â çæ§å±ï¼KPI + é¢è¦ï¼ â |
| | | â bi_kpi_definitionï¼SQL ææ åºï¼ â |
| | | â âââ 宿¶å±ï¼BiDecisionKpiService æé宿¶æ§è¡ SQL â |
| | | â âââ å¿«ç
§å±ï¼ï¼æ°å¢ï¼KpiSnapshotTask 宿¶åå
¥ bi_kpi_value_historyâ |
| | | â âââ é¢è¦å±ï¼AlertEvaluationTask è¯ä¼° bi_alert_rule â bi_alert_recordâ |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⤠|
| | | â å³çå±ï¼é¢æµ/ç å¤ï¼ â |
| | | â BiForecastEngineï¼ç»è®¡é¢æµå¼æï¼SMA/WMA/线æ§åå½/åæ¯ç¯æ¯/å£èææ°ï¼â |
| | | â âââ åºäº bi_kpi_value_history ç KPI è¶å¿é¢æµï¼è´è·/产é/éè´/忬¾ï¼â |
| | | â âââ èå¨ï¼é¢æµç»æ â çæç产工åï¼å¤ç¨ generate-work-orderï¼ â |
| | | ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | ``` |
| | | |
| | | ### 3.1 åå±èè´£ |
| | | |
| | | | å± | è¾å
¥ | å¤ç | è¾åº | |
| | | |----|------|------|------| |
| | | | æ°æ®æ¥å
¥ | åä¸å¡è¡¨ï¼mes/erp/crm/srmï¼+ 饿µ | 跨模å SQLï¼ååº JdbcTemplateï¼ | KPI å½åå¼ | |
| | | | çæ§ | KPI ææ åº | 宿¶æ¥è¯¢ + 宿¶å¿«ç
§ + éå¼è¯ä¼° | overview / å¿«ç
§åå² / é¢è¦è®°å½ | |
| | | | å³ç | å¿«ç
§åå² | ç»è®¡é¢æµå¼æ | 颿µåºå + 置信åºé´ + å·¥åèå¨ | |
| | | | å±ç¤º | çæ¿/å¾è¡¨é
ç½® | é
置驱å¨ç»è£
| å¤§å± / æ¥è¡¨ | |
| | | |
| | | ### 3.2 宿¶æ§è®¾è®¡ |
| | | |
| | | | å±çº§ | æºå¶ | 卿 | |
| | | |------|------|------| |
| | | | KPI 宿¶æ¥è¯¢ | å端æ `refreshInterval` è° `overview/{kpiCode}` | æé | |
| | | | KPI å¿«ç
§ | æ°å¢ `KpiSnapshotTask` èåè³ `bi_kpi_value_history` | é»è®¤ 1 å°æ¶ï¼å¯é
`bi.kpi.snapshot.interval`ï¼ | |
| | | | é¢è¦è¯ä¼° | ç°æ `AlertEvaluationTask` | é»è®¤ 5 åéï¼å¯é
`bi.alert.evaluation.interval`ï¼ | |
| | | | 饿µå¼å¸¸ | ç´æ¥èå `mes_dv_telemetry.whether_anomaly` | éå¿«ç
§ | |
| | | |
| | | --- |
| | | |
| | | ## åãKPI ææ ä½ç³»è®¾è®¡ |
| | | |
| | | ç»ä¸ç¼ç è§åï¼`{åç®ç§°}_{ææ è±æ}`ï¼å
± 7 ç±»ï¼category æ©å±å注éæä¸¾ï¼ã |
| | | |
| | | ### 4.1 åååä¸ææ æ¸
å |
| | | |
| | | #### A. ä¾çµçµé / è½èåï¼category = `energy`ï¼ |
| | | |
| | | | code | åç§° | åä½ | æ°æ®æ¥æº SQL é»è¾ | |
| | | |------|------|------|--------------------| |
| | | | energy_telemetry_devices | 饿µå¨éè®¾å¤æ° | å° | `COUNT(DISTINCT tb_device_id)` from mes_dv_telemetryï¼è¿24hï¼ | |
| | | | energy_telemetry_points | å¨éæµç¹æ»æ° | 个 | `COUNT(*)` from mes_dv_telemetryï¼è¿24hï¼ | |
| | | | energy_anomaly_rate | 饿µå¼å¸¸ç | % | `SUM(whether_anomaly)/COUNT(*)` è¿24h | |
| | | | energy_power_load | 宿¶åçè´è· | kW | `SUM(timely_value)` where param_name like '%åç%'ï¼æ åæ°è¿å0å ä½ï¼ | |
| | | | energy_power_consumption | 卿ç¨çµé | kWh | èåçµåº¦ç±»åæ°å·®å¼ï¼é¢ç模åï¼æ¬æå ä½ï¼ | |
| | | |
| | | #### B. 设å¤è¿è¡åï¼category = `device_operation`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | device_total | è®¾å¤æ»æ° | å° | `COUNT(*)` from mes_dv_machinery | |
| | | | device_running | è¿è¡è®¾å¤æ° | å° | `COUNT(*) where status=1` | |
| | | | device_operation_rate | 弿ºç | % | è¿è¡ / æ»æ° | |
| | | | device_avg_efficiency | å¹³åç产æç | ä»¶/æ¶ | `AVG(production_efficiency)` | |
| | | | device_need_repair | å¾
维修工å | 个 | `COUNT(*) where status<ç»æ` from mes_dv_repair | |
| | | | device_overdue_mainten | å°ææªä¿å
»è®¾å¤ | å° | `last_mainten_time < 计å卿`ï¼é¢çï¼è¿å0ï¼ | |
| | | |
| | | #### C. ç产æçåï¼category = `production`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | prod_work_order_total | å·¥åæ»æ° | å | `COUNT(*)` from mes_pro_work_orderï¼è¿30å¤©ï¼ | |
| | | | prod_work_order_finish | å®å·¥å·¥åæ° | å | `status=å·²å®å·¥` | |
| | | | prod_plan_achieve_rate | å·¥å计åè¾¾æç | % | å®å·¥éä¹å / 计åéä¹å | |
| | | | prod_feedback_qualified | æ¥å·¥åæ ¼ç | % | SUM(qualified)/SUM(feedback) from mes_pro_feedback | |
| | | | prod_daily_output | æ¥äº§é | ä»¶ | SUM(feedback_quantity) 彿¥ | |
| | | | prod_task_duration | å·¥åå¹³åå·¥æ | 天 | AVG(duration) from mes_pro_task | |
| | | |
| | | #### D. è´¨éåï¼category = `quality`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | quality_iqc_pass_rate | æ¥ææ£éªåæ ¼ç | % | SUM(qualified)/SUM(check) from mes_qc_iqc | |
| | | | quality_ipqc_pass_rate | è¿ç¨æ£éªåæ ¼ç | % | from mes_qc_ipqc | |
| | | | quality_oqc_pass_rate | åºè´§æ£éªåæ ¼ç | % | from mes_qc_oqc | |
| | | | quality_ncr_count | ä¸åæ ¼åæ¥åæ° | å | `COUNT(*)` from mes_qc_ncr | |
| | | |
| | | #### E. ç©èµéè´ / ææ¬åï¼category = `procurement`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | pur_request_amount | éè´ç³è¯·éé¢ï¼è¿30å¤©ï¼ | å
| `SUM(total_price)` from erp_purchase_request | |
| | | | pur_order_amount | éè´è®¢åéé¢ï¼è¿30å¤©ï¼ | å
| `SUM(total_price)` from erp_purchase_order | |
| | | | pur_order_pending_in | å¾
å
¥åºéè´é | ä»¶ | `SUM(total_count-in_count)` from erp_purchase_order | |
| | | | stock_amount_value | åºåè´§å¼ | å
| `SUM(stock.quantity*item.cost_price)` from mes_wm_material_stock join mdm_item | |
| | | | stock_low_alert | åºåä½äºå®å
¨åºåç©ææ° | 个 | `quantity < item.safety_stock` | |
| | | | cost_payment_amount | åºä»æ¬¾ï¼è¿30å¤©ï¼ | å
| `SUM(payment_price)` from erp_finance_payment | |
| | | |
| | | #### F. ç¨çµè¥é / 客æ·ç»è¥åï¼category = `sales`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | sale_order_amount | éå®è®¢åéé¢ï¼è¿30å¤©ï¼ | å
| `SUM(total_price)` from erp_sale_order | |
| | | | crm_contract_amount | ååç¾è®¢éé¢ | å
| `SUM(total_price)` from crm_contractï¼å®¡æ ¸éè¿ï¼ | |
| | | | crm_receivable_amount | å®é
忬¾éé¢ | å
| `SUM(price)` from crm_receivable | |
| | | | crm_customer_count | å®¢æ·æ»æ° | 个 | `COUNT(*)` from crm_customer | |
| | | | crm_receivable_overdue | 龿æªå款éé¢ | å
| ä½£é计å `receivable_plan` è¶
return_time æªå | |
| | | | srm_avg_score | ä¾åºåå¹³å综åè¯å | å | `AVG(composite_score)` from srm_supplier_evaluation | |
| | | |
| | | #### G. å®å
¨åï¼category = `safety`ï¼ |
| | | |
| | | | code | åç§° | åä½ | SQL é»è¾ | |
| | | |------|------|------|----------| |
| | | | safety_andon_count | å®ç¯æ¥è¦æ°ï¼è¿30å¤©ï¼ | 次 | `COUNT(*)` from mes_pro_andon_record | |
| | | | safety_andon_unhandled | æªå¤ç½®å®ç¯æ° | 个 | `COUNT(*) where status=æªå¤ç½®` | |
| | | |
| | | ### 4.2 维度设计 |
| | | |
| | | | 维度 | æ¥æº | ç¨é | |
| | | |------|------|------| |
| | | | æ¶é´ | æ¥ / å¨ / æ / å¹´ | å
¨é¨ææ è¶å¿ | |
| | | | è½¦é´ | `mes_dv_machinery.workshop_id`ã`mes_pro_work_order` | 设å¤/ç产 | |
| | | | 设å¤ç±»å | `mes_dv_machinery_type` | 设å¤/è½è | |
| | | | ç©æåç±» | `mdm_item` åç±» | éè´/åºå | |
| | | | å®¢æ· | `crm_customer` | è¥é/忬¾ | |
| | | | ä¾åºå | `srm_supplier` / `erp_supplier` | éè´/ææ¬ | |
| | | |
| | | --- |
| | | |
| | | ## äºãKPI åå²å¿«ç
§ä¸èåï¼æ¬æ¬¡æ°å¢ï¼ |
| | | |
| | | ### 5.1 æ°å¢è¡¨ `bi_kpi_value_history` |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | id | bigint | ä¸»é® | |
| | | | kpi_id | bigint | å
³è bi_kpi_definition.id | |
| | | | kpi_code | varchar(64) | KPI ç¼ç ï¼åä½ï¼ | |
| | | | kpi_name | varchar(128) | KPI åç§°ï¼åä½ï¼ | |
| | | | category | varchar(32) | åç±» | |
| | | | kpi_value | decimal(18,4) | å¿«ç
§å¼ | |
| | | | snapshot_time | datetime | å¿«ç
§æ¶é´ç¹ï¼æ´ç¹ï¼ | |
| | | | period_type | varchar(16) | ç»è®¡å¨æï¼hour/day/week/month | |
| | | | dimension_value | varchar(64) | ä¸å¡ç»´åº¦å¼ï¼é¢çï¼é»è®¤ allï¼ | |
| | | | remark | varchar(255) | 夿³¨ | |
| | | | å®¡è®¡åæ®µ | â | creator/create_time/updater/update_time/deleted | |
| | | |
| | | ç´¢å¼ï¼`idx_kpi_time(kpi_code, snapshot_time)`ï¼`idx_category_time(category, snapshot_time)`ã |
| | | |
| | | ### 5.2 æ°å¢èåä»»å¡ `KpiSnapshotTask` |
| | | |
| | | - 宿¶ï¼é»è®¤æ¯å°æ¶ `0 0 * * * *`ï¼å¯é
`bi.kpi.snapshot.cron`ï¼æ«æ `status=1` ç KPI å®ä¹ |
| | | - æ§è¡æ¯æ¡ `query_sql` åå½åå¼ï¼åå
¥ `bi_kpi_value_history` |
| | | - åå KPI å䏿´ç¹å»éï¼è¦ç弿´æ°æè·³è¿å»éï¼åææ°ï¼ |
| | | - 失败 SQL è®°æ¥å¿é级ï¼ä¸ä¸ææ´ä½ |
| | | |
| | | ### 5.3 æ°å¢æ¥è¯¢æ¥å£ï¼è¶å¿ç å¤ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/bi/decision/kpi/trend/{kpiCode}?beginTime=&endTime=&periodType=` | KPI åå²å¿«ç
§è¶å¿ï¼ä¾æ¥è¡¨/å¤§å±æçº¿ï¼ | |
| | | | GET | `/bi/decision/kpi/compare/{kpiCode}` | åæ¯ç¯æ¯ï¼è¾ä¸æ/å»å¹´åæï¼ï¼åºäºå¿«ç
§ | |
| | | |
| | | --- |
| | | |
| | | ## å
ãé¢è¦è§åä½ç³» |
| | | |
| | | ### 6.1 è§åé
ç½®ï¼æ¬æ¬¡è½åºç¤ºä¾ï¼ |
| | | |
| | | | KPI | è§å | çº§å« | éå¼ | æ¯è¾ç¬¦ | |
| | | |-----|------|------|------|--------| |
| | | | energy_anomaly_rate | 饿µå¼å¸¸çè¿é« | è¦å | 5 (%) | >= | |
| | | | device_operation_rate | 弿ºçè¿ä½ | 严é | 60 (%) | < | |
| | | | device_avg_efficiency | è®¾å¤æçè¿ä½ | è¦å | 80 (ä»¶/æ¶) | < | |
| | | | quality_oqc_pass_rate | åºè´§æ£éªåæ ¼çè¿ä½ | 严é | 95 (%) | < | |
| | | | stock_low_alert | åºåä½äºå®å
¨åºåç©ææ°è¶
é | 严é | 10 (个) | > | |
| | | | safety_andon_unhandled | æªå¤ç½®å®ç¯æç»ç´¯ç§¯ | ç´§æ¥ | 1 (个) | > | |
| | | | crm_receivable_overdue | 龿忬¾éé¢è¿å¤§ | 严é | 500000 (å
) | > | |
| | | |
| | | > éå¼ä»
为åå§å»ºè®®å¼ï¼ä¸çº¿åæå®é
æ°´å¹³è°æ´ã`notificationType` ç»ä¸é
置为 `system`ï¼ç«å
ä¿¡/å¾
åéæï¼åç»æ©å± message/emailï¼ã |
| | | |
| | | ### 6.2 é¢è¦çå½å¨æ |
| | | |
| | | ``` |
| | | è§åå¯ç¨ â 宿¶è¯ä¼°ï¼5minï¼â å½ä¸éå¼ â çæ bi_alert_record(status=0) |
| | | â å端"é¢è¦ä¸å¿"å±ç¤º + æªå¤çè®¡æ° â 确认(confirm) / å¤ç(handle) â å
³é |
| | | ``` |
| | | |
| | | å»éçç¥ï¼åä¸ KPI å卿ªå¤çé¢è¦æ¶ä¸åéå¤çæï¼ç°æé»è¾ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãè½è/ä¾çµéèåæ¹æ¡ï¼ä»é¥æµåæ°èåï¼ |
| | | |
| | | ### 7.1 å¤çåå |
| | | |
| | | - 以 `mes_dv_telemetry` 为å¯ä¸å®æ¶è½èæ¥æºï¼æ `param_name` ç¹å¾å¹é
è½ååæ°ï¼ |
| | | - åçç±»ï¼`param_name LIKE '%åç%'` â `energy_power_load`ï¼å®æ¶åçï¼kWï¼ |
| | | - çµéç±»ï¼`param_name LIKE '%çµé%' OR '%ç¨çµ%' OR '%çµåº¦%'` â çµéééï¼é¢çï¼ |
| | | - çµæµ/çµåç±»ï¼`%çµæµ%`ã`%çµå%` â çµè½è´¨éè¾
婿æ |
| | | - å½åæµç¹æ è½ååæ°æ¶ï¼ç¸å
³ KPI è¿å 0 / æ æ°æ®å ä½ï¼**ä¸ä¼ªé æ°æ®**ï¼å¾
æµç¹è¡¥å
åèªå¨åºå¼ã |
| | | |
| | | ### 7.2 è½èè忍¡åï¼æ¬æ¬¡è½å°ï¼ |
| | | |
| | | | ææ | èåå£å¾ | |
| | | |------|----------| |
| | | | 宿¶åçè´è· | å½åæ¹æ¬¡ `timely_value` æ±åï¼æè®¾å¤ | |
| | | | çæ¬¡è½èä¼°ç® | æ `shift_name` åç» `AVG(timely_value)` à è¿è¡æ¶é¿ï¼é¢çï¼ | |
| | | | æ¥ç¨çµé | çµåº¦ç±»åæ° `max_value-min_value` è·¨æ¥åå·®ï¼é¢ç模åï¼è¡¨ç»æå°±ç»ªï¼ | |
| | | |
| | | --- |
| | | |
| | | ## å
«ãJava ç»è®¡é¢æµå¼æè®¾è®¡ |
| | | |
| | | ### 8.1 模ååºï¼æ¬æ¬¡è½å°ï¼ |
| | | |
| | | | 模å | ç®æ³ | éç¨åºæ¯ | å®ç° | |
| | | |------|------|----------|------| |
| | | | SMA | ç®åç§»å¨å¹³åï¼çªå£ 12ï¼ | 平稳åºå | ç°æé»è¾ä¿ç | |
| | | | WMA | å æç§»å¨å¹³åï¼è¿ææééå¢ï¼ | æè½»å¾®è¶å¿ | æ°å¢ | |
| | | | LR | ä¸å
线æ§åå½ï¼æå°äºä¹ï¼ | 线æ§è¶å¿ï¼äº§é/éè´/忬¾ï¼ | æ°å¢ | |
| | | | SEASONAL | å£èææ°ï¼æå¨æå½ä¸åï¼ | 卿æ§è´è· | æ°å¢ | |
| | | | YOY/QOQ | 忝/ç¯æ¯å¤æ¨ | è¥é类快éé¢ä¼° | æ°å¢ | |
| | | |
| | | ### 8.2 å¼æç»æ |
| | | |
| | | ``` |
| | | BiForecastEngineï¼æ°å¢ï¼çº¯ Java å·¥å
·ç±»ï¼ |
| | | ââ sma(List<BigDecimal>, window) |
| | | ââ wma(List<BigDecimal>, window) |
| | | ââ linearRegression(List<BigDecimal>) â slope/intercept/颿µä¸Næ |
| | | ââ seasonalIndex(List<BigDecimal>, period) â å£èå å + å»å£è颿µ |
| | | ââ forecastByModel(code, modelType, data, periods) â ç»ä¸åºå£ |
| | | ``` |
| | | |
| | | ### 8.3 æ¥å£æ©å±ï¼BiForecastService + Controllerï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/bi/decision/kpi/trend/{kpiCode}?beginTime=&endTime=&periodType=` | KPI åå²å¿«ç
§è¶å¿åæ°ï¼åç»å¼æï¼ | |
| | | | POST | `/bi/decision/forecast/generate` æ©å±åæ° `model=SMA\|WMA\|LR\|SEASONAL` + `periods=` | ææ¨¡åçæé¢æµï¼è½ `bi_forecast_data` | |
| | | | POST | `/bi/decision/forecast/generate-from-kpi?kpiCode=&model=&periods=` | ä» KPI å¿«ç
§åå²çæé¢æµï¼è´è·/产é/éè´/忬¾ï¼ | |
| | | | POST | `/bi/decision/forecast/generate-work-order` | 颿µèå¨å建ç产工åï¼ç°æï¼å»¶ç»ï¼ | |
| | | |
| | | 颿µç»æåæ®µæ²¿ç¨ `bi_forecast_data`ï¼forecast_value / lowerBound / upperBound / confidenceLevel(95%) / modelVersionï¼å¦ `v2.0-lr`ï¼ã |
| | | |
| | | ### 8.4 å³çæ¯æåºæ¯æ å° |
| | | |
| | | | å³çåºæ¯ | 颿µå¯¹è±¡ | æ°æ®æº | è¾åº | |
| | | |----------|----------|--------|------| |
| | | | çµç½è°åº¦/äº§è½æç¨ | æ¥äº§éãå·¥åè´è· | prod_daily_output å¿«ç
§ | æªæ¥ 7/30 天产é颿µ | |
| | | | è¿ç»´è®¡å | è®¾å¤æçãå¼å¸¸ç | device_avg_efficiencyãenergy_anomaly_rate | å¼å¸¸è¶å¿é¢è¦ | |
| | | | éè´çç¥ | éè´éé¢ãåºåå¨è½¬ | pur_order_amountãstock_low_alert | 䏿éè´é颿µ | |
| | | | 客æ·ç»è¥ | 忬¾ãåå | crm_receivable_amount | 䏿忬¾é¢æµ | |
| | | |
| | | --- |
| | | |
| | | ## ä¹ãçæ¿ä¸å¤ç»´åº¦æ¥è¡¨æ¹æ¡ |
| | | |
| | | ### 9.1 çæ¿å¸å±ï¼bi_dashboard + bi_chart_config è½åºï¼ |
| | | |
| | | | code | åç§° | è¦çå¾è¡¨ï¼chart_configï¼ | |
| | | |------|------|--------------------------| |
| | | | decision_overview | å³çæ»è§å¤§å± | æ ¸å¿ KPI å¡çï¼numberï¼+ ååè¶å¿æçº¿ | |
| | | | purchase_sales | éè´éå®å¤§å± | éè´éé¢è¶å¿/éå®è®¢åè¶å¿/æ¥ç¥¨é¢/忬¾ï¼æ²¿ç¨æ¢æ codeï¼ | |
| | | | warehouse | ä»åºå¤§å± | åºåè´§å¼/ä½åºå/åºå
¥åºæµæ°´/åºä½åå¸ | |
| | | | production_equipment | ç产设å¤å¤§å± | 设å¤å¼æºç/æç/å·¥åè¾¾æç/产éè¶å¿/饿µå¼å¸¸ | |
| | | | quality | è´¨éå¤§å± | 忣éªåæ ¼ç/NCR æ°é | |
| | | | energy | è½èçæ§å¤§å±ï¼æ°å¢ï¼ | 宿¶åçè´è·/å¨éæµç¹/å¼å¸¸ç/çæ¬¡è½è | |
| | | | sales_customer | è¥é客æ·å¤§å±ï¼æ°å¢ï¼ | ååç¾å®/忬¾/龿/å®¢æ·æ°/ä¾åºåè¯å | |
| | | |
| | | ### 9.2 å¤ç»´åº¦æ¥è¡¨ï¼æ°å¢ `/bi/decision/report`ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | `/bi/decision/report/cross` | 交åè¡¨ï¼æ¶é´ à 车é´/客æ·/ä¾åºå/ç©æåç±» Ã ææ å¼ | |
| | | | GET | `/bi/decision/report/topn?category=&dimension=&limit=` | TOP N æè¡ï¼å®¢æ·å款 TOPãä¸è¯ TOPã缺æ TOPï¼ | |
| | | |
| | | ååºç»ä¸ä¸º `{ columns, rows }` ç»æï¼åç«¯æ¸²ææ®éè¡¨æ ¼/éè§å¾ã |
| | | |
| | | --- |
| | | |
| | | ## åãæ°æ®åºåæ´æ¸
å |
| | | |
| | | | æä½ | 对象 | 说æ | |
| | | |------|------|------| |
| | | | æ°å»ºè¡¨ | `bi_kpi_value_history` | KPI åå²å¿«ç
§ | |
| | | | åå§åæ°æ® | `bi_kpi_definition` | 约 26 æ¡ KPIï¼ä¸è¡¨å
¨é¨ codeï¼ | |
| | | | åå§åæ°æ® | `bi_alert_rule` | 约 7 æ¡é¢è¦è§å | |
| | | | åå§åæ°æ® | `bi_dashboard` | 7 ä¸ªçæ¿ | |
| | | | åå§åæ°æ® | `bi_chart_config` | åçæ¿å¾è¡¨ï¼çº¦ 30 å¼ ï¼ | |
| | | | 䏿¹è¡¨ | `bi_forecast_data` | ç°æç»æå¤ç¨ï¼ä»
æ©å± modelVersion ä½¿ç¨ | |
| | | |
| | | > ä¸å¡è¡¨é¶æ¹å¨ï¼KPI ä½ç³»åªè¯»åä¸å¡è¡¨ï¼ä¸å ä»»ä½åä½å段ã符åãæä»¶ä¸ä¼ è§åããSQL èæ¬è§èãï¼æ tenant_idï¼çæ¢æçº¦æã |
| | | |
| | | --- |
| | | |
| | | ## åä¸ã宿½æ¥éª¤ |
| | | |
| | | | æ¥éª¤ | å
容 | äº¤ä» | |
| | | |------|------|------| |
| | | | 1 | æ°å¢ `bi_kpi_value_history` 表 + DO + Mapper | è¡¨ç»æã代ç | |
| | | | 2 | æ°å¢ `KpiSnapshotTask` å¿«ç
§èåä»»å¡ | 宿¶ä»»å¡ | |
| | | | 3 | `BiDecisionKpiService` å¢å trend / compare æ¥å£ | Controller + Service | |
| | | | 4 | BiForecastEngine ç»è®¡é¢æµå¼æ + BiForecastService æ©å± | 颿µè½å | |
| | | | 5 | KPI ææ åº / é¢è¦è§å / çæ¿å¾è¡¨ SQL èæ¬è½åº | åå§åèæ¬ | |
| | | | 6 | ç¼è¯æ£æ¥ï¼mvn compileï¼+ æ°æ®åºå读éªè¯ | éªè¯æ¥å | |
| | | |
| | | ## åäºãé£é©ä¸æ³¨æäºé¡¹ |
| | | |
| | | - ä¸å¡è¡¨å½å为空ï¼KPI åºå¼ä¾èµæ°æ®ç§¯ç´¯ï¼æ¬æ¬¡ä¿è¯"ç»ææ£ç¡® + SQL 坿§è¡"ï¼æ°æ®å°ä½èªå¨åºå¼ã |
| | | - 饿µæ åç/çµéåæ°æ¶ï¼è½è KPI è¿å 0 å ä½ï¼æµç¹è¡¥å
åèªå¨çæï¼**ä¸ä¼ªé æ°æ®**ã |
| | | - KPI `query_sql` 为管çåå¯é
置项ï¼å±ç³»ç»è¾¹çå
å¯ä¿¡é
ç½®ï¼è¿è¡æ¶ç» JdbcTemplate åæ°åæ§è¡ï¼æ 注å
¥é£é©ã |
| | | - å¿«ç
§éä¼°ç®ï¼26 KPI à æ¯å°æ¶ = 约 624 è¡/天ï¼å¹´æ°æ®é ~23 ä¸è¡ï¼è§æ¨¡å¯æ§ã |
| | | - é¢è¦éå¼åå¼éä¸çº¿åæ ¡åã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # çµåè¡ä¸äººåèµæºç³»ç»éæ±æ¢³çä¸å®æ½è·¯çº¿å¾ |
| | | |
| | | > ç¶æï¼éæ±æ´ç稿ï¼ä¾ç¡®è®¤ï¼å°æªè¿å
¥ç¼ç ã |
| | | > ç®æ åºï¼`mom-xgdl`ï¼å端 local profile æ°æ®æºï¼ãå
³èææ¡£ï¼[å¹è®+å°ææéèè°æ¹æ¡](hrm_training_and_expire_remind_integration.md)ã |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãéæ±æ»è§ |
| | | |
| | | çµåè¡ä¸äººåèµæºç³»ç»å
±ä¸æ®µéæ±ï¼è¦çãäººäºæ¡£æ¡ â èå¤ â èªé
¬ â 绩æãå
¨æµç¨ï¼ä»¥åé¢åçç»/å¼å®å²ä½çæçä¸å·¥æ¶ï¼åå å å¹è®è¯ä¹¦åè§ç®¡çã |
| | | |
| | | | ç¼å· | éæ±åæè¦ç¹ | 模åå½å± | å½åè¿åº¦ | |
| | | |------|--------------|----------|----------| |
| | | | éæ±â | ç»ç¹ç®¡çå
¨åäººäºæ¡£æ¡ãå³å¨ååãè夿å¡ãèªé
¬æ ¸ç®ã绩æèæ ¸å
¨æµç¨ä¸å¡ | HRM | å¾
宿½ï¼æ¬ææ¡£æ¢³çæ¹æ¡ï¼ | |
| | | | éæ±â¡ | é对è¿ç»´çç»ãæ£ä¿®çç»ãå¼å®å²ä½å®ç°æºè½æçãå·¥æ¶ç»è®¡ï¼å·¥æ¶æ°æ®åæ¥å¯¹æ¥ææ¬æ ¸ç®æ¨¡å | MES æç/å·¥æ¶ + HRM å·¥æ¶ | å¾
宿½ï¼å«ä¸ææ¬æ¨¡åç对æ¥å£å¾ï¼ | |
| | | | éæ±â¢ | 管çå®å
¨å¹è®ãæè½å¹è®ãç¹ç§ä½ä¸è¯ä¹¦ãä»ä¸èµè´¨ï¼å°æèªå¨æéï¼æ»¡è¶³çµåè¡ä¸åè§ç®¡ç | HRM å¹è® + è¯ä¹¦/ååæé | **已宿½å®æ**ï¼è§ç¬¬å
èï¼ | |
| | | |
| | | **å·²ç¡®è®¤çæ»ä½å£å¾ï¼ä¼è¯å³çï¼** |
| | | - 䏿®µéæ±åé¶æ®µæ¨è¿ï¼å
ç»ä¸æ¢³çãæé¶æ®µç¼ç ï¼æåç»ä¸å彿µè¯ï¼ç¨æ·å£å¾ãç»ä¸æ¹å®å¨æµè¯ãï¼ã |
| | | - ç®æ æ°æ®åºä¸º `mom-xgdl`ï¼ææèå/åå
¸/é
ç½®/表ååå
¥è¯¥åºã |
| | | - ææ¬æ ¸ç®æ¨¡å**å½åä¸åå¨**ï¼éæ±â¡çå·¥æ¶å¯¹æ¥éåãå
åºåå·¥æ¶æ±æ»è¡¨ + å¯¹å¤æä¾ Apiãï¼ææ¬æ¨¡ååç»å¦å»ºï¼æ¬è½®ä¸å»ºææ¬è¡¨ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## äºãç°ç¶çç¹ï¼å·²å
·å¤çè½åï¼ |
| | | |
| | | | ä¸å¡å | å·²æå®ä½/æ¥å£ | 说æ | |
| | | |--------|---------------|------| |
| | | | äººäºæ¡£æ¡ | `hrm_employee`ï¼åºæ¬ä¿¡æ¯/é¨é¨/å²ä½/å¦å/å
¥è/åå·¥ç¶æ/åºæ¬å·¥èµ/èªé
¬ç»æID çï¼ï¼`hrm_employee_education`ã`_emergency_contact`ã`_work_history` | ææ°å¢/å页/详æ
/离èäº¤æ¥æ¥å£ï¼**å
¥è/审æ¹ä¸èå¨åå** | |
| | | | å³å¨åå | `hrm_employee_contract`ï¼å·²æå¨æå°æç¶æ + `REMIND_DAYS=30` + `/expiring-count` | æå°ææé计æ°ï¼æ ç«å
ä¿¡ï¼éæ±â¢å·²è¡¥ï¼ | |
| | | | 请å/离è/è°å¨å®¡æ¹ | `hrm_leave_application`ã`hrm_resignation_application`ã`hrm_transfer_application` + BPM | éè¿ BPM å®¡æ¹æµï¼**审æ¹éè¿åä¸ååå工主档** | |
| | | | äº¤æ¥ | `hrm_user_handover` + `HrmUserHandoverApi.expandUserIds()` | ç¦»èæ°æ®äº¤æ¥ï¼åæ¨¡åæ¥è¯¢ç»ä¸æ©å± userIdï¼è¯¦è§äº¤æ¥è§åï¼ | |
| | | | èå¤ | `hrm_attendance_record`(æå¡/clock-in/clock-out)ã`_rule`ã`_holiday`ã`_exception`ã`_summary`(æ±æ»/generate)ï¼`HrmAttendanceSummaryDO` | **å çæ¶é¿é¾æè£ï¼æå¡/å¼å¸¸åæªäº§åº overtime åæ®µ** | |
| | | | èªé
¬ | æ¡£æ¡`hrm_employee_salary`ã社ä¿`hrm_employee_social_security`/`hrm_social_security_config`/`_scheme`ã个ç¨`hrm_tax_rate_config`ã请åç±»å`hrm_leave_type_config`ãæ ¸ç®`hrm_salary_calculation`ãåæ¾`hrm_salary_payment`(+æç») | **æ ¸ç®åªç®åºå®é¡¹ï¼å çåæ» 0ã工使¥åæ» 22ï¼ç¼ºèªé
¬ç»æ/åå·¥èªé
¬æ¡£æ¡åå° CRUD** | |
| | | | 绩æ | `hrm_performance_appraise` + `_item` + `_result`(+`_item`) | èæ ¸æ¹æ¡å¯¹è±¡åå¨ï¼**"æå®çç»"维度æ è½å°è½½ä½** | |
| | | | å¹è®/è¯ä¹¦ | éæ±â¢æ°å¢ `hrm_training`/`hrm_training_participant`ï¼`hrm_certificate`(åç±»èµè´¨+å°æåæ®µ) | è§ç¬¬å
è | |
| | | | æç(éæ±â¡) | MES `mes_cal_plan(_shift/_team)`ã`mes_cal_team(_member/_shift)`ã`mes_cal_holiday` | æçå¥ä»¶é½å
¨ï¼**使ªè½å°"äººÃæ¥"** | |
| | | | å·¥æ¶(éæ±â¡) | MES `mes_pro_task`(duration 人æ¥)ã`MesProTaskApi.getTeamWorkHourSummary`(æçç»èåï¼1 人æ¥=8 人æ¶) | HRM å·²å¯è·¨æ¨¡åè° MES å·¥æ¶ï¼**æ æ±æ»è¡¨ï¼å®æ¶ç»è®¡** | |
| | | | ææ¬ | ERP ä»
`erp_finance_receipt`/`erp_finance_payment` | **æ ææ¬æ¨¡å** | |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãéæ±â ãå
¨æµç¨ä¸å¡ãå·®è·åæä¸å»ºè®® |
| | | |
| | | ### 3.1 äººåæ¡£æ¡ä¸å³å¨ååéç¯ |
| | | |
| | | éæ±ï¼å
¨åäººäºæ¡£æ¡ + å³å¨ååå
¨æµç¨ï¼ç¾è®¢/ç»ç¾/å°æï¼ã |
| | | |
| | | **ç°ç¶ç¼ºå£** |
| | | 1. `hrm_employee` **缺ãç¨å·¥æ§è´¨ããæå±çç»ãåæ®µ**ï¼è¿ç»´ç/æ£ä¿®ç/å¼å®å²çç»ç»ç»´åº¦æ æ³è¡¨è¾¾ï¼ãçµååºæ¯çç»æ¯æ ¸å¿ç»ç»åå
ï¼éæ±â¡æçã绩ææå®çç»é½ä¾èµå®ã |
| | | 2. **审æ¹éè¿åä¸åå主档**ï¼ç¦»è审æ¹éè¿ â åå·¥ `employeeStatus`/`leaveDate` æªèªå¨æ´æ°ï¼éæå¨æ¹ï¼ï¼è°å¨å®¡æ¹éè¿ â `deptId/postId` æªèå¨ãç®å离è交æ¥é `hrm_user_handover`ï¼ä½åå·¥ç¶æåæ®µä»é æå·¥ã |
| | | 3. **æ ã转æ£ãä¸å¡**ï¼`hrm_employee.regularDate` åæ®µåå¨ä½æ 触åç¹ï¼è¯ç¨âå¨èçç¶ææµè½¬æ æµç¨ã |
| | | 4. å³å¨ååå°æï¼å·²æå°æè®¡æ° + éæ±â¢ç«å
ä¿¡æéï¼**ç»ç¾å¨ä½**æ¯å¦è¦èµ°å®¡æ¹ãæ°ååå·å¦ä½è¡æ¥å¾
å®ã |
| | | |
| | | **建议** |
| | | - å工主档补 `employmentType`(ç¨å·¥æ§è´¨ï¼æ£å¼/å³å¡/å¤å
/å®ä¹ çï¼åå
¸) ä¸ `teamId`/`teamName`(æå±çç») ââ çç»å¼ç¨ MES `mes_cal_team` æ HRM ç¬ç«çç»è¡¨ï¼éä¸éæ±â¡ç»ä¸å£å¾ã |
| | | - 离è/è°å¨å®¡æ¹ç»æ**åå主档**ï¼æ°å¢ BPM 审æ¹å®æçå¬ï¼æ´æ° employeeStatus/leaveDate/deptId/postIdï¼ã |
| | | - æ°å¢**转æ£**å¨ä½ï¼å
¥è满è¯ç¨æ â æ£å¼ï¼å regularDateï¼æ¹ç¶æï¼ãæ¯å¦æ¥ BPM 审æ¹å¾
å®ã |
| | | - å³å¨ååå¢/ç»ç¾ä¿çç°å°ææéé¾è·¯ã |
| | | |
| | | ### 3.2 èå¤æå¡ |
| | | |
| | | éæ±ï¼è夿å¡å
¨æµç¨ï¼è§å/æå¡/æ±æ»ï¼ï¼ä¸ºèªé
¬æä¾å ç/缺å¤ã |
| | | |
| | | **ç°ç¶ç¼ºå£** |
| | | 1. `hrm_attendance_record` æå¡(clock-in/clock-out)åå¨ï¼ä½**å çæ¶é¿ä»æªè¢«è®¡ç®**ï¼æ overtime åå
¥ç¹ã |
| | | 2. æ `_exception`(å¼å¸¸/è¡¥å¡)ã`_rule`ã`_holiday`ã`_summary`(generate æ±æ»)ï¼ä½æ±æ»å段ä¸èªé
¬æ ¸ç®å段**æªæé**ã |
| | | |
| | | **建议** |
| | | - æé"æå¡/è§å/è忥 â æ¯æ¥èå¤(å«åºåºå¤ãå®åºå¤ã**å çæ¶é¿ overtimeHours**ãè¿å°æ©é) â æåº¦æ±æ»"ã |
| | | - æç¡®å çå£å¾ï¼è¶
åºè§åå·¥æ¶é¨å / æ³å®èåä¸ççï¼ï¼å çæºæ°æ®ç±èå¤äº§åºï¼ä¾èªé
¬æ¶è´¹ã |
| | | |
| | | ### 3.3 èªé
¬æ ¸ç® |
| | | |
| | | éæ±ï¼èªé
¬æ ¸ç®å
¨æµç¨ã |
| | | |
| | | **ç°ç¶ç¼ºå£ï¼æ ¸å¿æé¾ï¼** |
| | | - `HrmSalaryCalculationServiceImpl` æ ¸ç®**åªåæ¡£æ¡åºå®é¡¹**ï¼ |
| | | - `overtimePay = BigDecimal.ZERO`ã`overtimeHours = BigDecimal.ZERO`ï¼**ä»ä¸è¯»èå¤å ç**ï¼ï¼ |
| | | - `workDays = 22` **åæ»**ï¼ä¸ä»èå¤/æ¥åå¾åºå½æåºåºå¤ï¼ï¼ |
| | | - è¯·åæ£æ¬¾åªè¯»"已审æ¹éè¿ç请åè®°å½"ï¼`hrm_leave_application`ï¼ï¼**ä¸è¯»èå¤ç¼ºå¤**ï¼`leaveHours` ç¸å
³å£å¾å¾
æ ¸ã |
| | | - **绩æç»ææªå䏿 ¸ç®**ï¼performanceSalary ä»å工档æ¡ååºå®å¼ï¼**ä¸è¯»ç»©æç»æè¡¨**ã |
| | | - **æ èªé
¬ç»æ/åå·¥èªé
¬æ¡£æ¡çåå° CRUD**ï¼`HrmSalaryStructureDO`ã`HrmEmployeeSalaryDO` ä»
è¢«æ ¸ç®ä»£ç å¼ç¨ï¼`controller/admin/salary` ä¸åªæç¤¾ä¿/æ ¸ç®/åæ¾/é
ç½®/ç¨ç/请åç±»åï¼ç¼º `HrmSalaryStructureController`ã`HrmEmployeeSalaryController` â åç«¯æ æ³ç»´æ¤"èªé
¬ç»æ=åºå®+绩æ+补贴+å ç"ä¸å工个人èªé
¬æ¡£æ¡ã |
| | | |
| | | **建议** |
| | | - æ ¸ç®è¾å
¥è¡¥é½ä¸æ¡é¾è·¯ï¼â èå¤(å çæ¶é¿/缺å¤å¤©æ°) â å çè´¹/æ£æ¬¾ï¼â¡ç»©æç»æ â 绩æå·¥èµï¼â¢è¯·å/ç¼ºå¤ â æ£æ¬¾ãä¸è
ä¹ä»¥å½äººèªé
¬æ¡£æ¡åä»·ã |
| | | - 补建èªé
¬ç»æ + åå·¥èªé
¬æ¡£æ¡åå° CRUD + èåæéã |
| | | - 建ç«ãèªé
¬ç»æé¡¹ à 系æ°ãï¼å çè´¹ = å çæ¶é¿ Ã æ¶èª(ç±åºæ¬å·¥èµ/åºåºå¤æç®)ï¼å
ä¸ç¨æ·ç¡®è®¤è®¡ä»·å£å¾ã |
| | | |
| | | ### 3.4 绩æèæ ¸ |
| | | |
| | | éæ±ï¼ç»©æèæ ¸å
¨æµç¨ã |
| | | |
| | | **ç°ç¶ç¼ºå£** |
| | | - èæ ¸å®ä½(`appraise`/`item`/`result`)å·²å
·å¤ï¼ä½**"2-æå®çç»"ç scopeType æ è½å°è½½ä½**ï¼çç»ç»´åº¦æªå»ºï¼ï¼æå®äººçç»æä¸èªé
¬/å¹è®èå¨å¼±ã |
| | | - èæ ¸ç»æå¦ä½è¿å
¥èªé
¬ï¼ç»©æå·¥èµï¼é¾è·¯ï¼è§ 3.3ï¼éæéã |
| | | |
| | | **建议** |
| | | - 绩æå¯¹è±¡è½åºå°"åå·¥(æçç»)"ï¼çç»ç»´åº¦å¤ç¨éæ±â è¡¥ççç»è½½ä½ã |
| | | - 确认绩æç»æ â èªé
¬æ ¸ç®çåå¼è§åï¼ç»æç级/åæ° à 绩æå·¥èµæ¡£ï¼ã |
| | | |
| | | ### 3.5 éæ±â å»ºè®®å®æ½å项å°ç» |
| | | |
| | | | å项 | æ¶å | 说æ | |
| | | |------|------|------| |
| | | | A. å工主档æ©å± | `hrm_employee` + åå
¸ | å ç¨å·¥æ§è´¨ / æå±çç»ï¼ä¸â¡ç»ä¸å£å¾ï¼ | |
| | | | B. 审æ¹ç»æåå + è½¬æ£ | HRM service + BPM çå¬ | 离è/è°å¨åå主档ï¼è½¬æ£å¨ä½ | |
| | | | C. èå¤å çæé | èå¤ç¸å
³ service/mapper | å çæ¶é¿äº§åºå£å¾ | |
| | | | D. èªé
¬æ ¸ç®æ¥èå¤/绩æ | `HrmSalaryCalculationServiceImpl` | å çè´¹ãåºåºå¤ã绩æå·¥èµãæ£æ¬¾ | |
| | | | E. èªé
¬ç»æä¸æ¡£æ¡ CRUD | æ°å¢ 2 Controller + èå | åå°å¯ç»´æ¤èªé
¬æ¨¡åä¸ä¸ªäººæ¡£æ¡ | |
| | | | F. 绩æçç»è½å° + ç»æå
¥èªé
¬ | 绩æå¯¹è±¡æ©å± | ä¸ A/D èå¨ | |
| | | |
| | | --- |
| | | |
| | | ## åãéæ±â¡ãæç + å·¥æ¶ + ææ¬å¯¹æ¥ãå·®è·åæä¸å»ºè®® |
| | | |
| | | éæ±ï¼å¯¹è¿ç»´çç»ãæ£ä¿®çç»ãå¼å®å²ä½**æºè½æç**ã**å·¥æ¶ç»è®¡**ï¼å·¥æ¶æ°æ®**åæ¥å¯¹æ¥ææ¬æ ¸ç®æ¨¡å**ã |
| | | |
| | | ### 4.1 æç |
| | | |
| | | **ç°ç¶ç¼ºå£** |
| | | - MES `mes_cal_*` æçå¥ä»¶é½å
¨ï¼`cal_plan`(æç计å) â `cal_plan_shift`(çæ¬¡)ã`cal_plan_team`(åä¸çç»)ã`cal_team_member`(çç»æåï¼`userId`âç³»ç»ç¨æ·)ã`cal_team_shift`(çç»Ãçæ¬¡Ãæ¥æ)ã`cal_holiday`(è忥)ã |
| | | - **坿¨æ¼å°"åå·¥Ãæ¥"çæçï¼ä½æªè½ææç»**ï¼å¼å®å²ä½éäººéæ¥ççæ¬¡å®æ(ç½/å¤/ä¼)没æç©åç»æã |
| | | - **æ "æºè½"è½å**ï¼éæç¡®æºè½æ¯æï¼aï¼èªå¨æè§åçææç表ï¼åè§ï¼è¿ç»å·¥æ¶/伿¯é´é/çæ¬¡åè¡¡ï¼ï¼è¿æ¯ï¼bï¼ä»
åºåæççæ¿ä¾æ¥è¯¢ã |
| | | |
| | | **建议** |
| | | - å¨ `mes_cal_team_shift` ä¹ä¸**åºå"å工级æçæç»"**ï¼`mes_cal_schedule_detail`ï¼åå·¥Ãæ¥æÃçæ¬¡ï¼ï¼ä½ä¸ºå·¥æ¶/å¼å®åè§çåºåã |
| | | - "æºè½"æè§å弿æå°åå®ç°ï¼å
æçç»ç次模æ¿çæ + äººå·¥å¾®è° + åè§æ ¡éªï¼åç»åè°èªå¨ä¼åã |
| | | - å¼å®(24h)å²ä½çæçå£å¾ï¼ä¸çå/ç½å¤ä¼çï¼éç¨æ·ç¡®è®¤ç次åºã |
| | | |
| | | ### 4.2 å·¥æ¶ç»è®¡ä¸ææ¬å¯¹æ¥ |
| | | |
| | | **ç°ç¶ç¼ºå£** |
| | | - æ¥å·¥å·¥æ¶ï¼MES `mes_pro_task` æ¶é¿ duration(人æ¥ï¼1=8h)ï¼`MesProTaskApi.getTeamWorkHourSummary` å·²æçç»èåï¼**HRM 已跨模åè°ç¨**ï¼å®æ¶ç»è®¡ï¼æ æ±æ»è¡¨ï¼ã |
| | | - **æ ææ¬æ¨¡å**ï¼ERP ä»
æ¶ä»æ¬¾ï¼ãéæ±åæ"å¯¹æ¥ææ¬æ ¸ç®"ï¼è¥åæå®æ¶ç®ææ¬ï¼ä¼çµåº ERP ææ¬åçç©æ/人工/å¶é è´¹ç¨ä¸è¦ç´ ï¼èå´è¿å¤§ã |
| | | |
| | | **å»ºè®®ï¼æ²¿ç¨å·²ç¡®è®¤å£å¾ï¼å
åºåï¼ä¸å»ºææ¬ï¼** |
| | | - æ°å¢**æåº¦å·¥æ¶æ±æ»è¡¨**ï¼åå·¥Ãçç»Ãå·¥æ¶å£å¾ï¼æçå·¥æ¶/å®é
å·¥æ¶/å çå·¥æ¶ï¼æºèª MES æçæç» + æ¥å·¥ï¼ï¼å¹¶å¯¹**å¯¹å¤æä¾ `Api`** ä¾åç»ææ¬æ¨¡åæ¶è´¹ã |
| | | - äººå·¥ææ¬å£å¾ï¼å·¥æ¶ à åå·¥æ¶èª(èªé
¬æ¡£æ¡) å¯ä½**è½¯ææ¬é¢è§**ï¼ä½ä¸è½ ERP ææ¬æ»è´¦ï¼å¾
ç¨æ·ç¡®è®¤æ¯å¦æ¬è½®è¦åï¼ã |
| | | |
| | | --- |
| | | |
| | | ## äºãéæ±â¢ï¼å·²å®æï¼äº¤ä»è¯´æ |
| | | |
| | | éæ±â¢å·²å®æ½å®æå¹¶éè¿ç¼è¯ãç§åè½åº `mom-xgdl`ï¼ |
| | | |
| | | - **å¹è®ç®¡ç**ï¼`hrm_training` + `hrm_training_participant`ï¼è稿/å¾
å¼å±/已宿/已忶ï¼ç¼å· PX èªå¨çæï¼åè®äººæ¹éæ·»å /æç»©/æ¯å¦åæ ¼ï¼`/hrm/training/*` ä¸ `/hrm/training-participant/*` å
¨å¥æ¥å£ï¼ã |
| | | - **è¯ä¹¦/ååå°ææé**ï¼æ¯æ¥ `infra_job`(`hrmExpiryRemindJob` 08:00) + è¯ä¹¦/ååå表æè§¦åå
åºï¼Redis æ¥é+60 天å»éï¼æåå·¥ `userId` åç«å
ä¿¡ï¼æéå¤©æ° `infra_config`(é»è®¤ 30)å¯è°ã |
| | | - **èå¨åè¯**ï¼å¹è®å®ææ¶å¯¹ `is_pass=1` 䏿ªåè¯çåè®äººçæ `hrm_certificate`ï¼å®å
¨âç±»å4ãæè½âç±»å3ï¼è¯ä¹¦æææ=宿æ¥+`cert_validity_months`ï¼ï¼åå `certificate_id` é²éã |
| | | - **è¯ä¹¦çé**ï¼è¯ä¹¦å页æ°å¢ `expiryType`(1 å³å°å°æ/2 å·²è¿æ)ã |
| | | - èè°æ¹æ¡ææ¡£å·²åºï¼[hrm_training_and_expire_remind_integration.md](hrm_training_and_expire_remind_integration.md)ï¼ã |
| | | |
| | | > éçï¼è¿è¡æ¶ç«¯å°ç«¯éªè¯å¾
ç¨æ·ç¯å¢å°±ç»ªåæ§è¡ï¼å½å `mom-xgdl` æ åå·¥æµè¯æ°æ®ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## å
ãæ»ä½å®æ½è·¯çº¿å¾ï¼å»ºè®®é¶æ®µï¼ |
| | | |
| | | > ä¾èµå
³ç³»ï¼çç»å£å¾(éæ±â A) â æçæç»(éæ±â¡) åç½®æéåï¼ç»©ææå®çç»/å·¥æ¶æ±æ»æä¸è¿å·¥ã |
| | | |
| | | | é¶æ®µ | å
容 | åç½® | äº§åº | |
| | | |------|------|------|------| |
| | | | **P0 已交ä»** | éæ±â¢ å¹è® + å°ææé | æ | å·²è½å° + èè°ææ¡£ | |
| | | | **P1 ç»ç»å£å¾** | éæ±â A å工主档æ©å±(ç¨å·¥æ§è´¨/çç») + éæ±â¡çç»å£å¾ç»ä¸ | P0 | åå
¸/åæ®µ/çç»è½½ä½ | |
| | | | **P2 人åéç¯** | éæ±â B 审æ¹åå/è½¬æ£ + å³å¨ååç»ç¾å£å¾ | P1 | BPM çå¬ + 转æ£å¨ä½ | |
| | | | **P3 èå¤âèªé
¬** | éæ±â C èå¤å ç + D èªé
¬æ ¸ç®æ¥èå¤/绩æ + E èªé
¬ç»æ/æ¡£æ¡ CRUD | P1 | èå¤/èªé
¬é¾è·¯éç¯ | |
| | | | **P4 绩æ** | éæ±â F 绩æçç»è½å° + ç»æå
¥èªé
¬ | P1/P3 | 绩æâèªé
¬åå¼ | |
| | | | **P5 æç+å·¥æ¶** | éæ±â¡ å工级æçæç» + æåº¦å·¥æ¶æ±æ»è¡¨ + å¯¹å¤ Api | P1(çç») | æççæ¿åºå + å·¥æ¶ Api | |
| | | | **P6 ææ¬(å¦è§å)** | ERP ææ¬å(人工/ç©æ/å¶é ) æ¶è´¹å·¥æ¶ Api | P5 | éæ±â¡"å¯¹æ¥ææ¬"è½ç¹ | |
| | | |
| | | > æ¯é¶æ®µéµå¾ªæ¬ä»åºè§åï¼æ¥å£åæ´åº `docs/` å端èè°æ¹æ¡ï¼SQL ç§åå«èå/åå
¸/æéå¹¶è½ `mom-xgdl`ï¼è·¨æ¨¡åæ¹å¨åç¼è¯æ£æ¥ã**ææ¬æ¨¡åæ¯å¦æ¬è½®å°±å»ºãæºè½æçå°ä½ç§ç¨åº¦ï¼è§ä¸èå¾
确认ã** |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãå¾
确认ç弿¾å³ç |
| | | |
| | | 1. **çç»è½½ä½å½å±**ï¼åå·¥æå±çç»å¼ç¨ MES `mes_cal_team`(åæ®µå
³è `teamId`)ï¼è¿æ¯ HRM ç¬ç«çç»è¡¨ï¼â å½±å P1/P2/P5 ä¸å¤ã |
| | | 2. **ç¨å·¥æ§è´¨åå
¸**ï¼åå¼éåï¼æ£å¼/å³å¡/å¤å
/å®ä¹ /éä¼è¿è/å
¶ä»ï¼ï¼ã |
| | | 3. **è½¬æ£æµç¨**ï¼è½¬æ£æ¯æå¨å¨ä½è¿æ¯èµ° BPM 审æ¹ï¼è¯ç¨æå°èªå¨æé + 审æ¹å转æ£ï¼ï¼ |
| | | 4. **èªé
¬å ç/æ£æ¬¾è®¡ä»·å£å¾**ï¼å çè´¹ = å çæ¶é¿ Ã æ¶èªï¼æ¶èª = åºæ¬å·¥èµ ÷ 彿åºåºå¤å¤©æ°ï¼ç¼ºå¤æ£æ¬¾å£å¾åæºï¼ç»©æå·¥èµ = 绩æç»æåæ°/ç级 à åºå®ç»©ææ¡£ï¼ |
| | | 5. **绩æèæ ¸èå´**ï¼æ¬è½®èæ ¸"æå®çç»"æ¯å¦éè¦å®æ´çç»æåéä¸è¯ï¼è¿æ¯èæ ¸å°çç»ååæï¼ |
| | | 6. **éæ±â¡"æºè½"ç¨åº¦**ï¼èªå¨æçä»
åè§åæ¨¡æ¿ + äººå·¥å¾®è° + åè§æ ¡éªï¼è¿æ¯éè¦èªå¨æçç®æ³ï¼ |
| | | 7. **ææ¬æ¨¡åèå´**ï¼ç¡®è®¤æ¬è½®ä¸å»º ERP ææ¬åï¼åªåºåæåº¦å·¥æ¶æ±æ»è¡¨ + å¯¹å¤ Apiï¼è½¯ææ¬é¢è§ï¼ï¼ææ¬æ ¸ç®å¦è¡è§å ââ æ¯å¦è®¤å¯ï¼ |
| | | |
| | | --- |
| | | |
| | | *æ¬ææ¡£ä¸ºéæ±æ¢³ç稿ï¼å¾
ä¸è¿°å³ç确认åæé¶æ®µå®æ½ï¼æªç»ç¡®è®¤ä¸è¿å
¥ç¼ç ã* |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # HRM å¹è®ç®¡ç + è¯ä¹¦/ååå°ææé - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | | é¡µé¢ | åæ´ç±»å | 说æ | |
| | | |------|----------|------| |
| | | | 人åèµæº - è¯ä¹¦èµè´¨ | æ¹é | å表çéæ°å¢"å°æç±»å"ï¼å表页æå¼è§¦åè¯ä¹¦å°ææé | |
| | | | 人åèµæº - åå·¥åå | æ¹é | å表页æå¼è§¦åååå°ææéï¼æ 页é¢ç»ææ¹å¨ï¼ | |
| | | | 人åèµæº - å¹è®ç®¡çï¼æ°å¢èåï¼ | æ°å¢ | å¹è®æ´»å¨ + åè®äººå + 宿åè¯ | |
| | | | ç³»ç»æ¶æ¯ï¼ç«å
ä¿¡ï¼ | å±ç¤º | å°ææéç«å
ä¿¡ç±å端主å¨åéï¼å端æ éè°ç¨æ¥å£ | |
| | | |
| | | ## å°ææéè¡ä¸ºè¯´æ |
| | | |
| | | - è¯ä¹¦èµè´¨ãå³å¨ååå°æå N 天ï¼é»è®¤ 30ï¼å¯å¨ãç³»ç»é
ç½®ã䏿¹ `hrm.certificate.remind-days` / `hrm.contract.remind-days`ï¼ï¼å该åå·¥ç»å®çç³»ç»è´¦å·åéç«å
ä¿¡ã |
| | | - è§¦åæ¶æºåä¿é©ï¼ |
| | | 1. æ¯æ¥å®æ¶ä»»å¡ï¼handlerName=`hrmExpiryRemindJob`ï¼æ¯æ¥ 08:00ï¼å¯å¨å®æ¶ä»»å¡ç®¡çä¸è°æ´/å¯åï¼ï¼ |
| | | 2. æè§¦åï¼æå¼"è¯ä¹¦èµè´¨"æ"åå·¥åå"å表æ¶å端顺带补æ«ä¸æ¬¡ï¼best-effortï¼å¤±è´¥ä¸å½±åå表ï¼ã |
| | | - å»éè§åï¼åä¸è¯ä¹¦/ååå¨å°ææ¥åå 60 天å
åªæé䏿¬¡ï¼åä¸å工离èå䏿éï¼ä»
åå¨å²/è¯ç¨ä¸æç³»ç»è´¦å·çåå·¥åéï¼ã |
| | | |
| | | ç«å
ä¿¡ææ¡ï¼åéç±å端带å
¥ï¼å端ä»
å±ç¤ºï¼ï¼ |
| | | |
| | | | æ¨¡æ¿ | å
å®¹ç¤ºä¾ | |
| | | |------|----------| |
| | | | è¯ä¹¦å°ææé | {employeeName}ï¼æ¨çè¯ä¹¦èµè´¨ã{certTypeName}ã{certName} å°äº {expireDate} å°æï¼è¯·åæ¶åçå¤å®¡/æ¢è¯ã | |
| | | | å³å¨ååå°ææé | {employeeName}ï¼æ¨çå³å¨ååï¼ç¼å·ï¼{contractNo}ï¼å°äº {endDate} å°æï¼è¯·åæ¶è系人äºåçç»ç¾æç¦»èæç»ã | |
| | | |
| | | ## API |
| | | |
| | | ### ä¸ãè¯ä¹¦èµè´¨ï¼æ¹é ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | /hrm/certificate/page | å页æ¥è¯¢ï¼æ°å¢ `expiryType` è¿æ»¤åæ° | |
| | | |
| | | **请æ±åæ°ï¼æ°å¢ï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | expiryType | Integer | å¦ | 1=å³å°å°æï¼30 天å
ï¼ï¼2=å·²è¿æï¼ä¸ä¼ åä¸è¿æ»¤ | |
| | | |
| | | ### äºãå¹è®æ´»å¨ï¼æ°å¢ï¼èåæé hrm:training:*ï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /hrm/training/create | å建å¹è®ï¼åå§ç¶æ=èç¨¿ï¼ | |
| | | | PUT | /hrm/training/update | æ´æ°å¹è®ï¼ä»
è稿/å¾
å¼å±å¯æ¹ï¼ç¼å·ä¸å¯æ¹ï¼ | |
| | | | DELETE | /hrm/training/delete | æ¹éå é¤å¹è®ï¼ids æ°ç»ï¼å·²å®æ/已忶ä¸å¯å ï¼çº§èå åè®äººï¼ | |
| | | | GET | /hrm/training/get?id= | å¹è®è¯¦æ
ï¼å«åè®äººååè¡¨ï¼ | |
| | | | GET | /hrm/training/page | å¹è®å页ï¼å«åè®äººæ°ãç¶æ/ç±»ååç§°ï¼ | |
| | | | POST | /hrm/training/start?id= | å¼å§å¹è®ï¼è稿 â å¾
å¼å±ï¼ | |
| | | | POST | /hrm/training/complete?id= | 宿å¹è®ï¼â 已宿ï¼è§¦åèå¨åè¯ï¼ | |
| | | | POST | /hrm/training/cancel?id= | åæ¶å¹è®ï¼è稿/å¾
å¼å± â å·²åæ¶ï¼ | |
| | | |
| | | **å建/æ´æ°è¯·æ±åæ°ï¼HrmTrainingSaveReqVOï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | id | Long | æ´æ°å¿
å¡« | å¹è®æ´»å¨ç¼å· | |
| | | | name | String | æ¯ | å¹è®åç§° | |
| | | | trainingType | Integer | æ¯ | å¹è®ç±»åï¼1=å®å
¨å¹è®ï¼2=æè½å¹è®ï¼3=管çå¹è®ï¼4=å
¶ä» | |
| | | | trainer | String | å¦ | è®²å¸ | |
| | | | location | String | å¦ | å¹è®å°ç¹ | |
| | | | hours | BigDecimal | å¦ | å¹è®å¦æ¶ | |
| | | | startDate | LocalDate | å¦ | å¼å§æ¥æ | |
| | | | endDate | LocalDate | å¦ | ç»ææ¥æ | |
| | | | issueCertificate | Boolean | å¦ | æ¯å¦èªå¨åè¯ï¼0=å¦ï¼1=æ¯ï¼ä»
å®å
¨/æè½å¹è®å¯ç½® 1ï¼ | |
| | | | certValidityMonths | Integer | issue=1 æ¶å¿
å¡« | è¯ä¹¦æææï¼æï¼ | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **å页æ¥è¯¢åæ°ï¼HrmTrainingPageReqVOï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | trainingNo | String | å¦ | å¹è®ç¼å·ï¼ç²¾ç¡®ï¼ | |
| | | | name | String | å¦ | å¹è®åç§°ï¼æ¨¡ç³ï¼ | |
| | | | trainingType | Integer | å¦ | å¹è®ç±»å | |
| | | | status | Integer | å¦ | ç¶æï¼0=è稿ï¼10=å¾
å¼å±ï¼20=已宿ï¼30=已忶 | |
| | | |
| | | **详æ
/å表ååºï¼HrmTrainingRespVOï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | id / trainingNo / name | | 主é®ãç¼å·ï¼PX åç¼èªå¨çæï¼åªè¯»ï¼ãåç§° | |
| | | | trainingType / trainingTypeName | | ç±»å + å±ç¤ºåï¼å®å
¨å¹è®/æè½å¹è®/管çå¹è®/å
¶ä»ï¼ | |
| | | | trainer / location / hours | | 讲å¸/å°ç¹/妿¶ | |
| | | | startDate / endDate | | èµ·æ¢æ¥æ | |
| | | | issueCertificate / certValidityMonths | | æ¯å¦èªå¨åè¯ / è¯ä¹¦ææææ | |
| | | | status / statusName | | ç¶æ + å±ç¤ºåï¼è稿/å¾
å¼å±/已宿/å·²åæ¶ï¼ | |
| | | | participantCount | Integer | åè®äººæ°ï¼å页å表è¿åï¼ | |
| | | | participants | Array | åè®äººåå表ï¼è¯¦æ
æ¥å£è¿åï¼ç»æè§ä¸ï¼ | |
| | | | remark / createTime | | 夿³¨ / å建æ¶é´ | |
| | | |
| | | ### ä¸ãå¹è®åè®äººåï¼æ°å¢ï¼æå¹è®ç®¡çæéï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /hrm/training-participant/add | æ¹éæ·»å åè®åå·¥ï¼èªå¨è·³è¿å·²å¨ååä¸çåå·¥ï¼ | |
| | | | PUT | /hrm/training-participant/update | æ´æ°åæ¡åè®è®°å½ï¼åå /æç»©/æ¯å¦åæ ¼ï¼ | |
| | | | DELETE | /hrm/training-participant/delete | æ¹éå é¤åè®è®°å½ï¼ids æ°ç»ï¼ | |
| | | | GET | /hrm/training-participant/list?trainingId= | ææ¬¡å¹è®çåè®äººåå表ï¼å«å工工å·/å§åï¼ | |
| | | |
| | | **add 请æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | trainingId | Long | æ¯ | å¹è®æ´»å¨ç¼å· | |
| | | | employeeIds | Array | æ¯ | åè®åå·¥ç¼å·éå | |
| | | |
| | | **update 请æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | id | Long | æ¯ | åè®è®°å½ç¼å· | |
| | | | attended | Boolean | å¦ | æ¯å¦å®é
åå | |
| | | | score | BigDecimal | å¦ | èæ ¸æç»© | |
| | | | isPass | Boolean | å¦ | æ¯å¦åæ ¼ | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **list ååºå段ï¼HrmTrainingParticipantRespVOï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | id / trainingId / employeeId | | ä¸»é® / å¹è®ç¼å· / åå·¥ç¼å· | |
| | | | employeeNo / employeeName | | åå·¥å·¥å· / å§åï¼å端æ employeeId åå¡«ï¼ | |
| | | | attended | Boolean | æ¯å¦å®é
åå | |
| | | | score | BigDecimal | èæ ¸æç»© | |
| | | | isPass | Boolean | æ¯å¦åæ ¼ | |
| | | | certificateId | Long | èå¨çæçè¯ä¹¦ç¼å·ï¼ç©º=å°æªåè¯ï¼åªè¯»ï¼ | |
| | | | remark / createTime | | 夿³¨ / å建æ¶é´ | |
| | | |
| | | ## å端修æ¹ç¹ï¼é¡µé¢è¡ä¸ºè¯´æï¼ä¸å«ä»£ç ï¼ |
| | | |
| | | ### 1. å¹è®ç®¡çåè¡¨é¡µï¼æ°å¢ï¼ |
| | | |
| | | - é¡¶é¨çéï¼å¹è®ç¼å·ãå¹è®åç§°ãå¹è®ç±»åï¼ä¸æï¼ãç¶æï¼ä¸æï¼ï¼è°ç¨å¹è®å页æ¥å£ã |
| | | - å表åï¼å¹è®ç¼å·ãåç§°ãç±»åã讲å¸ãèµ·æ¢æ¥æãåè®äººæ°ãç¶æãæä½ã |
| | | - æ°å¢/ç¼è¾å¼¹çªï¼è¡¨ååæ®µåå建请æ±åæ°ï¼"æ¯å¦èªå¨åè¯"å¾éä¸å¹è®ç±»å为å®å
¨/æè½æ¶å±ç¤º"è¯ä¹¦æææï¼æï¼"å¿
å¡«è¾å
¥ã |
| | | - æä½æé®ï¼æå½åç¶ææ¾éï¼ï¼ |
| | | - è稿ï¼å¼å§ãç¼è¾ãå é¤ï¼ |
| | | - å¾
å¼å±ï¼å®æãåæ¶ãç¼è¾ãå é¤ï¼ |
| | | - 已宿/已忶ï¼ä»
æ¥çï¼ä¸å
许ç¼è¾/å é¤/æä½åä¸äººã |
| | | - "åè®äººå"å¼¹çªä»è¯¦æ
æ¥å£è·å¾ participantsï¼æå¹è®å®æä¸å¦å³å®æ¯å¦å
许å¢å æ¹åä¸äººè®°å½ã |
| | | |
| | | ### 2. åè®äººåæä½ |
| | | |
| | | - "æ·»å åè®åå·¥"使ç¨ç°æå工鿩å¨ï¼éä¸åååå·¥ id å表ï¼è°ç¨ add æ¥å£ï¼æ¥å£è¿åå®é
æ°å¢æ°ï¼å·²åå¨çèªå¨è·³è¿ï¼ã |
| | | - åè®è®°å½è¡å¯å½"æ¯å¦åå / èæ ¸æç»© / æ¯å¦åæ ¼"ï¼æäº¤èµ° updateï¼delete ä¼ idsã |
| | | - å工工å·/å§åç±å端åå¡«ï¼å端ä¸è¦å¨æ¬å°æ¼è£
ã |
| | | |
| | | ### 3. è¯ä¹¦èµè´¨åè¡¨ï¼æ¹é ï¼ |
| | | |
| | | - å表çéåºæ°å¢"å°æç±»å"䏿ï¼å
¨é¨/å³å°å°æ/å·²è¿æï¼ï¼å¼æ å° expiryType 1/2ã |
| | | - å表æå¼å³ä¼è§¦åå°ææéåéï¼æ éé¢å¤ UIã |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | ç¶ææµè½¬ | createâè稿(0)ï¼startâå¾
å¼å±(10)ï¼completeâ已宿(20)ï¼cancelâ已忶(30) | |
| | | | 宿å¹è® | ç¶æä¸ºè稿/å¾
å¼å±æå¯å®æï¼å¦åæ¥é | |
| | | | èå¨åè¯ | issueCertificate=1 æ¶ï¼å¹è®å®æèªå¨å¯¹"åæ ¼(isPass=1)䏿ªåè¯(certificateId 为空)"çåè®äººçæè¯ä¹¦ | |
| | | | è¯ä¹¦ç±»åæ å° | å®å
¨å¹è®(1)âè¯ä¹¦ç±»å4 å®å
¨å¹è®åæ ¼è¯ï¼æè½å¹è®(2)âè¯ä¹¦ç±»å3 æè½ç级è¯ä¹¦ï¼ç®¡ç/å
¶ä»ä¸æ¯æèªå¨åè¯ | |
| | | | è¯ä¹¦æææ | åè¯æ¥æ=宿å½å¤©ï¼å°ææ¥æ=宿å½å¤© + certValidityMonths 个æ | |
| | | | å¹ç | éå¤ç¹"宿"ä¸ä¼éå¤åè¯ï¼åè®äººåå certificateId é²éï¼ | |
| | | | ä¸å¯ç¼è¾è¾¹ç | 已宿/已忶çå¹è®ï¼ä¸å¯ç¼è¾ãå é¤ï¼ä¸å¯æ·»å /æ´æ°/å é¤åè®äºº | |
| | | | åè®äººå¯ä¸ | åä¸å¹è®ä¸åä¸åå·¥åªå
è®¸ä¸æ¡è®°å½ï¼é夿·»å èªå¨è·³è¿ | |
| | | | ç¼å·çæ | trainingNo 以 PX å¼å¤´ + æ¥æ + èªå¢ï¼ç±å端çæï¼å端åªè¯»å±ç¤º | |
| | | | å°ææéåé对象 | ä»
该åå·¥ç»å®ç³»ç»è´¦å·ä¸å¨è/è¯ç¨ï¼ç¦»è䏿é | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - å¹è®ç¸å
³ 4 个æé®æéï¼query/create/update/deleteï¼ä¸è¯ä¹¦èµè´¨ä¸è´å·²ææç»ç§æ·ç®¡çåçè§è²ï¼å¦æäºè´¦å·çä¸å°"å¹è®ç®¡ç"èåï¼éå¨"ç³»ç»ç®¡çâè§è²ç®¡ç"éå¾é该èåæéã |
| | | - ç«å
ä¿¡å¨ç»å½ç¨æ·ç"ç³»ç»æ¶æ¯"å
æ¥çï¼æ¶ä»¶äººæ¯å¹è®å¤çåå·¥æ¬äººï¼è¯ä¹¦/ååå½å±åå·¥ï¼ï¼ä¸æ¯ HR æä½äººã |
| | | - `certificateId` 为åªè¯»åæ¾ï¼å端ä¸å¯æäº¤ã |
| | | - è¥ä¿®æ¹äºå°ææé天æ°é
ç½®ï¼è¯·å¨"ç³»ç»é
ç½®"ä¿åï¼ä¸æ¬¡æéæ«æå³ææ°å¼çæã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 设å¤å°è´¦å建èªå¨å»ºç©æå¹¶å
¥è®¾å¤ä» - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - MES 设å¤ç®¡ç â 设å¤å°è´¦ï¼æ°å¢/ç¼è¾è¡¨åãå表 |
| | | - MES 设å¤ç®¡ç â 设å¤å°è´¦ï¼Excel 导å
¥ |
| | | - MDM ä¸»æ°æ® â ç©æï¼å¯å¨â设å¤âåç±»ä¸çå°èªå¨çæç设å¤ç©æï¼ |
| | | - MES ä»å¨ â åºåæ¥è¯¢ / åºåæµæ°´æ¥è¯¢ï¼æ¥ç设å¤ä»æ°é䏿µæ°´ï¼ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. æ°å¢è®¾å¤ï¼åæ¡/Excel 导å
¥ï¼â å端å¨åä¸äºå¡å
èªå¨å®æï¼ |
| | | - å建 MDM ç©æï¼ç±»å=设å¤ãåç±»=设å¤ãåä½=å°ãç¼ç =设å¤ç¼ç ãåç§°=设å¤åç§°ãè§æ ¼=设å¤è§æ ¼åå·ï¼ |
| | | - 忥å建 MES ç©æï¼ç¼ç /åç§°/è§æ ¼ä¸ MDM 对é½ï¼ä¸¤å¥ç©æ id ç¸çï¼ |
| | | - è½è®¾å¤å°è´¦å¹¶åå `itemId`ï¼è®¾å¤è¯¦æ
/åè¡¨å¯æ¥ï¼ |
| | | - çæä¸æ¡åºåæµæ°´å¹¶å
¥è®¾å¤ä»ï¼SYS-EQUIPMENT / SYS-EQUIP-LOC-01 / SYS-EQUIP-BIN-01ï¼ï¼åºåæ°é +1 |
| | | 2. ç¼è¾è®¾å¤ï¼åæ¡/Excel æ´æ°ï¼â åªæ¹è®¾å¤å°è´¦ï¼ä¸éå¤å»ºç©æãä¸éå¤å
¥åºï¼`itemId` ä¿æä¸å |
| | | 3. å é¤è®¾å¤ â å·²çæç©æå¹¶å
¥è®¾å¤ä»ç设å¤ç¦æ¢å é¤ï¼éå
éè¿åºåè°æ´å¤çåºåï¼ |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/dv-machinery/create | æ°å¢è®¾å¤ï¼èªå¨å»ºç©æå¹¶å
¥åºï¼ | |
| | | | PUT | /mes/dv-machinery/update | ç¼è¾è®¾å¤ï¼ä¸éå¤å»ºç©æ/å
¥åºï¼ | |
| | | | DELETE | /mes/dv-machinery/delete?id= | å é¤è®¾å¤ï¼å·²å
¥è®¾å¤ä»åæ¦æªï¼ | |
| | | | POST | /mes/dv-machinery/import | Excel 导å
¥ï¼å建è¡åæ ·å»ºç©æå¹¶å
¥åºï¼ | |
| | | | GET | /mes/dv-machinery/page | 设å¤å页å表 | |
| | | | GET | /mes/dv-machinery/get?id= | 设å¤è¯¦æ
| |
| | | |
| | | **请æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | code | String | æ¯ | 设å¤ç¼ç ï¼å°ä½ä¸ºå¯¹åºç©æçç©æç¼ç ï¼ | |
| | | | name | String | æ¯ | 设å¤åç§°ï¼å°ä½ä¸ºå¯¹åºç©æçç©æåç§°ï¼ | |
| | | | specification | String | å¦ | è§æ ¼åå·ï¼åæ¥å°ç©æè§æ ¼ï¼ | |
| | | | machineryTypeId | Long | æ¯ | 设å¤ç±»å | |
| | | | workshopId | Long | æ¯ | æå±è½¦é´ | |
| | | | status | Integer | æ¯ | 设å¤ç¶æ | |
| | | |
| | | æ°å¢/导å
¥æ¶å端**æ éä¼ `itemId`**ï¼ç³»ç»èªå¨çæå¹¶ååï¼ã |
| | | |
| | | **ååºå段æ°å¢ï¼`get` / `page` / `simple-list` è¿åç RespVO ä¸ï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | itemId | Long | 该设å¤å¯¹åºçç©æç¼å·ï¼=MDM ç©æ idï¼åæ¶çäº MES ç©æ idï¼ | |
| | | |
| | | **å
³äºå建ååºï¼** `POST /create` è¿åä½ `data` ä»ä¸º `Long`ï¼æ°å»ºè®¾å¤ idï¼ï¼ä¸ç´æ¥æºå¸¦ `itemId`ãå端ä¿åæååè¥éç«å³å±ç¤ºå¯¹åºç©æç¼å·ï¼å¯åè°ç¨ `GET /get?id=<æ°id>` å `data.itemId`ï¼`/page`ã`/simple-list` å表è¡ä¹ä¼è¿åè¯¥åæ®µã |
| | | |
| | | **详æ
ååºç¤ºä¾ï¼** |
| | | |
| | | ```json |
| | | { |
| | | "code": 0, |
| | | "data": { "id": 1024, "code": "EQ-001", "itemId": 100001 } |
| | | } |
| | | ``` |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | 对åºç©æç¼å·(itemId) | 设å¤å表ã详æ
| å端èªå¨çæï¼å¯ç¨äºè·³è½¬ MDM ç©æè¯¦æ
ææç©ææ¥åºå | |
| | | | 设å¤ä»åºå | åºåæ¥è¯¢é¡µï¼ä»åº=设å¤ä»ï¼ | æ°å»ºè®¾å¤èªå¨å
¥è®¾å¤ä»ï¼æ°é为 1 | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | æ°å¢è®¾å¤ | åä¸äºå¡ï¼å»º MDM ç©æ â 忥 MES ç©æ â è½å°è´¦ â å
¥è®¾å¤ä»ï¼+1ï¼ã任䏿¥å¤±è´¥æ´ä½åæ»ï¼ä¸çèæ°æ® | |
| | | | ç¼è¾è®¾å¤ | ä¸éå»ºç©æãä¸å
¥åºï¼`itemId` åªè¯»ä¸åä¼ | |
| | | | å é¤è®¾å¤ | `itemId` é空ç设å¤ç¦æ¢å é¤ï¼é²æ¢åºåæµæ°´å¤±å»ä¸å¡ä¸»ä½ï¼ï¼éå
ååºåè°æ´ | |
| | | | Excel 导å
¥ | å建è¡ä¸åæ¡æ°å¢èµ°åä¸å¥âå»ºç©æ + å
¥è®¾å¤ä»âé»è¾ï¼ç¼ç å²çªè¡æ¥éä¸è½åº | |
| | | | ç¼ºä¸»æ°æ® | è¥â设å¤âåç±»/âå°âåä½æè®¾å¤ä»æªåå§åï¼æ°å¢/导å
¥æ¥âä¸»æ°æ®æªåå§åâï¼æç¤ºè系管çå | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - 设å¤ç¼ç å³ç©æç¼ç ï¼è¯·ä¿æè®¾å¤ç¼ç å¨ç©æç»´åº¦ä¹å¯ä¸ï¼ç³»ç»å¯¹ç©æç¼ç åå¯ä¸æ ¡éªï¼å²çªä¼å¯¼è´æ°å¢å¤±è´¥ï¼ã |
| | | - å表/详æ
æ¥å£è¿åç `itemId` å¯å¨âåºå/æµæ°´âæ¥è¯¢ä¸ä½ä¸ºç鿡件æ¥ç该设å¤å¨è®¾å¤ä»çåºå䏿µæ°´ã |
| | | - è¥éå¨ MDM ç©æé¡µæåç±»ç鿥ç设å¤ç©æï¼éä¸â设å¤âåç±»å³å¯ã |
| | | - æ°æ®åºéå
æ§è¡åå§åèæ¬ `docs/sql/equipment_material_stock_link.sql`ï¼æ°å¢ `mes_dv_machinery.item_id`ãâ设å¤âåç±»/ç±»åãâå°âåä½ï¼ï¼å¦åæ°å»ºè®¾å¤ä¼æç¤ºä¸»æ°æ®æªåå§åã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ===================================================================== |
| | | -- MES ä»å¨å BPM å®¡æ¹æµç¨æå·¥é¨ç½²èæ¬ |
| | | -- ç®æ åºï¼mom-xgdlï¼local profileï¼ |
| | | -- |
| | | -- é¨ç½² 6 个ä¸ç¨æµç¨ï¼æµç¨å®ä¹ KEY_ ä¸åä¸å¡çå¬å¨ getProcessDefinitionKey() å®å
¨ä¸è´ï¼ |
| | | -- åç±»/KEY_ æµç¨å çå¬å¨ |
| | | -- misc_receipt_approve æé¡¹å
¥åºå®¡æ¹æµç¨ MesWmMiscReceiptStatusListener |
| | | -- misc_issue_approve æé¡¹åºåºå®¡æ¹æµç¨ MesWmMiscIssueStatusListener |
| | | -- return_vendor_approve ä¾åºåéè´§å®¡æ¹æµç¨ MesWmReturnVendorStatusListener |
| | | -- item_receipt_approve éè´å
¥åºå®¡æ¹æµç¨ MesWmItemReceiptStatusListener |
| | | -- stock_taking_result_approve çç¹ç»æå®¡æ¹æµç¨ MesWmStockTakingTaskResultStatusListener |
| | | -- equipment_receipt_approve 设å¤å
¥åºå®¡æ¹æµç¨ MesWmEquipmentReceiptStatusListener |
| | | -- |
| | | -- BPMN 模æ¿ï¼crm-invoice-auditï¼candidateStrategy=36 å起人æäº¤èªå¨éè¿ï¼å¤å¶å¹¶æ¿æ¢ key/åç§°ã |
| | | -- 约æéµå® bpm-manual-deployment è®°å¿ï¼ |
| | | -- model_type=10ï¼ENGINE_VERSION_ ç NULLï¼ä¸å空串ï¼ï¼META_INFO_ å« sortï¼deployment=32使 横线IDã |
| | | -- ===================================================================== |
| | | |
| | | SET NAMES utf8mb4; |
| | | |
| | | -- 1. ACT_RE_DEPLOYMENT ------------------------------------------------- |
| | | INSERT INTO `mom-xgdl`.`ACT_RE_DEPLOYMENT` (ID_, NAME_, CATEGORY_, KEY_, TENANT_ID_, DEPLOY_TIME_, ENGINE_VERSION_) |
| | | VALUES |
| | | ('10000000000000000000000000000001', 'æé¡¹å
¥åºå®¡æ¹æµç¨', 'misc_receipt_approve', '', '', NOW(), NULL), |
| | | ('10000000000000000000000000000002', 'æé¡¹åºåºå®¡æ¹æµç¨', 'misc_issue_approve', '', '', NOW(), NULL), |
| | | ('10000000000000000000000000000003', 'ä¾åºåéè´§å®¡æ¹æµç¨', 'return_vendor_approve', '', '', NOW(), NULL), |
| | | ('10000000000000000000000000000004', 'éè´å
¥åºå®¡æ¹æµç¨', 'item_receipt_approve', '', '', NOW(), NULL), |
| | | ('10000000000000000000000000000005', 'çç¹ç»æå®¡æ¹æµç¨', 'stock_taking_result_approve', '', '', NOW(), NULL), |
| | | ('10000000000000000000000000000006', '设å¤å
¥åºå®¡æ¹æµç¨', 'equipment_receipt_approve', '', '', NOW(), NULL); |
| | | |
| | | -- 2. ACT_GE_BYTEARRAYï¼BPMN XMLï¼ä» crm-invoice-audit 模æ¿å¤å¶å¹¶æ¿æ¢ key/åç§°ï¼---- |
| | | INSERT INTO `mom-xgdl`.`ACT_GE_BYTEARRAY` (ID_, REV_, NAME_, DEPLOYMENT_ID_, BYTES_, GENERATED_) |
| | | SELECT |
| | | '30000000000000000000000000000001', 1, 'misc_receipt_approve.bpmn', '10000000000000000000000000000001', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'misc_receipt_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', 'æé¡¹å
¥åºå®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485' |
| | | UNION ALL |
| | | SELECT |
| | | '30000000000000000000000000000002', 1, 'misc_issue_approve.bpmn', '10000000000000000000000000000002', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'misc_issue_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', 'æé¡¹åºåºå®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485' |
| | | UNION ALL |
| | | SELECT |
| | | '30000000000000000000000000000003', 1, 'return_vendor_approve.bpmn', '10000000000000000000000000000003', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'return_vendor_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', 'ä¾åºåéè´§å®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485' |
| | | UNION ALL |
| | | SELECT |
| | | '30000000000000000000000000000004', 1, 'item_receipt_approve.bpmn', '10000000000000000000000000000004', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'item_receipt_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', 'éè´å
¥åºå®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485' |
| | | UNION ALL |
| | | SELECT |
| | | '30000000000000000000000000000005', 1, 'stock_taking_result_approve.bpmn', '10000000000000000000000000000005', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'stock_taking_result_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', 'çç¹ç»æå®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485' |
| | | UNION ALL |
| | | SELECT |
| | | '30000000000000000000000000000006', 1, 'equipment_receipt_approve.bpmn', '10000000000000000000000000000006', |
| | | CAST(REPLACE(REPLACE(CONVERT(BYTES_ USING utf8mb4), 'crm-invoice-audit', 'equipment_receipt_approve'), 'å¼ç¥¨å®¡æ¹æµç¨', '设å¤å
¥åºå®¡æ¹æµç¨') AS BINARY), 0 |
| | | FROM `mom-xgdl`.`ACT_GE_BYTEARRAY` WHERE ID_ = 'c101d3e1-0001-11f2-8a27-00155dad6485'; |
| | | |
| | | -- 3. ACT_RE_PROCDEFï¼ENGINE_VERSION_ å¿
é¡» NULLï¼ä¸å空串ï¼---------------- |
| | | INSERT INTO `mom-xgdl`.`ACT_RE_PROCDEF` (ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_, DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, HAS_GRAPHICAL_NOTATION_, SUSPENSION_STATE_, TENANT_ID_, ENGINE_VERSION_, DERIVED_FROM_, DERIVED_FROM_ROOT_, DERIVED_VERSION_) |
| | | VALUES |
| | | ('misc_receipt_approve:1:10000000000000000000000000000001', 1, 'misc_receipt_approve', 'æé¡¹å
¥åºå®¡æ¹æµç¨', 'misc_receipt_approve', 1, '10000000000000000000000000000001', 'misc_receipt_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0), |
| | | ('misc_issue_approve:1:10000000000000000000000000000002', 1, 'misc_issue_approve', 'æé¡¹åºåºå®¡æ¹æµç¨', 'misc_issue_approve', 1, '10000000000000000000000000000002', 'misc_issue_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0), |
| | | ('return_vendor_approve:1:10000000000000000000000000000003', 1, 'return_vendor_approve', 'ä¾åºåéè´§å®¡æ¹æµç¨', 'return_vendor_approve', 1, '10000000000000000000000000000003', 'return_vendor_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0), |
| | | ('item_receipt_approve:1:10000000000000000000000000000004', 1, 'item_receipt_approve', 'éè´å
¥åºå®¡æ¹æµç¨', 'item_receipt_approve', 1, '10000000000000000000000000000004', 'item_receipt_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0), |
| | | ('stock_taking_result_approve:1:10000000000000000000000000000005', 1, 'stock_taking_result_approve', 'çç¹ç»æå®¡æ¹æµç¨', 'stock_taking_result_approve', 1, '10000000000000000000000000000005', 'stock_taking_result_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0), |
| | | ('equipment_receipt_approve:1:10000000000000000000000000000006', 1, 'equipment_receipt_approve', '设å¤å
¥åºå®¡æ¹æµç¨', 'equipment_receipt_approve', 1, '10000000000000000000000000000006', 'equipment_receipt_approve.bpmn', '', '', 0, 0, 1, '', NULL, '', '', 0); |
| | | |
| | | -- 4. ACT_RE_MODELï¼META_INFO_ å« sortï¼EDITOR_SOURCE_VALUE_ID_ å¯¹é½ BPMN bytearrayï¼---- |
| | | INSERT INTO `mom-xgdl`.`ACT_RE_MODEL` (ID_, REV_, NAME_, KEY_, CATEGORY_, CREATE_TIME_, LAST_UPDATE_TIME_, VERSION_, META_INFO_, DEPLOYMENT_ID_, EDITOR_SOURCE_VALUE_ID_, EDITOR_SOURCE_EXTRA_VALUE_ID_, TENANT_ID_) |
| | | VALUES |
| | | ('20000000000000000000000000000001', 1, 'æé¡¹å
¥åºå®¡æ¹æµç¨', 'misc_receipt_approve', 'misc_receipt_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606001,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000001', '30000000000000000000000000000001', NULL, ''), |
| | | ('20000000000000000000000000000002', 1, 'æé¡¹åºåºå®¡æ¹æµç¨', 'misc_issue_approve', 'misc_issue_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606002,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000002', '30000000000000000000000000000002', NULL, ''), |
| | | ('20000000000000000000000000000003', 1, 'ä¾åºåéè´§å®¡æ¹æµç¨', 'return_vendor_approve', 'return_vendor_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606003,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000003', '30000000000000000000000000000003', NULL, ''), |
| | | ('20000000000000000000000000000004', 1, 'éè´å
¥åºå®¡æ¹æµç¨', 'item_receipt_approve', 'item_receipt_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606004,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000004', '30000000000000000000000000000004', NULL, ''), |
| | | ('20000000000000000000000000000005', 1, 'çç¹ç»æå®¡æ¹æµç¨', 'stock_taking_result_approve', 'stock_taking_result_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606005,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000005', '30000000000000000000000000000005', NULL, ''), |
| | | ('20000000000000000000000000000006', 1, '设å¤å
¥åºå®¡æ¹æµç¨', 'equipment_receipt_approve', 'equipment_receipt_approve', NOW(), NOW(), 1, |
| | | '{"allowCancelRunningProcess":true,"allowWithdrawTask":false,"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"","formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":{"enable":false,"template":""},"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":{"enable":false,"infix":"","length":5,"postfix":"","prefix":""},"sort":1785465606006,"startDeptIds":[],"startUserIds":[],"summarySetting":{"enable":false,"summary":[]},"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":{"enable":false,"title":""},"type":10,"visible":true}', |
| | | '10000000000000000000000000000006', '30000000000000000000000000000006', NULL, ''); |
| | | |
| | | -- 5. bpm_process_definition_infoï¼model_type=10ï¼deleted=0ï¼--------------- |
| | | INSERT INTO `mom-xgdl`.`bpm_process_definition_info` |
| | | (process_definition_id, model_id, model_type, category, icon, description, form_type, form_id, form_conf, form_fields, simple_model, visible, sort, start_user_ids, start_dept_ids, manager_user_ids, allow_cancel_running_process, allow_withdraw_task, deleted, creator, create_time, updater, update_time) |
| | | VALUES |
| | | ('misc_receipt_approve:1:10000000000000000000000000000001', '20000000000000000000000000000001', 10, 'misc_receipt_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606001, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()), |
| | | ('misc_issue_approve:1:10000000000000000000000000000002', '20000000000000000000000000000002', 10, 'misc_issue_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606002, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()), |
| | | ('return_vendor_approve:1:10000000000000000000000000000003', '20000000000000000000000000000003', 10, 'return_vendor_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606003, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()), |
| | | ('item_receipt_approve:1:10000000000000000000000000000004', '20000000000000000000000000000004', 10, 'item_receipt_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606004, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()), |
| | | ('stock_taking_result_approve:1:10000000000000000000000000000005', '20000000000000000000000000000005', 10, 'stock_taking_result_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606005, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()), |
| | | ('equipment_receipt_approve:1:10000000000000000000000000000006', '20000000000000000000000000000006', 10, 'equipment_receipt_approve', NULL, NULL, 10, 1, |
| | | '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"éç½®"},"submitBtn":{"show":true,"innerText":"æäº¤"}}', |
| | | '[]', NULL, 1, 1785465606006, NULL, NULL, '1', 1, 1, 0, '1', NOW(), '1', NOW()); |
| | | |
| | | -- ===================================================================== |
| | | -- éå½ï¼M6 èå/æéè¡¥å
ï¼å·²å¨ mom-xgdl æ§è¡ï¼ |
| | | -- é夿§è¡ä¼ä¸»é®å²çªï¼æ³¨æå¹çã |
| | | -- ===================================================================== |
| | | |
| | | -- SN ç è¡¥"æ´æ°"æé®ï¼åºå
¥åº/详æ
æ¥å£ä¾èµ mes:wm-sn:updateï¼ |
| | | INSERT INTO `mom-xgdl`.`system_menu` |
| | | (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) |
| | | VALUES |
| | | (1065725, 'SN ç æ´æ°', 'mes:wm-sn:update', 3, 3, 5897, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); |
| | | |
| | | -- 设å¤å
¥åºåèåï¼ä»å¨ç©æµ 5780 ä¸ï¼ç»ä»¶ wls/equipmentreceipt/indexï¼ |
| | | INSERT INTO `mom-xgdl`.`system_menu` |
| | | (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) |
| | | VALUES |
| | | (1065726, '设å¤å
¥åº', '', 2, 20, 5780, 'equipment-receipt', 'fa-solid:box-open', 'wls/equipmentreceipt/index', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065727, '设å¤å
¥åºæ¥è¯¢', 'mes:wm:equipment-receipt:query', 3, 1, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065728, '设å¤å
¥åºå建', 'mes:wm:equipment-receipt:create', 3, 2, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065729, '设å¤å
¥åºæ´æ°', 'mes:wm:equipment-receipt:update', 3, 3, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065730, '设å¤å
¥åºå é¤', 'mes:wm:equipment-receipt:delete', 3, 4, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065731, '设å¤å
¥åºæäº¤', 'mes:wm:equipment-receipt:submit', 3, 5, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065732, '设å¤å
¥åºæ§è¡', 'mes:wm:equipment-receipt:finish', 3, 6, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (1065733, '设å¤å
¥åºåæ¶', 'mes:wm:equipment-receipt:cancel', 3, 7, 1065726, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ===================================================================== |
| | | -- 设å¤å°è´¦èå¨è®¾å¤ä»ï¼è®¾å¤ç©æä¸»æ°æ®åå§åèæ¬ï¼MySQLï¼ |
| | | -- ç®æ åºï¼mom-xgdlï¼æ¬å° dev åºï¼ãå
¶å®åºæ§è¡åè¯·æ ¸å¯¹ä¸»é® id æ¯å¦å²çªã |
| | | -- |
| | | -- èæ¯ï¼ |
| | | -- 1) MES 设å¤å建æ¶èªå¨çæå¯¹åºç©æï¼è¿å
¥è®¾å¤ä»åºåï¼å
³èé¾ä¸ºï¼ |
| | | -- mes_dv_machinery.item_id -> mdm_item.idï¼= mes_md_item.id 对é½ï¼ |
| | | -- 2) 设å¤ç©æå¤ç¨äº MDM/MES 两å¥ä¸»æ°æ®ï¼æ¬èæ¬è¡¥é½ï¼ |
| | | -- - åç±»/ç±»åï¼â设å¤âï¼mes_md_item_type ä¸ mdm_item_category 使ç¨åä¸ id 对é½ï¼ |
| | | -- - 计éåä½ï¼âå°âï¼mes_md_unit_measure ä¸ mdm_unit_measureï¼ |
| | | -- - 设å¤ä»/åºåº/åºä½ï¼SYS-EQUIPMENT / SYS-EQUIP-LOC-01 / SYS-EQUIP-BIN-01 |
| | | -- ï¼å¦ç®æ åºç¼ºå¤±éå¦è¡åå§åï¼ä»£ç ä»
å¨ç¼ºå¤±æ¶ç»åºâä¸»æ°æ®æªåå§åâæç¤ºï¼ |
| | | -- |
| | | -- 约æï¼èæ¬ä¸å« tenant_idï¼ADD COLUMN ååå卿§æ£æ¥ï¼MySQL 䏿¯æ IF NOT EXISTSï¼ã |
| | | -- ===================================================================== |
| | | |
| | | -- 1. mes_dv_machinery å¢å item_idï¼è®¾å¤å¯¹åºç©æç¼å·ï¼ |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = 'mom-xgdl' AND table_name = 'mes_dv_machinery' AND column_name = 'item_id'); |
| | | SET @ddl = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_dv_machinery` ADD COLUMN `item_id` BIGINT NULL COMMENT ''对åºç©æç¼å·ï¼mdm_item.idï¼'' AFTER `workstation_id`', |
| | | 'SELECT 1'); |
| | | PREPARE s FROM @ddl; |
| | | EXECUTE s; |
| | | DEALLOCATE PREPARE s; |
| | | |
| | | -- 2. MES ç©æç±»åï¼â设å¤âï¼code=EQUIPMENTï¼ä½ä¸ºè®¾å¤ç©æçåç±»/ç±»åï¼ |
| | | INSERT INTO `mes_md_item_type` (`id`, `code`, `name`, `parent_id`, `item_or_product`, `sort`, `status`) |
| | | SELECT 100, 'EQUIPMENT', '设å¤', 0, 'ITEM', 1, 0 FROM DUAL |
| | | WHERE NOT EXISTS (SELECT 1 FROM `mes_md_item_type` WHERE `code` = 'EQUIPMENT' AND `deleted` = 0); |
| | | |
| | | -- 3. MDM ç©æåç±»ï¼â设å¤âï¼id ä¸ MES ç±»å id=100 对é½ï¼ä»£ç æ®æ¤è§£æ MDM categoryIdï¼ |
| | | INSERT INTO `mdm_item_category` (`id`, `parent_id`, `code`, `name`, `item_type`, `item_or_product`, `sort`, `status`) |
| | | SELECT 100, 0, 'EQUIPMENT', '设å¤', 4, 'ITEM', 1, 0 FROM DUAL |
| | | WHERE NOT EXISTS (SELECT 1 FROM `mdm_item_category` WHERE `code` = 'EQUIPMENT' AND `deleted` = 0); |
| | | |
| | | -- 4. MES 计éåä½ï¼âå°âï¼code=TAIï¼ |
| | | INSERT INTO `mes_md_unit_measure` (`id`, `code`, `name`, `primary_flag`, `primary_id`, `change_rate`, `status`) |
| | | SELECT 100, 'TAI', 'å°', 1, NULL, 1, 0 FROM DUAL |
| | | WHERE NOT EXISTS (SELECT 1 FROM `mes_md_unit_measure` WHERE `code` = 'TAI' AND `deleted` = 0); |
| | | |
| | | -- 5. MDM 计éåä½ï¼âå°âï¼code=TAIï¼ |
| | | INSERT INTO `mdm_unit_measure` (`id`, `code`, `name`, `primary_flag`, `primary_id`, `change_rate`, `status`) |
| | | SELECT 100, 'TAI', 'å°', 1, NULL, 1, 0 FROM DUAL |
| | | WHERE NOT EXISTS (SELECT 1 FROM `mdm_unit_measure` WHERE `code` = 'TAI' AND `deleted` = 0); |
| | | |
| | | -- 说æï¼è¥ç®æ åºä¸ id=100 ä¸å·²æè®°å½å²çªï¼å¯å°ä¸é¢ 4 å¤ id è°æ´ä¸ºåä¸ç©ºé² idï¼ |
| | | -- å¹¶ä¿è¯ mes_md_item_type ä¸ mdm_item_category çâ设å¤âè¡ id ç¸çï¼ä»£ç æ®æ¤å MDM categoryIdï¼ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================= |
| | | -- M5ï¼ç¬ç«è®¾å¤å
¥åºå |
| | | -- 1. mes_wm_equipment_receiptï¼ä¸»è¡¨ï¼ |
| | | -- 2. mes_wm_equipment_receipt_lineï¼è¡è¡¨ï¼ä»è®¾å¤å°è´¦éæ©ï¼åºå®è®¾å¤ä»å
¥åºï¼ |
| | | -- ç®æ åºï¼mom-xgdlï¼local profileï¼ |
| | | -- ============================================= |
| | | |
| | | CREATE TABLE IF NOT EXISTS `mes_wm_equipment_receipt` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(64) NOT NULL COMMENT 'åæ®ç¼ç ', |
| | | `name` varchar(255) DEFAULT NULL COMMENT 'åæ®åç§°', |
| | | `receipt_date` datetime DEFAULT NULL COMMENT 'å
¥åºæ¥æ', |
| | | `source` varchar(255) DEFAULT NULL COMMENT 'å
¥åºæ¥æº', |
| | | `status` tinyint NOT NULL DEFAULT '0' COMMENT 'ç¶æ', |
| | | `process_instance_id` varchar(64) DEFAULT NULL COMMENT 'BPM æµç¨å®ä¾ç¼å·', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_code` (`code`), |
| | | KEY `idx_status` (`status`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设å¤å
¥åºå'; |
| | | |
| | | CREATE TABLE IF NOT EXISTS `mes_wm_equipment_receipt_line` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `receipt_id` bigint NOT NULL COMMENT 'å
¥åºåç¼å·', |
| | | `machinery_id` bigint NOT NULL COMMENT '设å¤å°è´¦ç¼å·', |
| | | `item_id` bigint DEFAULT NULL COMMENT '设å¤ç©æç¼å·ï¼mdm_item.idï¼', |
| | | `quantity` decimal(24,6) NOT NULL DEFAULT '1.000000' COMMENT 'å
¥åºæ°é', |
| | | `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´', |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_receipt_id` (`receipt_id`), |
| | | KEY `idx_machinery_id` (`machinery_id`), |
| | | KEY `idx_item_id` (`item_id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设å¤å
¥åºåè¡'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================= |
| | | -- M4ï¼SN åååºåè½»ééç¯ |
| | | -- 1. mes_wm_sn å¢å å¨åºåºä½ç»´åº¦åï¼status/batch_id/remark 表ä¸å·²åå¨ï¼ |
| | | -- 2. mes_wm_transaction å¢å sn_code å |
| | | -- ç®æ åºï¼mom-xgdlï¼local profileï¼ |
| | | -- ============================================= |
| | | |
| | | -- 1. mes_wm_sn.warehouse_idï¼å¨åºä»åº IDï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_sn' AND column_name = 'warehouse_id'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_sn ADD COLUMN warehouse_id BIGINT NULL COMMENT ''å¨åºä»åº ID'' AFTER batch_id', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- 2. mes_wm_sn.location_idï¼å¨åºåºåº IDï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_sn' AND column_name = 'location_id'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_sn ADD COLUMN location_id BIGINT NULL COMMENT ''å¨åºåºåº ID'' AFTER warehouse_id', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- 3. mes_wm_sn.area_idï¼å¨åºåºä½ IDï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_sn' AND column_name = 'area_id'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_sn ADD COLUMN area_id BIGINT NULL COMMENT ''å¨åºåºä½ ID'' AFTER location_id', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- 4. mes_wm_transaction.sn_codeï¼SN ç ï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_transaction' AND column_name = 'sn_code'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_transaction ADD COLUMN sn_code VARCHAR(100) NULL COMMENT ''SN ç '' AFTER batch_code', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================= |
| | | -- M2ï¼å®æçç¹èªå¨è°åº¦ |
| | | -- mes_wm_stock_taking_plan å¢å 宿èªå¨çæç¸å
³å |
| | | -- ç®æ åºï¼mom-xgdlï¼local profileï¼ |
| | | -- ============================================= |
| | | |
| | | -- 1. mes_wm_stock_taking_plan.auto_generateï¼æ¯å¦å®æèªå¨çæçç¹ä»»å¡ï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_stock_taking_plan' AND column_name = 'auto_generate'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_stock_taking_plan ADD COLUMN auto_generate TINYINT(1) NULL DEFAULT b''0'' COMMENT ''æ¯å¦å®æèªå¨çæçç¹ä»»å¡'' AFTER frozen', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- 2. mes_wm_stock_taking_plan.generate_cronï¼èªå¨çæå¨æ cron 表达å¼ï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_stock_taking_plan' AND column_name = 'generate_cron'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_stock_taking_plan ADD COLUMN generate_cron VARCHAR(64) NULL COMMENT ''èªå¨çæå¨æ cron 表达å¼ï¼auto_generate=1 æ¶å¿
å¡«ï¼'' AFTER auto_generate', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| | | |
| | | -- 3. mes_wm_stock_taking_plan.last_generate_timeï¼ä¸æ¬¡èªå¨çææ¶é´ï¼ |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_stock_taking_plan' AND column_name = 'last_generate_time'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_stock_taking_plan ADD COLUMN last_generate_time DATETIME NULL COMMENT ''䏿¬¡èªå¨çææ¶é´'' AFTER generate_cron', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ============================================= |
| | | -- M1ï¼çç¹ç»æå®¡æ¹ BPM |
| | | -- mes_wm_stock_taking_task å¢å process_instance_id å |
| | | -- ç¨äºåå"çç¹ç»æå·²æäº¤ BPM 审æ¹"çæµç¨å®ä¾ç¼å· |
| | | -- ç®æ åºï¼mom-xgdlï¼local profileï¼ |
| | | -- ============================================= |
| | | |
| | | -- 1. mes_wm_stock_taking_task.process_instance_id |
| | | SET @exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_stock_taking_task' AND column_name = 'process_instance_id'); |
| | | SET @sql = IF(@exists = 0, |
| | | 'ALTER TABLE mes_wm_stock_taking_task ADD COLUMN process_instance_id VARCHAR(64) NULL COMMENT ''BPM æµç¨å®ä¾ç¼å·ï¼é空表示çç¹ç»æå·²æäº¤å®¡æ¹ï¼'' AFTER status', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; |
| | | EXECUTE stmt; |
| | | DEALLOCATE PREPARE stmt; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # æ¡ç ç»å / æå¡ç«¯æå¾ / æ«ç è§£æ - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - æ¡ç é
置管ç页ï¼`contentFormat` ç¼è¾ï¼ |
| | | - æ ç¾æå° / æ¡ç å±ç¤ºé¡µï¼æå¡ç«¯æå¾é¢è§ï¼ |
| | | - æ«ç ï¼PDA / ææºæ«ç æªï¼è§¦åä¸å¡è§£æå
¥å£ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. æ¡ç é
ç½® -> å
容çæï¼é
ç½® `contentFormat` æ¯æç»åå ä½ç¬¦ `{BUSINESSCODE}`ï¼ä¸å¡ç¼ç ï¼ã`{BUSINESSNAME}`ï¼ä¸å¡åç§°ï¼ãåç«¯ä¼ `bizType`ã`bizCode`ã`bizName` è°çææ¥å£ï¼å端æé
ç½®æ¨¡æ¿æ¿æ¢å ä½ç¬¦ãæ¸
空æªç¥å ä½ç¬¦ï¼è¿åæç»æ¡ç å
容ã |
| | | 2. æå¡ç«¯æå¾ï¼åç«¯ææ¡ç å
容 + æ ¼å¼ï¼1 QRCode / 2 EAN-13 / 3 Code39 / 4 UPC-A / é»è®¤ Code128ï¼+ 宽é«ä¼ ç» `POST /render`ï¼åç«¯ç¨ zxing çæå¾çï¼è¿å Base64 data-URL ä¾ `<img>` ç´æ¥é¢è§ï¼ä¸æä¹
åè½åºï¼ã |
| | | 3. æ«ç è§£æï¼åç«¯ææ«å°çå
å®¹ä¼ ç» `POST /parse`ï¼å端å
精确å¹é
æ¡ç 表ï¼åæå¯ç¨é
ç½®ç `contentFormat` å忣åå¹é
ï¼è¿åå½ä¸ç `bizType` / `bizCode` / `bizName`ï¼åç«¯æ®æ¤è·³è½¬å¯¹åºä¸å¡åæ®ã |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | /mes/wm/barcode/generate-content?bizType=&bizCode=&bizName= | æé
ç½®çææ¡ç å
容 | |
| | | | POST | /mes/wm/barcode/render | æå¡ç«¯æå¾ï¼è¿å Base64 å¾çï¼ | |
| | | | POST | /mes/wm/barcode/parse | æ«ç è§£æï¼è¿åä¸å¡åæ®µï¼ | |
| | | |
| | | **请æ±åæ°ï¼renderï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | content | String | æ¯ | æ¡ç å
容ï¼å¯ç± generate-content è¿åï¼ | |
| | | | format | Integer | å¦ | æ¡ç æ ¼å¼ï¼1 QRCode / 2 EAN-13 / 3 Code39 / 4 UPC-A / é»è®¤ Code128 | |
| | | | width | Integer | å¦ | å¾ç宽度ï¼é»è®¤ 200ï¼ | |
| | | | height | Integer | å¦ | å¾çé«åº¦ï¼é»è®¤ 200ï¼ | |
| | | |
| | | **ååºï¼renderï¼ï¼** `{ "code": 200, "data": "data:image/png;base64,..." }` |
| | | |
| | | **请æ±åæ°ï¼parseï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | content | String | æ¯ | æ«æå¾å°çæ¡ç å
容 | |
| | | |
| | | **ååºå段ï¼parseï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | bizType | Integer | å½ä¸çä¸å¡ç±»å | |
| | | | bizCode | String | å½ä¸çä¸å¡ç¼ç | |
| | | | bizName | String | å½ä¸çä¸å¡åç§° | |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | contentFormat | æ¡ç é
ç½®ç¼è¾é¡µ | æ¯æ `{BUSINESSCODE}`ã`{BUSINESSNAME}` ç»å | |
| | | | æ¡ç å¾ç | æ ç¾ / å表 | `render` è¿å Base64 ç´æ¥ `<img src>` | |
| | | | è§£æç»æ | æ«ç ç»æé¡µ | å½ä¸åå±ç¤ºä¸å¡ç¼ç 并跳转 | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | çæå
容 | ä»
æ¿æ¢é
ç½®ä¸åå¨çå ä½ç¬¦ï¼æªé
ç½®çæªç¥å ä½ç¬¦ä¼è¢«æ¸
空 | |
| | | | æå¡ç«¯æå¾ | åªå峿¶é¢è§ï¼ä¸è½åºï¼æ£å¼éä»¶ä»èµ° system åå¨éä»¶æºå¶ | |
| | | | è§£æ | ä¼å
精确å¹é
æ¡ç è¡¨ï¼æªå½ä¸åæå¯ç¨é
ç½® `contentFormat` ååå¹é
ï¼åæªå½ä¸è¿å空 | |
| | | | æ ¼å¼æ¯æ | äºç»´ç ä¸ä¸ç»´ç ï¼EAN-13 / Code39 / UPC-A / Code128ï¼ | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - æ¡ç å¾ç为 Base64 data-URLï¼éå峿¶é¢è§ï¼å¦éæä¹
å卿ãæä»¶ä¸ä¼ è§åãèµ° `/system/storage-*`ã |
| | | - `generate-content` éè¦åå¨å¯¹åºçå¯ç¨æ¡ç é
ç½®ï¼å¦åè¿ååæ ·æç©ºã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # ä»å¨ï¼WMï¼æ¹éè¡¥ç éæ±è¯´æ |
| | | |
| | | > æ¬ææ¡£æ´ççæ¯ **2026-09-08 ç¡®è®¤çæ¬è½®æ¹éè¡¥ç éæ±å
**ï¼M1~M5ï¼ï¼ç¨äºåç»å¼ååºçº¿ã |
| | | > åç½®è½åï¼ä¸å¨æ¬æèå´ï¼å·²å®æï¼ï¼æé¡¹å
¥åº/åºåº/ä¾åºåéè´§ä¸åæ® BPM 审æ¹éç¯ã设å¤å°è´¦èå¨è®¾å¤ä»èªå¨å
¥åºãçç¹å·®å¼èªå¨æ ¸éæ¥çº¿ãMDM ç©æä¸»æ°æ®ï¼å«â设å¤âç©æç±»å/åç±»/åä½ï¼ã |
| | | |
| | | ## 1. èæ¯ä¸ç®æ |
| | | |
| | | å½å WM ä»å¨å·²å
·å¤åæ®ãåºåæµæ°´ãçç¹ã设å¤ä»èªå¨å
¥åºçè½åï¼ä½åå¨ä»¥ä¸ç¼ºå£ï¼æ¬è½®ä¸å¹¶è¡¥é½ï¼ |
| | | |
| | | | ç¼ºå£ | ç°ç¶ | ç®æ | |
| | | |------|------|------| |
| | | | çç¹æ 夿 ¸å
³å£ | å½å
¥/导å
¥å®çåç±â宿çç¹âç´æ¥æ ¸éå°è´¦ | çç¹ç»æå
èµ° BPM 审æ¹ï¼éè¿æè§£å»å¹¶æ ¸é | |
| | | | çç¹é 人工éæå»ºä»»å¡ | æ¯æ¬¡éæå·¥åå»ºä»»å¡ | æ¹æ¡é
ç½®å¨æï¼åå°å®æ¶èªå¨çæä»»å¡ | |
| | | | æ¡ç è½åå¼± | ä»
æ¯æåä¸ä¸å¡ç¼ç å ä½ç¬¦ãæ æå¾/æ«ç | ç»ååæ®µãæå¡ç«¯æå¾ãæ«ç è§£æ | |
| | | | SN æ éç¯ | ä»
æ SN ä¸»æ¡£ï¼æ å¨åº/å»å | ç»è®°/æ ¸é SNãåä»¶å¨åº/å»åæ¥è¯¢ï¼è½»ééç¯ï¼ | |
| | | | 设å¤å
¥åºæ åæ® | ä»
âå°è´¦å建å³èªå¨å
¥è®¾å¤ä»â | ç¬ç«è®¾å¤å
¥åºåï¼èµ°å建ã审æ¹ã宿å
¥åºãæ¥è¯¢ | |
| | | |
| | | **å
¨å±çº¦æ**ï¼ä»
å端ï¼ä¸ä¿®æ¹å端项ç®ï¼æ¥å£åæ´åªåºèè°ææ¡£ï¼åºåå建/æ°éæ´æ°/æµæ°´ä¸å¾ç»åºåäºå¡æå¡ï¼ä¸ç´ååºå表ï¼BPM åç±»ä¸æµç¨å®ä¹æå·¥é¨ç½²ï¼æ°å¢è¡¨ä¸è½ tenant_idï¼`ADD COLUMN` æå卿§æ£æ¥æ§è¡ã |
| | | |
| | | ## 2. èå´çå® |
| | | |
| | | - **å**ï¼M1 çç¹ç»æå®¡æ¹ BPMï¼M2 宿çç¹èªå¨è°åº¦ï¼M3 æ¡ç ç»å/æå¾/æ«ç ï¼M4 SN è½»ééç¯ï¼M5 ç¬ç«è®¾å¤å
¥åºåã |
| | | - **ä¸å**ï¼çç¹âå²é/åæ ¸éâï¼åå²å·²å®æä»»å¡è¡¥æ ¸éï¼åºååæ®è¡éæä¸º SN æç»ï¼å端代ç ã |
| | | |
| | | ## 3. M1 çç¹ç»æå®¡æ¹ BPM |
| | | |
| | | ### 3.1 ä¸å¡åºæ¯ |
| | | çç¹ä¸å½å
¥/导å
¥å®çåï¼ç±è´è´£äººå°çç¹ç»ææäº¤ BPM 审æ¹ï¼å®¡æ¹éè¿åç³»ç»è§£å»åºåå¹¶èªå¨æ ¸éçç/çäºå·®å¼æ´æ°å°è´¦ï¼å®¡æ¹ä¸éè¿åå
许修æ¹å®çåéæ°æäº¤ã |
| | | |
| | | ### 3.2 ç¶ææºï¼å¤ç¨ç°æä¸¾ï¼ä¸æ°å¢â已审æ¹âæï¼ |
| | | ``` |
| | | è稿 PREPARE ââå¼å§çç¹âââ¶ çç¹ä¸ APPROVING ââæäº¤ç»æå®¡æ¹(建BPM)âââ¶ çç¹ä¸ APPROVING |
| | | âï¼processInstanceId é空=审æ¹ä¸ï¼ |
| | | çç¹ä¸ ââ审æ¹éè¿âââ¶ å·²å®æ FINISHEDï¼è§£å» + èªå¨æ ¸éå·®å¼ï¼åäºå¡ï¼ |
| | | çç¹ä¸ ââ审æ¹é©³åâââ¶ çç¹ä¸ APPROVINGï¼æ¸
processInstanceIdï¼å¯æ¹å®çåéæï¼ |
| | | çç¹ä¸ ââ审æ¹åæ¶âââ¶ å·²åæ¶ CANCELEDï¼è§£å»ï¼ |
| | | è稿/çç¹ä¸ ââåæ¶âââ¶ å·²åæ¶ CANCELEDï¼è§£å»ï¼ |
| | | ``` |
| | | |
| | | ### 3.3 ä¸å¡è§å |
| | | - **å¼å§çç¹**ï¼è稿âçç¹ä¸ï¼ï¼ä»
è稿ï¼çç¹è¡é空ï¼å¼å¯å»ç»åå»ç»çç¹è¡åºåã |
| | | - **å½å
¥/导å
¥å®ç**ï¼ä»
çç¹ä¸å
许ï¼äººå·¥å½å
¥ãExcel 导å
¥ç»ä¸å£å¾ï¼ã |
| | | - **æäº¤ç»æå®¡æ¹** åç½®æ ¡éªï¼ç¶æ=çç¹ä¸ï¼å·²æ â¥1 æ¡çç¹ç»æï¼æªæäº¤è¿ï¼`processInstanceId` 为空ï¼é²éå¤æäº¤ï¼ã |
| | | - **审æ¹éè¿**ï¼åä¸äºå¡ã失败æ´ä½åæ»åçç¹ä¸ï¼ï¼ç½®å·²å®æ â è¥å»ç»åå
è§£å» â éæ¡çç¹ç»ææ ¸éï¼å·®å¼ = å®ç â è´¦é¢ï¼>0 ççä½å
¥åºã<0 çäºä½åºåºï¼æ°é为è´ï¼ã=0 è·³è¿ï¼ä»¥çç¹ç»æåå¡«çåºåå®ä½ç²¾ç¡®æ ¸éï¼çæåºåæµæ°´ `bizType`=çç¹ã |
| | | - åâ宿çç¹âå
¬å¼å¨ä½ç§»é¤ï¼æ ¸éæ¹ç±å®¡æ¹éè¿äºä»¶é©±å¨ã |
| | | - 驳å䏿¹ä»»å¡ç¶æï¼ä¿æçç¹ä¸ï¼ï¼ä»
æ¸
æµç¨å®ä¾æ è®°ï¼å
许修æ¹å®çåéæã |
| | | |
| | | ### 3.4 æ°æ®ä¸æ¥å£ |
| | | - `mes_wm_stock_taking_task` å¢å `process_instance_id`ï¼ä»»å¡æ¥è¯¢/详æ
ååºè¿åè¯¥åæ®µï¼åç«¯æ®æ¤åºåâ审æ¹ä¸âä¸âå¯æäº¤å®¡æ¹âï¼ã |
| | | - æ¥å£ï¼`æäº¤çç¹ç»æå®¡æ¹`ï¼åæ® id + æµç¨å®ä¹ keyï¼ã`å¯å®¡æ¹æµç¨å®ä¹å表`ï¼åç±»ç¼ç `stock_taking_result_approve`ï¼ã |
| | | - BPM çå¬ï¼è§£æä¸å¡ä¸»é®=ä»»å¡ idï¼æ ¡éªä»»å¡åå¨ä¸çç¹ä¸ï¼æå®¡æ¹ç»ææ´æ°ï¼éè¿/驳å/åæ¶ï¼ã |
| | | |
| | | ## 4. M2 宿çç¹èªå¨è°åº¦ |
| | | |
| | | ### 4.1 ä¸å¡åºæ¯ |
| | | çç¹æ¹æ¡å¯å¼å¯â宿èªå¨çæâï¼ç³»ç»ææ¹æ¡é
ç½®ç卿ï¼cronï¼èªå¨å建çç¹ä»»å¡ï¼å°ç¹å³ç¨ï¼æ é人工éæå»ºåã |
| | | |
| | | ### 4.2 ä¸å¡è§å |
| | | - æ¹æ¡åæ®µï¼æ¯å¦èªå¨çæï¼`auto_generate`ï¼ãçæå¨æ cronï¼`generate_cron`ï¼Quartz 6 段ï¼ã䏿¬¡çææ¶é´ï¼`last_generate_time`ï¼ã |
| | | - å¼å¯èªå¨çææ¶å¿
é¡»é
ç½®åæ³ cronï¼æªå¼å¯åå¿½ç¥ cronã |
| | | - ä»
**å¯ç¨ç¶æ + å¼å¯èªå¨çæ + å·²é
ç½® cron** çæ¹æ¡å䏿«æã |
| | | - åå°å®æ¶ä»»å¡å¨æè§¦åï¼infra åå°é
ç½® cronï¼handler=æ¹æ¡çæ Job ç Bean åï¼å»ºè®®æ¯åé䏿¬¡ï¼ï¼æåæ¹æ¡â䏿¬¡çææ¶é´ + cronâ夿æ¯å¦å°æï¼å°ææçæã |
| | | - **é²éå¤**ï¼çæä»»å¡æåååäºå¡åå䏿¬¡çææ¶é´ï¼é¦æ¬¡æ«æä»
è®°å½åºçº¿æ¶é´ãä¸ç«å³çæï¼ä»ä¸ä¸å¨æå¼å§ï¼ã |
| | | - èªå¨çæçä»»å¡ï¼æ²¿ç¨æ¹æ¡çç±»å/ç²ç/å»ç»/卿çç¹æ¶é´æ®µï¼åç§°åæ¹æ¡åï¼çç¹äººåç³»ç»é»è®¤ç¨æ·ï¼ä»»å¡ç¼ç èµ°âçç¹ä»»å¡ç¼ç âèªå¨è§åï¼å建åå³ææ¹æ¡çæçç¹æç»è¡ï¼è稿æï¼ã |
| | | - åä¸ªæ¹æ¡çæå¤±è´¥ä¸å½±åå
¶å®æ¹æ¡ã |
| | | |
| | | ### 4.3 æ°æ®ä¸æ¥å£ |
| | | - `mes_wm_stock_taking_plan` å¢å `auto_generate` / `generate_cron` / `last_generate_time`ï¼æ¹æ¡æ°å¢/ä¿®æ¹ä¸æ¥è¯¢ååºæºå¸¦ã |
| | | - æä¾âç±æ¹æ¡æå¨æçæä»»å¡âçæå¡æ¹æ³ï¼ä¾ Job è°ç¨ï¼Job æ¬èº«ä¸ååºå/åæ®ä¸å¡ã |
| | | |
| | | ## 5. M3 æ¡ç / æ ç¾ / æ«ç å¢å¼º |
| | | |
| | | ### 5.1 ä¸å¡åºæ¯ |
| | | æä»å¨æ¡ç ä»âåä¸ä¸å¡ç¼ç âå级为å¯ç»åã坿å¾ã坿«ç åæ¥ï¼æ¯ææ ç¾æå°ä¸ PDA æ«ç ã |
| | | |
| | | ### 5.2 éæ±ç¹ |
| | | 1. **æ¡ç å
容ç»ååæ®µ**ï¼æ¡ç å
å®¹æ¨¡æ¿æ¯æå¤ä¸ªå ä½ç¬¦èªç±ç»åï¼å¦ä¸å¡ç¼ç + ç©æç¼ç + æ¹æ¬¡ + åºä½ + SN çï¼ï¼é
ç½®å°æ¡ç é
置项ï¼çææ¶ææ¨¡æ¿æ¸²æçå®å
容ã |
| | | 2. **æå¡ç«¯æå¾ / æå°**ï¼MES 模åå¼å
¥äºç»´ç /æ¡ç çæåºï¼zxingï¼å¨æå¡ç«¯æå¾ï¼æä¾æå°/é¢è§è½åãå¾çè¥éçåä¸å¾èµ°éä»¶ä¸é´è¡¨ï¼ä»
峿¶é¢è§å¯ç¨ Base64ï¼ä¸è½ä¸å¡è¡¨å¾çåã |
| | | 3. **æ«ç è§£æ**ï¼æ°å¢æå¡ç«¯æ¥å£ï¼å¯¹æ«ç å
容åç»æåè§£æï¼è¯å«ä¸å¡ç¼ç ä¸å
¶å®é®å¼ï¼åæ¥å¹¶è¿å对åºä¸å¡å¯¹è±¡ï¼åæ® / ç©æ / æ¹æ¬¡ / SN / åºä½çï¼ï¼ä¾æ«ç æªä¸ç§»å¨ç«¯è·³è½¬ãæ ¸éªã |
| | | |
| | | ### 5.3 éªæ¶è¦ç¹ |
| | | - ç»åæ¨¡æ¿æ¸²æå
容æ£ç¡®ï¼å«ä¸æ/大å°åï¼ã |
| | | - çæå¾åå¯è¢«æ«ç è¿åï¼ä¸è¿åç»æä¸æ¸²æå
容ä¸è´ã |
| | | - è§£ææ¥å£å¯¹æªè¯å«å
容ç»åºæç¡®é误èééé»ã |
| | | |
| | | ## 6. M4 SN åååºåè½»ééç¯ |
| | | |
| | | ### 6.1 ä¸å¡åºæ¯ |
| | | 对å¼å¯åºåå·ç®¡ççç©æï¼è¦æ±è½ç»è®°æ¯ä»¶ SN çåºå
¥ãæ¥çåä»¶å½åå¨åºä¸å»åï¼å¹¶æ¯æçç¹æ SN æ ¸å¯¹ã**åæ®è¡ä¸éæä¸º SN æç»**ï¼ä¿æè¡çº§æ°é管çï¼SN ä½ä¸ºç»è®°/æ ¸éè®°å½éç¯ï¼ã |
| | | |
| | | ### 6.2 éæ±ç¹ |
| | | 1. **SN å¨åºç¶æä¸ä½ç½®**ï¼`mes_wm_sn` è¡¥é½å¨åºç¶æãæå¨åºä½çåæ®µï¼DO ä¸è¡¨å段对é½ï¼ã |
| | | 2. **æµæ°´å¸¦ SN**ï¼åºåäºå¡/æµæ°´è¡¨å¢å `snCode` åï¼è®°å½è¯¥ç¬åºå
¥å¯¹åºçåºåå·ã |
| | | 3. **å
¥åºç»è®° SN**ï¼æ SN 管çç©æçå
¥åºäºå¡ç»è®° SNï¼ç½®ä¸ºå¨åºãè®°å½åºä½ï¼ã |
| | | 4. **åºåºæ ¸é SN**ï¼åºåºæ¶æ ¸éæå®å¨åº SNï¼ç½®ä¸ºåºåº/éå¨åºï¼ï¼ä¸åºåäºå¡åè®°å½ã |
| | | 5. **åä»¶å¨åº/å»åæ¥è¯¢**ï¼æ SN æ¥å½åå¨åºä½ç½®ãæè¿å»åæµæ°´ã |
| | | 6. **çç¹æ SN æ ¸å¯¹**ï¼æ SN 管çç©æççç¹æ¯æ SN ç²åº¦æ ¸å¯¹ï¼å¨çç¹ç»´åº¦å
æ ¡éªå®ç© SN ä¸å¨åº SNï¼ã |
| | | 7. **åºåå·ç®¡çæ è®°è´¯é**ï¼ç©æâæ¯å¦åºåå·ç®¡çï¼isSerialManagedï¼âéå¨ MDM APIï¼ç©æååº/å建 DTOï¼ä¸è´¯éï¼ä¾ MES 忍¡å夿ã |
| | | |
| | | ### 6.3 ä¸å¡è§å |
| | | - ä»
âæ SN 管çâçç©æç»è®°/æ ¸é SNã |
| | | - åä¸ SN å¨åºå¯ä¸ï¼åºåºæ ¸éç SN å¿
é¡»å¤äºå¨åºç¶æã |
| | | |
| | | ## 7. M5 ç¬ç«è®¾å¤å
¥åºå |
| | | |
| | | ### 7.1 ä¸å¡åºæ¯ |
| | | â设å¤å°è´¦å建å³èªå¨å
¥è®¾å¤ä»âè§£å³è®¾å¤å»ºæ¡£èå¨ï¼â设å¤å
¥åºåâåä½ä¸ºå¯è¿½æº¯ãå¯å®¡æ¹çå
¥åºåè¯ï¼ç¨äºè®¾å¤ç±å¤é¨è¿å
¥/æ£å¼å
¥ä»çä¸å¡ï¼æåççã |
| | | |
| | | ### 7.2 åæ®ç»æ |
| | | - **主表**ï¼åæ®ç¼ç ï¼èªå¨çæï¼æ°å¢â设å¤å
¥åºåç¼ç âè§åï¼ãåç§°ãå
¥åºæ¥æãæ¥æº/夿³¨ãç¶æãBPM æµç¨å®ä¾ç¼å·çã |
| | | - **æç»è¡**ï¼è®¾å¤ï¼å°è´¦ï¼â èªå¨å¸¦å
¥è®¾å¤ç©æ(itemId)ï¼ä»åº/åºåº/åºä½åºå®è®¾å¤ä»ä¸å
ç»ï¼æ°éé»è®¤ 1ï¼ååå¯å¤å°ï¼å¤æ³¨ã |
| | | |
| | | ### 7.3 æµç¨ä¸ç¶æï¼æ²¿ç¨æé¡¹å
¥åºæ¨¡æ¿ï¼ |
| | | ``` |
| | | è稿 PREPARE ââæäº¤å®¡æ¹(建BPM,ååæµç¨ç¼å·)ââⶠ审æ¹ä¸ APPROVING |
| | | 审æ¹éè¿ â å·²å®¡æ¹ APPROVED ââ宿å
¥åºâââ¶ å·²å®æ FINISHED |
| | | 驳å â è稿 PREPAREï¼å¯æ¹éæï¼ |
| | | 审æ¹/èç¨¿åæ¶ â 已忶 CANCELED |
| | | ``` |
| | | - 审æ¹éè¿è¿å
¥â坿§è¡å
¥åºâï¼åºåå¨ä½ä»
å¨â宿å
¥åºâæ§è¡ï¼éæç»è¡è®¾å¤ä» IN +1ï¼æ´æ°å°è´¦ä¸æµæ°´ï¼ä¸å¡ç±»åç¬ç«ï¼ã |
| | | |
| | | ### 7.4 ä¸å¡è§å |
| | | - æç»ä»
å¯éå·²å
³èç©æï¼æ `itemId`ï¼ç设å¤å°è´¦ã |
| | | - åºä½å¿
é¡»å±äºè®¾å¤ä»ä½ç³»ã |
| | | - 设å¤ç¼ç /ç©æå·²æåä¸å
许éå¤å»ºæ¡£ï¼æ²¿ç¨å°è´¦çº¦æï¼ã |
| | | - â宿å
¥åºâä»
已审æ¹ç¶æå¯æ§è¡ï¼ä¸ä»
æ§è¡ä¸æ¬¡ï¼åºå䏿µæ°´ç»ä¸èµ°åºåäºå¡æå¡ï¼ä¸ç´ååºå表ã |
| | | - ç¬ç« BPM æµç¨åç±»ä¸ç¬ç«åºåæµæ°´ä¸å¡ç±»åï¼ç¨äºè®¾å¤å
¥åºåæ®ä¸è®¾å¤å°è´¦èªå¨å
¥åºåºåï¼ã |
| | | |
| | | ## 8. è·¨åå
ä¾èµä¸å®æ½é¡ºåº |
| | | |
| | | ``` |
| | | M1 çç¹ç»æå®¡æ¹ BPMï¼æ¹æ¢æçç¹ä»»å¡ï¼å« DB å/é误ç /çå¬å¨/ç«¯ç¹æ¿æ¢ï¼ |
| | | âââ¶ M2 宿çç¹è°åº¦ï¼M1 ä»»å¡å建/ç¶ææºæ¯å
¶ä¸æ¸¸äº§ç©ï¼ |
| | | M3 æ¡ç æå¾/æ«ç /ç»ååæ®µï¼MES ä¾èµå¼å
¥ zxingï¼ |
| | | M4 SN è½»ééç¯ï¼å« MDM-API åæ®µè´¯éï¼ |
| | | M5 设å¤å
¥åºåï¼å¯å¤ç¨æé¡¹å
¥åºåæ®éª¨æ¶ï¼ |
| | | M6 æ¶å°¾ï¼å
¨éç¼è¯ãdocs èè°ææ¡£ãç»ä¸ç«¯å°ç«¯åçï¼å« DB èæ¬æ§è¡ãBPM åç±»ä¸æµç¨å®ä¹æå·¥é¨ç½²ï¼ |
| | | ``` |
| | | |
| | | ## 9. å¾
æ¾æ¸
/å³ç项ï¼å®ç°åéç¡®è®¤ï¼ |
| | | - M5 ç¬ç«è®¾å¤å
¥åºåæ¯å¦éè¦ä¸è®¾å¤å°è´¦çâèªå¨å
¥åºâå å ï¼å³è®¾å¤æ¢éå°è´¦èªå¨å
¥åºï¼åå¯åç¬èµ°å
¥åºåï¼ï¼æèªå¨å
¥åºæ¶æä¸ºä»
éå
¥åºåæ§è¡ã |
| | | |
| | | ## éï¼å®æ½ç¶æè¿½è¸ªï¼ä¾ç»ä½åºçº¿ï¼ |
| | | |
| | | | åå
| ç¶æ | 夿³¨ | |
| | | |------|------|------| |
| | | | M1 çç¹ç»æå®¡æ¹ BPM | 代ç 宿ï¼ç¼è¯éè¿ | é误ç /DO/RespVO/Mapper/æ¥å£ä¸å®ç°/çå¬å¨/ç«¯ç¹æ¿æ¢å·²è½å°ï¼DB èæ¬å·²åå¾
æ§è¡ | |
| | | | M2 宿çç¹è°åº¦ | é¨åå®æï¼æªç¼è¯ | æ¹æ¡å段/æ ¡éª/æ¥è¯¢ä¸ Service å·²æ¹ï¼ä»»å¡ä¾§âææ¹æ¡çæä»»å¡âãJobãDB èæ¬æªå | |
| | | | M3 æ¡ç ç»å/æå¾/æ«ç | æªå¼å§ | å¾
zxing å¼å
¥ãæ¨¡æ¿æ¸²æãè§£ææ¥å£ | |
| | | | M4 SN è½»ééç¯ | æªå¼å§ | å¾
è¡¨åæ®µ/ç»è®°æ ¸é/æ¥è¯¢/API è´¯é | |
| | | | M5 设å¤å
¥åºå | æªå¼å§ | å¾
æ°åæ®å
¨æ ä¸ BPM | |
| | | | M6 æ¶å°¾ | æªå¼å§ | å
¨éç¼è¯ + docs + åç + DB/æµç¨é¨ç½² | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 设å¤å
¥åºå - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - 设å¤å
¥åºåå表ï¼é¡µé¢è·¯å¾ä¸è·¯ç±å¾
å端补å
ï¼ |
| | | - 设å¤å
¥åºå详æ
/ ç¼è¾ï¼ä¸»åä¿¡æ¯ + æç»è¡ï¼ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. 设å¤å°è´¦ -> 设å¤å
¥åºåæç»è¡ï¼ä»ã设å¤å°è´¦ãé¡µéæ©è®¾å¤åï¼`machineryId`ã`itemId`ï¼è®¾å¤ç©æç¼å·ï¼èªå¨å¸¦å
¥å¹¶ä¼ å
¥ `POST /mes/wm/equipment-receipt-line/create`ï¼ç©æç¼ç /åç§°/è§æ ¼/åä½ç±å端æ `itemId` 宿¶æ¼æ¥è¿åã |
| | | 2. 设å¤å
¥åºåå建 -> ç¼å·ï¼`code` å¨å端ç¼è¾é¡µå¯è°ç¨èªå¨ç¼ç è§åï¼`WM_EQUIP_RECEIPT_CODE`ï¼çæï¼ä¼ ç» `POST /mes/wm/equipment-receipt/create`ã |
| | | 3. å®¡æ¹æµç¨ï¼ä¸»ç®¡åæäº¤å®¡æ¹åï¼èµ° BPMï¼å®¡æ¹éè¿åç±ãæ§è¡å
¥åºãææç»è¡æåºå®ã设å¤ä»ä¸å
ç»ãï¼`SYS-EQUIPMENT` / `SYS-EQUIP-LOC-01` / `SYS-EQUIP-BIN-01`ï¼å
¥è®¾å¤ä»ãæ°éé»è®¤ 1ã |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/equipment-receipt/create | å建设å¤å
¥åºåï¼èç¨¿ï¼ | |
| | | | PUT | /mes/wm/equipment-receipt/update | ä¿®æ¹è®¾å¤å
¥åºåï¼ä»
èç¨¿ï¼ | |
| | | | DELETE | /mes/wm/equipment-receipt/delete | å é¤è®¾å¤å
¥åºåï¼ä»
è稿ï¼çº§èå è¡ï¼ | |
| | | | GET | /mes/wm/equipment-receipt/get?id= | è·å¾è®¾å¤å
¥åºå详æ
| |
| | | | GET | /mes/wm/equipment-receipt/page | 设å¤å
¥åºåå页 | |
| | | | PUT | /mes/wm/equipment-receipt/submit-approval?id=&processDefinitionKey= | æäº¤ BPM 审æ¹ï¼è稿â审æ¹ä¸ï¼ | |
| | | | GET | /mes/wm/equipment-receipt/approval-process-list | è·å¾è®¾å¤å
¥åºå¯éæµç¨å®ä¹å表 | |
| | | | PUT | /mes/wm/equipment-receipt/finish?id= | æ§è¡å
¥åºï¼å·²å®¡æ¹â已宿ï¼éè¡å
¥è®¾å¤ä»ï¼ | |
| | | | PUT | /mes/wm/equipment-receipt/cancel?id= | åæ¶è®¾å¤å
¥åºå | |
| | | | POST | /mes/wm/equipment-receipt-line/create | æ°å¢æç»è¡ | |
| | | | PUT | /mes/wm/equipment-receipt-line/update | ä¿®æ¹æç»è¡ | |
| | | | DELETE | /mes/wm/equipment-receipt-line/delete?id= | å 餿ç»è¡ | |
| | | | GET | /mes/wm/equipment-receipt-line/get?id= | è·å¾æç»è¡ | |
| | | | GET | /mes/wm/equipment-receipt-line/list-by-receipt-id?receiptId= | æä¸»åè·å¾æç»è¡å表 | |
| | | | GET | /mes/wm/equipment-receipt-line/page | æç»è¡å页 | |
| | | |
| | | **请æ±åæ°ï¼create/updateï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | code | String | æ¯ | åæ®ç¼ç ï¼å¯èªå¨ç¼ç çæï¼ | |
| | | | name | String | å¦ | åæ®åç§° | |
| | | | receiptDate | datetime | æ¯ | å
¥åºæ¥æ | |
| | | | source | String | å¦ | å
¥åºæ¥æº | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **请æ±åæ°ï¼æç»è¡ create/updateï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | receiptId | Long | æ¯ | å
¥åºåç¼å· | |
| | | | machineryId | Long | æ¯ | 设å¤å°è´¦ç¼å· | |
| | | | itemId | Long | æ¯ | 设å¤ç©æç¼å·ï¼ä»è®¾å¤å°è´¦å¸¦å
¥ï¼ | |
| | | | quantity | decimal | æ¯ | å
¥åºæ°éï¼é»è®¤ 1ï¼å¯ååå¤å°ï¼ | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **ååºå段æ°å¢ï¼ä¸»åï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | processInstanceId | String | BPM æµç¨å®ä¾ç¼å·ï¼é空表示已æäº¤å®¡æ¹ | |
| | | |
| | | **ååºåæ®µï¼æç»è¡ï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | machineryId / machineryCode / machineryName | Long/String | 设å¤å°è´¦ä¿¡æ¯ | |
| | | | itemId / itemCode / itemName / specification / unitMeasureName | Long/String | ç©æååä½ä¿¡æ¯ | |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | åæ®ç¼ç /åç§°/å
¥åºæ¥æ/æ¥æº | å表ã详æ
| 主ååºç¡ä¿¡æ¯ | |
| | | | ç¶æ | å表ã详æ
| 0 è稿 / 2 审æ¹ä¸ / 3 å·²å®¡æ¹ / 4 已宿 / 5 已忶 | |
| | | | processInstanceId | 详æ
| æå¼æ¶å端å±ç¤ºãæ¥çå®¡æ¹æµç¨å®ä¾ãå
¥å£ | |
| | | | æç»è¡è¡¨æ ¼ | 详æ
ãç¼è¾ | å±ç¤ºè®¾å¤ãç©æãæ°éãåä½ | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | æç»è¡æ°å¢ | å¿
须鿩已å
³èç©æï¼itemId é空ï¼ç设å¤ï¼å¦åæ¥ãæéè®¾å¤æªå
³èç©æã | |
| | | | æ°é | å¿
é¡» > 0ï¼é»è®¤ 1 | |
| | | | ç¼è¾ | ä»
èç¨¿ç¶æä¸å¯å¢å æ¹ä¸»å䏿ç»è¡ | |
| | | | æäº¤å®¡æ¹ | è³å°æä¸æ¡æç»è¡ï¼æäº¤åè¿å
¥å®¡æ¹ä¸ï¼ä¸å¯åç¼è¾ | |
| | | | 审æ¹ç»æ | éè¿â已审æ¹ï¼é©³åâåèç¨¿å¯æ¹éæï¼åæ¶â已忶 | |
| | | | æ§è¡å
¥åº | ä»
已审æ¹å¯æ§è¡ï¼éè¡ä¸ºæ¯å°è®¾å¤å¨è®¾å¤ä» +1 åºåå¹¶ååºåæµæ°´ï¼å®æåä¸å¯é夿§è¡ | |
| | | | åºåçæ | 审æ¹éè¿ä¸ç«å³æ£åºåï¼ä»
ãæ§è¡å
¥åºãæå
¥è®¾å¤ä» | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - æç»è¡æ«ç«¯åºå®å
¥ã设å¤ä»ä¸å
ç»ãï¼å端æ éæäº¤ä»åº/åºåº/åºä½å段ã |
| | | - åºåæ°éååéè¿æ¢æåºå/åºåæµæ°´æ¥è¯¢æ¥å£æ¥çï¼æ¬åæ®ä¸å¤å¶åºåæ°æ®ã |
| | | - BPM æµç¨å®ä¹éå¨åå°ä»¥åç±» `equipment_receipt_approve` æå·¥é¨ç½²åï¼`approval-process-list` æä¼è¿åå¯ç¨æµç¨ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # MES ä»å¨åè½ - å端æ¹é è¿åº¦è®°å½ |
| | | |
| | | > æ¬æè®°å½"ç»§ç»ä¿®æ¹åå端"æ¹éè¡¥ç çåç«¯å®æ½è¿åº¦ï¼2026-09-08ï¼ï¼ä½ä¸ºè·¨å¤©äº¤æ¥ä¾æ®ã |
| | | > å端 M1~M5 代ç å·²å
¨é¨å®æå¹¶ç¼è¯éè¿ï¼BPM æµç¨ä¸èåæéå·² DB é¨ç½²ã |
| | | > æ¬æä»¶ä»
è®°å½**å端ï¼mom-pro2-beforeï¼**æ¹å¨ä¸å¾
åã |
| | | |
| | | ## 已宿ï¼2026-09-08ï¼ |
| | | |
| | | ### 1. éç¨ BPM æµç¨éæ©å¼¹çªç»ä»¶ï¼æ°å»ºï¼ |
| | | |
| | | - `mom-pro2-before/src/views/wls/components/process-select-modal.vue` |
| | | - ç± mes/pd/project ç process-select-modal æ³åèæ¥ï¼æäº¤å½æ°éè¿ `modalApi.getData({ id, processList, submitFn })` ä¼ å
¥ï¼ä¸åæ®ä¸åç» M1/M5 åå¯å¤ç¨ã |
| | | |
| | | ### 2. é¶æ®µ1 ä¸åæ® BPM æäº¤åçº§ï¼æé¡¹å
¥åº/æé¡¹åºåº/ä¾åºåéè´§ï¼ |
| | | |
| | | **API å±ï¼åæ°å¢ processInstanceId åæ®µï¼ï¼** |
| | | |
| | | | æä»¶ | æ¹å¨ | |
| | | |------|------| |
| | | | `src/api/mes/wm/miscreceipt/index.ts` | `getMiscReceiptApproveProcessList()`ã`submitMiscReceiptApproval(id, key)`ãæ¥å£å `processInstanceId` | |
| | | | `src/api/mes/wm/miscissue/index.ts` | `getMiscIssueApproveProcessList()`ã`submitMiscIssueApproval(id, key)`ãæ¥å£å `processInstanceId` | |
| | | | `src/api/mes/wm/returnvendor/index.ts` | `getReturnVendorApproveProcessList()`ã`submitReturnVendorApproval(id, key)`ãæ¥å£å `processInstanceId` | |
| | | |
| | | > æ§çæ å `submitMiscReceipt(id)` çå·²å é¤ï¼å端 submit æ¥å£ç°å¨è¦æ± `processDefinitionKey` åæ°ï¼ã |
| | | |
| | | **页é¢å±ï¼ä¸ä¸ªåæ®æ¨¡å¼ä¸è´ï¼ï¼** |
| | | |
| | | - `index.vue`ï¼æ°å¢ `useRouter` + ProcessSelectModal æè½½ï¼è¡æä½å¢å |
| | | - âæäº¤å®¡æ¹âï¼PREPARE ç¶æï¼å
æ¥æµç¨å表åå¼¹çªéæ©ï¼ |
| | | - âæ¥ç审æ¹âï¼APPROVING ç¶æï¼`router.push` å° `BpmProcessInstanceDetail`ï¼ |
| | | - `modules/form.vue`ï¼ç§»é¤è¡¨åå
âæäº¤âæé®å `handleSubmit`ï¼æäº¤æ¹ç±åè¡¨è¡æä½è§¦åï¼è§é¿äºæ¬¡ç¹æäº¤çæ§é»è¾ï¼ |
| | | - æéå符串æ DB èåï¼ |
| | | - æé¡¹å
¥åºç¨åå·æé `mes:wm:misc-receipt:submit` / `:query` |
| | | - æé¡¹åºåºãä¾åºåéè´§ç¨ç横线æéï¼å¤ç¨ `mes:wm-misc-issue:update` / `mes:wm-return-vendor:update`ï¼æ ç¬ç« submit æé®èåï¼ |
| | | |
| | | **æä¸¾è¡¥é½ï¼** |
| | | |
| | | - `src/packages/constants/src/biz-mes-enum.ts`ï¼`MesWmMiscReceiptStatusEnum`ã`MesWmMiscIssueStatusEnum` å¢å `APPROVING`ï¼=2ï¼ã |
| | | |
| | | **æ°æ®åºåå
¸ï¼å·²æ§è¡å° mom-xgdlï¼ï¼** |
| | | |
| | | - `mes_wm_misc_receipt_status`ã`mes_wm_misc_issue_status` è¡¥ value=2 â审æ¹ä¸âï¼`system_dict_data` id 1065512 / 1065513ï¼ï¼åå¼ä¸º 3/4/5 çæåºèªå¨é¡ºå»¶ã |
| | | |
| | | ## ææ¥å¾
åï¼æªå¼å§ï¼ |
| | | |
| | | | # | ä»»å¡ | 主è¦å
容 | |
| | | |---|------|----------| |
| | | | M1 | çç¹ä»»å¡é¡µ BPM å级ï¼ç»æå®¡æ¹ï¼ | ç§»é¤âæ§è¡çç¹(finish)âæé®ä¸ execute 表åç±»åï¼`æäº¤`æé®ææ¡æ¹âå¼å§çç¹âï¼æ°å¢âæäº¤ç»æå®¡æ¹â(submit-approval) + âæ¥ç审æ¹âï¼API å `submitStockTakingApproval`/`getStockTakingApproveProcessList`/`processInstanceId` | |
| | | | M2 | çç¹æ¹æ¡è°åº¦å段 | 表åå `autoGenerate` Switch + `generateCron` Inputï¼ä¾èµ autoGenerateï¼helpMessage æç¤ºèµ° infra 宿¶ä»»å¡ï¼ï¼API å ä¸ä¸ªå段 | |
| | | | M3 | æ¡ç æ«ç è§£æ + æå¾é¢è§ | barcode 页工å
·æ å âæ«ç è§£æâï¼API å `renderBarcodeImage`(POST) / `parseBarcodeContent`(POST)ï¼æ°å»º scan-modal | |
| | | | M4 | SN å¨åºåä»¶/åºå
¥åº/详æ
| index.vue å Tabsï¼åç»/å¨åºåä»¶ï¼ï¼æ°å¢ in-stock / out-stock / sn-detail å¼¹çªï¼API å `registerSnInStock`/`outboundSn`/`getSnDetail`/`getSnInStockPage`ï¼å `MesWmSnStatusEnum` | |
| | | | M5 | 设å¤å
¥åºå页é¢ï¼æ°é¡µé¢ï¼ | æ°å»º `wls/equipmentreceipt/index.vue` + data.ts + modules/{form,line-list,line-form}.vueï¼API 屿°å»º equipmentreceipt/index.ts + line.tsï¼å `MesWmEquipmentReceiptStatusEnum` + `MesAutoCodeRuleCode.WM_EQUIPMENT_RECEIPT_CODE`ï¼è¡ç¨ DvMachinerySelectï¼finish åºå®è®¾å¤ä»ä¸å
ç» | |
| | | | æ¶å°¾ | typecheck / build | `pnpm typecheck` ä¿®å¤ç±»åé误ï¼å¿
è¦æ¶ `pnpm build` | |
| | | |
| | | ## ææ¥å¼å§åéç¥ |
| | | |
| | | 1. **M5 å置缺å£**ï¼`src/api/mes/dv/machinery/index.ts` ç `Machinery` ç±»åæ²¡æ `itemId` åæ®µï¼å端 RespVO å·²æï¼ï¼M5 è¡è¡¨åä¾èµ DvMachinerySelect ç change äºä»¶æºå¸¦ itemId èªå¨å¸¦å
¥ââéå
ç»å端类åè¡¥ `itemId?: number`ã |
| | | 2. **æéæ ¼å¼**ï¼equipment-receipt èåç¨åå·æé `mes:wm:equipment-receipt:query/create/update/delete/submit/finish/cancel`ï¼M1 stock-taking-task ç submit-approval/cancel å¤ç¨ `mes:wm-stock-taking-task:update`ï¼M3 barcode å¤ç¨ `mes:wm-barcode:query`ã |
| | | 3. **å·²é¨ç½² BPM æµç¨ key**ï¼`misc_receipt_approve` / `misc_issue_approve` / `return_vendor_approve` / `item_receipt_approve` / `stock_taking_result_approve` / `equipment_receipt_approve`ã |
| | | 4. **å端éå¯**ï¼48080 ééå¯å è½½æ°ä»£ç åæå¯ç«¯å°ç«¯åçï¼ç¨æ· dev è¿ç¨ï¼é坿¶æºç±ç¨æ·å³å®ï¼ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # SN åååºåé¾ï¼è½»ééç¯ï¼- å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - SN ç å表 / åä»¶å¨åºæ¥è¯¢é¡µ |
| | | - SN å件详æ
页ï¼å¨åº / å»åï¼ |
| | | - ä»åºå
¥åºãåºåºï¼ç»è®° SNï¼æä½é¡µ |
| | | - ç©æä¸»æ°æ®ï¼SN å¼å
³é
ç½®ï¼ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. ç©æä¸»æ°æ® -> SN å¼å
³ï¼ç©æè¥å¯ç¨ãåºåå·ç®¡çãï¼`isSerialManaged`ï¼ï¼æå
è®¸è¯¥ç©æç»è®° SN å
¥åº/åºåºã |
| | | 2. å
¥åºç»è®° SNï¼ç¨æ·æ«ç /æå·¥å½å
¥ `code`ï¼éæ©ç©æãä»åº/åºåº/åºä½ï¼è°ç¨ `POST /mes/wm/sn/in-stock`ï¼å端å
建 IN åºåäºå¡åæ´æ° SN 为ãå¨åºãå¹¶è½åºä½ã`snCode` åå
¥åºåæµæ°´ï¼`mes_wm_transaction.sn_code`ï¼ã |
| | | 3. åºåºæ ¸é SNï¼å½å
¥ SN ç ä¸ç©æï¼è°ç¨ `POST /mes/wm/sn/out-stock`ï¼å端以 SN è®°å½çåºåä½ç½®å»º OUT äºå¡ï¼å¹¶æ SN ç½®ãå·²åºåºããæ¸
空åºä½ã |
| | | 4. åä»¶æ¥è¯¢ï¼æ `code` è° `GET /mes/wm/sn/detail`ï¼è¿å SN å¨åºç¶æãå½åä½ç½®ï¼ä»¥åæè¿ä¸ç¬åºåæµæ°´çç±»å/æ°é/ä¸å¡åæ®/æ¶é´ï¼ç¨äºæ ¸å¯¹å»åã |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/sn/in-stock | SN ç»è®°å
¥åº | |
| | | | POST | /mes/wm/sn/out-stock | SN åºåºæ ¸é | |
| | | | GET | /mes/wm/sn/detail?code= | SN å件详æ
ï¼å¨åºç¶æ + æè¿æµæ°´å»åï¼ | |
| | | | GET | /mes/wm/sn/in-stock-page | åä»¶å¨åºå页æ¥è¯¢ï¼æç¶æ/åºä½/ç©æ/æ¹æ¬¡è¿æ»¤ï¼ | |
| | | |
| | | **请æ±åæ°ï¼in-stockï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | code | String | æ¯ | SN ç | |
| | | | itemId | Long | æ¯ | ç©æç¼å·ï¼é¡»å¯ç¨åºåå·ç®¡çï¼ | |
| | | | warehouseId | Long | æ¯ | ä»åº | |
| | | | locationId | Long | æ¯ | åºåº | |
| | | | areaId | Long | æ¯ | åºä½ | |
| | | | batchCode | String | å¦ | æ¹æ¬¡å· | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **请æ±åæ°ï¼out-stockï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | code | String | æ¯ | SN ç | |
| | | | itemId | Long | æ¯ | ç©æç¼å· | |
| | | | remark | String | å¦ | 夿³¨ | |
| | | |
| | | **ååºå段ï¼detailï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | code / status | String/Integer | SN ç ãç¶æï¼1 å¨åº / 2 å·²åºåºï¼ | |
| | | | warehouseId/locationId/areaId | Long | å¨åºä½ç½®ï¼å·²åºåºä¸ºç©ºï¼ | |
| | | | lastTransactionType / TypeName | Integer/String | æè¿ä¸ç¬æµæ°´æ¹åï¼1 å
¥åº / 2 åºåºï¼ | |
| | | | lastQuantity / lastBizType / lastBizCode / lastTime | decimal/Integer/String/datetime | æè¿æµæ°´æ°éãä¸å¡ç±»åãä¸å¡åæ®ç¼ç ãæ¶é´ | |
| | | |
| | | **ååºå段æ°å¢ï¼ç©æç¸å
³ VOï¼MdmItemRespDTO / MdmItemSaveReqVO çï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | isSerialManaged | Boolean | æ¯å¦åºåå·ç®¡çå¼å
³ï¼create/read/update 忝æï¼ | |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | SN ç / ç©æ / æ¹æ¬¡ | å表ã详æ
| åä»¶æ è¯ | |
| | | | å¨åºç¶æ | å表ã详æ
| å¨åº / å·²åºåº | |
| | | | å¨åºåºä½ | å表ã详æ
| ä»åº/åºåº/åºä½ | |
| | | | æè¿å»å | 详æ
| æè¿æµæ°´å¯¹åºçä¸å¡åæ®ç + æ¶é´ | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | æªå¯ç¨åºåå· | ç©ææªå¼ `isSerialManaged` æ¶ç»è®° SN æ¥é | |
| | | | éå¤å
¥åº | å·²ãå¨åºãç SN 忬¡å
¥åºæ¥éï¼é¡»å
åºåº | |
| | | | åºåºåæ | ä»
ãå¨åºãä¸ä½ç½®é空å¯åºåºï¼SN ä¸ç©æä¸å¹é
/ ä½ç½®ä¸ç¬¦ä¼æ¥é | |
| | | | åºå
¥åºæµè½¬ | in-stock 建 IN äºå¡ãout-stock 建 OUT äºå¡ï¼åèµ°åºåæµæ°´å¹¶æ´æ°åºåå°è´¦ | |
| | | | åå SN æº¯æº | éè¿ `mes_wm_transaction.sn_code` å
³èæµæ°´ï¼å¯æ SN 追溯åå²è¿åº | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - SN ç»è®°/æ ¸éæ¯ãè½»éãè½åï¼åæ®è¡ä¸ææ SN æç»ï¼SN ç¬ç«ç®¡çå¨ `mes_wm_sn`ã |
| | | - åºåºä½ç½®åèª SN è®°å½çåºåä½ç½®ï¼å端æ ééå¤æäº¤åºä½ã |
| | | - ç©æ `isSerialManaged` å¼å
³å¨ MDM ç©æä¸»æ°æ®ç»´æ¤ï¼MES 读ååä¸ `mdm_item` æ°æ®ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 宿çç¹èªå¨è°åº¦ - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - çç¹æ¹æ¡å表页ï¼`wls/stocktaking/plan`ï¼ |
| | | - çç¹æ¹æ¡ç¼è¾è¡¨åï¼`wls/stocktaking/plan` æ°å»º/ç¼è¾å¼¹çªï¼ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. çç¹æ¹æ¡å¼å¯ã宿èªå¨çæãå¹¶é
ç½®çæå¨æ cron åï¼åå°å®æ¶ä»»å¡ï¼æ¯å¨ææ«æãé»è®¤æ¯åé䏿¬¡ï¼æåæ¹æ¡ã䏿¬¡çææ¶é´ + cronã夿æ¯å¦å°æã |
| | | 2. å°æåç³»ç»èªå¨ææ¹æ¡å建çç¹ä»»å¡ï¼è稿æï¼åç§°åæ¹æ¡åï¼æ²¿æ¹æ¡çç±»å/ç²ç/å»ç»/卿çç¹æ¶é´æ®µï¼ï¼å¹¶ç«å³ææ¹æ¡çæçç¹æç»è¡ã |
| | | 3. æ¹æ¡é¦æ¬¡å¼å¯åç³»ç»ä¼è®°å½åºçº¿æ¶é´ï¼ä»ä¸ä¸ä¸ªå¨æèµ·å¼å§çæï¼ä¸ä¼å¼å¯å½å¤©ç«å³çæã |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/stocktaking-plan/create | å建çç¹æ¹æ¡ | |
| | | | PUT | /mes/wm/stocktaking-plan/update | ä¿®æ¹çç¹æ¹æ¡ | |
| | | | GET | /mes/wm/stocktaking-plan/get | è·å¾çç¹æ¹æ¡è¯¦æ
| |
| | | | GET | /mes/wm/stocktaking-plan/page | è·å¾çç¹æ¹æ¡å页 | |
| | | |
| | | **请æ±åæ°æ°å¢ï¼å建/ä¿®æ¹ ReqVOï¼ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | autoGenerate | Boolean | å¦ | æ¯å¦å®æèªå¨çæçç¹ä»»å¡ï¼é»è®¤ falseï¼ | |
| | | | generateCron | String | autoGenerate=true æ¶å¿
å¡« | èªå¨çæå¨æ cron 表达å¼ï¼Quartz 6 段ï¼ï¼å¦ `0 0 8 * * ?` 表示æ¯å¤© 8 ç¹ | |
| | | |
| | | **ååºå段æ°å¢ï¼è¯¦æ
/å页 RespVOï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | autoGenerate | Boolean | æ¯å¦å®æèªå¨çæçç¹ä»»å¡ | |
| | | | generateCron | String | èªå¨çæå¨æ cron è¡¨è¾¾å¼ | |
| | | | lastGenerateTime | LocalDateTime | 䏿¬¡èªå¨çææ¶é´ï¼å端ååï¼ä»
å±ç¤ºï¼ | |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | autoGenerate | å表ã表å | å¼å
³/å¤éæ¡ | |
| | | | generateCron | 表å | autoGenerate å¼å¯æ¶å¿
å¡«å¹¶æ¾ç¤ºï¼ä¸åæ³æ¶å端æ¥éãçæå¨æ cron 表达å¼ä¸åæ³ã | |
| | | | lastGenerateTime | å表ã详æ
| åªè¯»å±ç¤ºï¼å端ä¸å¯ç¼è¾ | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | å¼å¯èªå¨çæ | autoGenerate=true æ¶ generateCron å¿
å¡«ï¼å¦åæ¥éãå¼å¯å®æèªå¨çææ¶å¿
é¡»é
ç½®çæå¨æ cronãï¼ | |
| | | | æªå¼å¯ | autoGenerate=false æ¶å¿½ç¥ generateCron | |
| | | | cron æ ¡éª | ä½¿ç¨ Quartz 6 段 cronï¼ä¸åæ³ç»ãçæå¨æ cron 表达å¼ä¸åæ³ãé误 | |
| | | | çæèå´ | ä»
ãå¯ç¨ç¶æ + å¼å¯èªå¨çæ + å·²é
ç½® cronãçæ¹æ¡å䏿«æ | |
| | | | é²éå¤ | çæä»»å¡æåååäºå¡åå䏿¬¡çææ¶é´ï¼é¿å
å卿éå¤çæ | |
| | | | 馿¬¡å¯ç¨ | 馿¬¡æ«æä»
è®°å½åºçº¿æ¶é´ä¸çæï¼ä»ä¸ä¸å¨æå¼å§ | |
| | | | é¨å失败 | åä¸ªæ¹æ¡çæå¤±è´¥ä¸å½±åå
¶å®æ¹æ¡ | |
| | | | 任塿¥ç | èªå¨çæçä»»å¡å¯å¨çç¹ä»»å¡å表æ¥çï¼æ¥æºæ¹æ¡ç¼ç /åç§°èªå¨å¸¦å
¥ | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - èªå¨çææ¯åå°å®æ¶ä»»å¡è¡ä¸ºï¼å端æ é触åï¼èè°æ¶éªè¯æ¹æ¡å段ä¿å/åæ¾æ£ç¡®å³å¯ã |
| | | - è¥ééªè¯çæææï¼å¯å° cron é
置为ç卿ï¼å¦æ¯åé `0 */1 * * * ?`ï¼ï¼ä¿åå¯ç¨åå¨çç¹ä»»å¡å表è§å¯èªå¨åºç°è稿任å¡ã |
| | | - åç»è¥å¨ WMSï¼mom-pro2-beforeï¼çç¹æ¹æ¡è¡¨åä¸å¢å 以ä¸ä¸¤ä¸ªå段ï¼ä»
ééæ¹æ¡ä¿åä¸åæ¾ï¼æ æ°å¢é¡µé¢ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # çç¹ç»æå®¡æ¹ BPM - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - çç¹ä»»å¡å表页ï¼`wls/stocktaking/task`ï¼ |
| | | - çç¹ä»»å¡è¯¦æ
/å®çå½å
¥é¡µï¼`wls/stocktaking/task` 详æ
ã`result-form` å½å
¥å®çï¼ |
| | | |
| | | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å
¥ |
| | | |
| | | 1. å建çç¹ä»»å¡ï¼è稿ï¼âãå¼å§çç¹ãï¼ä»»å¡è¿å
¥çç¹ä¸ï¼å¯å½å
¥/导å
¥å®çã |
| | | 2. å½å®å®ç âãæäº¤ç»æå®¡æ¹ãï¼è°ç¨æäº¤å®¡æ¹æ¥å£ï¼ééæµç¨å®ä¹ï¼ï¼ä»»å¡è¿å
¥å®¡æ¹ä¸ï¼å¸¦æµç¨å®ä¾ç¼å·ï¼ã |
| | | 3. 审æ¹éè¿ â ç³»ç»èªå¨è§£å»å¹¶æ ¸éçç/çäºå·®å¼ï¼ä»»å¡åä¸ºå·²å®æã |
| | | 4. 审æ¹é©³å â ä»»å¡ä»ä¸ºçç¹ä¸ï¼æ¸
餿µç¨å®ä¾ç¼å·ï¼ï¼å¯ä¿®æ¹å®çåéæ°æäº¤ã |
| | | 5. 审æ¹åæ¶ / åæ¶ä»»å¡ â ä»»å¡åä¸ºå·²åæ¶ï¼å»ç»åºåè§£å»ã |
| | | |
| | | ## API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | /mes/wm/stocktaking-task/approval-process-list | è·å¾çç¹ç»æå¯ç¨çå®¡æ¹æµç¨å®ä¹å表 | |
| | | | PUT | /mes/wm/stocktaking-task/submit-approval | æäº¤çç¹ç»æå®¡æ¹ | |
| | | | PUT | /mes/wm/stocktaking-task/cancel | åæ¶çç¹ä»»å¡ | |
| | | |
| | | > 注æï¼åã宿çç¹ãæ¥å£ `/mes/wm/stocktaking-task/finish` 已移é¤ï¼æ ¸éæ¹ç±å®¡æ¹éè¿äºä»¶é©±å¨ï¼ä¸åæä¾å®æçç¹æé®ã |
| | | |
| | | **æäº¤å®¡æ¹è¯·æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | id | Long | æ¯ | çç¹ä»»å¡ç¼å· | |
| | | | processDefinitionKey | String | æ¯ | æµç¨å®ä¹ Keyï¼ä»å®¡æ¹æµç¨å®ä¹åè¡¨éæ©ï¼ | |
| | | |
| | | **å®¡æ¹æµç¨å®ä¹å表ååºï¼** `{ "code": 0, "data": [{ "key": "stock_taking_result_approve", "name": "xxx", ... }] }`ï¼åå
¶ä¸ç `key` ä½ä¸ºæäº¤å®¡æ¹åæ°ã |
| | | |
| | | **ååºå段æ°å¢ï¼ä»»å¡å表/详æ
RespVOï¼ï¼** |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | processInstanceId | String | BPM æµç¨å®ä¾ç¼å·ï¼é空表示已æäº¤å®¡æ¹ï¼å¯ç¹å»æ¥ç审æ¹è¿åº¦ | |
| | | |
| | | ## åæ®µå±ç¤ºè§å |
| | | |
| | | | åæ®µ | å±ç¤ºä½ç½® | 说æ | |
| | | |------|----------|------| |
| | | | processInstanceId | å表ã详æ
| éç©ºæ¶æ¾ç¤ºã审æ¹ä¸/æ¥ç审æ¹ãå
¥å£ï¼ä¸ºç©ºæ¶æ¾ç¤ºãå¯æäº¤å®¡æ¹ã | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | æäº¤åç½®æ ¡éª | ä»
çç¹ä¸ä»»å¡å¯æäº¤ï¼éå·²æ >=1 æ¡çç¹ç»æï¼æªæäº¤è¿ï¼processInstanceId 为空ï¼é²éå¤æäº¤ | |
| | | | 审æ¹éè¿ | ç½®å·²å®æ + è§£å» + èªå¨æ ¸éå·®å¼ï¼åä¸äºå¡ï¼å¤±è´¥æ´ä½åæ»ä»ä¸ºçç¹ä¸ï¼ | |
| | | | 审æ¹é©³å | ä»»å¡ä¿æçç¹ä¸ï¼æ¸
processInstanceIdï¼å
许修æ¹å®çåéæ | |
| | | | 审æ¹åæ¶ | ä»»å¡å已忶ï¼è§£å» | |
| | | | å¼å§çç¹åç½® | ä»
è稿å¯å¼å§ï¼çç¹è¡é空ï¼å¼å¯å»ç»åå»ç»å¯¹åºåºå | |
| | | | å®æè·¯çº¿ | å®æåæ ã宿çç¹ãæä½ï¼æ ¸éèªå¨æ§è¡ï¼æ éåç«¯å¹²é¢ | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - ä»»å¡å表æé®æå»ºè®®æ `status` + `processInstanceId` ç»å夿ï¼çç¹ä¸ä¸ processInstanceId ä¸ºç©ºææ¾ç¤ºãæäº¤ç»æå®¡æ¹ãã |
| | | - æäº¤å详æ
/å表ååºä¸ processInstanceId å·²æå¼ï¼å¯æ®æ¤å 载审æ¹è¿åº¦è¯¦æ
ã |
| | | - æé®æéå¤ç¨ï¼æäº¤å®¡æ¹ä½¿ç¨ `mes:wm-stock-taking-task:update`ï¼å®¡æ¹æµç¨åè¡¨ä½¿ç¨ `mes:wm-stock-taking-task:query`ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # MES ä»å¨ç©èµãæ¡ç /äºç»´ç · æ ç¾æå° Â· çç¹ Â· æ¹æ¬¡ä¸åå追溯ãå·®è·åæä¸å®æ½å»ºè®® |
| | | |
| | | > 便®ï¼`yudao-module-mes` ç°æä»£ç çç¹ï¼2026-09-08ï¼ï¼å¯¹ç
§ä¸é¡¹éæ±éæ¡æ ¸å¯¹"å·²æ/缺失"ãç»è®ºå坿º¯æºå°å¯¹åº Controller / Service / DO / 表ã |
| | | |
| | | ## 1. æ»ä½ç»è®º |
| | | |
| | | `mes_wm_*` 䏿´å¥å°åºå·²ç»éºå¾å¾å®½ï¼**åºåå°è´¦+æµæ°´ãæ¹æ¬¡ãæ¡ç ãSNãçç¹ plan/task/line/resultãæ¹æ¬¡è¿½æº¯**é½å»ºå¥½äºãçæ£çå·®è·å¤§å¤æ¯"**æåä¸å
¬é没æ¥çº¿**"ï¼å
¶æ¬¡ææ¯"鿰墿¨¡å"ã缺表/éé çåºæ¯å¾å°ï¼å¤æ°æ¯"é»è¾å·²å使 è°ç¨ç¹ãåæ®µå·²ç使 人维æ¤ã模åå·²å»ºä½æªè¿åºåé¾"ã |
| | | |
| | | ä¸éæ±å½ä¸æéè¦çä¸å¤ï¼ |
| | | |
| | | 1. **çç¹çççäºèªå¨æ ¸é"æªæ¥çº¿"**ï¼`processStockTakingDifference` æ ä»»ä½è°ç¨æ¹ï¼finish åªç½®ç¶æï¼ââæç¡®å®ã代价æå°ç缺å£ã |
| | | 2. **æ ç¾æå° / æ«ç / æ¡ç ç»ååæ®µ**æ´ä½ç¼ºå¤±ï¼åªææ¡ç åç¬¦ä¸²ä¸ config éçæ¨¡æ¿ååæ®µï¼ã |
| | | 3. **SN åªå"å·æ± "ï¼æªè¿åºå/åæ®é¾**ï¼`isSerialManaged` 空转 â "æåä»¶ SN ç²¾å追溯"ç®åæ¯æçã |
| | | |
| | | --- |
| | | |
| | | ## 2. ç°ç¶è½å鿥 |
| | | |
| | | | è½å | 主表 | å
³é®æ¥å£ï¼Controller è·¯å¾ï¼ | ç¶æ | |
| | | |------|------|------------------------------|------| |
| | | | åºåå°è´¦/夿¡ä»¶æ¥è¯¢/å»ç» | `mes_wm_material_stock` | `/mes/wm/material-stock/page/get/update-frozen` | â
å¨ç¨ï¼æ¯æç©æ/æ¹æ¬¡/ä»åº/åºåºåºä½/ä¾åºåçé | |
| | | | åºåè°æ´ï¼èªå®ä¹å
¥/åºï¼ | åä¸ + æµæ°´ | `/mes/wm/material-stock/adjust-in/adjust-out` | â
èµ° transactionï¼èªå¨æ´æ°å°è´¦ | |
| | | | ç§»åº/è°æ¨ | åä¸ + `mes_wm_transfer(_line/_detail)` | `/mes/wm/material-stock/move`ã`/mes/wm/transfer/*` | â
| |
| | | | åºåæµæ°´ | `mes_wm_transaction` | `/mes/wm/transaction/page`ï¼å¯æ bizType/bizCode/item/batch çï¼ | â
å« bizId/bizCode/bizLineId/relatedTransactionIdï¼å
·å¤åå串èåºç¡ | |
| | | | å¯ç¨é available | å
å计ç®å段 | 页é¢ç°ç® `qty - frozen - reserved` | â ï¸ å±ç¤ºå±ç°ç®ï¼reserved ä»
çäº§é¢æ/éå®åºåºä¸¤åå åºï¼`MesWmStockReserveService`ï¼ | |
| | | | å¨é inTransit | `mes_wm_material_stock.in_transit_quantity` | æ | â æ ä»»ä½åå
¥/å²éæ¹ï¼ç©ºè½¬å段 | |
| | | | çç¹è®¡å/ä»»å¡/è¡/ç»æ | `mes_wm_stock_taking_plan(_param)/task(_line/_result)` | `/mes/wm/stock-taking-plan/*`ã`/mes/wm/stock-taking-task/*` | â
主æµç¨å¨ç¨ï¼è¡æ¯æ Excel 导å
¥èªå¨å¤çäºï¼`importStockTakingQuantity`ï¼ | |
| | | | çç¹çç/çäºæ ¸é | ç» transaction æ´æ°å°è´¦ | `processStockTakingDifference`ï¼Serviceï¼ | â ï¸ **åæå**ï¼é»è¾åå¨ï¼`WM_STOCK_TAKING`=107 çæ IN/OUT æµæ°´ï¼ï¼ä½æ è°ç¨ç¹ | |
| | | | çç¹å®¡æ¹ | â | task åªæ submit/finish/cancel | â ï¸ æå·¥ä¸¤æ®µå¼ï¼PREPAREâAPPROVINGâFINISHEDï¼ï¼**æªæ¥ BPM** | |
| | | | æ¹æ¬¡ | `mes_wm_batch`ï¼åæ+æåç»ä¸ï¼ | `/mes/wm/batch/get/page` | â
å¯ä¸ç¼ç /èªå¨ç¼ç /æ¹æ¬¡æ¡ç ï¼åºåæ batch 维度ï¼å
¥åºå¼ºæ ¡éª batch | |
| | | | æ¹æ¬¡è¿½æº¯ | æ¹æ¬¡Ãæµæ°´Ãæ¥å·¥ | `/mes/wm/batch/forward-list` `/backward-list` `/purchase-sources` `/sales-targets` `/process-trace` `/get-by-sn` | â
å·²éç¯ï¼åå/åå/æ¥æº/å»å/å·¥åº/SN 忥 | |
| | | | SN å·æ± | `mes_wm_sn` | `/mes/wm/sn/*`ï¼`generateSnCodes`ï¼ | â ï¸ åªçæ"å·ç æ± "ï¼åæ®/åºå/æµæ°´**åæ SN 维度** | |
| | | | æ¡ç çæ | `mes_wm_barcode(_config)` | åä¸å¡å¯¹è±¡åå»ºæ¶ `autoGenerateBarcode` | â
18 ç±» biztypeï¼å config.autoGenerateFlag æ§å¶ | |
| | | | æ¡ç å
容 | config.contentFormat | `{BUSINESSCODE}` åå ä½ | â ï¸ æ "ç©æ+æ¹æ¬¡+ç¼å·+åºä½"ç»ååæ®µ | |
| | | | æ ç¾æå°/æå¾ | config.defaultTemplate(ä»
å符串) | æ | â æ æå°/渲æ/æå¾æ¥å£ | |
| | | | æ«ç æå¡ç«¯ | â | æ | â æ¶åè´§/颿/çç¹åæ scan æ ¡éª | |
| | | | 设å¤âç©æâåºå | `mes_dv_machinery.item_id` | å建设å¤èªå¨å»ºæå¹¶å
¥è®¾å¤ä» | â
ï¼é¶æ®µ2ï¼`docs/machinery_equipment_material_inbound.md`ï¼ | |
| | | |
| | | --- |
| | | |
| | | ## 3. 鿡鿱差è·ä¸å»ºè®®è½ç¹ |
| | | |
| | | ### 3.1 éæ±3ï¼ç©èµäºç»´ç /æ ç¾æå°ï¼ç»å®æ¹æ¬¡ãç¼å·ãåºä½ï¼é
åèµäº§ä¸ç©èµè¿½æº¯ |
| | | |
| | | | åéæ± | ç°ç¶ | å·®è· | 建议å端è½ç¹ | |
| | | |--------|------|------|--------------| |
| | | | äºç»´ç /æ ç¾æå° | åªåæ¡ç å符串ï¼config æ `defaultTemplate` åæ®µ | **æ æå¾ãæ æ¨¡æ¿æ¸²æãæ æå°æ¥å£** | æ°å¢"æ ç¾æå°"è½åï¼â æ¡ç /äºç»´ç å¾ççæï¼BarcodeFormatEnum å·²æ QR/CODE39/EAN13/UPC-A æä¸¾ï¼ï¼â¡ æå°æ¨¡æ¿ï¼æ bizType ååæ®µç»å â æ¸²æææ¬/å¾çï¼ï¼â¢ æå°æ¥å£ï¼åæ¡/æ¹éï¼å¯å
¥æå°éåï¼ãåèæä»¶ï¼`MesWmBarcodeServiceImpl`ã`MesWmBarcodeConfigDO.contentFormat` | |
| | | | ç»å®"æ¹æ¬¡+ç¼å·+åºä½" | content ä»
`{BUSINESSCODE}` | æ¡ç ä¸å
åµç»ååæ®µï¼æ æ³ä¸ç æºå¸¦ä¸å¡ç»æ | æ©å±ç¼ç è§åï¼config æ¯æå¤å ä½ç¬¦ç»åï¼å¦ `{CODE}+{BATCH}+{LOCATION}+{SN}`ï¼ï¼æä¿ç"ç â(bizType,bizId)â对象"忥ï¼é
åæå°æ¨¡æ¿å段å±ç¤ºå®ç°"æ ç¾å¸¦å
¨ä¿¡æ¯" | |
| | | | èµäº§ä¸ç©èµè¿½æº¯ | 设å¤âç©æâ设å¤ä»å·²åï¼é¶æ®µ2ï¼ï¼æ¹æ¬¡è¿½æº¯å¯¹åæ/æåå·²éç¯ | è¿½æº¯å°æ¹æ¬¡ç²åº¦ï¼**åå SN 追溯æ**ï¼åºåè°æ´/çç¹æ ¸é/ç§»åºæ¯å¦çº³å
¥æ¹æ¬¡é¾éæ ¸å¯¹ | è¥é"èµäº§/ç©èµç»ä¸è¿½æº¯è§å¾"ï¼ä»¥ `mes_wm_transaction` 为主é¾è¡¥ç»ä¸è¿½æº¯æ¥è¯¢ï¼å
¥åºâåºåâåºåº/é¢ç¨ï¼ï¼è¦ççç¹æ ¸é(107)ãç§»åºç bizTypeï¼ååçº§è§ 3.3 SN | |
| | | |
| | | ### 3.2 éæ±4ï¼å®æ¶åºåæ¥è¯¢ã宿çç¹ãçç¹æ°æ®å¯¼å
¥ãèªå¨æ ¸ç®çççäºãæ´æ°åºåå°è´¦ |
| | | |
| | | | åéæ± | ç°ç¶ | å·®è· | 建议å端è½ç¹ | |
| | | |--------|------|------|--------------| |
| | | | 宿¶åºåæ¥è¯¢ | å°è´¦å页 + available ç°ç® | available 为页é¢è®¡ç®ï¼reserved ä»
è¦ç颿/éå®åºåºï¼**å¨éåæ®µç©ºè½¬** | è¥é"å¯ç¨éç»ä¸å£å¾/å¨é"ï¼è¡¥ï¼`inTransitQuantity` çåå
¥ä¸å²éï¼è°æ¨å¨éï¼ãreserved è¦çé¢å³ç | |
| | | | 宿çç¹ | plan åª"åå®ä¸æ¬¡èå´"ï¼æä»åº/åºåº/åºä½/ç©æ/æ¹æ¬¡åæ°ï¼ | æªåç°**æå¨æèªå¨çæä»»å¡/æé**çè°åº¦ | çç¹æ¹æ¡å 卿(æ¯æ¥/æ¯å¨/æ + 䏿¬¡çç¹æ¥)ï¼ç±å®æ¶ä»»å¡å°æçæ task å¹¶éç¥ï¼å¯æ¾ `MesWmStockTakingPlanService`ï¼ | |
| | | | çç¹æ°æ®å¯¼å
¥ | è¡ Excel 导å
¥ï¼ç©æç¼ç +æ¹æ¬¡+å®çæ°ï¼èªå¨å¤çäº | â
å·²å
·å¤ | å¯éï¼è¡¥æ«ç å½å
¥ï¼è§ 3.3ï¼ | |
| | | | **èªå¨æ ¸ç®çççäºãæ´æ°åºåå°è´¦** | `processStockTakingDifference` å·²å®ç°ï¼æç»æå·®é¢çæ `MesBizTypeConstants.WM_STOCK_TAKING`(107) ç IN/OUT æµæ°´å¹¶ç» `createTransaction` æ´æ°åºå | **æ¹æ³æ ä»»ä½è°ç¨æ¹**ï¼`finishStockTakingTask`(ServiceImpl:146) åªç½® FINISHED+è§£å» | **é¦éæ¥çº¿æ¹æ¡**ï¼å®æçç¹æ¶èªå¨æ ¸éï¼finish å
è°ç¨ï¼ææ°å¢"æ ¸é"端ç¹ï¼è¡¥å¹çï¼ä»
å
è®¸æ ¸é䏿¬¡ï¼ã坿¥è¯¢æ ¸éæµæ°´ãå¹¶å鲿¤ãæ¶åæä»¶ï¼`MesWmStockTakingTaskServiceImpl`(:234 æ¹æ³ä½/æ¥å£)ï¼Controller è¡¥å
¥å£+æé | |
| | | | çç¹å®¡æ¹ | taskï¼submit ç½® APPROVING+å¯éå»ç»ï¼finish è¦æ± APPROVING | æå·¥ä¸¤æ®µå¼ï¼æ BPM | è¥è¦ä¸å
¶ä½ä»å¨åæ®ä¸è´èµ°çå® BPMï¼åç
§ `MesWmItemReceiptStatusListener`/é¶æ®µ1 ä¸åæ®æ¨¡å¼æ¥å
¥ï¼å¦åä¿æç°ç¶å³å¯ï¼ææ¡£æ³¨æå£å¾ | |
| | | |
| | | ### 3.3 éæ±5ï¼å
¨åç±»æ¡ç /äºç»´ç 管çï¼ä¸²èåºå
¥åº/é¢ç¨/çç¹ï¼æ¹æ¬¡ä¸ååç²¾å追溯 |
| | | |
| | | | åéæ± | ç°ç¶ | å·®è· | 建议å端è½ç¹ | |
| | | |--------|------|------|--------------| |
| | | | å
¨åç±»å¯ç¨æ¡ç | æ bizType ç config.autoGenerateFlag èªå¨çæï¼ç©æ/æ¹æ¬¡/SN/åºä½çå·²è¦ç | STOCK/ä¾åºå/客æ·ç±»æ çæå
¥å£ï¼**é强å¶**ï¼æªçæåæ ç 坿« | æç¡®"å¯ç¨èå´"ï¼å¯¹éå
¨å类强å¶çä¸»æ°æ®ï¼ç©æ/æ¹æ¬¡/åºä½/SNï¼åå¯å¨æ ¡éªä¸è¡¥ç | |
| | | | 串èåºå
¥åº/é¢ç¨/çç¹ | ååæ®å·²å»ºï¼æ¶æ/æé¡¹/颿 productissue/éæ returnissue/çç¹ï¼ | **æå¡ç«¯æ æ«ç å
¥å£**ï¼æ¶è´§/åæ/颿/çç¹ç¹è¡ä¸è½"æ«æ¡ç /SN/æ¹æ¬¡å®ä½å¹¶æ ¡éª" | æä¾ç»ä¸"æ«ç è§£æ"æ¥å£ï¼æ content æ (bizType,bizId) æ SN/æ¹æ¬¡å·è§£æåºç©æ/æ¹æ¬¡/åºä½ï¼ä¾ååæ®è¡å¿«é带å
¥å¹¶æ ¡éªï¼ä¸ç©æãæ¹æ¬¡å¯ç¨ãåºä½å¹é
ï¼ï¼çç¹è¡å½å
¥å¤ç¨ | |
| | | | æ¹æ¬¡ä¸ååç²¾å追溯 | æ¹æ¬¡è¿½æº¯å·²éç¯ | **ååï¼SNï¼æªè¿åºåé¾**ï¼`mes_wm_sn` ä»
å·æ± ï¼`mes_wm_material_stock`/`mes_wm_transaction` åæ sn 维度ï¼`isSerialManaged` æ æ¶è´¹æ¹ | SN ååé¾è·¯ï¼æ¹å¨è¾å¤§ï¼ï¼åºå/æµæ°´/åæ®è¡æ¯æ SNï¼å¯ç¨ `isSerialManaged` ç©æçå
¥åºçæ/ç»å® SNãåºåºæ ¸é SNï¼æä¾"SN å¨åºä½ç½®/åå²å»å"æ¥è¯¢ï¼çç¹æ¯ææ SN åä»¶æ ¸å¯¹ | |
| | | |
| | | --- |
| | | |
| | | ## 4. æ"就绪度"å½ç±»ç¼ºå£ï¼å»ºè®®å®æ½æ¶ææ¤åéç¨ç¢ï¼ |
| | | |
| | | ### 4.1 åæåï¼é»è¾å·²æï¼åªå·®æ¥çº¿ï¼æ¹å¨å°ãé£é©ä½ï¼ |
| | | - **çç¹å·®å¼èªå¨æ ¸é**ï¼`MesWmStockTakingTaskServiceImpl#processStockTakingDifference` å·²è½çæçç/çäºæµæ°´å¹¶æ´æ°å°è´¦ï¼æ¥ä¸å®æçç¹å³è§¦å/ç¬ç«ç«¯ç¹ + å¹çå³å¯éç¯éæ±4"èªå¨æ ¸ç®çççäºãæ´æ°åºåå°è´¦"ã |
| | | |
| | | ### 4.2 模åå·²æï¼éè¡¥è½åï¼ä¸æ¹ï¼ |
| | | - **æ ç¾æå°ä¸æå¾**ï¼å©ç¨å·²æ BarcodeFormatEnum/æ¡ç 表ï¼è¡¥å¾ççæãæ¨¡æ¿æ¸²æãæå°æ¥å£ã |
| | | - **æ¡ç å
容ç»ååæ®µ / ä¸ç å¤ä¿¡æ¯**ï¼æ©å± contentFormat å¤å ä½ç¬¦ï¼ç©æ/æ¹æ¬¡/åºä½/ç¼å·/SNï¼ã |
| | | - **æå¡ç«¯æ«ç **ï¼ç»ä¸"è§£ææ¡ç /SN/æ¹æ¬¡"æ¥å£ï¼ä¾æ¶åè´§ã颿ãçç¹è¡å¤ç¨ã |
| | | - **çç¹ BPMï¼å¯éï¼** ä¸ **宿çç¹è°åº¦ï¼å¯éï¼**ã |
| | | - **å¨é/å¯ç¨éå£å¾**ï¼è¥ä¸å¡è¦æ±å¨éï¼ã |
| | | - **追溯é¾è¡¥é½**ï¼æçç¹æ ¸é(107)ãç§»åºç bizType 纳å
¥æ¹æ¬¡/æµæ°´è¿½æº¯ï¼æ ¸å¯¹ç° forward/backward æ¯å¦å·²å«ï¼ã |
| | | |
| | | ### 4.3 鿰墿¨¡å / è¾éæï¼å¤§æ¹ï¼æéç«é¡¹ï¼ |
| | | - **SN åååºåé¾**ï¼åºåãæµæ°´ãåæ®è¡å¢å SN 维度 + åºå
¥åºæ ¸é + å件追溯æ¥è¯¢ + çç¹åä»¶æ ¸å¯¹ã |
| | | - **èµäº§å±æ§**ï¼è¥"èµäº§"䏿¢è®¾å¤å°è´¦ï¼éå¨ç©æä¾§è¡¥èµäº§ç¼å·/å½å±/å¯ç¨æ¥æ/æ¥åºç屿§ï¼ä¸è®¾å¤å°è´¦åå¹¶è§å¾ã |
| | | - **éå®åè¿çº§è¿½æº¯**ï¼å¦è¦æ±æåºåºå SN/æ¹æ¬¡è¿½æº¯å»åæç»ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## 5. å»ºè®®å®æ½é¡ºåº |
| | | |
| | | | ä¼å
级 | äºé¡¹ | çç±/便® | ä¸»è¦æ¶å | |
| | | |--------|------|-----------|----------| |
| | | | P0 | çç¹å®æèªå¨æ ¸éçççäº | é»è¾ç°æï¼å·®å¼æ ¸éå·²ç¼ç ï¼ï¼æ¶çç´æ¥ï¼ä»£ä»·æå°ï¼ç´æ¥å½ä¸éæ±4æ ¸å¿ | `MesWmStockTakingTaskServiceImpl`(+Controller/å¹ç/æµæ°´æ¥è¯¢) | |
| | | | P0 | æ ç¾æå°ï¼æå¾+模æ¿+æå°ï¼ | éæ±3硬æ§é¡¹ï¼å½åå®å
¨ç¼ºå¤± | æ¡ç æå¡+config+æå°æ¥å£ï¼BarcodeFormatEnum å¤ç¨ | |
| | | | P1 | æå¡ç«¯æ«ç + çç¹æ«ç å½å
¥ | éæ±5"串èåºå
¥åº/é¢ç¨/çç¹"å
³é® | ç»ä¸æ«ç è§£ææ¥å£ï¼åæ®è¡æ¥å
¥ | |
| | | | P1 | æ¡ç å
容ç»ååæ®µ / ä¸ç æºå¸¦æ¹æ¬¡Â·åºä½Â·ç¼å·Â·SN | é
åæå°ä¸è¿½æº¯ | contentFormat å¤å ä½ç¬¦ | |
| | | | P1 | SN åååºåé¾ | éæ±3/5"ååç²¾å追溯" | åºå/æµæ°´/åæ® SN 维度 + æ ¸é + å件追溯 | |
| | | | P2 | çç¹æ¥ BPMã宿çç¹è°åº¦ | ä¸é¶æ®µ1å£å¾ä¸è´åãéæ±4"宿" | åç
§é¶æ®µ1ä¸åæ®æ¨¡å¼ï¼è°åº¦ job | |
| | | | P2 | å¨é/å¯ç¨éå£å¾ãèµäº§å±æ§ãéå®åè¿è¿½æº¯ | ä¾ä¸å¡éè¦åå® | â | |
| | | |
| | | > 建议å
å P0 两项形æ"éç¯æ ·æ¿"ï¼åæ 4.2/4.3 æ¨è¿ï¼æ¯é¡¹æè·¨æ¨¡å/åºè¡¨åæ´å¨å®æåæ§è¡ `mvn compile -pl yudao-module-mes -am -q`ï¼æ¶å MDM/BPM åå
¨éç¼è¯ãæ°æ®åºèæ¬éµå¾ª sql-syntax/sql-script è§èï¼æ tenant_idãADD COLUMN å
æ¥åå¨ï¼ã |