diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/WasteRecordController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/WasteRecordController.java new file mode 100644 index 0000000..c1d0b67 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/WasteRecordController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.garden.controller.admin.wasterecord; + +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.wasterecord.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO; +import com.zteits.urbanops.module.garden.service.wasterecord.WasteRecordService; + +@Tag(name = "管理后台 - 园林废弃物录入") +@RestController +@RequestMapping("/garden/waste-record") +@Validated +public class WasteRecordController { + + @Resource + private WasteRecordService wasteRecordService; + + @PostMapping("/create") + @Operation(summary = "创建园林废弃物录入") + @PreAuthorize("@ss.hasPermission('garden:waste-record:create')") + public CommonResult createWasteRecord(@Valid @RequestBody WasteRecordSaveReqVO createReqVO) { + return success(wasteRecordService.createWasteRecord(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新园林废弃物录入") + @PreAuthorize("@ss.hasPermission('garden:waste-record:update')") + public CommonResult updateWasteRecord(@Valid @RequestBody WasteRecordSaveReqVO updateReqVO) { + wasteRecordService.updateWasteRecord(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除园林废弃物录入") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:waste-record:delete')") + public CommonResult deleteWasteRecord(@RequestParam("id") Long id) { + wasteRecordService.deleteWasteRecord(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除园林废弃物录入") + @PreAuthorize("@ss.hasPermission('garden:waste-record:delete')") + public CommonResult deleteWasteRecordList(@RequestParam("ids") List ids) { + wasteRecordService.deleteWasteRecordListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得园林废弃物录入") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:waste-record:query')") + public CommonResult getWasteRecord(@RequestParam("id") Long id) { + WasteRecordDO wasteRecord = wasteRecordService.getWasteRecord(id); + return success(BeanUtils.toBean(wasteRecord, WasteRecordRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得园林废弃物录入分页") + @PreAuthorize("@ss.hasPermission('garden:waste-record:query')") + public CommonResult> getWasteRecordPage(@Valid WasteRecordPageReqVO pageReqVO) { + PageResult pageResult = wasteRecordService.getWasteRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WasteRecordRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出园林废弃物录入 Excel") + @PreAuthorize("@ss.hasPermission('garden:waste-record:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportWasteRecordExcel(@Valid WasteRecordPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = wasteRecordService.getWasteRecordPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "园林废弃物录入.xls", "数据", WasteRecordRespVO.class, + BeanUtils.toBean(list, WasteRecordRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordPageReqVO.java new file mode 100644 index 0000000..277d21e --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordPageReqVO.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo; + +import cn.idev.excel.annotation.ExcelProperty; +import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import 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 WasteRecordPageReqVO extends PageParam { + + @Schema(description = "运输日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] transportDate; + + @Schema(description = "废弃物类型(如渣土、树枝等)", example = "1") + private String wasteType; + + @Schema(description = "运输车辆(如小型渣土车等)") + private String transportVehicle; + + @Schema(description = "车辆载重(吨)") + private BigDecimal vehicleLoad; + + @Schema(description = "运输次数") + private Integer transportTimes; + + @Schema(description = "单价", example = "19516") + private BigDecimal unitPrice; + + @Schema(description = "总费用(元)") + private BigDecimal totalCost; + + @Schema(description = "归属公司", example = "张三") + private String companyName; + + @Schema(description = "归属公司ID", example = "3314") + private String companyId; + + @Schema(description = "部门id", example = "26656") + private Long deptId; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @ExcelProperty("班组") + private List teamIds; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordRespVO.java new file mode 100644 index 0000000..7230f10 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordRespVO.java @@ -0,0 +1,74 @@ +package com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo; + +import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +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 WasteRecordRespVO { + + @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7310") + @ExcelProperty("记录ID,自增主键") + private Long id; + + @Schema(description = "运输日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("运输日期") + private LocalDate transportDate; + + @Schema(description = "废弃物类型(如渣土、树枝等)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("废弃物类型(如渣土、树枝等)") + private String wasteType; + + @Schema(description = "运输车辆(如小型渣土车等)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("运输车辆(如小型渣土车等)") + private String transportVehicle; + + @Schema(description = "车辆载重(吨)") + @ExcelProperty("车辆载重(吨)") + private BigDecimal vehicleLoad; + + @Schema(description = "运输次数") + @ExcelProperty("运输次数") + private Integer transportTimes; + + @Schema(description = "单价", example = "19516") + @ExcelProperty("单价") + private BigDecimal unitPrice; + + @Schema(description = "总费用(元)") + @ExcelProperty("总费用(元)") + private BigDecimal totalCost; + + @Schema(description = "归属公司", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("归属公司") + private String companyName; + + @Schema(description = "归属公司ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3314") + @ExcelProperty("归属公司ID") + private String companyId; + + @Schema(description = "部门id", example = "26656") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("班组") + private List teamIds; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordSaveReqVO.java new file mode 100644 index 0000000..1428f52 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/wasterecord/vo/WasteRecordSaveReqVO.java @@ -0,0 +1,63 @@ +package com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo; + +import cn.idev.excel.annotation.ExcelProperty; +import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 园林废弃物录入新增/修改 Request VO") +@Data +public class WasteRecordSaveReqVO { + + @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7310") + private Long id; + + @Schema(description = "运输日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "运输日期不能为空") + private LocalDate transportDate; + + @Schema(description = "废弃物类型(如渣土、树枝等)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "废弃物类型(如渣土、树枝等)不能为空") + private String wasteType; + + @Schema(description = "运输车辆(如小型渣土车等)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "运输车辆(如小型渣土车等)不能为空") + private String transportVehicle; + + @Schema(description = "车辆载重(吨)") + private BigDecimal vehicleLoad; + + @Schema(description = "运输次数") + private Integer transportTimes; + + @Schema(description = "单价", example = "19516") + private BigDecimal unitPrice; + + @Schema(description = "总费用(元)") + private BigDecimal totalCost; + + @Schema(description = "归属公司", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "归属公司不能为空") + private String companyName; + + @Schema(description = "归属公司ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3314") + @NotEmpty(message = "归属公司ID不能为空") + private String companyId; + + @Schema(description = "部门id", example = "26656") + private Long deptId; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private Integer status; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @ExcelProperty("班组") + private List teamIds; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/WaterFeeController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/WaterFeeController.java new file mode 100644 index 0000000..6e5ba7c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/WaterFeeController.java @@ -0,0 +1,104 @@ +package com.zteits.urbanops.module.garden.controller.admin.waterfee; + +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.waterfee.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.waterfee.WaterFeeDO; +import com.zteits.urbanops.module.garden.service.waterfee.WaterFeeService; + +@Tag(name = "管理后台 - 水费录入信息") +@RestController +@RequestMapping("/garden/water-fee") +@Validated +public class WaterFeeController { + + @Resource + private WaterFeeService waterFeeService; + + @PostMapping("/create") + @Operation(summary = "创建水费录入信息") + @PreAuthorize("@ss.hasPermission('garden:water-fee:create')") + public CommonResult createWaterFee(@Valid @RequestBody WaterFeeSaveReqVO createReqVO) { + return success(waterFeeService.createWaterFee(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新水费录入信息") + @PreAuthorize("@ss.hasPermission('garden:water-fee:update')") + public CommonResult updateWaterFee(@Valid @RequestBody WaterFeeSaveReqVO updateReqVO) { + waterFeeService.updateWaterFee(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除水费录入信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('garden:water-fee:delete')") + public CommonResult deleteWaterFee(@RequestParam("id") Long id) { + waterFeeService.deleteWaterFee(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除水费录入信息") + @PreAuthorize("@ss.hasPermission('garden:water-fee:delete')") + public CommonResult deleteWaterFeeList(@RequestParam("ids") List ids) { + waterFeeService.deleteWaterFeeListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得水费录入信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('garden:water-fee:query')") + public CommonResult getWaterFee(@RequestParam("id") Long id) { + WaterFeeDO waterFee = waterFeeService.getWaterFee(id); + return success(BeanUtils.toBean(waterFee, WaterFeeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得水费录入信息分页") + @PreAuthorize("@ss.hasPermission('garden:water-fee:query')") + public CommonResult> getWaterFeePage(@Valid WaterFeePageReqVO pageReqVO) { + PageResult pageResult = waterFeeService.getWaterFeePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WaterFeeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出水费录入信息 Excel") + @PreAuthorize("@ss.hasPermission('garden:water-fee:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportWaterFeeExcel(@Valid WaterFeePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = waterFeeService.getWaterFeePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "水费录入信息.xls", "数据", WaterFeeRespVO.class, + BeanUtils.toBean(list, WaterFeeRespVO.class)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeePageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeePageReqVO.java new file mode 100644 index 0000000..b409144 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeePageReqVO.java @@ -0,0 +1,48 @@ +package com.zteits.urbanops.module.garden.controller.admin.waterfee.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 WaterFeePageReqVO extends PageParam { + + @Schema(description = "水费年月,如220505") + private String feeMonth; + + @Schema(description = "水表编码") + private String meterCode; + + @Schema(description = "水表地址") + private String meterAddress; + + @Schema(description = "水表门牌号码") + private String meterDoorplate; + + @Schema(description = "用水量(单位:立方米)") + private BigDecimal waterUsage; + + @Schema(description = "总水费(元)") + private BigDecimal totalFee; + + @Schema(description = "归属公司", example = "赵六") + private String companyName; + + @Schema(description = "部门id", example = "17710") + private Long deptId; + + @Schema(description = "归属公司ID", example = "15128") + private String companyId; + + @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-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeRespVO.java new file mode 100644 index 0000000..2d5dea4 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeRespVO.java @@ -0,0 +1,60 @@ +package com.zteits.urbanops.module.garden.controller.admin.waterfee.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 WaterFeeRespVO { + + @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24466") + @ExcelProperty("记录ID,自增主键") + private Long id; + + @Schema(description = "水费年月,如220505", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("水费年月,如220505") + private String feeMonth; + + @Schema(description = "水表编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("水表编码") + private String meterCode; + + @Schema(description = "水表地址") + @ExcelProperty("水表地址") + private String meterAddress; + + @Schema(description = "水表门牌号码") + @ExcelProperty("水表门牌号码") + private String meterDoorplate; + + @Schema(description = "用水量(单位:立方米)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("用水量(单位:立方米)") + private BigDecimal waterUsage; + + @Schema(description = "总水费(元)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("总水费(元)") + private BigDecimal totalFee; + + @Schema(description = "归属公司", example = "赵六") + @ExcelProperty("归属公司") + private String companyName; + + @Schema(description = "部门id", example = "17710") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "归属公司ID", example = "15128") + @ExcelProperty("归属公司ID") + private String companyId; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeSaveReqVO.java new file mode 100644 index 0000000..e9c30ff --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/waterfee/vo/WaterFeeSaveReqVO.java @@ -0,0 +1,47 @@ +package com.zteits.urbanops.module.garden.controller.admin.waterfee.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 水费录入信息新增/修改 Request VO") +@Data +public class WaterFeeSaveReqVO { + + @Schema(description = "记录ID,自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24466") + private Long id; + + @Schema(description = "水费年月,如220505", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "水费年月,如220505不能为空") + private String feeMonth; + + @Schema(description = "水表编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "水表编码不能为空") + private String meterCode; + + @Schema(description = "水表地址") + private String meterAddress; + + @Schema(description = "水表门牌号码") + private String meterDoorplate; + + @Schema(description = "用水量(单位:立方米)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "用水量(单位:立方米)不能为空") + private BigDecimal waterUsage; + + @Schema(description = "总水费(元)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "总水费(元)不能为空") + private BigDecimal totalFee; + + @Schema(description = "归属公司", example = "赵六") + private String companyName; + + @Schema(description = "部门id", example = "17710") + private Long deptId; + + @Schema(description = "归属公司ID", example = "15128") + private String companyId; + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/wasterecord/WasteRecordDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/wasterecord/WasteRecordDO.java new file mode 100644 index 0000000..c1b7b23 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/wasterecord/WasteRecordDO.java @@ -0,0 +1,85 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.wasterecord; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import java.math.BigDecimal; +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("garden_waste_record") +@KeySequence("garden_waste_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WasteRecordDO extends BaseDO { + + /** + * 记录ID,自增主键 + */ + @TableId + private Long id; + /** + * 运输日期 + */ + private LocalDate transportDate; + /** + * 废弃物类型(如渣土、树枝等) + */ + private String wasteType; + /** + * 运输车辆(如小型渣土车等) + */ + private String transportVehicle; + /** + * 车辆载重(吨) + */ + private BigDecimal vehicleLoad; + /** + * 运输次数 + */ + private Integer transportTimes; + /** + * 单价 + */ + private BigDecimal unitPrice; + /** + * 总费用(元) + */ + private BigDecimal totalCost; + /** + * 归属公司 + */ + private String companyName; + /** + * 归属公司ID + */ + private String companyId; + /** + * 部门id + */ + private Long deptId; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/waterfee/WaterFeeDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/waterfee/WaterFeeDO.java new file mode 100644 index 0000000..d7523d2 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/waterfee/WaterFeeDO.java @@ -0,0 +1,70 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.waterfee; + +import lombok.*; +import java.util.*; +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("garden_water_fee") +@KeySequence("garden_water_fee_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WaterFeeDO extends BaseDO { + + /** + * 记录ID,自增主键 + */ + @TableId + private Long id; + /** + * 水费年月,如220505 + */ + private String feeMonth; + /** + * 水表编码 + */ + private String meterCode; + /** + * 水表地址 + */ + private String meterAddress; + /** + * 水表门牌号码 + */ + private String meterDoorplate; + /** + * 用水量(单位:立方米) + */ + private BigDecimal waterUsage; + /** + * 总水费(元) + */ + private BigDecimal totalFee; + /** + * 归属公司 + */ + private String companyName; + /** + * 部门id + */ + private Long deptId; + /** + * 归属公司ID + */ + private String companyId; + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/wasterecord/WasteRecordMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/wasterecord/WasteRecordMapper.java new file mode 100644 index 0000000..a4d5eb0 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/wasterecord/WasteRecordMapper.java @@ -0,0 +1,37 @@ +package com.zteits.urbanops.module.garden.dal.mysql.wasterecord; + +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.wasterecord.WasteRecordDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.*; + +/** + * 园林废弃物录入 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface WasteRecordMapper extends BaseMapperX { + + default PageResult selectPage(WasteRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .betweenIfPresent(WasteRecordDO::getTransportDate, reqVO.getTransportDate()) + .eqIfPresent(WasteRecordDO::getWasteType, reqVO.getWasteType()) + .eqIfPresent(WasteRecordDO::getTransportVehicle, reqVO.getTransportVehicle()) + .eqIfPresent(WasteRecordDO::getVehicleLoad, reqVO.getVehicleLoad()) + .eqIfPresent(WasteRecordDO::getTransportTimes, reqVO.getTransportTimes()) + .eqIfPresent(WasteRecordDO::getUnitPrice, reqVO.getUnitPrice()) + .eqIfPresent(WasteRecordDO::getTotalCost, reqVO.getTotalCost()) + .likeIfPresent(WasteRecordDO::getCompanyName, reqVO.getCompanyName()) + .eqIfPresent(WasteRecordDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(WasteRecordDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(WasteRecordDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(WasteRecordDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WasteRecordDO::getId)); + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/waterfee/WaterFeeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/waterfee/WaterFeeMapper.java new file mode 100644 index 0000000..b89e5e0 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/waterfee/WaterFeeMapper.java @@ -0,0 +1,35 @@ +package com.zteits.urbanops.module.garden.dal.mysql.waterfee; + +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.waterfee.WaterFeeDO; +import org.apache.ibatis.annotations.Mapper; +import com.zteits.urbanops.module.garden.controller.admin.waterfee.vo.*; + +/** + * 水费录入信息 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface WaterFeeMapper extends BaseMapperX { + + default PageResult selectPage(WaterFeePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WaterFeeDO::getFeeMonth, reqVO.getFeeMonth()) + .eqIfPresent(WaterFeeDO::getMeterCode, reqVO.getMeterCode()) + .eqIfPresent(WaterFeeDO::getMeterAddress, reqVO.getMeterAddress()) + .eqIfPresent(WaterFeeDO::getMeterDoorplate, reqVO.getMeterDoorplate()) + .eqIfPresent(WaterFeeDO::getWaterUsage, reqVO.getWaterUsage()) + .eqIfPresent(WaterFeeDO::getTotalFee, reqVO.getTotalFee()) + .likeIfPresent(WaterFeeDO::getCompanyName, reqVO.getCompanyName()) + .eqIfPresent(WaterFeeDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(WaterFeeDO::getCompanyId, reqVO.getCompanyId()) + .betweenIfPresent(WaterFeeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WaterFeeDO::getId)); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordService.java new file mode 100644 index 0000000..574ceef --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.wasterecord; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.wasterecord.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 园林废弃物录入 Service 接口 + * + * @author 超级管理员 + */ +public interface WasteRecordService { + + /** + * 创建园林废弃物录入 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWasteRecord(@Valid WasteRecordSaveReqVO createReqVO); + + /** + * 更新园林废弃物录入 + * + * @param updateReqVO 更新信息 + */ + void updateWasteRecord(@Valid WasteRecordSaveReqVO updateReqVO); + + /** + * 删除园林废弃物录入 + * + * @param id 编号 + */ + void deleteWasteRecord(Long id); + + /** + * 批量删除园林废弃物录入 + * + * @param ids 编号 + */ + void deleteWasteRecordListByIds(List ids); + + /** + * 获得园林废弃物录入 + * + * @param id 编号 + * @return 园林废弃物录入 + */ + WasteRecordDO getWasteRecord(Long id); + + /** + * 获得园林废弃物录入分页 + * + * @param pageReqVO 分页查询 + * @return 园林废弃物录入分页 + */ + PageResult getWasteRecordPage(WasteRecordPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordServiceImpl.java new file mode 100644 index 0000000..bd8ef39 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/wasterecord/WasteRecordServiceImpl.java @@ -0,0 +1,110 @@ +package com.zteits.urbanops.module.garden.service.wasterecord; + +import cn.hutool.core.collection.CollUtil; +import com.zteits.urbanops.module.garden.enums.CostFeeConstants; +import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService; +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.wasterecord.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.wasterecord.WasteRecordDO; +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.wasterecord.WasteRecordMapper; + +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 WasteRecordServiceImpl implements WasteRecordService { + + @Resource + private WasteRecordMapper wasteRecordMapper; + + @Resource + TeamBizdomainRelService teamBizdomainRelService; + @Override + @Transactional + public Long createWasteRecord(WasteRecordSaveReqVO createReqVO) { + // 插入 + WasteRecordDO wasteRecord = BeanUtils.toBean(createReqVO, WasteRecordDO.class); + wasteRecordMapper.insert(wasteRecord); + + + //add by wq 保存班组信息关联表 + teamBizdomainRelService.saveTeamBizdomainRel(createReqVO.getTeamIds(), wasteRecord.getId(), wasteRecord.getCompanyId(), wasteRecord.getCompanyName(), CostFeeConstants.COSTFEE_GARDENWASTE); + //add by wq 保存班组信息关联表 + // 返回 + return wasteRecord.getId(); + } + + @Override + @Transactional + public void updateWasteRecord(WasteRecordSaveReqVO updateReqVO) { + // 校验存在 + validateWasteRecordExists(updateReqVO.getId()); + // 更新 + WasteRecordDO updateObj = BeanUtils.toBean(updateReqVO, WasteRecordDO.class); + wasteRecordMapper.updateById(updateObj); + //add by wq 保存班组信息关联表 + teamBizdomainRelService.deleteTeamBizdomainRel(updateObj.getId(), CostFeeConstants.COSTFEE_GARDENWASTE); + teamBizdomainRelService.saveTeamBizdomainRel(updateReqVO.getTeamIds(), updateObj.getId(), updateObj.getCompanyId(), updateObj.getCompanyName(), CostFeeConstants.COSTFEE_GARDENWASTE); + //add by wq 保存班组信息关联表 + } + + @Override + public void deleteWasteRecord(Long id) { + // 校验存在 + validateWasteRecordExists(id); + // 删除 + wasteRecordMapper.deleteById(id); + + // add by wq 删除 + teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_GARDENWASTE); + // add by wq 删除 + } + + @Override + public void deleteWasteRecordListByIds(List ids) { + // 删除 + wasteRecordMapper.deleteByIds(ids); + // add by wq 删除 + if(ids.size() > 0) { + for (Long id : ids) { + teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_GARDENWASTE); + } + } + // add by wq 删除 + } + + + private void validateWasteRecordExists(Long id) { + if (wasteRecordMapper.selectById(id) == null) { + throw exception(WASTE_RECORD_NOT_EXISTS); + } + } + + @Override + public WasteRecordDO getWasteRecord(Long id) { + return wasteRecordMapper.selectById(id); + } + + @Override + public PageResult getWasteRecordPage(WasteRecordPageReqVO pageReqVO) { + return wasteRecordMapper.selectPage(pageReqVO); + } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeService.java new file mode 100644 index 0000000..921b484 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeService.java @@ -0,0 +1,62 @@ +package com.zteits.urbanops.module.garden.service.waterfee; + +import java.util.*; +import jakarta.validation.*; +import com.zteits.urbanops.module.garden.controller.admin.waterfee.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.waterfee.WaterFeeDO; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.pojo.PageParam; + +/** + * 水费录入信息 Service 接口 + * + * @author 超级管理员 + */ +public interface WaterFeeService { + + /** + * 创建水费录入信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWaterFee(@Valid WaterFeeSaveReqVO createReqVO); + + /** + * 更新水费录入信息 + * + * @param updateReqVO 更新信息 + */ + void updateWaterFee(@Valid WaterFeeSaveReqVO updateReqVO); + + /** + * 删除水费录入信息 + * + * @param id 编号 + */ + void deleteWaterFee(Long id); + + /** + * 批量删除水费录入信息 + * + * @param ids 编号 + */ + void deleteWaterFeeListByIds(List ids); + + /** + * 获得水费录入信息 + * + * @param id 编号 + * @return 水费录入信息 + */ + WaterFeeDO getWaterFee(Long id); + + /** + * 获得水费录入信息分页 + * + * @param pageReqVO 分页查询 + * @return 水费录入信息分页 + */ + PageResult getWaterFeePage(WaterFeePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeServiceImpl.java new file mode 100644 index 0000000..fea0d1a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/waterfee/WaterFeeServiceImpl.java @@ -0,0 +1,94 @@ +package com.zteits.urbanops.module.garden.service.waterfee; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.module.garden.controller.admin.waterfee.vo.WaterFeePageReqVO; +import com.zteits.urbanops.module.garden.controller.admin.waterfee.vo.WaterFeeSaveReqVO; +import com.zteits.urbanops.module.garden.dal.dataobject.waterfee.WaterFeeDO; +import com.zteits.urbanops.module.garden.dal.mysql.waterfee.WaterFeeMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.WATER_FEE_NOT_EXISTS; + +/** + * 水费录入信息 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class WaterFeeServiceImpl implements WaterFeeService { + + @Resource + private WaterFeeMapper waterFeeMapper; + + @Override + public Long createWaterFee(WaterFeeSaveReqVO createReqVO) { + // add by wq 删除重复,录入最新记录 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(WaterFeeDO::getFeeMonth, createReqVO.getFeeMonth()); + queryWrapper.eq(WaterFeeDO::getMeterCode, createReqVO.getMeterCode()); + List list = waterFeeMapper.selectList(queryWrapper); + if(!CollectionUtils.isEmpty(list)) { + List ids = list.stream().map(WaterFeeDO::getId).collect(Collectors.toList()); + waterFeeMapper.deleteByIds(ids); + } + // add by wq 删除重复,录入最新记录 + // 插入 + WaterFeeDO waterFee = BeanUtils.toBean(createReqVO, WaterFeeDO.class); + waterFeeMapper.insert(waterFee); + + // 返回 + return waterFee.getId(); + } + + @Override + public void updateWaterFee(WaterFeeSaveReqVO updateReqVO) { + // 校验存在 + validateWaterFeeExists(updateReqVO.getId()); + // 更新 + WaterFeeDO updateObj = BeanUtils.toBean(updateReqVO, WaterFeeDO.class); + waterFeeMapper.updateById(updateObj); + } + + @Override + public void deleteWaterFee(Long id) { + // 校验存在 + validateWaterFeeExists(id); + // 删除 + waterFeeMapper.deleteById(id); + } + + @Override + public void deleteWaterFeeListByIds(List ids) { + // 删除 + waterFeeMapper.deleteByIds(ids); + } + + + private void validateWaterFeeExists(Long id) { + if (waterFeeMapper.selectById(id) == null) { + throw exception(WATER_FEE_NOT_EXISTS); + } + } + + @Override + public WaterFeeDO getWaterFee(Long id) { + return waterFeeMapper.selectById(id); + } + + @Override + public PageResult getWaterFeePage(WaterFeePageReqVO pageReqVO) { + return waterFeeMapper.selectPage(pageReqVO); + } + +} diff --git a/urbanops-module-garden/src/main/resources/mapper/wasterecord/WasteRecordMapper.xml b/urbanops-module-garden/src/main/resources/mapper/wasterecord/WasteRecordMapper.xml new file mode 100644 index 0000000..440a822 --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/wasterecord/WasteRecordMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/waterfee/WaterFeeMapper.xml b/urbanops-module-garden/src/main/resources/mapper/waterfee/WaterFeeMapper.xml new file mode 100644 index 0000000..900ed2f --- /dev/null +++ b/urbanops-module-garden/src/main/resources/mapper/waterfee/WaterFeeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/urbanops-server/src/main/resources/logback-spring.xml b/urbanops-server/src/main/resources/logback-spring.xml index 8cb6ea8..8650499 100644 --- a/urbanops-server/src/main/resources/logback-spring.xml +++ b/urbanops-server/src/main/resources/logback-spring.xml @@ -48,7 +48,7 @@ - +