From f7c7aa9c06313eff6e33819ecf19651808137162 Mon Sep 17 00:00:00 2001 From: user Date: Sun, 16 Mar 2025 22:33:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(repository):=20=E6=B7=BB=E5=8A=A0=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E5=92=8C=E5=BA=93=E5=AD=98=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DictRepository 中添加了 countDicts 和 countRootDicts 方法 - 在 StockRepository 中添加了 countStocks 方法 - 更新了 DictService 和 StockService,增加了计数相关的方法 - 修改了 DictResource 和 StockResource,添加了计数结果到 HTTP 响应头 - 更新了字典数据,增加了新的物料分类和属性 --- .../vxnet/pms/repository/DictRepository.java | 21 +++++++ .../vxnet/pms/repository/StockRepository.java | 9 +++ .../com/vxnet/pms/service/DictService.java | 8 +++ .../com/vxnet/pms/service/StockService.java | 4 ++ .../com/vxnet/pms/web/rest/DictResource.java | 9 ++- .../com/vxnet/pms/web/rest/StockResource.java | 5 +- .../resources/config/liquibase/data/dict.csv | 62 ++++++++++++++++--- 7 files changed, 106 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/vxnet/pms/repository/DictRepository.java b/src/main/java/com/vxnet/pms/repository/DictRepository.java index faf6ad1..f2578b9 100644 --- a/src/main/java/com/vxnet/pms/repository/DictRepository.java +++ b/src/main/java/com/vxnet/pms/repository/DictRepository.java @@ -27,6 +27,18 @@ public interface DictRepository extends R2dbcRepository { ) Flux findRootDicts(String organization, @Param("params") Map params, Pageable pageable); + @Query( + "SELECT COUNT(*) FROM jhi_dict WHERE IFNULL(parent_number, '') = '' " + + "AND (:#{#organization} = '*' OR organization = :#{#organization}) " + + "AND (:#{#params['number']} IS NULL OR number = :#{#params['number']}) " + + "AND (:#{#params['name']} IS NULL OR name LIKE CONCAT('%', :#{#params['name']}, '%')) " + + "AND (:#{#params['likeNumberName']} IS NULL OR CONCAT(number,name) LIKE CONCAT('%', :#{#params['likeNumberName']}, '%')) " + + "AND (:#{#params['parentNumber']} IS NULL OR IFNULL(parent_number, '') = :#{#params['parentNumber']}) " + + "AND (:#{#params['property']} IS NULL OR property LIKE CONCAT('%', :#{#params['property']}, '%')) " + + "AND (:#{#params['status']} IS NULL OR status = :#{#params['status']}) " + ) + Mono countRootDicts(String organization, @Param("params") Map params); + @Query( "SELECT * FROM jhi_dict WHERE (:#{#organization} = '*' OR organization = :#{#organization}) AND parent_number = :parentNumber ORDER BY sort_no ASC" ) @@ -37,6 +49,15 @@ public interface DictRepository extends R2dbcRepository { ) Mono countChildren(String organization, @Param("parentNumber") String parentNumber); + @Query( + "SELECT COUNT(*) FROM jhi_dict WHERE (:#{#organization} = '*' OR organization = :#{#organization}) " + + "AND (:#{#params['number']} IS NULL OR number = :#{#params['number']}) " + + "AND (:#{#params['name']} IS NULL OR name LIKE CONCAT('%', :#{#params['name']}, '%')) " + + "AND (:#{#params['parentNumber']} IS NULL OR parent_number = :#{#params['parentNumber']}) " + + "AND (:#{#params['status']} IS NULL OR status = :#{#params['status']}) " + ) + Mono countDicts(String organization, @Param("params") Map params); + @Query( "SELECT * FROM jhi_dict WHERE (:#{#organization} = '*' OR organization = :#{#organization}) " + "AND (:#{#params['number']} IS NULL OR number = :#{#params['number']}) " + diff --git a/src/main/java/com/vxnet/pms/repository/StockRepository.java b/src/main/java/com/vxnet/pms/repository/StockRepository.java index 688c19b..6a508d6 100644 --- a/src/main/java/com/vxnet/pms/repository/StockRepository.java +++ b/src/main/java/com/vxnet/pms/repository/StockRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.r2dbc.repository.Query; import org.springframework.data.r2dbc.repository.R2dbcRepository; import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; /** * Spring Data R2DBC repository for the Stock entity. @@ -24,4 +25,12 @@ public interface StockRepository extends R2dbcRepository { "SELECT number, name, property, sort_no FROM jhi_stock WHERE (:#{#organization} = '*' OR organization = :#{#organization}) AND status = 1 ORDER BY number ASC" ) Flux> findActiveStocks(String organization); + + @Query( + "SELECT COUNT(*) FROM jhi_stock WHERE (:#{#organization} = '*' OR organization = :#{#organization}) " + + "AND (:#{#params['number']} IS NULL OR number = :#{#params['number']}) " + + "AND (:#{#params['name']} IS NULL OR name LIKE CONCAT('%', :#{#params['name']}, '%')) " + + "AND (:#{#params['property']} IS NULL OR property LIKE CONCAT('%', :#{#params['property']}, '%'))" + ) + Mono countStocks(String organization, Map params); } diff --git a/src/main/java/com/vxnet/pms/service/DictService.java b/src/main/java/com/vxnet/pms/service/DictService.java index 1412862..c5b105a 100644 --- a/src/main/java/com/vxnet/pms/service/DictService.java +++ b/src/main/java/com/vxnet/pms/service/DictService.java @@ -71,12 +71,20 @@ public class DictService { ); } + public Mono countDicts(Map params) { + return SecurityUtils.getCurrentOrganization().flatMap(organization -> dictRepository.countDicts(organization, params)); + } + public Flux getDicts(Map params, Pageable pageable) { return SecurityUtils.getCurrentOrganization() .map(organization -> dictRepository.findDicts(organization, params, pageable)) .flatMapMany(dicts -> dicts); } + public Mono countRootDicts(Map params) { + return SecurityUtils.getCurrentOrganization().flatMap(organization -> dictRepository.countRootDicts(organization, params)); + } + public Flux getDictTree(Map params, Pageable pageable) { return SecurityUtils.getCurrentOrganization() .map(organization -> dictRepository.findRootDicts(organization, params, pageable)) diff --git a/src/main/java/com/vxnet/pms/service/StockService.java b/src/main/java/com/vxnet/pms/service/StockService.java index 19fd4a7..5d4babf 100644 --- a/src/main/java/com/vxnet/pms/service/StockService.java +++ b/src/main/java/com/vxnet/pms/service/StockService.java @@ -60,6 +60,10 @@ public class StockService { .flatMapMany(stocks -> stocks); } + public Mono countStocks(Map params) { + return SecurityUtils.getCurrentOrganization().flatMap(organization -> stockRepository.countStocks(organization, params)); + } + @Transactional(readOnly = true) public Flux> getActiveStocks() { return SecurityUtils.getCurrentOrganization() diff --git a/src/main/java/com/vxnet/pms/web/rest/DictResource.java b/src/main/java/com/vxnet/pms/web/rest/DictResource.java index d7ff673..983f9b3 100644 --- a/src/main/java/com/vxnet/pms/web/rest/DictResource.java +++ b/src/main/java/com/vxnet/pms/web/rest/DictResource.java @@ -72,7 +72,9 @@ public class DictResource { if (!onlyContainsAllowedProperties(pageable)) { return Mono.just(ResponseEntity.badRequest().build()); } - return Mono.just(ResponseEntity.ok().body(dictService.getDicts(params, pageable))); + return dictService + .countDicts(params) + .map(total -> ResponseEntity.ok().header("X-Total-Count", String.valueOf(total)).body(dictService.getDicts(params, pageable))); } @GetMapping("/dicts/tree") @@ -83,6 +85,9 @@ public class DictResource { if (!onlyContainsAllowedProperties(pageable)) { return Mono.just(ResponseEntity.badRequest().build()); } - return Mono.just(ResponseEntity.ok().body(dictService.getDictTree(params, pageable))); + return dictService + .countRootDicts(params) + .map(total -> ResponseEntity.ok().header("X-Total-Count", String.valueOf(total)).body(dictService.getDictTree(params, pageable)) + ); } } diff --git a/src/main/java/com/vxnet/pms/web/rest/StockResource.java b/src/main/java/com/vxnet/pms/web/rest/StockResource.java index e8acff0..cf2f763 100644 --- a/src/main/java/com/vxnet/pms/web/rest/StockResource.java +++ b/src/main/java/com/vxnet/pms/web/rest/StockResource.java @@ -81,7 +81,10 @@ public class StockResource { if (!onlyContainsAllowedProperties(pageable)) { return Mono.just(ResponseEntity.badRequest().build()); } - return Mono.just(ResponseEntity.ok().body(stockService.getStocks(params, pageable))); + return stockService + .countStocks(params) + .map(total -> ResponseEntity.ok().header("X-Total-Count", String.valueOf(total)).body(stockService.getStocks(params, pageable)) + ); } @GetMapping("/stocks/active") diff --git a/src/main/resources/config/liquibase/data/dict.csv b/src/main/resources/config/liquibase/data/dict.csv index 8d17b88..f91aa33 100644 --- a/src/main/resources/config/liquibase/data/dict.csv +++ b/src/main/resources/config/liquibase/data/dict.csv @@ -39,16 +39,60 @@ id;number;parent_number;name;property;remark;status;sort_no;organization;created 38;50;TransactStatus;退回;;;1;0;ORG001;admin;2025-03-12 10:56:21.730067;admin;2025-03-12 10:56:21.730067;0 39;TransactStatus;;生产状态;;;1;0;ORG001;admin;2025-03-12 10:59:24.971458;admin;2025-03-12 10:59:24.971458;0 40;MatGroup1;;物料大类;;;1;0;ORG001;admin;2025-03-16 16:10:39.916246;admin;2025-03-16 16:10:39.916246;0 -41;GD;MatGroup1;黄金;;;1;0;ORG001;admin;2025-03-16 16:14:59.151541;admin;2025-03-16 16:14:59.151541;0 -42;SL;MatGroup1;白银;;;1;0;ORG001;admin;2025-03-16 16:28:46.755507;admin;2025-03-16 16:28:46.755507;0 -43;CU;MatGroup1;铜料;;;1;0;ORG001;admin;2025-03-16 16:31:02.516413;admin;2025-03-16 16:31:02.516413;0 -44;PT;MatGroup1;铂金;;;1;0;ORG001;admin;2025-03-16 16:35:54.700282;admin;2025-03-16 16:35:54.700282;0 -45;AL;MATGROUP1;补口;;;1;0;ORG001;admin;2025-03-16 16:37:08.754443;admin;2025-03-16 16:37:08.754443;0 -46;ND;MATGROUP1;钻石;{"weight":"ct"};;1;0;ORG001;admin;2025-03-16 17:05:39.571164;admin;2025-03-16 17:05:39.571164;0 -47;OT;MATGROUP1;其它;;;1;0;ORG001;admin;2025-03-16 17:06:43.156624;admin;2025-03-16 17:06:43.156624;0 +41;GD;MatGroup1;黄金;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 16:14:59.151541;admin;2025-03-16 16:14:59.151541;0 +42;SL;MatGroup1;白银;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 16:28:46.755507;admin;2025-03-16 16:28:46.755507;0 +43;CU;MatGroup1;铜料;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 16:31:02.516413;admin;2025-03-16 16:31:02.516413;0 +44;PT;MatGroup1;铂金;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 16:35:54.700282;admin;2025-03-16 16:35:54.700282;0 +45;AL;MatGroup1;补口;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 16:37:08.754443;admin;2025-03-16 16:37:08.754443;0 +46;ND;MatGroup1;钻石;{"UnitWeight":"ct", "MatGroup0":"S"};;1;0;ORG001;admin;2025-03-16 17:05:39.571164;admin;2025-03-16 17:05:39.571164;0 +47;OT;MatGroup1;其它;{"UnitWeight":"g", "MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 17:06:43.156624;admin;2025-03-16 17:06:43.156624;0 48;MatGroup2;;物料类别;;;1;0;ORG001;admin;2025-03-16 17:10:45.82635;admin;2025-03-16 17:10:45.82635;0 -49;18;MatGroup2;18K金;;;1;0;ORG001;admin;2025-03-16 17:12:07.179712;admin;2025-03-16 17:12:07.179712;0 -50;RD;MatGroup2;圆钻;;;1;0;ORG001;admin;2025-03-16 17:19:38.32061;admin;2025-03-16 17:19:38.32061;0 +49;18;MatGroup2;18K;{"UnitWeight":"g", "MatGroup0":"M", "MatGroup1":"GD"};;1;0;ORG001;admin;2025-03-16 17:12:07.179712;admin;2025-03-16 17:12:07.179712;0 +50;RD;MatGroup2;圆钻;{"UnitWeight":"ct", "MatGroup0":"S", "MatGroup1":"ND"};;1;0;ORG001;admin;2025-03-16 17:19:38.32061;admin;2025-03-16 17:19:38.32061;0 51;MatGroup0;;物料种类;;;1;0;ORG001;admin;2025-03-16 17:24:28.534056;admin;2025-03-16 17:24:28.534056;0 52;M;MatGroup0;金属;{"UnitWeight":"g"};;1;0;ORG001;admin;2025-03-16 17:26:19.319342;admin;2025-03-16 17:27:35.891799;1 53;S;MatGroup0;石料;{"UnitWeight":"ct"};;1;0;ORG001;admin;2025-03-16 17:26:46.726533;admin;2025-03-16 17:26:46.726533;0 +54;MatGroup3;;成色品质;;;1;0;ORG001;admin;2025-03-16 20:06:53.417702;admin;2025-03-16 20:06:53.417702;0 +57;VS;MatGroup3;VS品质;;;1;0;ORG001;admin;2025-03-16 20:11:08.428518;admin;2025-03-16 20:11:08.428518;0 +58;14;MatGroup2;14K;{"UnitWeight":"g", "MatGroup0":"M", "MatGroup1":"GD"};;1;0;ORG001;admin;2025-03-16 20:12:08.611094;admin;2025-03-16 20:12:08.611094;0 +59;MatGroup4;;物料型号;;;1;0;ORG001;admin;2025-03-16 20:13:23.388126;admin;2025-03-16 20:13:23.388126;0 +60;RM;MatGroup4;原料;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:13:41.107358;admin;2025-03-16 20:13:41.107358;0 +61;RP;MatGroup4;修理货;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:13:58.472764;admin;2025-03-16 20:13:58.472764;0 +62;W1;MatGroup4;线;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:15:23.241522;admin;2025-03-16 20:15:23.241522;0 +63;W2;MatGroup4;焊;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:15:35.743758;admin;2025-03-16 20:15:35.743758;0 +64;CA;MatGroup4;倒模;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:16:01.192255;admin;2025-03-16 20:16:01.192255;0 +65;WM;MatGroup4;廢托;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:16:13.149239;admin;2025-03-16 20:16:13.149239;0 +66;WG;MatGroup4;廢金;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:16:27.862131;admin;2025-03-16 20:16:27.862131;0 +67;EP;MatGroup4;耳針;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:16:42.426041;admin;2025-03-16 20:16:42.426041;0 +68;MatGroup5;;物料属性;;;1;0;ORG001;admin;2025-03-16 20:18:34.28569;admin;2025-03-16 20:18:34.28569;0 +69;00;MatGroup5;-;{"AccType":"0"};;1;0;ORG001;admin;2025-03-16 20:19:21.272647;admin;2025-03-16 20:19:21.272647;0 +70;T1;MatGroup5;高溫;{"AccType":"1", "MatGroup4":"W2"};;1;0;ORG001;admin;2025-03-16 20:20:37.174964;admin;2025-03-16 20:20:37.174964;0 +71;T2;MatGroup5;低溫;{"AccType":"2", "MatGroup4":"W2"};;1;0;ORG001;admin;2025-03-16 20:20:53.096359;admin;2025-03-16 20:20:53.096359;0 +72;E1;MatGroup5;單凹;{"AccType":"3", "MatGroup4":"EB"};;1;0;ORG001;admin;2025-03-16 20:21:29.796611;admin;2025-03-16 20:21:29.796611;0 +73;E2;MatGroup5;雙凹;{"AccType":"4", "MatGroup4":"EB"};;1;0;ORG001;admin;2025-03-16 20:21:48.15281;admin;2025-03-16 20:21:48.15281;0 +74;EB;MatGroup4;耳迫;{"MatGroup0":"M"};;1;0;ORG001;admin;2025-03-16 20:25:37.845475;admin;2025-03-16 20:25:37.845475;0 +75;MatGroup6;;物料尺寸;;;1;0;ORG001;admin;2025-03-16 20:30:21.156318;admin;2025-03-16 20:30:21.156318;0 +76;MatRate;;物料折纯;;;1;0;ORG001;admin;2025-03-16 20:31:23.952106;admin;2025-03-16 20:31:23.952106;0 +77;7560;MatRate;18K折纯率;{"MatGroup2":"18","MatGroup3":"KG","MatGroup3":"KW","MatGroup3":"KY","MatGroup3":"KP"};;1;0;ORG001;admin;2025-03-16 20:32:13.11651;admin;2025-03-16 20:32:13.11651;0 +78;P3;MatGroup3;粉金3;;;1;0;ORG001;admin;2025-03-16 20:35:31.58937;admin;2025-03-16 20:35:31.58937;0 +79;K3;MatGroup3;金3;;;1;0;ORG001;admin;2025-03-16 20:36:15.299994;admin;2025-03-16 20:36:15.299994;0 +80;W3;MatGroup3;白金3;;;1;0;ORG001;admin;2025-03-16 20:36:52.217094;admin;2025-03-16 20:36:52.217094;0 +81;Y3;MatGroup3;黄金3;;;1;0;ORG001;admin;2025-03-16 20:37:11.389857;admin;2025-03-16 20:37:11.389857;0 +82;K2;MatGroup3;金2;;;1;0;ORG001;admin;2025-03-16 20:38:50.339667;admin;2025-03-16 20:38:50.339667;0 +83;W2;MatGroup3;白金2;;;1;0;ORG001;admin;2025-03-16 20:39:07.744115;admin;2025-03-16 20:39:07.744115;0 +84;Y2;MatGroup3;黄金2;;;1;0;ORG001;admin;2025-03-16 20:39:24.897196;admin;2025-03-16 20:39:24.897196;0 +85;KW;MatGroup3;白金;;;1;0;ORG001;admin;2025-03-16 20:40:50.227034;admin;2025-03-16 20:40:50.227034;0 +86;KY;MatGroup3;黄金;;;1;0;ORG001;admin;2025-03-16 20:41:11.894604;admin;2025-03-16 20:41:11.894604;0 +87;KP;MatGroup3;粉金;;;1;0;ORG001;admin;2025-03-16 20:41:41.444151;admin;2025-03-16 20:41:41.444151;0 +88;5900;MatRate;14K折纯率;{"MatGroup2":"14","MatGroup3":"KG","MatGroup3":"KW","MatGroup3":"KY","MatGroup3":"KP"};;1;0;ORG001;admin;2025-03-16 20:43:32.23205;admin;2025-03-16 20:43:32.23205;0 +89;P2;MatGroup3;粉金2;;;1;0;ORG001;admin;2025-03-16 20:46:10.499485;admin;2025-03-16 20:46:10.499485;0 +90;7530;MatRate;18K3折纯率;{"MatGroup2":"18","MatGroup3":"K3","MatGroup3":"W3","MatGroup3":"Y3","MatGroup3":"P3"};;1;0;ORG001;admin;2025-03-16 20:46:47.333519;admin;2025-03-16 20:46:47.333519;0 +91;7520;MatRate;18K2折纯率;{"MatGroup2":"18","MatGroup3":"K2","MatGroup3":"W2","MatGroup3":"Y2","MatGroup3":"P2"};;1;0;ORG001;admin;2025-03-16 20:47:03.681195;admin;2025-03-16 20:47:03.681195;0 +92;KG;MatGroup3;金;;;1;0;ORG001;admin;2025-03-16 20:49:37.245969;admin;2025-03-16 20:49:37.245969;0 +93;10;MatGroup2;10K;;;1;0;ORG001;admin;2025-03-16 20:50:52.649933;admin;2025-03-16 20:50:52.649933;0 +94;09;MatGroup2;9K;;;1;0;ORG001;admin;2025-03-16 20:51:16.67126;admin;2025-03-16 20:51:16.67126;0 +95;4180;MatRate;10K折纯率;{"MatGroup2":"10","MatGroup3":"KG","MatGroup3":"KW","MatGroup3":"KY","MatGroup3":"KP"};;1;0;ORG001;admin;2025-03-16 20:52:18.722618;admin;2025-03-16 20:52:18.722618;0 +96;3760;MatRate;9K折纯率;{"MatGroup2":"09","MatGroup3":"KG","MatGroup3":"KW","MatGroup3":"KY","MatGroup3":"KP"};;1;0;ORG001;admin;2025-03-16 20:53:01.36125;admin;2025-03-16 20:53:01.36125;0 +97;99;MatGroup2;千足金;{"UnitWeight":"g", "MatGroup0":"M", "MatGroup1":"GD"};;1;0;ORG001;admin;2025-03-16 20:57:56.26431;admin;2025-03-16 20:57:56.26431;0 +98;9999;MatRate;千足金折纯率;{"MatGroup2":"99", "rate":1};;1;0;ORG001;admin;2025-03-16 20:59:11.116819;admin;2025-03-16 20:59:11.116819;0 +99;0000;MatGroup6;-;;;1;0;ORG001;admin;2025-03-16 21:09:59.279014;admin;2025-03-16 21:09:59.279014;0