Commit 64e8ec415ae2865c2b3f0fb1e3eec08335eec835

Authored by 王富生
2 parents cf0d14a9 0f807646

Merge remote-tracking branch 'origin/dev' into dev

Showing 36 changed files with 688 additions and 795 deletions
urbanops-framework/urbanops-spring-boot-starter-excel/src/main/java/com/zteits/urbanops/framework/excel/core/util/ExcelUtils.java
@@ -53,6 +53,7 @@ public class ExcelUtils { @@ -53,6 +53,7 @@ public class ExcelUtils {
53 return FastExcelFactory.read(file.getInputStream(), head, null) 53 return FastExcelFactory.read(file.getInputStream(), head, null)
54 .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 54 .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理
55 .headRowNumber(startIndex) 55 .headRowNumber(startIndex)
56 - .doReadAllSync(); 56 + .sheet(0)
  57 + .doReadSync();
57 } 58 }
58 } 59 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/costfee/CostFeeController.java
@@ -6,6 +6,7 @@ import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.WaterFeeImp @@ -6,6 +6,7 @@ import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.WaterFeeImp
6 import com.zteits.urbanops.module.garden.enums.TemplateEnum; 6 import com.zteits.urbanops.module.garden.enums.TemplateEnum;
7 import com.zteits.urbanops.module.garden.service.costfee.CostFeeService; 7 import com.zteits.urbanops.module.garden.service.costfee.CostFeeService;
8 import io.swagger.v3.oas.annotations.Operation; 8 import io.swagger.v3.oas.annotations.Operation;
  9 +import io.swagger.v3.oas.annotations.tags.Tag;
9 import jakarta.servlet.http.HttpServletResponse; 10 import jakarta.servlet.http.HttpServletResponse;
10 import lombok.AllArgsConstructor; 11 import lombok.AllArgsConstructor;
11 import lombok.Data; 12 import lombok.Data;
@@ -32,6 +33,7 @@ import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; @@ -32,6 +33,7 @@ import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
32 * 人机材公共处理控制器 33 * 人机材公共处理控制器
33 * 处理Excel导入预览、提交等功能 34 * 处理Excel导入预览、提交等功能
34 */ 35 */
  36 +@Tag(name = "管理后台 - 人机材批量导入")
35 @RestController 37 @RestController
36 @RequestMapping("/costfee") 38 @RequestMapping("/costfee")
37 @Slf4j 39 @Slf4j
@@ -100,6 +102,7 @@ public class CostFeeController{ @@ -100,6 +102,7 @@ public class CostFeeController{
100 * Excel文件上传预览 102 * Excel文件上传预览
101 */ 103 */
102 @PostMapping("/preview") 104 @PostMapping("/preview")
  105 + @Operation(summary = "文件上传")
103 public CommonResult previewExcel(@RequestParam("file") MultipartFile file, 106 public CommonResult previewExcel(@RequestParam("file") MultipartFile file,
104 @RequestParam("templateName") String templateName) { 107 @RequestParam("templateName") String templateName) {
105 // 基础参数校验 108 // 基础参数校验
@@ -145,6 +148,7 @@ public class CostFeeController{ @@ -145,6 +148,7 @@ public class CostFeeController{
145 * 分页获取预览数据 148 * 分页获取预览数据
146 */ 149 */
147 @GetMapping("/preview-data") 150 @GetMapping("/preview-data")
  151 + @Operation(summary = "批量上传分页预览")
148 public CommonResult getPreviewData(@RequestParam("batchId") String batchId, 152 public CommonResult getPreviewData(@RequestParam("batchId") String batchId,
149 @RequestParam("templateName") String templateName, 153 @RequestParam("templateName") String templateName,
150 @RequestParam(value = "page", defaultValue = "1") int page, 154 @RequestParam(value = "page", defaultValue = "1") int page,
@@ -186,6 +190,7 @@ public class CostFeeController{ @@ -186,6 +190,7 @@ public class CostFeeController{
186 * 提交导入数据到数据库 190 * 提交导入数据到数据库
187 */ 191 */
188 @PostMapping("/submit") 192 @PostMapping("/submit")
  193 + @Operation(summary = "批次保存")
189 public CommonResult submitImport(@RequestParam("batchId") String batchId, 194 public CommonResult submitImport(@RequestParam("batchId") String batchId,
190 @RequestParam("templateName") String templateName, 195 @RequestParam("templateName") String templateName,
191 @RequestParam("operator") String operator) { 196 @RequestParam("operator") String operator) {
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/rentalmechanicalcost/vo/TeamBizdomainRelVo.java renamed to urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/costfee/vo/TeamBizdomainRelVo.java
1 -package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo; 1 +package com.zteits.urbanops.module.garden.controller.admin.costfee.vo;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/mechanicalcost/vo/MechanicalCostSaveReqVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo;
2 2
3 import cn.idev.excel.annotation.ExcelProperty; 3 import cn.idev.excel.annotation.ExcelProperty;
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 4 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 -import lombok.*; 6 +import jakarta.validation.constraints.NotEmpty;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
7 9
8 -import java.time.LocalDate;  
9 -import java.util.*;  
10 -import jakarta.validation.constraints.*;  
11 import java.math.BigDecimal; 10 import java.math.BigDecimal;
  11 +import java.time.LocalDate;
  12 +import java.util.List;
12 13
13 @Schema(description = "管理后台 - 自有机械费用录入新增/修改 Request VO") 14 @Schema(description = "管理后台 - 自有机械费用录入新增/修改 Request VO")
14 @Data 15 @Data
@@ -74,6 +75,6 @@ public class MechanicalCostSaveReqVO { @@ -74,6 +75,6 @@ public class MechanicalCostSaveReqVO {
74 private String remark; 75 private String remark;
75 76
76 @ExcelProperty("班组") 77 @ExcelProperty("班组")
77 - private List<TeamBizdomainRelDO> teamIds; 78 + private List<TeamBizdomainRelVo> teamIds;
78 79
79 } 80 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/personalcost/PersonalCostController.java
@@ -10,10 +10,7 @@ import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.Person @@ -10,10 +10,7 @@ import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.Person
10 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostRespVO; 10 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostRespVO;
11 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostSaveReqVO; 11 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostSaveReqVO;
12 import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO; 12 import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO;
13 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
14 -import com.zteits.urbanops.module.garden.enums.CostFeeConstants;  
15 import com.zteits.urbanops.module.garden.service.personalcost.PersonalCostService; 13 import com.zteits.urbanops.module.garden.service.personalcost.PersonalCostService;
16 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
17 import io.swagger.v3.oas.annotations.Operation; 14 import io.swagger.v3.oas.annotations.Operation;
18 import io.swagger.v3.oas.annotations.Parameter; 15 import io.swagger.v3.oas.annotations.Parameter;
19 import io.swagger.v3.oas.annotations.tags.Tag; 16 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,8 +23,6 @@ import org.springframework.web.bind.annotation.*; @@ -26,8 +23,6 @@ import org.springframework.web.bind.annotation.*;
26 23
27 import java.io.IOException; 24 import java.io.IOException;
28 import java.util.List; 25 import java.util.List;
29 -import java.util.Objects;  
30 -import java.util.stream.Collectors;  
31 26
32 import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; 27 import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
33 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; 28 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/personalcost/vo/PersonalCostSaveReqVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.personalcost.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.personalcost.vo;
2 2
3 import cn.idev.excel.annotation.ExcelProperty; 3 import cn.idev.excel.annotation.ExcelProperty;
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 4 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 -import lombok.*;  
7 -import java.util.*;  
8 -import jakarta.validation.constraints.*; 6 +import jakarta.validation.constraints.NotEmpty;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
  9 +
9 import java.math.BigDecimal; 10 import java.math.BigDecimal;
  11 +import java.util.List;
10 12
11 @Schema(description = "管理后台 - 人员费用录入 - 个人费用新增/修改 Request VO") 13 @Schema(description = "管理后台 - 人员费用录入 - 个人费用新增/修改 Request VO")
12 @Data 14 @Data
@@ -44,6 +46,6 @@ public class PersonalCostSaveReqVO { @@ -44,6 +46,6 @@ public class PersonalCostSaveReqVO {
44 @Schema(description = "备注", example = "随便") 46 @Schema(description = "备注", example = "随便")
45 private String remark; 47 private String remark;
46 @ExcelProperty("班组") 48 @ExcelProperty("班组")
47 - private List<TeamBizdomainRelDO> teamIds; 49 + private List<TeamBizdomainRelVo> teamIds;
48 50
49 } 51 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/rentalmechanicalcost/RentalMechanicalCostController.java
1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost; 1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost;
2 2
3 -import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostRespVO;  
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
5 -import com.zteits.urbanops.module.garden.enums.CostFeeConstants;  
6 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
7 -import org.springframework.web.bind.annotation.*;  
8 -import jakarta.annotation.Resource;  
9 -import org.springframework.validation.annotation.Validated;  
10 -import org.springframework.security.access.prepost.PreAuthorize;  
11 -import io.swagger.v3.oas.annotations.tags.Tag;  
12 -import io.swagger.v3.oas.annotations.Parameter;  
13 -import io.swagger.v3.oas.annotations.Operation;  
14 -  
15 -import jakarta.validation.constraints.*;  
16 -import jakarta.validation.*;  
17 -import jakarta.servlet.http.*;  
18 -import java.util.*;  
19 -import java.io.IOException;  
20 -import java.util.stream.Collectors;  
21 - 3 +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog;
  4 +import com.zteits.urbanops.framework.common.pojo.CommonResult;
22 import com.zteits.urbanops.framework.common.pojo.PageParam; 5 import com.zteits.urbanops.framework.common.pojo.PageParam;
23 import com.zteits.urbanops.framework.common.pojo.PageResult; 6 import com.zteits.urbanops.framework.common.pojo.PageResult;
24 -import com.zteits.urbanops.framework.common.pojo.CommonResult;  
25 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 7 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
26 -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;  
27 -  
28 import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; 8 import com.zteits.urbanops.framework.excel.core.util.ExcelUtils;
29 -  
30 -import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog;  
31 -import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*;  
32 -  
33 -import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.*; 9 +import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostPageReqVO;
  10 +import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostRespVO;
  11 +import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostSaveReqVO;
34 import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO; 12 import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO;
35 import com.zteits.urbanops.module.garden.service.rentalmechanicalcost.RentalMechanicalCostService; 13 import com.zteits.urbanops.module.garden.service.rentalmechanicalcost.RentalMechanicalCostService;
  14 +import io.swagger.v3.oas.annotations.Operation;
  15 +import io.swagger.v3.oas.annotations.Parameter;
  16 +import io.swagger.v3.oas.annotations.tags.Tag;
  17 +import jakarta.annotation.Resource;
  18 +import jakarta.servlet.http.HttpServletResponse;
  19 +import jakarta.validation.Valid;
  20 +import org.springframework.security.access.prepost.PreAuthorize;
  21 +import org.springframework.validation.annotation.Validated;
  22 +import org.springframework.web.bind.annotation.*;
  23 +
  24 +import java.io.IOException;
  25 +import java.util.List;
  26 +
  27 +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
  28 +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
36 29
37 @Tag(name = "管理后台 - 租赁机械费用录入") 30 @Tag(name = "管理后台 - 租赁机械费用录入")
38 @RestController 31 @RestController
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/rentalmechanicalcost/vo/RentalMechanicalCostPageReqVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo;
2 2
3 import cn.idev.excel.annotation.ExcelProperty; 3 import cn.idev.excel.annotation.ExcelProperty;
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
5 -import lombok.*;  
6 -  
7 -import java.time.LocalDate;  
8 -import java.util.*;  
9 -import io.swagger.v3.oas.annotations.media.Schema; 4 +import com.fasterxml.jackson.annotation.JsonFormat;
10 import com.zteits.urbanops.framework.common.pojo.PageParam; 5 import com.zteits.urbanops.framework.common.pojo.PageParam;
11 -import java.math.BigDecimal; 6 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
  7 +import io.swagger.v3.oas.annotations.media.Schema;
  8 +import lombok.Data;
12 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
  10 +
  11 +import java.math.BigDecimal;
  12 +import java.time.LocalDate;
13 import java.time.LocalDateTime; 13 import java.time.LocalDateTime;
  14 +import java.util.Date;
  15 +import java.util.List;
14 16
  17 +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
15 import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 18 import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
16 19
17 @Schema(description = "管理后台 - 租赁机械费用录入分页 Request VO") 20 @Schema(description = "管理后台 - 租赁机械费用录入分页 Request VO")
@@ -21,55 +24,14 @@ public class RentalMechanicalCostPageReqVO extends PageParam { @@ -21,55 +24,14 @@ public class RentalMechanicalCostPageReqVO extends PageParam {
21 @Schema(description = "机械名称", example = "张三") 24 @Schema(description = "机械名称", example = "张三")
22 private String mechName; 25 private String mechName;
23 26
24 - @Schema(description = "机械类型", example = "2")  
25 - private String mechType;  
26 -  
27 @Schema(description = "租赁总价格", example = "316") 27 @Schema(description = "租赁总价格", example = "316")
28 - private BigDecimal rentalTotalPrice;  
29 -  
30 - @Schema(description = "数量")  
31 - private Integer quantity;  
32 -  
33 - @Schema(description = "车牌号")  
34 - private String licensePlate;  
35 -  
36 - @Schema(description = "车辆类别(如汽油、纯电新能源等)")  
37 - private String vehicleCategory;  
38 -  
39 - @Schema(description = "车辆类型(如大型客车、轻型栏板货车等)", example = "2")  
40 - private String vehicleType; 28 + private BigDecimal[] rentalTotalPrice;
41 29
42 @Schema(description = "开始使用时间") 30 @Schema(description = "开始使用时间")
43 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
44 - private LocalDate[] startUseTime; 31 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  32 + private Date startUseTime;
45 33
46 @Schema(description = "使用时长(天)") 34 @Schema(description = "使用时长(天)")
47 private Integer useDuration; 35 private Integer useDuration;
48 36
49 - @Schema(description = "结束使用时间")  
50 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
51 - private LocalDate[] endUseTime;  
52 -  
53 - @Schema(description = "归属公司", example = "李四")  
54 - private String companyName;  
55 -  
56 - @Schema(description = "归属公司ID", example = "25530")  
57 - private String companyId;  
58 -  
59 - @Schema(description = "部门id", example = "25446")  
60 - private Long deptId;  
61 -  
62 - @Schema(description = "道路ID数组(多选)")  
63 - private String roadIds;  
64 -  
65 - @Schema(description = "备注", example = "你说的对")  
66 - private String remark;  
67 -  
68 - @Schema(description = "创建时间")  
69 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
70 - private LocalDateTime[] createTime;  
71 -  
72 - @ExcelProperty("班组")  
73 - private List<TeamBizdomainRelVo> teamIds;  
74 -  
75 } 37 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/rentalmechanicalcost/vo/RentalMechanicalCostRespVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo;
2 2
3 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 3 +import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
  4 +import cn.idev.excel.annotation.ExcelProperty;
  5 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
4 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
5 -import lombok.*; 7 +import lombok.Data;
  8 +import org.springframework.format.annotation.DateTimeFormat;
6 9
7 -import java.time.LocalDate;  
8 -import java.util.*;  
9 import java.math.BigDecimal; 10 import java.math.BigDecimal;
10 -import org.springframework.format.annotation.DateTimeFormat; 11 +import java.time.LocalDate;
11 import java.time.LocalDateTime; 12 import java.time.LocalDateTime;
12 -import cn.idev.excel.annotation.*; 13 +import java.util.List;
  14 +
  15 +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
13 16
14 @Schema(description = "管理后台 - 租赁机械费用录入 Response VO") 17 @Schema(description = "管理后台 - 租赁机械费用录入 Response VO")
15 @Data 18 @Data
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/rentalmechanicalcost/vo/RentalMechanicalCostSaveReqVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo;
2 2
3 import cn.idev.excel.annotation.ExcelProperty; 3 import cn.idev.excel.annotation.ExcelProperty;
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 4 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 -import lombok.*; 6 +import jakarta.validation.constraints.NotEmpty;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
  9 +import org.springframework.format.annotation.DateTimeFormat;
7 10
8 -import java.time.LocalDate;  
9 -import java.util.*;  
10 -import jakarta.validation.constraints.*;  
11 import java.math.BigDecimal; 11 import java.math.BigDecimal;
  12 +import java.time.LocalDate;
  13 +import java.util.Date;
  14 +import java.util.List;
12 15
13 @Schema(description = "管理后台 - 租赁机械费用录入新增/修改 Request VO") 16 @Schema(description = "管理后台 - 租赁机械费用录入新增/修改 Request VO")
14 @Data 17 @Data
@@ -43,14 +46,16 @@ public class RentalMechanicalCostSaveReqVO { @@ -43,14 +46,16 @@ public class RentalMechanicalCostSaveReqVO {
43 46
44 @Schema(description = "开始使用时间", requiredMode = Schema.RequiredMode.REQUIRED) 47 @Schema(description = "开始使用时间", requiredMode = Schema.RequiredMode.REQUIRED)
45 @NotNull(message = "开始使用时间不能为空") 48 @NotNull(message = "开始使用时间不能为空")
46 - private LocalDate startUseTime; 49 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  50 + private Date startUseTime;
47 51
48 @Schema(description = "使用时长(天)") 52 @Schema(description = "使用时长(天)")
49 private Integer useDuration; 53 private Integer useDuration;
50 54
51 @Schema(description = "结束使用时间", requiredMode = Schema.RequiredMode.REQUIRED) 55 @Schema(description = "结束使用时间", requiredMode = Schema.RequiredMode.REQUIRED)
52 @NotNull(message = "结束使用时间不能为空") 56 @NotNull(message = "结束使用时间不能为空")
53 - private LocalDate endUseTime; 57 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  58 + private Date endUseTime;
54 59
55 @Schema(description = "归属公司", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") 60 @Schema(description = "归属公司", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
56 @NotEmpty(message = "归属公司不能为空") 61 @NotEmpty(message = "归属公司不能为空")
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/teambizdomainrel/TeamBizdomainRelController.java deleted
1 -package com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel;  
2 -  
3 -import org.springframework.web.bind.annotation.*;  
4 -import jakarta.annotation.Resource;  
5 -import org.springframework.validation.annotation.Validated;  
6 -import org.springframework.security.access.prepost.PreAuthorize;  
7 -import io.swagger.v3.oas.annotations.tags.Tag;  
8 -import io.swagger.v3.oas.annotations.Parameter;  
9 -import io.swagger.v3.oas.annotations.Operation;  
10 -  
11 -import jakarta.validation.constraints.*;  
12 -import jakarta.validation.*;  
13 -import jakarta.servlet.http.*;  
14 -import java.util.*;  
15 -import java.io.IOException;  
16 -  
17 -import com.zteits.urbanops.framework.common.pojo.PageParam;  
18 -import com.zteits.urbanops.framework.common.pojo.PageResult;  
19 -import com.zteits.urbanops.framework.common.pojo.CommonResult;  
20 -import com.zteits.urbanops.framework.common.util.object.BeanUtils;  
21 -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;  
22 -  
23 -import com.zteits.urbanops.framework.excel.core.util.ExcelUtils;  
24 -  
25 -import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog;  
26 -import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*;  
27 -  
28 -import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;  
29 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
30 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
31 -  
32 -@Tag(name = "管理后台 - 班组关联")  
33 -@RestController  
34 -@RequestMapping("/garden/team-bizdomain-rel")  
35 -@Validated  
36 -public class TeamBizdomainRelController {  
37 -  
38 - @Resource  
39 - private TeamBizdomainRelService teamBizdomainRelService;  
40 -  
41 - @PostMapping("/create")  
42 - @Operation(summary = "创建班组关联")  
43 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:create')")  
44 - public CommonResult<Long> createTeamBizdomainRel(@Valid @RequestBody TeamBizdomainRelSaveReqVO createReqVO) {  
45 - return success(teamBizdomainRelService.createTeamBizdomainRel(createReqVO));  
46 - }  
47 -  
48 - @PutMapping("/update")  
49 - @Operation(summary = "更新班组关联")  
50 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:update')")  
51 - public CommonResult<Boolean> updateTeamBizdomainRel(@Valid @RequestBody TeamBizdomainRelSaveReqVO updateReqVO) {  
52 - teamBizdomainRelService.updateTeamBizdomainRel(updateReqVO);  
53 - return success(true);  
54 - }  
55 -  
56 - @DeleteMapping("/delete")  
57 - @Operation(summary = "删除班组关联")  
58 - @Parameter(name = "id", description = "编号", required = true)  
59 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:delete')")  
60 - public CommonResult<Boolean> deleteTeamBizdomainRel(@RequestParam("id") Long id) {  
61 - teamBizdomainRelService.deleteTeamBizdomainRel(id);  
62 - return success(true);  
63 - }  
64 -  
65 - @DeleteMapping("/delete-list")  
66 - @Parameter(name = "ids", description = "编号", required = true)  
67 - @Operation(summary = "批量删除班组关联")  
68 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:delete')")  
69 - public CommonResult<Boolean> deleteTeamBizdomainRelList(@RequestParam("ids") List<Long> ids) {  
70 - teamBizdomainRelService.deleteTeamBizdomainRelListByIds(ids);  
71 - return success(true);  
72 - }  
73 -  
74 - @GetMapping("/get")  
75 - @Operation(summary = "获得班组关联")  
76 - @Parameter(name = "id", description = "编号", required = true, example = "1024")  
77 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:query')")  
78 - public CommonResult<TeamBizdomainRelRespVO> getTeamBizdomainRel(@RequestParam("id") Long id) {  
79 - TeamBizdomainRelDO teamBizdomainRel = teamBizdomainRelService.getTeamBizdomainRel(id);  
80 - return success(BeanUtils.toBean(teamBizdomainRel, TeamBizdomainRelRespVO.class));  
81 - }  
82 -  
83 - @GetMapping("/page")  
84 - @Operation(summary = "获得班组关联分页")  
85 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:query')")  
86 - public CommonResult<PageResult<TeamBizdomainRelRespVO>> getTeamBizdomainRelPage(@Valid TeamBizdomainRelPageReqVO pageReqVO) {  
87 - PageResult<TeamBizdomainRelDO> pageResult = teamBizdomainRelService.getTeamBizdomainRelPage(pageReqVO);  
88 - return success(BeanUtils.toBean(pageResult, TeamBizdomainRelRespVO.class));  
89 - }  
90 -  
91 - @GetMapping("/export-excel")  
92 - @Operation(summary = "导出班组关联 Excel")  
93 - @PreAuthorize("@ss.hasPermission('garden:team-bizdomain-rel:export')")  
94 - @ApiAccessLog(operateType = EXPORT)  
95 - public void exportTeamBizdomainRelExcel(@Valid TeamBizdomainRelPageReqVO pageReqVO,  
96 - HttpServletResponse response) throws IOException {  
97 - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);  
98 - List<TeamBizdomainRelDO> list = teamBizdomainRelService.getTeamBizdomainRelPage(pageReqVO).getList();  
99 - // 导出 Excel  
100 - ExcelUtils.write(response, "班组关联.xls", "数据", TeamBizdomainRelRespVO.class,  
101 - BeanUtils.toBean(list, TeamBizdomainRelRespVO.class));  
102 - }  
103 -  
104 -}  
105 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/teambizdomainrel/vo/TeamBizdomainRelPageReqVO.java deleted
1 -package com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo;  
2 -  
3 -import lombok.*;  
4 -import java.util.*;  
5 -import io.swagger.v3.oas.annotations.media.Schema;  
6 -import com.zteits.urbanops.framework.common.pojo.PageParam;  
7 -import org.springframework.format.annotation.DateTimeFormat;  
8 -import java.time.LocalDateTime;  
9 -  
10 -import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
11 -  
12 -@Schema(description = "管理后台 - 班组关联分页 Request VO")  
13 -@Data  
14 -public class TeamBizdomainRelPageReqVO extends PageParam {  
15 -  
16 - @Schema(description = "业务表主键", example = "4740")  
17 - private String busiId;  
18 -  
19 - @Schema(description = "班组编码", example = "27533")  
20 - private String teamId;  
21 -  
22 - @Schema(description = "班组名称", example = "王五")  
23 - private String teamName;  
24 -  
25 - @Schema(description = "班组名称")  
26 - private Long weight;  
27 -  
28 - @Schema(description = "归属公司", example = "张三")  
29 - private String companyName;  
30 -  
31 - @Schema(description = "归属公司ID", example = "29798")  
32 - private String companyId;  
33 -  
34 - @Schema(description = "创建时间")  
35 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
36 - private LocalDateTime[] createTime;  
37 -  
38 - @Schema(description = "业务类型", example = "1")  
39 - private String busiType;  
40 -  
41 -}  
42 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/teambizdomainrel/vo/TeamBizdomainRelRespVO.java deleted
1 -package com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import java.util.*;  
6 -import org.springframework.format.annotation.DateTimeFormat;  
7 -import java.time.LocalDateTime;  
8 -import cn.idev.excel.annotation.*;  
9 -  
10 -@Schema(description = "管理后台 - 班组关联 Response VO")  
11 -@Data  
12 -@ExcelIgnoreUnannotated  
13 -public class TeamBizdomainRelRespVO {  
14 -  
15 - @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14177")  
16 - @ExcelProperty("记录ID,自增主键")  
17 - private Long id;  
18 -  
19 - @Schema(description = "业务表主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4740")  
20 - @ExcelProperty("业务表主键")  
21 - private String busiId;  
22 -  
23 - @Schema(description = "班组编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "27533")  
24 - @ExcelProperty("班组编码")  
25 - private String teamId;  
26 -  
27 - @Schema(description = "班组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")  
28 - @ExcelProperty("班组名称")  
29 - private String teamName;  
30 -  
31 - @Schema(description = "班组名称")  
32 - @ExcelProperty("班组名称")  
33 - private Long weight;  
34 -  
35 - @Schema(description = "归属公司", example = "张三")  
36 - @ExcelProperty("归属公司")  
37 - private String companyName;  
38 -  
39 - @Schema(description = "归属公司ID", example = "29798")  
40 - @ExcelProperty("归属公司ID")  
41 - private String companyId;  
42 -  
43 - @Schema(description = "创建时间")  
44 - @ExcelProperty("创建时间")  
45 - private LocalDateTime createTime;  
46 -  
47 - @Schema(description = "业务类型", example = "1")  
48 - @ExcelProperty("业务类型")  
49 - private String busiType;  
50 -  
51 -}  
52 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/teambizdomainrel/vo/TeamBizdomainRelSaveReqVO.java deleted
1 -package com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import java.util.*;  
6 -import jakarta.validation.constraints.*;  
7 -  
8 -@Schema(description = "管理后台 - 班组关联新增/修改 Request VO")  
9 -@Data  
10 -public class TeamBizdomainRelSaveReqVO {  
11 -  
12 - @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14177")  
13 - private Long id;  
14 -  
15 - @Schema(description = "业务表主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4740")  
16 - @NotEmpty(message = "业务表主键不能为空")  
17 - private String busiId;  
18 -  
19 - @Schema(description = "班组编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "27533")  
20 - @NotEmpty(message = "班组编码不能为空")  
21 - private String teamId;  
22 -  
23 - @Schema(description = "班组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")  
24 - @NotEmpty(message = "班组名称不能为空")  
25 - private String teamName;  
26 -  
27 - @Schema(description = "班组名称")  
28 - private Long weight;  
29 -  
30 - @Schema(description = "归属公司", example = "张三")  
31 - private String companyName;  
32 -  
33 - @Schema(description = "归属公司ID", example = "29798")  
34 - private String companyId;  
35 -  
36 - @Schema(description = "业务类型", example = "1")  
37 - private String busiType;  
38 -  
39 -}  
40 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordSaveReqVO.java
1 package com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo; 1 package com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo;
2 2
3 import cn.idev.excel.annotation.ExcelProperty; 3 import cn.idev.excel.annotation.ExcelProperty;
4 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 4 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 -import lombok.*; 6 +import jakarta.validation.constraints.NotEmpty;
  7 +import jakarta.validation.constraints.NotNull;
  8 +import lombok.Data;
7 9
8 -import java.time.LocalDate;  
9 -import java.util.*;  
10 -import jakarta.validation.constraints.*;  
11 import java.math.BigDecimal; 10 import java.math.BigDecimal;
  11 +import java.time.LocalDate;
  12 +import java.util.List;
12 13
13 @Schema(description = "管理后台 - 园林废弃物录入新增/修改 Request VO") 14 @Schema(description = "管理后台 - 园林废弃物录入新增/修改 Request VO")
14 @Data 15 @Data
@@ -59,5 +60,5 @@ public class WasteRecordSaveReqVO { @@ -59,5 +60,5 @@ public class WasteRecordSaveReqVO {
59 private String remark; 60 private String remark;
60 61
61 @ExcelProperty("班组") 62 @ExcelProperty("班组")
62 - private List<TeamBizdomainRelDO> teamIds; 63 + private List<TeamBizdomainRelVo> teamIds;
63 } 64 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/rentalmechanicalcost/RentalMechanicalCostDO.java
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
7 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; 7 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
8 import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; 8 import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO;
9 -import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.TeamBizdomainRelVo; 9 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
10 import lombok.*; 10 import lombok.*;
11 11
12 import java.math.BigDecimal; 12 import java.math.BigDecimal;
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/teambizdomainrel/TeamBizdomainRelDO.java deleted
1 -package com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel;  
2 -  
3 -import lombok.*;  
4 -import java.util.*;  
5 -import java.time.LocalDateTime;  
6 -import java.time.LocalDateTime;  
7 -import com.baomidou.mybatisplus.annotation.*;  
8 -import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO;  
9 -  
10 -/**  
11 - * 班组关联 DO  
12 - *  
13 - * @author 超级管理员  
14 - */  
15 -@TableName("garden_team_bizdomain_rel")  
16 -@KeySequence("garden_team_bizdomain_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。  
17 -@Data  
18 -@EqualsAndHashCode(callSuper = true)  
19 -@ToString(callSuper = true)  
20 -@Builder  
21 -@NoArgsConstructor  
22 -@AllArgsConstructor  
23 -public class TeamBizdomainRelDO extends BaseDO {  
24 -  
25 - /**  
26 - * 记录ID,自增主键  
27 - */  
28 - @TableId  
29 - private Long id;  
30 - /**  
31 - * 业务表主键  
32 - */  
33 - private String busiId;  
34 - /**  
35 - * 班组编码  
36 - */  
37 - private String teamId;  
38 - /**  
39 - * 班组名称  
40 - */  
41 - private String teamName;  
42 - /**  
43 - * 班组名称  
44 - */  
45 - private Long weight;  
46 - /**  
47 - * 归属公司  
48 - */  
49 - private String companyName;  
50 - /**  
51 - * 归属公司ID  
52 - */  
53 - private String companyId;  
54 - /**  
55 - * 业务类型  
56 - */  
57 - private String busiType;  
58 -  
59 -  
60 -}  
61 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/departmentcost/DepartmentCostMapper.java
@@ -31,5 +31,12 @@ public interface DepartmentCostMapper extends BaseMapperX&lt;DepartmentCostDO&gt; { @@ -31,5 +31,12 @@ public interface DepartmentCostMapper extends BaseMapperX&lt;DepartmentCostDO&gt; {
31 .betweenIfPresent(DepartmentCostDO::getCreateTime, reqVO.getCreateTime()) 31 .betweenIfPresent(DepartmentCostDO::getCreateTime, reqVO.getCreateTime())
32 .orderByDesc(DepartmentCostDO::getId)); 32 .orderByDesc(DepartmentCostDO::getId));
33 } 33 }
  34 + /**
  35 + * 批量查询重复数据
  36 + *
  37 + * @param keyList 部门信息集合
  38 + * @return 结果
  39 + */
  40 + public List<Long> selectDuplicateIds(List<DepartmentCostDO> keyList);
34 41
35 -}  
36 \ No newline at end of file 42 \ No newline at end of file
  43 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/mechanicalcost/MechanicalCostMapper.java
@@ -39,4 +39,5 @@ public interface MechanicalCostMapper extends BaseMapperX&lt;MechanicalCostDO&gt; { @@ -39,4 +39,5 @@ public interface MechanicalCostMapper extends BaseMapperX&lt;MechanicalCostDO&gt; {
39 .orderByDesc(MechanicalCostDO::getId)); 39 .orderByDesc(MechanicalCostDO::getId));
40 } 40 }
41 41
42 -}  
43 \ No newline at end of file 42 \ No newline at end of file
  43 + public List<Long> selectDuplicateIds(List<MechanicalCostDO> keyList);
  44 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/personalcost/PersonalCostMapper.java
@@ -32,4 +32,13 @@ public interface PersonalCostMapper extends BaseMapperX&lt;PersonalCostDO&gt; { @@ -32,4 +32,13 @@ public interface PersonalCostMapper extends BaseMapperX&lt;PersonalCostDO&gt; {
32 .orderByDesc(PersonalCostDO::getId)); 32 .orderByDesc(PersonalCostDO::getId));
33 } 33 }
34 34
35 -}  
36 \ No newline at end of file 35 \ No newline at end of file
  36 +
  37 + /**
  38 + * 批量查询重复数据
  39 + *
  40 + * @param keyList 人员费用信息集合
  41 + * @return 结果
  42 + */
  43 + public List<Long> selectDuplicateIds(List<PersonalCostDO> keyList);
  44 +
  45 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/rentalmechanicalcost/RentalMechanicalCostMapper.java
@@ -20,23 +20,23 @@ public interface RentalMechanicalCostMapper extends BaseMapperX&lt;RentalMechanical @@ -20,23 +20,23 @@ public interface RentalMechanicalCostMapper extends BaseMapperX&lt;RentalMechanical
20 default PageResult<RentalMechanicalCostDO> selectPage(RentalMechanicalCostPageReqVO reqVO) { 20 default PageResult<RentalMechanicalCostDO> selectPage(RentalMechanicalCostPageReqVO reqVO) {
21 return selectPage(reqVO, new LambdaQueryWrapperX<RentalMechanicalCostDO>() 21 return selectPage(reqVO, new LambdaQueryWrapperX<RentalMechanicalCostDO>()
22 .likeIfPresent(RentalMechanicalCostDO::getMechName, reqVO.getMechName()) 22 .likeIfPresent(RentalMechanicalCostDO::getMechName, reqVO.getMechName())
23 - .eqIfPresent(RentalMechanicalCostDO::getMechType, reqVO.getMechType())  
24 - .eqIfPresent(RentalMechanicalCostDO::getRentalTotalPrice, reqVO.getRentalTotalPrice())  
25 - .eqIfPresent(RentalMechanicalCostDO::getQuantity, reqVO.getQuantity())  
26 - .eqIfPresent(RentalMechanicalCostDO::getLicensePlate, reqVO.getLicensePlate())  
27 - .eqIfPresent(RentalMechanicalCostDO::getVehicleCategory, reqVO.getVehicleCategory())  
28 - .eqIfPresent(RentalMechanicalCostDO::getVehicleType, reqVO.getVehicleType())  
29 - .betweenIfPresent(RentalMechanicalCostDO::getStartUseTime, reqVO.getStartUseTime()) 23 + //.eqIfPresent(RentalMechanicalCostDO::getMechType, reqVO.getMechType())
  24 + .betweenIfPresent(RentalMechanicalCostDO::getRentalTotalPrice, reqVO.getRentalTotalPrice())
  25 + //.eqIfPresent(RentalMechanicalCostDO::getQuantity, reqVO.getQuantity())
  26 + //.eqIfPresent(RentalMechanicalCostDO::getLicensePlate, reqVO.getLicensePlate())
  27 + //.eqIfPresent(RentalMechanicalCostDO::getVehicleCategory, reqVO.getVehicleCategory())
  28 + // .eqIfPresent(RentalMechanicalCostDO::getVehicleType, reqVO.getVehicleType())
  29 + //.betweenIfPresent(RentalMechanicalCostDO::getStartUseTime, reqVO.getStartUseTime())
  30 + .eqIfPresent(RentalMechanicalCostDO::getStartUseTime, reqVO.getStartUseTime())
30 .eqIfPresent(RentalMechanicalCostDO::getUseDuration, reqVO.getUseDuration()) 31 .eqIfPresent(RentalMechanicalCostDO::getUseDuration, reqVO.getUseDuration())
31 - .betweenIfPresent(RentalMechanicalCostDO::getEndUseTime, reqVO.getEndUseTime())  
32 - .likeIfPresent(RentalMechanicalCostDO::getCompanyName, reqVO.getCompanyName())  
33 - .eqIfPresent(RentalMechanicalCostDO::getCompanyId, reqVO.getCompanyId())  
34 - .eqIfPresent(RentalMechanicalCostDO::getDeptId, reqVO.getDeptId())  
35 - .eqIfPresent(RentalMechanicalCostDO::getTeamIds, reqVO.getTeamIds())  
36 - .eqIfPresent(RentalMechanicalCostDO::getRoadIds, reqVO.getRoadIds())  
37 - .eqIfPresent(RentalMechanicalCostDO::getRemark, reqVO.getRemark())  
38 - .betweenIfPresent(RentalMechanicalCostDO::getCreateTime, reqVO.getCreateTime()) 32 + //.betweenIfPresent(RentalMechanicalCostDO::getEndUseTime, reqVO.getEndUseTime())
  33 + //.likeIfPresent(RentalMechanicalCostDO::getCompanyName, reqVO.getCompanyName())
  34 + //.eqIfPresent(RentalMechanicalCostDO::getCompanyId, reqVO.getCompanyId())
  35 + //.eqIfPresent(RentalMechanicalCostDO::getDeptId, reqVO.getDeptId())
  36 + //.eqIfPresent(RentalMechanicalCostDO::getRoadIds, reqVO.getRoadIds())
  37 + ///.//eqIfPresent(RentalMechanicalCostDO::getRemark, reqVO.getRemark())
  38 + //.betweenIfPresent(RentalMechanicalCostDO::getCreateTime, reqVO.getCreateTime())
39 .orderByDesc(RentalMechanicalCostDO::getId)); 39 .orderByDesc(RentalMechanicalCostDO::getId));
40 } 40 }
41 41
42 -}  
43 \ No newline at end of file 42 \ No newline at end of file
  43 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/teambizdomainrel/TeamBizdomainRelMapper.java deleted
1 -package com.zteits.urbanops.module.garden.dal.mysql.teambizdomainrel;  
2 -  
3 -import java.util.*;  
4 -  
5 -import com.zteits.urbanops.framework.common.pojo.PageResult;  
6 -import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX;  
7 -import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX;  
8 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
9 -import org.apache.ibatis.annotations.Mapper;  
10 -import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;  
11 -  
12 -/**  
13 - * 班组关联 Mapper  
14 - *  
15 - * @author 超级管理员  
16 - */  
17 -@Mapper  
18 -public interface TeamBizdomainRelMapper extends BaseMapperX<TeamBizdomainRelDO> {  
19 -  
20 - default PageResult<TeamBizdomainRelDO> selectPage(TeamBizdomainRelPageReqVO reqVO) {  
21 - return selectPage(reqVO, new LambdaQueryWrapperX<TeamBizdomainRelDO>()  
22 - .eqIfPresent(TeamBizdomainRelDO::getBusiId, reqVO.getBusiId())  
23 - .eqIfPresent(TeamBizdomainRelDO::getTeamId, reqVO.getTeamId())  
24 - .likeIfPresent(TeamBizdomainRelDO::getTeamName, reqVO.getTeamName())  
25 - .eqIfPresent(TeamBizdomainRelDO::getWeight, reqVO.getWeight())  
26 - .likeIfPresent(TeamBizdomainRelDO::getCompanyName, reqVO.getCompanyName())  
27 - .eqIfPresent(TeamBizdomainRelDO::getCompanyId, reqVO.getCompanyId())  
28 - .betweenIfPresent(TeamBizdomainRelDO::getCreateTime, reqVO.getCreateTime())  
29 - .eqIfPresent(TeamBizdomainRelDO::getBusiType, reqVO.getBusiType())  
30 - .orderByDesc(TeamBizdomainRelDO::getId));  
31 - }  
32 -  
33 -}  
34 \ No newline at end of file 0 \ No newline at end of file
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/waterfee/WaterFeeMapper.java
@@ -32,4 +32,12 @@ public interface WaterFeeMapper extends BaseMapperX&lt;WaterFeeDO&gt; { @@ -32,4 +32,12 @@ public interface WaterFeeMapper extends BaseMapperX&lt;WaterFeeDO&gt; {
32 .orderByDesc(WaterFeeDO::getId)); 32 .orderByDesc(WaterFeeDO::getId));
33 } 33 }
34 34
35 -}  
36 \ No newline at end of file 35 \ No newline at end of file
  36 +
  37 + /**
  38 + * 批量查询重复数据
  39 + *
  40 + * @param keyList 水费录入信息集合
  41 + * @return 结果
  42 + */
  43 + public List<Long> selectDuplicateIds(List<WaterFeeDO> keyList);
  44 +}
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/TemplateEnum.java
@@ -7,6 +7,9 @@ import lombok.Getter; @@ -7,6 +7,9 @@ import lombok.Getter;
7 import java.util.HashMap; 7 import java.util.HashMap;
8 import java.util.Map; 8 import java.util.Map;
9 9
  10 +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
  11 +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0;
  12 +
10 /** 13 /**
11 * Excel导入模板枚举 14 * Excel导入模板枚举
12 * 存储模板编码、名称、起始行索引及对应的数据导入类 15 * 存储模板编码、名称、起始行索引及对应的数据导入类
@@ -29,35 +32,35 @@ public enum TemplateEnum { @@ -29,35 +32,35 @@ public enum TemplateEnum {
29 2, 32 2,
30 PersonalCostImport.class, 33 PersonalCostImport.class,
31 true // 新增默认值 34 true // 新增默认值
  35 + ),
  36 + COSTFEE_DEPARTMENT(
  37 + "costFee_department",
  38 + "综合费用导入模板.xlsx",
  39 + 2,
  40 + DepartmentCostImport.class,
  41 + true // 新增默认值
  42 + ),
  43 + COSTFEE_GARDENWASTE(
  44 + "costFee_gardenWaste",
  45 + "园林废弃物费用导入模板.xlsx",
  46 + 2,
  47 + GardenWasteRecordImport.class,
  48 + true // 新增默认值
  49 + ),
  50 + COSTFEE_MECHANICAL(
  51 + "costFee_mechanical",
  52 + "自有机械费用导入模板.xlsx",
  53 + 2,
  54 + MechanicalCostImport.class,
  55 + true // 新增默认值
  56 + ),
  57 + COSTFEE_RENTALMECHANICAL(
  58 + "costFee_rentalmechanical",
  59 + "租赁机械费用导入模板.xlsx",
  60 + 2,
  61 + RentalMechanicalCostImport.class,
  62 + true // 新增默认值
32 ); 63 );
33 -// COSTFEE_DEPARTMENT(  
34 -// "costFee_department",  
35 -// "综合费用导入模板.xlsx",  
36 -// 1,  
37 -// DepartmentCostImport.class,  
38 -// true // 新增默认值  
39 -// ),  
40 -// COSTFEE_GARDENWASTE(  
41 -// "costFee_gardenWaste",  
42 -// "园林废弃物费用导入模板.xlsx",  
43 -// 1,  
44 -// GardenWasteRecordImport.class,  
45 -// true // 新增默认值  
46 -// ),  
47 -// COSTFEE_MECHANICAL(  
48 -// "costFee_mechanical",  
49 -// "自有机械费用导入模板.xlsx",  
50 -// 1,  
51 -// MechanicalCostImport.class,  
52 -// true // 新增默认值  
53 -// ),  
54 -// COSTFEE_RENTALMECHANICAL(  
55 -// "costFee_rentalmechanical",  
56 -// "租赁机械费用导入模板.xlsx",  
57 -// 1,  
58 -// RentalMechanicalCostImport.class,  
59 -// true // 新增默认值  
60 -// );  
61 64
62 // 模板编码(前端传递的标识) 65 // 模板编码(前端传递的标识)
63 private final String code; 66 private final String code;
@@ -86,12 +89,12 @@ public enum TemplateEnum { @@ -86,12 +89,12 @@ public enum TemplateEnum {
86 public static TemplateEnum getByCode(String code) { 89 public static TemplateEnum getByCode(String code) {
87 // 空值校验 90 // 空值校验
88 if (code == null || code.trim().isEmpty()) { 91 if (code == null || code.trim().isEmpty()) {
89 - throw new RuntimeException("模板编码不能为空"); 92 + throw exception0(BAD_REQUEST.getCode(),"模板编码不能为空");
90 } 93 }
91 // 从缓存获取,避免循环遍历 94 // 从缓存获取,避免循环遍历
92 TemplateEnum template = CODE_MAP.get(code); 95 TemplateEnum template = CODE_MAP.get(code);
93 if (template == null) { 96 if (template == null) {
94 - throw new RuntimeException("无效的模板编码:" + code); 97 + throw exception0(BAD_REQUEST.getCode(),"无效的模板编码"+code);
95 } 98 }
96 return template; 99 return template;
97 } 100 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java
@@ -5,6 +5,18 @@ import com.fasterxml.jackson.databind.ObjectMapper; @@ -5,6 +5,18 @@ import com.fasterxml.jackson.databind.ObjectMapper;
5 import com.zteits.urbanops.framework.security.core.LoginUser; 5 import com.zteits.urbanops.framework.security.core.LoginUser;
6 import com.zteits.urbanops.module.garden.controller.admin.costfee.CostFeeController; 6 import com.zteits.urbanops.module.garden.controller.admin.costfee.CostFeeController;
7 import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.*; 7 import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.*;
  8 +import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
  9 +import com.zteits.urbanops.module.garden.dal.dataobject.mechanicalcost.MechanicalCostDO;
  10 +import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO;
  11 +import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO;
  12 +import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO;
  13 +import com.zteits.urbanops.module.garden.dal.dataobject.waterfee.WaterFeeDO;
  14 +import com.zteits.urbanops.module.garden.dal.mysql.departmentcost.DepartmentCostMapper;
  15 +import com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper;
  16 +import com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper;
  17 +import com.zteits.urbanops.module.garden.dal.mysql.rentalmechanicalcost.RentalMechanicalCostMapper;
  18 +import com.zteits.urbanops.module.garden.dal.mysql.wasterecord.WasteRecordMapper;
  19 +import com.zteits.urbanops.module.garden.dal.mysql.waterfee.WaterFeeMapper;
8 import com.zteits.urbanops.module.garden.enums.AssignTasksConstants; 20 import com.zteits.urbanops.module.garden.enums.AssignTasksConstants;
9 import com.zteits.urbanops.module.garden.enums.CostFeeConstants; 21 import com.zteits.urbanops.module.garden.enums.CostFeeConstants;
10 import com.zteits.urbanops.module.garden.enums.TemplateEnum; 22 import com.zteits.urbanops.module.garden.enums.TemplateEnum;
@@ -16,6 +28,7 @@ import jakarta.validation.ConstraintViolationException; @@ -16,6 +28,7 @@ import jakarta.validation.ConstraintViolationException;
16 import jakarta.validation.Validator; 28 import jakarta.validation.Validator;
17 import lombok.extern.slf4j.Slf4j; 29 import lombok.extern.slf4j.Slf4j;
18 import org.apache.commons.lang3.StringUtils; 30 import org.apache.commons.lang3.StringUtils;
  31 +import org.springframework.beans.BeanUtils;
19 import org.springframework.beans.factory.annotation.Autowired; 32 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.data.redis.core.BoundHashOperations; 33 import org.springframework.data.redis.core.BoundHashOperations;
21 import org.springframework.data.redis.core.RedisTemplate; 34 import org.springframework.data.redis.core.RedisTemplate;
@@ -24,8 +37,10 @@ import org.springframework.transaction.annotation.Transactional; @@ -24,8 +37,10 @@ import org.springframework.transaction.annotation.Transactional;
24 import org.springframework.util.CollectionUtils; 37 import org.springframework.util.CollectionUtils;
25 38
26 import java.io.IOException; 39 import java.io.IOException;
  40 +import java.time.LocalDate;
27 import java.util.*; 41 import java.util.*;
28 import java.util.concurrent.TimeUnit; 42 import java.util.concurrent.TimeUnit;
  43 +import java.util.function.Function;
29 import java.util.stream.Collectors; 44 import java.util.stream.Collectors;
30 import java.util.stream.IntStream; 45 import java.util.stream.IntStream;
31 46
@@ -59,6 +74,20 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -59,6 +74,20 @@ public class CostFeeServiceImpl implements CostFeeService {
59 @Resource 74 @Resource
60 private DeptApi deptApi; 75 private DeptApi deptApi;
61 76
  77 + @Autowired
  78 + private WaterFeeMapper waterFeeMapper;
  79 + @Autowired
  80 + private PersonalCostMapper personalCostMapper;
  81 + @Autowired
  82 + private DepartmentCostMapper departmentCostMapper;
  83 + @Autowired
  84 + private MechanicalCostMapper mechanicalCostMapper;
  85 + @Autowired
  86 + private RentalMechanicalCostMapper rentalMechanicalCostMapper;
  87 + @Autowired
  88 + private WasteRecordMapper wasteRecordMapper;
  89 +
  90 +
62 @Override 91 @Override
63 /** 92 /**
64 * 保存数据到Redis 93 * 保存数据到Redis
@@ -99,7 +128,7 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -99,7 +128,7 @@ public class CostFeeServiceImpl implements CostFeeService {
99 TemplateEnum template = TemplateEnum.getByCode(templateName); 128 TemplateEnum template = TemplateEnum.getByCode(templateName);
100 Class<?> importClass = template.getImportClass(); 129 Class<?> importClass = template.getImportClass();
101 if (importClass == null) { 130 if (importClass == null) {
102 - throw exception(COST_FEE_NOT_EXISTS_001); 131 + throw exception0(BAD_REQUEST.getCode(),"导入模板配置异常");
103 } 132 }
104 133
105 // 分页参数设置 134 // 分页参数设置
@@ -118,7 +147,7 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -118,7 +147,7 @@ public class CostFeeServiceImpl implements CostFeeService {
118 if (dataList == null || dataList.isEmpty()) { 147 if (dataList == null || dataList.isEmpty()) {
119 // 首次分页就无数据,抛出异常 148 // 首次分页就无数据,抛出异常
120 if (pageNum == 1) { 149 if (pageNum == 1) {
121 - throw new IllegalArgumentException("没有可导入的数据或数据已过期"); 150 + throw exception0(BAD_REQUEST.getCode(),"没有可导入的数据或数据已过期");
122 } 151 }
123 break; 152 break;
124 } 153 }
@@ -128,7 +157,7 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -128,7 +157,7 @@ public class CostFeeServiceImpl implements CostFeeService {
128 157
129 // 调用业务服务执行本页数据导入 158 // 调用业务服务执行本页数据导入
130 int currentPageCount = dataList.size(); 159 int currentPageCount = dataList.size();
131 - //insertData(template, dataList, operator); 160 + insertData(template, dataList, operator);
132 totalImported += currentPageCount; 161 totalImported += currentPageCount;
133 162
134 // 打印分页处理日志(可选) 163 // 打印分页处理日志(可选)
@@ -152,6 +181,243 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -152,6 +181,243 @@ public class CostFeeServiceImpl implements CostFeeService {
152 181
153 return totalImported; 182 return totalImported;
154 } 183 }
  184 + /**
  185 + * @Author wangqian
  186 + * @Description 保存数据
  187 + * @Date 2025/7/20 11:30
  188 + * @Param template
  189 + * @param dataList
  190 + * @param operator
  191 + * @Return void
  192 + */
  193 + private void insertData(TemplateEnum template, List<?> dataList, String operator) {
  194 + if (CollectionUtils.isEmpty(dataList)) {
  195 + log.info("数据列表为空,跳过插入操作");
  196 + return;
  197 + }
  198 + //单位集合
  199 + List<DeptRespDTO> companyList = deptApi.getSubDeptList();
  200 + // 1. 预加载部门映射(循环外加载,避免重复查询)
  201 + List<Long> deptIds = companyList.stream().map(DeptRespDTO::getId).collect(Collectors.toList());
  202 + Map<String, Long> nameToCompanyIdMap = CollectionUtils.isEmpty(companyList) ? Map.of()
  203 + : companyList.stream()
  204 + // 转 Map:key=companyId,value=companyName;key 冲突时保留最后一个(可调整)
  205 + .collect(Collectors.toMap(
  206 + dept -> dept.getName().trim(), // value 映射:取 companyName(去空格)
  207 + DeptRespDTO::getId, // key 映射:取 companyId
  208 + (oldValue, newValue) -> newValue
  209 + ));
  210 +
  211 +
  212 + // 模板类型校验
  213 + Class<?> importClass = template.getImportClass(); // 从枚举获取导入类,避免switch
  214 + // 根据不同模板类型执行不同的处理逻辑
  215 + if (WaterFeeImport.class.isAssignableFrom(importClass)) {
  216 + Map<Long, String> companyIdToNamedMap = CollectionUtils.isEmpty(companyList) ? Map.of()
  217 + : companyList.stream()
  218 + // 转 Map:key=companyId,value=companyName;key 冲突时保留最后一个(可调整)
  219 + .collect(Collectors.toMap(
  220 + DeptRespDTO::getId, // key 映射:取 companyId
  221 + dept -> dept.getName().trim(), // value 映射:取 companyName(去空格)
  222 + (oldValue, newValue) -> newValue
  223 + ));
  224 +
  225 + // 处理水费数据
  226 + List<WaterFeeDO> feeList = ((List<WaterFeeImport>) dataList).stream()
  227 + .map(importObj -> {
  228 + WaterFeeDO fee = new WaterFeeDO();
  229 + BeanUtils.copyProperties(importObj, fee);
  230 + fee.setCompanyId(String.valueOf(getLoginUserDeptId()));
  231 + if (getLoginUserDeptId() == 100) {
  232 + fee.setCompanyName("蓟城山水");
  233 + } else {
  234 + // 设置单位id
  235 + fee.setCompanyName(String.valueOf(companyIdToNamedMap.get(fee.getCompanyId())));
  236 + }
  237 + return fee;
  238 + })
  239 + .collect(Collectors.toMap(
  240 + // 生成唯一键:feeMonth + 分隔符 + meterCode(避免不同组合拼接后重复)
  241 + fee -> fee.getFeeMonth() + "_" + fee.getMeterCode(),
  242 + // 值为对象本身
  243 + Function.identity(),
  244 + // 当键重复时,保留第一个出现的对象(可根据需求改为保留最后一个:(existing, replacement) -> replacement)
  245 + (existing, replacement) -> replacement
  246 + ))
  247 + .values()
  248 + .stream()
  249 + .collect(Collectors.toList());
  250 +
  251 + if (!CollectionUtils.isEmpty(feeList)) {
  252 + //查询重复项,进行删除
  253 + List<Long> ids = waterFeeMapper.selectDuplicateIds(feeList);
  254 + if (!CollectionUtils.isEmpty(ids)) {
  255 + waterFeeMapper.deleteByIds(ids);
  256 + }
  257 + // 调用批量插入方法
  258 + waterFeeMapper.insertBatch(feeList);
  259 + }
  260 + log.info("成功插入 {} 条水费数据", feeList.size());
  261 + } else if (PersonalCostImport.class.isAssignableFrom(importClass)) {
  262 + //去重
  263 + dataList = personalFeeReplacement((List<PersonalCostImport>) dataList);
  264 + //获取班组对象
  265 + Map<String, Long> teamIdMap = this.getDeptListAll(deptIds);
  266 +
  267 + // 3. 转换导入数据为PersonalCost列表(Stream优化+空指针防护)
  268 + List<PersonalCostImport> feeList = (List<PersonalCostImport>)dataList;
  269 + List<PersonalCostDO> saveFeeList = new ArrayList<>(CollectionUtils.isEmpty(feeList) ? 0 : feeList.size());
  270 + if (!CollectionUtils.isEmpty(feeList)) {
  271 + for (PersonalCostImport importObj : feeList) {
  272 + PersonalCostDO fee = new PersonalCostDO();
  273 + BeanUtils.copyProperties(importObj, fee);
  274 + // 设置单位id
  275 + fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName())));
  276 + //设置班组id
  277 + fee.setDeptId(getDeptList(teamIdMap, importObj.getTeamIds()));
  278 + saveFeeList.add(fee);
  279 + }
  280 + }
  281 + // 4. 处理重复数据(删除+插入原子性)
  282 + if (!feeList.isEmpty()) {
  283 + // 4.1 查询并删除重复项
  284 +
  285 +// List<Long> duplicateIds = personalCostMapper.selectDuplicateIds(saveFeeList);
  286 +// if (!duplicateIds.isEmpty()) {
  287 +// personalCostMapper.deleteByIds(duplicateIds);
  288 +// }
  289 +
  290 + // 4.2 批量插入主表
  291 + personalCostMapper.insertBatch(saveFeeList);
  292 + }
  293 + log.info("成功插入 {} 人员费用数据", dataList.size());
  294 + } else if (DepartmentCostImport.class.isAssignableFrom(importClass)) {
  295 + //去重
  296 + dataList = deptFeeReplacement((List<DepartmentCostImport>)dataList);
  297 + List<DepartmentCostDO> feeList = ((List<DepartmentCostImport>) dataList).stream()
  298 + .map(importObj -> {
  299 + DepartmentCostDO fee = new DepartmentCostDO();
  300 + BeanUtils.copyProperties(importObj, fee);
  301 + // 设置单位id
  302 + fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName())));
  303 + return fee;
  304 + })
  305 + .collect(Collectors.toList());
  306 + if (!CollectionUtils.isEmpty(feeList)) {
  307 + //查询重复项,进行删除
  308 + List<Long> ids = departmentCostMapper.selectDuplicateIds(feeList);
  309 + if (!CollectionUtils.isEmpty(ids)) {
  310 + departmentCostMapper.deleteByIds(ids);
  311 + }
  312 + // 调用批量插入方法
  313 + departmentCostMapper.insertBatch(feeList);
  314 + }
  315 + log.info("成功插入 {} 综合费用数据", feeList.size());
  316 + } else if (MechanicalCostImport.class.isAssignableFrom(importClass)) {
  317 + List<MechanicalCostImport> feeList = (List<MechanicalCostImport>) dataList;
  318 + List<MechanicalCostDO> saveFeeList = new ArrayList<>(CollectionUtils.isEmpty(feeList) ? 0 : feeList.size());
  319 + if (!CollectionUtils.isEmpty(feeList)) {
  320 + //获取班组对象
  321 + Map<String, Long> teamIdMap = this.getDeptListAll(deptIds);
  322 + for (MechanicalCostImport importObj : feeList) {
  323 + MechanicalCostDO fee = new MechanicalCostDO();
  324 + BeanUtils.copyProperties(importObj, fee);
  325 + // 设置单位id
  326 + fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName())));
  327 + //设置班组id
  328 + fee.setDeptId(getDeptList(teamIdMap, importObj.getTeamIds()));
  329 + // 3.3 计算结束时间(空指针防护)
  330 + Optional.ofNullable(fee.getStartUseTime())
  331 + .ifPresent(startTime -> {
  332 + int useDuration = Optional.ofNullable(fee.getServiceLife())
  333 + .map(Math::toIntExact) // 处理可能的溢出
  334 + .orElse(0);
  335 + fee.setEndUseTime(this.getEndLocalDateForYears(startTime, useDuration));
  336 + });
  337 +
  338 + saveFeeList.add(fee);
  339 + }
  340 + }
  341 + // 4. 批量插入主表(空集合直接跳过)
  342 + if (!feeList.isEmpty()) {
  343 + //查询重复项,进行删除
  344 + List<Long> ids = mechanicalCostMapper.selectDuplicateIds(saveFeeList);
  345 + if (!CollectionUtils.isEmpty(ids)) {
  346 + mechanicalCostMapper.deleteByIds(ids);
  347 + }
  348 + mechanicalCostMapper.insertBatch(saveFeeList);
  349 + }
  350 + log.info("成功插入 {} 自有机械费用数据", dataList.size());
  351 + } else if (RentalMechanicalCostImport.class.isAssignableFrom(importClass)) {
  352 + List<RentalMechanicalCostImport> feeList = (List<RentalMechanicalCostImport>)dataList;
  353 + List<RentalMechanicalCostDO> saveFeeList = new ArrayList<>(CollectionUtils.isEmpty(feeList) ? 0 : feeList.size());
  354 + if (!CollectionUtils.isEmpty(feeList)) {
  355 + //获取班组对象
  356 + Map<String, Long> teamIdMap = this.getDeptListAll(deptIds);
  357 + for (RentalMechanicalCostImport importObj : feeList) {
  358 + RentalMechanicalCostDO fee = new RentalMechanicalCostDO();
  359 + BeanUtils.copyProperties(importObj, fee);
  360 + // 设置单位id
  361 + fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName())));
  362 + //设置班组id
  363 + List<TeamBizdomainRelVo> teamRels = new ArrayList<>();
  364 + String teamIdsStr = StringUtils.defaultString(importObj.getTeamIds()).replace(",", ",");
  365 + String weightsStr = StringUtils.defaultString(importObj.getWeight()).replace(",", ",");
  366 +
  367 + String[] teamIds = teamIdsStr.split(",");
  368 + String[] weights = weightsStr.split(",");
  369 + for (int i = 0; i < teamIds.length; i++) {
  370 + TeamBizdomainRelVo rel = new TeamBizdomainRelVo();
  371 + rel.setTeamName(teamIds[i].trim());
  372 + // 提前处理部门ID映射(复用deptMap)
  373 + rel.setTeamId(Optional.ofNullable(teamIdMap.get(teamIds[i].trim())).map(String::valueOf).orElse(null));
  374 + rel.setWeight(Long.valueOf(weights[i].trim()));
  375 + teamRels.add(rel);
  376 + }
  377 + fee.setTeamIds(teamRels);
  378 +
  379 + // 3.3 计算结束时间(空指针防护)
  380 + Optional.ofNullable(fee.getStartUseTime())
  381 + .ifPresent(startTime -> {
  382 + int useDuration = Optional.ofNullable(fee.getUseDuration())
  383 + .map(Math::toIntExact) // 处理可能的溢出
  384 + .orElse(0);
  385 + fee.setEndUseTime(getEndLocalDateForYears(startTime, useDuration));
  386 + });
  387 +
  388 + saveFeeList.add(fee);
  389 + }
  390 + }
  391 + if (!feeList.isEmpty()) {
  392 + rentalMechanicalCostMapper.insertBatch(saveFeeList);
  393 + }
  394 + log.info("成功插入 {} 租赁机械费用数据", dataList.size());
  395 + } else if (GardenWasteRecordImport.class.isAssignableFrom(importClass)) {
  396 + //获取班组对象
  397 + List<GardenWasteRecordImport> feeList = (List<GardenWasteRecordImport>)dataList;
  398 + List<WasteRecordDO> saveFeeList = new ArrayList<>(CollectionUtils.isEmpty(feeList) ? 0 : feeList.size());
  399 + if (!CollectionUtils.isEmpty(feeList)) {
  400 + Map<String, Long> teamIdMap = this.getDeptListAll(deptIds);
  401 + for (GardenWasteRecordImport importObj : feeList) {
  402 + WasteRecordDO fee = new WasteRecordDO();
  403 + BeanUtils.copyProperties(importObj, fee);
  404 + // 设置单位id
  405 + fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName())));
  406 + //设置班组id
  407 + fee.setDeptId(getDeptList(teamIdMap, importObj.getTeamIds()));
  408 +
  409 + saveFeeList.add(fee);
  410 + }
  411 + }
  412 + // 4. 批量插入主表(若主表插入失败,事务回滚)
  413 + if (!feeList.isEmpty()) {
  414 + wasteRecordMapper.insertBatch(saveFeeList);
  415 + }
  416 +
  417 + log.info("成功插入 {} 园林废弃物费用数据", dataList.size());
  418 + }
  419 +
  420 + }
155 421
156 /** 422 /**
157 * 从Redis获取分页数据 423 * 从Redis获取分页数据
@@ -309,6 +575,11 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -309,6 +575,11 @@ public class CostFeeServiceImpl implements CostFeeService {
309 // 抛出包含行号和所有错误的异常 575 // 抛出包含行号和所有错误的异常
310 // throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations); 576 // throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations);
311 } 577 }
  578 + Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName());
  579 + //单位校验
  580 + validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId);
  581 + //部门名称校验
  582 + validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds());
312 583
313 } catch (ConstraintViolationException ex) { 584 } catch (ConstraintViolationException ex) {
314 // 5. 包装异常,明确行号 + 真实校验错误( 585 // 5. 包装异常,明确行号 + 真实校验错误(
@@ -339,7 +610,11 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -339,7 +610,11 @@ public class CostFeeServiceImpl implements CostFeeService {
339 // 抛出包含行号和所有错误的异常 610 // 抛出包含行号和所有错误的异常
340 //throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations); 611 //throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations);
341 } 612 }
342 - 613 + Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName());
  614 + //单位校验
  615 + validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId);
  616 + //部门名称校验
  617 + validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds());
343 618
344 } catch (ConstraintViolationException ex) { 619 } catch (ConstraintViolationException ex) {
345 throw exception0(BAD_REQUEST.getCode(), String.format("第%d条数据校验失败:%s", rowNum, ex.getMessage()), ex); 620 throw exception0(BAD_REQUEST.getCode(), String.format("第%d条数据校验失败:%s", rowNum, ex.getMessage()), ex);
@@ -475,7 +750,9 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -475,7 +750,9 @@ public class CostFeeServiceImpl implements CostFeeService {
475 //throw new ConstraintViolationException(errorMsg.toString().trim(), violations); 750 //throw new ConstraintViolationException(errorMsg.toString().trim(), violations);
476 } 751 }
477 752
478 - 753 + Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName());
  754 + //单位校验
  755 + validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId);
479 } catch (ConstraintViolationException ex) { 756 } catch (ConstraintViolationException ex) {
480 // 5. 包装异常,明确行号 + 真实校验错误( 757 // 5. 包装异常,明确行号 + 真实校验错误(
481 throw exception0(BAD_REQUEST.getCode(), String.format("第%d条数据校验失败:%s", rowNum, ex.getMessage()), ex); 758 throw exception0(BAD_REQUEST.getCode(), String.format("第%d条数据校验失败:%s", rowNum, ex.getMessage()), ex);
@@ -501,30 +778,32 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -501,30 +778,32 @@ public class CostFeeServiceImpl implements CostFeeService {
501 } 778 }
502 } 779 }
503 private void validateTeams(int rowNum, List<String> dept, String teamIds) { 780 private void validateTeams(int rowNum, List<String> dept, String teamIds) {
504 - String[] teamNames = teamIds.split(",");  
505 - Set<String> checkedTeams = new HashSet<>(); // 用于存储已校验的团队名称,检测重复  
506 -  
507 - for (String teamName : teamNames) {  
508 - String trimmedTeamName = teamName.trim(); // 处理前后空格 781 + if (StringUtils.isNotEmpty(teamIds)) {
  782 + String[] teamNames = teamIds.split(",");
  783 + Set<String> checkedTeams = new HashSet<>(); // 用于存储已校验的团队名称,检测重复
  784 +
  785 + for (String teamName : teamNames) {
  786 + String trimmedTeamName = teamName.trim(); // 处理前后空格
  787 +
  788 + // 重复校验:如果Set中已存在该团队名称,说明重复
  789 + if (checkedTeams.contains(trimmedTeamName)) {
  790 + throw exception0(BAD_REQUEST.getCode(), String.format(
  791 + "第%d条数据:%s名称重复",
  792 + rowNum, teamName
  793 + ));
  794 + }
509 795
510 - // 重复校验:如果Set中已存在该团队名称,说明重复  
511 - if (checkedTeams.contains(trimmedTeamName)) {  
512 - throw exception0(BAD_REQUEST.getCode(), String.format(  
513 - "第%d条数据:%s名称重复",  
514 - rowNum, teamName  
515 - ));  
516 - } 796 + // 存在性校验:检查团队是否在dept中存在
  797 + if (!dept.contains(trimmedTeamName)) {
  798 + throw exception0(BAD_REQUEST.getCode(), String.format(
  799 + "第%d条数据:%s名称不正确",
  800 + rowNum, teamName
  801 + ));
  802 + }
517 803
518 - // 存在性校验:检查团队是否在dept中存在  
519 - if (!dept.contains(trimmedTeamName)) {  
520 - throw exception0(BAD_REQUEST.getCode(), String.format(  
521 - "第%d条数据:%s名称不正确",  
522 - rowNum, teamName  
523 - )); 804 + // 将校验通过的团队名称加入Set,用于后续重复判断
  805 + checkedTeams.add(trimmedTeamName);
524 } 806 }
525 -  
526 - // 将校验通过的团队名称加入Set,用于后续重复判断  
527 - checkedTeams.add(trimmedTeamName);  
528 } 807 }
529 } 808 }
530 809
@@ -538,4 +817,167 @@ public class CostFeeServiceImpl implements CostFeeService { @@ -538,4 +817,167 @@ public class CostFeeServiceImpl implements CostFeeService {
538 } 817 }
539 return listMap; 818 return listMap;
540 } 819 }
  820 +
  821 + /**
  822 + * 按salaryMonth、expenseName、companyId三个字段去重
  823 + * @param costList 原始部门成本列表
  824 + * @return 去重后的列表
  825 + */
  826 + public List<DepartmentCostImport> deptFeeReplacement(List<DepartmentCostImport> costList) {
  827 + if (costList == null || costList.isEmpty()) {
  828 + return new ArrayList<>();
  829 + }
  830 +
  831 + // 1. 以三个字段的组合作为键(使用分隔符避免不同组合产生相同键)
  832 + // 2. 遇到重复键时保留第一条记录
  833 + Map<String, DepartmentCostImport> uniqueMap = costList.stream()
  834 + .collect(Collectors.toMap(
  835 + // 生成唯一键:salaryMonth|expenseName|companyId
  836 + cost -> buildUniqueKey(cost),
  837 + // 键不存在时存入当前对象
  838 + cost -> cost,
  839 + // 键已存在时保留最后一个
  840 + (existing, replacement) -> replacement
  841 + ));
  842 +
  843 + // 将去重后的结果转为List返回
  844 + return new ArrayList<>(uniqueMap.values());
  845 + }
  846 +
  847 + /**
  848 + * 构建三个字段的唯一组合键(处理null值)
  849 + */
  850 + private String buildUniqueKey(DepartmentCostImport cost) {
  851 + // 使用Objects.toString处理可能的null值,避免NullPointerException
  852 + return Objects.toString(cost.getSalaryMonth(), "") + "|" +
  853 + Objects.toString(cost.getExpenseName(), "") + "|" +
  854 + Objects.toString(cost.getCompanyName(), "");
  855 + }
  856 +
  857 + /**
  858 + * 按salaryMonth、name、companyId、teamIdList四个字段去重
  859 + * @param costList 原始个人成本列表
  860 + * @return 去重后的列表
  861 + */
  862 + public List<PersonalCostImport> personalFeeReplacement(List<PersonalCostImport> costList) {
  863 + if (costList == null || costList.isEmpty()) {
  864 + return new ArrayList<>();
  865 + }
  866 +
  867 + // 1. 以四个字段的组合作为键(特别处理集合类型的teamIdList)
  868 + // 2. 遇到重复键时保留第一条记录
  869 + Map<String, PersonalCostImport> uniqueMap = costList.stream()
  870 + .collect(Collectors.toMap(
  871 + // 生成唯一键:salaryMonth|name|companyId|teamIdListStr
  872 + this::buildUniqueKey,
  873 + // 键不存在时存入当前对象
  874 + cost -> cost,
  875 + // 键已存在时保留第一个对象(可改为replacement保留最后一个)
  876 + (existing, replacement) -> replacement
  877 + ));
  878 +
  879 + // 将去重后的结果转为List返回
  880 + return new ArrayList<>(uniqueMap.values());
  881 + }
  882 +
  883 + /**
  884 + * 构建四个字段的唯一组合键(处理null值和集合类型)
  885 + */
  886 + private String buildUniqueKey(PersonalCostImport cost) {
  887 + // 处理普通字段的null值
  888 + String salaryMonth = Objects.toString(cost.getSalaryMonth(), "");
  889 + String name = Objects.toString(cost.getName(), "");
  890 + String companyId = Objects.toString(cost.getCompanyName(), "");
  891 + String teamIds = Objects.toString(cost.getTeamIds(), "");
  892 + // 拼接唯一键
  893 + return salaryMonth + "|" + name + "|" + companyId + "|" + teamIds;
  894 + }
  895 +
  896 +
  897 + public static LocalDate getEndLocalDateForYears(LocalDate startDate, int years) {
  898 + if (startDate == null) {
  899 + throw new IllegalArgumentException("开始日期不能为null");
  900 + }
  901 + if (years < 0) {
  902 + throw new IllegalArgumentException("年数不能为负数");
  903 + }
  904 + return startDate.plusYears(years);
  905 + }
  906 +
  907 + /**
  908 + * @Author wangqian
  909 + * @Description 根据班组名称获取班组id
  910 + * @Date 2025/11/26 19:38
  911 + */
  912 + /**
  913 + * 根据部门ID列表获取「部门名称→部门ID」的映射(含空值防护)
  914 + */
  915 + private Map<String, Long> getDeptListAll(List<Long> deptIds) {
  916 + Map<String, Long> deptNameMap = new HashMap<>();
  917 +
  918 + // 1. 空值安全:避免 deptIds 为 null/空列表导致 NPE
  919 + if (CollectionUtils.isEmpty(deptIds)) {
  920 + return deptNameMap;
  921 + }
  922 +
  923 + for (Long deptId : deptIds) {
  924 + // 2. 跳过 null 的部门ID
  925 + if (deptId == null) {
  926 + continue;
  927 + }
  928 +
  929 + // 3. 获取子部门列表(防护接口返回 null)
  930 + List<DeptRespDTO> deptList = deptApi.getChildDeptList(deptId);
  931 + if (CollectionUtils.isEmpty(deptList)) {
  932 + continue;
  933 + }
  934 +
  935 + // 4. 遍历子部门:过滤无效名称,避免 Map 出现 null/空字符串键
  936 + for (DeptRespDTO dept : deptList) {
  937 + if (dept == null) {
  938 + continue;
  939 + }
  940 + String deptName = dept.getName();
  941 + // 过滤 null/空白名称(避免 Map 键为 null 或空字符串)
  942 + if (deptName == null || deptName.trim().isEmpty()) {
  943 + continue;
  944 + }
  945 + // 若名称重复,后遍历的部门会覆盖先遍历的(可根据业务调整规则)
  946 + deptNameMap.put(deptName.trim(), dept.getId());
  947 + }
  948 + }
  949 +
  950 + return deptNameMap;
  951 + }
  952 + /**
  953 + * @Author wangqian
  954 + * @Description 根据班组名称获取班组id集合
  955 + * @Date 2025/11/26 20:07
  956 + */
  957 + private List<String> getDeptList(Map<String, Long> teamIdMap, String teamId) {
  958 + List<String> list = new ArrayList<>();
  959 +
  960 + // 1. 处理 teamId 为空的情况,直接返回空列表
  961 + if (StringUtils.isEmpty(teamId)) {
  962 + return list;
  963 + }
  964 +
  965 + // 2. 分割字符串,处理空元素
  966 + String[] teamArray = teamId.split(",");
  967 + for (String teamName : teamArray) {
  968 + // 3. 去除首尾空格,避免因空格导致匹配不到
  969 + String trimTeamName = teamName.trim();
  970 + if (StringUtils.isEmpty(trimTeamName)) {
  971 + continue; // 跳过空字符串元素
  972 + }
  973 +
  974 + // 4. 从Map中获取ID,处理null值(避免添加null到列表)
  975 + Long deptId = teamIdMap.get(trimTeamName);
  976 + if (deptId != null) {
  977 + list.add(String.valueOf(deptId)); // 直接添加Long类型,修正原String类型错误
  978 + }
  979 + }
  980 +
  981 + return list;
  982 + }
541 } 983 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostServiceImpl.java
@@ -4,12 +4,10 @@ import com.zteits.urbanops.framework.common.pojo.PageResult; @@ -4,12 +4,10 @@ import com.zteits.urbanops.framework.common.pojo.PageResult;
4 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 4 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
5 import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostPageReqVO; 5 import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostPageReqVO;
6 import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostSaveReqVO; 6 import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostSaveReqVO;
  7 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
7 import com.zteits.urbanops.module.garden.dal.dataobject.mechanicalcost.MechanicalCostDO; 8 import com.zteits.urbanops.module.garden.dal.dataobject.mechanicalcost.MechanicalCostDO;
8 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
9 import com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper; 9 import com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper;
10 -import com.zteits.urbanops.module.garden.enums.CostFeeConstants;  
11 import com.zteits.urbanops.module.garden.service.mechanicaldepreciation.MechanicalDepreciationService; 10 import com.zteits.urbanops.module.garden.service.mechanicaldepreciation.MechanicalDepreciationService;
12 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
13 import jakarta.annotation.Resource; 11 import jakarta.annotation.Resource;
14 import org.apache.commons.collections4.CollectionUtils; 12 import org.apache.commons.collections4.CollectionUtils;
15 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
@@ -43,7 +41,7 @@ public class MechanicalCostServiceImpl implements MechanicalCostService { @@ -43,7 +41,7 @@ public class MechanicalCostServiceImpl implements MechanicalCostService {
43 MechanicalCostDO mechanicalCost = BeanUtils.toBean(createReqVO, MechanicalCostDO.class); 41 MechanicalCostDO mechanicalCost = BeanUtils.toBean(createReqVO, MechanicalCostDO.class);
44 42
45 List<String> deptIds = createReqVO.getTeamIds().stream() 43 List<String> deptIds = createReqVO.getTeamIds().stream()
46 - .map(TeamBizdomainRelDO::getTeamId) 44 + .map(TeamBizdomainRelVo::getTeamId)
47 .collect(Collectors.toList()); 45 .collect(Collectors.toList());
48 mechanicalCost.setDeptId(deptIds); 46 mechanicalCost.setDeptId(deptIds);
49 47
@@ -60,7 +58,7 @@ public class MechanicalCostServiceImpl implements MechanicalCostService { @@ -60,7 +58,7 @@ public class MechanicalCostServiceImpl implements MechanicalCostService {
60 MechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, MechanicalCostDO.class); 58 MechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, MechanicalCostDO.class);
61 59
62 List<String> deptIds = updateReqVO.getTeamIds().stream() 60 List<String> deptIds = updateReqVO.getTeamIds().stream()
63 - .map(TeamBizdomainRelDO::getTeamId) 61 + .map(TeamBizdomainRelVo::getTeamId)
64 .collect(Collectors.toList()); 62 .collect(Collectors.toList());
65 updateObj.setDeptId(deptIds); 63 updateObj.setDeptId(deptIds);
66 64
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationServiceImpl.java
1 package com.zteits.urbanops.module.garden.service.mechanicaldepreciation; 1 package com.zteits.urbanops.module.garden.service.mechanicaldepreciation;
2 2
3 -import cn.hutool.core.collection.CollUtil;  
4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
6 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
7 -import org.apache.commons.lang3.StringUtils;  
8 -import org.springframework.stereotype.Service;  
9 -import jakarta.annotation.Resource;  
10 -import org.springframework.validation.annotation.Validated;  
11 -import org.springframework.transaction.annotation.Transactional;  
12 -  
13 -import java.util.*;  
14 -import com.zteits.urbanops.module.garden.controller.admin.mechanicaldepreciation.vo.*;  
15 -import com.zteits.urbanops.module.garden.dal.dataobject.mechanicaldepreciation.MechanicalDepreciationDO;  
16 import com.zteits.urbanops.framework.common.pojo.PageResult; 5 import com.zteits.urbanops.framework.common.pojo.PageResult;
17 -import com.zteits.urbanops.framework.common.pojo.PageParam;  
18 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 6 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
19 - 7 +import com.zteits.urbanops.module.garden.controller.admin.mechanicaldepreciation.vo.MechanicalDepreciationPageReqVO;
  8 +import com.zteits.urbanops.module.garden.controller.admin.mechanicaldepreciation.vo.MechanicalDepreciationSaveReqVO;
  9 +import com.zteits.urbanops.module.garden.dal.dataobject.mechanicaldepreciation.MechanicalDepreciationDO;
20 import com.zteits.urbanops.module.garden.dal.mysql.mechanicaldepreciation.MechanicalDepreciationMapper; 10 import com.zteits.urbanops.module.garden.dal.mysql.mechanicaldepreciation.MechanicalDepreciationMapper;
  11 +import jakarta.annotation.Resource;
  12 +import org.springframework.stereotype.Service;
  13 +import org.springframework.validation.annotation.Validated;
  14 +
  15 +import java.util.List;
21 16
22 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 17 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
23 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;  
24 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList;  
25 -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; 18 +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.MECHANICAL_DEPRECIATION_NOT_EXISTS;
  19 +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.MECHANICAL_DEPRECIATION_NOT_EXISTS_001;
26 20
27 /** 21 /**
28 * 自有机械折旧子 Service 实现类 22 * 自有机械折旧子 Service 实现类
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostServiceImpl.java
@@ -5,8 +5,9 @@ import com.zteits.urbanops.framework.common.util.object.BeanUtils; @@ -5,8 +5,9 @@ import com.zteits.urbanops.framework.common.util.object.BeanUtils;
5 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostPageReqVO; 5 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostPageReqVO;
6 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostSaveReqVO; 6 import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostSaveReqVO;
7 import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO; 7 import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO;
8 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
9 import com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper; 8 import com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper;
  9 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
  10 +
10 import com.zteits.urbanops.module.system.api.dept.DeptApi; 11 import com.zteits.urbanops.module.system.api.dept.DeptApi;
11 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
12 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
@@ -40,7 +41,7 @@ public class PersonalCostServiceImpl implements PersonalCostService { @@ -40,7 +41,7 @@ public class PersonalCostServiceImpl implements PersonalCostService {
40 // 插入 41 // 插入
41 PersonalCostDO personalCost = BeanUtils.toBean(createReqVO, PersonalCostDO.class); 42 PersonalCostDO personalCost = BeanUtils.toBean(createReqVO, PersonalCostDO.class);
42 List<String> deptIds = createReqVO.getTeamIds().stream() 43 List<String> deptIds = createReqVO.getTeamIds().stream()
43 - .map(TeamBizdomainRelDO::getTeamId) 44 + .map(TeamBizdomainRelVo::getTeamId)
44 .collect(Collectors.toList()); 45 .collect(Collectors.toList());
45 personalCost.setDeptId(deptIds); 46 personalCost.setDeptId(deptIds);
46 personalCostMapper.insert(personalCost); 47 personalCostMapper.insert(personalCost);
@@ -56,7 +57,7 @@ public class PersonalCostServiceImpl implements PersonalCostService { @@ -56,7 +57,7 @@ public class PersonalCostServiceImpl implements PersonalCostService {
56 // 更新 57 // 更新
57 PersonalCostDO updateObj = BeanUtils.toBean(updateReqVO, PersonalCostDO.class); 58 PersonalCostDO updateObj = BeanUtils.toBean(updateReqVO, PersonalCostDO.class);
58 List<String> deptIds = updateReqVO.getTeamIds().stream() 59 List<String> deptIds = updateReqVO.getTeamIds().stream()
59 - .map(TeamBizdomainRelDO::getTeamId) 60 + .map(TeamBizdomainRelVo::getTeamId)
60 .collect(Collectors.toList()); 61 .collect(Collectors.toList());
61 updateObj.setDeptId(deptIds); 62 updateObj.setDeptId(deptIds);
62 personalCostMapper.updateById(updateObj); 63 personalCostMapper.updateById(updateObj);
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostServiceImpl.java
@@ -6,18 +6,14 @@ import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.v @@ -6,18 +6,14 @@ import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.v
6 import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostSaveReqVO; 6 import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostSaveReqVO;
7 import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO; 7 import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO;
8 import com.zteits.urbanops.module.garden.dal.mysql.rentalmechanicalcost.RentalMechanicalCostMapper; 8 import com.zteits.urbanops.module.garden.dal.mysql.rentalmechanicalcost.RentalMechanicalCostMapper;
9 -import com.zteits.urbanops.module.garden.enums.CostFeeConstants;  
10 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
11 import jakarta.annotation.Resource; 9 import jakarta.annotation.Resource;
12 -import org.apache.commons.collections4.CollectionUtils;  
13 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
14 import org.springframework.validation.annotation.Validated; 11 import org.springframework.validation.annotation.Validated;
15 12
16 import java.util.List; 13 import java.util.List;
17 14
18 -  
19 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 15 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
20 -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; 16 +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.RENTAL_MECHANICAL_COST_NOT_EXISTS;
21 17
22 /** 18 /**
23 * 租赁机械费用录入 Service 实现类 19 * 租赁机械费用录入 Service 实现类
@@ -31,15 +27,11 @@ public class RentalMechanicalCostServiceImpl implements RentalMechanicalCostServ @@ -31,15 +27,11 @@ public class RentalMechanicalCostServiceImpl implements RentalMechanicalCostServ
31 @Resource 27 @Resource
32 private RentalMechanicalCostMapper rentalMechanicalCostMapper; 28 private RentalMechanicalCostMapper rentalMechanicalCostMapper;
33 29
34 - @Resource  
35 - private TeamBizdomainRelService teamBizdomainRelService;  
36 -  
37 @Override 30 @Override
38 public Long createRentalMechanicalCost(RentalMechanicalCostSaveReqVO createReqVO) { 31 public Long createRentalMechanicalCost(RentalMechanicalCostSaveReqVO createReqVO) {
39 // 插入 32 // 插入
40 RentalMechanicalCostDO rentalMechanicalCost = BeanUtils.toBean(createReqVO, RentalMechanicalCostDO.class); 33 RentalMechanicalCostDO rentalMechanicalCost = BeanUtils.toBean(createReqVO, RentalMechanicalCostDO.class);
41 rentalMechanicalCostMapper.insert(rentalMechanicalCost); 34 rentalMechanicalCostMapper.insert(rentalMechanicalCost);
42 -  
43 // 返回 35 // 返回
44 return rentalMechanicalCost.getId(); 36 return rentalMechanicalCost.getId();
45 } 37 }
@@ -51,10 +43,6 @@ public class RentalMechanicalCostServiceImpl implements RentalMechanicalCostServ @@ -51,10 +43,6 @@ public class RentalMechanicalCostServiceImpl implements RentalMechanicalCostServ
51 // 更新 43 // 更新
52 RentalMechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, RentalMechanicalCostDO.class); 44 RentalMechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, RentalMechanicalCostDO.class);
53 rentalMechanicalCostMapper.updateById(updateObj); 45 rentalMechanicalCostMapper.updateById(updateObj);
54 -  
55 - //add by wq 保存班组信息关联表  
56 - teamBizdomainRelService.deleteTeamBizdomainRel(updateObj.getId(), CostFeeConstants.COSTFEE_RENTALMECHANICAL);  
57 - //add by wq 保存班组信息关联表  
58 } 46 }
59 47
60 @Override 48 @Override
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelService.java deleted
1 -package com.zteits.urbanops.module.garden.service.teambizdomainrel;  
2 -  
3 -import java.util.*;  
4 -import jakarta.validation.*;  
5 -import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;  
6 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
7 -import com.zteits.urbanops.framework.common.pojo.PageResult;  
8 -import com.zteits.urbanops.framework.common.pojo.PageParam;  
9 -  
10 -/**  
11 - * 班组关联 Service 接口  
12 - *  
13 - * @author 超级管理员  
14 - */  
15 -public interface TeamBizdomainRelService {  
16 -  
17 - /**  
18 - * 创建班组关联  
19 - *  
20 - * @param createReqVO 创建信息  
21 - * @return 编号  
22 - */  
23 - Long createTeamBizdomainRel(@Valid TeamBizdomainRelSaveReqVO createReqVO);  
24 -  
25 - /**  
26 - * 更新班组关联  
27 - *  
28 - * @param updateReqVO 更新信息  
29 - */  
30 - void updateTeamBizdomainRel(@Valid TeamBizdomainRelSaveReqVO updateReqVO);  
31 -  
32 - /**  
33 - * 删除班组关联  
34 - *  
35 - * @param id 编号  
36 - */  
37 - void deleteTeamBizdomainRel(Long id);  
38 -  
39 - /**  
40 - * 批量删除班组关联  
41 - *  
42 - * @param ids 编号  
43 - */  
44 - void deleteTeamBizdomainRelListByIds(List<Long> ids);  
45 -  
46 - /**  
47 - * 获得班组关联  
48 - *  
49 - * @param id 编号  
50 - * @return 班组关联  
51 - */  
52 - TeamBizdomainRelDO getTeamBizdomainRel(Long id);  
53 -  
54 - /**  
55 - * 获得班组关联分页  
56 - *  
57 - * @param pageReqVO 分页查询  
58 - * @return 班组关联分页  
59 - */  
60 - PageResult<TeamBizdomainRelDO> getTeamBizdomainRelPage(TeamBizdomainRelPageReqVO pageReqVO);  
61 -  
62 - /**  
63 - * @Author wangqian  
64 - * @Description 获取费用关联信息  
65 - * @Date 2025/11/19 20:47  
66 - * @Param busiId  
67 - * @param busiType  
68 - * @Return java.util.List<com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO>  
69 - */  
70 - public List<TeamBizdomainRelDO> getTeamBizdomainRelList(Long busiId, String busiType);  
71 -  
72 - public void saveTeamBizdomainRel(List<TeamBizdomainRelDO> teamList, Long busiId, String companyId, String companyName ,String busiType) ;  
73 -  
74 - public void deleteTeamBizdomainRel(Long id, String busiType);  
75 -  
76 -  
77 -}  
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelServiceImpl.java deleted
1 -package com.zteits.urbanops.module.garden.service.teambizdomainrel;  
2 -  
3 -import cn.hutool.core.collection.CollUtil;  
4 -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
5 -import com.baomidou.mybatisplus.core.toolkit.Wrappers;  
6 -import com.zteits.urbanops.module.garden.enums.CostFeeConstants;  
7 -import org.apache.commons.collections4.CollectionUtils;  
8 -import org.apache.commons.lang3.StringUtils;  
9 -import org.springframework.stereotype.Service;  
10 -import jakarta.annotation.Resource;  
11 -import org.springframework.validation.annotation.Validated;  
12 -import org.springframework.transaction.annotation.Transactional;  
13 -  
14 -import java.util.*;  
15 -import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;  
16 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;  
17 -import com.zteits.urbanops.framework.common.pojo.PageResult;  
18 -import com.zteits.urbanops.framework.common.pojo.PageParam;  
19 -import com.zteits.urbanops.framework.common.util.object.BeanUtils;  
20 -  
21 -import com.zteits.urbanops.module.garden.dal.mysql.teambizdomainrel.TeamBizdomainRelMapper;  
22 -  
23 -import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;  
24 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;  
25 -import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList;  
26 -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;  
27 -  
28 -/**  
29 - * 班组关联 Service 实现类  
30 - *  
31 - * @author 超级管理员  
32 - */  
33 -@Service  
34 -@Validated  
35 -public class TeamBizdomainRelServiceImpl implements TeamBizdomainRelService {  
36 -  
37 - @Resource  
38 - private TeamBizdomainRelMapper teamBizdomainRelMapper;  
39 -  
40 - @Override  
41 - public Long createTeamBizdomainRel(TeamBizdomainRelSaveReqVO createReqVO) {  
42 - // 插入  
43 - TeamBizdomainRelDO teamBizdomainRel = BeanUtils.toBean(createReqVO, TeamBizdomainRelDO.class);  
44 - teamBizdomainRelMapper.insert(teamBizdomainRel);  
45 -  
46 - // 返回  
47 - return teamBizdomainRel.getId();  
48 - }  
49 -  
50 - @Override  
51 - public void updateTeamBizdomainRel(TeamBizdomainRelSaveReqVO updateReqVO) {  
52 - // 校验存在  
53 - validateTeamBizdomainRelExists(updateReqVO.getId());  
54 - // 更新  
55 - TeamBizdomainRelDO updateObj = BeanUtils.toBean(updateReqVO, TeamBizdomainRelDO.class);  
56 - teamBizdomainRelMapper.updateById(updateObj);  
57 - }  
58 -  
59 - @Override  
60 - public void deleteTeamBizdomainRel(Long id) {  
61 - // 校验存在  
62 - validateTeamBizdomainRelExists(id);  
63 - // 删除  
64 - teamBizdomainRelMapper.deleteById(id);  
65 - }  
66 -  
67 - @Override  
68 - public void deleteTeamBizdomainRelListByIds(List<Long> ids) {  
69 - // 删除  
70 - teamBizdomainRelMapper.deleteByIds(ids);  
71 - }  
72 -  
73 -  
74 - private void validateTeamBizdomainRelExists(Long id) {  
75 - if (teamBizdomainRelMapper.selectById(id) == null) {  
76 - //throw exception(TEAM_BIZDOMAIN_REL_NOT_EXISTS);  
77 - }  
78 - }  
79 -  
80 - @Override  
81 - public TeamBizdomainRelDO getTeamBizdomainRel(Long id) {  
82 - return teamBizdomainRelMapper.selectById(id);  
83 - }  
84 -  
85 - @Override  
86 - public PageResult<TeamBizdomainRelDO> getTeamBizdomainRelPage(TeamBizdomainRelPageReqVO pageReqVO) {  
87 - return teamBizdomainRelMapper.selectPage(pageReqVO);  
88 - }  
89 -  
90 - public List<TeamBizdomainRelDO> getTeamBizdomainRelList(Long busiId, String busiType) {  
91 - if (busiId == null && StringUtils.isEmpty(busiType)) {  
92 - throw exception(MECHANICAL_COST_NOT_EXISTS_001);  
93 - }  
94 - LambdaQueryWrapper<TeamBizdomainRelDO> queryWrapper = Wrappers.lambdaQuery();  
95 - queryWrapper.eq(TeamBizdomainRelDO::getBusiId, busiId);  
96 - queryWrapper.eq(TeamBizdomainRelDO::getBusiType, busiType);  
97 - return teamBizdomainRelMapper.selectList(queryWrapper);  
98 - }  
99 -  
100 - @Override  
101 - public void saveTeamBizdomainRel(List<TeamBizdomainRelDO> teamList, Long busiId, String companyId, String companyName ,String busiType) {  
102 - if (CollectionUtils.isNotEmpty(teamList)) {  
103 - for (TeamBizdomainRelDO team : teamList) {  
104 - if (team != null && StringUtils.isNotEmpty(team.getTeamId())) {  
105 - TeamBizdomainRelDO teamBizdomainRel = new TeamBizdomainRelDO();  
106 - teamBizdomainRel.setBusiId(String.valueOf(busiId));  
107 - teamBizdomainRel.setCompanyId(companyId);  
108 - teamBizdomainRel.setCompanyName(companyName);  
109 - teamBizdomainRel.setTeamName(team.getTeamName());  
110 - teamBizdomainRel.setTeamId(team.getTeamId());  
111 - teamBizdomainRel.setBusiType(busiType);  
112 - teamBizdomainRelMapper.insert(teamBizdomainRel);  
113 - }  
114 - }  
115 - }  
116 - }  
117 -  
118 - @Override  
119 - public void deleteTeamBizdomainRel(Long id, String busiType ) {  
120 - if (id == null && StringUtils.isEmpty(busiType)) {  
121 - throw exception(MECHANICAL_COST_NOT_EXISTS_001);  
122 - }  
123 - LambdaQueryWrapper<TeamBizdomainRelDO> queryWrapper = Wrappers.lambdaQuery();  
124 - queryWrapper.eq(TeamBizdomainRelDO::getBusiId, String.valueOf(id));  
125 - queryWrapper.eq(TeamBizdomainRelDO::getBusiType, busiType);  
126 - teamBizdomainRelMapper.delete(queryWrapper);  
127 - }  
128 -}  
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordServiceImpl.java
@@ -4,10 +4,9 @@ import com.zteits.urbanops.framework.common.pojo.PageResult; @@ -4,10 +4,9 @@ import com.zteits.urbanops.framework.common.pojo.PageResult;
4 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 4 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
5 import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.WasteRecordPageReqVO; 5 import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.WasteRecordPageReqVO;
6 import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.WasteRecordSaveReqVO; 6 import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.WasteRecordSaveReqVO;
7 -import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; 7 +import com.zteits.urbanops.module.garden.controller.admin.costfee.vo.TeamBizdomainRelVo;
8 import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO; 8 import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO;
9 import com.zteits.urbanops.module.garden.dal.mysql.wasterecord.WasteRecordMapper; 9 import com.zteits.urbanops.module.garden.dal.mysql.wasterecord.WasteRecordMapper;
10 -import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;  
11 import jakarta.annotation.Resource; 10 import jakarta.annotation.Resource;
12 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
13 import org.springframework.transaction.annotation.Transactional; 12 import org.springframework.transaction.annotation.Transactional;
@@ -37,7 +36,7 @@ public class WasteRecordServiceImpl implements WasteRecordService { @@ -37,7 +36,7 @@ public class WasteRecordServiceImpl implements WasteRecordService {
37 // 插入 36 // 插入
38 WasteRecordDO wasteRecord = BeanUtils.toBean(createReqVO, WasteRecordDO.class); 37 WasteRecordDO wasteRecord = BeanUtils.toBean(createReqVO, WasteRecordDO.class);
39 List<String> deptIds = createReqVO.getTeamIds().stream() 38 List<String> deptIds = createReqVO.getTeamIds().stream()
40 - .map(TeamBizdomainRelDO::getTeamId) 39 + .map(TeamBizdomainRelVo::getTeamId)
41 .collect(Collectors.toList()); 40 .collect(Collectors.toList());
42 wasteRecord.setDeptId(deptIds); 41 wasteRecord.setDeptId(deptIds);
43 wasteRecordMapper.insert(wasteRecord); 42 wasteRecordMapper.insert(wasteRecord);
@@ -54,7 +53,7 @@ public class WasteRecordServiceImpl implements WasteRecordService { @@ -54,7 +53,7 @@ public class WasteRecordServiceImpl implements WasteRecordService {
54 WasteRecordDO updateObj = BeanUtils.toBean(updateReqVO, WasteRecordDO.class); 53 WasteRecordDO updateObj = BeanUtils.toBean(updateReqVO, WasteRecordDO.class);
55 54
56 List<String> deptIds = updateReqVO.getTeamIds().stream() 55 List<String> deptIds = updateReqVO.getTeamIds().stream()
57 - .map(TeamBizdomainRelDO::getTeamId) 56 + .map(TeamBizdomainRelVo::getTeamId)
58 .collect(Collectors.toList()); 57 .collect(Collectors.toList());
59 updateObj.setDeptId(deptIds); 58 updateObj.setDeptId(deptIds);
60 59
urbanops-module-garden/src/main/resources/mapper/departmentcost/DepartmentCostMapper.xml
@@ -2,11 +2,13 @@ @@ -2,11 +2,13 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.departmentcost.DepartmentCostMapper"> 3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.departmentcost.DepartmentCostMapper">
4 4
5 - <!--  
6 - 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。  
7 - 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。  
8 - 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。  
9 - 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/  
10 - --> 5 + <select id="selectDuplicateIds" resultType="java.lang.Long">
  6 + SELECT id
  7 + FROM td_department_cost
  8 + WHERE
  9 + <foreach collection="keyList" item="key" separator="OR">
  10 + (salary_month = #{key.salaryMonth} AND expense_name = #{key.expenseName} and company_id=#{key.companyId})
  11 + </foreach>
  12 + </select>
11 13
12 -</mapper>  
13 \ No newline at end of file 14 \ No newline at end of file
  15 +</mapper>
urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml
@@ -2,11 +2,12 @@ @@ -2,11 +2,12 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper"> 3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper">
4 4
5 - <!--  
6 - 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。  
7 - 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。  
8 - 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。  
9 - 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/  
10 - -->  
11 -  
12 -</mapper>  
13 \ No newline at end of file 5 \ No newline at end of file
  6 + <select id="selectDuplicateIds" resultType="java.lang.Long">
  7 + SELECT id
  8 + FROM td_personal_cost
  9 + WHERE
  10 + <foreach collection="keyList" item="key" separator="OR">
  11 + (salary_month = #{key.salaryMonth} AND name = #{key.name})
  12 + </foreach>
  13 + </select>
  14 +</mapper>
urbanops-module-garden/src/main/resources/mapper/waterfee/WaterFeeMapper.xml
@@ -2,11 +2,14 @@ @@ -2,11 +2,14 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.waterfee.WaterFeeMapper"> 3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.waterfee.WaterFeeMapper">
4 4
5 - <!--  
6 - 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。  
7 - 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。  
8 - 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。  
9 - 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/  
10 - -->  
11 5
12 -</mapper>  
13 \ No newline at end of file 6 \ No newline at end of file
  7 + <select id="selectDuplicateIds" resultType="java.lang.Long">
  8 + SELECT id
  9 + FROM td_water_fee
  10 + WHERE
  11 + <foreach collection="keyList" item="key" separator="OR">
  12 + (fee_month = #{key.feeMonth} AND meter_code = #{key.meterCode})
  13 + </foreach>
  14 + </select>
  15 +
  16 +</mapper>
urbanops-module-gloabl/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml
@@ -2,11 +2,13 @@ @@ -2,11 +2,13 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper"> 3 <mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper">
4 4
5 - <!--  
6 - 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。  
7 - 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。  
8 - 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。  
9 - 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/  
10 - --> 5 + <select id="selectDuplicateIds" resultType="java.lang.Long">
  6 + SELECT id
  7 + FROM td_mechanical_cost
  8 + WHERE
  9 + <foreach collection="keyList" item="key" separator="OR">
  10 + mech_code =#{key.mechCode}
  11 + </foreach>
  12 + </select>
11 13
12 -</mapper>  
13 \ No newline at end of file 14 \ No newline at end of file
  15 +</mapper>