.playwright-mcp/qc-template-fixed.png
analytics-5668.png
arrival-current.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,373 @@ - generic [ref=f13e90]: - complementary [ref=f13e91]: - generic [ref=f13e92]: - generic [ref=f13e93] [cursor=pointer] - link "æ°é«çµåæºé å¹³å° æ°é«çµåæºé å¹³å°" [ref=f13e98] [cursor=pointer]: - /url: javascript:void 0 - img "æ°é«çµåæºé å¹³å°" [ref=f13e101] - generic [ref=f13e102]: æ°é«çµåæºé å¹³å° - menu [ref=f13e105]: - menuitem "é¦é¡µ" [ref=f13e106] [cursor=pointer] - listitem [ref=f13e113]: - generic [ref=f13e114] [cursor=pointer]: çäº§ç®¡æ§ - listitem [ref=f13e121]: - generic [ref=f13e122] [cursor=pointer]: å·¥èºè®¾è®¡ - listitem [ref=f13e129]: - generic [ref=f13e130] [cursor=pointer]: 产å设计 - listitem [ref=f13e136]: - generic [ref=f13e137] [cursor=pointer]: è¥é管ç - listitem [ref=f13e143]: - generic [ref=f13e144] [cursor=pointer]: å®åæå¡ - listitem [ref=f13e150]: - generic [ref=f13e151] [cursor=pointer]: 计åæç¨ - listitem [ref=f13e157]: - generic [ref=f13e158] [cursor=pointer]: è´¨é管ç - listitem [ref=f13e164]: - generic [ref=f13e165] [cursor=pointer]: 设å¤ç®¡ç - listitem [ref=f13e172]: - generic [ref=f13e173] [cursor=pointer]: éè´ç®¡ç - listitem [ref=f13e179]: - generic [ref=f13e180] [cursor=pointer]: ä»å¨ç©æµ - list [ref=f13e3287]: - menuitem "åºåäºå¡æµæ°´" [ref=f13e3288] [cursor=pointer] - menuitem "ä»åºè®¾ç½®" [ref=f13e3293] [cursor=pointer] - menuitem "åºåç°æé" [ref=f13e3300] [cursor=pointer] - listitem [ref=f13e3305]: - generic [ref=f13e3306] [cursor=pointer]: éè´ä»åº - list [ref=f13e3312]: - menuitem "å°è´§éç¥" [ref=f13e3313] [cursor=pointer] - menuitem "éè´å ¥åº" [ref=f13e3318] [cursor=pointer] - menuitem "éè´éè´§" [ref=f13e3323] [cursor=pointer] - listitem [ref=f13e3330]: - generic [ref=f13e3331] [cursor=pointer]: ç产ä»åº - listitem [ref=f13e3338]: - generic [ref=f13e3339] [cursor=pointer]: éå®ä»åº - menuitem "è½¬ç§»è°æ¨" [ref=f13e3345] [cursor=pointer] - listitem [ref=f13e3350]: - generic [ref=f13e3351] [cursor=pointer]: åºåçç¹ - menuitem "è£ ç®±ç®¡ç" [ref=f13e3357] [cursor=pointer] - menuitem "èµè½ç®¡ç" [ref=f13e3364] [cursor=pointer] - menuitem "SN ç " [ref=f13e3369] [cursor=pointer] - menuitem "å¤ååæ" [ref=f13e3374] [cursor=pointer] - menuitem "å¤åå ¥åº" [ref=f13e3379] [cursor=pointer] - menuitem "æé¡¹å ¥åº" [ref=f13e3384] [cursor=pointer] - menuitem "æé¡¹åºåº" [ref=f13e3389] [cursor=pointer] - menuitem "设å¤å ¥åº" [ref=f13e3394] [cursor=pointer] - listitem [ref=f13e188]: - generic [ref=f13e189] [cursor=pointer]: 人åèµæº - listitem [ref=f13e195]: - generic [ref=f13e196] [cursor=pointer]: å³çæ¯æ - listitem [ref=f13e202]: - generic [ref=f13e203] [cursor=pointer]: è½è管ç - listitem [ref=f13e210]: - generic [ref=f13e211] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f13e219]: - generic [ref=f13e220] [cursor=pointer]: åååå ¬ - listitem [ref=f13e226]: - generic [ref=f13e227] [cursor=pointer]: åºç¡è®¾æ½ - listitem [ref=f13e233]: - generic [ref=f13e234] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f13e241] [cursor=pointer] - generic [ref=f13e246]: - generic [ref=f13e247]: - banner [ref=f13e248]: - button [ref=f13e249] [cursor=pointer] - button [ref=f13e252] [cursor=pointer] - navigation "breadcrumb" [ref=f13e257]: - list [ref=f13e258]: - listitem [ref=f13e3399]: - link "ä»å¨ç©æµ" [ref=f13e3400] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f13e3406] - listitem [ref=f13e3409]: - link "éè´ä»åº" [ref=f13e3410] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f13e3414] - listitem [ref=f13e5858]: - link "å°è´§éç¥" [disabled] [ref=f13e5859] - generic [ref=f13e267]: - generic [ref=f13e269] [cursor=pointer]: - generic [ref=f13e273]: æç´¢ - generic [ref=f13e274]: Ctrl K - button [ref=f13e276] [cursor=pointer] - button "dark" [ref=f13e281] [cursor=pointer] - button [ref=f13e290] [cursor=pointer] - button [ref=f13e296] [cursor=pointer] - button [ref=f13e299] [cursor=pointer] - button [ref=f13e305] [cursor=pointer]: - button [ref=f13e307] - button "å·¥ä½å°" [ref=f13e311] [cursor=pointer] - button "è¶ çº§ç®¡çå" [ref=f13e315] [cursor=pointer]: - img "è¶ çº§ç®¡çå" [ref=f13e320] - generic [ref=f13e322]: - generic [ref=f13e327]: - generic [ref=f13e328] [cursor=pointer]: é¦é¡µ - generic [ref=f13e729] [cursor=pointer]: ç产订å - generic [ref=f13e3423] [cursor=pointer]: å°è´§éç¥ - generic [ref=f13e4865] [cursor=pointer]: éè´å ¥åº - generic [ref=f13e344]: - button [ref=f13e345] [cursor=pointer] - generic [ref=f13e352] [cursor=pointer] - generic [ref=f13e356] [cursor=pointer] - main [ref=f13e363]: - generic [ref=f13e5867]: - generic [ref=f13e5872]: - generic [ref=f13e5873]: - generic [ref=f13e5874]: éç¥åç¼å· - textbox "éç¥åç¼å·" [ref=f13e5880]: - /placeholder: 请è¾å ¥éç¥åç¼å· - generic [ref=f13e5882]: - generic [ref=f13e5883]: éç¥ååç§° - textbox "éç¥ååç§°" [ref=f13e5889]: - /placeholder: 请è¾å ¥éç¥ååç§° - generic [ref=f13e5891]: - generic [ref=f13e5892]: éè´è®¢åå· - textbox "éè´è®¢åå·" [ref=f13e5898]: - /placeholder: 请è¾å ¥éè´è®¢åå· - generic [ref=f13e5900]: - generic [ref=f13e5901]: ä¾åºå - textbox "ä¾åºå" [ref=f13e5907]: - /placeholder: 请è¾å ¥ä¾åºååç§° - generic [ref=f13e5909]: - generic [ref=f13e5910]: å°è´§æ¥æ - generic [ref=f13e5915]: - textbox "å°è´§æ¥æ" [ref=f13e5917]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f13e5919]: - img "swap-right" [ref=f13e5920] - textbox "ç»ææ¶é´" [ref=f13e5924] - generic: - img "calendar" - generic [ref=f13e5925]: - button "é ç½®" [ref=f13e5926] [cursor=pointer] - button "æ ç´¢" [ref=f13e5928] [cursor=pointer] - generic [ref=f13e5930] [cursor=pointer]: æ¶èµ· - generic [ref=f13e5937]: - generic [ref=f13e5939]: - generic [ref=f13e5940]: å°è´§éç¥åå表 - generic [ref=f13e5944]: - generic [ref=f13e5946]: - button "ä»éè´è®¢åçæ" [active] [ref=f13e5948] [cursor=pointer] - button "å¯¼å ¥" [ref=f13e5953] [cursor=pointer] - button "导åº" [ref=f13e5958] [cursor=pointer] - button "î" [ref=f13e5964] [cursor=pointer] - generic [ref=f13e5966]: - button "î©" [ref=f13e5967] [cursor=pointer] - button "î" [ref=f13e5969] [cursor=pointer] - button "î" [ref=f13e5971] [cursor=pointer] - generic [ref=f13e5979]: - table [ref=f13e5983]: - rowgroup [ref=f13e5994]: - row "éç¥åç¼å· éç¥ååç§° éè´è®¢åå· ä¾åºååç§° è系人 èç³»æ¹å¼ å°è´§æ¥æ åæ®ç¶æ æä½" [ref=f13e5995]: - columnheader "éç¥åç¼å·" [ref=f13e5996] - columnheader "éç¥ååç§°" [ref=f13e6001] - columnheader "éè´è®¢åå·" [ref=f13e6006] - columnheader "ä¾åºååç§°" [ref=f13e6011] - columnheader "è系人" [ref=f13e6016] - columnheader "èç³»æ¹å¼" [ref=f13e6021] - columnheader "å°è´§æ¥æ" [ref=f13e6026] - columnheader "åæ®ç¶æ" [ref=f13e6031] - columnheader "æä½" [ref=f13e6036] - table [ref=f13e6044]: - rowgroup [ref=f13e6055]: - row "AN1792846891133 CGDD20261024000001å°è´§éç¥ CGDD20261024000001 ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸ 2026-10-24 å¾ å ¥åº æ§è¡å ¥åº" [ref=f13e6056]: - cell "AN1792846891133" [ref=f13e6057]: - button "AN1792846891133" [ref=f13e6060] [cursor=pointer] - cell "CGDD20261024000001å°è´§éç¥" [ref=f13e6062] - cell "CGDD20261024000001" [ref=f13e6066] - cell "ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸" [ref=f13e6070] - cell [ref=f13e6074] - cell [ref=f13e6078] - cell "2026-10-24" [ref=f13e6082] - cell "å¾ å ¥åº" [ref=f13e6086] - cell "æ§è¡å ¥åº" [ref=f13e6090]: - button "æ§è¡å ¥åº" [ref=f13e6096] [cursor=pointer] - row "DH261005016 CGDD20260925004 å°è´§éç¥ CGDD20260925004 ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸ è¾åæ±Â·ä¹°ä¹°æ 13909902018 2026-10-05 已宿" [ref=f13e6098]: - cell "DH261005016" [ref=f13e6099]: - button "DH261005016" [ref=f13e6102] [cursor=pointer] - cell "CGDD20260925004 å°è´§éç¥" [ref=f13e6104] - cell "CGDD20260925004" [ref=f13e6108] - cell "ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸" [ref=f13e6112] - cell "è¾åæ±Â·ä¹°ä¹°æ" [ref=f13e6116] - cell "13909902018" [ref=f13e6120] - cell "2026-10-05" [ref=f13e6124] - cell "已宿" [ref=f13e6128] - cell [ref=f13e6132] - row "DH260930015 CGDD20260924004 å°è´§éç¥ CGDD20260924004 æ²³åç¡ è°·åå·¥æéå ¬å¸ å¼ æµ·æ¶ 13383105672 2026-09-30 已宿" [ref=f13e6134]: - cell "DH260930015" [ref=f13e6135]: - button "DH260930015" [ref=f13e6138] [cursor=pointer] - cell "CGDD20260924004 å°è´§éç¥" [ref=f13e6140] - cell "CGDD20260924004" [ref=f13e6144] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e6148] - cell "å¼ æµ·æ¶" [ref=f13e6152] - cell "13383105672" [ref=f13e6156] - cell "2026-09-30" [ref=f13e6160] - cell "已宿" [ref=f13e6164] - cell [ref=f13e6168] - row "DH260929014 CGDD20260924003 å°è´§éç¥ CGDD20260924003 æ°çä¼åè¡ä»½æéå ¬å¸ æçº¢æ¢ 13999902876 2026-09-29 已宿" [ref=f13e6170]: - cell "DH260929014" [ref=f13e6171]: - button "DH260929014" [ref=f13e6174] [cursor=pointer] - cell "CGDD20260924003 å°è´§éç¥" [ref=f13e6176] - cell "CGDD20260924003" [ref=f13e6180] - cell "æ°çä¼åè¡ä»½æéå ¬å¸" [ref=f13e6184] - cell "æçº¢æ¢ " [ref=f13e6188] - cell "13999902876" [ref=f13e6192] - cell "2026-09-29" [ref=f13e6196] - cell "已宿" [ref=f13e6200] - cell [ref=f13e6204] - row "DH261005013 CGDD20260925003 å°è´§éç¥ CGDD20260925003 æ²³åç¡ è°·åå·¥æéå ¬å¸ å¼ æµ·æ¶ 13383105672 2026-10-05 已宿" [ref=f13e6206]: - cell "DH261005013" [ref=f13e6207]: - button "DH261005013" [ref=f13e6210] [cursor=pointer] - cell "CGDD20260925003 å°è´§éç¥" [ref=f13e6212] - cell "CGDD20260925003" [ref=f13e6216] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e6220] - cell "å¼ æµ·æ¶" [ref=f13e6224] - cell "13383105672" [ref=f13e6228] - cell "2026-10-05" [ref=f13e6232] - cell "已宿" [ref=f13e6236] - cell [ref=f13e6240] - row "DH260930012 CGDD20260925002 å°è´§éç¥ CGDD20260925002 ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸ ä¹°ä¹°æÂ·åå°é 13199876235 2026-09-30 已宿" [ref=f13e6242]: - cell "DH260930012" [ref=f13e6243]: - button "DH260930012" [ref=f13e6246] [cursor=pointer] - cell "CGDD20260925002 å°è´§éç¥" [ref=f13e6248] - cell "CGDD20260925002" [ref=f13e6252] - cell "ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸" [ref=f13e6256] - cell "ä¹°ä¹°æÂ·åå°é" [ref=f13e6260] - cell "13199876235" [ref=f13e6264] - cell "2026-09-30" [ref=f13e6268] - cell "已宿" [ref=f13e6272] - cell [ref=f13e6276] - row "DH261004011 CGDD20260925001 å°è´§éç¥ CGDD20260925001 ç¹åçµå·¥æ°çæ°è½æºè¡ä»½æéå ¬å¸ é©¬æä¸ 13609987654 2026-10-04 已宿" [ref=f13e6278]: - cell "DH261004011" [ref=f13e6279]: - button "DH261004011" [ref=f13e6282] [cursor=pointer] - cell "CGDD20260925001 å°è´§éç¥" [ref=f13e6284] - cell "CGDD20260925001" [ref=f13e6288] - cell "ç¹åçµå·¥æ°çæ°è½æºè¡ä»½æéå ¬å¸" [ref=f13e6292] - cell "马æä¸" [ref=f13e6296] - cell "13609987654" [ref=f13e6300] - cell "2026-10-04" [ref=f13e6304] - cell "已宿" [ref=f13e6308] - cell [ref=f13e6312] - row "DH260930010 CGDD20260924002 å°è´§éç¥ CGDD20260924002 西å®è¥¿çµé«åçµç·æéè´£ä»»å ¬å¸ åå»ºå½ 13572856019 2026-09-30 已宿" [ref=f13e6314]: - cell "DH260930010" [ref=f13e6315]: - button "DH260930010" [ref=f13e6318] [cursor=pointer] - cell "CGDD20260924002 å°è´§éç¥" [ref=f13e6320] - cell "CGDD20260924002" [ref=f13e6324] - cell "西å®è¥¿çµé«åçµç·æéè´£ä»»å ¬å¸" [ref=f13e6328] - cell "å建å½" [ref=f13e6332] - cell "13572856019" [ref=f13e6336] - cell "2026-09-30" [ref=f13e6340] - cell "已宿" [ref=f13e6344] - cell [ref=f13e6348] - row "DH260929009 CGDD20260924001 å°è´§éç¥ CGDD20260924001 æ£æ³°çµæ°è¡ä»½æéå ¬å¸ éå¿è¿ 13968801276 2026-09-29 已宿" [ref=f13e6350]: - cell "DH260929009" [ref=f13e6351]: - button "DH260929009" [ref=f13e6354] [cursor=pointer] - cell "CGDD20260924001 å°è´§éç¥" [ref=f13e6356] - cell "CGDD20260924001" [ref=f13e6360] - cell "æ£æ³°çµæ°è¡ä»½æéå ¬å¸" [ref=f13e6364] - cell "éå¿è¿" [ref=f13e6368] - cell "13968801276" [ref=f13e6372] - cell "2026-09-29" [ref=f13e6376] - cell "已宿" [ref=f13e6380] - cell [ref=f13e6384] - row "DH261013008 CGDD20261009002 å°è´§éç¥ CGDD20261009002 é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸ èµµå¿å¼º 13703158092 2026-10-13 已宿" [ref=f13e6386]: - cell "DH261013008" [ref=f13e6387]: - button "DH261013008" [ref=f13e6390] [cursor=pointer] - cell "CGDD20261009002 å°è´§éç¥" [ref=f13e6392] - cell "CGDD20261009002" [ref=f13e6396] - cell "é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸" [ref=f13e6400] - cell "èµµå¿å¼º" [ref=f13e6404] - cell "13703158092" [ref=f13e6408] - cell "2026-10-13" [ref=f13e6412] - cell "已宿" [ref=f13e6416] - cell [ref=f13e6420] - row "DH261015007 CGDD20261012001 å°è´§éç¥ CGDD20261012001 è¿ä¸çµç¼æéå ¬å¸ å¨ææ 13861520873 2026-10-15 已宿" [ref=f13e6422]: - cell "DH261015007" [ref=f13e6423]: - button "DH261015007" [ref=f13e6426] [cursor=pointer] - cell "CGDD20261012001 å°è´§éç¥" [ref=f13e6428] - cell "CGDD20261012001" [ref=f13e6432] - cell "è¿ä¸çµç¼æéå ¬å¸" [ref=f13e6436] - cell "卿æ" [ref=f13e6440] - cell "13861520873" [ref=f13e6444] - cell "2026-10-15" [ref=f13e6448] - cell "已宿" [ref=f13e6452] - cell [ref=f13e6456] - row "DH261013006 CGDD20261009001 å°è´§éç¥ CGDD20261009001 è¿ä¸çµç¼æéå ¬å¸ å¨ææ 13861520873 2026-10-13 已宿" [ref=f13e6458]: - cell "DH261013006" [ref=f13e6459]: - button "DH261013006" [ref=f13e6462] [cursor=pointer] - cell "CGDD20261009001 å°è´§éç¥" [ref=f13e6464] - cell "CGDD20261009001" [ref=f13e6468] - cell "è¿ä¸çµç¼æéå ¬å¸" [ref=f13e6472] - cell "卿æ" [ref=f13e6476] - cell "13861520873" [ref=f13e6480] - cell "2026-10-13" [ref=f13e6484] - cell "已宿" [ref=f13e6488] - cell [ref=f13e6492] - row "DH260926005 CGDD20260923002 å°è´§éç¥ CGDD20260923002 ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸ è¾åæ±Â·ä¹°ä¹°æ 13909902018 2026-09-26 已宿" [ref=f13e6494]: - cell "DH260926005" [ref=f13e6495]: - button "DH260926005" [ref=f13e6498] [cursor=pointer] - cell "CGDD20260923002 å°è´§éç¥" [ref=f13e6500] - cell "CGDD20260923002" [ref=f13e6504] - cell "ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸" [ref=f13e6508] - cell "è¾åæ±Â·ä¹°ä¹°æ" [ref=f13e6512] - cell "13909902018" [ref=f13e6516] - cell "2026-09-26" [ref=f13e6520] - cell "已宿" [ref=f13e6524] - cell [ref=f13e6528] - row "DH260926004 CGDD20260923001 å°è´§éç¥ CGDD20260923001 æ²³åç¡ è°·åå·¥æéå ¬å¸ å¼ æµ·æ¶ 13383105672 2026-09-26 已宿" [ref=f13e6530]: - cell "DH260926004" [ref=f13e6531]: - button "DH260926004" [ref=f13e6534] [cursor=pointer] - cell "CGDD20260923001 å°è´§éç¥" [ref=f13e6536] - cell "CGDD20260923001" [ref=f13e6540] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e6544] - cell "å¼ æµ·æ¶" [ref=f13e6548] - cell "13383105672" [ref=f13e6552] - cell "2026-09-26" [ref=f13e6556] - cell "已宿" [ref=f13e6560] - cell [ref=f13e6564] - row "DH260927003 CGDD20260922003 å°è´§éç¥ CGDD20260922003 é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸ èµµå¿å¼º 13703158092 2026-09-27 已宿" [ref=f13e6566]: - cell "DH260927003" [ref=f13e6567]: - button "DH260927003" [ref=f13e6570] [cursor=pointer] - cell "CGDD20260922003 å°è´§éç¥" [ref=f13e6572] - cell "CGDD20260922003" [ref=f13e6576] - cell "é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸" [ref=f13e6580] - cell "èµµå¿å¼º" [ref=f13e6584] - cell "13703158092" [ref=f13e6588] - cell "2026-09-27" [ref=f13e6592] - cell "已宿" [ref=f13e6596] - cell [ref=f13e6600] - row "DH260926002 CGDD20260922002 å°è´§éç¥ CGDD20260922002 æ°çä¼åè¡ä»½æéå ¬å¸ æçº¢æ¢ 13999902876 2026-09-26 已宿" [ref=f13e6602]: - cell "DH260926002" [ref=f13e6603]: - button "DH260926002" [ref=f13e6606] [cursor=pointer] - cell "CGDD20260922002 å°è´§éç¥" [ref=f13e6608] - cell "CGDD20260922002" [ref=f13e6612] - cell "æ°çä¼åè¡ä»½æéå ¬å¸" [ref=f13e6616] - cell "æçº¢æ¢ " [ref=f13e6620] - cell "13999902876" [ref=f13e6624] - cell "2026-09-26" [ref=f13e6628] - cell "已宿" [ref=f13e6632] - cell [ref=f13e6636] - row "DH260925001 CGDD20260922001 å°è´§éç¥ CGDD20260922001 宿¦é墿°çå «ä¸é¢éæéå ¬å¸ ç建å 13899112031 2026-09-25 已宿" [ref=f13e6638]: - cell "DH260925001" [ref=f13e6639]: - button "DH260925001" [ref=f13e6642] [cursor=pointer] - cell "CGDD20260922001 å°è´§éç¥" [ref=f13e6644] - cell "CGDD20260922001" [ref=f13e6648] - cell "宿¦é墿°çå «ä¸é¢éæéå ¬å¸" [ref=f13e6652] - cell "ç建å" [ref=f13e6656] - cell "13899112031" [ref=f13e6660] - cell "2026-09-25" [ref=f13e6664] - cell "已宿" [ref=f13e6668] - cell [ref=f13e6672] - generic [ref=f13e6681]: - generic [ref=f13e6682]: å ± 17 æ¡è®°å½ - generic [ref=f13e6684] [cursor=pointer]: - generic "20æ¡/页" [ref=f13e6685]: - textbox "è¯·éæ©" [ref=f13e6686]: 20æ¡/页 - generic [ref=f13e6687]: î£ - button "ï" [ref=f13e6690] - button "î¥" [ref=f13e6692] - button "î" [ref=f13e6694] - button "1" [ref=f13e6697] [cursor=pointer] - button "î" [ref=f13e6698] - button "î¦" [ref=f13e6700] - button "î" [ref=f13e6702] arrival-state.png
form-with-srm-select.png
home.png
itemreceipt-create.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,381 @@ - generic [ref=f13e1]: - generic [ref=f13e90]: - complementary [ref=f13e91]: - generic [ref=f13e92]: - generic [ref=f13e93] [cursor=pointer] - link "æ°é«çµåæºé å¹³å° æ°é«çµåæºé å¹³å°" [ref=f13e98] [cursor=pointer]: - /url: javascript:void 0 - img "æ°é«çµåæºé å¹³å°" [ref=f13e101] - generic [ref=f13e102]: æ°é«çµåæºé å¹³å° - menu [ref=f13e105]: - menuitem "é¦é¡µ" [ref=f13e106] [cursor=pointer] - listitem [ref=f13e113]: - generic [ref=f13e114] [cursor=pointer]: çäº§ç®¡æ§ - listitem [ref=f13e121]: - generic [ref=f13e122] [cursor=pointer]: å·¥èºè®¾è®¡ - listitem [ref=f13e129]: - generic [ref=f13e130] [cursor=pointer]: 产å设计 - listitem [ref=f13e136]: - generic [ref=f13e137] [cursor=pointer]: è¥é管ç - listitem [ref=f13e143]: - generic [ref=f13e144] [cursor=pointer]: å®åæå¡ - listitem [ref=f13e150]: - generic [ref=f13e151] [cursor=pointer]: 计åæç¨ - listitem [ref=f13e157]: - generic [ref=f13e158] [cursor=pointer]: è´¨é管ç - listitem [ref=f13e164]: - generic [ref=f13e165] [cursor=pointer]: 设å¤ç®¡ç - listitem [ref=f13e172]: - generic [ref=f13e173] [cursor=pointer]: éè´ç®¡ç - listitem [ref=f13e179]: - generic [ref=f13e180] [cursor=pointer]: ä»å¨ç©æµ - list [ref=f13e3287]: - menuitem "åºåäºå¡æµæ°´" [ref=f13e3288] [cursor=pointer] - menuitem "ä»åºè®¾ç½®" [ref=f13e3293] [cursor=pointer] - menuitem "åºåç°æé" [ref=f13e3300] [cursor=pointer] - listitem [ref=f13e3305]: - generic [ref=f13e3306] [cursor=pointer]: éè´ä»åº - list [ref=f13e3312]: - menuitem "å°è´§éç¥" [ref=f13e3313] [cursor=pointer] - menuitem "éè´å ¥åº" [ref=f13e3318] [cursor=pointer] - menuitem "éè´éè´§" [ref=f13e3323] [cursor=pointer] - listitem [ref=f13e3330]: - generic [ref=f13e3331] [cursor=pointer]: ç产ä»åº - listitem [ref=f13e3338]: - generic [ref=f13e3339] [cursor=pointer]: éå®ä»åº - menuitem "è½¬ç§»è°æ¨" [ref=f13e3345] [cursor=pointer] - listitem [ref=f13e3350]: - generic [ref=f13e3351] [cursor=pointer]: åºåçç¹ - menuitem "è£ ç®±ç®¡ç" [ref=f13e3357] [cursor=pointer] - menuitem "èµè½ç®¡ç" [ref=f13e3364] [cursor=pointer] - menuitem "SN ç " [ref=f13e3369] [cursor=pointer] - menuitem "å¤ååæ" [ref=f13e3374] [cursor=pointer] - menuitem "å¤åå ¥åº" [ref=f13e3379] [cursor=pointer] - menuitem "æé¡¹å ¥åº" [ref=f13e3384] [cursor=pointer] - menuitem "æé¡¹åºåº" [ref=f13e3389] [cursor=pointer] - menuitem "设å¤å ¥åº" [ref=f13e3394] [cursor=pointer] - listitem [ref=f13e188]: - generic [ref=f13e189] [cursor=pointer]: 人åèµæº - listitem [ref=f13e195]: - generic [ref=f13e196] [cursor=pointer]: å³çæ¯æ - listitem [ref=f13e202]: - generic [ref=f13e203] [cursor=pointer]: è½è管ç - listitem [ref=f13e210]: - generic [ref=f13e211] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f13e219]: - generic [ref=f13e220] [cursor=pointer]: åååå ¬ - listitem [ref=f13e226]: - generic [ref=f13e227] [cursor=pointer]: åºç¡è®¾æ½ - listitem [ref=f13e233]: - generic [ref=f13e234] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f13e241] [cursor=pointer] - generic [ref=f13e246]: - generic [ref=f13e247]: - banner [ref=f13e248]: - button [ref=f13e249] [cursor=pointer] - button [ref=f13e252] [cursor=pointer] - navigation "breadcrumb" [ref=f13e257]: - list [ref=f13e258]: - listitem [ref=f13e3399]: - link "ä»å¨ç©æµ" [ref=f13e3400] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f13e3406] - listitem [ref=f13e3409]: - link "éè´ä»åº" [ref=f13e3410] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f13e3414] - listitem [ref=f13e4859]: - link "éè´å ¥åº" [disabled] [ref=f13e4860] - generic [ref=f13e267]: - generic [ref=f13e269] [cursor=pointer]: - generic [ref=f13e273]: æç´¢ - generic [ref=f13e274]: Ctrl K - button [ref=f13e276] [cursor=pointer] - button "dark" [ref=f13e281] [cursor=pointer] - button [ref=f13e290] [cursor=pointer] - button [ref=f13e296] [cursor=pointer] - button [ref=f13e299] [cursor=pointer] - button [ref=f13e305] [cursor=pointer]: - button [ref=f13e307] - button "å·¥ä½å°" [ref=f13e311] [cursor=pointer] - button [ref=f13e315] [cursor=pointer]: - img "è¶ çº§ç®¡çå" [ref=f13e320] - generic [ref=f13e322]: - generic [ref=f13e327]: - generic [ref=f13e328] [cursor=pointer]: é¦é¡µ - generic [ref=f13e729] [cursor=pointer]: ç产订å - generic [ref=f13e3423] [cursor=pointer]: å°è´§éç¥ - generic [ref=f13e4865] [cursor=pointer]: éè´å ¥åº - generic [ref=f13e344]: - button [ref=f13e345] [cursor=pointer] - generic [ref=f13e352] [cursor=pointer] - generic [ref=f13e356] [cursor=pointer] - main [ref=f13e363]: - generic [ref=f13e4885]: - generic [ref=f13e4890]: - generic [ref=f13e4891]: - generic [ref=f13e4892]: å ¥åºåç¼å· - textbox "å ¥åºåç¼å·" [ref=f13e4898]: - /placeholder: 请è¾å ¥å ¥åºåç¼å· - generic [ref=f13e4900]: - generic [ref=f13e4901]: å ¥åºååç§° - textbox "å ¥åºååç§°" [ref=f13e4907]: - /placeholder: 请è¾å ¥å ¥åºååç§° - generic [ref=f13e4909]: - generic [ref=f13e4910]: ä¾åºå - textbox "è¯·éæ©ä¾åºå" [ref=f13e4917] - generic [ref=f13e4923]: - generic [ref=f13e4924]: å ¥åºæ¥æ - generic [ref=f13e4929]: - textbox "å ¥åºæ¥æ" [ref=f13e4931]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f13e4933]: - img "swap-right" [ref=f13e4934] - textbox "ç»ææ¶é´" [ref=f13e4938] - generic: - img "calendar" - generic [ref=f13e4939]: - button "é ç½®" [ref=f13e4940] [cursor=pointer] - button "æ ç´¢" [ref=f13e4942] [cursor=pointer] - generic [ref=f13e4944] [cursor=pointer]: æ¶èµ· - generic [ref=f13e4951]: - generic [ref=f13e4953]: - generic [ref=f13e4954]: éè´å ¥åºåå表 - generic [ref=f13e4958]: - generic [ref=f13e4960]: - button "æ°å¢éè´å ¥åºå" [active] [ref=f13e4962] [cursor=pointer] - button "å¯¼å ¥" [ref=f13e4967] [cursor=pointer] - button "ä»å°è´§éç¥çæ" [ref=f13e4972] [cursor=pointer] - button "导åº" [ref=f13e4977] [cursor=pointer] - button "î" [ref=f13e4983] [cursor=pointer] - generic [ref=f13e4985]: - button "î©" [ref=f13e4986] [cursor=pointer] - button "î" [ref=f13e4988] [cursor=pointer] - button "î" [ref=f13e4990] [cursor=pointer] - generic [ref=f13e4998]: - table [ref=f13e5002]: - rowgroup [ref=f13e5011]: - row "å ¥åºåç¼å· å ¥åºååç§° éè´è®¢åå· ä¾åºååç§° å ¥åºæ¥æ åæ®ç¶æ æä½" [ref=f13e5012]: - columnheader "å ¥åºåç¼å·" [ref=f13e5013] - columnheader "å ¥åºååç§°" [ref=f13e5018] - columnheader "éè´è®¢åå·" [ref=f13e5023] - columnheader "ä¾åºååç§°" [ref=f13e5028] - columnheader "å ¥åºæ¥æ" [ref=f13e5033] - columnheader "åæ®ç¶æ" [ref=f13e5038] - columnheader "æä½" [ref=f13e5043] - table [ref=f13e5051]: - rowgroup [ref=f13e5060]: - row "IR1792846916422 CGDD20261024000001å°è´§éç¥å ¥åºå CGDD20261024000001 ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸ 2026-10-24 å¾ ä¸æ¶ æ§è¡ä¸æ¶ åæ¶" [ref=f13e5061]: - cell "IR1792846916422" [ref=f13e5062]: - button "IR1792846916422" [ref=f13e5065] [cursor=pointer] - cell "CGDD20261024000001å°è´§éç¥å ¥åºå" [ref=f13e5067] - cell "CGDD20261024000001" [ref=f13e5071] - cell "ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸" [ref=f13e5075] - cell "2026-10-24" [ref=f13e5079] - cell "å¾ ä¸æ¶" [ref=f13e5083] - cell "æ§è¡ä¸æ¶ åæ¶" [ref=f13e5087]: - generic [ref=f13e5091]: - button "æ§è¡ä¸æ¶" [ref=f13e5093] [cursor=pointer] - button "åæ¶" [ref=f13e5096] [cursor=pointer] - row "CGRK261005016 CGDD20260925004 éè´å ¥åº CGDD20260925004 ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸ 2026-10-05 已宿" [ref=f13e5098]: - cell "CGRK261005016" [ref=f13e5099]: - button "CGRK261005016" [ref=f13e5102] [cursor=pointer] - cell "CGDD20260925004 éè´å ¥åº" [ref=f13e5104] - cell "CGDD20260925004" [ref=f13e5108] - cell "ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸" [ref=f13e5112] - cell "2026-10-05" [ref=f13e5116] - cell "已宿" [ref=f13e5120] - cell [ref=f13e5124] - row "CGRK260930015 CGDD20260924004 éè´å ¥åº CGDD20260924004 æ²³åç¡ è°·åå·¥æéå ¬å¸ 2026-09-30 已宿" [ref=f13e5126]: - cell "CGRK260930015" [ref=f13e5127]: - button "CGRK260930015" [ref=f13e5130] [cursor=pointer] - cell "CGDD20260924004 éè´å ¥åº" [ref=f13e5132] - cell "CGDD20260924004" [ref=f13e5136] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e5140] - cell "2026-09-30" [ref=f13e5144] - cell "已宿" [ref=f13e5148] - cell [ref=f13e5152] - row "CGRK260929014 CGDD20260924003 éè´å ¥åº CGDD20260924003 æ°çä¼åè¡ä»½æéå ¬å¸ 2026-09-29 已宿" [ref=f13e5154]: - cell "CGRK260929014" [ref=f13e5155]: - button "CGRK260929014" [ref=f13e5158] [cursor=pointer] - cell "CGDD20260924003 éè´å ¥åº" [ref=f13e5160] - cell "CGDD20260924003" [ref=f13e5164] - cell "æ°çä¼åè¡ä»½æéå ¬å¸" [ref=f13e5168] - cell "2026-09-29" [ref=f13e5172] - cell "已宿" [ref=f13e5176] - cell [ref=f13e5180] - row "CGRK261005013 CGDD20260925003 éè´å ¥åº CGDD20260925003 æ²³åç¡ è°·åå·¥æéå ¬å¸ 2026-10-05 已宿" [ref=f13e5182]: - cell "CGRK261005013" [ref=f13e5183]: - button "CGRK261005013" [ref=f13e5186] [cursor=pointer] - cell "CGDD20260925003 éè´å ¥åº" [ref=f13e5188] - cell "CGDD20260925003" [ref=f13e5192] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e5196] - cell "2026-10-05" [ref=f13e5200] - cell "已宿" [ref=f13e5204] - cell [ref=f13e5208] - row "CGRK260930012 CGDD20260925002 éè´å ¥åº CGDD20260925002 ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸ 2026-09-30 已宿" [ref=f13e5210]: - cell "CGRK260930012" [ref=f13e5211]: - button "CGRK260930012" [ref=f13e5214] [cursor=pointer] - cell "CGDD20260925002 éè´å ¥åº" [ref=f13e5216] - cell "CGDD20260925002" [ref=f13e5220] - cell "ä¹é²æ¨é½å¤©å±±éå ·å¶é æéå ¬å¸" [ref=f13e5224] - cell "2026-09-30" [ref=f13e5228] - cell "已宿" [ref=f13e5232] - cell [ref=f13e5236] - row "CGRK261004011 CGDD20260925001 éè´å ¥åº CGDD20260925001 ç¹åçµå·¥æ°çæ°è½æºè¡ä»½æéå ¬å¸ 2026-10-04 已宿" [ref=f13e5238]: - cell "CGRK261004011" [ref=f13e5239]: - button "CGRK261004011" [ref=f13e5242] [cursor=pointer] - cell "CGDD20260925001 éè´å ¥åº" [ref=f13e5244] - cell "CGDD20260925001" [ref=f13e5248] - cell "ç¹åçµå·¥æ°çæ°è½æºè¡ä»½æéå ¬å¸" [ref=f13e5252] - cell "2026-10-04" [ref=f13e5256] - cell "已宿" [ref=f13e5260] - cell [ref=f13e5264] - row "CGRK260930010 CGDD20260924002 éè´å ¥åº CGDD20260924002 西å®è¥¿çµé«åçµç·æéè´£ä»»å ¬å¸ 2026-09-30 已宿" [ref=f13e5266]: - cell "CGRK260930010" [ref=f13e5267]: - button "CGRK260930010" [ref=f13e5270] [cursor=pointer] - cell "CGDD20260924002 éè´å ¥åº" [ref=f13e5272] - cell "CGDD20260924002" [ref=f13e5276] - cell "西å®è¥¿çµé«åçµç·æéè´£ä»»å ¬å¸" [ref=f13e5280] - cell "2026-09-30" [ref=f13e5284] - cell "已宿" [ref=f13e5288] - cell [ref=f13e5292] - row "CGRK260929009 CGDD20260924001 éè´å ¥åº CGDD20260924001 æ£æ³°çµæ°è¡ä»½æéå ¬å¸ 2026-09-29 已宿" [ref=f13e5294]: - cell "CGRK260929009" [ref=f13e5295]: - button "CGRK260929009" [ref=f13e5298] [cursor=pointer] - cell "CGDD20260924001 éè´å ¥åº" [ref=f13e5300] - cell "CGDD20260924001" [ref=f13e5304] - cell "æ£æ³°çµæ°è¡ä»½æéå ¬å¸" [ref=f13e5308] - cell "2026-09-29" [ref=f13e5312] - cell "已宿" [ref=f13e5316] - cell [ref=f13e5320] - row "CGRK261013008 CGDD20261009002 éè´å ¥åº CGDD20261009002 é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸ 2026-10-13 已宿" [ref=f13e5322]: - cell "CGRK261013008" [ref=f13e5323]: - button "CGRK261013008" [ref=f13e5326] [cursor=pointer] - cell "CGDD20261009002 éè´å ¥åº" [ref=f13e5328] - cell "CGDD20261009002" [ref=f13e5332] - cell "é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸" [ref=f13e5336] - cell "2026-10-13" [ref=f13e5340] - cell "已宿" [ref=f13e5344] - cell [ref=f13e5348] - row "CGRK261015007 CGDD20261012001 éè´å ¥åº CGDD20261012001 è¿ä¸çµç¼æéå ¬å¸ 2026-10-15 已宿" [ref=f13e5350]: - cell "CGRK261015007" [ref=f13e5351]: - button "CGRK261015007" [ref=f13e5354] [cursor=pointer] - cell "CGDD20261012001 éè´å ¥åº" [ref=f13e5356] - cell "CGDD20261012001" [ref=f13e5360] - cell "è¿ä¸çµç¼æéå ¬å¸" [ref=f13e5364] - cell "2026-10-15" [ref=f13e5368] - cell "已宿" [ref=f13e5372] - cell [ref=f13e5376] - row "CGRK261013006 CGDD20261009001 éè´å ¥åº CGDD20261009001 è¿ä¸çµç¼æéå ¬å¸ 2026-10-13 已宿" [ref=f13e5378]: - cell "CGRK261013006" [ref=f13e5379]: - button "CGRK261013006" [ref=f13e5382] [cursor=pointer] - cell "CGDD20261009001 éè´å ¥åº" [ref=f13e5384] - cell "CGDD20261009001" [ref=f13e5388] - cell "è¿ä¸çµç¼æéå ¬å¸" [ref=f13e5392] - cell "2026-10-13" [ref=f13e5396] - cell "已宿" [ref=f13e5400] - cell [ref=f13e5404] - row "CGRK260926005 CGDD20260923002 éè´å ¥åº CGDD20260923002 ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸ 2026-09-26 已宿" [ref=f13e5406]: - cell "CGRK260926005" [ref=f13e5407]: - button "CGRK260926005" [ref=f13e5410] [cursor=pointer] - cell "CGDD20260923002 éè´å ¥åº" [ref=f13e5412] - cell "CGDD20260923002" [ref=f13e5416] - cell "ä¸å½ç³æ²¹å æçä¾ç³åå ¬å¸" [ref=f13e5420] - cell "2026-09-26" [ref=f13e5424] - cell "已宿" [ref=f13e5428] - cell [ref=f13e5432] - row "CGRK260926004 CGDD20260923001 éè´å ¥åº CGDD20260923001 æ²³åç¡ è°·åå·¥æéå ¬å¸ 2026-09-26 已宿" [ref=f13e5434]: - cell "CGRK260926004" [ref=f13e5435]: - button "CGRK260926004" [ref=f13e5438] [cursor=pointer] - cell "CGDD20260923001 éè´å ¥åº" [ref=f13e5440] - cell "CGDD20260923001" [ref=f13e5444] - cell "æ²³åç¡ è°·åå·¥æéå ¬å¸" [ref=f13e5448] - cell "2026-09-26" [ref=f13e5452] - cell "已宿" [ref=f13e5456] - cell [ref=f13e5460] - row "CGRK260927003 CGDD20260922003 éè´å ¥åº CGDD20260922003 é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸ 2026-09-27 已宿" [ref=f13e5462]: - cell "CGRK260927003" [ref=f13e5463]: - button "CGRK260927003" [ref=f13e5466] [cursor=pointer] - cell "CGDD20260922003 éè´å ¥åº" [ref=f13e5468] - cell "CGDD20260922003" [ref=f13e5472] - cell "é¦é¢æºæ°è¿å®çµç£æææéå ¬å¸" [ref=f13e5476] - cell "2026-09-27" [ref=f13e5480] - cell "已宿" [ref=f13e5484] - cell [ref=f13e5488] - row "CGRK260926002 CGDD20260922002 éè´å ¥åº CGDD20260922002 æ°çä¼åè¡ä»½æéå ¬å¸ 2026-09-26 已宿" [ref=f13e5490]: - cell "CGRK260926002" [ref=f13e5491]: - button "CGRK260926002" [ref=f13e5494] [cursor=pointer] - cell "CGDD20260922002 éè´å ¥åº" [ref=f13e5496] - cell "CGDD20260922002" [ref=f13e5500] - cell "æ°çä¼åè¡ä»½æéå ¬å¸" [ref=f13e5504] - cell "2026-09-26" [ref=f13e5508] - cell "已宿" [ref=f13e5512] - cell [ref=f13e5516] - row "CGRK260925001 CGDD20260922001 éè´å ¥åº CGDD20260922001 宿¦é墿°çå «ä¸é¢éæéå ¬å¸ 2026-09-25 已宿" [ref=f13e5518]: - cell "CGRK260925001" [ref=f13e5519]: - button "CGRK260925001" [ref=f13e5522] [cursor=pointer] - cell "CGDD20260922001 éè´å ¥åº" [ref=f13e5524] - cell "CGDD20260922001" [ref=f13e5528] - cell "宿¦é墿°çå «ä¸é¢éæéå ¬å¸" [ref=f13e5532] - cell "2026-09-25" [ref=f13e5536] - cell "已宿" [ref=f13e5540] - cell [ref=f13e5544] - generic [ref=f13e5553]: - generic [ref=f13e5554]: å ± 17 æ¡è®°å½ - generic [ref=f13e5556] [cursor=pointer]: - generic "20æ¡/页" [ref=f13e5557]: - textbox "è¯·éæ©" [ref=f13e5558]: 20æ¡/页 - generic [ref=f13e5559]: î£ - button "ï" [ref=f13e5562] - button "î¥" [ref=f13e5564] - button "î" [ref=f13e5566] - button "1" [ref=f13e5569] [cursor=pointer] - button "î" [ref=f13e5570] - button "î¦" [ref=f13e5572] - button "î" [ref=f13e5574] - dialog [ref=f13e5577]: - heading "æ°å¢éè´å ¥åºå" [level=2] [ref=f13e5579] - generic [ref=f13e5583]: - generic [ref=f13e5584]: - generic [ref=f13e5585]: - generic [ref=f13e5586]: "*" - text: å ¥åºåç¼å· - generic [ref=f13e5590]: - textbox "* å ¥åºåç¼å·" [ref=f13e5591]: - /placeholder: 请è¾å ¥å ¥åºåç¼å· - button "ç æ" [ref=f13e5593] [cursor=pointer] - generic [ref=f13e5595]: - generic [ref=f13e5596]: å ¥åºååç§° - textbox "å ¥åºååç§°" [ref=f13e5601]: - /placeholder: 请è¾å ¥å ¥åºååç§° - generic [ref=f13e5602]: - generic [ref=f13e5603]: - generic [ref=f13e5604]: "*" - text: å ¥åºæ¥æ - generic [ref=f13e5610]: - textbox "* å ¥åºæ¥æ" [ref=f13e5611]: - /placeholder: è¯·éæ©å ¥åºæ¥æ - generic: - img "calendar" - generic [ref=f13e5612]: - generic [ref=f13e5613]: å°è´§éç¥å - textbox "è¯·éæ©å°è´§éç¥å" [ref=f13e5620] - generic [ref=f13e5626]: - generic [ref=f13e5627]: - generic [ref=f13e5628]: "*" - text: ä¾åºå - textbox "è¯·éæ©ä¾åºå" [ref=f13e5635] - generic [ref=f13e5641]: - generic [ref=f13e5642]: éè´è®¢åå· - textbox "éè´è®¢åå·" [ref=f13e5647]: - /placeholder: 请è¾å ¥éè´è®¢åå· - generic [ref=f13e5648]: - generic [ref=f13e5649]: 夿³¨ - textbox "夿³¨" [ref=f13e5654]: - /placeholder: 请è¾å ¥å¤æ³¨ - button [ref=f13e5655] [cursor=pointer] - generic [ref=f13e5665]: - button "å æ¶" [ref=f13e5666] [cursor=pointer] - button "ç¡® 认" [ref=f13e5668] [cursor=pointer] - button [ref=f13e5670] [cursor=pointer] po-dialog-fixed.png
qc-template-fixed.png
supplier-dialog.png
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/MesQcIqcController.java
@@ -12,12 +12,12 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcSaveReqVO; import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; 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; @@ -56,7 +56,7 @@ @Resource private SrmSupplierApi srmSupplierApi; @Resource private MesMdItemService itemService; private MesQcItemResolver qcItemResolver; @Resource private MesMdUnitMeasureService unitMeasureService; @@ -135,12 +135,12 @@ Map<Long, SrmSupplierRespDTO> vendorMap = srmSupplierApi.getSupplierList( convertSet(list, MesQcIqcDO::getVendorId)).getCheckedData().stream() .collect(java.util.stream.Collectors.toMap(SrmSupplierRespDTO::getId, s -> s)); // æ¹éæ¥è¯¢ç©æ Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( // æ¹éæ¥è¯¢ç©æï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ Map<Long, MdmItemRespDTO> itemMap = qcItemResolver.getItemMap( convertSet(list, MesQcIqcDO::getItemId)); // æ¹éæ¥è¯¢è®¡éåä½ï¼éè¿ç©æç unitMeasureIdï¼ Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)); // æ¹éæ¥è¯¢æ£æµäººå Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( convertSet(list, MesQcIqcDO::getInspectorUserId)); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ncr/MesQcNcrController.java
@@ -8,10 +8,10 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ncr.MesQcNcrDO; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; @@ -49,7 +49,7 @@ private MesQcNcrService ncrService; @Resource private MesMdItemService itemService; private MesQcItemResolver qcItemResolver; @Resource private AdminUserApi adminUserApi; @@ -143,8 +143,8 @@ if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } // æ¹éæ¥è¯¢ç©æ Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( // æ¹éæ¥è¯¢ç©æï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ Map<Long, MdmItemRespDTO> itemMap = qcItemResolver.getItemMap( convertSet(list, MesQcNcrDO::getItemId)); // æ¹éæ¥è¯¢è¯å®¡äºº Set<Long> reviewerUserIds = convertSet(list, MesQcNcrDO::getReviewerUserId); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/oqc/MesQcOqcController.java
@@ -12,13 +12,12 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.oqc.vo.MesQcOqcSaveReqVO; import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcDO; import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; 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; @@ -56,7 +55,7 @@ @Resource private CrmCustomerApi customerApi; @Resource private MesMdItemService itemService; private MesQcItemResolver qcItemResolver; @Resource private MesMdUnitMeasureService unitMeasureService; @@ -134,12 +133,12 @@ // æ¹éæ¥è¯¢å®¢æ· Map<Long, CrmCustomerRespDTO> clientMap = customerApi.getCustomerMap( convertSet(list, MesQcOqcDO::getClientId)); // æ¹éæ¥è¯¢ç©æ Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( // æ¹éæ¥è¯¢ç©æï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ Map<Long, MdmItemRespDTO> itemMap = qcItemResolver.getItemMap( convertSet(list, MesQcOqcDO::getItemId)); // æ¹éæ¥è¯¢è®¡éåä½ Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)); // æ¹éæ¥è¯¢æ£æµäººå Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( convertSet(list, MesQcOqcDO::getInspectorUserId)); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/pendinginspect/MesQcPendingInspectController.java
@@ -9,15 +9,15 @@ import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO; import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; import cn.iocoder.yudao.module.mes.service.qc.pendinginspect.MesQcPendingInspectService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -44,7 +44,7 @@ @Resource private MesQcPendingInspectService pendingInspectService; @Resource private MesMdItemService itemService; private MesQcItemResolver qcItemResolver; @Resource private MesMdUnitMeasureService unitMeasureService; @Resource @@ -73,12 +73,12 @@ if (CollUtil.isEmpty(list)) { return; } // æ¹éæ¥è¯¢ç©æ Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( // æ¹éæ¥è¯¢ç©æï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ Map<Long, MdmItemRespDTO> itemMap = qcItemResolver.getItemMap( convertSet(list, MesQcPendingInspectRespVO::getItemId)); // æ¹éæ¥è¯¢è®¡éåä½ï¼éè¿ç©æç unitMeasureIdï¼ Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)); // æ¹éæ¥è¯¢ä¾åºåï¼IQC åºæ¯ï¼ Map<Long, SrmSupplierRespDTO> vendorMap = srmSupplierApi.getSupplierList( convertSet(list, MesQcPendingInspectRespVO::getVendorId)).getCheckedData().stream() yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/MesQcRqcController.java
@@ -10,12 +10,12 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.rqc.vo.MesQcRqcPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.rqc.vo.MesQcRqcRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.rqc.vo.MesQcRqcSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcDO; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; 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; @@ -51,7 +51,7 @@ @Resource private MesQcRqcService rqcService; @Resource private MesMdItemService itemService; private MesQcItemResolver qcItemResolver; @Resource private MesMdUnitMeasureService unitMeasureService; @@ -126,12 +126,12 @@ if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } // æ¹éæ¥è¯¢ç©æ Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( // æ¹éæ¥è¯¢ç©æï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ Map<Long, MdmItemRespDTO> itemMap = qcItemResolver.getItemMap( convertSet(list, MesQcRqcDO::getItemId)); // æ¹éæ¥è¯¢è®¡éåä½ Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)); // æ¹éæ¥è¯¢æ£æµäººå Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( convertSet(list, MesQcRqcDO::getInspectorUserId)); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java
@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.MesWmItemReceiptPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDO; import cn.iocoder.yudao.module.mes.enums.wm.MesWmItemReceiptStatusEnum; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; @@ -80,23 +79,6 @@ .set(MesWmItemReceiptDO::getStatus, status) .set(MesWmItemReceiptDO::getReviewerId, reviewerId) .set(MesWmItemReceiptDO::getReviewerName, reviewerName) .set(MesWmItemReceiptDO::getReviewTime, LocalDateTime.now()) .set(MesWmItemReceiptDO::getReviewRemark, reviewRemark)); } /** * BPM 审æ¹ç»æååï¼ä» å½åæ®ä»å¤äºå®¡æ¹ä¸æ¶æ´æ°ï¼é¿å éå¤ / è¿æäºä»¶è¦çäººå·¥å®¡æ ¸ç»æ * * @param id ç¼å· * @param status ç®æ ç¶æï¼å¾ æ§è¡å ¥åº / è稿 / å·²åæ¶ï¼ * @param reviewRemark å®¡æ¹æè§ * @return å½±åè¡æ° */ default int updateAuditStatusByBpm(Long id, Integer status, String reviewRemark) { return update(null, new LambdaUpdateWrapper<MesWmItemReceiptDO>() .eq(MesWmItemReceiptDO::getId, id) .eq(MesWmItemReceiptDO::getStatus, MesWmItemReceiptStatusEnum.APPROVING.getStatus()) .set(MesWmItemReceiptDO::getStatus, status) .set(MesWmItemReceiptDO::getReviewTime, LocalDateTime.now()) .set(MesWmItemReceiptDO::getReviewRemark, reviewRemark)); } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmItemReceiptStatusEnum.java
@@ -29,7 +29,7 @@ */ APPROVING(MesOrderStatusConstants.APPROVING, "å¾ ä¸æ¶"), /** * å¾ å ¥åº * å¾ æ§è¡å ¥åº * * å¯¹åº MesWmItemReceiptService#stockItemReceipt æ¹æ³ */ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
@@ -27,6 +27,7 @@ import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum; import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; @@ -459,7 +460,8 @@ respVO.getFailureCodes().put(key, "åæ ¼åæ°éä¸ä¸åæ ¼åæ°éä¹åå¿ é¡»çäºæ¬æ¬¡æ¥æ¶æ°é"); return; } cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO item = itemService.getItemByCode(importItem.getItemCode()); // æ¥ææ£éªåçç©æä»¥ MDM 为åï¼å¯¼å ¥æ MDM ç©æç¼ç è§£æ MdmItemRespDTO item = mdmItemApi.getItemByCode(importItem.getItemCode()).getCheckedData(); if (item == null) { respVO.getFailureCodes().put(key, "ç©æä¸åå¨ï¼" + importItem.getItemCode()); return; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrServiceImpl.java
@@ -13,6 +13,7 @@ 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.qc.support.MesQcItemResolver; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; @@ -57,6 +58,9 @@ @Resource private MdmItemApi mdmItemApi; @Resource private MesQcItemResolver qcItemResolver; @Resource @Lazy @@ -208,9 +212,8 @@ * æ ¡éªç©æåå¨ */ private void validateItemExists(Long itemId) { if (itemId != null) { mdmItemApi.getItem(itemId).getCheckedData(); } // ä¸åæ ¼ååçç©æå¯è½æ¥èª MDM åæ®æ MES å·¥åï¼éå ¼å®¹ä¸¤å¥ ID qcItemResolver.validateItemExists(itemId); } /** yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcServiceImpl.java
@@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; @@ -446,7 +447,8 @@ respVO.getFailureCodes().put(key, "客æ·ä¸åå¨ï¼" + importItem.getClientName()); return; } cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO item = itemService.getItemByCode(importItem.getItemCode()); // åºè´§æ£éªåçç©æä»¥ MDM 为åï¼å¯¼å ¥æ MDM ç©æç¼ç è§£æ MdmItemRespDTO item = mdmItemApi.getItemByCode(importItem.getItemCode()).getCheckedData(); if (item == null) { respVO.getFailureCodes().put(key, "ç©æä¸åå¨ï¼" + importItem.getItemCode()); return; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java
@@ -3,6 +3,8 @@ import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.controller.admin.qc.rqc.vo.MesQcRqcPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.rqc.vo.MesQcRqcSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; @@ -23,6 +25,7 @@ import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesLineService; import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO; import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService; import cn.iocoder.yudao.module.mes.service.qc.support.MesQcItemResolver; import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import jakarta.annotation.Resource; @@ -68,6 +71,10 @@ @Resource @Lazy private MesMdItemService itemService; @Resource private MdmItemApi mdmItemApi; @Resource private MesQcItemResolver qcItemResolver; @Resource @Lazy private MesQcDefectRecordService defectRecordService; @@ -137,8 +144,8 @@ private void validateRqcSaveData(MesQcRqcSaveReqVO reqVO) { // æ ¡éªç¼å·å¯ä¸ validateRqcCodeUnique(reqVO.getId(), reqVO.getCode()); // æ ¡éªç©æãæ£æµäººååå¨ itemService.validateItemExists(reqVO.getItemId()); // æ ¡éªç©æãæ£æµäººååå¨ï¼å ¼å®¹ mdm_item.id / mes_md_item.idï¼ qcItemResolver.validateItemExists(reqVO.getItemId()); adminUserApi.validateUser(reqVO.getInspectorUserId()); } @@ -379,7 +386,8 @@ respVO.getFailureCodes().put(key, "æ£æµæ¥æä¸è½ä¸ºç©º"); return; } cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO item = itemService.getItemByCode(importItem.getItemCode()); // éè´§æ£éªåçç©æä»¥ MDM 为åï¼å¯¼å ¥æ MDM ç©æç¼ç è§£æ MdmItemRespDTO item = mdmItemApi.getItemByCode(importItem.getItemCode()).getCheckedData(); if (item == null) { respVO.getFailureCodes().put(key, "ç©æä¸åå¨ï¼" + importItem.getItemCode()); return; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/support/MesQcItemResolver.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ package cn.iocoder.yudao.module.mes.service.qc.support; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_NOT_EXISTS; /** * è´¨æ£åæ®ç©æ ID è§£æå¨ * * è´¨æ£åæ®çç©æ ID åå¨ä¸¤å¥æ¥æºï¼è´¨æ£/ä»å¨åæ®ä½¿ç¨ mdm_item.idï¼PRO å·¥å/ä»»å¡ä½¿ç¨ mes_md_item.idã * ç»ä¸å¨æ¤è§£æï¼å æ mdm_item.id æ¥è¯¢ï¼æªå½ä¸çåæ mes_md_item.id â mdm_item.id æ å°æ¥è¯¢ã */ @Service public class MesQcItemResolver { @Resource private MesMdItemService mesMdItemService; @Resource private MdmItemApi mdmItemApi; /** * æ¹éæ¥è¯¢ç©æä¿¡æ¯ï¼è¿å以è°ç¨æ¹ä¼ å ¥çç©æ ID 为 key çç»æ */ public Map<Long, MdmItemRespDTO> getItemMap(Collection<Long> itemIds) { if (CollUtil.isEmpty(itemIds)) { return Collections.emptyMap(); } Set<Long> ids = new HashSet<>(); itemIds.forEach(id -> { if (id != null) { ids.add(id); } }); if (ids.isEmpty()) { return Collections.emptyMap(); } // 1. å æ mdm_item.id ç´æ¥æ¥è¯¢ï¼è´¨æ£/ä»å¨åæ®ï¼ Map<Long, MdmItemRespDTO> result = new HashMap<>(mdmItemApi.getItemMap(ids)); // 2. æªå½ä¸çåæ mes_md_item.id â mdm_item.id è§£æï¼PRO å·¥å/ä»»å¡ï¼ Set<Long> missingIds = new HashSet<>(ids); missingIds.removeAll(result.keySet()); if (missingIds.isEmpty()) { return result; } Map<Long, MesMdItemDO> mesItemMap = mesMdItemService.getItemMap(missingIds); Map<Long, Long> idToMdmId = new HashMap<>(); missingIds.forEach(id -> { MesMdItemDO mesItem = mesItemMap.get(id); if (mesItem != null && mesItem.getMdmItemId() != null) { idToMdmId.put(id, mesItem.getMdmItemId()); } }); if (idToMdmId.isEmpty()) { return result; } Map<Long, MdmItemRespDTO> fallbackMap = mdmItemApi.getItemMap(idToMdmId.values()); idToMdmId.forEach((id, mdmId) -> { MdmItemRespDTO item = fallbackMap.get(mdmId); if (item != null) { result.put(id, item); } }); return result; } /** * æ ¡éªç©æåå¨ï¼å ¼å®¹ä¸¤å¥ IDï¼ */ public void validateItemExists(Long itemId) { if (itemId == null) { return; } if (!getItemMap(Collections.singleton(itemId)).containsKey(itemId)) { throw exception(MD_ITEM_NOT_EXISTS); } } } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java
@@ -116,9 +116,17 @@ @Override public MesQcTemplateItemDO getRequiredTemplateByItemIdAndType(Long itemId, Integer qcType) { if (itemId == null) { throw exception(QC_NO_TEMPLATE); } // 1. æ¥åº itemId å ³èçææ templateItem MesMdItemDO item1 = mesMdItemService.getItem(itemId); List<MesQcTemplateItemDO> templateItems = templateItemMapper.selectListByItemId(item1.getMdmItemId()); // å ¼å®¹ä¸¤å¥ç©æ IDï¼è´¨æ£/ä»å¨åæ®ä¼ å ¥ mdm_item.idï¼PRO å·¥å/ä»»å¡ä¼ å ¥ mes_md_item.id Long templateItemId = itemId; MesMdItemDO mesItem = mesMdItemService.getItem(itemId); if (mesItem != null && mesItem.getMdmItemId() != null) { templateItemId = mesItem.getMdmItemId(); } List<MesQcTemplateItemDO> templateItems = templateItemMapper.selectListByItemId(templateItemId); if (CollUtil.isEmpty(templateItems)) { throw exception(QC_NO_TEMPLATE); } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java
@@ -48,7 +48,7 @@ @Override public Long createItemReceiptLine(MesWmItemReceiptLineSaveReqVO createReqVO) { // 1. æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ MesWmItemReceiptDO receipt = itemReceiptService.validateItemReceiptEditable(createReqVO.getReceiptId()); MesWmItemReceiptDO receipt = itemReceiptService.validateItemReceiptLineEditable(createReqVO.getReceiptId()); // 2. æ ¡éªæ°æ® validateItemReceiptLineSaveData(receipt, createReqVO); @@ -70,7 +70,7 @@ // 1.1 æ ¡éªåå¨ MesWmItemReceiptLineDO line = validateItemReceiptLineExists(updateReqVO.getId()); // 1.2 æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ MesWmItemReceiptDO receipt = itemReceiptService.validateItemReceiptEditable(line.getReceiptId()); MesWmItemReceiptDO receipt = itemReceiptService.validateItemReceiptLineEditable(line.getReceiptId()); // 1.3 æ ¡éªæ°æ® validateItemReceiptLineSaveData(receipt, updateReqVO); @@ -96,7 +96,7 @@ // 1.1 æ ¡éªåå¨ MesWmItemReceiptLineDO line = validateItemReceiptLineExists(id); // 1.2 æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ itemReceiptService.validateItemReceiptEditable(line.getReceiptId()); itemReceiptService.validateItemReceiptLineEditable(line.getReceiptId()); // 2.1 级èå é¤æç» itemReceiptDetailService.deleteItemReceiptDetailByLineId(id); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java
@@ -58,20 +58,16 @@ PageResult<MesWmItemReceiptDO> getItemReceiptPage(MesWmItemReceiptPageReqVO pageReqVO); /** * æäº¤éè´å ¥åºå审æ¹ï¼è稿 â å¾ ä¸æ¶ï¼ * * å®¡æ ¸äººç±ãç³»ç»ç®¡ç - 审æ¹é ç½®ãæä¸å¡ç±»åç»ä¸é ç½®ï¼ä¸å¡ç¼ç item_receipt_approveï¼ï¼ * æäº¤æ¶æ éæå®ï¼æªå¯ç¨å®¡æ¹ææªé ç½®ææå®¡æ ¸äººæ¶æåºä¸å¡å¼å¸¸ã * æäº¤éè´å ¥åºåï¼è稿 â å¾ ä¸æ¶ï¼ * * @param id ç¼å· */ void submitItemReceipt(Long id); /** * æ§è¡ä¸æ¶æ ¡éªï¼ä» æ ¡éªå·²å®¡æ¹åæ®çæç»æ°éä¸è´æ§ï¼ä¸ä¿®æ¹åæ®ç¶æï¼ * æ§è¡ä¸æ¶ï¼å¾ 䏿¶ â å¾ æ§è¡å ¥åºï¼ * * åæ®ç¶æåªè½ç±å®¡æ ¸ï¼APPROVING â APPROVEDï¼ä¸å ¥åºï¼APPROVED â FINISHEDï¼æ¨è¿ï¼ * æ¬æ¹æ³ä¸å¾æåæ®ç´æ¥ç½®ä¸ºå·²å®¡æ¹ã * æ ¡éªæ¯è¡ä¸æ¶æç»æ°éä¹åçäºè¡å ¥åºæ°é忍è¿åæ®ç¶æã * * @param id ç¼å· */ @@ -92,12 +88,20 @@ void cancelItemReceipt(Long id); /** * æ ¡éªéè´å ¥åºååå¨ä¸å¤äºå¯ç¼è¾ç¶æï¼ä» èç¨¿ï¼ * æ ¡éªéè´å ¥åºååå¨ä¸å¤äºå¯ç¼è¾ç¶æï¼è稿æå¾ 䏿¶ï¼ * * @param id ç¼å· * @return éè´å ¥åºå */ MesWmItemReceiptDO validateItemReceiptEditable(Long id); /** * æ ¡éªéè´å ¥åºååå¨ä¸è¡æ°æ®å¯ç¼è¾ï¼ä» èç¨¿ï¼ * * @param id ç¼å· * @return éè´å ¥åºå */ MesWmItemReceiptDO validateItemReceiptLineEditable(Long id); /** * æ¥è¯¢æå®ä¾åºåçéè´å ¥åºåæ°é @@ -161,17 +165,6 @@ * @param reviewRemark å®¡æ ¸æè§ï¼å®¡æ ¸ä¸éè¿æ¶å¿ å¡« */ void auditItemReceipt(Long id, Boolean pass, String reviewRemark); /** * åå BPM 审æ¹ç»æï¼ä¾ BPM æµç¨ç¶æçå¬å¨è°ç¨ï¼ * * ä» å¨åæ®å¤äºå®¡æ¹ä¸æ¶çæï¼éè¿=å¾ æ§è¡å ¥åº / ä¸éè¿=è稿 / åæ¶=已忶ã * * @param id ç¼å· * @param bpmStatus BPM ä»»å¡ç¶æï¼è§ {@link cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum} * @param reason å®¡æ¹æè§ / åæ¶åå */ void updateItemReceiptAuditStatus(Long id, Integer bpmStatus, String reason); /** * å¯¼å ¥éè´å ¥åºå yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
@@ -6,9 +6,6 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; 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.BpmTaskStatusEnum; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.MesWmItemReceiptImportExcelVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.MesWmItemReceiptImportRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.MesWmItemReceiptPageReqVO; @@ -71,16 +68,8 @@ */ private static final String ITEM_RECEIPT_APPROVE_BIZ_TYPE = "item_receipt_approve"; /** * éè´å ¥åºå审æ¹ç BPM æµç¨å®ä¹ Key */ private static final String ITEM_RECEIPT_APPROVE_PROCESS_KEY = "item_receipt_approve"; @Resource private MesWmItemReceiptMapper itemReceiptMapper; @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; @Resource private MesWmItemReceiptLineService itemReceiptLineService; @@ -192,35 +181,8 @@ // æ ¡éªç©ææ¹æ¬¡ç®¡çï¼å¦æç©æå¼å¯æ¹æ¬¡ç®¡çï¼åæç»çæ¹æ¬¡å·ä¸è½ä¸ºç©º validateBatchManagement(lines); // æ ¡éªå®¡æ¹é 置已å¯ç¨ä¸é ç½®äºææå®¡æ ¸äººï¼æªé ç½®æ¶æåºå¸¦æç¡®æç¤ºçä¸å¡å¼å¸¸ï¼ approvalConfigApi.validateApprovalEnabledAndGetApprovers(ITEM_RECEIPT_APPROVE_BIZ_TYPE); // æäº¤ï¼è稿 â å¾ ä¸æ¶ï¼ï¼å¹¶æ¸ 空ä¸ä¸è½®å®¡æ ¸ç»æ itemReceiptMapper.submitAndResetAuditInfo(id, MesWmItemReceiptStatusEnum.APPROVING.getStatus()); // å建 BPM æµç¨å®ä¾ï¼ä½¿å®¡æ¹åºç°å¨ãåååå ¬ - æçæµç¨ã bpmProcessInstanceApi.createProcessInstance(getLoginUserId(), new BpmProcessInstanceCreateReqDTO() .setProcessDefinitionKey(ITEM_RECEIPT_APPROVE_PROCESS_KEY) .setBusinessKey(String.valueOf(id))); } @Override @Transactional(rollbackFor = Exception.class) public void updateItemReceiptAuditStatus(Long id, Integer bpmStatus, String reason) { // BPM 审æ¹ç»ææ å°ä¸ºåæ®ç¶æï¼éè¿=å¾ æ§è¡å ¥åº / ä¸éè¿=è稿 / åæ¶=已忶 Integer status; if (BpmTaskStatusEnum.APPROVE.getStatus().equals(bpmStatus)) { status = MesWmItemReceiptStatusEnum.APPROVED.getStatus(); } else if (BpmTaskStatusEnum.REJECT.getStatus().equals(bpmStatus)) { status = MesWmItemReceiptStatusEnum.PREPARE.getStatus(); } else if (BpmTaskStatusEnum.CANCEL.getStatus().equals(bpmStatus)) { status = MesWmItemReceiptStatusEnum.CANCELED.getStatus(); } else { return; } if (itemReceiptMapper.updateAuditStatusByBpm(id, status, reason) != 1) { log.warn("[updateItemReceiptAuditStatus] éè´å ¥åºå({}) ä¸å¤äºå®¡æ¹ä¸ç¶æï¼å¿½ç¥ BPM ç»æ({})", id, bpmStatus); } } @Override @@ -300,9 +262,9 @@ @Override @Transactional(rollbackFor = Exception.class) public void stockItemReceipt(Long id) { // æ ¡éªåå¨ + 已审æ¹ï¼ç¶æåªè½ç± audit æ¨è¿ï¼APPROVING â APPROVEDï¼ // æ ¡éªåå¨ + å¾ ä¸æ¶ MesWmItemReceiptDO receipt = validateItemReceiptExists(id); if (ObjUtil.notEqual(MesWmItemReceiptStatusEnum.APPROVED.getStatus(), receipt.getStatus())) { if (ObjUtil.notEqual(MesWmItemReceiptStatusEnum.APPROVING.getStatus(), receipt.getStatus())) { throw exception(WM_ITEM_RECEIPT_STATUS_ERROR); } // æ ¡éªæ¯è¡æç»æ°éä¹åæ¯å¦çäºè¡å ¥åºæ°é @@ -318,8 +280,9 @@ throw exception(WM_ITEM_RECEIPT_DETAIL_QUANTITY_MISMATCH); } } // 注æï¼æ¬æ¹æ³ä» åæ°éä¸è´æ§æ ¡éªï¼ä¸å¾ä¿®æ¹åæ®ç¶æã // ç¶ææµè½¬ç± auditï¼APPROVING â APPROVEDï¼ä¸ finishï¼APPROVED â FINISHEDï¼è´è´£ã // 䏿¶å®æï¼å¾ 䏿¶ â å¾ æ§è¡å ¥åºï¼ itemReceiptMapper.updateById(new MesWmItemReceiptDO() .setId(id).setStatus(MesWmItemReceiptStatusEnum.APPROVED.getStatus())); } @Override @@ -441,7 +404,18 @@ @Override public MesWmItemReceiptDO validateItemReceiptEditable(Long id) { // ä» èç¨¿ç¶æå 许ç¼è¾è¡/æç»ï¼å®¡æ¹ä¸ï¼APPROVINGï¼å·²éå®ï¼é¿å ç»è¿å®¡æ ¸ä¿®æ¹æ°æ® // è稿ä¸å¾ 䏿¶ç¶æå 许ç¼è¾ä¸æ¶æç»ï¼æäº¤åä»åºæ§è¡ä¸æ¶æ¶å½å ¥åºä½/æ¹æ¬¡ MesWmItemReceiptDO receipt = validateItemReceiptExists(id); if (ObjUtil.notEqual(MesWmItemReceiptStatusEnum.PREPARE.getStatus(), receipt.getStatus()) && ObjUtil.notEqual(MesWmItemReceiptStatusEnum.APPROVING.getStatus(), receipt.getStatus())) { throw exception(WM_ITEM_RECEIPT_STATUS_NOT_PREPARE); } return receipt; } @Override public MesWmItemReceiptDO validateItemReceiptLineEditable(Long id) { // è¡æ°æ®ä» èç¨¿å¯æ¹ï¼æäº¤åè¡æ°æ®éå®ï¼é¿å 䏿¶é¶æ®µæ¹å¨å ¥åºæ°é return validateItemReceiptExistsAndDraft(id); } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/listener/MesWmItemReceiptStatusListener.java
ÎļþÒÑɾ³ý