diff --git a/pom.xml b/pom.xml index 4cb1c6e..2c64f7c 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ urbanops-module-infra urbanops-module-gloabl urbanops-module-garden + urbanops-module-workorder urbanops-module-bpm diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/OldtreesController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/OldtreesController.java new file mode 100644 index 0000000..636f97a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/OldtreesController.java @@ -0,0 +1,137 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtrees; + +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import org.apache.catalina.security.SecurityUtil; +import org.springframework.beans.factory.annotation.Autowired; +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.time.LocalDateTime; +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.oldtrees.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtrees.OldtreesDO; +import com.zteits.urbanops.module.garden.service.oldtrees.OldtreesService; + +@Tag(name = "管理后台 - 古树名木") +@RestController +@RequestMapping({"/garden/oldtrees","/treerecord/oldtrees"}) +@Validated +public class OldtreesController { + + @Resource + private OldtreesService oldtreesService; + @Autowired + private DictFrameworkUtils dictUtils; + + @PostMapping({"/create",""}) + @Operation(summary = "创建古树名木") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:create')") + public CommonResult createOldtrees(@Valid @RequestBody OldtreesSaveReqVO createReqVO) { + return success(oldtreesService.createOldtrees(createReqVO)); + } + + @PutMapping({"/update", ""}) + @Operation(summary = "修改古树台账") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:update')") + public CommonResult updateOldtrees(@Valid @RequestBody OldtreesSaveReqVO updateReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + updateReqVO.setUpdateby(String.valueOf(userId)); + oldtreesService.updateOldtrees(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除古树名木") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:oldtrees:delete')") + public CommonResult deleteOldtrees(@RequestParam("id") String id) { + oldtreesService.deleteOldtrees(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除古树名木") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:delete')") + public CommonResult deleteOldtreesList(@RequestParam("ids") List ids) { + oldtreesService.deleteOldtreesListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获取古树台账详细信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:query')") + public CommonResult getOldtrees(@RequestParam("id") String id) { + OldtreesDO oldtrees = oldtreesService.getOldtrees(id); + return success(BeanUtils.toBean(oldtrees, OldtreesRespVO.class)); + } + + @GetMapping({"/page","/list"}) + @Operation(summary = "获得古树台账分页") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:query')") + public CommonResult> getOldtreesPage(@Valid OldtreesPageReqVO pageReqVO) { + PageResult pageResult = oldtreesService.getOldtreesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OldtreesRespVO.class)); + } + + @GetMapping({"/export-excel","export"}) + @Operation(summary = "导出古树台账 Excel") + @PreAuthorize("@ss.hasPermission('garden:oldtrees:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportOldtreesExcel(@Valid OldtreesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = oldtreesService.getOldtreesPage(pageReqVO).getList(); + + fillDictData(list); + + // 导出 Excel + ExcelUtils.write(response, "古树台账.xls", "数据", OldtreesRespVO.class, + BeanUtils.toBean(list, OldtreesRespVO.class)); + } + + private void fillDictData(List list) { + for (OldtreesDO gardenTree : list) { + String maintainUnit = DictFrameworkUtils.parseDictDataValue("maintain_unit", gardenTree.getMaintainunit()); + gardenTree.setMaintainunit(maintainUnit); + + String street = DictFrameworkUtils.parseDictDataValue("street_belong", gardenTree.getStreet()); + gardenTree.setStreet(street); + + String ownership = DictFrameworkUtils.parseDictDataValue("tree_ownership", gardenTree.getOldtreeownership()); + gardenTree.setOldtreeownership(ownership); + + String growthVigor = DictFrameworkUtils.parseDictDataValue("growth_vigor", gardenTree.getGrowthvigor()); + gardenTree.setGrowthvigor(growthVigor); + String treeLevel = DictFrameworkUtils.parseDictDataValue("tree_level", gardenTree.getTreelevel()); + gardenTree.setTreelevel(treeLevel); + String dataState = DictFrameworkUtils.parseDictDataValue("data_state", gardenTree.getDatastate()); + gardenTree.setDatastate(dataState); + } + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesPageReqVO.java new file mode 100644 index 0000000..1a51be1 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesPageReqVO.java @@ -0,0 +1,141 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtrees.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 OldtreesPageReqVO extends PageParam { + + @Schema(description = "编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + private String treetype; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "李四") + private String latinname; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + private String annual; + + @Schema(description = "养护记录备注", example = "随便") + private String curingremark; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "责任人姓名", example = "赵六") + private String responsibleusername; + + @Schema(description = "责任人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] updatetime; + + @Schema(description = "部门id", example = "20245") + private Long deptId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesRespVO.java new file mode 100644 index 0000000..6279bdc --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesRespVO.java @@ -0,0 +1,183 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtrees.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 OldtreesRespVO { + + @Schema(description = "id", example = "4258") + @ExcelProperty("id") + private String id; + + @Schema(description = "编号") + @ExcelProperty("编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + @ExcelProperty("级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + @ExcelProperty("树种") + private String treetype; + + @Schema(description = "所在地") + @ExcelProperty("所在地") + private String location; + + @Schema(description = "养护单位") + @ExcelProperty("养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + @ExcelProperty("权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + @ExcelProperty("生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "李四") + @ExcelProperty("拉丁名") + private String latinname; + + @Schema(description = "树高") + @ExcelProperty("树高") + private String treeheight; + + @Schema(description = "估测树龄") + @ExcelProperty("估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + @ExcelProperty("胸径") + private String dbh; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String longitude; + + @Schema(description = "纬度") + @ExcelProperty("纬度") + private String latitude; + + @Schema(description = "冠幅东西") + @ExcelProperty("冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + @ExcelProperty("冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + @ExcelProperty("管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + @ExcelProperty("干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + @ExcelProperty("生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + @ExcelProperty("生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + @ExcelProperty("古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + @ExcelProperty("春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + @ExcelProperty("夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + @ExcelProperty("秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + @ExcelProperty("冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + @ExcelProperty("年度") + private String annual; + + @Schema(description = "养护记录备注", example = "随便") + @ExcelProperty("养护记录备注") + private String curingremark; + + @Schema(description = "古树照片二") + @ExcelProperty("古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + @ExcelProperty("古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + @ExcelProperty("古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + @ExcelProperty("数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + @ExcelProperty("养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + @ExcelProperty("状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + @ExcelProperty("平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + @ExcelProperty("所属街道") + private String street; + + @Schema(description = "责任人姓名", example = "赵六") + @ExcelProperty("责任人姓名") + private String responsibleusername; + + @Schema(description = "责任人电话") + @ExcelProperty("责任人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String createby; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updateby; + + @Schema(description = "更新时间") + @ExcelProperty("更新时间") + private String updatetime; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20245") + @ExcelProperty("部门id") + private Long deptId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesSaveReqVO.java new file mode 100644 index 0000000..6b04240 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtrees/vo/OldtreesSaveReqVO.java @@ -0,0 +1,145 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtrees.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 OldtreesSaveReqVO { + + @Schema(description = "id", example = "4258") + private String id; + + @Schema(description = "编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + private String treetype; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "李四") + private String latinname; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + private String annual; + + @Schema(description = "养护记录备注", example = "随便") + private String curingremark; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "责任人姓名", example = "赵六") + private String responsibleusername; + + @Schema(description = "责任人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间") + private LocalDateTime updatetime; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20245") + @NotNull(message = "部门id不能为空") + private Long deptId; + + private List treeImgList; + + private List nameplatephotoList; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/OldtreesChangeLogController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/OldtreesChangeLogController.java new file mode 100644 index 0000000..baff719 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/OldtreesChangeLogController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog; + +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.oldtreeschangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtreeschangelog.OldtreesChangeLogDO; +import com.zteits.urbanops.module.garden.service.oldtreeschangelog.OldtreesChangeLogService; + +@Tag(name = "管理后台 - 古树名木修改记录") +@RestController +@RequestMapping({"/garden/oldtrees-change-log","/treerecord/logs"}) +@Validated +public class OldtreesChangeLogController { + + @Resource + private OldtreesChangeLogService oldtreesChangeLogService; + + @PostMapping("/create") + @Operation(summary = "创建古树名木修改记录") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:create')") + public CommonResult createOldtreesChangeLog(@Valid @RequestBody OldtreesChangeLogSaveReqVO createReqVO) { + return success(oldtreesChangeLogService.createOldtreesChangeLog(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新古树名木修改记录") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:update')") + public CommonResult updateOldtreesChangeLog(@Valid @RequestBody OldtreesChangeLogSaveReqVO updateReqVO) { + oldtreesChangeLogService.updateOldtreesChangeLog(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除古树名木修改记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:delete')") + public CommonResult deleteOldtreesChangeLog(@RequestParam("id") String id) { + oldtreesChangeLogService.deleteOldtreesChangeLog(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除古树名木修改记录") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:delete')") + public CommonResult deleteOldtreesChangeLogList(@RequestParam("ids") List ids) { + oldtreesChangeLogService.deleteOldtreesChangeLogListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得古树名木修改记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:query')") + public CommonResult getOldtreesChangeLog(@RequestParam("id") String id) { + OldtreesChangeLogDO oldtreesChangeLog = oldtreesChangeLogService.getOldtreesChangeLog(id); + return success(BeanUtils.toBean(oldtreesChangeLog, OldtreesChangeLogRespVO.class)); + } + + @GetMapping({"/page","/list"}) + @Operation(summary = "查询古树名木修改记录列表") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:query')") + public CommonResult> getOldtreesChangeLogPage(@Valid OldtreesChangeLogPageReqVO pageReqVO) { + PageResult pageResult = oldtreesChangeLogService.getOldtreesChangeLogPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OldtreesChangeLogRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出古树名木修改记录 Excel") + @PreAuthorize("@ss.hasPermission('garden:oldtrees-change-log:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportOldtreesChangeLogExcel(@Valid OldtreesChangeLogPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = oldtreesChangeLogService.getOldtreesChangeLogPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "古树名木修改记录.xls", "数据", OldtreesChangeLogRespVO.class, + BeanUtils.toBean(list, OldtreesChangeLogRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogPageReqVO.java new file mode 100644 index 0000000..da76e70 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogPageReqVO.java @@ -0,0 +1,141 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog.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 OldtreesChangeLogPageReqVO extends PageParam { + + @Schema(description = "garden_oldtrees 的主键", example = "32596") + private String oldtreeid; + + @Schema(description = "编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + private String treetype; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "张三") + private String latinname; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + private String annual; + + @Schema(description = "养护记录备注", example = "你说的对") + private String curingremark; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "负责人姓名", example = "芋艿") + private String responsibleusername; + + @Schema(description = "负责人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] updatetime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogRespVO.java new file mode 100644 index 0000000..b5264f1 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogRespVO.java @@ -0,0 +1,183 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog.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 OldtreesChangeLogRespVO { + + @Schema(description = "id", example = "148") + @ExcelProperty("id") + private String id; + + @Schema(description = "garden_oldtrees 的主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "32596") + @ExcelProperty("garden_oldtrees 的主键") + private String oldtreeid; + + @Schema(description = "编号") + @ExcelProperty("编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + @ExcelProperty("级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + @ExcelProperty("树种") + private String treetype; + + @Schema(description = "所在地") + @ExcelProperty("所在地") + private String location; + + @Schema(description = "养护单位") + @ExcelProperty("养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + @ExcelProperty("权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + @ExcelProperty("生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "张三") + @ExcelProperty("拉丁名") + private String latinname; + + @Schema(description = "树高") + @ExcelProperty("树高") + private String treeheight; + + @Schema(description = "估测树龄") + @ExcelProperty("估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + @ExcelProperty("胸径") + private String dbh; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String longitude; + + @Schema(description = "纬度") + @ExcelProperty("纬度") + private String latitude; + + @Schema(description = "冠幅东西") + @ExcelProperty("冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + @ExcelProperty("冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + @ExcelProperty("管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + @ExcelProperty("干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + @ExcelProperty("生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + @ExcelProperty("生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + @ExcelProperty("古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + @ExcelProperty("春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + @ExcelProperty("夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + @ExcelProperty("秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + @ExcelProperty("冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + @ExcelProperty("年度") + private String annual; + + @Schema(description = "养护记录备注", example = "你说的对") + @ExcelProperty("养护记录备注") + private String curingremark; + + @Schema(description = "古树照片二") + @ExcelProperty("古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + @ExcelProperty("古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + @ExcelProperty("古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + @ExcelProperty("数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + @ExcelProperty("养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + @ExcelProperty("状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + @ExcelProperty("平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + @ExcelProperty("所属街道") + private String street; + + @Schema(description = "负责人姓名", example = "芋艿") + @ExcelProperty("负责人姓名") + private String responsibleusername; + + @Schema(description = "负责人电话") + @ExcelProperty("负责人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String createby; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updateby; + + @Schema(description = "更新时间") + @ExcelProperty("更新时间") + private String updatetime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogSaveReqVO.java new file mode 100644 index 0000000..98697c9 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/oldtreeschangelog/vo/OldtreesChangeLogSaveReqVO.java @@ -0,0 +1,141 @@ +package com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog.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 OldtreesChangeLogSaveReqVO { + + @Schema(description = "id", example = "148") + private String id; + + @Schema(description = "garden_oldtrees 的主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "32596") + @NotEmpty(message = "garden_oldtrees 的主键不能为空") + private String oldtreeid; + + @Schema(description = "编号") + private String famoustreenumber; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "树种", example = "2") + private String treetype; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "拉丁名", example = "张三") + private String latinname; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "管护责任单位") + private String managedutyunit; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "古树照片一") + private String treephotoone; + + @Schema(description = "春季养护管理措施") + private String springmaintenance; + + @Schema(description = "夏季养护管理措施") + private String summermaintenance; + + @Schema(description = "秋季养护管理措施") + private String autumnmaintenance; + + @Schema(description = "冬季养护管理措施") + private String wintermaintenance; + + @Schema(description = "年度") + private String annual; + + @Schema(description = "养护记录备注", example = "你说的对") + private String curingremark; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树铭牌照片") + private String nameplatephoto; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "养护员工--作业队下派古树时选择的派发员工") + private String curingstaff; + + @Schema(description = "状态(驳回/确认)") + private String state; + + @Schema(description = "平台驳回状态(平台驳回)") + private String platformstate; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "负责人姓名", example = "芋艿") + private String responsibleusername; + + @Schema(description = "负责人电话") + private String responsibleuserphone; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间") + private String updatetime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java new file mode 100644 index 0000000..eeaa75a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/TreeController.java @@ -0,0 +1,163 @@ +package com.zteits.urbanops.module.garden.controller.admin.tree; + +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.framework.security.core.LoginUser; +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +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.time.LocalDateTime; +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.tree.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.tree.TreeDO; +import com.zteits.urbanops.module.garden.service.tree.TreeService; + +@Tag(name = "管理后台 - 一树一档案") +@RestController +@RequestMapping({"/garden/tree","/business/tree"}) +@Validated +public class TreeController { + + @Resource + private TreeService treeService; + + @PostMapping({"/create",""}) + @Operation(summary = "创建一树一档案") + @PreAuthorize("@ss.hasPermission('garden:tree:create')") + public CommonResult createTree(@Valid @RequestBody TreeSaveReqVO createReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId(); + createReqVO.setCreateby(String.valueOf(userId)); + createReqVO.setCreatetime(LocalDateTime.now()); + createReqVO.setUpdateby(String.valueOf(userId)); + createReqVO.setUpdatetime(LocalDateTime.now()); + createReqVO.setDeptId(loginUserDeptId); + return success(treeService.createTree(createReqVO)); + } + + @PutMapping({"/update",""}) + @Operation(summary = "更新一树一档案") + @PreAuthorize("@ss.hasPermission('garden:tree:update')") + public CommonResult updateTree(@Valid @RequestBody TreeSaveReqVO updateReqVO) { + updateReqVO.setUpdateby(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + updateReqVO.setUpdatetime(LocalDateTime.now()); + treeService.updateTree(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除一树一档案") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:tree:delete')") + public CommonResult deleteTree(@RequestParam("id") Long id) { + treeService.deleteTree(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除一树一档案") + @PreAuthorize("@ss.hasPermission('garden:tree:delete')") + public CommonResult deleteTreeList(@RequestParam("ids") List ids) { + treeService.deleteTreeListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得一树一档案") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:tree:query')") + public CommonResult getTree(@RequestParam("id") Long id) { + TreeDO tree = treeService.getTree(id); + return success(BeanUtils.toBean(tree, TreeRespVO.class)); + } + + @GetMapping({"/page","/list"}) + @Operation(summary = "获得一树一档案分页") + @PreAuthorize("@ss.hasPermission('garden:tree:query')") + public CommonResult> getTreePage(@Valid TreePageReqVO pageReqVO) { + PageResult pageResult = treeService.getTreePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TreeRespVO.class)); + } + + @GetMapping({"/export-excel","export"}) + @Operation(summary = "导出一树一档案 Excel") + @PreAuthorize("@ss.hasPermission('garden:tree:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTreeExcel(@Valid TreePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = treeService.getTreePage(pageReqVO).getList(); + fillDictData(list); + // 导出 Excel + ExcelUtils.write(response, "一树一档案.xls", "数据", TreeRespVO.class, + BeanUtils.toBean(list, TreeRespVO.class)); + } + + @GetMapping("/dept/list") + @PreAuthorize("@ss.hasPermission('garden:tree:list')") + public CommonResult> list(@RequestParam Long companyId,@RequestParam(required = false) String roadName) { + LoginUser user = SecurityFrameworkUtils.getLoginUser(); + if (null == user) { + return null; + } + TreeVO tree = new TreeVO(); + tree.setBelongCompanyId(companyId); + tree.setRoadName(roadName); + tree.setDeptId(null); + return success(treeService.getCompanyDeptRoadTreeData(tree)); + } + + @GetMapping("/road/list") + @PreAuthorize("@ss.hasPermission('garden:tree:list')") + public CommonResult> listTreesByRoad(@RequestParam(required = false) Long road) { + TreePageReqVO pageReqVO = new TreePageReqVO(); + pageReqVO.setRoad(road); + PageResult pageResult = treeService.getTreesByRoadId(pageReqVO); + return success(pageResult); + } + + + private void fillDictData(List list) { + for (TreeDO gardenTree : list) { + String maintainUnit = DictFrameworkUtils.parseDictDataValue("maintain_unit", gardenTree.getMaintainunit()); + gardenTree.setMaintainunit(maintainUnit); + + String street = DictFrameworkUtils.parseDictDataValue("street_belong", gardenTree.getStreet()); + gardenTree.setStreet(street); + + String ownership = DictFrameworkUtils.parseDictDataValue("tree_ownership", gardenTree.getOldtreeownership()); + gardenTree.setOldtreeownership(ownership); + + String growthVigor = DictFrameworkUtils.parseDictDataValue("growth_vigor", gardenTree.getGrowthvigor()); + gardenTree.setGrowthvigor(growthVigor); + String treeLevel = DictFrameworkUtils.parseDictDataValue("tree_level", gardenTree.getTreelevel()); + gardenTree.setTreelevel(treeLevel); + String dataState = DictFrameworkUtils.parseDictDataValue("data_state", gardenTree.getDatastate()); + gardenTree.setDatastate(dataState); + } + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/vo/CompanyDeptRoadVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/CompanyDeptRoadVO.java index 913d51b..0417e5d 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/vo/CompanyDeptRoadVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/CompanyDeptRoadVO.java @@ -1,13 +1,20 @@ -package com.zteits.urbanops.module.garden.controller.admin.treerecord.vo; +package com.zteits.urbanops.module.garden.controller.admin.tree.vo; import lombok.Data; import java.util.List; +/** + * Description:

+ *

+ * Author: gelinghu + * Date: 2025年8月23 16:07 + */ @Data public class CompanyDeptRoadVO { - private String companyId; + private Long companyId; private String companyName; + private List depts; @Data @@ -21,9 +28,11 @@ public class CompanyDeptRoadVO { public static class RoadVO { private Long roadId; private String roadName; - private Long treeCount; - private Long recordedCount; - private String startRemark; - private String endRemark; + private Integer treeCount; // 总树木数 + private Integer recordedCount; // 已录入行道树数 + private String startRemark; // 起点 + private String endRemark; // 终点 } -} \ No newline at end of file +} + + diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/RoadTreeVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/RoadTreeVO.java new file mode 100644 index 0000000..176e736 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/RoadTreeVO.java @@ -0,0 +1,24 @@ +package com.zteits.urbanops.module.garden.controller.admin.tree.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * Description:

+ *

+ * Author: gelinghu + * Date: 2025年8月23 16:07 + */ +@Data +public class RoadTreeVO { + private Long id; + private String treetype; // 树种 + private String treeheight; // 高度 + private String dbh; // 胸径 + private String treenumber; // 编号 + private Date updatetime; // 最后修改时间 + private String treephoto; // 图片 +} + + diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treerecord/GardenTreeDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreePageReqVO.java index 96ead8a..c10ec81 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treerecord/GardenTreeDO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreePageReqVO.java @@ -1,49 +1,120 @@ -package com.zteits.urbanops.module.garden.dal.dataobject.treerecord; +package com.zteits.urbanops.module.garden.controller.admin.tree.vo; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; -import lombok.Data; -import lombok.experimental.Accessors; +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; -@TableName("garden_tree") -@KeySequence("garden_tree_seq") +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 一树一档案分页 Request VO") @Data -@Accessors(chain = false) -public class GardenTreeDO extends BaseDO { - @TableId - private Long id; +public class TreePageReqVO extends PageParam { + + @Schema(description = "编号") private String treenumber; + + @Schema(description = "拉丁名", example = "李四") private String latinname; + + @Schema(description = "树种", example = "2") private String treetype; + + @Schema(description = "树高") private String treeheight; + + @Schema(description = "冠幅") private String canopy; + + @Schema(description = "胸径") private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") private String treelevel; + + @Schema(description = "经度") private String longitude; + + @Schema(description = "纬度") private String latitude; + + @Schema(description = "所在地") private String location; + + @Schema(description = "养护单位") private String maintainunit; + + @Schema(description = "管护单位") private String managedutyunit; + + @Schema(description = "道路id") private Long road; + + @Schema(description = "所属街道") private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") private String datastate; + + @Schema(description = "估测树龄") private String estimationtreeage; + + @Schema(description = "冠幅东西") private String canopyeastwest; + + @Schema(description = "冠幅南北") private String canopysouthnorth; + + @Schema(description = "干周") private String weekday; + + @Schema(description = "生长地点") private String growlocation; + + @Schema(description = "生长环境") private String growthenvironment; + + @Schema(description = "树木照片一") private String treephotoone; + + @Schema(description = "古树照片二") private String treephototwo; + + @Schema(description = "古树照片三") private String treephotothree; + + @Schema(description = "古树照片四") private String treephotofour; + + @Schema(description = "古树照片五") private String treephotofive; + + @Schema(description = "创建者") private String createby; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createtime; + + @Schema(description = "更新者") private String updateby; - private Long deptId; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updatetime; + + @Schema(description = "备注", example = "你说的对") private String remark; + + @Schema(description = "部门id", example = "17101") + private Long deptId; + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeRespVO.java new file mode 100644 index 0000000..3df77ec --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeRespVO.java @@ -0,0 +1,155 @@ +package com.zteits.urbanops.module.garden.controller.admin.tree.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 TreeRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28236") + @ExcelProperty("id") + private Long id; + + @Schema(description = "编号") + @ExcelProperty("编号") + private String treenumber; + + @Schema(description = "拉丁名", example = "李四") + @ExcelProperty("拉丁名") + private String latinname; + + @Schema(description = "树种", example = "2") + @ExcelProperty("树种") + private String treetype; + + @Schema(description = "树高") + @ExcelProperty("树高") + private String treeheight; + + @Schema(description = "冠幅") + @ExcelProperty("冠幅") + private String canopy; + + @Schema(description = "胸径") + @ExcelProperty("胸径") + private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + @ExcelProperty("生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") + @ExcelProperty("级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String longitude; + + @Schema(description = "纬度") + @ExcelProperty("纬度") + private String latitude; + + @Schema(description = "所在地") + @ExcelProperty("所在地") + private String location; + + @Schema(description = "养护单位") + @ExcelProperty("养护单位") + private String maintainunit; + + @Schema(description = "管护单位") + @ExcelProperty("管护单位") + private String managedutyunit; + + @Schema(description = "道路id") + @ExcelProperty("道路id") + private Long road; + + @Schema(description = "所属街道") + @ExcelProperty("所属街道") + private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + @ExcelProperty("权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") + @ExcelProperty("数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "估测树龄") + @ExcelProperty("估测树龄") + private String estimationtreeage; + + @Schema(description = "冠幅东西") + @ExcelProperty("冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + @ExcelProperty("冠幅南北") + private String canopysouthnorth; + + @Schema(description = "干周") + @ExcelProperty("干周") + private String weekday; + + @Schema(description = "生长地点") + @ExcelProperty("生长地点") + private String growlocation; + + @Schema(description = "生长环境") + @ExcelProperty("生长环境") + private String growthenvironment; + + @Schema(description = "树木照片一") + @ExcelProperty("树木照片一") + private String treephotoone; + + @Schema(description = "古树照片二") + @ExcelProperty("古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + @ExcelProperty("古树照片三") + private String treephotothree; + + @Schema(description = "古树照片四") + @ExcelProperty("古树照片四") + private String treephotofour; + + @Schema(description = "古树照片五") + @ExcelProperty("古树照片五") + private String treephotofive; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String createby; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updateby; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updatetime; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17101") + @ExcelProperty("部门id") + private Long deptId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeSaveReqVO.java new file mode 100644 index 0000000..dc8c351 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeSaveReqVO.java @@ -0,0 +1,125 @@ +package com.zteits.urbanops.module.garden.controller.admin.tree.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 TreeSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28236") + private Long id; + + @Schema(description = "编号") + private String treenumber; + + @Schema(description = "拉丁名", example = "李四") + private String latinname; + + @Schema(description = "树种", example = "2") + private String treetype; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "冠幅") + private String canopy; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "管护单位") + private String managedutyunit; + + @Schema(description = "道路id") + private Long road; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "树木照片一") + private String treephotoone; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树照片四") + private String treephotofour; + + @Schema(description = "古树照片五") + private String treephotofive; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + private LocalDateTime createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "更新时间不能为空") + private LocalDateTime updatetime; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17101") + @NotNull(message = "部门id不能为空") + private Long deptId; + + private List treeImgList; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeVO.java new file mode 100644 index 0000000..8341f82 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/tree/vo/TreeVO.java @@ -0,0 +1,24 @@ +package com.zteits.urbanops.module.garden.controller.admin.tree.vo; + +import lombok.Data; + +/** + * Description:

+ *

+ * Author: gelinghu + * Date: 2025年8月23 16:07 + */ +@Data +public class TreeVO { + + /** 部门ID */ + private Long deptId; + + /** 归属单位ID */ + private Long belongCompanyId; + + private String roadName; + +} + + diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/TreeChangeLogController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/TreeChangeLogController.java new file mode 100644 index 0000000..12f7f9a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/TreeChangeLogController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.garden.controller.admin.treechangelog; + +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.treechangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.treechangelog.TreeChangeLogDO; +import com.zteits.urbanops.module.garden.service.treechangelog.TreeChangeLogService; + +@Tag(name = "管理后台 - 一树一档案修改记录") +@RestController +@RequestMapping({"/garden/tree-change-log","/gardentree/logs"}) +@Validated +public class TreeChangeLogController { + + @Resource + private TreeChangeLogService treeChangeLogService; + + @PostMapping("/create") + @Operation(summary = "创建一树一档案修改记录") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:create')") + public CommonResult createTreeChangeLog(@Valid @RequestBody TreeChangeLogSaveReqVO createReqVO) { + return success(treeChangeLogService.createTreeChangeLog(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新一树一档案修改记录") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:update')") + public CommonResult updateTreeChangeLog(@Valid @RequestBody TreeChangeLogSaveReqVO updateReqVO) { + treeChangeLogService.updateTreeChangeLog(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除一树一档案修改记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:delete')") + public CommonResult deleteTreeChangeLog(@RequestParam("id") Long id) { + treeChangeLogService.deleteTreeChangeLog(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除一树一档案修改记录") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:delete')") + public CommonResult deleteTreeChangeLogList(@RequestParam("ids") List ids) { + treeChangeLogService.deleteTreeChangeLogListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得一树一档案修改记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:query')") + public CommonResult getTreeChangeLog(@RequestParam("id") Long id) { + TreeChangeLogDO treeChangeLog = treeChangeLogService.getTreeChangeLog(id); + return success(BeanUtils.toBean(treeChangeLog, TreeChangeLogRespVO.class)); + } + + @GetMapping({"/page","/list"}) + @Operation(summary = "查询一树一档案修改记录列表") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:query')") + public CommonResult> getTreeChangeLogPage(@Valid TreeChangeLogPageReqVO pageReqVO) { + PageResult pageResult = treeChangeLogService.getTreeChangeLogPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TreeChangeLogRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出一树一档案修改记录 Excel") + @PreAuthorize("@ss.hasPermission('garden:tree-change-log:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTreeChangeLogExcel(@Valid TreeChangeLogPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = treeChangeLogService.getTreeChangeLogPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "一树一档案修改记录.xls", "数据", TreeChangeLogRespVO.class, + BeanUtils.toBean(list, TreeChangeLogRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogPageReqVO.java new file mode 100644 index 0000000..ac61a04 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogPageReqVO.java @@ -0,0 +1,120 @@ +package com.zteits.urbanops.module.garden.controller.admin.treechangelog.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 TreeChangeLogPageReqVO extends PageParam { + + @Schema(description = "garden_tree 的主键", example = "26527") + private Long treeid; + + @Schema(description = "编号") + private String treenumber; + + @Schema(description = "拉丁名", example = "赵六") + private String latinname; + + @Schema(description = "树种", example = "1") + private String treetype; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "冠幅") + private String canopy; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "管护单位") + private String managedutyunit; + + @Schema(description = "道路id") + private Long road; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "树木照片一") + private String treephotoone; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树照片四") + private String treephotofour; + + @Schema(description = "古树照片五") + private String treephotofive; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updatetime; + + @Schema(description = "备注", example = "你猜") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogRespVO.java new file mode 100644 index 0000000..d23eb0a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogRespVO.java @@ -0,0 +1,155 @@ +package com.zteits.urbanops.module.garden.controller.admin.treechangelog.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 TreeChangeLogRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3528") + @ExcelProperty("id") + private Long id; + + @Schema(description = "garden_tree 的主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26527") + @ExcelProperty("garden_tree 的主键") + private Long treeid; + + @Schema(description = "编号") + @ExcelProperty("编号") + private String treenumber; + + @Schema(description = "拉丁名", example = "赵六") + @ExcelProperty("拉丁名") + private String latinname; + + @Schema(description = "树种", example = "1") + @ExcelProperty("树种") + private String treetype; + + @Schema(description = "树高") + @ExcelProperty("树高") + private String treeheight; + + @Schema(description = "冠幅") + @ExcelProperty("冠幅") + private String canopy; + + @Schema(description = "胸径") + @ExcelProperty("胸径") + private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + @ExcelProperty("生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") + @ExcelProperty("级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String longitude; + + @Schema(description = "纬度") + @ExcelProperty("纬度") + private String latitude; + + @Schema(description = "所在地") + @ExcelProperty("所在地") + private String location; + + @Schema(description = "养护单位") + @ExcelProperty("养护单位") + private String maintainunit; + + @Schema(description = "管护单位") + @ExcelProperty("管护单位") + private String managedutyunit; + + @Schema(description = "道路id") + @ExcelProperty("道路id") + private Long road; + + @Schema(description = "所属街道") + @ExcelProperty("所属街道") + private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + @ExcelProperty("权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") + @ExcelProperty("数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "估测树龄") + @ExcelProperty("估测树龄") + private String estimationtreeage; + + @Schema(description = "冠幅东西") + @ExcelProperty("冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + @ExcelProperty("冠幅南北") + private String canopysouthnorth; + + @Schema(description = "干周") + @ExcelProperty("干周") + private String weekday; + + @Schema(description = "生长地点") + @ExcelProperty("生长地点") + private String growlocation; + + @Schema(description = "生长环境") + @ExcelProperty("生长环境") + private String growthenvironment; + + @Schema(description = "树木照片一") + @ExcelProperty("树木照片一") + private String treephotoone; + + @Schema(description = "古树照片二") + @ExcelProperty("古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + @ExcelProperty("古树照片三") + private String treephotothree; + + @Schema(description = "古树照片四") + @ExcelProperty("古树照片四") + private String treephotofour; + + @Schema(description = "古树照片五") + @ExcelProperty("古树照片五") + private String treephotofive; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String createby; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createtime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updateby; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updatetime; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogSaveReqVO.java new file mode 100644 index 0000000..5f659ef --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treechangelog/vo/TreeChangeLogSaveReqVO.java @@ -0,0 +1,122 @@ +package com.zteits.urbanops.module.garden.controller.admin.treechangelog.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 TreeChangeLogSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3528") + private Long id; + + @Schema(description = "garden_tree 的主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26527") + @NotNull(message = "garden_tree 的主键不能为空") + private Long treeid; + + @Schema(description = "编号") + private String treenumber; + + @Schema(description = "拉丁名", example = "赵六") + private String latinname; + + @Schema(description = "树种", example = "1") + private String treetype; + + @Schema(description = "树高") + private String treeheight; + + @Schema(description = "冠幅") + private String canopy; + + @Schema(description = "胸径") + private String dbh; + + @Schema(description = "生长势--数据字典:正常,衰弱,濒危,死亡") + private String growthvigor; + + @Schema(description = "级别--数据字典:一级、两级") + private String treelevel; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "所在地") + private String location; + + @Schema(description = "养护单位") + private String maintainunit; + + @Schema(description = "管护单位") + private String managedutyunit; + + @Schema(description = "道路id") + private Long road; + + @Schema(description = "所属街道") + private String street; + + @Schema(description = "权属分类--数据字典:专业绿地和单位(居住区)") + private String oldtreeownership; + + @Schema(description = "数据状态(已更新、未更新)") + private String datastate; + + @Schema(description = "估测树龄") + private String estimationtreeage; + + @Schema(description = "冠幅东西") + private String canopyeastwest; + + @Schema(description = "冠幅南北") + private String canopysouthnorth; + + @Schema(description = "干周") + private String weekday; + + @Schema(description = "生长地点") + private String growlocation; + + @Schema(description = "生长环境") + private String growthenvironment; + + @Schema(description = "树木照片一") + private String treephotoone; + + @Schema(description = "古树照片二") + private String treephototwo; + + @Schema(description = "古树照片三") + private String treephotothree; + + @Schema(description = "古树照片四") + private String treephotofour; + + @Schema(description = "古树照片五") + private String treephotofive; + + @Schema(description = "创建者") + private String createby; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + private LocalDateTime createtime; + + @Schema(description = "更新者") + private String updateby; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "更新时间不能为空") + private LocalDateTime updatetime; + + @Schema(description = "备注", example = "你猜") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/GardenTreeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/GardenTreeController.java deleted file mode 100644 index ac3839a..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/GardenTreeController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.admin.treerecord; - -import com.zteits.urbanops.framework.common.pojo.CommonResult; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenTreeDO; -import com.zteits.urbanops.module.garden.service.treerecord.GardenTreeService; -import com.zteits.urbanops.module.garden.controller.admin.treerecord.vo.CompanyDeptRoadVO; -import com.zteits.urbanops.module.garden.controller.admin.treerecord.vo.RoadTreeVO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; -import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; -import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; - -@Tag(name = "管理后台 - 一树一档案") -@RestController -@RequestMapping("/business/tree") -public class GardenTreeController { - - @Resource - private GardenTreeService gardenTreeService; - - @GetMapping("/list") - @Operation(summary = "一树一档案-列表") - @PreAuthorize("@ss.hasPermission('business:tree:list')") - public CommonResult> list(@RequestParam(required = false) Integer pageNum, - @RequestParam(required = false) Integer pageSize, - GardenTreeDO where) { - int pn = pageNum == null ? 1 : pageNum; - int ps = pageSize == null ? 10 : pageSize; - return success(gardenTreeService.selectPage(where, pn, ps)); - } - - @GetMapping("/export") - @Operation(summary = "一树一档案-导出") - @PreAuthorize("@ss.hasPermission('business:tree:export')") - @ApiAccessLog(operateType = EXPORT) - public void export(GardenTreeDO where, HttpServletResponse response) throws IOException { - List list = gardenTreeService.selectPage(where, 1, Integer.MAX_VALUE).getList(); - ExcelUtils.write(response, "树木信息.xls", "数据", GardenTreeDO.class, list); - } - - @GetMapping("/{id}") - @Operation(summary = "一树一档案-详情") - @PreAuthorize("@ss.hasPermission('business:tree:query')") - public CommonResult getInfo(@PathVariable("id") Long id) { - return success(gardenTreeService.selectById(id)); - } - - @PostMapping - @Operation(summary = "一树一档案-新增") - @PreAuthorize("@ss.hasPermission('business:tree:add')") - public CommonResult add(@RequestBody GardenTreeDO entity) { - entity.setDeleted(false); - return success(gardenTreeService.insert(entity)); - } - - @PutMapping - @Operation(summary = "一树一档案-修改") - @PreAuthorize("@ss.hasPermission('business:tree:edit')") - public CommonResult edit(@RequestBody GardenTreeDO entity) { - return success(gardenTreeService.update(entity)); - } - - @DeleteMapping("/{ids}") - @Operation(summary = "一树一档案-删除") - @PreAuthorize("@ss.hasPermission('business:tree:remove')") - public CommonResult remove(@PathVariable List ids) { - return success(gardenTreeService.deleteByIds(ids)); - } - - @GetMapping("/dept/list") - @Operation(summary = "一树一档案-公司部门道路树结构") - @PreAuthorize("@ss.hasPermission('business:tree:list')") - public CommonResult> deptList(@RequestParam Long companyId, - @RequestParam(required = false) String roadName, - @RequestParam(required = false) Long deptId) { - return success(gardenTreeService.getCompanyDeptRoadTreeData(companyId, roadName, deptId)); - } - - @GetMapping("/road/list") - @Operation(summary = "一树一档案-按道路查询树列表") - @PreAuthorize("@ss.hasPermission('business:tree:list')") - public CommonResult> listTreesByRoad(@RequestParam Long road) { - return success(gardenTreeService.getTreesByRoadId(road)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/OldTreesController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/OldTreesController.java deleted file mode 100644 index 7215964..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/OldTreesController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.admin.treerecord; - -import com.zteits.urbanops.framework.common.pojo.CommonResult; -import com.zteits.urbanops.framework.common.pojo.PageParam; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; -import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenOldtreesDO; -import com.zteits.urbanops.module.garden.service.treerecord.GardenOldtreesService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 古树名木") -@RestController -@RequestMapping("/treerecord/oldtrees") -public class OldTreesController { - - @Resource - private GardenOldtreesService service; - - @GetMapping("/list") - @Operation(summary = "古树台账-列表") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:list')") - public CommonResult> list(GardenOldtreesDO where, - @RequestParam(value = "pageNum", required = false) Integer pageNum, - @RequestParam(value = "pageSize", required = false) Integer pageSize) { - where.setDeptId(SecurityFrameworkUtils.getLoginUserDeptId()); - PageParam page = new PageParam(); - page.setPageNo(pageNum == null ? 1 : pageNum); - page.setPageSize(pageSize == null ? 10 : pageSize); - return success(service.selectPage(page, where)); - } - - @GetMapping("/export") - @Operation(summary = "古树台账-导出") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:export')") - public void export(GardenOldtreesDO where, HttpServletResponse response) throws IOException { - where.setDeptId(SecurityFrameworkUtils.getLoginUserDeptId()); - List list = service.selectList(where); - ExcelUtils.write(response, "古树信息.xls", "数据", GardenOldtreesDO.class, list); - } - - @GetMapping("/{id}") - @Operation(summary = "古树台账-详情") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:query')") - public CommonResult getInfo(@PathVariable("id") String id) { - return success(service.selectById(id)); - } - - @PostMapping - @Operation(summary = "古树台账-新增") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:add')") - public CommonResult add(@RequestBody GardenOldtreesDO entity) { - entity.setCreator(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); - entity.setUpdater(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); - entity.setDeptId(SecurityFrameworkUtils.getLoginUserDeptId()); - return success(service.insert(entity)); - } - - @PutMapping - @Operation(summary = "古树台账-修改") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:edit')") - public CommonResult edit(@RequestBody GardenOldtreesDO entity) { - entity.setUpdater(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); - return success(service.update(entity)); - } - - @DeleteMapping("/{ids}") - @Operation(summary = "古树台账-删除") - @PreAuthorize("@ss.hasPermission('treerecord:oldtrees:remove')") - public CommonResult remove(@PathVariable List ids) { - return success(service.deleteByIds(ids)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/vo/RoadTreeVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/vo/RoadTreeVO.java deleted file mode 100644 index dff50ce..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/treerecord/vo/RoadTreeVO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zteits.urbanops.module.garden.controller.admin.treerecord.vo; - -import lombok.Data; - -@Data -public class RoadTreeVO { - private Long id; - private String treetype; - private String treeheight; - private String dbh; - private String treenumber; - private String treephoto; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtrees/OldtreesDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtrees/OldtreesDO.java new file mode 100644 index 0000000..467693b --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtrees/OldtreesDO.java @@ -0,0 +1,242 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.oldtrees; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** + * 古树名木 DO + * + * @author 超级管理员 + */ +@TableName("garden_oldtrees") +@KeySequence("garden_oldtrees_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OldtreesDO { + + /** + * id + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 编号 + */ + private String famoustreenumber; + /** + * 级别--数据字典:一级、两级 + */ + private String treelevel; + /** + * 树种 + */ + private String treetype; + /** + * 所在地 + */ + private String location; + /** + * 养护单位 + */ + private String maintainunit; + /** + * 权属分类--数据字典:专业绿地和单位(居住区) + */ + private String oldtreeownership; + /** + * 生长地点 + */ + private String growlocation; + /** + * 拉丁名 + */ + private String latinname; + /** + * 树高 + */ + private String treeheight; + /** + * 估测树龄 + */ + private String estimationtreeage; + /** + * 胸径 + */ + private String dbh; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 冠幅东西 + */ + private String canopyeastwest; + /** + * 冠幅南北 + */ + private String canopysouthnorth; + /** + * 管护责任单位 + */ + private String managedutyunit; + /** + * 干周 + */ + private String weekday; + /** + * 生长势--数据字典:正常,衰弱,濒危,死亡 + */ + private String growthvigor; + /** + * 生长环境 + */ + private String growthenvironment; + /** + * 古树照片一 + */ + private String treephotoone; + /** + * 春季养护管理措施 + */ + private String springmaintenance; + /** + * 夏季养护管理措施 + */ + private String summermaintenance; + /** + * 秋季养护管理措施 + */ + private String autumnmaintenance; + /** + * 冬季养护管理措施 + */ + private String wintermaintenance; + /** + * 年度 + */ + private String annual; + /** + * 养护记录备注 + */ + private String curingremark; + /** + * 古树照片二 + */ + private String treephototwo; + /** + * 古树照片三 + */ + private String treephotothree; + /** + * 古树铭牌照片 + */ + private String nameplatephoto; + /** + * 数据状态(已更新、未更新) + */ + private String datastate; + /** + * 养护员工--作业队下派古树时选择的派发员工 + */ + private String curingstaff; + /** + * 状态(驳回/确认) + */ + private String state; + /** + * 平台驳回状态(平台驳回) + */ + private String platformstate; + /** + * 所属街道 + */ + private String street; + /** + * 责任人姓名 + */ + private String responsibleusername; + /** + * 责任人电话 + */ + private String responsibleuserphone; + /** + * 创建者 + */ + private String createby; + /** + * 创建时间 + */ + private LocalDateTime createtime; + /** + * 更新者 + */ + private String updateby; + /** + * 更新时间 + */ + private String updatetime; + /** + * 部门id + */ + private Long deptId; + + @TableField(exist = false) + private List treeImgList; + + @TableField(exist = false) + private List nameplatephotoList; + + public OldtreesDO imgToDomain(){ + if (!CollectionUtils.isEmpty(treeImgList)) { + if (treeImgList.size() > 0) { + this.treephotoone = treeImgList.get(0); + } + if (treeImgList.size() > 1) { + this.treephototwo = treeImgList.get(1); + } + if (treeImgList.size() > 2) { + this.treephotothree = treeImgList.get(2); + } + } + if (!CollectionUtils.isEmpty(nameplatephotoList)) { + if (nameplatephotoList.size() > 0) { + this.nameplatephoto = nameplatephotoList.get(0); + } + } + return this; + } + public OldtreesDO domainToImg(){ + if (CollectionUtils.isEmpty(treeImgList)) { + treeImgList = new ArrayList<>(); + } + if (CollectionUtils.isEmpty(nameplatephotoList)) { + nameplatephotoList = new ArrayList<>(); + } + if (!StringUtils.isEmpty(treephotoone)) { + treeImgList.add(treephotoone); + } + if (!StringUtils.isEmpty(treephototwo)) { + treeImgList.add(treephototwo); + } + if (!StringUtils.isEmpty(treephotothree)) { + treeImgList.add(treephotothree); + } + if (!StringUtils.isEmpty(nameplatephoto)) { + nameplatephotoList.add(nameplatephoto); + } + return this; + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtreeschangelog/OldtreesChangeLogDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtreeschangelog/OldtreesChangeLogDO.java new file mode 100644 index 0000000..1e2564b --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/oldtreeschangelog/OldtreesChangeLogDO.java @@ -0,0 +1,243 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.oldtreeschangelog; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** + * 古树名木修改记录 DO + * + * @author 超级管理员 + */ +@TableName("garden_oldtrees_change_log") +@KeySequence("garden_oldtrees_change_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OldtreesChangeLogDO extends BaseDO { + + /** + * id + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * garden_oldtrees 的主键 + */ + private String oldtreeid; + /** + * 编号 + */ + private String famoustreenumber; + /** + * 级别--数据字典:一级、两级 + */ + private String treelevel; + /** + * 树种 + */ + private String treetype; + /** + * 所在地 + */ + private String location; + /** + * 养护单位 + */ + private String maintainunit; + /** + * 权属分类--数据字典:专业绿地和单位(居住区) + */ + private String oldtreeownership; + /** + * 生长地点 + */ + private String growlocation; + /** + * 拉丁名 + */ + private String latinname; + /** + * 树高 + */ + private String treeheight; + /** + * 估测树龄 + */ + private String estimationtreeage; + /** + * 胸径 + */ + private String dbh; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 冠幅东西 + */ + private String canopyeastwest; + /** + * 冠幅南北 + */ + private String canopysouthnorth; + /** + * 管护责任单位 + */ + private String managedutyunit; + /** + * 干周 + */ + private String weekday; + /** + * 生长势--数据字典:正常,衰弱,濒危,死亡 + */ + private String growthvigor; + /** + * 生长环境 + */ + private String growthenvironment; + /** + * 古树照片一 + */ + private String treephotoone; + /** + * 春季养护管理措施 + */ + private String springmaintenance; + /** + * 夏季养护管理措施 + */ + private String summermaintenance; + /** + * 秋季养护管理措施 + */ + private String autumnmaintenance; + /** + * 冬季养护管理措施 + */ + private String wintermaintenance; + /** + * 年度 + */ + private String annual; + /** + * 养护记录备注 + */ + private String curingremark; + /** + * 古树照片二 + */ + private String treephototwo; + /** + * 古树照片三 + */ + private String treephotothree; + /** + * 古树铭牌照片 + */ + private String nameplatephoto; + /** + * 数据状态(已更新、未更新) + */ + private String datastate; + /** + * 养护员工--作业队下派古树时选择的派发员工 + */ + private String curingstaff; + /** + * 状态(驳回/确认) + */ + private String state; + /** + * 平台驳回状态(平台驳回) + */ + private String platformstate; + /** + * 所属街道 + */ + private String street; + /** + * 负责人姓名 + */ + private String responsibleusername; + /** + * 负责人电话 + */ + private String responsibleuserphone; + /** + * 创建者 + */ + private String createby; + /** + * 创建时间 + */ + private LocalDateTime createtime; + /** + * 更新者 + */ + private String updateby; + /** + * 更新时间 + */ + private LocalDateTime updatetime; + + @TableField(exist = false) + private List treeImgList; + + @TableField(exist = false) + private List nameplatephotoList; + + public OldtreesChangeLogDO imgToDomain(){ + if (!CollectionUtils.isEmpty(treeImgList)) { + if (treeImgList.size() > 0) { + this.treephotoone = treeImgList.get(0); + } + if (treeImgList.size() > 1) { + this.treephototwo = treeImgList.get(1); + } + if (treeImgList.size() > 2) { + this.treephotothree = treeImgList.get(2); + } + } + if (!CollectionUtils.isEmpty(nameplatephotoList)) { + if (nameplatephotoList.size() > 0) { + this.nameplatephoto = nameplatephotoList.get(0); + } + } + return this; + } + public OldtreesChangeLogDO domainToImg(){ + if (CollectionUtils.isEmpty(treeImgList)) { + treeImgList = new ArrayList<>(); + } + if (CollectionUtils.isEmpty(nameplatephotoList)) { + nameplatephotoList = new ArrayList<>(); + } + if (!StringUtils.isEmpty(treephotoone)) { + treeImgList.add(treephotoone); + } + if (!StringUtils.isEmpty(treephototwo)) { + treeImgList.add(treephototwo); + } + if (!StringUtils.isEmpty(treephotothree)) { + treeImgList.add(treephotothree); + } + if (!StringUtils.isEmpty(nameplatephoto)) { + nameplatephotoList.add(nameplatephoto); + } + return this; + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java index e052cb6..b06df63 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/road/RoadDO.java @@ -104,5 +104,8 @@ public class RoadDO extends BaseDO { */ private String updaterName; - + /** + * 方向 + */ + private String direction; } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/tree/TreeDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/tree/TreeDO.java new file mode 100644 index 0000000..19cffe8 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/tree/TreeDO.java @@ -0,0 +1,222 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.tree; + +import cn.hutool.core.lang.tree.Tree; +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; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** + * 一树一档案 DO + * + * @author 超级管理员 + */ +@TableName("garden_tree") +@KeySequence("garden_tree_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TreeDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 编号 + */ + private String treenumber; + /** + * 拉丁名 + */ + private String latinname; + /** + * 树种 + */ + private String treetype; + /** + * 树高 + */ + private String treeheight; + /** + * 冠幅 + */ + private String canopy; + /** + * 胸径 + */ + private String dbh; + /** + * 生长势--数据字典:正常,衰弱,濒危,死亡 + */ + private String growthvigor; + /** + * 级别--数据字典:一级、两级 + */ + private String treelevel; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 所在地 + */ + private String location; + /** + * 养护单位 + */ + private String maintainunit; + /** + * 管护单位 + */ + private String managedutyunit; + /** + * 道路id + */ + private Long road; + /** + * 所属街道 + */ + private String street; + /** + * 权属分类--数据字典:专业绿地和单位(居住区) + */ + private String oldtreeownership; + /** + * 数据状态(已更新、未更新) + */ + private String datastate; + /** + * 估测树龄 + */ + private String estimationtreeage; + /** + * 冠幅东西 + */ + private String canopyeastwest; + /** + * 冠幅南北 + */ + private String canopysouthnorth; + /** + * 干周 + */ + private String weekday; + /** + * 生长地点 + */ + private String growlocation; + /** + * 生长环境 + */ + private String growthenvironment; + /** + * 树木照片一 + */ + private String treephotoone; + /** + * 古树照片二 + */ + private String treephototwo; + /** + * 古树照片三 + */ + private String treephotothree; + /** + * 古树照片四 + */ + private String treephotofour; + /** + * 古树照片五 + */ + private String treephotofive; + /** + * 创建者 + */ + private String createby; + /** + * 创建时间 + */ + private LocalDateTime createtime; + /** + * 更新者 + */ + private String updateby; + /** + * 更新时间 + */ + private LocalDateTime updatetime; + /** + * 备注 + */ + private String remark; + /** + * 部门id + */ + private Long deptId; + + /** + * 公司id + */ + private Long companyId; + + @TableField(exist = false) + private List treeImgList; + + @TableField(exist = false) + private List treeImgListFile; + + public TreeDO imgToDomain(){ + if (!CollectionUtils.isEmpty(treeImgList)) { + if (treeImgList.size() > 0) { + this.treephotoone = treeImgList.get(0); + } + if (treeImgList.size() > 1) { + this.treephototwo = treeImgList.get(1); + } + if (treeImgList.size() > 2) { + this.treephotothree = treeImgList.get(2); + } + if (treeImgList.size() > 3) { + this.treephotofour = treeImgList.get(3); + } + if (treeImgList.size() > 4) { + this.treephotofive = treeImgList.get(4); + } + } + return this; + } + public TreeDO domainToImg(){ + if (CollectionUtils.isEmpty(treeImgList)) { + treeImgList = new ArrayList<>(); + } + if (!StringUtils.isEmpty(treephotoone)) { + treeImgList.add(treephotoone); + } + if (!StringUtils.isEmpty(treephototwo)) { + treeImgList.add(treephototwo); + } + if (!StringUtils.isEmpty(treephotothree)) { + treeImgList.add(treephotothree); + } + if (!StringUtils.isEmpty(treephotofour)) { + treeImgList.add(treephotofour); + } + if (!StringUtils.isEmpty(treephotofive)) { + treeImgList.add(treephotofive); + } + return this; + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treechangelog/TreeChangeLogDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treechangelog/TreeChangeLogDO.java new file mode 100644 index 0000000..6f98794 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treechangelog/TreeChangeLogDO.java @@ -0,0 +1,215 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.treechangelog; + +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; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** + * 一树一档案修改记录 DO + * + * @author 超级管理员 + */ +@TableName("garden_tree_change_log") +@KeySequence("garden_tree_change_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TreeChangeLogDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * garden_tree 的主键 + */ + private Long treeid; + /** + * 编号 + */ + private String treenumber; + /** + * 拉丁名 + */ + private String latinname; + /** + * 树种 + */ + private String treetype; + /** + * 树高 + */ + private String treeheight; + /** + * 冠幅 + */ + private String canopy; + /** + * 胸径 + */ + private String dbh; + /** + * 生长势--数据字典:正常,衰弱,濒危,死亡 + */ + private String growthvigor; + /** + * 级别--数据字典:一级、两级 + */ + private String treelevel; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 所在地 + */ + private String location; + /** + * 养护单位 + */ + private String maintainunit; + /** + * 管护单位 + */ + private String managedutyunit; + /** + * 道路id + */ + private Long road; + /** + * 所属街道 + */ + private String street; + /** + * 权属分类--数据字典:专业绿地和单位(居住区) + */ + private String oldtreeownership; + /** + * 数据状态(已更新、未更新) + */ + private String datastate; + /** + * 估测树龄 + */ + private String estimationtreeage; + /** + * 冠幅东西 + */ + private String canopyeastwest; + /** + * 冠幅南北 + */ + private String canopysouthnorth; + /** + * 干周 + */ + private String weekday; + /** + * 生长地点 + */ + private String growlocation; + /** + * 生长环境 + */ + private String growthenvironment; + /** + * 树木照片一 + */ + private String treephotoone; + /** + * 古树照片二 + */ + private String treephototwo; + /** + * 古树照片三 + */ + private String treephotothree; + /** + * 古树照片四 + */ + private String treephotofour; + /** + * 古树照片五 + */ + private String treephotofive; + /** + * 创建者 + */ + private String createby; + /** + * 创建时间 + */ + private LocalDateTime createtime; + /** + * 更新者 + */ + private String updateby; + /** + * 更新时间 + */ + private LocalDateTime updatetime; + /** + * 备注 + */ + private String remark; + + @TableField(exist = false) + private List treeImgList; + + public TreeChangeLogDO imgToDomain(){ + if (!CollectionUtils.isEmpty(treeImgList)) { + if (treeImgList.size() > 0) { + this.treephotoone = treeImgList.get(0); + } + if (treeImgList.size() > 1) { + this.treephototwo = treeImgList.get(1); + } + if (treeImgList.size() > 2) { + this.treephotothree = treeImgList.get(2); + } + if (treeImgList.size() > 3) { + this.treephotofour = treeImgList.get(3); + } + if (treeImgList.size() > 4) { + this.treephotofive = treeImgList.get(4); + } + } + return this; + } + public TreeChangeLogDO domainToImg(){ + if (CollectionUtils.isEmpty(treeImgList)) { + treeImgList = new ArrayList<>(); + } + if (!StringUtils.isEmpty(treephotoone)) { + treeImgList.add(treephotoone); + } + if (!StringUtils.isEmpty(treephototwo)) { + treeImgList.add(treephototwo); + } + if (!StringUtils.isEmpty(treephotothree)) { + treeImgList.add(treephotothree); + } + if (!StringUtils.isEmpty(treephotofour)) { + treeImgList.add(treephotofour); + } + if (!StringUtils.isEmpty(treephotofive)) { + treeImgList.add(treephotofive); + } + return this; + } + + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treerecord/GardenOldtreesDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treerecord/GardenOldtreesDO.java deleted file mode 100644 index a7eb290..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/treerecord/GardenOldtreesDO.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zteits.urbanops.module.garden.dal.dataobject.treerecord; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; -import lombok.Data; - -@TableName("garden_oldtrees") -@Data -public class GardenOldtreesDO extends BaseDO { - @TableId - private String id; - private String treenumber; - private String latinname; - private String treetype; - private String treeheight; - private String canopy; - private String dbh; - private String growthvigor; - private String treelevel; - private String longitude; - private String latitude; - private String location; - private String maintainunit; - private String managedutyunit; - private Long road; - private String street; - private String oldtreeownership; - private String datastate; - private String estimationtreeage; - private String canopyeastwest; - private String canopysouthnorth; - private String weekday; - private String growlocation; - private String growthenvironment; - private String treephotoone; - private String treephototwo; - private String treephotothree; - private String treephotofour; - private String treephotofive; - private Long deptId; -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtrees/OldtreesMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtrees/OldtreesMapper.java new file mode 100644 index 0000000..0e0567b --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtrees/OldtreesMapper.java @@ -0,0 +1,71 @@ +package com.zteits.urbanops.module.garden.dal.mysql.oldtrees; + +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.oldtrees.OldtreesDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.oldtrees.vo.*; + +/** + * 古树名木 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface OldtreesMapper extends BaseMapperX { + + default PageResult selectPage(OldtreesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OldtreesDO::getFamoustreenumber, reqVO.getFamoustreenumber()) + .eqIfPresent(OldtreesDO::getTreelevel, reqVO.getTreelevel()) + .eqIfPresent(OldtreesDO::getTreetype, reqVO.getTreetype()) + .eqIfPresent(OldtreesDO::getLocation, reqVO.getLocation()) + .eqIfPresent(OldtreesDO::getMaintainunit, reqVO.getMaintainunit()) + .eqIfPresent(OldtreesDO::getOldtreeownership, reqVO.getOldtreeownership()) + .eqIfPresent(OldtreesDO::getGrowlocation, reqVO.getGrowlocation()) + .likeIfPresent(OldtreesDO::getLatinname, reqVO.getLatinname()) + .eqIfPresent(OldtreesDO::getTreeheight, reqVO.getTreeheight()) + .eqIfPresent(OldtreesDO::getEstimationtreeage, reqVO.getEstimationtreeage()) + .eqIfPresent(OldtreesDO::getDbh, reqVO.getDbh()) + .eqIfPresent(OldtreesDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(OldtreesDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(OldtreesDO::getCanopyeastwest, reqVO.getCanopyeastwest()) + .eqIfPresent(OldtreesDO::getCanopysouthnorth, reqVO.getCanopysouthnorth()) + .eqIfPresent(OldtreesDO::getManagedutyunit, reqVO.getManagedutyunit()) + .eqIfPresent(OldtreesDO::getWeekday, reqVO.getWeekday()) + .eqIfPresent(OldtreesDO::getGrowthvigor, reqVO.getGrowthvigor()) + .eqIfPresent(OldtreesDO::getGrowthenvironment, reqVO.getGrowthenvironment()) + .eqIfPresent(OldtreesDO::getTreephotoone, reqVO.getTreephotoone()) + .eqIfPresent(OldtreesDO::getSpringmaintenance, reqVO.getSpringmaintenance()) + .eqIfPresent(OldtreesDO::getSummermaintenance, reqVO.getSummermaintenance()) + .eqIfPresent(OldtreesDO::getAutumnmaintenance, reqVO.getAutumnmaintenance()) + .eqIfPresent(OldtreesDO::getWintermaintenance, reqVO.getWintermaintenance()) + .eqIfPresent(OldtreesDO::getAnnual, reqVO.getAnnual()) + .eqIfPresent(OldtreesDO::getCuringremark, reqVO.getCuringremark()) + .eqIfPresent(OldtreesDO::getTreephototwo, reqVO.getTreephototwo()) + .eqIfPresent(OldtreesDO::getTreephotothree, reqVO.getTreephotothree()) + .eqIfPresent(OldtreesDO::getNameplatephoto, reqVO.getNameplatephoto()) + .eqIfPresent(OldtreesDO::getDatastate, reqVO.getDatastate()) + .eqIfPresent(OldtreesDO::getCuringstaff, reqVO.getCuringstaff()) + .eqIfPresent(OldtreesDO::getState, reqVO.getState()) + .eqIfPresent(OldtreesDO::getPlatformstate, reqVO.getPlatformstate()) + .eqIfPresent(OldtreesDO::getStreet, reqVO.getStreet()) + .likeIfPresent(OldtreesDO::getResponsibleusername, reqVO.getResponsibleusername()) + .eqIfPresent(OldtreesDO::getResponsibleuserphone, reqVO.getResponsibleuserphone()) + .eqIfPresent(OldtreesDO::getCreateby, reqVO.getCreateby()) + .betweenIfPresent(OldtreesDO::getCreatetime, reqVO.getCreatetime()) + .eqIfPresent(OldtreesDO::getUpdateby, reqVO.getUpdateby()) + .betweenIfPresent(OldtreesDO::getUpdatetime, reqVO.getUpdatetime()) + .eqIfPresent(OldtreesDO::getDeptId, reqVO.getDeptId()) + .orderByDesc(OldtreesDO::getId)); + } + + default OldtreesDO selectByFamoustreenumber(String famoustreenumber) { + return selectOne(new LambdaQueryWrapperX() + .eqIfPresent(OldtreesDO::getFamoustreenumber, famoustreenumber)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtreeschangelog/OldtreesChangeLogMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtreeschangelog/OldtreesChangeLogMapper.java new file mode 100644 index 0000000..f95f375 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/oldtreeschangelog/OldtreesChangeLogMapper.java @@ -0,0 +1,66 @@ +package com.zteits.urbanops.module.garden.dal.mysql.oldtreeschangelog; + +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.oldtreeschangelog.OldtreesChangeLogDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog.vo.*; + +/** + * 古树名木修改记录 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface OldtreesChangeLogMapper extends BaseMapperX { + + default PageResult selectPage(OldtreesChangeLogPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OldtreesChangeLogDO::getOldtreeid, reqVO.getOldtreeid()) + .eqIfPresent(OldtreesChangeLogDO::getFamoustreenumber, reqVO.getFamoustreenumber()) + .eqIfPresent(OldtreesChangeLogDO::getTreelevel, reqVO.getTreelevel()) + .eqIfPresent(OldtreesChangeLogDO::getTreetype, reqVO.getTreetype()) + .eqIfPresent(OldtreesChangeLogDO::getLocation, reqVO.getLocation()) + .eqIfPresent(OldtreesChangeLogDO::getMaintainunit, reqVO.getMaintainunit()) + .eqIfPresent(OldtreesChangeLogDO::getOldtreeownership, reqVO.getOldtreeownership()) + .eqIfPresent(OldtreesChangeLogDO::getGrowlocation, reqVO.getGrowlocation()) + .likeIfPresent(OldtreesChangeLogDO::getLatinname, reqVO.getLatinname()) + .eqIfPresent(OldtreesChangeLogDO::getTreeheight, reqVO.getTreeheight()) + .eqIfPresent(OldtreesChangeLogDO::getEstimationtreeage, reqVO.getEstimationtreeage()) + .eqIfPresent(OldtreesChangeLogDO::getDbh, reqVO.getDbh()) + .eqIfPresent(OldtreesChangeLogDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(OldtreesChangeLogDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(OldtreesChangeLogDO::getCanopyeastwest, reqVO.getCanopyeastwest()) + .eqIfPresent(OldtreesChangeLogDO::getCanopysouthnorth, reqVO.getCanopysouthnorth()) + .eqIfPresent(OldtreesChangeLogDO::getManagedutyunit, reqVO.getManagedutyunit()) + .eqIfPresent(OldtreesChangeLogDO::getWeekday, reqVO.getWeekday()) + .eqIfPresent(OldtreesChangeLogDO::getGrowthvigor, reqVO.getGrowthvigor()) + .eqIfPresent(OldtreesChangeLogDO::getGrowthenvironment, reqVO.getGrowthenvironment()) + .eqIfPresent(OldtreesChangeLogDO::getTreephotoone, reqVO.getTreephotoone()) + .eqIfPresent(OldtreesChangeLogDO::getSpringmaintenance, reqVO.getSpringmaintenance()) + .eqIfPresent(OldtreesChangeLogDO::getSummermaintenance, reqVO.getSummermaintenance()) + .eqIfPresent(OldtreesChangeLogDO::getAutumnmaintenance, reqVO.getAutumnmaintenance()) + .eqIfPresent(OldtreesChangeLogDO::getWintermaintenance, reqVO.getWintermaintenance()) + .eqIfPresent(OldtreesChangeLogDO::getAnnual, reqVO.getAnnual()) + .eqIfPresent(OldtreesChangeLogDO::getCuringremark, reqVO.getCuringremark()) + .eqIfPresent(OldtreesChangeLogDO::getTreephototwo, reqVO.getTreephototwo()) + .eqIfPresent(OldtreesChangeLogDO::getTreephotothree, reqVO.getTreephotothree()) + .eqIfPresent(OldtreesChangeLogDO::getNameplatephoto, reqVO.getNameplatephoto()) + .eqIfPresent(OldtreesChangeLogDO::getDatastate, reqVO.getDatastate()) + .eqIfPresent(OldtreesChangeLogDO::getCuringstaff, reqVO.getCuringstaff()) + .eqIfPresent(OldtreesChangeLogDO::getState, reqVO.getState()) + .eqIfPresent(OldtreesChangeLogDO::getPlatformstate, reqVO.getPlatformstate()) + .eqIfPresent(OldtreesChangeLogDO::getStreet, reqVO.getStreet()) + .likeIfPresent(OldtreesChangeLogDO::getResponsibleusername, reqVO.getResponsibleusername()) + .eqIfPresent(OldtreesChangeLogDO::getResponsibleuserphone, reqVO.getResponsibleuserphone()) + .eqIfPresent(OldtreesChangeLogDO::getCreateby, reqVO.getCreateby()) + .betweenIfPresent(OldtreesChangeLogDO::getCreatetime, reqVO.getCreatetime()) + .eqIfPresent(OldtreesChangeLogDO::getUpdateby, reqVO.getUpdateby()) + .betweenIfPresent(OldtreesChangeLogDO::getUpdatetime, reqVO.getUpdatetime()) + .orderByDesc(OldtreesChangeLogDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java new file mode 100644 index 0000000..d119689 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/tree/TreeMapper.java @@ -0,0 +1,66 @@ +package com.zteits.urbanops.module.garden.dal.mysql.tree; + +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.tree.TreeDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.tree.vo.*; + +/** + * 一树一档案 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface TreeMapper extends BaseMapperX { + + default PageResult selectPage(TreePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TreeDO::getTreenumber, reqVO.getTreenumber()) + .likeIfPresent(TreeDO::getLatinname, reqVO.getLatinname()) + .eqIfPresent(TreeDO::getTreetype, reqVO.getTreetype()) + .eqIfPresent(TreeDO::getTreeheight, reqVO.getTreeheight()) + .eqIfPresent(TreeDO::getCanopy, reqVO.getCanopy()) + .eqIfPresent(TreeDO::getDbh, reqVO.getDbh()) + .eqIfPresent(TreeDO::getGrowthvigor, reqVO.getGrowthvigor()) + .eqIfPresent(TreeDO::getTreelevel, reqVO.getTreelevel()) + .eqIfPresent(TreeDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(TreeDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(TreeDO::getLocation, reqVO.getLocation()) + .eqIfPresent(TreeDO::getMaintainunit, reqVO.getMaintainunit()) + .eqIfPresent(TreeDO::getManagedutyunit, reqVO.getManagedutyunit()) + .eqIfPresent(TreeDO::getRoad, reqVO.getRoad()) + .eqIfPresent(TreeDO::getStreet, reqVO.getStreet()) + .eqIfPresent(TreeDO::getOldtreeownership, reqVO.getOldtreeownership()) + .eqIfPresent(TreeDO::getDatastate, reqVO.getDatastate()) + .eqIfPresent(TreeDO::getEstimationtreeage, reqVO.getEstimationtreeage()) + .eqIfPresent(TreeDO::getCanopyeastwest, reqVO.getCanopyeastwest()) + .eqIfPresent(TreeDO::getCanopysouthnorth, reqVO.getCanopysouthnorth()) + .eqIfPresent(TreeDO::getWeekday, reqVO.getWeekday()) + .eqIfPresent(TreeDO::getGrowlocation, reqVO.getGrowlocation()) + .eqIfPresent(TreeDO::getGrowthenvironment, reqVO.getGrowthenvironment()) + .eqIfPresent(TreeDO::getTreephotoone, reqVO.getTreephotoone()) + .eqIfPresent(TreeDO::getTreephototwo, reqVO.getTreephototwo()) + .eqIfPresent(TreeDO::getTreephotothree, reqVO.getTreephotothree()) + .eqIfPresent(TreeDO::getTreephotofour, reqVO.getTreephotofour()) + .eqIfPresent(TreeDO::getTreephotofive, reqVO.getTreephotofive()) + .eqIfPresent(TreeDO::getCreateby, reqVO.getCreateby()) + .betweenIfPresent(TreeDO::getCreatetime, reqVO.getCreatetime()) + .eqIfPresent(TreeDO::getUpdateby, reqVO.getUpdateby()) + .betweenIfPresent(TreeDO::getUpdatetime, reqVO.getUpdatetime()) + .eqIfPresent(TreeDO::getRemark, reqVO.getRemark()) + .eqIfPresent(TreeDO::getDeptId, reqVO.getDeptId()) + .orderByDesc(TreeDO::getId)); + } + + default TreeDO selectByTreeNumber(String treeNumber) { + return selectOne(new LambdaQueryWrapperX() + .eqIfPresent(TreeDO::getTreenumber, treeNumber) + ); + } + + List selectCompanyDeptRoadTreeData(TreeVO tree); +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treechangelog/TreeChangeLogMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treechangelog/TreeChangeLogMapper.java new file mode 100644 index 0000000..06380c7 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treechangelog/TreeChangeLogMapper.java @@ -0,0 +1,59 @@ +package com.zteits.urbanops.module.garden.dal.mysql.treechangelog; + +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.treechangelog.TreeChangeLogDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.treechangelog.vo.*; + +/** + * 一树一档案修改记录 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface TreeChangeLogMapper extends BaseMapperX { + + default PageResult selectPage(TreeChangeLogPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TreeChangeLogDO::getTreeid, reqVO.getTreeid()) + .eqIfPresent(TreeChangeLogDO::getTreenumber, reqVO.getTreenumber()) + .likeIfPresent(TreeChangeLogDO::getLatinname, reqVO.getLatinname()) + .eqIfPresent(TreeChangeLogDO::getTreetype, reqVO.getTreetype()) + .eqIfPresent(TreeChangeLogDO::getTreeheight, reqVO.getTreeheight()) + .eqIfPresent(TreeChangeLogDO::getCanopy, reqVO.getCanopy()) + .eqIfPresent(TreeChangeLogDO::getDbh, reqVO.getDbh()) + .eqIfPresent(TreeChangeLogDO::getGrowthvigor, reqVO.getGrowthvigor()) + .eqIfPresent(TreeChangeLogDO::getTreelevel, reqVO.getTreelevel()) + .eqIfPresent(TreeChangeLogDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(TreeChangeLogDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(TreeChangeLogDO::getLocation, reqVO.getLocation()) + .eqIfPresent(TreeChangeLogDO::getMaintainunit, reqVO.getMaintainunit()) + .eqIfPresent(TreeChangeLogDO::getManagedutyunit, reqVO.getManagedutyunit()) + .eqIfPresent(TreeChangeLogDO::getRoad, reqVO.getRoad()) + .eqIfPresent(TreeChangeLogDO::getStreet, reqVO.getStreet()) + .eqIfPresent(TreeChangeLogDO::getOldtreeownership, reqVO.getOldtreeownership()) + .eqIfPresent(TreeChangeLogDO::getDatastate, reqVO.getDatastate()) + .eqIfPresent(TreeChangeLogDO::getEstimationtreeage, reqVO.getEstimationtreeage()) + .eqIfPresent(TreeChangeLogDO::getCanopyeastwest, reqVO.getCanopyeastwest()) + .eqIfPresent(TreeChangeLogDO::getCanopysouthnorth, reqVO.getCanopysouthnorth()) + .eqIfPresent(TreeChangeLogDO::getWeekday, reqVO.getWeekday()) + .eqIfPresent(TreeChangeLogDO::getGrowlocation, reqVO.getGrowlocation()) + .eqIfPresent(TreeChangeLogDO::getGrowthenvironment, reqVO.getGrowthenvironment()) + .eqIfPresent(TreeChangeLogDO::getTreephotoone, reqVO.getTreephotoone()) + .eqIfPresent(TreeChangeLogDO::getTreephototwo, reqVO.getTreephototwo()) + .eqIfPresent(TreeChangeLogDO::getTreephotothree, reqVO.getTreephotothree()) + .eqIfPresent(TreeChangeLogDO::getTreephotofour, reqVO.getTreephotofour()) + .eqIfPresent(TreeChangeLogDO::getTreephotofive, reqVO.getTreephotofive()) + .eqIfPresent(TreeChangeLogDO::getCreateby, reqVO.getCreateby()) + .betweenIfPresent(TreeChangeLogDO::getCreatetime, reqVO.getCreatetime()) + .eqIfPresent(TreeChangeLogDO::getUpdateby, reqVO.getUpdateby()) + .betweenIfPresent(TreeChangeLogDO::getUpdatetime, reqVO.getUpdatetime()) + .eqIfPresent(TreeChangeLogDO::getRemark, reqVO.getRemark()) + .orderByDesc(TreeChangeLogDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenOldtreesMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenOldtreesMapper.java deleted file mode 100644 index 6119ae8..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenOldtreesMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zteits.urbanops.module.garden.dal.mysql.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; -import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenOldtreesDO; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface GardenOldtreesMapper extends BaseMapperX { - default PageResult selectPage(com.zteits.urbanops.framework.common.pojo.PageParam pageParam, GardenOldtreesDO where) { - return selectPage(pageParam, null, new LambdaQueryWrapperX() - .likeIfPresent(GardenOldtreesDO::getTreenumber, where.getTreenumber()) - .likeIfPresent(GardenOldtreesDO::getLatinname, where.getLatinname()) - .eqIfPresent(GardenOldtreesDO::getStreet, where.getStreet()) - .eqIfPresent(GardenOldtreesDO::getMaintainunit, where.getMaintainunit()) - .eqIfPresent(GardenOldtreesDO::getDeptId, where.getDeptId()) - .orderByDesc(GardenOldtreesDO::getUpdateTime)); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenTreeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenTreeMapper.java deleted file mode 100644 index c73122a..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/treerecord/GardenTreeMapper.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.zteits.urbanops.module.garden.dal.mysql.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; -import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenTreeDO; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface GardenTreeMapper extends BaseMapperX { - default PageResult selectPage(com.zteits.urbanops.framework.common.pojo.PageParam pageParam, GardenTreeDO where) { - return selectPage(pageParam, null, new LambdaQueryWrapperX() - .likeIfPresent(GardenTreeDO::getTreenumber, where.getTreenumber()) - .likeIfPresent(GardenTreeDO::getLatinname, where.getLatinname()) - .likeIfPresent(GardenTreeDO::getTreetype, where.getTreetype()) - .eqIfPresent(GardenTreeDO::getTreeheight, where.getTreeheight()) - .eqIfPresent(GardenTreeDO::getCanopy, where.getCanopy()) - .eqIfPresent(GardenTreeDO::getDbh, where.getDbh()) - .eqIfPresent(GardenTreeDO::getGrowthvigor, where.getGrowthvigor()) - .eqIfPresent(GardenTreeDO::getTreelevel, where.getTreelevel()) - .eqIfPresent(GardenTreeDO::getLongitude, where.getLongitude()) - .eqIfPresent(GardenTreeDO::getLatitude, where.getLatitude()) - .eqIfPresent(GardenTreeDO::getLocation, where.getLocation()) - .eqIfPresent(GardenTreeDO::getMaintainunit, where.getMaintainunit()) - .eqIfPresent(GardenTreeDO::getManagedutyunit, where.getManagedutyunit()) - .eqIfPresent(GardenTreeDO::getStreet, where.getStreet()) - .eqIfPresent(GardenTreeDO::getOldtreeownership, where.getOldtreeownership()) - .eqIfPresent(GardenTreeDO::getDatastate, where.getDatastate()) - .eqIfPresent(GardenTreeDO::getEstimationtreeage, where.getEstimationtreeage()) - .eqIfPresent(GardenTreeDO::getCanopyeastwest, where.getCanopyeastwest()) - .eqIfPresent(GardenTreeDO::getCanopysouthnorth, where.getCanopysouthnorth()) - .eqIfPresent(GardenTreeDO::getWeekday, where.getWeekday()) - .eqIfPresent(GardenTreeDO::getGrowlocation, where.getGrowlocation()) - .eqIfPresent(GardenTreeDO::getGrowthenvironment, where.getGrowthenvironment()) - .eqIfPresent(GardenTreeDO::getDeleted, where.getDeleted()) - .orderByDesc(GardenTreeDO::getUpdateTime)); - } - - class CompanyDeptRoadRow { - public String companyId; - public String companyName; - public Long deptId; - public String deptName; - public Long roadId; - public String roadName; - public String startRemark; - public String endRemark; - public Long treeCount; - public Long recordedCount; - } - - @org.apache.ibatis.annotations.Select("SELECT c.dict_value AS companyId, c.dict_label AS companyName, d.dept_id AS deptId, d.dept_name AS deptName, r.id AS roadId, r.road_name AS roadName, r.starting_remark AS startRemark, r.end_remark AS endRemark, COALESCE(r.tree_area, 0) AS treeCount, COUNT(t.id) AS recordedCount FROM sys_dict_data c JOIN sys_dept d ON d.belong_company_id = c.dict_value AND d.del_flag = '0' LEFT JOIN td_road_manager r ON d.dept_id = r.dept_id LEFT JOIN garden_tree t ON r.id = t.road AND t.deleted = 0 WHERE c.dict_type = 'belongCompanyId' AND d.dept_id NOT IN (SELECT DISTINCT parent_id FROM sys_dept WHERE parent_id IS NOT NULL) GROUP BY c.dict_value, c.dict_label, d.dept_id, d.dept_name, r.id, r.road_name, r.starting_remark, r.end_remark, r.tree_area ORDER BY treeCount DESC, recordedCount DESC") - java.util.List selectCompanyDeptRoadRows(); - - @org.apache.ibatis.annotations.Select("SELECT t.id, t.treetype, t.treeheight, t.dbh, t.treenumber, t.treephotoone AS treephoto FROM garden_tree t WHERE t.deleted = 0 AND t.road = #{road} ORDER BY t.update_time DESC") - java.util.List selectTreesByRoadId(@org.apache.ibatis.annotations.Param("road") Long road); -} \ 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 a6c1517..f237c60 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 @@ -88,4 +88,21 @@ public interface ErrorCodeConstants { ErrorCode MATERIAL_INVENTORY_OUT_NOT_EXISTS = new ErrorCode(1-100-004-005, "物料出库不存在"); ErrorCode MATERIAL_INVENTORY_NOT_EXISTS = new ErrorCode(1-100-004-006, "物料库存不存在"); + + ErrorCode OLDTREES_NOT_EXISTS = new ErrorCode(1-100-005-001, "古树名木不存在"); + + ErrorCode OLDTREES_CHANGE_LOG_NOT_EXISTS = new ErrorCode(1-100-005-002, "古树名木修改记录不存在"); + + ErrorCode TREE_CHANGE_LOG_NOT_EXISTS = new ErrorCode(1-100-005-003, "一树一档案修改记录不存在"); + + ErrorCode TREE_NOT_EXISTS = new ErrorCode(1-100-005-004, "一树一档案不存在"); + ErrorCode OLDTREES_FAMOUSTREENUMBER_EXISTS = new ErrorCode(1-100-005-006, "古树编号已存在"); + ErrorCode TREE_ROAD_NOT_EXISTS = new ErrorCode(1-100-005-007, "所属道路不能为空"); + ErrorCode TREE_NUMBER_EXISTS = new ErrorCode(1-100-005-010, "树木编码已存在"); + + + ErrorCode ROAD_MANAGER_NOT_EXISTS = new ErrorCode(1-100-006-001, "道路管理不存在"); + + + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java index e06fe59..ce2a9fb 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java @@ -47,8 +47,7 @@ import java.util.stream.IntStream; import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; -import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; -import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserDeptId; +import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.*; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.COST_FEE_NOT_EXISTS_001; /** @@ -227,8 +226,8 @@ public class CostFeeServiceImpl implements CostFeeService { .map(importObj -> { WaterFeeDO fee = new WaterFeeDO(); BeanUtils.copyProperties(importObj, fee); - fee.setCompanyId(String.valueOf(getLoginUserDeptId())); - if (getLoginUserDeptId() == 100) { + fee.setCompanyId(String.valueOf(getCompanyId())); + if (getCompanyId() == 100) { fee.setCompanyName("蓟城山水"); } else { // 设置单位id @@ -502,8 +501,8 @@ public class CostFeeServiceImpl implements CostFeeService { if (CollectionUtils.isEmpty(dataList)) { return; // 空列表无需校验 } - //登录用户部门 - Long deptId = getLoginUserDeptId(); + //登录用户单位 + Long belongCompanyId = getCompanyId(); //单位集合 List companyList = deptApi.getSubDeptList(); List deptIds = companyList.stream().map(DeptRespDTO::getId).collect(Collectors.toList()); @@ -577,7 +576,7 @@ public class CostFeeServiceImpl implements CostFeeService { } Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 - validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId); + validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); //部门名称校验 validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds()); @@ -612,7 +611,7 @@ public class CostFeeServiceImpl implements CostFeeService { } Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 - validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId); + validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); //部门名称校验 validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds()); @@ -646,7 +645,7 @@ public class CostFeeServiceImpl implements CostFeeService { } Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 - validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId); + validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); //部门名称校验 validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds()); @@ -716,7 +715,7 @@ public class CostFeeServiceImpl implements CostFeeService { } Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 - validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId); + validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); //部门名称校验 validateTeams(rowNum, deptList.get(companyId), importBean.getTeamIds()); @@ -752,7 +751,7 @@ public class CostFeeServiceImpl implements CostFeeService { Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 - validatecompany(rowNum, importBean.getCompanyName(), companyId, deptId); + validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); } catch (ConstraintViolationException ex) { // 5. 包装异常,明确行号 + 真实校验错误( throw exception0(BAD_REQUEST.getCode(), String.format("第%d条数据校验失败:%s", rowNum, ex.getMessage()), ex); @@ -761,7 +760,7 @@ public class CostFeeServiceImpl implements CostFeeService { } } - private void validatecompany(int rowNum, String companyName, Long companyId, Long deptId){ + private void validatecompany(int rowNum, String companyName, Long companyId, Long belongCompanyId){ // 校验数组长度是否一致 if (companyId == null) { throw exception0(BAD_REQUEST.getCode(), String.format( @@ -770,7 +769,7 @@ public class CostFeeServiceImpl implements CostFeeService { )); } // 校验导入单位 - if (deptId != 100 && !deptId.equals(companyId)) { + if (belongCompanyId != 100 && !belongCompanyId.equals(companyId)) { throw exception0(BAD_REQUEST.getCode(), String.format( "第%d条数据:导入单位%s与当前操作员单位不一致", rowNum, companyName diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesService.java new file mode 100644 index 0000000..4230bb8 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.oldtrees; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.oldtrees.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtrees.OldtreesDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 古树名木 Service 接口 + * + * @author 超级管理员 + */ +public interface OldtreesService { + + /** + * 创建古树名木 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + String createOldtrees(@Valid OldtreesSaveReqVO createReqVO); + + /** + * 更新古树名木 + * + * @param updateReqVO 更新信息 + */ + void updateOldtrees(@Valid OldtreesSaveReqVO updateReqVO); + + /** + * 删除古树名木 + * + * @param id 编号 + */ + void deleteOldtrees(String id); + + /** + * 批量删除古树名木 + * + * @param ids 编号 + */ + void deleteOldtreesListByIds(List ids); + + /** + * 获得古树名木 + * + * @param id 编号 + * @return 古树名木 + */ + OldtreesDO getOldtrees(String id); + + /** + * 获得古树名木分页 + * + * @param pageReqVO 分页查询 + * @return 古树名木分页 + */ + PageResult getOldtreesPage(OldtreesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesServiceImpl.java new file mode 100644 index 0000000..a5b3f48 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtrees/OldtreesServiceImpl.java @@ -0,0 +1,147 @@ +package com.zteits.urbanops.module.garden.service.oldtrees; + +import cn.hutool.core.collection.CollUtil; +import com.zteits.urbanops.framework.common.exception.ServiceException; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtreeschangelog.OldtreesChangeLogDO; +import com.zteits.urbanops.module.garden.dal.mysql.oldtreeschangelog.OldtreesChangeLogMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.*; +import com.zteits.urbanops.module.garden.controller.admin.oldtrees.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtrees.OldtreesDO; +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.oldtrees.OldtreesMapper; + +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 OldtreesServiceImpl implements OldtreesService { + + @Resource + private OldtreesMapper oldtreesMapper; + + @Resource + private OldtreesChangeLogMapper oldtreesChangeLogMapper; + + @Override + public String createOldtrees(OldtreesSaveReqVO createReqVO) { + // 插入 + OldtreesDO oldtrees = BeanUtils.toBean(createReqVO, OldtreesDO.class); + + if (!ObjectUtils.isEmpty(oldtrees)) { + oldtrees.imgToDomain(); + } + + String id = oldtrees.getId(); + if (!StringUtils.hasText(id)) { + id = UUID.randomUUID().toString().replace("-", ""); + oldtrees.setId(id); + } + + OldtreesDO exists = oldtreesMapper.selectByFamoustreenumber(oldtrees.getFamoustreenumber()); + if (!ObjectUtils.isEmpty(exists)) { + throw new ServiceException(OLDTREES_FAMOUSTREENUMBER_EXISTS); + } + + int insert = oldtreesMapper.insert(oldtrees); + + OldtreesChangeLogDO changeLog = new OldtreesChangeLogDO(); + BeanUtils.copyProperties(createReqVO, changeLog); + changeLog.setOldtreeid(id); + changeLog.setCreateby(createReqVO.getCreateby()); + changeLog.setCreatetime(createReqVO.getCreatetime()); + changeLog.setUpdateby(createReqVO.getCreateby()); + changeLog.setUpdatetime(createReqVO.getUpdatetime()); + oldtreesChangeLogMapper.insert(changeLog); + + // 返回 + return oldtrees.getId(); + } + + @Override + public void updateOldtrees(OldtreesSaveReqVO updateReqVO) { + // 校验存在 + OldtreesDO dbOlderTree = validateOldtreesExists(updateReqVO.getId()); + + if (!ObjectUtils.isEmpty(dbOlderTree) && !dbOlderTree.getFamoustreenumber().equals(updateReqVO.getFamoustreenumber())) { + + OldtreesDO exists = oldtreesMapper.selectByFamoustreenumber(updateReqVO.getFamoustreenumber()); + if (!ObjectUtils.isEmpty(exists)) { + throw new ServiceException(OLDTREES_FAMOUSTREENUMBER_EXISTS); + } + } + + // 更新 + OldtreesDO updateObj = BeanUtils.toBean(updateReqVO, OldtreesDO.class); + + updateObj.imgToDomain(); + + OldtreesChangeLogDO changeLog = new OldtreesChangeLogDO(); + org.springframework.beans.BeanUtils.copyProperties(updateReqVO, changeLog); + changeLog.setOldtreeid(updateReqVO.getId()); + changeLog.setCreateby(updateReqVO.getUpdateby()); + changeLog.setCreatetime(LocalDateTime.now()); + changeLog.setUpdateby(updateReqVO.getUpdateby()); + changeLog.setUpdatetime(LocalDateTime.now()); + oldtreesChangeLogMapper.insert(changeLog); + + oldtreesMapper.updateById(updateObj); + } + + @Override + public void deleteOldtrees(String id) { + // 校验存在 + validateOldtreesExists(id); + // 删除 + oldtreesMapper.deleteById(id); + } + + @Override + public void deleteOldtreesListByIds(List ids) { + // 删除 + oldtreesMapper.deleteByIds(ids); + } + + + private OldtreesDO validateOldtreesExists(String id) { + OldtreesDO oldtreesDO = oldtreesMapper.selectById(id); + if (oldtreesDO == null) { + throw exception(OLDTREES_NOT_EXISTS); + } + return oldtreesDO; + } + + @Override + public OldtreesDO getOldtrees(String id) { + OldtreesDO oldtreesDO = oldtreesMapper.selectById(id); + if (!ObjectUtils.isEmpty(oldtreesDO)) { + oldtreesDO.domainToImg(); + } + return oldtreesDO; + } + + @Override + public PageResult getOldtreesPage(OldtreesPageReqVO pageReqVO) { + return oldtreesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogService.java new file mode 100644 index 0000000..23e79dc --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.oldtreeschangelog; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.oldtreeschangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtreeschangelog.OldtreesChangeLogDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 古树名木修改记录 Service 接口 + * + * @author 超级管理员 + */ +public interface OldtreesChangeLogService { + + /** + * 创建古树名木修改记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + String createOldtreesChangeLog(@Valid OldtreesChangeLogSaveReqVO createReqVO); + + /** + * 更新古树名木修改记录 + * + * @param updateReqVO 更新信息 + */ + void updateOldtreesChangeLog(@Valid OldtreesChangeLogSaveReqVO updateReqVO); + + /** + * 删除古树名木修改记录 + * + * @param id 编号 + */ + void deleteOldtreesChangeLog(String id); + + /** + * 批量删除古树名木修改记录 + * + * @param ids 编号 + */ + void deleteOldtreesChangeLogListByIds(List ids); + + /** + * 获得古树名木修改记录 + * + * @param id 编号 + * @return 古树名木修改记录 + */ + OldtreesChangeLogDO getOldtreesChangeLog(String id); + + /** + * 获得古树名木修改记录分页 + * + * @param pageReqVO 分页查询 + * @return 古树名木修改记录分页 + */ + PageResult getOldtreesChangeLogPage(OldtreesChangeLogPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogServiceImpl.java new file mode 100644 index 0000000..7393786 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/oldtreeschangelog/OldtreesChangeLogServiceImpl.java @@ -0,0 +1,87 @@ +package com.zteits.urbanops.module.garden.service.oldtreeschangelog; + +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.oldtreeschangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.oldtreeschangelog.OldtreesChangeLogDO; +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.oldtreeschangelog.OldtreesChangeLogMapper; + +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 OldtreesChangeLogServiceImpl implements OldtreesChangeLogService { + + @Resource + private OldtreesChangeLogMapper oldtreesChangeLogMapper; + + @Override + public String createOldtreesChangeLog(OldtreesChangeLogSaveReqVO createReqVO) { + // 插入 + OldtreesChangeLogDO oldtreesChangeLog = BeanUtils.toBean(createReqVO, OldtreesChangeLogDO.class); + oldtreesChangeLogMapper.insert(oldtreesChangeLog); + + // 返回 + return oldtreesChangeLog.getId(); + } + + @Override + public void updateOldtreesChangeLog(OldtreesChangeLogSaveReqVO updateReqVO) { + // 校验存在 + validateOldtreesChangeLogExists(updateReqVO.getId()); + // 更新 + OldtreesChangeLogDO updateObj = BeanUtils.toBean(updateReqVO, OldtreesChangeLogDO.class); + oldtreesChangeLogMapper.updateById(updateObj); + } + + @Override + public void deleteOldtreesChangeLog(String id) { + // 校验存在 + validateOldtreesChangeLogExists(id); + // 删除 + oldtreesChangeLogMapper.deleteById(id); + } + + @Override + public void deleteOldtreesChangeLogListByIds(List ids) { + // 删除 + oldtreesChangeLogMapper.deleteByIds(ids); + } + + + private void validateOldtreesChangeLogExists(String id) { + if (oldtreesChangeLogMapper.selectById(id) == null) { + throw exception(OLDTREES_CHANGE_LOG_NOT_EXISTS); + } + } + + @Override + public OldtreesChangeLogDO getOldtreesChangeLog(String id) { + return oldtreesChangeLogMapper.selectById(id); + } + + @Override + public PageResult getOldtreesChangeLogPage(OldtreesChangeLogPageReqVO pageReqVO) { + PageResult pageResult = oldtreesChangeLogMapper.selectPage(pageReqVO); + pageResult.getList().forEach(OldtreesChangeLogDO::domainToImg); + return pageResult; + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeService.java new file mode 100644 index 0000000..5c30a1a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeService.java @@ -0,0 +1,65 @@ +package com.zteits.urbanops.module.garden.service.tree; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.tree.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.tree.TreeDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 一树一档案 Service 接口 + * + * @author 超级管理员 + */ +public interface TreeService { + + /** + * 创建一树一档案 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTree(@Valid TreeSaveReqVO createReqVO); + + /** + * 更新一树一档案 + * + * @param updateReqVO 更新信息 + */ + void updateTree(@Valid TreeSaveReqVO updateReqVO); + + /** + * 删除一树一档案 + * + * @param id 编号 + */ + void deleteTree(Long id); + + /** + * 批量删除一树一档案 + * + * @param ids 编号 + */ + void deleteTreeListByIds(List ids); + + /** + * 获得一树一档案 + * + * @param id 编号 + * @return 一树一档案 + */ + TreeDO getTree(Long id); + + /** + * 获得一树一档案分页 + * + * @param pageReqVO 分页查询 + * @return 一树一档案分页 + */ + PageResult getTreePage(TreePageReqVO pageReqVO); + + List getCompanyDeptRoadTreeData(TreeVO tree); + + PageResult getTreesByRoadId(TreePageReqVO pageReqVO); +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java new file mode 100644 index 0000000..89c55f5 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java @@ -0,0 +1,272 @@ +package com.zteits.urbanops.module.garden.service.tree; + +import cn.hutool.core.collection.CollUtil; +import com.zteits.urbanops.framework.common.exception.ServiceException; +import com.zteits.urbanops.framework.common.util.cache.CacheUtils; +import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadDO; +import com.zteits.urbanops.module.garden.dal.dataobject.treechangelog.TreeChangeLogDO; +import com.zteits.urbanops.module.garden.dal.mysql.road.RoadMapper; +import com.zteits.urbanops.module.garden.dal.mysql.treechangelog.TreeChangeLogMapper; +import com.zteits.urbanops.module.garden.service.road.RoadService; +import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; +import com.zteits.urbanops.module.system.dal.mysql.dept.DeptMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +import com.zteits.urbanops.module.garden.controller.admin.tree.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.tree.TreeDO; +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.tree.TreeMapper; + +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 TreeServiceImpl implements TreeService { + + @Resource + private TreeMapper treeMapper; + + @Resource + private TreeChangeLogMapper gardenTreeChangeLogMapper; + + @Resource + private RoadMapper roadMapper; + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private DeptMapper deptMapper; + + public static final String CACHE_REPEAT_KEY = "gardenTree:repeat:"; + + @Override + public Long createTree(TreeSaveReqVO createReqVO) { + // 插入 + TreeDO tree = BeanUtils.toBean(createReqVO, TreeDO.class); + + if (!ObjectUtils.isEmpty(tree)) { + tree.imgToDomain(); + } + + TreeDO treeDO = treeMapper.selectByTreeNumber(createReqVO.getTreenumber()); + if (!ObjectUtils.isEmpty(treeDO)) { + throw exception(TREE_NUMBER_EXISTS); + } + + if (!StringUtils.hasText(tree.getTreenumber())) { + Long road = tree.getRoad(); + if (ObjectUtils.isEmpty(road)) { + throw new ServiceException(TREE_ROAD_NOT_EXISTS); + } + RoadDO roadDO = roadMapper.selectById(road); + String prefix = roadDO.getStreetId() + "-" + roadDO.getId() + "-" + roadDO.getDirection() + "-"; + Long sequence = redisTemplate.opsForValue().increment(CACHE_REPEAT_KEY + prefix); + String treeNum = prefix + String.format("%0" + 3 + "d", sequence); + tree.setStreet(roadDO.getStreetId()); + tree.setTreenumber(treeNum); + } + + TreeChangeLogDO changeLog = new TreeChangeLogDO(); + org.springframework.beans.BeanUtils.copyProperties(createReqVO, changeLog); + changeLog.setTreeid(createReqVO.getId()); + changeLog.setCreateby(createReqVO.getCreateby()); + changeLog.setCreatetime(LocalDateTime.now()); + changeLog.setUpdateby(createReqVO.getCreateby()); + changeLog.setUpdatetime(LocalDateTime.now()); + gardenTreeChangeLogMapper.insert(changeLog); + + treeMapper.insert(tree); + + // 返回 + return tree.getId(); + } + + @Override + public void updateTree(TreeSaveReqVO updateReqVO) { + // 校验存在 + TreeDO dbTree = validateTreeExists(updateReqVO.getId()); + if (!ObjectUtils.isEmpty(dbTree) && !dbTree.getTreenumber().equals(updateReqVO.getTreenumber())) { + TreeDO treeDO = treeMapper.selectByTreeNumber(updateReqVO.getTreenumber()); + if (!ObjectUtils.isEmpty(treeDO)) { + throw exception(TREE_NUMBER_EXISTS); + } + } + + // 更新 + TreeDO updateObj = BeanUtils.toBean(updateReqVO, TreeDO.class); + updateObj.imgToDomain(); + + if (ObjectUtils.isEmpty(updateReqVO.getStreet())) { + Long road = updateReqVO.getRoad(); + RoadDO roadDO = roadMapper.selectById(road); + updateObj.setStreet(roadDO.getStreetId()); + } + + treeMapper.updateById(updateObj); + + TreeChangeLogDO changeLog = new TreeChangeLogDO(); + org.springframework.beans.BeanUtils.copyProperties(updateObj, changeLog); + changeLog.setTreeid(updateObj.getId()); + changeLog.setCreateby(updateReqVO.getUpdateby()); + changeLog.setCreatetime(LocalDateTime.now()); + changeLog.setUpdateby(updateReqVO.getUpdateby()); + changeLog.setUpdatetime(LocalDateTime.now()); + gardenTreeChangeLogMapper.insert(changeLog); + } + + @Override + public void deleteTree(Long id) { + // 校验存在 + validateTreeExists(id); + // 删除 + treeMapper.deleteById(id); + } + + @Override + public void deleteTreeListByIds(List ids) { + // 删除 + treeMapper.deleteByIds(ids); + } + + + private TreeDO validateTreeExists(Long id) { + TreeDO treeDO = treeMapper.selectById(id); + if (treeDO == null) { + throw exception(TREE_NOT_EXISTS); + } + return treeDO; + } + + @Override + public TreeDO getTree(Long id) { + TreeDO treeDO = treeMapper.selectById(id); + if (!ObjectUtils.isEmpty(treeDO)) { + treeDO.domainToImg(); + } + return treeDO; + } + + @Override + public PageResult getTreePage(TreePageReqVO pageReqVO) { + return treeMapper.selectPage(pageReqVO); + } + + @Override + public List getCompanyDeptRoadTreeData(TreeVO tree) { + List sysDepts = deptMapper.selectList(); + + List companyDeptRoadVOS = treeMapper.selectCompanyDeptRoadTreeData(tree); + + + // 按公司分组所有部门 + Map> companyDeptsMap = sysDepts.stream() + .filter(d -> d.getParentId() != null) + .collect(Collectors.groupingBy(DeptDO::getParentId)); + + // 过滤出叶子部门(没有子部门的部门) + Map> companyLeafDeptsMap = new HashMap<>(); + for (Map.Entry> entry : companyDeptsMap.entrySet()) { + Long companyId = entry.getKey(); + List depts = entry.getValue(); + + // 构建部门ID到部门的映射 + Map deptMap = depts.stream() + .collect(Collectors.toMap(DeptDO::getId, d -> d)); + + // 找出叶子部门(其parentId不在deptMap中的部门,或者其parentId为0的部门) + List leafDepts = depts.stream() + .filter(d -> d.getParentId() == 0 || !deptMap.containsKey(d.getParentId())) + .collect(Collectors.toList()); + + companyLeafDeptsMap.put(companyId, leafDepts); + } + + // 建立现有结果的映射: 公司ID -> CompanyDeptRoadVO + Map existingCompanyMap = companyDeptRoadVOS.stream() + .collect(Collectors.toMap( + CompanyDeptRoadVO::getCompanyId, + vo -> vo, + (existing, replacement) -> existing + )); + + // 遍历所有公司,补充缺失的公司和部门 + for (Map.Entry> entry : companyLeafDeptsMap.entrySet()) { + Long companyId = entry.getKey(); + List depts = entry.getValue(); + + CompanyDeptRoadVO companyVO; + if (!existingCompanyMap.containsKey(companyId)) { + // 如果公司不存在,创建新的公司对象 + companyVO = new CompanyDeptRoadVO(); + companyVO.setCompanyId(companyId); + companyVO.setCompanyName(DictFrameworkUtils.parseDictDataValue("belongCompanyId", companyId + "")); + companyVO.setDepts(new ArrayList<>()); + companyDeptRoadVOS.add(companyVO); + } else { + companyVO = existingCompanyMap.get(companyId); + } + + // 建立该公司下已存在的部门映射: 部门ID -> DeptVO + Map existingDeptMap = companyVO.getDepts().stream() + .collect(Collectors.toMap( + deptVO -> Long.valueOf(deptVO.getDeptId()), + deptVO -> deptVO, + (existing, replacement) -> existing + )); + + // 补充缺失的部门(仅叶子部门) + for (DeptDO sysDept : depts) { + Long deptId = sysDept.getId(); + if (!existingDeptMap.containsKey(deptId)) { + // 创建缺失的部门对象 + CompanyDeptRoadVO.DeptVO missingDept = new CompanyDeptRoadVO.DeptVO(); + missingDept.setDeptId(deptId); + missingDept.setDeptName(sysDept.getName()); + missingDept.setRoads(new ArrayList<>()); + companyVO.getDepts().add(missingDept); + } + } + } + return companyDeptRoadVOS; + } + + @Override + public PageResult getTreesByRoadId(TreePageReqVO pageReqVO) { + PageResult treePage = this.getTreePage(pageReqVO); + List roadTreeVOS = treePage.getList().stream() + .map(treeDO -> { + RoadTreeVO roadTreeVO = new RoadTreeVO(); + BeanUtils.copyProperties(treeDO, roadTreeVO); + return roadTreeVO; + }) + .collect(Collectors.toList()); + return new PageResult<>(roadTreeVOS, treePage.getTotal()); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogService.java new file mode 100644 index 0000000..1ffa963 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.treechangelog; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.treechangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.treechangelog.TreeChangeLogDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 一树一档案修改记录 Service 接口 + * + * @author 超级管理员 + */ +public interface TreeChangeLogService { + + /** + * 创建一树一档案修改记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTreeChangeLog(@Valid TreeChangeLogSaveReqVO createReqVO); + + /** + * 更新一树一档案修改记录 + * + * @param updateReqVO 更新信息 + */ + void updateTreeChangeLog(@Valid TreeChangeLogSaveReqVO updateReqVO); + + /** + * 删除一树一档案修改记录 + * + * @param id 编号 + */ + void deleteTreeChangeLog(Long id); + + /** + * 批量删除一树一档案修改记录 + * + * @param ids 编号 + */ + void deleteTreeChangeLogListByIds(List ids); + + /** + * 获得一树一档案修改记录 + * + * @param id 编号 + * @return 一树一档案修改记录 + */ + TreeChangeLogDO getTreeChangeLog(Long id); + + /** + * 获得一树一档案修改记录分页 + * + * @param pageReqVO 分页查询 + * @return 一树一档案修改记录分页 + */ + PageResult getTreeChangeLogPage(TreeChangeLogPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogServiceImpl.java new file mode 100644 index 0000000..979d078 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treechangelog/TreeChangeLogServiceImpl.java @@ -0,0 +1,87 @@ +package com.zteits.urbanops.module.garden.service.treechangelog; + +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.treechangelog.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.treechangelog.TreeChangeLogDO; +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.treechangelog.TreeChangeLogMapper; + +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 TreeChangeLogServiceImpl implements TreeChangeLogService { + + @Resource + private TreeChangeLogMapper treeChangeLogMapper; + + @Override + public Long createTreeChangeLog(TreeChangeLogSaveReqVO createReqVO) { + // 插入 + TreeChangeLogDO treeChangeLog = BeanUtils.toBean(createReqVO, TreeChangeLogDO.class); + treeChangeLogMapper.insert(treeChangeLog); + + // 返回 + return treeChangeLog.getId(); + } + + @Override + public void updateTreeChangeLog(TreeChangeLogSaveReqVO updateReqVO) { + // 校验存在 + validateTreeChangeLogExists(updateReqVO.getId()); + // 更新 + TreeChangeLogDO updateObj = BeanUtils.toBean(updateReqVO, TreeChangeLogDO.class); + treeChangeLogMapper.updateById(updateObj); + } + + @Override + public void deleteTreeChangeLog(Long id) { + // 校验存在 + validateTreeChangeLogExists(id); + // 删除 + treeChangeLogMapper.deleteById(id); + } + + @Override + public void deleteTreeChangeLogListByIds(List ids) { + // 删除 + treeChangeLogMapper.deleteByIds(ids); + } + + + private void validateTreeChangeLogExists(Long id) { + if (treeChangeLogMapper.selectById(id) == null) { + throw exception(TREE_CHANGE_LOG_NOT_EXISTS); + } + } + + @Override + public TreeChangeLogDO getTreeChangeLog(Long id) { + return treeChangeLogMapper.selectById(id); + } + + @Override + public PageResult getTreeChangeLogPage(TreeChangeLogPageReqVO pageReqVO) { + PageResult pageResult = treeChangeLogMapper.selectPage(pageReqVO); + pageResult.getList().forEach(TreeChangeLogDO::domainToImg); + return pageResult; + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesService.java deleted file mode 100644 index 2d299d6..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zteits.urbanops.module.garden.service.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageParam; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenOldtreesDO; - -import java.util.List; - -public interface GardenOldtreesService { - PageResult selectPage(PageParam pageParam, GardenOldtreesDO where); - List selectList(GardenOldtreesDO where); - GardenOldtreesDO selectById(String id); - Boolean insert(GardenOldtreesDO entity); - Boolean update(GardenOldtreesDO entity); - Boolean deleteByIds(List ids); -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesServiceImpl.java deleted file mode 100644 index dcf3f8c..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenOldtreesServiceImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.zteits.urbanops.module.garden.service.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageParam; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenOldtreesDO; -import com.zteits.urbanops.module.garden.dal.mysql.treerecord.GardenOldtreesMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class GardenOldtreesServiceImpl implements GardenOldtreesService { - - @Resource - private GardenOldtreesMapper mapper; - - @Override - public PageResult selectPage(PageParam pageParam, GardenOldtreesDO where) { - return mapper.selectPage(pageParam, where); - } - - @Override - public List selectList(GardenOldtreesDO where) { - return mapper.selectList(new com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX() - .likeIfPresent(GardenOldtreesDO::getTreenumber, where.getTreenumber()) - .likeIfPresent(GardenOldtreesDO::getLatinname, where.getLatinname()) - .eqIfPresent(GardenOldtreesDO::getStreet, where.getStreet()) - .eqIfPresent(GardenOldtreesDO::getMaintainunit, where.getMaintainunit()) - .eqIfPresent(GardenOldtreesDO::getDeptId, where.getDeptId()) - .orderByDesc(GardenOldtreesDO::getUpdateTime)); - } - - @Override - public GardenOldtreesDO selectById(String id) { - return mapper.selectById(id); - } - - @Override - public Boolean insert(GardenOldtreesDO entity) { - return mapper.insert(entity) > 0; - } - - @Override - public Boolean update(GardenOldtreesDO entity) { - return mapper.updateById(entity) > 0; - } - - @Override - public Boolean deleteByIds(List ids) { - return mapper.deleteBatchIds(ids) > 0; - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeService.java deleted file mode 100644 index 2ecae2b..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.zteits.urbanops.module.garden.service.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenTreeDO; - -import java.util.List; - -public interface GardenTreeService { - PageResult selectPage(GardenTreeDO where, Integer pageNo, Integer pageSize); - GardenTreeDO selectById(Long id); - Boolean insert(GardenTreeDO entity); - Boolean update(GardenTreeDO entity); - Boolean deleteById(Long id); - Boolean deleteByIds(List ids); - - java.util.List getCompanyDeptRoadTreeData(Long belongCompanyId, String roadName, Long deptId); - - java.util.List getTreesByRoadId(Long road); -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeServiceImpl.java deleted file mode 100644 index 3385145..0000000 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/treerecord/GardenTreeServiceImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.zteits.urbanops.module.garden.service.treerecord; - -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.module.garden.dal.dataobject.treerecord.GardenTreeDO; -import com.zteits.urbanops.module.garden.dal.mysql.treerecord.GardenTreeMapper; -import com.zteits.urbanops.module.garden.controller.admin.treerecord.vo.CompanyDeptRoadVO; -import com.zteits.urbanops.module.garden.controller.admin.treerecord.vo.RoadTreeVO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.util.stream.Collectors; - -@Service -public class GardenTreeServiceImpl implements GardenTreeService { - - @Resource - private GardenTreeMapper gardenTreeMapper; - - @Override - public PageResult selectPage(GardenTreeDO where, Integer pageNo, Integer pageSize) { - com.zteits.urbanops.framework.common.pojo.PageParam pageParam = new com.zteits.urbanops.framework.common.pojo.PageParam(); - pageParam.setPageNo(pageNo); - pageParam.setPageSize(pageSize); - return gardenTreeMapper.selectPage(pageParam, where); - } - - @Override - public GardenTreeDO selectById(Long id) { - return gardenTreeMapper.selectById(id); - } - - @Override - public Boolean insert(GardenTreeDO entity) { - return gardenTreeMapper.insert(entity) > 0; - } - - @Override - public Boolean update(GardenTreeDO entity) { - return gardenTreeMapper.updateById(entity) > 0; - } - - @Override - public Boolean deleteById(Long id) { - return gardenTreeMapper.deleteById(id) > 0; - } - - @Override - public Boolean deleteByIds(List ids) { - return gardenTreeMapper.deleteBatchIds(ids) > 0; - } - - @Override - public List getCompanyDeptRoadTreeData(Long belongCompanyId, String roadName, Long deptId) { - List rows = gardenTreeMapper.selectCompanyDeptRoadRows(); - Map> byCompany = rows.stream().collect(Collectors.groupingBy(r -> r.companyId)); - List result = new ArrayList<>(); - for (Map.Entry> entry : byCompany.entrySet()) { - CompanyDeptRoadVO company = new CompanyDeptRoadVO(); - company.setCompanyId(entry.getKey()); - company.setCompanyName(entry.getValue().get(0).companyName); - Map> byDept = entry.getValue().stream().collect(Collectors.groupingBy(r -> r.deptId)); - List deptList = new ArrayList<>(); - for (Map.Entry> d : byDept.entrySet()) { - CompanyDeptRoadVO.DeptVO dept = new CompanyDeptRoadVO.DeptVO(); - dept.setDeptId(d.getKey()); - dept.setDeptName(d.getValue().get(0).deptName); - List roads = new ArrayList<>(); - for (GardenTreeMapper.CompanyDeptRoadRow r : d.getValue()) { - CompanyDeptRoadVO.RoadVO roadVO = new CompanyDeptRoadVO.RoadVO(); - roadVO.setRoadId(r.roadId); - roadVO.setRoadName(r.roadName); - roadVO.setTreeCount(r.treeCount); - roadVO.setRecordedCount(r.recordedCount); - roadVO.setStartRemark(r.startRemark); - roadVO.setEndRemark(r.endRemark); - roads.add(roadVO); - } - dept.setRoads(roads); - deptList.add(dept); - } - company.setDepts(deptList); - result.add(company); - } - return result; - } - - @Override - public List getTreesByRoadId(Long road) { - return gardenTreeMapper.selectTreesByRoadId(road); - } -} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/oldtrees/OldtreesMapper.xml b/urbanops-module-garden/src/main/resources/mapper/oldtrees/OldtreesMapper.xml new file mode 100644 index 0000000..14e8394 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/oldtrees/OldtreesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/oldtreeschangelog/OldtreesChangeLogMapper.xml b/urbanops-module-garden/src/main/resources/mapper/oldtreeschangelog/OldtreesChangeLogMapper.xml new file mode 100644 index 0000000..7303115 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/oldtreeschangelog/OldtreesChangeLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml b/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml new file mode 100644 index 0000000..bc89b70 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/treechangelog/TreeChangeLogMapper.xml b/urbanops-module-garden/src/main/resources/mapper/treechangelog/TreeChangeLogMapper.xml new file mode 100644 index 0000000..d0399e8 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/treechangelog/TreeChangeLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/AttachmentController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/AttachmentController.java new file mode 100644 index 0000000..1c21434 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/AttachmentController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.workorder.controller.admin.attachment; + +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.workorder.controller.admin.attachment.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; +import com.zteits.urbanops.module.workorder.service.attachment.AttachmentService; + +@Tag(name = "管理后台 - 工单附件信息") +@RestController +@RequestMapping("/workorder/attachment") +@Validated +public class AttachmentController { + + @Resource + private AttachmentService attachmentService; + + @PostMapping("/create") + @Operation(summary = "创建工单附件信息") + @PreAuthorize("@ss.hasPermission('workorder:attachment:create')") + public CommonResult createAttachment(@Valid @RequestBody AttachmentSaveReqVO createReqVO) { + return success(attachmentService.createAttachment(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工单附件信息") + @PreAuthorize("@ss.hasPermission('workorder:attachment:update')") + public CommonResult updateAttachment(@Valid @RequestBody AttachmentSaveReqVO updateReqVO) { + attachmentService.updateAttachment(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工单附件信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('workorder:attachment:delete')") + public CommonResult deleteAttachment(@RequestParam("id") Long id) { + attachmentService.deleteAttachment(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工单附件信息") + @PreAuthorize("@ss.hasPermission('workorder:attachment:delete')") + public CommonResult deleteAttachmentList(@RequestParam("ids") List ids) { + attachmentService.deleteAttachmentListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工单附件信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('workorder:attachment:query')") + public CommonResult getAttachment(@RequestParam("id") Long id) { + AttachmentDO attachment = attachmentService.getAttachment(id); + return success(BeanUtils.toBean(attachment, AttachmentRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工单附件信息分页") + @PreAuthorize("@ss.hasPermission('workorder:attachment:query')") + public CommonResult> getAttachmentPage(@Valid AttachmentPageReqVO pageReqVO) { + PageResult pageResult = attachmentService.getAttachmentPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AttachmentRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工单附件信息 Excel") + @PreAuthorize("@ss.hasPermission('workorder:attachment:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAttachmentExcel(@Valid AttachmentPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = attachmentService.getAttachmentPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工单附件信息.xls", "数据", AttachmentRespVO.class, + BeanUtils.toBean(list, AttachmentRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentPageReqVO.java new file mode 100644 index 0000000..e6090c3 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentPageReqVO.java @@ -0,0 +1,44 @@ +package com.zteits.urbanops.module.workorder.controller.admin.attachment.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 AttachmentPageReqVO extends PageParam { + + @Schema(description = "工单号") + private String orderNo; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + + @Schema(description = "业务类型:01 问题图片,02 街道图片,03 选景图片", example = "1") + private String busiType; + + @Schema(description = "文件名称") + private String fileNames; + + @Schema(description = "路径", example = "https://www.iocoder.cn") + private String hostUrl; + + @Schema(description = "文件大小") + private String fileSize; + + @Schema(description = "文件类型", example = "2") + private String contentType; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentRespVO.java new file mode 100644 index 0000000..bc76c6e --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentRespVO.java @@ -0,0 +1,55 @@ +package com.zteits.urbanops.module.workorder.controller.admin.attachment.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 AttachmentRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4728") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工单号") + private String orderNo; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + + @Schema(description = "业务类型:01 问题图片,02 街道图片,03 选景图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("业务类型:01 问题图片,02 街道图片,03 选景图片") + private String busiType; + + @Schema(description = "文件名称") + @ExcelProperty("文件名称") + private String fileNames; + + @Schema(description = "路径", example = "https://www.iocoder.cn") + @ExcelProperty("路径") + private String hostUrl; + + @Schema(description = "文件大小") + @ExcelProperty("文件大小") + private String fileSize; + + @Schema(description = "文件类型", example = "2") + @ExcelProperty("文件类型") + private String contentType; + + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @ExcelProperty("描述") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentSaveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentSaveReqVO.java new file mode 100644 index 0000000..101d017 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/attachment/vo/AttachmentSaveReqVO.java @@ -0,0 +1,43 @@ +package com.zteits.urbanops.module.workorder.controller.admin.attachment.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 AttachmentSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4728") + private Long id; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工单号不能为空") + private String orderNo; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl 园林,wy 物业,sz 市政 不能为空") + private String busiLine; + + @Schema(description = "业务类型:01 问题图片,02 街道图片,03 选景图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "业务类型:01 问题图片,02 街道图片,03 选景图片不能为空") + private String busiType; + + @Schema(description = "文件名称") + private String fileNames; + + @Schema(description = "路径", example = "https://www.iocoder.cn") + private String hostUrl; + + @Schema(description = "文件大小") + private String fileSize; + + @Schema(description = "文件类型", example = "2") + private String contentType; + + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "描述不能为空") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java new file mode 100644 index 0000000..32806fc --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.workorder.controller.admin.maininfo; + +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.workorder.controller.admin.maininfo.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.module.workorder.service.maininfo.MainInfoService; + +@Tag(name = "管理后台 - 工单信息") +@RestController +@RequestMapping("/workorder/main-info") +@Validated +public class MainInfoController { + + @Resource + private MainInfoService mainInfoService; + + @PostMapping("/create") + @Operation(summary = "创建工单信息") + @PreAuthorize("@ss.hasPermission('workorder:main-info:create')") + public CommonResult createMainInfo(@Valid @RequestBody MainInfoSaveReqVO createReqVO) { + return success(mainInfoService.createMainInfo(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工单信息") + @PreAuthorize("@ss.hasPermission('workorder:main-info:update')") + public CommonResult updateMainInfo(@Valid @RequestBody MainInfoSaveReqVO updateReqVO) { + mainInfoService.updateMainInfo(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工单信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('workorder:main-info:delete')") + public CommonResult deleteMainInfo(@RequestParam("id") Long id) { + mainInfoService.deleteMainInfo(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工单信息") + @PreAuthorize("@ss.hasPermission('workorder:main-info:delete')") + public CommonResult deleteMainInfoList(@RequestParam("ids") List ids) { + mainInfoService.deleteMainInfoListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工单信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") + public CommonResult getMainInfo(@RequestParam("id") Long id) { + MainInfoDO mainInfo = mainInfoService.getMainInfo(id); + return success(BeanUtils.toBean(mainInfo, MainInfoRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工单信息分页") + @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") + public CommonResult> getMainInfoPage(@Valid MainInfoPageReqVO pageReqVO) { + PageResult pageResult = mainInfoService.getMainInfoPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MainInfoRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工单信息 Excel") + @PreAuthorize("@ss.hasPermission('workorder:main-info:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMainInfoExcel(@Valid MainInfoPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = mainInfoService.getMainInfoPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工单信息.xls", "数据", MainInfoRespVO.class, + BeanUtils.toBean(list, MainInfoRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoPageReqVO.java new file mode 100644 index 0000000..83629e8 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoPageReqVO.java @@ -0,0 +1,100 @@ +package com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 MainInfoPageReqVO extends PageParam { + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + + @Schema(description = "工单号") + private String orderNo; + + @Schema(description = "工单名称", example = "张三") + private String orderName; + + @Schema(description = "来源ID", example = "1828") + private Integer sourceId; + + @Schema(description = "来源名称", example = "芋艿") + private String sourceName; + + @Schema(description = "道路ID", example = "21128") + private Long roadId; + + @Schema(description = "道路名称", example = "王五") + private String roadName; + + @Schema(description = "街道ID", example = "27852") + private String streetId; + + @Schema(description = "街道名称", example = "芋艿") + private String streetName; + + @Schema(description = "养护级别ID", example = "28278") + private Integer curingLevelId; + + @Schema(description = "养护级别", example = "王五") + private String curingLevelName; + + @Schema(description = "提交日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] commitDate; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", example = "2") + private Integer pressingType; + + @Schema(description = "提交用户ID", example = "12757") + private Long userId; + + @Schema(description = "提交用户名称", example = "王五") + private String userName; + + @Schema(description = "部门id", example = "26936") + private Long companyId; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + private Integer latLonType; + + @Schema(description = "经度") + private BigDecimal lat; + + @Schema(description = "维度") + private BigDecimal lon; + + @Schema(description = "经纬度地址") + private String lonLatAddress; + + @Schema(description = "三方工单ID") + private String thirdWorkNo; + + @Schema(description = "三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + private Integer thirdPushState; + + @Schema(description = "业务状态", example = "1") + private String buzStatus; + + @Schema(description = "审批状态", example = "2") + private Integer status; + + @Schema(description = "流程实例的编号", example = "9184") + private String processInstanceId; + + @Schema(description = "工单描述", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoRespVO.java new file mode 100644 index 0000000..f8d705c --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoRespVO.java @@ -0,0 +1,128 @@ +package com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 工单信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MainInfoRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7114") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工单号") + private String orderNo; + + @Schema(description = "工单名称", example = "张三") + @ExcelProperty("工单名称") + private String orderName; + + @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1828") + @ExcelProperty("来源ID") + private Integer sourceId; + + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("来源名称") + private String sourceName; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @ExcelProperty("道路ID") + private Long roadId; + + @Schema(description = "道路名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("道路名称") + private String roadName; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27852") + @ExcelProperty("街道ID") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("街道名称") + private String streetName; + + @Schema(description = "养护级别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28278") + @ExcelProperty("养护级别ID") + private Integer curingLevelId; + + @Schema(description = "养护级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("养护级别") + private String curingLevelName; + + @Schema(description = "提交日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("提交日期") + private LocalDateTime commitDate; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("紧急程度:1:特急;2:紧急;3:一般") + private Integer pressingType; + + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12757") + @ExcelProperty("提交用户ID") + private Long userId; + + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("提交用户名称") + private String userName; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26936") + @ExcelProperty("部门id") + private Long companyId; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + @ExcelProperty("经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯") + private Integer latLonType; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("经度") + private BigDecimal lat; + + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("维度") + private BigDecimal lon; + + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("经纬度地址") + private String lonLatAddress; + + @Schema(description = "三方工单ID") + @ExcelProperty("三方工单ID") + private String thirdWorkNo; + + @Schema(description = "三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + @ExcelProperty("三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + private Integer thirdPushState; + + @Schema(description = "业务状态", example = "1") + @ExcelProperty("业务状态") + private String buzStatus; + + @Schema(description = "审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("审批状态") + private Integer status; + + @Schema(description = "流程实例的编号", example = "9184") + @ExcelProperty("流程实例的编号") + private String processInstanceId; + + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @ExcelProperty("工单描述") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoSaveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoSaveReqVO.java new file mode 100644 index 0000000..9a3e5e4 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoSaveReqVO.java @@ -0,0 +1,116 @@ +package com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 工单信息新增/修改 Request VO") +@Data +public class MainInfoSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7114") + private Long id; + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl 园林,wy 物业,sz 市政 不能为空") + private String busiLine; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工单号不能为空") + private String orderNo; + + @Schema(description = "工单名称", example = "张三") + private String orderName; + + @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1828") + @NotNull(message = "来源ID不能为空") + private Integer sourceId; + + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "来源名称不能为空") + private String sourceName; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "道路名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "道路名称不能为空") + private String roadName; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27852") + @NotEmpty(message = "街道ID不能为空") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "街道名称不能为空") + private String streetName; + + @Schema(description = "养护级别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28278") + @NotNull(message = "养护级别ID不能为空") + private Integer curingLevelId; + + @Schema(description = "养护级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "养护级别不能为空") + private String curingLevelName; + + @Schema(description = "提交日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "提交日期不能为空") + private LocalDateTime commitDate; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "紧急程度:1:特急;2:紧急;3:一般不能为空") + private Integer pressingType; + + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12757") + @NotNull(message = "提交用户ID不能为空") + private Long userId; + + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "提交用户名称不能为空") + private String userName; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26936") + @NotNull(message = "部门id不能为空") + private Long companyId; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + private Integer latLonType; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "经度不能为空") + private BigDecimal lat; + + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "维度不能为空") + private BigDecimal lon; + + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "经纬度地址不能为空") + private String lonLatAddress; + + @Schema(description = "三方工单ID") + private String thirdWorkNo; + + @Schema(description = "三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败") + private Integer thirdPushState; + + @Schema(description = "业务状态", example = "1") + private String buzStatus; + + @Schema(description = "审批状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "审批状态不能为空") + private Integer status; + + @Schema(description = "流程实例的编号", example = "9184") + private String processInstanceId; + + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "工单描述不能为空") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/MaterialDetailController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/MaterialDetailController.java new file mode 100644 index 0000000..4b2d08b --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/MaterialDetailController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.workorder.controller.admin.materialdetail; + +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.workorder.controller.admin.materialdetail.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.materialdetail.MaterialDetailDO; +import com.zteits.urbanops.module.workorder.service.materialdetail.MaterialDetailService; + +@Tag(name = "管理后台 - 工单耗材明细") +@RestController +@RequestMapping("/workorder/material-detail") +@Validated +public class MaterialDetailController { + + @Resource + private MaterialDetailService materialDetailService; + + @PostMapping("/create") + @Operation(summary = "创建工单耗材明细") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:create')") + public CommonResult createMaterialDetail(@Valid @RequestBody MaterialDetailSaveReqVO createReqVO) { + return success(materialDetailService.createMaterialDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工单耗材明细") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:update')") + public CommonResult updateMaterialDetail(@Valid @RequestBody MaterialDetailSaveReqVO updateReqVO) { + materialDetailService.updateMaterialDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工单耗材明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('workorder:material-detail:delete')") + public CommonResult deleteMaterialDetail(@RequestParam("id") Long id) { + materialDetailService.deleteMaterialDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工单耗材明细") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:delete')") + public CommonResult deleteMaterialDetailList(@RequestParam("ids") List ids) { + materialDetailService.deleteMaterialDetailListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工单耗材明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:query')") + public CommonResult getMaterialDetail(@RequestParam("id") Long id) { + MaterialDetailDO materialDetail = materialDetailService.getMaterialDetail(id); + return success(BeanUtils.toBean(materialDetail, MaterialDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工单耗材明细分页") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:query')") + public CommonResult> getMaterialDetailPage(@Valid MaterialDetailPageReqVO pageReqVO) { + PageResult pageResult = materialDetailService.getMaterialDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工单耗材明细 Excel") + @PreAuthorize("@ss.hasPermission('workorder:material-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialDetailExcel(@Valid MaterialDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialDetailService.getMaterialDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工单耗材明细.xls", "数据", MaterialDetailRespVO.class, + BeanUtils.toBean(list, MaterialDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailPageReqVO.java new file mode 100644 index 0000000..faaa226 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailPageReqVO.java @@ -0,0 +1,59 @@ +package com.zteits.urbanops.module.workorder.controller.admin.materialdetail.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 MaterialDetailPageReqVO extends PageParam { + + @Schema(description = "工单号") + private String orderNo; + + @Schema(description = "提交用户ID", example = "10300") + private Long userId; + + @Schema(description = "提交用户名称", example = "赵六") + private String userName; + + @Schema(description = "种类ID", example = "27821") + private Long classifyId; + + @Schema(description = "种类名称", example = "张三") + private String classifyName; + + @Schema(description = "类别ID", example = "23969") + private Long typeId; + + @Schema(description = "类别名称", example = "李四") + private String typeName; + + @Schema(description = "类别明细ID", example = "11240") + private Long typeDetailId; + + @Schema(description = "类别明细名称", example = "赵六") + private String typeDetailName; + + @Schema(description = "使用数量", example = "20141") + private Double userCount; + + @Schema(description = "单位", example = "李四") + private String unitName; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private String status; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailRespVO.java new file mode 100644 index 0000000..89f8a59 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailRespVO.java @@ -0,0 +1,75 @@ +package com.zteits.urbanops.module.workorder.controller.admin.materialdetail.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 MaterialDetailRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "234") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工单号") + private String orderNo; + + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10300") + @ExcelProperty("提交用户ID") + private Long userId; + + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("提交用户名称") + private String userName; + + @Schema(description = "种类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27821") + @ExcelProperty("种类ID") + private Long classifyId; + + @Schema(description = "种类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("种类名称") + private String classifyName; + + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23969") + @ExcelProperty("类别ID") + private Long typeId; + + @Schema(description = "类别名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("类别名称") + private String typeName; + + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11240") + @ExcelProperty("类别明细ID") + private Long typeDetailId; + + @Schema(description = "类别明细名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("类别明细名称") + private String typeDetailName; + + @Schema(description = "使用数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20141") + @ExcelProperty("使用数量") + private Double userCount; + + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("单位") + private String unitName; + + @Schema(description = "状态(0正常 1停用)", example = "1") + @ExcelProperty("状态(0正常 1停用)") + private String status; + + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @ExcelProperty("描述") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java new file mode 100644 index 0000000..fd21287 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java @@ -0,0 +1,66 @@ +package com.zteits.urbanops.module.workorder.controller.admin.materialdetail.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 MaterialDetailSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "234") + private Long id; + + @Schema(description = "工单号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工单号不能为空") + private String orderNo; + + @Schema(description = "提交用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10300") + @NotNull(message = "提交用户ID不能为空") + private Long userId; + + @Schema(description = "提交用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "提交用户名称不能为空") + private String userName; + + @Schema(description = "种类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27821") + @NotNull(message = "种类ID不能为空") + private Long classifyId; + + @Schema(description = "种类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "种类名称不能为空") + private String classifyName; + + @Schema(description = "类别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23969") + @NotNull(message = "类别ID不能为空") + private Long typeId; + + @Schema(description = "类别名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "类别名称不能为空") + private String typeName; + + @Schema(description = "类别明细ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11240") + @NotNull(message = "类别明细ID不能为空") + private Long typeDetailId; + + @Schema(description = "类别明细名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "类别明细名称不能为空") + private String typeDetailName; + + @Schema(description = "使用数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20141") + @NotNull(message = "使用数量不能为空") + private Double userCount; + + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "单位不能为空") + private String unitName; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private String status; + + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "描述不能为空") + private String remark; + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/attachment/AttachmentDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/attachment/AttachmentDO.java new file mode 100644 index 0000000..68bd6a0 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/attachment/AttachmentDO.java @@ -0,0 +1,64 @@ +package com.zteits.urbanops.module.workorder.dal.dataobject.attachment; + +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("workorder_attachment") +@KeySequence("workorder_attachment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttachmentDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 工单号 + */ + private String orderNo; + /** + * 业务线:yl 园林,wy 物业,sz 市政 + */ + private String busiLine; + /** + * 业务类型:01 问题图片,02 街道图片,03 选景图片 + */ + private String busiType; + /** + * 文件名称 + */ + private String fileNames; + /** + * 路径 + */ + private String hostUrl; + /** + * 文件大小 + */ + private String fileSize; + /** + * 文件类型 + */ + private String contentType; + /** + * 描述 + */ + private String remark; + + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java new file mode 100644 index 0000000..d320ae3 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoDO.java @@ -0,0 +1,139 @@ +package com.zteits.urbanops.module.workorder.dal.dataobject.maininfo; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.math.BigDecimal; +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("workorder_main_info") +@KeySequence("workorder_main_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MainInfoDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 业务线:yl 园林,wy 物业,sz 市政 + */ + private String busiLine; + /** + * 工单号 + */ + private String orderNo; + /** + * 工单名称 + */ + private String orderName; + /** + * 来源ID + */ + private Integer sourceId; + /** + * 来源名称 + */ + private String sourceName; + /** + * 道路ID + */ + private Long roadId; + /** + * 道路名称 + */ + private String roadName; + /** + * 街道ID + */ + private String streetId; + /** + * 街道名称 + */ + private String streetName; + /** + * 养护级别ID + */ + private Integer curingLevelId; + /** + * 养护级别 + */ + private String curingLevelName; + /** + * 提交日期 + */ + private LocalDateTime commitDate; + /** + * 紧急程度:1:特急;2:紧急;3:一般 + */ + private Integer pressingType; + /** + * 提交用户ID + */ + private Long userId; + /** + * 提交用户名称 + */ + private String userName; + /** + * 部门id + */ + private Long companyId; + /** + * 经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯 + */ + private Integer latLonType; + /** + * 经度 + */ + private BigDecimal lat; + /** + * 维度 + */ + private BigDecimal lon; + /** + * 经纬度地址 + */ + private String lonLatAddress; + /** + * 三方工单ID + */ + private String thirdWorkNo; + /** + * 三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败 + */ + private Integer thirdPushState; + /** + * 业务状态 + */ + private String buzStatus; + /** + * 审批状态 + */ + private Integer status; + /** + * 流程实例的编号 + */ + private String processInstanceId; + /** + * 工单描述 + */ + private String remark; + + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/materialdetail/MaterialDetailDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/materialdetail/MaterialDetailDO.java new file mode 100644 index 0000000..215fd64 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/materialdetail/MaterialDetailDO.java @@ -0,0 +1,84 @@ +package com.zteits.urbanops.module.workorder.dal.dataobject.materialdetail; + +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("workorder_material_detail") +@KeySequence("workorder_material_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MaterialDetailDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 工单号 + */ + private String orderNo; + /** + * 提交用户ID + */ + private Long userId; + /** + * 提交用户名称 + */ + private String userName; + /** + * 种类ID + */ + private Long classifyId; + /** + * 种类名称 + */ + private String classifyName; + /** + * 类别ID + */ + private Long typeId; + /** + * 类别名称 + */ + private String typeName; + /** + * 类别明细ID + */ + private Long typeDetailId; + /** + * 类别明细名称 + */ + private String typeDetailName; + /** + * 使用数量 + */ + private Double userCount; + /** + * 单位 + */ + private String unitName; + /** + * 状态(0正常 1停用) + */ + private String status; + /** + * 描述 + */ + private String remark; + + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/attachment/AttachmentMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/attachment/AttachmentMapper.java new file mode 100644 index 0000000..01ebd98 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/attachment/AttachmentMapper.java @@ -0,0 +1,34 @@ +package com.zteits.urbanops.module.workorder.dal.mysql.attachment; + +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.workorder.dal.dataobject.attachment.AttachmentDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.workorder.controller.admin.attachment.vo.*; + +/** + * 工单附件信息 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AttachmentMapper extends BaseMapperX { + + default PageResult selectPage(AttachmentPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AttachmentDO::getOrderNo, reqVO.getOrderNo()) + .eqIfPresent(AttachmentDO::getBusiLine, reqVO.getBusiLine()) + .eqIfPresent(AttachmentDO::getBusiType, reqVO.getBusiType()) + .eqIfPresent(AttachmentDO::getFileNames, reqVO.getFileNames()) + .eqIfPresent(AttachmentDO::getHostUrl, reqVO.getHostUrl()) + .eqIfPresent(AttachmentDO::getFileSize, reqVO.getFileSize()) + .eqIfPresent(AttachmentDO::getContentType, reqVO.getContentType()) + .eqIfPresent(AttachmentDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AttachmentDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AttachmentDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java new file mode 100644 index 0000000..70d1a17 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java @@ -0,0 +1,52 @@ +package com.zteits.urbanops.module.workorder.dal.mysql.maininfo; + +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.workorder.dal.dataobject.maininfo.MainInfoDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*; + +/** + * 工单信息 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface MainInfoMapper extends BaseMapperX { + + default PageResult selectPage(MainInfoPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MainInfoDO::getBusiLine, reqVO.getBusiLine()) + .eqIfPresent(MainInfoDO::getOrderNo, reqVO.getOrderNo()) + .likeIfPresent(MainInfoDO::getOrderName, reqVO.getOrderName()) + .eqIfPresent(MainInfoDO::getSourceId, reqVO.getSourceId()) + .likeIfPresent(MainInfoDO::getSourceName, reqVO.getSourceName()) + .eqIfPresent(MainInfoDO::getRoadId, reqVO.getRoadId()) + .likeIfPresent(MainInfoDO::getRoadName, reqVO.getRoadName()) + .eqIfPresent(MainInfoDO::getStreetId, reqVO.getStreetId()) + .likeIfPresent(MainInfoDO::getStreetName, reqVO.getStreetName()) + .eqIfPresent(MainInfoDO::getCuringLevelId, reqVO.getCuringLevelId()) + .likeIfPresent(MainInfoDO::getCuringLevelName, reqVO.getCuringLevelName()) + .betweenIfPresent(MainInfoDO::getCommitDate, reqVO.getCommitDate()) + .eqIfPresent(MainInfoDO::getPressingType, reqVO.getPressingType()) + .eqIfPresent(MainInfoDO::getUserId, reqVO.getUserId()) + .likeIfPresent(MainInfoDO::getUserName, reqVO.getUserName()) + .eqIfPresent(MainInfoDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(MainInfoDO::getLatLonType, reqVO.getLatLonType()) + .eqIfPresent(MainInfoDO::getLat, reqVO.getLat()) + .eqIfPresent(MainInfoDO::getLon, reqVO.getLon()) + .eqIfPresent(MainInfoDO::getLonLatAddress, reqVO.getLonLatAddress()) + .eqIfPresent(MainInfoDO::getThirdWorkNo, reqVO.getThirdWorkNo()) + .eqIfPresent(MainInfoDO::getThirdPushState, reqVO.getThirdPushState()) + .eqIfPresent(MainInfoDO::getBuzStatus, reqVO.getBuzStatus()) + .eqIfPresent(MainInfoDO::getStatus, reqVO.getStatus()) + .eqIfPresent(MainInfoDO::getProcessInstanceId, reqVO.getProcessInstanceId()) + .eqIfPresent(MainInfoDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MainInfoDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MainInfoDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/materialdetail/MaterialDetailMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/materialdetail/MaterialDetailMapper.java new file mode 100644 index 0000000..a85fbbb --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/materialdetail/MaterialDetailMapper.java @@ -0,0 +1,39 @@ +package com.zteits.urbanops.module.workorder.dal.mysql.materialdetail; + +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.workorder.dal.dataobject.materialdetail.MaterialDetailDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.workorder.controller.admin.materialdetail.vo.*; + +/** + * 工单耗材明细 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface MaterialDetailMapper extends BaseMapperX { + + default PageResult selectPage(MaterialDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialDetailDO::getOrderNo, reqVO.getOrderNo()) + .eqIfPresent(MaterialDetailDO::getUserId, reqVO.getUserId()) + .likeIfPresent(MaterialDetailDO::getUserName, reqVO.getUserName()) + .eqIfPresent(MaterialDetailDO::getClassifyId, reqVO.getClassifyId()) + .likeIfPresent(MaterialDetailDO::getClassifyName, reqVO.getClassifyName()) + .eqIfPresent(MaterialDetailDO::getTypeId, reqVO.getTypeId()) + .likeIfPresent(MaterialDetailDO::getTypeName, reqVO.getTypeName()) + .eqIfPresent(MaterialDetailDO::getTypeDetailId, reqVO.getTypeDetailId()) + .likeIfPresent(MaterialDetailDO::getTypeDetailName, reqVO.getTypeDetailName()) + .eqIfPresent(MaterialDetailDO::getUserCount, reqVO.getUserCount()) + .likeIfPresent(MaterialDetailDO::getUnitName, reqVO.getUnitName()) + .eqIfPresent(MaterialDetailDO::getStatus, reqVO.getStatus()) + .eqIfPresent(MaterialDetailDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MaterialDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java new file mode 100644 index 0000000..9ebffe2 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java @@ -0,0 +1,19 @@ +package com.zteits.urbanops.module.workorder.enums; + + +import com.zteits.urbanops.framework.common.exception.ErrorCode; + +/** + * workorder 错误码枚举类 + *

+ * workorder 系统,使用 1-100-000-000 段 + */ +public interface ErrorCodeConstants { + + // ========== server 工单 1-100-001-000 ========== + ErrorCode MAIN_INFO_NOT_EXISTS = new ErrorCode(1-100-001-000, "工单信息不存在"); + + ErrorCode ATTACHMENT_NOT_EXISTS = new ErrorCode(1-100-002-000, "工单附件信息不存在"); + + ErrorCode MATERIAL_DETAIL_NOT_EXISTS = new ErrorCode(1-100-003-000, "工单耗材明细不存在"); +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentService.java new file mode 100644 index 0000000..bf01a32 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.workorder.service.attachment; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.workorder.controller.admin.attachment.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 工单附件信息 Service 接口 + * + * @author 超级管理员 + */ +public interface AttachmentService { + + /** + * 创建工单附件信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAttachment(@Valid AttachmentSaveReqVO createReqVO); + + /** + * 更新工单附件信息 + * + * @param updateReqVO 更新信息 + */ + void updateAttachment(@Valid AttachmentSaveReqVO updateReqVO); + + /** + * 删除工单附件信息 + * + * @param id 编号 + */ + void deleteAttachment(Long id); + + /** + * 批量删除工单附件信息 + * + * @param ids 编号 + */ + void deleteAttachmentListByIds(List ids); + + /** + * 获得工单附件信息 + * + * @param id 编号 + * @return 工单附件信息 + */ + AttachmentDO getAttachment(Long id); + + /** + * 获得工单附件信息分页 + * + * @param pageReqVO 分页查询 + * @return 工单附件信息分页 + */ + PageResult getAttachmentPage(AttachmentPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentServiceImpl.java new file mode 100644 index 0000000..0af1491 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentServiceImpl.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.workorder.service.attachment; + +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.workorder.controller.admin.attachment.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; +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.workorder.dal.mysql.attachment.AttachmentMapper; + +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.workorder.enums.ErrorCodeConstants.*; + +/** + * 工单附件信息 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AttachmentServiceImpl implements AttachmentService { + + @Resource + private AttachmentMapper attachmentMapper; + + @Override + public Long createAttachment(AttachmentSaveReqVO createReqVO) { + // 插入 + AttachmentDO attachment = BeanUtils.toBean(createReqVO, AttachmentDO.class); + attachmentMapper.insert(attachment); + + // 返回 + return attachment.getId(); + } + + @Override + public void updateAttachment(AttachmentSaveReqVO updateReqVO) { + // 校验存在 + validateAttachmentExists(updateReqVO.getId()); + // 更新 + AttachmentDO updateObj = BeanUtils.toBean(updateReqVO, AttachmentDO.class); + attachmentMapper.updateById(updateObj); + } + + @Override + public void deleteAttachment(Long id) { + // 校验存在 + validateAttachmentExists(id); + // 删除 + attachmentMapper.deleteById(id); + } + + @Override + public void deleteAttachmentListByIds(List ids) { + // 删除 + attachmentMapper.deleteByIds(ids); + } + + + private void validateAttachmentExists(Long id) { + if (attachmentMapper.selectById(id) == null) { + throw exception(ATTACHMENT_NOT_EXISTS); + } + } + + @Override + public AttachmentDO getAttachment(Long id) { + return attachmentMapper.selectById(id); + } + + @Override + public PageResult getAttachmentPage(AttachmentPageReqVO pageReqVO) { + return attachmentMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoService.java new file mode 100644 index 0000000..95cee14 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.workorder.service.maininfo; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 工单信息 Service 接口 + * + * @author 超级管理员 + */ +public interface MainInfoService { + + /** + * 创建工单信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMainInfo(@Valid MainInfoSaveReqVO createReqVO); + + /** + * 更新工单信息 + * + * @param updateReqVO 更新信息 + */ + void updateMainInfo(@Valid MainInfoSaveReqVO updateReqVO); + + /** + * 删除工单信息 + * + * @param id 编号 + */ + void deleteMainInfo(Long id); + + /** + * 批量删除工单信息 + * + * @param ids 编号 + */ + void deleteMainInfoListByIds(List ids); + + /** + * 获得工单信息 + * + * @param id 编号 + * @return 工单信息 + */ + MainInfoDO getMainInfo(Long id); + + /** + * 获得工单信息分页 + * + * @param pageReqVO 分页查询 + * @return 工单信息分页 + */ + PageResult getMainInfoPage(MainInfoPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java new file mode 100644 index 0000000..3b11d64 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.workorder.service.maininfo; + +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.workorder.controller.admin.maininfo.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +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.workorder.dal.mysql.maininfo.MainInfoMapper; + +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.workorder.enums.ErrorCodeConstants.*; + +/** + * 工单信息 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class MainInfoServiceImpl implements MainInfoService { + + @Resource + private MainInfoMapper mainInfoMapper; + + @Override + public Long createMainInfo(MainInfoSaveReqVO createReqVO) { + // 插入 + MainInfoDO mainInfo = BeanUtils.toBean(createReqVO, MainInfoDO.class); + mainInfoMapper.insert(mainInfo); + + // 返回 + return mainInfo.getId(); + } + + @Override + public void updateMainInfo(MainInfoSaveReqVO updateReqVO) { + // 校验存在 + validateMainInfoExists(updateReqVO.getId()); + // 更新 + MainInfoDO updateObj = BeanUtils.toBean(updateReqVO, MainInfoDO.class); + mainInfoMapper.updateById(updateObj); + } + + @Override + public void deleteMainInfo(Long id) { + // 校验存在 + validateMainInfoExists(id); + // 删除 + mainInfoMapper.deleteById(id); + } + + @Override + public void deleteMainInfoListByIds(List ids) { + // 删除 + mainInfoMapper.deleteByIds(ids); + } + + + private void validateMainInfoExists(Long id) { + if (mainInfoMapper.selectById(id) == null) { + throw exception(MAIN_INFO_NOT_EXISTS); + } + } + + @Override + public MainInfoDO getMainInfo(Long id) { + return mainInfoMapper.selectById(id); + } + + @Override + public PageResult getMainInfoPage(MainInfoPageReqVO pageReqVO) { + return mainInfoMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailService.java new file mode 100644 index 0000000..812fe24 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.workorder.service.materialdetail; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.workorder.controller.admin.materialdetail.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.materialdetail.MaterialDetailDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 工单耗材明细 Service 接口 + * + * @author 超级管理员 + */ +public interface MaterialDetailService { + + /** + * 创建工单耗材明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterialDetail(@Valid MaterialDetailSaveReqVO createReqVO); + + /** + * 更新工单耗材明细 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialDetail(@Valid MaterialDetailSaveReqVO updateReqVO); + + /** + * 删除工单耗材明细 + * + * @param id 编号 + */ + void deleteMaterialDetail(Long id); + + /** + * 批量删除工单耗材明细 + * + * @param ids 编号 + */ + void deleteMaterialDetailListByIds(List ids); + + /** + * 获得工单耗材明细 + * + * @param id 编号 + * @return 工单耗材明细 + */ + MaterialDetailDO getMaterialDetail(Long id); + + /** + * 获得工单耗材明细分页 + * + * @param pageReqVO 分页查询 + * @return 工单耗材明细分页 + */ + PageResult getMaterialDetailPage(MaterialDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java new file mode 100644 index 0000000..1145c54 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.workorder.service.materialdetail; + +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.workorder.controller.admin.materialdetail.vo.*; +import com.zteits.urbanops.module.workorder.dal.dataobject.materialdetail.MaterialDetailDO; +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.workorder.dal.mysql.materialdetail.MaterialDetailMapper; + +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.workorder.enums.ErrorCodeConstants.*; + +/** + * 工单耗材明细 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class MaterialDetailServiceImpl implements MaterialDetailService { + + @Resource + private MaterialDetailMapper materialDetailMapper; + + @Override + public Long createMaterialDetail(MaterialDetailSaveReqVO createReqVO) { + // 插入 + MaterialDetailDO materialDetail = BeanUtils.toBean(createReqVO, MaterialDetailDO.class); + materialDetailMapper.insert(materialDetail); + + // 返回 + return materialDetail.getId(); + } + + @Override + public void updateMaterialDetail(MaterialDetailSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialDetailExists(updateReqVO.getId()); + // 更新 + MaterialDetailDO updateObj = BeanUtils.toBean(updateReqVO, MaterialDetailDO.class); + materialDetailMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialDetail(Long id) { + // 校验存在 + validateMaterialDetailExists(id); + // 删除 + materialDetailMapper.deleteById(id); + } + + @Override + public void deleteMaterialDetailListByIds(List ids) { + // 删除 + materialDetailMapper.deleteByIds(ids); + } + + + private void validateMaterialDetailExists(Long id) { + if (materialDetailMapper.selectById(id) == null) { + throw exception(MATERIAL_DETAIL_NOT_EXISTS); + } + } + + @Override + public MaterialDetailDO getMaterialDetail(Long id) { + return materialDetailMapper.selectById(id); + } + + @Override + public PageResult getMaterialDetailPage(MaterialDetailPageReqVO pageReqVO) { + return materialDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/resources/mapper/maininfo/MainInfoMapper.xml b/urbanops-module-workorder/src/main/resources/mapper/maininfo/MainInfoMapper.xml new file mode 100644 index 0000000..0693933 --- /dev/null +++ b/urbanops-module-workorder/src/main/resources/mapper/maininfo/MainInfoMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/resources/mapper/mapper/attachment/AttachmentMapper.xml b/urbanops-module-workorder/src/main/resources/mapper/mapper/attachment/AttachmentMapper.xml new file mode 100644 index 0000000..29c87ff --- /dev/null +++ b/urbanops-module-workorder/src/main/resources/mapper/mapper/attachment/AttachmentMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/resources/mapper/materialdetail/MaterialDetailMapper.xml b/urbanops-module-workorder/src/main/resources/mapper/materialdetail/MaterialDetailMapper.xml new file mode 100644 index 0000000..e182d04 --- /dev/null +++ b/urbanops-module-workorder/src/main/resources/mapper/materialdetail/MaterialDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-server/pom.xml b/urbanops-server/pom.xml index 566c7a6..19d1e1a 100644 --- a/urbanops-server/pom.xml +++ b/urbanops-server/pom.xml @@ -43,6 +43,13 @@ urbanops-module-garden ${revision} + + + + com.zteits.boot + urbanops-module-workorder + ${revision} +