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 index 15f12d1..b10a3dd 100644 --- 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 @@ -1,6 +1,9 @@ package com.zteits.urbanops.module.garden.controller.admin.emergencytask; +import com.alibaba.fastjson.JSONObject; +import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; import jodd.util.StringUtil; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -13,6 +16,7 @@ import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; import java.io.IOException; +import java.util.stream.Collectors; import com.zteits.urbanops.framework.common.pojo.PageParam; import com.zteits.urbanops.framework.common.pojo.PageResult; @@ -89,7 +93,7 @@ public class EmergencyTaskController { @GetMapping("/page") @Operation(summary = "获得抢险任务主分页") - //@PreAuthorize("@ss.hasPermission('garden:emergency-task:query')") + // @PreAuthorize("@ss.hasPermission('garden:emergency-task:query')") public CommonResult> getEmergencyTaskPage(@Valid EmergencyTaskPageReqVO pageReqVO) { PageResult pageResult = emergencyTaskService.getEmergencyTaskPage(pageReqVO); return success(pageResult); @@ -97,14 +101,83 @@ public class EmergencyTaskController { @GetMapping("/export-excel") @Operation(summary = "导出抢险任务主 Excel") - //@PreAuthorize("@ss.hasPermission('garden:emergency-task:export')") + @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(); + List respList = new ArrayList<>(); + + //险情类型 1:树木倒伏 2:树木折枝 + List dictDataList = emergencyTaskService.getDictDataList("hazard_type"); + + //险情危害 1:砸车 2:砸房 3:砸人 4:无 + List hazardRiskList = emergencyTaskService.getDictDataList("hazard_risk"); + //树木权属 1:专业权属 2:街道权属 3:其他 + List treePermissionsList = emergencyTaskService.getDictDataList("tree_permissions"); + //机械类型 1:三轮车;2:货车;3:挖掘机 + List mechanicalTypeNameList = emergencyTaskService.getDictDataList("mechanical_type_name"); + + //案件状态 1-待提交 2-待审核 3-驳回 + List rescueStatusList = emergencyTaskService.getDictDataList("rescue_status"); + + + list.forEach(emergencyTask -> { + EmergencyTaskExcleRespVO emergencyTaskExcleRespVO = new EmergencyTaskExcleRespVO(); + emergencyTaskExcleRespVO.setTaskNo(emergencyTask.getTaskNo()); + emergencyTaskExcleRespVO.setDiscoveryTime(emergencyTask.getDiscoveryTime()); + emergencyTaskExcleRespVO.setEmergencyTypeName(getLabel(dictDataList, emergencyTask.getEmergencyTypeId())); + emergencyTaskExcleRespVO.setEmergencyHarmName(getLabel(hazardRiskList, emergencyTask.getEmergencyHarmId())); + emergencyTaskExcleRespVO.setTreeOwnershipName(getLabel(treePermissionsList, emergencyTask.getTreeOwnershipId())); + emergencyTaskExcleRespVO.setEmergencyLocation(emergencyTask.getEmergencyLocation()); + emergencyTaskExcleRespVO.setReporter(emergencyTask.getReporter()); + emergencyTaskExcleRespVO.setContactPhone(emergencyTask.getContactPhone()); + emergencyTaskExcleRespVO.setEmergencyImg(emergencyTask.getEmergencyImg()); + emergencyTaskExcleRespVO.setTreeSpecies(emergencyTask.getTreeSpecies()); + emergencyTaskExcleRespVO.setTreeSpec(emergencyTask.getTreeSpec()); + emergencyTaskExcleRespVO.setRescueStartTime(emergencyTask.getRescueStartTime()); + emergencyTaskExcleRespVO.setRescueCompleteTime(emergencyTask.getRescueCompleteTime()); + emergencyTaskExcleRespVO.setPersonnelCount(emergencyTask.getPersonnelCount()); + emergencyTaskExcleRespVO.setEmergencyEndImg(emergencyTask.getEmergencyEndImg()); + emergencyTaskExcleRespVO.setRemarks(emergencyTask.getRemarks()); + emergencyTaskExcleRespVO.setBusiStatus(getLabel(rescueStatusList, emergencyTask.getBusiStatus())); + emergencyTaskExcleRespVO.setCompanyName(emergencyTask.getCompanyName()); + emergencyTaskExcleRespVO.setDeptName(emergencyTask.getDeptName()); + emergencyTaskExcleRespVO.setApprovalUserName(emergencyTask.getApprovalUserName()); + emergencyTaskExcleRespVO.setApprovalRemarks(emergencyTask.getApprovalRemarks()); + emergencyTaskExcleRespVO.setCreatorName(emergencyTask.getCreatorName()); + emergencyTaskExcleRespVO.setCreateTime(emergencyTask.getCreateTime()); + List machineryList = new ArrayList<>(); + if(CollectionUtils.isEmpty(emergencyTask.getEmergencyMachineryList())){ + emergencyTaskExcleRespVO.setMachineryInfo(Collections.EMPTY_LIST); + }else{ + emergencyTask.getEmergencyMachineryList().forEach(emergencyMachinery -> { + String machineryName = getLabel(mechanicalTypeNameList, emergencyMachinery.getMachineryNameId()); + Integer machineryCount = emergencyMachinery.getMachineryCount(); + machineryList.add(machineryName + ":" + machineryCount); + }); + respList.add(emergencyTaskExcleRespVO); + emergencyTaskExcleRespVO.setMachineryInfo(machineryList); + } + }); + + // 导出 Excel - ExcelUtils.write(response, "抢险任务主.xls", "数据", EmergencyTaskRespVO.class, list); + ExcelUtils.write(response, "抢险任务主.xls", "数据", EmergencyTaskExcleRespVO.class, respList); + } + + private String getLabel(List dictDataList, Integer id){ + if(CollectionUtils.isEmpty(dictDataList)){ + return ""; + } + Map nameMap = dictDataList.stream() + .collect(Collectors.toMap( + DictDataRespDTO::getValue, // Key=id + DictDataRespDTO::getLabel // Value=name + )); + + return nameMap.get(String.valueOf( id)); } } 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 index 94be619..e1955c6 100644 --- 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 @@ -20,6 +20,7 @@ public class EmergencyTaskApprovalReqVO { 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/EmergencyTaskExcleRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskExcleRespVO.java new file mode 100644 index 0000000..edb7444 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/emergencytask/vo/EmergencyTaskExcleRespVO.java @@ -0,0 +1,119 @@ +package com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.zteits.urbanops.framework.excel.core.convert.ListToStringConverter; +import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 抢险任务主 Response VO") +@Data +@ExcelIgnoreUnannotated +public class EmergencyTaskExcleRespVO { + + @Schema(description = "任务编号(唯一标识,如生成规则:TASK+时间戳)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("任务编号") + private String taskNo; + + @Schema(description = "发现险情时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("发现险情时间") + private LocalDateTime discoveryTime; + + @Schema(description = "险情类型(如:树木倒伏)", requiredMode = Schema.RequiredMode.REQUIRED, example = "5209") + @ExcelProperty("险情类型") + private String emergencyTypeName; + + @Schema(description = "险情危害(如:无)", requiredMode = Schema.RequiredMode.REQUIRED, example = "16325") + @ExcelProperty("险情危害") + private String emergencyHarmName; + + @Schema(description = "树木权属(如:专业权属)", requiredMode = Schema.RequiredMode.REQUIRED, example = "19498") + @ExcelProperty("树木权属") + private String treeOwnershipName; + + @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(value="抢险中照片", converter = ListToStringConverter.class) + private List emergencyImg; + + @Schema(description = "树种(如:国槐)") + @ExcelProperty("树种") + private String treeSpecies; + + @Schema(description = "树木规格") + @ExcelProperty("树木规格") + 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(value="抢险结束照片", converter = ListToStringConverter.class) + private List emergencyEndImg; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remarks; + + @Schema(description = "案件状态 1-待提交 2-待审核 3-驳回 4-关闭;5-完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("案件状态") + private String busiStatus; + + @Schema(description = "审批人", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("审批人") + private String approvalUserName; + + @Schema(description = "审批备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "审批备注") + @ExcelProperty("审批备注") + private String approvalRemarks; + + + @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; + + @ExcelProperty(value="机械信息", converter = ListToStringConverter.class) + private List machineryInfo; + + @Schema(description = "归属(一级部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "20800") + @ExcelProperty("归属公司") + private String companyName; + + + @Schema(description = "部门(道路负责部门id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "12055") + @ExcelProperty("果蔬部门") + private String deptName; + +} \ 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 index 9d1d854..4db38ec 100644 --- 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 @@ -32,6 +32,7 @@ public class EmergencyTaskSaveReqVO { @Schema(description = "险情地点", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "险情地点不能为空") + @Size(max = 100, message = "险情地点长度不能超过 100 个字符") private String emergencyLocation; @Schema(description = "上报人", requiredMode = Schema.RequiredMode.REQUIRED) @@ -53,9 +54,11 @@ public class EmergencyTaskSaveReqVO { private List emergencyImg; @Schema(description = "树种(如:国槐)") + @Size(max = 100, message = "险情地点长度不能超过 255 个字符") private String treeSpecies; @Schema(description = "树木规格(如:胸径20厘米)") + @Size(max = 100, message = "树木规格100个字符") private String treeSpec; @Schema(description = "抢险完成时间", requiredMode = Schema.RequiredMode.REQUIRED) 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 index e601106..0f0a41b 100644 --- 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 @@ -1,6 +1,8 @@ package com.zteits.urbanops.module.garden.service.emergencytask; import java.util.*; + +import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; import jakarta.validation.*; import com.zteits.urbanops.module.garden.controller.admin.emergencytask.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyTaskDO; @@ -81,4 +83,6 @@ public interface EmergencyTaskService { */ PageResult getEmergencyTaskPage(EmergencyTaskPageReqVO pageReqVO); + List getDictDataList(String dictType); + } \ 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 index 3b10615..0350e49 100644 --- 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 @@ -7,12 +7,14 @@ 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.common.biz.system.dict.dto.DictDataRespDTO; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; import com.zteits.urbanops.module.garden.controller.admin.road.vo.RoadRespVO; import com.zteits.urbanops.module.garden.dal.dataobject.emergencytask.EmergencyMachineryDO; import com.zteits.urbanops.module.garden.dal.mysql.emergencytask.EmergencyMachineryMapper; import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; +import com.zteits.urbanops.module.system.api.dict.DictDataApi; import jodd.util.StringUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -55,6 +57,9 @@ public class EmergencyTaskServiceImpl implements EmergencyTaskService { @Resource protected DeptApi deptApi; + @Resource + private DictDataApi dictDataApi; + @Transactional(rollbackFor = Exception.class) @Override public Long createEmergencyTask(EmergencyTaskSaveReqVO createReqVO) { @@ -214,6 +219,8 @@ public class EmergencyTaskServiceImpl implements EmergencyTaskService { } + + /** * 回填部门/公司/角色 * @param list 分页对象 @@ -243,5 +250,10 @@ public class EmergencyTaskServiceImpl implements EmergencyTaskService { }); } + @Override + public List getDictDataList(String dataType){ + return dictDataApi.getDictDataList(dataType); + } + } \ No newline at end of file