From 8969241f7ad287cf7c9910513cf918f6dad392b0 Mon Sep 17 00:00:00 2001 From: wangfs <15029758498@163.com> Date: Sat, 7 Mar 2026 13:13:37 +0800 Subject: [PATCH] 抢险任务提交 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/EmergencyTaskController.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryPageReqVO.java | 35 +++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryRespVO.java | 43 +++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachinerySaveReqVO.java | 20 ++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskApprovalReqVO.java | 26 ++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskPageReqVO.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskRespVO.java | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskSaveReqVO.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyMachineryDO.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyTaskDO.java | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyMachineryMapper.java | 33 +++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyTaskMapper.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java | 2 ++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryService.java | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskService.java | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskServiceImpl.java | 203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyMachineryMapper.xml | 15 +++++++++++++++ urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyTaskMapper.xml | 16 ++++++++++++++++ 19 files changed, 1256 insertions(+), 0 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/EmergencyTaskController.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryPageReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryRespVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachinerySaveReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskApprovalReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskPageReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskRespVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskSaveReqVO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyMachineryDO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyTaskDO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyMachineryMapper.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyTaskMapper.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryService.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryServiceImpl.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskService.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskServiceImpl.java create mode 100644 urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyMachineryMapper.xml create mode 100644 urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyTaskMapper.xml diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/EmergencyTaskController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/EmergencyTaskController.java new file mode 100644 index 0000000..d0436f4 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/EmergencyTaskController.java @@ -0,0 +1,110 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; + +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyTaskDO; +import com.zteits.urbanops.module.garden.service.emergencytask.EmergencyTaskService; + +@Tag(name = "管理后台 - 抢险任务主") +@RestController +@RequestMapping("/garden/emergency-task") +@Validated +public class EmergencyTaskController { + + @Resource + private EmergencyTaskService emergencyTaskService; + + @PostMapping("/create") + @Operation(summary = "创建抢险任务主") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:create')") + public CommonResult createEmergencyTask(@Valid @RequestBody EmergencyTaskSaveReqVO createReqVO) { + return success(emergencyTaskService.createEmergencyTask(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新抢险任务主") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:update')") + public CommonResult updateEmergencyTask(@Valid @RequestBody EmergencyTaskSaveReqVO updateReqVO) { + emergencyTaskService.updateEmergencyTask(updateReqVO); + return success(true); + } + + @PostMapping("/approval") + @Operation(summary = "抢险任务审批") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:approval')") + public CommonResult approvalEmergencyTask(@Valid @RequestBody EmergencyTaskApprovalReqVO createReqVO) { + return success(emergencyTaskService.approvalEmergencyTask(createReqVO)); + } + + @DeleteMapping("/delete/task_no") + @Operation(summary = "删除抢险任务主") + @Parameter(name = "task_no", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:emergency-task:delete')") + public CommonResult deleteEmergencyTask(@RequestParam("task_no") String taskNo) { + emergencyTaskService.deleteEmergencyTaskByTaskNo(taskNo); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除抢险任务主") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:delete')") + public CommonResult deleteEmergencyTaskList(@RequestParam("ids") List ids) { + emergencyTaskService.deleteEmergencyTaskListByIds(ids); + return success(true); + } + + @GetMapping("/get/task_no") + @Operation(summary = "获得抢险任务主") + @Parameter(name = "task_no", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:query')") + public CommonResult getEmergencyTask(@RequestParam("task_no") String taskNo) { + EmergencyTaskRespVO emergencyTask = emergencyTaskService.getEmergencyTaskByTaskNo(taskNo); + return success(emergencyTask); + } + + @GetMapping("/page") + @Operation(summary = "获得抢险任务主分页") + //@PreAuthorize("@ss.hasPermission('garden:emergency-task:query')") + public CommonResult> getEmergencyTaskPage(@Valid EmergencyTaskPageReqVO pageReqVO) { + PageResult pageResult = emergencyTaskService.getEmergencyTaskPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出抢险任务主 Excel") + @PreAuthorize("@ss.hasPermission('garden:emergency-task:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportEmergencyTaskExcel(@Valid EmergencyTaskPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = emergencyTaskService.getEmergencyTaskPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "抢险任务主.xls", "数据", EmergencyTaskRespVO.class, list); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryPageReqVO.java new file mode 100644 index 0000000..4ccc4cf --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryPageReqVO.java @@ -0,0 +1,35 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 抢险机械子分页 Request VO") +@Data +public class EmergencyMachineryPageReqVO extends PageParam { + + @Schema(description = "关联任务主表ID", example = "24066") + private Long taskId; + + @Schema(description = "机械名称(如:三轮车)", example = "21485") + private Integer machineryNameId; + + @Schema(description = "机械数量", example = "28764") + private Integer machineryCount; + + @Schema(description = "创建者", example = "李四") + private String creatorName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新者", example = "张三") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryRespVO.java new file mode 100644 index 0000000..50f114f --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachineryRespVO.java @@ -0,0 +1,43 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 抢险机械子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class EmergencyMachineryRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1541") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "关联任务主表ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24066") + @ExcelProperty("关联任务主表ID") + private Long taskId; + + @Schema(description = "机械名称(如:三轮车)", requiredMode = Schema.RequiredMode.REQUIRED, example = "21485") + @ExcelProperty("机械名称(如:三轮车)") + private Integer machineryNameId; + + @Schema(description = "机械数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28764") + @ExcelProperty("机械数量") + private Integer machineryCount; + + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("创建者") + private String creatorName; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("更新者") + private String updaterName; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachinerySaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachinerySaveReqVO.java new file mode 100644 index 0000000..3923168 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyMachinerySaveReqVO.java @@ -0,0 +1,20 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 抢险机械子新增/修改 Request VO") +@Data +public class EmergencyMachinerySaveReqVO { + + @Schema(description = "机械名称(如:三轮车)", requiredMode = Schema.RequiredMode.REQUIRED, example = "21485") + @NotNull(message = "机械名称(如:三轮车)不能为空") + private Integer machineryNameId; + + @Schema(description = "机械数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28764") + @NotNull(message = "机械数量不能为空") + private Integer machineryCount; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskApprovalReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskApprovalReqVO.java new file mode 100644 index 0000000..310fc47 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskApprovalReqVO.java @@ -0,0 +1,26 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.*; +import lombok.Data; + +@Schema(description = "管理后台 - 抢险任务主新增/修改 Request VO") +@Data +public class EmergencyTaskApprovalReqVO { + + @Schema(description = "任务编号(唯一标识,如生成规则:TASK+时间戳)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "任务编号(唯一标识,如生成规则:TASK+时间戳)不能为空") + private String taskNo; + + + @Schema(description = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结 不能为空") + @Min(value = 1, message = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结不能小于 1") + @Max(value = 5, message = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结不能大于 5") + private Integer busiStatus; + + @Schema(description = "审批备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "审批备注") + @Max(value = 64, message = "审批备注长度不能超过 64 个字符") + private String approvalRemarks; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskPageReqVO.java new file mode 100644 index 0000000..9ce1c48 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskPageReqVO.java @@ -0,0 +1,49 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 抢险任务主分页 Request VO") +@Data +public class EmergencyTaskPageReqVO extends PageParam { + + @Schema(description = "任务编号(唯一标识,如生成规则:TASK+时间戳)") + private String taskNo; + + @Schema(description = "险情类型(如:树木倒伏)", example = "5209") + private Integer emergencyTypeId; + + @Schema(description = "险情危害(如:无)", example = "16325") + private Integer emergencyHarmId; + + @Schema(description = "树木权属(如:专业权属)", example = "19498") + private Integer treeOwnershipId; + + @Schema(description = "险情地点") + private String emergencyLocation; + + @Schema(description = "抢险开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate startTime; + + @Schema(description = "抢险结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate endTime; + + + @Schema(description = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结", example = "1") + private Integer busiStatus; + + @Schema(description = "归属(一级部门id)", example = "6353") + private Long companyId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskRespVO.java new file mode 100644 index 0000000..25d9f66 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskRespVO.java @@ -0,0 +1,135 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.zteits.urbanops.framework.mybatis.core.type.StringArrayToListTypeHandler; +import com.zteits.urbanops.framework.mybatis.core.type.StringListTypeHandler; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 抢险任务主 Response VO") +@Data +@ExcelIgnoreUnannotated +public class EmergencyTaskRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10092") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "任务编号(唯一标识,如生成规则:TASK+时间戳)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("任务编号(唯一标识,如生成规则:TASK+时间戳)") + private String taskNo; + + @Schema(description = "发现险情时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("发现险情时间") + private LocalDateTime discoveryTime; + + @Schema(description = "险情类型(如:树木倒伏)", requiredMode = Schema.RequiredMode.REQUIRED, example = "5209") + @ExcelProperty("险情类型:1:树木倒伏 2:树木折枝") + private Integer emergencyTypeId; + + @Schema(description = "险情危害(如:无)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16325") + @ExcelProperty("险情危害(如:无)") + private Integer emergencyHarmId; + + @Schema(description = "树木权属(如:专业权属)", requiredMode = Schema.RequiredMode.REQUIRED, example = "19498") + @ExcelProperty("树木权属 1:砸车 2:砸房 3:砸人 4:无") + private Integer treeOwnershipId; + + @Schema(description = "险情地点", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("险情地点") + private String emergencyLocation; + + @Schema(description = "上报人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("上报人") + private String reporter; + + @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("联系电话") + private String contactPhone; + + @Schema(description = "抢险开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("抢险开始时间") + private LocalDateTime rescueStartTime; + + @Schema(description = "抢险中照片", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("抢险中照片") + @TableField(typeHandler = StringArrayToListTypeHandler.class) + private List emergencyImg; + + @Schema(description = "树种(如:国槐)") + @ExcelProperty("树种(如:国槐)") + private String treeSpecies; + + @Schema(description = "树木规格(如:胸径20厘米)") + @ExcelProperty("树木规格(如:胸径20厘米)") + private String treeSpec; + + @Schema(description = "抢险完成时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("抢险完成时间") + private LocalDateTime rescueCompleteTime; + + @Schema(description = "出动人员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3371") + @ExcelProperty("出动人员数量") + private Integer personnelCount; + + @Schema(description = "抢险结束照片", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("抢险结束照片") + @TableField(typeHandler = StringArrayToListTypeHandler.class) + private List emergencyEndImg; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remarks; + + @Schema(description = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结") + private Integer busiStatus; + + @Schema(description = "工作流审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("工作流审批状态") + private Integer status; + + @Schema(description = "流程实例的编号", example = "30197") + @ExcelProperty("流程实例的编号") + private String processInstanceId; + + @Schema(description = "审批人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20789") + @ExcelProperty("审批人ID") + private String approvalUserId; + + @Schema(description = "审批人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("审批人") + private String approvalUserName; + + @Schema(description = "审批备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "审批备注") + @ExcelProperty("审批备注") + private String approvalRemarks; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "6353") + @ExcelProperty("归属(一级部门id)") + private Long companyId; + + @Schema(description = "部门ID(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "27559") + @ExcelProperty("部门ID(道路负责部门id)") + private Long deptId; + + @Schema(description = "创建者", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("创建者") + private String creatorName; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("更新者") + private String updaterName; + + private List emergencyMachineryList; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskSaveReqVO.java new file mode 100644 index 0000000..76fb201 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskSaveReqVO.java @@ -0,0 +1,94 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 抢险任务主新增/修改 Request VO") +@Data +public class EmergencyTaskSaveReqVO { + + @Schema(description = "发现险情时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "发现险情时间不能为空") + private LocalDateTime discoveryTime; + + @Schema(description = "险情类型(如:树木倒伏)", requiredMode = Schema.RequiredMode.REQUIRED, example = "5209") + @NotNull(message = "险情类型(如:树木倒伏)不能为空") + private Integer emergencyTypeId; + + @Schema(description = "险情危害(如:无)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16325") + @NotNull(message = "险情危害(如:无)不能为空") + private Integer emergencyHarmId; + + @Schema(description = "树木权属(如:专业权属)", requiredMode = Schema.RequiredMode.REQUIRED, example = "19498") + @NotNull(message = "树木权属(如:专业权属)不能为空") + private Integer treeOwnershipId; + + @Schema(description = "险情地点", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "险情地点不能为空") + private String emergencyLocation; + + @Schema(description = "上报人", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "上报人不能为空") + private String reporter; + + @Schema(description = "联系电话", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "联系电话不能为空") + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "联系电话格式不正确,应为 11 位手机号") + private String contactPhone; + + @Schema(description = "抢险开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "抢险开始时间不能为空") + private LocalDateTime rescueStartTime; + + @Schema(description = "抢险中照片", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "抢险中照片不能为空") + @Size(min = 1, message = "抢险中照片最少1张") + private List emergencyImg; + + @Schema(description = "树种(如:国槐)") + private String treeSpecies; + + @Schema(description = "树木规格(如:胸径20厘米)") + private String treeSpec; + + @Schema(description = "抢险完成时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "抢险完成时间不能为空") + private LocalDateTime rescueCompleteTime; + + @Schema(description = "出动人员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3371") + @NotNull(message = "出动人员数量不能为空") + private Integer personnelCount; + + @Schema(description = "抢险结束照片", requiredMode = Schema.RequiredMode.REQUIRED) + private List emergencyEndImg; + + @Schema(description = "备注") + private String remarks; + + @Schema(description = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结不能为空") + private Integer busiStatus; + + @Schema(description = "工作流审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "工作流审批状态不能为空") + private Integer status; + + @Schema(description = "流程实例的编号", example = "30197") + private String processInstanceId; + + @Schema(description = "审批人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20789") + @NotEmpty(message = "审批人ID不能为空") + private String approvalUserId; + + @Schema(description = "审批人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "审批人不能为空") + private String approvalUserName; + + @Schema(description = "使用机械", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + private List emergencyMachineryList; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyMachineryDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyMachineryDO.java new file mode 100644 index 0000000..09de353 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyMachineryDO.java @@ -0,0 +1,52 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.emergencytask; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; + +/** + * 抢险机械子 DO + * + * @author 超级管理员 + */ +@TableName("garden_emergency_machinery") +@KeySequence("garden_emergency_machinery_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EmergencyMachineryDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 任务编号(唯一标识,如生成规则:TASK+时间戳) + */ + private String taskNo; + /** + * 机械名称(如:三轮车) + */ + private Integer machineryNameId; + /** + * 机械数量 + */ + private Integer machineryCount; + /** + * 创建者 + */ + private String creatorName; + /** + * 更新者 + */ + private String updaterName; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyTaskDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyTaskDO.java new file mode 100644 index 0000000..d19711d --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/emergencytask/EmergencyTaskDO.java @@ -0,0 +1,144 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.emergencytask; + +import com.zteits.urbanops.framework.mybatis.core.type.StringArrayToListTypeHandler; +import com.zteits.urbanops.framework.mybatis.core.type.StringListTypeHandler; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; + +/** + * 抢险任务主 DO + * + * @author 超级管理员 + */ +@TableName(value="garden_emergency_task", autoResultMap = true) +@KeySequence("garden_emergency_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EmergencyTaskDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 任务编号(唯一标识,如生成规则:TASK+时间戳) + */ + private String taskNo; + /** + * 发现险情时间 + */ + private LocalDateTime discoveryTime; + /** + * 险情类型(如:树木倒伏) + */ + private Integer emergencyTypeId; + /** + * 险情危害(如:无) + */ + private Integer emergencyHarmId; + /** + * 树木权属(如:专业权属) + */ + private Integer treeOwnershipId; + /** + * 险情地点 + */ + private String emergencyLocation; + /** + * 上报人 + */ + private String reporter; + /** + * 联系电话 + */ + private String contactPhone; + /** + * 抢险开始时间 + */ + private LocalDateTime rescueStartTime; + /** + * 抢险中照片 + */ + @TableField(typeHandler = StringArrayToListTypeHandler.class) + private List emergencyImg; + /** + * 树种(如:国槐) + */ + private String treeSpecies; + /** + * 树木规格(如:胸径20厘米) + */ + private String treeSpec; + /** + * 抢险完成时间 + */ + private LocalDateTime rescueCompleteTime; + /** + * 出动人员数量 + */ + private Integer personnelCount; + /** + * 抢险结束照片 + */ + @TableField(typeHandler = StringArrayToListTypeHandler.class) + private List emergencyEndImg; + /** + * 备注 + */ + private String remarks; + /** + * 案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结 + */ + private Integer busiStatus; + /** + * 工作流审批状态 + */ + private Integer status; + /** + * 流程实例的编号 + */ + private String processInstanceId; + /** + * 审批人ID + */ + private String approvalUserId; + /** + * 审批人 + */ + private String approvalUserName; + + /** + * 审批备注 + */ + private String approvalRemarks; + /** + * 归属(一级部门id) + */ + private Long companyId; + /** + * 部门ID(道路负责部门id) + */ + private Long deptId; + /** + * 创建者 + */ + private String creatorName; + /** + * 更新者 + */ + private String updaterName; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyMachineryMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyMachineryMapper.java new file mode 100644 index 0000000..541ef64 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyMachineryMapper.java @@ -0,0 +1,33 @@ +package com.zteits.urbanops.module.garden.dal.mysql.emergencytask; + +import java.util.*; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import org.apache.ibatis.annotations.Param; + +/** + * 抢险机械子 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface EmergencyMachineryMapper extends BaseMapperX { + + default PageResult selectPage(EmergencyMachineryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(EmergencyMachineryDO::getMachineryNameId, reqVO.getMachineryNameId()) + .eqIfPresent(EmergencyMachineryDO::getMachineryCount, reqVO.getMachineryCount()) + .likeIfPresent(EmergencyMachineryDO::getCreatorName, reqVO.getCreatorName()) + .betweenIfPresent(EmergencyMachineryDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(EmergencyMachineryDO::getUpdaterName, reqVO.getUpdaterName()) + .orderByDesc(EmergencyMachineryDO::getId)); + } + + int deleteByTaskNo(@Param("taskNo") String taskNo); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyTaskMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyTaskMapper.java new file mode 100644 index 0000000..2fa32d6 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/emergencytask/EmergencyTaskMapper.java @@ -0,0 +1,48 @@ +package com.zteits.urbanops.module.garden.dal.mysql.emergencytask; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.*; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyTaskDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import org.apache.ibatis.annotations.Param; + +/** + * 抢险任务主 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface EmergencyTaskMapper extends BaseMapperX { + + default PageResult selectPage(EmergencyTaskPageReqVO reqVO) { + LocalDateTime startDateTime = null; + LocalDateTime endDateTime = null; + if (reqVO.getStartTime() != null) { + startDateTime = reqVO.getStartTime().atStartOfDay(); + } + // 处理结束时间 (转为当天 23:59:59...) + if (reqVO.getEndTime() != null) { + endDateTime = reqVO.getEndTime().atTime(LocalTime.MAX); + } + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(EmergencyTaskDO::getTaskNo, reqVO.getTaskNo()) + .eqIfPresent(EmergencyTaskDO::getEmergencyTypeId, reqVO.getEmergencyTypeId()) + .eqIfPresent(EmergencyTaskDO::getEmergencyHarmId, reqVO.getEmergencyHarmId()) + .eqIfPresent(EmergencyTaskDO::getTreeOwnershipId, reqVO.getTreeOwnershipId()) + .likeIfPresent(EmergencyTaskDO::getEmergencyLocation, reqVO.getEmergencyLocation()) + .eqIfPresent(EmergencyTaskDO::getBusiStatus, reqVO.getBusiStatus()) + .eqIfPresent(EmergencyTaskDO::getCompanyId, reqVO.getCompanyId()) + .betweenIfPresent(EmergencyTaskDO::getDiscoveryTime, startDateTime, endDateTime) + .orderByDesc(EmergencyTaskDO::getId)); + } + + int deleteByTaskNo(@Param("taskNo") String taskNo); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java index 7e000f8..96ea7a6 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java @@ -138,5 +138,7 @@ public interface ErrorCodeConstants { ErrorCode ROAD_MANAGER_NOT_EXISTS = new ErrorCode(1-100-006-001, "道路管理不存在"); + // ========== 抢险任务主 TODO 补充编号 ========== + ErrorCode EMERGENCY_TASK_NOT_EXISTS = new ErrorCode(1-100-006-002, "抢险任务主不存在"); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryService.java new file mode 100644 index 0000000..9219a3a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.emergencytask; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 抢险机械子 Service 接口 + * + * @author 超级管理员 + */ +public interface EmergencyMachineryService { + + /** + * 创建抢险机械子 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createEmergencyMachinery(@Valid EmergencyMachinerySaveReqVO createReqVO); + + /** + * 更新抢险机械子 + * + * @param updateReqVO 更新信息 + */ + void updateEmergencyMachinery(@Valid EmergencyMachinerySaveReqVO updateReqVO); + + /** + * 删除抢险机械子 + * + * @param id 编号 + */ + void deleteEmergencyMachinery(Long id); + + /** + * 批量删除抢险机械子 + * + * @param ids 编号 + */ + void deleteEmergencyMachineryListByIds(List ids); + + /** + * 获得抢险机械子 + * + * @param id 编号 + * @return 抢险机械子 + */ + EmergencyMachineryDO getEmergencyMachinery(Long id); + + /** + * 获得抢险机械子分页 + * + * @param pageReqVO 分页查询 + * @return 抢险机械子分页 + */ + PageResult getEmergencyMachineryPage(EmergencyMachineryPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryServiceImpl.java new file mode 100644 index 0000000..7f60f1a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyMachineryServiceImpl.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.garden.service.emergencytask; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + +import com.zteits.urbanops.module.garden.dal.mysql.emergencytask.EmergencyMachineryMapper; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; + +/** + * 抢险机械子 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class EmergencyMachineryServiceImpl implements EmergencyMachineryService { + + @Resource + private EmergencyMachineryMapper emergencyMachineryMapper; + + @Override + public Long createEmergencyMachinery(EmergencyMachinerySaveReqVO createReqVO) { + // 插入 + EmergencyMachineryDO emergencyMachinery = BeanUtils.toBean(createReqVO, EmergencyMachineryDO.class); + emergencyMachineryMapper.insert(emergencyMachinery); + + // 返回 + return emergencyMachinery.getId(); + } + + @Override + public void updateEmergencyMachinery(EmergencyMachinerySaveReqVO updateReqVO) { + // 校验存在 + // validateEmergencyMachineryExists(updateReqVO.getId()); + // 更新 + EmergencyMachineryDO updateObj = BeanUtils.toBean(updateReqVO, EmergencyMachineryDO.class); + emergencyMachineryMapper.updateById(updateObj); + } + + @Override + public void deleteEmergencyMachinery(Long id) { + // 校验存在 + validateEmergencyMachineryExists(id); + // 删除 + emergencyMachineryMapper.deleteById(id); + } + + @Override + public void deleteEmergencyMachineryListByIds(List ids) { + // 删除 + emergencyMachineryMapper.deleteByIds(ids); + } + + + private void validateEmergencyMachineryExists(Long id) { + if (emergencyMachineryMapper.selectById(id) == null) { + //throw exception(EMERGENCY_MACHINERY_NOT_EXISTS); + } + } + + @Override + public EmergencyMachineryDO getEmergencyMachinery(Long id) { + return emergencyMachineryMapper.selectById(id); + } + + @Override + public PageResult getEmergencyMachineryPage(EmergencyMachineryPageReqVO pageReqVO) { + return emergencyMachineryMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskService.java new file mode 100644 index 0000000..e601106 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskService.java @@ -0,0 +1,84 @@ +package com.zteits.urbanops.module.garden.service.emergencytask; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyTaskDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 抢险任务主 Service 接口 + * + * @author 超级管理员 + */ +public interface EmergencyTaskService { + + /** + * 创建抢险任务主 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createEmergencyTask(@Valid EmergencyTaskSaveReqVO createReqVO); + + /** + * 集团审批 + * @param createReqVO + * @return + */ + int approvalEmergencyTask(EmergencyTaskApprovalReqVO createReqVO); + + /** + * 更新抢险任务主 + * + * @param updateReqVO 更新信息 + */ + void updateEmergencyTask(@Valid EmergencyTaskSaveReqVO updateReqVO); + + /** + * 删除抢险任务主 + * + * @param id 编号 + */ + void deleteEmergencyTask(Long id); + + /** + * 删除抢险任务主 + * + * @param taskNO 编号 + */ + void deleteEmergencyTaskByTaskNo(String taskNO); + + /** + * 批量删除抢险任务主 + * + * @param ids 编号 + */ + void deleteEmergencyTaskListByIds(List ids); + + /** + * 获得抢险任务主 + * + * @param id 编号 + * @return 抢险任务主 + */ + EmergencyTaskDO getEmergencyTask(Long id); + + /** + * 获得抢险任务主 + * + * @param taskNo 编号 + * @return 抢险任务主 + */ + EmergencyTaskRespVO getEmergencyTaskByTaskNo(String taskNo); + + /** + * 获得抢险任务主分页 + * + * @param pageReqVO 分页查询 + * @return 抢险任务主分页 + */ + PageResult getEmergencyTaskPage(EmergencyTaskPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskServiceImpl.java new file mode 100644 index 0000000..7595fee --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/emergencytask/EmergencyTaskServiceImpl.java @@ -0,0 +1,203 @@ +package com.zteits.urbanops.module.garden.service.emergencytask; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.RandomUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import com.zteits.urbanops.module.garden.dal.mysql.emergencytask.EmergencyMachineryMapper; +import jodd.util.StringUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyTaskDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; + +import com.zteits.urbanops.module.garden.dal.mysql.emergencytask.EmergencyTaskMapper; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList; +import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; + +/** + * 抢险任务主 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class EmergencyTaskServiceImpl implements EmergencyTaskService { + + @Resource + private EmergencyTaskMapper emergencyTaskMapper; + + @Resource + private EmergencyMachineryMapper emergencyMachineryMapper; + + @Transactional(rollbackFor = Exception.class) + @Override + public Long createEmergencyTask(EmergencyTaskSaveReqVO createReqVO) { + String userId = SecurityFrameworkUtils.getLoginUserId() + ""; + String userName = SecurityFrameworkUtils.getLoginUserNickname(); + String taskNo = "T" + System.currentTimeMillis() + RandomUtil.randomInt(1000, 9999); + Long companyId = SecurityFrameworkUtils.getCompanyId(); + Long deptId = SecurityFrameworkUtils.getDeptId(); + // 插入 + EmergencyTaskDO emergencyTask = new EmergencyTaskDO(); + emergencyTask.setTaskNo(taskNo); + emergencyTask.setDiscoveryTime(createReqVO.getDiscoveryTime()); + emergencyTask.setEmergencyTypeId(createReqVO.getEmergencyTypeId()); + emergencyTask.setEmergencyHarmId(createReqVO.getEmergencyHarmId()); + emergencyTask.setTreeOwnershipId(createReqVO.getTreeOwnershipId()); + emergencyTask.setEmergencyLocation(createReqVO.getEmergencyLocation()); + emergencyTask.setReporter(createReqVO.getReporter()); + emergencyTask.setContactPhone(createReqVO.getContactPhone()); + emergencyTask.setRescueStartTime(createReqVO.getRescueStartTime()); + emergencyTask.setEmergencyImg(createReqVO.getEmergencyImg()); + emergencyTask.setTreeSpec(createReqVO.getTreeSpec()); + emergencyTask.setTreeSpecies(createReqVO.getTreeSpecies()); + emergencyTask.setRescueCompleteTime(createReqVO.getRescueCompleteTime()); + emergencyTask.setPersonnelCount(createReqVO.getPersonnelCount()); + emergencyTask.setEmergencyEndImg(createReqVO.getEmergencyEndImg()); + emergencyTask.setRemarks(createReqVO.getRemarks()); + emergencyTask.setBusiStatus(createReqVO.getBusiStatus()); + emergencyTask.setStatus(createReqVO.getStatus()); + emergencyTask.setCompanyId(companyId); + emergencyTask.setDeptId(deptId); + emergencyTask.setCreator(userId); + emergencyTask.setCreatorName(userName); + emergencyTask.setUpdater(userId); + emergencyTask.setUpdaterName(userName); + emergencyTask.setApprovalRemarks(""); + emergencyTaskMapper.insert(emergencyTask); + + List list = new ArrayList<>(); + createReqVO.getEmergencyMachineryList().forEach(emergencyMachinery -> { + EmergencyMachineryDO emergencyMachineryDO = new EmergencyMachineryDO(); + emergencyMachineryDO.setTaskNo(taskNo); + emergencyMachineryDO.setMachineryNameId(emergencyMachinery.getMachineryNameId()); + emergencyMachineryDO.setMachineryCount(emergencyMachinery.getMachineryCount()); + emergencyMachineryDO.setCreator(userId); + emergencyMachineryDO.setCreatorName(userName); + emergencyMachineryDO.setUpdater(userId); + emergencyMachineryDO.setUpdaterName(userName); + list.add(emergencyMachineryDO); + }); + + if(CollUtil.isNotEmpty(list)){ + emergencyMachineryMapper.insertBatch(list); + } + + + // 返回 + return emergencyTask.getId(); + } + + @Override + public int approvalEmergencyTask(EmergencyTaskApprovalReqVO createReqVO) { + String userId = SecurityFrameworkUtils.getLoginUserId() + ""; + String userName = SecurityFrameworkUtils.getLoginUserNickname(); + UpdateWrapper sqlWrapper = new UpdateWrapper<>(); + sqlWrapper.lambda().set(EmergencyTaskDO::getApprovalRemarks, createReqVO.getApprovalRemarks()) + .set(EmergencyTaskDO::getApprovalUserId, userId) + .set(EmergencyTaskDO::getApprovalUserName, userName) + .set(EmergencyTaskDO::getBusiStatus, createReqVO.getBusiStatus()) + .set(EmergencyTaskDO::getUpdateTime, new Date()) + .eq(EmergencyTaskDO::getTaskNo, createReqVO.getTaskNo()); + return emergencyTaskMapper.update(sqlWrapper); + } + + @Override + public void updateEmergencyTask(EmergencyTaskSaveReqVO updateReqVO) { + // 校验存在 + //validateEmergencyTaskExists(updateReqVO.getId()); + // 更新 + EmergencyTaskDO updateObj = BeanUtils.toBean(updateReqVO, EmergencyTaskDO.class); + emergencyTaskMapper.updateById(updateObj); + } + + @Override + public void deleteEmergencyTask(Long id) { + // 校验存在 + validateEmergencyTaskExists(id); + // 删除 + emergencyTaskMapper.deleteById(id); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteEmergencyTaskByTaskNo(String taskNO) { + emergencyTaskMapper.deleteByTaskNo(taskNO); + emergencyMachineryMapper.deleteByTaskNo(taskNO); + } + + @Override + public void deleteEmergencyTaskListByIds(List ids) { + // 删除 + emergencyTaskMapper.deleteByIds(ids); + } + + + private void validateEmergencyTaskExists(Long id) { + if (emergencyTaskMapper.selectById(id) == null) { + throw exception(EMERGENCY_TASK_NOT_EXISTS); + } + } + + @Override + public EmergencyTaskDO getEmergencyTask(Long id) { + return emergencyTaskMapper.selectById(id); + } + + @Override + public EmergencyTaskRespVO getEmergencyTaskByTaskNo(String taskNo) { + EmergencyTaskRespVO emergencyTaskRespVO = new EmergencyTaskRespVO(); + EmergencyTaskDO emergencyTaskDO = emergencyTaskMapper.selectOne(EmergencyTaskDO::getTaskNo, taskNo); + if(null != emergencyTaskDO){ + BeanUtils.copyProperties(emergencyTaskDO, emergencyTaskRespVO); + } + List detailList = emergencyMachineryMapper.selectList(EmergencyMachineryDO::getTaskNo, emergencyTaskRespVO.getTaskNo()); + if(!CollectionUtil.isEmpty(detailList)){ + emergencyTaskRespVO.setEmergencyMachineryList(detailList); + } + return emergencyTaskRespVO; + } + + @Override + public PageResult getEmergencyTaskPage(EmergencyTaskPageReqVO pageReqVO) { + Long companyId = SecurityFrameworkUtils.getCompanyId(); + //超级管理员全返回 + if(companyId != null && !companyId.equals(100L)){ + pageReqVO.setCompanyId(companyId); + } + PageResult page = emergencyTaskMapper.selectPage(pageReqVO); + + List list = page.getList(); + List listTwo = BeanUtils.toBean(list, EmergencyTaskRespVO.class); + + listTwo.forEach(emergencyTaskRespVO -> { + List detailList = emergencyMachineryMapper.selectList(EmergencyMachineryDO::getTaskNo, emergencyTaskRespVO.getTaskNo()); + if(!CollectionUtil.isEmpty(detailList)){ + emergencyTaskRespVO.setEmergencyMachineryList(detailList); + } + }); + + // 转换返回 + return new PageResult<>(listTwo, page.getTotal()); + + } + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyMachineryMapper.xml b/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyMachineryMapper.xml new file mode 100644 index 0000000..1fec125 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyMachineryMapper.xml @@ -0,0 +1,15 @@ + + + + + + + DELETE FROM garden_emergency_machinery WHERE task_no = #{taskNo} + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyTaskMapper.xml b/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyTaskMapper.xml new file mode 100644 index 0000000..1b05fce --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/emergencytask/EmergencyTaskMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + DELETE FROM garden_emergency_task WHERE task_no = #{taskNo} + + + \ No newline at end of file -- libgit2 0.21.4