diff --git a/modules/erp/bin/deploy.bat b/modules/erp/bin/deploy.bat new file mode 100644 index 00000000..ddf7d883 --- /dev/null +++ b/modules/erp/bin/deploy.bat @@ -0,0 +1,22 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [信息] 部署工程到Maven服务器。 +echo. + +%~d0 +cd %~dp0 + +call mvn -v +echo. + +cd .. +call mvn clean deploy -Dmaven.test.skip=true -Pdeploy + +cd bin +pause \ No newline at end of file diff --git a/modules/erp/bin/deploy.sh b/modules/erp/bin/deploy.sh new file mode 100644 index 00000000..f8696c71 --- /dev/null +++ b/modules/erp/bin/deploy.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# */ +echo "" +echo "[淇℃伅] 閮ㄧ讲宸ョ▼鍒癕aven鏈嶅姟鍣ㄣ" +echo "" + +mvn -v +echo "" + +cd .. +mvn clean deploy -Dmaven.test.skip=true -Pdeploy + +cd bin \ No newline at end of file diff --git a/modules/erp/bin/package.bat b/modules/erp/bin/package.bat new file mode 100644 index 00000000..09f2d0e4 --- /dev/null +++ b/modules/erp/bin/package.bat @@ -0,0 +1,22 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [信息] 打包安装工程,生成jar包文件。 +echo. + +%~d0 +cd %~dp0 + +call mvn -v +echo. + +cd .. +call mvn clean install -Dmaven.test.skip=true -Ppackage + +cd bin +pause \ No newline at end of file diff --git a/modules/erp/bin/package.sh b/modules/erp/bin/package.sh new file mode 100644 index 00000000..8deff508 --- /dev/null +++ b/modules/erp/bin/package.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# */ +echo "" +echo "[淇℃伅] 鎵撳寘瀹夎宸ョ▼锛岀敓鎴恓ar鍖呮枃浠躲" +echo "" + +mvn -v +echo "" + +cd .. +mvn clean install -Dmaven.test.skip=true -Ppackage + +cd bin \ No newline at end of file diff --git a/modules/erp/db/erp.erm b/modules/erp/db/erp.erm new file mode 100644 index 00000000..b828a6ad --- /dev/null +++ b/modules/erp/db/erp.erm @@ -0,0 +1,3590 @@ + + + + true + 100 + A4 210 x 297 mm + 30 + 30 + 30 + 30 + + 0 + 1.0 + 0 + 0 + + 128 + 128 + 192 + + + 255 + 255 + 255 + + Arial + 14 + + StandardSQL + false + + + 0 + true + 2 + 1 + 1 + false + true + false + false + + + db/erp.sql + UTF-8 + CR+LF + false + 7be191506f9daa8070b3ac14921dffd44063d2bb + null + + true + false + true + false + true + false + false + false + false + false + false + false + false + false + false + true + false + true + false + false + + + + + null + db/erp.xls + + + en + + true + true + true + + + + true + true + true + + + db/erp.png + + true + true + + + + + + + false + + + + + 0 + + + + false + false + + + + + false + + + + + + -1 + -1 + Arial + 14 + 50 + 50 + + 255 + 255 + 255 + + + + false + 2016-12-25 17:25:00 + + Project Name + + + + Model Name + + + + Version + + + + Company + + + + Author + + + + + + + + + 7be191506f9daa8070b3ac14921dffd44063d2bb + Default + + + + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + 64 + null + false + null + false + false + false + + false + 绉熸埛浠g爜 + 绉熸埛浠g爜 + corp_code + varchar(n) + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + 100 + null + false + null + false + false + false + + false + 绉熸埛鍚嶇О + 绉熸埛鍚嶇О + corp_name + nvarchar(n) + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + 64 + null + false + null + false + false + false + + false + + 鍒涘缓鑰 + create_by + varchar(n) + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + null + null + false + null + false + false + false + + false + + 鍒涘缓鏃堕棿 + create_date + datetime + + + f01926071736b56b898949cc0720149c71504324 + null + null + false + null + false + false + false + + false + + 鎵╁睍 Date 1 + extend_d1 + datetime + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + null + null + false + null + false + false + false + + false + + 鎵╁睍 Date 2 + extend_d2 + datetime + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + null + null + false + null + false + false + false + + false + + 鎵╁睍 Date 3 + extend_d3 + datetime + + + c8d21e24bc69aac295703b0bae56269035b729f0 + null + null + false + null + false + false + false + + false + + 鎵╁睍 Date 4 + extend_d4 + datetime + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 19 + 4 + false + null + false + false + false + + false + + 鎵╁睍 Float 1 + extend_f1 + decimal(p,s) + + + 2e958c528620621985af4394590198feed57cdf9 + 19 + 4 + false + null + false + false + false + + false + + 鎵╁睍 Float 2 + extend_f2 + decimal(p,s) + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 19 + 4 + false + null + false + false + false + + false + + 鎵╁睍 Float 3 + extend_f3 + decimal(p,s) + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 19 + 4 + false + null + false + false + false + + false + + 鎵╁睍 Float 4 + extend_f4 + decimal(p,s) + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 19 + null + false + null + false + false + false + + false + + 鎵╁睍 Integer 1 + extend_i1 + decimal(p) + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + 19 + null + false + null + false + false + false + + false + + 鎵╁睍 Integer 2 + extend_i2 + decimal(p) + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 19 + null + false + null + false + false + false + + false + + 鎵╁睍 Integer 3 + extend_i3 + decimal(p) + + + 53d8c730fcec69d341f44089817ae06eb4844278 + 19 + null + false + null + false + false + false + + false + + 鎵╁睍 Integer 4 + extend_i4 + decimal(p) + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 1000 + null + false + null + false + false + false + + false + + 鎵╁睍 JSON + extend_json + varchar(n) + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 1 + extend_s1 + nvarchar(n) + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 2 + extend_s2 + nvarchar(n) + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 3 + extend_s3 + nvarchar(n) + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 4 + extend_s4 + nvarchar(n) + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 5 + extend_s5 + nvarchar(n) + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 6 + extend_s6 + nvarchar(n) + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 7 + extend_s7 + nvarchar(n) + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 500 + null + false + null + false + false + false + + false + + 鎵╁睍 String 8 + extend_s8 + nvarchar(n) + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 64 + null + false + null + false + false + false + + false + + 缂栧彿 + id + varchar(n) + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 64 + null + false + null + false + false + false + + false + + 鐖剁骇缂栧彿 + parent_code + varchar(n) + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + 767 + null + false + null + false + false + false + + false + + 鎵鏈夌埗绾х紪鍙 + parent_codes + varchar(n) + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 500 + null + false + null + false + false + false + + false + + 澶囨敞淇℃伅 + remarks + nvarchar(n) + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 1 + null + false + null + false + false + false + + false + + 鐘舵侊紙0姝e父 1鍒犻櫎 2鍋滅敤 3鍐荤粨 4瀹℃牳 5椹冲洖 9鑽夌ǹ锛 + status + character(n) + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + 1 + null + false + null + false + false + false + + false + + 鐘舵侊紙0姝e父 1鍒犻櫎 2鍋滅敤锛 + status + character(n) + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 64 + null + false + null + false + false + false + + false + + 鍖哄煙閫夋嫨 + test_area_code + varchar(n) + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 100 + null + false + null + false + false + false + + false + + 鍖哄煙鍚嶇О + test_area_name + nvarchar(n) + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 200 + null + false + null + false + false + false + + false + + 澶嶉夋 + test_checkbox + varchar(n) + + + d829e707316a49d39e5a11da5f5d36030a856b86 + 64 + null + false + null + false + false + false + + false + + 鐖惰〃涓婚敭 + test_data_id + varchar(n) + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + null + null + false + null + false + false + false + + false + + 鏃ユ湡閫夋嫨 + test_date + datetime + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + null + null + false + null + false + false + false + + false + + 鏃ユ湡鏃堕棿 + test_datetime + datetime + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 200 + null + false + null + false + false + false + + false + + 鍗曡鏂囨湰 + test_input + varchar(n) + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 64 + null + false + null + false + false + false + + false + + 鏈烘瀯閫夋嫨 + test_office_code + varchar(n) + + + 791691b791efedc2d14867a152b4de58f4567326 + 10 + null + false + null + false + false + false + + false + + 鍗曢夋 + test_radio + varchar(n) + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 10 + null + false + null + false + false + false + + false + + 涓嬫媺妗 + test_select + varchar(n) + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 200 + null + false + null + false + false + false + + false + + 涓嬫媺澶氶 + test_select_multiple + varchar(n) + + + ae103dc1fb50094552e56afd72015481271913db + null + null + false + null + false + false + false + + false + + 鎺掑簭鍙 + test_sort + integer + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 200 + null + false + null + false + false + false + + false + + 澶氳鏂囨湰 + test_textarea + nvarchar(n) + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 64 + null + false + null + false + false + false + + false + + 鐢ㄦ埛閫夋嫨 + test_user_code + varchar(n) + + + 70e9482ae432d16e734a730100e366ddab33564c + 64 + null + false + null + false + false + false + + false + + 鑺傜偣缂栫爜 + tree_code + varchar(n) + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + 1 + null + false + null + false + false + false + + false + + 鏄惁鏈鏈骇 + tree_leaf + character(n) + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + 4 + null + false + null + false + false + false + + false + + 灞傛绾у埆 + tree_level + decimal(p) + + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 200 + null + false + null + false + false + false + + false + + 鑺傜偣鍚嶇О + tree_name + nvarchar(n) + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 767 + null + false + null + false + false + false + + false + + 鍏ㄨ妭鐐瑰悕 + tree_names + varchar(n) + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 10 + null + false + null + false + false + false + + false + + 鎺掑簭鍙凤紙鍗囧簭锛 + tree_sort + decimal(p) + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 767 + null + false + null + false + false + false + + false + + 鎵鏈夋帓搴忓彿 + tree_sorts + varchar(n) + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + 64 + null + false + null + false + false + false + + false + + 鏇存柊鑰 + update_by + varchar(n) + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + null + null + false + null + false + false + false + + false + + 鏇存柊鏃堕棿 + update_date + datetime + + + + + + + e553474c37270813e70025e433a4cf8a64653e13 + 438 + 387 + Arial + 14 + 864 + 36 + + 128 + 128 + 192 + + + + test_tree + 娴嬭瘯鏍戣〃 + + + + + + + 70e9482ae432d16e734a730100e366ddab33564c + 7e417ee9d0dd69c767a5853922621946ed4fb2d8 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 39f501890586173d229e83610cfbfaa6e3a85374 + + + + + nvarchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + + + + 5435ef11ea53f170fe3491b199c113e47932e175 + 401 + 320 + Arial + 14 + 36 + 36 + + 128 + 128 + 192 + + + + test_data + 娴嬭瘯鏁版嵁 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + d82778c36626013cd39fd790da6f55a9762f0c76 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 3e14b40dc07c134329a40752973acfad2ffdc48b + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 8050d948828b16267482e9e3716219321f206b81 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 3664605e054c39531ca8e91aa4463c955a993357 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + f7b189ecdc92c78bfaae9c736318ab6a5aedd396 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 6e4837ab55b592669ccc7ebfc8b1ed96a00607b3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 9fb81bdc12ed017f62e9dd4529025e536eff7f08 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 9d9478798ed2766a81b0e5a8a022eb89d9c5cc34 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + c131dc5cb7ce6f1aa5e8d5f86f2002c8ae1bb8f6 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + cfe3c330968a9a824c2cf933b227887d3e9615ac + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 23041cb30875514136904ea11043c7ea1924f048 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + b6d5dc8745c0fa484ed6f14e90a42282ca1b285d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + d244401ff7302bb5b75092016531952d093b238b + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + + + + 5a836e654b7b7d19f102e87336fefa079d98a2e6 + 438 + 346 + Arial + 14 + 468 + 36 + + 128 + 128 + 192 + + + + test_data_child + 娴嬭瘯鏁版嵁瀛愯〃 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 34477707bcf8a7810e12e9565aff085f6fb1e0ad + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ae103dc1fb50094552e56afd72015481271913db + ec8a047dffe3cf2e4d95ba3e26c3bac0382d95c9 + + + + + integer + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + d829e707316a49d39e5a11da5f5d36030a856b86 + b095c44611ed08156277676d9a3a0ce52b9b05ef + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 78715aa66a10a9b190ad69b8ed792e9a2f4946e3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 693f8af2fe6cf45255b6f2bc7e9077f3630c3dd8 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 04216c384533b70b8e86b571fa2beef7157bab5a + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 0b6f63094be90aa8674460cce26be10327827ceb + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 363e8cfcf4a6b228e656decadacba29280906555 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 7875aa5fee3d6f9587180fb8fce9343a56cdc34e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 61c49a2f7807c55c8f85110c30889d5b403e4b04 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + b91171b99f3628aadb0e6986fbfa30cc547b280e + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 9f33d190101e56f93f5ece0fd7c5cdda3e704b4c + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 16121b5aa08fc170883408ec2d0487281a132d9d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 1afc7f146271f5c90ea811aa24c08ce25d12552e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 343f0db997b913f299b0496c4306d3617ad708de + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + + + + + + 845c82ebd869d5620b1ef2c2b6f438b11a045082 + BaseEntity + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 02ecedc0de5850cba25bc91919ed39d414b74111 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 2fe6a36385238c1b21c76deae00a7afa00ff5538 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + ea920cba2fe0eaee64a2310ece7cda4b198b37ec + BaseEntityCorp + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + b8ea4b73d6d32a222e5abfd453287575ae518480 + + + + + varchar(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + b94f5fe344185c40739cf93d1090686001bb11e0 + + + + + nvarchar(n) + + JeeSite + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + DataEntity + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + f0036584bd8711715579d21994a0105935605a7e + + + + + character(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + c391a15752a8eb58bc558a39d1b431f7ee125e0e + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + e2e82ba86e15fd67397355e711255b1625078ae1 + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + fd0546fc2d4e01c35dcbc23913add68a99fabd73 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + f8ea4fc4a778a0b94398a661a1ed8608f0e8d28d + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 69e01b6d4f42df40a09540ef4ba10ed8e006abaa + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 85024a2953cf3e3c9c1cce49b2351853ab0d125b + DataEntityNoStatus + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + e5355faba5ec3c9128507dd4c48ea9230631cf83 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + 6bed374c39d181003a4f92d76d79a4119176ba0c + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + f9db19bb567760bbdd554d75bbfdc891c89f9da9 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + ee78b079f7d319bf8119fd01439cd97424ff49fa + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + f7b88ecec0ef386bb384c228842a7587432112fb + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 118dab95fc1f792cd468b9f66af2d4fabd98c39b + ExtendEntity + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 6ccadddab6ce48441ca7abd798cda6f3debf4a0c + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 93ab0ba3b47b01934614dbd3e572358c9f99e6ea + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + a78c7961910a5e697027d1a3530b1afaa8ea8c94 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 40085364ec7a58653e96f8659aadd258d7556bc7 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 9787d7fe93ee31c5b4979fd620ff6e4b2777eccf + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 95c55b81b7e9e1a9bb01aa3d88fb90c648641c4e + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 16f44dfc7964796f109293bc49afd58dcb4eec1f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 39b1dffa083f74afc30df621845cf7f0ed71394f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 7584cc6360ae7edc99e1f619042eba5865b2c4c7 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + f0b5383e05c6b3f6e5f65b33b33009826c83d014 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 260d5f31009fff18000d1e64f4f877926e621306 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 53d8c730fcec69d341f44089817ae06eb4844278 + a83144f40e7ae64e46a4b4ed651379774a953b17 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 2a5203a275171a250870cf6cb224a910aa9354ec + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2e958c528620621985af4394590198feed57cdf9 + 3ef5bd65a7dcd74b9a9d8a292ec395f66b7de32b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 01d0849bdda56a8d8f24befdadc3fc9b007ae92b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 1c8ed63d72f40f0fe2f05815675771bdf3f824f8 + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f01926071736b56b898949cc0720149c71504324 + 2b49e875138bfb329aaa352629650b7881435123 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + 5c6ec16226d85b0411b7077cb9a6e0c7aa8d74d1 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + d92b8f7fa7a2be49c7f00c447a603b136e84261d + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c8d21e24bc69aac295703b0bae56269035b729f0 + 095a76f07a3cd2bdc6cc442757c11012e1974f4a + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 42c5d8f490f69b93e77698efa030ca23988ae696 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + TreeEntity + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 394369b90c0a5b6efeed3cf823c642605d7a1653 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + e8d877396943acfec73023dba2c1c6e3d7802d62 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 23f973124aedd0244533f4e7b3b103c548b966be + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 984d5eac2b3221118a61655e4a5a49c78e0f0151 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + b2f246a3f0ade317eaa9915e2fd539abae5a5ec8 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + f5a9968479420f08da2e98d21136b3ed4b6e396f + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 618194ebfc8c6c42efcef3a4af0b8054f6af209b + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/erp/pom.xml b/modules/erp/pom.xml new file mode 100644 index 00000000..f3a9856f --- /dev/null +++ b/modules/erp/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + + com.jeesite + jeesite-parent + 5.14.0.springboot3-SNAPSHOT + ../../parent/pom.xml + + + jeesite-module-erp + jar + + JeeSite Module 璐㈠姟绠$悊 + http://jeesite.com + 2013-Now + + + + + + com.jeesite + jeesite-module-core + ${project.parent.version} + + + + + + + thinkgem + WangZhen + thinkgem at 163.com + Project lead + +8 + + + + + JeeSite + http://jeesite.com + + + \ No newline at end of file diff --git a/modules/erp/src/main/resources/application-assistant.yml b/modules/erp/src/main/resources/application-assistant.yml new file mode 100644 index 00000000..3cb6c771 --- /dev/null +++ b/modules/erp/src/main/resources/application-assistant.yml @@ -0,0 +1,12 @@ + +## 閲嶈鎻愮ず锛圱ip锛夛細 + +## 璇峰嬁鍦ㄨ閰嶇疆鏂囦欢涓坊鍔犲叾瀹冧换浣曢厤缃紙娣诲姞涔熶笉浼氱敓鏁堬級銆 +## 璇ユ枃浠讹紝浠呬粎鏄负浜嗚 jeesite-erp.yml 鏂囦欢锛 +## 鍦 IDEA 涓湁涓涓嚜鍔ㄥ畬鎴愬強甯姪鎻愮ず锛屽苟鏃犲叾瀹冪敤鎰忋 +## 鍙傛暟閰嶇疆璇峰湪 jeesite-bpm.yml 鏂囦欢涓坊鍔犮 + +spring: + config: + import: + - classpath:config/jeesite-erp.yml \ No newline at end of file diff --git a/modules/erp/src/main/resources/config/jeesite-erp.yml b/modules/erp/src/main/resources/config/jeesite-erp.yml new file mode 100644 index 00000000..353bfe2d --- /dev/null +++ b/modules/erp/src/main/resources/config/jeesite-erp.yml @@ -0,0 +1,4 @@ +# 娓╅Θ鎻愮ず锛氫笉寤鸿鐩存帴淇敼姝ゆ枃浠讹紝涓轰簡骞冲彴鍗囩骇鏂逛究锛屽缓璁皢闇瑕佷慨鏀圭殑鍙傛暟鍊硷紝澶嶅埗鍒癮pplication.yml閲岃繘琛岃鐩栬鍙傛暟鍊笺 + +#erp: +# enabled: true \ No newline at end of file diff --git a/modules/erp/src/main/resources/db/upgrade/erp/versions b/modules/erp/src/main/resources/db/upgrade/erp/versions new file mode 100644 index 00000000..5d4f567e --- /dev/null +++ b/modules/erp/src/main/resources/db/upgrade/erp/versions @@ -0,0 +1 @@ +5.14.0 \ No newline at end of file diff --git a/modules/pom.xml b/modules/pom.xml index 66bd71ec..5ac42408 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -1,40 +1,43 @@ - 4.0.0 - - com.jeesite - jeesite-modules - 5.14.0.springboot3-SNAPSHOT - pom - - JeeSite Modules - http://jeesite.com - 2013-Now - - - ai - app - cms - core - static - test - biz - - - - - thinkgem - WangZhen - thinkgem at 163.com - Project lead - +8 - - - - - JeeSite - http://jeesite.com - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + com.jeesite + jeesite-modules + 5.14.0.springboot3-SNAPSHOT + pom + + JeeSite Modules + http://jeesite.com + 2013-Now + + + ai + app + cms + core + static + test + biz + erp + + + + + thinkgem + WangZhen + thinkgem at 163.com + + Project lead + + +8 + + + + + JeeSite + http://jeesite.com + + diff --git a/web-api/pom.xml b/web-api/pom.xml index 620f7565..19d1af86 100644 --- a/web-api/pom.xml +++ b/web-api/pom.xml @@ -1,167 +1,154 @@ - 4.0.0 - - - com.jeesite - jeesite-parent - 5.14.0.springboot3-SNAPSHOT - ../parent/pom.xml - - - jeesite-web-api - war - - 涓撲负鍒嗙绔彁渚涙帴鍙f湇鍔★紝鍏抽棴鍐呯疆鐧诲綍椤靛拰涓绘鏋堕〉瑙嗗浘 - - JeeSite Web Api - http://jeesite.com - 2013-Now - - - - web - com.jeesite.modules.ApiApplication + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - - 8980:8980 - - + + com.jeesite + jeesite-parent + 5.14.0.springboot3-SNAPSHOT + ../parent/pom.xml + - - - - - com.jeesite - jeesite-module-core - ${project.parent.version} - + jeesite-web-api + jar - - - com.jeesite - jeesite-module-test - ${project.parent.version} - + 涓撲负鍒嗙绔彁渚涙帴鍙f湇鍔★紝鍏抽棴鍐呯疆鐧诲綍椤靛拰涓绘鏋堕〉瑙嗗浘 - - - com.jeesite - jeesite-module-swagger - ${project.parent.version} - + JeeSite Web Api + http://jeesite.com + 2013-Now - - - com.jeesite - jeesite-module-cms - ${project.parent.version} - + - - - com.jeesite - jeesite-module-app - ${project.parent.version} - - - - - + web + com.jeesite.modules.ApiApplication - + + 8980:8980 - - - - ${finalName} - - - - - - org.springframework.boot - spring-boot-maven-plugin - - true - - + + + + + + + com.jeesite + jeesite-module-core + ${project.parent.version} + + + + + com.jeesite + jeesite-module-test + ${project.parent.version} + + + + + com.jeesite + jeesite-module-swagger + ${project.parent.version} + + + + + com.jeesite + jeesite-module-cms + ${project.parent.version} + + + + + com.jeesite + jeesite-module-app + ${project.parent.version} + + + + + + bizWorker + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + + org.apache.maven.plugins + maven-war-plugin + + ${finalName} + + + + + + org.apache.maven.plugins + maven-eclipse-plugin + + ${finalName} + + + + + + + + + thinkgem + WangZhen + thinkgem at 163.com + + Project lead + + +8 + + + + + JeeSite + http://jeesite.com + + + + + aliyun-repos + https://maven.aliyun.com/repository/public + + true + + + false + + + + jeesite-repos + https://maven.jeesite.net/repository/maven-public + + + + + aliyun-repos + https://maven.aliyun.com/repository/public + + true + + + false + + + + jeesite-repos + https://maven.jeesite.net/repository/maven-public + + - - - org.apache.maven.plugins - maven-war-plugin - - ${finalName} - - - - - - org.apache.maven.plugins - maven-eclipse-plugin - - ${finalName} - - - - - - - - - thinkgem - WangZhen - thinkgem at 163.com - Project lead - +8 - - - - - JeeSite - http://jeesite.com - - - - - aliyun-repos - https://maven.aliyun.com/repository/public - true - false - - - jeesite-repos - https://maven.jeesite.net/repository/maven-public - - - - - aliyun-repos - https://maven.aliyun.com/repository/public - true - false - - - jeesite-repos - https://maven.jeesite.net/repository/maven-public - - - diff --git a/web-api/src/main/java/com/jeesite/modules/ApiApplication.java b/web-api/src/main/java/com/jeesite/modules/ApiApplication.java index 60bec9a3..d0cf5073 100644 --- a/web-api/src/main/java/com/jeesite/modules/ApiApplication.java +++ b/web-api/src/main/java/com/jeesite/modules/ApiApplication.java @@ -4,6 +4,9 @@ */ package com.jeesite.modules; +import com.jeesite.common.config.Global; +import com.jeesite.common.io.FileUtils; +import com.jeesite.modules.utils.IpUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; @@ -11,19 +14,20 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer /** * Application + * * @author ThinkGem */ @SpringBootApplication public class ApiApplication extends SpringBootServletInitializer { - - public static void main(String[] args) { - SpringApplication.run(ApiApplication.class, args); - } - - @Override - protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { - this.setRegisterErrorPageFilter(false); - return builder.sources(ApiApplication.class); - } - + + public static void main(String[] args) { + SpringApplication.run(ApiApplication.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { + this.setRegisterErrorPageFilter(false); + return builder.sources(ApiApplication.class); + } + } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCities.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCities.java index 2523ac88..876cb815 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCities.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizCities.java @@ -48,7 +48,7 @@ import java.io.Serial; columns = { @Column(name = "province_name", attrName = "provinceName", label = "鐪佷唤鍚嶇О"), }), -}, orderBy = "a.id DESC" +}, orderBy = "a.create_time DESC" ) @Data public class BizCities extends DataEntity implements Serializable { diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java index b11ca930..5493cfca 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizListItem.java @@ -2,9 +2,12 @@ package com.jeesite.modules.biz.entity; import java.io.Serializable; import java.util.Date; + import com.jeesite.common.mybatis.annotation.JoinTable; import com.jeesite.common.mybatis.annotation.JoinTable.Type; import com.fasterxml.jackson.annotation.JsonFormat; +import com.jeesite.modules.sys.entity.User; +import com.jeesite.modules.sys.utils.UserUtils; import jakarta.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -23,88 +26,94 @@ import java.io.Serial; /** * 閫氱煡鍒楄〃椤硅〃Entity + * * @author gaoxq * @version 2025-11-26 */ @EqualsAndHashCode(callSuper = true) -@Table(name="biz_list_item", alias="a", label="閫氱煡鍒楄〃椤硅〃淇℃伅", columns={ - @Column(name="create_time", attrName="createTime", label="鍒涘缓鏃堕棿", isUpdate=false, isUpdateForce=true), - @Column(name="id", attrName="id", label="鍞竴鏍囪瘑", isPK=true), - @Column(name="avatar", attrName="avatar", label="澶村儚鍥炬爣", isQuery=false), - @Column(name="title", attrName="title", label="閫氱煡鏍囬", queryType=QueryType.LIKE), - @Column(name="title_delete", attrName="titleDelete", label="鏄惁鍒犻櫎", isQuery=false), - @Column(name="datetime", attrName="datetime", label="鍙戦佹椂闂", isQuery=false), - @Column(name="type", attrName="type", label="绫诲瀷鏍囪瘑"), - @Column(name="read_flag", attrName="readFlag", label="鏄惁宸茶"), - @Column(name="description", attrName="description", label="鎻忚堪淇℃伅", isQuery=false), - @Column(name="click_close", attrName="clickClose", label="鏄惁鍏抽棴"), - @Column(name="extra", attrName="extra", label="寰呭姙鐘舵"), - @Column(name="color", attrName="color", label="棰滆壊鍊", isQuery=false), - @Column(name="update_time", attrName="updateTime", label="鏇存柊鏃堕棿", isQuery=false), - @Column(name="f_tenant_id", attrName="ftenantId", label="绉熸埛id", isUpdate=false, isQuery=false), - @Column(name="f_flow_id", attrName="fflowId", label="娴佺▼id", isUpdate=false, isQuery=false), - @Column(name="f_flow_task_id", attrName="fflowTaskId", label="娴佺▼浠诲姟涓婚敭", isUpdate=false, isQuery=false), - @Column(name="f_flow_state", attrName="fflowState", label="娴佺▼浠诲姟鐘舵", isUpdate=false, isQuery=false, isUpdateForce=true), - }, orderBy="a.create_time DESC" +@Table(name = "biz_list_item", alias = "a", label = "閫氱煡鍒楄〃椤硅〃淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "鍒涘缓鏃堕棿", isUpdate = false, isUpdateForce = true), + @Column(name = "id", attrName = "id", label = "鍞竴鏍囪瘑", isPK = true), + @Column(name = "avatar", attrName = "avatar", label = "澶村儚鍥炬爣", isUpdate = false, isUpdateForce = true), + @Column(name = "title", attrName = "title", label = "閫氱煡鏍囬", queryType = QueryType.LIKE), + @Column(name = "title_delete", attrName = "titleDelete", label = "鏄惁鍒犻櫎", isQuery = false), + @Column(name = "datetime", attrName = "datetime", label = "鍙戦佹椂闂", isQuery = false), + @Column(name = "type", attrName = "type", label = "绫诲瀷鏍囪瘑"), + @Column(name = "read_flag", attrName = "readFlag", label = "鏄惁宸茶"), + @Column(name = "description", attrName = "description", label = "鎻忚堪淇℃伅", isQuery = false), + @Column(name = "click_close", attrName = "clickClose", label = "鏄惁鍏抽棴"), + @Column(name = "extra", attrName = "extra", label = "寰呭姙鐘舵"), + @Column(name = "color", attrName = "color", label = "棰滆壊鍊", isQuery = false), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false), + @Column(name = "login_user", attrName = "loginUser", label = "鎺ユ敹鐢ㄦ埛"), + @Column(name = "user_name", attrName = "userName", label = "鎺ユ敹鐢ㄦ埛"), + @Column(name = "create_user", attrName = "createUser", label = "鍒涘缓鐢ㄦ埛", isUpdate = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, orderBy = "a.create_time DESC" ) @Data public class BizListItem extends DataEntity implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - private Date createTime; // 鍒涘缓鏃堕棿 - private String avatar; // 澶村儚鍥炬爣 - private String title; // 閫氱煡鏍囬 - private boolean titleDelete; // 鏄惁鍒犻櫎 - private String datetime; // 鍙戦佹椂闂 - private String type; // 绫诲瀷鏍囪瘑 - private boolean readFlag; // 鏄惁宸茶 - private String description; // 鎻忚堪淇℃伅 - private boolean clickClose; // 鏄惁鍏抽棴 - private String extra; // 寰呭姙鐘舵 - private String color; // 棰滆壊鍊 - private Date updateTime; // 鏇存柊鏃堕棿 - private String ftenantId; // 绉熸埛id - private String fflowId; // 娴佺▼id - private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 - private Integer fflowState; // 娴佺▼浠诲姟鐘舵 - @ExcelFields({ - @ExcelField(title="鍒涘缓鏃堕棿", attrName="createTime", align=Align.CENTER, sort=10, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="鍞竴鏍囪瘑", attrName="id", align=Align.CENTER, sort=20), - @ExcelField(title="澶村儚鍥炬爣", attrName="avatar", align=Align.CENTER, sort=30), - @ExcelField(title="閫氱煡鏍囬", attrName="title", align=Align.CENTER, sort=40), - @ExcelField(title="鏄惁鍒犻櫎", attrName="titleDelete", align=Align.CENTER, sort=50), - @ExcelField(title="鍙戦佹椂闂", attrName="datetime", align=Align.CENTER, sort=60, dataFormat="yyyy-MM-dd"), - @ExcelField(title="绫诲瀷鏍囪瘑", attrName="type", align=Align.CENTER, sort=70), - @ExcelField(title="鏄惁宸茶", attrName="readFlag", align=Align.CENTER, sort=80), - @ExcelField(title="鎻忚堪淇℃伅", attrName="description", align=Align.CENTER, sort=90), - @ExcelField(title="鏄惁鍏抽棴", attrName="clickClose", align=Align.CENTER, sort=100), - @ExcelField(title="寰呭姙鐘舵", attrName="extra", align=Align.CENTER, sort=110), - @ExcelField(title="棰滆壊鍊", attrName="color", align=Align.CENTER, sort=120), - }) - public BizListItem() { - this(null); - } - - public BizListItem(String id){ - super(id); - } - - public Date getCreateTime_gte() { - return sqlMap.getWhere().getValue("create_time", QueryType.GTE); - } + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 鍒涘缓鏃堕棿 + private String avatar; // 澶村儚鍥炬爣 + private String title; // 閫氱煡鏍囬 + private Boolean titleDelete; // 鏄惁鍒犻櫎 + private String datetime; // 鍙戦佹椂闂 + private String type; // 绫诲瀷鏍囪瘑 + private Boolean readFlag; // 鏄惁宸茶 + private String description; // 鎻忚堪淇℃伅 + private Boolean clickClose; // 鏄惁鍏抽棴 + private String extra; // 寰呭姙鐘舵 + private String color; // 棰滆壊鍊 + private Date updateTime; // 鏇存柊鏃堕棿 + private String loginUser; + private String userName; + private String createUser; + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 - public void setCreateTime_gte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); - } - - public Date getCreateTime_lte() { - return sqlMap.getWhere().getValue("create_time", QueryType.LTE); - } + @ExcelFields({ + @ExcelField(title = "鍒涘缓鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "鍞竴鏍囪瘑", attrName = "id", align = Align.CENTER, sort = 20), + @ExcelField(title = "澶村儚鍥炬爣", attrName = "avatar", align = Align.CENTER, sort = 30), + @ExcelField(title = "閫氱煡鏍囬", attrName = "title", align = Align.CENTER, sort = 40), + @ExcelField(title = "鏄惁鍒犻櫎", attrName = "titleDelete", align = Align.CENTER, sort = 50), + @ExcelField(title = "鍙戦佹椂闂", attrName = "datetime", align = Align.CENTER, sort = 60, dataFormat = "yyyy-MM-dd"), + @ExcelField(title = "绫诲瀷鏍囪瘑", attrName = "type", align = Align.CENTER, sort = 70), + @ExcelField(title = "鏄惁宸茶", attrName = "readFlag", align = Align.CENTER, sort = 80), + @ExcelField(title = "鎻忚堪淇℃伅", attrName = "description", align = Align.CENTER, sort = 90), + @ExcelField(title = "鏄惁鍏抽棴", attrName = "clickClose", align = Align.CENTER, sort = 100), + @ExcelField(title = "寰呭姙鐘舵", attrName = "extra", align = Align.CENTER, sort = 110), + }) + public BizListItem() { + this(null); + } + + public BizListItem(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } - public void setCreateTime_lte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); - } - } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizProjectRequirements.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizProjectRequirements.java index 4bafd85e..b4b3f012 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizProjectRequirements.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizProjectRequirements.java @@ -2,6 +2,7 @@ package com.jeesite.modules.biz.entity; import java.io.Serializable; import java.util.Date; + import com.jeesite.common.mybatis.annotation.JoinTable; import com.jeesite.common.mybatis.annotation.JoinTable.Type; import com.fasterxml.jackson.annotation.JsonFormat; @@ -22,93 +23,121 @@ import java.io.Serial; /** * 闇姹備俊鎭疎ntity + * * @author gaoxq * @version 2025-11-27 */ @EqualsAndHashCode(callSuper = true) -@Table(name="biz_project_requirements", alias="a", label="闇姹備俊鎭俊鎭", columns={ - @Column(name="create_time", attrName="createTime", label="璁板綍鏃ユ湡", isUpdate=false, isUpdateForce=true), - @Column(name="requirement_id", attrName="requirementId", label="闇姹傛爣璇", isPK=true), - @Column(name="requirement_name", attrName="requirementName", label="闇姹傚悕绉", queryType=QueryType.LIKE), - @Column(name="requirement_code", attrName="requirementCode", label="闇姹傜紪鍙"), - @Column(name="area_code", attrName="areaCode", label="椤圭洰鍖哄煙"), - @Column(name="requirement_description", attrName="requirementDescription", label="闇姹傛弿杩"), - @Column(name="start_time", attrName="startTime", label="寮濮嬫椂闂", isQuery=false, isUpdateForce=true), - @Column(name="end_time", attrName="endTime", label="缁撴潫鏃堕棿", isQuery=false, isUpdateForce=true), - @Column(name="priority", attrName="priority", label="浼樺厛绾"), - @Column(name="update_time", attrName="updateTime", label="鏇存柊鏃堕棿", isQuery=false, isUpdateForce=true), - @Column(name="project_id", attrName="projectId", label="椤圭洰ID"), - @Column(name="employee_id", attrName="employeeId", label="鐢ㄦ埛ID"), - @Column(name="remark", attrName="remark", label="闇姹傚娉"), - @Column(name="requirements_status", attrName="requirementsStatus", label="鐘舵"), - @Column(name="f_tenant_id", attrName="ftenantId", label="绉熸埛id", isUpdate=false, isQuery=false), - @Column(name="f_flow_id", attrName="fflowId", label="娴佺▼id", isUpdate=false, isQuery=false), - @Column(name="f_flow_task_id", attrName="fflowTaskId", label="娴佺▼浠诲姟涓婚敭", isUpdate=false, isQuery=false), - @Column(name="f_flow_state", attrName="fflowState", label="娴佺▼浠诲姟鐘舵", isUpdate=false, isQuery=false, isUpdateForce=true), - }, orderBy="a.create_time DESC" +@Table(name = "biz_project_requirements", alias = "a", label = "闇姹備俊鎭俊鎭", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃ユ湡", isUpdate = false, isUpdateForce = true), + @Column(name = "requirement_id", attrName = "requirementId", label = "闇姹傛爣璇", isPK = true), + @Column(name = "requirement_name", attrName = "requirementName", label = "闇姹傚悕绉", queryType = QueryType.LIKE), + @Column(name = "requirement_code", attrName = "requirementCode", label = "闇姹傜紪鍙"), + @Column(name = "area_code", attrName = "areaCode", label = "椤圭洰鍖哄煙"), + @Column(name = "requirement_description", attrName = "requirementDescription", label = "闇姹傛弿杩"), + @Column(name = "start_time", attrName = "startTime", label = "寮濮嬫椂闂", isQuery = false, isUpdateForce = true), + @Column(name = "end_time", attrName = "endTime", label = "缁撴潫鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "priority", attrName = "priority", label = "浼樺厛绾"), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "project_id", attrName = "projectId", label = "椤圭洰ID"), + @Column(name = "employee_id", attrName = "employeeId", label = "鐢ㄦ埛ID"), + @Column(name = "remark", attrName = "remark", label = "闇姹傚娉"), + @Column(name = "requirements_status", attrName = "requirementsStatus", label = "鐘舵"), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, joinTable = { + @JoinTable(type = Type.LEFT_JOIN, entity = BizResumeEmployee.class, attrName = "this", alias = "b", + on = "a.employee_id = b.employee_id", + columns = { + @Column(name = "employee_name", attrName = "employeeName", label = "鍛樺伐濮撳悕"), + @Column(name = "employee_code", attrName = "employeeCode", label = "鍛樺伐缂栧彿"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = BizProjectInfo.class, attrName = "this", alias = "c", + on = "a.project_id = c.project_id", + columns = { + @Column(name = "project_code", attrName = "projectCode", label = "椤圭洰缂栫爜"), + @Column(name = "project_name", attrName = "projectName", label = "椤圭洰鍚嶇О"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = BizProvince.class, attrName = "this", alias = "d", + on = "a.area_code = d.province_code", + columns = { + @Column(name = "province_name", attrName = "provinceName", label = "鐪佷唤鍚嶇О"), + }), +}, orderBy = "a.create_time DESC" ) @Data public class BizProjectRequirements extends DataEntity implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - private Date createTime; // 璁板綍鏃ユ湡 - private String requirementId; // 闇姹傛爣璇 - private String requirementName; // 闇姹傚悕绉 - private String requirementCode; // 闇姹傜紪鍙 - private String areaCode; // 椤圭洰鍖哄煙 - private String requirementDescription; // 闇姹傛弿杩 - private Date startTime; // 寮濮嬫椂闂 - private Date endTime; // 缁撴潫鏃堕棿 - private String priority; // 浼樺厛绾 - private Date updateTime; // 鏇存柊鏃堕棿 - private String projectId; // 椤圭洰ID - private String employeeId; // 鐢ㄦ埛ID - private String remark; // 闇姹傚娉 - private String requirementsStatus; // 鐘舵 - private String ftenantId; // 绉熸埛id - private String fflowId; // 娴佺▼id - private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 - private Integer fflowState; // 娴佺▼浠诲姟鐘舵 - @ExcelFields({ - @ExcelField(title="璁板綍鏃ユ湡", attrName="createTime", align=Align.CENTER, sort=10, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="闇姹傛爣璇", attrName="requirementId", align=Align.CENTER, sort=20), - @ExcelField(title="闇姹傚悕绉", attrName="requirementName", align=Align.CENTER, sort=30), - @ExcelField(title="闇姹傜紪鍙", attrName="requirementCode", align=Align.CENTER, sort=40), - @ExcelField(title="椤圭洰鍖哄煙", attrName="areaCode", align=Align.CENTER, sort=50), - @ExcelField(title="闇姹傛弿杩", attrName="requirementDescription", align=Align.CENTER, sort=60), - @ExcelField(title="寮濮嬫椂闂", attrName="startTime", align=Align.CENTER, sort=70, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="缁撴潫鏃堕棿", attrName="endTime", align=Align.CENTER, sort=80, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="浼樺厛绾", attrName="priority", align=Align.CENTER, sort=90), - @ExcelField(title="鏇存柊鏃堕棿", attrName="updateTime", align=Align.CENTER, sort=100, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="椤圭洰ID", attrName="projectId", align=Align.CENTER, sort=110), - @ExcelField(title="鐢ㄦ埛ID", attrName="employeeId", align=Align.CENTER, sort=120), - @ExcelField(title="闇姹傚娉", attrName="remark", align=Align.CENTER, sort=130), - @ExcelField(title="鐘舵", attrName="requirementsStatus", align=Align.CENTER, sort=140), - }) - public BizProjectRequirements() { - this(null); - } - - public BizProjectRequirements(String id){ - super(id); - } - - public Date getCreateTime_gte() { - return sqlMap.getWhere().getValue("create_time", QueryType.GTE); - } + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃ユ湡 + private String requirementId; // 闇姹傛爣璇 + private String requirementName; // 闇姹傚悕绉 + private String requirementCode; // 闇姹傜紪鍙 + private String areaCode; // 椤圭洰鍖哄煙 + private String requirementDescription; // 闇姹傛弿杩 + private Date startTime; // 寮濮嬫椂闂 + private Date endTime; // 缁撴潫鏃堕棿 + private String priority; // 浼樺厛绾 + private Date updateTime; // 鏇存柊鏃堕棿 + private String projectId; // 椤圭洰ID + private String employeeId; // 鐢ㄦ埛ID + private String remark; // 闇姹傚娉 + private String requirementsStatus; // 鐘舵 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 - public void setCreateTime_gte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); - } - - public Date getCreateTime_lte() { - return sqlMap.getWhere().getValue("create_time", QueryType.LTE); - } + private String employeeName; + private String employeeCode; + private String projectCode; + private String projectName; + + private String provinceName; + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃ユ湡", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "闇姹傛爣璇", attrName = "requirementId", align = Align.CENTER, sort = 20), + @ExcelField(title = "闇姹傚悕绉", attrName = "requirementName", align = Align.CENTER, sort = 30), + @ExcelField(title = "闇姹傜紪鍙", attrName = "requirementCode", align = Align.CENTER, sort = 40), + @ExcelField(title = "鍖哄煙缂栫爜", attrName = "areaCode", align = Align.CENTER, sort = 50), + @ExcelField(title = "鍖哄煙鍚嶇О", attrName = "provinceName", align = Align.CENTER, sort = 50), + @ExcelField(title = "闇姹傛弿杩", attrName = "requirementDescription", align = Align.CENTER, sort = 60), + @ExcelField(title = "寮濮嬫椂闂", attrName = "startTime", align = Align.CENTER, sort = 70, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "缁撴潫鏃堕棿", attrName = "endTime", align = Align.CENTER, sort = 80, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "浼樺厛绛夌骇", attrName = "priority", dictType = "priority", align = Align.CENTER, sort = 90), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 100, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "椤圭洰缂栧彿", attrName = "projectCode", align = Align.CENTER, sort = 110), + @ExcelField(title = "椤圭洰鍚嶇О", attrName = "projectName", align = Align.CENTER, sort = 110), + @ExcelField(title = "闇姹傜敤鎴", attrName = "employeeName", align = Align.CENTER, sort = 120), + @ExcelField(title = "闇姹傚娉", attrName = "remark", align = Align.CENTER, sort = 130), + @ExcelField(title = "鐘舵", attrName = "requirementsStatus", dictType = "requirements_status", align = Align.CENTER, sort = 140), + }) + public BizProjectRequirements() { + this(null); + } + + public BizProjectRequirements(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } - public void setCreateTime_lte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); - } - } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java index 6ba6011c..fdfc410c 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizListItemController.java @@ -3,13 +3,18 @@ package com.jeesite.modules.biz.web; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import com.jeesite.modules.dao.TabItem; import com.jeesite.modules.dict.NotifyType; +import com.jeesite.modules.sys.entity.User; +import com.jeesite.modules.sys.utils.UserUtils; +import com.jeesite.modules.utils.IpUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.apache.poi.ss.formula.atp.Switch; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -71,6 +76,8 @@ public class BizListItemController extends BaseController { @RequestMapping(value = "listData") @ResponseBody public Page listData(BizListItem bizListItem, HttpServletRequest request, HttpServletResponse response) { + User user = UserUtils.getUser(); + bizListItem.setCreateUser(user.getUserCode()); bizListItem.setPage(new Page<>(request, response)); Page page = bizListItemService.findPage(bizListItem); return page; @@ -93,8 +100,13 @@ public class BizListItemController extends BaseController { @PostMapping(value = "save") @ResponseBody public String save(@Validated BizListItem bizListItem) { + User user = UserUtils.getUser(); + User loginUser = UserUtils.getByLoginCode(bizListItem.getLoginUser()); + bizListItem.setUserName(loginUser.getUserName()); + bizListItem.setCreateUser(user.getLoginCode()); + bizListItem.setAvatar(IpUtils.getServerHttp() + user.getAvatar()); bizListItemService.save(bizListItem); - return renderResult(Global.TRUE, text("淇濆瓨閫氱煡鍒楄〃椤硅〃鎴愬姛锛")); + return renderResult(Global.TRUE, text("淇濆瓨閫氱煡鍒楄〃椤规垚鍔燂紒")); } /** @@ -103,9 +115,11 @@ public class BizListItemController extends BaseController { @RequiresPermissions("biz:listItem:view") @RequestMapping(value = "exportData") public void exportData(BizListItem bizListItem, HttpServletResponse response) { + User user = UserUtils.getUser(); + bizListItem.setCreateUser(user.getLoginCode()); List list = bizListItemService.findList(bizListItem); String fileName = "閫氱煡鍒楄〃椤硅〃" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; - try (ExcelExport ee = new ExcelExport("閫氱煡鍒楄〃椤硅〃", BizListItem.class)) { + try (ExcelExport ee = new ExcelExport("閫氱煡鍒楄〃椤", BizListItem.class)) { ee.setDataList(list).write(response, fileName); } } @@ -119,7 +133,7 @@ public class BizListItemController extends BaseController { BizListItem bizListItem = new BizListItem(); List list = ListUtils.newArrayList(bizListItem); String fileName = "閫氱煡鍒楄〃椤硅〃妯℃澘.xlsx"; - try (ExcelExport ee = new ExcelExport("閫氱煡鍒楄〃椤硅〃", BizListItem.class, Type.IMPORT)) { + try (ExcelExport ee = new ExcelExport("閫氱煡鍒楄〃椤", BizListItem.class, Type.IMPORT)) { ee.setDataList(list).write(response, fileName); } } @@ -147,17 +161,43 @@ public class BizListItemController extends BaseController { @ResponseBody public String delete(BizListItem bizListItem) { bizListItemService.delete(bizListItem); - return renderResult(Global.TRUE, text("鍒犻櫎閫氱煡鍒楄〃椤硅〃鎴愬姛锛")); + return renderResult(Global.TRUE, text("鍒犻櫎閫氱煡鍒楄〃椤规垚鍔燂紒")); + } + + @RequestMapping(value = "sflow") + @ResponseBody + public String sflow(BizListItem bizListItem) { + String status = Objects.requireNonNullElse(bizListItem.getExtra(), "鏈紑濮"); + switch (status) { + case "鏈紑濮" -> { + bizListItem.setColor("red"); + bizListItem.setExtra("杩涜涓"); + } + case "杩涜涓" -> { + bizListItem.setColor("green"); + bizListItem.setExtra("宸插畬鎴"); + } + case "宸插畬鎴" -> { + bizListItem.setColor("white"); + bizListItem.setReadFlag(true); + bizListItem.setClickClose(true); + } + } + bizListItemService.update(bizListItem); + return renderResult(Global.TRUE, text("鎿嶄綔閫氱煡鍒楄〃椤规垚鍔燂紒")); } @RequestMapping(value = "getTabListData") @ResponseBody public List getTabListData() { + User user = UserUtils.getUser(); return Arrays.stream(NotifyType.values()) .map(type -> { BizListItem listItem = new BizListItem(); + listItem.setReadFlag(false); listItem.setType(type.getCode()); + listItem.setLoginUser(user.getLoginCode()); List dataList = bizListItemService.findList(listItem); return new TabItem(type.getCode(), type.getName(), dataList.size(), dataList); }) diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizProjectInfoController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizProjectInfoController.java index 9602c0bf..f8ab53d3 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizProjectInfoController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizProjectInfoController.java @@ -1,6 +1,7 @@ package com.jeesite.modules.biz.web; import java.util.List; + import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -26,6 +27,7 @@ import com.jeesite.modules.biz.service.BizProjectInfoService; /** * 椤圭洰淇℃伅Controller + * * @author gaoxq * @version 2025-11-27 */ @@ -33,114 +35,120 @@ import com.jeesite.modules.biz.service.BizProjectInfoService; @RequestMapping(value = "${adminPath}/biz/projectInfo") public class BizProjectInfoController extends BaseController { - private final BizProjectInfoService bizProjectInfoService; + private final BizProjectInfoService bizProjectInfoService; - public BizProjectInfoController(BizProjectInfoService bizProjectInfoService) { - this.bizProjectInfoService = bizProjectInfoService; - } - - /** - * 鑾峰彇鏁版嵁 - */ - @ModelAttribute - public BizProjectInfo get(String projectId, boolean isNewRecord) { - return bizProjectInfoService.get(projectId, isNewRecord); - } - - /** - * 鏌ヨ鍒楄〃 - */ - @RequiresPermissions("biz:projectInfo:view") - @RequestMapping(value = {"list", ""}) - public String list(BizProjectInfo bizProjectInfo, Model model) { - model.addAttribute("bizProjectInfo", bizProjectInfo); - return "modules/biz/bizProjectInfoList"; - } - - /** - * 鏌ヨ鍒楄〃鏁版嵁 - */ - @RequiresPermissions("biz:projectInfo:view") - @RequestMapping(value = "listData") + public BizProjectInfoController(BizProjectInfoService bizProjectInfoService) { + this.bizProjectInfoService = bizProjectInfoService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public BizProjectInfo get(String projectId, boolean isNewRecord) { + return bizProjectInfoService.get(projectId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("biz:projectInfo:view") + @RequestMapping(value = {"list", ""}) + public String list(BizProjectInfo bizProjectInfo, Model model) { + model.addAttribute("bizProjectInfo", bizProjectInfo); + return "modules/biz/bizProjectInfoList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("biz:projectInfo:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(BizProjectInfo bizProjectInfo, HttpServletRequest request, HttpServletResponse response) { + bizProjectInfo.setPage(new Page<>(request, response)); + Page page = bizProjectInfoService.findPage(bizProjectInfo); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("biz:projectInfo:view") + @RequestMapping(value = "form") + public String form(BizProjectInfo bizProjectInfo, Model model) { + model.addAttribute("bizProjectInfo", bizProjectInfo); + return "modules/biz/bizProjectInfoForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("biz:projectInfo:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated BizProjectInfo bizProjectInfo) { + bizProjectInfoService.save(bizProjectInfo); + return renderResult(Global.TRUE, text("淇濆瓨椤圭洰淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("biz:projectInfo:view") + @RequestMapping(value = "exportData") + public void exportData(BizProjectInfo bizProjectInfo, HttpServletResponse response) { + List list = bizProjectInfoService.findList(bizProjectInfo); + String fileName = "椤圭洰淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try (ExcelExport ee = new ExcelExport("椤圭洰淇℃伅", BizProjectInfo.class)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("biz:projectInfo:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + BizProjectInfo bizProjectInfo = new BizProjectInfo(); + List list = ListUtils.newArrayList(bizProjectInfo); + String fileName = "椤圭洰淇℃伅妯℃澘.xlsx"; + try (ExcelExport ee = new ExcelExport("椤圭洰淇℃伅", BizProjectInfo.class, Type.IMPORT)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("biz:projectInfo:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = bizProjectInfoService.importData(file); + return renderResult(Global.TRUE, "posfull:" + message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:" + ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("biz:projectInfo:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(BizProjectInfo bizProjectInfo) { + bizProjectInfoService.delete(bizProjectInfo); + return renderResult(Global.TRUE, text("鍒犻櫎椤圭洰淇℃伅鎴愬姛锛")); + } + + @RequestMapping(value = "listAll") @ResponseBody - public Page listData(BizProjectInfo bizProjectInfo, HttpServletRequest request, HttpServletResponse response) { - bizProjectInfo.setPage(new Page<>(request, response)); - Page page = bizProjectInfoService.findPage(bizProjectInfo); - return page; - } + public List listAll(BizProjectInfo bizProjectInfo) { + return bizProjectInfoService.findList(bizProjectInfo); + } - /** - * 鏌ョ湅缂栬緫琛ㄥ崟 - */ - @RequiresPermissions("biz:projectInfo:view") - @RequestMapping(value = "form") - public String form(BizProjectInfo bizProjectInfo, Model model) { - model.addAttribute("bizProjectInfo", bizProjectInfo); - return "modules/biz/bizProjectInfoForm"; - } - - /** - * 淇濆瓨鏁版嵁 - */ - @RequiresPermissions("biz:projectInfo:edit") - @PostMapping(value = "save") - @ResponseBody - public String save(@Validated BizProjectInfo bizProjectInfo) { - bizProjectInfoService.save(bizProjectInfo); - return renderResult(Global.TRUE, text("淇濆瓨椤圭洰淇℃伅鎴愬姛锛")); - } - - /** - * 瀵煎嚭鏁版嵁 - */ - @RequiresPermissions("biz:projectInfo:view") - @RequestMapping(value = "exportData") - public void exportData(BizProjectInfo bizProjectInfo, HttpServletResponse response) { - List list = bizProjectInfoService.findList(bizProjectInfo); - String fileName = "椤圭洰淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; - try(ExcelExport ee = new ExcelExport("椤圭洰淇℃伅", BizProjectInfo.class)){ - ee.setDataList(list).write(response, fileName); - } - } - - /** - * 涓嬭浇妯℃澘 - */ - @RequiresPermissions("biz:projectInfo:view") - @RequestMapping(value = "importTemplate") - public void importTemplate(HttpServletResponse response) { - BizProjectInfo bizProjectInfo = new BizProjectInfo(); - List list = ListUtils.newArrayList(bizProjectInfo); - String fileName = "椤圭洰淇℃伅妯℃澘.xlsx"; - try(ExcelExport ee = new ExcelExport("椤圭洰淇℃伅", BizProjectInfo.class, Type.IMPORT)){ - ee.setDataList(list).write(response, fileName); - } - } - - /** - * 瀵煎叆鏁版嵁 - */ - @ResponseBody - @RequiresPermissions("biz:projectInfo:edit") - @PostMapping(value = "importData") - public String importData(MultipartFile file) { - try { - String message = bizProjectInfoService.importData(file); - return renderResult(Global.TRUE, "posfull:"+message); - } catch (Exception ex) { - return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); - } - } - - /** - * 鍒犻櫎鏁版嵁 - */ - @RequiresPermissions("biz:projectInfo:edit") - @RequestMapping(value = "delete") - @ResponseBody - public String delete(BizProjectInfo bizProjectInfo) { - bizProjectInfoService.delete(bizProjectInfo); - return renderResult(Global.TRUE, text("鍒犻櫎椤圭洰淇℃伅鎴愬姛锛")); - } - } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpAccountDao.java b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpAccountDao.java new file mode 100644 index 00000000..00a17c81 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpAccountDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.erp.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.erp.entity.ErpAccount; + +/** + * 璐︽埛淇℃伅DAO鎺ュ彛 + * @author gaoxq + * @version 2025-11-29 + */ +@MyBatisDao(dataSourceName="work") +public interface ErpAccountDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpCategoryDao.java b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpCategoryDao.java new file mode 100644 index 00000000..a1e4e750 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpCategoryDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.erp.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.erp.entity.ErpCategory; + +/** + * 鍒嗙被淇℃伅DAO鎺ュ彛 + * @author gaoxq + * @version 2025-11-29 + */ +@MyBatisDao(dataSourceName="work") +public interface ErpCategoryDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpExpenseDao.java b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpExpenseDao.java new file mode 100644 index 00000000..69691d61 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpExpenseDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.erp.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.erp.entity.ErpExpense; + +/** + * 鏀嚭淇℃伅DAO鎺ュ彛 + * @author gaoxq + * @version 2025-11-29 + */ +@MyBatisDao(dataSourceName="work") +public interface ErpExpenseDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpIncomeDao.java b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpIncomeDao.java new file mode 100644 index 00000000..fc5e5c8d --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpIncomeDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.erp.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.erp.entity.ErpIncome; + +/** + * 鏀跺叆淇℃伅DAO鎺ュ彛 + * @author gaoxq + * @version 2025-11-29 + */ +@MyBatisDao(dataSourceName="work") +public interface ErpIncomeDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpTransactionFlowDao.java b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpTransactionFlowDao.java new file mode 100644 index 00000000..1233ec47 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/dao/ErpTransactionFlowDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.erp.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.erp.entity.ErpTransactionFlow; + +/** + * 鏄庣粏淇℃伅DAO鎺ュ彛 + * @author gaoxq + * @version 2025-11-29 + */ +@MyBatisDao(dataSourceName="work") +public interface ErpTransactionFlowDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpAccount.java b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpAccount.java new file mode 100644 index 00000000..cc2a682b --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpAccount.java @@ -0,0 +1,87 @@ +package com.jeesite.modules.erp.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 璐︽埛淇℃伅Entity + * + * @author gaoxq + * @version 2025-11-29 + */ +@EqualsAndHashCode(callSuper = true) +@Table(name = "erp_account", alias = "a", label = "璐︽埛淇℃伅淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃堕棿", isUpdate = false, isQuery = false, isUpdateForce = true), + @Column(name = "account_id", attrName = "accountId", label = "璐︽埛鏍囪瘑", isPK = true), + @Column(name = "account_name", attrName = "accountName", label = "璐︽埛鍚嶇О", queryType = QueryType.LIKE), + @Column(name = "account_type", attrName = "accountType", label = "璐︽埛绫诲瀷"), + @Column(name = "account_code", attrName = "accountCode", label = "璐︽埛鍗″彿", isQuery = false), + @Column(name = "initial_balance", attrName = "initialBalance", label = "鍒濆浣欓", isQuery = false), + @Column(name = "current_balance", attrName = "currentBalance", label = "褰撳墠浣欓", isQuery = false), + @Column(name = "is_active", attrName = "isActive", label = "鏄惁婵娲"), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, orderBy = "a.create_time DESC" +) +@Data +public class ErpAccount extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃堕棿 + private String accountId; // 璐︽埛鏍囪瘑 + private String accountName; // 璐︽埛鍚嶇О + private String accountType; // 璐︽埛绫诲瀷 + private String accountCode; // 璐︽埛鍗″彿 + private BigDecimal initialBalance; // 鍒濆浣欓 + private BigDecimal currentBalance; // 褰撳墠浣欓 + private String isActive; // 鏄惁婵娲 + private Date updateTime; // 鏇存柊鏃堕棿 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "璐︽埛鏍囪瘑", attrName = "accountId", align = Align.CENTER, sort = 20), + @ExcelField(title = "璐︽埛鍚嶇О", attrName = "accountName", align = Align.CENTER, sort = 30), + @ExcelField(title = "璐︽埛绫诲瀷", attrName = "accountType", dictType = "account_type", align = Align.CENTER, sort = 40), + @ExcelField(title = "璐︽埛鍗″彿", attrName = "accountCode", align = Align.CENTER, sort = 50), + @ExcelField(title = "鍒濆浣欓", attrName = "initialBalance", align = Align.CENTER, sort = 60), + @ExcelField(title = "褰撳墠浣欓", attrName = "currentBalance", align = Align.CENTER, sort = 70), + @ExcelField(title = "鏄惁婵娲", attrName = "isActive", dictType = "is_active", align = Align.CENTER, sort = 80), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 90, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public ErpAccount() { + this(null); + } + + public ErpAccount(String id) { + super(id); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpCategory.java b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpCategory.java new file mode 100644 index 00000000..f9438ad5 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpCategory.java @@ -0,0 +1,81 @@ +package com.jeesite.modules.erp.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; + +import java.io.Serial; + +/** + * 鍒嗙被淇℃伅Entity + * + * @author gaoxq + * @version 2025-11-29 + */ +@Table(name = "erp_category", alias = "a", label = "鍒嗙被淇℃伅淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃堕棿", isUpdate = false, isQuery = false), + @Column(name = "category_id", attrName = "categoryId", label = "鍒嗙被鏍囪瘑", isPK = true), + @Column(name = "category_name", attrName = "categoryName", label = "鍒嗙被鍚嶇О", queryType = QueryType.LIKE), + @Column(name = "category_type", attrName = "categoryType", label = "鍒嗙被绫诲瀷"), + @Column(name = "parent_id", attrName = "parentId", label = "鐖剁骇鍒嗙被", isQuery = false), + @Column(name = "sort_order", attrName = "sortOrder", label = "鎺掑簭搴忓彿", isQuery = false), + @Column(name = "is_active", attrName = "isActive", label = "鏄惁鍚敤"), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isInsert = false, isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isInsert = false, isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isInsert = false, isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isInsert = false, isUpdate = false, isQuery = false, isUpdateForce = true), +}, orderBy = "a.create_time DESC" +) +@Data +public class ErpCategory extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃堕棿 + private String categoryId; // 鍒嗙被鏍囪瘑 + private String categoryName; // 鍒嗙被鍚嶇О + private String categoryType; // 鍒嗙被绫诲瀷 + private String parentId; // 鐖剁骇鍒嗙被 + private String sortOrder; // 鎺掑簭搴忓彿 + private String isActive; // 鏄惁鍚敤 + private Date updateTime; // 鏇存柊鏃堕棿 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "鍒嗙被鏍囪瘑", attrName = "categoryId", align = Align.CENTER, sort = 20), + @ExcelField(title = "鍒嗙被鍚嶇О", attrName = "categoryName", align = Align.CENTER, sort = 30), + @ExcelField(title = "鍒嗙被绫诲瀷", attrName = "categoryType", dictType = "category_type", align = Align.CENTER, sort = 40), + @ExcelField(title = "鐖剁骇鍒嗙被", attrName = "parentId", dictType = "parent_type", align = Align.CENTER, sort = 50), + @ExcelField(title = "鎺掑簭搴忓彿", attrName = "sortOrder", align = Align.CENTER, sort = 60), + @ExcelField(title = "鏄惁鍚敤", attrName = "isActive", dictType = "is_active", align = Align.CENTER, sort = 70), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 80, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public ErpCategory() { + this(null); + } + + public ErpCategory(String id) { + super(id); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpExpense.java b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpExpense.java new file mode 100644 index 00000000..a90f2eca --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpExpense.java @@ -0,0 +1,124 @@ +package com.jeesite.modules.erp.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 鏀嚭淇℃伅Entity + * + * @author gaoxq + * @version 2025-11-29 + */ +@EqualsAndHashCode(callSuper = true) +@Table(name = "erp_expense", alias = "a", label = "鏀嚭淇℃伅淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃堕棿", isUpdate = false, isUpdateForce = true), + @Column(name = "expense_id", attrName = "expenseId", label = "鏀嚭ID", isPK = true), + @Column(name = "zflow_id", attrName = "zflowId", label = "鍏宠仈娴佹按ID", isQuery = false), + @Column(name = "account_id", attrName = "accountId", label = "鏀嚭璐︽埛ID", isQuery = false), + @Column(name = "category_id", attrName = "categoryId", label = "鏀嚭鍒嗙被ID"), + @Column(name = "amount", attrName = "amount", label = "浜ゆ槗閲戦", isQuery = false), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, joinTable = { + @JoinTable(type = Type.LEFT_JOIN, entity = ErpAccount.class, attrName = "this", alias = "b", + on = "a.account_id = b.account_id", + columns = { + @Column(name = "account_name", attrName = "accountName", label = "璐︽埛鍚嶇О"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = ErpCategory.class, attrName = "this", alias = "c", + on = "a.category_id = c.category_id", + columns = { + @Column(name = "parent_id", attrName = "parentId", label = "鐖剁骇鍒嗙被"), + @Column(name = "category_name", attrName = "categoryName", label = "鍒嗙被鍚嶇О"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = ErpTransactionFlow.class, attrName = "this", alias = "d", + on = "a.zflow_id = d.flow_id", + columns = { + @Column(name = "flow_name", attrName = "flowName", label = "浜ゆ槗鍚嶇О"), + @Column(name = "is_finish", attrName = "isFinish", label = "鏄惁璁拌处"), + }), +}, orderBy = "a.create_time DESC" +) +@Data +public class ErpExpense extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃堕棿 + private String expenseId; // 鏀嚭ID + private String zflowId; // 鍏宠仈娴佹按ID + private String accountId; // 鏀嚭璐︽埛ID + private String categoryId; // 鏀嚭鍒嗙被ID + private BigDecimal amount; // 浜ゆ槗閲戦 + private Date updateTime; // 鏇存柊鏃堕棿 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 + + private String accountName; + + private String parentId; + + private String categoryName; + + private String flowName; + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "鏀嚭缂栧彿", attrName = "expenseId", align = Align.CENTER, sort = 20), + @ExcelField(title = "浜ゆ槗鍚嶇О", attrName = "flowName", align = Align.CENTER, sort = 30), + @ExcelField(title = "鏀嚭璐﹀彿", attrName = "accountName", align = Align.CENTER, sort = 40), + @ExcelField(title = "鏀嚭鍒嗙被", attrName = "categoryName", align = Align.CENTER, sort = 50), + @ExcelField(title = "鐖剁骇鍒嗙被", attrName = "parentId", dictType = "parent_type", align = Align.CENTER, sort = 50), + @ExcelField(title = "浜ゆ槗閲戦", attrName = "amount", align = Align.CENTER, sort = 60), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 70, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public ErpExpense() { + this(null); + } + + public ErpExpense(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpIncome.java b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpIncome.java new file mode 100644 index 00000000..871f3808 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpIncome.java @@ -0,0 +1,124 @@ +package com.jeesite.modules.erp.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 鏀跺叆淇℃伅Entity + * + * @author gaoxq + * @version 2025-11-29 + */ +@EqualsAndHashCode(callSuper = true) +@Table(name = "erp_income", alias = "a", label = "鏀跺叆淇℃伅淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃堕棿", isUpdate = false, isUpdateForce = true), + @Column(name = "income_id", attrName = "incomeId", label = "鏀跺叆ID", isPK = true), + @Column(name = "sflow_id", attrName = "sflowId", label = "鍏宠仈娴佹按ID", isQuery = false), + @Column(name = "account_id", attrName = "accountId", label = "鏀跺叆璐︽埛ID", isQuery = false), + @Column(name = "category_id", attrName = "categoryId", label = "鏀跺叆鍒嗙被ID"), + @Column(name = "amount", attrName = "amount", label = "浜ゆ槗閲戦", comment = "浜ゆ槗閲戦锛堟鏁帮級", isQuery = false), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, joinTable = { + @JoinTable(type = Type.LEFT_JOIN, entity = ErpAccount.class, attrName = "this", alias = "b", + on = "a.account_id = b.account_id", + columns = { + @Column(name = "account_name", attrName = "accountName", label = "璐︽埛鍚嶇О"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = ErpCategory.class, attrName = "this", alias = "c", + on = "a.category_id = c.category_id", + columns = { + @Column(name = "parent_id", attrName = "parentId", label = "鐖剁骇鍒嗙被"), + @Column(name = "category_name", attrName = "categoryName", label = "鍒嗙被鍚嶇О"), + }), + @JoinTable(type = Type.LEFT_JOIN, entity = ErpTransactionFlow.class, attrName = "this", alias = "d", + on = "a.sflow_id = d.flow_id", + columns = { + @Column(name = "flow_name", attrName = "flowName", label = "浜ゆ槗鍚嶇О"), + @Column(name = "is_finish", attrName = "isFinish", label = "鏄惁璁拌处"), + }), +}, orderBy = "a.create_time DESC" +) +@Data +public class ErpIncome extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃堕棿 + private String incomeId; // 鏀跺叆ID + private String sflowId; // 鍏宠仈娴佹按ID + private String accountId; // 鏀跺叆璐︽埛ID + private String categoryId; // 鏀跺叆鍒嗙被ID + private BigDecimal amount; // 浜ゆ槗閲戦锛堟鏁帮級 + private Date updateTime; // 鏇存柊鏃堕棿 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 + + private String accountName; + + private String parentId; + + private String categoryName; + + private String flowName; + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "鏀跺叆缂栧彿", attrName = "incomeId", align = Align.CENTER, sort = 20), + @ExcelField(title = "浜ゆ槗鍚嶇О", attrName = "flowName", align = Align.CENTER, sort = 30), + @ExcelField(title = "鏀跺叆璐︽埛", attrName = "accountName", align = Align.CENTER, sort = 40), + @ExcelField(title = "鏀跺叆鍒嗙被", attrName = "categoryName", align = Align.CENTER, sort = 50), + @ExcelField(title = "鐖剁骇鍒嗙被", attrName = "parentId", dictType = "parent_type", align = Align.CENTER, sort = 50), + @ExcelField(title = "浜ゆ槗閲戦", attrName = "amount", align = Align.CENTER, sort = 60), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 70, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public ErpIncome() { + this(null); + } + + public ErpIncome(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpTransactionFlow.java b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpTransactionFlow.java new file mode 100644 index 00000000..9acf52b7 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/entity/ErpTransactionFlow.java @@ -0,0 +1,131 @@ +package com.jeesite.modules.erp.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jeesite.modules.biz.entity.BizProvince; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 鏄庣粏淇℃伅Entity + * + * @author gaoxq + * @version 2025-11-29 + */ +@EqualsAndHashCode(callSuper = true) +@Table(name = "erp_transaction_flow", alias = "a", label = "鏄庣粏淇℃伅淇℃伅", columns = { + @Column(name = "create_time", attrName = "createTime", label = "璁板綍鏃堕棿", isUpdate = false, isUpdateForce = true), + @Column(name = "flow_id", attrName = "flowId", label = "娴佹按缂栧彿", isPK = true), + @Column(name = "flow_name", attrName = "flowName", label = "浜ゆ槗鍚嶇О", queryType = QueryType.LIKE), + @Column(name = "transaction_type", attrName = "transactionType", label = "浜ゆ槗绫诲瀷"), + @Column(name = "amount", attrName = "amount", label = "浜ゆ槗閲戦", isQuery = false), + @Column(name = "transaction_time", attrName = "transactionTime", label = "浜ゆ槗鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "account_id", attrName = "accountId", label = "浜ゆ槗璐︽埛"), + @Column(name = "category_id", attrName = "categoryId", label = "浜ゆ槗鍒嗙被"), + @Column(name = "remark", attrName = "remark", label = "浜ゆ槗澶囨敞", isQuery = false), + @Column(name = "is_finish", attrName = "isFinish", label = "鏄惁璁拌处"), + @Column(name = "update_time", attrName = "updateTime", label = "鏇存柊鏃堕棿", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "绉熸埛id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "娴佺▼id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "娴佺▼浠诲姟涓婚敭", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "娴佺▼浠诲姟鐘舵", isUpdate = false, isQuery = false, isUpdateForce = true), +}, joinTable = { + @JoinTable(type = Type.LEFT_JOIN, entity = ErpAccount.class, attrName = "this", alias = "b", + on = "a.account_id = b.account_id", + columns = { + @Column(name = "account_name", attrName = "accountName", label = "璐︽埛鍚嶇О"), + }), + + @JoinTable(type = Type.LEFT_JOIN, entity = ErpCategory.class, attrName = "this", alias = "c", + on = "a.category_id = c.category_id", + columns = { + @Column(name = "parent_id", attrName = "parentId", label = "鐖剁骇鍒嗙被"), + @Column(name = "category_name", attrName = "categoryName", label = "鍒嗙被鍚嶇О"), + }), +}, orderBy = "a.create_time DESC" +) +@Data +public class ErpTransactionFlow extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 璁板綍鏃堕棿 + private String flowId; // 娴佹按缂栧彿 + private String flowName; // 浜ゆ槗鍚嶇О + private String transactionType; // 浜ゆ槗绫诲瀷 + private BigDecimal amount; // 浜ゆ槗閲戦 + private Date transactionTime; // 浜ゆ槗鏃堕棿 + private String accountId; // 浜ゆ槗璐︽埛 + private String categoryId; // 浜ゆ槗鍒嗙被 + private String remark; // 浜ゆ槗澶囨敞 + private String isFinish; // 鏄惁璁拌处 + private Date updateTime; // 鏇存柊鏃堕棿 + private String ftenantId; // 绉熸埛id + private String fflowId; // 娴佺▼id + private String fflowTaskId; // 娴佺▼浠诲姟涓婚敭 + private Integer fflowState; // 娴佺▼浠诲姟鐘舵 + + private String accountName; + + private String parentId; + + private String categoryName; + + + @ExcelFields({ + @ExcelField(title = "璁板綍鏃堕棿", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "娴佹按缂栧彿", attrName = "flowId", align = Align.CENTER, sort = 20), + @ExcelField(title = "浜ゆ槗鍚嶇О", attrName = "flowName", align = Align.CENTER, sort = 30), + @ExcelField(title = "浜ゆ槗绫诲瀷", attrName = "transactionType", dictType = "transaction_type", align = Align.CENTER, sort = 40), + @ExcelField(title = "浜ゆ槗閲戦", attrName = "amount", align = Align.CENTER, sort = 50), + @ExcelField(title = "浜ゆ槗鏃堕棿", attrName = "transactionTime", align = Align.CENTER, sort = 60, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "浜ゆ槗璐︽埛", attrName = "accountName", align = Align.CENTER, sort = 70), + @ExcelField(title = "鐖剁骇鍒嗙被", attrName = "parentId", dictType = "parent_type", align = Align.CENTER, sort = 80), + @ExcelField(title = "浜ゆ槗鍒嗙被", attrName = "categoryName", align = Align.CENTER, sort = 80), + @ExcelField(title = "浜ゆ槗澶囨敞", attrName = "remark", align = Align.CENTER, sort = 90), + @ExcelField(title = "鏄惁璁拌处", attrName = "isFinish", dictType = "is_finish", align = Align.CENTER, sort = 100), + @ExcelField(title = "鏇存柊鏃堕棿", attrName = "updateTime", align = Align.CENTER, sort = 110, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public ErpTransactionFlow() { + this(null); + } + + public ErpTransactionFlow(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/service/ErpAccountService.java b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpAccountService.java new file mode 100644 index 00000000..e4d6fd1c --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpAccountService.java @@ -0,0 +1,134 @@ +package com.jeesite.modules.erp.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.erp.entity.ErpAccount; +import com.jeesite.modules.erp.dao.ErpAccountDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 璐︽埛淇℃伅Service + * @author gaoxq + * @version 2025-11-29 + */ +@Service +public class ErpAccountService extends CrudService { + + /** + * 鑾峰彇鍗曟潯鏁版嵁 + * @param erpAccount 涓婚敭 + */ + @Override + public ErpAccount get(ErpAccount erpAccount) { + return super.get(erpAccount); + } + + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param erpAccount 鏌ヨ鏉′欢 + * @param erpAccount page 鍒嗛〉瀵硅薄 + */ + @Override + public Page findPage(ErpAccount erpAccount) { + return super.findPage(erpAccount); + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + * @param erpAccount 鏌ヨ鏉′欢 + */ + @Override + public List findList(ErpAccount erpAccount) { + return super.findList(erpAccount); + } + + /** + * 淇濆瓨鏁版嵁锛堟彃鍏ユ垨鏇存柊锛 + * @param erpAccount 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void save(ErpAccount erpAccount) { + super.save(erpAccount); + } + + /** + * 瀵煎叆鏁版嵁 + * @param file 瀵煎叆鐨勬暟鎹枃浠 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("璇烽夋嫨瀵煎叆鐨勬暟鎹枃浠讹紒")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(ErpAccount.class); + for (ErpAccount erpAccount : list) { + try{ + ValidatorUtils.validateWithException(erpAccount); + this.save(erpAccount); + successNum++; + successMsg.append("" + successNum + "銆佺紪鍙 " + erpAccount.getId() + " 瀵煎叆鎴愬姛"); + } catch (Exception e) { + failureNum++; + String msg = "" + failureNum + "銆佺紪鍙 " + erpAccount.getId() + " 瀵煎叆澶辫触锛"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation> violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏 " + successNum + " 鏉★紝鏁版嵁濡備笅锛"); + } + return successMsg.toString(); + } + + /** + * 鏇存柊鐘舵 + * @param erpAccount 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void updateStatus(ErpAccount erpAccount) { + super.updateStatus(erpAccount); + } + + /** + * 鍒犻櫎鏁版嵁 + * @param erpAccount 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void delete(ErpAccount erpAccount) { + super.delete(erpAccount); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/service/ErpCategoryService.java b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpCategoryService.java new file mode 100644 index 00000000..fa0339aa --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpCategoryService.java @@ -0,0 +1,134 @@ +package com.jeesite.modules.erp.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.erp.entity.ErpCategory; +import com.jeesite.modules.erp.dao.ErpCategoryDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 鍒嗙被淇℃伅Service + * @author gaoxq + * @version 2025-11-29 + */ +@Service +public class ErpCategoryService extends CrudService { + + /** + * 鑾峰彇鍗曟潯鏁版嵁 + * @param erpCategory 涓婚敭 + */ + @Override + public ErpCategory get(ErpCategory erpCategory) { + return super.get(erpCategory); + } + + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param erpCategory 鏌ヨ鏉′欢 + * @param erpCategory page 鍒嗛〉瀵硅薄 + */ + @Override + public Page findPage(ErpCategory erpCategory) { + return super.findPage(erpCategory); + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + * @param erpCategory 鏌ヨ鏉′欢 + */ + @Override + public List findList(ErpCategory erpCategory) { + return super.findList(erpCategory); + } + + /** + * 淇濆瓨鏁版嵁锛堟彃鍏ユ垨鏇存柊锛 + * @param erpCategory 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void save(ErpCategory erpCategory) { + super.save(erpCategory); + } + + /** + * 瀵煎叆鏁版嵁 + * @param file 瀵煎叆鐨勬暟鎹枃浠 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("璇烽夋嫨瀵煎叆鐨勬暟鎹枃浠讹紒")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(ErpCategory.class); + for (ErpCategory erpCategory : list) { + try{ + ValidatorUtils.validateWithException(erpCategory); + this.save(erpCategory); + successNum++; + successMsg.append("" + successNum + "銆佺紪鍙 " + erpCategory.getId() + " 瀵煎叆鎴愬姛"); + } catch (Exception e) { + failureNum++; + String msg = "" + failureNum + "銆佺紪鍙 " + erpCategory.getId() + " 瀵煎叆澶辫触锛"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation> violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏 " + successNum + " 鏉★紝鏁版嵁濡備笅锛"); + } + return successMsg.toString(); + } + + /** + * 鏇存柊鐘舵 + * @param erpCategory 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void updateStatus(ErpCategory erpCategory) { + super.updateStatus(erpCategory); + } + + /** + * 鍒犻櫎鏁版嵁 + * @param erpCategory 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void delete(ErpCategory erpCategory) { + super.delete(erpCategory); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/service/ErpExpenseService.java b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpExpenseService.java new file mode 100644 index 00000000..06f3e980 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpExpenseService.java @@ -0,0 +1,134 @@ +package com.jeesite.modules.erp.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.erp.entity.ErpExpense; +import com.jeesite.modules.erp.dao.ErpExpenseDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 鏀嚭淇℃伅Service + * @author gaoxq + * @version 2025-11-29 + */ +@Service +public class ErpExpenseService extends CrudService { + + /** + * 鑾峰彇鍗曟潯鏁版嵁 + * @param erpExpense 涓婚敭 + */ + @Override + public ErpExpense get(ErpExpense erpExpense) { + return super.get(erpExpense); + } + + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param erpExpense 鏌ヨ鏉′欢 + * @param erpExpense page 鍒嗛〉瀵硅薄 + */ + @Override + public Page findPage(ErpExpense erpExpense) { + return super.findPage(erpExpense); + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + * @param erpExpense 鏌ヨ鏉′欢 + */ + @Override + public List findList(ErpExpense erpExpense) { + return super.findList(erpExpense); + } + + /** + * 淇濆瓨鏁版嵁锛堟彃鍏ユ垨鏇存柊锛 + * @param erpExpense 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void save(ErpExpense erpExpense) { + super.save(erpExpense); + } + + /** + * 瀵煎叆鏁版嵁 + * @param file 瀵煎叆鐨勬暟鎹枃浠 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("璇烽夋嫨瀵煎叆鐨勬暟鎹枃浠讹紒")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(ErpExpense.class); + for (ErpExpense erpExpense : list) { + try{ + ValidatorUtils.validateWithException(erpExpense); + this.save(erpExpense); + successNum++; + successMsg.append("" + successNum + "銆佺紪鍙 " + erpExpense.getId() + " 瀵煎叆鎴愬姛"); + } catch (Exception e) { + failureNum++; + String msg = "" + failureNum + "銆佺紪鍙 " + erpExpense.getId() + " 瀵煎叆澶辫触锛"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation> violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏 " + successNum + " 鏉★紝鏁版嵁濡備笅锛"); + } + return successMsg.toString(); + } + + /** + * 鏇存柊鐘舵 + * @param erpExpense 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void updateStatus(ErpExpense erpExpense) { + super.updateStatus(erpExpense); + } + + /** + * 鍒犻櫎鏁版嵁 + * @param erpExpense 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void delete(ErpExpense erpExpense) { + super.delete(erpExpense); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/service/ErpIncomeService.java b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpIncomeService.java new file mode 100644 index 00000000..537e37d7 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpIncomeService.java @@ -0,0 +1,134 @@ +package com.jeesite.modules.erp.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.erp.entity.ErpIncome; +import com.jeesite.modules.erp.dao.ErpIncomeDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 鏀跺叆淇℃伅Service + * @author gaoxq + * @version 2025-11-29 + */ +@Service +public class ErpIncomeService extends CrudService { + + /** + * 鑾峰彇鍗曟潯鏁版嵁 + * @param erpIncome 涓婚敭 + */ + @Override + public ErpIncome get(ErpIncome erpIncome) { + return super.get(erpIncome); + } + + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param erpIncome 鏌ヨ鏉′欢 + * @param erpIncome page 鍒嗛〉瀵硅薄 + */ + @Override + public Page findPage(ErpIncome erpIncome) { + return super.findPage(erpIncome); + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + * @param erpIncome 鏌ヨ鏉′欢 + */ + @Override + public List findList(ErpIncome erpIncome) { + return super.findList(erpIncome); + } + + /** + * 淇濆瓨鏁版嵁锛堟彃鍏ユ垨鏇存柊锛 + * @param erpIncome 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void save(ErpIncome erpIncome) { + super.save(erpIncome); + } + + /** + * 瀵煎叆鏁版嵁 + * @param file 瀵煎叆鐨勬暟鎹枃浠 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("璇烽夋嫨瀵煎叆鐨勬暟鎹枃浠讹紒")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(ErpIncome.class); + for (ErpIncome erpIncome : list) { + try{ + ValidatorUtils.validateWithException(erpIncome); + this.save(erpIncome); + successNum++; + successMsg.append("" + successNum + "銆佺紪鍙 " + erpIncome.getId() + " 瀵煎叆鎴愬姛"); + } catch (Exception e) { + failureNum++; + String msg = "" + failureNum + "銆佺紪鍙 " + erpIncome.getId() + " 瀵煎叆澶辫触锛"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation> violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏 " + successNum + " 鏉★紝鏁版嵁濡備笅锛"); + } + return successMsg.toString(); + } + + /** + * 鏇存柊鐘舵 + * @param erpIncome 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void updateStatus(ErpIncome erpIncome) { + super.updateStatus(erpIncome); + } + + /** + * 鍒犻櫎鏁版嵁 + * @param erpIncome 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void delete(ErpIncome erpIncome) { + super.delete(erpIncome); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/service/ErpTransactionFlowService.java b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpTransactionFlowService.java new file mode 100644 index 00000000..bf5ef054 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/service/ErpTransactionFlowService.java @@ -0,0 +1,134 @@ +package com.jeesite.modules.erp.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.erp.entity.ErpTransactionFlow; +import com.jeesite.modules.erp.dao.ErpTransactionFlowDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 鏄庣粏淇℃伅Service + * @author gaoxq + * @version 2025-11-29 + */ +@Service +public class ErpTransactionFlowService extends CrudService { + + /** + * 鑾峰彇鍗曟潯鏁版嵁 + * @param erpTransactionFlow 涓婚敭 + */ + @Override + public ErpTransactionFlow get(ErpTransactionFlow erpTransactionFlow) { + return super.get(erpTransactionFlow); + } + + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param erpTransactionFlow 鏌ヨ鏉′欢 + * @param erpTransactionFlow page 鍒嗛〉瀵硅薄 + */ + @Override + public Page findPage(ErpTransactionFlow erpTransactionFlow) { + return super.findPage(erpTransactionFlow); + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + * @param erpTransactionFlow 鏌ヨ鏉′欢 + */ + @Override + public List findList(ErpTransactionFlow erpTransactionFlow) { + return super.findList(erpTransactionFlow); + } + + /** + * 淇濆瓨鏁版嵁锛堟彃鍏ユ垨鏇存柊锛 + * @param erpTransactionFlow 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void save(ErpTransactionFlow erpTransactionFlow) { + super.save(erpTransactionFlow); + } + + /** + * 瀵煎叆鏁版嵁 + * @param file 瀵煎叆鐨勬暟鎹枃浠 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("璇烽夋嫨瀵煎叆鐨勬暟鎹枃浠讹紒")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(ErpTransactionFlow.class); + for (ErpTransactionFlow erpTransactionFlow : list) { + try{ + ValidatorUtils.validateWithException(erpTransactionFlow); + this.save(erpTransactionFlow); + successNum++; + successMsg.append("" + successNum + "銆佺紪鍙 " + erpTransactionFlow.getId() + " 瀵煎叆鎴愬姛"); + } catch (Exception e) { + failureNum++; + String msg = "" + failureNum + "銆佺紪鍙 " + erpTransactionFlow.getId() + " 瀵煎叆澶辫触锛"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation> violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏 " + successNum + " 鏉★紝鏁版嵁濡備笅锛"); + } + return successMsg.toString(); + } + + /** + * 鏇存柊鐘舵 + * @param erpTransactionFlow 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void updateStatus(ErpTransactionFlow erpTransactionFlow) { + super.updateStatus(erpTransactionFlow); + } + + /** + * 鍒犻櫎鏁版嵁 + * @param erpTransactionFlow 鏁版嵁瀵硅薄 + */ + @Override + @Transactional + public void delete(ErpTransactionFlow erpTransactionFlow) { + super.delete(erpTransactionFlow); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/web/ErpAccountController.java b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpAccountController.java new file mode 100644 index 00000000..f0d9fc25 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpAccountController.java @@ -0,0 +1,146 @@ +package com.jeesite.modules.erp.web; + +import java.util.List; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.erp.entity.ErpAccount; +import com.jeesite.modules.erp.service.ErpAccountService; + +/** + * 璐︽埛淇℃伅Controller + * @author gaoxq + * @version 2025-11-29 + */ +@Controller +@RequestMapping(value = "${adminPath}/erp/account") +public class ErpAccountController extends BaseController { + + private final ErpAccountService erpAccountService; + + public ErpAccountController(ErpAccountService erpAccountService) { + this.erpAccountService = erpAccountService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public ErpAccount get(String accountId, boolean isNewRecord) { + return erpAccountService.get(accountId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("erp:account:view") + @RequestMapping(value = {"list", ""}) + public String list(ErpAccount erpAccount, Model model) { + model.addAttribute("erpAccount", erpAccount); + return "modules/erp/erpAccountList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("erp:account:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(ErpAccount erpAccount, HttpServletRequest request, HttpServletResponse response) { + erpAccount.setPage(new Page<>(request, response)); + Page page = erpAccountService.findPage(erpAccount); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("erp:account:view") + @RequestMapping(value = "form") + public String form(ErpAccount erpAccount, Model model) { + model.addAttribute("erpAccount", erpAccount); + return "modules/erp/erpAccountForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("erp:account:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated ErpAccount erpAccount) { + erpAccountService.save(erpAccount); + return renderResult(Global.TRUE, text("淇濆瓨璐︽埛淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("erp:account:view") + @RequestMapping(value = "exportData") + public void exportData(ErpAccount erpAccount, HttpServletResponse response) { + List list = erpAccountService.findList(erpAccount); + String fileName = "璐︽埛淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try(ExcelExport ee = new ExcelExport("璐︽埛淇℃伅", ErpAccount.class)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("erp:account:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + ErpAccount erpAccount = new ErpAccount(); + List list = ListUtils.newArrayList(erpAccount); + String fileName = "璐︽埛淇℃伅妯℃澘.xlsx"; + try(ExcelExport ee = new ExcelExport("璐︽埛淇℃伅", ErpAccount.class, Type.IMPORT)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("erp:account:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = erpAccountService.importData(file); + return renderResult(Global.TRUE, "posfull:"+message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("erp:account:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(ErpAccount erpAccount) { + erpAccountService.delete(erpAccount); + return renderResult(Global.TRUE, text("鍒犻櫎璐︽埛淇℃伅鎴愬姛锛")); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/web/ErpCategoryController.java b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpCategoryController.java new file mode 100644 index 00000000..f290acdf --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpCategoryController.java @@ -0,0 +1,154 @@ +package com.jeesite.modules.erp.web; + +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.erp.entity.ErpCategory; +import com.jeesite.modules.erp.service.ErpCategoryService; + +/** + * 鍒嗙被淇℃伅Controller + * + * @author gaoxq + * @version 2025-11-29 + */ +@Controller +@RequestMapping(value = "${adminPath}/erp/category") +public class ErpCategoryController extends BaseController { + + private final ErpCategoryService erpCategoryService; + + public ErpCategoryController(ErpCategoryService erpCategoryService) { + this.erpCategoryService = erpCategoryService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public ErpCategory get(String categoryId, boolean isNewRecord) { + return erpCategoryService.get(categoryId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("erp:category:view") + @RequestMapping(value = {"list", ""}) + public String list(ErpCategory erpCategory, Model model) { + model.addAttribute("erpCategory", erpCategory); + return "modules/erp/erpCategoryList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("erp:category:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(ErpCategory erpCategory, HttpServletRequest request, HttpServletResponse response) { + erpCategory.setPage(new Page<>(request, response)); + Page page = erpCategoryService.findPage(erpCategory); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("erp:category:view") + @RequestMapping(value = "form") + public String form(ErpCategory erpCategory, Model model) { + model.addAttribute("erpCategory", erpCategory); + return "modules/erp/erpCategoryForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("erp:category:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated ErpCategory erpCategory) { + erpCategoryService.save(erpCategory); + return renderResult(Global.TRUE, text("淇濆瓨鍒嗙被淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("erp:category:view") + @RequestMapping(value = "exportData") + public void exportData(ErpCategory erpCategory, HttpServletResponse response) { + List list = erpCategoryService.findList(erpCategory); + String fileName = "鍒嗙被淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try (ExcelExport ee = new ExcelExport("鍒嗙被淇℃伅", ErpCategory.class)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("erp:category:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + ErpCategory erpCategory = new ErpCategory(); + List list = ListUtils.newArrayList(erpCategory); + String fileName = "鍒嗙被淇℃伅妯℃澘.xlsx"; + try (ExcelExport ee = new ExcelExport("鍒嗙被淇℃伅", ErpCategory.class, Type.IMPORT)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("erp:category:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = erpCategoryService.importData(file); + return renderResult(Global.TRUE, "posfull:" + message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:" + ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("erp:category:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(ErpCategory erpCategory) { + erpCategoryService.delete(erpCategory); + return renderResult(Global.TRUE, text("鍒犻櫎鍒嗙被淇℃伅鎴愬姛锛")); + } + + @RequestMapping(value = "listAll") + @ResponseBody + public List listAll(ErpCategory erpCategory) { + return erpCategoryService.findList(erpCategory); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/web/ErpExpenseController.java b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpExpenseController.java new file mode 100644 index 00000000..b9bf6777 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpExpenseController.java @@ -0,0 +1,146 @@ +package com.jeesite.modules.erp.web; + +import java.util.List; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.erp.entity.ErpExpense; +import com.jeesite.modules.erp.service.ErpExpenseService; + +/** + * 鏀嚭淇℃伅Controller + * @author gaoxq + * @version 2025-11-29 + */ +@Controller +@RequestMapping(value = "${adminPath}/erp/expense") +public class ErpExpenseController extends BaseController { + + private final ErpExpenseService erpExpenseService; + + public ErpExpenseController(ErpExpenseService erpExpenseService) { + this.erpExpenseService = erpExpenseService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public ErpExpense get(String expenseId, boolean isNewRecord) { + return erpExpenseService.get(expenseId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("erp:expense:view") + @RequestMapping(value = {"list", ""}) + public String list(ErpExpense erpExpense, Model model) { + model.addAttribute("erpExpense", erpExpense); + return "modules/erp/erpExpenseList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("erp:expense:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(ErpExpense erpExpense, HttpServletRequest request, HttpServletResponse response) { + erpExpense.setPage(new Page<>(request, response)); + Page page = erpExpenseService.findPage(erpExpense); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("erp:expense:view") + @RequestMapping(value = "form") + public String form(ErpExpense erpExpense, Model model) { + model.addAttribute("erpExpense", erpExpense); + return "modules/erp/erpExpenseForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("erp:expense:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated ErpExpense erpExpense) { + erpExpenseService.save(erpExpense); + return renderResult(Global.TRUE, text("淇濆瓨鏀嚭淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("erp:expense:view") + @RequestMapping(value = "exportData") + public void exportData(ErpExpense erpExpense, HttpServletResponse response) { + List list = erpExpenseService.findList(erpExpense); + String fileName = "鏀嚭淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try(ExcelExport ee = new ExcelExport("鏀嚭淇℃伅", ErpExpense.class)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("erp:expense:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + ErpExpense erpExpense = new ErpExpense(); + List list = ListUtils.newArrayList(erpExpense); + String fileName = "鏀嚭淇℃伅妯℃澘.xlsx"; + try(ExcelExport ee = new ExcelExport("鏀嚭淇℃伅", ErpExpense.class, Type.IMPORT)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("erp:expense:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = erpExpenseService.importData(file); + return renderResult(Global.TRUE, "posfull:"+message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("erp:expense:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(ErpExpense erpExpense) { + erpExpenseService.delete(erpExpense); + return renderResult(Global.TRUE, text("鍒犻櫎鏀嚭淇℃伅鎴愬姛锛")); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/web/ErpIncomeController.java b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpIncomeController.java new file mode 100644 index 00000000..1ff9ae68 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpIncomeController.java @@ -0,0 +1,146 @@ +package com.jeesite.modules.erp.web; + +import java.util.List; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.erp.entity.ErpIncome; +import com.jeesite.modules.erp.service.ErpIncomeService; + +/** + * 鏀跺叆淇℃伅Controller + * @author gaoxq + * @version 2025-11-29 + */ +@Controller +@RequestMapping(value = "${adminPath}/erp/income") +public class ErpIncomeController extends BaseController { + + private final ErpIncomeService erpIncomeService; + + public ErpIncomeController(ErpIncomeService erpIncomeService) { + this.erpIncomeService = erpIncomeService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public ErpIncome get(String incomeId, boolean isNewRecord) { + return erpIncomeService.get(incomeId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("erp:income:view") + @RequestMapping(value = {"list", ""}) + public String list(ErpIncome erpIncome, Model model) { + model.addAttribute("erpIncome", erpIncome); + return "modules/erp/erpIncomeList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("erp:income:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(ErpIncome erpIncome, HttpServletRequest request, HttpServletResponse response) { + erpIncome.setPage(new Page<>(request, response)); + Page page = erpIncomeService.findPage(erpIncome); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("erp:income:view") + @RequestMapping(value = "form") + public String form(ErpIncome erpIncome, Model model) { + model.addAttribute("erpIncome", erpIncome); + return "modules/erp/erpIncomeForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("erp:income:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated ErpIncome erpIncome) { + erpIncomeService.save(erpIncome); + return renderResult(Global.TRUE, text("淇濆瓨鏀跺叆淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("erp:income:view") + @RequestMapping(value = "exportData") + public void exportData(ErpIncome erpIncome, HttpServletResponse response) { + List list = erpIncomeService.findList(erpIncome); + String fileName = "鏀跺叆淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try(ExcelExport ee = new ExcelExport("鏀跺叆淇℃伅", ErpIncome.class)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("erp:income:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + ErpIncome erpIncome = new ErpIncome(); + List list = ListUtils.newArrayList(erpIncome); + String fileName = "鏀跺叆淇℃伅妯℃澘.xlsx"; + try(ExcelExport ee = new ExcelExport("鏀跺叆淇℃伅", ErpIncome.class, Type.IMPORT)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("erp:income:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = erpIncomeService.importData(file); + return renderResult(Global.TRUE, "posfull:"+message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("erp:income:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(ErpIncome erpIncome) { + erpIncomeService.delete(erpIncome); + return renderResult(Global.TRUE, text("鍒犻櫎鏀跺叆淇℃伅鎴愬姛锛")); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/erp/web/ErpTransactionFlowController.java b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpTransactionFlowController.java new file mode 100644 index 00000000..d81b2746 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/erp/web/ErpTransactionFlowController.java @@ -0,0 +1,205 @@ +package com.jeesite.modules.erp.web; + +import java.util.Date; +import java.util.List; + +import com.jeesite.modules.erp.entity.ErpAccount; +import com.jeesite.modules.erp.entity.ErpExpense; +import com.jeesite.modules.erp.entity.ErpIncome; +import com.jeesite.modules.erp.service.ErpAccountService; +import com.jeesite.modules.erp.service.ErpExpenseService; +import com.jeesite.modules.erp.service.ErpIncomeService; +import com.jeesite.modules.utils.BigDecimalUtils; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.erp.entity.ErpTransactionFlow; +import com.jeesite.modules.erp.service.ErpTransactionFlowService; + +/** + * 鏄庣粏淇℃伅Controller + * + * @author gaoxq + * @version 2025-11-29 + */ +@Controller +@RequestMapping(value = "${adminPath}/erp/transactionFlow") +public class ErpTransactionFlowController extends BaseController { + + + @Resource + private ErpAccountService erpAccountService; + + @Resource + private ErpExpenseService erpExpenseService; + + @Resource + private ErpIncomeService erpIncomeService; + + private final ErpTransactionFlowService erpTransactionFlowService; + + public ErpTransactionFlowController(ErpTransactionFlowService erpTransactionFlowService) { + this.erpTransactionFlowService = erpTransactionFlowService; + } + + /** + * 鑾峰彇鏁版嵁 + */ + @ModelAttribute + public ErpTransactionFlow get(String flowId, boolean isNewRecord) { + return erpTransactionFlowService.get(flowId, isNewRecord); + } + + /** + * 鏌ヨ鍒楄〃 + */ + @RequiresPermissions("erp:transactionFlow:view") + @RequestMapping(value = {"list", ""}) + public String list(ErpTransactionFlow erpTransactionFlow, Model model) { + model.addAttribute("erpTransactionFlow", erpTransactionFlow); + return "modules/erp/erpTransactionFlowList"; + } + + /** + * 鏌ヨ鍒楄〃鏁版嵁 + */ + @RequiresPermissions("erp:transactionFlow:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(ErpTransactionFlow erpTransactionFlow, HttpServletRequest request, HttpServletResponse response) { + erpTransactionFlow.setPage(new Page<>(request, response)); + Page page = erpTransactionFlowService.findPage(erpTransactionFlow); + return page; + } + + /** + * 鏌ョ湅缂栬緫琛ㄥ崟 + */ + @RequiresPermissions("erp:transactionFlow:view") + @RequestMapping(value = "form") + public String form(ErpTransactionFlow erpTransactionFlow, Model model) { + model.addAttribute("erpTransactionFlow", erpTransactionFlow); + return "modules/erp/erpTransactionFlowForm"; + } + + /** + * 淇濆瓨鏁版嵁 + */ + @RequiresPermissions("erp:transactionFlow:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated ErpTransactionFlow erpTransactionFlow) { + erpTransactionFlowService.save(erpTransactionFlow); + return renderResult(Global.TRUE, text("淇濆瓨鏄庣粏淇℃伅鎴愬姛锛")); + } + + /** + * 瀵煎嚭鏁版嵁 + */ + @RequiresPermissions("erp:transactionFlow:view") + @RequestMapping(value = "exportData") + public void exportData(ErpTransactionFlow erpTransactionFlow, HttpServletResponse response) { + List list = erpTransactionFlowService.findList(erpTransactionFlow); + String fileName = "鏄庣粏淇℃伅" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try (ExcelExport ee = new ExcelExport("鏄庣粏淇℃伅", ErpTransactionFlow.class)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 涓嬭浇妯℃澘 + */ + @RequiresPermissions("erp:transactionFlow:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + ErpTransactionFlow erpTransactionFlow = new ErpTransactionFlow(); + List list = ListUtils.newArrayList(erpTransactionFlow); + String fileName = "鏄庣粏淇℃伅妯℃澘.xlsx"; + try (ExcelExport ee = new ExcelExport("鏄庣粏淇℃伅", ErpTransactionFlow.class, Type.IMPORT)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 瀵煎叆鏁版嵁 + */ + @ResponseBody + @RequiresPermissions("erp:transactionFlow:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = erpTransactionFlowService.importData(file); + return renderResult(Global.TRUE, "posfull:" + message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:" + ex.getMessage()); + } + } + + /** + * 鍒犻櫎鏁版嵁 + */ + @RequiresPermissions("erp:transactionFlow:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(ErpTransactionFlow erpTransactionFlow) { + erpTransactionFlowService.delete(erpTransactionFlow); + return renderResult(Global.TRUE, text("鍒犻櫎鏄庣粏淇℃伅鎴愬姛锛")); + } + + /** + * 璁拌处鏄庣粏 + */ + @RequiresPermissions("erp:transactionFlow:edit") + @RequestMapping(value = "finish") + @ResponseBody + public String finish(ErpTransactionFlow erpTransactionFlow) { + ErpTransactionFlow flow = erpTransactionFlowService.get(erpTransactionFlow); + ErpAccount account = erpAccountService.get(flow.getAccountId()); + switch (flow.getTransactionType()) { + case "1": + ErpExpense expense = new ErpExpense(); + expense.setZflowId(flow.getFlowId()); + expense.setAccountId(flow.getAccountId()); + expense.setCategoryId(flow.getCategoryId()); + expense.setAmount(flow.getAmount()); + erpExpenseService.save(expense); + account.setCurrentBalance(BigDecimalUtils.subtract(account.getCurrentBalance(), flow.getAmount())); + break; + case "2": + ErpIncome income = new ErpIncome(); + income.setSflowId(flow.getFlowId()); + income.setAccountId(flow.getAccountId()); + income.setCategoryId(flow.getCategoryId()); + income.setAmount(flow.getAmount()); + erpIncomeService.save(income); + account.setCurrentBalance(BigDecimalUtils.add(account.getCurrentBalance(), flow.getAmount())); + break; + } + + flow.setIsFinish("1"); + flow.setTransactionTime(new Date()); + account.setUpdateTime(new Date()); + erpAccountService.save(account); + erpTransactionFlowService.save(flow); + return renderResult(Global.TRUE, text("璁拌处鏄庣粏淇℃伅鎴愬姛锛")); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/utils/BigDecimalUtils.java b/web-api/src/main/java/com/jeesite/modules/utils/BigDecimalUtils.java new file mode 100644 index 00000000..e6c3ebab --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/utils/BigDecimalUtils.java @@ -0,0 +1,89 @@ +package com.jeesite.modules.utils; + + +import java.math.BigDecimal; +import java.math.RoundingMode; +public class BigDecimalUtils { + + + /** + * 鍔犳硶杩愮畻 + * + * @param num1 绗竴涓暟 + * @param num2 绗簩涓暟 + * @return 涓ゆ暟涔嬪拰 + */ + public static BigDecimal add(BigDecimal num1, BigDecimal num2) { + // 閬垮厤绌烘寚閽堬紝榛樿绌哄间负 0 + if (num1 == null) { + num1 = BigDecimal.ZERO; + } + if (num2 == null) { + num2 = BigDecimal.ZERO; + } + return num1.add(num2); + } + + /** + * 鍑忔硶杩愮畻 + * + * @param num1 琚噺鏁 + * @param num2 鍑忔暟 + * @return 涓ゆ暟涔嬪樊锛坣um1 - num2锛 + */ + public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) { + if (num1 == null) { + num1 = BigDecimal.ZERO; + } + if (num2 == null) { + num2 = BigDecimal.ZERO; + } + return num1.subtract(num2); + } + + /** + * 涔樻硶杩愮畻 + * + * @param num1 绗竴涓暟 + * @param num2 绗簩涓暟 + * @return 涓ゆ暟涔嬬Н + */ + public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) { + if (num1 == null || num2 == null) { + return BigDecimal.ZERO; + } + return num1.multiply(num2); + } + + /** + * 闄ゆ硶杩愮畻锛堝鐞嗛櫎涓嶅敖鐨勬儏鍐碉紝榛樿淇濈暀2浣嶅皬鏁帮紝鍥涜垗浜斿叆锛 + * + * @param num1 琚櫎鏁 + * @param num2 闄ゆ暟 + * @return 涓ゆ暟涔嬪晢锛坣um1 / num2锛 + */ + public static BigDecimal divide(BigDecimal num1, BigDecimal num2) { + return divide(num1, num2, 2, RoundingMode.HALF_UP); + } + + /** + * 闄ゆ硶杩愮畻锛堣嚜瀹氫箟绮惧害鍜岃垗鍏ユā寮忥級 + * + * @param num1 琚櫎鏁 + * @param num2 闄ゆ暟 + * @param scale 淇濈暀灏忔暟浣嶆暟 + * @param roundingMode 鑸嶅叆妯″紡锛堝鍥涜垗浜斿叆銆佸悜涓婂彇鏁寸瓑锛 + * @return 涓ゆ暟涔嬪晢锛坣um1 / num2锛 + */ + public static BigDecimal divide(BigDecimal num1, BigDecimal num2, int scale, RoundingMode roundingMode) { + if (num1 == null) { + return BigDecimal.ZERO; + } + if (num2 == null || num2.compareTo(BigDecimal.ZERO) == 0) { + throw new ArithmeticException("闄ゆ暟涓嶈兘涓 null 鎴 0"); + } + // 娉ㄦ剰锛歞ivide 鏂规硶蹇呴』鎸囧畾绮惧害鍜岃垗鍏ユā寮忥紝鍚﹀垯闄や笉灏芥椂浼氭姏寮傚父 + return num1.divide(num2, scale, roundingMode); + } + +} diff --git a/web-api/src/main/java/com/jeesite/modules/utils/IpUtils.java b/web-api/src/main/java/com/jeesite/modules/utils/IpUtils.java new file mode 100644 index 00000000..ec642c18 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/utils/IpUtils.java @@ -0,0 +1,92 @@ +package com.jeesite.modules.utils; + +import com.jeesite.common.config.Global; +import com.jeesite.common.io.FileUtils; + +import java.net.*; +import java.util.Enumeration; + +/** + * 鑾峰彇褰撳墠杩愯绋嬪簭鐨処P鍦板潃宸ュ叿绫 + */ +public class IpUtils { + + /** + * 鑾峰彇鏈湴鏈夋晥IP鍦板潃锛堜紭鍏圛Pv4锛屾帓闄ゅ洖鐜/铏氭嫙缃戝崱锛 + * + * @return 鏈湴IP鍦板潃锛岃幏鍙栧け璐ヨ繑鍥瀗ull + */ + public static String getLocalIp() { + try { + // 閬嶅巻鎵鏈夌綉缁滄帴鍙 + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + while (interfaces.hasMoreElements()) { + NetworkInterface ni = interfaces.nextElement(); + // 璺宠繃铏氭嫙缃戝崱銆佹湭鍚敤鐨勭綉鍗 + if (ni.isLoopback() || ni.isVirtual() || !ni.isUp()) { + continue; + } + // 閬嶅巻璇ョ綉鍗′笅鐨勬墍鏈塈P鍦板潃 + Enumeration addresses = ni.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress addr = addresses.nextElement(); + // 浠呬繚鐣橧Pv4鍦板潃锛屼笖鎺掗櫎鍥炵幆鍦板潃 + if (addr instanceof Inet4Address && !addr.isLoopbackAddress()) { + String ip = addr.getHostAddress(); + // 杩囨护鎺塪ocker绛夎櫄鎷熺綉鍗$殑IP锛堝彲閫夛紝鏍规嵁瀹為檯鍦烘櫙璋冩暣锛 + if (!ip.startsWith("172.") && !ip.startsWith("192.168.99.")) { + return ip; + } + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } + return getLoopbackIp(); + } + + /** + * 鑾峰彇鍥炵幆鍦板潃锛127.0.0.1锛 + * + * @return 鍥炵幆IP + */ + private static String getLoopbackIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + return "127.0.0.1"; + } + } + + /** + * 鑾峰彇褰撳墠鏈哄櫒鐨勬墍鏈夌綉鍗P锛堝惈IPv4/IPv6锛 + * + * @return 鎵鏈塈P鏁扮粍 + */ + public static String[] getAllLocalIps() { + try { + java.util.List ipList = new java.util.ArrayList<>(); + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + while (interfaces.hasMoreElements()) { + NetworkInterface ni = interfaces.nextElement(); + if (!ni.isUp()) continue; + Enumeration addresses = ni.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress addr = addresses.nextElement(); + ipList.add(addr.getHostAddress()); + } + } + return ipList.toArray(new String[0]); + } catch (SocketException e) { + e.printStackTrace(); + return new String[0]; + } + } + + + public static String getServerHttp() { + return "http://" + getLocalIp() + ":" + Global.getProperty("server.port") + FileUtils.path("/" + + Global.getProperty("server.servlet.context-path")); + } +} diff --git a/web-api/src/main/resources/mappings/modules/erp/ErpAccountDao.xml b/web-api/src/main/resources/mappings/modules/erp/ErpAccountDao.xml new file mode 100644 index 00000000..91aa1d55 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/erp/ErpAccountDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-api/src/main/resources/mappings/modules/erp/ErpCategoryDao.xml b/web-api/src/main/resources/mappings/modules/erp/ErpCategoryDao.xml new file mode 100644 index 00000000..7b400284 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/erp/ErpCategoryDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-api/src/main/resources/mappings/modules/erp/ErpExpenseDao.xml b/web-api/src/main/resources/mappings/modules/erp/ErpExpenseDao.xml new file mode 100644 index 00000000..d768aba7 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/erp/ErpExpenseDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-api/src/main/resources/mappings/modules/erp/ErpIncomeDao.xml b/web-api/src/main/resources/mappings/modules/erp/ErpIncomeDao.xml new file mode 100644 index 00000000..7e313904 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/erp/ErpIncomeDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-api/src/main/resources/mappings/modules/erp/ErpTransactionFlowDao.xml b/web-api/src/main/resources/mappings/modules/erp/ErpTransactionFlowDao.xml new file mode 100644 index 00000000..26d3c312 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/erp/ErpTransactionFlowDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-vue/package.json b/web-vue/package.json index 62b1d924..2ae24117 100644 --- a/web-vue/package.json +++ b/web-vue/package.json @@ -33,6 +33,7 @@ "@jeesite/core": "workspace:*", "@jeesite/dbm": "workspace:*", "@jeesite/dfm": "workspace:*", + "@jeesite/erp": "workspace:^", "@jeesite/test": "workspace:*", "@jeesite/types": "workspace:*", "@jeesite/vite": "workspace:*", diff --git a/web-vue/packages/assets/images/header.jpg b/web-vue/packages/assets/images/header.jpg index 04863b19..b0c228a7 100644 Binary files a/web-vue/packages/assets/images/header.jpg and b/web-vue/packages/assets/images/header.jpg differ diff --git a/web-vue/packages/assets/images/logo.png b/web-vue/packages/assets/images/logo.png index 3477d02a..0c9c06d5 100644 Binary files a/web-vue/packages/assets/images/logo.png and b/web-vue/packages/assets/images/logo.png differ diff --git a/web-vue/packages/assets/svg/login-box-bg.svg b/web-vue/packages/assets/svg/login-box-bg.svg index 61fa1e98..5f81c5b2 100644 --- a/web-vue/packages/assets/svg/login-box-bg.svg +++ b/web-vue/packages/assets/svg/login-box-bg.svg @@ -1,98 +1 @@ - - - - - - - - - - - - responsive - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/web-vue/packages/biz/api/biz/listItem.ts b/web-vue/packages/biz/api/biz/listItem.ts index deb09b19..f049a377 100644 --- a/web-vue/packages/biz/api/biz/listItem.ts +++ b/web-vue/packages/biz/api/biz/listItem.ts @@ -68,5 +68,10 @@ export const bizListItemImportData = ( params, ); +export const bizListItemSflow = (params?: BizListItem | any) => + defHttp.get({ url: adminPath + '/biz/listItem/sflow', params }); + export const bizListItemDelete = (params?: BizListItem | any) => defHttp.get({ url: adminPath + '/biz/listItem/delete', params }); + + diff --git a/web-vue/packages/biz/api/biz/projectInfo.ts b/web-vue/packages/biz/api/biz/projectInfo.ts index a07a5c7b..a9334c57 100644 --- a/web-vue/packages/biz/api/biz/projectInfo.ts +++ b/web-vue/packages/biz/api/biz/projectInfo.ts @@ -32,6 +32,9 @@ export interface BizProjectInfo extends BasicModel { export const bizProjectInfoList = (params?: BizProjectInfo | any) => defHttp.get({ url: adminPath + '/biz/projectInfo/list', params }); + +export const bizProjectInfoListAll = (params?: BizProjectInfo | any) => + defHttp.get({ url: adminPath + '/biz/projectInfo/listAll', params }); export const bizProjectInfoListData = (params?: BizProjectInfo | any) => defHttp.post>({ url: adminPath + '/biz/projectInfo/listData', params }); diff --git a/web-vue/packages/biz/views/biz/listItem/form.vue b/web-vue/packages/biz/views/biz/listItem/form.vue index 48516032..902d3583 100644 --- a/web-vue/packages/biz/views/biz/listItem/form.vue +++ b/web-vue/packages/biz/views/biz/listItem/form.vue @@ -50,25 +50,15 @@ maxlength: 512, }, required: true, - colProps: { md: 24, lg: 24 }, }, { - label: t('鏄惁鍒犻櫎'), - field: 'titleDelete', - component: 'Select', - componentProps: { - dictType: 'title_delete', - allowClear: true, - }, - }, - { - label: t('鍙戦佹椂闂'), + label: t('鍒版湡鏃堕棿'), field: 'datetime', component: 'DatePicker', componentProps: { - format: 'YYYY-MM-DD', - showTime: false, - }, + format: 'YYYY-MM-DD HH:mm', + showTime: { format: 'HH:mm' }, + }, }, { label: t('鎵灞炵被鍨'), @@ -81,32 +71,17 @@ required: true, }, { - label: t('鏄惁鍏抽棴'), - field: 'clickClose', - component: 'Select', + label: t('閫氱煡浜哄憳'), + field: 'loginUser', + fieldLabel: 'userName', + component: 'ListSelect', componentProps: { - dictType: 'click_close', - allowClear: true, + selectType: 'userSelect', }, + required: true, }, { - label: t('寰呭姙鐘舵'), - field: 'extra', - component: 'Input', - componentProps: { - maxlength: 64, - }, - }, - { - label: t('棰滆壊缂栫爜'), - field: 'color', - component: 'Input', - componentProps: { - maxlength: 32, - }, - }, - { - label: t('鎻忚堪淇℃伅'), + label: t('鍐呭淇℃伅'), field: 'description', component: 'InputTextArea', required: true, diff --git a/web-vue/packages/biz/views/biz/listItem/list.vue b/web-vue/packages/biz/views/biz/listItem/list.vue index 2c0f46e6..cde7250d 100644 --- a/web-vue/packages/biz/views/biz/listItem/list.vue +++ b/web-vue/packages/biz/views/biz/listItem/list.vue @@ -18,11 +18,14 @@ {{ t('鏂板') }} - - - {{ record.createTime }} + + + {{ record.title }} + + + @@ -92,12 +95,17 @@ allowClear: true, }, }, + { + label: t('寰呭姙鐘舵'), + field: 'extra', + component: 'Input', + }, { label: t('鏄惁宸茶'), field: 'readFlag', component: 'Select', componentProps: { - dictType: 'read_flag', + dictType: 'is_open', allowClear: true, }, }, @@ -106,15 +114,10 @@ field: 'clickClose', component: 'Select', componentProps: { - dictType: 'click_close', + dictType: 'is_open', allowClear: true, }, }, - { - label: t('寰呭姙鐘舵'), - field: 'extra', - component: 'Input', - }, ], }; @@ -126,7 +129,6 @@ sorter: true, width: 180, align: 'left', - slot: 'firstColumn', }, { title: t('澶村儚鍥炬爣'), @@ -135,6 +137,7 @@ sorter: true, width: 130, align: 'left', + slot: 'slotBizAvatar', }, { title: t('閫氱煡鏍囬'), @@ -143,6 +146,7 @@ sorter: true, width: 200, align: 'left', + slot: 'slotBizKey', }, { title: t('鏄惁鍒犻櫎'), @@ -151,10 +155,10 @@ sorter: true, width: 130, align: 'left', - dictType: 'title_delete', + dictType: 'is_open', }, { - title: t('鍙戦佹椂闂'), + title: t('鍒版湡鏃堕棿'), dataIndex: 'datetime', key: 'a.datetime', sorter: true, @@ -177,16 +181,24 @@ sorter: true, width: 130, align: 'left', - dictType: 'read_flag', + dictType: 'is_open', }, { - title: t('鎻忚堪淇℃伅'), + title: t('鍐呭淇℃伅'), dataIndex: 'description', key: 'a.description', sorter: true, width: 225, align: 'left', }, + { + title: t('鎺ユ敹鐢ㄦ埛'), + dataIndex: 'userName', + key: 'a.user_name', + sorter: true, + width: 130, + align: 'left', + }, { title: t('鏄惁鍏抽棴'), dataIndex: 'clickClose', @@ -194,7 +206,7 @@ sorter: true, width: 130, align: 'left', - dictType: 'click_close', + dictType: 'is_open', }, { title: t('寰呭姙鐘舵'), @@ -241,6 +253,7 @@ confirm: handleDelete.bind(this, record), }, auth: 'biz:listItem:edit', + ifShow: record.clickClose == false }, ], }; diff --git a/web-vue/packages/biz/views/biz/projectRequirements/form.vue b/web-vue/packages/biz/views/biz/projectRequirements/form.vue index 0284ba81..93a2ebdd 100644 --- a/web-vue/packages/biz/views/biz/projectRequirements/form.vue +++ b/web-vue/packages/biz/views/biz/projectRequirements/form.vue @@ -61,7 +61,7 @@ }, }, { - label: t('椤圭洰鍖哄煙'), + label: t('鍖哄煙鍚嶇О'), field: 'areaCode', fieldLabel: 'provinceName', component: 'ListSelect', @@ -81,7 +81,7 @@ required: true, }, { - label: t('闇姹備汉鍛'), + label: t('闇姹傜敤鎴'), field: 'employeeId', fieldLabel: 'employeeName', component: 'ListSelect', diff --git a/web-vue/packages/biz/views/biz/projectRequirements/list.vue b/web-vue/packages/biz/views/biz/projectRequirements/list.vue index 97052851..1a189b89 100644 --- a/web-vue/packages/biz/views/biz/projectRequirements/list.vue +++ b/web-vue/packages/biz/views/biz/projectRequirements/list.vue @@ -89,7 +89,7 @@ component: 'Input', }, { - label: t('椤圭洰鍖哄煙'), + label: t('鍖哄煙鍚嶇О'), field: 'areaCode', fieldLabel: 'provinceName', component: 'ListSelect', @@ -107,7 +107,7 @@ }, }, { - label: t('闇姹備汉鍛'), + label: t('闇姹傜敤鎴'), field: 'employeeId', fieldLabel: 'employeeName', component: 'ListSelect', @@ -172,14 +172,46 @@ width: 130, align: 'left', }, - { - title: t('椤圭洰鍖哄煙'), - dataIndex: 'areaCode', - key: 'a.area_code', - sorter: true, - width: 130, - align: 'left', - }, + { + title: t('闇姹傜敤鎴'), + dataIndex: 'employeeName', + key: 'b.employee_name', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('椤圭洰缂栫爜'), + dataIndex: 'projectCode', + key: 'c.project_code', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('椤圭洰鍚嶇О'), + dataIndex: 'projectName', + key: 'c.project_name', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('鍖哄煙缂栧彿'), + dataIndex: 'areaCode', + key: 'a.area_code', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('椤圭洰鍚嶇О'), + dataIndex: 'provinceName', + key: 'd.province_name', + sorter: true, + width: 130, + align: 'left', + }, { title: t('闇姹傛弿杩'), dataIndex: 'requirementDescription', @@ -242,6 +274,7 @@ const actionColumn: BasicColumn = { width: 160, + align: 'center', actions: (record: BizProjectRequirements) => [ { icon: 'i-clarity:note-edit-line', @@ -258,6 +291,7 @@ confirm: handleDelete.bind(this, record), }, auth: 'biz:projectRequirements:edit', + ifShow: record.requirementsStatus == 'PDC' }, ], }; diff --git a/web-vue/packages/biz/views/biz/projectRequirements/select.ts b/web-vue/packages/biz/views/biz/projectRequirements/select.ts deleted file mode 100644 index 10db9f38..00000000 --- a/web-vue/packages/biz/views/biz/projectRequirements/select.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { useI18n } from '@jeesite/core/hooks/web/useI18n'; -import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; -import { bizProjectRequirementsListData } from '@jeesite/biz/api/biz/projectRequirements'; - -const { t } = useI18n('biz.projectRequirements'); - -const modalProps = { - title: t('闇姹備俊鎭夋嫨'), -}; - -const searchForm: FormProps = { - baseColProps: { md: 8, lg: 6 }, - labelWidth: 90, - schemas: [ - { - label: t('璁板綍鏃ユ湡璧'), - field: 'createTime_gte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('璁板綍鏃ユ湡姝'), - field: 'createTime_lte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('闇姹傚悕绉'), - field: 'requirementName', - component: 'Input', - }, - { - label: t('闇姹傜紪鍙'), - field: 'requirementCode', - component: 'Input', - }, - { - label: t('椤圭洰鍖哄煙'), - field: 'areaCode', - component: 'Input', - }, - { - label: t('闇姹傛弿杩'), - field: 'requirementDescription', - component: 'Input', - }, - { - label: t('浼樺厛绾'), - field: 'priority', - component: 'Select', - componentProps: { - dictType: '', - allowClear: true, - }, - }, - { - label: t('椤圭洰ID'), - field: 'projectId', - component: 'Select', - componentProps: { - dictType: '', - allowClear: true, - }, - }, - { - label: t('鐢ㄦ埛ID'), - field: 'employeeId', - component: 'Select', - componentProps: { - dictType: '', - allowClear: true, - }, - }, - { - label: t('闇姹傚娉'), - field: 'remark', - component: 'Input', - }, - { - label: t('鐘舵'), - field: 'requirementsStatus', - component: 'Select', - componentProps: { - dictType: '', - allowClear: true, - }, - }, - ], -}; - -const tableColumns: BasicColumn[] = [ - { - title: t('璁板綍鏃ユ湡'), - dataIndex: 'createTime', - key: 'a.create_time', - sorter: true, - width: 230, - align: 'left', - slot: 'firstColumn', - }, - { - title: t('闇姹傚悕绉'), - dataIndex: 'requirementName', - key: 'a.requirement_name', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('闇姹傜紪鍙'), - dataIndex: 'requirementCode', - key: 'a.requirement_code', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('椤圭洰鍖哄煙'), - dataIndex: 'areaCode', - key: 'a.area_code', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('闇姹傛弿杩'), - dataIndex: 'requirementDescription', - key: 'a.requirement_description', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('寮濮嬫椂闂'), - dataIndex: 'startTime', - key: 'a.start_time', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('缁撴潫鏃堕棿'), - dataIndex: 'endTime', - key: 'a.end_time', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('浼樺厛绾'), - dataIndex: 'priority', - key: 'a.priority', - sorter: true, - width: 130, - align: 'left', - dictType: '', - }, - { - title: t('鏇存柊鏃堕棿'), - dataIndex: 'updateTime', - key: 'a.update_time', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('椤圭洰ID'), - dataIndex: 'projectId', - key: 'a.project_id', - sorter: true, - width: 130, - align: 'left', - dictType: '', - }, - { - title: t('鐢ㄦ埛ID'), - dataIndex: 'employeeId', - key: 'a.employee_id', - sorter: true, - width: 130, - align: 'left', - dictType: '', - }, - { - title: t('闇姹傚娉'), - dataIndex: 'remark', - key: 'a.remark', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('鐘舵'), - dataIndex: 'requirementsStatus', - key: 'a.requirements_status', - sorter: true, - width: 130, - align: 'left', - dictType: '', - }, -]; - -const tableProps: BasicTableProps = { - api: bizProjectRequirementsListData, - beforeFetch: (params) => { - params['isAll'] = true; - return params; - }, - columns: tableColumns, - formConfig: searchForm, - rowKey: 'requirementId', -}; - -export default { - modalProps, - tableProps, - itemCode: 'requirementId', - itemName: 'requirementId', - isShowCode: false, -}; diff --git a/web-vue/packages/biz/views/biz/quickLogin/form.vue b/web-vue/packages/biz/views/biz/quickLogin/form.vue index b835929d..f58e565f 100644 --- a/web-vue/packages/biz/views/biz/quickLogin/form.vue +++ b/web-vue/packages/biz/views/biz/quickLogin/form.vue @@ -63,7 +63,7 @@ colProps: { md: 24, lg: 24 }, }, { - label: t('鍥炬爣绫诲悕'), + label: t('鍥炬爣鍦板潃'), field: 'iconClass', component: 'Input', componentProps: { @@ -112,7 +112,7 @@ field: 'isEnabled', component: 'Select', componentProps: { - dictType: 'is_enabled', + dictType: 'ustatus', allowClear: true, }, required: true, diff --git a/web-vue/packages/biz/views/biz/quickLogin/list.vue b/web-vue/packages/biz/views/biz/quickLogin/list.vue index e10e54a1..2f96d817 100644 --- a/web-vue/packages/biz/views/biz/quickLogin/list.vue +++ b/web-vue/packages/biz/views/biz/quickLogin/list.vue @@ -15,9 +15,9 @@ {{ t('鏂板') }} - - - {{ record.createTime }} + + + {{ record.systemName }} @@ -85,26 +85,26 @@ sorter: true, width: 180, align: 'left', - slot: 'firstColumn', }, { title: t('绯荤粺鍚嶇О'), dataIndex: 'systemName', key: 'a.system_name', sorter: true, - width: 225, + width: 200, align: 'left', + slot: 'slotBizKey', }, { title: t('棣栭〉鍦板潃'), dataIndex: 'homepageUrl', key: 'a.homepage_url', sorter: true, - width: 200, + width: 225, align: 'left', }, { - title: t('鍥炬爣绫诲悕'), + title: t('鍥炬爣鍦板潃'), dataIndex: 'iconClass', key: 'a.icon_class', sorter: true, @@ -150,7 +150,7 @@ sorter: true, width: 130, align: 'center', - dictType: 'is_enabled', + dictType: 'ustatus', }, { title: t('鏇存柊鏃堕棿'), diff --git a/web-vue/packages/core/components/ListSelect/src/selectType/erpAccountSelect.ts b/web-vue/packages/core/components/ListSelect/src/selectType/erpAccountSelect.ts new file mode 100644 index 00000000..46d65ab8 --- /dev/null +++ b/web-vue/packages/core/components/ListSelect/src/selectType/erpAccountSelect.ts @@ -0,0 +1,123 @@ +import { useI18n } from '@jeesite/core/hooks/web/useI18n'; +import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; +import { ErpAccount, erpAccountListData } from '@jeesite/erp/api/erp/account'; + +const { t } = useI18n('erp.account'); + +const modalProps = { + title: t('璐︽埛淇℃伅閫夋嫨'), +}; + +const searchForm: FormProps = { + baseColProps: { md: 8, lg: 6 }, + labelWidth: 90, + schemas: [ + { + label: t('璐︽埛鍚嶇О'), + field: 'accountName', + component: 'Input', + }, + { + label: t('璐︽埛绫诲瀷'), + field: 'accountType', + component: 'Input', + }, + { + label: t('鏄惁婵娲'), + field: 'isActive', + component: 'Select', + componentProps: { + dictType: 'is_active', + allowClear: true, + }, + }, + ], +}; + +const tableColumns: BasicColumn[] = [ + { + title: t('璁板綍鏃堕棿'), + dataIndex: 'createTime', + key: 'a.create_time', + sorter: true, + width: 180, + align: 'left', + }, + { + title: t('璐︽埛鍚嶇О'), + dataIndex: 'accountName', + key: 'a.account_name', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('璐︽埛绫诲瀷'), + dataIndex: 'accountType', + key: 'a.account_type', + sorter: true, + width: 130, + align: 'left', + dictType: 'account_type' + }, + { + title: t('璐︽埛鍗″彿'), + dataIndex: 'accountCode', + key: 'a.account_code', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('鍒濆浣欓'), + dataIndex: 'initialBalance', + key: 'a.initial_balance', + sorter: true, + width: 130, + align: 'right', + }, + { + title: t('褰撳墠浣欓'), + dataIndex: 'currentBalance', + key: 'a.current_balance', + sorter: true, + width: 130, + align: 'right', + }, + { + title: t('鏄惁婵娲'), + dataIndex: 'isActive', + key: 'a.is_active', + sorter: true, + width: 130, + align: 'left', + dictType: 'is_active', + }, + { + title: t('鏇存柊鏃堕棿'), + dataIndex: 'updateTime', + key: 'a.update_time', + sorter: true, + width: 180, + align: 'center', + }, +]; + +const tableProps: BasicTableProps = { + api: erpAccountListData, + beforeFetch: (params) => { + params['isAll'] = true; + return params; + }, + columns: tableColumns, + formConfig: searchForm, + rowKey: 'accountId', +}; + +export default { + modalProps, + tableProps, + itemCode: 'accountId', + itemName: 'accountName', + isShowCode: true, +}; diff --git a/web-vue/packages/core/components/ListSelect/src/selectType/erpCategorySelect.ts b/web-vue/packages/core/components/ListSelect/src/selectType/erpCategorySelect.ts new file mode 100644 index 00000000..010228e2 --- /dev/null +++ b/web-vue/packages/core/components/ListSelect/src/selectType/erpCategorySelect.ts @@ -0,0 +1,120 @@ +import { useI18n } from '@jeesite/core/hooks/web/useI18n'; +import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; +import { ErpCategory, erpCategoryListData } from '@jeesite/erp/api/erp/category'; + +const { t } = useI18n('erp.category'); + +const modalProps = { + title: t('鍒嗙被淇℃伅閫夋嫨'), +}; + +const searchForm: FormProps = { + baseColProps: { md: 8, lg: 6 }, + labelWidth: 90, + schemas: [ + { + label: t('鍒嗙被鍚嶇О'), + field: 'categoryName', + component: 'Input', + }, + { + label: t('鍒嗙被绫诲瀷'), + field: 'categoryType', + component: 'Select', + componentProps: { + dictType: 'category_type', + allowClear: true, + }, + }, + { + label: t('鏄惁鍚敤'), + field: 'isActive', + component: 'Select', + componentProps: { + dictType: 'is_active', + allowClear: true, + }, + }, + ], +}; + +const tableColumns: BasicColumn[] = [ + { + title: t('璁板綍鏃堕棿'), + dataIndex: 'createTime', + key: 'a.create_time', + sorter: true, + width: 180, + align: 'left', + }, + { + title: t('鍒嗙被鍚嶇О'), + dataIndex: 'categoryName', + key: 'a.category_name', + sorter: true, + width: 230, + align: 'left', + }, + { + title: t('鍒嗙被绫诲瀷'), + dataIndex: 'categoryType', + key: 'a.category_type', + sorter: true, + width: 130, + align: 'left', + dictType: 'category_type', + }, + { + title: t('鐖剁骇鍒嗙被'), + dataIndex: 'parentId', + key: 'a.parent_id', + sorter: true, + width: 130, + align: 'left', + dictType: 'parent_type', + }, + { + title: t('鎺掑簭搴忓彿'), + dataIndex: 'sortOrder', + key: 'a.sort_order', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('鏄惁鍚敤'), + dataIndex: 'isActive', + key: 'a.is_active', + sorter: true, + width: 130, + align: 'left', + dictType: 'is_active', + }, + { + title: t('鏇存柊鏃堕棿'), + dataIndex: 'updateTime', + key: 'a.update_time', + sorter: true, + width: 180, + align: 'center', + }, +]; + +const tableProps: BasicTableProps = { + api: erpCategoryListData, + beforeFetch: (params) => { + params['isAll'] = true; + return params; + }, + columns: tableColumns, + formConfig: searchForm, + rowKey: 'categoryId', +}; + +export default { + modalProps, + tableProps, + itemCode: 'categoryId', + itemName: 'categoryName', + isShowCode: false, +}; diff --git a/web-vue/packages/core/components/ListSelect/src/selectType/erpFlowSelect.ts b/web-vue/packages/core/components/ListSelect/src/selectType/erpFlowSelect.ts new file mode 100644 index 00000000..6d48bd0b --- /dev/null +++ b/web-vue/packages/core/components/ListSelect/src/selectType/erpFlowSelect.ts @@ -0,0 +1,128 @@ +import { useI18n } from '@jeesite/core/hooks/web/useI18n'; +import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; +import { ErpTransactionFlow, erpTransactionFlowListData } from '@jeesite/erp/api/erp/transactionFlow'; + +const { t } = useI18n('erp.transactionFlow'); + +const modalProps = { + title: t('鏄庣粏淇℃伅閫夋嫨'), +}; + +const searchForm: FormProps = { + baseColProps: { md: 8, lg: 6 }, + labelWidth: 90, + schemas: [ + { + label: t('浜ゆ槗鍚嶇О'), + field: 'flowName', + component: 'Input', + }, + { + label: t('浜ゆ槗绫诲瀷'), + field: 'transactionType', + component: 'Select', + componentProps: { + dictType: 'transaction_type', + allowClear: true, + }, + }, + { + label: t('鏄惁璁拌处'), + field: 'isFinish', + component: 'Select', + componentProps: { + dictType: 'is_finish', + allowClear: true, + }, + }, + ], +}; + +const tableColumns: BasicColumn[] = [ + { + title: t('璁板綍鏃堕棿'), + dataIndex: 'createTime', + key: 'a.create_time', + sorter: true, + width: 180, + align: 'left', + slot: 'firstColumn', + }, + { + title: t('浜ゆ槗鍚嶇О'), + dataIndex: 'flowName', + key: 'a.flow_name', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('浜ゆ槗绫诲瀷'), + dataIndex: 'transactionType', + key: 'a.transaction_type', + sorter: true, + width: 130, + align: 'left', + dictType: 'transaction_type', + }, + { + title: t('浜ゆ槗閲戦'), + dataIndex: 'amount', + key: 'a.amount', + sorter: true, + width: 130, + align: 'right', + }, + { + title: t('浜ゆ槗鏃堕棿'), + dataIndex: 'transactionTime', + key: 'a.transaction_time', + sorter: true, + width: 180, + align: 'center', + }, + { + title: t('浜ゆ槗澶囨敞'), + dataIndex: 'remark', + key: 'a.remark', + sorter: true, + width: 130, + align: 'left', + }, + { + title: t('鏄惁璁拌处'), + dataIndex: 'isFinish', + key: 'a.is_finish', + sorter: true, + width: 130, + align: 'left', + dictType: 'is_finish', + }, + { + title: t('鏇存柊鏃堕棿'), + dataIndex: 'updateTime', + key: 'a.update_time', + sorter: true, + width: 180, + align: 'center', + }, +]; + +const tableProps: BasicTableProps = { + api: erpTransactionFlowListData, + beforeFetch: (params) => { + params['isAll'] = true; + return params; + }, + columns: tableColumns, + formConfig: searchForm, + rowKey: 'flowId', +}; + +export default { + modalProps, + tableProps, + itemCode: 'flowId', + itemName: 'flowName', + isShowCode: true, +}; diff --git a/web-vue/packages/core/layouts/default/header/components/notify/data.ts b/web-vue/packages/core/layouts/default/header/components/notify/data.ts deleted file mode 100644 index a6f33eec..00000000 --- a/web-vue/packages/core/layouts/default/header/components/notify/data.ts +++ /dev/null @@ -1,196 +0,0 @@ -export interface ListItem { - id: string; - avatar: string; - // 閫氱煡鐨勬爣棰樺唴瀹 - title: string; - // 鏄惁鍦ㄦ爣棰樹笂鏄剧ず鍒犻櫎绾 - titleDelete?: boolean; - datetime?: string; - type: string; - read?: boolean; - description: string; - clickClose?: boolean; - extra?: string; - color?: string; -} - -export interface TabItem { - key: string; - name: string; - count?: number; - btnHref?: string; - btnText?: string; - list: ListItem[]; - unreadlist?: ListItem[]; -} - -export const tabListData: TabItem[] = [ - { - key: '1', - name: '閫氱煡', - list: [ - { - id: '000000001', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', - title: '浣犳敹鍒颁簡 10 浠芥柊鍛ㄦ姤', - description: '', - datetime: '2022-08-09', - type: '1', - }, - { - id: '000000002', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', - title: '浣犳帹鑽愮殑鏋滄眮宸查氳繃绗笁杞潰璇', - description: '', - datetime: '2022-08-08', - type: '1', - }, - { - id: '000000003', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png', - title: '杩欑妯℃澘鍙互鍖哄垎澶氱閫氱煡绫诲瀷', - description: '', - datetime: '2022-08-07', - // read: true, - type: '1', - }, - { - id: '000000004', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000005', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: - '鏍囬鍙互璁剧疆鑷姩鏄剧ず鐪佺暐鍙凤紝鏈緥涓爣棰樿鏁板凡璁句负1琛岋紝濡傛灉鍐呭瓒呰繃1琛屽皢鑷姩鎴柇骞舵敮鎸乼ooltip鏄剧ず瀹屾暣鏍囬銆', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000006', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000007', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000008', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000009', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - { - id: '000000010', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '宸︿晶鍥炬爣鐢ㄤ簬鍖哄垎涓嶅悓鐨勭被鍨', - description: '', - datetime: '2022-08-07', - type: '1', - }, - ], - }, - { - key: '2', - name: '娑堟伅', - list: [ - { - id: '000000006', - avatar: 'ant-design:message-outlined', - title: '褰╄櫣 璇勮浜嗕綘', - description: '鎻忚堪淇℃伅鎻忚堪淇℃伅鎻忚堪淇℃伅', - datetime: '2022-08-07', - type: '2', - clickClose: true, - }, - { - id: '000000007', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', - title: '鏋滄眮 鍥炲浜嗕綘', - description: '杩欑妯℃澘鐢ㄤ簬鎻愰啋璋佷笌浣犲彂鐢熶簡浜掑姩', - datetime: '2022-08-07', - type: '2', - clickClose: true, - }, - { - id: '000000008', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', - title: '鏍囬', - description: - '璇峰皢榧犳爣绉诲姩鍒版澶勶紝浠ヤ究娴嬭瘯瓒呴暱鐨勬秷鎭湪姝ゅ灏嗗浣曞鐞嗐傛湰渚嬩腑璁剧疆鐨勬弿杩版渶澶ц鏁颁负2锛岃秴杩2琛岀殑鎻忚堪鍐呭灏嗚鐪佺暐骞朵笖鍙互閫氳繃tooltip鏌ョ湅瀹屾暣鍐呭', - datetime: '2022-08-07', - type: '2', - clickClose: true, - }, - ], - }, - { - key: '3', - name: '寰呭姙', - list: [ - { - id: '000000009', - avatar: '', - title: '浠诲姟鍚嶇О', - description: '浠诲姟闇瑕佸湪 2022-01-12 20:00 鍓嶅惎鍔', - datetime: '', - extra: '鏈紑濮', - color: '', - type: '3', - }, - { - id: '000000010', - avatar: '', - title: '绗笁鏂圭揣鎬ヤ唬鐮佸彉鏇', - description: '褰╄櫣 闇鍦 2022-01-07 鍓嶅畬鎴愪唬鐮佸彉鏇翠换鍔', - datetime: '', - extra: '椹笂鍒版湡', - color: 'red', - type: '3', - }, - { - id: '000000011', - avatar: '', - title: '淇℃伅瀹夊叏鑰冭瘯', - description: '鎸囨淳绔瑰皵浜 2022-01-09 鍓嶅畬鎴愭洿鏂板苟鍙戝竷', - datetime: '', - extra: '宸茶楁椂 8 澶', - color: 'gold', - type: '3', - }, - { - id: '000000012', - avatar: '', - title: 'ABCD 鐗堟湰鍙戝竷', - description: '鎸囨淳绔瑰皵浜 2022-01-09 鍓嶅畬鎴愭洿鏂板苟鍙戝竷', - datetime: '', - extra: '杩涜涓', - color: 'blue', - type: '3', - }, - ], - }, -]; diff --git a/web-vue/packages/core/layouts/default/header/components/notify/index.vue b/web-vue/packages/core/layouts/default/header/components/notify/index.vue index 3f447497..8f7ea21c 100644 --- a/web-vue/packages/core/layouts/default/header/components/notify/index.vue +++ b/web-vue/packages/core/layouts/default/header/components/notify/index.vue @@ -13,7 +13,8 @@ ({{ item.list.length }}) - + + @@ -28,7 +29,7 @@ import NoticeList from './NoticeList.vue'; import { useDesign } from '@jeesite/core/hooks/web/useDesign'; import { useMessage } from '@jeesite/core/hooks/web/useMessage'; - import { tabListDataAll, TabItem, BizListItem } from '@jeesite/biz/api/biz/listItem'; + import { tabListDataAll, bizListItemSflow, TabItem, BizListItem } from '@jeesite/biz/api/biz/listItem'; export default defineComponent({ components: { Popover, BellOutlined, Tabs, TabPane: Tabs.TabPane, Badge, NoticeList }, @@ -53,10 +54,11 @@ } return count; }); - - function onNoticeClick(record: BizListItem) { - createMessage.success('浣犵偣鍑讳簡' + record.title); - getDataList() + + async function onNoticeClick(record: BizListItem) { + const res = await bizListItemSflow(record); + createMessage.success(res.message); + getDataList() } onMounted(() => { diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/Data.tsx b/web-vue/packages/core/layouts/views/desktop/analysis/components/Data.tsx index a37cdfeb..31c2be54 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/Data.tsx +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/Data.tsx @@ -121,168 +121,6 @@ export const groupItems: GroupItem[] = [ group: '鍓嶇缁', date: '2021-09-01', }, - { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { - title: 'Vue', - icon: 'i-ion:logo-vue', - color: '#3fb27f', - desc: '鐜板湪鐨勪綘鍐冲畾灏嗘潵鐨勪綘銆', - group: '鍓嶇缁', - date: '2021-09-01', - }, { title: 'Html5', icon: 'i-ion:logo-html5', diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue index b8361ee4..c1455732 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/ProjectCard.vue @@ -3,19 +3,37 @@ 鏇村 - - - - - - - {{ item.title }} - - {{ item.desc }} - - {{ item.group }} - {{ item.date }} + + + + + {{ item.projectName }} + + + {{ item.projectDesc }} + + + + + + 寮濮嬫椂闂: {{ item.startDate }} + + + + 椤圭洰缂栫爜: {{ item.projectCode }} + + + + + + 缁撴潫鏃堕棿: {{ item.endDate }} + + + + 椤圭洰缁忕悊: {{ item.employeeName }} + + @@ -23,17 +41,34 @@