Commit b3c0caf4fa8d0c69e90d37238afb3c16edb0fdba
1 parent
e9a02470
巡查计划明细及巡查计划创建优化
Showing
20 changed files
with
360 additions
and
172 deletions
urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/string/StrUtils.java
| @@ -3,12 +3,11 @@ package com.zteits.urbanops.framework.common.util.string; | @@ -3,12 +3,11 @@ package com.zteits.urbanops.framework.common.util.string; | ||
| 3 | import cn.hutool.core.text.StrPool; | 3 | import cn.hutool.core.text.StrPool; |
| 4 | import cn.hutool.core.util.ArrayUtil; | 4 | import cn.hutool.core.util.ArrayUtil; |
| 5 | import cn.hutool.core.util.StrUtil; | 5 | import cn.hutool.core.util.StrUtil; |
| 6 | +import com.alibaba.fastjson.JSON; | ||
| 6 | import org.aspectj.lang.JoinPoint; | 7 | import org.aspectj.lang.JoinPoint; |
| 8 | +import org.springframework.util.StringUtils; | ||
| 7 | 9 | ||
| 8 | -import java.util.Arrays; | ||
| 9 | -import java.util.Collection; | ||
| 10 | -import java.util.List; | ||
| 11 | -import java.util.Set; | 10 | +import java.util.*; |
| 12 | import java.util.stream.Collectors; | 11 | import java.util.stream.Collectors; |
| 13 | 12 | ||
| 14 | /** | 13 | /** |
| @@ -104,4 +103,23 @@ public class StrUtils { | @@ -104,4 +103,23 @@ public class StrUtils { | ||
| 104 | }); | 103 | }); |
| 105 | } | 104 | } |
| 106 | 105 | ||
| 106 | + /** | ||
| 107 | + * 图片处理 | ||
| 108 | + * @param img 图片 | ||
| 109 | + * @param url 地址 | ||
| 110 | + * @return 图片列表 | ||
| 111 | + */ | ||
| 112 | + public static List<String> imgProcess(String img, String url) { | ||
| 113 | + List<String> list = new ArrayList<>(); | ||
| 114 | + if (StringUtils.isEmpty(img)) { | ||
| 115 | + return list; | ||
| 116 | + } | ||
| 117 | + List<String> imgs = JSON.parseArray(img, String.class); | ||
| 118 | + for (String imgStr : imgs) { | ||
| 119 | + list.add(url + imgStr); | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + return list; | ||
| 123 | + } | ||
| 124 | + | ||
| 107 | } | 125 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanCommitController.java
| @@ -30,7 +30,7 @@ import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanCo | @@ -30,7 +30,7 @@ import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanCo | ||
| 30 | 30 | ||
| 31 | @Tag(name = "管理后台 - 巡检计划提交明细") | 31 | @Tag(name = "管理后台 - 巡检计划提交明细") |
| 32 | @RestController | 32 | @RestController |
| 33 | -@RequestMapping("/garden/inspection-plan-commit") | 33 | +@RequestMapping("/garden/inspection-plan-commit/") |
| 34 | @Validated | 34 | @Validated |
| 35 | public class InspectionPlanCommitController { | 35 | public class InspectionPlanCommitController { |
| 36 | 36 | ||
| @@ -83,7 +83,7 @@ public class InspectionPlanCommitController { | @@ -83,7 +83,7 @@ public class InspectionPlanCommitController { | ||
| 83 | @Operation(summary = "获得巡检计划提交明细分页") | 83 | @Operation(summary = "获得巡检计划提交明细分页") |
| 84 | @PreAuthorize("@ss.hasPermission('garden:inspection-plan-commit:query')") | 84 | @PreAuthorize("@ss.hasPermission('garden:inspection-plan-commit:query')") |
| 85 | public CommonResult<PageResult<InspectionPlanCommitRespVO>> getInspectionPlanCommitPage(@Valid InspectionPlanCommitPageReqVO pageReqVO) { | 85 | public CommonResult<PageResult<InspectionPlanCommitRespVO>> getInspectionPlanCommitPage(@Valid InspectionPlanCommitPageReqVO pageReqVO) { |
| 86 | - PageResult<InspectionPlanCommitDO> pageResult = inspectionPlanCommitService.getInspectionPlanCommitPage(pageReqVO); | 86 | + PageResult<InspectionPlanCommitRespVO> pageResult = inspectionPlanCommitService.getInspectionPlanCommitPage(pageReqVO); |
| 87 | return success(BeanUtils.toBean(pageResult, InspectionPlanCommitRespVO.class)); | 87 | return success(BeanUtils.toBean(pageResult, InspectionPlanCommitRespVO.class)); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| @@ -94,7 +94,7 @@ public class InspectionPlanCommitController { | @@ -94,7 +94,7 @@ public class InspectionPlanCommitController { | ||
| 94 | public void exportInspectionPlanCommitExcel(@Valid InspectionPlanCommitPageReqVO pageReqVO, | 94 | public void exportInspectionPlanCommitExcel(@Valid InspectionPlanCommitPageReqVO pageReqVO, |
| 95 | HttpServletResponse response) throws IOException { | 95 | HttpServletResponse response) throws IOException { |
| 96 | pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); | 96 | pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); |
| 97 | - List<InspectionPlanCommitDO> list = inspectionPlanCommitService.getInspectionPlanCommitPage(pageReqVO).getList(); | 97 | + List<InspectionPlanCommitRespVO> list = inspectionPlanCommitService.getInspectionPlanCommitPage(pageReqVO).getList(); |
| 98 | // 导出 Excel | 98 | // 导出 Excel |
| 99 | ExcelUtils.write(response, "巡检计划提交明细.xls", "数据", InspectionPlanCommitRespVO.class, | 99 | ExcelUtils.write(response, "巡检计划提交明细.xls", "数据", InspectionPlanCommitRespVO.class, |
| 100 | BeanUtils.toBean(list, InspectionPlanCommitRespVO.class)); | 100 | BeanUtils.toBean(list, InspectionPlanCommitRespVO.class)); |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/InspectionPlanController.java
| 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; | 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan; |
| 2 | 2 | ||
| 3 | import jakarta.validation.constraints.NotBlank; | 3 | import jakarta.validation.constraints.NotBlank; |
| 4 | +import lombok.extern.slf4j.Slf4j; | ||
| 4 | import org.springframework.web.bind.annotation.*; | 5 | import org.springframework.web.bind.annotation.*; |
| 5 | import jakarta.annotation.Resource; | 6 | import jakarta.annotation.Resource; |
| 6 | import org.springframework.validation.annotation.Validated; | 7 | import org.springframework.validation.annotation.Validated; |
| @@ -18,12 +19,16 @@ import com.zteits.urbanops.framework.common.pojo.PageParam; | @@ -18,12 +19,16 @@ 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.PageResult; |
| 19 | import com.zteits.urbanops.framework.common.pojo.CommonResult; | 20 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| 20 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; | 21 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 22 | + | ||
| 23 | +import static com.alibaba.druid.util.FnvHash.Constants.LOG; | ||
| 24 | +import static com.zteits.urbanops.framework.common.pojo.CommonResult.error; | ||
| 21 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | 25 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; |
| 22 | 26 | ||
| 23 | import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | 27 | import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; |
| 24 | 28 | ||
| 25 | import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; | 29 | import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; |
| 26 | import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; | 30 | import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; |
| 31 | +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_ERROR; | ||
| 27 | 32 | ||
| 28 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | 33 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; |
| 29 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; | 34 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; |
| @@ -33,6 +38,7 @@ import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanSe | @@ -33,6 +38,7 @@ import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanSe | ||
| 33 | @RestController | 38 | @RestController |
| 34 | @RequestMapping("/garden/inspection-plan") | 39 | @RequestMapping("/garden/inspection-plan") |
| 35 | @Validated | 40 | @Validated |
| 41 | +@Slf4j | ||
| 36 | public class InspectionPlanController { | 42 | public class InspectionPlanController { |
| 37 | 43 | ||
| 38 | @Resource | 44 | @Resource |
| @@ -41,7 +47,12 @@ public class InspectionPlanController { | @@ -41,7 +47,12 @@ public class InspectionPlanController { | ||
| 41 | @PostMapping("/create") | 47 | @PostMapping("/create") |
| 42 | @Operation(summary = "创建巡检计划汇总") | 48 | @Operation(summary = "创建巡检计划汇总") |
| 43 | @PreAuthorize("@ss.hasPermission('garden:inspection-plan:create')") | 49 | @PreAuthorize("@ss.hasPermission('garden:inspection-plan:create')") |
| 44 | - public CommonResult<Long> createInspectionPlan(@Valid @RequestBody InspectionPlanSaveReqVO createReqVO) { | 50 | + public CommonResult<Integer> createInspectionPlan(@Valid @RequestBody InspectionPlanSaveReqVO createReqVO) { |
| 51 | + if(!createReqVO.verify()){ | ||
| 52 | + log.warn("次数值范围:1-20或者分数格式:1/3, rateValue={}", createReqVO.getRateValue()); | ||
| 53 | + return error(PLAN_RATE_VALUE_ERROR); | ||
| 54 | + } | ||
| 55 | + | ||
| 45 | return inspectionPlanService.createInspectionPlan(createReqVO); | 56 | return inspectionPlanService.createInspectionPlan(createReqVO); |
| 46 | } | 57 | } |
| 47 | 58 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitPageReqVO.java
| 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | + | ||
| 5 | +import java.time.LocalDate; | ||
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 6 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import com.zteits.urbanops.framework.common.pojo.PageParam; | 7 | import com.zteits.urbanops.framework.common.pojo.PageParam; |
| 6 | import org.springframework.format.annotation.DateTimeFormat; | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | -import java.time.LocalDateTime; | ||
| 8 | 9 | ||
| 9 | -import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | 10 | +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; |
| 10 | 11 | ||
| 11 | @Schema(description = "管理后台 - 巡检计划提交明细分页 Request VO") | 12 | @Schema(description = "管理后台 - 巡检计划提交明细分页 Request VO") |
| 12 | @Data | 13 | @Data |
| 13 | public class InspectionPlanCommitPageReqVO extends PageParam { | 14 | public class InspectionPlanCommitPageReqVO extends PageParam { |
| 14 | 15 | ||
| 15 | - @Schema(description = "批次号") | ||
| 16 | - private String batchNo; | ||
| 17 | 16 | ||
| 18 | @Schema(description = "计划编码") | 17 | @Schema(description = "计划编码") |
| 19 | private String planNo; | 18 | private String planNo; |
| 20 | 19 | ||
| 20 | + @Schema(description = "计划名称") | ||
| 21 | + private String planName; | ||
| 22 | + | ||
| 21 | @Schema(description = "业务线: yl-园林;wy-物业:sz-市政") | 23 | @Schema(description = "业务线: yl-园林;wy-物业:sz-市政") |
| 22 | private String busiLine; | 24 | private String busiLine; |
| 23 | 25 | ||
| 24 | - @Schema(description = "归属(一级部门id)", example = "18172") | 26 | + @Schema(description = "计划属性:1:标准计划;2:临时计划", example = "1") |
| 27 | + private Integer planAttr; | ||
| 28 | + | ||
| 29 | + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", example = "2001") | ||
| 30 | + private Integer planTypeId; | ||
| 31 | + | ||
| 32 | + @Schema(description = "归属(一级部门id)", example = "20621") | ||
| 25 | private Long companyId; | 33 | private Long companyId; |
| 26 | 34 | ||
| 27 | - @Schema(description = "部门ID(道路负责部门id)", example = "9510") | 35 | + @Schema(description = "部门ID(道路负责部门id)", example = "2714") |
| 28 | private Long deptId; | 36 | private Long deptId; |
| 29 | 37 | ||
| 30 | - @Schema(description = "道路ID", example = "21939") | ||
| 31 | - private Long roadId; | 38 | + @Schema(description = "道路ID", example = "12917") |
| 39 | + private String roadName; | ||
| 32 | 40 | ||
| 33 | - @Schema(description = "图片地址host") | ||
| 34 | - private String imgHost; | 41 | + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", example = "10") |
| 42 | + private Integer levelId; | ||
| 35 | 43 | ||
| 36 | - @Schema(description = "巡检照片") | ||
| 37 | - private String img; | 44 | + @Schema(description = "提交人", example = "芋艿") |
| 45 | + private String userName; | ||
| 38 | 46 | ||
| 39 | @Schema(description = "巡检结果: 1:正常;2:异常") | 47 | @Schema(description = "巡检结果: 1:正常;2:异常") |
| 40 | private Integer inspectionState; | 48 | private Integer inspectionState; |
| @@ -42,30 +50,10 @@ public class InspectionPlanCommitPageReqVO extends PageParam { | @@ -42,30 +50,10 @@ public class InspectionPlanCommitPageReqVO extends PageParam { | ||
| 42 | @Schema(description = "转交状态: 1:未转交;2:已转交") | 50 | @Schema(description = "转交状态: 1:未转交;2:已转交") |
| 43 | private Integer transState; | 51 | private Integer transState; |
| 44 | 52 | ||
| 45 | - @Schema(description = "转交问题单编码") | ||
| 46 | - private String transWorkNo; | ||
| 47 | - | ||
| 48 | @Schema(description = "完成时间") | 53 | @Schema(description = "完成时间") |
| 49 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 50 | - private LocalDateTime[] finishTime; | ||
| 51 | - | ||
| 52 | - @Schema(description = "提交人用户ID", example = "30987") | ||
| 53 | - private Long userId; | ||
| 54 | - | ||
| 55 | - @Schema(description = "提交人", example = "赵六") | ||
| 56 | - private String userName; | 54 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) |
| 55 | + private LocalDate finishTime; | ||
| 57 | 56 | ||
| 58 | @Schema(description = "备注", example = "你猜") | 57 | @Schema(description = "备注", example = "你猜") |
| 59 | private String remark; | 58 | private String remark; |
| 60 | - | ||
| 61 | - @Schema(description = "创建者", example = "张三") | ||
| 62 | - private String creatorName; | ||
| 63 | - | ||
| 64 | - @Schema(description = "创建时间") | ||
| 65 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 66 | - private LocalDateTime[] createTime; | ||
| 67 | - | ||
| 68 | - @Schema(description = "更新者", example = "赵六") | ||
| 69 | - private String updaterName; | ||
| 70 | - | ||
| 71 | } | 59 | } |
| 72 | \ No newline at end of file | 60 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitRespVO.java
| @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | ||
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| 5 | +import java.util.*; | ||
| 5 | import java.time.LocalDateTime; | 6 | import java.time.LocalDateTime; |
| 6 | import cn.idev.excel.annotation.*; | 7 | import cn.idev.excel.annotation.*; |
| 7 | 8 | ||
| @@ -10,51 +11,67 @@ import cn.idev.excel.annotation.*; | @@ -10,51 +11,67 @@ import cn.idev.excel.annotation.*; | ||
| 10 | @ExcelIgnoreUnannotated | 11 | @ExcelIgnoreUnannotated |
| 11 | public class InspectionPlanCommitRespVO { | 12 | public class InspectionPlanCommitRespVO { |
| 12 | 13 | ||
| 13 | - @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25349") | ||
| 14 | - @ExcelProperty("ID") | ||
| 15 | - private Long id; | ||
| 16 | - | ||
| 17 | - @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 18 | - @ExcelProperty("批次号") | ||
| 19 | - private String batchNo; | ||
| 20 | - | ||
| 21 | - @Schema(description = "计划编码", requiredMode = Schema.RequiredMode.REQUIRED) | 14 | + @Schema(description = "计划编码") |
| 22 | @ExcelProperty("计划编码") | 15 | @ExcelProperty("计划编码") |
| 23 | private String planNo; | 16 | private String planNo; |
| 24 | 17 | ||
| 25 | - @Schema(description = "业务线: yl-园林;wy-物业:sz-市政", requiredMode = Schema.RequiredMode.REQUIRED) | 18 | + @Schema(description = "计划名称") |
| 19 | + @ExcelProperty("计划名称") | ||
| 20 | + private String planName; | ||
| 21 | + | ||
| 22 | + @Schema(description = "业务线: yl-园林;wy-物业:sz-市政") | ||
| 26 | @ExcelProperty("业务线: yl-园林;wy-物业:sz-市政") | 23 | @ExcelProperty("业务线: yl-园林;wy-物业:sz-市政") |
| 27 | private String busiLine; | 24 | private String busiLine; |
| 28 | 25 | ||
| 29 | - @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "18172") | 26 | + @Schema(description = "道路ID", example = "12917") |
| 27 | + @ExcelProperty("道路ID") | ||
| 28 | + private Long roadId; | ||
| 29 | + | ||
| 30 | + @Schema(description = "道路名称", example = "") | ||
| 31 | + @ExcelProperty("道路名称") | ||
| 32 | + private String roadName; | ||
| 33 | + | ||
| 34 | + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", example = "10") | ||
| 35 | + @ExcelProperty("养护级别") | ||
| 36 | + private Integer levelId; | ||
| 37 | + | ||
| 38 | + @Schema(description = "计划属性:1:标准计划;2:临时计划", example = "1") | ||
| 39 | + private Integer planAttr; | ||
| 40 | + | ||
| 41 | + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", example = "24742") | ||
| 42 | + @ExcelProperty("养护类型") | ||
| 43 | + private Integer planTypeId; | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + @Schema(description = "归属(一级部门id)", example = "20621") | ||
| 30 | @ExcelProperty("归属(一级部门id)") | 47 | @ExcelProperty("归属(一级部门id)") |
| 31 | private Long companyId; | 48 | private Long companyId; |
| 32 | 49 | ||
| 33 | - @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "9510") | 50 | + @Schema(description = "部门ID(道路负责部门id)", example = "2714") |
| 34 | @ExcelProperty("部门ID(道路负责部门id)") | 51 | @ExcelProperty("部门ID(道路负责部门id)") |
| 35 | private Long deptId; | 52 | private Long deptId; |
| 36 | 53 | ||
| 37 | - @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21939") | ||
| 38 | - @ExcelProperty("道路ID") | ||
| 39 | - private Long roadId; | ||
| 40 | - | ||
| 41 | - @Schema(description = "图片地址host", requiredMode = Schema.RequiredMode.REQUIRED) | 54 | + @Schema(description = "图片地址host") |
| 42 | @ExcelProperty("图片地址host") | 55 | @ExcelProperty("图片地址host") |
| 43 | private String imgHost; | 56 | private String imgHost; |
| 44 | 57 | ||
| 45 | - @Schema(description = "巡检照片", requiredMode = Schema.RequiredMode.REQUIRED) | 58 | + @Schema(description = "巡检照片") |
| 46 | @ExcelProperty("巡检照片") | 59 | @ExcelProperty("巡检照片") |
| 47 | private String img; | 60 | private String img; |
| 48 | 61 | ||
| 49 | - @Schema(description = "巡检结果: 1:正常;2:异常", requiredMode = Schema.RequiredMode.REQUIRED) | 62 | + @Schema(description = "巡检照片") |
| 63 | + @ExcelProperty("巡检照片") | ||
| 64 | + private List<String> imgList; | ||
| 65 | + | ||
| 66 | + @Schema(description = "巡检结果: 1:正常;2:异常") | ||
| 50 | @ExcelProperty("巡检结果: 1:正常;2:异常") | 67 | @ExcelProperty("巡检结果: 1:正常;2:异常") |
| 51 | private Integer inspectionState; | 68 | private Integer inspectionState; |
| 52 | 69 | ||
| 53 | - @Schema(description = "转交状态: 1:未转交;2:已转交", requiredMode = Schema.RequiredMode.REQUIRED) | 70 | + @Schema(description = "转交状态: 1:未转交;2:已转交") |
| 54 | @ExcelProperty("转交状态: 1:未转交;2:已转交") | 71 | @ExcelProperty("转交状态: 1:未转交;2:已转交") |
| 55 | private Integer transState; | 72 | private Integer transState; |
| 56 | 73 | ||
| 57 | - @Schema(description = "转交问题单编码", requiredMode = Schema.RequiredMode.REQUIRED) | 74 | + @Schema(description = "转交问题单编码") |
| 58 | @ExcelProperty("转交问题单编码") | 75 | @ExcelProperty("转交问题单编码") |
| 59 | private String transWorkNo; | 76 | private String transWorkNo; |
| 60 | 77 | ||
| @@ -62,27 +79,35 @@ public class InspectionPlanCommitRespVO { | @@ -62,27 +79,35 @@ public class InspectionPlanCommitRespVO { | ||
| 62 | @ExcelProperty("完成时间") | 79 | @ExcelProperty("完成时间") |
| 63 | private LocalDateTime finishTime; | 80 | private LocalDateTime finishTime; |
| 64 | 81 | ||
| 65 | - @Schema(description = "提交人用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30987") | 82 | + @Schema(description = "提交人用户ID", example = "32294") |
| 66 | @ExcelProperty("提交人用户ID") | 83 | @ExcelProperty("提交人用户ID") |
| 67 | private Long userId; | 84 | private Long userId; |
| 68 | 85 | ||
| 69 | - @Schema(description = "提交人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | 86 | + @Schema(description = "提交人", example = "芋艿") |
| 70 | @ExcelProperty("提交人") | 87 | @ExcelProperty("提交人") |
| 71 | private String userName; | 88 | private String userName; |
| 72 | 89 | ||
| 73 | - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") | 90 | + @Schema(description = "角色ID", example = "23375") |
| 91 | + @ExcelProperty("角色ID") | ||
| 92 | + private Long roleId; | ||
| 93 | + | ||
| 94 | + @Schema(description = "角色名称", example = "王五") | ||
| 95 | + @ExcelProperty("角色名称") | ||
| 96 | + private String roleName; | ||
| 97 | + | ||
| 98 | + @Schema(description = "备注", example = "你猜") | ||
| 74 | @ExcelProperty("备注") | 99 | @ExcelProperty("备注") |
| 75 | private String remark; | 100 | private String remark; |
| 76 | 101 | ||
| 77 | - @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") | 102 | + @Schema(description = "创建者", example = "芋艿") |
| 78 | @ExcelProperty("创建者") | 103 | @ExcelProperty("创建者") |
| 79 | private String creatorName; | 104 | private String creatorName; |
| 80 | 105 | ||
| 81 | - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 106 | + @Schema(description = "创建时间") |
| 82 | @ExcelProperty("创建时间") | 107 | @ExcelProperty("创建时间") |
| 83 | private LocalDateTime createTime; | 108 | private LocalDateTime createTime; |
| 84 | 109 | ||
| 85 | - @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | 110 | + @Schema(description = "更新者", example = "芋艿") |
| 86 | @ExcelProperty("更新者") | 111 | @ExcelProperty("更新者") |
| 87 | private String updaterName; | 112 | private String updaterName; |
| 88 | 113 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanCommitSaveReqVO.java
| @@ -2,14 +2,15 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | @@ -2,14 +2,15 @@ package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | ||
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| 5 | + | ||
| 6 | +import java.time.LocalDate; | ||
| 5 | import jakarta.validation.constraints.*; | 7 | import jakarta.validation.constraints.*; |
| 6 | -import java.time.LocalDateTime; | ||
| 7 | 8 | ||
| 8 | @Schema(description = "管理后台 - 巡检计划提交明细新增/修改 Request VO") | 9 | @Schema(description = "管理后台 - 巡检计划提交明细新增/修改 Request VO") |
| 9 | @Data | 10 | @Data |
| 10 | public class InspectionPlanCommitSaveReqVO { | 11 | public class InspectionPlanCommitSaveReqVO { |
| 11 | 12 | ||
| 12 | - @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25349") | 13 | + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6813") |
| 13 | private Long id; | 14 | private Long id; |
| 14 | 15 | ||
| 15 | @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) | 16 | @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED) |
| @@ -24,15 +25,15 @@ public class InspectionPlanCommitSaveReqVO { | @@ -24,15 +25,15 @@ public class InspectionPlanCommitSaveReqVO { | ||
| 24 | @NotEmpty(message = "业务线: yl-园林;wy-物业:sz-市政不能为空") | 25 | @NotEmpty(message = "业务线: yl-园林;wy-物业:sz-市政不能为空") |
| 25 | private String busiLine; | 26 | private String busiLine; |
| 26 | 27 | ||
| 27 | - @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "18172") | 28 | + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "20621") |
| 28 | @NotNull(message = "归属(一级部门id)不能为空") | 29 | @NotNull(message = "归属(一级部门id)不能为空") |
| 29 | private Long companyId; | 30 | private Long companyId; |
| 30 | 31 | ||
| 31 | - @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "9510") | 32 | + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2714") |
| 32 | @NotNull(message = "部门ID(道路负责部门id)不能为空") | 33 | @NotNull(message = "部门ID(道路负责部门id)不能为空") |
| 33 | private Long deptId; | 34 | private Long deptId; |
| 34 | 35 | ||
| 35 | - @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21939") | 36 | + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12917") |
| 36 | @NotNull(message = "道路ID不能为空") | 37 | @NotNull(message = "道路ID不能为空") |
| 37 | private Long roadId; | 38 | private Long roadId; |
| 38 | 39 | ||
| @@ -57,25 +58,33 @@ public class InspectionPlanCommitSaveReqVO { | @@ -57,25 +58,33 @@ public class InspectionPlanCommitSaveReqVO { | ||
| 57 | private String transWorkNo; | 58 | private String transWorkNo; |
| 58 | 59 | ||
| 59 | @Schema(description = "完成时间") | 60 | @Schema(description = "完成时间") |
| 60 | - private LocalDateTime finishTime; | 61 | + private LocalDate finishTime; |
| 61 | 62 | ||
| 62 | - @Schema(description = "提交人用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30987") | 63 | + @Schema(description = "提交人用户ID", example = "32294") |
| 63 | @NotNull(message = "提交人用户ID不能为空") | 64 | @NotNull(message = "提交人用户ID不能为空") |
| 64 | private Long userId; | 65 | private Long userId; |
| 65 | 66 | ||
| 66 | - @Schema(description = "提交人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | 67 | + @Schema(description = "提交人", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") |
| 67 | @NotEmpty(message = "提交人不能为空") | 68 | @NotEmpty(message = "提交人不能为空") |
| 68 | private String userName; | 69 | private String userName; |
| 69 | 70 | ||
| 71 | + @Schema(description = "角色ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23375") | ||
| 72 | + @NotNull(message = "角色ID不能为空") | ||
| 73 | + private Long roleId; | ||
| 74 | + | ||
| 75 | + @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") | ||
| 76 | + @NotEmpty(message = "角色名称不能为空") | ||
| 77 | + private String roleName; | ||
| 78 | + | ||
| 70 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") | 79 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") |
| 71 | @NotEmpty(message = "备注不能为空") | 80 | @NotEmpty(message = "备注不能为空") |
| 72 | private String remark; | 81 | private String remark; |
| 73 | 82 | ||
| 74 | - @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") | 83 | + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") |
| 75 | @NotEmpty(message = "创建者不能为空") | 84 | @NotEmpty(message = "创建者不能为空") |
| 76 | private String creatorName; | 85 | private String creatorName; |
| 77 | 86 | ||
| 78 | - @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | 87 | + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") |
| 79 | @NotEmpty(message = "更新者不能为空") | 88 | @NotEmpty(message = "更新者不能为空") |
| 80 | private String updaterName; | 89 | private String updaterName; |
| 81 | 90 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanSaveReqVO.java
| 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; | 1 | package com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo; |
| 2 | 2 | ||
| 3 | +import com.zteits.urbanops.module.garden.util.StringValidateUtil; | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import jakarta.validation.Valid; | 5 | import jakarta.validation.Valid; |
| 5 | import lombok.*; | 6 | import lombok.*; |
| @@ -66,4 +67,7 @@ public class InspectionPlanSaveReqVO { | @@ -66,4 +67,7 @@ public class InspectionPlanSaveReqVO { | ||
| 66 | @Size(min = 1) | 67 | @Size(min = 1) |
| 67 | private Set<Long> roleIds; | 68 | private Set<Long> roleIds; |
| 68 | 69 | ||
| 70 | + public boolean verify(){ | ||
| 71 | + return StringValidateUtil.validate(rateValue); | ||
| 72 | + } | ||
| 69 | } | 73 | } |
| 70 | \ No newline at end of file | 74 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/inspectionplan/vo/InspectionPlanUpdateReqVO.java
| @@ -70,5 +70,4 @@ public class InspectionPlanUpdateReqVO { | @@ -70,5 +70,4 @@ public class InspectionPlanUpdateReqVO { | ||
| 70 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") | 70 | @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") |
| 71 | @NotEmpty(message = "备注不能为空") | 71 | @NotEmpty(message = "备注不能为空") |
| 72 | private String remark; | 72 | private String remark; |
| 73 | - | ||
| 74 | } | 73 | } |
| 75 | \ No newline at end of file | 74 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/maintainplan/MaintainPlanController.java
| 1 | package com.zteits.urbanops.module.garden.controller.admin.maintainplan; | 1 | package com.zteits.urbanops.module.garden.controller.admin.maintainplan; |
| 2 | 2 | ||
| 3 | import jakarta.validation.constraints.NotBlank; | 3 | import jakarta.validation.constraints.NotBlank; |
| 4 | +import lombok.extern.slf4j.Slf4j; | ||
| 4 | import org.springframework.web.bind.annotation.*; | 5 | import org.springframework.web.bind.annotation.*; |
| 5 | import jakarta.annotation.Resource; | 6 | import jakarta.annotation.Resource; |
| 6 | import org.springframework.validation.annotation.Validated; | 7 | import org.springframework.validation.annotation.Validated; |
| @@ -18,12 +19,15 @@ import com.zteits.urbanops.framework.common.pojo.PageParam; | @@ -18,12 +19,15 @@ 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.PageResult; |
| 19 | import com.zteits.urbanops.framework.common.pojo.CommonResult; | 20 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| 20 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; | 21 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 22 | + | ||
| 23 | +import static com.zteits.urbanops.framework.common.pojo.CommonResult.error; | ||
| 21 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | 24 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; |
| 22 | 25 | ||
| 23 | import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | 26 | import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; |
| 24 | 27 | ||
| 25 | import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; | 28 | import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; |
| 26 | import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; | 29 | import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; |
| 30 | +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PLAN_RATE_VALUE_ERROR; | ||
| 27 | 31 | ||
| 28 | import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; | 32 | import com.zteits.urbanops.module.garden.controller.admin.maintainplan.vo.*; |
| 29 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; | 33 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDO; |
| @@ -33,6 +37,7 @@ import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanServic | @@ -33,6 +37,7 @@ import com.zteits.urbanops.module.garden.service.maintainplan.MaintainPlanServic | ||
| 33 | @RestController | 37 | @RestController |
| 34 | @RequestMapping("/garden/maintain-plan") | 38 | @RequestMapping("/garden/maintain-plan") |
| 35 | @Validated | 39 | @Validated |
| 40 | +@Slf4j | ||
| 36 | public class MaintainPlanController { | 41 | public class MaintainPlanController { |
| 37 | 42 | ||
| 38 | @Resource | 43 | @Resource |
| @@ -41,9 +46,10 @@ public class MaintainPlanController { | @@ -41,9 +46,10 @@ public class MaintainPlanController { | ||
| 41 | @PostMapping("/create") | 46 | @PostMapping("/create") |
| 42 | @Operation(summary = "创建养护计划汇总") | 47 | @Operation(summary = "创建养护计划汇总") |
| 43 | @PreAuthorize("@ss.hasPermission('garden:maintain-plan:create')") | 48 | @PreAuthorize("@ss.hasPermission('garden:maintain-plan:create')") |
| 44 | - public CommonResult<Long> createMaintainPlan(@Valid @RequestBody MaintainPlanSaveReqVO createReqVO) { | 49 | + public CommonResult<Integer> createMaintainPlan(@Valid @RequestBody MaintainPlanSaveReqVO createReqVO) { |
| 45 | if(!createReqVO.verify()){ | 50 | if(!createReqVO.verify()){ |
| 46 | - | 51 | + log.warn("次数值范围:1-20或者分数格式:1/3, rateValue={}", createReqVO.getRateValue()); |
| 52 | + return error(PLAN_RATE_VALUE_ERROR); | ||
| 47 | } | 53 | } |
| 48 | return maintainPlanService.createMaintainPlan(createReqVO); | 54 | return maintainPlanService.createMaintainPlan(createReqVO); |
| 49 | } | 55 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/inspectionplan/InspectionPlanCommitDO.java
| @@ -82,6 +82,14 @@ public class InspectionPlanCommitDO extends BaseDO { | @@ -82,6 +82,14 @@ public class InspectionPlanCommitDO extends BaseDO { | ||
| 82 | */ | 82 | */ |
| 83 | private String userName; | 83 | private String userName; |
| 84 | /** | 84 | /** |
| 85 | + * 角色ID | ||
| 86 | + */ | ||
| 87 | + private Long roleId; | ||
| 88 | + /** | ||
| 89 | + * 角色名称 | ||
| 90 | + */ | ||
| 91 | + private String roleName; | ||
| 92 | + /** | ||
| 85 | * 备注 | 93 | * 备注 |
| 86 | */ | 94 | */ |
| 87 | private String remark; | 95 | private String remark; |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanCommitMapper.java
| 1 | package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; | 1 | package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; |
| 2 | 2 | ||
| 3 | +import java.util.*; | ||
| 3 | 4 | ||
| 4 | -import com.zteits.urbanops.framework.common.pojo.PageResult; | ||
| 5 | -import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | +import com.baomidou.mybatisplus.core.metadata.IPage; |
| 6 | import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; | 6 | import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanCommitDO; | 7 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanCommitDO; |
| 8 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | 9 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; |
| 10 | +import org.apache.ibatis.annotations.Param; | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * 巡检计划提交明细 Mapper | 13 | * 巡检计划提交明细 Mapper |
| @@ -16,27 +17,12 @@ import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | @@ -16,27 +17,12 @@ import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | ||
| 16 | @Mapper | 17 | @Mapper |
| 17 | public interface InspectionPlanCommitMapper extends BaseMapperX<InspectionPlanCommitDO> { | 18 | public interface InspectionPlanCommitMapper extends BaseMapperX<InspectionPlanCommitDO> { |
| 18 | 19 | ||
| 19 | - default PageResult<InspectionPlanCommitDO> selectPage(InspectionPlanCommitPageReqVO reqVO) { | ||
| 20 | - return selectPage(reqVO, new LambdaQueryWrapperX<InspectionPlanCommitDO>() | ||
| 21 | - .eqIfPresent(InspectionPlanCommitDO::getBatchNo, reqVO.getBatchNo()) | ||
| 22 | - .eqIfPresent(InspectionPlanCommitDO::getPlanNo, reqVO.getPlanNo()) | ||
| 23 | - .eqIfPresent(InspectionPlanCommitDO::getBusiLine, reqVO.getBusiLine()) | ||
| 24 | - .eqIfPresent(InspectionPlanCommitDO::getCompanyId, reqVO.getCompanyId()) | ||
| 25 | - .eqIfPresent(InspectionPlanCommitDO::getDeptId, reqVO.getDeptId()) | ||
| 26 | - .eqIfPresent(InspectionPlanCommitDO::getRoadId, reqVO.getRoadId()) | ||
| 27 | - .eqIfPresent(InspectionPlanCommitDO::getImgHost, reqVO.getImgHost()) | ||
| 28 | - .eqIfPresent(InspectionPlanCommitDO::getImg, reqVO.getImg()) | ||
| 29 | - .eqIfPresent(InspectionPlanCommitDO::getInspectionState, reqVO.getInspectionState()) | ||
| 30 | - .eqIfPresent(InspectionPlanCommitDO::getTransState, reqVO.getTransState()) | ||
| 31 | - .eqIfPresent(InspectionPlanCommitDO::getTransWorkNo, reqVO.getTransWorkNo()) | ||
| 32 | - .betweenIfPresent(InspectionPlanCommitDO::getFinishTime, reqVO.getFinishTime()) | ||
| 33 | - .eqIfPresent(InspectionPlanCommitDO::getUserId, reqVO.getUserId()) | ||
| 34 | - .likeIfPresent(InspectionPlanCommitDO::getUserName, reqVO.getUserName()) | ||
| 35 | - .eqIfPresent(InspectionPlanCommitDO::getRemark, reqVO.getRemark()) | ||
| 36 | - .likeIfPresent(InspectionPlanCommitDO::getCreatorName, reqVO.getCreatorName()) | ||
| 37 | - .betweenIfPresent(InspectionPlanCommitDO::getCreateTime, reqVO.getCreateTime()) | ||
| 38 | - .likeIfPresent(InspectionPlanCommitDO::getUpdaterName, reqVO.getUpdaterName()) | ||
| 39 | - .orderByDesc(InspectionPlanCommitDO::getId)); | ||
| 40 | - } | 20 | + /* 自定义 SQL 分页查询(复杂联表场景,XML 方式) |
| 21 | + * @param page 分页上下文 | ||
| 22 | + * @param reqDTO 查询条件 | ||
| 23 | + * @return 分页结果 | ||
| 24 | + */ | ||
| 25 | + IPage<InspectionPlanCommitRespVO> selectForPage(IPage<InspectionPlanCommitRespVO> page, @Param("req") InspectionPlanCommitPageReqVO reqDTO, @Param("busiLineList") List<String> busiLineList); | ||
| 26 | + | ||
| 41 | 27 | ||
| 42 | } | 28 | } |
| 43 | \ No newline at end of file | 29 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java
| @@ -82,20 +82,21 @@ public interface ErrorCodeConstants { | @@ -82,20 +82,21 @@ public interface ErrorCodeConstants { | ||
| 82 | ErrorCode WATER_FEE_NOT_EXISTS = new ErrorCode(1-100-003-013, "水费录入信息不存在"); | 82 | ErrorCode WATER_FEE_NOT_EXISTS = new ErrorCode(1-100-003-013, "水费录入信息不存在"); |
| 83 | 83 | ||
| 84 | // ========== 巡检计划汇总 TODO 补充编号 ========== | 84 | // ========== 巡检计划汇总 TODO 补充编号 ========== |
| 85 | - ErrorCode INSPECTION_PLAN_NOT_EXISTS = new ErrorCode(1-100-100-001, "巡检计划汇总不存在"); | ||
| 86 | - ErrorCode INSPECTION_CYCLE_ID_ERROR = new ErrorCode(1-100-100-002, "周期id错误"); | 85 | + ErrorCode INSPECTION_PLAN_NOT_EXISTS = new ErrorCode(1-100-007-001, "巡检计划汇总不存在"); |
| 86 | + ErrorCode INSPECTION_CYCLE_ID_ERROR = new ErrorCode(1-100-007-002, "周期id错误"); | ||
| 87 | ErrorCode INSPECTION_CYCLE_ERROR = new ErrorCode(1-200-100-003, "获取两个时间之间间隔天数错误"); | 87 | ErrorCode INSPECTION_CYCLE_ERROR = new ErrorCode(1-200-100-003, "获取两个时间之间间隔天数错误"); |
| 88 | - ErrorCode INSPECTION_PLAN_EXISTS = new ErrorCode(1-200-100-004, "道路对应类型已存在记录"); | ||
| 89 | - ErrorCode INSPECTION_PLAN_NOT_ALLOW_DELETE = new ErrorCode(1-200-100-005, "计划已开始执行不能删除"); | 88 | + ErrorCode INSPECTION_PLAN_EXISTS = new ErrorCode(1-200-100-007, "道路对应类型已存在记录"); |
| 89 | + ErrorCode INSPECTION_PLAN_NOT_ALLOW_DELETE = new ErrorCode(1-100-007-005, "计划已开始执行不能删除"); | ||
| 90 | 90 | ||
| 91 | // ========== 养护计划汇总 TODO 补充编号 ========== | 91 | // ========== 养护计划汇总 TODO 补充编号 ========== |
| 92 | - ErrorCode MAINTAIN_PLAN_NOT_EXISTS = new ErrorCode(1-200-200-001, "养护计划汇总不存在"); | 92 | + ErrorCode MAINTAIN_PLAN_NOT_EXISTS = new ErrorCode(1-100-007-001, "养护计划汇总不存在"); |
| 93 | 93 | ||
| 94 | //========== 频次 TODO 补充编号 ========== | 94 | //========== 频次 TODO 补充编号 ========== |
| 95 | - ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); | ||
| 96 | - ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); | ||
| 97 | - ErrorCode PLAN_RATE_NOT_EXISTS = new ErrorCode(1-200-200-002, "未配置计划频次"); | ||
| 98 | - ErrorCode PLAN_RATE_DETAIL_EXISTS = new ErrorCode(1-200-200-003, "计划频次已存在"); | 95 | + ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-100-007-001, "养护频次已存在"); |
| 96 | + ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-100-007-002, "养护等级重复"); | ||
| 97 | + ErrorCode PLAN_RATE_NOT_EXISTS = new ErrorCode(1-100-007-002, "未配置计划频次"); | ||
| 98 | + ErrorCode PLAN_RATE_DETAIL_EXISTS = new ErrorCode(1-100-007-003, "计划频次已存在"); | ||
| 99 | + ErrorCode PLAN_RATE_VALUE_ERROR = new ErrorCode(1-100-007-004, "次数值范围:1-20或者分数格式:1/3"); | ||
| 99 | 100 | ||
| 100 | ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1-100-004-001, "物料类型不存在"); | 101 | ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1-100-004-001, "物料类型不存在"); |
| 101 | ErrorCode MATERIAL_TYPE_MANAGER_NOT_EXISTS = new ErrorCode(1-100-004-002, "耗材类别管理不存在"); | 102 | ErrorCode MATERIAL_TYPE_MANAGER_NOT_EXISTS = new ErrorCode(1-100-004-002, "耗材类别管理不存在"); |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java
| @@ -11,4 +11,11 @@ public class PlanConstants { | @@ -11,4 +11,11 @@ public class PlanConstants { | ||
| 11 | /*养护级别-字典key*/ | 11 | /*养护级别-字典key*/ |
| 12 | public static final String CONSERVE_LEVEL = "conserve_level"; | 12 | public static final String CONSERVE_LEVEL = "conserve_level"; |
| 13 | 13 | ||
| 14 | + /*巡查类型-绿地巡视/绿地保洁-字典key*/ | ||
| 15 | + public static final String INSPECTION_MAINTAIN_TYPE = "inspection_maintain_type"; | ||
| 16 | + | ||
| 17 | + /*养护类型-浇水-字典key*/ | ||
| 18 | + public static final String MAINTAIN_TYPE = "maintain_type"; | ||
| 19 | + | ||
| 20 | + | ||
| 14 | } | 21 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitService.java
| @@ -56,6 +56,6 @@ public interface InspectionPlanCommitService { | @@ -56,6 +56,6 @@ public interface InspectionPlanCommitService { | ||
| 56 | * @param pageReqVO 分页查询 | 56 | * @param pageReqVO 分页查询 |
| 57 | * @return 巡检计划提交明细分页 | 57 | * @return 巡检计划提交明细分页 |
| 58 | */ | 58 | */ |
| 59 | - PageResult<InspectionPlanCommitDO> getInspectionPlanCommitPage(InspectionPlanCommitPageReqVO pageReqVO); | 59 | + PageResult<InspectionPlanCommitRespVO> getInspectionPlanCommitPage(InspectionPlanCommitPageReqVO pageReqVO); |
| 60 | 60 | ||
| 61 | } | 61 | } |
| 62 | \ No newline at end of file | 62 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanCommitServiceImpl.java
| 1 | package com.zteits.urbanops.module.garden.service.inspectionplan; | 1 | package com.zteits.urbanops.module.garden.service.inspectionplan; |
| 2 | 2 | ||
| 3 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
| 4 | +import com.zteits.urbanops.framework.common.util.string.StrUtils; | ||
| 5 | +import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; | ||
| 6 | +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; | ||
| 7 | +import org.apache.commons.lang3.StringUtils; | ||
| 3 | import org.springframework.stereotype.Service; | 8 | import org.springframework.stereotype.Service; |
| 4 | import jakarta.annotation.Resource; | 9 | import jakarta.annotation.Resource; |
| 5 | import org.springframework.validation.annotation.Validated; | 10 | import org.springframework.validation.annotation.Validated; |
| 6 | 11 | ||
| 7 | import java.util.*; | 12 | import java.util.*; |
| 13 | + | ||
| 8 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | 14 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; |
| 9 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanCommitDO; | 15 | import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanCommitDO; |
| 10 | import com.zteits.urbanops.framework.common.pojo.PageResult; | 16 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| @@ -53,15 +59,15 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ | @@ -53,15 +59,15 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ | ||
| 53 | } | 59 | } |
| 54 | 60 | ||
| 55 | @Override | 61 | @Override |
| 56 | - public void deleteInspectionPlanCommitListByIds(List<Long> ids) { | 62 | + public void deleteInspectionPlanCommitListByIds(List<Long> ids) { |
| 57 | // 删除 | 63 | // 删除 |
| 58 | inspectionPlanCommitMapper.deleteByIds(ids); | 64 | inspectionPlanCommitMapper.deleteByIds(ids); |
| 59 | - } | 65 | + } |
| 60 | 66 | ||
| 61 | 67 | ||
| 62 | private void validateInspectionPlanCommitExists(Long id) { | 68 | private void validateInspectionPlanCommitExists(Long id) { |
| 63 | if (inspectionPlanCommitMapper.selectById(id) == null) { | 69 | if (inspectionPlanCommitMapper.selectById(id) == null) { |
| 64 | - //throw exception(INSPECTION_PLAN_COMMIT_NOT_EXISTS); | 70 | + // throw exception(INSPECTION_PLAN_COMMIT_NOT_EXISTS); |
| 65 | } | 71 | } |
| 66 | } | 72 | } |
| 67 | 73 | ||
| @@ -71,8 +77,28 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ | @@ -71,8 +77,28 @@ public class InspectionPlanCommitServiceImpl implements InspectionPlanCommitServ | ||
| 71 | } | 77 | } |
| 72 | 78 | ||
| 73 | @Override | 79 | @Override |
| 74 | - public PageResult<InspectionPlanCommitDO> getInspectionPlanCommitPage(InspectionPlanCommitPageReqVO pageReqVO) { | ||
| 75 | - return inspectionPlanCommitMapper.selectPage(pageReqVO); | 80 | + public PageResult<InspectionPlanCommitRespVO> getInspectionPlanCommitPage(InspectionPlanCommitPageReqVO pageReqVO) { |
| 81 | + String busiLine = SecurityFrameworkUtils.getBusiLine(); | ||
| 82 | + List<String> busiLineList = new ArrayList<>(); | ||
| 83 | + if (StringUtils.isNotEmpty(pageReqVO.getBusiLine())) { | ||
| 84 | + busiLineList.add(pageReqVO.getBusiLine()); | ||
| 85 | + } else { | ||
| 86 | + if (StringUtils.isNotEmpty(busiLine)) { | ||
| 87 | + busiLineList.addAll(Arrays.asList(busiLine.split(","))); | ||
| 88 | + } | ||
| 89 | + } | ||
| 90 | + //分页 | ||
| 91 | + IPage<InspectionPlanCommitRespVO> mpPage = MyBatisUtils.buildPage(pageReqVO); | ||
| 92 | + IPage<InspectionPlanCommitRespVO> page = inspectionPlanCommitMapper.selectForPage(mpPage, pageReqVO, busiLineList); | ||
| 93 | + // 转换返回 | ||
| 94 | + return new PageResult<>(imgProcess(page.getRecords()), page.getTotal()); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + private List<InspectionPlanCommitRespVO> imgProcess(List<InspectionPlanCommitRespVO> list) { | ||
| 98 | + list.forEach(e -> { | ||
| 99 | + e.setImgList(StrUtils.imgProcess(e.getImg(), e.getImgHost())); | ||
| 100 | + }); | ||
| 101 | + return list; | ||
| 76 | } | 102 | } |
| 77 | 103 | ||
| 78 | } | 104 | } |
| 79 | \ No newline at end of file | 105 | \ No newline at end of file |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java
| @@ -21,7 +21,7 @@ public interface InspectionPlanService { | @@ -21,7 +21,7 @@ public interface InspectionPlanService { | ||
| 21 | * @param createReqVO 创建信息 | 21 | * @param createReqVO 创建信息 |
| 22 | * @return 编号 | 22 | * @return 编号 |
| 23 | */ | 23 | */ |
| 24 | - CommonResult<Long> createInspectionPlan(@Valid InspectionPlanSaveReqVO createReqVO); | 24 | + CommonResult<Integer> createInspectionPlan(@Valid InspectionPlanSaveReqVO createReqVO); |
| 25 | 25 | ||
| 26 | /** | 26 | /** |
| 27 | * 更新巡检计划汇总 | 27 | * 更新巡检计划汇总 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java
| 1 | package com.zteits.urbanops.module.garden.service.inspectionplan; | 1 | package com.zteits.urbanops.module.garden.service.inspectionplan; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.date.DateUtil; | 3 | +import cn.hutool.core.thread.ThreadUtil; |
| 4 | import cn.hutool.core.util.RandomUtil; | 4 | import cn.hutool.core.util.RandomUtil; |
| 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | import com.zteits.urbanops.framework.common.pojo.CommonResult; | 6 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| @@ -25,7 +25,6 @@ import java.time.LocalDate; | @@ -25,7 +25,6 @@ import java.time.LocalDate; | ||
| 25 | import java.time.LocalDateTime; | 25 | import java.time.LocalDateTime; |
| 26 | import java.time.format.DateTimeFormatter; | 26 | import java.time.format.DateTimeFormatter; |
| 27 | import java.util.*; | 27 | import java.util.*; |
| 28 | -import java.util.concurrent.atomic.AtomicInteger; | ||
| 29 | import java.util.stream.Collectors; | 28 | import java.util.stream.Collectors; |
| 30 | 29 | ||
| 31 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; | 30 | import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; |
| @@ -62,11 +61,11 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -62,11 +61,11 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 62 | 61 | ||
| 63 | @Transactional(rollbackFor = Exception.class) | 62 | @Transactional(rollbackFor = Exception.class) |
| 64 | @Override | 63 | @Override |
| 65 | - public CommonResult<Long> createInspectionPlan(InspectionPlanSaveReqVO createReqVO) { | 64 | + public CommonResult<Integer> createInspectionPlan(InspectionPlanSaveReqVO createReqVO) { |
| 66 | //存在性校验 | 65 | //存在性校验 |
| 67 | validateInspectionPlanExists(createReqVO); | 66 | validateInspectionPlanExists(createReqVO); |
| 68 | LocalDateTime now = LocalDateTime.now(); | 67 | LocalDateTime now = LocalDateTime.now(); |
| 69 | - String userId = SecurityFrameworkUtils.getLoginUserId()+""; | 68 | + String userId = SecurityFrameworkUtils.getLoginUserId() + ""; |
| 70 | String userName = SecurityFrameworkUtils.getLoginUserNickname(); | 69 | String userName = SecurityFrameworkUtils.getLoginUserNickname(); |
| 71 | int rateValue; | 70 | int rateValue; |
| 72 | if (createReqVO.getRateValue().contains("/")) { | 71 | if (createReqVO.getRateValue().contains("/")) { |
| @@ -82,12 +81,18 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -82,12 +81,18 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 82 | } | 81 | } |
| 83 | //计算计划次数 | 82 | //计算计划次数 |
| 84 | Integer planNum = betweenDayList.size(); | 83 | Integer planNum = betweenDayList.size(); |
| 85 | - InspectionPlanDO inspectionPlan = BeanUtils.toBean(createReqVO, InspectionPlanDO.class); | ||
| 86 | - AtomicInteger count = new AtomicInteger(); | ||
| 87 | 84 | ||
| 85 | + | ||
| 86 | + //巡检计划list | ||
| 87 | + List<InspectionPlanDO> inspectionPlanList = new ArrayList<>(); | ||
| 88 | + //角色列表 | ||
| 89 | + List<InspectionPlanRoleDO> roleList = new ArrayList<>(); | ||
| 90 | + //计划明细 | ||
| 91 | + List<InspectionPlanDetailDO> detailDOList = new ArrayList<>(); | ||
| 88 | //按照道路创建计划 | 92 | //按照道路创建计划 |
| 89 | createReqVO.getRoadListReqVO().forEach(roadReqVO -> { | 93 | createReqVO.getRoadListReqVO().forEach(roadReqVO -> { |
| 90 | - String batchNo = "BN" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000); | 94 | + InspectionPlanDO inspectionPlan = BeanUtils.toBean(createReqVO, InspectionPlanDO.class); |
| 95 | + String batchNo = "BN" + System.currentTimeMillis() + RandomUtil.randomInt(10000) + roadReqVO.getRoadId(); | ||
| 91 | inspectionPlan.setBatchNo(batchNo); | 96 | inspectionPlan.setBatchNo(batchNo); |
| 92 | inspectionPlan.setPlanFinishNum(0); | 97 | inspectionPlan.setPlanFinishNum(0); |
| 93 | inspectionPlan.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); | 98 | inspectionPlan.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); |
| @@ -103,9 +108,9 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -103,9 +108,9 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 103 | inspectionPlan.setRoadName(roadReqVO.getRoadName()); | 108 | inspectionPlan.setRoadName(roadReqVO.getRoadName()); |
| 104 | //计划属性label | 109 | //计划属性label |
| 105 | String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); | 110 | String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); |
| 106 | - inspectionPlan.setPlanName(roadReqVO.getRoadName() + planAttrLabel + createReqVO.getPlanNameSuffix()); | ||
| 107 | - /*1.插入巡查计划*/ | ||
| 108 | - count.addAndGet(inspectionPlanMapper.insert(inspectionPlan)); | 111 | + String planTypeIdLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.INSPECTION_MAINTAIN_TYPE, createReqVO.getPlanTypeId()); |
| 112 | + inspectionPlan.setPlanName(roadReqVO.getRoadName() + planAttrLabel + planTypeIdLabel + createReqVO.getPlanNameSuffix()); | ||
| 113 | + inspectionPlanList.add(inspectionPlan); | ||
| 109 | /*2.插入角色*/ | 114 | /*2.插入角色*/ |
| 110 | createReqVO.getRoleIds().forEach(roleId -> { | 115 | createReqVO.getRoleIds().forEach(roleId -> { |
| 111 | InspectionPlanRoleDO inspectionPlanRoleDO = new InspectionPlanRoleDO(); | 116 | InspectionPlanRoleDO inspectionPlanRoleDO = new InspectionPlanRoleDO(); |
| @@ -117,31 +122,36 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -117,31 +122,36 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 117 | inspectionPlanRoleDO.setCreator(userName); | 122 | inspectionPlanRoleDO.setCreator(userName); |
| 118 | inspectionPlanRoleDO.setUpdater(userName); | 123 | inspectionPlanRoleDO.setUpdater(userName); |
| 119 | inspectionPlanRoleDO.setRoleId(roleId); | 124 | inspectionPlanRoleDO.setRoleId(roleId); |
| 120 | - inspectionPlanRoleMapper.insert(inspectionPlanRoleDO); | 125 | + roleList.add(inspectionPlanRoleDO); |
| 121 | }); | 126 | }); |
| 122 | /*3.插入巡查计划明细*/ | 127 | /*3.插入巡查计划明细*/ |
| 128 | + | ||
| 123 | for (int i = 0; i < betweenDayList.size(); i++) { | 129 | for (int i = 0; i < betweenDayList.size(); i++) { |
| 124 | String[] dateStr = betweenDayList.get(i).split("/"); | 130 | String[] dateStr = betweenDayList.get(i).split("/"); |
| 125 | InspectionPlanDetailDO entity = getInspectionPlanDetailDO(batchNo, createReqVO, roadReqVO, now); | 131 | InspectionPlanDetailDO entity = getInspectionPlanDetailDO(batchNo, createReqVO, roadReqVO, now); |
| 126 | - entity.setSortNum(i+1); | 132 | + ThreadUtil.sleep(2); |
| 133 | + entity.setSortNum(i + 1); | ||
| 127 | entity.setBeginTime(LocalDate.parse(dateStr[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); | 134 | entity.setBeginTime(LocalDate.parse(dateStr[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| 128 | entity.setEndTime(LocalDate.parse(dateStr[1], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); | 135 | entity.setEndTime(LocalDate.parse(dateStr[1], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| 129 | - | ||
| 130 | - inspectionPlanDetailMapper.insert(entity); | 136 | + detailDOList.add(entity); |
| 131 | } | 137 | } |
| 132 | }); | 138 | }); |
| 133 | 139 | ||
| 140 | + /*1.插入巡查计划*/ | ||
| 141 | + inspectionPlanMapper.insertBatch(inspectionPlanList); | ||
| 142 | + inspectionPlanRoleMapper.insertBatch(roleList); | ||
| 143 | + inspectionPlanDetailMapper.insertBatch(detailDOList); | ||
| 134 | // 返回 | 144 | // 返回 |
| 135 | - return CommonResult.success(count.longValue()); | 145 | + return CommonResult.success(createReqVO.getRoadListReqVO().size()); |
| 136 | } | 146 | } |
| 137 | 147 | ||
| 138 | private InspectionPlanDetailDO getInspectionPlanDetailDO(String batchNo, InspectionPlanSaveReqVO saveReqVO, | 148 | private InspectionPlanDetailDO getInspectionPlanDetailDO(String batchNo, InspectionPlanSaveReqVO saveReqVO, |
| 139 | - InspectionPlanRoadReqVO roadReqVO, LocalDateTime now) { | ||
| 140 | - String userId = SecurityFrameworkUtils.getLoginUserId()+""; | 149 | + InspectionPlanRoadReqVO roadReqVO, LocalDateTime now) { |
| 150 | + String userId = SecurityFrameworkUtils.getLoginUserId() + ""; | ||
| 141 | String userName = SecurityFrameworkUtils.getLoginUserNickname(); | 151 | String userName = SecurityFrameworkUtils.getLoginUserNickname(); |
| 142 | InspectionPlanDetailDO entity = new InspectionPlanDetailDO(); | 152 | InspectionPlanDetailDO entity = new InspectionPlanDetailDO(); |
| 143 | entity.setBatchNo(batchNo); | 153 | entity.setBatchNo(batchNo); |
| 144 | - entity.setPlanNo("P" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000)); | 154 | + entity.setPlanNo("P" + System.currentTimeMillis() + RandomUtil.randomInt(1000)); |
| 145 | entity.setBusiLine(saveReqVO.getBusiLine()); | 155 | entity.setBusiLine(saveReqVO.getBusiLine()); |
| 146 | entity.setCompanyId(saveReqVO.getCompanyId()); | 156 | entity.setCompanyId(saveReqVO.getCompanyId()); |
| 147 | entity.setDeptId(roadReqVO.getDeptId()); | 157 | entity.setDeptId(roadReqVO.getDeptId()); |
| @@ -182,9 +192,9 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -182,9 +192,9 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 182 | 192 | ||
| 183 | private void validateInspectionPlanExists(InspectionPlanSaveReqVO req) { | 193 | private void validateInspectionPlanExists(InspectionPlanSaveReqVO req) { |
| 184 | Set<Long> roadIds = req.getRoadListReqVO().stream().map(InspectionPlanRoadReqVO::getRoadId).collect(Collectors.toSet()); | 194 | Set<Long> roadIds = req.getRoadListReqVO().stream().map(InspectionPlanRoadReqVO::getRoadId).collect(Collectors.toSet()); |
| 185 | - Long count =0L; | 195 | + Long count = 0L; |
| 186 | //标准计划 | 196 | //标准计划 |
| 187 | - if(req.getPlanAttr().equals(1)){ | 197 | + if (req.getPlanAttr().equals(1)) { |
| 188 | QueryWrapper<InspectionPlanDO> sql = new QueryWrapper<>(); | 198 | QueryWrapper<InspectionPlanDO> sql = new QueryWrapper<>(); |
| 189 | sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) | 199 | sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) |
| 190 | .in(InspectionPlanDO::getRoadId, roadIds) | 200 | .in(InspectionPlanDO::getRoadId, roadIds) |
| @@ -192,7 +202,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -192,7 +202,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 192 | .ge(InspectionPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime | 202 | .ge(InspectionPlanDO::getEndTime, req.getBeginTime()); // end_time >= startTime |
| 193 | 203 | ||
| 194 | count = inspectionPlanMapper.selectCount(sql); | 204 | count = inspectionPlanMapper.selectCount(sql); |
| 195 | - }else{ | 205 | + } else { |
| 196 | QueryWrapper<InspectionPlanDO> sql = new QueryWrapper<>(); | 206 | QueryWrapper<InspectionPlanDO> sql = new QueryWrapper<>(); |
| 197 | sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) | 207 | sql.lambda().eq(InspectionPlanDO::getPlanTypeId, req.getPlanTypeId()) |
| 198 | .in(InspectionPlanDO::getRoadId, roadIds) | 208 | .in(InspectionPlanDO::getRoadId, roadIds) |
| @@ -228,7 +238,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -228,7 +238,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 228 | @Override | 238 | @Override |
| 229 | public void deleteInspectionPlanByBatchNo(String batchNo) { | 239 | public void deleteInspectionPlanByBatchNo(String batchNo) { |
| 230 | InspectionPlanDO inspectionPlanDO = inspectionPlanMapper.selectOne(InspectionPlanDO::getBatchNo, batchNo); | 240 | InspectionPlanDO inspectionPlanDO = inspectionPlanMapper.selectOne(InspectionPlanDO::getBatchNo, batchNo); |
| 231 | - if(inspectionPlanDO !=null && inspectionPlanDO.getPlanFinishNum() >0){ | 241 | + if (inspectionPlanDO != null && inspectionPlanDO.getPlanFinishNum() > 0) { |
| 232 | throw exception(INSPECTION_PLAN_NOT_ALLOW_DELETE); | 242 | throw exception(INSPECTION_PLAN_NOT_ALLOW_DELETE); |
| 233 | } | 243 | } |
| 234 | inspectionPlanMapper.deleteByBatchNo(batchNo); | 244 | inspectionPlanMapper.deleteByBatchNo(batchNo); |
| @@ -239,7 +249,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | @@ -239,7 +249,7 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { | ||
| 239 | @Override | 249 | @Override |
| 240 | public void stopPlanInspectionPlan(String batchNo) { | 250 | public void stopPlanInspectionPlan(String batchNo) { |
| 241 | inspectionPlanMapper.delete(InspectionPlanDO::getBatchNo, batchNo); | 251 | inspectionPlanMapper.delete(InspectionPlanDO::getBatchNo, batchNo); |
| 242 | - inspectionPlanDetailMapper.delete(InspectionPlanDetailDO::getBatchNo,batchNo); | 252 | + inspectionPlanDetailMapper.delete(InspectionPlanDetailDO::getBatchNo, batchNo); |
| 243 | inspectionPlanRoleMapper.delete(InspectionPlanRoleDO::getBatchNo, batchNo); | 253 | inspectionPlanRoleMapper.delete(InspectionPlanRoleDO::getBatchNo, batchNo); |
| 244 | } | 254 | } |
| 245 | 255 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanService.java
| @@ -22,7 +22,7 @@ public interface MaintainPlanService { | @@ -22,7 +22,7 @@ public interface MaintainPlanService { | ||
| 22 | * @param createReqVO 创建信息 | 22 | * @param createReqVO 创建信息 |
| 23 | * @return 编号 | 23 | * @return 编号 |
| 24 | */ | 24 | */ |
| 25 | - CommonResult<Long> createMaintainPlan(@Valid MaintainPlanSaveReqVO createReqVO); | 25 | + CommonResult<Integer> createMaintainPlan(@Valid MaintainPlanSaveReqVO createReqVO); |
| 26 | 26 | ||
| 27 | /** | 27 | /** |
| 28 | * 更新养护计划汇总 | 28 | * 更新养护计划汇总 |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java
| @@ -2,12 +2,16 @@ package com.zteits.urbanops.module.garden.service.maintainplan; | @@ -2,12 +2,16 @@ package com.zteits.urbanops.module.garden.service.maintainplan; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.date.DateUtil; | 4 | import cn.hutool.core.date.DateUtil; |
| 5 | +import cn.hutool.core.thread.ThreadUtil; | ||
| 5 | import cn.hutool.core.util.RandomUtil; | 6 | import cn.hutool.core.util.RandomUtil; |
| 6 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 7 | import com.zteits.urbanops.framework.common.pojo.CommonResult; | 8 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| 8 | import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; | 9 | import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; |
| 9 | import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; | 10 | import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; |
| 10 | import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; | 11 | import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; |
| 12 | +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; | ||
| 13 | +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; | ||
| 14 | +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; | ||
| 11 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDetailDO; | 15 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanDetailDO; |
| 12 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanRoleDO; | 16 | import com.zteits.urbanops.module.garden.dal.dataobject.maintainplan.MaintainPlanRoleDO; |
| 13 | import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanDetailMapper; | 17 | import com.zteits.urbanops.module.garden.dal.mysql.maintainplan.MaintainPlanDetailMapper; |
| @@ -58,7 +62,7 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | @@ -58,7 +62,7 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | ||
| 58 | private MaintainPlanRoleMapper maintainPlanRoleMapper; | 62 | private MaintainPlanRoleMapper maintainPlanRoleMapper; |
| 59 | 63 | ||
| 60 | @Override | 64 | @Override |
| 61 | - public CommonResult<Long> createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { | 65 | + public CommonResult<Integer> createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { |
| 62 | //存在性校验 | 66 | //存在性校验 |
| 63 | validateMaintainPlanExists(createReqVO); | 67 | validateMaintainPlanExists(createReqVO); |
| 64 | LocalDateTime now = LocalDateTime.now(); | 68 | LocalDateTime now = LocalDateTime.now(); |
| @@ -78,30 +82,36 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | @@ -78,30 +82,36 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | ||
| 78 | } | 82 | } |
| 79 | //计算计划次数 | 83 | //计算计划次数 |
| 80 | Integer planNum = betweenDayList.size(); | 84 | Integer planNum = betweenDayList.size(); |
| 81 | - MaintainPlanDO maintainPlanDO = BeanUtils.toBean(createReqVO, MaintainPlanDO.class); | ||
| 82 | - AtomicInteger count = new AtomicInteger(); | ||
| 83 | 85 | ||
| 86 | + | ||
| 87 | + //巡检计划list | ||
| 88 | + List<MaintainPlanDO> maintainPlanList = new ArrayList<>(); | ||
| 89 | + //角色列表 | ||
| 90 | + List<MaintainPlanRoleDO> roleList = new ArrayList<>(); | ||
| 91 | + //计划明细 | ||
| 92 | + List<MaintainPlanDetailDO> detailDOList = new ArrayList<>(); | ||
| 84 | //按照道路创建计划 | 93 | //按照道路创建计划 |
| 85 | createReqVO.getRoadListReqVO().forEach(roadReqVO -> { | 94 | createReqVO.getRoadListReqVO().forEach(roadReqVO -> { |
| 86 | - String batchNo = "BN" + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomInt(1000); | ||
| 87 | - maintainPlanDO.setBatchNo(batchNo); | ||
| 88 | - maintainPlanDO.setPlanFinishNum(0); | ||
| 89 | - maintainPlanDO.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); | ||
| 90 | - maintainPlanDO.setPlanNum(planNum); | ||
| 91 | - maintainPlanDO.setCreateTime(now); | ||
| 92 | - maintainPlanDO.setUpdateTime(now); | ||
| 93 | - maintainPlanDO.setCreator(userId); | ||
| 94 | - maintainPlanDO.setCreatorName(userName); | ||
| 95 | - maintainPlanDO.setUpdater(userId); | ||
| 96 | - maintainPlanDO.setUpdaterName(userName); | ||
| 97 | - maintainPlanDO.setDeptId(roadReqVO.getDeptId()); | ||
| 98 | - maintainPlanDO.setRoadId(roadReqVO.getRoadId()); | ||
| 99 | - maintainPlanDO.setRoadName(roadReqVO.getRoadName()); | 95 | + MaintainPlanDO maintainPlan = BeanUtils.toBean(createReqVO, MaintainPlanDO.class); |
| 96 | + String batchNo = "BN" + System.currentTimeMillis() + RandomUtil.randomInt(10000)+roadReqVO.getRoadId(); | ||
| 97 | + maintainPlan.setBatchNo(batchNo); | ||
| 98 | + maintainPlan.setPlanFinishNum(0); | ||
| 99 | + maintainPlan.setFinishState(FinishStateEnum.NOT_FINISHED.getStatus()); | ||
| 100 | + maintainPlan.setPlanNum(planNum); | ||
| 101 | + maintainPlan.setCreateTime(now); | ||
| 102 | + maintainPlan.setUpdateTime(now); | ||
| 103 | + maintainPlan.setCreator(userId); | ||
| 104 | + maintainPlan.setCreatorName(userName); | ||
| 105 | + maintainPlan.setUpdater(userId); | ||
| 106 | + maintainPlan.setUpdaterName(userName); | ||
| 107 | + maintainPlan.setDeptId(roadReqVO.getDeptId()); | ||
| 108 | + maintainPlan.setRoadId(roadReqVO.getRoadId()); | ||
| 109 | + maintainPlan.setRoadName(roadReqVO.getRoadName()); | ||
| 100 | //计划属性label | 110 | //计划属性label |
| 101 | String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); | 111 | String planAttrLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.GARDEN_PLAN_ATTR_REDIS_KEY, createReqVO.getPlanAttr()); |
| 102 | - maintainPlanDO.setPlanName(roadReqVO.getRoadName() + planAttrLabel + createReqVO.getPlanNameSuffix()); | ||
| 103 | - /*1.插入巡查计划*/ | ||
| 104 | - count.addAndGet(maintainPlanMapper.insert(maintainPlanDO)); | 112 | + String planTypeIdLabel = DictFrameworkUtils.parseDictDataLabel(PlanConstants.MAINTAIN_TYPE, createReqVO.getPlanTypeId()); |
| 113 | + maintainPlan.setPlanName(roadReqVO.getRoadName() + planAttrLabel + planTypeIdLabel + createReqVO.getPlanNameSuffix()); | ||
| 114 | + maintainPlanList.add(maintainPlan); | ||
| 105 | /*2.插入角色*/ | 115 | /*2.插入角色*/ |
| 106 | createReqVO.getRoleIds().forEach(roleId -> { | 116 | createReqVO.getRoleIds().forEach(roleId -> { |
| 107 | MaintainPlanRoleDO maintainPlanRoleDO = new MaintainPlanRoleDO(); | 117 | MaintainPlanRoleDO maintainPlanRoleDO = new MaintainPlanRoleDO(); |
| @@ -110,25 +120,30 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | @@ -110,25 +120,30 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { | ||
| 110 | maintainPlanRoleDO.setDeptId(roadReqVO.getDeptId()); | 120 | maintainPlanRoleDO.setDeptId(roadReqVO.getDeptId()); |
| 111 | maintainPlanRoleDO.setCreateTime(now); | 121 | maintainPlanRoleDO.setCreateTime(now); |
| 112 | maintainPlanRoleDO.setUpdateTime(now); | 122 | maintainPlanRoleDO.setUpdateTime(now); |
| 113 | - maintainPlanRoleDO.setCreator(userId); | ||
| 114 | - maintainPlanRoleDO.setUpdater(userId); | 123 | + maintainPlanRoleDO.setCreator(userName); |
| 124 | + maintainPlanRoleDO.setUpdater(userName); | ||
| 115 | maintainPlanRoleDO.setRoleId(roleId); | 125 | maintainPlanRoleDO.setRoleId(roleId); |
| 116 | - maintainPlanRoleMapper.insert(maintainPlanRoleDO); | 126 | + roleList.add(maintainPlanRoleDO); |
| 117 | }); | 127 | }); |
| 118 | /*3.插入巡查计划明细*/ | 128 | /*3.插入巡查计划明细*/ |
| 129 | + | ||
| 119 | for (int i = 0; i < betweenDayList.size(); i++) { | 130 | for (int i = 0; i < betweenDayList.size(); i++) { |
| 120 | String[] dateStr = betweenDayList.get(i).split("/"); | 131 | String[] dateStr = betweenDayList.get(i).split("/"); |
| 121 | MaintainPlanDetailDO entity = getMaintainPlanDetailDO(batchNo, createReqVO, roadReqVO, now); | 132 | MaintainPlanDetailDO entity = getMaintainPlanDetailDO(batchNo, createReqVO, roadReqVO, now); |
| 133 | + ThreadUtil.sleep(2); | ||
| 122 | entity.setSortNum(i+1); | 134 | entity.setSortNum(i+1); |
| 123 | entity.setBeginTime(LocalDate.parse(dateStr[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); | 135 | entity.setBeginTime(LocalDate.parse(dateStr[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| 124 | entity.setEndTime(LocalDate.parse(dateStr[1], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); | 136 | entity.setEndTime(LocalDate.parse(dateStr[1], DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| 125 | - | ||
| 126 | - maintainPlanDetailMapper.insert(entity); | 137 | + detailDOList.add(entity); |
| 127 | } | 138 | } |
| 128 | }); | 139 | }); |
| 129 | 140 | ||
| 141 | + /*1.插入巡查计划*/ | ||
| 142 | + maintainPlanMapper.insertBatch(maintainPlanList); | ||
| 143 | + maintainPlanRoleMapper.insertBatch(roleList); | ||
| 144 | + maintainPlanDetailMapper.insertBatch(detailDOList); | ||
| 130 | // 返回 | 145 | // 返回 |
| 131 | - return CommonResult.success(count.longValue()); | 146 | + return CommonResult.success(createReqVO.getRoadListReqVO().size()); |
| 132 | } | 147 | } |
| 133 | 148 | ||
| 134 | private MaintainPlanDetailDO getMaintainPlanDetailDO(String batchNo, MaintainPlanSaveReqVO saveReqVO, | 149 | private MaintainPlanDetailDO getMaintainPlanDetailDO(String batchNo, MaintainPlanSaveReqVO saveReqVO, |
urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanCommitMapper.xml
| @@ -8,5 +8,80 @@ | @@ -8,5 +8,80 @@ | ||
| 8 | 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 | 8 | 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 |
| 9 | 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ | 9 | 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ |
| 10 | --> | 10 | --> |
| 11 | + <!-- 复杂联表分页查询 --> | ||
| 12 | + <select id="selectForPage" resultType="com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanCommitRespVO"> | ||
| 13 | + SELECT | ||
| 14 | + a.plan_no, | ||
| 15 | + b.plan_name, | ||
| 16 | + a.busi_line, | ||
| 17 | + b.road_id, | ||
| 18 | + b.road_name, | ||
| 19 | + b.level_id, | ||
| 20 | + b.plan_attr as planAttr, | ||
| 21 | + b.plan_type_id as planTypeId, | ||
| 22 | + b.company_id, | ||
| 23 | + b.dept_id, | ||
| 24 | + a.img_host as imgHost, | ||
| 25 | + a.img, | ||
| 26 | + a.inspection_state as inspectionState, | ||
| 27 | + a.trans_state as transState, | ||
| 28 | + a.trans_work_no as transWorkNo, | ||
| 29 | + a.finish_time as finishTime, | ||
| 30 | + a.user_id, | ||
| 31 | + a.user_name, | ||
| 32 | + a.role_id, | ||
| 33 | + a.role_name, | ||
| 34 | + a.remark, | ||
| 35 | + a.creator, | ||
| 36 | + a.creator_name, | ||
| 37 | + a.create_time | ||
| 38 | + FROM | ||
| 39 | + garden_inspection_plan_commit a, garden_inspection_plan b | ||
| 40 | + where a.batch_no=b.batch_no | ||
| 41 | + <if test="req.planNo != null and req.planNo !=''"> | ||
| 42 | + and a.plan_no = #{req.planNo} | ||
| 43 | + </if> | ||
| 44 | + <if test="req.planName != null and req.planName !=''"> | ||
| 45 | + AND b.plan_name LIKE CONCAT(#{req.planName},'%') | ||
| 46 | + </if> | ||
| 47 | + <if test="busiLineList != null and busiLineList.size() > 0"> | ||
| 48 | + AND a.busi_line IN | ||
| 49 | + <foreach collection="busiLineList" item="id" open="(" separator="," close=")"> | ||
| 50 | + #{id} | ||
| 51 | + </foreach> | ||
| 52 | + </if> | ||
| 11 | 53 | ||
| 54 | + <if test="req.planAttr != null"> | ||
| 55 | + and b.plan_attr = #{req.planAttr} | ||
| 56 | + </if> | ||
| 57 | + <if test="req.planTypeId != null"> | ||
| 58 | + and b.plan_type_id = #{req.planTypeId} | ||
| 59 | + </if> | ||
| 60 | + <if test="req.deptId != null"> | ||
| 61 | + and b.dept_id = #{req.deptId} | ||
| 62 | + </if> | ||
| 63 | + <if test="req.roadName != null and req.roadName !=''"> | ||
| 64 | + AND b.road_name LIKE CONCAT(#{req.roadName},'%') | ||
| 65 | + </if> | ||
| 66 | + <if test="req.companyId != null"> | ||
| 67 | + and b.company_id = #{req.companyId} | ||
| 68 | + </if> | ||
| 69 | + <if test="req.levelId != null"> | ||
| 70 | + and b.level_id = #{req.levelId} | ||
| 71 | + </if> | ||
| 72 | + <if test="req.userName != null and req.userName !=''"> | ||
| 73 | + AND a.user_name LIKE CONCAT('%', #{req.userName},'%') | ||
| 74 | + </if> | ||
| 75 | + <if test="req.transState != null"> | ||
| 76 | + and a.inspection_state = #{req.transState} | ||
| 77 | + </if> | ||
| 78 | + <if test="req.finishTime != null"> | ||
| 79 | + AND DATE_FORMAT(a.finish_time, '%Y-%m-%d') = #{req.finishTime} | ||
| 80 | + </if> | ||
| 81 | + <if test="req.remark != null and req.remark !=''"> | ||
| 82 | + AND a.remark LIKE CONCAT('%', #{req.remark} ,'%') | ||
| 83 | + </if> | ||
| 84 | + | ||
| 85 | + order by a.id desc | ||
| 86 | + </select> | ||
| 12 | </mapper> | 87 | </mapper> |
| 13 | \ No newline at end of file | 88 | \ No newline at end of file |