From 578639bf4bb9be9808d7c482345b8c35b02510b7 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期一, 18 八月 2025 17:02:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java | 37 src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java | 121 + src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java | 63 src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java | 635 ++++++++ src/main/java/org/jeecg/modules/wms/dto/DeliOrderDeleteResponse.java | 44 src/main/java/org/jeecg/modules/andon/entity/AndonButtonConfig.java | 15 src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java | 311 ++- src/main/java/org/jeecg/modules/andon/entity/AndonOrder.java | 3 src/main/java/org/jeecg/modules/wms/WMSObjectFactory.java | 132 + src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java | 69 src/main/resources/application-dev.yml | 4 src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java | 34 src/main/java/org/jeecg/modules/wms/MESObjectFactory.java | 51 src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java | 75 + src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java | 21 src/main/java/org/jeecg/modules/mes/entity/MessageResponse.java | 12 src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java | 28 src/main/java/org/jeecg/modules/andon/entity/AndonResponseConfig.java | 3 src/main/java/org/jeecg/modules/andon/dto/AndonButtonDTO.java | 83 + src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml | 200 ++ src/main/java/org/jeecg/modules/wms/request/HelloWorld.java | 32 src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java | 15 src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java | 51 src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java | 26 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml | 1 src/main/resources/wsdl/WebService.asmx.wsdl | 227 +++ src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java | 197 ++ src/main/java/org/jeecg/modules/wms/WMSWebService.java | 114 + src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java | 13 pom.xml | 26 src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java | 37 src/main/java/org/jeecg/modules/wms/dto/ReceiveReservationResponse.java | 40 src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java | 35 src/main/java/org/jeecg/modules/andon/mapper/xml/AndonResponseConfigMapper.xml | 12 src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java | 56 src/main/java/org/jeecg/modules/wms/request/DeliOrderDelete.java | 45 src/main/java/org/jeecg/modules/feishu/job/FeishuSyncTask.java | 5 src/main/java/org/jeecg/modules/wms/dto/ReceiveMESScanItemListResponse.java | 41 src/main/java/org/jeecg/modules/andon/mapper/AndonResponseConfigMapper.java | 4 src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java | 42 db/双林新火炬MES数据库设计.pdma.json | 558 ++----- src/main/java/org/jeecg/modules/wms/dto/HelloWorldResponse.java | 44 src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java | 269 ++- src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java | 32 src/main/java/org/jeecg/modules/andon/service/IAndonOrderService.java | 17 src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java | 18 /dev/null | 22 src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java | 2 src/main/java/org/jeecg/modules/wms/dto/WSResponse.java | 35 src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java | 280 ++- src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java | 91 + 51 files changed, 3,403 insertions(+), 925 deletions(-) diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" index 1431e02..9295952 100644 --- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" +++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" @@ -2,7 +2,7 @@ "name": "鍙屾灄鏂扮伀鐐琈ES鏁版嵁搴撹璁�", "describe": "鎻忚堪鍙岃柂鏂扮伀鐐琈ES鏁版嵁搴撹璁¤鎯�", "avatar": "", - "version": "4.9.4", + "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", "updatedTime": "2025-8-18 15:02:20", "dbConns": [], @@ -632,7 +632,7 @@ "#DDE5FF" ], "DDLToggleCase": "L", - "menuWidth": "296px" + "menuWidth": "364px" }, "entities": [ { @@ -64779,6 +64779,24 @@ "id": "FC8D8EFD-EDAD-42FD-81CA-B2B3962BD05F" }, { + "defKey": "publish_time", + "defName": "鍙戝竷鏃堕棿", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098", + "extProps": {}, + "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC", + "id": "7BC5A8E6-31E0-4B70-BAC5-87EFF639FE63" + }, + { "defKey": "request_status", "defName": "璇锋眰鐘舵��", "comment": "", @@ -64789,7 +64807,7 @@ "notNull": false, "autoIncrement": false, "defaultValue": "", - "hideInGraph": false, + "hideInGraph": true, "refDict": "", "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", "extProps": {}, @@ -64816,7 +64834,7 @@ }, { "defKey": "original_warehouse_id", - "defName": "鍘熷簱瀛樺湴", + "defName": "璧峰搴撳瓨鍦�", "comment": "", "type": "", "len": "", @@ -64905,6 +64923,146 @@ "extProps": {}, "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC", "id": "F0CEC477-F5FE-4622-83DB-FBFDA4344E30" + }, + { + "defKey": "material_number", + "defName": "鐗╂枡缂栫爜", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "BE09D493-E183-402D-ACC4-EEA21EB35B8E", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "0B5A2CD6-7472-4E18-ACB1-6418C2A8A109", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" + }, + { + "defKey": "material_name", + "defName": "鐗╂枡鍚嶇О", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": true, + "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "AFBDF9D2-3B49-4620-9541-C15731785905", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" + }, + { + "defKey": "specified_quantity", + "defName": "鐞嗚鎷夊姩鏁伴噺", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "60A2C50B-3F37-4319-B53A-72AE3E55CAFC", + "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E" + }, + { + "defKey": "actual_quantity", + "defName": "瀹為檯鎷夊姩鏁伴噺", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "AE123111-CDE3-4CFE-96ED-EFA3D3115CD2", + "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E" + }, + { + "defKey": "remaining_quantity", + "defName": "杞﹂棿鍓╀綑鏁伴噺", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "12249855-7F62-4734-B5B8-1AACBE2A50CC", + "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E" } ], "correlations": [], @@ -65743,397 +65901,6 @@ "attr9": "", "id": "4B21EDEF-B9C4-48C7-BF6A-AC5ABA159B8A", "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E" - } - ], - "correlations": [], - "indexes": [], - "type": "P" - }, - { - "id": "2FF92658-07FE-49BC-A690-E24FA5226BB3", - "env": { - "base": { - "nameSpace": "", - "codeRoot": "" - } - }, - "defKey": "mes_material_transfer_detail", - "defName": "鐗╂枡鎷夊姩鏄庣粏", - "comment": "", - "properties": { - "partitioned by": "(date string)", - "row format delimited": "", - "fields terminated by ','": "", - "collection items terminated by '-'": "", - "map keys terminated by ':'": "", - "store as textfile;": "" - }, - "sysProps": { - "nameTemplate": "{defKey}[{defName}]" - }, - "notes": {}, - "headers": [ - { - "refKey": "hideInGraph", - "hideInGraph": true - }, - { - "refKey": "defKey", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "defName", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "primaryKey", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "notNull", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "autoIncrement", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "domain", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "type", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "len", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "scale", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "comment", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "refDict", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "defaultValue", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "isStandard", - "freeze": false, - "hideInGraph": false - }, - { - "refKey": "uiHint", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "extProps", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr1", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr2", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr3", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr4", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr5", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr6", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr7", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr8", - "freeze": false, - "hideInGraph": true - }, - { - "refKey": "attr9", - "freeze": false, - "hideInGraph": true - } - ], - "fields": [ - { - "defKey": "id", - "defName": "涓婚敭", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": true, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", - "extProps": {}, - "domain": "16120F75-6AA7-4483-868D-F07F511BB081", - "id": "F7E0BFAE-F178-43E0-8482-2DCE7CEFB184" - }, - { - "defKey": "create_by", - "defName": "鍒涘缓浜�", - "comment": "", - "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "F445F433-E877-4D2A-8ECE-03043F0ACB7D", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" - }, - { - "defKey": "create_time", - "defName": "鍒涘缓鏃堕棿", - "comment": "", - "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "E690295E-8BFF-49DA-8966-6A3FE3824883", - "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098" - }, - { - "defKey": "update_by", - "defName": "鏇存柊浜�", - "comment": "", - "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "E3C7E33A-8B8C-4F70-BA59-3B5A10C50734", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" - }, - { - "defKey": "update_time", - "defName": "鏇存柊鏃堕棿", - "comment": "", - "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "93258189-F627-4142-BC39-0295E3A52033", - "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098" - }, - { - "defKey": "del_flag", - "defName": "鍒犻櫎鏍囪", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "1D764C4A-6F9F-421E-B11A-6F3E23B51811", - "extProps": {}, - "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E", - "id": "F80D66E7-8670-4B1C-9940-041DBAD0580A" - }, - { - "defKey": "request_id", - "defName": "鐢宠鍗旾D", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", - "extProps": {}, - "domain": "16120F75-6AA7-4483-868D-F07F511BB081", - "id": "850A2C7A-D321-4283-B735-7BCC56DF7933" - }, - { - "defKey": "material_number", - "defName": "鐗╂枡缂栫爜", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "domain": "BE09D493-E183-402D-ACC4-EEA21EB35B8E", - "refDict": "", - "extProps": {}, - "notes": {}, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "id": "E77D6EFA-7408-4891-888B-D6FC2CF8E6E5", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" - }, - { - "defKey": "material_name", - "defName": "鐗╂枡鍚嶇О", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", - "refDict": "", - "extProps": {}, - "notes": {}, - "attr1": "", - "attr2": "", - "attr3": "", - "attr4": "", - "attr5": "", - "attr6": "", - "attr7": "", - "attr8": "", - "attr9": "", - "id": "270E5417-96C7-4540-AC29-07C8FCC3CD38", - "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" - }, - { - "defKey": "specified_quantity", - "defName": "鐞嗚鎷夊姩鏁伴噺", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E", - "extProps": {}, - "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", - "id": "D7028092-5311-4FC1-B6F2-19B1FFBFA85B" - }, - { - "defKey": "actual_quantity", - "defName": "瀹為檯鎷夊姩鏁伴噺", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E", - "extProps": {}, - "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", - "id": "4E9708B3-14B0-45A0-A3B8-351D759C7B47" - }, - { - "defKey": "remaining_quantity", - "defName": "杞﹂棿鍓╀綑鏁伴噺", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "baseType": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E", - "extProps": {}, - "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", - "id": "FE041E9A-5D05-42EE-AA33-C563B66B99A5" } ], "correlations": [], @@ -70054,7 +69821,6 @@ "70FEB6D0-FC18-42C5-8608-34E8BBB4A406", "D16FD5E0-8B16-4C0E-AD67-6E5C2FED1A65", "5835D3E9-4B10-48DC-B116-584E447AA201", - "2FF92658-07FE-49BC-A690-E24FA5226BB3", "23C6B8F0-0010-4453-B3C2-9305746C37AB", "D3263A0C-1D6A-453A-B933-86651B5566FE" ], diff --git a/pom.xml b/pom.xml index 7c25535..060cc41 100644 --- a/pom.xml +++ b/pom.xml @@ -582,6 +582,32 @@ </nonFilteredFileExtensions> </configuration> </plugin> + <!-- CXF Codegen Plugin锛氭牴鎹� WSDL 鐢熸垚 Java 瀹㈡埛绔唬鐮� --> + <plugin> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-codegen-plugin</artifactId> + <version>3.5.5</version> <!-- 浣犲彲浠ヤ娇鐢ㄦ渶鏂扮殑绋冲畾鐗堟湰锛屾瘮濡� 3.5.6 / 4.x --> + <executions> + <execution> + <id>generate-sources</id> + <phase>generate-sources</phase> + <goals> + <goal>wsdl2java</goal> + </goals> + <configuration> + <!-- 鎸囧畾鐢熸垚鐨� Java 绫� 鏀惧湪鍝釜鐩綍涓嬶紙閫氬父鏄� target/generated-sources/cxf锛� --> + <sourceRoot>${project.basedir}/target/generated-sources/cxf</sourceRoot> + <wsdlOptions> + <wsdlOption> + <wsdl>${basedir}/src/main/resources/wsdl/WebService.asmx.wsdl</wsdl> + <!-- 鎴栬�呯洿鎺ヤ娇鐢� WSDL 鐨勭綉缁滃湴鍧� --> + <!-- <wsdl>http://10.101.0.182:8002/MesWebService/WebService.asmx?wsdl</wsdl> --> + </wsdlOption> + </wsdlOptions> + </configuration> + </execution> + </executions> + </plugin> </plugins> <resources> <resource> diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java index a589c4b..f1b74a5 100644 --- a/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java +++ b/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java @@ -6,14 +6,14 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonButtonConfig; import org.jeecg.modules.andon.service.IAndonButtonConfigService; +import org.jeecg.modules.andon.service.impl.AndonOrderServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -21,47 +21,26 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.List; /** -* @Description: 瀹夌伅鎸夐挳閰嶇疆 -* @Author: jeecg-boot -* @Date: 2025-07-10 -* @Version: V1.0 -*/ -@Api(tags="瀹夌伅鎸夐挳閰嶇疆") + * @Description: 瀹夌伅鎸夐挳閰嶇疆 + * @Author: jeecg-boot + * @Date: 2025-07-10 + * @Version: V1.0 + */ +@Api(tags = "瀹夌伅鎸夐挳閰嶇疆") @RestController @RequestMapping("/andonbuttonconfig/andonButtonConfig") @Slf4j public class AndonButtonConfigController extends JeecgController<AndonButtonConfig, IAndonButtonConfigService> { - @Autowired - private IAndonButtonConfigService andonButtonConfigService; - - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param andonButtonConfig - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes="瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<IPage<AndonButtonConfig>> queryPageList(AndonButtonConfig andonButtonConfig, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<AndonButtonConfig> queryWrapper = QueryGenerator.initQueryWrapper(andonButtonConfig, req.getParameterMap()); - Page<AndonButtonConfig> page = new Page<AndonButtonConfig>(pageNo, pageSize); - IPage<AndonButtonConfig> pageList = andonButtonConfigService.page(page, queryWrapper); - return Result.OK(pageList); - } - - + @Autowired + private IAndonButtonConfigService andonButtonConfigService; + @Autowired + private AndonOrderServiceImpl andonOrderServiceImpl; /** - * APP鍒嗛〉鍒楄〃鏌ヨ + * 鍒嗛〉鍒楄〃鏌ヨ * * @param andonButtonConfig * @param pageNo @@ -69,126 +48,172 @@ * @param req * @return */ - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes="瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/App/list") - public Result<IPage<AndonButtonConfig>> queryPageAppList(AndonButtonConfig andonButtonConfig, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { + //@AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<AndonButtonConfig>> queryPageList(AndonButtonConfig andonButtonConfig, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { QueryWrapper<AndonButtonConfig> queryWrapper = QueryGenerator.initQueryWrapper(andonButtonConfig, req.getParameterMap()); - - // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (sysUser != null) { - // 澧炲姞閫氳繃绯荤粺鐧诲綍浜鸿繘琛岃繃婊� - queryWrapper.eq("create_by", sysUser.getUsername()); - } - Page<AndonButtonConfig> page = new Page<AndonButtonConfig>(pageNo, pageSize); IPage<AndonButtonConfig> pageList = andonButtonConfigService.page(page, queryWrapper); return Result.OK(pageList); } - /** - * 娣诲姞 - * - * @param andonButtonConfig - * @return - */ - @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-娣诲姞") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-娣诲姞", notes="瀹夌伅鎸夐挳閰嶇疆-娣诲姞") - //@RequiresPermissions("org.jeecg.modules:andon_button_config:add") - @PostMapping(value = "/add") - public Result<String> add(@RequestBody AndonButtonConfig andonButtonConfig) { - andonButtonConfigService.save(andonButtonConfig); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - /** - * 缂栬緫 - * - * @param andonButtonConfig - * @return - */ - @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-缂栬緫") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-缂栬緫", notes="瀹夌伅鎸夐挳閰嶇疆-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:andon_button_config:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody AndonButtonConfig andonButtonConfig) { - andonButtonConfigService.updateById(andonButtonConfig); - return Result.OK("缂栬緫鎴愬姛!"); - } + /** + * APP瀹夌伅鎸夐挳鍒楄〃鏌ヨ + * + * @param factoryId + * @return + */ + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鎸夐挳閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/queryUserAndonButtonList") + public Result<List<AndonButtonDTO>> queryUserAndonButtonList(@RequestParam("factoryId") String factoryId) { + List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonButtonList(factoryId); + return Result.OK(list); + } - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎", notes="瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_button_config:delete") - @DeleteMapping(value = "/delete") - public Result<String> delete(@RequestParam(name="id",required=true) String id) { - andonButtonConfigService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎", notes="瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_button_config:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.andonButtonConfigService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); - } + /** + * APP瀹夌伅鍙戣捣鍒楄〃鏌ヨ + * + * @param factoryId + * @return + */ + @ApiOperation(value = "瀹夌伅鍙戣捣-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍙戣捣-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/queryUserAndonCallList") + public Result<List<AndonButtonDTO>> queryUserAndonCallList(@RequestParam("factoryId") String factoryId) { + List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonCallList(factoryId); + return Result.OK(list); + } - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - //@AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ") - @ApiOperation(value="瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ", notes="瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<AndonButtonConfig> queryById(@RequestParam(name="id",required=true) String id) { - AndonButtonConfig andonButtonConfig = andonButtonConfigService.getById(id); - if(andonButtonConfig==null) { - return Result.error("鏈壘鍒板搴旀暟鎹�"); - } - return Result.OK(andonButtonConfig); - } + /** + * APP瀹夌伅鍝嶅簲鍒楄〃鏌ヨ + * + * @param factoryId + * @return + */ + @ApiOperation(value = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/queryUserAndonRespondList") + public Result<List<AndonButtonDTO>> queryUserAndonRespondList(@RequestParam("factoryId") String factoryId) { + List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonRespondList(factoryId); + return Result.OK(list); + } - /** - * 瀵煎嚭excel - * - * @param request - * @param andonButtonConfig - */ - //@RequiresPermissions("org.jeecg.modules:andon_button_config:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, AndonButtonConfig andonButtonConfig) { - return super.exportXls(request, andonButtonConfig, AndonButtonConfig.class, "瀹夌伅鎸夐挳閰嶇疆"); - } + /** + * APP瀹夌伅宸插鐞嗗垪琛ㄦ煡璇� + * + * @param factoryId + * @return + */ + @ApiOperation(value = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/queryUserAndonHandelList") + public Result<List<AndonButtonDTO>> queryUserAndonHandelList(@RequestParam("factoryId") String factoryId) { + List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonHandelList(factoryId); + return Result.OK(list); + } + /** + * 娣诲姞 + * + * @param andonButtonConfig + * @return + */ + @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-娣诲姞") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-娣诲姞", notes = "瀹夌伅鎸夐挳閰嶇疆-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:andon_button_config:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody AndonButtonConfig andonButtonConfig) { + andonButtonConfigService.save(andonButtonConfig); + return Result.OK("娣诲姞鎴愬姛锛�"); + } - /** + /** + * 缂栬緫 + * + * @param andonButtonConfig + * @return + */ + @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-缂栬緫") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-缂栬緫", notes = "瀹夌伅鎸夐挳閰嶇疆-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:andon_button_config:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<String> edit(@RequestBody AndonButtonConfig andonButtonConfig) { + andonButtonConfigService.updateById(andonButtonConfig); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎", notes = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_button_config:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name = "id", required = true) String id) { + andonButtonConfigService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎", notes = "瀹夌伅鎸夐挳閰嶇疆-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_button_config:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.andonButtonConfigService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ") + @ApiOperation(value = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ", notes = "瀹夌伅鎸夐挳閰嶇疆-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<AndonButtonConfig> queryById(@RequestParam(name = "id", required = true) String id) { + AndonButtonConfig andonButtonConfig = andonButtonConfigService.getById(id); + if (andonButtonConfig == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(andonButtonConfig); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param andonButtonConfig + */ + //@RequiresPermissions("org.jeecg.modules:andon_button_config:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AndonButtonConfig andonButtonConfig) { + return super.exportXls(request, andonButtonConfig, AndonButtonConfig.class, "瀹夌伅鎸夐挳閰嶇疆"); + } + + /** * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - //@RequiresPermissions("andon_button_config:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, AndonButtonConfig.class); - } + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("andon_button_config:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AndonButtonConfig.class); + } } diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java index ae59140..9132c9f 100644 --- a/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java +++ b/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java @@ -12,6 +12,8 @@ import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.andon.entity.AndonOrder; import org.jeecg.modules.andon.service.IAndonOrderService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -21,141 +23,173 @@ import java.util.Arrays; /** -* @Description: 瀹夌伅宸ュ崟 -* @Author: jeecg-boot -* @Date: 2025-07-10 -* @Version: V1.0 -*/ -@Api(tags="瀹夌伅宸ュ崟") + * @Description: 瀹夌伅宸ュ崟 + * @Author: jeecg-boot + * @Date: 2025-07-10 + * @Version: V1.0 + */ +@Api(tags = "瀹夌伅宸ュ崟") @RestController @RequestMapping("/andonorder/andonOrder") @Slf4j public class AndonOrderController extends JeecgController<AndonOrder, IAndonOrderService> { - @Autowired - private IAndonOrderService andonOrderService; + @Autowired + private IAndonOrderService andonOrderService; - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param andonOrder - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ", notes="瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<IPage<AndonOrder>> queryPageList(AndonOrder andonOrder, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<AndonOrder> queryWrapper = QueryGenerator.initQueryWrapper(andonOrder, req.getParameterMap()); - Page<AndonOrder> page = new Page<AndonOrder>(pageNo, pageSize); - IPage<AndonOrder> pageList = andonOrderService.page(page, queryWrapper); - return Result.OK(pageList); - } - /** - * 娣诲姞 - * - * @param andonOrder - * @return - */ - @AutoLog(value = "瀹夌伅宸ュ崟-娣诲姞") - @ApiOperation(value="瀹夌伅宸ュ崟-娣诲姞", notes="瀹夌伅宸ュ崟-娣诲姞") - //@RequiresPermissions("org.jeecg.modules:andon_order:add") - @PostMapping(value = "/add") - public Result<String> add(@RequestBody AndonOrder andonOrder) { - andonOrderService.save(andonOrder); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - /** - * 缂栬緫 - * - * @param andonOrder - * @return - */ - @AutoLog(value = "瀹夌伅宸ュ崟-缂栬緫") - @ApiOperation(value="瀹夌伅宸ュ崟-缂栬緫", notes="瀹夌伅宸ュ崟-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:andon_order:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody AndonOrder andonOrder) { - andonOrderService.updateById(andonOrder); - return Result.OK("缂栬緫鎴愬姛!"); - } + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param andonOrder + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<AndonOrder>> queryPageList(AndonOrder andonOrder, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<AndonOrder> queryWrapper = QueryGenerator.initQueryWrapper(andonOrder, req.getParameterMap()); + Page<AndonOrder> page = new Page<AndonOrder>(pageNo, pageSize); + IPage<AndonOrder> pageList = andonOrderService.page(page, queryWrapper); + return Result.OK(pageList); + } - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎") - @ApiOperation(value="瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎", notes="瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_order:delete") - @DeleteMapping(value = "/delete") - public Result<String> delete(@RequestParam(name="id",required=true) String id) { - andonOrderService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "瀹夌伅宸ュ崟-鎵归噺鍒犻櫎") - @ApiOperation(value="瀹夌伅宸ュ崟-鎵归噺鍒犻櫎", notes="瀹夌伅宸ュ崟-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_order:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.andonOrderService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); - } + /** + * 娣诲姞 + * + * @param andonOrder + * @return + */ + @AutoLog(value = "瀹夌伅宸ュ崟-娣诲姞") + @ApiOperation(value = "瀹夌伅宸ュ崟-娣诲姞", notes = "瀹夌伅宸ュ崟-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody AndonOrder andonOrder) { + andonOrderService.save(andonOrder); + return Result.OK("娣诲姞鎴愬姛锛�"); + } - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - //@AutoLog(value = "瀹夌伅宸ュ崟-閫氳繃id鏌ヨ") - @ApiOperation(value="瀹夌伅宸ュ崟-閫氳繃id鏌ヨ", notes="瀹夌伅宸ュ崟-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<AndonOrder> queryById(@RequestParam(name="id",required=true) String id) { - AndonOrder andonOrder = andonOrderService.getById(id); - if(andonOrder==null) { - return Result.error("鏈壘鍒板搴旀暟鎹�"); - } - return Result.OK(andonOrder); - } - /** - * 瀵煎嚭excel - * - * @param request - * @param andonOrder - */ - //@RequiresPermissions("org.jeecg.modules:andon_order:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, AndonOrder andonOrder) { - return super.exportXls(request, andonOrder, AndonOrder.class, "瀹夌伅宸ュ崟"); - } + /** + * APP瀹夌伅鍝嶅簲鎿嶄綔 + * + * @param orderId + * @return + */ + @ApiOperation(value = "APP瀹夌伅鍝嶅簲鎿嶄綔", notes = "APP瀹夌伅鍝嶅簲鎿嶄綔") + @GetMapping(value = "/AndonRespond") + public Result<String> AndonRespond(@RequestParam("orderId") String orderId) { + AndonOrder andonOrder = andonOrderService.getById(orderId); + andonOrder.setOrderStatus("2"); + andonOrderService.updateById(andonOrder); + return Result.OK("鍝嶅簲鎴愬姛锛�"); + } - /** + + /** + * APP瀹夌伅澶勭悊鎿嶄綔 + * + * + * @return + */ + @ApiOperation(value = "APP瀹夌伅澶勭悊鎿嶄綔", notes = "APP瀹夌伅澶勭悊鎿嶄綔") + @PostMapping(value = "/AndonHandel") + public Result<String> AndonHandel(@RequestBody AndonOrder andonOrder) { + return andonOrderService.handleAndonOrder(andonOrder); + } + + + /** + * 缂栬緫 + * + * @param andonOrder + * @return + */ + @AutoLog(value = "瀹夌伅宸ュ崟-缂栬緫") + @ApiOperation(value = "瀹夌伅宸ュ崟-缂栬緫", notes = "瀹夌伅宸ュ崟-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:andon_order:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<String> edit(@RequestBody AndonOrder andonOrder) { + andonOrderService.updateById(andonOrder); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎") + @ApiOperation(value = "瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎", notes = "瀹夌伅宸ュ崟-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_order:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name = "id", required = true) String id) { + andonOrderService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "瀹夌伅宸ュ崟-鎵归噺鍒犻櫎") + @ApiOperation(value = "瀹夌伅宸ュ崟-鎵归噺鍒犻櫎", notes = "瀹夌伅宸ュ崟-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_order:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.andonOrderService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "瀹夌伅宸ュ崟-閫氳繃id鏌ヨ") + @ApiOperation(value = "瀹夌伅宸ュ崟-閫氳繃id鏌ヨ", notes = "瀹夌伅宸ュ崟-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<AndonOrder> queryById(@RequestParam(name = "id", required = true) String id) { + AndonOrder andonOrder = andonOrderService.getById(id); + if (andonOrder == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(andonOrder); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param andonOrder + */ + //@RequiresPermissions("org.jeecg.modules:andon_order:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AndonOrder andonOrder) { + return super.exportXls(request, andonOrder, AndonOrder.class, "瀹夌伅宸ュ崟"); + } + + /** * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - //@RequiresPermissions("andon_order:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, AndonOrder.class); - } + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("andon_order:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AndonOrder.class); + } } diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java index 1798af8..976af22 100644 --- a/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java +++ b/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java @@ -10,6 +10,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonResponseConfig; import org.jeecg.modules.andon.service.IAndonResponseConfigService; import org.springframework.beans.factory.annotation.Autowired; @@ -19,143 +20,165 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.List; /** -* @Description: 瀹夌伅鍝嶅簲閰嶇疆 -* @Author: jeecg-boot -* @Date: 2025-07-10 -* @Version: V1.0 -*/ -@Api(tags="瀹夌伅鍝嶅簲閰嶇疆") + * @Description: 瀹夌伅鍝嶅簲閰嶇疆 + * @Author: jeecg-boot + * @Date: 2025-07-10 + * @Version: V1.0 + */ +@Api(tags = "瀹夌伅鍝嶅簲閰嶇疆") @RestController @RequestMapping("/andonresponseconfig/andonResponseConfig") @Slf4j public class AndonResponseConfigController extends JeecgController<AndonResponseConfig, IAndonResponseConfigService> { - @Autowired - private IAndonResponseConfigService andonResponseConfigService; + @Autowired + private IAndonResponseConfigService andonResponseConfigService; - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param andonResponseConfig - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes="瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<IPage<AndonResponseConfig>> queryPageList(AndonResponseConfig andonResponseConfig, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<AndonResponseConfig> queryWrapper = QueryGenerator.initQueryWrapper(andonResponseConfig, req.getParameterMap()); - Page<AndonResponseConfig> page = new Page<AndonResponseConfig>(pageNo, pageSize); - IPage<AndonResponseConfig> pageList = andonResponseConfigService.page(page, queryWrapper); - return Result.OK(pageList); - } + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param andonResponseConfig + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍝嶅簲閰嶇疆-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<AndonResponseConfig>> queryPageList(AndonResponseConfig andonResponseConfig, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<AndonResponseConfig> queryWrapper = QueryGenerator.initQueryWrapper(andonResponseConfig, req.getParameterMap()); + Page<AndonResponseConfig> page = new Page<AndonResponseConfig>(pageNo, pageSize); + IPage<AndonResponseConfig> pageList = andonResponseConfigService.page(page, queryWrapper); + return Result.OK(pageList); + } - /** - * 娣诲姞 - * - * @param andonResponseConfig - * @return - */ - @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-娣诲姞") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-娣诲姞", notes="瀹夌伅鍝嶅簲閰嶇疆-娣诲姞") - //@RequiresPermissions("org.jeecg.modules:andon_response_config:add") - @PostMapping(value = "/add") - public Result<String> add(@RequestBody AndonResponseConfig andonResponseConfig) { - andonResponseConfigService.save(andonResponseConfig); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - /** - * 缂栬緫 - * - * @param andonResponseConfig - * @return - */ - @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-缂栬緫") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-缂栬緫", notes="瀹夌伅鍝嶅簲閰嶇疆-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:andon_response_config:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody AndonResponseConfig andonResponseConfig) { - andonResponseConfigService.updateById(andonResponseConfig); - return Result.OK("缂栬緫鎴愬姛!"); - } + /** + * 鍙戦�佸畨鐏秷鎭� + * + * @param andonButtonDTO + * @return + */ + @AutoLog(value = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�") + @ApiOperation(value = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�", notes = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�") + @PostMapping(value = "/sendMessage") + public Result<String> sendMessage(@RequestBody AndonButtonDTO andonButtonDTO) { + try { + andonButtonDTO.setBlinkingFlag(1); + // 璋冪敤鏈嶅姟灞傚鐞嗕笟鍔¢�昏緫 + andonResponseConfigService.sendAndonNotification(andonButtonDTO); + return Result.OK("娣诲姞鎴愬姛锛�"); + } catch (Exception e) { + log.error("瀹夌伅宸ュ崟[{}]椋炰功閫氱煡鍙戦�佸け璐�", andonButtonDTO.getId(), e); + return Result.error("鍙戦�佹秷鎭け璐�: " + e.getMessage()); + } + } - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎", notes="瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_response_config:delete") - @DeleteMapping(value = "/delete") - public Result<String> delete(@RequestParam(name="id",required=true) String id) { - andonResponseConfigService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } + /** + * 娣诲姞 + * + * @param andonResponseConfig + * @return + */ + @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-娣诲姞") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-娣诲姞", notes = "瀹夌伅鍝嶅簲閰嶇疆-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody AndonResponseConfig andonResponseConfig) { + andonResponseConfigService.save(andonResponseConfig); + return Result.OK("娣诲姞鎴愬姛锛�"); + } - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎", notes="瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:andon_response_config:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.andonResponseConfigService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); - } + /** + * 缂栬緫 + * + * @param andonResponseConfig + * @return + */ + @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-缂栬緫") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-缂栬緫", notes = "瀹夌伅鍝嶅簲閰嶇疆-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:andon_response_config:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<String> edit(@RequestBody AndonResponseConfig andonResponseConfig) { + andonResponseConfigService.updateById(andonResponseConfig); + return Result.OK("缂栬緫鎴愬姛!"); + } - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - //@AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ") - @ApiOperation(value="瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ", notes="瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<AndonResponseConfig> queryById(@RequestParam(name="id",required=true) String id) { - AndonResponseConfig andonResponseConfig = andonResponseConfigService.getById(id); - if(andonResponseConfig==null) { - return Result.error("鏈壘鍒板搴旀暟鎹�"); - } - return Result.OK(andonResponseConfig); - } + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎", notes = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_response_config:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name = "id", required = true) String id) { + andonResponseConfigService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } - /** - * 瀵煎嚭excel - * - * @param request - * @param andonResponseConfig - */ - //@RequiresPermissions("org.jeecg.modules:andon_response_config:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, AndonResponseConfig andonResponseConfig) { - return super.exportXls(request, andonResponseConfig, AndonResponseConfig.class, "瀹夌伅鍝嶅簲閰嶇疆"); - } + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎", notes = "瀹夌伅鍝嶅簲閰嶇疆-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:andon_response_config:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.andonResponseConfigService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } - /** + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ") + @ApiOperation(value = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ", notes = "瀹夌伅鍝嶅簲閰嶇疆-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<AndonResponseConfig> queryById(@RequestParam(name = "id", required = true) String id) { + AndonResponseConfig andonResponseConfig = andonResponseConfigService.getById(id); + if (andonResponseConfig == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(andonResponseConfig); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param andonResponseConfig + */ + //@RequiresPermissions("org.jeecg.modules:andon_response_config:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AndonResponseConfig andonResponseConfig) { + return super.exportXls(request, andonResponseConfig, AndonResponseConfig.class, "瀹夌伅鍝嶅簲閰嶇疆"); + } + + /** * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - //@RequiresPermissions("andon_response_config:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, AndonResponseConfig.class); - } + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("andon_response_config:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AndonResponseConfig.class); + } } diff --git a/src/main/java/org/jeecg/modules/andon/dto/AndonButtonDTO.java b/src/main/java/org/jeecg/modules/andon/dto/AndonButtonDTO.java new file mode 100644 index 0000000..044b1dd --- /dev/null +++ b/src/main/java/org/jeecg/modules/andon/dto/AndonButtonDTO.java @@ -0,0 +1,83 @@ +package org.jeecg.modules.andon.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; + +@Data +public class AndonButtonDTO { + /** 鍝嶅簲ID */ + @ApiModelProperty(value = "鍝嶅簲ID") + private String id; + /** 鎸夐挳ID */ + @ApiModelProperty(value = " 鎸夐挳ID ") + private String buttonId; + /**瀹夌伅鍚嶇О*/ + @ApiModelProperty(value = "瀹夌伅鍚嶇О") + private String buttonName; + /**瀹夌伅缂栫爜*/ + @ApiModelProperty(value = "瀹夌伅缂栫爜") + private String buttonCode; + /** 涓�绾у搷搴斾汉 */ + @ApiModelProperty(value = "涓�绾у搷搴斾汉") + private String responder; + + + @ApiModelProperty(value = "浜岀骇鍝嶅簲浜�") + private String secondResponder; + /**浜х嚎鍚嶇О*/ + @ApiModelProperty(value = "浜х嚎鍚嶇О") + private String factoryName; + + /**浜х嚎鍚嶇О*/ + @ApiModelProperty(value = "宸ュ巶鍚嶇О") + private String parentFactoryName; + + /**涓�绾у搷搴旀椂闀�*/ + @ApiModelProperty(value = "涓�绾у搷搴旀椂闀�") + private Integer upgradeResponseDuration; + + + + /**浜岀骇鍝嶅簲鏃堕暱*/ + @ApiModelProperty(value = "浜岀骇鍝嶅簲鏃堕暱") + private Integer secondUpgradeResponseDuration; + + /**涓夌骇绾у搷搴旀椂闀�*/ + @ApiModelProperty(value = "涓夌骇鍝嶅簲鏃堕暱") + private Integer thirdUpgradeResponseDuration; + + /** + * 鏄惁闂儊 + * 瀵瑰簲鏁版嵁搴撹〃涓� is_blinking 瀛楁锛堝ぇ浜�0 鏈夊緟澶勭悊鐨勫伐鍗曢棯锛岀浉鍙嶄笉闂儊锛� + */ + @ApiModelProperty(value = "鏍囪瘑闂儊") + private Integer blinkingFlag; + + @ApiModelProperty(value = "涓�绾у搷搴斾汉openId") + private String responderOpenId; + + @ApiModelProperty(value = "浜岀骇鍝嶅簲浜簅penId") + private String secondResponderOpenId; + + @ApiModelProperty(value = "涓夌骇鍝嶅簲浜簅penId") + private String thirdResponderOpenId; + + + + @ApiModelProperty(value = "涓夌骇鍝嶅簲浜�") + private String thirdResponder; + + + + @ApiModelProperty(value = "宸ュ崟ID") + private String orderIds; + + @ApiModelProperty(value = "宸ュ崟鐘舵��") + private String orderStatus; + + @ApiModelProperty(value = "瀹夌伅鍙戣捣浜�") + private String operator; + +} diff --git a/src/main/java/org/jeecg/modules/andon/entity/AndonButtonConfig.java b/src/main/java/org/jeecg/modules/andon/entity/AndonButtonConfig.java index 48eeeee..66cbd14 100644 --- a/src/main/java/org/jeecg/modules/andon/entity/AndonButtonConfig.java +++ b/src/main/java/org/jeecg/modules/andon/entity/AndonButtonConfig.java @@ -1,12 +1,10 @@ package org.jeecg.modules.andon.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import liquibase.pro.packaged.B; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -89,4 +87,13 @@ @Excel(name = "澶囨敞", width = 15) @ApiModelProperty(value = "澶囨敞") private String remark; + + + /** + * 鏄惁闂儊 + * 瀵瑰簲鏁版嵁搴撹〃涓� is_blinking 瀛楁锛坱inyint绫诲瀷锛岄粯璁ゅ��0锛� + */ + @ApiModelProperty(value = "鏍囪瘑闂儊") + @TableField(exist = false) + private boolean blinkingFlag; } diff --git a/src/main/java/org/jeecg/modules/andon/entity/AndonOrder.java b/src/main/java/org/jeecg/modules/andon/entity/AndonOrder.java index bdee167..e7e0331 100644 --- a/src/main/java/org/jeecg/modules/andon/entity/AndonOrder.java +++ b/src/main/java/org/jeecg/modules/andon/entity/AndonOrder.java @@ -68,6 +68,7 @@ private String buttonId; /**瀹夌伅浜�*/ @Excel(name = "瀹夌伅浜�", width = 15) + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username") @ApiModelProperty(value = "瀹夌伅浜�") private String operator; /**瀹夌伅鏃堕棿*/ @@ -82,6 +83,7 @@ @ApiModelProperty(value = "瀹夌伅绛夌骇") private String andonLevel; /**鍝嶅簲浜�*/ + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username") @Excel(name = "鍝嶅簲浜�", width = 15) @ApiModelProperty(value = "鍝嶅簲浜�") private String responder; @@ -92,6 +94,7 @@ @ApiModelProperty(value = "鍝嶅簲鏃堕棿") private Date responseTime; /**澶勭悊浜�*/ + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username") @Excel(name = "澶勭悊浜�", width = 15) @ApiModelProperty(value = "澶勭悊浜�") private String processor; diff --git a/src/main/java/org/jeecg/modules/andon/entity/AndonResponseConfig.java b/src/main/java/org/jeecg/modules/andon/entity/AndonResponseConfig.java index 96dd37d..465add1 100644 --- a/src/main/java/org/jeecg/modules/andon/entity/AndonResponseConfig.java +++ b/src/main/java/org/jeecg/modules/andon/entity/AndonResponseConfig.java @@ -78,4 +78,7 @@ @Excel(name = "涓夌骇鍝嶅簲浜�(鍗囩骇涓ゆ)", width = 15) @ApiModelProperty(value = "涓夌骇鍝嶅簲浜�(鍗囩骇涓ゆ)") private String thirdResponder; + + + } diff --git a/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java b/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java index 2c87ddc..dbf50f1 100644 --- a/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java +++ b/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java @@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonButtonConfig; + +import java.util.List; /** * @Description: 瀹夌伅鎸夐挳閰嶇疆 @@ -12,4 +15,36 @@ */ public interface AndonButtonConfigMapper extends BaseMapper<AndonButtonConfig> { AndonButtonConfig getAndonButtonById(@Param("id") String id); + /** + * 瀹夌伅鎸夐挳鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonButtonList(String factoryId); + + /** + * 鍙戣捣瀹夌伅鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonCallList(String factoryId); + + /** + * 鍝嶅簲瀹夌伅鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonRespondList(String factoryId); + + + /** + * 澶勭悊瀹夌伅鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonHandelList(String factoryId); + } + + + diff --git a/src/main/java/org/jeecg/modules/andon/mapper/AndonResponseConfigMapper.java b/src/main/java/org/jeecg/modules/andon/mapper/AndonResponseConfigMapper.java index 85c537d..6801fdb 100644 --- a/src/main/java/org/jeecg/modules/andon/mapper/AndonResponseConfigMapper.java +++ b/src/main/java/org/jeecg/modules/andon/mapper/AndonResponseConfigMapper.java @@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonResponseConfig; + +import java.util.List; /** * @Description: 瀹夌伅鍝嶅簲閰嶇疆 @@ -12,4 +15,5 @@ */ public interface AndonResponseConfigMapper extends BaseMapper<AndonResponseConfig> { AndonResponseConfig getAndonResponseConfigByFactoryIdAndButtonId(@Param("factoryId") String factoryId, @Param("buttonId") String buttonId); + } diff --git a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml index ec55989..0475bda 100644 --- a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml +++ b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml @@ -2,6 +2,204 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.andon.mapper.AndonButtonConfigMapper"> <select id="getAndonButtonById" resultType="org.jeecg.modules.andon.entity.AndonButtonConfig"> - SELECT * FROM andon_button_config WHERE id = #{id} and del_flag = 0 and button_status = '鍚敤' + SELECT * + FROM andon_button_config + WHERE id = #{id} + and del_flag = 0 + and button_status = '鍚敤' </select> + <select id="queryUserAndonButtonList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO"> + select arc.id, + abc.id as button_id, + abc.button_name, + abc.button_code, + (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status != '3') as blinking_flag, STUFF((SELECT ',' + CAST (ao.id AS VARCHAR) + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + FOR XML PATH ('')), 1, 1, '') as order_ids + from andon_response_config arc + left join andon_button_config abc + on arc.button_id = abc.id + where arc.factory_id=#{factoryId}; + </select> + + <select id="queryUserAndonCallList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO"> + select arc.id, + abc.id as buttonId, + abc.button_name as buttonName, + abc.button_code as buttonCode, + (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '1') as blinkingFlag, + STUFF((SELECT ',' + CAST (ao.id AS VARCHAR) + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '1' + FOR XML PATH ('')), 1, 1, '') as orderIds, + bf.factory_name as factoryName, + parent_bf.factory_name as parentFactoryName, + abc.upgrade_response_duration as upgradeResponseDuration, + abc.second_upgrade_response_duration as secondUpgradeResponseDuration, + arc.firster_responder as responder, + arc.second_responder, + arc.third_responder, + STUFF((SELECT ',' + ao.order_status + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '1' + FOR XML PATH ('')), 1, 1, '') as orderStatus + from andon_response_config arc + left join andon_button_config abc + on arc.button_id = abc.id + left join base_factory bf on arc.factory_id = bf.id + left join base_factory parent_bf on bf.parent_id = parent_bf.id + where arc.factory_id=#{factoryId} + and (select count (1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '1') = 1 + </select> + + <select id="queryUserAndonRespondList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO"> + select arc.id, + abc.id as buttonId, + abc.button_name as buttonName, + abc.button_code as buttonCode, + (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '2') as blinkingFlag, + STUFF((SELECT ',' + CAST(ao.id AS VARCHAR) + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '2' + FOR XML PATH ('')), 1, 1, '') as orderIds, + bf.factory_name as factoryName, + parent_bf.factory_name as parentFactoryName, + abc.upgrade_response_duration as upgradeResponseDuration, + abc.second_upgrade_response_duration as secondUpgradeResponseDuration, + arc.firster_responder as responder, + arc.second_responder, + arc.third_responder, + STUFF((SELECT ',' + ao.order_status + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '2' + FOR XML PATH ('')), 1, 1, '') as orderStatus, + (SELECT TOP 1 ao.operator + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '2') as operator + from andon_response_config arc + left join andon_button_config abc + on arc.button_id = abc.id + left join base_factory bf on arc.factory_id = bf.id + left join base_factory parent_bf on bf.parent_id = parent_bf.id + where arc.factory_id = #{factoryId} + and (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '2') = 1 + </select> +<!-- <select id="queryUserAndonRespondList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO">--> +<!-- select arc.id,--> +<!-- abc.id as buttonId,--> +<!-- abc.button_name as buttonName,--> +<!-- abc.button_code as buttonCode,--> +<!-- (select count(1)--> +<!-- from andon_order ao--> +<!-- where ao.button_id = arc.button_id--> +<!-- and ao.factory_id = arc.factory_id--> +<!-- and ao.order_status = '2') as blinkingFlag,--> +<!-- STUFF((SELECT ',' + CAST(ao.id AS VARCHAR)--> +<!-- FROM andon_order ao--> +<!-- WHERE ao.button_id = arc.button_id--> +<!-- and ao.factory_id = arc.factory_id--> +<!-- and ao.order_status = '2'--> +<!-- FOR XML PATH ('')), 1, 1, '') as orderIds,--> +<!-- bf.factory_name as factoryName,--> +<!-- parent_bf.factory_name as parentFactoryName,--> +<!-- abc.upgrade_response_duration as upgradeResponseDuration,--> +<!-- abc.second_upgrade_response_duration as secondUpgradeResponseDuration,--> +<!-- arc.firster_responder as responder,--> +<!-- arc.second_responder,--> +<!-- arc.third_responder,--> +<!-- STUFF((SELECT ',' + ao.order_status--> +<!-- FROM andon_order ao--> +<!-- WHERE ao.button_id = arc.button_id--> +<!-- and ao.factory_id = arc.factory_id--> +<!-- and ao.order_status = '2'--> +<!-- FOR XML PATH ('')), 1, 1, '') as orderStatus--> +<!-- from andon_response_config arc--> +<!-- left join andon_button_config abc--> +<!-- on arc.button_id = abc.id--> +<!-- left join base_factory bf on arc.factory_id = bf.id--> +<!-- left join base_factory parent_bf on bf.parent_id = parent_bf.id--> +<!-- where arc.factory_id = #{factoryId}--> +<!-- and (select count(1)--> +<!-- from andon_order ao--> +<!-- where ao.button_id = arc.button_id--> +<!-- and ao.factory_id = arc.factory_id--> +<!-- and ao.order_status = '2') = 1--> +<!-- </select>--> + + + <select id="queryUserAndonHandelList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO"> + select arc.id, + abc.id as buttonId, + abc.button_name as buttonName, + abc.button_code as buttonCode, + (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '3') as blinkingFlag, + STUFF((SELECT ',' + CAST(ao.id AS VARCHAR) + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '3' + FOR XML PATH ('')), 1, 1, '') as orderIds, + bf.factory_name as factoryName, + parent_bf.factory_name as parentFactoryName, + abc.upgrade_response_duration as upgradeResponseDuration, + abc.second_upgrade_response_duration as secondUpgradeResponseDuration, + arc.firster_responder as responder, + arc.second_responder, + arc.third_responder, + STUFF((SELECT ',' + ao.order_status + FROM andon_order ao + WHERE ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '3' + FOR XML PATH ('')), 1, 1, '') as orderStatus + from andon_response_config arc + left join andon_button_config abc + on arc.button_id = abc.id + left join base_factory bf on arc.factory_id = bf.id + left join base_factory parent_bf on bf.parent_id = parent_bf.id + where arc.factory_id = #{factoryId} + and (select count(1) + from andon_order ao + where ao.button_id = arc.button_id + and ao.factory_id = arc.factory_id + and ao.order_status = '3') = 1 + </select> + + </mapper> \ No newline at end of file diff --git a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonResponseConfigMapper.xml b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonResponseConfigMapper.xml index 2f95e67..650b483 100644 --- a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonResponseConfigMapper.xml +++ b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonResponseConfigMapper.xml @@ -1,7 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.andon.mapper.AndonResponseConfigMapper"> - <select id="getAndonResponseConfigByFactoryIdAndButtonId" resultType="org.jeecg.modules.andon.entity.AndonResponseConfig"> - SELECT * FROM andon_response_config WHERE factory_id = #{factoryId} AND button_id = #{buttonId} AND del_flag = 0 + <select id="getAndonResponseConfigByFactoryIdAndButtonId" + resultType="org.jeecg.modules.andon.entity.AndonResponseConfig"> + SELECT * + FROM andon_response_config + WHERE factory_id = #{factoryId} + AND button_id = #{buttonId} + AND del_flag = 0 </select> -</mapper> \ No newline at end of file + +</mapper> diff --git a/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java b/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java index a3bd9e1..500343c 100644 --- a/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java +++ b/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java @@ -1,7 +1,10 @@ package org.jeecg.modules.andon.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonButtonConfig; + +import java.util.List; /** * @Description: 瀹夌伅鎸夐挳閰嶇疆 @@ -11,4 +14,35 @@ */ public interface IAndonButtonConfigService extends IService<AndonButtonConfig> { AndonButtonConfig getAndonButtonById(String id); + + /** + * 鏌ヨ鐢ㄦ埛瀹夌伅鎸夐挳鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonButtonList(String factoryId); + + + /** + * 鏌ヨ鐢ㄦ埛鍙戣捣瀹夌伅鎸夐挳鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonCallList(String factoryId); + + /** + * 鏌ヨ鐢ㄦ埛鍙戣捣瀹夌伅鍝嶅簲鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonRespondList(String factoryId); + + + /** + * 鏌ヨ鐢ㄦ埛鍙戣捣瀹夌伅澶勭悊鍒楄〃 + * @param factoryId + * @return + */ + List<AndonButtonDTO> queryUserAndonHandelList(String factoryId); + } diff --git a/src/main/java/org/jeecg/modules/andon/service/IAndonOrderService.java b/src/main/java/org/jeecg/modules/andon/service/IAndonOrderService.java index a2cc301..c4485d3 100644 --- a/src/main/java/org/jeecg/modules/andon/service/IAndonOrderService.java +++ b/src/main/java/org/jeecg/modules/andon/service/IAndonOrderService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.andon.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.andon.entity.AndonOrder; import java.util.List; @@ -14,4 +15,20 @@ public interface IAndonOrderService extends IService<AndonOrder> { //宸插畬鎴愮姸鎬侀櫎澶� List<AndonOrder> getAndonOrdersExceptYWC(); + + /** + * 鑾峰彇宸ュ崟鐨勫垵濮嬪搷搴斾汉 + * @param andonOrder + * @return + */ + String getPrimaryResponder(AndonOrder andonOrder); + + + + /** + * 澶勭悊瀹夌伅宸ュ崟 + * @param andonOrder + * @return + */ + Result<String> handleAndonOrder(AndonOrder andonOrder); } diff --git a/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java b/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java index aaac967..58aa6bb 100644 --- a/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java +++ b/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java @@ -1,7 +1,10 @@ package org.jeecg.modules.andon.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonResponseConfig; + +import java.util.List; /** * @Description: 瀹夌伅鍝嶅簲閰嶇疆 @@ -11,4 +14,14 @@ */ public interface IAndonResponseConfigService extends IService<AndonResponseConfig> { AndonResponseConfig getAndonResponseConfigByFactoryIdAndButtonId(String factoryId, String buttonId); + + + + + /** + * 鍙戦�佸畨鐏�氱煡 + * @param andonButtonDTO 瀹夌伅鎸夐挳DTO + * @return 缁撴灉 + */ + void sendAndonNotification(AndonButtonDTO andonButtonDTO); } diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java index 92a7933..3dc9212 100644 --- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java +++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java @@ -1,10 +1,14 @@ package org.jeecg.modules.andon.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.andon.dto.AndonButtonDTO; import org.jeecg.modules.andon.entity.AndonButtonConfig; import org.jeecg.modules.andon.mapper.AndonButtonConfigMapper; import org.jeecg.modules.andon.service.IAndonButtonConfigService; import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; /** * @Description: 瀹夌伅鎸夐挳閰嶇疆 @@ -19,4 +23,26 @@ public AndonButtonConfig getAndonButtonById(String id) { return baseMapper.getAndonButtonById(id); } + + @Override + public List<AndonButtonDTO> queryUserAndonButtonList(String factoryId) { + return baseMapper.queryUserAndonButtonList(factoryId); + } + + @Override + public List<AndonButtonDTO> queryUserAndonCallList(String factoryId) { + return baseMapper.queryUserAndonCallList(factoryId); + } + + @Override + public List<AndonButtonDTO> queryUserAndonRespondList(String factoryId) { + return baseMapper.queryUserAndonRespondList(factoryId); + } + + @Override + public List<AndonButtonDTO> queryUserAndonHandelList(String factoryId) { + return baseMapper.queryUserAndonHandelList(factoryId); + } + + } diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java index 1152cfd..e9b6a34 100644 --- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java +++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java @@ -1,9 +1,18 @@ package org.jeecg.modules.andon.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.andon.entity.AndonResponseConfig; +import org.jeecg.modules.andon.mapper.AndonResponseConfigMapper; import org.jeecg.modules.andon.service.IAndonOrderService; import org.jeecg.modules.andon.entity.AndonOrder; import org.jeecg.modules.andon.mapper.AndonOrderMapper; +import org.jeecg.modules.feishu.service.FeishuUserService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -11,14 +20,78 @@ /** * @Description: 瀹夌伅宸ュ崟 * @Author: jeecg-boot - * @Date: 2025-07-10 + * @Date: 2025-07-10 * @Version: V1.0 */ @Service public class AndonOrderServiceImpl extends ServiceImpl<AndonOrderMapper, AndonOrder> implements IAndonOrderService { + @Autowired + private FeishuUserService feishuService; + @Autowired + private ISysUserService sysUserService; + + @Autowired + private AndonResponseConfigMapper andonResponseConfigMapper; @Override public List<AndonOrder> getAndonOrdersExceptYWC() { return baseMapper.getAndonOrdersExceptYWC(); } + + @Override + public String getPrimaryResponder(AndonOrder andonOrder) { + // 1. 鏍¢獙蹇呰鍙傛暟 + if (StringUtils.isBlank(andonOrder.getFactoryId()) || StringUtils.isBlank(andonOrder.getButtonId())) { + + return null; + } + + // 2. 鏌ヨ鍝嶅簲浜洪厤缃紙鍋囪瀛樺湪鍝嶅簲浜洪厤缃疄浣撳拰Mapper锛� + // 鏋勫缓鏌ヨ鏉′欢锛氬尮閰嶄骇绾縄D銆佸畨鐏被鍨婭D锛屼笖閰嶇疆涓哄惎鐢ㄧ姸鎬� + QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("factory_id", andonOrder.getFactoryId()) + .eq("button_id", andonOrder.getButtonId()) + .eq("status", 1) // 1琛ㄧず鍚敤鐘舵�� + .last("limit 1"); // 鍙彇涓�鏉℃湁鏁堥厤缃� + + // 3. 鎵ц鏌ヨ + AndonResponseConfig config = andonResponseConfigMapper.selectOne(queryWrapper); + if (config == null) { + return null; + } + return config.getFirsterResponder(); + } + + @Override + public Result<String> handleAndonOrder(AndonOrder andonOrder) { + + // 璁剧疆宸ュ崟鐘舵�佷负澶勭悊涓� + andonOrder.setOrderStatus("3"); + + // 鑾峰彇鍝嶅簲鑰呯敤鎴峰悕 + String responderUsername = andonOrder.getResponder(); + + // 楠岃瘉鍝嶅簲鑰呯敤鎴峰悕涓嶄负绌� + if (StringUtils.isBlank(responderUsername)) { + return Result.error("鍝嶅簲鑰呬俊鎭笉鑳戒负绌�"); + } + + // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴蜂俊鎭� + SysUser sysUser = sysUserService.getOne( + new QueryWrapper<SysUser>().eq("username", responderUsername) + ); + + // 楠岃瘉鐢ㄦ埛鏄惁瀛樺湪 + if (sysUser == null) { + return Result.error("鎵句笉鍒扮敤鎴峰悕涓� " + responderUsername + " 鐨勭敤鎴�"); + } + // 璁剧疆鍝嶅簲鑰匢D + andonOrder.setResponder(sysUser.getId()); + andonOrder.setProcessor(sysUser.getId()); + // 鏇存柊宸ュ崟淇℃伅 + this.updateById(andonOrder); + + return Result.OK("澶勭悊鎴愬姛"); + } + } diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java index 04db58b..f6f23ae 100644 --- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java +++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java @@ -1,22 +1,215 @@ package org.jeecg.modules.andon.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.andon.dto.AndonButtonDTO; +import org.jeecg.modules.andon.entity.AndonButtonConfig; +import org.jeecg.modules.andon.entity.AndonOrder; import org.jeecg.modules.andon.entity.AndonResponseConfig; import org.jeecg.modules.andon.mapper.AndonResponseConfigMapper; +import org.jeecg.modules.andon.service.IAndonButtonConfigService; +import org.jeecg.modules.andon.service.IAndonOrderService; import org.jeecg.modules.andon.service.IAndonResponseConfigService; +import org.jeecg.modules.base.entity.Factory; +import org.jeecg.modules.base.service.IFactoryService; +import org.jeecg.modules.feishu.service.FeishuUserService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; /** * @Description: 瀹夌伅鍝嶅簲閰嶇疆 * @Author: jeecg-boot - * @Date: 2025-07-10 + * @Date: 2025-07-10 * @Version: V1.0 */ @Service public class AndonResponseConfigServiceImpl extends ServiceImpl<AndonResponseConfigMapper, AndonResponseConfig> implements IAndonResponseConfigService { + @Autowired + private IFactoryService factoryService; + + @Autowired + private ISysUserService iSysUserService; + + @Autowired + private FeishuUserService feishuUserService; + @Autowired + private IAndonButtonConfigService andonButtonConfigService; + + @Autowired + private IAndonOrderService andonOrderService; @Override public AndonResponseConfig getAndonResponseConfigByFactoryIdAndButtonId(String factoryId, String buttonId) { - return baseMapper.getAndonResponseConfigByFactoryIdAndButtonId(factoryId,buttonId); + return baseMapper.getAndonResponseConfigByFactoryIdAndButtonId(factoryId, buttonId); } + + + + @Override + public void sendAndonNotification(AndonButtonDTO andonButtonDTO) { + /** + * 1. 楠岃瘉宸ュ崟鐘舵�� + */ + if (andonButtonDTO == null) { + log.warn("璇锋眰鍙傛暟涓虹┖"); + throw new IllegalArgumentException("璇锋眰鍙傛暟涓嶈兘涓虹┖"); + } + /** + * 璁剧疆瀹夌伅浜� + */ + + /** + * 2. 鑾峰彇鍝嶅簲閰嶇疆 + */ + AndonResponseConfig andonResponseConfig = this.getById(andonButtonDTO.getId()); + + AndonOrder andonOrder = andonOrderService.getById(andonButtonDTO.getOrderIds()); + if (andonOrder == null) { + log.warn("鏈壘鍒癐D涓篬{}]鐨勫畨鐏鍗�"); + throw new IllegalArgumentException("鏈壘鍒板搴旂殑瀹夌伅璁㈠崟"); + } + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (loginUser != null) { + log.warn("鏈壘鍒板綋鍓嶇敤鎴�"); + + } + assert loginUser != null; + andonOrder.setResponder(loginUser.getId()); + String orderStatus = andonOrder.getOrderStatus(); + andonButtonDTO.setOrderStatus(orderStatus); + if (andonResponseConfig == null) { + log.warn("鏈壘鍒癐D涓篬{}]鐨勫搷搴旈厤缃�"); + throw new IllegalArgumentException("鏈壘鍒板搴旂殑鍝嶅簲閰嶇疆"); + } + /** + * 3. 璁剧疆浜岀骇鍝嶅簲浜� + */ + String secondResponder = andonResponseConfig.getSecondResponder(); + if (StringUtils.isNotBlank(secondResponder)) { + andonButtonDTO.setSecondResponder(secondResponder); + } + + /** + * 4. 鑾峰彇宸ュ巶淇℃伅 + */ + + String factoryId = andonResponseConfig.getFactoryId(); + if (factoryId == null || factoryId.isEmpty()) { + log.warn("鍝嶅簲閰嶇疆[{}]鏈缃伐鍘侷D"); + throw new IllegalArgumentException("鍝嶅簲閰嶇疆鏈缃伐鍘備俊鎭�"); + } + + Factory factory = factoryService.getOne(new QueryWrapper<Factory>() + .eq("id", factoryId) + .eq("del_flag", 0)); + + if (factory == null) { + log.warn("鏈壘鍒癐D涓篬{}]鐨勫伐鍘�"); + throw new IllegalArgumentException("鏈壘鍒板搴旂殑宸ュ巶淇℃伅"); + } + + /** + * 鑾峰彇浜х嚎鍚嶇О + */ + String factoryName = factory.getFactoryName(); + andonButtonDTO.setFactoryName(factoryName); + /** + * 6. 璁剧疆宸ュ巶鍚嶇О + */ + String parentId = factory.getParentId(); + if (parentId != null && !parentId.isEmpty()) { + Factory parentFactory = factoryService.getOne(new QueryWrapper<Factory>() + .eq("id", parentId) + .eq("del_flag", 0)); + if (parentFactory != null) { + andonButtonDTO.setParentFactoryName(parentFactory.getFactoryName()); + } + } + /** + * 6. 鑾峰彇瀹夌伅鎸夐挳閰嶇疆 + */ + AndonButtonConfig andonButtonById = andonButtonConfigService.getAndonButtonById(andonButtonDTO.getButtonId()); + if (andonButtonById == null) { + log.warn("鏈壘鍒癐D涓篬{}]鐨勫畨鐏寜閽�"); + throw new IllegalArgumentException("鏈壘鍒板搴旂殑瀹夌伅鎸夐挳淇℃伅"); + } + /** + * 7. 璁剧疆鍝嶅簲鏃堕棿 + */ + Integer upgradeResponseDuration = andonButtonById.getUpgradeResponseDuration(); + andonButtonDTO.setUpgradeResponseDuration(upgradeResponseDuration); + + Integer secondUpgradeResponseDuration = andonButtonById.getSecondUpgradeResponseDuration(); + andonButtonDTO.setSecondUpgradeResponseDuration(secondUpgradeResponseDuration); + + /** + * 8. 鑾峰彇鍝嶅簲浜轰俊鎭� + */ + String firstResponder = andonResponseConfig.getFirsterResponder(); + String threeResponder = andonResponseConfig.getThirdResponder(); + SysUser thirdUser = iSysUserService.getUserByName(threeResponder); + SysUser userByName = iSysUserService.getUserByName(firstResponder); + SysUser secondUser = null; + + if (StringUtils.isNotBlank(secondResponder)) { + secondUser = iSysUserService.getUserByName(secondResponder); + } + /** + * 9. 楠岃瘉骞惰缃搷搴斾汉淇℃伅 + */ + + if (userByName == null) { + log.warn("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡"); + throw new IllegalArgumentException("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡"); + } + + if (secondUser == null && StringUtils.isNotBlank(secondResponder)) { + log.warn("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡"); + throw new IllegalArgumentException("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡"); + } + + if (threeResponder == null) { + StringUtils.isNotBlank(null); + } + // + /** + * 10. 璁剧疆鍝嶅簲浜虹浉鍏充俊鎭� + */ + + andonButtonDTO.setResponderOpenId(userByName.getOpenId()); + andonButtonDTO.setResponder(userByName.getRealname()); + log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡"); + + if (secondUser != null) { + andonButtonDTO.setSecondResponderOpenId(secondUser.getOpenId()); + andonButtonDTO.setSecondResponder(secondUser.getRealname()); + log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡"); + } + if (thirdUser != null) { + andonButtonDTO.setThirdResponderOpenId(thirdUser.getOpenId()); + andonButtonDTO.setThirdResponder(thirdUser.getRealname()); + log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡"); + } + + /** + * 11. 鍙戦�侀涔﹂�氱煡 + */ + if (StringUtils.isNotBlank(firstResponder)) { + String feishuAccessToken = feishuUserService.getFeishuAccessToken(); + feishuUserService.sendAndonNotification(feishuAccessToken, andonButtonDTO); + } else { + log.warn("宸ュ崟[{}]鏈壘鍒板搴斿搷搴斾汉锛屾棤娉曞彂閫侀�氱煡"); + } + } + + } diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml index 09b40f2..ccfe624 100644 --- a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml +++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingToolMapper.xml @@ -15,6 +15,7 @@ t1.cutting_model cuttingModel, t1.drawing_number drawingNumber, t1.inventory_warning inventoryWarning, + t1.remark remark, t2.item_text cuttingCategory FROM cms_cutting_tool t1 diff --git a/src/main/java/org/jeecg/modules/mes/job/FeishuSyncTask.java b/src/main/java/org/jeecg/modules/feishu/job/FeishuSyncTask.java similarity index 88% rename from src/main/java/org/jeecg/modules/mes/job/FeishuSyncTask.java rename to src/main/java/org/jeecg/modules/feishu/job/FeishuSyncTask.java index 36e816a..eaa3bae 100644 --- a/src/main/java/org/jeecg/modules/mes/job/FeishuSyncTask.java +++ b/src/main/java/org/jeecg/modules/feishu/job/FeishuSyncTask.java @@ -1,7 +1,8 @@ -package org.jeecg.modules.mes.job; +package org.jeecg.modules.feishu.job; import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.feishu.service.FeishuUserService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -17,7 +18,7 @@ public class FeishuSyncTask implements Job { @Autowired - private org.jeecg.modules.mes.job.FeishuUserService feishuUserService; + private FeishuUserService feishuUserService; @Value("${feishu.sync.departmentId:0}") private String departmentId; diff --git a/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java b/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java new file mode 100644 index 0000000..92d6b09 --- /dev/null +++ b/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java @@ -0,0 +1,635 @@ +package org.jeecg.modules.feishu.service; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.util.PasswordUtil; +import org.jeecg.common.util.RestUtil; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.andon.dto.AndonButtonDTO; +import org.jeecg.modules.mes.entity.FeishuUser; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Service +@Slf4j +public class FeishuUserService { + // 绫讳腑瀹氫箟妯℃澘甯搁噺锛堜究浜庣淮鎶わ級 + private static final String FIRST_LEVEL_TEMPLATE = "銆愬伐鑹哄畨鐏�慭n%s 路 %s 鍙戣捣浜嗗伐鑹哄畨鐏紝璇�%d鍒嗛挓鍐呭湪PDA涓婅繘琛屽搷搴斿鐞嗭紒锛侊紒"; + private static final String SECOND_LEVEL_TEMPLATE = "銆愬伐鑹哄畨鐏�慭n%s 路 %s 鍙戣捣鐨勫伐鑹哄畨鐏紝%s鏈湪%d鍒嗛挓鍐呭搷搴旓紝璇峰敖蹇潱淇冭繘琛屽搷搴斿鐞嗭紒锛侊紒"; + @Resource + private ISysUserService sysUserService; + + @Resource + private RestTemplate restTemplate; + + @Value("${feishu.appId:}") + private String appId; + + @Value("${feishu.appSecret:}") + private String appSecret; + + @Value("${feishu.url:}") + private String feishuUrl; + + // 瀹氭椂浠诲姟绾跨▼姹狅紙鏀寔澶氱骇鍝嶅簲璋冨害锛� + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(5); + private final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + + /** + * 鍚屾椋炰功閮ㄩ棬鐢ㄦ埛鍒扮郴缁熺敤鎴疯〃 + */ + public void syncFeishuDepartmentUsers(String departmentId) { + try { + log.info("寮�濮嬪悓姝ラ涔﹂儴闂ㄧ敤鎴凤紝閮ㄩ棬ID: {}", departmentId); + + // 1. 鑾峰彇椋炰功璁块棶浠ょ墝 + String accessToken = getFeishuAccessToken(); + if (oConvertUtils.isEmpty(accessToken)) { + log.error("鑾峰彇椋炰功璁块棶浠ょ墝澶辫触锛岀粓姝㈠悓姝ユ祦绋�"); + return; + } + + // 2. 鑾峰彇閮ㄩ棬涓嬬殑鐢ㄦ埛鍒楄〃 + List<FeishuUser> feishuUsers = getDepartmentUsers(accessToken, departmentId); + log.info("鑾峰彇鍒伴涔﹂儴闂ㄧ敤鎴锋暟閲�: {}", feishuUsers.size()); + + // 3. 鍚屾鍒扮郴缁熺敤鎴疯〃 + int successCount = 0; + int updateCount = 0; + int addCount = 0; + + for (FeishuUser feishuUser : feishuUsers) { + try { + boolean isUpdated = syncFeishuUserToSystem(feishuUser); + successCount++; + if (isUpdated) { + updateCount++; + } else { + addCount++; + } + } catch (Exception e) { + log.error("鍚屾椋炰功鐢ㄦ埛澶辫触锛岀敤鎴稩D: {}", feishuUser.getUserId(), e); + } + } + + log.info("椋炰功鐢ㄦ埛鍚屾瀹屾垚锛屾�诲鐞�: {}锛屾柊澧�: {}锛屾洿鏂�: {}", successCount, addCount, updateCount); + } catch (Exception e) { + log.error("鍚屾椋炰功閮ㄩ棬鐢ㄦ埛澶辫触锛岄儴闂↖D: {}", departmentId, e); + throw new RuntimeException("鍚屾椋炰功鐢ㄦ埛澶辫触: " + e.getMessage()); + } + } + + public String getFeishuAccessToken() { + try { + String url = feishuUrl + "open-apis/auth/v3/tenant_access_token/internal"; + + log.info("寮�濮嬭幏鍙栭涔﹁闂护鐗岋紝AppId: {}", + appId != null ? appId.substring(0, Math.min(appId.length(), 10)) + "..." : "null"); + + JSONObject params = new JSONObject(); + params.put("app_id", appId); + params.put("app_secret", appSecret); + + log.debug("鑾峰彇浠ょ墝璇锋眰鍙傛暟: {}", params.toJSONString()); + + JSONObject result = RestUtil.post(url, params); + + log.info("鑾峰彇椋炰功璁块棶浠ょ墝鍝嶅簲: {}", result != null ? result.toJSONString() : "null"); + + if (result != null && result.getInteger("code") == 0) { + String accessToken = result.getString("tenant_access_token"); + log.info("鎴愬姛鑾峰彇椋炰功璁块棶浠ょ墝锛屼护鐗岄暱搴�: {}", accessToken != null ? accessToken.length() : 0); + return accessToken; + } else { + log.error("鑾峰彇椋炰功璁块棶浠ょ墝澶辫触锛屽搷搴�: {}", result != null ? result.toJSONString() : "null"); + if (result != null) { + log.error("閿欒鐮�: {}, 閿欒淇℃伅: {}", result.getInteger("code"), result.getString("msg")); + } + return null; + } + } catch (Exception e) { + log.error("鑾峰彇椋炰功璁块棶浠ょ墝寮傚父", e); + return null; + } + } + + /** + * 鍙戦�佸畨鐏�氱煡娑堟伅锛堟敮鎸佷竴銆佷簩銆佷笁绾у搷搴旓級 + * 娴佺▼锛� + * 1. APP鐐瑰嚮鍙戦�佷竴绾у搷搴旓紙鍒濈骇鍝嶅簲锛� + * 2. 涓�绾у搷搴旀椂闀垮悗妫�鏌ョ姸鎬侊紝鏈鐞嗗垯鍙戦�佷簩绾� + * 3. 浜岀骇鍝嶅簲鏃堕暱鍚庢鏌ョ姸鎬侊紝鏈鐞嗗垯鍙戦�佷笁绾� + */ + public boolean sendAndonNotification(String accessToken, AndonButtonDTO andonOrde) { + try { + String currentTime = sdf.format(new Date()); + log.info("銆恵}銆戣Е鍙戜竴绾у搷搴旓紙鍒濈骇鍝嶅簲锛夛紝瀹夌伅ID: {}", currentTime, andonOrde.getId()); + + // 1. 鍙傛暟楠岃瘉 + if (!validateNotificationParams(andonOrde)) { + return false; + } + if (accessToken == null || accessToken.isEmpty()) { + log.error("璁块棶浠ょ墝涓虹┖锛屾棤娉曞彂閫佸畨鐏�氱煡"); + return false; + } + + // 2. 鍙戦�佷竴绾у搷搴旈�氱煡锛堝嵆鏃跺彂閫侊級 + boolean firstLevelResult = sendLevelNotification(accessToken, andonOrde, 1); + + // 3. 璋冨害浜岀骇鍝嶅簲閫氱煡锛堝欢杩熸椂闂�=涓�绾у搷搴旀椂闀匡級 + if (firstLevelResult) { + int secondDelay = andonOrde.getUpgradeResponseDuration(); + String secondTime = sdf.format(new Date(System.currentTimeMillis() + secondDelay * 60 * 1000L)); + log.info("銆恵}銆戜竴绾у搷搴旇皟搴︿簩绾ч�氱煡锛屽欢杩焮}鍒嗛挓锛岄璁″彂閫佹椂闂�: {}", + currentTime, secondDelay, secondTime); + scheduleNextLevelNotification(accessToken, andonOrde, 1, secondDelay); + } else { + log.warn("涓�绾ч�氱煡鍙戦�佸け璐ワ紝缁堟鍚庣画閫氱煡娴佺▼锛屽畨鐏疘D: {}", andonOrde.getId()); + } + + return firstLevelResult; + } catch (Exception e) { + log.error("澶勭悊瀹夌伅閫氱煡寮傚父锛屽畨鐏疘D: {}", andonOrde != null ? andonOrde.getId() : "鏈煡", e); + return false; + } + } + + /** + * 鍙戦�佹寚瀹氱骇鍒殑閫氱煡 + * @param level 1-涓�绾э紝2-浜岀骇锛�3-涓夌骇 + */ + private boolean sendLevelNotification(String accessToken, AndonButtonDTO andonOrde, int level) { + try { + String levelDesc = getLevelDesc(level); + String openId = getResponderOpenId(andonOrde, level); + String currentTime = sdf.format(new Date()); + log.info("銆恵}銆戝紑濮嬪彂閫亄}绾у畨鐏�氱煡锛屾帴鏀朵汉openId: {}, 瀹夌伅ID: {}", + currentTime, levelDesc, openId, andonOrde.getId()); + + // 鏋勫缓璇锋眰URL + String url = feishuUrl + "open-apis/im/v1/messages?receive_id_type=open_id"; + log.info("{}绾ч�氱煡璇锋眰URL: {}", levelDesc, url); + + // 璁剧疆璇锋眰澶� + HttpHeaders headers = new HttpHeaders(); + String authHeader = "Bearer " + accessToken; + headers.add("Authorization", authHeader); + headers.add("Content-Type", "application/json; charset=utf-8"); + log.info("璁剧疆{}绾ч�氱煡璇锋眰澶�: Authorization = {}", levelDesc, + authHeader.substring(0, Math.min(30, authHeader.length())) + "..."); + + // 鏋勫缓娑堟伅鍐呭 + JSONObject content = new JSONObject(); + String notificationContent = buildNotificationContent(andonOrde, level); + content.put("text", notificationContent); + log.debug("銆恵}銆憑}绾ч�氱煡鍐呭: {}", currentTime, levelDesc, notificationContent); + + // 鏋勫缓璇锋眰浣� + JSONObject requestBody = new JSONObject(); + requestBody.put("receive_id", openId); + requestBody.put("msg_type", "text"); + requestBody.put("content", content.toJSONString()); + requestBody.put("uuid", "andon_" + andonOrde.getId() + "_level_" + level + "_" + System.currentTimeMillis()); + + // 鍙戦�佽姹� + HttpEntity<String> requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + ResponseEntity<String> response = restTemplate.exchange( + url, HttpMethod.POST, requestEntity, String.class + ); + + // 瑙f瀽鍝嶅簲 + JSONObject result = JSONObject.parseObject(response.getBody()); + log.debug("{}绾ч�氱煡API鍝嶅簲: {}", levelDesc, result != null ? result.toJSONString() : "null"); + + if (result != null && result.getInteger("code") == 0) { + JSONObject data = result.getJSONObject("data"); + if (data != null) { + log.info("銆恵}銆憑}绾у畨鐏�氱煡鍙戦�佹垚鍔燂紝娑堟伅ID: {}, 瀹夌伅ID: {}", + currentTime, levelDesc, data.getString("message_id"), andonOrde.getId()); + return true; + } else { + log.warn("{}绾ч�氱煡鍝嶅簲data涓虹┖锛屽畨鐏疘D: {}", levelDesc, andonOrde.getId()); + return false; + } + } else { + log.error("鍙戦�亄}绾у畨鐏�氱煡澶辫触锛屽畨鐏疘D: {}", levelDesc, andonOrde.getId()); + if (result != null) { + log.error("閿欒鐮�: {}, 閿欒淇℃伅: {}", result.getInteger("code"), result.getString("msg")); + } + return false; + } + + } catch (Exception e) { + log.error("鍙戦�亄}绾у畨鐏�氱煡寮傚父锛屽畨鐏疘D: {}", getLevelDesc(level), andonOrde.getId(), e); + return false; + } + } + + /** + * 璋冨害涓嬩竴绾ч�氱煡锛�1鈫�2鈫�3锛� + * @param currentLevel 褰撳墠绾у埆 + * @param delayMinutes 寤惰繜鍒嗛挓鏁帮紙鐢卞綋鍓嶇骇鍒搷搴旀椂闀垮喅瀹氾級 + */ + private void scheduleNextLevelNotification(String accessToken, AndonButtonDTO andonOrde, int currentLevel, int delayMinutes) { + int nextLevel = currentLevel + 1; + if (nextLevel > 3) { + log.info("宸插埌杈炬渶楂樼骇鍒�氱煡锛屾棤闇�缁х画璋冨害锛屽畨鐏疘D: {}", andonOrde.getId()); + return; + } + + String currentLevelDesc = getLevelDesc(currentLevel); + String nextLevelDesc = getLevelDesc(nextLevel); + String scheduleTime = sdf.format(new Date()); + String executeTime = sdf.format(new Date(System.currentTimeMillis() + delayMinutes * 60 * 1000L)); + + log.info("銆恵}銆戣皟搴}閫氱煡锛屽欢杩焮}鍒嗛挓锛堝綋鍓嶇骇鍒珄}鏃堕暱锛夛紝棰勮鎵ц鏃堕棿: {}", + scheduleTime, nextLevelDesc, delayMinutes, currentLevelDesc, executeTime); + + scheduler.schedule(() -> { + try { + String currentExecuteTime = sdf.format(new Date()); + log.info("銆恵}銆戝紑濮嬫墽琛寋}閫氱煡妫�鏌ワ紝瀹夌伅ID: {}", currentExecuteTime, nextLevelDesc, andonOrde.getId()); + + // 妫�鏌ヨ鍗曠姸鎬侊細3琛ㄧず宸插搷搴旓紝鏃犻渶鍙戦�佷笅涓�绾� + if (andonOrde.getOrderStatus() != null && "3".equals(andonOrde.getOrderStatus())) { + log.info("銆恵}銆戣鍗曞凡鍝嶅簲锛坰tatus=3锛夛紝鍙栨秷{}閫氱煡鍙戦�侊紝瀹夌伅ID: {}", + currentExecuteTime, nextLevelDesc, andonOrde.getId()); + return; + } + + // 妫�鏌ヤ笅涓�绾у搷搴斾汉鏄惁鏈夋晥 + if (!hasValidResponder(andonOrde, nextLevel)) { + log.warn("銆恵}銆憑}鍝嶅簲浜轰俊鎭棤鏁堬紝鍙栨秷閫氱煡鍙戦�侊紝瀹夌伅ID: {}", + currentExecuteTime, nextLevelDesc, andonOrde.getId()); + return; + } + + // 鍙戦�佷笅涓�绾ч�氱煡 + boolean nextLevelResult = sendLevelNotification(accessToken, andonOrde, nextLevel); + if (nextLevelResult && nextLevel < 3) { + + int nextDelay = getResponseDuration(andonOrde, nextLevel); + String nextExecuteTime = sdf.format(new Date(System.currentTimeMillis() + nextDelay * 60 * 1000L)); + log.info("銆恵}銆憑}閫氱煡璋冨害涓夌骇閫氱煡锛屽欢杩焮}鍒嗛挓锛岄璁″彂閫佹椂闂�: {}", + currentExecuteTime, nextLevelDesc, nextDelay, nextExecuteTime); + scheduleNextLevelNotification(accessToken, andonOrde, nextLevel, nextDelay); + } else if (!nextLevelResult) { + log.warn("銆恵}銆憑}閫氱煡鍙戦�佸け璐ワ紝缁堟鍚庣画璋冨害锛屽畨鐏疘D: {}", + currentExecuteTime, nextLevelDesc, andonOrde.getId()); + } + + } catch (Exception e) { + log.error("鎵ц{}璋冨害浠诲姟寮傚父锛屽畨鐏疘D: {}", nextLevelDesc, andonOrde.getId(), e); + } + }, delayMinutes, TimeUnit.MINUTES); + } + /** + * 鏋勫缓閫氱煡鍐呭锛堜紭鍖栧垎闅旂锛屾彁鍗囧彲璇绘�э級 + */ + private String buildNotificationContent(AndonButtonDTO andonOrde, int level) { + // 鑾峰彇宸ュ巶鍚嶇О鍜屼骇绾垮悕绉帮紝鍋氱┖鍊间繚鎶� + String parentFactoryName = andonOrde.getParentFactoryName() != null ? andonOrde.getParentFactoryName() : "鏈煡宸ュ巶"; + String factoryName = andonOrde.getFactoryName() != null ? andonOrde.getFactoryName() : "鏈煡浜х嚎"; + String content; + + if (level == 1) { + // 涓�绾фā鏉匡細浣跨敤"路"鍒嗛殧宸ュ巶鍜屼骇绾� + int firstDuration = andonOrde.getUpgradeResponseDuration() != null ? andonOrde.getUpgradeResponseDuration() : 0; + content = String.format(FIRST_LEVEL_TEMPLATE, parentFactoryName, factoryName, firstDuration); + } else { + // 浜岀骇妯℃澘锛氫繚鎸佷竴鑷寸殑鍒嗛殧椋庢牸 + String prevResponder = getResponderName(andonOrde, level - 1); + int prevDuration = getResponseDuration(andonOrde, level - 1); + + prevResponder = oConvertUtils.isEmpty(prevResponder) ? "鏈煡浜哄憳" : prevResponder; + prevDuration = Math.max(prevDuration, 0); + + content = String.format(SECOND_LEVEL_TEMPLATE, parentFactoryName, factoryName, prevResponder, prevDuration); + } + + log.debug("鏋勫缓{}绾ч�氱煡鍐呭: {}", level, content); + return content; + } +// /** +// * 鏋勫缓閫氱煡鍐呭锛堟寜绾у埆浣跨敤涓嶅悓妯℃澘锛� +// */ +// private String buildNotificationContent(AndonButtonDTO andonOrde, int level) { +// String factoryName = andonOrde.getFactoryName() != null ? andonOrde.getFactoryName() : "鏈煡浜х嚎"; +// +// if (level == 1) { +// // 涓�绾фā鏉匡細銆愬伐鑹哄畨鐏�慩XX浜х嚎鍙戣捣浜嗗伐鑹哄畨鐏紝璇穢x鍒嗛挓鍐呭湪PDA涓婅繘琛屽搷搴斿鐞嗭紒锛侊紒 +// return String.format("銆愬伐鑹哄畨鐏�慭n%s浜х嚎鍙戣捣浜嗗伐鑹哄畨鐏紝璇�%d鍒嗛挓鍐呭湪PDA涓婅繘琛屽搷搴斿鐞嗭紒锛侊紒", +// factoryName, +// andonOrde.getUpgradeResponseDuration()); +// } else { +// // 浜�/涓夌骇妯℃澘锛氥�愬伐鑹哄畨鐏�慩XX锛堜骇绾匡級鍙戣捣鐨勫伐鑹哄畨鐏紝xxx锛堜笂涓�绾у搷搴斾汉锛夋湭鍦▁x鍒嗛挓鍐呭搷搴旓紝璇峰敖蹇潱淇冭繘琛屽搷搴斿鐞嗭紒锛侊紒 +// String prevLevelDesc = getLevelDesc(level - 1); +// String prevResponder = getResponderName(andonOrde, level - 1); +// int prevDuration = getResponseDuration(andonOrde, level - 1); +// +// return String.format("銆愬伐鑹哄畨鐏�慭n%s锛堜骇绾匡級鍙戣捣鐨勫伐鑹哄畨鐏紝%s锛�%s鍝嶅簲浜猴級鏈湪%d鍒嗛挓鍐呭搷搴旓紝璇峰敖蹇潱淇冭繘琛屽搷搴斿鐞嗭紒锛侊紒", +// factoryName, +// prevResponder, +// prevLevelDesc, +// prevDuration); +// } +// } + + /** + * 楠岃瘉閫氱煡鐩稿叧鍙傛暟 + */ + private boolean validateNotificationParams(AndonButtonDTO andonOrde) { + if (andonOrde == null) { + log.error("瀹夌伅璁㈠崟淇℃伅涓虹┖"); + return false; + } + if (andonOrde.getId() == null) { + log.error("瀹夌伅ID涓虹┖"); + return false; + } + // 涓�绾у搷搴旀牎楠岋紙蹇呴�夛級 + if (andonOrde.getResponderOpenId() == null || andonOrde.getResponderOpenId().isEmpty() + || andonOrde.getUpgradeResponseDuration() == null || andonOrde.getUpgradeResponseDuration() <= 0) { + log.error("涓�绾у搷搴斾汉淇℃伅鏃犳晥锛坥penId鎴栨椂闀跨己澶憋級锛屽畨鐏疘D: {}", andonOrde.getId()); + return false; + } + // 浜岀骇鍝嶅簲鏍¢獙锛堣嫢瀛樺湪鍒欏繀閫夊畬鏁达級 + if (andonOrde.getSecondResponderOpenId() != null && !andonOrde.getSecondResponderOpenId().isEmpty()) { + if (andonOrde.getSecondUpgradeResponseDuration() == null || andonOrde.getSecondUpgradeResponseDuration() <= 0) { + log.error("浜岀骇鍝嶅簲浜哄瓨鍦ㄤ絾鏃堕暱鏃犳晥锛屽畨鐏疘D: {}", andonOrde.getId()); + return false; + } + } + // 涓夌骇鍝嶅簲鏍¢獙锛堣嫢瀛樺湪鍒欏繀閫夊畬鏁达級 + if (andonOrde.getThirdResponderOpenId() != null && !andonOrde.getThirdResponderOpenId().isEmpty()) { + if (andonOrde.getSecondUpgradeResponseDuration() == null || andonOrde.getSecondUpgradeResponseDuration() <= 0) { + log.error("涓夌骇鍝嶅簲浜哄瓨鍦ㄤ絾浜岀骇鏃堕暱鏃犳晥锛堜笁绾т緷璧栦簩绾ф椂闀匡級锛屽畨鐏疘D: {}", andonOrde.getId()); + return false; + } + } + return true; + } + + // 宸ュ叿鏂规硶锛氳幏鍙栫骇鍒弿杩� + private String getLevelDesc(int level) { + switch (level) { + case 1: return "涓�绾�"; + case 2: return "浜岀骇"; + case 3: return "涓夌骇"; + default: return "鏈煡绾у埆"; + } + } + + // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴斾汉openId + private String getResponderOpenId(AndonButtonDTO andonOrde, int level) { + switch (level) { + case 1: return andonOrde.getResponderOpenId(); + case 2: return andonOrde.getSecondResponderOpenId(); + case 3: return andonOrde.getThirdResponderOpenId(); + default: return null; + } + } + + // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴斾汉鍚嶇О + private String getResponderName(AndonButtonDTO andonOrde, int level) { + String name = null; + switch (level) { + case 1: + name = andonOrde.getResponder(); + break; + case 2: + name = andonOrde.getSecondResponder(); + break; + case 3: + name = andonOrde.getThirdResponder(); + break; + default: + name = null; + } + return name != null ? name : "鏈煡鍝嶅簲浜�"; + } + + // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴旀椂闀匡紙涓�绾�=浜岀骇寤惰繜锛屼簩绾�=涓夌骇寤惰繜锛� + private int getResponseDuration(AndonButtonDTO andonOrde, int level) { + int duration = 0; + switch (level) { + case 1: + duration = andonOrde.getUpgradeResponseDuration() != null ? andonOrde.getUpgradeResponseDuration() : 0; + break; + case 2: + duration = andonOrde.getSecondUpgradeResponseDuration() != null ? andonOrde.getSecondUpgradeResponseDuration() : 0; + break; + case 3: + duration = 0; // 涓夌骇鏄渶鍚庝竴绾э紝鏃犻渶寤惰繜 + break; + default: + duration = 0; + } + return duration; + } + + // 宸ュ叿鏂规硶锛氬垽鏂寚瀹氱骇鍒搷搴斾汉鏄惁鏈夋晥 + private boolean hasValidResponder(AndonButtonDTO andonOrde, int level) { + String openId = getResponderOpenId(andonOrde, level); + return openId != null && !openId.isEmpty(); + } + + /** + * 鑾峰彇閮ㄩ棬鐢ㄦ埛鍒楄〃锛堢洿灞炲憳宸ワ級 + */ + private List<FeishuUser> getDepartmentUsers(String accessToken, String departmentId) { + List<FeishuUser> userList = new ArrayList<>(); + try { + log.info("寮�濮嬭幏鍙栭涔﹂儴闂ㄧ敤鎴峰垪琛紝閮ㄩ棬ID: {}", departmentId); + + if (accessToken == null || accessToken.isEmpty()) { + log.error("璁块棶浠ょ墝涓虹┖锛屾棤娉曠户缁墽琛�"); + return userList; + } + log.info("浣跨敤鐨勮闂护鐗屽墠缂�: Bearer {}", accessToken.substring(0, Math.min(20, accessToken.length())) + "..."); + + String url = feishuUrl + "open-apis/contact/v3/users/find_by_department"; + String pageToken = null; + int pageNumber = 1; + + do { + StringBuilder urlBuilder = new StringBuilder(url); + urlBuilder.append("?department_id=").append(departmentId); + urlBuilder.append("&department_id_type=open_department_id"); + urlBuilder.append("&page_size=50"); + urlBuilder.append("&user_id_type=open_id"); + + if (pageToken != null && !pageToken.isEmpty()) { + urlBuilder.append("&page_token=").append(pageToken); + } + + log.info("璇锋眰绗瑊}椤垫暟鎹紝URL: {}", pageNumber, urlBuilder.toString()); + + HttpHeaders headers = new HttpHeaders(); + String authHeader = "Bearer " + accessToken; + headers.add("Authorization", authHeader); + headers.add("Content-Type", "application/json; charset=utf-8"); + log.info("璁剧疆璇锋眰澶�: Authorization = {}", authHeader.substring(0, Math.min(30, authHeader.length())) + "..."); + + HttpEntity<String> requestEntity = new HttpEntity<>(headers); + ResponseEntity<String> response = restTemplate.exchange( + urlBuilder.toString(), HttpMethod.GET, requestEntity, String.class + ); + + JSONObject result = JSONObject.parseObject(response.getBody()); + log.debug("绗瑊}椤礎PI鍝嶅簲: {}", pageNumber, result != null ? result.toJSONString() : "null"); + + if (result != null && result.getInteger("code") == 0) { + JSONObject data = result.getJSONObject("data"); + if (data != null) { + Object items = data.get("items"); + log.info("绗瑊}椤靛師濮嬬敤鎴锋暟鎹暟閲�: {}", pageNumber, items instanceof List ? ((List<?>) items).size() : 0); + + if (items != null) { + List<FeishuUser> pageUsers = parseUsers(items); + userList.addAll(pageUsers); + log.info("绗瑊}椤佃В鏋愬悗鐢ㄦ埛鏁伴噺: {}", pageNumber, pageUsers.size()); + } + + pageToken = data.getString("page_token"); + boolean hasMore = data.getBooleanValue("has_more"); + log.info("绗瑊}椤礹as_more: {}, page_token: {}", pageNumber, hasMore, pageToken); + pageNumber++; + } else { + log.warn("绗瑊}椤礵ata涓虹┖", pageNumber); + break; + } + } else { + log.error("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛鍒楄〃澶辫触锛屽搷搴�: {}", result != null ? result.toJSONString() : "null"); + if (result != null) { + log.error("閿欒鐮�: {}, 閿欒淇℃伅: {}", result.getInteger("code"), result.getString("msg")); + } + break; + } + } while (pageToken != null && !pageToken.isEmpty()); + + log.info("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛瀹屾垚锛屾�荤敤鎴锋暟閲�: {}", userList.size()); + + } catch (Exception e) { + log.error("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛鍒楄〃寮傚父", e); + } + return userList; + } + + /** + * 瑙f瀽鐢ㄦ埛鏁版嵁 + */ + @SuppressWarnings("unchecked") + private List<FeishuUser> parseUsers(Object items) { + Logger log = LoggerFactory.getLogger(FeishuUserService.class); + List<FeishuUser> userList = new ArrayList<>(); + if (!(items instanceof List)) { + log.warn("瑙f瀽鐢ㄦ埛鏁版嵁澶辫触锛宨tems涓嶆槸鍒楄〃绫诲瀷: {}", items); + return userList; + } + List<?> userItems = (List<?>) items; + log.info("寮�濮嬭В鏋愰涔︾敤鎴峰垪琛紝鍏眥}鏉¤褰�", userItems.size()); + for (Object item : userItems) { + if (item == null || !(item instanceof Map)) { + log.warn("璺宠繃鏃犳晥鐢ㄦ埛鏁版嵁椤癸紝绫诲瀷涓嶅尮閰�: {}", item != null ? item.getClass() : "null"); + continue; + } + Map<String, Object> userMap = (Map<String, Object>) item; + FeishuUser user = new FeishuUser(); + user.setOpenId((String) userMap.getOrDefault("open_id", "")); + + String name = (String) userMap.getOrDefault("name", ""); + if (name.contains(" ")) { + String[] parts = name.split(" "); + if (parts.length == 2) { + user.setUsername(parts[0].trim()); + user.setRealname(parts[1].trim()); + user.setWorkNo(parts[0].trim()); + } else { + user.setUsername(name); + user.setRealname(name); + user.setWorkNo(""); + log.warn("椋炰功鐢ㄦ埛name瀛楁鏍煎紡寮傚父锛屾棤娉曟媶鍒嗭紝鍘熷鍊硷細{}", name); + } + } else { + user.setUsername(name); + user.setRealname(name); + user.setWorkNo(""); + log.warn("椋炰功鐢ㄦ埛name瀛楁鏃犵┖鏍煎垎闅旓紝鏃犳硶鎷嗗垎锛屽師濮嬪�硷細{}", name); + } + + user.setEnName((String) userMap.getOrDefault("en_name", "")); + user.setDescription((String) userMap.getOrDefault("description", "")); + Object mobileVisibleObj = userMap.get("mobile_visible"); + user.setMobileVisible(mobileVisibleObj instanceof Boolean ? (Boolean) mobileVisibleObj : false); + + Object avatarObj = userMap.get("avatar"); + if (avatarObj instanceof Map) { + Map<String, Object> avatarMap = (Map<String, Object>) avatarObj; + user.setAvatar240((String) avatarMap.getOrDefault("avatar_240", "")); + user.setAvatar640((String) avatarMap.getOrDefault("avatar_640", "")); + user.setAvatar72((String) avatarMap.getOrDefault("avatar_72", "")); + user.setAvatarOrigin((String) avatarMap.getOrDefault("avatar_origin", "")); + } else { + log.info("鐢ㄦ埛[{}]鏈缃ご鍍忔垨澶村儚鏍煎紡寮傚父", user.getRealname()); + } + + user.setPassword("123456"); + user.setOpenId((String) userMap.getOrDefault("open_id", "")); + userList.add(user); + } + + return userList; + } + + /** + * 鍚屾鍗曚釜椋炰功鐢ㄦ埛鍒扮郴缁� + */ + private boolean syncFeishuUserToSystem(FeishuUser feishuUser) { + String username = feishuUser.getUsername(); + SysUser existUser = sysUserService.getUserByName(username); + SysUser sysUser = new SysUser(); + sysUser.setUsername(username); + sysUser.setStatus(1); + sysUser.setDelFlag(0); + sysUser.setAvatar(feishuUser.getAvatar640()); + sysUser.setRealname(feishuUser.getRealname()); + sysUser.setWorkNo(feishuUser.getWorkNo()); + String password = "123456", salt = oConvertUtils.randomGen(8); + String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); + sysUser.setSalt(salt); + sysUser.setPassword(passwordEncode); + sysUser.setOpenId(feishuUser.getOpenId()); + + if (existUser == null) { + sysUserService.addUserWithRole(sysUser, "5"); + log.info("鏂板鐢ㄦ埛: {}", username); + return false; + } else { + sysUser.setId(existUser.getId()); + sysUserService.editUser(sysUser); + log.info("鏇存柊鐢ㄦ埛: {}", username); + return true; + } + } +} diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferDetailController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferDetailController.java deleted file mode 100644 index 28533aa..0000000 --- a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferDetailController.java +++ /dev/null @@ -1,176 +0,0 @@ -package org.jeecg.modules.mes.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.aspect.annotation.AutoLog; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.modules.mes.entity.MesMaterialTransferDetail; -import org.jeecg.modules.mes.entity.MesMaterialUnloading; -import org.jeecg.modules.mes.service.IMesMaterialTransferDetailService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; - -/** -* @Description: 鐗╂枡鎷夊姩鏄庣粏 -* @Author: jeecg-boot -* @Date: 2025-07-07 -* @Version: V1.0 -*/ -@Api(tags="鐗╂枡鎷夊姩鏄庣粏") -@RestController -@RequestMapping("/mes/mesMaterialTransferDetail") -@Slf4j -public class MesMaterialTransferDetailController extends JeecgController<MesMaterialTransferDetail, IMesMaterialTransferDetailService> { - @Autowired - private IMesMaterialTransferDetailService mesMaterialTransferDetailService; - - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param mesMaterialTransferDetail - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡鎷夊姩鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<IPage<MesMaterialTransferDetail>> queryPageList(MesMaterialTransferDetail mesMaterialTransferDetail, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<MesMaterialTransferDetail> queryWrapper = QueryGenerator.initQueryWrapper(mesMaterialTransferDetail, req.getParameterMap()); - Page<MesMaterialTransferDetail> page = new Page<MesMaterialTransferDetail>(pageNo, pageSize); - IPage<MesMaterialTransferDetail> pageList = mesMaterialTransferDetailService.page(page, queryWrapper); - return Result.OK(pageList); - } - - /** - * 娣诲姞 - * - * @param mesMaterialTransferDetail - * @return - */ - @AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-娣诲姞") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-娣诲姞", notes="鐗╂枡鎷夊姩鏄庣粏-娣诲姞") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_detail:add") - @PostMapping(value = "/add") - public Result<String> add(@RequestBody MesMaterialTransferDetail mesMaterialTransferDetail) { - mesMaterialTransferDetailService.save(mesMaterialTransferDetail); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - - /** - * 缂栬緫 - * - * @param mesMaterialTransferDetail - * @return - */ - @AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-缂栬緫") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-缂栬緫", notes="鐗╂枡鎷夊姩鏄庣粏-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_detail:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody MesMaterialTransferDetail mesMaterialTransferDetail) { - mesMaterialTransferDetailService.updateById(mesMaterialTransferDetail); - return Result.OK("缂栬緫鎴愬姛!"); - } - - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鍒犻櫎") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鍒犻櫎", notes="鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_detail:delete") - @DeleteMapping(value = "/delete") - public Result<String> delete(@RequestParam(name="id",required=true) String id) { - mesMaterialTransferDetailService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } - - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-鎵归噺鍒犻櫎") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-鎵归噺鍒犻櫎", notes="鐗╂枡鎷夊姩鏄庣粏-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_detail:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.mesMaterialTransferDetailService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); - } - - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - //@AutoLog(value = "鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鏌ヨ") - @ApiOperation(value="鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鏌ヨ", notes="鐗╂枡鎷夊姩鏄庣粏-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<MesMaterialTransferDetail> queryById(@RequestParam(name="id",required=true) String id) { - MesMaterialTransferDetail mesMaterialTransferDetail = mesMaterialTransferDetailService.getById(id); - if(mesMaterialTransferDetail==null) { - return Result.error("鏈壘鍒板搴旀暟鎹�"); - } - return Result.OK(mesMaterialTransferDetail); - } - - /** - * 瀵煎嚭excel - * - * @param request - * @param mesMaterialTransferDetail - */ - //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_detail:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, MesMaterialTransferDetail mesMaterialTransferDetail) { - return super.exportXls(request, mesMaterialTransferDetail, MesMaterialTransferDetail.class, "鐗╂枡鎷夊姩鏄庣粏"); - } - - /** - * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - //@RequiresPermissions("mes_material_transfer_detail:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, MesMaterialTransferDetail.class); - } - /* - * 鏍规嵁requestId鏌ヨ鏄庣粏 - * @param requestId - * */ - @RequestMapping("/queryTransferDetailBy") - public Result<IPage<MesMaterialTransferDetail>> queryUnloadingByLoadingId(MesMaterialTransferDetail mesMaterialTransferDetail, @RequestParam("requestId") String loadingId, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<MesMaterialTransferDetail> queryWrapper = QueryGenerator.initQueryWrapper(mesMaterialTransferDetail, req.getParameterMap()); - queryWrapper.eq("request_id", loadingId); - Page<MesMaterialTransferDetail> page = new Page<MesMaterialTransferDetail>(pageNo, pageSize); - IPage<MesMaterialTransferDetail> pageList = mesMaterialTransferDetailService.page(page, queryWrapper); - return Result.OK(pageList); - } -} diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java index e7dc83f..a2fe846 100644 --- a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java +++ b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java @@ -28,7 +28,7 @@ */ @Api(tags="鐗╂枡鎷夊姩鐢宠") @RestController -@RequestMapping("/mesmaterialtransferrequest/mesMaterialTransferRequest") +@RequestMapping("/mes/mesMaterialTransferRequest") @Slf4j public class MesMaterialTransferRequestController extends JeecgController<MesMaterialTransferRequest, IMesMaterialTransferRequestService> { @Autowired diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferDetail.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferDetail.java deleted file mode 100644 index f913256..0000000 --- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferDetail.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.jeecg.modules.mes.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; - -/** - * @Description: 鐗╂枡鎷夊姩鏄庣粏 - * @Author: jeecg-boot - * @Date: 2025-07-07 - * @Version: V1.0 - */ -@Data -@TableName("mes_material_transfer_detail") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="mes_material_transfer_detail瀵硅薄", description="鐗╂枡鎷夊姩鏄庣粏") -public class MesMaterialTransferDetail implements Serializable { - private static final long serialVersionUID = 1L; - - /**涓婚敭*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "涓婚敭") - private String id; - /**鍒涘缓浜�*/ - @ApiModelProperty(value = "鍒涘缓浜�") - private String createBy; - /**鍒涘缓鏃ユ湡*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "鍒涘缓鏃ユ湡") - private Date createTime; - /**鏇存柊浜�*/ - @ApiModelProperty(value = "鏇存柊浜�") - private String updateBy; - /**鏇存柊鏃ユ湡*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "鏇存柊鏃ユ湡") - private Date updateTime; - /**鍒犻櫎鏍囪*/ - @Excel(name = "鍒犻櫎鏍囪", width = 15) - @ApiModelProperty(value = "鍒犻櫎鏍囪") - @TableLogic - private Integer delFlag; - /**鐢宠鍗旾D*/ - @Excel(name = "鐢宠鍗旾D", width = 15) - @ApiModelProperty(value = "鐢宠鍗旾D") - private String requestId; - /**鐗╂枡缂栫爜*/ - @Excel(name = "鐗╂枡缂栫爜", width = 15) - @ApiModelProperty(value = "鐗╂枡缂栫爜") - private String materialNumber; - /**鐗╂枡鍚嶇О*/ - @Excel(name = "鐗╂枡鍚嶇О", width = 15) - @ApiModelProperty(value = "鐗╂枡鍚嶇О") - private String materialName; - /**鐞嗚鎷夊姩鏁伴噺*/ - @Excel(name = "鐞嗚鎷夊姩鏁伴噺", width = 15) - @ApiModelProperty(value = "鐞嗚鎷夊姩鏁伴噺") - private Double specifiedQuantity; - /**瀹為檯鎷夊姩鏁伴噺*/ - @Excel(name = "瀹為檯鎷夊姩鏁伴噺", width = 15) - @ApiModelProperty(value = "瀹為檯鎷夊姩鏁伴噺") - private Double actualQuantity; - /**杞﹂棿鍓╀綑鏁伴噺*/ - @Excel(name = "杞﹂棿鍓╀綑鏁伴噺", width = 15) - @ApiModelProperty(value = "杞﹂棿鍓╀綑鏁伴噺") - private Double remainingQuantity; -} diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java index 09e3660..af2443c 100644 --- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java +++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java @@ -49,57 +49,61 @@ @ApiModelProperty(value = "鏇存柊鏃ユ湡") private Date updateTime; /**鍒犻櫎鏍囪*/ - @Excel(name = "鍒犻櫎鏍囪", width = 15) @ApiModelProperty(value = "鍒犻櫎鏍囪") @TableLogic private Integer delFlag; /**鎷夊姩鍗曞彿*/ - @Excel(name = "鎷夊姩鍗曞彿", width = 15) @ApiModelProperty(value = "鎷夊姩鍗曞彿") private String requestCode; /**宸ュ崟ID*/ - @Excel(name = "宸ュ崟ID", width = 15) @ApiModelProperty(value = "宸ュ崟ID") private String workOrderId; /**SAP棰勭暀鍙�*/ - @Excel(name = "SAP棰勭暀鍙�", width = 15) @ApiModelProperty(value = "SAP棰勭暀鍙�") private String reservationCode; /**鍙戝竷鐘舵��*/ - @Excel(name = "鍙戝竷鐘舵��", width = 15, dicCode = "publish_status") @Dict(dicCode = "publish_status") @ApiModelProperty(value = "鍙戝竷鐘舵��") private String publishStatus; /**璇锋眰鐘舵��*/ - @Excel(name = "璇锋眰鐘舵��", width = 15, dicCode = "request_status") @Dict(dicCode = "request_status") @ApiModelProperty(value = "璇锋眰鐘舵��") private String requestStatus; /**璇锋眰鏃堕棿*/ - @Excel(name = "璇锋眰鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "璇锋眰鏃堕棿") private Date requestTime; /**鍘熷簱瀛樺湴*/ - @Excel(name = "鍘熷簱瀛樺湴", width = 15) @ApiModelProperty(value = "鍘熷簱瀛樺湴") private String originalWarehouseId; /**鐩爣搴撳瓨鍦�*/ - @Excel(name = "鐩爣搴撳瓨鍦�", width = 15) @ApiModelProperty(value = "鐩爣搴撳瓨鍦�") private String targetWarehouseId; /**浼樺厛绾э紙鎷夊姩绫诲瀷锛�*/ - @Excel(name = "浼樺厛绾э紙鎷夊姩绫诲瀷锛�", width = 15, dicCode = "priority") - @Dict(dicCode = "priority") - @ApiModelProperty(value = "浼樺厛绾э紙鎷夊姩绫诲瀷锛�") - private String priority; + @Dict(dicCode = "material_transfer_category") + @ApiModelProperty(value = "鎷夊姩绫诲瀷") + private String materialTransferCategory; /**鏈�鏅氶厤閫佹椂闂�*/ - @Excel(name = "鏈�鏅氶厤閫佹椂闂�", width = 20, format = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "鏈�鏅氶厤閫佹椂闂�") private Date latestDeliveryTime; + /**鐗╂枡缂栫爜*/ + @ApiModelProperty(value = "鐗╂枡缂栫爜") + private String materialNumber; + /**鐗╂枡鍚嶇О*/ + @ApiModelProperty(value = "鐗╂枡鍚嶇О") + private String materialName; + /**鐞嗚鎷夊姩鏁伴噺*/ + @ApiModelProperty(value = "鐞嗚鎷夊姩鏁伴噺") + private Double specifiedQuantity; + /**瀹為檯鎷夊姩鏁伴噺*/ + @ApiModelProperty(value = "瀹為檯鎷夊姩鏁伴噺") + private Double actualQuantity; + /**杞﹂棿鍓╀綑鏁伴噺*/ + @ApiModelProperty(value = "杞﹂棿鍓╀綑鏁伴噺") + private Double remainingQuantity; @TableField(exist = false) @ApiModelProperty(value = "宸ュ崟鍙�") diff --git a/src/main/java/org/jeecg/modules/mes/entity/MessageResponse.java b/src/main/java/org/jeecg/modules/mes/entity/MessageResponse.java new file mode 100644 index 0000000..1d5679f --- /dev/null +++ b/src/main/java/org/jeecg/modules/mes/entity/MessageResponse.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.mes.entity; + +import lombok.Data; + +@Data +public class MessageResponse { + private boolean success; + private String message; + private String messageId; + private Long timestamp; + +} diff --git a/src/main/java/org/jeecg/modules/mes/job/FeishuUserService.java b/src/main/java/org/jeecg/modules/mes/job/FeishuUserService.java deleted file mode 100644 index b5b3991..0000000 --- a/src/main/java/org/jeecg/modules/mes/job/FeishuUserService.java +++ /dev/null @@ -1,327 +0,0 @@ -package org.jeecg.modules.mes.job; - -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.util.PasswordUtil; -import org.jeecg.common.util.RestUtil; -import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.mes.entity.FeishuUser; -import org.jeecg.modules.system.entity.SysUser; -import org.jeecg.modules.system.service.ISysUserService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Service -@Slf4j -public class FeishuUserService { - - @Resource - private ISysUserService sysUserService; - - @Resource - private RestTemplate restTemplate; // 鏂板RestTemplate渚濊禆娉ㄥ叆 - - @Value("${feishu.appId:}") - private String appId; - - @Value("${feishu.appSecret:}") - private String appSecret; - - @Value("${feishu.url:}") - private String feishuUrl; - - /** - * 鍚屾椋炰功閮ㄩ棬鐢ㄦ埛鍒扮郴缁熺敤鎴疯〃 - * @param departmentId 椋炰功閮ㄩ棬ID - */ - public void syncFeishuDepartmentUsers(String departmentId) { - try { - log.info("寮�濮嬪悓姝ラ涔﹂儴闂ㄧ敤鎴凤紝閮ㄩ棬ID: {}", departmentId); - - // 1. 鑾峰彇椋炰功璁块棶浠ょ墝 - String accessToken = getFeishuAccessToken(); - if (oConvertUtils.isEmpty(accessToken)) { - log.error("鑾峰彇椋炰功璁块棶浠ょ墝澶辫触锛岀粓姝㈠悓姝ユ祦绋�"); - return; // 浠ょ墝鑾峰彇澶辫触鐩存帴杩斿洖锛岄伩鍏嶅悗缁棤鏁堟搷浣� - } - - // 2. 鑾峰彇閮ㄩ棬涓嬬殑鐢ㄦ埛鍒楄〃 - List<FeishuUser> feishuUsers = getDepartmentUsers(accessToken, departmentId); - log.info("鑾峰彇鍒伴涔﹂儴闂ㄧ敤鎴锋暟閲�: {}", feishuUsers.size()); - - // 3. 鍚屾鍒扮郴缁熺敤鎴疯〃 - int successCount = 0; - int updateCount = 0; - int addCount = 0; - - for (FeishuUser feishuUser : feishuUsers) { - try { - boolean isUpdated = syncFeishuUserToSystem(feishuUser); - successCount++; - if (isUpdated) { - updateCount++; - } else { - addCount++; - } - } catch (Exception e) { - log.error("鍚屾椋炰功鐢ㄦ埛澶辫触锛岀敤鎴稩D: {}", feishuUser.getUserId(), e); - } - } - - log.info("椋炰功鐢ㄦ埛鍚屾瀹屾垚锛屾�诲鐞�: {}锛屾柊澧�: {}锛屾洿鏂�: {}", successCount, addCount, updateCount); - } catch (Exception e) { - log.error("鍚屾椋炰功閮ㄩ棬鐢ㄦ埛澶辫触锛岄儴闂↖D: {}", departmentId, e); - throw new RuntimeException("鍚屾椋炰功鐢ㄦ埛澶辫触: " + e.getMessage()); - } - } - - private String getFeishuAccessToken() { - try { - String url = feishuUrl + "open-apis/auth/v3/tenant_access_token/internal"; - - log.info("寮�濮嬭幏鍙栭涔﹁闂护鐗岋紝AppId: {}", - appId != null ? appId.substring(0, Math.min(appId.length(), 10)) + "..." : "null"); - - JSONObject params = new JSONObject(); - params.put("app_id", appId); - params.put("app_secret", appSecret); - - log.debug("鑾峰彇浠ょ墝璇锋眰鍙傛暟: {}", params.toJSONString()); - - JSONObject result = RestUtil.post(url, params); - - log.info("鑾峰彇椋炰功璁块棶浠ょ墝鍝嶅簲: {}", result != null ? result.toJSONString() : "null"); - - if (result != null && result.getInteger("code") == 0) { - String accessToken = result.getString("tenant_access_token"); - log.info("鎴愬姛鑾峰彇椋炰功璁块棶浠ょ墝锛屼护鐗岄暱搴�: {}", accessToken != null ? accessToken.length() : 0); - return accessToken; - } else { - log.error("鑾峰彇椋炰功璁块棶浠ょ墝澶辫触锛屽搷搴�: {}", result != null ? result.toJSONString() : "null"); - if (result != null) { - log.error("閿欒鐮�: {}, 閿欒淇℃伅: {}", result.getInteger("code"), result.getString("msg")); - } - return null; - } - } catch (Exception e) { - log.error("鑾峰彇椋炰功璁块棶浠ょ墝寮傚父", e); - return null; - } - } - - /** - * 鑾峰彇閮ㄩ棬鐢ㄦ埛鍒楄〃锛堢洿灞炲憳宸ワ級 - */ - private List<FeishuUser> getDepartmentUsers(String accessToken, String departmentId) { - List<FeishuUser> userList = new ArrayList<>(); - try { - log.info("寮�濮嬭幏鍙栭涔﹂儴闂ㄧ敤鎴峰垪琛紝閮ㄩ棬ID: {}", departmentId); - - // 楠岃瘉璁块棶浠ょ墝 - if (accessToken == null || accessToken.isEmpty()) { - log.error("璁块棶浠ょ墝涓虹┖锛屾棤娉曠户缁墽琛�"); - return userList; - } - log.info("浣跨敤鐨勮闂护鐗屽墠缂�: Bearer {}", accessToken.substring(0, Math.min(20, accessToken.length())) + "..."); - - // 椋炰功API绔偣 - String url = feishuUrl + "open-apis/contact/v3/users/find_by_department"; - - String pageToken = null; - int pageNumber = 1; - - do { - // 鏋勫缓璇锋眰URL鍜屽弬鏁� - StringBuilder urlBuilder = new StringBuilder(url); - urlBuilder.append("?department_id=").append(departmentId); - urlBuilder.append("&department_id_type=open_department_id"); - urlBuilder.append("&page_size=50"); - urlBuilder.append("&user_id_type=open_id"); - - if (pageToken != null && !pageToken.isEmpty()) { - urlBuilder.append("&page_token=").append(pageToken); - } - - log.info("璇锋眰绗瑊}椤垫暟鎹紝URL: {}", pageNumber, urlBuilder.toString()); - - // 璁剧疆璇锋眰澶� - 鍏抽敭淇鐐癸細浣跨敤HttpHeaders纭繚澶翠俊鎭纭缃� - HttpHeaders headers = new HttpHeaders(); - String authHeader = "Bearer " + accessToken; - headers.add("Authorization", authHeader); - headers.add("Content-Type", "application/json; charset=utf-8"); - log.info("璁剧疆璇锋眰澶�: Authorization = {}", authHeader.substring(0, Math.min(30, authHeader.length())) + "..."); - - // 浣跨敤RestTemplate鍙戦�佽姹傦紝纭繚澶翠俊鎭姝g‘浼犻�� - HttpEntity<String> requestEntity = new HttpEntity<>(headers); - ResponseEntity<String> response = restTemplate.exchange( - urlBuilder.toString(), - HttpMethod.GET, - requestEntity, - String.class - ); - - // 瑙f瀽鍝嶅簲 - JSONObject result = JSONObject.parseObject(response.getBody()); - log.debug("绗瑊}椤礎PI鍝嶅簲: {}", pageNumber, result != null ? result.toJSONString() : "null"); - - if (result != null && result.getInteger("code") == 0) { - JSONObject data = result.getJSONObject("data"); - if (data != null) { - // 瑙f瀽鐢ㄦ埛鍒楄〃 - Object items = data.get("items"); - log.info("绗瑊}椤靛師濮嬬敤鎴锋暟鎹暟閲�: {}", pageNumber, items instanceof List ? ((List<?>) items).size() : 0); - - if (items != null) { - List<FeishuUser> pageUsers = parseUsers(items); - userList.addAll(pageUsers); - log.info("绗瑊}椤佃В鏋愬悗鐢ㄦ埛鏁伴噺: {}", pageNumber, pageUsers.size()); - } - - // 妫�鏌ユ槸鍚︽湁涓嬩竴椤� - pageToken = data.getString("page_token"); - boolean hasMore = data.getBooleanValue("has_more"); - log.info("绗瑊}椤礹as_more: {}, page_token: {}", pageNumber, hasMore, pageToken); - pageNumber++; - } else { - log.warn("绗瑊}椤礵ata涓虹┖", pageNumber); - break; - } - } else { - log.error("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛鍒楄〃澶辫触锛屽搷搴�: {}", result != null ? result.toJSONString() : "null"); - if (result != null) { - log.error("閿欒鐮�: {}, 閿欒淇℃伅: {}", result.getInteger("code"), result.getString("msg")); - } - break; - } - } while (pageToken != null && !pageToken.isEmpty()); - - log.info("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛瀹屾垚锛屾�荤敤鎴锋暟閲�: {}", userList.size()); - - } catch (Exception e) { - log.error("鑾峰彇椋炰功閮ㄩ棬鐢ㄦ埛鍒楄〃寮傚父", e); - } - return userList; - } - - /** - * 瑙f瀽鐢ㄦ埛鏁版嵁 - */ - /** - * 瑙f瀽鐢ㄦ埛鏁版嵁 - */ - @SuppressWarnings("unchecked") - private List<FeishuUser> parseUsers(Object items) { - Logger log = LoggerFactory.getLogger(FeishuUserService.class); - List<FeishuUser> userList = new ArrayList<>(); - if (!(items instanceof List)) { - log.warn("瑙f瀽鐢ㄦ埛鏁版嵁澶辫触锛宨tems涓嶆槸鍒楄〃绫诲瀷: {}", items); - return userList; - } - List<?> userItems = (List<?>) items; - log.info("寮�濮嬭В鏋愰涔︾敤鎴峰垪琛紝鍏眥}鏉¤褰�", userItems.size()); - for (Object item : userItems) { - if (item == null || !(item instanceof Map)) { - log.warn("璺宠繃鏃犳晥鐢ㄦ埛鏁版嵁椤癸紝绫诲瀷涓嶅尮閰�: {}", item != null ? item.getClass() : "null"); - continue; - } - Map<String, Object> userMap = (Map<String, Object>) item; - FeishuUser user = new FeishuUser(); - // 瑙f瀽open_id - user.setOpenId((String) userMap.getOrDefault("open_id", "")); - // 瑙f瀽name骞舵媶鍒� - String name = (String) userMap.getOrDefault("name", ""); - if (name.contains(" ")) { - String[] parts = name.split(" "); - if (parts.length == 2) { - user.setUsername(parts[0].trim()); // 宸ュ彿閮ㄥ垎瀛樺埌username - user.setRealname(parts[1].trim()); // 濮撳悕閮ㄥ垎瀛樺埌realname - user.setWorkNo(parts[0].trim()); // 宸ュ彿涔熷瓨鍒皐orkNo - } else { - // 鎷嗗垎寮傚父鏃讹紝榛樿澶勭悊 - user.setUsername(name); - user.setRealname(name); - user.setWorkNo(""); - log.warn("椋炰功鐢ㄦ埛name瀛楁鏍煎紡寮傚父锛屾棤娉曟媶鍒嗭紝鍘熷鍊硷細{}", name); - } - } else { - user.setUsername(name); - user.setRealname(name); - user.setWorkNo(""); - log.warn("椋炰功鐢ㄦ埛name瀛楁鏃犵┖鏍煎垎闅旓紝鏃犳硶鎷嗗垎锛屽師濮嬪�硷細{}", name); - } - // 瑙f瀽鍏朵粬鍩烘湰淇℃伅 - user.setEnName((String) userMap.getOrDefault("en_name", "")); - user.setDescription((String) userMap.getOrDefault("description", "")); - Object mobileVisibleObj = userMap.get("mobile_visible"); - user.setMobileVisible(mobileVisibleObj instanceof Boolean ? (Boolean) mobileVisibleObj : false); - // 瑙f瀽澶村儚淇℃伅 - Object avatarObj = userMap.get("avatar"); - if (avatarObj instanceof Map) { - Map<String, Object> avatarMap = (Map<String, Object>) avatarObj; - user.setAvatar240((String) avatarMap.getOrDefault("avatar_240", "")); - user.setAvatar640((String) avatarMap.getOrDefault("avatar_640", "")); - user.setAvatar72((String) avatarMap.getOrDefault("avatar_72", "")); - user.setAvatarOrigin((String) avatarMap.getOrDefault("avatar_origin", "")); - } else { - log.info("鐢ㄦ埛[{}]鏈缃ご鍍忔垨澶村儚鏍煎紡寮傚父", user.getRealname()); - } - // 璁剧疆榛樿鍔犲瘑瀵嗙爜锛堣繖閲屽亣璁惧瘑鐮佹槸绠�鍗曞姞瀵嗗瓨鍌紝瀹為檯寤鸿鐢ㄦ洿瀹夊叏鐨勫姞瀵嗘柟寮忥級 - user.setPassword("123456"); // 浣犺姹傜殑榛樿瀵嗙爜 - // 灏唎pen_id瀛樺埌瀵瑰簲鐨勫瓧娈碉紙鏍规嵁浣犵殑鐢ㄦ埛琛ㄧ粨鏋勶紝鍋囪鐢ㄦ埛琛ㄦ湁open_id瀛楁锛� - user.setOpenId((String) userMap.getOrDefault("open_id", "")); - userList.add(user); - } - - return userList; - } - - /** - * 鍚屾鍗曚釜椋炰功鐢ㄦ埛鍒扮郴缁� - * @param feishuUser 椋炰功鐢ㄦ埛 - * @return true琛ㄧず鏇存柊锛宖alse琛ㄧず鏂板 - * - * 鍚庢湡澧炲姞锛� 鐢ㄦ埛鍚屾瀵规瘮锛岄涔︾鑱屽憳宸ラ渶瑕佸湪鏈湴鐢ㄦ埛琛ㄩ噷闈㈠皢璇ョ敤鎴风姸鎬佺鐢� - */ - private boolean syncFeishuUserToSystem(FeishuUser feishuUser) { - // 杩欓噷鏍规嵁鎷嗗垎鍚庣殑username锛堝伐鍙凤級鍘绘煡璇㈢郴缁熺敤鎴� - String username = feishuUser.getUsername(); - SysUser existUser = sysUserService.getUserByName(username); - SysUser sysUser = new SysUser(); - sysUser.setUsername(username); - sysUser.setStatus(1); - sysUser.setDelFlag(0); - sysUser.setAvatar(feishuUser.getAvatar640()); - sysUser.setRealname(feishuUser.getRealname()); - sysUser.setWorkNo(feishuUser.getWorkNo()); - String password = "123456", salt = oConvertUtils.randomGen(8); - String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); - sysUser.setSalt(salt); - sysUser.setPassword(passwordEncode); - sysUser.setOpenId(feishuUser.getOpenId()); - - if (existUser == null) { - - sysUserService.addUserWithRole(sysUser, "5"); - log.info("鏂板鐢ㄦ埛: {}", username); - return false; - } else { - sysUser.setId(existUser.getId()); - sysUserService.editUser(sysUser); - log.info("鏇存柊鐢ㄦ埛: {}", username); - return true; - } - } -} diff --git a/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialTransferDetailMapper.java b/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialTransferDetailMapper.java deleted file mode 100644 index b8e507a..0000000 --- a/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialTransferDetailMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.jeecg.modules.mes.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.jeecg.modules.mes.entity.MesMaterialTransferDetail; - -/** - * @Description: 鐗╂枡鎷夊姩鏄庣粏 - * @Author: jeecg-boot - * @Date: 2025-07-07 - * @Version: V1.0 - */ -public interface MesMaterialTransferDetailMapper extends BaseMapper<MesMaterialTransferDetail> { - -} diff --git a/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialTransferDetailMapper.xml b/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialTransferDetailMapper.xml deleted file mode 100644 index e4afcfa..0000000 --- a/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialTransferDetailMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="org.jeecg.modules.mes.mapper.MesMaterialTransferDetailMapper"> - -</mapper> \ No newline at end of file diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferDetailService.java b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferDetailService.java deleted file mode 100644 index 6208670..0000000 --- a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferDetailService.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.jeecg.modules.mes.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.mes.entity.MesMaterialTransferDetail; - -/** - * @Description: 鐗╂枡鎷夊姩鏄庣粏 - * @Author: jeecg-boot - * @Date: 2025-07-07 - * @Version: V1.0 - */ -public interface IMesMaterialTransferDetailService extends IService<MesMaterialTransferDetail> { - -} diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferDetailServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferDetailServiceImpl.java deleted file mode 100644 index a4bf035..0000000 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferDetailServiceImpl.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.jeecg.modules.mes.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.jeecg.modules.mes.entity.MesMaterialTransferDetail; -import org.jeecg.modules.mes.mapper.MesMaterialTransferDetailMapper; -import org.jeecg.modules.mes.service.IMesMaterialTransferDetailService; -import org.springframework.stereotype.Service; - -/** - * @Description: 鐗╂枡鎷夊姩鏄庣粏 - * @Author: jeecg-boot - * @Date: 2025-07-07 - * @Version: V1.0 - */ -@Service -public class MesMaterialTransferDetailServiceImpl extends ServiceImpl<MesMaterialTransferDetailMapper, MesMaterialTransferDetail> implements IMesMaterialTransferDetailService { - -} diff --git a/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java b/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java deleted file mode 100644 index 484d2c9..0000000 --- a/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.jeecg.modules.wms; - -import com.alibaba.fastjson.JSONObject; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; - -import javax.xml.namespace.QName; - -/** - * @author Lius - * @date 2024/6/11 10:16 - */ -public class CxfClientUtil { - - /** - * 鍔ㄦ�佽皟鐢� - */ - public static String invokeService(String url, String data, String namespace, String method) throws Exception { - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(url); - QName opName = new QName(namespace, method); - Object[] objects = new Object[0]; - try { - objects = client.invoke(opName, data); - } catch (Exception e) { - e.printStackTrace(); - } - String json = JSONObject.toJSONString(objects[0]); - return json; - } - -} diff --git a/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java b/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java new file mode 100644 index 0000000..aecbbed --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/MESObjectFactory.java @@ -0,0 +1,51 @@ +package org.jeecg.modules.wms; + +import org.jeecg.modules.wms.dto.ReceiveWMSScanItemListResponse; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; +import org.jeecg.modules.wms.request.WMSWebServiceSendItem; + +import javax.xml.bind.annotation.XmlRegistry; + +@XmlRegistry +public class MESObjectFactory { + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.tempuri + * + */ + public MESObjectFactory() { + } + + /** + * Create an instance of {@link ReceiveWMSScanItemList } + * + */ + public ReceiveWMSScanItemList createReceiveWMSScanItemList() { + return new ReceiveWMSScanItemList(); + } + + /** + * Create an instance of {@link WMSWebServiceSendItem } + * + */ + public WMSWebServiceSendItem createWMSWebServiceSendItem() { + return new WMSWebServiceSendItem(); + } + + /** + * Create an instance of {@link ReceiveWMSScanItemListResponse } + * + */ + public ReceiveWMSScanItemListResponse createReceiveWMSScanItemListResponse() { + return new ReceiveWMSScanItemListResponse(); + } + + /** + * Create an instance of {@link WSResponse } + * + */ + public WSResponse createWSResponse() { + return new WSResponse(); + } + +} diff --git a/src/main/java/org/jeecg/modules/wms/WMSObjectFactory.java b/src/main/java/org/jeecg/modules/wms/WMSObjectFactory.java new file mode 100644 index 0000000..b81fd72 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/WMSObjectFactory.java @@ -0,0 +1,132 @@ + +package org.jeecg.modules.wms; + +import org.jeecg.modules.wms.dto.*; +import org.jeecg.modules.wms.request.*; +import org.jeecg.modules.wms.request.WebServiceSendItem; + +import javax.xml.bind.annotation.XmlRegistry; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the org.tempuri package. + * <p>An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class WMSObjectFactory { + + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.tempuri + * + */ + public WMSObjectFactory() { + } + + /** + * Create an instance of {@link ReceiveMESScanItemList } + * + */ + public ReceiveMESScanItemList createReceiveMESScanItemList() { + return new ReceiveMESScanItemList(); + } + + /** + * Create an instance of {@link ArrayOfWebServiceSendItem } + * + */ + public ArrayOfWebServiceSendItem createArrayOfWebServiceSendItem() { + return new ArrayOfWebServiceSendItem(); + } + + /** + * Create an instance of {@link ReceiveMESScanItemListResponse } + * + */ + public ReceiveMESScanItemListResponse createReceiveMESScanItemListResponse() { + return new ReceiveMESScanItemListResponse(); + } + + /** + * Create an instance of {@link WSResponse } + * + */ + public WSResponse createWSResponse() { + return new WSResponse(); + } + + /** + * Create an instance of {@link DeliOrderDelete } + * + */ + public DeliOrderDelete createDeliOrderDelete() { + return new DeliOrderDelete(); + } + + /** + * Create an instance of {@link DeliOrderDeleteResponse } + * + */ + public DeliOrderDeleteResponse createDeliOrderDeleteResponse() { + return new DeliOrderDeleteResponse(); + } + + /** + * Create an instance of {@link ReceiveReservation } + * + */ + public ReceiveReservation createReceiveReservation() { + return new ReceiveReservation(); + } + + /** + * Create an instance of {@link WebReservationOrder } + * + */ + public WebReservationOrder createWebReservationOrder() { + return new WebReservationOrder(); + } + + /** + * Create an instance of {@link ReceiveReservationResponse } + * + */ + public ReceiveReservationResponse createReceiveReservationResponse() { + return new ReceiveReservationResponse(); + } + + /** + * Create an instance of {@link HelloWorld } + * + */ + public HelloWorld createHelloWorld() { + return new HelloWorld(); + } + + /** + * Create an instance of {@link HelloWorldResponse } + * + */ + public HelloWorldResponse createHelloWorldResponse() { + return new HelloWorldResponse(); + } + + /** + * Create an instance of {@link WebServiceSendItem } + * + */ + public WebServiceSendItem createWebServiceSendItem() { + return new WebServiceSendItem(); + } + +} diff --git a/src/main/java/org/jeecg/modules/wms/WMSWebService.java b/src/main/java/org/jeecg/modules/wms/WMSWebService.java new file mode 100644 index 0000000..bc9d3f2 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/WMSWebService.java @@ -0,0 +1,114 @@ +package org.jeecg.modules.wms; + +import java.net.MalformedURLException; +import java.net.URL; +import javax.xml.namespace.QName; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceFeature; +import javax.xml.ws.Service; +import org.jeecg.modules.wms.service.WebServiceSoap; +import org.springframework.stereotype.Component; + +/** + * This class was generated by Apache CXF 3.5.5 + * 2025-08-15T16:30:13.500+08:00 + * Generated source version: 3.5.5 + * + */ +@Component +@WebServiceClient(name = "WebService", + wsdlLocation = "classpath:/wsdl/WebService.asmx.wsdl", + targetNamespace = "http://tempuri.org/") +public class WMSWebService extends Service { + + public final static URL WSDL_LOCATION; + + public final static QName SERVICE = new QName("http://tempuri.org/", "WebService"); + public final static QName WebServiceSoap = new QName("http://tempuri.org/", "WebServiceSoap"); + public final static QName WebServiceSoap12 = new QName("http://tempuri.org/", "WebServiceSoap12"); + static { + URL url = null; + try { + url = new URL("classpath:/wsdl/WebService.asmx.wsdl"); + } catch (MalformedURLException e) { + java.util.logging.Logger.getLogger(WMSWebService.class.getName()) + .log(java.util.logging.Level.INFO, + "Can not initialize the default wsdl from {0}", "classpath:/wsdl/WebService.asmx.wsdl"); + } + WSDL_LOCATION = url; + } + + public WMSWebService(URL wsdlLocation) { + super(wsdlLocation, SERVICE); + } + + public WMSWebService(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public WMSWebService() { + super(WSDL_LOCATION, SERVICE); + } + + public WMSWebService(WebServiceFeature ... features) { + super(WSDL_LOCATION, SERVICE, features); + } + + public WMSWebService(URL wsdlLocation, WebServiceFeature ... features) { + super(wsdlLocation, SERVICE, features); + } + + public WMSWebService(URL wsdlLocation, QName serviceName, WebServiceFeature ... features) { + super(wsdlLocation, serviceName, features); + } + + + + + /** + * + * @return + * returns WebServiceSoap + */ + @WebEndpoint(name = "WebServiceSoap") + public WebServiceSoap getWebServiceSoap() { + return super.getPort(WebServiceSoap, WebServiceSoap.class); + } + + /** + * + * @param features + * A list of {@link WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values. + * @return + * returns WebServiceSoap + */ + @WebEndpoint(name = "WebServiceSoap") + public WebServiceSoap getWebServiceSoap(WebServiceFeature... features) { + return super.getPort(WebServiceSoap, WebServiceSoap.class, features); + } + + + /** + * + * @return + * returns WebServiceSoap + */ + @WebEndpoint(name = "WebServiceSoap12") + public WebServiceSoap getWebServiceSoap12() { + return super.getPort(WebServiceSoap12, WebServiceSoap.class); + } + + /** + * + * @param features + * A list of {@link WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values. + * @return + * returns WebServiceSoap + */ + @WebEndpoint(name = "WebServiceSoap12") + public WebServiceSoap getWebServiceSoap12(WebServiceFeature... features) { + return super.getPort(WebServiceSoap12, WebServiceSoap.class, features); + } + +} diff --git a/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java index 17ee53b..bc5f335 100644 --- a/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java +++ b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java @@ -4,8 +4,8 @@ import org.apache.cxf.bus.spring.SpringBus; import org.apache.cxf.jaxws.EndpointImpl; import org.apache.cxf.transport.servlet.CXFServlet; -import org.jeecg.modules.wms.service.ReceiveWMSScanItemListService; -import org.jeecg.modules.wms.service.impl.ReceiveWMSScanItemListServiceImpl; +import org.jeecg.modules.wms.service.MESWebServiceSoap; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -15,6 +15,8 @@ @Configuration public class WebServiceServerConfig { + @Autowired + private MESWebServiceSoap webServiceSoap; @Bean(name = Bus.DEFAULT_BUS_ID) public Bus springBus() { @@ -27,16 +29,11 @@ } @Bean - public ReceiveWMSScanItemListService receiveWMSScanItemListService() { - return new ReceiveWMSScanItemListServiceImpl(); - } - - @Bean public Endpoint endpoint() { // 鍙傛暟浜岋紝鏄疭EI瀹炵幇绫诲璞� - Endpoint endpoint = new EndpointImpl(this.springBus(), this.receiveWMSScanItemListService()); + Endpoint endpoint = new EndpointImpl(this.springBus(), webServiceSoap); // 鍙戝竷鏈嶅姟 - endpoint.publish("/ReceiveWMSScanItemList"); + endpoint.publish("/MESWebService"); return endpoint; } } diff --git a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java index 5aa73af..08d60e0 100644 --- a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java +++ b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java @@ -3,12 +3,18 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.cxf.endpoint.Client; +import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; +import org.apache.cxf.transport.http.HTTPConduit; +import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.wms.dto.ReceiveMESScanItemListResponse; -import org.jeecg.modules.wms.request.ReceiveMESScanItemList; -import org.jeecg.modules.wms.service.ReceiveWMSScanItemListService; -import org.jeecg.modules.wms.service.WMSWebService; +import org.jeecg.modules.wms.WMSWebService; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; +import org.jeecg.modules.wms.service.MESWebServiceSoap; +import org.jeecg.modules.wms.service.WebServiceSoap; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,27 +27,47 @@ public class WMSTestController { @Value("${webservice.url}") private String url; + @Autowired + private WMSWebService webService; + + private final static String localUrl = "http://localhost:9989/jeecg-boot/webservice/ReceiveWMSScanItemList?wsdl"; + @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉", notes = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉") @PostMapping("/testReceiveWMSScanItemList") public Result<?> testReceiveWMSScanItemList() { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); - factory.setAddress(url); - factory.setServiceClass(ReceiveWMSScanItemListService.class); - ReceiveWMSScanItemListService service = (ReceiveWMSScanItemListService) factory.create(); - ReceiveMESScanItemList request = new ReceiveMESScanItemList(); - ReceiveMESScanItemListResponse response = service.receiveWMSScanItemList(request); + factory.setAddress(localUrl); + factory.setServiceClass(MESWebServiceSoap.class); + MESWebServiceSoap service = (MESWebServiceSoap) factory.create(); + ReceiveWMSScanItemList request = new ReceiveWMSScanItemList(); + WSResponse response = service.receiveWMSScanItemList(request); return Result.ok(response); } @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-HelloWord娴嬭瘯", notes = "WMS闆嗘垚娴嬭瘯-HelloWord娴嬭瘯") @PostMapping("/testHelloWorld") public Result<?> testHelloWorld() { - JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); - factory.setAddress(url); - factory.setServiceClass(WMSWebService.class); - WMSWebService service = (WMSWebService) factory.create(); - String response = service.helloWorld(); - return Result.ok(response); +// JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); +// factory.setAddress(url); +// factory.setServiceClass(WebServiceSoap.class); +// WebServiceSoap service = (WebServiceSoap) factory.create(); +// String response = service.helloWorld(); +// return Result.ok(response); + WebServiceSoap port = webService.getWebServiceSoap12(); + // 2. 鑾峰彇 CXF 搴曞眰 Client 瀵硅薄 + Client client = ClientProxy.getClient(port); + + // 3. 鑾峰彇 HTTPConduit 骞惰缃秴鏃� + HTTPConduit http = (HTTPConduit) client.getConduit(); + HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); + + httpClientPolicy.setConnectionTimeout(10 * 1000); // 杩炴帴瓒呮椂 10 绉� + httpClientPolicy.setReceiveTimeout(300 * 1000); // 璇诲彇瓒呮椂 60 绉掞紙閲嶇偣锛侊級 + + http.setClient(httpClientPolicy); + String result = port.helloWorld(); + return Result.ok(result); + } } diff --git a/src/main/java/org/jeecg/modules/wms/dto/DeliOrderDeleteResponse.java b/src/main/java/org/jeecg/modules/wms/dto/DeliOrderDeleteResponse.java new file mode 100644 index 0000000..aed7d00 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/dto/DeliOrderDeleteResponse.java @@ -0,0 +1,44 @@ + +package org.jeecg.modules.wms.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="DeliOrderDeleteResult" type="{http://tempuri.org/}WSResponse" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "deliOrderDeleteResult" +}) +@XmlRootElement(name = "DeliOrderDeleteResponse") +@Getter +@Setter +public class DeliOrderDeleteResponse { + + @XmlElement(name = "DeliOrderDeleteResult") + protected WSResponse deliOrderDeleteResult; +} diff --git a/src/main/java/org/jeecg/modules/wms/dto/HelloWorldResponse.java b/src/main/java/org/jeecg/modules/wms/dto/HelloWorldResponse.java new file mode 100644 index 0000000..c7dc781 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/dto/HelloWorldResponse.java @@ -0,0 +1,44 @@ + +package org.jeecg.modules.wms.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="HelloWorldResult" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "helloWorldResult" +}) +@XmlRootElement(name = "HelloWorldResponse") +@Getter +@Setter +public class HelloWorldResponse { + + @XmlElement(name = "HelloWorldResult") + protected String helloWorldResult; +} diff --git a/src/main/java/org/jeecg/modules/wms/dto/ReceiveMESScanItemListResponse.java b/src/main/java/org/jeecg/modules/wms/dto/ReceiveMESScanItemListResponse.java index 99d4316..5a91a63 100644 --- a/src/main/java/org/jeecg/modules/wms/dto/ReceiveMESScanItemListResponse.java +++ b/src/main/java/org/jeecg/modules/wms/dto/ReceiveMESScanItemListResponse.java @@ -1,19 +1,40 @@ + package org.jeecg.modules.wms.dto; import lombok.Getter; import lombok.Setter; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.io.Serializable; +import javax.xml.bind.annotation.*; + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="ReceiveMESScanItemListResult" type="{http://tempuri.org/}WSResponse" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "receiveMESScanItemListResult" +}) +@XmlRootElement(name = "ReceiveMESScanItemListResponse") @Getter @Setter -@XmlRootElement(name = "ReceiveMESScanItemListResponse") -@XmlAccessorType(XmlAccessType.FIELD) -public class ReceiveMESScanItemListResponse implements Serializable { - @XmlElement(name = "WSResponse") - private WSResponse wsResponse; +public class ReceiveMESScanItemListResponse { + + @XmlElement(name = "ReceiveMESScanItemListResult") + protected WSResponse receiveMESScanItemListResult; } diff --git a/src/main/java/org/jeecg/modules/wms/dto/ReceiveReservationResponse.java b/src/main/java/org/jeecg/modules/wms/dto/ReceiveReservationResponse.java new file mode 100644 index 0000000..1a6c8d1 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/dto/ReceiveReservationResponse.java @@ -0,0 +1,40 @@ + +package org.jeecg.modules.wms.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.*; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="ReceiveReservationResult" type="{http://tempuri.org/}WSResponse" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "receiveReservationResult" +}) +@XmlRootElement(name = "ReceiveReservationResponse") +@Getter +@Setter +public class ReceiveReservationResponse { + + @XmlElement(name = "ReceiveReservationResult") + protected WSResponse receiveReservationResult; +} diff --git a/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java b/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java new file mode 100644 index 0000000..f2da1d4 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/dto/ReceiveWMSScanItemListResponse.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.wms.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.*; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "receiveWMSScanItemListResult" +}) +@XmlRootElement(name = "ReceiveWMSScanItemListResponse") +@Getter +@Setter +public class ReceiveWMSScanItemListResponse { + @XmlElement(name = "ReceiveWMSScanItemListResult") + protected WSResponse receiveWMSScanItemListResult; +} diff --git a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java index 2c1669a..0d55fcf 100644 --- a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java +++ b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java @@ -1,3 +1,4 @@ + package org.jeecg.modules.wms.dto; import lombok.Getter; @@ -6,14 +7,40 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; -import java.io.Serializable; +import javax.xml.bind.annotation.XmlType; + +/** + * <p>WSResponse complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType name="WSResponse"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="ErrorDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ @Getter @Setter @XmlAccessorType(XmlAccessType.FIELD) -public class WSResponse implements Serializable { +@XmlType(name = "WSResponse", propOrder = { + "errorCode", + "errorDesc" +}) +public class WSResponse { + @XmlElement(name = "ErrorCode") - private String errorCode; + protected String errorCode; @XmlElement(name = "ErrorDesc") - private String errorDesc; + protected String errorDesc; } diff --git a/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java new file mode 100644 index 0000000..98f4d53 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java @@ -0,0 +1,69 @@ + +package org.jeecg.modules.wms.request; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; +import java.util.ArrayList; +import java.util.List; + + +/** + * <p>ArrayOfWebServiceSendItem complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType name="ArrayOfWebServiceSendItem"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="WebServiceSendItem" type="{http://tempuri.org/}WebServiceSendItem" maxOccurs="unbounded" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "ArrayOfWebServiceSendItem", propOrder = { + "webServiceSendItem" +}) +public class ArrayOfWebServiceSendItem { + + @XmlElement(name = "WebServiceSendItem", nillable = true) + protected List<WebServiceSendItem> webServiceSendItem; + + /** + * Gets the value of the webServiceSendItem property. + * + * <p> + * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a <CODE>set</CODE> method for the webServiceSendItem property. + * + * <p> + * For example, to add a new item, do as follows: + * <pre> + * getWebServiceSendItem().add(newItem); + * </pre> + * + * + * <p> + * Objects of the following type(s) are allowed in the list + * {@link WebServiceSendItem } + * + * + */ + public List<WebServiceSendItem> getWebServiceSendItem() { + if (webServiceSendItem == null) { + webServiceSendItem = new ArrayList<>(); + } + return this.webServiceSendItem; + } + +} diff --git a/src/main/java/org/jeecg/modules/wms/request/DeliOrderDelete.java b/src/main/java/org/jeecg/modules/wms/request/DeliOrderDelete.java new file mode 100644 index 0000000..d30d35a --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/DeliOrderDelete.java @@ -0,0 +1,45 @@ + +package org.jeecg.modules.wms.request; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="sFactoryCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="sStockRecord" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "sFactoryCode", + "sStockRecord" +}) +@XmlRootElement(name = "DeliOrderDelete") +@Getter +@Setter +public class DeliOrderDelete { + + protected String sFactoryCode; + protected String sStockRecord; +} diff --git a/src/main/java/org/jeecg/modules/wms/request/HelloWorld.java b/src/main/java/org/jeecg/modules/wms/request/HelloWorld.java new file mode 100644 index 0000000..c7e8e1a --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/HelloWorld.java @@ -0,0 +1,32 @@ + +package org.jeecg.modules.wms.request; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "") +@XmlRootElement(name = "HelloWorld") +public class HelloWorld { + + +} diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java index 9bb906b..8977c4b 100644 --- a/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java +++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java @@ -1,19 +1,40 @@ + package org.jeecg.modules.wms.request; import lombok.Getter; import lombok.Setter; import javax.xml.bind.annotation.*; -import java.io.Serializable; -import java.util.List; + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="oMESScanItemList" type="{http://tempuri.org/}ArrayOfWebServiceSendItem" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "omesScanItemList" +}) +@XmlRootElement(name = "ReceiveMESScanItemList") @Getter @Setter -@XmlRootElement(name = "ReceiveMESScanItemList") -@XmlAccessorType(XmlAccessType.FIELD) -public class ReceiveMESScanItemList implements Serializable { +public class ReceiveMESScanItemList { - @XmlElementWrapper(name = "ArrayOfWebServiceSendItem") - @XmlElement(name = "WebServiceSendItem") - private List<WebServiceSendItem> items; + @XmlElement(name = "oMESScanItemList") + protected ArrayOfWebServiceSendItem omesScanItemList; } diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java new file mode 100644 index 0000000..d38ae84 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java @@ -0,0 +1,42 @@ + +package org.jeecg.modules.wms.request; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>anonymous complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="oWebReservationOrder" type="{http://tempuri.org/}WebReservationOrder" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "oWebReservationOrder" +}) +@XmlRootElement(name = "ReceiveReservation") +@Getter +@Setter +public class ReceiveReservation { + + protected WebReservationOrder oWebReservationOrder; +} diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java new file mode 100644 index 0000000..1ccdc62 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveWMSScanItemList.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.wms.request; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.*; +import java.util.List; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "wmsWebServiceSendItemList" +}) +@XmlRootElement(name = "ReceiveWMSScanItemList") +@Getter +@Setter +public class ReceiveWMSScanItemList { + + @XmlElementWrapper(name = "ArrayOfWMSWebServiceSendItem") + @XmlElement(name = "WMSWebServiceSendItem", nillable = true) + protected List<WMSWebServiceSendItem> wmsWebServiceSendItemList; +} diff --git a/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java new file mode 100644 index 0000000..0e491a8 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java @@ -0,0 +1,91 @@ + +package org.jeecg.modules.wms.request; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +@Getter +@Setter +@XmlType(name = "WMSWebServiceSendItem", propOrder = { + "factoryCode", + "skuCode", + "reservationOrder", + "align", + "pallet", + "packageNo", + "trackLot", + "series", + "mesStockID", + "quantity", + "sapTrackLot", + "section", + "destSection", + "supplierCode", + "supplierTrackLot", + "stageID", + "remark", + "orderCode" +}) +@XmlAccessorType(XmlAccessType.FIELD) +public class WMSWebServiceSendItem { + + /**宸ュ巶缂栫爜 */ + @XmlElement(name = "FactoryCode") + private String factoryCode; + /** 鐗╂枡缂栫爜 */ + @XmlElement(name = "SkuCode") + private String skuCode; + /** 棰勭暀鍙� */ + @XmlElement(name = "ReservationOrder") + private String reservationOrder; + /** 瀵归綈鏂瑰紡 */ + @XmlElement(name = "Align") + private String align; + /** 鎵樺彿 */ + @XmlElement(name = "Pallet") + private String pallet; + /** 鍖呰缂栫爜 */ + @XmlElement(name = "PackageNo") + private String packageNo; + /** 鎵规鍙� */ + @XmlElement(name = "TrackLot") + private String trackLot; + /** 绯诲垪鍙� */ + @XmlElement(name = "Series") + private String series; + /** MES搴撳瓨ID */ + @XmlElement(name = "MesStockID") + private String mesStockID; + /** 鏁伴噺 */ + @XmlElement(name = "Quantity") + private String quantity; + /** SAP鎵规鍙� */ + @XmlElement(name = "SapTrackLot") + private String sapTrackLot; + /** 鍙戦�佸簱瀛樺湴 */ + @XmlElement(name = "Section") + private String section; + /** 鐩爣搴撳瓨鍦� */ + @XmlElement(name = "DestSection") + private String destSection; + /** 渚涘簲鍟嗕唬鐮� */ + @XmlElement(name = "SupplierCode") + private String supplierCode; + /** 渚涘簲鍟嗘壒娆″彿 */ + @XmlElement(name = "SupplierTrackLot") + private String supplierTrackLot; + /** 闃舵ID */ + @XmlElement(name = "StageID") + private String stageID; + /** 澶囨敞 */ + @XmlElement(name = "Remark") + private String remark; + /** 璁㈠崟缂栫爜 */ + @XmlElement(name = "OrderCode") + private String orderCode; +} diff --git a/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java new file mode 100644 index 0000000..2f962be --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java @@ -0,0 +1,51 @@ + +package org.jeecg.modules.wms.request; + +import lombok.Getter; +import lombok.Setter; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; +import java.math.BigDecimal; + + +/** + * <p>WebReservationOrder complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType name="WebReservationOrder"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="FactoryCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="ReservationOrder" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Total" type="{http://www.w3.org/2001/XMLSchema}decimal"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "WebReservationOrder", propOrder = { + "factoryCode", + "reservationOrder", + "total" +}) +@Getter +@Setter +public class WebReservationOrder { + + @XmlElement(name = "FactoryCode") + protected String factoryCode; + @XmlElement(name = "ReservationOrder") + protected String reservationOrder; + @XmlElement(name = "Total", required = true) + protected BigDecimal total; +} diff --git a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java index d87832f..ab7e44e 100644 --- a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java +++ b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java @@ -1,70 +1,107 @@ + package org.jeecg.modules.wms.request; import lombok.Getter; import lombok.Setter; +import java.math.BigDecimal; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; -import java.io.Serializable; -import java.math.BigDecimal; +import javax.xml.bind.annotation.XmlType; + +/** + * <p>WebServiceSendItem complex type鐨� Java 绫汇�� + * + * <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ绫讳腑鐨勯鏈熷唴瀹广�� + * + * <pre> + * <complexType name="WebServiceSendItem"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="FactoryCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="SkuCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Align" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Pallet" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="PackageNo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="TrackLot" type="{http://www.w3.org/2001/XMLSchema}long"/> + * <element name="Series" type="{http://www.w3.org/2001/XMLSchema}long"/> + * <element name="MesStockID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Quantity" type="{http://www.w3.org/2001/XMLSchema}decimal"/> + * <element name="SapTrackLot" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Section" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="DestSection" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="SupplierCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="SupplierTrackLot" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="StageID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="Remark" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="OrderCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "WebServiceSendItem", propOrder = { + "factoryCode", + "skuCode", + "align", + "pallet", + "packageNo", + "trackLot", + "series", + "mesStockID", + "quantity", + "sapTrackLot", + "section", + "destSection", + "supplierCode", + "supplierTrackLot", + "stageID", + "remark", + "orderCode" +}) @Getter @Setter -@XmlAccessorType(XmlAccessType.FIELD) -public class WebServiceSendItem implements Serializable { - /**宸ュ巶缂栫爜 */ +public class WebServiceSendItem { + @XmlElement(name = "FactoryCode") - private String factoryCode; - /** 鐗╂枡缂栫爜 */ + protected String factoryCode; @XmlElement(name = "SkuCode") - private String skuCode; - /** 棰勭暀鍙� */ - @XmlElement(name = "ReservationOrder") - private String reservationOrder; - /** 瀵归綈鏂瑰紡 */ + protected String skuCode; @XmlElement(name = "Align") - private String align; - /** 鎵樺彿 */ + protected String align; @XmlElement(name = "Pallet") - private String pallet; - /** 鍖呰缂栫爜 */ + protected String pallet; @XmlElement(name = "PackageNo") - private String packageNo; - /** 鎵规鍙� */ + protected String packageNo; @XmlElement(name = "TrackLot") - private String trackLot; - /** 绯诲垪鍙� */ + protected long trackLot; @XmlElement(name = "Series") - private String series; - /** MES搴撳瓨ID */ + protected long series; @XmlElement(name = "MesStockID") - private String mesStockID; - /** 鏁伴噺 */ - @XmlElement(name = "Quantity") - private BigDecimal quantity; - /** SAP鎵规鍙� */ + protected String mesStockID; + @XmlElement(name = "Quantity", required = true) + protected BigDecimal quantity; @XmlElement(name = "SapTrackLot") - private String sapTrackLot; - /** 鍙戦�佸簱瀛樺湴 */ + protected String sapTrackLot; @XmlElement(name = "Section") - private String section; - /** 鐩爣搴撳瓨鍦� */ + protected String section; @XmlElement(name = "DestSection") - private String destSection; - /** 渚涘簲鍟嗕唬鐮� */ + protected String destSection; @XmlElement(name = "SupplierCode") - private String supplierCode; - /** 渚涘簲鍟嗘壒娆″彿 */ + protected String supplierCode; @XmlElement(name = "SupplierTrackLot") - private String supplierTrackLot; - /** 闃舵ID */ + protected String supplierTrackLot; @XmlElement(name = "StageID") - private String stageID; - /** 澶囨敞 */ + protected String stageID; @XmlElement(name = "Remark") - private String remark; - /** 璁㈠崟缂栫爜 */ + protected String remark; @XmlElement(name = "OrderCode") - private String orderCode; + protected String orderCode; } diff --git a/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java b/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java new file mode 100644 index 0000000..80bbc38 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/service/MESWebServiceSoap.java @@ -0,0 +1,28 @@ +package org.jeecg.modules.wms.service; + +import org.jeecg.modules.wms.MESObjectFactory; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + +@WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com/") +@XmlSeeAlso({MESObjectFactory.class}) +public interface MESWebServiceSoap { + /** + * 鎺ユ敹WMS绉诲簱淇℃伅 + * @param request + * @return + */ + @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList") + @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList") + @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse") + @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/") + WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request); +} diff --git a/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java b/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java deleted file mode 100644 index d5f1b93..0000000 --- a/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.jeecg.modules.wms.service; - -import org.jeecg.modules.wms.dto.ReceiveMESScanItemListResponse; -import org.jeecg.modules.wms.request.ReceiveMESScanItemList; - -import javax.jws.WebService; - -@WebService(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com") -public interface ReceiveWMSScanItemListService { - /** - * 鎺ユ敹WMS绉诲簱淇℃伅 - * @param request - * @return - */ - ReceiveMESScanItemListResponse receiveWMSScanItemList(ReceiveMESScanItemList request); -} diff --git a/src/main/java/org/jeecg/modules/wms/service/WMSWebService.java b/src/main/java/org/jeecg/modules/wms/service/WMSWebService.java deleted file mode 100644 index 0d1ee5d..0000000 --- a/src/main/java/org/jeecg/modules/wms/service/WMSWebService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.jeecg.modules.wms.service; - -import javax.jws.WebMethod; -import javax.jws.WebResult; -import javax.jws.WebService; - -@WebService(name = "WebService", targetNamespace = "http://tempuri.org") -public interface WMSWebService { - - @WebMethod(operationName = "HelloWorld") - @WebResult(name = "HelloWorldResponse") - String helloWorld(); -} diff --git a/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java b/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java new file mode 100644 index 0000000..84aba91 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java @@ -0,0 +1,63 @@ +package org.jeecg.modules.wms.service; + +import org.jeecg.modules.wms.WMSObjectFactory; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ArrayOfWebServiceSendItem; +import org.jeecg.modules.wms.request.WebReservationOrder; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + +/** + * This class was generated by Apache CXF 3.5.5 + * 2025-08-15T16:30:13.468+08:00 + * Generated source version: 3.5.5 + * + */ +@WebService(targetNamespace = "http://tempuri.org/", name = "WebServiceSoap") +@XmlSeeAlso({WMSObjectFactory.class}) +public interface WebServiceSoap { + + @WebMethod(operationName = "ReceiveReservation", action = "http://tempuri.org/ReceiveReservation") + @RequestWrapper(localName = "ReceiveReservation", targetNamespace = "http://tempuri.org/", className = "ReceiveReservation") + @ResponseWrapper(localName = "ReceiveReservationResponse", targetNamespace = "http://tempuri.org/", className = "ReceiveReservationResponse") + @WebResult(name = "ReceiveReservationResult", targetNamespace = "http://tempuri.org/") + WSResponse receiveReservation( + + @WebParam(name = "oWebReservationOrder", targetNamespace = "http://tempuri.org/") + WebReservationOrder oWebReservationOrder + ); + + @WebMethod(operationName = "HelloWorld", action = "http://tempuri.org/HelloWorld") + @RequestWrapper(localName = "HelloWorld", targetNamespace = "http://tempuri.org/", className = "HelloWorld") + @ResponseWrapper(localName = "HelloWorldResponse", targetNamespace = "http://tempuri.org/", className = "HelloWorldResponse") + @WebResult(name = "HelloWorldResult", targetNamespace = "http://tempuri.org/") + String helloWorld(); + + @WebMethod(operationName = "ReceiveMESScanItemList", action = "http://tempuri.org/ReceiveMESScanItemList") + @RequestWrapper(localName = "ReceiveMESScanItemList", targetNamespace = "http://tempuri.org/", className = "ReceiveMESScanItemList") + @ResponseWrapper(localName = "ReceiveMESScanItemListResponse", targetNamespace = "http://tempuri.org/", className = "ReceiveMESScanItemListResponse") + @WebResult(name = "ReceiveMESScanItemListResult", targetNamespace = "http://tempuri.org/") + WSResponse receiveMESScanItemList( + + @WebParam(name = "oMESScanItemList", targetNamespace = "http://tempuri.org/") + ArrayOfWebServiceSendItem oMESScanItemList + ); + + @WebMethod(operationName = "DeliOrderDelete", action = "http://tempuri.org/DeliOrderDelete") + @RequestWrapper(localName = "DeliOrderDelete", targetNamespace = "http://tempuri.org/", className = "DeliOrderDelete") + @ResponseWrapper(localName = "DeliOrderDeleteResponse", targetNamespace = "http://tempuri.org/", className = "DeliOrderDeleteResponse") + @WebResult(name = "DeliOrderDeleteResult", targetNamespace = "http://tempuri.org/") + WSResponse deliOrderDelete( + + @WebParam(name = "sFactoryCode", targetNamespace = "http://tempuri.org/") + String sFactoryCode, + @WebParam(name = "sStockRecord", targetNamespace = "http://tempuri.org/") + String sStockRecord + ); +} diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java new file mode 100644 index 0000000..b3a7987 --- /dev/null +++ b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java @@ -0,0 +1,37 @@ +package org.jeecg.modules.wms.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.aspect.annotation.ApiLog; +import org.jeecg.common.constant.ApiLogCategoryEnum; +import org.jeecg.modules.wms.dto.WSResponse; +import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; +import org.jeecg.modules.wms.service.MESWebServiceSoap; +import org.springframework.stereotype.Service; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + + +@Slf4j +@Service +@WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.MESWebServiceSoap") +public class MESWebServiceSoapImpl implements MESWebServiceSoap { + + @Override + @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList") + @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList") + @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse") + @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/") + @ApiLog(apiName = "鎺ユ敹WMS鐨勭Щ搴撲俊鎭�(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS) + public WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request) { + log.error("11111111111"); + WSResponse response = new WSResponse(); + response.setErrorCode("-1"); + response.setErrorDesc("鎴戞椂缁撴灉闆�"); + return response; + } +} diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java deleted file mode 100644 index 12e4d51..0000000 --- a/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.jeecg.modules.wms.service.impl; - -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.aspect.annotation.ApiLog; -import org.jeecg.common.constant.ApiLogCategoryEnum; -import org.jeecg.modules.wms.dto.ReceiveMESScanItemListResponse; -import org.jeecg.modules.wms.request.ReceiveMESScanItemList; -import org.jeecg.modules.wms.service.ReceiveWMSScanItemListService; - -import javax.jws.WebService; - - -@Slf4j -@WebService(name = "ReceiveWMSScanItemListService", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.ReceiveWMSScanItemListService") -public class ReceiveWMSScanItemListServiceImpl implements ReceiveWMSScanItemListService { - - @Override - @ApiLog(apiName = "鎺ユ敹WMS鐨勭Щ搴撲俊鎭�(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS) - public ReceiveMESScanItemListResponse receiveWMSScanItemList(ReceiveMESScanItemList request) { - return new ReceiveMESScanItemListResponse(); - } -} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 84dc636..c83b1ec 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -7,7 +7,7 @@ include-stacktrace: ALWAYS include-message: ALWAYS servlet: - context-path: /jeecg-boot + context-path: compression: enabled: true min-response-size: 1024 @@ -126,7 +126,7 @@ connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: - url: jdbc:sqlserver://192.168.1.118:1433;databasename=LXZN_TEST_XHJ;nullCatalogMeansCurrent=true + url: jdbc:sqlserver://192.168.0.118:1433;databasename=LXZN_TEST_XHJ;nullCatalogMeansCurrent=true username: sa password: 123 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver diff --git a/src/main/resources/wsdl/WebService.asmx.wsdl b/src/main/resources/wsdl/WebService.asmx.wsdl new file mode 100644 index 0000000..2800121 --- /dev/null +++ b/src/main/resources/wsdl/WebService.asmx.wsdl @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="utf-8"?> +<wsdl:definitions xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> + <wsdl:types> + <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"> + <s:element name="ReceiveMESScanItemList"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="oMESScanItemList" type="tns:ArrayOfWebServiceSendItem" /> + </s:sequence> + </s:complexType> + </s:element> + <s:complexType name="ArrayOfWebServiceSendItem"> + <s:sequence> + <s:element minOccurs="0" maxOccurs="unbounded" name="WebServiceSendItem" nillable="true" type="tns:WebServiceSendItem" /> + </s:sequence> + </s:complexType> + <s:complexType name="WebServiceSendItem"> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="FactoryCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="SkuCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="Align" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="Pallet" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="PackageNo" type="s:string" /> + <s:element minOccurs="1" maxOccurs="1" name="TrackLot" type="s:long" /> + <s:element minOccurs="1" maxOccurs="1" name="Series" type="s:long" /> + <s:element minOccurs="0" maxOccurs="1" name="MesStockID" type="s:string" /> + <s:element minOccurs="1" maxOccurs="1" name="Quantity" type="s:decimal" /> + <s:element minOccurs="0" maxOccurs="1" name="SapTrackLot" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="Section" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="DestSection" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="SupplierCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="SupplierTrackLot" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="StageID" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="Remark" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="OrderCode" type="s:string" /> + </s:sequence> + </s:complexType> + <s:element name="ReceiveMESScanItemListResponse"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="ReceiveMESScanItemListResult" type="tns:WSResponse" /> + </s:sequence> + </s:complexType> + </s:element> + <s:complexType name="WSResponse"> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="ErrorCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="ErrorDesc" type="s:string" /> + </s:sequence> + </s:complexType> + <s:element name="DeliOrderDelete"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="sFactoryCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="sStockRecord" type="s:string" /> + </s:sequence> + </s:complexType> + </s:element> + <s:element name="DeliOrderDeleteResponse"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="DeliOrderDeleteResult" type="tns:WSResponse" /> + </s:sequence> + </s:complexType> + </s:element> + <s:element name="ReceiveReservation"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="oWebReservationOrder" type="tns:WebReservationOrder" /> + </s:sequence> + </s:complexType> + </s:element> + <s:complexType name="WebReservationOrder"> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="FactoryCode" type="s:string" /> + <s:element minOccurs="0" maxOccurs="1" name="ReservationOrder" type="s:string" /> + <s:element minOccurs="1" maxOccurs="1" name="Total" type="s:decimal" /> + </s:sequence> + </s:complexType> + <s:element name="ReceiveReservationResponse"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="ReceiveReservationResult" type="tns:WSResponse" /> + </s:sequence> + </s:complexType> + </s:element> + <s:element name="HelloWorld"> + <s:complexType /> + </s:element> + <s:element name="HelloWorldResponse"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" /> + </s:sequence> + </s:complexType> + </s:element> + </s:schema> + </wsdl:types> + <wsdl:message name="ReceiveMESScanItemListSoapIn"> + <wsdl:part name="parameters" element="tns:ReceiveMESScanItemList" /> + </wsdl:message> + <wsdl:message name="ReceiveMESScanItemListSoapOut"> + <wsdl:part name="parameters" element="tns:ReceiveMESScanItemListResponse" /> + </wsdl:message> + <wsdl:message name="DeliOrderDeleteSoapIn"> + <wsdl:part name="parameters" element="tns:DeliOrderDelete" /> + </wsdl:message> + <wsdl:message name="DeliOrderDeleteSoapOut"> + <wsdl:part name="parameters" element="tns:DeliOrderDeleteResponse" /> + </wsdl:message> + <wsdl:message name="ReceiveReservationSoapIn"> + <wsdl:part name="parameters" element="tns:ReceiveReservation" /> + </wsdl:message> + <wsdl:message name="ReceiveReservationSoapOut"> + <wsdl:part name="parameters" element="tns:ReceiveReservationResponse" /> + </wsdl:message> + <wsdl:message name="HelloWorldSoapIn"> + <wsdl:part name="parameters" element="tns:HelloWorld" /> + </wsdl:message> + <wsdl:message name="HelloWorldSoapOut"> + <wsdl:part name="parameters" element="tns:HelloWorldResponse" /> + </wsdl:message> + <wsdl:portType name="WebServiceSoap"> + <wsdl:operation name="ReceiveMESScanItemList"> + <wsdl:input message="tns:ReceiveMESScanItemListSoapIn" /> + <wsdl:output message="tns:ReceiveMESScanItemListSoapOut" /> + </wsdl:operation> + <wsdl:operation name="DeliOrderDelete"> + <wsdl:input message="tns:DeliOrderDeleteSoapIn" /> + <wsdl:output message="tns:DeliOrderDeleteSoapOut" /> + </wsdl:operation> + <wsdl:operation name="ReceiveReservation"> + <wsdl:input message="tns:ReceiveReservationSoapIn" /> + <wsdl:output message="tns:ReceiveReservationSoapOut" /> + </wsdl:operation> + <wsdl:operation name="HelloWorld"> + <wsdl:input message="tns:HelloWorldSoapIn" /> + <wsdl:output message="tns:HelloWorldSoapOut" /> + </wsdl:operation> + </wsdl:portType> + <wsdl:binding name="WebServiceSoap" type="tns:WebServiceSoap"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> + <wsdl:operation name="ReceiveMESScanItemList"> + <soap:operation soapAction="http://tempuri.org/ReceiveMESScanItemList" style="document" /> + <wsdl:input> + <soap:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="DeliOrderDelete"> + <soap:operation soapAction="http://tempuri.org/DeliOrderDelete" style="document" /> + <wsdl:input> + <soap:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="ReceiveReservation"> + <soap:operation soapAction="http://tempuri.org/ReceiveReservation" style="document" /> + <wsdl:input> + <soap:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="HelloWorld"> + <soap:operation soapAction="http://tempuri.org/HelloWorld" style="document" /> + <wsdl:input> + <soap:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap:body use="literal" /> + </wsdl:output> + </wsdl:operation> + </wsdl:binding> + <wsdl:binding name="WebServiceSoap12" type="tns:WebServiceSoap"> + <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> + <wsdl:operation name="ReceiveMESScanItemList"> + <soap12:operation soapAction="http://tempuri.org/ReceiveMESScanItemList" style="document" /> + <wsdl:input> + <soap12:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap12:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="DeliOrderDelete"> + <soap12:operation soapAction="http://tempuri.org/DeliOrderDelete" style="document" /> + <wsdl:input> + <soap12:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap12:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="ReceiveReservation"> + <soap12:operation soapAction="http://tempuri.org/ReceiveReservation" style="document" /> + <wsdl:input> + <soap12:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap12:body use="literal" /> + </wsdl:output> + </wsdl:operation> + <wsdl:operation name="HelloWorld"> + <soap12:operation soapAction="http://tempuri.org/HelloWorld" style="document" /> + <wsdl:input> + <soap12:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap12:body use="literal" /> + </wsdl:output> + </wsdl:operation> + </wsdl:binding> + <wsdl:service name="WebService"> + <wsdl:port name="WebServiceSoap" binding="tns:WebServiceSoap"> + <soap:address location="http://10.101.0.182:8002/MesWebService/WebService.asmx" /> + </wsdl:port> + <wsdl:port name="WebServiceSoap12" binding="tns:WebServiceSoap12"> + <soap12:address location="http://10.101.0.182:8002/MesWebService/WebService.asmx" /> + </wsdl:port> + </wsdl:service> +</wsdl:definitions> \ No newline at end of file -- Gitblit v1.9.3