feat(mes): 不合格品处置联动入库与生产订单
- 让步放行/报废:生成杂项入库单并自动提交、完成入库(处置弹窗选仓库/库区/库位,默认原材料仓/不合格品仓,批次管理物料必填批次号)
- 返工/返修:生成自行生产类型生产订单,BOM/条码自动生成,工艺路线人工补充
- 杂项入库单/行/明细补齐 type、来源单据、批次号、库位字段,并补「让步放行入库(2)/报废入库(3)」字典
- 配置导出脚本 config_export_all_20261108.sql 同步结构与字典
- 同步更新 NCR 前端联调文档与质量流程业务可视化
- 一并提交此前未提交的审批业务单据附件、客户洽谈进度、BOM 导入、员工 API、工位人员、生产任务等改动
Co-Authored-By: Claude Code <noreply@anthropic.com>
| | |
| | | |
| | | **PUT** `/mes/qc/ncr/dispose` |
| | | |
| | | å¤ç½®ä¼èå¨çæä¸å¡åæ®ï¼è®©æ¥æ¾è¡(4)/æ¥åº(2) çææé¡¹å
¥åºåå¹¶èªå¨æäº¤ã宿å
¥åºï¼è¿å·¥(3)/è¿ä¿®(6) çæèªè¡ç产类åç产订åï¼è稿ï¼ã |
| | | |
| | | 请æ±åæ°ï¼ |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | id | Long | æ¯ | NCRç¼å· | |
| | | | disposition | Integer | æ¯ | å¤ç½®æ¹å¼ï¼ä»
2=æ¥åº/3=è¿å·¥/4=è®©æ¥æ¾è¡/6=è¿ä¿®ï¼ | |
| | | | warehouseId | Long | æ¡ä»¶å¿
å¡« | å
¥åºä»åºï¼è®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡«ï¼å端é»è®¤å¸¦åºåææä» | |
| | | | locationId | Long | æ¡ä»¶å¿
å¡« | å
¥åºåºåºï¼è®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡« | |
| | | | areaId | Long | æ¡ä»¶å¿
å¡« | å
¥åºåºä½ï¼è®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡« | |
| | | | batchCode | String | æ¡ä»¶å¿
å¡« | æ¹æ¬¡å·ï¼ç©æå¯ç¨æ¹æ¬¡ç®¡çæ¶å¿
å¡«ï¼æ¹æ¬¡ä¸åå¨ä¼èªå¨å建 | |
| | | | handlerUserId | Long | å¦ | å¤ç人ID | |
| | | | handleResult | String | å¦ | å¤çç»æè¯´æ | |
| | | |
| | | ååºå段ï¼`data`ï¼ï¼ |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | disposition | Integer | å¤ç½®æ¹å¼ | |
| | | | docType | String | çæçåæ®ç±»åï¼`MISC_RECEIPT`=æé¡¹å
¥åºåï¼`WORK_ORDER`=ç产订å | |
| | | | docId | Long | 忮ID | |
| | | | docCode | String | åæ®ç¼å· | |
| | | | docName | String | åæ®åç§° | |
| | | | message | String | å¯ç´æ¥ç¨äº toast çæç¤ºææ¡ | |
| | | |
| | | ååºç¤ºä¾ï¼ |
| | | |
| | | ```json |
| | | { |
| | | "code": 0, |
| | | "data": { |
| | | "disposition": 4, |
| | | "docType": "MISC_RECEIPT", |
| | | "docId": 1, |
| | | "docCode": "MI_20261109001", |
| | | "docName": "è®©æ¥æ¾è¡å
¥åºå-NCR20261109E2E01", |
| | | "message": "å·²çæè®©æ¥æ¾è¡å
¥åºå-NCR20261109E2E01并宿å
¥åºï¼å
¥åºåå·[MI_20261109001]" |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### å
³é NCR |
| | | |
| | |
| | | ### ç¶ææµè½¬ |
| | | |
| | | ``` |
| | | å¾
è¯å®¡(0) ââè¯å®¡âââ¶ å·²è¯å®¡(1) ââå¤ç½®âââ¶ å·²å¤ç½®(2) ââå
³éâââ¶ å·²å
³é(3) |
| | | å¾
è¯å®¡(0) ââè¯å®¡(ææäº¤BPMå®¡æ¹ å®¡æ¹ä¸2)âââ¶ å·²è¯å®¡(6) ââå¤ç½®âââ¶ å·²å¤ç½®(7) ââå
³éâââ¶ å·²å
³é(8) |
| | | ``` |
| | | |
| | | ### æä½æé约æ |
| | |
| | | |
| | | | å¼ | åç§° | 说æ | |
| | | |----|------|------| |
| | | | 1 | éè´§ | éåä¾åºå | |
| | | | 2 | æ¥åº | å
鍿¥åºå¤ç | |
| | | | 3 | è¿å·¥ | éæ°å å·¥ | |
| | | | 4 | è®©æ¥æ¥æ¶ | ç¹éæ¥æ¶ | |
| | | | 5 | éçº§ä½¿ç¨ | é级åä½¿ç¨ | |
| | | | 1 | éè´§ | éåä¾åºåï¼å岿䏾ï¼è¯å®¡ä¸åå¯éï¼ | |
| | | | 2 | æ¥åº | æé¡¹å
¥åºå°ä¸åæ ¼åä» | |
| | | | 3 | è¿å·¥ | çæç产订å | |
| | | | 4 | è®©æ¥æ¥æ¶ | æé¡¹å
¥åºå°åææä» | |
| | | | 5 | éçº§ä½¿ç¨ | å岿䏾ï¼è¯å®¡ä¸åå¯é | |
| | | | 6 | è¿ä¿® | çæç产订å | |
| | | |
| | | ### å¤ç½®èå¨è§å |
| | | |
| | | | å¤ç½®æ¹å¼ | çæåæ® | ç®æ /è§å | |
| | | |----------|----------|-----------| |
| | | | è®©æ¥æ¾è¡(4) | æé¡¹å
¥åºåï¼type=2 è®©æ¥æ¾è¡å
¥åºï¼ï¼èªå¨æäº¤å¹¶å®æå
¥åºï¼åºåå¢å | é»è®¤åææä»ï¼å¯æ¹ä»åº/åºåº/åºä½ | |
| | | | æ¥åº(2) | æé¡¹å
¥åºåï¼type=3 æ¥åºå
¥åºï¼ï¼èªå¨æäº¤å¹¶å®æå
¥åºï¼åºåå¢å | é»è®¤ä¸åæ ¼åä»ï¼å¯æ¹ä»åº/åºåº/åºä½ | |
| | | | è¿å·¥(3)/è¿ä¿®(6) | ç产订åï¼èªè¡ç产ï¼è稿æï¼ | 产å=NCRç©æãæ°é=ä¸åæ ¼æ°éï¼BOM/æ¡ç èªå¨çæï¼å·¥èºè·¯çº¿é人工补å
åä¸è¾¾ | |
| | | |
| | | ### 缺é·ç级æä¸¾ |
| | | |
| | |
| | | "name": "é宿µç¨", |
| | | "mermaid": "mermaid/02-sales-flow.mmd", |
| | | "color": "#4f9cff", |
| | | "summary": "线索转åå®¢æ· â åæºæ¨è¿ â æ¥ä»·(å¯AIè¯å«) â åå BPM å®¡æ¹ â çæ ERP éå®è®¢å并审æ¹ï¼å°è´¦å«éå®ç±»åãæå·¥ååå·ã产åç¼å·ä¸ç产æ°éï¼ â éç产è¡èªå¨å»º MPS â åè´§éç¥ï¼ç©æµå
¬å¸/å¿«éè´¹/å¼ç¥¨ç¶æï¼å®¡æ¹é»è®¤ç©æµï¼ â åè´§å°è´¦æäº§åå¹³éº â éå®åºåºæäº¤(鿣éªè¡è½¬å¾
æ£æµ) â ç¬ç«å½å
¥ OQC åæç©æ+çå·+æ°éå
³èåå â æ£è´§åè¿ â å¼ç¥¨(BPM) â å½å
¥åç¥¨ä¸æ¬¾é¡¹èç¹ â 忬¾(å
å¼ç¥¨æ ¡éªï¼åå»ºä¸ºæªæäº¤ï¼æ¾å¼æäº¤ BPM åå审æ¹ï¼å®¡æ¹éè¿æåå忬¾è®¡å)ï¼åè´§å/æååºåºåå¯å¯¼åºå¸¦çµåç« ç Word 便填ç¾å彿¡£ï¼å®¢æ·æ¡£æ¡æ¯æå¤æ¶è´§å°åã", |
| | | "summary": "线索转åå®¢æ· â åæºæ¨è¿ â æ¥ä»·(å¯AIè¯å«) â åå BPM å®¡æ¹ â çæ ERP éå®è®¢åï¼åå转æ¥ç订åæäº¤å
审æ¹ç´æ¥çæï¼æäº¤åä¸å¯ä¿®æ¹ï¼å°è´¦å«éå®ç±»åãæå·¥ååå·ã产åç¼å·ä¸ç产æ°éï¼ â éç产è¡èªå¨å»º MPS â åè´§éç¥ï¼ç©æµå
¬å¸/å¿«éè´¹/å¼ç¥¨ç¶æï¼å®¡æ¹é»è®¤ç©æµï¼ â åè´§å°è´¦æäº§åå¹³éº â éå®åºåºæäº¤(鿣éªè¡è½¬å¾
æ£æµ) â ç¬ç«å½å
¥ OQC åæç©æ+çå·+æ°éå
³èåå â æ£è´§åè¿ â å¼ç¥¨(BPM) â å½å
¥åç¥¨ä¸æ¬¾é¡¹èç¹ â 忬¾(å
å¼ç¥¨æ ¡éªï¼åå»ºä¸ºæªæäº¤ï¼æ¾å¼æäº¤ BPM åå审æ¹ï¼å®¡æ¹éè¿æåå忬¾è®¡å)ï¼åè´§å/æååºåºåå¯å¯¼åºå¸¦çµåç« ç Word 便填ç¾å彿¡£ï¼å®¢æ·æ¡£æ¡æ¯æå¤æ¶è´§å°åã", |
| | | "steps": [ |
| | | { |
| | | "stage": "è·å®¢", |
| | |
| | | }, |
| | | { |
| | | "stage": "æ¥å", |
| | | "action": "ååä¸é®çæéå®è®¢å(XSDD)ï¼éå®è®¢ååèµ° BPMï¼å®¡æ¹éè¿èªå¨ä¸º needProduction æç»å建 MPS", |
| | | "action": "ååä¸é®çæéå®è®¢å(XSDD)åå¨éå®ç®¡çæäº¤ï¼åå转æ¥ç订åå
BPM ç´æ¥çæ(20)ï¼æäº¤åä¸å¯ä¿®æ¹ï¼æå·¥/导å
¥è®¢åä»èµ° BPMãçæåèªå¨ä¸º needProduction æç»å建 MPS æµè½¬çäº§ï¼æ éç产ç订åå¯ç´æ¥çæä»å¨åè´§éç¥å", |
| | | "roles": [ |
| | | "éå®", |
| | | "计åå" |
| | |
| | | }, |
| | | { |
| | | "stage": "ä¸åæ ¼", |
| | | "action": "NCR: å¾
è¯å®¡(0)âæäº¤BPM审æ¹(2)â审æ¹éè¿å·²è¯å®¡(6)/驳ååå¾
è¯å®¡âè´¨éé¨å¤ç½®(è®©æ¥æ¾è¡/è¿ä¿®/è¿å·¥/æ¥åº)âå·²å¤ç½®(7)âå
³é(8)ï¼å®¡æ¹æè§ç± BPM æµè½¬è®°å½æ¿è½½ï¼æªå叿µç¨å®ä¹æå
¨å±å
å®¡æ¹æ¶æäº¤åèªå¨éè¿", |
| | | "action": "NCR: å¾
è¯å®¡(0)âæäº¤BPM审æ¹(2)â审æ¹éè¿å·²è¯å®¡(6)/驳ååå¾
è¯å®¡âè´¨éé¨å¤ç½®(è®©æ¥æ¾è¡/è¿ä¿®/è¿å·¥/æ¥åº)âå·²å¤ç½®(7)âå
³é(8)ï¼å¤ç½®èå¨ï¼è®©æ¥æ¾è¡/æ¥åºçææé¡¹å
¥åºåå¹¶èªå¨æäº¤å®æå
¥åº(å¤ç½®å¼¹çªéä»åº/åºåº/åºä½ï¼è®©æ¥æ¾è¡é»è®¤åææä»ãæ¥åºé»è®¤ä¸åæ ¼åä»ï¼æ¹æ¬¡ç®¡çç©æå¿
å¡«æ¹æ¬¡å·)ï¼è¿å·¥/è¿ä¿®çæèªè¡ç产类åç产订å(产å=NCRç©æãæ°é=ä¸åæ ¼æ°éãBOM䏿¡ç èªå¨çæãå·¥èºè·¯çº¿äººå·¥è¡¥å
)ï¼å®¡æ¹æè§ç± BPM æµè½¬è®°å½æ¿è½½ï¼æªå叿µç¨å®ä¹æå
¨å±å
å®¡æ¹æ¶æäº¤åèªå¨éè¿", |
| | | "roles": [ |
| | | "è´¨éå·¥ç¨å¸" |
| | | ] |
| | |
| | | "name": "ä¼è®¡æ ¸ç®æµç¨", |
| | | "mermaid": "mermaid/12-finance-flow.mmd", |
| | | "color": "#3ec9a7", |
| | | "summary": "ä¼è®¡æ ¸ç®ï¼åè¯/åå½/å贷平衡 -> è¿è´¦ -> æ»è´¦/æç»è´¦/æ¥è¡¨ï¼åºå®èµäº§ææ§ãæ å½¢èµäº§æéãéå®éè´è´¢å¡éç¯ï¼ERP éå®è®¢å + MES 已宿åºåºå -> CRM å¼ç¥¨ç³è¯·ï¼ç»å®è®¢å+åºåºåï¼-> 审æ¹éè¿ -> å½å
¥å票并填åå忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹ -> CRM 忬¾ææ ¸éæç»åæå°è®¢å/åºåº/å¼ç¥¨ -> 客æ·åºæ¶å¯¹è´¦ãå·²åè´§æªå¼ç¥¨ãæªæ ¸éåºæ¶è´¦é¾ã䏿忬¾è®¡åï¼æ¥ç¥¨å¿
须忶ç»å®éè´è®¢åä¸ MES éè´å
¥åºåï¼åè¯å¯å
³èæ¥æºåæ®ï¼å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾ï¼ã", |
| | | "summary": "ä¼è®¡æ ¸ç®ï¼åè¯/åå½/å贷平衡 -> è¿è´¦ -> æ»è´¦/æç»è´¦/æ¥è¡¨ï¼åºå®èµäº§ææ§ãæ å½¢èµäº§æéãéå®éè´è´¢å¡éç¯ï¼ERP éå®è®¢å + MES 已宿åºåºå -> CRM å¼ç¥¨ç³è¯·ï¼éå®è®¢å/åºåºåéå¡«ï¼ç´¯è®¡â¤ååé¢ï¼-> 审æ¹éè¿ -> å½å
¥å票并填åå忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹ -> CRM 忬¾ææ ¸éæç»åæå°è®¢å/åºåº/å¼ç¥¨ -> 客æ·åºæ¶å¯¹è´¦ãå·²åè´§æªå¼ç¥¨ãæªæ ¸éåºæ¶è´¦é¾ã䏿忬¾è®¡åï¼æ¥ç¥¨å¿
须忶ç»å®éè´è®¢åä¸ MES éè´å
¥åºåï¼åè¯å¯å
³èæ¥æºåæ®ï¼å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾ï¼ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "建账", |
| | |
| | | }, |
| | | { |
| | | "stage": "å¼ç¥¨ç³è¯·", |
| | | "action": "éæ©ååãéå®è®¢åã该订åä¸å·²å®æåºåºåï¼å¡«åå¼ç¥¨éé¢åæäº¤ BPM 审æ¹", |
| | | "action": "éæ©ååï¼éå®è®¢åä¸è¯¥è®¢åä¸å·²å®æåºåºåå为éå¡«ï¼éæ©ååæ¶è¥è¯¥ååä»
æä¸å¼ å·²å®¡æ ¸éå®è®¢ååèªå¨å¸¦åºï¼ï¼å¡«åå¼ç¥¨éé¢åæäº¤ BPM 审æ¹", |
| | | "roles": [ |
| | | "éå®", |
| | | "è´¢å¡" |
| | |
| | | { |
| | | "modules": [ |
| | | { |
| | | "key": "mdm", |
| | | "name": "åºç¡ä¸»æ°æ®", |
| | | "color": "#8a94a6", |
| | | "tag": "MDM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»ç»ä¸å£å¾çä¸»æ°æ®æå¨æº", |
| | | "problem": "ç©æãåä½ãä»åºå¨ MES/ERP/CRM å¤å¤éå¤å®ä¹å¯¼è´æ°æ®ææ¶", |
| | | "features": [ |
| | | "ç©æä¸SKUï¼å«æ¹æ¬¡å±æ§é
ç½®12å¼å
³ï¼", |
| | | "ç©æåç±»æ ", |
| | | "计éåä½ä¸æ¢ç®", |
| | | "åç", |
| | | "ä»åºä¸»æ°æ®ï¼å«typeåæ®µï¼", |
| | | "MES ç©æç» MdmItemSyncApi åå忥" |
| | | ], |
| | | "objects": [ |
| | | "ç©æ", |
| | | "SKU", |
| | | "计éåä½", |
| | | "ä»åº" |
| | | ], |
| | | "roles": [ |
| | | "ä¸»æ°æ®ç®¡çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产", |
| | | "è¿éå", |
| | | "éå®", |
| | | "éè´" |
| | | ], |
| | | "coreTables": [ |
| | | "mdm_item", |
| | | "mdm_item_sku", |
| | | "mdm_item_category", |
| | | "mdm_unit_measure", |
| | | "mdm_brand", |
| | | "mdm_warehouse" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "crm", |
| | | "name": "éå®ç®¡çï¼å®¢æ·å
³ç³»ï¼", |
| | | "color": "#4f9cff", |
| | | "tag": "CRM", |
| | | "flow": "sales", |
| | | "positioning": "éå®å端ï¼ä»çº¿ç´¢å°å款ç客æ·ç»è¥", |
| | | "problem": "客æ·èµäº§æ²æ·ãåæºè½¬åãåå审æ¹ä¸å¼ç¥¨å款管æ§", |
| | | "features": [ |
| | | "线索转å客æ·", |
| | | "å
¬æµ·æ± ä¸é¢åä¸é", |
| | | "è系人", |
| | | "åæºèªå®ä¹é¶æ®µ", |
| | | "è·è¿è®°å½", |
| | | "æ¥ä»·å(AI OCR)", |
| | | "åå(BPM审æ¹âçæéå®è®¢åÂ·æ¯æExcel导å
¥)", |
| | | "å¼ç¥¨ç³è¯·(ç»å®éå®è®¢å+MESéå®åºåºå)â审æ¹âå½å
¥å票(å票å·/æ¥æ/éä»¶+å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹)", |
| | | "å¼ç¥¨(BPM审æ¹Â·æ¯æExcel导å
¥Â·å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥)â忬¾(å
å¼ç¥¨æ ¡éªÂ·æ ¸éæç»å¯æåå°è®¢å/åºåº/å¼ç¥¨)", |
| | | "忬¾è®¡å(æ¶æ¬¾èç¹åå已忬¾/å®é
æ¶é´/ç¶æ)", |
| | | "客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "ææ ä¿è¯éå°è´¦(å®¢æ·ææ æ¹+å·²å®¡æ ¸éå®è®¢åÂ·ä¸æ ç»æ/éåç¶æ/éåé颿¥æ)", |
| | | "éå®ç®æ ", |
| | | "æ°æ®æéä¸çº§(è´è´£äºº/åªè¯»/读å)" |
| | | ], |
| | | "objects": [ |
| | | "线索", |
| | | "客æ·", |
| | | "è系人", |
| | | "åæº", |
| | | "æ¥ä»·å", |
| | | "åå", |
| | | "å票", |
| | | "忬¾", |
| | | "忬¾æ ¸éæç»", |
| | | "éå®ç®æ ", |
| | | "ææ ä¿è¯é" |
| | | ], |
| | | "roles": [ |
| | | "éå®å
å¤", |
| | | "éå®ç»ç", |
| | | "è´¢å¡(å¼ç¥¨å款)" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)", |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éå®è®¢å)", |
| | | "å®å(客æ·)", |
| | | "AI(æ¥ä»·OCR)" |
| | | ], |
| | | "coreTables": [ |
| | | "crm_clue", |
| | | "crm_customer", |
| | | "crm_contact", |
| | | "crm_business", |
| | | "crm_sale_quotation", |
| | | "crm_contract", |
| | | "crm_invoice", |
| | | "crm_receivable", |
| | | "crm_receivable_plan", |
| | | "crm_permission", |
| | | "crm_bid_bond" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "srm", |
| | | "name": "ä¾åºå管ç", |
| | | "color": "#c9a86a", |
| | | "tag": "SRM", |
| | | "flow": "purchase", |
| | | "positioning": "ä¾åºåæ¡£æ¡ + 询价æ¯ä»·", |
| | | "problem": "ä¾åºåä¿¡æ¯å¤å¼æ·è¡/å¤è系人维æ¤ï¼éè´å¯»æºæäº§åæ¨ªåæ¯ä»·å¹¶å¿«é转为éè´è®¢å", |
| | | "features": [ |
| | | "ä¾åºåæ¡£æ¡ä¸åç±»", |
| | | "å¤è系人/å¤é¶è¡è´¦æ·(å«é¶è¡è¡å·)", |
| | | "询价åï¼æ°å¢æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·", |
| | | "æ¯ä¸ªäº§ååç¬éå®ä¸æ ä¾åºå", |
| | | "确认åæä¸æ ä¾åºåæåçæéè´è®¢åè稿" |
| | | ], |
| | | "objects": [ |
| | | "ä¾åºå", |
| | | "询价æ¯ä»·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "ä¾åºå管çå" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éè´è®¢å)" |
| | | ], |
| | | "coreTables": [ |
| | | "srm_supplier", |
| | | "srm_supplier_contact", |
| | | "srm_supplier_bank", |
| | | "srm_supplier_category", |
| | | "srm_inquiry", |
| | | "srm_inquiry_item", |
| | | "srm_inquiry_supplier", |
| | | "srm_inquiry_quote", |
| | | "srm_inquiry_order" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "erp", |
| | | "name": "è¿éåä¸è´¢å¡", |
| | | "color": "#5fc79e", |
| | | "tag": "ERP", |
| | | "flow": "purchase", |
| | | "positioning": "åè´¸ä¸èµé忮䏿¢ï¼å MES åèµ·å®ç©æ¶å", |
| | | "problem": "éè´éå®åæ®å®¡æ¹ãæ¥ç¥¨ä»æ¬¾æ§å¶ãè®¢åæ§è¡è¿åº¦åå", |
| | | "features": [ |
| | | "éè´ç³è¯·(BPM)â订å(èªå¨/æå¨çæ)", |
| | | "确认æ¶è´§âMESå°è´§éç¥", |
| | | "å
¥åº/éè´§æ°éç¶æåå", |
| | | "éè´æ¥ç¥¨(ç»å®éè´è®¢å+MESéè´å
¥åºå·åå±å©ä½é¢åº¦æ ¡éª)", |
| | | "仿¬¾å(å¿
é¡»å
³èæ¥ç¥¨Â·BPM)", |
| | | "ä¾åºå徿¥(订å/æ¥ç¥¨/仿¬¾ä¸æµæ°´Â·å·¦å³å±ç¤ºå¼ç¥¨éé¢)", |
| | | "éå®è®¢å(BPM·审æ¹éè¿èªå¨å»ºMPS)", |
| | | "åºåºç¶æåå", |
| | | "æ¶æ¬¾å(å
³èCRM客æ·)", |
| | | "ç»ç®è´¦æ·", |
| | | "AIå票OCR" |
| | | ], |
| | | "objects": [ |
| | | "éè´ç³è¯·", |
| | | "éè´è®¢å", |
| | | "éè´æ¥ç¥¨", |
| | | "仿¬¾å", |
| | | "ä¾åºå徿¥", |
| | | "éå®è®¢å", |
| | | "æ¶æ¬¾å", |
| | | "ç»ç®è´¦æ·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®å", |
| | | "åºçº³", |
| | | "ä¼è®¡" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(åå)", |
| | | "SRM(询价确认)", |
| | | "ä¸»æ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç产(MPS)", |
| | | "ä»å¨(æ¶å)", |
| | | "è´¢å¡(æ¥ç¥¨ä»æ¬¾å
¥è´¦)" |
| | | ], |
| | | "coreTables": [ |
| | | "erp_purchase_request", |
| | | "erp_purchase_order", |
| | | "erp_purchase_invoice", |
| | | "erp_finance_payment", |
| | | "erp_sale_order", |
| | | "erp_finance_receipt", |
| | | "erp_account" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "finance", |
| | | "name": "è´¢å¡ç®¡çï¼ä¼è®¡æ ¸ç®ï¼", |
| | | "color": "#3ec9a7", |
| | | "tag": "FIN", |
| | | "flow": "finance", |
| | | "positioning": "ç¬ç«æ ¸ç®æ¨¡åï¼ä¼è®¡æ ¸ç® + èµäº§æ ¸ç® + è´¢å¡æ¥è¡¨çæ¿ï¼ä¸ ERP è¿éåè´¢å¡åæ®å离ï¼yudao-module-financeï¼", |
| | | "problem": "è¿éååªç®¡åæ®ä¸ç®¡è´¦ï¼ç¼ºå°ä¼è®¡ç§ç®/åè¯/账簿ä¸èµäº§ææ§æéæ²æ·ï¼æ æ³åºè´¦è¡¨ä¸èµäº§åå¼", |
| | | "features": [ |
| | | "ä¼è®¡ç§ç®æ (约68æ¡ä¸çº§ç§ç®ç§å·å¯å»ºä¸çº§)", |
| | | "è®°è´¦åè¯(åå·èªå¨çæÂ·åå½å贷平衡åå端åéæ ¡éª)", |
| | | "åè¯ç¶ææº æªè¿è´¦0âè¿è´¦10/ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹", |
| | | "æ»è´¦ææé´éææ±æ»", |
| | | "æç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢", |
| | | "åºå®èµäº§+è®¡æææ§", |
| | | "æ å½¢èµäº§+计ææé", |
| | | "ä¼è®¡æ ¸ç®çæ¿(æ¶æ¯/èµäº§/åè¯/æåº¦è¶å¿)", |
| | | "åè¯æ¥æºåæ®å
³è(sourceType/sourceId/sourceNoï¼å¯å溯å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾)", |
| | | "æ¥è¡¨åæ°æ¥å
¥CRM客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "éä»¶èµ°ç³»ç»éä»¶ä¸å¿ recordType=fin_voucher" |
| | | ], |
| | | "objects": [ |
| | | "ä¼è®¡ç§ç®", |
| | | "è®°è´¦åè¯", |
| | | "åè¯åå½", |
| | | "åºå®èµäº§", |
| | | "æ å½¢èµäº§" |
| | | ], |
| | | "roles": [ |
| | | "ä¼è®¡", |
| | | "è´¢å¡ä¸»ç®¡", |
| | | "èµäº§ä¼è®¡", |
| | | "管çå±" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(ERP å·²å®¡æ ¸æ¶è´§/仿¬¾/è´éåæ®)", |
| | | "CRM(å¼ç¥¨/忬¾/æ ¸é/对账æ¥è¡¨)" |
| | | ], |
| | | "downstream": [ |
| | | "è´¢å¡æ¥è¡¨çæ¿", |
| | | "BI 管ç驾驶è±" |
| | | ], |
| | | "coreTables": [ |
| | | "fin_account_subject", |
| | | "fin_voucher", |
| | | "fin_voucher_entry", |
| | | "fin_fixed_asset", |
| | | "fin_intangible_asset" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "pro", |
| | | "name": "ç产管ç", |
| | | "color": "#e0b34f", |
| | | "tag": "MES-PRO", |
| | | "flow": "production", |
| | | "positioning": "ç产æ§è¡æ ¸å¿ï¼è®¡å-å·¥å-ä»»å¡-æ¥å·¥", |
| | | "problem": "订åå°è½¦é´æ§è¡çéå±æè§£ä¸è¿ç¨å¯æ§", |
| | | "features": [ |
| | | "MPS主ç产计å(å¯ç±éå®è®¢åèªå¨å建·åå¹¶ä¸å)", |
| | | "å·¥å(æå·¥èºè·¯çº¿èªå¨çæå·¥åºä»»å¡)", |
| | | "æ¥å·¥(æå·¥åºé¡ºåºæ§å¶Â·BPM审æ¹)", |
| | | "å岿£çº¿è¾¹åº/产åºå
¥åº", |
| | | "å®ç¯", |
| | | "å·¥èºè·¯çº¿Â·å·¥åºÂ·å·¥åBOM", |
| | | "ç å设计项ç®(PD·审æ¹å½æ¡£)", |
| | | "AI åç±»é¢æµ" |
| | | ], |
| | | "objects": [ |
| | | "MPS", |
| | | "ç产工å", |
| | | "ç产任å¡", |
| | | "æ¥å·¥å", |
| | | "å·¥èºè·¯çº¿", |
| | | "å·¥åBOM", |
| | | "设计项ç®" |
| | | ], |
| | | "roles": [ |
| | | "计åå", |
| | | "车é´ä¸»ä»»", |
| | | "æä½å·¥", |
| | | "å·¥èºå" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(颿/å
¥åº)", |
| | | "è´¨é(IPQC)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_pro_mps", |
| | | "mes_pro_work_order", |
| | | "mes_pro_task", |
| | | "mes_pro_feedback", |
| | | "mes_pro_route", |
| | | "mes_pro_process", |
| | | "mes_pro_work_order_bom", |
| | | "mes_pd_project" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "wm", |
| | | "name": "ä»å¨ç®¡ç", |
| | | "color": "#7e6bd6", |
| | | "tag": "MES-WM", |
| | | "flow": "warehouse", |
| | | "positioning": "åå
WMSï¼åæ®é©±å¨çåºåè´¦å®ä¸è´", |
| | | "problem": "夿¥æºåºå
¥åºãæ¹æ¬¡/SN 追溯ãåºå精确å°åºä½", |
| | | "features": [ |
| | | "15ç§åºå
¥åºåæ®", |
| | | "åºåå°è´¦(ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºå)", |
| | | "äºå¡æµæ°´åªè¯»çç", |
| | | "è°æ¨æå¯¹äºå¡", |
| | | "çç¹(éæ/å¨æÂ·ç²ç·çççäºè°æ´)", |
| | | "æ¹æ¬¡/SN/æ¡ç /è£
ç®±åµå¥", |
| | | "èæçº¿è¾¹åº(å
许è´åºå)", |
| | | "åºåå ç¨(5ç±»)", |
| | | "å级å»ç»", |
| | | "WMS审æ¹é
ç½®+BPM", |
| | | "å¯¹å¤ WmsStockApi/WmsTransactionApi" |
| | | ], |
| | | "objects": [ |
| | | "å°è´§éç¥", |
| | | "éè´å
¥åº", |
| | | "颿", |
| | | "å®å·¥å
¥åº", |
| | | "éå®åºåº", |
| | | "åè´§éç¥", |
| | | "éå®éè´§", |
| | | "ä¾åºåéè´§", |
| | | "è°æ¨", |
| | | "çç¹", |
| | | "åºåå°è´¦", |
| | | "æ¹æ¬¡", |
| | | "SN" |
| | | ], |
| | | "roles": [ |
| | | "ä»ç®¡å", |
| | | "æ£è´§å", |
| | | "çç¹å" |
| | | ], |
| | | "upstream": [ |
| | | "éè´(æ¶è´§)", |
| | | "ç产(é¢éæ)", |
| | | "éå®(åè´§)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(æ°éåå)", |
| | | "è´¢å¡(ææ¬åºç¡)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_wm_warehouse", |
| | | "mes_wm_material_stock", |
| | | "mes_wm_transaction", |
| | | "mes_wm_item_receipt", |
| | | "mes_wm_product_issue", |
| | | "mes_wm_product_receipt", |
| | | "mes_wm_product_sales", |
| | | "mes_wm_return_sales", |
| | | "mes_wm_transfer", |
| | | "mes_wm_stock_taking_task", |
| | | "mes_wm_batch", |
| | | "mes_wm_sn", |
| | | "mes_wm_stock_reserve" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qc", |
| | | "name": "è´¨é管ç", |
| | | "color": "#e06c6c", |
| | | "tag": "MES-QC", |
| | | "flow": "quality", |
| | | "positioning": "å鿣éªé¸å£ + ä¸åæ ¼åéç¯å¤ç½®", |
| | | "problem": "æ¥æ/è¿ç¨/åºè´§/éè´§æ£éªæ ååï¼ä¸åæ ¼å¯è¿½æº¯å¤ç½®", |
| | | "features": [ |
| | | "IQC æ¥æ(å°è´§/å¤å)", |
| | | "IPQC è¿ç¨(è卿¥å·¥)", |
| | | "OQC åºè´§(èå¨éå®åºåº)", |
| | | "RQC éè´§(èå¨éæ/å®å)", |
| | | "è´¨æ£æ¹æ¡Â·ææ ·缺é·åº", |
| | | "æ£æµç»æ:åæ ¼/ç¹é/éè´§/æ¥åº", |
| | | "NCR:è¯å®¡âå¤ç½®(éè´§/æ¥åº/è¿å·¥/让æ¥/é级)âå
³é", |
| | | "AI å¤å®å»ºè®®" |
| | | ], |
| | | "objects": [ |
| | | "IQC", |
| | | "IPQC", |
| | | "OQC", |
| | | "RQC", |
| | | "è´¨æ£æ¹æ¡", |
| | | "NCR", |
| | | "缺é·è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "è´¨æ£å(IQC/IPQC/OQC)", |
| | | "è´¨éå·¥ç¨å¸" |
| | | ], |
| | | "upstream": [ |
| | | "ä»å¨(å°è´§)", |
| | | "ç产(æ¥å·¥)", |
| | | "éå®(åºåº)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(åæ ¼å
¥åº/æ¥åºåºåº)", |
| | | "ç产(NCRè¿å·¥)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_qc_iqc", |
| | | "mes_qc_ipqc", |
| | | "mes_qc_oqc", |
| | | "mes_qc_rqc", |
| | | "mes_qc_template", |
| | | "mes_qc_indicator", |
| | | "mes_qc_defect", |
| | | "mes_qc_ncr" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qcreport", |
| | | "name": "æºè½è´¨æ£æ¥å", |
| | | "color": "#b06ce0", |
| | | "tag": "QC-REPORT", |
| | | "flow": "quality", |
| | | "positioning": "å¯è§å设计æ¥åæ¨¡æ¿ â ä¸é®åºä»¶å¹¶å»ç»å岿¥å", |
| | | "problem": "åè¡ä¸è´¨æ£æ¥åæ ¼å¼åå¼ï¼æç硬ç¼ç æ¹ä¸æ¬¡å䏿¬¡çï¼ä¸å岿¥åå¿
é¡»å¯å¤ç°ãä¸éä¸å¡æ°æ®åå", |
| | | "features": [ |
| | | "GrapesJS å¯è§å设计å¨ï¼è´¨æ£ç»ä»¶èµ°æ³¨åæºå¶ï¼ä¸ç¡¬ç¼ç è¿ç¼è¾å¨ï¼", |
| | | "æ¨¡æ¿ + å¤çæ¬ï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸çæ¬å
容ä¸å¯è¦ç", |
| | | "ç»ä»¶æ°æ®ç»å®ä¸ç¬ç«å¤å®è§å弿ï¼ç¦ç¨ eval / ScriptEngineï¼", |
| | | "ä¸å端éå对é½ç Java 渲æå¼æï¼åºç« HTML å¥ç¦» on* äºä»¶å±æ§ä¸ javascript:/vbscript:/data: åè®®", |
| | | "åºä»¶æ¥å£ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å· / generate 渲æ+è½åº+å»ç» data_snapshot / regenerate ç¨å»ç»å¿«ç
§ä¸åä¸çæ¬é渲", |
| | | "æ¥åç¼å· QR+yyyyMMdd+4使µæ°´ï¼æå¤©ç¬ç«ï¼å¯æ¾å¼æå®ï¼æå·ä¼æ¥åºå
·ä½ç¼å·ï¼", |
| | | "ç¼ºå£æ¸
ååªå¨ preview/generate/regenerate ååºéè¿åï¼ä¸è½åº", |
| | | "PDF(Playwright) 彿¡£ä¸ MES åç§è´¨æ£åå½ä¸å对æ¥å¾
åç»è½®æ¬¡" |
| | | ], |
| | | "objects": [ |
| | | "æ¥å模æ¿", |
| | | "æ¥åå®ä¾" |
| | | ], |
| | | "roles": [ |
| | | "æ¥å设计å", |
| | | "è´¨æ£åï¼åºä»¶ï¼" |
| | | ], |
| | | "upstream": [ |
| | | "è´¨éï¼è´¨æ£åä¸ä¸æï¼æ¬è½®ç±è°ç¨æ¹ä¼ å
¥ï¼" |
| | | ], |
| | | "downstream": [ |
| | | "éä»¶ä¸å¿ï¼PDF 彿¡£Â·åç»è½®æ¬¡ï¼", |
| | | "BI" |
| | | ], |
| | | "coreTables": [ |
| | | "qc_report_template", |
| | | "qc_report_template_version", |
| | | "qc_report_instance", |
| | | "qc_report_data_source", |
| | | "qc_report_rule", |
| | | "qc_report_render_record" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "dv", |
| | | "name": "设å¤ä¸å·¥è£
", |
| | | "color": "#59a8b8", |
| | | "tag": "MES-DV/TM", |
| | | "flow": null, |
| | | "positioning": "设å¤èµäº§å¥åº·ä¸çäº§èµæºä¿é", |
| | | "problem": "设å¤ç¹æ£ä¿å
»ç»´ä¿®å¯æ§è¡ãå·¥è£
ç¶æå¯æ§", |
| | | "features": [ |
| | | "设å¤å°è´¦(åæº/ç产ä¸/ä¿å
»ä¸)", |
| | | "ç¹æ£Â·ä¿å
»æ¹æ¡ä¸è®°å½", |
| | | "维修工å(è稿âç»´ä¿®âå¾
éªæ¶â已确认)", |
| | | "计éå¨å
·æ£å®", |
| | | "å·¥è£
夹å
·(å¨åº/é¢ç¨/ç»´ä¿®/æ¥åº)" |
| | | ], |
| | | "objects": [ |
| | | "设å¤", |
| | | "ç¹æ£è®°å½", |
| | | "维修工å", |
| | | "å·¥è£
" |
| | | ], |
| | | "roles": [ |
| | | "设å¤å", |
| | | "维修工", |
| | | "å·¥è£
管çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产(AI é£é©é¢æµæ¶è´¹è®¾å¤æ°æ®)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_dv_machinery", |
| | | "mes_dv_check_plan", |
| | | "mes_dv_check_record", |
| | | "mes_dv_repair", |
| | | "mes_tm_tool" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "aftersales", |
| | | "name": "å®åæå¡", |
| | | "color": "#c78bd6", |
| | | "tag": "AFTER", |
| | | "flow": "aftersales", |
| | | "positioning": "客æ·åé¦å°éè´§/ç»´ä¿®/鿬¾éç¯", |
| | | "problem": "å®åå·¥åæµè½¬ãéè´§ä¸è´¨æ£å
¥åºé款ç跨系ç»èå¨", |
| | | "features": [ |
| | | "å·¥åå
æ(è稿âå¤çä¸âå¾
å
¥åºâå¾
鿬¾âå®ç»âå
³é)", |
| | | "é®é¢å¤å®(ä¸è¬/ç»´ä¿®/éè´§)", |
| | | "客æ·è¯æ±åé¦æè¿°+éä»¶", |
| | | "å¤çç»æ+éä»¶", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "ç»´ä¿®(ç°åº/è¿å/è¿ç¨)", |
| | | "éè´§ç±ä»å¨ç©æµåèµ·âMES éå®éè´§å(åå®åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)", |
| | | "è´¨æ£ç»è®º/å
¥åº/鿬¾ä¸éåè°", |
| | | "è¡çº§æ°æ®æéåè§å¾" |
| | | ], |
| | | "objects": [ |
| | | "å®åå·¥å", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "维修记å½", |
| | | "éè´§ç³è¯·(åå°ä¿ç)" |
| | | ], |
| | | "roles": [ |
| | | "客æ", |
| | | "维修工ç¨å¸", |
| | | "å®å管çå" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(客æ·)", |
| | | "ERP(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(éå®éè´§)", |
| | | "è´¨é(RQC)", |
| | | "è´¢å¡(鿬¾)" |
| | | ], |
| | | "coreTables": [ |
| | | "after_sale_ticket", |
| | | "after_sale_ticket_item", |
| | | "after_sale_ticket_flow", |
| | | "after_sale_repair", |
| | | "after_sale_return", |
| | | "after_sale_permission" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "hrm", |
| | | "name": "人åèµæº", |
| | | "color": "#9db85a", |
| | | "tag": "HRM", |
| | | "flow": null, |
| | | "positioning": "åå·¥å
¥è½¬è°ç¦»ä¸èå¤èªé
¬", |
| | | "problem": "äººäºæµç¨å®¡æ¹åãç¦»èæ°æ®ä¸ä¸¢(交æ¥)ãç®èªèªå¨å", |
| | | "features": [ |
| | | "å工档æ¡(å
¥èèªå¨å»ºç³»ç»è´¦å·)", |
| | | "请å/å ç/è°å²/离è BPM 审æ¹", |
| | | "离è交æ¥åæ¶è½¬ç§»åå·¥ID/ç¨æ·ID/ä¸å¡æ°æ® expandUserIds", |
| | | "离èå°æèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»èå¹¶åç¨ç³»ç»è´¦å·", |
| | | "èå¤(ç§»å¨ç«¯æçèå¤ç¶æÂ·æå¡Â·è§å·æç·补å¡å®¡æ¹Â·æåº¦æ±æ»)", |
| | | "èªé
¬(åºå-社ä¿å
¬ç§¯é-个ç¨-è¯·åæ£æ¬¾Â·1.5/2/3åå çè´¹Â·åæ¾å°è´¦)", |
| | | "社ä¿å
¬ç§¯éæ¡£æ¡æé¨é¨ç»´æ¤(é¨é¨ä¸åå·¥å
±ç¨ææ°çææ¡£æ¡)", |
| | | "å¹è®è¯ä¹¦(SQLå
è¡å¾
å®ç°)" |
| | | ], |
| | | "objects": [ |
| | | "åå·¥", |
| | | "请åå", |
| | | "离èç³è¯·", |
| | | "äº¤æ¥æ å°", |
| | | "èå¤è®°å½", |
| | | "é¨é¨ç¤¾ä¿æ¡£æ¡", |
| | | "èªé
¬æ ¸ç®" |
| | | ], |
| | | "roles": [ |
| | | "HR", |
| | | "é¨é¨ä¸»ç®¡", |
| | | "åå·¥æ¬äºº" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "忍¡å(æ°æ®å¯è§æ§æ©å±)", |
| | | "system(è´¦å·)" |
| | | ], |
| | | "coreTables": [ |
| | | "hrm_employee", |
| | | "hrm_leave_application", |
| | | "hrm_resignation_application", |
| | | "hrm_user_handover", |
| | | "hrm_attendance_record", |
| | | "hrm_salary_calculation", |
| | | "hrm_salary_payment", |
| | | "hrm_employee_social_security" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "bpm", |
| | | "name": "åå审æ¹", |
| | | "color": "#e6a23c", |
| | | "tag": "BPM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»åæ®å®¡æ¹ä¸æ¢ï¼Flowableï¼", |
| | | "problem": "夿¨¡ååæ®éè¦çµæ´»å¯é
çå¤çº§å®¡æ¹", |
| | | "features": [ |
| | | "BPMN+éé飿 ¼å设计å¨", |
| | | "æµç¨å®ä¹é¨ç½²", |
| | | "审æ¹äºä»¶ç»ä¸åè°(BpmProcessInstanceStatusEvent)", |
| | | "13个ä¸å¡çå¬å¨", |
| | | "表åÂ·ç¨æ·ç»Â·æé·å ç¾" |
| | | ], |
| | | "objects": [ |
| | | "æµç¨æ¨¡å", |
| | | "æµç¨å®ä¾", |
| | | "审æ¹ä»»å¡" |
| | | ], |
| | | "roles": [ |
| | | "审æ¹äºº(ææµç¨é
ç½®)", |
| | | "æµç¨ç®¡çå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æäº¤å®¡æ¹" |
| | | ], |
| | | "downstream": [ |
| | | "åè°æ´æ°åä¸å¡åæ®ç¶æ" |
| | | ], |
| | | "coreTables": [ |
| | | "bpm_process_definition_info", |
| | | "bpm_process_instance", |
| | | "bpm_task", |
| | | "act_*", |
| | | "flowable_*" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "ai", |
| | | "name": "AI æºè½", |
| | | "color": "#56c8d8", |
| | | "tag": "AI", |
| | | "flow": "ai", |
| | | "positioning": "åæ®å½å
¥ææä¸ç产å³çè¾
å©", |
| | | "problem": "人工å½å票/æ¥ä»·æ
¢ãè´¨æ£ä¸æäº§ä¾èµç»éª", |
| | | "features": [ |
| | | "chat/chatWithImage åéé", |
| | | "OCR é¢å¡«(å票/æ¥ä»·)", |
| | | "è´¨æ£å¤å®å»ºè®®", |
| | | "缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµ", |
| | | "RAG ç¥è¯åº(Milvus)", |
| | | "AIä¸å¯ç¨æ¶ fallback 人工" |
| | | ], |
| | | "objects": [ |
| | | "ç¥è¯åº", |
| | | "AI模åé
ç½®", |
| | | "对è¯è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®", |
| | | "è´¨æ£å", |
| | | "计åå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æä¾ä¸ä¸ææ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç»æåJSON建议è¿åä¸å¡ä¾§" |
| | | ], |
| | | "coreTables": [ |
| | | "ai_chat_conversation", |
| | | "ai_chat_message", |
| | | "ai_model", |
| | | "ai_knowledge", |
| | | "ai_knowledge_document", |
| | | "ai_knowledge_segment" |
| | | ] |
| | | } |
| | | ], |
| | | "platform": { |
| | | "name": "ç³»ç»åºåº§", |
| | | "capabilities": [ |
| | | "JWT+OAuth2 认è¯Â·æ»åéªè¯ç ", |
| | | "RBAC è§è²-èå-æ°æ®èå´(å
¨é¨/é¨é¨/æ¬é¨é¨åä¸çº§/ä»
æ¬äºº/èªå®ä¹)", |
| | | "åå
¸", |
| | | "éä»¶ä¸å¿(storage-blob æä»¶ + storage-attachment æ recordType+recordId 夿å
³èï¼å
¨æ¨¡å强å¶ä½¿ç¨)", |
| | | "ç¼ç è§å(åä¸å¡èªå®ç° Redis åç¼+æ¥æ+æµæ°´)", |
| | | "Quartz 宿¶ä»»å¡Â·RocketMQ/Kafka/Redis Stream MQ·WebSocket", |
| | | "å¤ç§æ·å·²å
³é", |
| | | "å®é
system_role ä»
4 个ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼ä¸å¡åå·¥é æ°æ®æéèéå¤è§è²" |
| | | "modules": [ |
| | | { |
| | | "key": "mdm", |
| | | "name": "åºç¡ä¸»æ°æ®", |
| | | "color": "#8a94a6", |
| | | "tag": "MDM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»ç»ä¸å£å¾çä¸»æ°æ®æå¨æº", |
| | | "problem": "ç©æãåä½ãä»åºå¨ MES/ERP/CRM å¤å¤éå¤å®ä¹å¯¼è´æ°æ®ææ¶", |
| | | "features": [ |
| | | "ç©æä¸SKUï¼å«æ¹æ¬¡å±æ§é
ç½®12å¼å
³ï¼", |
| | | "ç©æåç±»æ ", |
| | | "ç©æåç±»å«åæå/æåç¬ç«å¤§ç±»", |
| | | "çäº§ç©æBOMç»´æ¤ä¸Excelæ¹é导å
¥ï¼å¯¼å
¥é»è®¤å¯ç¨ï¼å¯éè¦çå·²æç¨éï¼", |
| | | "计éåä½ä¸æ¢ç®", |
| | | "åç", |
| | | "ä»åºä¸»æ°æ®ï¼å«typeåæ®µï¼", |
| | | "MES ç©æç» MdmItemSyncApi åå忥" |
| | | ], |
| | | "objects": [ |
| | | "ç©æ", |
| | | "SKU", |
| | | "计éåä½", |
| | | "ä»åº" |
| | | ], |
| | | "roles": [ |
| | | "ä¸»æ°æ®ç®¡çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产", |
| | | "è¿éå", |
| | | "éå®", |
| | | "éè´" |
| | | ], |
| | | "coreTables": [ |
| | | "mdm_item", |
| | | "mdm_item_sku", |
| | | "mdm_item_category", |
| | | "mdm_unit_measure", |
| | | "mdm_brand", |
| | | "mdm_warehouse" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "crm", |
| | | "name": "éå®ç®¡çï¼å®¢æ·å
³ç³»ï¼", |
| | | "color": "#4f9cff", |
| | | "tag": "CRM", |
| | | "flow": "sales", |
| | | "positioning": "éå®å端ï¼ä»çº¿ç´¢å°å款ç客æ·ç»è¥", |
| | | "problem": "客æ·èµäº§æ²æ·ãåæºè½¬åãåå审æ¹ä¸å¼ç¥¨å款管æ§", |
| | | "features": [ |
| | | "线索转å客æ·", |
| | | "å
¬æµ·æ± ä¸é¢åä¸é", |
| | | "è系人", |
| | | "åæºèªå®ä¹é¶æ®µ", |
| | | "è·è¿è®°å½", |
| | | "æ¥ä»·å(AI OCR)", |
| | | "åå(BPM审æ¹âçæéå®è®¢åÂ·æ¯æExcel导å
¥)", |
| | | "å¼ç¥¨ç³è¯·(éå®è®¢å/åºåºåé填·éååèªå¨å¸¦åºå¯ä¸å·²å®¡æ ¸è®¢å)â审æ¹âå½å
¥å票(å票å·/æ¥æ/éä»¶+å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹)", |
| | | "å¼ç¥¨(BPM审æ¹Â·æ¯æExcel导å
¥Â·å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥)â忬¾(å
å¼ç¥¨æ ¡éªÂ·æ ¸éæç»å¯æåå°è®¢å/åºåº/å¼ç¥¨)", |
| | | "忬¾è®¡å(æ¶æ¬¾èç¹åå已忬¾/å®é
æ¶é´/ç¶æ)", |
| | | "客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "ææ ä¿è¯éå°è´¦(å®¢æ·ææ æ¹+å·²å®¡æ ¸éå®è®¢åÂ·ä¸æ ç»æ/éåç¶æ/éåé颿¥æ)", |
| | | "éå®ç®æ ", |
| | | "æ°æ®æéä¸çº§(è´è´£äºº/åªè¯»/读å)" |
| | | ], |
| | | "objects": [ |
| | | "线索", |
| | | "客æ·", |
| | | "è系人", |
| | | "åæº", |
| | | "æ¥ä»·å", |
| | | "åå", |
| | | "å票", |
| | | "忬¾", |
| | | "忬¾æ ¸éæç»", |
| | | "éå®ç®æ ", |
| | | "ææ ä¿è¯é" |
| | | ], |
| | | "roles": [ |
| | | "éå®å
å¤", |
| | | "éå®ç»ç", |
| | | "è´¢å¡(å¼ç¥¨å款)" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)", |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éå®è®¢å)", |
| | | "å®å(客æ·)", |
| | | "AI(æ¥ä»·OCR)" |
| | | ], |
| | | "coreTables": [ |
| | | "crm_clue", |
| | | "crm_customer", |
| | | "crm_contact", |
| | | "crm_business", |
| | | "crm_sale_quotation", |
| | | "crm_contract", |
| | | "crm_invoice", |
| | | "crm_receivable", |
| | | "crm_receivable_plan", |
| | | "crm_permission", |
| | | "crm_bid_bond" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "srm", |
| | | "name": "ä¾åºå管ç", |
| | | "color": "#c9a86a", |
| | | "tag": "SRM", |
| | | "flow": "purchase", |
| | | "positioning": "ä¾åºåæ¡£æ¡ + 询价æ¯ä»·", |
| | | "problem": "ä¾åºåä¿¡æ¯å¤å¼æ·è¡/å¤è系人维æ¤ï¼éè´å¯»æºæäº§åæ¨ªåæ¯ä»·å¹¶å¿«é转为éè´è®¢å", |
| | | "features": [ |
| | | "ä¾åºåæ¡£æ¡ä¸åç±»", |
| | | "å¤è系人/å¤é¶è¡è´¦æ·(å«é¶è¡è¡å·)", |
| | | "询价åï¼æ°å¢æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·", |
| | | "æ¯ä¸ªäº§ååç¬éå®ä¸æ ä¾åºå", |
| | | "确认åæä¸æ ä¾åºåæåçæéè´è®¢åè稿" |
| | | ], |
| | | "objects": [ |
| | | "ä¾åºå", |
| | | "询价æ¯ä»·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "ä¾åºå管çå" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éè´è®¢å)" |
| | | ], |
| | | "coreTables": [ |
| | | "srm_supplier", |
| | | "srm_supplier_contact", |
| | | "srm_supplier_bank", |
| | | "srm_supplier_category", |
| | | "srm_inquiry", |
| | | "srm_inquiry_item", |
| | | "srm_inquiry_supplier", |
| | | "srm_inquiry_quote", |
| | | "srm_inquiry_order" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "erp", |
| | | "name": "è¿éåä¸è´¢å¡", |
| | | "color": "#5fc79e", |
| | | "tag": "ERP", |
| | | "flow": "purchase", |
| | | "positioning": "åè´¸ä¸èµé忮䏿¢ï¼å MES åèµ·å®ç©æ¶å", |
| | | "problem": "éè´éå®åæ®å®¡æ¹ãæ¥ç¥¨ä»æ¬¾æ§å¶ãè®¢åæ§è¡è¿åº¦åå", |
| | | "features": [ |
| | | "éè´ç³è¯·(BPM)â订å(èªå¨/æå¨çæ)", |
| | | "确认æ¶è´§âMESå°è´§éç¥", |
| | | "å
¥åº/éè´§æ°éç¶æåå", |
| | | "éè´æ¥ç¥¨(ç»å®éè´è®¢å+MESéè´å
¥åºå·åå±å©ä½é¢åº¦æ ¡éª)", |
| | | "仿¬¾å(å¿
é¡»å
³èæ¥ç¥¨Â·BPM)", |
| | | "ä¾åºå徿¥(订å/æ¥ç¥¨/仿¬¾ä¸æµæ°´Â·å·¦å³å±ç¤ºå¼ç¥¨éé¢)", |
| | | "éå®è®¢å(BPM·审æ¹éè¿èªå¨å»ºMPS)", |
| | | "åºåºç¶æåå", |
| | | "æ¶æ¬¾å(å
³èCRM客æ·)", |
| | | "ç»ç®è´¦æ·", |
| | | "AIå票OCR" |
| | | ], |
| | | "objects": [ |
| | | "éè´ç³è¯·", |
| | | "éè´è®¢å", |
| | | "éè´æ¥ç¥¨", |
| | | "仿¬¾å", |
| | | "ä¾åºå徿¥", |
| | | "éå®è®¢å", |
| | | "æ¶æ¬¾å", |
| | | "ç»ç®è´¦æ·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®å", |
| | | "åºçº³", |
| | | "ä¼è®¡" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(åå)", |
| | | "SRM(询价确认)", |
| | | "ä¸»æ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç产(MPS)", |
| | | "ä»å¨(æ¶å)", |
| | | "è´¢å¡(æ¥ç¥¨ä»æ¬¾å
¥è´¦)" |
| | | ], |
| | | "coreTables": [ |
| | | "erp_purchase_request", |
| | | "erp_purchase_order", |
| | | "erp_purchase_invoice", |
| | | "erp_finance_payment", |
| | | "erp_sale_order", |
| | | "erp_finance_receipt", |
| | | "erp_account" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "finance", |
| | | "name": "è´¢å¡ç®¡çï¼ä¼è®¡æ ¸ç®ï¼", |
| | | "color": "#3ec9a7", |
| | | "tag": "FIN", |
| | | "flow": "finance", |
| | | "positioning": "ç¬ç«æ ¸ç®æ¨¡åï¼ä¼è®¡æ ¸ç® + èµäº§æ ¸ç® + è´¢å¡æ¥è¡¨çæ¿ï¼ä¸ ERP è¿éåè´¢å¡åæ®å离ï¼yudao-module-financeï¼", |
| | | "problem": "è¿éååªç®¡åæ®ä¸ç®¡è´¦ï¼ç¼ºå°ä¼è®¡ç§ç®/åè¯/账簿ä¸èµäº§ææ§æéæ²æ·ï¼æ æ³åºè´¦è¡¨ä¸èµäº§åå¼", |
| | | "features": [ |
| | | "ä¼è®¡ç§ç®æ (约68æ¡ä¸çº§ç§ç®ç§å·å¯å»ºä¸çº§)", |
| | | "è®°è´¦åè¯(åå·èªå¨çæÂ·åå½å贷平衡åå端åéæ ¡éª)", |
| | | "åè¯ç¶ææº æªè¿è´¦0âè¿è´¦10/ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹", |
| | | "æ»è´¦ææé´éææ±æ»", |
| | | "æç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢", |
| | | "åºå®èµäº§+è®¡æææ§", |
| | | "æ å½¢èµäº§+计ææé", |
| | | "ä¼è®¡æ ¸ç®çæ¿(æ¶æ¯/èµäº§/åè¯/æåº¦è¶å¿)", |
| | | "åè¯æ¥æºåæ®å
³è(sourceType/sourceId/sourceNoï¼å¯å溯å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾)", |
| | | "æ¥è¡¨åæ°æ¥å
¥CRM客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "éä»¶èµ°ç³»ç»éä»¶ä¸å¿ recordType=fin_voucher" |
| | | ], |
| | | "objects": [ |
| | | "ä¼è®¡ç§ç®", |
| | | "è®°è´¦åè¯", |
| | | "åè¯åå½", |
| | | "åºå®èµäº§", |
| | | "æ å½¢èµäº§" |
| | | ], |
| | | "roles": [ |
| | | "ä¼è®¡", |
| | | "è´¢å¡ä¸»ç®¡", |
| | | "èµäº§ä¼è®¡", |
| | | "管çå±" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(ERP å·²å®¡æ ¸æ¶è´§/仿¬¾/è´éåæ®)", |
| | | "CRM(å¼ç¥¨/忬¾/æ ¸é/对账æ¥è¡¨)" |
| | | ], |
| | | "downstream": [ |
| | | "è´¢å¡æ¥è¡¨çæ¿", |
| | | "BI 管ç驾驶è±" |
| | | ], |
| | | "coreTables": [ |
| | | "fin_account_subject", |
| | | "fin_voucher", |
| | | "fin_voucher_entry", |
| | | "fin_fixed_asset", |
| | | "fin_intangible_asset" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "pro", |
| | | "name": "ç产管ç", |
| | | "color": "#e0b34f", |
| | | "tag": "MES-PRO", |
| | | "flow": "production", |
| | | "positioning": "ç产æ§è¡æ ¸å¿ï¼è®¡å-å·¥å-ä»»å¡-æ¥å·¥", |
| | | "problem": "订åå°è½¦é´æ§è¡çéå±æè§£ä¸è¿ç¨å¯æ§", |
| | | "features": [ |
| | | "MPS主ç产计å(å¯ç±éå®è®¢åèªå¨å建·åå¹¶ä¸å)", |
| | | "å·¥å(æå·¥èºè·¯çº¿èªå¨çæå·¥åºä»»å¡)", |
| | | "æ¥å·¥(æå·¥åºé¡ºåºæ§å¶Â·BPM审æ¹)", |
| | | "ç产æäº§(éå·¥ä½ç«åæå²ä½ä»ãå工管çãå¸¦åºæ¥å·¥äººÂ·ä¸è¦æ±å¼éç³»ç»è´¦å·)", |
| | | "å岿£çº¿è¾¹åº/产åºå
¥åº", |
| | | "å®ç¯", |
| | | "å·¥èºè·¯çº¿Â·å·¥åºÂ·å·¥åBOM", |
| | | "ç å设计项ç®(PD·审æ¹å½æ¡£)", |
| | | "AI åç±»é¢æµ" |
| | | ], |
| | | "objects": [ |
| | | "MPS", |
| | | "ç产工å", |
| | | "ç产任å¡", |
| | | "æ¥å·¥å", |
| | | "å·¥èºè·¯çº¿", |
| | | "å·¥åBOM", |
| | | "设计项ç®" |
| | | ], |
| | | "roles": [ |
| | | "计åå", |
| | | "车é´ä¸»ä»»", |
| | | "æä½å·¥", |
| | | "å·¥èºå" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(颿/å
¥åº)", |
| | | "è´¨é(IPQC)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_pro_mps", |
| | | "mes_pro_work_order", |
| | | "mes_pro_task", |
| | | "mes_pro_feedback", |
| | | "mes_pro_route", |
| | | "mes_pro_process", |
| | | "mes_pro_work_order_bom", |
| | | "mes_pd_project" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "wm", |
| | | "name": "ä»å¨ç®¡ç", |
| | | "color": "#7e6bd6", |
| | | "tag": "MES-WM", |
| | | "flow": "warehouse", |
| | | "positioning": "åå
WMSï¼åæ®é©±å¨çåºåè´¦å®ä¸è´", |
| | | "problem": "夿¥æºåºå
¥åºãæ¹æ¬¡/SN 追溯ãåºå精确å°åºä½", |
| | | "features": [ |
| | | "15ç§åºå
¥åºåæ®", |
| | | "åºåå°è´¦(ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºå)", |
| | | "äºå¡æµæ°´åªè¯»çç", |
| | | "è°æ¨æå¯¹äºå¡", |
| | | "çç¹(éæ/å¨æÂ·ç²ç·çççäºè°æ´)", |
| | | "æ¹æ¬¡/SN/æ¡ç /è£
ç®±åµå¥", |
| | | "èæçº¿è¾¹åº(å
许è´åºå)", |
| | | "åºåå ç¨(5ç±»)", |
| | | "å级å»ç»", |
| | | "WMS审æ¹é
ç½®+BPM", |
| | | "å¯¹å¤ WmsStockApi/WmsTransactionApi" |
| | | ], |
| | | "objects": [ |
| | | "å°è´§éç¥", |
| | | "éè´å
¥åº", |
| | | "颿", |
| | | "å®å·¥å
¥åº", |
| | | "éå®åºåº", |
| | | "åè´§éç¥", |
| | | "éå®éè´§", |
| | | "ä¾åºåéè´§", |
| | | "è°æ¨", |
| | | "çç¹", |
| | | "åºåå°è´¦", |
| | | "æ¹æ¬¡", |
| | | "SN" |
| | | ], |
| | | "roles": [ |
| | | "ä»ç®¡å", |
| | | "æ£è´§å", |
| | | "çç¹å" |
| | | ], |
| | | "upstream": [ |
| | | "éè´(æ¶è´§)", |
| | | "ç产(é¢éæ)", |
| | | "éå®(åè´§)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(æ°éåå)", |
| | | "è´¢å¡(ææ¬åºç¡)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_wm_warehouse", |
| | | "mes_wm_material_stock", |
| | | "mes_wm_transaction", |
| | | "mes_wm_item_receipt", |
| | | "mes_wm_product_issue", |
| | | "mes_wm_product_receipt", |
| | | "mes_wm_product_sales", |
| | | "mes_wm_return_sales", |
| | | "mes_wm_transfer", |
| | | "mes_wm_stock_taking_task", |
| | | "mes_wm_batch", |
| | | "mes_wm_sn", |
| | | "mes_wm_stock_reserve" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qc", |
| | | "name": "è´¨é管ç", |
| | | "color": "#e06c6c", |
| | | "tag": "MES-QC", |
| | | "flow": "quality", |
| | | "positioning": "å鿣éªé¸å£ + ä¸åæ ¼åéç¯å¤ç½®", |
| | | "problem": "æ¥æ/è¿ç¨/åºè´§/éè´§æ£éªæ ååï¼ä¸åæ ¼å¯è¿½æº¯å¤ç½®", |
| | | "features": [ |
| | | "IQC æ¥æ(å°è´§/å¤å)", |
| | | "IPQC è¿ç¨(è卿¥å·¥)", |
| | | "OQC åºè´§(èå¨éå®åºåº)", |
| | | "RQC éè´§(èå¨éæ/å®å)", |
| | | "è´¨æ£æ¹æ¡Â·ææ ·缺é·åº", |
| | | "æ£æµç»æ:åæ ¼/ç¹é/éè´§/æ¥åº", |
| | | "NCR:è¯å®¡âå¤ç½®(éè´§/æ¥åº/è¿å·¥/让æ¥/é级)âå
³é", |
| | | "AI å¤å®å»ºè®®" |
| | | ], |
| | | "objects": [ |
| | | "IQC", |
| | | "IPQC", |
| | | "OQC", |
| | | "RQC", |
| | | "è´¨æ£æ¹æ¡", |
| | | "NCR", |
| | | "缺é·è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "è´¨æ£å(IQC/IPQC/OQC)", |
| | | "è´¨éå·¥ç¨å¸" |
| | | ], |
| | | "upstream": [ |
| | | "ä»å¨(å°è´§)", |
| | | "ç产(æ¥å·¥)", |
| | | "éå®(åºåº)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(åæ ¼å
¥åº/æ¥åºåºåº)", |
| | | "ç产(NCRè¿å·¥)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_qc_iqc", |
| | | "mes_qc_ipqc", |
| | | "mes_qc_oqc", |
| | | "mes_qc_rqc", |
| | | "mes_qc_template", |
| | | "mes_qc_indicator", |
| | | "mes_qc_defect", |
| | | "mes_qc_ncr" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qcreport", |
| | | "name": "æºè½è´¨æ£æ¥å", |
| | | "color": "#b06ce0", |
| | | "tag": "QC-REPORT", |
| | | "flow": "quality", |
| | | "positioning": "å¯è§å设计æ¥åæ¨¡æ¿ â ä¸é®åºä»¶å¹¶å»ç»å岿¥å", |
| | | "problem": "åè¡ä¸è´¨æ£æ¥åæ ¼å¼åå¼ï¼æç硬ç¼ç æ¹ä¸æ¬¡å䏿¬¡çï¼ä¸å岿¥åå¿
é¡»å¯å¤ç°ãä¸éä¸å¡æ°æ®åå", |
| | | "features": [ |
| | | "GrapesJS å¯è§å设计å¨ï¼è´¨æ£ç»ä»¶èµ°æ³¨åæºå¶ï¼ä¸ç¡¬ç¼ç è¿ç¼è¾å¨ï¼", |
| | | "æ¨¡æ¿ + å¤çæ¬ï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸çæ¬å
容ä¸å¯è¦ç", |
| | | "ç»ä»¶æ°æ®ç»å®ä¸ç¬ç«å¤å®è§å弿ï¼ç¦ç¨ eval / ScriptEngineï¼", |
| | | "ä¸å端éå对é½ç Java 渲æå¼æï¼åºç« HTML å¥ç¦» on* äºä»¶å±æ§ä¸ javascript:/vbscript:/data: åè®®", |
| | | "åºä»¶æ¥å£ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å· / generate 渲æ+è½åº+å»ç» data_snapshot / regenerate ç¨å»ç»å¿«ç
§ä¸åä¸çæ¬é渲", |
| | | "æ¥åç¼å· QR+yyyyMMdd+4使µæ°´ï¼æå¤©ç¬ç«ï¼å¯æ¾å¼æå®ï¼æå·ä¼æ¥åºå
·ä½ç¼å·ï¼", |
| | | "ç¼ºå£æ¸
ååªå¨ preview/generate/regenerate ååºéè¿åï¼ä¸è½åº", |
| | | "PDF(Playwright) 彿¡£ä¸ MES åç§è´¨æ£åå½ä¸å对æ¥å¾
åç»è½®æ¬¡" |
| | | ], |
| | | "objects": [ |
| | | "æ¥å模æ¿", |
| | | "æ¥åå®ä¾" |
| | | ], |
| | | "roles": [ |
| | | "æ¥å设计å", |
| | | "è´¨æ£åï¼åºä»¶ï¼" |
| | | ], |
| | | "upstream": [ |
| | | "è´¨éï¼è´¨æ£åä¸ä¸æï¼æ¬è½®ç±è°ç¨æ¹ä¼ å
¥ï¼" |
| | | ], |
| | | "downstream": [ |
| | | "éä»¶ä¸å¿ï¼PDF 彿¡£Â·åç»è½®æ¬¡ï¼", |
| | | "BI" |
| | | ], |
| | | "coreTables": [ |
| | | "qc_report_template", |
| | | "qc_report_template_version", |
| | | "qc_report_instance", |
| | | "qc_report_data_source", |
| | | "qc_report_rule", |
| | | "qc_report_render_record" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "dv", |
| | | "name": "设å¤ä¸å·¥è£
", |
| | | "color": "#59a8b8", |
| | | "tag": "MES-DV/TM", |
| | | "flow": null, |
| | | "positioning": "设å¤èµäº§å¥åº·ä¸çäº§èµæºä¿é", |
| | | "problem": "设å¤ç¹æ£ä¿å
»ç»´ä¿®å¯æ§è¡ãå·¥è£
ç¶æå¯æ§", |
| | | "features": [ |
| | | "设å¤å°è´¦(åæº/ç产ä¸/ä¿å
»ä¸)", |
| | | "ç¹æ£Â·ä¿å
»æ¹æ¡ä¸è®°å½", |
| | | "维修工å(è稿âç»´ä¿®âå¾
éªæ¶â已确认)", |
| | | "计éå¨å
·æ£å®", |
| | | "å·¥è£
夹å
·(å¨åº/é¢ç¨/ç»´ä¿®/æ¥åº)" |
| | | ], |
| | | "objects": [ |
| | | "设å¤", |
| | | "ç¹æ£è®°å½", |
| | | "维修工å", |
| | | "å·¥è£
" |
| | | ], |
| | | "roles": [ |
| | | "设å¤å", |
| | | "维修工", |
| | | "å·¥è£
管çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产(AI é£é©é¢æµæ¶è´¹è®¾å¤æ°æ®)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_dv_machinery", |
| | | "mes_dv_check_plan", |
| | | "mes_dv_check_record", |
| | | "mes_dv_repair", |
| | | "mes_tm_tool" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "aftersales", |
| | | "name": "å®åæå¡", |
| | | "color": "#c78bd6", |
| | | "tag": "AFTER", |
| | | "flow": "aftersales", |
| | | "positioning": "客æ·åé¦å°éè´§/ç»´ä¿®/鿬¾éç¯", |
| | | "problem": "å®åå·¥åæµè½¬ãéè´§ä¸è´¨æ£å
¥åºé款ç跨系ç»èå¨", |
| | | "features": [ |
| | | "å·¥åå
æ(è稿âå¤çä¸âå¾
å
¥åºâå¾
鿬¾âå®ç»âå
³é)", |
| | | "é®é¢å¤å®(ä¸è¬/ç»´ä¿®/éè´§)", |
| | | "客æ·è¯æ±åé¦æè¿°+éä»¶", |
| | | "å¤çç»æ+éä»¶", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "ç»´ä¿®(ç°åº/è¿å/è¿ç¨)", |
| | | "éè´§ç±ä»å¨ç©æµåèµ·âMES éå®éè´§å(åå®åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)", |
| | | "è´¨æ£ç»è®º/å
¥åº/鿬¾ä¸éåè°", |
| | | "è¡çº§æ°æ®æéåè§å¾" |
| | | ], |
| | | "objects": [ |
| | | "å®åå·¥å", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "维修记å½", |
| | | "éè´§ç³è¯·(åå°ä¿ç)" |
| | | ], |
| | | "roles": [ |
| | | "客æ", |
| | | "维修工ç¨å¸", |
| | | "å®å管çå" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(客æ·)", |
| | | "ERP(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(éå®éè´§)", |
| | | "è´¨é(RQC)", |
| | | "è´¢å¡(鿬¾)" |
| | | ], |
| | | "coreTables": [ |
| | | "after_sale_ticket", |
| | | "after_sale_ticket_item", |
| | | "after_sale_ticket_flow", |
| | | "after_sale_repair", |
| | | "after_sale_return", |
| | | "after_sale_permission" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "hrm", |
| | | "name": "人åèµæº", |
| | | "color": "#9db85a", |
| | | "tag": "HRM", |
| | | "flow": null, |
| | | "positioning": "åå·¥å
¥è½¬è°ç¦»ä¸èå¤èªé
¬", |
| | | "problem": "äººäºæµç¨å®¡æ¹åãç¦»èæ°æ®ä¸ä¸¢(交æ¥)ãç®èªèªå¨å", |
| | | "features": [ |
| | | "å工档æ¡(å
¥èèªå¨å»ºç³»ç»è´¦å·)", |
| | | "请å/å ç/è°å²/离è BPM 审æ¹", |
| | | "离è交æ¥åæ¶è½¬ç§»åå·¥ID/ç¨æ·ID/ä¸å¡æ°æ® expandUserIds", |
| | | "离èå°æèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»èå¹¶åç¨ç³»ç»è´¦å·", |
| | | "èå¤(ç§»å¨ç«¯æçèå¤ç¶æÂ·æå¡Â·è§å·æç·补å¡å®¡æ¹Â·æåº¦æ±æ»)", |
| | | "èªé
¬(åºå-社ä¿å
¬ç§¯é-个ç¨-è¯·åæ£æ¬¾Â·1.5/2/3åå çè´¹Â·åæ¾å°è´¦)", |
| | | "社ä¿å
¬ç§¯éæ¡£æ¡æé¨é¨ç»´æ¤(é¨é¨ä¸åå·¥å
±ç¨ææ°çææ¡£æ¡)", |
| | | "å¹è®è¯ä¹¦(SQLå
è¡å¾
å®ç°)" |
| | | ], |
| | | "objects": [ |
| | | "åå·¥", |
| | | "请åå", |
| | | "离èç³è¯·", |
| | | "äº¤æ¥æ å°", |
| | | "èå¤è®°å½", |
| | | "é¨é¨ç¤¾ä¿æ¡£æ¡", |
| | | "èªé
¬æ ¸ç®" |
| | | ], |
| | | "roles": [ |
| | | "HR", |
| | | "é¨é¨ä¸»ç®¡", |
| | | "åå·¥æ¬äºº" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "忍¡å(æ°æ®å¯è§æ§æ©å±)", |
| | | "system(è´¦å·)" |
| | | ], |
| | | "coreTables": [ |
| | | "hrm_employee", |
| | | "hrm_leave_application", |
| | | "hrm_resignation_application", |
| | | "hrm_user_handover", |
| | | "hrm_attendance_record", |
| | | "hrm_salary_calculation", |
| | | "hrm_salary_payment", |
| | | "hrm_employee_social_security" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "bpm", |
| | | "name": "åå审æ¹", |
| | | "color": "#e6a23c", |
| | | "tag": "BPM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»åæ®å®¡æ¹ä¸æ¢ï¼Flowableï¼", |
| | | "problem": "夿¨¡ååæ®éè¦çµæ´»å¯é
çå¤çº§å®¡æ¹", |
| | | "features": [ |
| | | "BPMN+éé飿 ¼å设计å¨", |
| | | "æµç¨å®ä¹é¨ç½²", |
| | | "审æ¹äºä»¶ç»ä¸åè°(BpmProcessInstanceStatusEvent)", |
| | | "13个ä¸å¡çå¬å¨", |
| | | "表åÂ·ç¨æ·ç»Â·æé·å ç¾" |
| | | ], |
| | | "objects": [ |
| | | "æµç¨æ¨¡å", |
| | | "æµç¨å®ä¾", |
| | | "审æ¹ä»»å¡" |
| | | ], |
| | | "roles": [ |
| | | "审æ¹äºº(ææµç¨é
ç½®)", |
| | | "æµç¨ç®¡çå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æäº¤å®¡æ¹" |
| | | ], |
| | | "downstream": [ |
| | | "åè°æ´æ°åä¸å¡åæ®ç¶æ" |
| | | ], |
| | | "coreTables": [ |
| | | "bpm_process_definition_info", |
| | | "bpm_process_instance", |
| | | "bpm_task", |
| | | "act_*", |
| | | "flowable_*" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "ai", |
| | | "name": "AI æºè½", |
| | | "color": "#56c8d8", |
| | | "tag": "AI", |
| | | "flow": "ai", |
| | | "positioning": "åæ®å½å
¥ææä¸ç产å³çè¾
å©", |
| | | "problem": "人工å½å票/æ¥ä»·æ
¢ãè´¨æ£ä¸æäº§ä¾èµç»éª", |
| | | "features": [ |
| | | "chat/chatWithImage åéé", |
| | | "OCR é¢å¡«(å票/æ¥ä»·)", |
| | | "è´¨æ£å¤å®å»ºè®®", |
| | | "缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµ", |
| | | "RAG ç¥è¯åº(Milvus)", |
| | | "AIä¸å¯ç¨æ¶ fallback 人工" |
| | | ], |
| | | "objects": [ |
| | | "ç¥è¯åº", |
| | | "AI模åé
ç½®", |
| | | "对è¯è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®", |
| | | "è´¨æ£å", |
| | | "计åå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æä¾ä¸ä¸ææ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç»æåJSON建议è¿åä¸å¡ä¾§" |
| | | ], |
| | | "coreTables": [ |
| | | "ai_chat_conversation", |
| | | "ai_chat_message", |
| | | "ai_model", |
| | | "ai_knowledge", |
| | | "ai_knowledge_document", |
| | | "ai_knowledge_segment" |
| | | ] |
| | | } |
| | | ], |
| | | "unused": [ |
| | | "im 模å(IM/RTCï¼ä¸å¡æªæ¶è´¹)", |
| | | "member 模å(C端ä¼åï¼éç)" |
| | | ] |
| | | } |
| | | "platform": { |
| | | "name": "ç³»ç»åºåº§", |
| | | "capabilities": [ |
| | | "JWT+OAuth2 认è¯Â·æ»åéªè¯ç ", |
| | | "RBAC è§è²-èå-æ°æ®èå´(å
¨é¨/é¨é¨/æ¬é¨é¨åä¸çº§/ä»
æ¬äºº/èªå®ä¹)", |
| | | "åå
¸", |
| | | "éä»¶ä¸å¿(storage-blob æä»¶ + storage-attachment æ recordType+recordId 夿å
³èï¼å
¨æ¨¡å强å¶ä½¿ç¨)", |
| | | "ç¼ç è§å(åä¸å¡èªå®ç° Redis åç¼+æ¥æ+æµæ°´)", |
| | | "Quartz 宿¶ä»»å¡Â·RocketMQ/Kafka/Redis Stream MQ·WebSocket", |
| | | "å¤ç§æ·å·²å
³é", |
| | | "å®é
system_role ä»
4 个ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼ä¸å¡åå·¥é æ°æ®æéèéå¤è§è²" |
| | | ], |
| | | "unused": [ |
| | | "im 模å(IM/RTCï¼ä¸å¡æªæ¶è´¹)", |
| | | "member 模å(C端ä¼åï¼éç)" |
| | | ] |
| | | } |
| | | } |
| | |
| | | "coreObjects": 53, |
| | | "documentFlows": 7, |
| | | "approvalListeners": 13, |
| | | "aiCapabilities": 8, |
| | | "aiCapabilities": 9, |
| | | "wmBillTypes": 15 |
| | | }, |
| | | "businessAnswers": [ |
| | |
| | | ], |
| | | [ |
| | | "ç产å¦ä½äº§çåºå", |
| | | "æ¥å·¥å®¡æ¹éè¿åèªå¨çæäº§å产åºåå
¥åºï¼è´¨æ£å·¥åºå
å¾
æ£ãIPQC åæè¡å
¥åºï¼ï¼åå²å·¥åºæ BOM æ£çº¿è¾¹åº" |
| | | "æ¥å·¥å®¡æ¹éè¿åèªå¨çæäº§å产åºåï¼æåå
å¾
æ£ã宿 IPQC åæè¡å
¥åºï¼åæåç´æ¥æç产 BOM ç®æ åºä½èªå¨å
¥åºï¼ä¸çè´¨æ£ï¼å·¥ååå¨ç产 BOM å³èªå¨æ£çº¿è¾¹åº" |
| | | ], |
| | | [ |
| | | "è´¨éå¨åªéä»å
¥", |
| | |
| | | ], |
| | | [ |
| | | "AI å¨åªéåä¸", |
| | | "å票/æ¥ä»· OCR é¢å¡«ãè´¨æ£ç»æå»ºè®®ã缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµï¼å为ãä¸å¡ç»è£
Promptâæ¨¡åâJSONâäººå·¥ç¡®è®¤ãæ¨¡å¼" |
| | | "å票/æ¥ä»· OCR é¢å¡«ãè´¨æ£ç»æå»ºè®®ã缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµï¼å为ãä¸å¡ç»è£
Promptâæ¨¡åâJSONâäººå·¥ç¡®è®¤ãæ¨¡å¼ãæºè½ä½ç©æå¯¼å
¥å¦èµ°è§å+Java 颿£é¾è·¯ï¼äººå·¥ç¡®è®¤åå¹çæäº¤ï¼åªæ°å»ºä¸åæ¥ MESãAI å
¥å£ç»ä¸åæ»å¼å
³ VITE_APP_AI_ENABLE æ§å¶ï¼å
³éå³éèæ¨¡åè·¯ç±ä¸åä¸å¡ AI æé®ã模å管çæãç±»å+è½åãå¯ä¸å¯ç¨ï¼å¯ç¨ä¸ä¸ªèªå¨å
³éåç»å
¶ä»æ¨¡åï¼å¯¹è¯å text è½åãå¾çè¯å«å vision è½åï¼æªå¯ç¨å¯¹åºè½å模åç´æ¥æ¥éæç¤ºå»å¯ç¨" |
| | | ], |
| | | [ |
| | | "模åé´æ°æ®å
³ç³»", |
| | |
| | | "name": "RAG ç¥è¯åº", |
| | | "flow": "ææ¡£ â POI/Tika æææ¬ â åç(800token) â åéåå
¥ Milvus â æ£ç´¢æ¥å£(topK3,éå¼0.7)ãå½åæ ä¸å¡æ¨¡åæ¶è´¹ï¼é¢çè½åã", |
| | | "callsApis": [] |
| | | }, |
| | | { |
| | | "name": "æºè½ä½ç©æå¯¼å
¥", |
| | | "flow": "å建补å½ä¼è¯âä¸ä¼ å¹¶ç»å®éä»¶âPython è§£æ CSV/XLSX åéâJava åªè¯»é¢æ£å类·åä½Â·ç¼ç å卿§å¹¶çæç¡®å®æ§æè¦â人工修订确认âcommandId+å¹çé®éè¡ç¬ç«äºå¡æäº¤âéè¡åæ§å«ç®æ ç©æIDï¼ç¼ç å·²åå¨è·³è¿ï¼ä¸æ´æ°ç©æãä¸è§¦å MES", |
| | | "callsApis": [ |
| | | "SystemAgentImportBridgeService", |
| | | "MdmItemService", |
| | | "MdmAgentImportPreflightService", |
| | | "MdmAgentImportCommandService" |
| | | ] |
| | | } |
| | | ], |
| | | "pendingConfirm": [ |
| | |
| | | }</script> |
| | | <script type="application/json" id="data-modules">{ |
| | | "modules": [ |
| | | {"key": "mdm", "name": "åºç¡ä¸»æ°æ®", "color": "#8a94a6", "tag": "MDM", "flow": null, |
| | | "positioning": "å
¨ç³»ç»ç»ä¸å£å¾çä¸»æ°æ®æå¨æº", |
| | | "problem": "ç©æãåä½ãä»åºå¨ MES/ERP/CRM å¤å¤éå¤å®ä¹å¯¼è´æ°æ®ææ¶", |
| | | "features": ["ç©æä¸SKUï¼å«æ¹æ¬¡å±æ§é
ç½®12å¼å
³ï¼", "ç©æåç±»æ ", "计éåä½ä¸æ¢ç®", "åç", "ä»åºä¸»æ°æ®ï¼å«typeåæ®µï¼", "MES ç©æç» MdmItemSyncApi åå忥"], |
| | | "objects": ["ç©æ", "SKU", "计éåä½", "ä»åº"], |
| | | "roles": ["ä¸»æ°æ®ç®¡çå"], |
| | | "upstream": [], "downstream": ["ç产", "è¿éå", "éå®", "éè´"], |
| | | "coreTables": ["mdm_item", "mdm_item_sku", "mdm_item_category", "mdm_unit_measure", "mdm_brand", "mdm_warehouse"]}, |
| | | {"key": "crm", "name": "éå®ç®¡çï¼å®¢æ·å
³ç³»ï¼", "color": "#4f9cff", "tag": "CRM", "flow": "sales", |
| | | "positioning": "éå®å端ï¼ä»çº¿ç´¢å°å款ç客æ·ç»è¥", |
| | | "problem": "客æ·èµäº§æ²æ·ãåæºè½¬åãåå审æ¹ä¸å¼ç¥¨å款管æ§", |
| | | "features": ["线索转å客æ·", "å
¬æµ·æ± ä¸é¢åä¸é", "è系人", "åæºèªå®ä¹é¶æ®µ", "è·è¿è®°å½", "æ¥ä»·å(AI OCR)", "åå(BPM审æ¹âçæéå®è®¢åÂ·æ¯æExcel导å
¥)", "å¼ç¥¨ç³è¯·(ç»å®éå®è®¢å+MESéå®åºåºå)â审æ¹âå½å
¥å票(å票å·/æ¥æ/éä»¶+å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹)", "å¼ç¥¨(BPM审æ¹Â·æ¯æExcel导å
¥Â·å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥)â忬¾(å
å¼ç¥¨æ ¡éªÂ·æ ¸éæç»å¯æåå°è®¢å/åºåº/å¼ç¥¨)", "忬¾è®¡å(æ¶æ¬¾èç¹åå已忬¾/å®é
æ¶é´/ç¶æ)", "客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", "ææ ä¿è¯éå°è´¦(å®¢æ·ææ æ¹+å·²å®¡æ ¸éå®è®¢åÂ·ä¸æ ç»æ/éåç¶æ/éåé颿¥æ)", "éå®ç®æ ", "æ°æ®æéä¸çº§(è´è´£äºº/åªè¯»/读å)"], |
| | | "objects": ["线索", "客æ·", "è系人", "åæº", "æ¥ä»·å", "åå", "å票", "忬¾", "忬¾æ ¸éæç»", "éå®ç®æ ", "ææ ä¿è¯é"], |
| | | "roles": ["éå®å
å¤", "éå®ç»ç", "è´¢å¡(å¼ç¥¨å款)"], |
| | | "upstream": ["ä¸»æ°æ®(ç©æ)", "è¿éå(éå®è®¢å)"], "downstream": ["è¿éå(éå®è®¢å)", "å®å(客æ·)", "AI(æ¥ä»·OCR)"], |
| | | "coreTables": ["crm_clue", "crm_customer", "crm_contact", "crm_business", "crm_sale_quotation", "crm_contract", "crm_invoice", "crm_receivable", "crm_receivable_plan", "crm_permission", "crm_bid_bond"]}, |
| | | {"key": "srm", "name": "ä¾åºå管ç", "color": "#c9a86a", "tag": "SRM", "flow": "purchase", |
| | | "positioning": "ä¾åºåæ¡£æ¡ + 询价æ¯ä»·", |
| | | "problem": "ä¾åºåä¿¡æ¯å¤å¼æ·è¡/å¤è系人维æ¤ï¼éè´å¯»æºæäº§åæ¨ªåæ¯ä»·å¹¶å¿«é转为éè´è®¢å", |
| | | "features": ["ä¾åºåæ¡£æ¡ä¸åç±»", "å¤è系人/å¤é¶è¡è´¦æ·(å«é¶è¡è¡å·)", "询价åï¼æ°å¢æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·", "æ¯ä¸ªäº§ååç¬éå®ä¸æ ä¾åºå", "确认åæä¸æ ä¾åºåæåçæéè´è®¢åè稿"], |
| | | "objects": ["ä¾åºå", "询价æ¯ä»·"], |
| | | "roles": ["éè´å", "ä¾åºå管çå"], |
| | | "upstream": ["ä¸»æ°æ®(ç©æ)"], "downstream": ["è¿éå(éè´è®¢å)"], |
| | | "coreTables": ["srm_supplier", "srm_supplier_contact", "srm_supplier_bank", "srm_supplier_category", "srm_inquiry", "srm_inquiry_item", "srm_inquiry_supplier", "srm_inquiry_quote", "srm_inquiry_order"]}, |
| | | {"key": "erp", "name": "è¿éåä¸è´¢å¡", "color": "#5fc79e", "tag": "ERP", "flow": "purchase", |
| | | "positioning": "åè´¸ä¸èµé忮䏿¢ï¼å MES åèµ·å®ç©æ¶å", |
| | | "problem": "éè´éå®åæ®å®¡æ¹ãæ¥ç¥¨ä»æ¬¾æ§å¶ãè®¢åæ§è¡è¿åº¦åå", |
| | | "features": ["éè´ç³è¯·(BPM)â订å(èªå¨/æå¨çæ)", "确认æ¶è´§âMESå°è´§éç¥", "å
¥åº/éè´§æ°éç¶æåå", "éè´æ¥ç¥¨(ç»å®éè´è®¢å+MESéè´å
¥åºå·åå±å©ä½é¢åº¦æ ¡éª)", "仿¬¾å(å¿
é¡»å
³èæ¥ç¥¨Â·BPM)", "éå®è®¢å(BPM·审æ¹éè¿èªå¨å»ºMPS)", "åºåºç¶æåå", "æ¶æ¬¾å(å
³èCRM客æ·)", "ç»ç®è´¦æ·", "AIå票OCR"], |
| | | "objects": ["éè´ç³è¯·", "éè´è®¢å", "éè´æ¥ç¥¨", "仿¬¾å", "éå®è®¢å", "æ¶æ¬¾å", "ç»ç®è´¦æ·"], |
| | | "roles": ["éè´å", "éå®å", "åºçº³", "ä¼è®¡"], |
| | | "upstream": ["CRM(åå)", "SRM(宿 )", "ä¸»æ°æ®"], "downstream": ["ç产(MPS)", "ä»å¨(æ¶å)"], |
| | | "coreTables": ["erp_purchase_request", "erp_purchase_order", "erp_purchase_invoice", "erp_finance_payment", "erp_sale_order", "erp_finance_receipt", "erp_account"]}, |
| | | {"key": "finance", "name": "è´¢å¡ç®¡çï¼ä¼è®¡æ ¸ç®ï¼", "color": "#3ec9a7", "tag": "FIN", "flow": "finance", |
| | | "positioning": "ç¬ç«æ ¸ç®æ¨¡åï¼ä¼è®¡æ ¸ç® + èµäº§æ ¸ç® + è´¢å¡æ¥è¡¨çæ¿ï¼ä¸ ERP è¿éåè´¢å¡åæ®å离ï¼yudao-module-financeï¼", |
| | | "problem": "è¿éååªç®¡åæ®ä¸ç®¡è´¦ï¼ç¼ºå°ä¼è®¡ç§ç®/åè¯/账簿ä¸èµäº§ææ§æéæ²æ·ï¼æ æ³åºè´¦è¡¨ä¸èµäº§åå¼", |
| | | "features": ["ä¼è®¡ç§ç®æ (约68æ¡ä¸çº§ç§ç®ç§å·å¯å»ºä¸çº§)", "è®°è´¦åè¯(åå·èªå¨çæÂ·åå½å贷平衡åå端åéæ ¡éª)", "åè¯ç¶ææº æªè¿è´¦0âè¿è´¦10/ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹", "æ»è´¦ææé´éææ±æ»", "æç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢", "åºå®èµäº§+è®¡æææ§", "æ å½¢èµäº§+计ææé", "ä¼è®¡æ ¸ç®çæ¿(æ¶æ¯/èµäº§/åè¯/æåº¦è¶å¿)", "åè¯æ¥æºåæ®å
³è(sourceType/sourceId/sourceNoï¼å¯å溯å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾)", "æ¥è¡¨åæ°æ¥å
¥CRM客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", "éä»¶èµ°ç³»ç»éä»¶ä¸å¿ recordType=fin_voucher"], |
| | | "objects": ["ä¼è®¡ç§ç®", "è®°è´¦åè¯", "åè¯åå½", "åºå®èµäº§", "æ å½¢èµäº§"], |
| | | "roles": ["ä¼è®¡", "è´¢å¡ä¸»ç®¡", "èµäº§ä¼è®¡", "管çå±"], |
| | | "upstream": ["è¿éå(ERP å·²å®¡æ ¸æ¶è´§/仿¬¾/è´éåæ®)", "CRM(å¼ç¥¨/忬¾/æ ¸é/对账æ¥è¡¨)"], "downstream": ["è´¢å¡æ¥è¡¨çæ¿", "BI 管ç驾驶è±"], |
| | | "coreTables": ["fin_account_subject", "fin_voucher", "fin_voucher_entry", "fin_fixed_asset", "fin_intangible_asset"]}, |
| | | {"key": "pro", "name": "ç产管ç", "color": "#e0b34f", "tag": "MES-PRO", "flow": "production", |
| | | "positioning": "ç产æ§è¡æ ¸å¿ï¼è®¡å-å·¥å-ä»»å¡-æ¥å·¥", |
| | | "problem": "订åå°è½¦é´æ§è¡çéå±æè§£ä¸è¿ç¨å¯æ§", |
| | | "features": ["MPS主ç产计å(å¯ç±éå®è®¢åèªå¨å建·åå¹¶ä¸å)", "å·¥å(æå·¥èºè·¯çº¿èªå¨çæå·¥åºä»»å¡)", "æ¥å·¥(æå·¥åºé¡ºåºæ§å¶Â·BPM审æ¹Â·æè®¡æ¶/计件工èµå®é¢è®¡èª)", "æ åå·¥æ¶(转éÃèè·/线é度/满éç¾åæ¯+è¾
å©å·¥æ¶)ä¸å·¥æ¶èæ ¸å¯¹æ¯", "å岿£çº¿è¾¹åº/产åºå
¥åº", "å®ç¯", "å·¥èºè·¯çº¿Â·å·¥åºÂ·å·¥åBOM", "ç å设计项ç®(PD·审æ¹å½æ¡£)", "AI åç±»é¢æµ"], |
| | | "objects": ["MPS", "ç产工å", "ç产任å¡", "æ¥å·¥å", "ç产工åº", "è¾
å©å·¥æ¶é
ç½®", "å·¥èºè·¯çº¿", "å·¥åBOM", "设计项ç®"], |
| | | "roles": ["计åå", "车é´ä¸»ä»»", "æä½å·¥", "å·¥èºå"], |
| | | "upstream": ["è¿éå(éå®è®¢å)"], "downstream": ["ä»å¨(颿/å
¥åº)", "è´¨é(IPQC)"], |
| | | "coreTables": ["mes_pro_mps", "mes_pro_work_order", "mes_pro_task", "mes_pro_feedback", "mes_pro_worktime_aux", "mes_pro_feedback_aux", "mes_pro_route", "mes_pro_process", "mes_pro_work_order_bom", "mes_pd_project"]}, |
| | | {"key": "wm", "name": "ä»å¨ç®¡ç", "color": "#7e6bd6", "tag": "MES-WM", "flow": "warehouse", |
| | | "positioning": "åå
WMSï¼åæ®é©±å¨çåºåè´¦å®ä¸è´", |
| | | "problem": "夿¥æºåºå
¥åºãæ¹æ¬¡/SN 追溯ãåºå精确å°åºä½", |
| | | "features": ["15ç§åºå
¥åºåæ®", "åºåå°è´¦(ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºå)", "äºå¡æµæ°´åªè¯»çç", "è°æ¨æå¯¹äºå¡", "çç¹(éæ/å¨æÂ·ç²ç·çççäºè°æ´)", "æ¹æ¬¡/SN/æ¡ç /è£
ç®±åµå¥", "èæçº¿è¾¹åº(å
许è´åºå)", "åºåå ç¨(5ç±»)", "å级å»ç»", "WMS审æ¹é
ç½®+BPM", "å¯¹å¤ WmsStockApi/WmsTransactionApi"], |
| | | "objects": ["å°è´§éç¥", "éè´å
¥åº", "颿", "å®å·¥å
¥åº", "éå®åºåº", "åè´§éç¥", "éå®éè´§", "ä¾åºåéè´§", "è°æ¨", "çç¹", "åºåå°è´¦", "æ¹æ¬¡", "SN"], |
| | | "roles": ["ä»ç®¡å", "æ£è´§å", "çç¹å"], |
| | | "upstream": ["éè´(æ¶è´§)", "ç产(é¢éæ)", "éå®(åè´§)", "å®å(éè´§)"], "downstream": ["è¿éå(æ°éåå)", "è´¢å¡(ææ¬åºç¡)"], |
| | | "coreTables": ["mes_wm_warehouse", "mes_wm_material_stock", "mes_wm_transaction", "mes_wm_item_receipt", "mes_wm_product_issue", "mes_wm_product_receipt", "mes_wm_product_sales", "mes_wm_return_sales", "mes_wm_transfer", "mes_wm_stock_taking_task", "mes_wm_batch", "mes_wm_sn", "mes_wm_stock_reserve"]}, |
| | | {"key": "qc", "name": "è´¨é管ç", "color": "#e06c6c", "tag": "MES-QC", "flow": "quality", |
| | | "positioning": "å鿣éªé¸å£ + ä¸åæ ¼åéç¯å¤ç½®", |
| | | "problem": "æ¥æ/è¿ç¨/åºè´§/éè´§æ£éªæ ååï¼ä¸åæ ¼å¯è¿½æº¯å¤ç½®", |
| | | "features": ["IQC æ¥æ(å°è´§/å¤å)", "IPQC è¿ç¨(è卿¥å·¥)", "OQC åºè´§(èå¨éå®åºåº)", "RQC éè´§(èå¨éæ/å®å)", "è´¨æ£æ¹æ¡Â·ææ ·缺é·åº", "æ£æµç»æ:åæ ¼/ç¹é/éè´§/æ¥åº", "NCR:è¯å®¡âå¤ç½®(éè´§/æ¥åº/è¿å·¥/让æ¥/é级)âå
³é", "AI å¤å®å»ºè®®"], |
| | | "objects": ["IQC", "IPQC", "OQC", "RQC", "è´¨æ£æ¹æ¡", "NCR", "缺é·è®°å½"], |
| | | "roles": ["è´¨æ£å(IQC/IPQC/OQC)", "è´¨éå·¥ç¨å¸"], |
| | | "upstream": ["ä»å¨(å°è´§)", "ç产(æ¥å·¥)", "éå®(åºåº)", "å®å(éè´§)"], "downstream": ["ä»å¨(åæ ¼å
¥åº/æ¥åºåºåº)", "ç产(NCRè¿å·¥)"], |
| | | "coreTables": ["mes_qc_iqc", "mes_qc_ipqc", "mes_qc_oqc", "mes_qc_rqc", "mes_qc_template", "mes_qc_indicator", "mes_qc_defect", "mes_qc_ncr"]}, |
| | | {"key": "qcreport", "name": "æºè½è´¨æ£æ¥å", "color": "#b06ce0", "tag": "QC-REPORT", "flow": "quality", |
| | | "positioning": "å¯è§å设计æ¥åæ¨¡æ¿ â ä¸é®åºä»¶å¹¶å»ç»å岿¥å", |
| | | "problem": "åè¡ä¸è´¨æ£æ¥åæ ¼å¼åå¼ï¼æç硬ç¼ç æ¹ä¸æ¬¡å䏿¬¡çï¼ä¸å岿¥åå¿
é¡»å¯å¤ç°ãä¸éä¸å¡æ°æ®åå", |
| | | "features": ["GrapesJS å¯è§å设计å¨ï¼è´¨æ£ç»ä»¶èµ°æ³¨åæºå¶ï¼ä¸ç¡¬ç¼ç è¿ç¼è¾å¨ï¼", "æ¨¡æ¿ + å¤çæ¬ï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸çæ¬å
容ä¸å¯è¦ç", "ç»ä»¶æ°æ®ç»å®ä¸ç¬ç«å¤å®è§å弿ï¼ç¦ç¨ eval / ScriptEngineï¼", "ä¸å端éå对é½ç Java 渲æå¼æï¼åºç« HTML å¥ç¦» on* äºä»¶å±æ§ä¸ javascript:/vbscript:/data: åè®®", "åºä»¶æ¥å£ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å· / generate 渲æ+è½åº+å»ç» data_snapshot / regenerate ç¨å»ç»å¿«ç
§ä¸åä¸çæ¬é渲", "æ¥åç¼å· QR+yyyyMMdd+4使µæ°´ï¼æå¤©ç¬ç«ï¼å¯æ¾å¼æå®ï¼æå·ä¼æ¥åºå
·ä½ç¼å·ï¼", "ç¼ºå£æ¸
ååªå¨ preview/generate/regenerate ååºéè¿åï¼ä¸è½åº", "PDF(Playwright) 彿¡£ä¸ MES åç§è´¨æ£åå½ä¸å对æ¥å¾
åç»è½®æ¬¡"], |
| | | "objects": ["æ¥å模æ¿", "æ¥åå®ä¾"], |
| | | "roles": ["æ¥å设计å", "è´¨æ£åï¼åºä»¶ï¼"], |
| | | "upstream": ["è´¨éï¼è´¨æ£åä¸ä¸æï¼æ¬è½®ç±è°ç¨æ¹ä¼ å
¥ï¼"], "downstream": ["éä»¶ä¸å¿ï¼PDF 彿¡£Â·åç»è½®æ¬¡ï¼", "BI"], |
| | | "coreTables": ["qc_report_template", "qc_report_template_version", "qc_report_instance", "qc_report_data_source", "qc_report_rule", "qc_report_render_record"]}, |
| | | {"key": "dv", "name": "设å¤ä¸å·¥è£
", "color": "#59a8b8", "tag": "MES-DV/TM", "flow": null, |
| | | "positioning": "设å¤èµäº§å¥åº·ä¸çäº§èµæºä¿é", |
| | | "problem": "设å¤ç¹æ£ä¿å
»ç»´ä¿®å¯æ§è¡ãå·¥è£
ç¶æå¯æ§", |
| | | "features": ["设å¤å°è´¦(åæº/ç产ä¸/ä¿å
»ä¸)", "ç¹æ£Â·ä¿å
»æ¹æ¡ä¸è®°å½", "维修工å(è稿âç»´ä¿®âå¾
éªæ¶â已确认)", "计éå¨å
·æ£å®", "å·¥è£
夹å
·(å¨åº/é¢ç¨/ç»´ä¿®/æ¥åº)"], |
| | | "objects": ["设å¤", "ç¹æ£è®°å½", "维修工å", "å·¥è£
"], |
| | | "roles": ["设å¤å", "维修工", "å·¥è£
管çå"], |
| | | "upstream": [], "downstream": ["ç产(AI é£é©é¢æµæ¶è´¹è®¾å¤æ°æ®)"], |
| | | "coreTables": ["mes_dv_machinery", "mes_dv_check_plan", "mes_dv_check_record", "mes_dv_repair", "mes_tm_tool"]}, |
| | | {"key": "aftersales", "name": "å®åæå¡", "color": "#c78bd6", "tag": "AFTER", "flow": "aftersales", |
| | | "positioning": "客æ·åé¦å°éè´§/ç»´ä¿®/鿬¾éç¯", |
| | | "problem": "å®åå·¥åæµè½¬ãéè´§ä¸è´¨æ£å
¥åºé款ç跨系ç»èå¨", |
| | | "features": ["å·¥åå
æ(è稿âå¤çä¸âå¾
å
¥åºâå¾
鿬¾âå®ç»âå
³é)", "é®é¢å¤å®(ä¸è¬/ç»´ä¿®/éè´§)", "客æ·è¯æ±åé¦æè¿°+éä»¶", "å¤çç»æ+éä»¶", "å·¥åæµè½¬è®°å½", "ç»´ä¿®(ç°åº/è¿å/è¿ç¨)", "éè´§ç±ä»å¨ç©æµåèµ·âMES éå®éè´§å(åå®åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)", "è´¨æ£ç»è®º/å
¥åº/鿬¾ä¸éåè°", "è¡çº§æ°æ®æéåè§å¾"], |
| | | "objects": ["å®åå·¥å", "å·¥åæµè½¬è®°å½", "维修记å½", "éè´§ç³è¯·(åå°ä¿ç)"], |
| | | "roles": ["客æ", "维修工ç¨å¸", "å®å管çå"], |
| | | "upstream": ["CRM(客æ·)", "ERP(éå®è®¢å)"], "downstream": ["ä»å¨(éå®éè´§)", "è´¨é(RQC)", "è´¢å¡(鿬¾)"], |
| | | "coreTables": ["after_sale_ticket", "after_sale_ticket_item", "after_sale_repair", "after_sale_return", "after_sale_permission"]}, |
| | | {"key": "hrm", "name": "人åèµæº", "color": "#9db85a", "tag": "HRM", "flow": null, |
| | | "positioning": "åå·¥å
¥è½¬è°ç¦»ä¸èå¤èªé
¬", |
| | | "problem": "äººäºæµç¨å®¡æ¹åãç¦»èæ°æ®ä¸ä¸¢(交æ¥)ãç®èªèªå¨å", |
| | | "features": ["å工档æ¡(å
¥èèªå¨å»ºç³»ç»è´¦å·)", "请å/å ç/è°å²/离è BPM 审æ¹", "离è交æ¥åæ¶è½¬ç§»åå·¥ID/ç¨æ·ID/ä¸å¡æ°æ® expandUserIds", "离èå°æèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»èå¹¶åç¨ç³»ç»è´¦å·", "èå¤(æå¡Â·è§å·æç·补å¡å®¡æ¹Â·æåº¦æ±æ»)", "èªé
¬(åºå-社ä¿å
¬ç§¯é-个ç¨-è¯·åæ£æ¬¾Â·1.5/2/3åå çè´¹Â·åæ¾å°è´¦)", "社ä¿å
¬ç§¯éæ¡£æ¡æé¨é¨ç»´æ¤(é¨é¨ä¸åå·¥å
±ç¨ææ°çææ¡£æ¡)", "å¹è®è¯ä¹¦(SQLå
è¡å¾
å®ç°)"], |
| | | "objects": ["åå·¥", "请åå", "离èç³è¯·", "äº¤æ¥æ å°", "èå¤è®°å½", "é¨é¨ç¤¾ä¿æ¡£æ¡", "èªé
¬æ ¸ç®"], |
| | | "roles": ["HR", "é¨é¨ä¸»ç®¡", "åå·¥æ¬äºº"], |
| | | "upstream": [], "downstream": ["忍¡å(æ°æ®å¯è§æ§æ©å±)", "system(è´¦å·)"], |
| | | "coreTables": ["hrm_employee", "hrm_leave_application", "hrm_resignation_application", "hrm_user_handover", "hrm_attendance_record", "hrm_salary_calculation", "hrm_salary_payment", "hrm_employee_social_security"]}, |
| | | {"key": "bpm", "name": "åå审æ¹", "color": "#e6a23c", "tag": "BPM", "flow": null, |
| | | "positioning": "å
¨ç³»ç»åæ®å®¡æ¹ä¸æ¢ï¼Flowableï¼", |
| | | "problem": "夿¨¡ååæ®éè¦çµæ´»å¯é
çå¤çº§å®¡æ¹", |
| | | "features": ["BPMN+éé飿 ¼å设计å¨", "æµç¨å®ä¹é¨ç½²", "审æ¹äºä»¶ç»ä¸åè°(BpmProcessInstanceStatusEvent)", "13个ä¸å¡çå¬å¨", "表åÂ·ç¨æ·ç»Â·æé·å ç¾"], |
| | | "objects": ["æµç¨æ¨¡å", "æµç¨å®ä¾", "审æ¹ä»»å¡"], |
| | | "roles": ["审æ¹äºº(ææµç¨é
ç½®)", "æµç¨ç®¡çå"], |
| | | "upstream": ["åä¸å¡æäº¤å®¡æ¹"], "downstream": ["åè°æ´æ°åä¸å¡åæ®ç¶æ"], |
| | | "coreTables": ["bpm_process_definition_info", "bpm_process_instance", "bpm_task", "act_*", "flowable_*"]}, |
| | | {"key": "ai", "name": "AI æºè½", "color": "#56c8d8", "tag": "AI", "flow": "ai", |
| | | "positioning": "åæ®å½å
¥ææä¸ç产å³çè¾
å©", |
| | | "problem": "人工å½å票/æ¥ä»·æ
¢ãè´¨æ£ä¸æäº§ä¾èµç»éª", |
| | | "features": ["chat/chatWithImage åéé", "OCR é¢å¡«(å票/æ¥ä»·)", "è´¨æ£å¤å®å»ºè®®", "缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµ", "RAG ç¥è¯åº(Milvus)", "AIä¸å¯ç¨æ¶ fallback 人工"], |
| | | "objects": ["ç¥è¯åº", "AI模åé
ç½®", "对è¯è®°å½"], |
| | | "roles": ["éè´å", "éå®", "è´¨æ£å", "计åå"], |
| | | "upstream": ["åä¸å¡æä¾ä¸ä¸ææ°æ®"], "downstream": ["ç»æåJSON建议è¿åä¸å¡ä¾§"], |
| | | "coreTables": ["ai_chat_conversation", "ai_chat_message", "ai_model", "ai_knowledge", "ai_knowledge_document", "ai_knowledge_segment"]} |
| | | { |
| | | "key": "mdm", |
| | | "name": "åºç¡ä¸»æ°æ®", |
| | | "color": "#8a94a6", |
| | | "tag": "MDM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»ç»ä¸å£å¾çä¸»æ°æ®æå¨æº", |
| | | "problem": "ç©æãåä½ãä»åºå¨ MES/ERP/CRM å¤å¤éå¤å®ä¹å¯¼è´æ°æ®ææ¶", |
| | | "features": [ |
| | | "ç©æä¸SKUï¼å«æ¹æ¬¡å±æ§é
ç½®12å¼å
³ï¼", |
| | | "ç©æåç±»æ ", |
| | | "ç©æåç±»å«åæå/æåç¬ç«å¤§ç±»", |
| | | "çäº§ç©æBOMç»´æ¤ä¸Excelæ¹é导å
¥ï¼å¯¼å
¥é»è®¤å¯ç¨ï¼å¯éè¦çå·²æç¨éï¼", |
| | | "计éåä½ä¸æ¢ç®", |
| | | "åç", |
| | | "ä»åºä¸»æ°æ®ï¼å«typeåæ®µï¼", |
| | | "MES ç©æç» MdmItemSyncApi åå忥" |
| | | ], |
| | | "objects": [ |
| | | "ç©æ", |
| | | "SKU", |
| | | "计éåä½", |
| | | "ä»åº" |
| | | ], |
| | | "roles": [ |
| | | "ä¸»æ°æ®ç®¡çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产", |
| | | "è¿éå", |
| | | "éå®", |
| | | "éè´" |
| | | ], |
| | | "coreTables": [ |
| | | "mdm_item", |
| | | "mdm_item_sku", |
| | | "mdm_item_category", |
| | | "mdm_unit_measure", |
| | | "mdm_brand", |
| | | "mdm_warehouse" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "crm", |
| | | "name": "éå®ç®¡çï¼å®¢æ·å
³ç³»ï¼", |
| | | "color": "#4f9cff", |
| | | "tag": "CRM", |
| | | "flow": "sales", |
| | | "positioning": "éå®å端ï¼ä»çº¿ç´¢å°å款ç客æ·ç»è¥", |
| | | "problem": "客æ·èµäº§æ²æ·ãåæºè½¬åãåå审æ¹ä¸å¼ç¥¨å款管æ§", |
| | | "features": [ |
| | | "线索转å客æ·", |
| | | "å
¬æµ·æ± ä¸é¢åä¸é", |
| | | "è系人", |
| | | "åæºèªå®ä¹é¶æ®µ", |
| | | "è·è¿è®°å½", |
| | | "æ¥ä»·å(AI OCR)", |
| | | "åå(BPM审æ¹âçæéå®è®¢åÂ·æ¯æExcel导å
¥)", |
| | | "å¼ç¥¨ç³è¯·(éå®è®¢å/åºåºåé填·éååèªå¨å¸¦åºå¯ä¸å·²å®¡æ ¸è®¢å)â审æ¹âå½å
¥å票(å票å·/æ¥æ/éä»¶+å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹)", |
| | | "å¼ç¥¨(BPM审æ¹Â·æ¯æExcel导å
¥Â·å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥)â忬¾(å
å¼ç¥¨æ ¡éªÂ·æ ¸éæç»å¯æåå°è®¢å/åºåº/å¼ç¥¨)", |
| | | "忬¾è®¡å(æ¶æ¬¾èç¹åå已忬¾/å®é
æ¶é´/ç¶æ)", |
| | | "客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "ææ ä¿è¯éå°è´¦(å®¢æ·ææ æ¹+å·²å®¡æ ¸éå®è®¢åÂ·ä¸æ ç»æ/éåç¶æ/éåé颿¥æ)", |
| | | "éå®ç®æ ", |
| | | "æ°æ®æéä¸çº§(è´è´£äºº/åªè¯»/读å)" |
| | | ], |
| | | "objects": [ |
| | | "线索", |
| | | "客æ·", |
| | | "è系人", |
| | | "åæº", |
| | | "æ¥ä»·å", |
| | | "åå", |
| | | "å票", |
| | | "忬¾", |
| | | "忬¾æ ¸éæç»", |
| | | "éå®ç®æ ", |
| | | "ææ ä¿è¯é" |
| | | ], |
| | | "roles": [ |
| | | "éå®å
å¤", |
| | | "éå®ç»ç", |
| | | "è´¢å¡(å¼ç¥¨å款)" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)", |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éå®è®¢å)", |
| | | "å®å(客æ·)", |
| | | "AI(æ¥ä»·OCR)" |
| | | ], |
| | | "coreTables": [ |
| | | "crm_clue", |
| | | "crm_customer", |
| | | "crm_contact", |
| | | "crm_business", |
| | | "crm_sale_quotation", |
| | | "crm_contract", |
| | | "crm_invoice", |
| | | "crm_receivable", |
| | | "crm_receivable_plan", |
| | | "crm_permission", |
| | | "crm_bid_bond" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "srm", |
| | | "name": "ä¾åºå管ç", |
| | | "color": "#c9a86a", |
| | | "tag": "SRM", |
| | | "flow": "purchase", |
| | | "positioning": "ä¾åºåæ¡£æ¡ + 询价æ¯ä»·", |
| | | "problem": "ä¾åºåä¿¡æ¯å¤å¼æ·è¡/å¤è系人维æ¤ï¼éè´å¯»æºæäº§åæ¨ªåæ¯ä»·å¹¶å¿«é转为éè´è®¢å", |
| | | "features": [ |
| | | "ä¾åºåæ¡£æ¡ä¸åç±»", |
| | | "å¤è系人/å¤é¶è¡è´¦æ·(å«é¶è¡è¡å·)", |
| | | "询价åï¼æ°å¢æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·", |
| | | "æ¯ä¸ªäº§ååç¬éå®ä¸æ ä¾åºå", |
| | | "确认åæä¸æ ä¾åºåæåçæéè´è®¢åè稿" |
| | | ], |
| | | "objects": [ |
| | | "ä¾åºå", |
| | | "询价æ¯ä»·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "ä¾åºå管çå" |
| | | ], |
| | | "upstream": [ |
| | | "ä¸»æ°æ®(ç©æ)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(éè´è®¢å)" |
| | | ], |
| | | "coreTables": [ |
| | | "srm_supplier", |
| | | "srm_supplier_contact", |
| | | "srm_supplier_bank", |
| | | "srm_supplier_category", |
| | | "srm_inquiry", |
| | | "srm_inquiry_item", |
| | | "srm_inquiry_supplier", |
| | | "srm_inquiry_quote", |
| | | "srm_inquiry_order" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "erp", |
| | | "name": "è¿éåä¸è´¢å¡", |
| | | "color": "#5fc79e", |
| | | "tag": "ERP", |
| | | "flow": "purchase", |
| | | "positioning": "åè´¸ä¸èµé忮䏿¢ï¼å MES åèµ·å®ç©æ¶å", |
| | | "problem": "éè´éå®åæ®å®¡æ¹ãæ¥ç¥¨ä»æ¬¾æ§å¶ãè®¢åæ§è¡è¿åº¦åå", |
| | | "features": [ |
| | | "éè´ç³è¯·(BPM)â订å(èªå¨/æå¨çæ)", |
| | | "确认æ¶è´§âMESå°è´§éç¥", |
| | | "å
¥åº/éè´§æ°éç¶æåå", |
| | | "éè´æ¥ç¥¨(ç»å®éè´è®¢å+MESéè´å
¥åºå·åå±å©ä½é¢åº¦æ ¡éª)", |
| | | "仿¬¾å(å¿
é¡»å
³èæ¥ç¥¨Â·BPM)", |
| | | "ä¾åºå徿¥(订å/æ¥ç¥¨/仿¬¾ä¸æµæ°´Â·å·¦å³å±ç¤ºå¼ç¥¨éé¢)", |
| | | "éå®è®¢å(BPM·审æ¹éè¿èªå¨å»ºMPS)", |
| | | "åºåºç¶æåå", |
| | | "æ¶æ¬¾å(å
³èCRM客æ·)", |
| | | "ç»ç®è´¦æ·", |
| | | "AIå票OCR" |
| | | ], |
| | | "objects": [ |
| | | "éè´ç³è¯·", |
| | | "éè´è®¢å", |
| | | "éè´æ¥ç¥¨", |
| | | "仿¬¾å", |
| | | "ä¾åºå徿¥", |
| | | "éå®è®¢å", |
| | | "æ¶æ¬¾å", |
| | | "ç»ç®è´¦æ·" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®å", |
| | | "åºçº³", |
| | | "ä¼è®¡" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(åå)", |
| | | "SRM(询价确认)", |
| | | "ä¸»æ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç产(MPS)", |
| | | "ä»å¨(æ¶å)", |
| | | "è´¢å¡(æ¥ç¥¨ä»æ¬¾å
¥è´¦)" |
| | | ], |
| | | "coreTables": [ |
| | | "erp_purchase_request", |
| | | "erp_purchase_order", |
| | | "erp_purchase_invoice", |
| | | "erp_finance_payment", |
| | | "erp_sale_order", |
| | | "erp_finance_receipt", |
| | | "erp_account" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "finance", |
| | | "name": "è´¢å¡ç®¡çï¼ä¼è®¡æ ¸ç®ï¼", |
| | | "color": "#3ec9a7", |
| | | "tag": "FIN", |
| | | "flow": "finance", |
| | | "positioning": "ç¬ç«æ ¸ç®æ¨¡åï¼ä¼è®¡æ ¸ç® + èµäº§æ ¸ç® + è´¢å¡æ¥è¡¨çæ¿ï¼ä¸ ERP è¿éåè´¢å¡åæ®å离ï¼yudao-module-financeï¼", |
| | | "problem": "è¿éååªç®¡åæ®ä¸ç®¡è´¦ï¼ç¼ºå°ä¼è®¡ç§ç®/åè¯/账簿ä¸èµäº§ææ§æéæ²æ·ï¼æ æ³åºè´¦è¡¨ä¸èµäº§åå¼", |
| | | "features": [ |
| | | "ä¼è®¡ç§ç®æ (约68æ¡ä¸çº§ç§ç®ç§å·å¯å»ºä¸çº§)", |
| | | "è®°è´¦åè¯(åå·èªå¨çæÂ·åå½å贷平衡åå端åéæ ¡éª)", |
| | | "åè¯ç¶ææº æªè¿è´¦0âè¿è´¦10/ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹", |
| | | "æ»è´¦ææé´éææ±æ»", |
| | | "æç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢", |
| | | "åºå®èµäº§+è®¡æææ§", |
| | | "æ å½¢èµäº§+计ææé", |
| | | "ä¼è®¡æ ¸ç®çæ¿(æ¶æ¯/èµäº§/åè¯/æåº¦è¶å¿)", |
| | | "åè¯æ¥æºåæ®å
³è(sourceType/sourceId/sourceNoï¼å¯å溯å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾)", |
| | | "æ¥è¡¨åæ°æ¥å
¥CRM客æ·åºæ¶å¯¹è´¦/å·²åè´§æªå¼ç¥¨/æªæ ¸éåºæ¶è´¦é¾/æåº¦å¼ç¥¨å款è¶å¿", |
| | | "éä»¶èµ°ç³»ç»éä»¶ä¸å¿ recordType=fin_voucher" |
| | | ], |
| | | "objects": [ |
| | | "ä¼è®¡ç§ç®", |
| | | "è®°è´¦åè¯", |
| | | "åè¯åå½", |
| | | "åºå®èµäº§", |
| | | "æ å½¢èµäº§" |
| | | ], |
| | | "roles": [ |
| | | "ä¼è®¡", |
| | | "è´¢å¡ä¸»ç®¡", |
| | | "èµäº§ä¼è®¡", |
| | | "管çå±" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(ERP å·²å®¡æ ¸æ¶è´§/仿¬¾/è´éåæ®)", |
| | | "CRM(å¼ç¥¨/忬¾/æ ¸é/对账æ¥è¡¨)" |
| | | ], |
| | | "downstream": [ |
| | | "è´¢å¡æ¥è¡¨çæ¿", |
| | | "BI 管ç驾驶è±" |
| | | ], |
| | | "coreTables": [ |
| | | "fin_account_subject", |
| | | "fin_voucher", |
| | | "fin_voucher_entry", |
| | | "fin_fixed_asset", |
| | | "fin_intangible_asset" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "pro", |
| | | "name": "ç产管ç", |
| | | "color": "#e0b34f", |
| | | "tag": "MES-PRO", |
| | | "flow": "production", |
| | | "positioning": "ç产æ§è¡æ ¸å¿ï¼è®¡å-å·¥å-ä»»å¡-æ¥å·¥", |
| | | "problem": "订åå°è½¦é´æ§è¡çéå±æè§£ä¸è¿ç¨å¯æ§", |
| | | "features": [ |
| | | "MPS主ç产计å(å¯ç±éå®è®¢åèªå¨å建·åå¹¶ä¸å)", |
| | | "å·¥å(æå·¥èºè·¯çº¿èªå¨çæå·¥åºä»»å¡)", |
| | | "æ¥å·¥(æå·¥åºé¡ºåºæ§å¶Â·BPM审æ¹)", |
| | | "ç产æäº§(éå·¥ä½ç«åæå²ä½ä»ãå工管çãå¸¦åºæ¥å·¥äººÂ·ä¸è¦æ±å¼éç³»ç»è´¦å·)", |
| | | "å岿£çº¿è¾¹åº/产åºå
¥åº", |
| | | "å®ç¯", |
| | | "å·¥èºè·¯çº¿Â·å·¥åºÂ·å·¥åBOM", |
| | | "ç å设计项ç®(PD·审æ¹å½æ¡£)", |
| | | "AI åç±»é¢æµ" |
| | | ], |
| | | "objects": [ |
| | | "MPS", |
| | | "ç产工å", |
| | | "ç产任å¡", |
| | | "æ¥å·¥å", |
| | | "å·¥èºè·¯çº¿", |
| | | "å·¥åBOM", |
| | | "设计项ç®" |
| | | ], |
| | | "roles": [ |
| | | "计åå", |
| | | "车é´ä¸»ä»»", |
| | | "æä½å·¥", |
| | | "å·¥èºå" |
| | | ], |
| | | "upstream": [ |
| | | "è¿éå(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(颿/å
¥åº)", |
| | | "è´¨é(IPQC)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_pro_mps", |
| | | "mes_pro_work_order", |
| | | "mes_pro_task", |
| | | "mes_pro_feedback", |
| | | "mes_pro_route", |
| | | "mes_pro_process", |
| | | "mes_pro_work_order_bom", |
| | | "mes_pd_project" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "wm", |
| | | "name": "ä»å¨ç®¡ç", |
| | | "color": "#7e6bd6", |
| | | "tag": "MES-WM", |
| | | "flow": "warehouse", |
| | | "positioning": "åå
WMSï¼åæ®é©±å¨çåºåè´¦å®ä¸è´", |
| | | "problem": "夿¥æºåºå
¥åºãæ¹æ¬¡/SN 追溯ãåºå精确å°åºä½", |
| | | "features": [ |
| | | "15ç§åºå
¥åºåæ®", |
| | | "åºåå°è´¦(ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºå)", |
| | | "äºå¡æµæ°´åªè¯»çç", |
| | | "è°æ¨æå¯¹äºå¡", |
| | | "çç¹(éæ/å¨æÂ·ç²ç·çççäºè°æ´)", |
| | | "æ¹æ¬¡/SN/æ¡ç /è£
ç®±åµå¥", |
| | | "èæçº¿è¾¹åº(å
许è´åºå)", |
| | | "åºåå ç¨(5ç±»)", |
| | | "å级å»ç»", |
| | | "WMS审æ¹é
ç½®+BPM", |
| | | "å¯¹å¤ WmsStockApi/WmsTransactionApi" |
| | | ], |
| | | "objects": [ |
| | | "å°è´§éç¥", |
| | | "éè´å
¥åº", |
| | | "颿", |
| | | "å®å·¥å
¥åº", |
| | | "éå®åºåº", |
| | | "åè´§éç¥", |
| | | "éå®éè´§", |
| | | "ä¾åºåéè´§", |
| | | "è°æ¨", |
| | | "çç¹", |
| | | "åºåå°è´¦", |
| | | "æ¹æ¬¡", |
| | | "SN" |
| | | ], |
| | | "roles": [ |
| | | "ä»ç®¡å", |
| | | "æ£è´§å", |
| | | "çç¹å" |
| | | ], |
| | | "upstream": [ |
| | | "éè´(æ¶è´§)", |
| | | "ç产(é¢éæ)", |
| | | "éå®(åè´§)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "è¿éå(æ°éåå)", |
| | | "è´¢å¡(ææ¬åºç¡)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_wm_warehouse", |
| | | "mes_wm_material_stock", |
| | | "mes_wm_transaction", |
| | | "mes_wm_item_receipt", |
| | | "mes_wm_product_issue", |
| | | "mes_wm_product_receipt", |
| | | "mes_wm_product_sales", |
| | | "mes_wm_return_sales", |
| | | "mes_wm_transfer", |
| | | "mes_wm_stock_taking_task", |
| | | "mes_wm_batch", |
| | | "mes_wm_sn", |
| | | "mes_wm_stock_reserve" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qc", |
| | | "name": "è´¨é管ç", |
| | | "color": "#e06c6c", |
| | | "tag": "MES-QC", |
| | | "flow": "quality", |
| | | "positioning": "å鿣éªé¸å£ + ä¸åæ ¼åéç¯å¤ç½®", |
| | | "problem": "æ¥æ/è¿ç¨/åºè´§/éè´§æ£éªæ ååï¼ä¸åæ ¼å¯è¿½æº¯å¤ç½®", |
| | | "features": [ |
| | | "IQC æ¥æ(å°è´§/å¤å)", |
| | | "IPQC è¿ç¨(è卿¥å·¥)", |
| | | "OQC åºè´§(èå¨éå®åºåº)", |
| | | "RQC éè´§(èå¨éæ/å®å)", |
| | | "è´¨æ£æ¹æ¡Â·ææ ·缺é·åº", |
| | | "æ£æµç»æ:åæ ¼/ç¹é/éè´§/æ¥åº", |
| | | "NCR:è¯å®¡âå¤ç½®(éè´§/æ¥åº/è¿å·¥/让æ¥/é级)âå
³é", |
| | | "AI å¤å®å»ºè®®" |
| | | ], |
| | | "objects": [ |
| | | "IQC", |
| | | "IPQC", |
| | | "OQC", |
| | | "RQC", |
| | | "è´¨æ£æ¹æ¡", |
| | | "NCR", |
| | | "缺é·è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "è´¨æ£å(IQC/IPQC/OQC)", |
| | | "è´¨éå·¥ç¨å¸" |
| | | ], |
| | | "upstream": [ |
| | | "ä»å¨(å°è´§)", |
| | | "ç产(æ¥å·¥)", |
| | | "éå®(åºåº)", |
| | | "å®å(éè´§)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(åæ ¼å
¥åº/æ¥åºåºåº)", |
| | | "ç产(NCRè¿å·¥)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_qc_iqc", |
| | | "mes_qc_ipqc", |
| | | "mes_qc_oqc", |
| | | "mes_qc_rqc", |
| | | "mes_qc_template", |
| | | "mes_qc_indicator", |
| | | "mes_qc_defect", |
| | | "mes_qc_ncr" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "qcreport", |
| | | "name": "æºè½è´¨æ£æ¥å", |
| | | "color": "#b06ce0", |
| | | "tag": "QC-REPORT", |
| | | "flow": "quality", |
| | | "positioning": "å¯è§å设计æ¥åæ¨¡æ¿ â ä¸é®åºä»¶å¹¶å»ç»å岿¥å", |
| | | "problem": "åè¡ä¸è´¨æ£æ¥åæ ¼å¼åå¼ï¼æç硬ç¼ç æ¹ä¸æ¬¡å䏿¬¡çï¼ä¸å岿¥åå¿
é¡»å¯å¤ç°ãä¸éä¸å¡æ°æ®åå", |
| | | "features": [ |
| | | "GrapesJS å¯è§å设计å¨ï¼è´¨æ£ç»ä»¶èµ°æ³¨åæºå¶ï¼ä¸ç¡¬ç¼ç è¿ç¼è¾å¨ï¼", |
| | | "æ¨¡æ¿ + å¤çæ¬ï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸çæ¬å
容ä¸å¯è¦ç", |
| | | "ç»ä»¶æ°æ®ç»å®ä¸ç¬ç«å¤å®è§å弿ï¼ç¦ç¨ eval / ScriptEngineï¼", |
| | | "ä¸å端éå对é½ç Java 渲æå¼æï¼åºç« HTML å¥ç¦» on* äºä»¶å±æ§ä¸ javascript:/vbscript:/data: åè®®", |
| | | "åºä»¶æ¥å£ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å· / generate 渲æ+è½åº+å»ç» data_snapshot / regenerate ç¨å»ç»å¿«ç
§ä¸åä¸çæ¬é渲", |
| | | "æ¥åç¼å· QR+yyyyMMdd+4使µæ°´ï¼æå¤©ç¬ç«ï¼å¯æ¾å¼æå®ï¼æå·ä¼æ¥åºå
·ä½ç¼å·ï¼", |
| | | "ç¼ºå£æ¸
ååªå¨ preview/generate/regenerate ååºéè¿åï¼ä¸è½åº", |
| | | "PDF(Playwright) 彿¡£ä¸ MES åç§è´¨æ£åå½ä¸å对æ¥å¾
åç»è½®æ¬¡" |
| | | ], |
| | | "objects": [ |
| | | "æ¥å模æ¿", |
| | | "æ¥åå®ä¾" |
| | | ], |
| | | "roles": [ |
| | | "æ¥å设计å", |
| | | "è´¨æ£åï¼åºä»¶ï¼" |
| | | ], |
| | | "upstream": [ |
| | | "è´¨éï¼è´¨æ£åä¸ä¸æï¼æ¬è½®ç±è°ç¨æ¹ä¼ å
¥ï¼" |
| | | ], |
| | | "downstream": [ |
| | | "éä»¶ä¸å¿ï¼PDF 彿¡£Â·åç»è½®æ¬¡ï¼", |
| | | "BI" |
| | | ], |
| | | "coreTables": [ |
| | | "qc_report_template", |
| | | "qc_report_template_version", |
| | | "qc_report_instance", |
| | | "qc_report_data_source", |
| | | "qc_report_rule", |
| | | "qc_report_render_record" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "dv", |
| | | "name": "设å¤ä¸å·¥è£
", |
| | | "color": "#59a8b8", |
| | | "tag": "MES-DV/TM", |
| | | "flow": null, |
| | | "positioning": "设å¤èµäº§å¥åº·ä¸çäº§èµæºä¿é", |
| | | "problem": "设å¤ç¹æ£ä¿å
»ç»´ä¿®å¯æ§è¡ãå·¥è£
ç¶æå¯æ§", |
| | | "features": [ |
| | | "设å¤å°è´¦(åæº/ç产ä¸/ä¿å
»ä¸)", |
| | | "ç¹æ£Â·ä¿å
»æ¹æ¡ä¸è®°å½", |
| | | "维修工å(è稿âç»´ä¿®âå¾
éªæ¶â已确认)", |
| | | "计éå¨å
·æ£å®", |
| | | "å·¥è£
夹å
·(å¨åº/é¢ç¨/ç»´ä¿®/æ¥åº)" |
| | | ], |
| | | "objects": [ |
| | | "设å¤", |
| | | "ç¹æ£è®°å½", |
| | | "维修工å", |
| | | "å·¥è£
" |
| | | ], |
| | | "roles": [ |
| | | "设å¤å", |
| | | "维修工", |
| | | "å·¥è£
管çå" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产(AI é£é©é¢æµæ¶è´¹è®¾å¤æ°æ®)" |
| | | ], |
| | | "coreTables": [ |
| | | "mes_dv_machinery", |
| | | "mes_dv_check_plan", |
| | | "mes_dv_check_record", |
| | | "mes_dv_repair", |
| | | "mes_tm_tool" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "aftersales", |
| | | "name": "å®åæå¡", |
| | | "color": "#c78bd6", |
| | | "tag": "AFTER", |
| | | "flow": "aftersales", |
| | | "positioning": "客æ·åé¦å°éè´§/ç»´ä¿®/鿬¾éç¯", |
| | | "problem": "å®åå·¥åæµè½¬ãéè´§ä¸è´¨æ£å
¥åºé款ç跨系ç»èå¨", |
| | | "features": [ |
| | | "å·¥åå
æ(è稿âå¤çä¸âå¾
å
¥åºâå¾
鿬¾âå®ç»âå
³é)", |
| | | "é®é¢å¤å®(ä¸è¬/ç»´ä¿®/éè´§)", |
| | | "客æ·è¯æ±åé¦æè¿°+éä»¶", |
| | | "å¤çç»æ+éä»¶", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "ç»´ä¿®(ç°åº/è¿å/è¿ç¨)", |
| | | "éè´§ç±ä»å¨ç©æµåèµ·âMES éå®éè´§å(åå®åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)", |
| | | "è´¨æ£ç»è®º/å
¥åº/鿬¾ä¸éåè°", |
| | | "è¡çº§æ°æ®æéåè§å¾" |
| | | ], |
| | | "objects": [ |
| | | "å®åå·¥å", |
| | | "å·¥åæµè½¬è®°å½", |
| | | "维修记å½", |
| | | "éè´§ç³è¯·(åå°ä¿ç)" |
| | | ], |
| | | "roles": [ |
| | | "客æ", |
| | | "维修工ç¨å¸", |
| | | "å®å管çå" |
| | | ], |
| | | "upstream": [ |
| | | "CRM(客æ·)", |
| | | "ERP(éå®è®¢å)" |
| | | ], |
| | | "downstream": [ |
| | | "ä»å¨(éå®éè´§)", |
| | | "è´¨é(RQC)", |
| | | "è´¢å¡(鿬¾)" |
| | | ], |
| | | "coreTables": [ |
| | | "after_sale_ticket", |
| | | "after_sale_ticket_item", |
| | | "after_sale_ticket_flow", |
| | | "after_sale_repair", |
| | | "after_sale_return", |
| | | "after_sale_permission" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "hrm", |
| | | "name": "人åèµæº", |
| | | "color": "#9db85a", |
| | | "tag": "HRM", |
| | | "flow": null, |
| | | "positioning": "åå·¥å
¥è½¬è°ç¦»ä¸èå¤èªé
¬", |
| | | "problem": "äººäºæµç¨å®¡æ¹åãç¦»èæ°æ®ä¸ä¸¢(交æ¥)ãç®èªèªå¨å", |
| | | "features": [ |
| | | "å工档æ¡(å
¥èèªå¨å»ºç³»ç»è´¦å·)", |
| | | "请å/å ç/è°å²/离è BPM 审æ¹", |
| | | "离è交æ¥åæ¶è½¬ç§»åå·¥ID/ç¨æ·ID/ä¸å¡æ°æ® expandUserIds", |
| | | "离èå°æèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»èå¹¶åç¨ç³»ç»è´¦å·", |
| | | "èå¤(ç§»å¨ç«¯æçèå¤ç¶æÂ·æå¡Â·è§å·æç·补å¡å®¡æ¹Â·æåº¦æ±æ»)", |
| | | "èªé
¬(åºå-社ä¿å
¬ç§¯é-个ç¨-è¯·åæ£æ¬¾Â·1.5/2/3åå çè´¹Â·åæ¾å°è´¦)", |
| | | "社ä¿å
¬ç§¯éæ¡£æ¡æé¨é¨ç»´æ¤(é¨é¨ä¸åå·¥å
±ç¨ææ°çææ¡£æ¡)", |
| | | "å¹è®è¯ä¹¦(SQLå
è¡å¾
å®ç°)" |
| | | ], |
| | | "objects": [ |
| | | "åå·¥", |
| | | "请åå", |
| | | "离èç³è¯·", |
| | | "äº¤æ¥æ å°", |
| | | "èå¤è®°å½", |
| | | "é¨é¨ç¤¾ä¿æ¡£æ¡", |
| | | "èªé
¬æ ¸ç®" |
| | | ], |
| | | "roles": [ |
| | | "HR", |
| | | "é¨é¨ä¸»ç®¡", |
| | | "åå·¥æ¬äºº" |
| | | ], |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "忍¡å(æ°æ®å¯è§æ§æ©å±)", |
| | | "system(è´¦å·)" |
| | | ], |
| | | "coreTables": [ |
| | | "hrm_employee", |
| | | "hrm_leave_application", |
| | | "hrm_resignation_application", |
| | | "hrm_user_handover", |
| | | "hrm_attendance_record", |
| | | "hrm_salary_calculation", |
| | | "hrm_salary_payment", |
| | | "hrm_employee_social_security" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "bpm", |
| | | "name": "åå审æ¹", |
| | | "color": "#e6a23c", |
| | | "tag": "BPM", |
| | | "flow": null, |
| | | "positioning": "å
¨ç³»ç»åæ®å®¡æ¹ä¸æ¢ï¼Flowableï¼", |
| | | "problem": "夿¨¡ååæ®éè¦çµæ´»å¯é
çå¤çº§å®¡æ¹", |
| | | "features": [ |
| | | "BPMN+éé飿 ¼å设计å¨", |
| | | "æµç¨å®ä¹é¨ç½²", |
| | | "审æ¹äºä»¶ç»ä¸åè°(BpmProcessInstanceStatusEvent)", |
| | | "13个ä¸å¡çå¬å¨", |
| | | "表åÂ·ç¨æ·ç»Â·æé·å ç¾" |
| | | ], |
| | | "objects": [ |
| | | "æµç¨æ¨¡å", |
| | | "æµç¨å®ä¾", |
| | | "审æ¹ä»»å¡" |
| | | ], |
| | | "roles": [ |
| | | "审æ¹äºº(ææµç¨é
ç½®)", |
| | | "æµç¨ç®¡çå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æäº¤å®¡æ¹" |
| | | ], |
| | | "downstream": [ |
| | | "åè°æ´æ°åä¸å¡åæ®ç¶æ" |
| | | ], |
| | | "coreTables": [ |
| | | "bpm_process_definition_info", |
| | | "bpm_process_instance", |
| | | "bpm_task", |
| | | "act_*", |
| | | "flowable_*" |
| | | ] |
| | | }, |
| | | { |
| | | "key": "ai", |
| | | "name": "AI æºè½", |
| | | "color": "#56c8d8", |
| | | "tag": "AI", |
| | | "flow": "ai", |
| | | "positioning": "åæ®å½å
¥ææä¸ç产å³çè¾
å©", |
| | | "problem": "人工å½å票/æ¥ä»·æ
¢ãè´¨æ£ä¸æäº§ä¾èµç»éª", |
| | | "features": [ |
| | | "chat/chatWithImage åéé", |
| | | "OCR é¢å¡«(å票/æ¥ä»·)", |
| | | "è´¨æ£å¤å®å»ºè®®", |
| | | "缺æ/æ¶é¿/é£é©/交ä»åç±»é¢æµ", |
| | | "RAG ç¥è¯åº(Milvus)", |
| | | "AIä¸å¯ç¨æ¶ fallback 人工" |
| | | ], |
| | | "objects": [ |
| | | "ç¥è¯åº", |
| | | "AI模åé
ç½®", |
| | | "对è¯è®°å½" |
| | | ], |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®", |
| | | "è´¨æ£å", |
| | | "计åå" |
| | | ], |
| | | "upstream": [ |
| | | "åä¸å¡æä¾ä¸ä¸ææ°æ®" |
| | | ], |
| | | "downstream": [ |
| | | "ç»æåJSON建议è¿åä¸å¡ä¾§" |
| | | ], |
| | | "coreTables": [ |
| | | "ai_chat_conversation", |
| | | "ai_chat_message", |
| | | "ai_model", |
| | | "ai_knowledge", |
| | | "ai_knowledge_document", |
| | | "ai_knowledge_segment" |
| | | ] |
| | | } |
| | | ], |
| | | "platform": { |
| | | "name": "ç³»ç»åºåº§", |
| | | "capabilities": ["JWT+OAuth2 认è¯Â·æ»åéªè¯ç ", "RBAC è§è²-èå-æ°æ®èå´(å
¨é¨/é¨é¨/æ¬é¨é¨åä¸çº§/ä»
æ¬äºº/èªå®ä¹)", "åå
¸", "éä»¶ä¸å¿(storage-blob æä»¶ + storage-attachment æ recordType+recordId 夿å
³èï¼å
¨æ¨¡å强å¶ä½¿ç¨)", "ç¼ç è§å(åä¸å¡èªå®ç° Redis åç¼+æ¥æ+æµæ°´)", "Quartz 宿¶ä»»å¡Â·RocketMQ/Kafka/Redis Stream MQ·WebSocket", "å¤ç§æ·å·²å
³é", "å®é
system_role ä»
4 个ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼ä¸å¡åå·¥é æ°æ®æéèéå¤è§è²"], |
| | | "unused": ["im 模å(IM/RTCï¼ä¸å¡æªæ¶è´¹)", "member 模å(C端ä¼åï¼éç)"] |
| | | "capabilities": [ |
| | | "JWT+OAuth2 认è¯Â·æ»åéªè¯ç ", |
| | | "RBAC è§è²-èå-æ°æ®èå´(å
¨é¨/é¨é¨/æ¬é¨é¨åä¸çº§/ä»
æ¬äºº/èªå®ä¹)", |
| | | "åå
¸", |
| | | "éä»¶ä¸å¿(storage-blob æä»¶ + storage-attachment æ recordType+recordId 夿å
³èï¼å
¨æ¨¡å强å¶ä½¿ç¨)", |
| | | "ç¼ç è§å(åä¸å¡èªå®ç° Redis åç¼+æ¥æ+æµæ°´)", |
| | | "Quartz 宿¶ä»»å¡Â·RocketMQ/Kafka/Redis Stream MQ·WebSocket", |
| | | "å¤ç§æ·å·²å
³é", |
| | | "å®é
system_role ä»
4 个ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼ä¸å¡åå·¥é æ°æ®æéèéå¤è§è²" |
| | | ], |
| | | "unused": [ |
| | | "im 模å(IM/RTCï¼ä¸å¡æªæ¶è´¹)", |
| | | "member 模å(C端ä¼åï¼éç)" |
| | | ] |
| | | } |
| | | }</script> |
| | | <script type="application/json" id="data-objects">{ |
| | | "objects": [ |
| | | {"name": "ç©æ", "module": "åºç¡ä¸»æ°æ®", "table": "mdm_item", "doc": "MDM æå¨ç©æ/产å/åæåæ¡£æ¡ï¼å« SKUãæ¹æ¬¡å±æ§ãä»·æ ¼ãå®å
¨åºå", "upstream": ["MES ç©æåå忥"], "downstream": ["æ¥ä»·å", "éå®è®¢å", "éè´è®¢å", "å·¥åBOM", "åºåå°è´¦"], "keywords": "ç©æ 产å åææ item"}, |
| | | {"name": "ä»åº", "module": "åºç¡ä¸»æ°æ®", "table": "mdm_warehouse", "doc": "ä»åºä¸»æ°æ®ï¼type: 1åæ/2æå/3åæå/4线边ï¼MES èªæ mes_wm_warehouse æ¿è½½åºåºåºä½", "upstream": [], "downstream": ["åºåå°è´¦", "åºå
¥åºåæ®"], "keywords": "ä»åº warehouse åæä» æåä» çº¿è¾¹ä»"}, |
| | | {"name": "客æ·", "module": "éå®ç®¡ç", "table": "crm_customer", "doc": "客æ·ä¸»æ¡£ï¼å
¬æµ·æ± /éå®/æäº¤ç¶æï¼è´è´£äººæ°æ®æéï¼å®¢æ·å表æãå®¡æ ¸éè¿ãåå宿¶ç»è®¡å·²ç¾è®¢åå份æ°ä¸éé¢å计", "upstream": ["线索"], "downstream": ["è系人", "åæº", "æ¥ä»·å", "åå", "å®åå·¥å", "æ¶æ¬¾å"], "keywords": "å®¢æ· customer å
¬æµ·"}, |
| | | {"name": "线索", "module": "éå®ç®¡ç", "table": "crm_clue", "doc": "åå§éå®çº¿ç´¢ï¼ä»
䏿¬¡è½¬å为客æ·", "upstream": [], "downstream": ["客æ·"], "keywords": "线索 clue"}, |
| | | {"name": "è系人", "module": "éå®ç®¡ç", "table": "crm_contact", "doc": "客æ·ä¸è系人ï¼ä¸åæºå¤å¯¹å¤", "upstream": ["客æ·"], "downstream": ["åæº"], "keywords": "è系人 contact"}, |
| | | {"name": "åæº", "module": "éå®ç®¡ç", "table": "crm_business", "doc": "é宿ºä¼ï¼DB é
ç½®å¼é¶æ®µæ¨è¿ï¼ç»ææ: èµ¢/è¾/æ æ", "upstream": ["客æ·"], "downstream": ["æ¥ä»·å", "åå"], "keywords": "åæº business èµ¢å è¾å é¶æ®µ"}, |
| | | {"name": "æ¥ä»·å", "module": "éå®ç®¡ç", "table": "crm_sale_quotation", "doc": "QTç¼å·ï¼é MDM ç©ææ¥ä»·ï¼AI OCR å½å
¥ï¼è稿â已转åå", "upstream": ["åæº"], "downstream": ["åå"], "keywords": "æ¥ä»· quotation QT"}, |
| | | {"name": "åå", "module": "éå®ç®¡ç", "table": "crm_contract", "doc": "HTç¼å·ï¼BPM 审æ¹(0è稿/10审æ¹ä¸/20éè¿/30驳å/40åæ¶/50ä½åº)ï¼éè¿åå¯çæéå®è®¢åï¼æ¯æ Excel 导å
¥ï¼ä¸ååå¤äº§åæç»è¡ãåå¹¶åå
æ ¼èªå¨æå¹³ï¼å®¢æ·ä¸ç©ææåç§°/ç¼ç æ ¡éªï¼ï¼äº§åæç»å¸¦åºç©æåç§°/ç¼ç /æ¡ç /è§æ ¼åå·/计éåä½ï¼å é¤ååæ¶è¿å¸¦å é¤äº§åæç»ï¼ä¸çå¤å¿æ°æ®", "upstream": ["æ¥ä»·å"], "downstream": ["éå®è®¢å", "忬¾è®¡å", "å¼ç¥¨"], "keywords": "åå contract å®¡æ¹ å¯¼å
¥"}, |
| | | {"name": "å票", "module": "éå®ç®¡ç", "table": "crm_invoice", "doc": "KPç¼å·ï¼å¯ç空èªå¨çæãç³»ç»å
å¯ä¸ï¼ï¼BPM 审æ¹ï¼ç´¯è®¡å¼ç¥¨â¤ååé¢ï¼éä»¶å¿
ä¼ ï¼å¼ç¥¨ç³è¯·é¡»ç»å® ERP éå®è®¢åä¸ MES éå®åºåºåï¼å®¡æ¹éè¿åè¿å
¥å½å
¥åç¥¨é¶æ®µ(entry_status 0å¾
å½å
¥â10å·²å½å
¥)ï¼å½å
¥æ¶å¡«åå票å·ç /æ¥æ/é件并设置å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹ï¼æ¯æ Excel 导å
¥ï¼ä»
æ°å¢ä¸æ´æ°ï¼ååé¡»å®¡æ ¸éè¿ä¸æ¬æ¬¡éé¢â¤ååå©ä½å¯å¼ç¥¨é¢ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ââåååä¸å票å·ç ç¸åãæå票å·ç ç空æ¶å¼ç¥¨éé¢+å票æ¬å¤´+å¼ç¥¨æ¥æç¸åå³å¤éå¤ï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡å¹¶åæ¾ç»´åº¦ä¸å®é
å¼ï¼", "upstream": ["åå", "éå®è®¢å", "éå®åºåºå"], "downstream": ["忬¾", "忬¾è®¡å", "è®°è´¦åè¯"], "keywords": "å¼ç¥¨ å票 invoice 导å
¥ å»é å¼ç¥¨ç³è¯· å½å
¥å票 åºåºå"}, |
| | | {"name": "忬¾", "module": "éå®ç®¡ç", "table": "crm_receivable", "doc": "HKç¼å·ï¼å建å³å®¡æ¹ä¸(æå¨å®¡æ ¸)ï¼å¼ºå¶å
å¼ç¥¨ï¼éé¢åæ ¡éªï¼æ°å¢/ç¼è¾å¯å¸¦æ ¸éæç» items(20éå®è®¢å/21éå®åºåº/23å¼ç¥¨)ï¼æç»å计å¿
é¡»çäºå款éé¢ï¼å®¡æ ¸éè¿ååå忬¾è®¡å已忬¾é¢/å®é
忬¾æ¶é´/ç¶æ(0æªå款10é¨å忬¾20已忏
)", "upstream": ["åå", "å票", "éå®è®¢å", "éå®åºåºå"], "downstream": ["æ¶æ¬¾å(å
³è)", "忬¾æ ¸éæç»", "忬¾è®¡å", "è®°è´¦åè¯"], "keywords": "忬¾ æ¶æ¬¾è®¡å receivable æ ¸é"}, |
| | | {"name": "忬¾æ ¸éæç»", "module": "éå®ç®¡ç", "table": "crm_receivable_item", "doc": "æ¯è¡æå款é颿 ¸éå°ä¸å¼ ä¸å¡åæ®ï¼biz_type 20éå®è®¢å/21éå®åºåº/23å¼ç¥¨ï¼biz_noãåæ®éé¢ãå·²æ ¸ééé¢ç±å端æ biz_id åå¡«ï¼æ¯è¡æ ¸éé¢ä¸å¾è¶
è¿è¯¥åæ®å©ä½åºæ¶ï¼ä¸ä¼ items ä¸å¸¦ invoice_id æ¶èªå¨çæä¸æ¡å¼ç¥¨æ ¸éè¡", "upstream": ["忬¾", "éå®è®¢å", "éå®åºåºå", "å票"], "downstream": ["客æ·åºæ¶å¯¹è´¦", "æªæ ¸éåºæ¶æ¥è¡¨"], "keywords": "æ ¸é æ ¸éæç» write off item receivable_item"}, |
| | | {"name": "éå®ç®æ ", "module": "éå®ç®¡ç", "table": "crm_sales_target", "doc": "å¹´/å£/æÃ个人/é¨é¨/产å维度çåå忬¾çç®æ ", "upstream": [], "downstream": ["ä¸ç»©ç»è®¡"], "keywords": "ç®æ target ä¸ç»©"}, |
| | | {"name": "ä¾åºå", "module": "ä¾åºå管ç", "table": "srm_supplier", "doc": "ä¾åºåæ¡£æ¡ï¼æ§ç
§/ç¨å·ï¼å¤ä¸ªè系人(srm_supplier_contact)ä¸å¤ä¸ªé¶è¡è´¦æ·(srm_supplier_bank·å«é¶è¡è¡å·)ï¼ä¸»è¡¨ä¿çé»è®¤è系人/é»è®¤é¶è¡å段ï¼ERP ä¸ MES å
±ç¨", "upstream": ["æå·¥å»ºæ¡£/Excel 导å
¥"], "downstream": ["询价æ¯ä»·", "ææ ä¿è¯é", "éè´è®¢å", "å°è´§éç¥", "ä¾åºåéè´§", "ä¾åºå徿¥"], "keywords": "ä¾åºå supplier vendor è系人 弿·è¡ é¶è¡è¡å·"}, |
| | | {"name": "询价æ¯ä»·", "module": "ä¾åºå管ç", "table": "srm_inquiry", "doc": "XJç¼å·ï¼è稿0â已转订å20â已忶30(10询价ä¸ä¸ºåå²ç¶æ)ï¼æ°å¢/ç¼è¾æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·(srm_inquiry_quote)å¹¶é宿¯ä¸ªäº§åç䏿 ä¾åºåï¼æ éåç¬çæ¥ä»·/æ¯ä»·æ¥éª¤ï¼ç¡®è®¤åæä¸æ ä¾åºåæåçæéè´è®¢åèç¨¿å¹¶è®°å½ srm_inquiry_order", "upstream": ["ä¾åºå", "ä¸»æ°æ®(ç©æ)"], "downstream": ["éè´è®¢å(è稿)"], "keywords": "询价 æ¯ä»· æ¥ä»· 䏿 inquiry quote"}, |
| | | {"name": "ææ ä¿è¯é", "module": "éå®ç®¡ç", "table": "crm_bid_bond", "doc": "BZç¼å·å°è´¦ï¼æå®¢æ·(ææ æ¹)ç»è®°ææ ä¿è¯éï¼é¡¹ç®åç§°/ææ ç¼å·/ä¿è¯ééé¢/ç¼´çº³æ¥æï¼å¯å
³è该客æ·å·²å®¡æ ¸çéå®è®¢å(éå®å°è´¦ï¼å填订åå·ä¸è®¢åéé¢)ï¼ä¸æ ç»æ(0å¾
弿 1已䏿 2æªä¸æ )ï¼æªä¸æ è·è¸ªéåç¶æ(0æªé1é¨å2å·²é3æ éé)/éåéé¢/é忥æï¼ééå®è®¢åèªå¨ç½®ä¸ºå·²ä¸æ ä¸ä¸å¯ä¸æªä¸æ å¹¶å", "upstream": ["客æ·", "éå®è®¢å(éå®å°è´¦)"], "downstream": ["客æ·å¾æ¥/åºæ¶å¯¹è´¦(åè)"], "keywords": "ææ ä¿è¯é 䏿 æªä¸æ éå 鿬¾ ææ bid bond"}, |
| | | {"name": "éè´ç³è¯·", "module": "è¿éå", "table": "erp_purchase_request", "doc": "CGSQç¼å·ï¼BPM 审æ¹ï¼éè¿åæä¾åºåèªå¨çæè®¢å", "upstream": ["ç产缺å£(人工)"], "downstream": ["éè´è®¢å"], "keywords": "éè´ç³è¯· è¯·è´ request"}, |
| | | {"name": "éè´è®¢å", "module": "è¿éå", "table": "erp_purchase_order", "doc": "CGDDç¼å·ï¼BPM 审æ¹(è稿0â审æ¹ä¸15âå·²å®¡æ ¸20)ï¼å
¥åºç¶æ:æª0é¨å1å
¨é¨2ï¼æ¥æºå¯ä¸ºéè´ç³è¯·æè¯¢ä»·æ¯ä»·ç¡®è®¤çæçè稿(æ¥æºåå·å溯)ï¼å价为å«ç¨åä»·ï¼ä»·ç¨å计=åä»·Ãæ°éï¼ç¨é¢ä»å«ç¨éé¢ä¸åç®(ä¸åé¢å¤å ç¨)", "upstream": ["éè´ç³è¯·", "询价æ¯ä»·(ç¡®è®¤ä¸æ )"], "downstream": ["å°è´§éç¥", "éè´æ¥ç¥¨", "ä¾åºåéè´§(约æç©æ)", "ä¾åºå徿¥"], "keywords": "éè´è®¢å purchase"}, |
| | | {"name": "éè´æ¥ç¥¨", "module": "è¿éå", "table": "erp_purchase_invoice", "doc": "FPDç¼å·ï¼AI OCR é¢å¡«ï¼ç´¯è®¡â¤è®¢åæ»ä»·ï¼ä»æ¬¾åçåç½®ï¼å¿
须忶ç»å®éè´è®¢åä¸ MES éè´å
¥åºå(item_receipt_id)ï¼æè®¢åä¸å
¥åºå两å±å©ä½å¯æ¥ç¥¨é¢åº¦æ ¡éªï¼ä¾åºå徿¥å³ä¾§å±ç¤ºå¼ç¥¨éé¢/å·²ä»/å©ä½åºä»", "upstream": ["éè´è®¢å", "MES éè´å
¥åºå"], "downstream": ["仿¬¾å", "ä¾åºå徿¥", "è®°è´¦åè¯"], "keywords": "æ¥ç¥¨ å票 éè´å票 å
¥åºå"}, |
| | | {"name": "仿¬¾å", "module": "è´¢å¡", "table": "erp_finance_payment", "doc": "FKDç¼å·ï¼å¿
é¡»å
³èæ¥ç¥¨+éä»¶ï¼ç´¯è®¡â¤æ¥ç¥¨éé¢ï¼BPM 审æ¹", "upstream": ["éè´æ¥ç¥¨"], "downstream": ["ç»ç®è´¦æ·", "ä¾åºå徿¥"], "keywords": "仿¬¾ åºä» payment"}, |
| | | {"name": "ä¾åºå徿¥", "module": "è¿éå", "table": "æ ç¬ç«è¡¨(èåè§å¾)", "doc": "æä¾åºå+æ¶é´èå´èåéè´è®¢å/æ¥ç¥¨/仿¬¾ï¼æ±æ»ç´¯è®¡éè´é¢ã累计å¼ç¥¨é¢ãç´¯è®¡ä»æ¬¾é¢ãæªä»ä½é¢ï¼å·¦ä¾§è®¢åè¡å«å·²å¼ç¥¨/æªå¼ç¥¨éé¢ï¼å³ä¾§æ¥ç¥¨è¡å«å¼ç¥¨éé¢/å·²ä»/å©ä½åºä»", "upstream": ["éè´è®¢å", "éè´æ¥ç¥¨", "仿¬¾å"], "downstream": [], "keywords": "ä¾åºå徿¥ 对账 å¼ç¥¨éé¢ åºä» statement"}, |
| | | {"name": "æ¶æ¬¾å", "module": "è´¢å¡", "table": "erp_finance_receipt", "doc": "SKDç¼å·ï¼å
³è CRM å®¢æ·æ ¡éªï¼æ BPM(æå¨å®¡æ ¸)", "upstream": ["éå®(å¼±å
³è)"], "downstream": ["ç»ç®è´¦æ·"], "keywords": "æ¶æ¬¾ åºæ¶ receipt"}, |
| | | {"name": "ä¼è®¡ç§ç®", "module": "ä¼è®¡æ ¸ç®", "table": "fin_account_subject", "doc": "ç§ç®æ ï¼parent_id èªå
³èï¼ç§ç®ç±»å1èµäº§2è´åº3æç4ææ¬5æçï¼ä½é¢æ¹å1å2è´·ï¼ç¶æ0å¯ç¨1ç¦ç¨ï¼è´¦è¡¨ä¸åå½ç»ä¸æ subject_code åæ°", "upstream": ["ä¼è®¡ç§ç®ç§å约68æ¡ä¸çº§ç§ç®"], "downstream": ["è®°è´¦åè¯åå½", "æ»è´¦", "æç»è´¦"], "keywords": "ä¼è®¡ç§ç® ç§ç® subject account èµäº§ç±» è´åºç±» æçç±»"}, |
| | | {"name": "è®°è´¦åè¯", "module": "ä¼è®¡æ ¸ç®", "table": "fin_voucher", "doc": "åè¯åå·å¯ç空ç±å端èªå¨çæï¼ç¶æ æªè¿è´¦0/å·²è¿è´¦10/å·²ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹ï¼æªè¿è´¦ä¸å·²è¿è´¦åå¯ä½åºï¼æªè¿è´¦ä¸å·²ä½åºå¯å é¤ï¼å¯éè¿ source_type/source_id/source_no å
³èå¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾çæ¥æºåæ®å¹¶æ¯æææ¥æºåå·æ£ç´¢ï¼éä»¶æ recordType=fin_voucher æç³»ç»éä»¶ä¸å¿", "upstream": ["ä¼è®¡ç§ç®", "å¼ç¥¨", "忬¾", "éè´æ¥ç¥¨", "仿¬¾å"], "downstream": ["æ»è´¦", "æç»è´¦", "è´¢å¡æ¥è¡¨çæ¿"], "keywords": "è®°è´¦åè¯ åè¯ voucher è¿è´¦ ä½åº å贷平衡"}, |
| | | {"name": "åè¯åå½", "module": "ä¼è®¡æ ¸ç®", "table": "fin_voucher_entry", "doc": "åè¯ä¸éè¡åå½ï¼ç§ç®ç¼ç +å/è´·éé¢+è¾
婿 ¸ç®(1客æ·2ä¾åºå3é¨é¨4åå·¥5项ç®)ï¼ä¸è¡ä¸å¯åè´·åæ¶å¤§äº0ï¼å
¨è¡¨åè´·å计å¿
é¡»ç¸çä¸å¤§äº0", "upstream": ["è®°è´¦åè¯", "ä¼è®¡ç§ç®"], "downstream": ["æ»è´¦", "æç»è´¦"], "keywords": "åè¯åå½ åå½ entry åæ¹ è´·æ¹ è¾
婿 ¸ç®"}, |
| | | {"name": "åºå®èµäº§", "module": "ä¼è®¡æ ¸ç®", "table": "fin_fixed_asset", "doc": "èµäº§å¡çï¼ç¶æ 1å¨ç¨/2é²ç½®/3ç»´ä¿®ä¸/4å·²æ¥åºï¼æææ§é¢=(åå¼Ã(1-æ®å¼ç))÷(å¹´éÃ12)ï¼ç´¯è®¡ææ§ä¸åå¼ç±è®¡æç´¯å ï¼ä¸æ¥æ¶åç«¯ä¼ å¼", "upstream": [], "downstream": ["è´¢å¡æ¥è¡¨çæ¿", "æ»è´¦"], "keywords": "åºå®èµäº§ ææ§ èµäº§å¡ç fixed asset æ®å¼ç"}, |
| | | {"name": "æ å½¢èµäº§", "module": "ä¼è®¡æ ¸ç®", "table": "fin_intangible_asset", "doc": "æ å½¢èµäº§å¡ç(è¯ä¹¦ç¼å·/æææ)ï¼ç¶æ 1å¨ç¨/2已失æ/3å·²æéå®ï¼ææéé¢=(åå¼Ã(1-æ®å¼ç))÷(æéå¹´éÃ12)ï¼ç´¯è®¡æéä¸åå¼ç±è®¡æç´¯å ", "upstream": [], "downstream": ["è´¢å¡æ¥è¡¨çæ¿", "æ»è´¦"], "keywords": "æ å½¢èµäº§ æé 软件è使 ä¸å© intangible æææ"}, |
| | | {"name": "éå®è®¢å", "module": "è¿éå", "table": "erp_sale_order", "doc": "XSDDç¼å·ï¼BPM 审æ¹ï¼éç产è¡èªå¨å»º MPSï¼åºåºç¶æ:æª0å·²é¢ç1é¨å2å
¨é¨3ï¼çäº§å®æäºä»¶åå", "upstream": ["åå"], "downstream": ["MPS", "åè´§éç¥", "éå®åºåº", "å®åå·¥å"], "keywords": "éå®è®¢å sale"}, |
| | | {"name": "主ç产计å", "module": "ç产", "table": "mes_pro_mps", "doc": "MPS计åï¼è稿0âå·²ä¸å1â宿2/åæ¶3ï¼å¯åå¹¶ä¸å", "upstream": ["éå®è®¢å"], "downstream": ["ç产工å"], "keywords": "MPS 主计å ç产计å"}, |
| | | {"name": "ç产工å", "module": "ç产", "table": "mes_pro_work_order", "doc": "è稿0â已确认1â宿2/åæ¶3ï¼ç¡®è®¤æ¶æå·¥èºè·¯çº¿çæä»»å¡ï¼æåä¸éå·¥åºæ¥å·¥ååå·²ç产æ°é", "upstream": ["MPS"], "downstream": ["ç产任å¡", "颿", "å®å·¥å
¥åº"], "keywords": "å·¥å ç产工å work order"}, |
| | | {"name": "ç产任å¡", "module": "ç产", "table": "mes_pro_task", "doc": "å·¥åºç²åº¦ï¼é¢å¤0âç产ä¸1âé¨å2â宿4ï¼å¯æå9åæ¶5", "upstream": ["ç产工å"], "downstream": ["æ¥å·¥"], "keywords": "ä»»å¡ task å·¥åº"}, |
| | | {"name": "æ¥å·¥å", "module": "ç产", "table": "mes_pro_feedback", "doc": "è稿0â审æ¹ä¸2âå¾
æ£3/宿4ï¼æå·¥åºé¡ºåºæ ¡éª(ä¸éå·¥åºæ¥æ»¡æå¯æ¥)ï¼èå¨å岿¶è/产åºå
¥åº/IPQCï¼æ¥å·¥æ¶å¿«ç
§å·¥åºè®¡è´¹ç±»å/å·¥èµå®é¢å¹¶è®¡ç®æ¥å·¥å·¥èµ(计æ¶=å·¥æ¶Ãå®é¢ï¼è®¡ä»¶=æ°éÃå®é¢)ï¼å·¥èµè®°å¨æ¥äººåä¸ï¼å®¡æ¹éè¿åè¿å
¥èªé
¬æ ¸ç®ï¼ä¿åæ¶æå·¥åºæ åå·¥æ¶é
ç½®+ç产é¿åº¦+è¾
å©é¡¹æ¬¡æ°å¿«ç
§æ åå·¥æ¶(主工æ¶+è¾
å©å·¥æ¶)ä¸è®¡ç®ä¾æ®ï¼å®é
å·¥æ¶ä¸æ åå·¥æ¶å·®å¼ä»
ç¨äºèæ ¸å¯¹æ¯ãä¸åä¸å·¥èµè®¡ç®", "upstream": ["ç产任å¡", "ç产工åº"], "downstream": ["产å产åº", "ç©ææ¶è", "IPQC", "èªé
¬æ ¸ç®"], "keywords": "æ¥å·¥ feedback å·¥èµ è®¡ä»¶ è®¡æ¶ å·¥æ¶"}, |
| | | {"name": "ç产工åº", "module": "ç产", "table": "mes_pro_process", "doc": "å·¥åºä¸»æ°æ®ï¼è®¡è´¹ç±»å 1-计æ¶/2-计件ï¼å·¥èµå®é¢(计æ¶å
/å°æ¶ã计件å
/ä»¶)ï¼æ¥å·¥æ¶ææ¬å·¥åºé
置快ç
§å¹¶è®¡ç®æ¥å·¥å·¥èµï¼å·¥èºè·¯çº¿æå·¥åºæåºé©±å¨ä»»å¡ãæ åå·¥æ¶é
ç½® std_time_mode(0æªå¯ç¨/1转éÃèè·/2线é度ç´å/3满éç¾åæ¯Ãèè·)ãæç®ç³»æ°ã满转éä¸åæ°ç¼ç ï¼ç¨äºæ¥å·¥æ¶è®¡ç®èæ ¸ç¨æ åå·¥æ¶", "upstream": [], "downstream": ["å·¥èºè·¯çº¿", "æ¥å·¥", "è¾
å©å·¥æ¶é
ç½®"], "keywords": "å·¥åº process 计费类å å·¥èµå®é¢ 计件 è®¡æ¶ æ åå·¥æ¶ æç®ç³»æ°"}, |
| | | {"name": "è¾
å©å·¥æ¶é
ç½®", "module": "ç产", "table": "mes_pro_worktime_aux", "doc": "æå·¥åº(å¯éæºå°)ç»´æ¤è¾
å©å·¥æ¶é¡¹ç®ï¼ææ¬¡/æä¸ª/æçè®¡éæ¶é¿ï¼ææç±³ä»¥æç®é度计æ¶ï¼æ¢è²åºæ¯æææå¯¹(ææâææ)é
ç½®ãæ¥å·¥æ¶æä½å·¥æå·¥å½å
¥æ¬¡æ°/ç±³æ°ï¼ç³»ç»æç®è¾
å©å·¥æ¶å¹¶è®¡å
¥æ åå·¥æ¶å¿«ç
§", "upstream": ["ç产工åº"], "downstream": ["æ¥å·¥"], "keywords": "è¾
å©å·¥æ¶ æ¢è² æ¬¡æ° æç® worktime aux"}, |
| | | {"name": "å·¥èºè·¯çº¿", "module": "ç产", "table": "mes_pro_route", "doc": "å·¥åºé¡ºåº+è´¨æ£/å
³é®/å岿 è®°ï¼é©±å¨å·¥åä»»å¡ä¸æ¥å·¥è§å", "upstream": [], "downstream": ["ç产工å"], "keywords": "å·¥èº è·¯çº¿ route å·¥åº"}, |
| | | {"name": "å°è´§éç¥å", "module": "ä»å¨", "table": "mes_wm_arrival_notice", "doc": "éè´è®¢å确认æ¶è´§çæï¼è稿0âå¾
è´¨æ£2âå¾
å
¥åº3â宿4", "upstream": ["éè´è®¢å"], "downstream": ["IQC", "éè´å
¥åº"], "keywords": "å°è´§ æ¶è´§ arrival"}, |
| | | {"name": "éè´å
¥åºå", "module": "ä»å¨", "table": "mes_wm_item_receipt", "doc": "è稿0âå¾
䏿¶2âå¾
æ§è¡3â宿4ï¼å®æååºå+å¹¶åå ERP inCount/inStatus", "upstream": ["å°è´§éç¥"], "downstream": ["åºåå°è´¦", "éè´è®¢å(åå)"], "keywords": "éè´å
¥åº æ¶è´§å
¥åº receipt"}, |
| | | {"name": "çäº§é¢æå", "module": "ä»å¨", "table": "mes_wm_product_issue", "doc": "è稿0âå¾
æ£è´§2âå¾
æ§è¡3â宿4ï¼åºå-", "upstream": ["ç产工å"], "downstream": ["åºåå°è´¦"], "keywords": "颿 issue"}, |
| | | {"name": "éå®åºåºå", "module": "ä»å¨", "table": "mes_wm_product_sales", "doc": "åè´§éç¥å®¡æ ¸åçæï¼æäº¤âOQCæ£æµâæ£è´§âåè¿10âå¾
æ§è¡3â宿4ï¼ååéå®è®¢ååºåºæ°ä¸ç¶æ", "upstream": ["åè´§éç¥", "éå®è®¢å"], "downstream": ["åºåå°è´¦", "OQC"], "keywords": "éå®åºåº åè´§ åºåºå sales"}, |
| | | {"name": "éå®éè´§å", "module": "ä»å¨", "table": "mes_wm_return_sales", "doc": "è稿âå¾
æ£éª(RQC)âå¾
䏿¶âå¾
å
¥åºâ宿ï¼å®åä¸æå·¥ä¸¤æ¥æº", "upstream": ["å®åéè´§(ä»å¨åèµ·)"], "downstream": ["åºåå°è´¦", "RQC"], "keywords": "éå®éè´§ éè´§å
¥åº"}, |
| | | {"name": "ä¾åºåéè´§å", "module": "ä»å¨", "table": "mes_wm_return_vendor", "doc": "IQC ä¸åæ ¼éè´§åèµ·ï¼å¾
æ£è´§âå¾
æ§è¡â宿ï¼åºå-", "upstream": ["IQC"], "downstream": ["åºåå°è´¦", "éè´è®¢å(returnCount)"], "keywords": "ä¾åºåéè´§ éæ éè´§ vendor"}, |
| | | {"name": "è°æ¨å", "module": "ä»å¨", "table": "mes_wm_transfer", "doc": "å
é¨/å¤é¨è°æ¨ï¼æå¯¹ MOVE_OUT+MOVE_IN äºå¡ï¼å¨éæ°é", "upstream": [], "downstream": ["åºåå°è´¦"], "keywords": "è°æ¨ ç§»åº transfer"}, |
| | | {"name": "çç¹ä»»å¡", "module": "ä»å¨", "table": "mes_wm_stock_taking_task", "doc": "éæ/卿çç¹ï¼è¡ç»æ:æ£å¸¸/çç(ADJUST_IN)/çäº(ADJUST_OUT)ï¼å¯å»ç»åºåãç²ç", "upstream": ["åºåå°è´¦"], "downstream": ["åºåå°è´¦(è°æ´)"], "keywords": "çç¹ çç çäº stock taking"}, |
| | | {"name": "åºåå°è´¦", "module": "ä»å¨", "table": "mes_wm_material_stock", "doc": "ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºåå
å
ç»ï¼æ°é/å»ç»/å ç¨/å¨éåé", "upstream": ["å
¨é¨å
¥åºå"], "downstream": ["å
¨é¨åºåºå", "äºå¡æµæ°´"], "keywords": "åºå å°è´¦ stock å¯ç¨é"}, |
| | | {"name": "æ¹æ¬¡", "module": "ä»å¨", "table": "mes_wm_batch", "doc": "å
³èç©æ/å·¥å/ä¾åºå/客æ·/è´¨éç¶æï¼SN ç 嫿¹æ¬¡ uuidï¼æ¡ç æ¯æ18ç§ä¸å¡å¯¹è±¡", "upstream": ["å
¥åºåæ®"], "downstream": ["åºåå°è´¦"], "keywords": "æ¹æ¬¡ batch SN æ¡ç 追溯"}, |
| | | {"name": "IQCæ¥ææ£éª", "module": "è´¨é", "table": "mes_qc_iqc", "doc": "å°è´§éç¥/å¤åå
¥åºè§¦åï¼è稿0â宿4ï¼ç»è®ºå忥æºåæ®ï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼å·¥å
·æ ãæ¹é导å
¥ãï¼çº¯æ°å¢ã导å
¥å为è稿ãç¼å·å¯ç空èªå¨çæï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç©æ+ä¾åºå+ä¾åºåæ¹æ¬¡+æ¥ææ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", "upstream": ["å°è´§éç¥", "å¤åå
¥åº", "Excel æ¹é导å
¥"], "downstream": ["éè´å
¥åº", "ä¾åºåéè´§", "NCR", "æ¥åå®ä¾(åºæ¥å)"], "keywords": "IQC æ¥ææ£éª åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿"}, |
| | | {"name": "IPQCè¿ç¨æ£éª", "module": "è´¨é", "table": "mes_qc_ipqc", "doc": "æ¥å·¥è´¨æ£å·¥åºäº§åºè¡è§¦åï¼å®æåè°æ¨è¿æ¥å·¥ä¸äº§åºå
¥åºï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼äº§åç©æç±çäº§å·¥åæ¨å¯¼ï¼æ¨¡æ¿ä¸å¡«ç©æï¼å·¥åº+æåº+å
¶ä»åºåä¸å¾è¶
è¿ä¸åæ ¼åæ°éï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç产工å+æ£éªç±»å+å·¥ä½+æ£æµæ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", "upstream": ["æ¥å·¥", "Excel æ¹é导å
¥"], "downstream": ["产åºå
¥åº", "NCR", "æ¥åå®ä¾(åºæ¥å)"], "keywords": "IPQC è¿ç¨æ£éª å·¡æ£ åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿"}, |
| | | {"name": "OQCåºè´§æ£éª", "module": "è´¨é", "table": "mes_qc_oqc", "doc": "éå®åºåºæäº¤è§¦åï¼å®ææ¨è¿åºåºåå¾
æ£è´§ï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼å®¢æ·é¡»å¨å½åç»å½ç¨æ·çå®¢æ·æ°æ®æéèå´å
ï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç©æ+客æ·+æ¹æ¬¡å·+åºè´§æ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", "upstream": ["éå®åºåºå", "Excel æ¹é导å
¥"], "downstream": ["éå®åºåºå(æ¨è¿)", "æ¥åå®ä¾(åºæ¥å)"], "keywords": "OQC åºè´§æ£éª åºåæ£éª åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿"}, |
| | | {"name": "RQCéè´§æ£éª", "module": "è´¨é", "table": "mes_qc_rqc", "doc": "ç产éæ/éå®éè´§/å®åé货触åï¼ç»è®ºåè°å®åï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ãæªè¾å·²ç»ä¸ä¸ºãéè´§æ£éªãï¼åèåç¶é¡¹ä¸ mes_qc_type åå
¸åãéææ£éªãï¼ä¸å端æä¸¾/表注é/èåæéå项ä¸ä¸è´ï¼RQC ä¸è
é½è¦çï¼æ
åãéè´§æ£éªãï¼", "upstream": ["éæ", "éè´§"], "downstream": ["éè´§å
¥åº", "å®ååè°", "æ¥åå®ä¾(åºæ¥å)"], "keywords": "RQC éè´§æ£éª éææ£éª åºæ¥å"}, |
| | | {"name": "NCRä¸åæ ¼å", "module": "è´¨é", "table": "mes_qc_ncr", "doc": "å¾
è¯å®¡0âå·²è¯å®¡6âå·²å¤ç½®7âå·²å
³é8ï¼å¤ç½®:éè´§/æ¥åº/è¿å·¥/è®©æ¥æ¥æ¶/é级", "upstream": ["IQC/IPQC/OQC/RQC"], "downstream": ["éè´§/æ¥åº/è¿å·¥(å°è´¦)"], "keywords": "NCR ä¸åæ ¼ å¤ç½® ç¹é æ¥åº"}, |
| | | {"name": "设å¤", "module": "设å¤", "table": "mes_dv_machinery", "doc": "å°è´¦ç¶æ:åæº/ç产ä¸/ä¿å
»ä¸ï¼ç¹æ£Â·ä¿å
»Â·ç»´ä¿®å·¥åï¼AI é£é©é¢æµæ¶è´¹å
¶æ°æ®", "upstream": [], "downstream": ["ç¹æ£", "ç»´ä¿®", "ç产é£é©é¢æµ"], "keywords": "è®¾å¤ ç¹æ£ ä¿å
» ç»´ä¿® machinery"}, |
| | | {"name": "å®åå·¥å", "module": "å®å", "table": "after_sale_ticket", "doc": "è稿0âå¤çä¸10âå¾
å
¥åº30âå¾
鿬¾40âå®ç»50âå
³é60/åæ¶99ï¼å¤å®:ä¸è¬/ç»´ä¿®/éè´§ï¼å®¢æ·è¯æ±åé¦æè¿°+éä»¶ãå¤çç»æ+éä»¶ï¼å建/æ´æ°/å¤å®/å®ç»/彿¡£/åæ¶/å访åå
¥æµè½¬è®°å½", "upstream": ["客æ·åé¦(人工å½å
¥)"], "downstream": ["维修记å½", "ä»å¨éå®éè´§(åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)"], "keywords": "å®å å·¥å ticket ç»´ä¿® 客æ·è¯æ± å¤çç»æ æµè½¬è®°å½"}, |
| | | {"name": "å·¥åæµè½¬è®°å½", "module": "å®å", "table": "after_sale_ticket_flow", "doc": "å®åå·¥åæ¯æ¬¡å¨ä½ççï¼å¨ä½ç¼ç /åç§°ãåæ´ååç¶æãå
容ãæä½äººãæ¶é´", "upstream": ["å®åå·¥å"], "downstream": [], "keywords": "å®å æµè½¬è®°å½ flow"}, |
| | | {"name": "éè´§ç³è¯·", "module": "å®å", "table": "after_sale_return", "doc": "åå°ä¿çï¼å®å页é¢å·²ä¸çº¿ï¼è稿0âå·²å®¡æ ¸20(èªå¨å»ºMESéè´§å)â已质æ£40âå·²å
¥åº50â已鿬¾60âå
³é70ï¼ç±»å:鿬¾éè´§/æ¢è´§/ä»
鿬¾", "upstream": ["å®åå·¥å"], "downstream": ["éå®éè´§å", "鿬¾"], "keywords": "å®åéè´§ return"}, |
| | | {"name": "åå·¥", "module": "人å", "table": "hrm_employee", "doc": "å¨è1/è¯ç¨2/离è3ï¼å
¥èèªå¨å»ºç³»ç»è´¦å·ï¼ç¦»èç³è¯·å°æèªå¨ç½®ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", "upstream": [], "downstream": ["äº¤æ¥æ å°", "èå¤", "èªé
¬"], "keywords": "åå·¥ å
¥è employee 离è"}, |
| | | {"name": "离èç³è¯·", "module": "人å", "table": "hrm_resignation_application", "doc": "è稿0â审æ¹ä¸10âéè¿20/驳å30/æ¤é40ï¼å®¡æ¹éè¿åå¯äº¤æ¥0â10â20ï¼å°æä»»å¡åå®é
ç¦»èæ¥æãæåå·¥ç¶ææ¹ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", "upstream": ["åå·¥"], "downstream": ["å工档æ¡ç¶æ", "离è交æ¥"], "keywords": "离è resignation å®¡æ¹ äº¤æ¥ èªå¨ç¦»è"}, |
| | | {"name": "离è交æ¥", "module": "人å", "table": "hrm_user_handover", "doc": "åæ¶è®°å½ç¦»è/交æ¥åæ¹åå·¥IDä¸ç¨æ·IDï¼äº¤æ¥å®æ20 å expandUserIds æ©å±äº¤æ¥äººå¯è§æ°æ®ï¼å®¡æ¹éè¿ä¸å°é¢è®¡ç¦»èæ¥æåèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", "upstream": ["离èç³è¯·"], "downstream": ["忍¡åæçæ°æ®æ¥è¯¢", "å工档æ¡ç¶æ"], "keywords": "äº¤æ¥ ç¦»è handover expandUserIds èªå¨ç¦»è"}, |
| | | {"name": "æ¥å模æ¿", "module": "è´¨æ£æ¥å", "table": "qc_report_template", "doc": "æºè½è´¨æ£æ¥å模æ¿ï¼å¯ç¨0/åç¨1ï¼ç»å¸å
容åå¨ qc_report_template_versionï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸ä¸å¯è¦çï¼ï¼currentVersion æåå½åå·²åå¸çæ¬ï¼æºæä»¶ç» AI 导å
¥è¯å«æè稿åç±äººå·¥ç¡®è®¤ææä¸ºçæ¬ï¼å䏿¨¡æ¿éå¤å¯¼å
¥æãæ¿æ¢ãå¤çââå
å æ§éä»¶ï¼è¿å¸¦ blob è¡ä¸ç£çæä»¶ï¼åç»æ°çï¼ä¸çå¤å¿æä»¶ï¼å 餿¨¡æ¿ä¼è¿å¸¦æ¸
éä»¶", "upstream": ["人工设计(GrapesJS 设计å¨)", "AI 导å
¥è稿(qc-report/ai-import/draft)"], "downstream": ["模æ¿çæ¬", "æ¥åå®ä¾"], "keywords": "æ¥åæ¨¡æ¿ è´¨æ£æ¥å template è®¾è®¡å¨ çæ¬ AI导å
¥ è¯å« è稿 æºæä»¶æ¿æ¢"}, |
| | | {"name": "æ¥åå®ä¾", "module": "è´¨æ£æ¥å", "table": "qc_report_instance", "doc": "åºä»¶äº§ç©ï¼ç¼å· QR+yyyyMMdd+4使µæ°´æå¤©ç¬ç«ä¸ä¸å¡å¯ä¸ï¼å¯æ¾å¼æå®è¦çï¼æ³¨æ uk_report_no ä¸åºå软å é¤ï¼å æçå·ä¸åæ¶ï¼ï¼ä¸¤æ¡åºä»¶å
¥å£ï¼éç¨ generateï¼è°ç¨æ¹èªå¸¦ contextï¼ä¸ generate-from-qcï¼æ°æ®ä» MES è´¨æ£ååï¼æéç qc-report:instance:generate å·²å
¥ system_menu id=1075416ï¼äºéæ ¡éªæä¸å¡ä¼å
çº§åªæ¥ç¬¬ä¸å¤ï¼105_000 ç±»åéæ³ / 105_001 åæ®ä¸åå¨ / 105_002 æªå®æ / 105_003 æªå¤å® / 105_005 模æ¿ç±»åä¸ç¬¦ / 105_006 æ å¯ç¨æ£éªé¡¹ï¼åå¼ è´¨æ£åå表çè¡æä½ãåºæ¥åãä»
å¨ status=已宿æ¶å¯è§ï¼å¼¹çªåªå reportType ä¸è´ã模æ¿å¯ç¨ãä¸ currentVersion æåççæ¬å·²åå¸ç模æ¿ï¼å端 /qc-report/template/selectable å¤å®ââåç¨çæ¬ä¸æ¸
空 currentVersionï¼å端æ¿åé¡µç»æèªå·±æ¨å¯¼ä¼æ¼ï¼ï¼ç»æå°±å°å±ç¤ºå¹¶è·³æ¬é¡µå表ï¼ï¼å»ç» data_snapshotï¼å¤å®åæ°æ®ï¼å«å端ç®å¥½ç PASS/FAIL ä¸åæ ¼çï¼ä¸ render_htmlï¼regenerate åªé渲æçãæ°æ®ä¸ç¼å·ä¸åï¼business_id/business_type å MES 表åï¼mes_qc_iqc çï¼ä¸åæ® IDï¼å¯åæ¥ãä¸åå¯åºå¤ä»½ï¼æ¥å头å¦å¸¦åæ®åå¤å® qcResult(æ°)/qcResultText(䏿ï¼åæ ¼/ç¹é/ä¸åæ ¼éè´§/ä¸åæ ¼æ¥åº)ï¼ä¸å¼æä¸æå¤å®å¹¶åäºä¸è¦çï¼ååºå¸¦ undecidableCount=å¿«ç
§ä¸ result 为空串ç项æ°ä¸ warningsï¼åç»æ é¢è·³è¿/ææ å·²å /æªå½å®æµå¼/æ ·åè¶
3ï¼ï¼ä¸¤è
é½ä¸è½åºãäºåçä¸å°", "upstream": ["æ¥å模æ¿çæ¬", "è´¨æ£åä¸ä¸æ(éç¨ generate ç±è°ç¨æ¹ä¼ å
¥)", "MES è´¨æ£å IQC/IPQC/OQC/RQC(generate-from-qc ç» MesQcReportApi åæ°)"], "downstream": ["å端å®ä¾é¡µ /qc/report-instance(å表·iframeé¢è§Â·å¿«ç
§é¡µç¾Â·å¯¼åºPDF)", "PDF彿¡£(system_storage_attachment recordType=qc_report_instance)"], "keywords": "æ¥åå®ä¾ åºä»¶ QRç¼å· å¿«ç
§ å¤ç° regenerate PDF彿¡£ æ¥åå®ä¾é¡µ 导åºPDF generate-from-qc è´¨æ£ååºæ¥å åºæ¥åå¼¹çª qcResult undecidableCount warnings å¾
å¤å® 忥 ä¸å¡åæ®çé"} |
| | | { |
| | | "name": "ç©æ", |
| | | "module": "åºç¡ä¸»æ°æ®", |
| | | "table": "mdm_item", |
| | | "doc": "MDM æå¨ç©æ/产å/åæåæ¡£æ¡ï¼å« SKUãæ¹æ¬¡å±æ§ãä»·æ ¼ãå®å
¨åºå", |
| | | "upstream": [ |
| | | "MES ç©æåå忥" |
| | | ], |
| | | "downstream": [ |
| | | "æ¥ä»·å", |
| | | "éå®è®¢å", |
| | | "éè´è®¢å", |
| | | "å·¥åBOM", |
| | | "åºåå°è´¦" |
| | | ], |
| | | "keywords": "ç©æ 产å åææ item" |
| | | }, |
| | | { |
| | | "name": "ä»åº", |
| | | "module": "åºç¡ä¸»æ°æ®", |
| | | "table": "mdm_warehouse", |
| | | "doc": "ä»åºä¸»æ°æ®ï¼type: 1åæ/2æå/3åæå/4线边ï¼MES èªæ mes_wm_warehouse æ¿è½½åºåºåºä½", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "åºåå°è´¦", |
| | | "åºå
¥åºåæ®" |
| | | ], |
| | | "keywords": "ä»åº warehouse åæä» æåä» çº¿è¾¹ä»" |
| | | }, |
| | | { |
| | | "name": "客æ·", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_customer", |
| | | "doc": "客æ·ä¸»æ¡£ï¼å
¬æµ·æ± /éå®/æäº¤ç¶æï¼è´è´£äººæ°æ®æéï¼å®¢æ·å表æãå®¡æ ¸éè¿ãåå宿¶ç»è®¡å·²ç¾è®¢åå份æ°ä¸éé¢å计", |
| | | "upstream": [ |
| | | "线索" |
| | | ], |
| | | "downstream": [ |
| | | "è系人", |
| | | "åæº", |
| | | "æ¥ä»·å", |
| | | "åå", |
| | | "å®åå·¥å", |
| | | "æ¶æ¬¾å" |
| | | ], |
| | | "keywords": "å®¢æ· customer å
¬æµ·" |
| | | }, |
| | | { |
| | | "name": "线索", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_clue", |
| | | "doc": "åå§éå®çº¿ç´¢ï¼ä»
䏿¬¡è½¬å为客æ·", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "客æ·" |
| | | ], |
| | | "keywords": "线索 clue" |
| | | }, |
| | | { |
| | | "name": "è系人", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_contact", |
| | | "doc": "客æ·ä¸è系人ï¼ä¸åæºå¤å¯¹å¤", |
| | | "upstream": [ |
| | | "客æ·" |
| | | ], |
| | | "downstream": [ |
| | | "åæº" |
| | | ], |
| | | "keywords": "è系人 contact" |
| | | }, |
| | | { |
| | | "name": "åæº", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_business", |
| | | "doc": "é宿ºä¼ï¼DB é
ç½®å¼é¶æ®µæ¨è¿ï¼ç»ææ: èµ¢/è¾/æ æ", |
| | | "upstream": [ |
| | | "客æ·" |
| | | ], |
| | | "downstream": [ |
| | | "æ¥ä»·å", |
| | | "åå" |
| | | ], |
| | | "keywords": "åæº business èµ¢å è¾å é¶æ®µ" |
| | | }, |
| | | { |
| | | "name": "æ¥ä»·å", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_sale_quotation", |
| | | "doc": "QTç¼å·ï¼é MDM ç©ææ¥ä»·ï¼AI OCR å½å
¥ï¼è稿â已转åå", |
| | | "upstream": [ |
| | | "åæº" |
| | | ], |
| | | "downstream": [ |
| | | "åå" |
| | | ], |
| | | "keywords": "æ¥ä»· quotation QT" |
| | | }, |
| | | { |
| | | "name": "åå", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_contract", |
| | | "doc": "HTç¼å·ï¼BPM 审æ¹(0è稿/10审æ¹ä¸/20éè¿/30驳å/40åæ¶/50ä½åº)ï¼éè¿åå¯çæéå®è®¢åï¼æ¯æ Excel 导å
¥ï¼ä¸ååå¤äº§åæç»è¡ãåå¹¶åå
æ ¼èªå¨æå¹³ï¼å®¢æ·ä¸ç©ææåç§°/ç¼ç æ ¡éªï¼ï¼äº§åæç»å¸¦åºç©æåç§°/ç¼ç /æ¡ç /è§æ ¼åå·/计éåä½ï¼å é¤ååæ¶è¿å¸¦å é¤äº§åæç»ï¼ä¸çå¤å¿æ°æ®", |
| | | "upstream": [ |
| | | "æ¥ä»·å" |
| | | ], |
| | | "downstream": [ |
| | | "éå®è®¢å", |
| | | "忬¾è®¡å", |
| | | "å¼ç¥¨" |
| | | ], |
| | | "keywords": "åå contract å®¡æ¹ å¯¼å
¥" |
| | | }, |
| | | { |
| | | "name": "å票", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_invoice", |
| | | "doc": "KPç¼å·ï¼å¯ç空èªå¨çæãç³»ç»å
å¯ä¸ï¼ï¼BPM 审æ¹ï¼ç´¯è®¡å¼ç¥¨â¤ååé¢ï¼éä»¶å¿
ä¼ ï¼å¼ç¥¨ç³è¯·é¡»ç»å® ERP éå®è®¢åä¸ MES éå®åºåºåï¼å®¡æ¹éè¿åè¿å
¥å½å
¥åç¥¨é¶æ®µ(entry_status 0å¾
å½å
¥â10å·²å½å
¥)ï¼å½å
¥æ¶å¡«åå票å·ç /æ¥æ/é件并设置å忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹ï¼æ¯æ Excel 导å
¥ï¼ä»
æ°å¢ä¸æ´æ°ï¼ååé¡»å®¡æ ¸éè¿ä¸æ¬æ¬¡éé¢â¤ååå©ä½å¯å¼ç¥¨é¢ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ââåååä¸å票å·ç ç¸åãæå票å·ç ç空æ¶å¼ç¥¨éé¢+å票æ¬å¤´+å¼ç¥¨æ¥æç¸åå³å¤éå¤ï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡å¹¶åæ¾ç»´åº¦ä¸å®é
å¼ï¼", |
| | | "upstream": [ |
| | | "åå", |
| | | "éå®è®¢å", |
| | | "éå®åºåºå" |
| | | ], |
| | | "downstream": [ |
| | | "忬¾", |
| | | "忬¾è®¡å", |
| | | "è®°è´¦åè¯" |
| | | ], |
| | | "keywords": "å¼ç¥¨ å票 invoice 导å
¥ å»é å¼ç¥¨ç³è¯· å½å
¥å票 åºåºå" |
| | | }, |
| | | { |
| | | "name": "忬¾", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_receivable", |
| | | "doc": "HKç¼å·ï¼åå»ºä¸ºæªæäº¤0ï¼æ¾å¼æäº¤åèµ° BPM åå审æ¹(10审æ¹ä¸â20éè¿/30驳å/40åæ¶)ï¼å¼ºå¶å
å¼ç¥¨ï¼æäº¤æ¶éæ°æ ¡éªéé¢é¢åº¦ï¼æ°å¢/ç¼è¾å¯å¸¦æ ¸éæç» items(20éå®è®¢å/21éå®åºåº/23å¼ç¥¨)ï¼æç»å计å¿
é¡»çäºå款éé¢ï¼å®¡æ¹éè¿æåå忬¾è®¡å已忬¾é¢/å®é
忬¾æ¶é´/ç¶æ(0æªå款10é¨å忬¾20已忏
)ï¼å®¡æ¹ä¸ç忬¾ç¦æ¢é¡µé¢å
æå·¥å®¡æ ¸/åå®¡æ ¸", |
| | | "upstream": [ |
| | | "åå", |
| | | "å票", |
| | | "éå®è®¢å", |
| | | "éå®åºåºå" |
| | | ], |
| | | "downstream": [ |
| | | "æ¶æ¬¾å(å
³è)", |
| | | "忬¾æ ¸éæç»", |
| | | "忬¾è®¡å", |
| | | "è®°è´¦åè¯" |
| | | ], |
| | | "keywords": "忬¾ æ¶æ¬¾è®¡å receivable æ ¸é" |
| | | }, |
| | | { |
| | | "name": "忬¾æ ¸éæç»", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_receivable_item", |
| | | "doc": "æ¯è¡æå款é颿 ¸éå°ä¸å¼ ä¸å¡åæ®ï¼biz_type 20éå®è®¢å/21éå®åºåº/23å¼ç¥¨ï¼biz_noãåæ®éé¢ãå·²æ ¸ééé¢ç±å端æ biz_id åå¡«ï¼æ¯è¡æ ¸éé¢ä¸å¾è¶
è¿è¯¥åæ®å©ä½åºæ¶ï¼ä¸ä¼ items ä¸å¸¦ invoice_id æ¶èªå¨çæä¸æ¡å¼ç¥¨æ ¸éè¡", |
| | | "upstream": [ |
| | | "忬¾", |
| | | "éå®è®¢å", |
| | | "éå®åºåºå", |
| | | "å票" |
| | | ], |
| | | "downstream": [ |
| | | "客æ·åºæ¶å¯¹è´¦", |
| | | "æªæ ¸éåºæ¶æ¥è¡¨" |
| | | ], |
| | | "keywords": "æ ¸é æ ¸éæç» write off item receivable_item" |
| | | }, |
| | | { |
| | | "name": "éå®ç®æ ", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_sales_target", |
| | | "doc": "å¹´/å£/æÃ个人/é¨é¨/产å维度çåå忬¾çç®æ ", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ä¸ç»©ç»è®¡" |
| | | ], |
| | | "keywords": "ç®æ target ä¸ç»©" |
| | | }, |
| | | { |
| | | "name": "ä¾åºå", |
| | | "module": "ä¾åºå管ç", |
| | | "table": "srm_supplier", |
| | | "doc": "ä¾åºåæ¡£æ¡ï¼æ§ç
§/ç¨å·ï¼å¤ä¸ªè系人(srm_supplier_contact)ä¸å¤ä¸ªé¶è¡è´¦æ·(srm_supplier_bank·å«é¶è¡è¡å·)ï¼ä¸»è¡¨ä¿çé»è®¤è系人/é»è®¤é¶è¡å段ï¼ERP ä¸ MES å
±ç¨", |
| | | "upstream": [ |
| | | "æå·¥å»ºæ¡£/Excel 导å
¥" |
| | | ], |
| | | "downstream": [ |
| | | "询价æ¯ä»·", |
| | | "ææ ä¿è¯é", |
| | | "éè´è®¢å", |
| | | "å°è´§éç¥", |
| | | "ä¾åºåéè´§", |
| | | "ä¾åºå徿¥" |
| | | ], |
| | | "keywords": "ä¾åºå supplier vendor è系人 弿·è¡ é¶è¡è¡å·" |
| | | }, |
| | | { |
| | | "name": "询价æ¯ä»·", |
| | | "module": "ä¾åºå管ç", |
| | | "table": "srm_inquiry", |
| | | "doc": "XJç¼å·ï¼è稿0â已转订å20â已忶30(10询价ä¸ä¸ºåå²ç¶æ)ï¼æ°å¢/ç¼è¾æ¶ä¸å¹¶å½å
¥äº§åè¡Ãåä¸ä¾åºåæ¥ä»·(srm_inquiry_quote)å¹¶é宿¯ä¸ªäº§åç䏿 ä¾åºåï¼æ éåç¬çæ¥ä»·/æ¯ä»·æ¥éª¤ï¼ç¡®è®¤åæä¸æ ä¾åºåæåçæéè´è®¢åèç¨¿å¹¶è®°å½ srm_inquiry_order", |
| | | "upstream": [ |
| | | "ä¾åºå", |
| | | "ä¸»æ°æ®(ç©æ)" |
| | | ], |
| | | "downstream": [ |
| | | "éè´è®¢å(è稿)" |
| | | ], |
| | | "keywords": "询价 æ¯ä»· æ¥ä»· 䏿 inquiry quote" |
| | | }, |
| | | { |
| | | "name": "ææ ä¿è¯é", |
| | | "module": "éå®ç®¡ç", |
| | | "table": "crm_bid_bond", |
| | | "doc": "BZç¼å·å°è´¦ï¼æå®¢æ·(ææ æ¹)ç»è®°ææ ä¿è¯éï¼é¡¹ç®åç§°/ææ ç¼å·/ä¿è¯ééé¢/ç¼´çº³æ¥æï¼å¯å
³è该客æ·å·²å®¡æ ¸çéå®è®¢å(éå®å°è´¦ï¼å填订åå·ä¸è®¢åéé¢)ï¼ä¸æ ç»æ(0å¾
弿 1已䏿 2æªä¸æ )ï¼æªä¸æ è·è¸ªéåç¶æ(0æªé1é¨å2å·²é3æ éé)/éåéé¢/é忥æï¼ééå®è®¢åèªå¨ç½®ä¸ºå·²ä¸æ ä¸ä¸å¯ä¸æªä¸æ å¹¶å", |
| | | "upstream": [ |
| | | "客æ·", |
| | | "éå®è®¢å(éå®å°è´¦)" |
| | | ], |
| | | "downstream": [ |
| | | "客æ·å¾æ¥/åºæ¶å¯¹è´¦(åè)" |
| | | ], |
| | | "keywords": "ææ ä¿è¯é 䏿 æªä¸æ éå 鿬¾ ææ bid bond" |
| | | }, |
| | | { |
| | | "name": "éè´ç³è¯·", |
| | | "module": "è¿éå", |
| | | "table": "erp_purchase_request", |
| | | "doc": "CGSQç¼å·ï¼BPM 审æ¹ï¼éè¿åæä¾åºåèªå¨çæè®¢å", |
| | | "upstream": [ |
| | | "ç产缺å£(人工)" |
| | | ], |
| | | "downstream": [ |
| | | "éè´è®¢å" |
| | | ], |
| | | "keywords": "éè´ç³è¯· è¯·è´ request" |
| | | }, |
| | | { |
| | | "name": "éè´è®¢å", |
| | | "module": "è¿éå", |
| | | "table": "erp_purchase_order", |
| | | "doc": "èååãéè´å°è´¦ãï¼CGDDç¼å·ï¼BPM 审æ¹(è稿0â审æ¹ä¸15âå·²å®¡æ ¸20)ï¼å
¥åºç¶æ:æª0é¨å1å
¨é¨2ï¼è¡¨å¤´å«éè´ç±»å(ç产/åå
¬ç¨å/å
¶ä»)ãååå·(æå·¥è¾å
¥ä¸èªå¨çæ)ã项ç®åç§°ã仿¬¾æ¥æ(å¿
å¡«ï¼è¶
30å¤©è´¦ææ çº¢)ã仿¬¾æ¹å¼(çµæ±/æ±ç¥¨/ç°é/ææºæ¯ä»)ï¼æç»äº§åç¼å·å¿«ç
§ MDM ç©æç¼ç ï¼æ¥æºå¯ä¸ºéè´ç³è¯·ã询价æ¯ä»·ç¡®è®¤çæçè稿æéå®è®¢å/ç产工å(æ¥æºåå·å溯)ï¼å价为å«ç¨åä»·ï¼ä»·ç¨å计=åä»·Ãæ°éï¼ç¨é¢ä»å«ç¨éé¢ä¸åç®(ä¸åé¢å¤å ç¨)", |
| | | "upstream": [ |
| | | "éè´ç³è¯·", |
| | | "询价æ¯ä»·(ç¡®è®¤ä¸æ )" |
| | | ], |
| | | "downstream": [ |
| | | "å°è´§éç¥", |
| | | "éè´æ¥ç¥¨", |
| | | "ä¾åºåéè´§(约æç©æ)", |
| | | "ä¾åºå徿¥" |
| | | ], |
| | | "keywords": "éè´è®¢å purchase" |
| | | }, |
| | | { |
| | | "name": "éè´æ¥ç¥¨", |
| | | "module": "è¿éå", |
| | | "table": "erp_purchase_invoice", |
| | | "doc": "FPDç¼å·ï¼AI OCR é¢å¡«ï¼ç´¯è®¡â¤è®¢åæ»ä»·ï¼ä»æ¬¾åçåç½®ï¼å¿
须忶ç»å®éè´è®¢åä¸ MES éè´å
¥åºå(item_receipt_id)ï¼æè®¢åä¸å
¥åºå两å±å©ä½å¯æ¥ç¥¨é¢åº¦æ ¡éªï¼ä¾åºå徿¥å³ä¾§å±ç¤ºå¼ç¥¨éé¢/å·²ä»/å©ä½åºä»", |
| | | "upstream": [ |
| | | "éè´è®¢å", |
| | | "MES éè´å
¥åºå" |
| | | ], |
| | | "downstream": [ |
| | | "仿¬¾å", |
| | | "ä¾åºå徿¥", |
| | | "è®°è´¦åè¯" |
| | | ], |
| | | "keywords": "æ¥ç¥¨ å票 éè´å票 å
¥åºå" |
| | | }, |
| | | { |
| | | "name": "仿¬¾å", |
| | | "module": "è´¢å¡", |
| | | "table": "erp_finance_payment", |
| | | "doc": "FKDç¼å·ï¼å¿
é¡»å
³èæ¥ç¥¨+éä»¶ï¼ç´¯è®¡â¤æ¥ç¥¨éé¢ï¼BPM 审æ¹", |
| | | "upstream": [ |
| | | "éè´æ¥ç¥¨" |
| | | ], |
| | | "downstream": [ |
| | | "ç»ç®è´¦æ·", |
| | | "ä¾åºå徿¥" |
| | | ], |
| | | "keywords": "仿¬¾ åºä» payment" |
| | | }, |
| | | { |
| | | "name": "ä¾åºå徿¥", |
| | | "module": "è¿éå", |
| | | "table": "æ ç¬ç«è¡¨(èåè§å¾)", |
| | | "doc": "æä¾åºå+æ¶é´èå´èåéè´è®¢å/æ¥ç¥¨/仿¬¾ï¼æ±æ»ç´¯è®¡éè´é¢ã累计å¼ç¥¨é¢ãç´¯è®¡ä»æ¬¾é¢ãæªä»ä½é¢ï¼å·¦ä¾§è®¢åè¡å«å·²å¼ç¥¨/æªå¼ç¥¨éé¢ï¼å³ä¾§æ¥ç¥¨è¡å«å¼ç¥¨éé¢/å·²ä»/å©ä½åºä»", |
| | | "upstream": [ |
| | | "éè´è®¢å", |
| | | "éè´æ¥ç¥¨", |
| | | "仿¬¾å" |
| | | ], |
| | | "downstream": [], |
| | | "keywords": "ä¾åºå徿¥ 对账 å¼ç¥¨éé¢ åºä» statement" |
| | | }, |
| | | { |
| | | "name": "æ¶æ¬¾å", |
| | | "module": "è´¢å¡", |
| | | "table": "erp_finance_receipt", |
| | | "doc": "SKDç¼å·ï¼å
³è CRM å®¢æ·æ ¡éªï¼æ BPM(æå¨å®¡æ ¸)", |
| | | "upstream": [ |
| | | "éå®(å¼±å
³è)" |
| | | ], |
| | | "downstream": [ |
| | | "ç»ç®è´¦æ·" |
| | | ], |
| | | "keywords": "æ¶æ¬¾ åºæ¶ receipt" |
| | | }, |
| | | { |
| | | "name": "ä¼è®¡ç§ç®", |
| | | "module": "ä¼è®¡æ ¸ç®", |
| | | "table": "fin_account_subject", |
| | | "doc": "ç§ç®æ ï¼parent_id èªå
³èï¼ç§ç®ç±»å1èµäº§2è´åº3æç4ææ¬5æçï¼ä½é¢æ¹å1å2è´·ï¼ç¶æ0å¯ç¨1ç¦ç¨ï¼è´¦è¡¨ä¸åå½ç»ä¸æ subject_code åæ°", |
| | | "upstream": [ |
| | | "ä¼è®¡ç§ç®ç§å约68æ¡ä¸çº§ç§ç®" |
| | | ], |
| | | "downstream": [ |
| | | "è®°è´¦åè¯åå½", |
| | | "æ»è´¦", |
| | | "æç»è´¦" |
| | | ], |
| | | "keywords": "ä¼è®¡ç§ç® ç§ç® subject account èµäº§ç±» è´åºç±» æçç±»" |
| | | }, |
| | | { |
| | | "name": "è®°è´¦åè¯", |
| | | "module": "ä¼è®¡æ ¸ç®", |
| | | "table": "fin_voucher", |
| | | "doc": "åè¯åå·å¯ç空ç±å端èªå¨çæï¼ç¶æ æªè¿è´¦0/å·²è¿è´¦10/å·²ä½åº20ï¼å·²è¿è´¦ä¸å¯æ¹ï¼æªè¿è´¦ä¸å·²è¿è´¦åå¯ä½åºï¼æªè¿è´¦ä¸å·²ä½åºå¯å é¤ï¼å¯éè¿ source_type/source_id/source_no å
³èå¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾çæ¥æºåæ®å¹¶æ¯æææ¥æºåå·æ£ç´¢ï¼éä»¶æ recordType=fin_voucher æç³»ç»éä»¶ä¸å¿", |
| | | "upstream": [ |
| | | "ä¼è®¡ç§ç®", |
| | | "å¼ç¥¨", |
| | | "忬¾", |
| | | "éè´æ¥ç¥¨", |
| | | "仿¬¾å" |
| | | ], |
| | | "downstream": [ |
| | | "æ»è´¦", |
| | | "æç»è´¦", |
| | | "è´¢å¡æ¥è¡¨çæ¿" |
| | | ], |
| | | "keywords": "è®°è´¦åè¯ åè¯ voucher è¿è´¦ ä½åº å贷平衡" |
| | | }, |
| | | { |
| | | "name": "åè¯åå½", |
| | | "module": "ä¼è®¡æ ¸ç®", |
| | | "table": "fin_voucher_entry", |
| | | "doc": "åè¯ä¸éè¡åå½ï¼ç§ç®ç¼ç +å/è´·éé¢+è¾
婿 ¸ç®(1客æ·2ä¾åºå3é¨é¨4åå·¥5项ç®)ï¼ä¸è¡ä¸å¯åè´·åæ¶å¤§äº0ï¼å
¨è¡¨åè´·å计å¿
é¡»ç¸çä¸å¤§äº0", |
| | | "upstream": [ |
| | | "è®°è´¦åè¯", |
| | | "ä¼è®¡ç§ç®" |
| | | ], |
| | | "downstream": [ |
| | | "æ»è´¦", |
| | | "æç»è´¦" |
| | | ], |
| | | "keywords": "åè¯åå½ åå½ entry åæ¹ è´·æ¹ è¾
婿 ¸ç®" |
| | | }, |
| | | { |
| | | "name": "åºå®èµäº§", |
| | | "module": "ä¼è®¡æ ¸ç®", |
| | | "table": "fin_fixed_asset", |
| | | "doc": "èµäº§å¡çï¼ç¶æ 1å¨ç¨/2é²ç½®/3ç»´ä¿®ä¸/4å·²æ¥åºï¼æææ§é¢=(åå¼Ã(1-æ®å¼ç))÷(å¹´éÃ12)ï¼ç´¯è®¡ææ§ä¸åå¼ç±è®¡æç´¯å ï¼ä¸æ¥æ¶åç«¯ä¼ å¼", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "è´¢å¡æ¥è¡¨çæ¿", |
| | | "æ»è´¦" |
| | | ], |
| | | "keywords": "åºå®èµäº§ ææ§ èµäº§å¡ç fixed asset æ®å¼ç" |
| | | }, |
| | | { |
| | | "name": "æ å½¢èµäº§", |
| | | "module": "ä¼è®¡æ ¸ç®", |
| | | "table": "fin_intangible_asset", |
| | | "doc": "æ å½¢èµäº§å¡ç(è¯ä¹¦ç¼å·/æææ)ï¼ç¶æ 1å¨ç¨/2已失æ/3å·²æéå®ï¼ææéé¢=(åå¼Ã(1-æ®å¼ç))÷(æéå¹´éÃ12)ï¼ç´¯è®¡æéä¸åå¼ç±è®¡æç´¯å ", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "è´¢å¡æ¥è¡¨çæ¿", |
| | | "æ»è´¦" |
| | | ], |
| | | "keywords": "æ å½¢èµäº§ æé 软件è使 ä¸å© intangible æææ" |
| | | }, |
| | | { |
| | | "name": "éå®è®¢å", |
| | | "module": "è¿éå", |
| | | "table": "erp_sale_order", |
| | | "doc": "XSDDç¼å·ï¼BPM 审æ¹ï¼éç产è¡èªå¨å»º MPSï¼åºåºç¶æ:æª0å·²é¢ç1é¨å2å
¨é¨3ï¼çäº§å®æäºä»¶åå", |
| | | "upstream": [ |
| | | "åå" |
| | | ], |
| | | "downstream": [ |
| | | "MPS", |
| | | "åè´§éç¥", |
| | | "éå®åºåº", |
| | | "å®åå·¥å" |
| | | ], |
| | | "keywords": "éå®è®¢å sale" |
| | | }, |
| | | { |
| | | "name": "主ç产计å", |
| | | "module": "ç产", |
| | | "table": "mes_pro_mps", |
| | | "doc": "MPS计åï¼è稿0âå·²ä¸å1â宿2/åæ¶3ï¼å¯åå¹¶ä¸å", |
| | | "upstream": [ |
| | | "éå®è®¢å" |
| | | ], |
| | | "downstream": [ |
| | | "ç产工å" |
| | | ], |
| | | "keywords": "MPS 主计å ç产计å" |
| | | }, |
| | | { |
| | | "name": "ç产工å", |
| | | "module": "ç产", |
| | | "table": "mes_pro_work_order", |
| | | "doc": "è稿0â已确认1â宿2/åæ¶3ï¼ç¡®è®¤æ¶æå·¥èºè·¯çº¿çæä»»å¡ï¼æåä¸éå·¥åºæ¥å·¥ååå·²ç产æ°é", |
| | | "upstream": [ |
| | | "MPS" |
| | | ], |
| | | "downstream": [ |
| | | "ç产任å¡", |
| | | "颿", |
| | | "å®å·¥å
¥åº" |
| | | ], |
| | | "keywords": "å·¥å ç产工å work order" |
| | | }, |
| | | { |
| | | "name": "ç产任å¡", |
| | | "module": "ç产", |
| | | "table": "mes_pro_task", |
| | | "doc": "å·¥åºç²åº¦ï¼é¢å¤0âç产ä¸1âé¨å2â宿4ï¼å¯æå9åæ¶5", |
| | | "upstream": [ |
| | | "ç产工å" |
| | | ], |
| | | "downstream": [ |
| | | "æ¥å·¥" |
| | | ], |
| | | "keywords": "ä»»å¡ task å·¥åº" |
| | | }, |
| | | { |
| | | "name": "æ¥å·¥å", |
| | | "module": "ç产", |
| | | "table": "mes_pro_feedback", |
| | | "doc": "è稿0â审æ¹ä¸2âå¾
æ£3/宿4ï¼æå·¥åºé¡ºåºæ ¡éª(ä¸éå·¥åºæ¥æ»¡æå¯æ¥)ï¼èå¨å岿¶è/产åºå
¥åº/IPQCï¼è´¨æ£å·¥åºæ¥å·¥å®¡æ¹å转å¾
æ£éªå¹¶çæ PENDING 产åºè¡ï¼ç已宿 IPQC æç©æ+çå·+æ°éå
³èåæååå®æãæ¥å·¥æ¶å¿«ç
§å·¥åºè®¡è´¹ç±»å/å·¥èµå®é¢å¹¶è®¡ç®æ¥å·¥å·¥èµï¼åä»·ä¼å
æå·¥èºè·¯çº¿+主计价设å¤+çææ¥æå¹é
åä»·è§åï¼æªå½ä¸åéå·¥åºå·¥èµå®é¢ï¼å·¥èµå段(ç³»æ°/å åéé¢/计价æ°é)è°æ´ä¸»+è¾
å·¥èµï¼è®¡ä»¶æåæ ¼æ°é计价ï¼è´¨æ£å·¥åºæåæ ¼çåºç¨è´¨éç³»æ°æä¸åæ ¼æ£æ¬¾ï¼å·¥èµè®°å¨æ¥å·¥äºº(feedback_user_id)åä¸ï¼å®¡æ¹éè¿åè¿å
¥èªé
¬æ ¸ç®ãè´¨æ£å·¥åºæäº¤æ¶èªå¨çæè稿è¿ç¨æ£éªåï¼å®¡æ¹åå¿
须宿ãä¿åæ¶æå·¥åºæ åå·¥æ¶é
ç½®+ç产é¿åº¦+è¾
å©é¡¹æ¬¡æ°å¿«ç
§æ åå·¥æ¶(主工æ¶+è¾
å©å·¥æ¶)ä¸è®¡ç®ä¾æ®ï¼å®é
å·¥æ¶ä¸æ åå·¥æ¶çå·®å¼ä»
ç¨äºèæ ¸å¯¹æ¯ï¼ä¸åä¸å·¥èµè®¡ç®", |
| | | "upstream": [ |
| | | "ç产任å¡", |
| | | "ç产工åº" |
| | | ], |
| | | "downstream": [ |
| | | "产å产åº", |
| | | "ç©ææ¶è", |
| | | "IPQC", |
| | | "èªé
¬æ ¸ç®" |
| | | ], |
| | | "keywords": "æ¥å·¥ feedback å·¥èµ è®¡ä»¶ è®¡æ¶ å·¥æ¶ åä»·è§å è®¾å¤ åæ ¼ç è¾
å©å·¥èµ è¿ç¨æ£éª" |
| | | }, |
| | | { |
| | | "name": "ç产工åº", |
| | | "module": "ç产", |
| | | "table": "mes_pro_process", |
| | | "doc": "å·¥åºä¸»æ°æ®ï¼è®¡è´¹ç±»å 1-计æ¶/2-计件ï¼å·¥èµå®é¢ï¼è®¡æ¶å
/å°æ¶ã计件å
/ä»¶ï¼ï¼æ¥å·¥æ¶ææ¬å·¥åºé
置快ç
§å¹¶è®¡ç®æ¥å·¥å·¥èµï¼å¦ç»´æ¤èªå®ä¹å·¥èµå段ãæå·¥èºè·¯çº¿/设å¤/çææ¥æçåä»·è§åãè´¨éå·¥èµè§åä¸è¾
å©å°æ¶å·¥èµï¼å·¥èºè·¯çº¿æå·¥åºæåºé©±å¨ä»»å¡ãæ åå·¥æ¶é
ç½® std_time_mode(0æªå¯ç¨/1转éÃèè·/2线é度ç´å/3满éç¾åæ¯Ãèè·)ãæç®ç³»æ°ã满转éä¸åæ°ç¼ç ï¼ç¨äºæ¥å·¥æ¶è®¡ç®èæ ¸ç¨æ åå·¥æ¶", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "å·¥èºè·¯çº¿", |
| | | "æ¥å·¥", |
| | | "è¾
å©å·¥æ¶é
ç½®" |
| | | ], |
| | | "keywords": "å·¥åº process 计费类å å·¥èµå®é¢ å·¥èµå段 åä»·è§å è´¨éè§å è¾
å©å°æ¶å·¥èµ 计件 è®¡æ¶ æ åå·¥æ¶ æç®ç³»æ°" |
| | | }, |
| | | { |
| | | "name": "è¾
å©å·¥æ¶é
ç½®", |
| | | "module": "ç产", |
| | | "table": "mes_pro_worktime_aux", |
| | | "doc": "æå·¥åº(å¯éæºå°)ç»´æ¤è¾
å©å·¥æ¶é¡¹ç®ï¼ææ¬¡/æä¸ª/æçè®¡éæ¶é¿ï¼ææç±³ä»¥æç®é度计æ¶ï¼æ¢è²åºæ¯æææå¯¹(ææâææ)é
ç½®ãæ¥å·¥æ¶æä½å·¥æå·¥å½å
¥æ¬¡æ°/ç±³æ°ï¼ç³»ç»æç®è¾
å©å·¥æ¶å¹¶è®¡å
¥æ åå·¥æ¶å¿«ç
§", |
| | | "upstream": [ |
| | | "ç产工åº" |
| | | ], |
| | | "downstream": [ |
| | | "æ¥å·¥" |
| | | ], |
| | | "keywords": "è¾
å©å·¥æ¶ æ¢è² æ¬¡æ° æç® worktime aux" |
| | | }, |
| | | { |
| | | "name": "å·¥èºè·¯çº¿", |
| | | "module": "ç产", |
| | | "table": "mes_pro_route", |
| | | "doc": "å·¥åºé¡ºåº+è´¨æ£/å
³é®/å岿 è®°ï¼é©±å¨å·¥åä»»å¡ä¸æ¥å·¥è§å", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç产工å" |
| | | ], |
| | | "keywords": "å·¥èº è·¯çº¿ route å·¥åº" |
| | | }, |
| | | { |
| | | "name": "å°è´§éç¥å", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_arrival_notice", |
| | | "doc": "éè´è®¢å确认æ¶è´§çæï¼è稿0âå¾
è´¨æ£2âå¾
å
¥åº3â宿4ï¼è¡¨å¤´å¸¦éè´ååå·(éæ©éè´è®¢åèªå¨å¸¦å
¥ï¼æ¢è´§å°è´§æ²¿ç¨åéè´§åååå·)ï¼å¯æååå·æ£ç´¢", |
| | | "upstream": [ |
| | | "éè´è®¢å", |
| | | "ä¾åºåéè´§(æ¢è´§)" |
| | | ], |
| | | "downstream": [ |
| | | "IQC", |
| | | "éè´å
¥åº" |
| | | ], |
| | | "keywords": "å°è´§ æ¶è´§ arrival ååå·" |
| | | }, |
| | | { |
| | | "name": "éè´å
¥åºå", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_item_receipt", |
| | | "doc": "è稿0âå¾
䏿¶2âå¾
æ§è¡3â宿4ï¼å®æååºå+å¹¶åå ERP inCount/inStatus", |
| | | "upstream": [ |
| | | "å°è´§éç¥" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦", |
| | | "éè´è®¢å(åå)" |
| | | ], |
| | | "keywords": "éè´å
¥åº æ¶è´§å
¥åº receipt" |
| | | }, |
| | | { |
| | | "name": "çäº§é¢æå", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_product_issue", |
| | | "doc": "è稿0âå¾
æ£è´§2âå¾
æ§è¡3â宿4ï¼åºå-", |
| | | "upstream": [ |
| | | "ç产工å" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦" |
| | | ], |
| | | "keywords": "颿 issue" |
| | | }, |
| | | { |
| | | "name": "éå®åºåºå", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_product_sales", |
| | | "doc": "åè´§éç¥å®¡æ ¸åçæï¼æäº¤åæ oqcCheckFlag è¡è½¬å¾
æ£æµ1ï¼æäº¤æ¶ä¸åèªå¨å»º OQCï¼ï¼éè´¨æ£åç¬ç«å½å
¥ OQC 并卿£éªå详æ
æç©æ+çå·+æ°éå
³èå¾
æ£è¡ï¼å
¨é¨å¾
æ£è¡åæ ¼å转å¾
æ£è´§2âåè¿10âå¾
æ§è¡3â宿4ï¼ååéå®è®¢ååºåºæ°ä¸ç¶æ", |
| | | "upstream": [ |
| | | "åè´§éç¥", |
| | | "éå®è®¢å" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦", |
| | | "OQC" |
| | | ], |
| | | "keywords": "éå®åºåº åè´§ åºåºå sales" |
| | | }, |
| | | { |
| | | "name": "éå®éè´§å", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_return_sales", |
| | | "doc": "è稿âå¾
æ£éª(RQC)âå¾
䏿¶âå¾
å
¥åºâ宿ï¼å®åä¸æå·¥ä¸¤æ¥æº", |
| | | "upstream": [ |
| | | "å®åéè´§(ä»å¨åèµ·)" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦", |
| | | "RQC" |
| | | ], |
| | | "keywords": "éå®éè´§ éè´§å
¥åº" |
| | | }, |
| | | { |
| | | "name": "ä¾åºåéè´§å", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_return_vendor", |
| | | "doc": "è´¨éé¨åèµ·éè´§ï¼è稿0â审æ¹ä¸1(BPMï¼éè´âè´¨éâä»åº)âå¾
æ£è´§2âå¾
æ§è¡éè´§3â宿4ï¼å¯åæ¶5ï¼åºå-ï¼ä¸ä¼ éä»¶èµ° storage-attachmentï¼å¤çæ¹å¼ 1鿬¾(宿åèªå¨çæè´æ°å²çº¢ä»æ¬¾å) / 2æ¢è´§(宿åèªå¨çæå¾
è´¨æ£å°è´§éç¥åå¹¶å建 IQCï¼éæ°å
¥åºè´¨æ£)ï¼ååå·ä»éè´è®¢åå¿«ç
§", |
| | | "upstream": [ |
| | | "IQC", |
| | | "éè´è®¢å(ååå·)" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦", |
| | | "éè´è®¢å(returnCount)", |
| | | "仿¬¾å(å²çº¢)", |
| | | "å°è´§éç¥(æ¢è´§)" |
| | | ], |
| | | "keywords": "ä¾åºåéè´§ éæ éè´§ vendor" |
| | | }, |
| | | { |
| | | "name": "è°æ¨å", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_transfer", |
| | | "doc": "å
é¨/å¤é¨è°æ¨ï¼æå¯¹ MOVE_OUT+MOVE_IN äºå¡ï¼å¨éæ°é", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "åºåå°è´¦" |
| | | ], |
| | | "keywords": "è°æ¨ ç§»åº transfer" |
| | | }, |
| | | { |
| | | "name": "çç¹ä»»å¡", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_stock_taking_task", |
| | | "doc": "éæ/卿çç¹ï¼è¡ç»æ:æ£å¸¸/çç(ADJUST_IN)/çäº(ADJUST_OUT)ï¼å¯å»ç»åºåãç²ç", |
| | | "upstream": [ |
| | | "åºåå°è´¦" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦(è°æ´)" |
| | | ], |
| | | "keywords": "çç¹ çç çäº stock taking" |
| | | }, |
| | | { |
| | | "name": "åºåå°è´¦", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_material_stock", |
| | | "doc": "ç©æÃä»åºÃåºåºÃåºä½Ãæ¹æ¬¡Ãä¾åºåå
å
ç»ï¼æ°é/å»ç»/å ç¨/å¨éåé", |
| | | "upstream": [ |
| | | "å
¨é¨å
¥åºå" |
| | | ], |
| | | "downstream": [ |
| | | "å
¨é¨åºåºå", |
| | | "äºå¡æµæ°´" |
| | | ], |
| | | "keywords": "åºå å°è´¦ stock å¯ç¨é" |
| | | }, |
| | | { |
| | | "name": "æ¹æ¬¡", |
| | | "module": "ä»å¨", |
| | | "table": "mes_wm_batch", |
| | | "doc": "å
³èç©æ/å·¥å/ä¾åºå/客æ·/è´¨éç¶æï¼SN ç 嫿¹æ¬¡ uuidï¼æ¡ç æ¯æ18ç§ä¸å¡å¯¹è±¡", |
| | | "upstream": [ |
| | | "å
¥åºåæ®" |
| | | ], |
| | | "downstream": [ |
| | | "åºåå°è´¦" |
| | | ], |
| | | "keywords": "æ¹æ¬¡ batch SN æ¡ç 追溯" |
| | | }, |
| | | { |
| | | "name": "IQCæ¥ææ£éª", |
| | | "module": "è´¨é", |
| | | "table": "mes_qc_iqc", |
| | | "doc": "å°è´§éç¥/å¤åå
¥åºè§¦åï¼è稿0â宿4ï¼ç»è®ºå忥æºåæ®ï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼å·¥å
·æ ãæ¹é导å
¥ãï¼çº¯æ°å¢ã导å
¥å为è稿ãç¼å·å¯ç空èªå¨çæï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç©æ+ä¾åºå+ä¾åºåæ¹æ¬¡+æ¥ææ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", |
| | | "upstream": [ |
| | | "å°è´§éç¥", |
| | | "å¤åå
¥åº", |
| | | "Excel æ¹é导å
¥" |
| | | ], |
| | | "downstream": [ |
| | | "éè´å
¥åº", |
| | | "ä¾åºåéè´§", |
| | | "NCR", |
| | | "æ¥åå®ä¾(åºæ¥å)" |
| | | ], |
| | | "keywords": "IQC æ¥ææ£éª åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿" |
| | | }, |
| | | { |
| | | "name": "IPQCè¿ç¨æ£éª", |
| | | "module": "è´¨é", |
| | | "table": "mes_qc_ipqc", |
| | | "doc": "æ¥å·¥è´¨æ£å·¥åºäº§åºè¡å¾
æ£åç¬ç«å½å
¥ï¼å®ææ¶æåæ ¼+ä¸åæ ¼=æ£æµæ°éèªå¨å¤å® 1 éè¿/2 ä¸éè¿ï¼éå·²ä¸ä¼ æ£éªéä»¶ï¼ï¼å·²å®æä¸æªç»å®æ¥æºçåæ®ï¼å¨è¯¦æ
æç©æ+çå·+æ°éä¸è´éæ©å¾
æ£äº§åºè¡å
³èï¼å忥工宿ä¸äº§åºå
¥åºï¼æªå
³èä¸ååãè¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼äº§åç©æç±çäº§å·¥åæ¨å¯¼ï¼æ¨¡æ¿ä¸å¡«ç©æï¼å·¥åº+æåº+å
¶ä»åºåä¸å¾è¶
è¿ä¸åæ ¼åæ°éï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç产工å+æ£éªç±»å+å·¥ä½+æ£æµæ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", |
| | | "upstream": [ |
| | | "æ¥å·¥", |
| | | "Excel æ¹é导å
¥" |
| | | ], |
| | | "downstream": [ |
| | | "产åºå
¥åº", |
| | | "NCR", |
| | | "æ¥åå®ä¾(åºæ¥å)" |
| | | ], |
| | | "keywords": "IPQC è¿ç¨æ£éª å·¡æ£ çå·å
³è æ¥å·¥å
³è åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿" |
| | | }, |
| | | { |
| | | "name": "OQCåºè´§æ£éª", |
| | | "module": "è´¨é", |
| | | "table": "mes_qc_oqc", |
| | | "doc": "éå®åºåºæäº¤åå¾
æ£æµè¡ç¬ç«å½å
¥ï¼å®ææ¶æåæ ¼+ä¸åæ ¼=æ£æµæ°éèªå¨å¤å® 1 éè¿/2 ä¸éè¿ï¼éå·²ä¸ä¼ æ£éªéä»¶ï¼ï¼å·²å®æä¸æªç»å®æ¥æºçåæ®ï¼å¨è¯¦æ
æç©æ+çå·+æ°éä¸è´éæ©å¾
æ£åºåºè¡å
³èï¼åååºåºè¡è´¨éç¶æ PASS/FAILï¼å
¨é¨å¾
æ£è¡åæ ¼ååºåºå转å¾
æ£è´§ï¼ä¸åæ ¼è¡çå¾
åç»å¤ç½®ï¼ä¸èªå¨åæ¶åºåºåãè¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ï¼æ¯æ Excel æ¹é导å
¥ï¼å®¢æ·é¡»å¨å½åç»å½ç¨æ·çå®¢æ·æ°æ®æéèå´å
ï¼ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼ç©æ+客æ·+æ¹æ¬¡å·+åºè´§æ¥æï¼æä»¶å
éå¤è¡ä¸åºå
å·²æåé½æè¯¥è¡ï¼", |
| | | "upstream": [ |
| | | "éå®åºåºå", |
| | | "Excel æ¹é导å
¥" |
| | | ], |
| | | "downstream": [ |
| | | "éå®åºåºå(æ¨è¿)", |
| | | "æ¥åå®ä¾(åºæ¥å)" |
| | | ], |
| | | "keywords": "OQC åºè´§æ£éª åºåæ£éª çå·å
³è åºåºå
³è åºæ¥å æ¹é导å
¥ 导å
¥æ¨¡æ¿" |
| | | }, |
| | | { |
| | | "name": "RQCéè´§æ£éª", |
| | | "module": "è´¨é", |
| | | "table": "mes_qc_rqc", |
| | | "doc": "ç产éæ/éå®éè´§/å®åé货触åï¼ç»è®ºåè°å®åï¼è¡æä½ãåºæ¥åãä»
å¨å·²å®ææ¶å¯è§ãæªè¾å·²ç»ä¸ä¸ºãéè´§æ£éªãï¼åèåç¶é¡¹ä¸ mes_qc_type åå
¸åãéææ£éªãï¼ä¸å端æä¸¾/表注é/èåæéå项ä¸ä¸è´ï¼RQC ä¸è
é½è¦çï¼æ
åãéè´§æ£éªãï¼", |
| | | "upstream": [ |
| | | "éæ", |
| | | "éè´§" |
| | | ], |
| | | "downstream": [ |
| | | "éè´§å
¥åº", |
| | | "å®ååè°", |
| | | "æ¥åå®ä¾(åºæ¥å)" |
| | | ], |
| | | "keywords": "RQC éè´§æ£éª éææ£éª åºæ¥å" |
| | | }, |
| | | { |
| | | "name": "NCRä¸åæ ¼å", |
| | | "module": "è´¨é", |
| | | "table": "mes_qc_ncr", |
| | | "doc": "å¾
è¯å®¡0âæäº¤BPM审æ¹ä¸2â审æ¹éè¿å·²è¯å®¡6(驳å/åæ¶åå¾
è¯å®¡)âå·²å¤ç½®7âå·²å
³é8ï¼å®¡æ¹æè§ç± BPM æµè½¬è®°å½æ¿è½½ï¼è´¨é鍿ç»å¤ç½®:è®©æ¥æ¾è¡/è¿ä¿®/è¿å·¥/æ¥åº(éè´§/é级ä»
åå²å±ç¤º)", |
| | | "upstream": [ |
| | | "IQC/IPQC/OQC/RQC" |
| | | ], |
| | | "downstream": [ |
| | | "éè´§/æ¥åº/è¿å·¥(å°è´¦)" |
| | | ], |
| | | "keywords": "NCR ä¸åæ ¼ å¤ç½® ç¹é æ¥åº" |
| | | }, |
| | | { |
| | | "name": "设å¤", |
| | | "module": "设å¤", |
| | | "table": "mes_dv_machinery", |
| | | "doc": "å°è´¦ç¶æ:åæº/ç产ä¸/ä¿å
»ä¸ï¼ç¹æ£Â·ä¿å
»Â·ç»´ä¿®å·¥åï¼AI é£é©é¢æµæ¶è´¹å
¶æ°æ®", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "ç¹æ£", |
| | | "ç»´ä¿®", |
| | | "ç产é£é©é¢æµ" |
| | | ], |
| | | "keywords": "è®¾å¤ ç¹æ£ ä¿å
» ç»´ä¿® machinery" |
| | | }, |
| | | { |
| | | "name": "å®åå·¥å", |
| | | "module": "å®å", |
| | | "table": "after_sale_ticket", |
| | | "doc": "è稿0âå¤çä¸10âå¾
å
¥åº30âå¾
鿬¾40âå®ç»50âå
³é60/åæ¶99ï¼å¤å®:ä¸è¬/ç»´ä¿®/éè´§ï¼å®¢æ·è¯æ±åé¦æè¿°+éä»¶ãå¤çç»æ+éä»¶ï¼å建/æ´æ°/å¤å®/å®ç»/彿¡£/åæ¶/å访åå
¥æµè½¬è®°å½", |
| | | "upstream": [ |
| | | "客æ·åé¦(人工å½å
¥)" |
| | | ], |
| | | "downstream": [ |
| | | "维修记å½", |
| | | "ä»å¨éå®éè´§(åéè´§ç³è¯·é¡µé¢å·²ä¸çº¿)" |
| | | ], |
| | | "keywords": "å®å å·¥å ticket ç»´ä¿® 客æ·è¯æ± å¤çç»æ æµè½¬è®°å½" |
| | | }, |
| | | { |
| | | "name": "å·¥åæµè½¬è®°å½", |
| | | "module": "å®å", |
| | | "table": "after_sale_ticket_flow", |
| | | "doc": "å®åå·¥åæ¯æ¬¡å¨ä½ççï¼å¨ä½ç¼ç /åç§°ãåæ´ååç¶æãå
容ãæä½äººãæ¶é´", |
| | | "upstream": [ |
| | | "å®åå·¥å" |
| | | ], |
| | | "downstream": [], |
| | | "keywords": "å®å æµè½¬è®°å½ flow" |
| | | }, |
| | | { |
| | | "name": "éè´§ç³è¯·", |
| | | "module": "å®å", |
| | | "table": "after_sale_return", |
| | | "doc": "åå°ä¿çï¼å®å页é¢å·²ä¸çº¿ï¼è稿0âå·²å®¡æ ¸20(èªå¨å»ºMESéè´§å)â已质æ£40âå·²å
¥åº50â已鿬¾60âå
³é70ï¼ç±»å:鿬¾éè´§/æ¢è´§/ä»
鿬¾", |
| | | "upstream": [ |
| | | "å®åå·¥å" |
| | | ], |
| | | "downstream": [ |
| | | "éå®éè´§å", |
| | | "鿬¾" |
| | | ], |
| | | "keywords": "å®åéè´§ return" |
| | | }, |
| | | { |
| | | "name": "åå·¥", |
| | | "module": "人å", |
| | | "table": "hrm_employee", |
| | | "doc": "å¨è1/è¯ç¨2/离è3ï¼å
¥èèªå¨å»ºç³»ç»è´¦å·ï¼ç¦»èç³è¯·å°æèªå¨ç½®ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", |
| | | "upstream": [], |
| | | "downstream": [ |
| | | "äº¤æ¥æ å°", |
| | | "èå¤", |
| | | "èªé
¬" |
| | | ], |
| | | "keywords": "åå·¥ å
¥è employee 离è" |
| | | }, |
| | | { |
| | | "name": "离èç³è¯·", |
| | | "module": "人å", |
| | | "table": "hrm_resignation_application", |
| | | "doc": "è稿0â审æ¹ä¸10âéè¿20/驳å30/æ¤é40ï¼å®¡æ¹éè¿åå¯äº¤æ¥0â10â20ï¼å°æä»»å¡åå®é
ç¦»èæ¥æãæåå·¥ç¶ææ¹ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", |
| | | "upstream": [ |
| | | "åå·¥" |
| | | ], |
| | | "downstream": [ |
| | | "å工档æ¡ç¶æ", |
| | | "离è交æ¥" |
| | | ], |
| | | "keywords": "离è resignation å®¡æ¹ äº¤æ¥ èªå¨ç¦»è" |
| | | }, |
| | | { |
| | | "name": "离è交æ¥", |
| | | "module": "人å", |
| | | "table": "hrm_user_handover", |
| | | "doc": "åæ¶è®°å½ç¦»è/交æ¥åæ¹åå·¥IDä¸ç¨æ·IDï¼äº¤æ¥å®æ20 å expandUserIds æ©å±äº¤æ¥äººå¯è§æ°æ®ï¼å®¡æ¹éè¿ä¸å°é¢è®¡ç¦»èæ¥æåèªå¨æåå·¥ç¶ææ¹ä¸ºç¦»è3å¹¶åç¨ç³»ç»è´¦å·", |
| | | "upstream": [ |
| | | "离èç³è¯·" |
| | | ], |
| | | "downstream": [ |
| | | "忍¡åæçæ°æ®æ¥è¯¢", |
| | | "å工档æ¡ç¶æ" |
| | | ], |
| | | "keywords": "äº¤æ¥ ç¦»è handover expandUserIds èªå¨ç¦»è" |
| | | }, |
| | | { |
| | | "name": "æ¥å模æ¿", |
| | | "module": "è´¨æ£æ¥å", |
| | | "table": "qc_report_template", |
| | | "doc": "æºè½è´¨æ£æ¥å模æ¿ï¼å¯ç¨0/åç¨1ï¼ç»å¸å
容åå¨ qc_report_template_versionï¼è稿0/å·²åå¸1/å·²åç¨2ï¼å·²åå¸ä¸å¯è¦çï¼ï¼currentVersion æåå½åå·²åå¸çæ¬ï¼æºæä»¶ç» AI 导å
¥è¯å«æè稿åç±äººå·¥ç¡®è®¤ææä¸ºçæ¬ï¼å䏿¨¡æ¿éå¤å¯¼å
¥æãæ¿æ¢ãå¤çââå
å æ§éä»¶ï¼è¿å¸¦ blob è¡ä¸ç£çæä»¶ï¼åç»æ°çï¼ä¸çå¤å¿æä»¶ï¼å 餿¨¡æ¿ä¼è¿å¸¦æ¸
éä»¶", |
| | | "upstream": [ |
| | | "人工设计(GrapesJS 设计å¨)", |
| | | "AI 导å
¥è稿(qc-report/ai-import/draft)" |
| | | ], |
| | | "downstream": [ |
| | | "模æ¿çæ¬", |
| | | "æ¥åå®ä¾" |
| | | ], |
| | | "keywords": "æ¥åæ¨¡æ¿ è´¨æ£æ¥å template è®¾è®¡å¨ çæ¬ AI导å
¥ è¯å« è稿 æºæä»¶æ¿æ¢" |
| | | }, |
| | | { |
| | | "name": "æ¥åå®ä¾", |
| | | "module": "è´¨æ£æ¥å", |
| | | "table": "qc_report_instance", |
| | | "doc": "åºä»¶äº§ç©ï¼ç¼å· QR+yyyyMMdd+4使µæ°´æå¤©ç¬ç«ä¸ä¸å¡å¯ä¸ï¼å¯æ¾å¼æå®è¦çï¼æ³¨æ uk_report_no ä¸åºå软å é¤ï¼å æçå·ä¸åæ¶ï¼ï¼ä¸¤æ¡åºä»¶å
¥å£ï¼éç¨ generateï¼è°ç¨æ¹èªå¸¦ contextï¼ä¸ generate-from-qcï¼æ°æ®ä» MES è´¨æ£ååï¼æéç qc-report:instance:generate å·²å
¥ system_menu id=1075416ï¼äºéæ ¡éªæä¸å¡ä¼å
çº§åªæ¥ç¬¬ä¸å¤ï¼105_000 ç±»åéæ³ / 105_001 åæ®ä¸åå¨ / 105_002 æªå®æ / 105_003 æªå¤å® / 105_005 模æ¿ç±»åä¸ç¬¦ / 105_006 æ å¯ç¨æ£éªé¡¹ï¼åå¼ è´¨æ£åå表çè¡æä½ãåºæ¥åãä»
å¨ status=已宿æ¶å¯è§ï¼å¼¹çªåªå reportType ä¸è´ã模æ¿å¯ç¨ãä¸ currentVersion æåççæ¬å·²åå¸ç模æ¿ï¼å端 /qc-report/template/selectable å¤å®ââåç¨çæ¬ä¸æ¸
空 currentVersionï¼å端æ¿åé¡µç»æèªå·±æ¨å¯¼ä¼æ¼ï¼ï¼ç»æå°±å°å±ç¤ºå¹¶è·³æ¬é¡µå表ï¼ï¼å»ç» data_snapshotï¼å¤å®åæ°æ®ï¼å«å端ç®å¥½ç PASS/FAIL ä¸åæ ¼çï¼ä¸ render_htmlï¼regenerate åªé渲æçãæ°æ®ä¸ç¼å·ä¸åï¼business_id/business_type å MES 表åï¼mes_qc_iqc çï¼ä¸åæ® IDï¼å¯åæ¥ãä¸åå¯åºå¤ä»½ï¼æ¥å头å¦å¸¦åæ®åå¤å® qcResult(æ°)/qcResultText(䏿ï¼åæ ¼/ç¹é/ä¸åæ ¼éè´§/ä¸åæ ¼æ¥åº)ï¼ä¸å¼æä¸æå¤å®å¹¶åäºä¸è¦çï¼ååºå¸¦ undecidableCount=å¿«ç
§ä¸ result 为空串ç项æ°ä¸ warningsï¼åç»æ é¢è·³è¿/ææ å·²å /æªå½å®æµå¼/æ ·åè¶
3ï¼ï¼ä¸¤è
é½ä¸è½åºãäºåçä¸å°", |
| | | "upstream": [ |
| | | "æ¥å模æ¿çæ¬", |
| | | "è´¨æ£åä¸ä¸æ(éç¨ generate ç±è°ç¨æ¹ä¼ å
¥)", |
| | | "MES è´¨æ£å IQC/IPQC/OQC/RQC(generate-from-qc ç» MesQcReportApi åæ°)" |
| | | ], |
| | | "downstream": [ |
| | | "å端å®ä¾é¡µ /qc/report-instance(å表·iframeé¢è§Â·å¿«ç
§é¡µç¾Â·å¯¼åºPDF)", |
| | | "PDF彿¡£(system_storage_attachment recordType=qc_report_instance)" |
| | | ], |
| | | "keywords": "æ¥åå®ä¾ åºä»¶ QRç¼å· å¿«ç
§ å¤ç° regenerate PDF彿¡£ æ¥åå®ä¾é¡µ 导åºPDF generate-from-qc è´¨æ£ååºæ¥å åºæ¥åå¼¹çª qcResult undecidableCount warnings å¾
å¤å® 忥 ä¸å¡åæ®çé" |
| | | }, |
| | | { |
| | | "name": "åè´§éç¥å", |
| | | "module": "ä»å¨ç©æµ", |
| | | "table": "mes_wm_sales_notice", |
| | | "doc": "éå®è®¢åå®¡æ ¸åçæï¼è®°å½ç©æµå
¬å¸ãå¿«éè´¹ãå¼ç¥¨ç¶æï¼ç»é»è®¤ç©æµå®¡æ¹ååºåºï¼åè¡¨æ¯ææäº§åå¹³éºå°è´¦ä¸å¸¦ç« Word 导åº", |
| | | "upstream": [ |
| | | "éå®è®¢å" |
| | | ], |
| | | "downstream": [ |
| | | "éå®åºåºå", |
| | | "åè´§å°è´¦" |
| | | ], |
| | | "keywords": "åè´§ åè´§å ç©æµ å¿«éè´¹ å¼ç¥¨ç¶æ sales_notice" |
| | | }, |
| | | { |
| | | "name": "å®¢æ·æ¶è´§å°å", |
| | | "module": "客æ·å
³ç³»", |
| | | "table": "crm_customer_address", |
| | | "doc": "å®¢æ·æ¡£æ¡ç䏿·å¤æ¶è´§å°åï¼å«æ¶è´§äººãææºå·ãå°åºä¸è¯¦ç»å°åï¼å¯è®¾é»è®¤å°å", |
| | | "upstream": [ |
| | | "客æ·" |
| | | ], |
| | | "downstream": [ |
| | | "åè´§éç¥å" |
| | | ], |
| | | "keywords": "æ¶è´§å°å å¤å°å é»è®¤å°å" |
| | | }, |
| | | { |
| | | "name": "è´¨éå·¡æ£", |
| | | "module": "è´¨é管ç", |
| | | "table": "mes_qc_patrol", |
| | | "doc": "ç¬ç«çå·¡æ£è®°å½ï¼æç©æ+çå·ç»è®°åæ ¼/ä¸åæ ¼æ°éï¼ä¸çæåºåä¸å¡åæ®", |
| | | "upstream": [ |
| | | "ç©æ", |
| | | "æ¹æ¬¡" |
| | | ], |
| | | "downstream": [], |
| | | "keywords": "å·¡æ£ è´¨éå·¡æ£ patrol" |
| | | }, |
| | | { |
| | | "name": "åºåå»ç»æ¥æº", |
| | | "module": "ä»å¨ç©æµ", |
| | | "table": "mes_wm_material_stock_freeze_claim", |
| | | "doc": "æäººå·¥/çç¹/è°æ¨æ¥æºå嫿æåºåå»ç»ï¼è§£å»åªéæ¾å¯¹åºæ¥æºï¼é¿å
äºç¸è¦ç", |
| | | "upstream": [ |
| | | "åºåå°è´¦" |
| | | ], |
| | | "downstream": [ |
| | | "çç¹ä»»å¡", |
| | | "è°æ¨å" |
| | | ], |
| | | "keywords": "å»ç» è§£å» å»ç»æ¥æº freeze" |
| | | } |
| | | ] |
| | | }</script> |
| | | <script type="application/json" id="data-flows">{ |
| | | "flows": [ |
| | | {"id": "sales", "name": "é宿µç¨", "mermaid": "mermaid/02-sales-flow.mmd", "color": "#4f9cff", |
| | | "summary": "线索转åå®¢æ· â åæºæ¨è¿ â æ¥ä»·(å¯AIè¯å«) â åå BPM å®¡æ¹ â çæ ERP éå®è®¢åå¹¶å®¡æ¹ â éç产è¡èªå¨å»º MPS â åè´§éç¥ â éå®åºåº(OQC)åå â å¼ç¥¨(BPM) â 忬¾(å
å¼ç¥¨æ ¡éª)ï¼ææ ä¿è¯éæå®¢æ·ç»è®°ä¸æ ç»æä¸éåè¿åº¦å¹¶å
³èå·²å®¡æ ¸éå®è®¢åã", |
| | | "steps": [ |
| | | {"stage": "è·å®¢", "action": "线索转å客æ·ã建è系人ãç«é¡¹åæº", "roles": ["éå®å
å¤"]}, |
| | | {"stage": "æ¥ä»·", "action": "åæºèµ¢åå建æ¥ä»·å(AI OCR é¢å¡«)ï¼è½¬åå", "roles": ["éå®å
å¤"]}, |
| | | {"stage": "ææ ", "action": "æå®¢æ·(ææ æ¹)ç»è®°ææ ä¿è¯éï¼é¡¹ç®/ææ ç¼å·/éé¢/ç¼´çº³æ¥æï¼å¯å
³è该客æ·å·²å®¡æ ¸çéå®è®¢åï¼å¼æ åå填䏿 ç»æï¼æªä¸æ è·è¸ªéåç¶æãéé¢ä¸æ¥æ", "roles": ["éå®å
å¤"]}, |
| | | {"stage": "ç¾çº¦", "action": "å忥æºï¼æå·¥æ°å»º / æ¥ä»·å转å
¥ / Excel 导å
¥(ä¸ååå¤äº§åæç»è¡)ï¼æäº¤ BPM 审æ¹(å¯éæµç¨å®ä¹)ï¼éè¿=20", "roles": ["éå®", "审æ¹äºº"]}, |
| | | {"stage": "æ¥å", "action": "ååä¸é®çæéå®è®¢å(XSDD)ï¼éå®è®¢ååèµ° BPMï¼å®¡æ¹éè¿èªå¨ä¸º needProduction æç»å建 MPS", "roles": ["éå®", "计åå"]}, |
| | | {"stage": "交ä»", "action": "åè´§éç¥å®¡æ ¸(å ç¨)â éå®åºåº OQC â åè¿ â åºåºååé¨å/å
¨é¨åºåº", "roles": ["ä»ç®¡", "è´¨æ£"]}, |
| | | {"stage": "忬¾", "action": "å¼ç¥¨ BPM(累计â¤ååé¢) â 忬¾å¼ºå¶å
å¼ç¥¨(累计â¤ååå©ä½ä¸å¼ç¥¨å©ä½)", "roles": ["è´¢å¡", "éå®"]}]}, |
| | | {"id": "purchase", "name": "éè´æµç¨", "mermaid": "mermaid/03-purchase-flow.mmd", "color": "#5fc79e", |
| | | "summary": "ä¾åºåæ¡£æ¡(å¤è系人/å¤é¶è¡Â·å«é¶è¡è¡å·) â 询价æ¯ä»·(产åÃä¾åºåæ¨ªåæ¥ä»·ï¼æäº§åé䏿 ) â 确认åæä¸æ ä¾åºåæéè´è®¢åèç¨¿å¹¶èµ°ç°æ BPM â 确认æ¶è´§çæ MES å°è´§éç¥ â IQC(åæ ¼/ç¹éå
¥åºÂ·éè´§/æ¥åº) â éè´å
¥åºåå订åä¸ç³è¯· â æ¥ç¥¨(AI OCR) â 仿¬¾å BPM â ä¾åºå徿¥å¯¹è´¦ã", |
| | | "steps": [ |
| | | {"stage": "寻æº", "action": "ä¾åºåæ¡£æ¡ç»´æ¤å¤ä¸ªè系人ä¸å¤ä¸ªé¶è¡è´¦æ·(å«é¶è¡è¡å·)ï¼æ°å¢è¯¢ä»·åæ¶ä¸å¹¶å½å
¥äº§åÃåä¸ä¾åºåæ¥ä»·å¹¶é宿¯ä¸ªäº§åç䏿 ä¾åºåï¼åè¡¨ç´æ¥ç¡®è®¤åæä¸æ ä¾åºåçæéè´è®¢åè稿", "roles": ["éè´å", "ä¾åºå管çå"]}, |
| | | {"stage": "ç³è¯·", "action": "éè´ç³è¯·(CGSQ)æäº¤ BPMï¼é©³åå¯éç½®åè稿ï¼éè¿ä¸æä¾åºåèªå¨çæè®¢å", "roles": ["éè´å", "审æ¹äºº"]}, |
| | | {"stage": "ä¸å", "action": "éè´è®¢å(CGDD)èªå¨æäº¤ BPM(15â20)", "roles": ["éè´å"]}, |
| | | {"stage": "æ¶è´§", "action": "确认æ¶è´§çæå°è´§éç¥(0âå¾
è´¨æ£2/å¾
å
¥åº3â4)ï¼éæ£ç©æèªå¨å建 IQC", "roles": ["ä»ç®¡", "IQC è´¨æ£å"]}, |
| | | {"stage": "å
¥åº", "action": "IQC åæ ¼/ç¹éâéè´å
¥åº(å¾
䏿¶âå¾
æ§è¡â宿)åºå+ï¼åå订å inCount/inStatus ä¸ç³è¯·æç»", "roles": ["ä»ç®¡"]}, |
| | | {"stage": "éè´§", "action": "IQC ä¸åæ ¼éè´§âä¾åºåéè´§åºåº(éæéå®å°è®¢åè¡)ï¼æ¥åºèµ° NCR", "roles": ["ä»ç®¡"]}, |
| | | {"stage": "仿¬¾", "action": "éè´æ¥ç¥¨(FPD, AI OCR, â¤è®¢åæ»ä»·) â 仿¬¾å(FKD å
³èæ¥ç¥¨+éä»¶, â¤æ¥ç¥¨éé¢) BPM 审æ¹", "roles": ["è´¢å¡", "审æ¹äºº"]}, |
| | | {"stage": "对账", "action": "ä¾åºå徿¥æä¾åºåæ±æ»ï¼å·¦ä¾§éè´è®¢åæµæ°´å«å·²å¼ç¥¨/æªå¼ç¥¨éé¢ï¼å³ä¾§æ¥ç¥¨æµæ°´å«å¼ç¥¨éé¢/å·²ä»/å©ä½åºä»å¹¶é仿¬¾æµæ°´ï¼é¡¶é¨æ±æ»ç´¯è®¡éè´/å¼ç¥¨/仿¬¾/æªä»ä½é¢", "roles": ["è´¢å¡", "éè´å"]}]}, |
| | | {"id": "production", "name": "ç产æµç¨", "mermaid": "mermaid/04-production-flow.mmd", "color": "#e0b34f", |
| | | "summary": "éå®è®¢åé©±å¨ MPS â ä¸åå·¥å â æå·¥èºè·¯çº¿æå·¥åºä»»å¡ â 颿/çº¿è¾¹å¤æ â æ¥å·¥(å·¥åºé¡ºåºç¡¬æ ¡éª+BPMï¼æå·¥åºè®¡è´¹ç±»åå¿«ç
§æ¥å·¥å·¥èµ) â å岿¶è/产åºå
¥åº/IPQC â æ«éå·¥åºååè¿åº¦ â èªå¨å®å·¥ â ProductionFinishedEvent ååéå®è®¢åï¼æ¥å·¥å·¥èµå¨èªé
¬æ ¸ç®æ¶ææ¥å·¥äººæ±æ»ï¼å¯äººå·¥è°æ´å计å
¥å®åãæ¥å·¥åæ¶æå·¥åºæ åå·¥æ¶é
ç½®+ç产é¿åº¦+è¾
å©é¡¹æ¬¡æ°å¿«ç
§æ åå·¥æ¶ï¼å®é
å·¥æ¶ä¸æ åå·¥æ¶çå·®å¼è¿å
¥å·¥æ¶èæ ¸æ¥è¡¨(æäºº/å·¥åº/æºå°/卿)ï¼æ åå·¥æ¶åªç¨äºèæ ¸å¯¹æ¯ãä¸åä¸å·¥èµè®¡ç®ã", |
| | | "steps": [ |
| | | {"stage": "计å", "action": "MPS å建(æå·¥æéå®è®¢åèªå¨)âä¸åæåå¹¶ä¸å为工å", "roles": ["计åå"]}, |
| | | {"stage": "派工", "action": "å·¥å确认æå·¥èºè·¯çº¿éå·¥åºçæä»»å¡ï¼å¯ææ´¾/æå/åæ¶", "roles": ["车é´ä¸»ä»»"]}, |
| | | {"stage": "夿", "action": "çäº§é¢æååºåºæçº¿è¾¹èæåºå¤æ", "roles": ["ä»ç®¡"]}, |
| | | {"stage": "æ¥å·¥", "action": "æäº¤æ¥å·¥ï¼ä¸ä¸éå·¥åºæªæ¥æ»¡ç´æ¥æ¦æªï¼å¯ç¨ BPM 走审æ¹ï¼æå·¥åºè®¡è´¹ç±»åå¿«ç
§å·¥èµ(计æ¶=å·¥æ¶Ãå®é¢ï¼è®¡ä»¶=æ°éÃå®é¢)ï¼è®°å°æ¥å·¥äººåä¸ï¼åæ¶å½å
¥ç产é¿åº¦ä¸è¾
å©é¡¹æ¬¡æ°ï¼æå·¥åºæ åå·¥æ¶é
置计ç®å¹¶å¿«ç
§æ åå·¥æ¶(主工æ¶+è¾
å©å·¥æ¶)ä¸è®¡ç®ä¾æ®ï¼é
置缺失æ¶ä¸é»æï¼è½¬äººå·¥å¡«å·¥æ¶å¹¶è®°å½ç¼ºå¤±åå ", "roles": ["æä½å·¥"]}, |
| | | {"stage": "å·¥æ¶èæ ¸", "action": "å®é
å·¥æ¶ vs æ åå·¥æ¶å®æ¶æ¯å¯¹ï¼å·®å¼çè¶
éå¼(é»è®¤20%)æç¤ºï¼æ¥è¡¨æäºº/å·¥åº/æºå°/å¨ææ±æ»æ¥å·¥åæ°ãç产é¿åº¦ãå®é
å·¥æ¶ãæ åå·¥æ¶ãå·®å¼ä¸å·®å¼çï¼ä¾è½¦é´ä¸»ä»»ä¸å·¥èºåæ ¸å¯¹", "roles": ["车é´ä¸»ä»»", "å·¥èºå"]}, |
| | | {"stage": "èå¨", "action": "审æ¹éè¿æå·¥åºæ è®°: åå²âèªå¨ç©ææ¶èæ£çº¿è¾¹åº(å
许è´åºå)ï¼è´¨æ£â产åºå¾
æ£è¡ç IPQCï¼å
³é®éæ£âç´æ¥äº§åºå
¥åº", "roles": ["ç³»ç»èªå¨"]}, |
| | | {"stage": "å®å·¥", "action": "ä»
æ«éå·¥åºååå·¥åå·²ç产æ°éï¼è¾¾æ èªå¨å®æï¼MPS ç´¯è®¡å¤æå®æå¹¶åäºä»¶ç»éå®è®¢å", "roles": ["ç³»ç»èªå¨"]}]}, |
| | | {"id": "quality", "name": "è´¨éæµç¨", "mermaid": "mermaid/05-quality-flow.mmd", "color": "#e06c6c", |
| | | "summary": "å鿣éªé¸å£(IQC/IPQC/OQC/RQCï¼äºæ 0â4) + å¤å®åæ(åæ ¼/ç¹é/éè´§/æ¥åº) + NCR è¯å®¡å¤ç½®å
³éï¼AI æä¾å¤å®å»ºè®®ï¼NCR å½åä»
å°è´¦ä¸è§¦åè¿å·¥åï¼æ£éªåå¯ç±æºè½è´¨æ£æ¥åå¹³å°ä¸é®åºä»¶ï¼generate-from-qcï¼æ°æ®ä» MES åï¼äºéæ ¡éªå渲æè½åºï¼ã", |
| | | "steps": [ |
| | | {"stage": "æ¥æ", "action": "å°è´§éç¥/å¤åå
¥åºâIQCï¼ç»è®ºå忍è¿å¾
å
¥åºæè§¦åéè´§", "roles": ["IQC è´¨æ£å"]}, |
| | | {"stage": "è¿ç¨", "action": "æ¥å·¥è´¨æ£å·¥åºäº§åºè¡âIPQCï¼åæ ¼æè¡å
¥åºãä¸åæ ¼çæ NCR", "roles": ["IPQC è´¨æ£å"]}, |
| | | {"stage": "åºè´§", "action": "éå®åºåºæäº¤âOQCï¼å®æååºåºåè¿å
¥å¾
æ£è´§", "roles": ["OQC è´¨æ£å"]}, |
| | | {"stage": "éè´§", "action": "éæ/éå®éè´§/å®åéè´§âRQCï¼ç»è®ºåè°åæ®ä¸å®å", "roles": ["RQC è´¨æ£å"]}, |
| | | {"stage": "导å
¥", "action": "IQC/IPQC/OQC ä¸åè¡¨åæ¯æ Excel æ¹é导å
¥(æé®å¨ãæ°å¢ãä¸ã导åºãä¹é´ï¼çº¯æ°å¢ä¸åæ´æ°è¦ç)ï¼ä¸è¡ä¸å¼ åï¼ç¼å·ç空èªå¨çæï¼è´¨æ£æ¹æ¡ç空æç©æ+æ£éªç±»åèªå¨å¹é
ï¼æ£æµäººåç空åå½åç»å½ç¨æ·ï¼ç©æ/ä¾åºå/客æ·/å·¥å/工使ç¼ç æå称精确å¹é
(IPQC ç©æç±å·¥åæ¨å¯¼ï¼æ¨¡æ¿ä¸å¡«)ï¼åæ ¼+ä¸åæ ¼=æ£æµ/æ¥æ¶æ°éãIPQC å·¥åº+æåº+å
¶ä»åºåâ¤ä¸åæ ¼ãOQC 客æ·é¡»å¨æ¬äººæ°æ®æéå
ï¼éè¡å¯¼å
¥é¨åæåï¼å¤±è´¥è¡è¿ failureList 带è¡å·ä¸å¯æ§è¡å¨ä½ï¼æååä¸å¾å¾
æ£éª0ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼æä»¶å
éå¤è¡ä¸åºå
å·²åå¨åä¸å¡é®åæ®ï¼IQC ç©æ+ä¾åºå+ä¾åºåæ¹æ¬¡+æ¥ææ¥æãIPQC ç产工å+æ£éªç±»å+å·¥ä½+æ£æµæ¥æãOQC ç©æ+客æ·+æ¹æ¬¡å·+åºè´§æ¥æï¼åæè¯¥è¡ï¼æç¤ºå«ç»´åº¦ãåæ¹å®é
å¼ä¸ãå
å é¤è¯¥åæ®åéè¯ãå¨ä½", "roles": ["è´¨æ£å", "IQC è´¨æ£å", "IPQC è´¨æ£å", "OQC è´¨æ£å"]}, |
| | | {"stage": "ä¸åæ ¼", "action": "NCR: å¾
è¯å®¡âè¯å®¡âå¤ç½®(éè´§/æ¥åº/è¿å·¥/è®©æ¥æ¥æ¶/é级)âå
³é", "roles": ["è´¨éå·¥ç¨å¸"]}, |
| | | {"stage": "åºä»¶", "action": "两æ¡åºä»¶å
¥å£ï¼â éç¨ generate/preview(è°ç¨æ¹èªå¸¦ä¸ä¸æ) 渲æ HTML å¹¶å»ç»æ°æ®å¿«ç
§ï¼ç¼å· QR+æ¥æ+4使µæ°´æå¤©ç¬ç«ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å·ï¼regenerate ç¨å»ç»å¿«ç
§éæ¸²ä¸æ°æ®ä¸ç¼å·ä¸åå¹¶ä½åºå·²å½æ¡£ PDFï¼å¯¼åº PDF ç±åç«¯è° Chromium æå°å®ä¾å·²åç HTML å彿¡£éä»¶ä¸å¿ï¼â¡generate-from-qc ç±è´¨æ£åç´æ¥åºä»¶(æ°æ®ç» MesQcReportApi ä» MES åï¼åç«¯ä¸æ¼ä¸ä¸æ)ï¼åºä»¶åäºéæ ¡éªæä¸å¡ä¼å
çº§åªæ¥ç¬¬ä¸å¤ï¼ç±»åéæ³/åæ®ä¸åå¨/æªå®ææ£éª/æªå¡«å¤å®/模æ¿ç±»åä¸ç¬¦/æ å¯ç¨æ£éªé¡¹ï¼æ¥å头å¦å¸¦åæ®åå¤å® qcResult+qcResultText ä¸å¼æå¤å®å¹¶åï¼ååºå undecidableCount å¾
å¤å®é¡¹æ°ä¸ warnings(åç»æ é¢è·³è¿/ææ å·²å /æªå½å®æµå¼/æ ·åè¶
3)ï¼åä¸å¼ åæ®å¯åå¤åºå¤ä»½", "roles": ["è´¨æ£å"]}, |
| | | {"stage": "建模æ¿", "action": "AI 导å
¥ï¼ä¸ä¼ æ¢ææ£éªæ¥åæä»¶(æ«æä»¶/ç
§çãçµåç PDFãWord/Excel) â è¯å«ææ¨¡æ¿è稿(ä¸è½åº) â 人工å¨è®¾è®¡å¨ç¡®è®¤è°æ´åä¿åä¸ºçæ¬ï¼.doc/.xls æ§æ ¼å¼ä¸æ¯æ", "roles": ["è´¨æ£å", "è´¨éå·¥ç¨å¸"]}]}, |
| | | {"id": "warehouse", "name": "ä»å¨æµç¨", "mermaid": "mermaid/06-warehouse-flow.mmd", "color": "#7e6bd6", |
| | | "summary": "15 ç±»åæ®é©±å¨åºåå°è´¦(å
å
ç»ãåé)åå¨ï¼å
¨é¨ç»äºå¡æµæ°´ççï¼æ¯æè°æ¨å¨éãçç¹è°æ´ãæ¹æ¬¡/SN 追溯ãåºåå ç¨ä¸å级å»ç»ã线边èæåºè´åºåï¼å¯¹å¤ WmsStockApi ä¾ ERP æ¶åã", |
| | | "steps": [ |
| | | {"stage": "å
¥åº", "action": "éè´å
¥åº/ç产å
¥åº/产åºå
¥åº/éè´§å
¥åº/å¤åå
¥åº/æé¡¹å
¥åº â IN äºå¡ï¼æ¹æ¬¡æ··æ¾æ ¡éªãå级å»ç»æ ¡éª", "roles": ["ä»ç®¡"]}, |
| | | {"stage": "åºåº", "action": "éå®åºåº/颿/æ¶è/å¤ååæ/ä¾åºåéè´§/æé¡¹åºåº â OUT äºå¡ï¼checkFlag æ§å¶å¯å¦è´åºå", "roles": ["ä»ç®¡", "ç³»ç»èªå¨"]}, |
| | | {"stage": "ç§»åº", "action": "å
é¨/å¤é¨è°æ¨æå¯¹ MOVE äºå¡ï¼å¨éæ°éè·è¸ª", "roles": ["ä»ç®¡"]}, |
| | | {"stage": "çç¹", "action": "æ¹æ¡âä»»å¡âæç»è¡âç»æï¼çç ADJUST_INãçäº ADJUST_OUTï¼å¯å»ç»ä¸ç²ç", "roles": ["çç¹å"]}, |
| | | {"stage": "追溯", "action": "æ¹æ¬¡/SN(uuid)/æ¡ç (18ç±»)/è£
ç®±åµå¥æ¯ææ£åå追溯", "roles": ["è´¨é", "å®å"]}]}, |
| | | {"id": "aftersales", "name": "å®åæµç¨", "mermaid": "mermaid/07-after-sales-flow.mmd", "color": "#c78bd6", |
| | | "summary": "å·¥å(å
æ+é®é¢å¤å®) â 客æ·è¯æ±/å¤çç»æé件䏿µè½¬è®°å½çç â ç»´ä¿®ä¸ç±»åæç±ä»å¨ç©æµåèµ·éå®éè´§ â RQC è´¨æ£/å
¥åº/鿬¾ä¸åè°é级æ¨è¿ â å·¥åå®ç»å
³éã", |
| | | "steps": [ |
| | | {"stage": "åç", "action": "人工å½å
¥å·¥å(å
³è客æ·/订å/åå)ï¼å¡«å客æ·è¯æ±åé¦æè¿°å¹¶ä¸ä¼ éä»¶ï¼åå»ºæ¶æå®çå¤çäººç´æ¥è¿å
¥å¤çä¸", "roles": ["客æ"]}, |
| | | {"stage": "å¤å®", "action": "é®é¢å¤å®: ä¸è¬/ç»´ä¿®/éè´§ï¼ä¸¥é度 0-3", "roles": ["å®åå·¥ç¨å¸"]}, |
| | | {"stage": "å¤ç", "action": "å¡«åå¤çç»æå¹¶ä¸ä¼ å¤çç»æéä»¶ï¼åå»ºãæ´æ°ãå¤å®ãå®ç»ã彿¡£ãåæ¶ãå访ååå
¥æµè½¬è®°å½", "roles": ["å®åå·¥ç¨å¸"]}, |
| | | {"stage": "ç»´ä¿®", "action": "ç°åº/è¿å/è¿ç¨ç»´ä¿®ï¼è´¹ç¨ä¸ç»æè®°å½ï¼å®æèå¨å·¥åå®ç»", "roles": ["维修工ç¨å¸"]}, |
| | | {"stage": "éè´§", "action": "å®åä¸ååèµ·éè´§ç³è¯·ï¼ç±ä»å¨ç©æµåèµ·éå®éè´§å(RQC)âè´¨æ£/å
¥åºåè°â鿬¾åè°âå
³é", "roles": ["ä»å¨", "è´¨æ£", "è´¢å¡"]}]}, |
| | | {"id": "finance", "name": "ä¼è®¡æ ¸ç®æµç¨", "mermaid": "mermaid/12-finance-flow.mmd", "color": "#3ec9a7", |
| | | "summary": "ç¬ç«æ ¸ç®æ¨¡å yudao-module-financeï¼ä¼è®¡ç§ç®å»ºè´¦ â è®°è´¦åè¯å½å
¥(åè´·å¹³è¡¡æ ¡éª) â è¿è´¦ â æ»è´¦/æç»è´¦ â èµäº§è®¡æææ§ä¸æé â è´¢å¡æ¥è¡¨çæ¿åæ° ERP å·²å®¡æ ¸åæ®ã", |
| | | "steps": [ |
| | | {"stage": "建账", "action": "ç»´æ¤ä¼è®¡ç§ç® tree(subjectCode å¯ä¸ï¼å¯å»ºä¸çº§)ï¼é¦æ¬¡å¯å¯¼å
¥çº¦ 68 æ¡ä¸çº§ç§ç®ç§å", "roles": ["ä¼è®¡"]}, |
| | | {"stage": "è®°è´¦", "action": "å½å
¥åè¯(åå·ç空èªå¨çæ)+åå½ï¼åå½éè¡éç§ç®å¹¶å¡«å/è´·ï¼æ ¡éªè³å°ä¸è¡ãåè´·é½ä¸å¾åæ¶å¤§äº0ãå计ç¸çä¸å¤§äº0", "roles": ["ä¼è®¡"]}, |
| | | {"stage": "è¿è´¦", "action": "æªè¿è´¦0 â post è¿è´¦ â å·²è¿è´¦10(ä¸å¯åä¿®æ¹)ï¼æªè¿è´¦0 æ å·²è¿è´¦10 åå¯ cancel ä½åº â å·²ä½åº20", "roles": ["ä¼è®¡", "è´¢å¡ä¸»ç®¡"]}, |
| | | {"stage": "æ¥è´¦", "action": "æ»è´¦ææé´éææ±æ»ãæç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢ï¼ä¸¤è
åªç»è®¡å·²è¿è´¦10çåè¯ï¼å¹¶æ¯æå¯¼åº", "roles": ["ä¼è®¡", "è´¢å¡ä¸»ç®¡"]}, |
| | | {"stage": "èµäº§", "action": "åºå®èµäº§(1å¨ç¨/2é²ç½®/3ç»´ä¿®ä¸/4å·²æ¥åº)䏿 å½¢èµäº§(1å¨ç¨/2已失æ/3å·²æéå®)计æï¼ä¼ ids æéä¸è®¡æï¼ids 为空对å
¨é¨æªæ¥åº/æªå¤±æèµäº§è®¡æä¸ä¸ªæ", "roles": ["èµäº§ä¼è®¡"]}, |
| | | {"stage": "æ¥è¡¨", "action": "çæ¿æ±æ»èµäº§ä¸åè¯æ¶ç¹æ° + ç» ErpFinanceStatisticsApi å ERP å·²å®¡æ ¸æ¶è´§ä»æ¬¾ä¸è´ééé¢ï¼è¾åºæåº¦æ¶æ¯è¶å¿", "roles": ["è´¢å¡ä¸»ç®¡", "管çå±"]}]}, |
| | | {"id": "ai", "name": "AI ä¸å¡æµç¨", "mermaid": "mermaid/11-ai-business-flow.mmd", "color": "#56c8d8", |
| | | "summary": "ç»ä¸æ¨¡å¼ï¼ä¸å¡ä¾§æ¶éä¸ä¸æ(å¿
è¦æ¶è° MDM/SRM/CRM API ååç§°)âç»è£
Promptâchat/chatWithImageâè§£æ JSONâå端é¢å¡«æå»ºè®®ï¼æ Function Callingï¼RAG ç¥è¯åºå·²å»ºæä½ææ ä¸å¡æ¶è´¹ã", |
| | | "steps": [ |
| | | {"stage": "å½å
¥ææ", "action": "å票 OCR(å¾ç夿¨¡æ/PDFææ¬)ãæ¥ä»·å OCR â ç»æåé¢å¡«", "roles": ["éè´å", "éå®"]}, |
| | | {"stage": "è¾
å©å¤å®", "action": "è´¨æ£å+ææ +ç¼ºé· â å»ºè®®åæ ¼/ç¹é/éè´§/æ¥åº+çç±", "roles": ["è´¨æ£å"]}, |
| | | {"stage": "å³ç颿µ", "action": "缺æ/ç产æ¶é¿/ç产é£é©/交ä»åç±»é¢æµä¾è®¡åæäº§åè", "roles": ["计åå"]}, |
| | | {"stage": "模æ¿è¯å«", "action": "ä¸ä¼ æ¢ææ£éªæ¥åæä»¶(æ«æä»¶/ç
§çãçµåç PDFãWord/Excel) â åééæ½å(æææ¬å±èµ°ææ¬ãæ«æçé页转å¾) â 大模åæå端ä¸ä¼ çç»ä»¶æ¸
åäº§åºæå¹³ç»ä»¶è稿 â 人工å¨è®¾è®¡å¨ç¡®è®¤åä¿å为模æ¿çæ¬", "roles": ["è´¨æ£å", "è´¨éå·¥ç¨å¸"]}, |
| | | {"stage": "ç¥è¯æ£ç´¢", "action": "ææ¡£âåçâMilvus åéâæ£ç´¢æ¥å£(é¢ç)", "roles": ["â"]}]} |
| | | { |
| | | "id": "sales", |
| | | "name": "é宿µç¨", |
| | | "mermaid": "mermaid/02-sales-flow.mmd", |
| | | "color": "#4f9cff", |
| | | "summary": "线索转åå®¢æ· â åæºæ¨è¿ â æ¥ä»·(å¯AIè¯å«) â åå BPM å®¡æ¹ â çæ ERP éå®è®¢åï¼åå转æ¥ç订åæäº¤å
审æ¹ç´æ¥çæï¼æäº¤åä¸å¯ä¿®æ¹ï¼å°è´¦å«éå®ç±»åãæå·¥ååå·ã产åç¼å·ä¸ç产æ°éï¼ â éç产è¡èªå¨å»º MPS â åè´§éç¥ï¼ç©æµå
¬å¸/å¿«éè´¹/å¼ç¥¨ç¶æï¼å®¡æ¹é»è®¤ç©æµï¼ â åè´§å°è´¦æäº§åå¹³éº â éå®åºåºæäº¤(鿣éªè¡è½¬å¾
æ£æµ) â ç¬ç«å½å
¥ OQC åæç©æ+çå·+æ°éå
³èåå â æ£è´§åè¿ â å¼ç¥¨(BPM) â å½å
¥åç¥¨ä¸æ¬¾é¡¹èç¹ â 忬¾(å
å¼ç¥¨æ ¡éªï¼åå»ºä¸ºæªæäº¤ï¼æ¾å¼æäº¤ BPM åå审æ¹ï¼å®¡æ¹éè¿æåå忬¾è®¡å)ï¼åè´§å/æååºåºåå¯å¯¼åºå¸¦çµåç« ç Word 便填ç¾å彿¡£ï¼å®¢æ·æ¡£æ¡æ¯æå¤æ¶è´§å°åã", |
| | | "steps": [ |
| | | { |
| | | "stage": "è·å®¢", |
| | | "action": "线索转å客æ·ã建è系人ãç«é¡¹åæº", |
| | | "roles": [ |
| | | "éå®å
å¤" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥ä»·", |
| | | "action": "åæºèµ¢åå建æ¥ä»·å(AI OCR é¢å¡«)ï¼è½¬åå", |
| | | "roles": [ |
| | | "éå®å
å¤" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ææ ", |
| | | "action": "æå®¢æ·(ææ æ¹)ç»è®°ææ ä¿è¯éï¼é¡¹ç®/ææ ç¼å·/éé¢/ç¼´çº³æ¥æï¼å¯å
³è该客æ·å·²å®¡æ ¸çéå®è®¢åï¼å¼æ åå填䏿 ç»æï¼æªä¸æ è·è¸ªéåç¶æãéé¢ä¸æ¥æ", |
| | | "roles": [ |
| | | "éå®å
å¤" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ç¾çº¦", |
| | | "action": "å忥æºï¼æå·¥æ°å»º / æ¥ä»·å转å
¥ / Excel 导å
¥(ä¸ååå¤äº§åæç»è¡)ï¼æäº¤ BPM 审æ¹(å¯éæµç¨å®ä¹)ï¼éè¿=20", |
| | | "roles": [ |
| | | "éå®", |
| | | "审æ¹äºº" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥å", |
| | | "action": "ååä¸é®çæéå®è®¢å(XSDD)åå¨éå®ç®¡çæäº¤ï¼åå转æ¥ç订åå
BPM ç´æ¥çæ(20)ï¼æäº¤åä¸å¯ä¿®æ¹ï¼æå·¥/导å
¥è®¢åä»èµ° BPMãçæåèªå¨ä¸º needProduction æç»å建 MPS æµè½¬çäº§ï¼æ éç产ç订åå¯ç´æ¥çæä»å¨åè´§éç¥å", |
| | | "roles": [ |
| | | "éå®", |
| | | "计åå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "交ä»", |
| | | "action": "åè´§éç¥å®¡æ ¸(å ç¨)â éå®åºåºæäº¤ï¼æ oqcCheckFlag è¡è½¬å¾
æ£æµï¼æäº¤æ¶ä¸åèªå¨å»º OQCï¼è´¨æ£åç¬ç«å½å
¥å¹¶å®æ OQC åï¼å¨æ£éªå详æ
æç©æ+çå·+æ°éä¸è´éæ©å¾
æ£åºåºè¡å
³èï¼å
¨é¨å¾
æ£è¡åæ ¼ååºåºå转å¾
æ£è´§ â åè¿ â åºåºååé¨å/å
¨é¨åºåº", |
| | | "roles": [ |
| | | "ä»ç®¡", |
| | | "è´¨æ£" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "忬¾", |
| | | "action": "å¼ç¥¨ BPM(累计â¤ååé¢) â 忬¾å¼ºå¶å
å¼ç¥¨(累计â¤ååå©ä½ä¸å¼ç¥¨å©ä½)ï¼å款åå»ºä¸ºæªæäº¤ï¼æäº¤æ¶éæ°æ ¡éªå¹¶å建 BPM å®ä¾ï¼å®¡æ¹éè¿æåå忬¾è®¡åï¼å®¡æ¹ä¸ç忬¾ç¦æ¢é¡µé¢å
æå·¥å®¡æ ¸/åå®¡æ ¸", |
| | | "roles": [ |
| | | "è´¢å¡", |
| | | "éå®" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "purchase", |
| | | "name": "éè´æµç¨", |
| | | "mermaid": "mermaid/03-purchase-flow.mmd", |
| | | "color": "#5fc79e", |
| | | "summary": "ä¾åºåæ¡£æ¡(å¤è系人/å¤é¶è¡Â·å«é¶è¡è¡å·) â 询价æ¯ä»·(产åÃä¾åºåæ¨ªåæ¥ä»·ï¼æäº§åé䏿 ) â 确认åæä¸æ ä¾åºåæéè´è®¢åèç¨¿å¹¶èµ°ç°æ BPM â 确认æ¶è´§çæ MES å°è´§éç¥ â IQC(åæ ¼/ç¹éå
¥åºÂ·éè´§/æ¥åº) â éè´å
¥åºåå订åä¸ç³è¯· â æ¥ç¥¨(AI OCR) â 仿¬¾å BPM â ä¾åºå徿¥å¯¹è´¦ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "寻æº", |
| | | "action": "ä¾åºåæ¡£æ¡ç»´æ¤å¤ä¸ªè系人ä¸å¤ä¸ªé¶è¡è´¦æ·(å«é¶è¡è¡å·)ï¼æ°å¢è¯¢ä»·åæ¶ä¸å¹¶å½å
¥äº§åÃåä¸ä¾åºåæ¥ä»·å¹¶é宿¯ä¸ªäº§åç䏿 ä¾åºåï¼åè¡¨ç´æ¥ç¡®è®¤åæä¸æ ä¾åºåçæéè´è®¢åè稿", |
| | | "roles": [ |
| | | "éè´å", |
| | | "ä¾åºå管çå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ç³è¯·", |
| | | "action": "éè´ç³è¯·(CGSQ)æäº¤ BPMï¼é©³åå¯éç½®åè稿ï¼éè¿ä¸æä¾åºåèªå¨çæè®¢å", |
| | | "roles": [ |
| | | "éè´å", |
| | | "审æ¹äºº" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ä¸å", |
| | | "action": "éè´è®¢å(CGDD)èªå¨æäº¤ BPM(15â20)", |
| | | "roles": [ |
| | | "éè´å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¶è´§", |
| | | "action": "确认æ¶è´§çæå°è´§éç¥(0âå¾
è´¨æ£2/å¾
å
¥åº3â4)ï¼éæ£ç©æèªå¨å建 IQC", |
| | | "roles": [ |
| | | "ä»ç®¡", |
| | | "IQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å
¥åº", |
| | | "action": "IQC åæ ¼/ç¹éâéè´å
¥åº(å¾
䏿¶âå¾
æ§è¡â宿)åºå+ï¼åå订å inCount/inStatus ä¸ç³è¯·æç»", |
| | | "roles": [ |
| | | "ä»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "éè´§", |
| | | "action": "IQC ä¸åæ ¼éè´§âä¾åºåéè´§åºåº(éæéå®å°è®¢åè¡)ï¼æ¥åºèµ° NCR", |
| | | "roles": [ |
| | | "ä»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "仿¬¾", |
| | | "action": "éè´æ¥ç¥¨(FPD, AI OCR, â¤è®¢åæ»ä»·) â 仿¬¾å(FKD å
³èæ¥ç¥¨+éä»¶, â¤æ¥ç¥¨éé¢) BPM 审æ¹", |
| | | "roles": [ |
| | | "è´¢å¡", |
| | | "审æ¹äºº" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "对账", |
| | | "action": "ä¾åºå徿¥æä¾åºåæ±æ»ï¼å·¦ä¾§éè´è®¢åæµæ°´å«å·²å¼ç¥¨/æªå¼ç¥¨éé¢ï¼å³ä¾§æ¥ç¥¨æµæ°´å«å¼ç¥¨éé¢/å·²ä»/å©ä½åºä»å¹¶é仿¬¾æµæ°´ï¼é¡¶é¨æ±æ»ç´¯è®¡éè´/å¼ç¥¨/仿¬¾/æªä»ä½é¢", |
| | | "roles": [ |
| | | "è´¢å¡", |
| | | "éè´å" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "production", |
| | | "name": "ç产æµç¨", |
| | | "mermaid": "mermaid/04-production-flow.mmd", |
| | | "color": "#e0b34f", |
| | | "summary": "éå®è®¢åé©±å¨ MPS(ä»
å建人æè¶
管å¯ä¸å) â ä¸åå·¥å â æå·¥èºè·¯çº¿æå·¥åºä»»å¡ â 颿/çº¿è¾¹å¤æ â æ¥å·¥(å·¥åºé¡ºåºç¡¬æ ¡éª+BPMï¼æå·¥åºå·¥èµå段+å·¥èºè·¯çº¿ç»å®+主计价设å¤è§£æåä»·å¿«ç
§æ¥å·¥å·¥èµ) â BOM æ¶è/åæåèªå¨å
¥åº/æåå¾
æ£ â æ«éå·¥åºååè¿åº¦ â èªå¨å®å·¥ â ProductionFinishedEvent ååéå®è®¢åï¼æ¥å·¥å·¥èµå¨èªé
¬æ ¸ç®æ¶ææ¥å·¥äººæ±æ»ï¼å¯äººå·¥è°æ´å计å
¥å®åï¼æ¥å·¥æäº¤ä¸åèªå¨çæ IPQCï¼è¿ç¨æ£éªç±è´¨éé¨é¨æå·¥å»ºåï¼æå产åºè¡å¿
须宿 IPQC æå¯å
¥åºï¼åæå产åºç´æ¥ PASS å¹¶æç产 BOM ç®æ åºä½èªå¨å
¥åºãä¸ä¾èµåå²å¼å
³ãä¸èµ°å®¡æ¹ï¼åæ ¼çæè´¨éè§åè°æ´å·¥èµ(ç³»æ°æä¸åæ ¼æ£æ¬¾)ãæ¥å·¥åæ¶æå·¥åºæ åå·¥æ¶é
ç½®+ç产é¿åº¦+è¾
å©é¡¹æ¬¡æ°å¿«ç
§æ åå·¥æ¶ï¼å®é
å·¥æ¶ä¸æ åå·¥æ¶çå·®å¼è¿å
¥å·¥æ¶èæ ¸æ¥è¡¨(æäºº/å·¥åº/æºå°/卿)ï¼æ åå·¥æ¶åªç¨äºèæ ¸å¯¹æ¯ãä¸åä¸å·¥èµè®¡ç®ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "计å", |
| | | "action": "MPS å建(æå·¥æéå®è®¢åèªå¨)âä¸åæåå¹¶ä¸å为工å", |
| | | "roles": [ |
| | | "计åå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "派工", |
| | | "action": "å·¥å确认æå·¥èºè·¯çº¿éå·¥åºçæä»»å¡ï¼å¯ææ´¾/æå/åæ¶", |
| | | "roles": [ |
| | | "车é´ä¸»ä»»" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "夿", |
| | | "action": "çäº§é¢æååºåºæçº¿è¾¹èæåºå¤æ", |
| | | "roles": [ |
| | | "ä»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥å·¥", |
| | | "action": "æäº¤æ¥å·¥ï¼ä¸ä¸éå·¥åºæªæ¥æ»¡ç´æ¥æ¦æªï¼å¯ç¨ BPM 走审æ¹ï¼æå·¥åºè®¡è´¹ç±»åå¿«ç
§å·¥èµï¼è®¡æ¶=å·¥æ¶Ãå®é¢ï¼è®¡ä»¶=æ°éÃå®é¢ï¼ï¼è®°å°æ¥å·¥äººåä¸ï¼åæ¶å½å
¥ç产é¿åº¦ä¸è¾
å©é¡¹æ¬¡æ°ï¼æå·¥åºæ åå·¥æ¶é
置计ç®å¹¶å¿«ç
§æ åå·¥æ¶ï¼ä¸»å·¥æ¶+è¾
å©å·¥æ¶ï¼ä¸è®¡ç®ä¾æ®ï¼é
置缺失æ¶ä¸é»æï¼è½¬äººå·¥å¡«å·¥æ¶å¹¶è®°å½ç¼ºå¤±åå ", |
| | | "roles": [ |
| | | "æä½å·¥" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å·¥æ¶èæ ¸", |
| | | "action": "å®é
å·¥æ¶ vs æ åå·¥æ¶å®æ¶æ¯å¯¹ï¼å·®å¼çè¶
éå¼(é»è®¤20%)æç¤ºï¼æ¥è¡¨æäºº/å·¥åº/æºå°/å¨ææ±æ»æ¥å·¥åæ°ãç产é¿åº¦ãå®é
å·¥æ¶ãæ åå·¥æ¶ãå·®å¼ä¸å·®å¼çï¼ä¾è½¦é´ä¸»ä»»ä¸å·¥èºåæ ¸å¯¹", |
| | | "roles": [ |
| | | "车é´ä¸»ä»»", |
| | | "å·¥èºå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "èå¨", |
| | | "action": "审æ¹éè¿: å·¥ååå¨ç产BOMå³èªå¨ç©ææ¶èæ£çº¿è¾¹åº(å
许è´åºåï¼ä¸åä¾èµåå²/è´¨æ£å¼å
³)ï¼æå产åºè½¬å¾
æ£éªå¹¶çæ PENDING 产åºè¡ï¼çå¾
è´¨éé¨é¨æå·¥å»º IPQC å¹¶ååï¼åæå产åº(æ¥å·¥ç©æâ å·¥åæå)ç´æ¥ PASS å¹¶æ BOM ç®æ åºä½ç«å³å
¥åºï¼ä¸çè´¨æ£", |
| | | "roles": [ |
| | | "ç³»ç»èªå¨" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ£éª", |
| | | "action": "已宿 IPQC å¨è¯¦æ
页æç©æ+çå·+æ°éä¸è´éæ©å¾
æ£äº§åºè¡å
³èï¼å忥工宿并æååæ ¼/ä¸åæ ¼äº§åºå
¥åºï¼æªå
³èç已宿æ£éªåä¸åå", |
| | | "roles": [ |
| | | "IPQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å®å·¥", |
| | | "action": "ä»
æ«éå·¥åºååå·¥åå·²ç产æ°éï¼è¾¾æ èªå¨å®æï¼MPS ç´¯è®¡å¤æå®æå¹¶åäºä»¶ç»éå®è®¢å", |
| | | "roles": [ |
| | | "ç³»ç»èªå¨" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "quality", |
| | | "name": "è´¨éæµç¨", |
| | | "mermaid": "mermaid/05-quality-flow.mmd", |
| | | "color": "#e06c6c", |
| | | "summary": "å鿣éªé¸å£(IQC/IPQC/OQC/RQCï¼äºæ 0â4) + å®ææ¶æåæ ¼/ä¸åæ ¼æ°éèªå¨å¤å®(1 æ ¡éªéè¿/2 æ ¡éªä¸éè¿) + NCR æäº¤ BPM 审æ¹åç±è´¨éé¨å¤ç½®åå
³éï¼IPQC ç±è´¨éé¨é¨æå·¥æ°å»ºå¹¶ç»å®å·¥å/å·¥åº/åæå/çå·ï¼æ°å»º/ç¼è¾éå·¥ä½å³æå·¥åºå¸¦åºè¯¥å·¥åºç»´æ¤çèªå®ä¹å·¥èµåæ®µï¼æ£éªä¿¡æ¯å¯æè¡å¢å 䏿¯è¡åªä¸ä¼ æ£éªéä»¶ï¼ä¸å¡«æ£æµå¼ï¼éä»¶ææ£éªè¡æç» ID ç¬ç«ç»å®ï¼ï¼IPQC 宿åæç©æ+çå·+æ°éå
³èæ¥å·¥å¾
æ£è¡ï¼æ¥å·¥æäº¤ä¸åèªå¨çæ IPQCï¼æå产åºè¡ PENDING ä¸å¿
须宿 IPQC æè½å
¥åºï¼åæ ¼çå䏿¥å·¥å·¥èµè´¨éè°æ´ï¼OQC 宿åæåæ ·è§åå
³èéå®åºåºå¾
æ£è¡ï¼è´¨éç»è®¡æä¾æ´ä½åæ ¼ç/ä¸åæ ¼çå¹¶æå·¥åºãæçäº§å·¥åæ±æ»ï¼AI æä¾å¤å®å»ºè®®ï¼NCR å®¡æ¹æè§ç± BPM æµè½¬è®°å½æ¿è½½ï¼å¤ç½®æ¹å¼éå®è®©æ¥æ¾è¡/è¿ä¿®/è¿å·¥/æ¥åºï¼æ£éªåå¯ç±æºè½è´¨æ£æ¥åå¹³å°ä¸é®åºä»¶ï¼generate-from-qcï¼æ°æ®ä» MES åï¼äºéæ ¡éªå渲æè½åºï¼ã è´¨éå·¡æ£ä¸ºç¬ç«è®°å½ mes_qc_patrolï¼æ XJ_+æ¥æ+æµæ°´ç¼ç ï¼ä¸çæåºåä¸å¡åæ®ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "æ¥æ", |
| | | "action": "å°è´§éç¥/å¤åå
¥åºâIQCï¼ç»è®ºå忍è¿å¾
å
¥åºæè§¦åéè´§", |
| | | "roles": [ |
| | | "IQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "è¿ç¨", |
| | | "action": "æ¥å·¥äº§åºè¡(æå PENDINGãåæåç´æ¥ PASS èªå¨å
¥åº)âè´¨éé¨é¨æå·¥æ°å»º IPQC å¹¶ç»å®å·¥å/å·¥åº/åæå/çå·âéè¡ä¸ä¼ æ£éªéä»¶ï¼å®æåæç©æ+çå·+æ°éä¸è´å
³èæ¥å·¥å¾
æ£è¡ï¼åæ ¼æè¡å
¥åºãä¸åæ ¼çæ NCR", |
| | | "roles": [ |
| | | "IPQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "åºè´§", |
| | | "action": "éå®åºåºæäº¤åè¡è½¬å¾
æ£æµâè´¨æ£åç¬ç«å½å
¥ OQCï¼å®æåæç©æ+çå·+æ°éä¸è´å
³èåºåºå¾
æ£è¡ï¼å
¨é¨åæ ¼ååºåºåè¿å
¥å¾
æ£è´§", |
| | | "roles": [ |
| | | "OQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "éè´§", |
| | | "action": "éæ/éå®éè´§/å®åéè´§âRQCï¼ç»è®ºåè°åæ®ä¸å®å", |
| | | "roles": [ |
| | | "RQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "导å
¥", |
| | | "action": "IQC/IPQC/OQC ä¸åè¡¨åæ¯æ Excel æ¹é导å
¥(æé®å¨ãæ°å¢ãä¸ã导åºãä¹é´ï¼çº¯æ°å¢ä¸åæ´æ°è¦ç)ï¼ä¸è¡ä¸å¼ åï¼ç¼å·ç空èªå¨çæï¼è´¨æ£æ¹æ¡ç空æç©æ+æ£éªç±»åèªå¨å¹é
ï¼æ£æµäººåç空åå½åç»å½ç¨æ·ï¼ç©æ/ä¾åºå/客æ·/å·¥å/工使ç¼ç æå称精确å¹é
(IPQC ç©æç±å·¥åæ¨å¯¼ï¼æ¨¡æ¿ä¸å¡«)ï¼åæ ¼+ä¸åæ ¼=æ£æµ/æ¥æ¶æ°éãIPQC å·¥åº+æåº+å
¶ä»åºåâ¤ä¸åæ ¼ãOQC 客æ·é¡»å¨æ¬äººæ°æ®æéå
ï¼éè¡å¯¼å
¥é¨åæåï¼å¤±è´¥è¡è¿ failureList 带è¡å·ä¸å¯æ§è¡å¨ä½ï¼æååä¸å¾å¾
æ£éª0ï¼å䏿¹æ°æ®ä¸å¯éå¤å¯¼å
¥ï¼æä»¶å
éå¤è¡ä¸åºå
å·²åå¨åä¸å¡é®åæ®ï¼IQC ç©æ+ä¾åºå+ä¾åºåæ¹æ¬¡+æ¥ææ¥æãIPQC ç产工å+æ£éªç±»å+å·¥ä½+æ£æµæ¥æãOQC ç©æ+客æ·+æ¹æ¬¡å·+åºè´§æ¥æï¼åæè¯¥è¡ï¼æç¤ºå«ç»´åº¦ãåæ¹å®é
å¼ä¸ãå
å é¤è¯¥åæ®åéè¯ãå¨ä½", |
| | | "roles": [ |
| | | "è´¨æ£å", |
| | | "IQC è´¨æ£å", |
| | | "IPQC è´¨æ£å", |
| | | "OQC è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ä¸åæ ¼", |
| | | "action": "NCR: å¾
è¯å®¡(0)âæäº¤BPM审æ¹(2)â审æ¹éè¿å·²è¯å®¡(6)/驳ååå¾
è¯å®¡âè´¨éé¨å¤ç½®(è®©æ¥æ¾è¡/è¿ä¿®/è¿å·¥/æ¥åº)âå·²å¤ç½®(7)âå
³é(8)ï¼å®¡æ¹æè§ç± BPM æµè½¬è®°å½æ¿è½½ï¼æªå叿µç¨å®ä¹æå
¨å±å
å®¡æ¹æ¶æäº¤åèªå¨éè¿", |
| | | "roles": [ |
| | | "è´¨éå·¥ç¨å¸" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "åºä»¶", |
| | | "action": "两æ¡åºä»¶å
¥å£ï¼â éç¨ generate/preview(è°ç¨æ¹èªå¸¦ä¸ä¸æ) 渲æ HTML å¹¶å»ç»æ°æ®å¿«ç
§ï¼ç¼å· QR+æ¥æ+4使µæ°´æå¤©ç¬ç«ï¼preview åªæ¸²æä¸è½åºä¸æ¶èç¼å·ï¼regenerate ç¨å»ç»å¿«ç
§éæ¸²ä¸æ°æ®ä¸ç¼å·ä¸åå¹¶ä½åºå·²å½æ¡£ PDFï¼å¯¼åº PDF ç±åç«¯è° Chromium æå°å®ä¾å·²åç HTML å彿¡£éä»¶ä¸å¿ï¼â¡generate-from-qc ç±è´¨æ£åç´æ¥åºä»¶(æ°æ®ç» MesQcReportApi ä» MES åï¼åç«¯ä¸æ¼ä¸ä¸æ)ï¼åºä»¶åäºéæ ¡éªæä¸å¡ä¼å
çº§åªæ¥ç¬¬ä¸å¤ï¼ç±»åéæ³/åæ®ä¸åå¨/æªå®ææ£éª/æªå¡«å¤å®/模æ¿ç±»åä¸ç¬¦/æ å¯ç¨æ£éªé¡¹ï¼æ¥å头å¦å¸¦åæ®åå¤å® qcResult+qcResultText ä¸å¼æå¤å®å¹¶åï¼ååºå undecidableCount å¾
å¤å®é¡¹æ°ä¸ warnings(åç»æ é¢è·³è¿/ææ å·²å /æªå½å®æµå¼/æ ·åè¶
3)ï¼åä¸å¼ åæ®å¯åå¤åºå¤ä»½", |
| | | "roles": [ |
| | | "è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "建模æ¿", |
| | | "action": "AI 导å
¥ï¼ä¸ä¼ æ¢ææ£éªæ¥åæä»¶(æ«æä»¶/ç
§çãçµåç PDFãWord/Excel) â è¯å«ææ¨¡æ¿è稿(ä¸è½åº) â 人工å¨è®¾è®¡å¨ç¡®è®¤è°æ´åä¿åä¸ºçæ¬ï¼.doc/.xls æ§æ ¼å¼ä¸æ¯æ", |
| | | "roles": [ |
| | | "è´¨æ£å", |
| | | "è´¨éå·¥ç¨å¸" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "warehouse", |
| | | "name": "ä»å¨æµç¨", |
| | | "mermaid": "mermaid/06-warehouse-flow.mmd", |
| | | "color": "#7e6bd6", |
| | | "summary": "15 ç±»åæ®é©±å¨åºåå°è´¦(å
å
ç»ãåé)åå¨ï¼å
¨é¨ç»äºå¡æµæ°´ççï¼æ¯æè°æ¨å¨éãçç¹è°æ´ãæ¹æ¬¡/SN 追溯ãåºåå ç¨ä¸å级å»ç»ã线边èæåºè´åºåï¼å¯¹å¤ WmsStockApi ä¾ ERP æ¶åã åºåå»ç»ææ¥æºï¼äººå·¥/çç¹/è°æ¨ï¼ç¬ç«ç»è®°äº mes_wm_material_stock_freeze_claimï¼åºåäºå¡åä½ work_order_idï¼åºåºå°è´¦å¯ç´æ¥å±ç¤ºç产订åå·ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "å
¥åº", |
| | | "action": "éè´å
¥åº/ç产å
¥åº/产åºå
¥åº/éè´§å
¥åº/å¤åå
¥åº/æé¡¹å
¥åº â IN äºå¡ï¼æ¹æ¬¡æ··æ¾æ ¡éªãå级å»ç»æ ¡éª", |
| | | "roles": [ |
| | | "ä»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "åºåº", |
| | | "action": "éå®åºåº/颿/æ¶è/å¤ååæ/ä¾åºåéè´§/æé¡¹åºåº â OUT äºå¡ï¼checkFlag æ§å¶å¯å¦è´åºå", |
| | | "roles": [ |
| | | "ä»ç®¡", |
| | | "ç³»ç»èªå¨" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ç§»åº", |
| | | "action": "å
é¨/å¤é¨è°æ¨æå¯¹ MOVE äºå¡ï¼å¨éæ°éè·è¸ª", |
| | | "roles": [ |
| | | "ä»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "çç¹", |
| | | "action": "æ¹æ¡âä»»å¡âæç»è¡âç»æï¼çç ADJUST_INãçäº ADJUST_OUTï¼å¯å»ç»ä¸ç²ç", |
| | | "roles": [ |
| | | "çç¹å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "追溯", |
| | | "action": "æ¹æ¬¡/SN(uuid)/æ¡ç (18ç±»)/è£
ç®±åµå¥æ¯ææ£åå追溯", |
| | | "roles": [ |
| | | "è´¨é", |
| | | "å®å" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "aftersales", |
| | | "name": "å®åæµç¨", |
| | | "mermaid": "mermaid/07-after-sales-flow.mmd", |
| | | "color": "#c78bd6", |
| | | "summary": "å·¥å(å
æ+é®é¢å¤å®) â 客æ·è¯æ±/å¤çç»æé件䏿µè½¬è®°å½çç â ç»´ä¿®ä¸ç±»åæç±ä»å¨ç©æµåèµ·éå®éè´§(éè´§åå建å³ååå·¥åæµè½¬è®°å½) â RQC è´¨æ£/å
¥åº/鿬¾ä¸åè°é级æ¨è¿ â å·¥åå®ç»å
³éã", |
| | | "steps": [ |
| | | { |
| | | "stage": "åç", |
| | | "action": "人工å½å
¥å·¥å(å
³è客æ·/订å/åå)ï¼å¡«å客æ·è¯æ±åé¦æè¿°å¹¶ä¸ä¼ éä»¶ï¼åå»ºæ¶æå®çå¤çäººç´æ¥è¿å
¥å¤çä¸", |
| | | "roles": [ |
| | | "客æ" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å¤å®", |
| | | "action": "é®é¢å¤å®: ä¸è¬/ç»´ä¿®/éè´§ï¼ä¸¥é度 0-3", |
| | | "roles": [ |
| | | "å®åå·¥ç¨å¸" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å¤ç", |
| | | "action": "å¡«åå¤çç»æå¹¶ä¸ä¼ å¤çç»æéä»¶ï¼åå»ºãæ´æ°ãå¤å®ãå®ç»ã彿¡£ãåæ¶ãå访ååå
¥æµè½¬è®°å½", |
| | | "roles": [ |
| | | "å®åå·¥ç¨å¸" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ç»´ä¿®", |
| | | "action": "ç°åº/è¿å/è¿ç¨ç»´ä¿®ï¼è´¹ç¨ä¸ç»æè®°å½ï¼å®æèå¨å·¥åå®ç»", |
| | | "roles": [ |
| | | "维修工ç¨å¸" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "éè´§", |
| | | "action": "å®åä¸ååèµ·éè´§ç³è¯·ï¼ç±ä»å¨ç©æµåèµ·éå®éè´§å(RQC)âè´¨æ£/å
¥åºåè°â鿬¾åè°âå
³éï¼å建éè´§åæ¶æéå®è®¢åå¹é
æè¿ä¸å¼ æªå
³é/æªåæ¶å·¥åï¼åå
¥ãä»å¨éè´§ãæµè½¬è®°å½ï¼è稿æå¤çä¸å·¥åæ¨è¿ä¸ºå¾
éè´§", |
| | | "roles": [ |
| | | "ä»å¨", |
| | | "è´¨æ£", |
| | | "è´¢å¡" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "finance", |
| | | "name": "ä¼è®¡æ ¸ç®æµç¨", |
| | | "mermaid": "mermaid/12-finance-flow.mmd", |
| | | "color": "#3ec9a7", |
| | | "summary": "ä¼è®¡æ ¸ç®ï¼åè¯/åå½/å贷平衡 -> è¿è´¦ -> æ»è´¦/æç»è´¦/æ¥è¡¨ï¼åºå®èµäº§ææ§ãæ å½¢èµäº§æéãéå®éè´è´¢å¡éç¯ï¼ERP éå®è®¢å + MES 已宿åºåºå -> CRM å¼ç¥¨ç³è¯·ï¼éå®è®¢å/åºåºåéå¡«ï¼ç´¯è®¡â¤ååé¢ï¼-> 审æ¹éè¿ -> å½å
¥å票并填åå忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éæ¶æ¬¾èç¹ -> CRM 忬¾ææ ¸éæç»åæå°è®¢å/åºåº/å¼ç¥¨ -> 客æ·åºæ¶å¯¹è´¦ãå·²åè´§æªå¼ç¥¨ãæªæ ¸éåºæ¶è´¦é¾ã䏿忬¾è®¡åï¼æ¥ç¥¨å¿
须忶ç»å®éè´è®¢åä¸ MES éè´å
¥åºåï¼åè¯å¯å
³èæ¥æºåæ®ï¼å¼ç¥¨/忬¾/æ¥ç¥¨/仿¬¾ï¼ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "建账", |
| | | "action": "ç»´æ¤ä¼è®¡ç§ç® tree(subjectCode å¯ä¸ï¼å¯å»ºä¸çº§)ï¼é¦æ¬¡å¯å¯¼å
¥çº¦ 68 æ¡ä¸çº§ç§ç®ç§å", |
| | | "roles": [ |
| | | "ä¼è®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "è®°è´¦", |
| | | "action": "å½å
¥åè¯(åå·ç空èªå¨çæ)+åå½ï¼åå½éè¡éç§ç®å¹¶å¡«å/è´·ï¼æ ¡éªè³å°ä¸è¡ãåè´·é½ä¸å¾åæ¶å¤§äº0ãå计ç¸çä¸å¤§äº0", |
| | | "roles": [ |
| | | "ä¼è®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "è¿è´¦", |
| | | "action": "æªè¿è´¦0 â post è¿è´¦ â å·²è¿è´¦10(ä¸å¯åä¿®æ¹)ï¼æªè¿è´¦0 æ å·²è¿è´¦10 åå¯ cancel ä½åº â å·²ä½åº20", |
| | | "roles": [ |
| | | "ä¼è®¡", |
| | | "è´¢å¡ä¸»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥è´¦", |
| | | "action": "æ»è´¦ææé´éææ±æ»ãæç»è´¦éæ¡åå½å¹¶ç»è½¬ä½é¢ï¼ä¸¤è
åªç»è®¡å·²è¿è´¦10çåè¯ï¼å¹¶æ¯æå¯¼åº", |
| | | "roles": [ |
| | | "ä¼è®¡", |
| | | "è´¢å¡ä¸»ç®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "èµäº§", |
| | | "action": "åºå®èµäº§(1å¨ç¨/2é²ç½®/3ç»´ä¿®ä¸/4å·²æ¥åº)䏿 å½¢èµäº§(1å¨ç¨/2已失æ/3å·²æéå®)计æï¼ä¼ ids æéä¸è®¡æï¼ids 为空对å
¨é¨æªæ¥åº/æªå¤±æèµäº§è®¡æä¸ä¸ªæ", |
| | | "roles": [ |
| | | "èµäº§ä¼è®¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥è¡¨", |
| | | "action": "çæ¿æ±æ»èµäº§ä¸åè¯æ¶ç¹æ° + ç» ErpFinanceStatisticsApi å ERP å·²å®¡æ ¸æ¶è´§ä»æ¬¾ä¸è´ééé¢ï¼è¾åºæåº¦æ¶æ¯è¶å¿", |
| | | "roles": [ |
| | | "è´¢å¡ä¸»ç®¡", |
| | | "管çå±" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "æ¥ç¥¨", |
| | | "action": "éæ©éè´è®¢å -> éæ©è¯¥è®¢åä¸å·²å®æ MES éè´å
¥åºå -> ä¿åæ¥ç¥¨ï¼item_receipt_id/item_receipt_codeï¼", |
| | | "roles": [ |
| | | "éè´", |
| | | "è´¢å¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å¼ç¥¨ç³è¯·", |
| | | "action": "éæ©ååï¼éå®è®¢åä¸è¯¥è®¢åä¸å·²å®æåºåºåå为éå¡«ï¼éæ©ååæ¶è¥è¯¥ååä»
æä¸å¼ å·²å®¡æ ¸éå®è®¢ååèªå¨å¸¦åºï¼ï¼å¡«åå¼ç¥¨éé¢åæäº¤ BPM 审æ¹", |
| | | "roles": [ |
| | | "éå®", |
| | | "è´¢å¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å½å
¥å票", |
| | | "action": "审æ¹éè¿åå½å
¥å票å·ç ãæ¥æãéä»¶ï¼å¹¶æéå®è®¢åå¡«åå忬¾/é¢ä»æ¬¾/å°è´§æ¬¾/éªæ¶æ¬¾/è´¨ä¿éååèªæ¶é´èç¹", |
| | | "roles": [ |
| | | "è´¢å¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "忬¾æ ¸é", |
| | | "action": "忬¾åéè¿ items æé颿 ¸éå°éå®è®¢å/éå®åºåº/å¼ç¥¨ï¼æç»å计å¿
é¡»çäºå款éé¢ï¼å®¡æ ¸éè¿åå忬¾è®¡åå®é
éé¢ä¸ç¶æ", |
| | | "roles": [ |
| | | "è´¢å¡" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "对账æ¥è¡¨", |
| | | "action": "æå®¢æ·æ±æ»è®¢åãåºåºãå¼ç¥¨ã忬¾ï¼è¾åºæªæ ¸éåºæ¶ãå·²åè´§æªå¼ç¥¨ãè´¦é¾ã䏿忬¾è®¡åä¸æåº¦è¶å¿", |
| | | "roles": [ |
| | | "è´¢å¡", |
| | | "éå®" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å
¥è´¦", |
| | | "action": "è®°è´¦åè¯å¡«å sourceType/sourceId/sourceNo å
³èå¼ç¥¨ã忬¾ãæ¥ç¥¨ã仿¬¾çæ¥æºåæ®", |
| | | "roles": [ |
| | | "è´¢å¡" |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "id": "ai", |
| | | "name": "AI ä¸å¡æµç¨", |
| | | "mermaid": "mermaid/11-ai-business-flow.mmd", |
| | | "color": "#56c8d8", |
| | | "summary": "ç»ä¸æ¨¡å¼ï¼ä¸å¡ä¾§æ¶éä¸ä¸æ(å¿
è¦æ¶è° MDM/SRM/CRM API ååç§°)âç»è£
Promptâchat/chatWithImageâè§£æ JSONâå端é¢å¡«æå»ºè®®ï¼æ Function Callingï¼RAG ç¥è¯åºå·²å»ºæä½ææ ä¸å¡æ¶è´¹ãæºè½ä½ç©æå¯¼å
¥ä¸ºè§å+Java 颿£é¾è·¯ï¼ç»äººå·¥ç¡®è®¤åå¹çæäº¤ã", |
| | | "steps": [ |
| | | { |
| | | "stage": "å½å
¥ææ", |
| | | "action": "å票 OCR(å¾ç夿¨¡æ/PDFææ¬)ãæ¥ä»·å OCR â ç»æåé¢å¡«", |
| | | "roles": [ |
| | | "éè´å", |
| | | "éå®" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ä¸»æ°æ®å¯¼å
¥", |
| | | "action": "ä¸ä¼ ç©æ CSV/XLSX â Python è§£æåé â Java åªè¯»é¢æ£åç±»/åä½/éå¤ç¼ç â 人工修订确认 â å¹çæäº¤ â éè¡åæ§ï¼åªæ°å»ºã䏿´æ°ãä¸åæ¥ MES", |
| | | "roles": [ |
| | | "ç©æç®¡çå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "è¾
å©å¤å®", |
| | | "action": "è´¨æ£å+ææ +ç¼ºé· â å»ºè®®åæ ¼/ç¹é/éè´§/æ¥åº+çç±", |
| | | "roles": [ |
| | | "è´¨æ£å" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "å³ç颿µ", |
| | | "action": "缺æ/ç产æ¶é¿/ç产é£é©/交ä»åç±»é¢æµä¾è®¡åæäº§åè", |
| | | "roles": [ |
| | | "计åå" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "模æ¿è¯å«", |
| | | "action": "ä¸ä¼ æ¢ææ£éªæ¥åæä»¶(æ«æä»¶/ç
§çãçµåç PDFãWord/Excel) â åééæ½å(æææ¬å±èµ°ææ¬ãæ«æçé页转å¾) â 大模åæå端ä¸ä¼ çç»ä»¶æ¸
åäº§åºæå¹³ç»ä»¶è稿 â 人工å¨è®¾è®¡å¨ç¡®è®¤åä¿å为模æ¿çæ¬", |
| | | "roles": [ |
| | | "è´¨æ£å", |
| | | "è´¨éå·¥ç¨å¸" |
| | | ] |
| | | }, |
| | | { |
| | | "stage": "ç¥è¯æ£ç´¢", |
| | | "action": "ææ¡£âåçâMilvus åéâæ£ç´¢æ¥å£(é¢ç)", |
| | | "roles": [ |
| | | "â" |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | }</script> |
| | | <script type="application/json" id="data-roles">{ |
| | | "note": "å®é
system_role ä»
4 个ææè§è²ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼+1 æµè¯è§è²ï¼ä¸å¡å工主è¦éè¿ãèåæé + æ°æ®æéï¼è´è´£äººå¶ï¼ãå®ç°ï¼èéç»åè§è²ã以ä¸ä¸å¡è§è²ç±å模ååè½ä¸æ°æ®æéæ¨¡åæ¨å¯¼ã", |
| | | "systemRoles": [ |
| | | {"name": "è¶
级管çå", "code": "super_admin", "desc": "代ç ç´è¿å
¨é¨èå"}, |
| | | {"name": "æ®éè§è²", "code": "common", "desc": "ä¾èµ system_role_menu é
æ"}, |
| | | {"name": "CRM 管çå", "code": "crm_admin", "desc": "CRM æ¥çå
¨é¨æ°æ®"}, |
| | | {"name": "ç§æ·ç®¡çå", "code": "tenant_admin", "desc": "å¤ç§æ·å·²å
³éï¼éç"} |
| | | ], |
| | | "businessRoles": [ |
| | | {"role": "éå®å
å¤/éå®", "modules": ["CRM", "ERP"], "operations": ["线索客æ·åæºç»´æ¤", "æ¥ä»·ä¸åå", "éå®è®¢å", "è·è¿è®°å½", "ææ ä¿è¯éç»è®°ä¸é款è·è¸ª"], "data": ["crm_*", "erp_sale_order"], "scope": "è´è´£äºº(owner)+æ°æ®æéä¸çº§ï¼åªè¯»/读å/è´è´£äººï¼å
¬æµ·æ± å¯é¢åï¼äº¤æ¥äººåºå¯éè¿ expandUserIds çå°ç¦»èäººæ°æ®(æ¥å£å·²å¤ãå¾
æ¥å
¥)"}, |
| | | {"role": "éå®ç»ç", "modules": ["CRM"], "operations": ["åæº/åå审æ¹åä¸", "éå®ç®æ å¶å®", "ä¸ç»©æåæ¼æåæ"], "data": ["å¢éæ°æ®(ä¸å±ç¨æ·)"], "scope": "AdminUserApi ä¸çº§ç¨æ·æ©å±"}, |
| | | {"role": "éè´å", "modules": ["ERP", "SRM"], "operations": ["éè´ç³è¯·/订å", "确认æ¶è´§", "æ¥ç¥¨ä¸ä»æ¬¾åèµ·"], "data": ["erp_purchase_*", "srm_*"], "scope": "requestUserId/supplierOwner å½å±"}, |
| | | {"role": "éè´å/ä¾åºå管çå", "modules": ["SRM"], "operations": ["ä¾åºåæ¡£æ¡ç»´æ¤", "询价æ¯ä»·ä¸ç¡®è®¤è½¬è®¢å"], "data": ["srm_supplier*", "srm_inquiry*"], "scope": "éè´ç®¡çèåæéï¼è¯¢ä»·ç¡®è®¤çæçéè´è®¢åè稿走 ERP BPM"}, |
| | | {"role": "计åå", "modules": ["MES"], "operations": ["MPS ä¸å·¥å", "å·¥èºè·¯çº¿ç»´æ¤", "AI 颿µåè"], "data": ["mes_pro_*"], "scope": "车é´/é¨é¨æ°æ®èå´"}, |
| | | {"role": "æä½å·¥/çç»é¿", "modules": ["MES"], "operations": ["任塿¥æ¶", "æ¥å·¥æäº¤(åå·¥åºé¡ºåºçº¦æ)", "å®ç¯"], "data": ["mes_pro_feedback", "mes_pro_task"], "scope": "ä»»å¡ææ´¾äººå¯è§"}, |
| | | {"role": "ä»ç®¡å", "modules": ["MES-WM"], "operations": ["15 ç±»åºå
¥åºåæ®æ§è¡", "è°æ¨", "çç¹", "æ¡ç è£
ç®±"], "data": ["mes_wm_*"], "scope": "ä»åºç»´åº¦ï¼WMS 坿ä»åºé
ç½®åºå
¥åº/è°æ¨/çç¹æ¯å¦èµ° BPM"}, |
| | | {"role": "è´¨æ£å", "modules": ["MES-QC"], "operations": ["IQC/IPQC/OQC/RQC æ£éª", "NCR è¯å®¡å¤ç½®"], "data": ["mes_qc_*"], "scope": "inspectorUserId å½å±"}, |
| | | {"role": "设å¤å/维修工", "modules": ["MES-DV"], "operations": ["ç¹æ£ä¿å
»", "维修工å", "å·¥è£
é¢ç¨"], "data": ["mes_dv_*", "mes_tm_*"], "scope": "chargeUserId å½å±"}, |
| | | {"role": "客æ/å®åå·¥ç¨å¸", "modules": ["å®å"], "operations": ["å·¥ååçæ´¾å·¥", "客æ·è¯æ±/å¤çç»æéä»¶", "ç»´ä¿®", "é货转ä»å¨åèµ·"], "data": ["after_sale_*"], "scope": "è¡çº§æ°æ®æéåè§å¾ï¼æè´è´£/æåä¸/ä¸å±è´è´£/å
¨é¨(aftersales:view-all)"}, |
| | | {"role": "è´¢å¡", "modules": ["ERP", "CRM", "FIN"], "operations": ["æ¶æ¬¾å", "仿¬¾å", "å¼ç¥¨å®¡æ ¸", "ç»ç®è´¦æ·", "ä¼è®¡ç§ç®ç»´æ¤", "è®°è´¦åè¯å½å
¥ä¸è¿è´¦/ä½åº", "æ»è´¦ä¸æç»è´¦æ¥è¯¢", "åºå®èµäº§ææ§è®¡æ", "æ å½¢èµäº§æé计æ", "ä¼è®¡æ ¸ç®çæ¿"], "data": ["erp_finance_*", "crm_invoice", "crm_receivable", "fin_account_subject", "fin_voucher", "fin_voucher_entry", "fin_fixed_asset", "fin_intangible_asset"], "scope": "financeUserId å½å±ï¼è´¢å¡æ ¸ç®æ¨¡åæ finance:* æ¥å£æé + system_menu ææï¼ææ æ°æ®æéåæ®µ"}, |
| | | {"role": "HR", "modules": ["HRM"], "operations": ["å工档æ¡å
¥è½¬è°ç¦»", "èå¤è§åæç", "èªé
¬æ ¸ç®åæ¾", "离è交æ¥"], "data": ["hrm_*"], "scope": "é¨é¨èå´ dataScope"}, |
| | | {"role": "管çå±", "modules": ["BI"], "operations": ["æ¥çéè´éå®/ä»åº/ç产设å¤/è´¨é/人åäºå¤§ä¸»é¢å¤§å±"], "data": ["bi_dashboard"], "scope": "åªè¯»"} |
| | | ] |
| | | "note": "å®é
system_role ä»
4 个ææè§è²ï¼è¶
级管çå/æ®éè§è²/CRM管çå/ç§æ·ç®¡çåï¼+1 æµè¯è§è²ï¼ä¸å¡å工主è¦éè¿ãèåæé + æ°æ®æéï¼è´è´£äººå¶ï¼ãå®ç°ï¼èéç»åè§è²ã以ä¸ä¸å¡è§è²ç±å模ååè½ä¸æ°æ®æéæ¨¡åæ¨å¯¼ã", |
| | | "systemRoles": [ |
| | | { |
| | | "name": "è¶
级管çå", |
| | | "code": "super_admin", |
| | | "desc": "代ç ç´è¿å
¨é¨èå" |
| | | }, |
| | | { |
| | | "name": "æ®éè§è²", |
| | | "code": "common", |
| | | "desc": "ä¾èµ system_role_menu é
æ" |
| | | }, |
| | | { |
| | | "name": "CRM 管çå", |
| | | "code": "crm_admin", |
| | | "desc": "CRM æ¥çå
¨é¨æ°æ®" |
| | | }, |
| | | { |
| | | "name": "ç§æ·ç®¡çå", |
| | | "code": "tenant_admin", |
| | | "desc": "å¤ç§æ·å·²å
³éï¼éç" |
| | | } |
| | | ], |
| | | "businessRoles": [ |
| | | { |
| | | "role": "éå®å
å¤/éå®", |
| | | "modules": [ |
| | | "CRM", |
| | | "ERP" |
| | | ], |
| | | "operations": [ |
| | | "线索客æ·åæºç»´æ¤", |
| | | "æ¥ä»·ä¸åå", |
| | | "éå®è®¢å", |
| | | "è·è¿è®°å½", |
| | | "ææ ä¿è¯éç»è®°ä¸é款è·è¸ª" |
| | | ], |
| | | "data": [ |
| | | "crm_*", |
| | | "erp_sale_order" |
| | | ], |
| | | "scope": "è´è´£äºº(owner)+æ°æ®æéä¸çº§ï¼åªè¯»/读å/è´è´£äººï¼å
¬æµ·æ± å¯é¢åï¼äº¤æ¥äººåºå¯éè¿ expandUserIds çå°ç¦»èäººæ°æ®(æ¥å£å·²å¤ãå¾
æ¥å
¥)" |
| | | }, |
| | | { |
| | | "role": "éå®ç»ç", |
| | | "modules": [ |
| | | "CRM" |
| | | ], |
| | | "operations": [ |
| | | "åæº/åå审æ¹åä¸", |
| | | "éå®ç®æ å¶å®", |
| | | "ä¸ç»©æåæ¼æåæ" |
| | | ], |
| | | "data": [ |
| | | "å¢éæ°æ®(ä¸å±ç¨æ·)" |
| | | ], |
| | | "scope": "AdminUserApi ä¸çº§ç¨æ·æ©å±" |
| | | }, |
| | | { |
| | | "role": "éè´å", |
| | | "modules": [ |
| | | "ERP", |
| | | "SRM" |
| | | ], |
| | | "operations": [ |
| | | "éè´ç³è¯·/订å", |
| | | "确认æ¶è´§", |
| | | "æ¥ç¥¨ä¸ä»æ¬¾åèµ·" |
| | | ], |
| | | "data": [ |
| | | "erp_purchase_*", |
| | | "srm_*" |
| | | ], |
| | | "scope": "requestUserId/supplierOwner å½å±" |
| | | }, |
| | | { |
| | | "role": "éè´å/ä¾åºå管çå", |
| | | "modules": [ |
| | | "SRM" |
| | | ], |
| | | "operations": [ |
| | | "ä¾åºåæ¡£æ¡ç»´æ¤", |
| | | "询价æ¯ä»·ä¸ç¡®è®¤è½¬è®¢å" |
| | | ], |
| | | "data": [ |
| | | "srm_supplier*", |
| | | "srm_inquiry*" |
| | | ], |
| | | "scope": "éè´ç®¡çèåæéï¼è¯¢ä»·ç¡®è®¤çæçéè´è®¢åè稿走 ERP BPM" |
| | | }, |
| | | { |
| | | "role": "计åå", |
| | | "modules": [ |
| | | "MES" |
| | | ], |
| | | "operations": [ |
| | | "MPS ä¸å·¥å", |
| | | "å·¥èºè·¯çº¿ç»´æ¤", |
| | | "AI 颿µåè" |
| | | ], |
| | | "data": [ |
| | | "mes_pro_*" |
| | | ], |
| | | "scope": "车é´/é¨é¨æ°æ®èå´" |
| | | }, |
| | | { |
| | | "role": "æä½å·¥/çç»é¿", |
| | | "modules": [ |
| | | "MES" |
| | | ], |
| | | "operations": [ |
| | | "任塿¥æ¶", |
| | | "æ¥å·¥æäº¤(åå·¥åºé¡ºåºçº¦æ)", |
| | | "å®ç¯" |
| | | ], |
| | | "data": [ |
| | | "mes_pro_feedback", |
| | | "mes_pro_task" |
| | | ], |
| | | "scope": "ä»»å¡ææ´¾äººå¯è§" |
| | | }, |
| | | { |
| | | "role": "ä»ç®¡å", |
| | | "modules": [ |
| | | "MES-WM" |
| | | ], |
| | | "operations": [ |
| | | "15 ç±»åºå
¥åºåæ®æ§è¡", |
| | | "è°æ¨", |
| | | "çç¹", |
| | | "æ¡ç è£
ç®±" |
| | | ], |
| | | "data": [ |
| | | "mes_wm_*" |
| | | ], |
| | | "scope": "ä»åºç»´åº¦ï¼WMS 坿ä»åºé
ç½®åºå
¥åº/è°æ¨/çç¹æ¯å¦èµ° BPM" |
| | | }, |
| | | { |
| | | "role": "è´¨æ£å", |
| | | "modules": [ |
| | | "MES-QC" |
| | | ], |
| | | "operations": [ |
| | | "IQC/IPQC/OQC/RQC æ£éª", |
| | | "NCR è¯å®¡å¤ç½®" |
| | | ], |
| | | "data": [ |
| | | "mes_qc_*" |
| | | ], |
| | | "scope": "inspectorUserId å½å±" |
| | | }, |
| | | { |
| | | "role": "设å¤å/维修工", |
| | | "modules": [ |
| | | "MES-DV" |
| | | ], |
| | | "operations": [ |
| | | "ç¹æ£ä¿å
»", |
| | | "维修工å", |
| | | "å·¥è£
é¢ç¨" |
| | | ], |
| | | "data": [ |
| | | "mes_dv_*", |
| | | "mes_tm_*" |
| | | ], |
| | | "scope": "chargeUserId å½å±" |
| | | }, |
| | | { |
| | | "role": "客æ/å®åå·¥ç¨å¸", |
| | | "modules": [ |
| | | "å®å" |
| | | ], |
| | | "operations": [ |
| | | "å·¥ååçæ´¾å·¥", |
| | | "客æ·è¯æ±/å¤çç»æéä»¶", |
| | | "ç»´ä¿®", |
| | | "é货转ä»å¨åèµ·" |
| | | ], |
| | | "data": [ |
| | | "after_sale_*" |
| | | ], |
| | | "scope": "è¡çº§æ°æ®æéåè§å¾ï¼æè´è´£/æåä¸/ä¸å±è´è´£/å
¨é¨(aftersales:view-all)" |
| | | }, |
| | | { |
| | | "role": "è´¢å¡", |
| | | "modules": [ |
| | | "ERP", |
| | | "CRM", |
| | | "FIN" |
| | | ], |
| | | "operations": [ |
| | | "æ¶æ¬¾å", |
| | | "仿¬¾å", |
| | | "å¼ç¥¨å®¡æ ¸", |
| | | "ç»ç®è´¦æ·", |
| | | "ä¼è®¡ç§ç®ç»´æ¤", |
| | | "è®°è´¦åè¯å½å
¥ä¸è¿è´¦/ä½åº", |
| | | "æ»è´¦ä¸æç»è´¦æ¥è¯¢", |
| | | "åºå®èµäº§ææ§è®¡æ", |
| | | "æ å½¢èµäº§æé计æ", |
| | | "ä¼è®¡æ ¸ç®çæ¿" |
| | | ], |
| | | "data": [ |
| | | "erp_finance_*", |
| | | "crm_invoice", |
| | | "crm_receivable", |
| | | "fin_account_subject", |
| | | "fin_voucher", |
| | | "fin_voucher_entry", |
| | | "fin_fixed_asset", |
| | | "fin_intangible_asset" |
| | | ], |
| | | "scope": "financeUserId å½å±ï¼è´¢å¡æ ¸ç®æ¨¡åæ finance:* æ¥å£æé + system_menu ææï¼ææ æ°æ®æéåæ®µ" |
| | | }, |
| | | { |
| | | "role": "HR", |
| | | "modules": [ |
| | | "HRM" |
| | | ], |
| | | "operations": [ |
| | | "å工档æ¡å
¥è½¬è°ç¦»", |
| | | "èå¤è§åæç", |
| | | "èªé
¬æ ¸ç®åæ¾", |
| | | "离è交æ¥" |
| | | ], |
| | | "data": [ |
| | | "hrm_*" |
| | | ], |
| | | "scope": "é¨é¨èå´ dataScope" |
| | | }, |
| | | { |
| | | "role": "管çå±", |
| | | "modules": [ |
| | | "BI" |
| | | ], |
| | | "operations": [ |
| | | "æ¥çéè´éå®/ä»åº/ç产设å¤/è´¨é/人åäºå¤§ä¸»é¢å¤§å±" |
| | | ], |
| | | "data": [ |
| | | "bi_dashboard" |
| | | ], |
| | | "scope": "åªè¯»" |
| | | } |
| | | ] |
| | | }</script> |
| | | <pre style="display:none" class="mmd-src" data-mmd="01-business-mindmap"> |
| | | mindmap |
| | |
| | | flowchart TD |
| | | A[线索 crm_clue] -->|转å·ä»
䏿¬¡| B[å®¢æ· crm_customer] |
| | | B --> C[è系人 crm_contact] |
| | | B --> BADDR[å®¢æ·æ¶è´§å°å crm_customer_addressÂ·ä¸æ·å¤å°å·é»è®¤å°å] |
| | | B -.->|æææ æ¹ç»è®°ä¿è¯é| BB[ææ ä¿è¯é crm_bid_bondÂ·ä¸æ ç»æ0å¾
弿 1已䏿 2æªä¸æ /éåç¶æ] |
| | | BB -.->|æªä¸æ ·è·è¸ªéåéé¢ä¸æ¥æ| BB |
| | | BB -->|䏿 åå
³è该客æ·å·²å®¡æ ¸éå®è®¢å| H |
| | |
| | | D -->|ç´æ¥å»ºåå| G |
| | | Q[åå Excel 导å
¥Â·ä¸ååå¤äº§åæç»è¡] -->|æ¹é建è稿åå| G |
| | | G -->|BPM审æ¹éè¿20| H[çæ ERP éå®è®¢å XSDD] |
| | | H -->|æäº¤BPM| I[éå®è®¢å审æ¹Â·å®¡æ¹ä¸15âå·²å®¡æ ¸20] |
| | | H -->|æå·¥/导å
¥è®¢å·æäº¤BPM| I[éå®è®¢å·åå转æ¥è®¢åæäº¤å
BPMç´é20·æäº¤åä¸å¯ä¿®æ¹] |
| | | H -->|åå转æ¥è®¢å·æäº¤å
审æ¹Â·ç´æ¥çæ| I |
| | | H -.->|éå®å°è´¦å±ç¤º| H1[éå®ç±»å 1å
é2å¤é3æ ·å4å
¶ä»Â·ååå·å¯æå·¥å¡«Â·äº§åç¼å·Â·ç产æ°é] |
| | | I -->|æç»éç产·èªå¨å建| J[MES 主ç产计å MPS] |
| | | I --> K[åè´§éç¥å] |
| | | I --> K[åè´§éç¥åÂ·ç©æµå
¬å¸/å¿«éè´¹/å¼ç¥¨ç¶æÂ·å®¡æ¹æµé»è®¤ç©æµå®¡æ¹] |
| | | K --> KWORD[åè´§å Word·æå
¬å¸ä¿¡æ¯å®æ¶çæçµåç« Â·å¯æå¡«ç¾å] |
| | | K --> KLEDGER[åè´§å°è´¦Â·æäº§åå¹³éºÂ·ä¸è¡ä¸ä¸ªäº§å] |
| | | K -->|å®¡æ ¸éè¿| L0[éå®åºåºå·æäº¤] |
| | | L0 --> LWORD[æååºåºå Word·带çµåç« ] |
| | | L0 -->|鿣éªè¡ oqcCheckFlag=1| L1[å¾
æ£æµ1·åºåºè¡è´¨éç¶æ PENDING] |
| | | L0 -->|æ 鿣éª| L2[å¾
æ£è´§2] |
| | | L1 -->|已宿 OQC æç©æ+çå·+æ°éä¸è´éå¾
æ£è¡å
³è| L3[åºåºè¡è´¨éç¶æ PASS/FAIL] |
| | |
| | | L -->|åååºåºæ°éä¸ç¶æ| M[éå®è®¢å é¨ååºåº2/å
¨é¨åºåº3] |
| | | G --> N[忬¾è®¡åÂ·æææ°åæ] |
| | | G -->|æäº¤BPM| O[å¼ç¥¨ KP·审æ¹ä¸10âéè¿20·累计ä¸è¶
ååé¢] |
| | | O -->|忬¾åå¿
é¡»å
å¼ç¥¨| P[忬¾ HK·å建å³å®¡æ¹ä¸10âæå¨å®¡æ ¸20] |
| | | P -->|æ ¡éªååå©ä½é¢ä¸å¼ç¥¨å©ä½é¢| N |
| | | O -->|忬¾åå¿
é¡»å
å¼ç¥¨| P[忬¾ HKÂ·æªæäº¤0 â æäº¤BPMåå审æ¹10 â éè¿20/驳å30/åæ¶40] |
| | | P -.->|æäº¤æ¶éæ°æ ¡éªååå©ä½é¢ä¸å¼ç¥¨å©ä½é¢Â·å®¡æ¹æè§ç±BPMæµè½¬è®°å½æ¿è½½Â·é¡µé¢å
æå·¥å®¡æ ¸å
³é| P |
| | | P -->|审æ¹éè¿æåå忬¾è®¡å已忬¾éé¢Â·å®¡æ¹èç¹ãè´¢å¡ç»ç审æ¹ãæç»çè§è²æç¾| N |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="03-purchase-flow"> |
| | | flowchart TD |
| | |
| | | S3 -->|æäº¤| C3 |
| | | C1[éè´ç³è¯· CGSQ·è稿0â审æ¹ä¸10] -->|æäº¤BPM| C2{审æ¹} |
| | | C2 -->|驳å30âå¯éç½®åè稿| C1 |
| | | C2 -->|éè¿20䏿ä¾åºå·èªå¨çæ| C3[éè´è®¢å CGDD·审æ¹ä¸15âå·²å®¡æ ¸20] |
| | | C2 -->|éè¿20䏿ä¾åºå·èªå¨çæ| C3[éè´å°è´¦ CGDD·éè´ç±»å/ååå·/项ç®/仿¬¾æ¥æ/仿¬¾æ¹å¼Â·å®¡æ¹ä¸15âå·²å®¡æ ¸20] |
| | | C2 -->|éè¿20æ ä¾åºå| C4[æå¨æå®ä¾åºåçæè®¢å] |
| | | C4 --> C3 |
| | | C3 -->|确认æ¶è´§| C5[å°è´§éç¥å·è稿0âå¾
è´¨æ£2âå¾
å
¥åº3â宿4] |
| | | C5 -->|ç©æéæ£éªÂ·èªå¨å建| C6[IQC æ¥ææ£éª] |
| | | C6 -->|åæ ¼1æç¹é2 å¯å
¥åº| C7[éè´å
¥åºå·è稿0âå¾
䏿¶2âå¾
æ§è¡3â宿4] |
| | | C6 -->|ä¸åæ ¼éè´§3| C8[ä¾åºåé货·å¾
æ£è´§âå¾
æ§è¡âå®æÂ·åºåæ£å] |
| | | C6 -->|ä¸åæ ¼éè´§3| C8[ä¾åºåé货·è稿â审æ¹ä¸(BPM éè´âè´¨éâä»åº)âå¾
æ£è´§âå¾
æ§è¡âå®æÂ·åºåæ£åï¼é款âè´æ°å²çº¢ä»æ¬¾åï¼æ¢è´§âå°è´§éç¥+IQC éæ°å
¥åº] |
| | | C6 -->|ä¸åæ ¼æ¥åº4| C9[NCR ä¸åæ ¼åå¤ç½®] |
| | | C7 -->|åå inCount ä¸ inStatus æªå
¥åº0é¨å1å
¨é¨2| C3 |
| | | C7 -->|ååç³è¯·æç» inCount| C1 |
| | |
| | | <pre style="display:none" class="mmd-src" data-mmd="04-production-flow"> |
| | | flowchart TD |
| | | P0[éå®è®¢åæç» needProduction=1] -->|审æ¹éè¿èªå¨å建| P1[MPS 主ç产计å·è稿0âå·²ä¸å1] |
| | | P1 -->|ä¸åæåå¹¶ä¸å| P2[ç产工å·è稿0â已确认1] |
| | | P1 -->|ä¸åæåå¹¶ä¸å·ä»
å建人æè¶
ç®¡å¯æä½| P2[ç产工å·è稿0â已确认1] |
| | | P2 -->|æå·¥èºè·¯çº¿å·¥åºèªå¨çæ| P3[ç产任å¡ÃN·é¢å¤0âç产ä¸1âé¨å宿2â宿4Â·å¯æå9] |
| | | P3 --> P4[çäº§é¢æ æ 线边èæåºå¤æ] |
| | | P4 --> P5[æ¥å·¥æäº¤Â·è稿0] |
| | | P5 -->|æ ¡éª:ä¸ä¸éå·¥åºæªæ¥æ»¡åæ¦æª| P5 |
| | | P5 -->|ä¿åæ¶æå·¥åºæ åå·¥æ¶é
ç½®+ç产é¿åº¦+è¾
å©é¡¹æ¬¡æ°| P5S[æ åå·¥æ¶å¿«ç
§Â·ä¸»å·¥æ¶+è¾
å©å·¥æ¶Â·é
置缺失ä¸é»æè½¬æå·¥å¡«å·¥æ¶] |
| | | P5S -.->|å®é
å·¥æ¶ vs æ åå·¥æ¶Â·å·®å¼çè¶
éå¼é»è®¤20%æç¤º| P5 |
| | | P5S -.->|æäºº/å·¥åº/æºå°/å¨ææ±æ»| P5R[å·¥æ¶èæ ¸æ¥è¡¨Â·æ¥å·¥åæ°/ç产é¿åº¦/å®é
/æ å/å·®å¼ç] |
| | | P5 -->|å·¥åç»å®çå·¥èºè·¯çº¿+主计价设å¤+è¾
å©å·¥æ¶| P5W[å·¥èµå¿«ç
§Â·åä»·è§å(å·¥åº+路线+设å¤+çææ¥æ)ä¼å
·æªå½ä¸åéå·¥åºå·¥èµå®é¢Â·å·¥èµå段系æ°/å å/计价æ°é·è¾
å©å·¥æ¶è®¡èªÂ·è¯ç®æ¥å£ preview-wage] |
| | | P5 -->|æäº¤åä¸åèªå¨çæ IPQC·è¿ç¨æ£éªç±è´¨éé¨é¨å¨è´¨é管ç页æå·¥æ°å»ºå¹¶ç»å®å·¥å/å·¥åº/åæå/çå·| P5Q[è¿ç¨æ£éªå·æå·¥å建] |
| | | P5 -->|å¯ç¨BPMåæäº¤å®¡æ¹| P6{æ¥å·¥å®¡æ¹} |
| | | P6 -->|驳å| P5 |
| | | P6 -->|éè¿ä¸åå²å·¥åº| P7[æå·¥åBOMèªå¨çæç©ææ¶è·æ£çº¿è¾¹èæåºFIFOå
许è´åºå] |
| | | P6 -->|éè¿ä¸è´¨æ£å·¥åº| P8[æ¥å·¥è½¬å¾
æ£éªÂ·äº§åºè¡ PENDING] |
| | | P6 -->|éè¿ä¸éè´¨æ£å
³é®å·¥åº| P9[产å产åºç´æ¥å®å·¥å
¥åº] |
| | | P6 -->|éè¿Â·æå·¥åºè®¡è´¹ç±»åå¿«ç
§æ¥å·¥å·¥èµ| P6W[æ¥å·¥å·¥èµÂ·è®¡æ¶=å·¥æ¶Ãå·¥èµå®é¢ / 计件=æ¥å·¥æ°éÃå·¥èµå®é¢Â·è®°å°æ¥å·¥äººåä¸] |
| | | P6 -->|éè¿Â·å·¥ååå¨ç产BOM峿 BOM çæç©ææ¶è·ä¸åä¾èµåå²æè´¨æ£å¼å
³| P7[æå·¥åBOMèªå¨çæç©ææ¶è·æ£çº¿è¾¹èæåºFIFOå
许è´åºå] |
| | | P6 -->|éè¿Â·æå产åº| P8[æ¥å·¥è½¬å¾
æ£éªÂ·äº§åºè¡ PENDING] |
| | | P6 -->|éè¿Â·åæå产åºÂ·æ¥å·¥ç©æâ å·¥åæå| P8S[åæå产åºè¡ç´æ¥ PASS·æç产BOMç®æ åºä½çæå
¥åºæç»å¹¶ç«å³å®å·¥Â·ä¸çè´¨æ£ä¸å
¥å®¡æ¹] |
| | | P6 -->|éè¿Â·æå¿«ç
§éç®å·¥èµå¹¶åºç¨è´¨éè°æ´| P6W[æ¥å·¥å·¥èµÂ·è®¡ä»¶æåæ ¼æ°éÂ·åæ ¼çå½ä¸ç³»æ°æä¸åæ ¼æ£æ¬¾Â·è®°å°æ¥å·¥äººåä¸] |
| | | P6W -.->|æ ¸ç®å¨æå
å·²å®¡æ¹æ¥å·¥æ±æ»| HRM[èªé
¬æ ¸ç®Â·æ¥å·¥å·¥èµå¯äººå·¥è°æ´å计å
¥å®å] |
| | | HRM -.->|ç¹æ¥å·¥å·¥èµãæç»ã| HRMD[æ¥å·¥å·¥èµæç»Â·ææ¥å·¥åå±å¼ä¸»å·¥èµ+è¾
å©å·¥èµ+å·¥èµå段(å¼/åä»·/éé¢)+è´¨éè°æ´=æç»å·¥èµÂ·ä¸æ ¸ç®é颿¯å¯¹] |
| | | P8 -->|已宿 IPQC æç©æ+çå·+æ°éä¸è´éå¾
æ£äº§åºè¡å
³è| P8L[ååæ¥å·¥å®æÂ·æ¥å·¥ç¶æâ宿4] |
| | | P8 -.->|产åºè¡ PENDING æ¶ä¸å
许å®å·¥å
¥åºÂ·å¿
须宿 IPQC å¹¶åååæ ¼ç¶æ| P8 |
| | | P8L -->|åæ ¼æ°é>0| P10[åæ ¼è¡å
¥åºÂ·ä¸åæ ¼æ°éæåºä¸ºä¸åæ ¼è¡] |
| | | P8L -->|ä¸åæ ¼æ°é>0| P11[NCR ä¸åæ ¼å·çå¾
åç»å¤ç½®] |
| | | P8 -.->|æªå
³èç已宿 IPQC ä¸åå·é卿£éªå详æ
æå¨å
³è| P8 |
| | |
| | | <pre style="display:none" class="mmd-src" data-mmd="05-quality-flow"> |
| | | flowchart TD |
| | | T1[å°è´§éç¥å æ å¤åå
¥åºå] --> A1[IQC æ¥ææ£éªÂ·è稿0â宿4] |
| | | T2[æ¥å·¥è´¨æ£å·¥åºéè¿å产åºè¡Â·ç¬ç«å½å
¥ IPQC] --> A2[IPQC è¿ç¨æ£éªÂ·è稿0â宿4] |
| | | T2[æ¥å·¥å产åºè¡Â·ç±è´¨éé¨é¨æå·¥æ°å»º IPQC] --> A2[IPQC è¿ç¨æ£éªÂ·è稿0â宿4] |
| | | T2 -.->|æ°å»ºæ¶ç»å®ç产工å·工åºç±å·¥åå·¥èºè·¯çº¿å¸¦åºÂ·åæåç±è¯¥å·¥åºäº§åºç©æå¸¦åºÂ·çå·æå·¥å½å
¥| A2 |
| | | A2 -.->|æ°å»º/ç¼è¾Â·é工使工åºå¸¦åºè¯¥å·¥åºç»´æ¤çèªå®ä¹å·¥èµå段·æ°å¼/ææ¬/䏿/å¸å°æ§ä»¶æå段类åå³å®| QWF[å·¥èµå段填å·ç±è´¨æ£å¡«å·æ¥å·¥å®¡æ¹éç®å·¥èµä¼å
忤å¼Â·æªå¡«åéå·¥åºåºå®å¼] |
| | | A2 -.->|æ£éªä¿¡æ¯å¯æå·¥å¢å æ£éªè¡Â·æ¯è¡åªä¸ä¼ æ£éªé件·ä¸å填忣æµå¼| QFILL[æ£éªè¡Â·æ£éªé¡¹+éä»¶(æ¯æ¡æ£éªè¡ç¬ç«ç»å®)·ä¿ååææç»IDå
³è] |
| | | A2 -.->|å®æç¶ææ¯äº§åºå
¥åºåç½®æ¡ä»¶| QW[æå产åºè¡ PENDINGÂ·å®æ IPQC åååæ ¼åæå
许å®å·¥å
¥åº] |
| | | A2 -.->|åæ ¼çå䏿¥å·¥å·¥èµ| QW2[æå·¥åº+路线å¹é
è´¨éè§åÂ·åæ ¼çç³»æ°æä¸åæ ¼æ°éæ£æ¬¾] |
| | | T3[éå®åºåºåå¾
æ£æµè¡Â·ç¬ç«å½å
¥ OQC] --> A3[OQC åºè´§æ£éªÂ·è稿0â宿4] |
| | | T4[ç产éæå æ éå®éè´§å æ å®åéè´§] --> A4[RQC éè´§æ£éªÂ·è稿0â宿4] |
| | | T5[Excel æ¹é导å
¥Â·IQC IPQC OQC ä¸å表åä¸ä¸ªå
¥å£Â·æé®å¨æ°å¢ä¸å¯¼åºä¹é´] --> IMP{导å
¥é¸é¨Â·éè¡è§£æÂ·å¤±è´¥è¡äºä¸å½±å} |
| | |
| | | A2 -->|已宿䏿ªç»å®æ¥æºÂ·æç©æ+çå·+æ°éä¸è´| Q5[å
³èæ¥å·¥å¾
æ£è¡Â·å忥工宿ä¸äº§åºå
¥åº] |
| | | A3 -->|已宿䏿ªç»å®æ¥æºÂ·æç©æ+çå·+æ°éä¸è´| Q6[å
³èéå®åºåºå¾
æ£è¡Â·åååºåºè¡è´¨éç¶æÂ·å
¨é¨åæ ¼æ¨è¿å¾
æ£è´§] |
| | | A4 -->|宿| Q7[éè´§åæ¨è¿ä¸æ¶æå
¥åºÂ·å®ååè°ç»è®º] |
| | | N1[NCR å¾
è¯å®¡0] -->|è¯å®¡| N2[å·²è¯å®¡6] |
| | | N2 -->|å¤ç½®æ¹å¼:éè´§1æ¥åº2è¿å·¥3è®©æ¥æ¥æ¶4é级使ç¨5| N3[å·²å¤ç½®7] |
| | | N1[NCR å¾
è¯å®¡0] -->|æäº¤å®¡æ¹Â·å建 BPM å®ä¾ key=mes_ncr_approve| N1A[审æ¹ä¸2] |
| | | N1A -->|BPM 驳å/åæ¶Â·ä¿çæµç¨å®ä¾å¯æ¥æè§| N1 |
| | | N1A -->|BPM 审æ¹éè¿Â·å®¡æ¹èç¹ãè´¨éé¨é¨å®¡æ¹ãæè´¨éé¨é¨è§è²æç¾Â·æè§ç± BPM æµè½¬è®°å½æ¿è½½| N2[å·²è¯å®¡6·质éé¨å¾
å¤ç½®] |
| | | N2 -->|è´¨é鍿ç»å¤ç½®Â·è®©æ¥æ¾è¡4/è¿ä¿®6/è¿å·¥3/æ¥åº2| N3[å·²å¤ç½®7] |
| | | N3 -->|å
³é| N4[å·²å
³é8] |
| | | N1 -.->|æªå叿µç¨å®ä¹æå
¨å±å
å®¡æ¹æ¶Â·æäº¤åèªå¨ç½®ä¸ºå·²è¯å®¡| N2 |
| | | Q8[æ¯ææ°æ®:è´¨æ£æ¹æ¡Â·æ£éªææ ·缺é·åºÂ·ææ ç»æ] --- A1 |
| | | Q8H["æ£éªææ çå±çº§å¯å¨è´¨æ£ææ 页维æ¤Â·æ¡ç®ç±»å æå±åç» å
¬å¼ æåºå·Â·åªå
许两å±Â·å åç»çº§èå å项"] --- Q8 |
| | | A1 -->|åºä»¶ generate-from-qc| GATE{åºä»¶å
éæ ¡éªÂ·æä¸å¡ä¼å
çº§åªæ¥ç¬¬ä¸å¤} |
| | |
| | | RPTVSAVE -.->|设计å¨ç»å¸ä¸è·ç»å®Â·ç»åæ ¼ç hidden å ä½ç¬¦ä¼è¢«æµè§å¨å½æç hidden 让æ´è¡å·¦ç§»ãæ«åæ¤æç«æç»æ¡| CVNOTE |
| | | RPTVSAVE -.->|èªå®åä¸å¸¦å®½åº¦å£°æÂ·å宽åªè½ç±æå°å
å®¹å®½åº¦åæ¨Â·è弿¯å ä½ç¬¦è¿ç±»ä¸å«ç©ºæ ¼çé¿ä¸²Â·æ´è¡¨ä¼è¢«æåºçº¸å¼ ãæ«åæ¤æç«æ¡| CVWIDTH |
| | | CVWIDTH["æ
èªå®åçåå
æ ¼å¸¦ overflow-wrap:anywhere å
许é¿ä¸²æè¡Â·é»è®¤åææå·¥å®½åº¦å£°æä¸å Â·å®æµå äºåèææ£éªé¡¹ç®å项æ¤å° 30 ä½åç´ ãè¡é«ç¿»å å"] --- RPTVSAVE |
| | | |
| | | PT[è´¨éå·¡æ£ mes_qc_patrol·ç¬ç«è®°å½Â·ä¸çæåºåä¸å¡åæ®] -->|ç¼ç è§å QC_PATROL_CODE·XJ_+yyyyMMdd+3使µæ°´| PT2[å·¡æ£æ¥è¯¢/æ°å¢/ä¿®æ¹/å é¤Â·èåæè´¨é管ç 5500] |
| | | STAT[è´¨é管çãè´¨éç»è®¡ã·èå 1080080 æé mes:qc-statistics:query] -->|GET /mes/qc/statistics/summary·å¯éæ£æµæ¥æèå´| STATD["æ´ä½åæ ¼ç/ä¸åæ ¼çÂ·ææ£éªç±»å IQC/IPQC/OQC/RQC·æå·¥åº(IPQC process_id)·æç产工å(IPQC work_order_id)·ä»
ç»è®¡å·²å®æ(status=4)æ£éªå"] |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="06-warehouse-flow"> |
| | | flowchart LR |
| | |
| | | W -->|å ç¨é¢ç reservedQuantity| RES[åºåå ç¨ éå®åºåºÂ·é¢æÂ·å¤å·æé¡¹Â·è°æ¨] |
| | | MV[è½¬ç§»è°æ¨Â·å
鍿å¤é¨] -->|æå¯¹äºå¡ MOVE_OUT+MOVE_IN å¨é| W |
| | | ST[çç¹ æ¹æ¡âä»»å¡âæç»è¡âç»æ] -->|çç ADJUST_IN·çäº ADJUST_OUT·å¯å»ç»åºå| W |
| | | W --> TX[äºå¡æµæ°´ mes_wm_transaction åªè¯»å
¨éçç] |
| | | W --> TX[äºå¡æµæ°´ mes_wm_transaction åªè¯»å
¨éçç·work_order_id åä½ç产订åå·ä¾åºåºå°è´¦å±ç¤º] |
| | | BT[æ¹æ¬¡ mes_wm_batch·SNç ·æ¡ç ·è£
ç®±åµå¥] --- W |
| | | WIP[[线边èæåº WIP_VIRTUAL_WAREHOUSE·æåå§å]] --- O3 |
| | | FR[å级å»ç»:ä»åºÂ·åºåºÂ·åºä½Â·åºåè®°å½] --- W |
| | | FC[å»ç»æ¥æº mes_wm_material_stock_freeze_claim·MANUAL/STOCK_TAKING/TRANSFERÂ·å¤æ¥æºç¬ç«ææÂ·è§£å»åªéæ¾æ¬æ¥æº] --- FR |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="07-after-sales-flow"> |
| | | flowchart TD |
| | |
| | | K1 -->|åå»ºæ¶æå®å¤ç人ï¼ç´æ¥è¿å
¥| K2[å¤çä¸10·é®é¢å¤å®:ä¸è¬1ç»´ä¿®2éè´§3·严é度0-3] |
| | | K2 -->|维修类| R1[维修记å½Â·å¾
å¤ç0âç»´ä¿®ä¸10â已宿20âå·²å
³é30·ç°åºè¿åè¿ç¨] |
| | | R1 -->|completeRepair| K4[å·²å®ç»50] |
| | | K1 -.->|å建/æ´æ°/å¤å®/å®ç»/彿¡£/åæ¶/å访åçç| FL[å·¥åæµè½¬è®°å½ after_sale_ticket_flow] |
| | | K1 -.->|å建/æ´æ°/å¤å®/å®ç»/彿¡£/åæ¶/å访/ä»å¨éè´§åçç| FL[å·¥åæµè½¬è®°å½ after_sale_ticket_flow] |
| | | K2 -->|éè´§ç±»âä»å¨ç©æµåèµ·éå®éè´§| T1[éè´§ç³è¯·Â·è稿0·å®å页é¢å·²ä¸çº¿ï¼åå°ä¿ç] |
| | | T1 -->|approveReturn å®¡æ ¸éè¿| T2[å·²å®¡æ ¸20·èªå¨å建MESéå®éè´§å] |
| | | T2 --> T3[MES éå®é货·è稿âå¾
æ£éªRQCâå¾
䏿¶âå¾
å
¥åºâ宿] |
| | |
| | | T5 -->|鿬¾å®æåè° onRefundCompleted è®°å½å®é
鿬¾é¢| T6[已鿬¾60] |
| | | T6 --> T7[å·²å
³é70] |
| | | T2 -.->|ç¶ææµè½¬ä¸| T8[å®¡æ ¸ä¸10·é¢çæªå¯ç¨] |
| | | K2 -->|éè´§é¾è·¯èå¨å·¥å| K3[å¾
å
¥åº30âå¾
鿬¾40] |
| | | K2 -->|éè´§é¾è·¯èå¨å·¥å| K3[å¾
éè´§30âå¾
鿬¾40] |
| | | W1[ä»å¨ç©æµÂ·å建éå®éè´§å·å
³èéå®è®¢å] -.->|onWarehouseReturnCreated åå
¥ä»å¨éè´§è®°å½ RETURN| FL |
| | | W1 -->|å¹é
该订åæè¿ä¸å¼ æªå
³é/æªåæ¶å·¥åï¼è稿æå¤çä¸åæ¨è¿| K3 |
| | | K3 --> K4 |
| | | K2 -->|resolveTicket å¡«åå¤çç»æ+éä»¶| K4 |
| | | K4 -->|closeTicket| K5[å·²å
³é60] |
| | |
| | | KB4 -.-> KB5[ææªæ¥å
¥ä¸å¡é®çæµç¨Â·å¾
确认] |
| | | MODE[模åå±:éä¹åé®ä¸ºä¸»Â·é¢çDeepSeek/OpenAI/Ollamaæªå®ç°] --- O2 |
| | | NOTE[å
¨é¡¹ç®æ Function Calling·AIåªè¾åºç»æåJSONç±ä¸å¡ä¾§è§£æ] --- J2 |
| | | MODEL[模å管ç:æ¯ç±»åæ¯è½ååªå
许ä¸ä¸ªå¯ç¨Â·å¯ç¨å³èªå¨å
³éåç»å
¶ä»æ¨¡å·å表æç±»ååç»å±ç¤º] --> MODEL2[对è¯å text è½åå¯ç¨æ¨¡å·å¾çè¯å«å vision è½åå¯ç¨æ¨¡å·åéåºåå¯ç¨æ¨¡å] |
| | | MODEL2 -.-> O2 |
| | | MODEL2 -.-> W3 |
| | | MODEL2 -.-> KB3 |
| | | MODEL3[æªå¯ç¨å¯¹åºè½åæ¨¡åæ¶ç´æ¥æ¥éå¹¶æç¤ºå»æ¨¡å管çå¯ç¨Â·ä¸åéé»åé] --- MODEL2 |
| | | A1[ç©æç®¡çåä¸ä¼ ç©æCSV/XLSXâå建补å½ä¼è¯å¹¶ç»å®éä»¶] --> A2[Javaæ¡¥æ¥ææ:ç¨æ·token+æå¡ä»¤ç+mdm:item:import] |
| | | A2 --> A3[Pythonè§£æåé·è¯å«å
¬å¼/æ°åç¼ç /缺失åç±»æåä½] |
| | | A3 --> A4[Javaåªè¯»é¢æ£Â·åç±»åä½ç¼ç å卿§âCREATE/SKIP/BLOCKED+ç¡®å®æ§æè¦] |
| | | A4 --> A5[äººå·¥å®¡æ ¸ä¿®è®¢Â·çæ¬èªå¢Â·éæ°é¢æ£] |
| | | A5 --> A6[å¹çæäº¤Â·commandId+å¹çé®Â·éè¡ç¬ç«äºå¡Â·æäº¤å鿥ç¼ç ] |
| | | A6 --> A7[éè¡åæ§Â·SUCCESS/SKIPPED/FAILED+ç®æ ç©æID] |
| | | A6 --> A8[è¶
æ¶æä¸æâæ¥è¯¢å½ä»¤åæ§å¯¹è´¦Â·ä¸ç²ç®éè¯] |
| | | A9[åªæ°å»ºä¸æ´æ°Â·syncMes=false·ä¸è§¦åMES忥] --- A6 |
| | | AIENV[AI æ»å¼å
³ VITE_APP_AI_ENABLE=false] --> AHIDE[éè /ai 模åè·¯ç±ä¸å
¨é¨ä¸å¡ AI å
¥å£ï¼å票/æ¥ä»·è¯å«å½å
¥Â·åç±»é¢æµÂ·è´¨æ£å¤å®Â·è´¨æ£å©æÂ·æºè½ä½å¯¼å
¥] |
| | | AHIDE -.-> O6 |
| | | AHIDE -.-> Q4 |
| | | AHIDE -.-> J5 |
| | | AHIDE -.-> W11 |
| | | AHIDE -.-> A1 |
| | | AHIDE -.-> R2 |
| | | </pre> |
| | | <pre style="display:none" class="mmd-src" data-mmd="12-finance-flow"> |
| | | flowchart TD |
| | |
| | | P[ERP å·²å®¡æ ¸åæ® status=20 æ¶æ¬¾å 仿¬¾å éå®è®¢å éè´è®¢å] -->|ErpFinanceStatisticsApi.getMonthlyStatistics ææ| K |
| | | subgraph éå®éè´è´¢å¡éç¯ |
| | | R1[ERP éå®è®¢å status=20] -->|éæ©è®¢å| R2[MES éå®åºåºå status=4 已宿] |
| | | R2 -->|å¼ç¥¨ç³è¯·Â·ç»å®è®¢å+åºåºå| R3[CRM å¼ç¥¨ crm_invoice entry_status=0 å¾
å½å
¥] |
| | | R2 -->|å¼ç¥¨ç³è¯·Â·è®¢å/åºåºåéå¡«(éååèªå¨å¸¦åºå¯ä¸è®¢å)| R3[CRM å¼ç¥¨ crm_invoice entry_status=0 å¾
å½å
¥] |
| | | R3 -->|审æ¹éè¿| R4[å½å
¥å票 invoiceNo/æ¥æ/éä»¶] |
| | | R4 -->|å¡«åæ¶æ¬¾èç¹| R5[忬¾è®¡å crm_receivable_plan stage=1..5] |
| | | R4 -->|entry_status=10 å·²å½å
¥| R6[CRM 忬¾ crm_receivable] |
| | |
| | | D -->|ç´æ¥å»ºåå| G |
| | | Q[åå Excel 导å
¥Â·ä¸ååå¤äº§åæç»è¡] -->|æ¹é建è稿åå| G |
| | | G -->|BPM审æ¹éè¿20| H[çæ ERP éå®è®¢å XSDD] |
| | | H -->|æäº¤BPM| I[éå®è®¢å审æ¹Â·å®¡æ¹ä¸15âå·²å®¡æ ¸20] |
| | | H -->|æå·¥/导å
¥è®¢å·æäº¤BPM| I[éå®è®¢å·åå转æ¥è®¢åæäº¤å
BPMç´é20·æäº¤åä¸å¯ä¿®æ¹] |
| | | H -->|åå转æ¥è®¢å·æäº¤å
审æ¹Â·ç´æ¥çæ| I |
| | | H -.->|éå®å°è´¦å±ç¤º| H1[éå®ç±»å 1å
é2å¤é3æ ·å4å
¶ä»Â·ååå·å¯æå·¥å¡«Â·äº§åç¼å·Â·ç产æ°é] |
| | | I -->|æç»éç产·èªå¨å建| J[MES 主ç产计å MPS] |
| | | I --> K[åè´§éç¥åÂ·ç©æµå
¬å¸/å¿«éè´¹/å¼ç¥¨ç¶æÂ·å®¡æ¹æµé»è®¤ç©æµå®¡æ¹] |
| | |
| | | C3 -->|确认æ¶è´§| C5[å°è´§éç¥å·è稿0âå¾
è´¨æ£2âå¾
å
¥åº3â宿4] |
| | | C5 -->|ç©æéæ£éªÂ·èªå¨å建| C6[IQC æ¥ææ£éª] |
| | | C6 -->|åæ ¼1æç¹é2 å¯å
¥åº| C7[éè´å
¥åºå·è稿0âå¾
䏿¶2âå¾
æ§è¡3â宿4] |
| | | C6 -->|ä¸åæ ¼éè´§3| C8[ä¾åºåé货·è稿â审æ¹ä¸(BPM éè´âè´¨éâä»åº)âå¾
æ£è´§âå¾
æ§è¡âå®æÂ·åºåæ£å<br/>鿬¾âè´æ°å²çº¢ä»æ¬¾åï¼æ¢è´§âå°è´§éç¥+IQC éæ°å
¥åº] |
| | | C6 -->|ä¸åæ ¼éè´§3| C8[ä¾åºåé货·è稿â审æ¹ä¸(BPM éè´âè´¨éâä»åº)âå¾
æ£è´§âå¾
æ§è¡âå®æÂ·åºåæ£åï¼é款âè´æ°å²çº¢ä»æ¬¾åï¼æ¢è´§âå°è´§éç¥+IQC éæ°å
¥åº] |
| | | C6 -->|ä¸åæ ¼æ¥åº4| C9[NCR ä¸åæ ¼åå¤ç½®] |
| | | C7 -->|åå inCount ä¸ inStatus æªå
¥åº0é¨å1å
¨é¨2| C3 |
| | | C7 -->|ååç³è¯·æç» inCount| C1 |
| | |
| | | N1[NCR å¾
è¯å®¡0] -->|æäº¤å®¡æ¹Â·å建 BPM å®ä¾ key=mes_ncr_approve| N1A[审æ¹ä¸2] |
| | | N1A -->|BPM 驳å/åæ¶Â·ä¿çæµç¨å®ä¾å¯æ¥æè§| N1 |
| | | N1A -->|BPM 审æ¹éè¿Â·å®¡æ¹èç¹ãè´¨éé¨é¨å®¡æ¹ãæè´¨éé¨é¨è§è²æç¾Â·æè§ç± BPM æµè½¬è®°å½æ¿è½½| N2[å·²è¯å®¡6·质éé¨å¾
å¤ç½®] |
| | | N2 -->|è´¨é鍿ç»å¤ç½®Â·è®©æ¥æ¾è¡4/è¿ä¿®6/è¿å·¥3/æ¥åº2| N3[å·²å¤ç½®7] |
| | | N2 -->|è´¨é鍿ç»å¤ç½®Â·è®©æ¥æ¾è¡4/æ¥åº2| N3A[çææé¡¹å
¥åºå·èªå¨æäº¤å¹¶å®æå
¥åºÂ·å¤ç½®å¼¹çªéä»åº/åºåº/åºä½Â·è®©æ¥æ¾è¡é»è®¤åææä»Â·æ¥åºé»è®¤ä¸åæ ¼åä»Â·æ¹æ¬¡ç®¡çç©æå¿
å¡«æ¹æ¬¡å·] |
| | | N2 -->|è´¨é鍿ç»å¤ç½®Â·è¿å·¥3/è¿ä¿®6| N3B[çæèªè¡ç产类åç产订å(è稿)·产å=NCRç©æÂ·æ°é=ä¸åæ ¼æ°é·BOM䏿¡ç èªå¨çæÂ·å·¥èºè·¯çº¿äººå·¥è¡¥å
åä¸è¾¾] |
| | | N3A --> N3[å·²å¤ç½®7] |
| | | N3B --> N3 |
| | | N3 -->|å
³é| N4[å·²å
³é8] |
| | | N1 -.->|æªå叿µç¨å®ä¹æå
¨å±å
å®¡æ¹æ¶Â·æäº¤åèªå¨ç½®ä¸ºå·²è¯å®¡| N2 |
| | | Q8[æ¯ææ°æ®:è´¨æ£æ¹æ¡Â·æ£éªææ ·缺é·åºÂ·ææ ç»æ] --- A1 |
| | |
| | | `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='å
¬å¸åçä¿¡æ¯é
置表'; |
| | | INSERT INTO `system_company_config` (`id`, `company_name`, `logo_url`, `logo_blob_id`, `login_title`, `login_description`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1,'å京åä»å ','http://36.213.150.237:9016/admin-api/system/storage-blob/preview/ee1ba93d-c8f0-43ef-9609-b98f3f6a15a2_tongrentang_logo_transparent.png?publicKey=1e542685e9fb4e7c8cc152d3c57b633f',NULL,'å京åä»å æºé ç³»ç»','å京åä»å æºé ç³»ç»','1','2026-10-11 17:20:08','1','2026-10-11 17:20:31',0x00); |
| | | INSERT INTO `system_company_config` (`id`, `company_name`, `logo_url`, `logo_blob_id`, `login_title`, `login_description`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1,'åéèç©çº¿ç¼',NULL,NULL,'åéèç©çº¿ç¼æºé ç³»ç»','åéèç©çº¿ç¼æºé ç³»ç»','1','2026-10-11 17:20:08','1','2026-11-09 11:14:14',0x00); |
| | | |
| | | |
| | | -- *********************************************************************** |
| | |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'åå·', |
| | | `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'åç§°', |
| | | `type` int DEFAULT NULL COMMENT 'æé¡¹ç±»å', |
| | | `source_doc_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'æ¥æºåæ®ç±»å', |
| | | `source_doc_id` bigint DEFAULT NULL COMMENT 'æ¥æºåæ® ID', |
| | | `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'æ¥æºåæ®ç¼å·', |
| | | `receipt_date` datetime DEFAULT NULL COMMENT 'å
¥åºæ¥æ', |
| | | `status` int DEFAULT NULL COMMENT 'ç¶æ', |
| | | `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '夿³¨', |
| | |
| | | `receipt_id` bigint DEFAULT NULL COMMENT 'å
¥åºå ID', |
| | | `item_id` bigint DEFAULT NULL COMMENT 'ç©æ ID', |
| | | `quantity` decimal(24,6) DEFAULT NULL COMMENT 'æ°é', |
| | | `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'æ¹æ¬¡å·', |
| | | `batch_id` bigint DEFAULT NULL COMMENT 'æ¹æ¬¡ ID', |
| | | `warehouse_id` bigint DEFAULT NULL COMMENT 'ä»åº ID', |
| | | `location_id` bigint DEFAULT NULL COMMENT 'åºåº ID', |
| | |
| | | `receipt_id` bigint DEFAULT NULL COMMENT 'å
¥åºå ID', |
| | | `item_id` bigint DEFAULT NULL COMMENT 'ç©æ ID', |
| | | `quantity` decimal(24,6) DEFAULT NULL COMMENT 'æ°é', |
| | | `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'æ¹æ¬¡å·', |
| | | `warehouse_id` bigint DEFAULT NULL COMMENT 'ä»åº ID', |
| | | `location_id` bigint DEFAULT NULL COMMENT 'åºåº ID', |
| | | `area_id` bigint DEFAULT NULL COMMENT 'åºä½ ID', |
| | | `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '夿³¨', |
| | | `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | |
| | | |
| | | -- 4. 客æ·å¾æ¥ / éå®å¯¹è´¦ / æ ¸é管çèå |
| | | INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, status, visible, keep_alive, always_show) |
| | | SELECT 1075660, '客æ·å¾æ¥', 'crm:receivable:query', 2, 6, 1075497, 'customer-statement', '', 'crm/customerStatement/index', 0, 1, 1, 1 |
| | | SELECT 1075660, '客æ·å¾æ¥', 'crm:receivable:query', 2, 6, 1075497, 'customer-statement', 'ep:user', 'crm/customerStatement/index', 0, 1, 1, 1 |
| | | FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 1075660); |
| | | INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, status, visible, keep_alive, always_show) |
| | | SELECT 1075661, 'éå®å¯¹è´¦', 'crm:receivable:query', 2, 8, 2645, 'sale-reconciliation', '', 'erp/finance/reconciliation/index', 0, 1, 1, 1 |
| | | SELECT 1075661, 'éå®å¯¹è´¦', 'crm:receivable:query', 2, 8, 2645, 'sale-reconciliation', 'ep:document-checked', 'erp/finance/reconciliation/index', 0, 1, 1, 1 |
| | | FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 1075661); |
| | | INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, status, visible, keep_alive, always_show) |
| | | SELECT 1075662, 'æ ¸é管ç', 'crm:receivable:query', 2, 9, 2645, 'write-off', '', 'erp/finance/writeoff/index', 0, 1, 1, 1 |
| | | SELECT 1075662, 'æ ¸é管ç', 'crm:receivable:query', 2, 9, 2645, 'write-off', 'ep:stamp', 'erp/finance/writeoff/index', 0, 1, 1, 1 |
| | | FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE id = 1075662); |
| | | |
| | | -- 5. è´¨éå·¡æ£ç¼ç è§åï¼XJ_ + yyyyMMdd + 3 使µæ°´ |
| | |
| | | `status` = 0, `deleted` = 0, `update_time` = NOW(); |
| | | |
| | | -- ============================================================ |
| | | -- é¶æ®µä¸è¿½å ï¼2026-11-09ï¼ï¼å®¢æ·æ´½è°è¿åº¦è¡¨ |
| | | -- 客æ·è¯¦æ
ãæ´½è°è¿åº¦ã页ç¾ç»´æ¤å¤æ¡è®°å½ï¼å®¢æ·å¯¼åºæ¶åæ¯ä¸ªå®¢æ·ææ°ä¸æ¡ï¼æ progress_time ååºï¼ |
| | | -- å¹çï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | CREATE TABLE IF NOT EXISTS `crm_customer_progress` |
| | | ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', |
| | | `customer_id` bigint NOT NULL COMMENT '客æ·ç¼å·', |
| | | `content` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'æ´½è°è¿åº¦å
容', |
| | | `progress_time` datetime NOT NULL COMMENT 'æ´½è°æ¶é´', |
| | | `creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', |
| | | `updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'æ´æ°è
', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æåæ´æ°æ¶é´', |
| | | `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'æ¯å¦å é¤', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | KEY `idx_customer_id` (`customer_id`) USING BTREE |
| | | ) ENGINE = InnoDB |
| | | DEFAULT CHARSET = utf8mb4 |
| | | COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC COMMENT ='CRM å®¢æ·æ´½è°è¿åº¦è¡¨'; |
| | | |
| | | -- ============================================================ |
| | | -- é¶æ®µäºè¿½å ï¼2026-11-09ï¼ï¼å®¢æ·ç®¡çä¸è系人管çåå¹¶ |
| | | -- è系人ä¸åä½ä¸ºéå®ç®¡çä¸çç¬ç«æ¨¡åï¼ç»ä¸å¨ã客æ·ç®¡ç â 客æ·è¯¦æ
â è系人ã页ç¾ç»´æ¤ |
| | | -- èå 2416ãè系人管çãè®°å½ä¿çï¼è·¯ç±ãæé®æéãè§è²ææä¸åï¼ï¼ä»
ä»å·¦ä¾§èåéè |
| | |
| | | UPDATE `system_menu` |
| | | SET `visible` = 0, `updater` = '1', `update_time` = NOW() |
| | | WHERE `id` = 2416 AND `deleted` = 0; |
| | | |
| | | -- ============================================================ |
| | | -- é¶æ®µä¸è¿½å ï¼2026-11-09ï¼ï¼å®¡æ¹è¯¦æ
å±ç¤ºä¸å¡åæ®è¯¦æ
|
| | | -- æºå¶ï¼BpmBusinessAttachServiceImpl#fillBusinessForm æãæµç¨å®ä¹ Key â æµç¨åç±»ãå¹é
|
| | | -- bpm_business_attachï¼status=0 å¼å¯ï¼ï¼å½ä¸åæå®¡æ¹è¯¦æ
表ååºæ¸²æä¸ºä¸å¡è¯¦æ
ç»ä»¶ï¼ |
| | | -- ç»ä»¶æ¥æ¶ä¸å¡ä¸»é® businessKeyï¼å³åæ® idï¼ï¼è·¯å¾ç±å端 registerComponent å¨æè§£æã |
| | | -- æ¬æ¬¡è¡¥å
ï¼ |
| | | -- 1. é宿¥ä»·å®¡æ¹ï¼æµç¨ Key QWEDDï¼åç±» sale_quotation_approveï¼â æ¥ä»·å详æ
|
| | | -- 2. 请å审æ¹ï¼hrm_leave / hrm_leave_approveï¼â 请åç³è¯·è¯¦æ
|
| | | -- 3. 离è审æ¹ï¼hrm_resignation / hrm_resignation_approveï¼â 离èç³è¯·è¯¦æ
|
| | | -- å¦è¡¥ hrm_audit_status åå
¸ï¼HRM 审æ¹è¯¦æ
ç¨ DictTag ç¿»è¯å®¡æ¹ç¶æï¼ç¼ºè¯¥åå
¸æ¶ç¶ææ¾ç¤ºç©ºç½ |
| | | -- å¹çï¼å¯é夿§è¡ |
| | | -- ============================================================ |
| | | INSERT INTO `bpm_business_attach` (`id`, `process_definition_key`, `business_type`, `component_path`, |
| | | `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES (11, 'sale_quotation_approve', 'crm_sale_quotation', |
| | | '/crm/saleQuotation/detail/approve/index.vue', 0, 'é宿¥ä»·å®¡æ¹å±ç¤ºæ¥ä»·è¯¦æ
', |
| | | '1', NOW(), '1', NOW(), 0x00), |
| | | (12, 'hrm_leave_approve', 'hrm_leave_application', |
| | | '/hrm/leave/detail/approve/index.vue', 0, '请å审æ¹å±ç¤ºè¯·åç³è¯·è¯¦æ
', |
| | | '1', NOW(), '1', NOW(), 0x00), |
| | | (13, 'hrm_resignation_approve', 'hrm_resignation_application', |
| | | '/hrm/resignation/detail/approve/index.vue', 0, '离è审æ¹å±ç¤ºç¦»èç³è¯·è¯¦æ
', |
| | | '1', NOW(), '1', NOW(), 0x00) |
| | | ON DUPLICATE KEY UPDATE `business_type` = VALUES(`business_type`), |
| | | `component_path` = VALUES(`component_path`), |
| | | `status` = 0, `remark` = VALUES(`remark`), |
| | | `deleted` = 0, `update_time` = NOW(); |
| | | |
| | | -- ä¸åæ ¼åå¤ç审æ¹ï¼mes_ncr_approveï¼â ä¸åæ ¼åå¤çå详æ
|
| | | -- ä¸åæ» idï¼é¿å
ä¸åç¯å¢æ¢æèªå¢ id å²çªï¼æå¯ä¸é® (process_definition_key, deleted) å¹ç |
| | | INSERT INTO `bpm_business_attach` (`process_definition_key`, `business_type`, `component_path`, |
| | | `status`, `remark`, `creator`, `updater`, `deleted`) |
| | | VALUES ('mes_ncr_approve', 'mes_qc_ncr', '/mes/qc/ncr/detail/approve/index.vue', 0, |
| | | 'ä¸åæ ¼åå¤ç审æ¹å±ç¤ºä¸åæ ¼åå¤çå详æ
', '1', '1', 0x00) |
| | | ON DUPLICATE KEY UPDATE `business_type` = VALUES(`business_type`), |
| | | `component_path` = VALUES(`component_path`), |
| | | `status` = 0, `remark` = VALUES(`remark`), |
| | | `deleted` = 0, `update_time` = NOW(); |
| | | |
| | | INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, |
| | | `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES (1065420, 'HRM 审æ¹ç¶æ', 'hrm_audit_status', 0, '人äºå®¡æ¹ç¶æ', |
| | | '1', NOW(), '1', NOW(), 0) |
| | | ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `status` = 0, |
| | | `remark` = VALUES(`remark`), `deleted` = 0, `update_time` = NOW(); |
| | | |
| | | -- åå¼å¯¹é½ HrmAuditStatusEnumï¼0=è稿ï¼10=审æ¹ä¸ï¼20=审æ¹éè¿ï¼30=审æ¹é©³åï¼40=å·²æ¤é |
| | | INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, |
| | | `color_type`, `css_class`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES (1065530, 1, 'è稿', '0', 'hrm_audit_status', 0, '', '', '1', NOW(), '1', NOW(), 0), |
| | | (1065531, 2, '审æ¹ä¸', '10', 'hrm_audit_status', 0, '', '', '1', NOW(), '1', NOW(), 0), |
| | | (1065532, 3, '审æ¹éè¿', '20', 'hrm_audit_status', 0, '', '', '1', NOW(), '1', NOW(), 0), |
| | | (1065533, 4, '审æ¹é©³å', '30', 'hrm_audit_status', 0, '', '', '1', NOW(), '1', NOW(), 0), |
| | | (1065534, 5, 'å·²æ¤é', '40', 'hrm_audit_status', 0, '', '', '1', NOW(), '1', NOW(), 0) |
| | | ON DUPLICATE KEY UPDATE `sort` = VALUES(`sort`), `label` = VALUES(`label`), `value` = VALUES(`value`), |
| | | `status` = 0, `deleted` = 0, `update_time` = NOW(); |
| | | |
| | | -- ============================================================ |
| | | -- é¶æ®µä¸è¿½å ï¼2026-11-09ï¼ï¼NCR å¤ç½®èå¨å
¥åº / ç产 |
| | | -- èæ¯ï¼ä¸åæ ¼åå¤çåå¤ç½®ä¸ºãè®©æ¥æ¾è¡ã/ãæ¥åºãæ¶èªå¨çææé¡¹å
¥åºåå¹¶å
¥åºåï¼ |
| | | -- å¤ç½®ä¸ºãè¿å·¥ã/ãè¿ä¿®ãæ¶èªå¨çæç产订åã |
| | | -- 1. mes_wm_misc_receipt è¡¥ type / source_doc_type / source_doc_id / source_doc_code |
| | | -- 2. mes_wm_misc_receipt_line è¡¥ batch_code / warehouse_id / location_id / area_id |
| | | -- 3. mes_wm_misc_receipt_detail è¡¥ batch_code |
| | | -- 4. mes_wm_misc_receipt_type åå
¸è¡¥ãè®©æ¥æ¾è¡å
¥åº(2)ããæ¥åºå
¥åº(3)ã |
| | | -- æ°å»ºåºï¼ä¸é¢å»ºè¡¨è¯å¥å·²å
å«ä¸è¿°åæ®µï¼æ¬è ALTER ä¼èªå¨è·³è¿ |
| | | -- å·²ä¸çº¿åºï¼ç´æ¥æ§è¡æ¬èå³å¯ï¼MySQL 8.4 䏿¯æ ADD COLUMN IF NOT EXISTSï¼ |
| | | -- ============================================================ |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt' AND column_name = 'type'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt` ADD COLUMN `type` int DEFAULT NULL COMMENT ''æé¡¹ç±»å'' AFTER `name`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt' AND column_name = 'source_doc_type'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt` ADD COLUMN `source_doc_type` varchar(64) DEFAULT NULL COMMENT ''æ¥æºåæ®ç±»å'' AFTER `type`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt' AND column_name = 'source_doc_id'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt` ADD COLUMN `source_doc_id` bigint DEFAULT NULL COMMENT ''æ¥æºåæ® ID'' AFTER `source_doc_type`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt' AND column_name = 'source_doc_code'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt` ADD COLUMN `source_doc_code` varchar(100) DEFAULT NULL COMMENT ''æ¥æºåæ®ç¼å·'' AFTER `source_doc_id`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt_line' AND column_name = 'batch_code'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt_line` ADD COLUMN `batch_code` varchar(100) DEFAULT NULL COMMENT ''æ¹æ¬¡å·'' AFTER `quantity`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt_line' AND column_name = 'warehouse_id'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt_line` ADD COLUMN `warehouse_id` bigint DEFAULT NULL COMMENT ''ä»åº ID'' AFTER `batch_code`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt_line' AND column_name = 'location_id'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt_line` ADD COLUMN `location_id` bigint DEFAULT NULL COMMENT ''åºåº ID'' AFTER `warehouse_id`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt_line' AND column_name = 'area_id'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt_line` ADD COLUMN `area_id` bigint DEFAULT NULL COMMENT ''åºä½ ID'' AFTER `location_id`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns |
| | | WHERE table_schema = DATABASE() AND table_name = 'mes_wm_misc_receipt_detail' AND column_name = 'batch_code'); |
| | | SET @sql = IF(@col_exists = 0, |
| | | 'ALTER TABLE `mes_wm_misc_receipt_detail` ADD COLUMN `batch_code` varchar(100) DEFAULT NULL COMMENT ''æ¹æ¬¡å·'' AFTER `quantity`', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | -- æé¡¹å
¥åºç±»ååå
¸ï¼è®©æ¥æ¾è¡å
¥åº / æ¥åºå
¥åº |
| | | INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, |
| | | `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) |
| | | VALUES (1065535, 2, 'è®©æ¥æ¾è¡å
¥åº', '2', 'mes_wm_misc_receipt_type', 0, 'primary', '', 'è®©æ¥æ¾è¡å
¥åº', '1', NOW(), '1', NOW(), 0), |
| | | (1065536, 3, 'æ¥åºå
¥åº', '3', 'mes_wm_misc_receipt_type', 0, 'danger', '', 'æ¥åºå
¥åº', '1', NOW(), '1', NOW(), 0) |
| | | ON DUPLICATE KEY UPDATE `sort` = VALUES(`sort`), `label` = VALUES(`label`), `value` = VALUES(`value`), |
| | | `status` = 0, `remark` = VALUES(`remark`), `deleted` = 0, `update_time` = NOW(); |
| | |
| | | } |
| | | // 2. æ¼æ¥æ°æ® |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| | | convertSet(pageResult.getList(), statusType -> Long.parseLong(statusType.getCreator()))); |
| | | convertSet(pageResult.getList(), statusType -> NumberUtils.parseLong(statusType.getCreator()))); |
| | | Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( |
| | | convertSetByFlatMap(pageResult.getList(), CrmBusinessStatusTypeDO::getDeptIds, Collection::stream)); |
| | | return success(BeanUtils.toBean(pageResult, CrmBusinessStatusRespVO.class, statusTypeVO -> { |
| | | statusTypeVO.setCreator(userMap.get(NumberUtils.parseLong(statusTypeVO.getCreator())).getNickname()); |
| | | // å建人å¯è½å·²å é¤ï¼å¦ç¦»èè´¦å·ï¼ï¼æ¾ç¤ºâå·²å é¤ç¨æ·âè䏿¯æ NPE å¯¼è´æ´é¡µæ¥è¯¢å¤±è´¥ |
| | | AdminUserRespDTO creator = userMap.get(NumberUtils.parseLong(statusTypeVO.getCreator())); |
| | | statusTypeVO.setCreator(creator != null ? creator.getNickname() : "å·²å é¤ç¨æ·"); |
| | | statusTypeVO.setDeptNames(convertList(statusTypeVO.getDeptIds(), |
| | | deptId -> deptMap.containsKey(deptId) ? deptMap.get(deptId).getName() : null)); |
| | | })); |
| | |
| | | item.setProductId(cp.getItemId()); |
| | | item.setProductPrice(cp.getContractPrice()); |
| | | item.setCount(cp.getCount()); |
| | | // ä¸é¡µé¢æ°å¢æç»çé»è®¤å¼ä¸è´ï¼é»è®¤éè¦ç产ï¼è½¬ååå¯å¨æäº¤åæå®é
æ
嵿¹ä¸ºâä¸éè¦ç产â |
| | | item.setNeedProduction(1); |
| | | return item; |
| | | }) |
| | | .toList(); |
| | |
| | | package cn.iocoder.yudao.module.crm.service.customer; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.progress.CrmCustomerProgressSaveReqVO; |
| | | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; |
| | | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerProgressDO; |
| | | import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerProgressMapper; |
| | | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| | | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; |
| | | import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; |
| | | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; |
| | | import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Resource |
| | | @Lazy |
| | | private CrmPermissionService permissionService; |
| | | |
| | | @Resource |
| | | private CrmCustomerService customerService; |
| | | |
| | | @Override |
| | | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CUSTOMER, bizId = "#createReqVO.customerId", |
| | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * å¼å¸¸æç¤ºéç¨ç客æ·åç§°ï¼è§£æå¤±è´¥æ¶åé为 IDï¼é¿å
å¼å¸¸åæ¯åæäºæ¬¡å¼å¸¸ |
| | | */ |
| | | private String getCustomerDisplayName(Long customerId) { |
| | | try { |
| | | CrmCustomerDO customer = customerService.getCustomer(customerId); |
| | | return customer != null && StrUtil.isNotBlank(customer.getName()) |
| | | ? customer.getName() : "ID=" + customerId; |
| | | } catch (Exception ex) { |
| | | return "ID=" + customerId; |
| | | } |
| | | } |
| | | |
| | | private CrmCustomerProgressDO validateProgressExists(Long id) { |
| | | CrmCustomerProgressDO progress = customerProgressMapper.selectById(id); |
| | | if (progress == null) { |
| | |
| | | } |
| | | |
| | | private void validateCustomerWritePermission(Long customerId) { |
| | | // è¶
管 / CRM 管çåä¸ @CrmPermission åé¢ä¿æä¸è´ï¼ç´æ¥æ¾è¡ |
| | | if (CrmPermissionUtils.isCrmAdmin()) { |
| | | return; |
| | | } |
| | | if (!permissionService.hasPermission(CrmBizTypeEnum.CRM_CUSTOMER.getType(), customerId, |
| | | getLoginUserId(), CrmPermissionLevelEnum.WRITE)) { |
| | | throw exception(CRM_PERMISSION_DENIED, "å®¢æ·æ´½è°è¿åº¦"); |
| | | throw new ServiceException(CRM_PERMISSION_DENIED.getCode(), |
| | | "没ææéä¿®æ¹/å é¤å®¢æ·[" + getCustomerDisplayName(customerId) |
| | | + "]çæ´½è°è¿åº¦ï¼æ¨ä¸æ¯è¯¥å®¢æ·çè´è´£äººæå¢éæåã请让客æ·è´è´£äººå¨å®¢æ·è¯¦æ
ãå¢éæåã䏿æ¨å å
¥ï¼" |
| | | + "æåæ¢å°è¯¥å®¢æ·è´è´£äººè´¦å·åéè¯ã"); |
| | | } |
| | | } |
| | | |
| | |
| | | /** |
| | | * æ ¡éªéå®è®¢åãéå®åºåºåï¼å¹¶åå¡«åºåºåå· |
| | | * |
| | | * éå®è®¢åãéå®åºåºåå为éå¡«ï¼å¡«åäºææå¯¹åºè§åæ ¡éªï¼æªå¡«åç´æ¥è·³è¿ï¼ä¸å端ä¸è´ï¼ã |
| | | * æ ¡éªé¡ºåºï¼éå®è®¢ååå¨ -> å·²å®¡æ ¸ -> 客æ·/ååä¸è´ -> 订åå©ä½å¯å¼ç¥¨ï¼ |
| | | * åæ ¡éªåºåºååå¨ -> 已宿 -> å±äºè¯¥è®¢å -> 客æ·ä¸è´ -> åºåºåå©ä½å¯å¼ç¥¨ã |
| | | */ |
| | | private void validateSaleOrderAndOut(CrmInvoiceSaveReqVO reqVO) { |
| | | if (reqVO.getSaleOrderId() == null) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_REQUIRED); |
| | | } |
| | | // 1. éå®è®¢å |
| | | ErpSaleOrderRespDTO saleOrder = saleOrderApi.getSaleOrder(reqVO.getSaleOrderId()).getCheckedData(); |
| | | if (saleOrder == null) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_NOT_EXISTS, reqVO.getSaleOrderId()); |
| | | } |
| | | if (ObjectUtil.notEqual(saleOrder.getStatus(), ERP_SALE_ORDER_STATUS_APPROVE)) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_NOT_APPROVE, saleOrder.getNo(), |
| | | erpAuditStatusName(saleOrder.getStatus())); |
| | | } |
| | | if (ObjectUtil.notEqual(saleOrder.getCustomerId(), reqVO.getCustomerId()) |
| | | || (saleOrder.getContractId() != null |
| | | && ObjectUtil.notEqual(saleOrder.getContractId(), reqVO.getContractId()))) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_MISMATCH, saleOrder.getNo(), |
| | | saleOrder.getCustomerId(), saleOrder.getContractId(), reqVO.getCustomerId(), reqVO.getContractId()); |
| | | } |
| | | // 1.1 订åå©ä½å¯å¼ç¥¨éé¢ = 订åéé¢ - 该订åå·²å ç¨å¼ç¥¨éé¢ï¼å®¡æ¹ä¸ + 审æ¹éè¿ï¼ |
| | | BigDecimal orderTotalPrice = zeroIfNull(saleOrder.getTotalPrice()); |
| | | BigDecimal orderInvoicedPrice = sumInvoicePrice(invoiceMapper.selectListBySaleOrderIdAndStatus( |
| | | reqVO.getSaleOrderId(), INVOICE_OCCUPY_STATUSES), reqVO.getId()); |
| | | BigDecimal orderRemainPrice = orderTotalPrice.subtract(orderInvoicedPrice); |
| | | if (reqVO.getPrice() != null && reqVO.getPrice().compareTo(orderRemainPrice) > 0) { |
| | | throw exception(INVOICE_CREATE_FAIL_PRICE_EXCEEDS_SALE_ORDER, saleOrder.getNo(), |
| | | formatPrice(orderRemainPrice), formatPrice(orderTotalPrice), formatPrice(orderInvoicedPrice)); |
| | | // 1. éå®è®¢åï¼éå¡«ï¼ |
| | | ErpSaleOrderRespDTO saleOrder = null; |
| | | if (reqVO.getSaleOrderId() != null) { |
| | | saleOrder = saleOrderApi.getSaleOrder(reqVO.getSaleOrderId()).getCheckedData(); |
| | | if (saleOrder == null) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_NOT_EXISTS, reqVO.getSaleOrderId()); |
| | | } |
| | | if (ObjectUtil.notEqual(saleOrder.getStatus(), ERP_SALE_ORDER_STATUS_APPROVE)) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_NOT_APPROVE, saleOrder.getNo(), |
| | | erpAuditStatusName(saleOrder.getStatus())); |
| | | } |
| | | if (ObjectUtil.notEqual(saleOrder.getCustomerId(), reqVO.getCustomerId()) |
| | | || (saleOrder.getContractId() != null |
| | | && ObjectUtil.notEqual(saleOrder.getContractId(), reqVO.getContractId()))) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_ORDER_MISMATCH, saleOrder.getNo(), |
| | | saleOrder.getCustomerId(), saleOrder.getContractId(), reqVO.getCustomerId(), reqVO.getContractId()); |
| | | } |
| | | // 1.1 订åå©ä½å¯å¼ç¥¨éé¢ = 订åéé¢ - 该订åå·²å ç¨å¼ç¥¨éé¢ï¼å®¡æ¹ä¸ + 审æ¹éè¿ï¼ |
| | | BigDecimal orderTotalPrice = zeroIfNull(saleOrder.getTotalPrice()); |
| | | BigDecimal orderInvoicedPrice = sumInvoicePrice(invoiceMapper.selectListBySaleOrderIdAndStatus( |
| | | reqVO.getSaleOrderId(), INVOICE_OCCUPY_STATUSES), reqVO.getId()); |
| | | BigDecimal orderRemainPrice = orderTotalPrice.subtract(orderInvoicedPrice); |
| | | if (reqVO.getPrice() != null && reqVO.getPrice().compareTo(orderRemainPrice) > 0) { |
| | | throw exception(INVOICE_CREATE_FAIL_PRICE_EXCEEDS_SALE_ORDER, saleOrder.getNo(), |
| | | formatPrice(orderRemainPrice), formatPrice(orderTotalPrice), formatPrice(orderInvoicedPrice)); |
| | | } |
| | | } |
| | | |
| | | // 2. å¼ç¥¨ç³è¯·å¿
é¡»ç»å®å·²å®æçéå®åºåºå |
| | | // 2. éå®åºåºåï¼éå¡«ï¼ |
| | | if (reqVO.getSaleOutId() == null) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_OUT_REQUIRED); |
| | | return; |
| | | } |
| | | MesWmProductSalesRespDTO saleOut = productSalesApi.getProductSales(reqVO.getSaleOutId()); |
| | | if (saleOut == null) { |
| | |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_OUT_NOT_FINISHED, saleOut.getCode(), |
| | | productSalesStatusName(saleOut.getStatus())); |
| | | } |
| | | if (saleOut.getSaleOrderId() != null && ObjectUtil.notEqual(saleOut.getSaleOrderId(), reqVO.getSaleOrderId())) { |
| | | if (saleOrder != null && saleOut.getSaleOrderId() != null |
| | | && ObjectUtil.notEqual(saleOut.getSaleOrderId(), reqVO.getSaleOrderId())) { |
| | | throw exception(INVOICE_CREATE_FAIL_SALE_OUT_MISMATCH_ORDER, saleOut.getCode(), |
| | | saleOrder.getNo(), saleOut.getSaleOrderId()); |
| | | } |
| | |
| | | @Schema(description = "ç¨çï¼ç¾åæ¯", example = "10") |
| | | private BigDecimal taxPercent; |
| | | |
| | | @Schema(description = "æ¯å¦éè¦ç产ï¼0=å¦ 1=æ¯ï¼", example = "1") |
| | | private Integer needProduction; |
| | | |
| | | @Schema(description = "夿³¨", example = "夿³¨") |
| | | private String remark; |
| | | } |
| | |
| | | } |
| | | |
| | | @PostMapping("/submit") |
| | | @Operation(summary = "æäº¤éå®è®¢å审æ¹ï¼åååå
¬ï¼") |
| | | @Operation(summary = "æäº¤éå®è®¢åï¼åå转æ¥ç订åå
审æ¹ç´æ¥çæï¼å
¶ä½èµ°åååå
¬å®¡æ¹ï¼") |
| | | @PreAuthorize("@ss.hasPermission('erp:sale-order:update-status')") |
| | | public CommonResult<Boolean> submitSaleOrder(@RequestParam("id") Long id, |
| | | @RequestParam("processDefinitionKey") String processDefinitionKey) { |
| | |
| | | throw exception(SALE_ORDER_SUBMIT_FAIL_ITEM_EMPTY, saleOrder.getNo()); |
| | | } |
| | | |
| | | // 4. å建 BPM æµç¨å®ä¾ï¼å®¡æ¹å¨åååå
¬å®æï¼ |
| | | // 4. åå转æ¥çéå®è®¢åï¼contractId éç©ºï¼æ éå走审æ¹ï¼ |
| | | // ååå¨ CRM 已审æ¹éè¿ï¼è®¢åå
容ç±åå带å
¥ï¼æäº¤å³çæã |
| | | // çæåï¼éè¦ç产çæç»èªå¨å建 MPS æµè½¬ç产模åï¼æ éç产çæç»å¯ç´æ¥å¨ä»å¨çæåè´§éç¥åã |
| | | // åå²ååçæç订åæç»å¯è½æªç»´æ¤âæ¯å¦éè¦ç产âï¼æç³»ç»é»è®¤ï¼éè¦ç产ï¼è¡¥é½ååçæã |
| | | if (saleOrder.getContractId() != null) { |
| | | items.stream() |
| | | .filter(item -> item.getNeedProduction() == null) |
| | | .forEach(item -> saleOrderItemMapper.updateById( |
| | | new ErpSaleOrderItemDO().setId(item.getId()).setNeedProduction(1))); |
| | | saleOrderMapper.updateById(new ErpSaleOrderDO() |
| | | .setId(id) |
| | | .setStatus(ErpAuditStatus.APPROVING.getStatus()) |
| | | .setProcessInstanceId("")); |
| | | updateSaleOrderAuditStatus(id, cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum.APPROVE.getStatus()); |
| | | return; |
| | | } |
| | | |
| | | // 5. å建 BPM æµç¨å®ä¾ï¼å®¡æ¹å¨åååå
¬å®æï¼ |
| | | // å
¨å±å
审æ¹ï¼ä¸å¡æ ¡éªéè¿åç´æ¥æ§è¡å®¡æ¹éè¿é»è¾ï¼æ éæµç¨æ¨¡åã |
| | | if (processInstanceApi.isGlobalAutoApprove()) { |
| | | saleOrderMapper.updateById(new ErpSaleOrderDO() |
| | |
| | | .setProcessDefinitionKey(processDefinitionKey) |
| | | .setBusinessKey(String.valueOf(id))); |
| | | |
| | | // 5. æ´æ°éå®è®¢åç¶æä¸ºå®¡æ¹ä¸ï¼è®°å½æµç¨å®ä¾ç¼å· |
| | | // 6. æ´æ°éå®è®¢åç¶æä¸ºå®¡æ¹ä¸ï¼è®°å½æµç¨å®ä¾ç¼å· |
| | | saleOrderMapper.updateById(new ErpSaleOrderDO() |
| | | .setId(id) |
| | | .setStatus(ErpAuditStatus.APPROVING.getStatus()) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.hrm.api.employee; |
| | | |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleRespDTO; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * åå·¥ä¿¡æ¯ API æ¥å£ |
| | | * <p> |
| | | * ä¾ MES çæ¨¡åæå²ä½è·ååå·¥ï¼æ¥å·¥äººéæ©ï¼ä½¿ç¨ã |
| | | * åå·¥æ°æ®æ¥èªãå工管çãï¼ä¸è¦æ±åå·¥å¼éç³»ç»è´¦å· |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | public interface HrmEmployeeApi { |
| | | |
| | | /** |
| | | * è·å¾æå®å²ä½ä¸çå¨è/è¯ç¨åå·¥å表 |
| | | * |
| | | * @param postIds å²ä½ç¼å·éå |
| | | * @return åå·¥å表 |
| | | */ |
| | | List<HrmEmployeeSimpleRespDTO> getEmployeeListByPostIds(Collection<Long> postIds); |
| | | |
| | | /** |
| | | * è·å¾åå·¥ Map |
| | | * |
| | | * @param ids åå·¥ç¼å·éå |
| | | * @return åå·¥ Map |
| | | */ |
| | | Map<Long, HrmEmployeeSimpleRespDTO> getEmployeeMap(Collection<Long> ids); |
| | | |
| | | /** |
| | | * æ ¹æ®ç³»ç»ç¨æ·ç¼å·è·å¾åå·¥ |
| | | * |
| | | * @param userId ç³»ç»ç¨æ·ç¼å· |
| | | * @return åå·¥ï¼ä¸å卿¶è¿å null |
| | | */ |
| | | HrmEmployeeSimpleRespDTO getEmployeeByUserId(Long userId); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.hrm.api.employee.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å工精ç®ä¿¡æ¯ DTO |
| | | * <p> |
| | | * ä¾ MES çæ¨¡åæå²ä½è·ååå·¥ï¼æ¥å·¥äººéæ©ï¼ä½¿ç¨ï¼ä¸ä¾èµåå·¥æ¯å¦å¼éç³»ç»è´¦å· |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Data |
| | | public class HrmEmployeeSimpleRespDTO { |
| | | |
| | | /** |
| | | * åå·¥ç¼å· |
| | | */ |
| | | private Long id; |
| | | |
| | | /** |
| | | * åå·¥å§å |
| | | */ |
| | | private String name; |
| | | |
| | | /** |
| | | * é¨é¨ç¼å· |
| | | */ |
| | | private Long deptId; |
| | | |
| | | /** |
| | | * ææºå· |
| | | */ |
| | | private String phone; |
| | | |
| | | /** |
| | | * åå·¥ç¶æï¼1-å¨è 2-è¯ç¨ 3-离è |
| | | */ |
| | | private Integer employeeStatus; |
| | | |
| | | /** |
| | | * å
³èçç³»ç»ç¨æ·ç¼å·ï¼æªå¼éè´¦å·æ¶ä¸ºç©ºï¼ |
| | | */ |
| | | private Long userId; |
| | | |
| | | /** |
| | | * å²ä½ç¼å·å表 |
| | | */ |
| | | private List<Long> postIds; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.hrm.api.employee; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleRespDTO; |
| | | import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeDO; |
| | | import cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * åå·¥ä¿¡æ¯ API å®ç° |
| | | * |
| | | * @author è¶
级管çå |
| | | */ |
| | | @Service |
| | | public class HrmEmployeeApiImpl implements HrmEmployeeApi { |
| | | |
| | | @Resource |
| | | private HrmEmployeeService employeeService; |
| | | |
| | | @Override |
| | | public List<HrmEmployeeSimpleRespDTO> getEmployeeListByPostIds(Collection<Long> postIds) { |
| | | return convertList(employeeService.getEmployeeListByPostIds(postIds)); |
| | | } |
| | | |
| | | @Override |
| | | public Map<Long, HrmEmployeeSimpleRespDTO> getEmployeeMap(Collection<Long> ids) { |
| | | return CollectionUtils.convertMap(convertList(employeeService.getEmployeeList(ids)), |
| | | HrmEmployeeSimpleRespDTO::getId); |
| | | } |
| | | |
| | | @Override |
| | | public HrmEmployeeSimpleRespDTO getEmployeeByUserId(Long userId) { |
| | | if (userId == null) { |
| | | return null; |
| | | } |
| | | HrmEmployeeDO employee = employeeService.getEmployeeByUserId(userId); |
| | | return employee == null ? null : buildDTO(employee); |
| | | } |
| | | |
| | | private List<HrmEmployeeSimpleRespDTO> convertList(List<HrmEmployeeDO> list) { |
| | | if (CollUtil.isEmpty(list)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return CollectionUtils.convertList(list, this::buildDTO); |
| | | } |
| | | |
| | | private HrmEmployeeSimpleRespDTO buildDTO(HrmEmployeeDO employee) { |
| | | HrmEmployeeSimpleRespDTO dto = BeanUtils.toBean(employee, HrmEmployeeSimpleRespDTO.class); |
| | | if (StrUtil.isNotBlank(employee.getPostIds())) { |
| | | try { |
| | | dto.setPostIds(JSONUtil.toList(employee.getPostIds(), Long.class)); |
| | | } catch (Exception ignored) { |
| | | // åå²èæ°æ®ï¼å²ä½ JSON è§£æå¤±è´¥æ¶å¿½ç¥ï¼ä¸å½±ååå·¥æ¬èº«è¿å |
| | | } |
| | | } |
| | | return dto; |
| | | } |
| | | |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.hrm.dal.mysql.employee; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * åå·¥ä¿¡æ¯ Mapper |
| | |
| | | return selectList(HrmEmployeeDO::getEmployeeStatus, employeeStatus); |
| | | } |
| | | |
| | | /** |
| | | * æå²ä½ç¼å·éåæ¥è¯¢å¨è/è¯ç¨åå·¥ |
| | | * <p> |
| | | * å工表ç post_ids åçæ¯ JSON æ°ç»ï¼å¦ [17, 18]ï¼ï¼ä½¿ç¨ JSON_CONTAINS 精确å¹é
å²ä½ |
| | | * |
| | | * @param postIds å²ä½ç¼å·éå |
| | | * @return åå·¥å表 |
| | | */ |
| | | default List<HrmEmployeeDO> selectListByPostIds(Collection<Long> postIds) { |
| | | if (CollUtil.isEmpty(postIds)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | String postCondition = postIds.stream() |
| | | .map(postId -> "JSON_CONTAINS(post_ids, '[" + postId + "]')") |
| | | .collect(Collectors.joining(" OR ")); |
| | | return selectList(new LambdaQueryWrapperX<HrmEmployeeDO>() |
| | | .in(HrmEmployeeDO::getEmployeeStatus, List.of(1, 2)) |
| | | .apply("(" + postCondition + ")") |
| | | .orderByAsc(HrmEmployeeDO::getName)); |
| | | } |
| | | |
| | | default PageResult<HrmEmployeeDO> selectPage(HrmEmployeePageReqVO reqVO) { |
| | | LambdaQueryWrapperX<HrmEmployeeDO> wrapper = new LambdaQueryWrapperX<HrmEmployeeDO>() |
| | | .likeIfPresent(HrmEmployeeDO::getEmployeeNo, reqVO.getEmployeeNo()) |
| | |
| | | List<HrmEmployeeDO> getEmployeeList(Collection<Long> ids); |
| | | |
| | | /** |
| | | * è·å¾æå®å²ä½ä¸çå¨è/è¯ç¨åå·¥å表 |
| | | * |
| | | * @param postIds å²ä½ç¼å·éå |
| | | * @return åå·¥å表 |
| | | */ |
| | | List<HrmEmployeeDO> getEmployeeListByPostIds(Collection<Long> postIds); |
| | | |
| | | /** |
| | | * è·å¾æå®ç¶æçåå·¥å表 |
| | | * |
| | | * @param employeeStatus åå·¥ç¶æï¼ä¸º null æ¶æ¥è¯¢å
¨é¨ |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<HrmEmployeeDO> getEmployeeListByPostIds(Collection<Long> postIds) { |
| | | return employeeMapper.selectListByPostIds(postIds); |
| | | } |
| | | |
| | | @Override |
| | | public List<HrmEmployeeSimpleRespVO> getEmployeeSimpleList(Integer employeeStatus) { |
| | | List<HrmEmployeeDO> list = employeeMapper.selectListByStatus(employeeStatus); |
| | | // å¡«å
é¨é¨åç§° |
| | |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- HRM 人åèµæº APIï¼æ¥å·¥äººæåå·¥æ°æ®éæ©ï¼ --> |
| | | <dependency> |
| | | <groupId>cn.iocoder.boot</groupId> |
| | | <artifactId>yudao-module-hrm-api</artifactId> |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- BPM 工使µ API --> |
| | | <dependency> |
| | | <groupId>cn.iocoder.boot</groupId> |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.md.item; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.idev.excel.ExcelWriter; |
| | | import cn.idev.excel.FastExcelFactory; |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.handler.ColumnWidthMatchStyleStrategy; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportExcelVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomSaveReqVO; |
| | |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.Parameters; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import jakarta.validation.Valid; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | return success(buildProductBomRespVOList(list)); |
| | | } |
| | | |
| | | @GetMapping("/get-import-template") |
| | | @Operation(summary = "è·å¾äº§åBOM导å
¥æ¨¡æ¿") |
| | | @PreAuthorize("@ss.hasPermission('mes:md-item:create')") |
| | | public void importTemplate(HttpServletResponse response) throws IOException { |
| | | List<MesMdProductBomImportExcelVO> list = Arrays.asList( |
| | | MesMdProductBomImportExcelVO.builder().parentItemCode("BV-2.5").bomItemCode("CU-T1-8") |
| | | .quantity(new BigDecimal("0.0227")).remark("示ä¾ï¼å¡«åå·²åå¨çç©æç¼ç ").build(), |
| | | MesMdProductBomImportExcelVO.builder().parentItemCode("BV-2.5").bomItemCode("PVC-JY-70") |
| | | .quantity(new BigDecimal("0.0103")).remark("示ä¾ï¼åä¸ç¶é¡¹å¯æå¤è¡å项").build() |
| | | ); |
| | | // ä¸è½å¤ç¨ ExcelUtils.writeï¼å®ä¼å¨è¡¨å¤´åå "*" å¿
å¡«æ è®°ï¼å¯¼å
¥æ¶æè¡¨å¤´åç§°å¹é
ä¼è¯»ä¸å°è¯¥å |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.addHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8("BOM导å
¥æ¨¡æ¿.xlsx")); |
| | | ExcelWriter writer = FastExcelFactory.write(response.getOutputStream(), MesMdProductBomImportExcelVO.class) |
| | | .autoCloseStream(false) |
| | | .registerWriteHandler(new ColumnWidthMatchStyleStrategy()) |
| | | .build(); |
| | | try { |
| | | writer.write(list, FastExcelFactory.writerSheet("产åBOM").build()); |
| | | } finally { |
| | | writer.finish(); |
| | | writer.close(); |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/import") |
| | | @Operation(summary = "导å
¥äº§åBOM") |
| | | @Parameters({ |
| | | @Parameter(name = "file", description = "Excel æä»¶", required = true), |
| | | @Parameter(name = "updateSupport", description = "æ¯å¦æ´æ°å·²åå¨çç¶åç»åï¼é»è®¤ä¸º false", example = "true") |
| | | }) |
| | | @PreAuthorize("@ss.hasPermission('mes:md-item:create')") |
| | | public CommonResult<MesMdProductBomImportRespVO> importExcel( |
| | | @RequestParam("file") MultipartFile file, |
| | | @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception { |
| | | List<MesMdProductBomImportExcelVO> list = ExcelUtils.read(file, MesMdProductBomImportExcelVO.class); |
| | | return success(productBomService.importProductBomList(list, updateSupport)); |
| | | } |
| | | |
| | | // ==================== æ¼æ¥ VO ==================== |
| | | |
| | | private List<MesMdProductBomRespVO> buildProductBomRespVOList(List<MesMdProductBomDO> list) { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom; |
| | | |
| | | import cn.idev.excel.annotation.ExcelProperty; |
| | | import cn.iocoder.yudao.framework.excel.core.handler.ExcelRequired; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * MES 产å BOM 导å
¥ Excel VO |
| | | */ |
| | | @Data |
| | | @Builder |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class MesMdProductBomImportExcelVO { |
| | | |
| | | @ExcelProperty("ç¶é¡¹ç©æç¼ç ") |
| | | @ExcelRequired |
| | | private String parentItemCode; |
| | | |
| | | @ExcelProperty("åé¡¹ç©æç¼ç ") |
| | | @ExcelRequired |
| | | private String bomItemCode; |
| | | |
| | | @ExcelProperty("åä½ç¨é") |
| | | @ExcelRequired |
| | | private BigDecimal quantity; |
| | | |
| | | @ExcelProperty("夿³¨") |
| | | private String remark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Schema(description = "管çåå° - MES 产å BOM 导å
¥ Response VO") |
| | | @Data |
| | | @Builder |
| | | public class MesMdProductBomImportRespVO { |
| | | |
| | | @Schema(description = "å建æåç BOM ç»åæ°ç»ï¼æ ¼å¼ï¼ç¶é¡¹ç¼ç âå项ç¼ç ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | private List<String> createList; |
| | | |
| | | @Schema(description = "æ´æ°æåç BOM ç»åæ°ç»ï¼æ ¼å¼ï¼ç¶é¡¹ç¼ç âå项ç¼ç ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | private List<String> updateList; |
| | | |
| | | @Schema(description = "导å
¥å¤±è´¥çç»åéåï¼key 为â第Nè¡ ç¶é¡¹ç¼ç âå项ç¼ç âï¼value 为失败åå ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | private Map<String, String> failureList; |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.HrmEmployeeApi; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleRespDTO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationEmployeeRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationWorkerService; |
| | | import cn.iocoder.yudao.module.system.api.dept.PostApi; |
| | | import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | private PostApi postApi; |
| | | |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建人åèµæº") |
| | |
| | | } |
| | | |
| | | @GetMapping("/list-user-by-workstation") |
| | | @Operation(summary = "è·å¾å·¥ä½ç«å¯¹åºå²ä½çåå·¥å表") |
| | | @Operation(summary = "è·å¾å·¥ä½ç«å¯¹åºå²ä½çåå·¥å表ï¼åèªåå·¥ç®¡çæ°æ®ï¼ä¸è¦æ±å¼éç³»ç»è´¦å·ï¼") |
| | | @Parameter(name = "workstationId", description = "å·¥ä½ç«ç¼å·", required = true) |
| | | public CommonResult<List<AdminUserRespDTO>> getUserListByWorkstation( |
| | | public CommonResult<List<MesMdWorkstationEmployeeRespVO>> getUserListByWorkstation( |
| | | @RequestParam("workstationId") Long workstationId) { |
| | | List<MesMdWorkstationWorkerDO> list = workstationWorkerService.getWorkstationWorkerListByWorkstationId(workstationId); |
| | | if (CollUtil.isEmpty(list)) { |
| | |
| | | if (CollUtil.isEmpty(postIds)) { |
| | | return success(Collections.emptyList()); |
| | | } |
| | | List<AdminUserRespDTO> userList = adminUserApi.getUserListByPostIds(postIds); |
| | | return success(userList); |
| | | List<HrmEmployeeSimpleRespDTO> employees = hrmEmployeeApi.getEmployeeListByPostIds(postIds); |
| | | List<MesMdWorkstationEmployeeRespVO> result = new ArrayList<>(employees.size()); |
| | | for (HrmEmployeeSimpleRespDTO employee : employees) { |
| | | MesMdWorkstationEmployeeRespVO vo = new MesMdWorkstationEmployeeRespVO(); |
| | | vo.setId(employee.getId()); |
| | | vo.setNickname(employee.getName()); |
| | | vo.setDeptId(employee.getDeptId()); |
| | | vo.setPhone(employee.getPhone()); |
| | | result.add(vo); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | // ==================== æ¼æ¥ VO ==================== |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * å·¥ä½ç«å¯éåå·¥ï¼æ¥å·¥äººï¼Response VO |
| | | * <p> |
| | | * æ°æ®æ¥èªãå工管çãï¼æå·¥ä½ç«ç»å®çå²ä½å¹é
åå·¥ï¼ä¸è¦æ±åå·¥å¼éç³»ç»è´¦å·ã |
| | | * åæ®µä¿æ nickname å½å以å
¼å®¹åç«¯éæ©å¨ï¼labelField=nickname / valueField=idï¼ |
| | | */ |
| | | @Schema(description = "管çåå° - å·¥ä½ç«å¯éåå·¥ Response VO") |
| | | @Data |
| | | public class MesMdWorkstationEmployeeRespVO { |
| | | |
| | | @Schema(description = "åå·¥ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| | | private Long id; |
| | | |
| | | @Schema(description = "åå·¥å§å", requiredMode = Schema.RequiredMode.REQUIRED, example = "çæµ·å³°") |
| | | private String nickname; |
| | | |
| | | @Schema(description = "é¨é¨ç¼å·", example = "126") |
| | | private Long deptId; |
| | | |
| | | @Schema(description = "ææºå·", example = "13700002101") |
| | | private String phone; |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPauseRecordRespVO; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.HrmEmployeeApi; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleRespDTO; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | |
| | | @Operation(summary = "è·å¾åå·¥ä½ç«æªå®æä»»å¡æ°é") |
| | | public CommonResult<List<cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProWorkstationPendingCountVO>> getPendingWorkstationCounts() { |
| | | Long userId = cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId(); |
| | | Long assigneeId = userId != null && !permissionApi.hasAnyRoles(userId, |
| | | cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum.SUPER_ADMIN.getCode()) ? userId : null; |
| | | // æ¥å·¥äººä»¥ãå工管çãä¸çå工为åï¼ç»å½è´¦å·å
æ å°å°åå·¥ï¼åæåå·¥ç¼å·è¿æ»¤ |
| | | Long assigneeId = null; |
| | | if (userId != null && !permissionApi.hasAnyRoles(userId, |
| | | cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum.SUPER_ADMIN.getCode())) { |
| | | HrmEmployeeSimpleRespDTO employee = hrmEmployeeApi.getEmployeeByUserId(userId); |
| | | if (employee == null) { |
| | | return success(Collections.emptyList()); |
| | | } |
| | | assigneeId = employee.getId(); |
| | | } |
| | | return success(pendingCountMapper.selectPendingCounts(assigneeId, |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PREPARE.getStatus(), |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PRODUCING.getStatus(), |
| | |
| | | private MesProTaskPauseRecordMapper pauseRecordMapper; |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private cn.iocoder.yudao.module.system.api.permission.PermissionApi permissionApi; |
| | | |
| | |
| | | @Operation(summary = "è·å¾å¾
æ¥å·¥å°è´¦å页", description = "å·²æäº§ä¸ä»æå¾
æ¥å·¥æ°éçä»»å¡ï¼ç¶æ=è¿è¡ä¸ï¼") |
| | | public CommonResult<PageResult<MesProTaskRespVO>> getPendingFeedbackPage(@Valid MesProTaskPageReqVO pageReqVO) { |
| | | Long loginUserId = cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId(); |
| | | // 妿å½åç»å½äººä¸æ¯è¶
级管çåï¼åä»
æ¥è¯¢åé
ç»èªå·±çç产工å |
| | | // 妿å½åç»å½äººä¸æ¯è¶
级管çåï¼åä»
æ¥è¯¢åé
ç»èªå·±çç产工åï¼ç»å½è´¦å·å
æ å°å°åå·¥ï¼ |
| | | if (loginUserId != null && !permissionApi.hasAnyRoles(loginUserId, cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum.SUPER_ADMIN.getCode())) { |
| | | pageReqVO.setAssigneeUserId(loginUserId); |
| | | HrmEmployeeSimpleRespDTO employee = hrmEmployeeApi.getEmployeeByUserId(loginUserId); |
| | | if (employee == null) { |
| | | return success(PageResult.empty()); |
| | | } |
| | | pageReqVO.setAssigneeUserId(employee.getId()); |
| | | } |
| | | PageResult<MesProTaskDO> pageResult = taskService.getPendingFeedbackPage(pageReqVO); |
| | | List<MesProTaskRespVO> respVOList = buildTaskRespVOList(pageResult.getList()); |
| | |
| | | Set<Long> allAssigneeUserIds = new HashSet<>(); |
| | | assigneeMap.values().forEach(assignees -> |
| | | assignees.forEach(assignee -> allAssigneeUserIds.add(assignee.getUserId()))); |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(allAssigneeUserIds); |
| | | // æ¥å·¥äººåçæ¯åå·¥ç¼å·ï¼åç§°ä»ãå工管çãå |
| | | Map<Long, HrmEmployeeSimpleRespDTO> employeeMap = hrmEmployeeApi.getEmployeeMap(allAssigneeUserIds); |
| | | |
| | | // æ¼æ¥ VO |
| | | return convertList(list, task -> { |
| | |
| | | List<Long> assigneeUserIds = convertList(assignees, cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskAssigneeDO::getUserId); |
| | | vo.setAssigneeUserIds(assigneeUserIds); |
| | | List<String> assigneeUserNames = new ArrayList<>(); |
| | | for (Long userId : assigneeUserIds) { |
| | | AdminUserRespDTO user = userMap.get(userId); |
| | | if (user != null && user.getNickname() != null) { |
| | | assigneeUserNames.add(user.getNickname()); |
| | | for (Long employeeId : assigneeUserIds) { |
| | | HrmEmployeeSimpleRespDTO employee = employeeMap.get(employeeId); |
| | | if (employee != null && employee.getName() != null) { |
| | | assigneeUserNames.add(employee.getName()); |
| | | } |
| | | } |
| | | vo.setAssigneeUserNames(assigneeUserNames); |
| | |
| | | @PutMapping("/dispose") |
| | | @Operation(summary = "æ§è¡ä¸åæ ¼åå¤ç½®") |
| | | @PreAuthorize("@ss.hasPermission('mes:qc-ncr:dispose')") |
| | | public CommonResult<Boolean> disposeNcr(@Valid @RequestBody MesQcNcrDisposeReqVO disposeReqVO) { |
| | | ncrService.disposeNcr(disposeReqVO.getId(), disposeReqVO.getDisposition(), |
| | | disposeReqVO.getHandlerUserId(), disposeReqVO.getHandleResult()); |
| | | return success(true); |
| | | public CommonResult<MesQcNcrDisposeRespVO> disposeNcr(@Valid @RequestBody MesQcNcrDisposeReqVO disposeReqVO) { |
| | | return success(ncrService.disposeNcr(disposeReqVO)); |
| | | } |
| | | |
| | | @PutMapping("/submit-approval") |
| | |
| | | @Schema(description = "å¤çç»æè¯´æ", example = "已宿æ¥åºåºåº") |
| | | private String handleResult; |
| | | |
| | | @Schema(description = "å
¥åºä»åºç¼å·ï¼å¤ç½®ä¸ºè®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡«ï¼", example = "7001") |
| | | private Long warehouseId; |
| | | |
| | | @Schema(description = "å
¥åºåºåºç¼å·ï¼å¤ç½®ä¸ºè®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡«ï¼", example = "7101") |
| | | private Long locationId; |
| | | |
| | | @Schema(description = "å
¥åºåºä½ç¼å·ï¼å¤ç½®ä¸ºè®©æ¥æ¾è¡/æ¥åºæ¶å¿
å¡«ï¼", example = "7201") |
| | | private Long areaId; |
| | | |
| | | @Schema(description = "æ¹æ¬¡å·ï¼ç©æå¯ç¨æ¹æ¬¡ç®¡çæ¶å¿
å¡«ï¼ä¸åå¨ä¼èªå¨åå»ºæ¹æ¬¡ï¼", example = "BATCH20261109001") |
| | | private String batchCode; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | |
| | | @Schema(description = "管çåå° - MES ä¸åæ ¼åå¤çåå¤ç½® Response VO") |
| | | @Data |
| | | public class MesQcNcrDisposeRespVO { |
| | | |
| | | @Schema(description = "å¤ç½®æ¹å¼ï¼2-æ¥åº 3-è¿å·¥ 4-è®©æ¥æ¾è¡ 6-è¿ä¿®ï¼", example = "4") |
| | | private Integer disposition; |
| | | |
| | | @Schema(description = "çæçåæ®ç±»åï¼MISC_RECEIPT-æé¡¹å
¥åºåï¼WORK_ORDER-ç产订å", example = "MISC_RECEIPT") |
| | | private String docType; |
| | | |
| | | @Schema(description = "çæçåæ®ç¼å·", example = "1024") |
| | | private Long docId; |
| | | |
| | | @Schema(description = "çæçåæ®åå·", example = "MR202611090001") |
| | | private String docCode; |
| | | |
| | | @Schema(description = "çæçåæ®åç§°", example = "è®©æ¥æ¾è¡å
¥åºå-NCR20261109001") |
| | | private String docName; |
| | | |
| | | @Schema(description = "æç¤ºææ¡", example = "å·²çæè®©æ¥æ¾è¡å
¥åºå[MR202611090001]并宿å
¥åº") |
| | | private String message; |
| | | |
| | | } |
| | |
| | | ErrorCode MD_PRODUCT_BOM_SELF_REFERENCE = new ErrorCode(1_040_107_001, "产åä¸è½ä½ä¸ºèªèº«çBOMç©æ"); |
| | | ErrorCode MD_PRODUCT_BOM_CIRCULAR = new ErrorCode(1_040_107_002, "BOMç©æåå¨éç¯ï¼æ æ³æ°å¢"); |
| | | ErrorCode MD_PRODUCT_BOM_ITEM_INVALID = new ErrorCode(1_040_107_003, "éæ©ç BOM ç©æä¸å±äºå½å产å"); |
| | | ErrorCode MD_PRODUCT_BOM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_107_004, "导å
¥ç BOM æ°æ®ä¸è½ä¸ºç©º"); |
| | | |
| | | // ========== MES åºç¡æ°æ®-产åSOPï¼1-040-108-000ï¼ ========== |
| | | ErrorCode MD_PRODUCT_SOP_NOT_EXISTS = new ErrorCode(1_040_108_000, "产åSOPä¸åå¨"); |
| | |
| | | ErrorCode QC_NCR_DISPOSE_STATUS_INVALID = new ErrorCode(1_040_609_007, "ä¸åæ ¼åå¤çå[{}]å½åç¶æä¸º[{}]ï¼åªæå®¡æ¹éè¿åç[å·²è¯å®¡]ç¶ææå¯æ§è¡å¤ç½®ï¼è¯·å
æäº¤å®¡æ¹å¹¶çå¾
审æ¹éè¿"); |
| | | ErrorCode QC_NCR_DISPOSITION_REQUIRED = new ErrorCode(1_040_609_008, "å¤ç½®æ¹å¼ä¸è½ä¸ºç©ºï¼è¯·ä»[è®©æ¥æ¾è¡ãè¿ä¿®ãè¿å·¥ãæ¥åº]ä¸éæ©ä¸é¡¹"); |
| | | ErrorCode QC_NCR_DISPOSITION_INVALID = new ErrorCode(1_040_609_009, "å¤ç½®æ¹å¼[{}]ä¸å¨å
许èå´å
ï¼è¯·ä»[è®©æ¥æ¾è¡ãè¿ä¿®ãè¿å·¥ãæ¥åº]ä¸éæ©ä¸é¡¹"); |
| | | ErrorCode QC_NCR_DISPOSE_STORAGE_REQUIRED = new ErrorCode(1_040_609_011, "å¤ç½®æ¹å¼[{}]éè¦å
¥åºå°æå®åºä½ï¼å½åä»åº[{}]ãåºåº[{}]ãåºä½[{}]æªéå
¨ï¼è¯·åå°å¤ç½®å¼¹çªè¡¥é缺失项åéæ°æäº¤"); |
| | | ErrorCode QC_NCR_DISPOSE_BATCH_REQUIRED = new ErrorCode(1_040_609_012, "ç©æ[{}]å¯ç¨äºæ¹æ¬¡ç®¡çï¼å¤ç½®æ¹å¼[{}]å
¥åºæ¶å¿
é¡»å¡«åæ¹æ¬¡å·ï¼è¯·å¨å¤ç½®å¼¹çªç[æ¹æ¬¡å·]ä¸å¡«ååéè¯"); |
| | | ErrorCode QC_NCR_DISPOSE_QUANTITY_INVALID = new ErrorCode(1_040_609_013, "ä¸åæ ¼æ°é[{}]å¿
é¡»å¤§äº 0 æè½çæå
¥åºå/ç产订åï¼è¯·å
卿£éªåä¸ä¿®æ£ä¸åæ ¼æ°é"); |
| | | ErrorCode QC_NCR_DISPOSE_STORAGE_DISABLED = new ErrorCode(1_040_609_014, "å¤ç½®æ¹å¼[{}]æéåºä½[{}]ä¸å¯ç¨ï¼ä»åº[{}]ãåºåº[{}]ä¸åºä½[{}]çå½å±å
³ç³»ä¸ä¸è´ï¼è¯·åå°å¤ç½®å¼¹çªéæ°éæ©ä»åº/åºåº/åºä½"); |
| | | ErrorCode QC_NCR_DISPOSE_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_609_015, "ç©æ[{}]å¨ MES 产åä¸»æ°æ®ä¸ä¸åå¨ï¼MDM ç©æ ID={}ï¼ï¼æ æ³çæè¿å·¥/è¿ä¿®ç产订åï¼è¯·å
å¨[ç©æäº§å]ä¸ç»´æ¤è¯¥äº§åååå¤ç½®"); |
| | | |
| | | // ========== MES ä»åºç®¡ç-ä»åºï¼1-040-700-000ï¼ ========== |
| | | ErrorCode WM_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_700_000, "ä»åºä¸åå¨"); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.wm; |
| | | |
| | | import cn.iocoder.yudao.framework.common.core.ArrayValuable; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| | | * MES æé¡¹å
¥åºåç±»åæä¸¾ |
| | | * <p> |
| | | * ä¸åå
¸ {@code mes_wm_misc_receipt_type} ä¿æä¸è´ |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum MesWmMiscReceiptTypeEnum implements ArrayValuable<Integer> { |
| | | |
| | | ADJUST(1, "åºåè°æ´"), |
| | | CONCESSION(2, "è®©æ¥æ¾è¡å
¥åº"), |
| | | SCRAP(3, "æ¥åºå
¥åº"); |
| | | |
| | | private final Integer type; |
| | | private final String name; |
| | | |
| | | @Override |
| | | public Integer[] array() { |
| | | return Arrays.stream(values()).map(MesWmMiscReceiptTypeEnum::getType).toArray(Integer[]::new); |
| | | } |
| | | |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.mes.service.md.item; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportExcelVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdProductBomDO; |
| | |
| | | */ |
| | | void deleteProductBomByItemId(Long itemId); |
| | | |
| | | /** |
| | | * 导å
¥äº§å BOMï¼æç¶é¡¹/åé¡¹ç©æç¼ç å¹é
ï¼å·²åå¨çç¶åç»åé»è®¤è·³è¿ï¼æ¯æå¾éæ´æ°ç¨éï¼ |
| | | * |
| | | * @param importList 导å
¥æ°æ® |
| | | * @param updateSupport æ¯å¦æ´æ°å·²åå¨çç¶åç»å |
| | | * @return 导å
¥ç»æ |
| | | */ |
| | | MesMdProductBomImportRespVO importProductBomList(List<MesMdProductBomImportExcelVO> importList, |
| | | Boolean updateSupport); |
| | | |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.mes.service.md.item; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportExcelVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomImportRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.bom.MesMdProductBomSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdProductBomDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdProductBomMapper; |
| | | import jakarta.annotation.Resource; |
| | |
| | | productBomMapper.deleteByItemId(itemId); |
| | | } |
| | | |
| | | @Override |
| | | public MesMdProductBomImportRespVO importProductBomList(List<MesMdProductBomImportExcelVO> importList, |
| | | Boolean updateSupport) { |
| | | if (CollUtil.isEmpty(importList)) { |
| | | throw exception(MD_PRODUCT_BOM_IMPORT_LIST_IS_EMPTY); |
| | | } |
| | | MesMdProductBomImportRespVO respVO = MesMdProductBomImportRespVO.builder() |
| | | .createList(new ArrayList<>()).updateList(new ArrayList<>()) |
| | | .failureList(new LinkedHashMap<>()).build(); |
| | | |
| | | // 1. ç°æ BOM çç¶åç»åç´¢å¼ + 黿¥è¡¨ï¼ç¨äºå¤éåéç¯æ£æµï¼ |
| | | Map<String, MesMdProductBomDO> existingPairMap = new HashMap<>(); |
| | | Map<Long, Set<Long>> graph = new HashMap<>(); |
| | | for (MesMdProductBomDO bom : productBomMapper.selectAll()) { |
| | | existingPairMap.put(pairKey(bom.getItemId(), bom.getBomItemId()), bom); |
| | | graph.computeIfAbsent(bom.getItemId(), key -> new HashSet<>()).add(bom.getBomItemId()); |
| | | } |
| | | Map<String, Optional<MesMdItemDO>> itemCache = new HashMap<>(); |
| | | Set<String> filePairs = new HashSet<>(); |
| | | |
| | | // 2. éè¡æ ¡éª + 导å
¥ |
| | | int rowNo = 0; |
| | | for (MesMdProductBomImportExcelVO importVO : importList) { |
| | | rowNo++; |
| | | String parentCode = StrUtil.trim(importVO.getParentItemCode()); |
| | | String componentCode = StrUtil.trim(importVO.getBomItemCode()); |
| | | String rowKey = "第" + rowNo + "è¡ " + StrUtil.blankToDefault(parentCode, "(空ç¶é¡¹)") |
| | | + "â" + StrUtil.blankToDefault(componentCode, "(空å项)"); |
| | | // 2.1 åºç¡æ ¡éª |
| | | if (StrUtil.isBlank(parentCode) || StrUtil.isBlank(componentCode)) { |
| | | respVO.getFailureList().put("第" + rowNo + "è¡", |
| | | StrUtil.isBlank(parentCode) && StrUtil.isBlank(componentCode) ? "ç¶é¡¹ç©æç¼ç ååé¡¹ç©æç¼ç é½ä¸è½ä¸ºç©º" |
| | | : StrUtil.isBlank(parentCode) ? "ç¶é¡¹ç©æç¼ç ä¸è½ä¸ºç©º" : "åé¡¹ç©æç¼ç ä¸è½ä¸ºç©º"); |
| | | continue; |
| | | } |
| | | if (importVO.getQuantity() == null || importVO.getQuantity().signum() <= 0) { |
| | | respVO.getFailureList().put(rowKey, "åä½ç¨éå¿
é¡»å¤§äº 0ï¼å½å为ï¼" |
| | | + (importVO.getQuantity() == null ? "空" : importVO.getQuantity().toPlainString())); |
| | | continue; |
| | | } |
| | | // 2.2 ç¶é¡¹ãå项å¿
é¡»å·²å¨ MES ç©æä¸ç»´æ¤ |
| | | MesMdItemDO parent = lookupItem(itemCache, parentCode); |
| | | MesMdItemDO component = lookupItem(itemCache, componentCode); |
| | | if (parent == null) { |
| | | respVO.getFailureList().put(rowKey, "ç¶é¡¹ç©æç¼ç [" + parentCode |
| | | + "]å¨çäº§ç©æç®¡çä¸ä¸åå¨ï¼è¯·å
ç»´æ¤è¯¥ç©æåå导å
¥"); |
| | | continue; |
| | | } |
| | | if (component == null) { |
| | | respVO.getFailureList().put(rowKey, "åé¡¹ç©æç¼ç [" + componentCode |
| | | + "]å¨çäº§ç©æç®¡çä¸ä¸åå¨ï¼è¯·å
ç»´æ¤è¯¥ç©æåå导å
¥"); |
| | | continue; |
| | | } |
| | | if (parent.getId().equals(component.getId())) { |
| | | respVO.getFailureList().put(rowKey, "ç¶é¡¹ä¸å项ä¸è½æ¯åä¸ç©æ[" + parentCode + "]"); |
| | | continue; |
| | | } |
| | | String pairKey = pairKey(parent.getId(), component.getId()); |
| | | // 2.3 å·²åå¨çç¶åç»åï¼é»è®¤è·³è¿ï¼å¾éâæ¯ææ´æ°âæ¶åªæ´æ°ç¨é/夿³¨ï¼ç¶æä¿æåå¼ï¼ |
| | | MesMdProductBomDO existing = existingPairMap.get(pairKey); |
| | | if (existing != null) { |
| | | if (!Boolean.TRUE.equals(updateSupport)) { |
| | | respVO.getFailureList().put(rowKey, "该ç¶åç»åå·²åå¨ BOMï¼æ¬æ¬¡æªæ´æ°ï¼" |
| | | + "å¦éè¦çç¨é请å¾éâæ¯ææ´æ°âå鿰坼å
¥"); |
| | | continue; |
| | | } |
| | | MesMdProductBomDO updateObj = new MesMdProductBomDO().setId(existing.getId()) |
| | | .setQuantity(importVO.getQuantity()) |
| | | .setRemark(StrUtil.blankToDefault(importVO.getRemark(), existing.getRemark())); |
| | | productBomMapper.updateById(updateObj); |
| | | respVO.getUpdateList().add(parentCode + "â" + componentCode); |
| | | continue; |
| | | } |
| | | // 2.4 æä»¶å
éå¤ |
| | | if (filePairs.contains(pairKey)) { |
| | | respVO.getFailureList().put(rowKey, "åä¸ç¶åç»å卿件ä¸éå¤åºç°ï¼è¯·å并为ä¸è¡å鿰坼å
¥"); |
| | | continue; |
| | | } |
| | | // 2.5 éç¯æ£æµï¼åºäºç°æ BOM + æ¬æä»¶å·²æ¥åçè¡ï¼ |
| | | if (reaches(graph, component.getId(), parent.getId())) { |
| | | respVO.getFailureList().put(rowKey, "æ°å¢å BOM å°å½¢æå¾ªç¯å¼ç¨ï¼" + parentCode |
| | | + "â" + componentCode + "ï¼ï¼è¯·è°æ´ç¶åå
³ç³»å鿰坼å
¥"); |
| | | continue; |
| | | } |
| | | // 2.6 æ°å¢ |
| | | MesMdProductBomSaveReqVO saveReqVO = new MesMdProductBomSaveReqVO(); |
| | | saveReqVO.setItemId(parent.getId()); |
| | | saveReqVO.setBomItemId(component.getId()); |
| | | saveReqVO.setQuantity(importVO.getQuantity()); |
| | | saveReqVO.setStatus(0); // 导å
¥ç BOM é»è®¤å¯ç¨ |
| | | saveReqVO.setRemark(StrUtil.blankToDefault(importVO.getRemark(), null)); |
| | | createProductBom(saveReqVO); |
| | | filePairs.add(pairKey); |
| | | graph.computeIfAbsent(parent.getId(), key -> new HashSet<>()).add(component.getId()); |
| | | respVO.getCreateList().add(parentCode + "â" + componentCode); |
| | | } |
| | | return respVO; |
| | | } |
| | | |
| | | private MesMdItemDO lookupItem(Map<String, Optional<MesMdItemDO>> cache, String code) { |
| | | return cache.computeIfAbsent(code, |
| | | key -> Optional.ofNullable(itemService.getItemByCode(key))).orElse(null); |
| | | } |
| | | |
| | | private static String pairKey(Long itemId, Long bomItemId) { |
| | | return itemId + ":" + bomItemId; |
| | | } |
| | | |
| | | /** æ²¿ç°æï¼å«æ¬æ¬¡å·²æ¥åçï¼ç¶åè¾¹ä» start åºåï¼å¤æè½å¦å°è¾¾ target */ |
| | | private static boolean reaches(Map<Long, Set<Long>> graph, Long start, Long target) { |
| | | Deque<Long> stack = new ArrayDeque<>(); |
| | | Set<Long> visited = new HashSet<>(); |
| | | stack.push(start); |
| | | while (!stack.isEmpty()) { |
| | | Long node = stack.pop(); |
| | | if (!visited.add(node)) { |
| | | continue; |
| | | } |
| | | if (node.equals(target)) { |
| | | return true; |
| | | } |
| | | for (Long next : graph.getOrDefault(node, Set.of())) { |
| | | stack.push(next); |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.mes.service.qc.ncr; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrDisposeReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrDisposeRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ncr.MesQcNcrDO; |
| | |
| | | |
| | | /** |
| | | * æ§è¡ä¸åæ ¼åå¤ç½® |
| | | * <p> |
| | | * ä¸åå¤ç½®æ¹å¼ä¼èå¨çæä¸å¡åæ®å¹¶åååºå/çäº§ï¼ |
| | | * <ul> |
| | | * <li>è®©æ¥æ¾è¡(4)ï¼çææé¡¹å
¥åºåï¼åææä»ï¼ï¼èªå¨æäº¤å¹¶å®æå
¥åº</li> |
| | | * <li>æ¥åº(2)ï¼çææé¡¹å
¥åºåï¼ä¸åæ ¼åä»ï¼ï¼èªå¨æäº¤å¹¶å®æå
¥åº</li> |
| | | * <li>è¿å·¥(3)/è¿ä¿®(6)ï¼çæèªè¡ç产类åçç产订åï¼è稿ï¼å·¥èºè·¯çº¿ç±äººå·¥è¡¥å
ï¼</li> |
| | | * </ul> |
| | | * |
| | | * @param id ç¼å· |
| | | * @param disposition å¤ç½®æ¹å¼ï¼å¿
å¡«ï¼ |
| | | * @param handlerUserId å¤ç人ID |
| | | * @param handleResult å¤çç»æè¯´æ |
| | | * @param disposeReqVO å¤ç½®ä¿¡æ¯ï¼å«å
¥åºä»åº/åºåº/åºä½/æ¹æ¬¡å·ï¼ |
| | | * @return çæçä¸å¡åæ®ä¿¡æ¯ |
| | | */ |
| | | void disposeNcr(Long id, Integer disposition, Long handlerUserId, String handleResult); |
| | | MesQcNcrDisposeRespVO disposeNcr(@Valid MesQcNcrDisposeReqVO disposeReqVO); |
| | | |
| | | /** |
| | | * æäº¤ä¸åæ ¼åå¤çåå®¡æ¹ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.qc.ncr; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; |
| | | import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; |
| | | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrDisposeReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrDisposeRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.MesWmMiscReceiptSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ncr.MesQcNcrDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.qc.ncr.MesQcNcrMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderSourceTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesNcrDispositionEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesNcrStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmMiscReceiptTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.miscreceipt.MesWmMiscReceiptLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.miscreceipt.MesWmMiscReceiptService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Collection; |
| | | import java.util.Map; |
| | |
| | | @Resource |
| | | @Lazy |
| | | private MesQcRqcService rqcService; |
| | | |
| | | @Resource |
| | | @Lazy |
| | | private MesWmMiscReceiptService miscReceiptService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmMiscReceiptLineService miscReceiptLineService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmWarehouseLocationService warehouseLocationService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | @Lazy |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | | @Lazy |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | @Lazy |
| | | private MesMdItemService mesItemService; |
| | | @Resource |
| | | @Lazy |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | |
| | | /** |
| | | * æé¡¹å
¥åºåæ¥æºåæ®ç±»åï¼ä¸åæ ¼åå¤çå |
| | | */ |
| | | private static final String MISC_RECEIPT_SOURCE_TYPE_NCR = "QC_NCR"; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void disposeNcr(Long id, Integer disposition, Long handlerUserId, String handleResult) { |
| | | public MesQcNcrDisposeRespVO disposeNcr(MesQcNcrDisposeReqVO disposeReqVO) { |
| | | // 1. æ ¡éªåå¨ + å·²è¯å®¡ï¼å®¡æ¹éè¿ï¼ç¶æ |
| | | MesQcNcrDO ncr = validateNcrExists(id); |
| | | MesQcNcrDO ncr = validateNcrExists(disposeReqVO.getId()); |
| | | if (!MesNcrStatusEnum.REVIEWED.getStatus().equals(ncr.getStatus())) { |
| | | throw exception(QC_NCR_DISPOSE_STATUS_INVALID, ncr.getCode(), resolveStatusName(ncr.getStatus())); |
| | | } |
| | | // 2. å¤ç½®æ¹å¼å¿
å¡«ï¼ä¸å¿
é¡»æ¯åæ³æä¸¾å¼ |
| | | validateDisposition(disposition); |
| | | validateDisposition(disposeReqVO.getDisposition()); |
| | | // 3. ä¸åæ ¼æ°éå¿
é¡»å¤§äº 0ï¼å¦åæ æ³çæå
¥åºå / ç产订å |
| | | if (ncr.getUnqualifiedQuantity() == null |
| | | || ncr.getUnqualifiedQuantity().compareTo(BigDecimal.ZERO) <= 0) { |
| | | throw exception(QC_NCR_DISPOSE_QUANTITY_INVALID, ncr.getUnqualifiedQuantity()); |
| | | } |
| | | |
| | | // 3. æ´æ°å¤ç½®ä¿¡æ¯ï¼å¤ç½®æ¹å¼ä»¥æ¬æ¬¡å¤ç½®éæ©ä¸ºåå¹¶è½åºï¼ |
| | | // TODO: WM 模åéæ â å¤ç½®ä¸ºéè´§æ¶è§¦åä¾åºåéè´§ï¼å¤ç½®ä¸ºæ¥åºæ¶è§¦åæé¡¹åºåº |
| | | // 4. æå¤ç½®æ¹å¼èå¨çæä¸å¡åæ® |
| | | MesQcNcrDisposeRespVO respVO; |
| | | if (Objects.equals(MesNcrDispositionEnum.CONCESSION.getType(), disposeReqVO.getDisposition()) |
| | | || Objects.equals(MesNcrDispositionEnum.SCRAP.getType(), disposeReqVO.getDisposition())) { |
| | | // è®©æ¥æ¾è¡ / æ¥åºï¼çææé¡¹å
¥åºåå¹¶èªå¨å®æå
¥åº |
| | | respVO = createMiscReceiptForDispose(ncr, disposeReqVO); |
| | | } else { |
| | | // è¿å·¥ / è¿ä¿®ï¼çæèªè¡ç产类åçç产订å |
| | | respVO = createReworkWorkOrderForDispose(ncr, disposeReqVO); |
| | | } |
| | | |
| | | // 5. æ´æ°å¤ç½®ä¿¡æ¯ï¼å¤ç½®æ¹å¼ä»¥æ¬æ¬¡å¤ç½®éæ©ä¸ºåå¹¶è½åºï¼ |
| | | ncrMapper.updateById(new MesQcNcrDO() |
| | | .setId(id) |
| | | .setDisposition(disposition) |
| | | .setHandlerUserId(handlerUserId) |
| | | .setId(ncr.getId()) |
| | | .setDisposition(disposeReqVO.getDisposition()) |
| | | .setHandlerUserId(disposeReqVO.getHandlerUserId()) |
| | | .setHandleDate(LocalDateTime.now()) |
| | | .setHandleResult(handleResult) |
| | | .setHandleResult(disposeReqVO.getHandleResult()) |
| | | .setStatus(MesNcrStatusEnum.DISPOSED.getStatus())); |
| | | return respVO; |
| | | } |
| | | |
| | | /** |
| | | * è®©æ¥æ¾è¡ / æ¥åºï¼çææé¡¹å
¥åºåï¼èªå¨æäº¤å¹¶å®æå
¥åº |
| | | */ |
| | | private MesQcNcrDisposeRespVO createMiscReceiptForDispose(MesQcNcrDO ncr, MesQcNcrDisposeReqVO reqVO) { |
| | | boolean scrap = Objects.equals(MesNcrDispositionEnum.SCRAP.getType(), reqVO.getDisposition()); |
| | | String dispositionName = scrap ? MesNcrDispositionEnum.SCRAP.getName() : MesNcrDispositionEnum.CONCESSION.getName(); |
| | | MesWmMiscReceiptTypeEnum receiptType = scrap |
| | | ? MesWmMiscReceiptTypeEnum.SCRAP : MesWmMiscReceiptTypeEnum.CONCESSION; |
| | | |
| | | // 4.1 æ ¡éªå
¥åºä»åº / åºåº / åºä½ |
| | | MesMdmItemDO item = mdmItemService.validateItemExists(ncr.getItemId()); |
| | | if (reqVO.getWarehouseId() == null || reqVO.getLocationId() == null || reqVO.getAreaId() == null) { |
| | | throw new ServiceException(QC_NCR_DISPOSE_STORAGE_REQUIRED.getCode(), |
| | | String.format("å¤ç½®æ¹å¼[%s]éè¦å
¥åºå°æå®åºä½ï¼å½åä»åº[%s]ãåºåº[%s]ãåºä½[%s]æªéå
¨ï¼" |
| | | + "请åå°å¤ç½®å¼¹çªè¡¥é缺失项åéæ°æäº¤", |
| | | dispositionName, resolveWarehouseName(reqVO.getWarehouseId()), |
| | | resolveLocationName(reqVO.getLocationId()), resolveAreaName(reqVO.getAreaId()))); |
| | | } |
| | | try { |
| | | warehouseAreaService.validateWarehouseAreaExists( |
| | | reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId()); |
| | | } catch (ServiceException ex) { |
| | | throw new ServiceException(QC_NCR_DISPOSE_STORAGE_DISABLED.getCode(), |
| | | String.format("å¤ç½®æ¹å¼[%s]æéå
¥åºåºä½æ ¡éªå¤±è´¥ï¼ä»åº[%s]ãåºåº[%s]ãåºä½[%s]ãåå ï¼%sï¼" |
| | | + "请åå°å¤ç½®å¼¹çªéæ°éæ©ä»åº/åºåº/åºä½", |
| | | dispositionName, resolveWarehouseName(reqVO.getWarehouseId()), |
| | | resolveLocationName(reqVO.getLocationId()), resolveAreaName(reqVO.getAreaId()), |
| | | ex.getMessage())); |
| | | } |
| | | |
| | | // 4.2 æ¹æ¬¡ç®¡ççç©æï¼æ¹æ¬¡å·å¿
å¡«ï¼ä¸å卿¶èªå¨åå»ºæ¹æ¬¡ |
| | | String batchCode = StrUtil.trimToNull(reqVO.getBatchCode()); |
| | | if (Boolean.TRUE.equals(item.getIsBatchManaged())) { |
| | | if (batchCode == null) { |
| | | throw new ServiceException(QC_NCR_DISPOSE_BATCH_REQUIRED.getCode(), |
| | | String.format("ç©æ[%s]å¯ç¨äºæ¹æ¬¡ç®¡çï¼å¤ç½®æ¹å¼[%s]å
¥åºæ¶å¿
é¡»å¡«åæ¹æ¬¡å·ï¼" |
| | | + "请å¨å¤ç½®å¼¹çªç[æ¹æ¬¡å·]ä¸å¡«ååéè¯", buildItemLabel(item), dispositionName)); |
| | | } |
| | | MesWmBatchGenerateReqVO batchReqVO = new MesWmBatchGenerateReqVO(); |
| | | batchReqVO.setItemId(ncr.getItemId()); |
| | | batchReqVO.setBatchCode(batchCode); |
| | | batchReqVO.setReceiptDate(LocalDateTime.now()); |
| | | try { |
| | | batchService.getOrGenerateBatchCode(batchReqVO); |
| | | } catch (ServiceException ex) { |
| | | throw new ServiceException(ex.getCode(), |
| | | String.format("ä¸ºç©æ[%s]å夿¹æ¬¡[%s]失败ï¼%sï¼è¯·è¡¥å
æ¹æ¬¡ä¿¡æ¯åéæ°å¤ç½®", |
| | | buildItemLabel(item), batchCode, ex.getMessage())); |
| | | } |
| | | } |
| | | |
| | | // 4.3 å建æé¡¹å
¥åºå |
| | | String receiptCode = autoCodeRecordService.generateAutoCode( |
| | | MesMdAutoCodeRuleCodeEnum.WM_MISC_RECEIPT_CODE.getCode()); |
| | | String receiptName = String.format("%så
¥åºå-%s", dispositionName, ncr.getCode()); |
| | | MesWmMiscReceiptSaveReqVO receiptReqVO = new MesWmMiscReceiptSaveReqVO(); |
| | | receiptReqVO.setCode(receiptCode); |
| | | receiptReqVO.setName(receiptName); |
| | | receiptReqVO.setType(receiptType.getType()); |
| | | receiptReqVO.setSourceDocType(MISC_RECEIPT_SOURCE_TYPE_NCR); |
| | | receiptReqVO.setSourceDocId(ncr.getId()); |
| | | receiptReqVO.setSourceDocCode(ncr.getCode()); |
| | | receiptReqVO.setReceiptDate(LocalDateTime.now()); |
| | | receiptReqVO.setRemark(String.format("ç±ä¸åæ ¼åå¤çå[%s]å¤ç½®ä¸º[%s]èªå¨çæå¹¶å®æå
¥åº", |
| | | ncr.getCode(), dispositionName)); |
| | | Long receiptId = miscReceiptService.createMiscReceipt(receiptReqVO); |
| | | |
| | | // 4.4 å建å
¥åºè¡ï¼åç©æ / ä¸åæ ¼æ°é / ç®æ åºä½ / æ¹æ¬¡å·ï¼ |
| | | MesWmMiscReceiptLineSaveReqVO lineReqVO = new MesWmMiscReceiptLineSaveReqVO(); |
| | | lineReqVO.setReceiptId(receiptId); |
| | | lineReqVO.setItemId(ncr.getItemId()); |
| | | lineReqVO.setQuantity(ncr.getUnqualifiedQuantity()); |
| | | lineReqVO.setBatchCode(batchCode); |
| | | lineReqVO.setWarehouseId(reqVO.getWarehouseId()); |
| | | lineReqVO.setLocationId(reqVO.getLocationId()); |
| | | lineReqVO.setAreaId(reqVO.getAreaId()); |
| | | lineReqVO.setRemark(String.format("æ¥æºä¸åæ ¼åå¤çå[%s]", ncr.getCode())); |
| | | miscReceiptLineService.createMiscReceiptLine(lineReqVO); |
| | | |
| | | // 4.5 èªå¨æäº¤å¹¶å®æå
¥åºï¼å¢å åºå + è®°å½æµæ°´ï¼ |
| | | miscReceiptService.submitMiscReceipt(receiptId); |
| | | miscReceiptService.finishMiscReceipt(receiptId); |
| | | |
| | | MesQcNcrDisposeRespVO respVO = new MesQcNcrDisposeRespVO(); |
| | | respVO.setDisposition(reqVO.getDisposition()); |
| | | respVO.setDocType("MISC_RECEIPT"); |
| | | respVO.setDocId(receiptId); |
| | | respVO.setDocCode(receiptCode); |
| | | respVO.setDocName(receiptName); |
| | | respVO.setMessage(String.format("å·²çæ%s并宿å
¥åºï¼å
¥åºåå·[%s]", receiptName, receiptCode)); |
| | | return respVO; |
| | | } |
| | | |
| | | /** |
| | | * è¿å·¥ / è¿ä¿®ï¼çæèªè¡ç产类åçç产订åï¼è稿æï¼BOM/æ¡ç èªå¨çæï¼å·¥èºè·¯çº¿äººå·¥è¡¥å
ï¼ |
| | | */ |
| | | private MesQcNcrDisposeRespVO createReworkWorkOrderForDispose(MesQcNcrDO ncr, MesQcNcrDisposeReqVO reqVO) { |
| | | boolean rework = Objects.equals(MesNcrDispositionEnum.REWORK.getType(), reqVO.getDisposition()); |
| | | String dispositionName = rework ? MesNcrDispositionEnum.REWORK.getName() : MesNcrDispositionEnum.REPAIR.getName(); |
| | | |
| | | // ç产订åçäº§åæ¯ MES 产åä¸»æ°æ®ï¼mes_md_itemï¼ï¼NCR åçæ¯ MDM ç©æï¼mdm_itemï¼ï¼éå
æ å° |
| | | MesMdItemDO product = mesItemService.getItemByMdmItemId(ncr.getItemId()); |
| | | if (product == null) { |
| | | // å
¼å®¹å岿°æ®ï¼MES 产åä¸ MDM ç©æä¸»é®ä¸è´æ¶ç´æ¥æä¸»é®å |
| | | product = mesItemService.getItem(ncr.getItemId()); |
| | | } |
| | | if (product == null) { |
| | | MesMdmItemDO mdmItem = mdmItemService.getItem(ncr.getItemId()); |
| | | throw new ServiceException(QC_NCR_DISPOSE_PRODUCT_NOT_EXISTS.getCode(), |
| | | String.format("ç©æ[%s]å¨ MES 产åä¸»æ°æ®ä¸ä¸åå¨ï¼MDM ç©æ ID=%sï¼ï¼æ æ³çæè¿å·¥/è¿ä¿®ç产订åï¼" |
| | | + "请å
å¨[ç©æäº§å]ä¸ç»´æ¤è¯¥äº§åååå¤ç½®", |
| | | mdmItem != null ? buildItemLabel(mdmItem) : "æªç¥ç©æ", ncr.getItemId())); |
| | | } |
| | | |
| | | String workOrderCode = autoCodeRecordService.generateAutoCode( |
| | | MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode()); |
| | | String workOrderName = String.format("%så-%s", dispositionName, ncr.getCode()); |
| | | MesProWorkOrderSaveReqVO workOrderReqVO = new MesProWorkOrderSaveReqVO(); |
| | | workOrderReqVO.setCode(workOrderCode); |
| | | workOrderReqVO.setName(workOrderName); |
| | | workOrderReqVO.setType(MesProWorkOrderTypeEnum.SELF.getType()); |
| | | workOrderReqVO.setOrderSourceType(MesProWorkOrderSourceTypeEnum.STORE.getType()); |
| | | workOrderReqVO.setOrderSourceCode(ncr.getCode()); |
| | | workOrderReqVO.setProductId(product.getId()); |
| | | workOrderReqVO.setQuantity(ncr.getUnqualifiedQuantity()); |
| | | workOrderReqVO.setRequestDate(LocalDateTime.now()); |
| | | workOrderReqVO.setRemark(String.format("ç±ä¸åæ ¼åå¤çå[%s]å¤ç½®ä¸º[%s]èªå¨çæï¼è¯·è¡¥å
å·¥èºè·¯çº¿åä¸è¾¾", |
| | | ncr.getCode(), dispositionName)); |
| | | // åºè´§æ£éªæ¥æºç NCRï¼å¸¦ä¸å®¢æ·ï¼æ»¡è¶³äº§åæ¹æ¬¡é
ç½®ï¼clientFlagï¼å¯¹å®¢æ·å¿
å¡«çè¦æ± |
| | | Long clientId = resolveSourceClientId(ncr); |
| | | if (clientId != null) { |
| | | workOrderReqVO.setClientId(clientId); |
| | | } |
| | | Long workOrderId = workOrderService.createWorkOrder(workOrderReqVO); |
| | | |
| | | MesQcNcrDisposeRespVO respVO = new MesQcNcrDisposeRespVO(); |
| | | respVO.setDisposition(reqVO.getDisposition()); |
| | | respVO.setDocType("WORK_ORDER"); |
| | | respVO.setDocId(workOrderId); |
| | | respVO.setDocCode(workOrderCode); |
| | | respVO.setDocName(workOrderName); |
| | | respVO.setMessage(String.format("å·²çæ%s[%s]ï¼è¯·å°ç产订åä¸è¡¥å
å·¥èºè·¯çº¿åä¸è¾¾", workOrderName, workOrderCode)); |
| | | return respVO; |
| | | } |
| | | |
| | | /** |
| | | * åæ¥æºæ£éªåä¸ç客æ·ï¼ä»
åºè´§æ£éªï¼OQCï¼å¸¦æå®¢æ·ä¿¡æ¯ |
| | | */ |
| | | private Long resolveSourceClientId(MesQcNcrDO ncr) { |
| | | if (!Objects.equals(MesQcTypeEnum.OQC.getType(), ncr.getQcType()) || ncr.getQcId() == null) { |
| | | return null; |
| | | } |
| | | MesQcOqcDO oqc = oqcService.getOqc(ncr.getQcId()); |
| | | return oqc != null ? oqc.getClientId() : null; |
| | | } |
| | | |
| | | /** |
| | | * ç©æå±ç¤ºï¼ç¼ç + åç§° |
| | | */ |
| | | private String buildItemLabel(MesMdmItemDO item) { |
| | | if (item == null) { |
| | | return "æªç¥ç©æ"; |
| | | } |
| | | String code = StrUtil.blankToDefault(item.getCode(), ""); |
| | | String name = StrUtil.blankToDefault(item.getName(), ""); |
| | | String label = (code + " " + name).trim(); |
| | | return label.isEmpty() ? "ID=" + item.getId() : label; |
| | | } |
| | | |
| | | /** |
| | | * ä»åºåç§°ï¼è§£æå¤±è´¥åé为å¯è¯» ID |
| | | */ |
| | | private String resolveWarehouseName(Long warehouseId) { |
| | | if (warehouseId == null) { |
| | | return "æªéæ©"; |
| | | } |
| | | MesWmWarehouseDO warehouse = warehouseService.getWarehouse(warehouseId); |
| | | return warehouse != null && StrUtil.isNotBlank(warehouse.getName()) |
| | | ? warehouse.getName() : "ID=" + warehouseId; |
| | | } |
| | | |
| | | /** |
| | | * åºåºåç§°ï¼è§£æå¤±è´¥åé为å¯è¯» ID |
| | | */ |
| | | private String resolveLocationName(Long locationId) { |
| | | if (locationId == null) { |
| | | return "æªéæ©"; |
| | | } |
| | | MesWmWarehouseLocationDO location = warehouseLocationService.getWarehouseLocation(locationId); |
| | | return location != null && StrUtil.isNotBlank(location.getName()) |
| | | ? location.getName() : "ID=" + locationId; |
| | | } |
| | | |
| | | /** |
| | | * åºä½åç§°ï¼è§£æå¤±è´¥åé为å¯è¯» ID |
| | | */ |
| | | private String resolveAreaName(Long areaId) { |
| | | if (areaId == null) { |
| | | return "æªéæ©"; |
| | | } |
| | | MesWmWarehouseAreaDO area = warehouseAreaService.getWarehouseArea(areaId); |
| | | return area != null && StrUtil.isNotBlank(area.getName()) |
| | | ? area.getName() : "ID=" + areaId; |
| | | } |
| | | |
| | | @Override |
| | |
| | | wmTransactionService.createTransactionList(convertList(lines, line -> new MesWmTransactionSaveReqDTO() |
| | | .setType(MesWmTransactionTypeEnum.IN.getType()).setItemId(line.getItemId()) |
| | | .setQuantity(line.getQuantity()) // å
¥åºæ°éä¸ºæ£æ° |
| | | .setBatchCode(line.getBatchCode()) // æ¹æ¬¡ç®¡çç©æå
¥åºå¿
é¡»å¸¦æ¹æ¬¡å· |
| | | .setWarehouseId(line.getWarehouseId()).setLocationId(line.getLocationId()).setAreaId(line.getAreaId()) |
| | | .setBizType(MesBizTypeConstants.WM_MISC_RECPT).setBizId(receipt.getId()).setBizCode(receipt.getCode()).setBizLineId(line.getId()))); |
| | | } |