8 changed files with 1084 additions and 6 deletions
@ -0,0 +1,105 @@ |
|||
package org.dromara.demo.controller; |
|||
|
|||
import java.util.List; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import jakarta.validation.constraints.*; |
|||
import cn.dev33.satoken.annotation.SaCheckPermission; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.excel.utils.ExcelUtil; |
|||
import org.dromara.demo.domain.vo.ProjectInfoVo; |
|||
import org.dromara.demo.domain.bo.ProjectInfoBo; |
|||
import org.dromara.demo.service.IProjectInfoService; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
|
|||
/** |
|||
* 项目信息 |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/project/info") |
|||
public class ProjectInfoController extends BaseController { |
|||
|
|||
private final IProjectInfoService projectInfoService; |
|||
|
|||
/** |
|||
* 查询项目信息列表 |
|||
*/ |
|||
//@SaCheckPermission("project:info:list")
|
|||
@GetMapping("/list") |
|||
public TableDataInfo<ProjectInfoVo> list(ProjectInfoBo bo, PageQuery pageQuery) { |
|||
return projectInfoService.queryPageList(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 导出项目信息列表 |
|||
*/ |
|||
//@SaCheckPermission("project:info:export")
|
|||
@Log(title = "项目信息", businessType = BusinessType.EXPORT) |
|||
@PostMapping("/export") |
|||
public void export(ProjectInfoBo bo, HttpServletResponse response) { |
|||
List<ProjectInfoVo> list = projectInfoService.queryList(bo); |
|||
ExcelUtil.exportExcel(list, "项目信息", ProjectInfoVo.class, response); |
|||
} |
|||
|
|||
/** |
|||
* 获取项目信息详细信息 |
|||
* |
|||
* @param id 主键 |
|||
*/ |
|||
//@SaCheckPermission("project:info:query")
|
|||
@GetMapping("/{id}") |
|||
public R<ProjectInfoVo> getInfo(@NotNull(message = "主键不能为空") |
|||
@PathVariable String id) { |
|||
return R.ok(projectInfoService.queryById(id)); |
|||
} |
|||
|
|||
/** |
|||
* 新增项目信息 |
|||
*/ |
|||
//@SaCheckPermission("project:info:add")
|
|||
@Log(title = "项目信息", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping() |
|||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProjectInfoBo bo) { |
|||
return toAjax(projectInfoService.insertByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 修改项目信息 |
|||
*/ |
|||
//@SaCheckPermission("project:info:edit")
|
|||
@Log(title = "项目信息", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping() |
|||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProjectInfoBo bo) { |
|||
return toAjax(projectInfoService.updateByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 删除项目信息 |
|||
* |
|||
* @param ids 主键串 |
|||
*/ |
|||
//@SaCheckPermission("project:info:remove")
|
|||
@Log(title = "项目信息", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{ids}") |
|||
public R<Void> remove(@NotEmpty(message = "主键不能为空") |
|||
@PathVariable String[] ids) { |
|||
return toAjax(projectInfoService.deleteWithValidByIds(List.of(ids), true)); |
|||
} |
|||
} |
@ -0,0 +1,219 @@ |
|||
package org.dromara.demo.domain; |
|||
|
|||
import org.dromara.common.tenant.core.TenantEntity; |
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import java.util.Date; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 项目信息对象 project_info |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("project_info") |
|||
public class ProjectInfo extends TenantEntity { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键ID |
|||
*/ |
|||
@TableId(value = "id") |
|||
private String id; |
|||
|
|||
/** |
|||
* 项目名称 |
|||
*/ |
|||
private String projectName; |
|||
|
|||
/** |
|||
* 项目时期(年月日) |
|||
*/ |
|||
private Date projectDate; |
|||
|
|||
/** |
|||
* 规划投资(万元) |
|||
*/ |
|||
private String planInvest; |
|||
|
|||
/** |
|||
* 实际完成投资(万元) |
|||
*/ |
|||
private String actualInvest; |
|||
|
|||
/** |
|||
* 资金来源 |
|||
*/ |
|||
private String investResource; |
|||
|
|||
/** |
|||
* 是否为规划内项目 |
|||
*/ |
|||
private String ifPlan; |
|||
|
|||
/** |
|||
* 审批级别 |
|||
*/ |
|||
private String approvalLevel; |
|||
|
|||
/** |
|||
* 预期目标 |
|||
*/ |
|||
private String expect; |
|||
|
|||
/** |
|||
* 前期设计(字符串数组,JSON格式存储) |
|||
*/ |
|||
private String earlyDesign; |
|||
|
|||
/** |
|||
* 所属区县 |
|||
*/ |
|||
private String district; |
|||
|
|||
/** |
|||
* 所属控制区 |
|||
*/ |
|||
private String controlArea; |
|||
|
|||
/** |
|||
* 所属小流域 |
|||
*/ |
|||
private String riverBasin; |
|||
|
|||
/** |
|||
* 项目类别(字符串数组,JSON格式存储) |
|||
*/ |
|||
private String projectTypeList; |
|||
|
|||
/** |
|||
* 水环境保护治理技术 |
|||
*/ |
|||
private String projectTech; |
|||
|
|||
/** |
|||
* 技术名称 |
|||
*/ |
|||
private String techName; |
|||
|
|||
/** |
|||
* 技术成本(元/m²) |
|||
*/ |
|||
private String techCost; |
|||
|
|||
/** |
|||
* 运行成本(元/m²) |
|||
*/ |
|||
private String devCost; |
|||
|
|||
/** |
|||
* 技术适用性 |
|||
*/ |
|||
private String techUsability; |
|||
|
|||
/** |
|||
* 技术稳定性 |
|||
*/ |
|||
private String techStability; |
|||
|
|||
/** |
|||
* 管理操作难易程度 |
|||
*/ |
|||
private String operationLevel; |
|||
|
|||
/** |
|||
* 规划项目内容 |
|||
*/ |
|||
private String projectContent; |
|||
|
|||
/** |
|||
* 完工情况 |
|||
*/ |
|||
private String projectProgress; |
|||
|
|||
/** |
|||
* 验收方式 |
|||
*/ |
|||
private String acceptMethod; |
|||
|
|||
/** |
|||
* 运行效果 |
|||
*/ |
|||
private String devResult; |
|||
|
|||
/** |
|||
* 运行情况 |
|||
*/ |
|||
private String devStatus; |
|||
|
|||
/** |
|||
* 目标实现(%) |
|||
*/ |
|||
private String goal; |
|||
|
|||
/** |
|||
* 巡查模式 |
|||
*/ |
|||
private String patrolType; |
|||
|
|||
/** |
|||
* 管理模式 |
|||
*/ |
|||
private String manageType; |
|||
|
|||
/** |
|||
* 长期运营 |
|||
*/ |
|||
private String longOperation; |
|||
|
|||
/** |
|||
* COD削减率(%) |
|||
*/ |
|||
private String cod; |
|||
|
|||
/** |
|||
* TN削减(%) |
|||
*/ |
|||
private String tn; |
|||
|
|||
/** |
|||
* TP削减率(%) |
|||
*/ |
|||
private String tp; |
|||
|
|||
/** |
|||
* 资金完成率评分 |
|||
*/ |
|||
private String fundingCompletionScore; |
|||
|
|||
/** |
|||
* 环境绩效评分 |
|||
*/ |
|||
private String environmentalPerformanceScore; |
|||
|
|||
/** |
|||
* 长效运营评分 |
|||
*/ |
|||
private String longTermOperationScore; |
|||
|
|||
/** |
|||
* 当前状态 |
|||
*/ |
|||
private Long status; |
|||
|
|||
/** |
|||
* 删除标志(0代表存在 2代表删除) |
|||
*/ |
|||
@TableLogic |
|||
private String delFlag; |
|||
|
|||
|
|||
} |
@ -0,0 +1,248 @@ |
|||
package org.dromara.demo.domain.bo; |
|||
|
|||
import org.dromara.demo.domain.ProjectInfo; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import jakarta.validation.constraints.*; |
|||
import java.util.Date; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
|
|||
/** |
|||
* 项目信息业务对象 project_info |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = ProjectInfo.class, reverseConvertGenerate = false) |
|||
public class ProjectInfoBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 主键ID |
|||
*/ |
|||
//@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
|
|||
private String id; |
|||
|
|||
/** |
|||
* 项目名称 |
|||
*/ |
|||
//@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String projectName; |
|||
|
|||
/** |
|||
* 项目时期(年月日) |
|||
*/ |
|||
//@NotNull(message = "项目时期(年月日)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private Date projectDate; |
|||
|
|||
/** |
|||
* 规划投资(万元) |
|||
*/ |
|||
//@NotBlank(message = "规划投资(万元)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String planInvest; |
|||
|
|||
/** |
|||
* 实际完成投资(万元) |
|||
*/ |
|||
//@NotBlank(message = "实际完成投资(万元)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String actualInvest; |
|||
|
|||
/** |
|||
* 资金来源 |
|||
*/ |
|||
//@NotBlank(message = "资金来源不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String investResource; |
|||
|
|||
/** |
|||
* 是否为规划内项目 |
|||
*/ |
|||
//@NotBlank(message = "是否为规划内项目不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String ifPlan; |
|||
|
|||
/** |
|||
* 审批级别 |
|||
*/ |
|||
//@NotBlank(message = "审批级别不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String approvalLevel; |
|||
|
|||
/** |
|||
* 预期目标 |
|||
*/ |
|||
//@NotBlank(message = "预期目标不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String expect; |
|||
|
|||
/** |
|||
* 前期设计(字符串数组,JSON格式存储) |
|||
*/ |
|||
//@NotBlank(message = "前期设计(字符串数组,JSON格式存储)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String earlyDesign; |
|||
|
|||
/** |
|||
* 所属区县 |
|||
*/ |
|||
//@NotBlank(message = "所属区县不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String district; |
|||
|
|||
/** |
|||
* 所属控制区 |
|||
*/ |
|||
//@NotBlank(message = "所属控制区不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String controlArea; |
|||
|
|||
/** |
|||
* 所属小流域 |
|||
*/ |
|||
//@NotBlank(message = "所属小流域不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String riverBasin; |
|||
|
|||
/** |
|||
* 项目类别(字符串数组,JSON格式存储) |
|||
*/ |
|||
//@NotBlank(message = "项目类别(字符串数组,JSON格式存储)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String projectTypeList; |
|||
|
|||
/** |
|||
* 水环境保护治理技术 |
|||
*/ |
|||
//@NotBlank(message = "水环境保护治理技术不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String projectTech; |
|||
|
|||
/** |
|||
* 技术名称 |
|||
*/ |
|||
//@NotBlank(message = "技术名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String techName; |
|||
|
|||
/** |
|||
* 技术成本(元/m²) |
|||
*/ |
|||
//@NotBlank(message = "技术成本(元/m²)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String techCost; |
|||
|
|||
/** |
|||
* 运行成本(元/m²) |
|||
*/ |
|||
//@NotBlank(message = "运行成本(元/m²)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String devCost; |
|||
|
|||
/** |
|||
* 技术适用性 |
|||
*/ |
|||
//@NotBlank(message = "技术适用性不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String techUsability; |
|||
|
|||
/** |
|||
* 技术稳定性 |
|||
*/ |
|||
//@NotBlank(message = "技术稳定性不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String techStability; |
|||
|
|||
/** |
|||
* 管理操作难易程度 |
|||
*/ |
|||
//@NotBlank(message = "管理操作难易程度不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String operationLevel; |
|||
|
|||
/** |
|||
* 规划项目内容 |
|||
*/ |
|||
//@NotBlank(message = "规划项目内容不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String projectContent; |
|||
|
|||
/** |
|||
* 完工情况 |
|||
*/ |
|||
//@NotBlank(message = "完工情况不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String projectProgress; |
|||
|
|||
/** |
|||
* 验收方式 |
|||
*/ |
|||
//@NotBlank(message = "验收方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String acceptMethod; |
|||
|
|||
/** |
|||
* 运行效果 |
|||
*/ |
|||
//@NotBlank(message = "运行效果不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String devResult; |
|||
|
|||
/** |
|||
* 运行情况 |
|||
*/ |
|||
//@NotBlank(message = "运行情况不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String devStatus; |
|||
|
|||
/** |
|||
* 目标实现(%) |
|||
*/ |
|||
//@NotBlank(message = "目标实现(%)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String goal; |
|||
|
|||
/** |
|||
* 巡查模式 |
|||
*/ |
|||
//@NotBlank(message = "巡查模式不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String patrolType; |
|||
|
|||
/** |
|||
* 管理模式 |
|||
*/ |
|||
//@NotBlank(message = "管理模式不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String manageType; |
|||
|
|||
/** |
|||
* 长期运营 |
|||
*/ |
|||
//@NotBlank(message = "长期运营不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String longOperation; |
|||
|
|||
/** |
|||
* COD削减率(%) |
|||
*/ |
|||
//@NotBlank(message = "COD削减率(%)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String cod; |
|||
|
|||
/** |
|||
* TN削减(%) |
|||
*/ |
|||
//@NotBlank(message = "TN削减(%)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String tn; |
|||
|
|||
/** |
|||
* TP削减率(%) |
|||
*/ |
|||
//@NotBlank(message = "TP削减率(%)不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String tp; |
|||
|
|||
/** |
|||
* 资金完成率评分 |
|||
*/ |
|||
//@NotBlank(message = "资金完成率评分不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String fundingCompletionScore; |
|||
|
|||
/** |
|||
* 环境绩效评分 |
|||
*/ |
|||
//@NotBlank(message = "环境绩效评分不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String environmentalPerformanceScore; |
|||
|
|||
/** |
|||
* 长效运营评分 |
|||
*/ |
|||
//@NotBlank(message = "长效运营评分不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private String longTermOperationScore; |
|||
|
|||
/** |
|||
* 当前状态 |
|||
*/ |
|||
//@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
|||
private Long status; |
|||
|
|||
|
|||
} |
@ -0,0 +1,259 @@ |
|||
package org.dromara.demo.domain.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import org.dromara.common.excel.convert.ExcelDictConvert; |
|||
import org.dromara.demo.domain.ProjectInfo; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
|
|||
|
|||
/** |
|||
* 项目信息视图对象 project_info |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
@AutoMapper(target = ProjectInfo.class) |
|||
public class ProjectInfoVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键ID |
|||
*/ |
|||
@ExcelProperty(value = "主键ID") |
|||
private String id; |
|||
|
|||
/** |
|||
* 项目名称 |
|||
*/ |
|||
@ExcelProperty(value = "项目名称") |
|||
private String projectName; |
|||
|
|||
/** |
|||
* 项目时期(年月日) |
|||
*/ |
|||
@ExcelProperty(value = "项目时期") |
|||
@JsonFormat(pattern = "yyyy-MM-dd") |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
private Date projectDate; |
|||
|
|||
/** |
|||
* 规划投资(万元) |
|||
*/ |
|||
@ExcelProperty(value = "规划投资(万元)") |
|||
private String planInvest; |
|||
|
|||
/** |
|||
* 实际完成投资(万元) |
|||
*/ |
|||
@ExcelProperty(value = "实际完成投资(万元)") |
|||
private String actualInvest; |
|||
|
|||
/** |
|||
* 资金来源 |
|||
*/ |
|||
@ExcelProperty(value = "资金来源") |
|||
private String investResource; |
|||
|
|||
/** |
|||
* 是否为规划内项目 |
|||
*/ |
|||
@ExcelProperty(value = "是否为规划内项目") |
|||
private String ifPlan; |
|||
|
|||
/** |
|||
* 审批级别 |
|||
*/ |
|||
@ExcelProperty(value = "审批级别") |
|||
private String approvalLevel; |
|||
|
|||
/** |
|||
* 预期目标 |
|||
*/ |
|||
@ExcelProperty(value = "预期目标") |
|||
private String expect; |
|||
|
|||
/** |
|||
* 前期设计(字符串数组,JSON格式存储) |
|||
*/ |
|||
@ExcelProperty(value = "前期设计", converter = ExcelDictConvert.class) |
|||
//@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储")
|
|||
private String earlyDesign; |
|||
|
|||
/** |
|||
* 所属区县 |
|||
*/ |
|||
@ExcelProperty(value = "所属区县") |
|||
private String district; |
|||
|
|||
/** |
|||
* 所属控制区 |
|||
*/ |
|||
@ExcelProperty(value = "所属控制区") |
|||
private String controlArea; |
|||
|
|||
/** |
|||
* 所属小流域 |
|||
*/ |
|||
@ExcelProperty(value = "所属小流域") |
|||
private String riverBasin; |
|||
|
|||
/** |
|||
* 项目类别(字符串数组,JSON格式存储) |
|||
*/ |
|||
@ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) |
|||
//@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储")
|
|||
private String projectTypeList; |
|||
|
|||
/** |
|||
* 水环境保护治理技术 |
|||
*/ |
|||
@ExcelProperty(value = "水环境保护治理技术") |
|||
private String projectTech; |
|||
|
|||
/** |
|||
* 技术名称 |
|||
*/ |
|||
@ExcelProperty(value = "技术名称") |
|||
private String techName; |
|||
|
|||
/** |
|||
* 技术成本(元/m²) |
|||
*/ |
|||
@ExcelProperty(value = "技术成本(元/m²)") |
|||
private String techCost; |
|||
|
|||
/** |
|||
* 运行成本(元/m²) |
|||
*/ |
|||
@ExcelProperty(value = "运行成本(元/m²)") |
|||
private String devCost; |
|||
|
|||
/** |
|||
* 技术适用性 |
|||
*/ |
|||
@ExcelProperty(value = "技术适用性") |
|||
private String techUsability; |
|||
|
|||
/** |
|||
* 技术稳定性 |
|||
*/ |
|||
@ExcelProperty(value = "技术稳定性") |
|||
private String techStability; |
|||
|
|||
/** |
|||
* 管理操作难易程度 |
|||
*/ |
|||
@ExcelProperty(value = "管理操作难易程度") |
|||
private String operationLevel; |
|||
|
|||
/** |
|||
* 规划项目内容 |
|||
*/ |
|||
@ExcelProperty(value = "规划项目内容") |
|||
private String projectContent; |
|||
|
|||
/** |
|||
* 完工情况 |
|||
*/ |
|||
@ExcelProperty(value = "完工情况") |
|||
private String projectProgress; |
|||
|
|||
/** |
|||
* 验收方式 |
|||
*/ |
|||
@ExcelProperty(value = "验收方式") |
|||
private String acceptMethod; |
|||
|
|||
/** |
|||
* 运行效果 |
|||
*/ |
|||
@ExcelProperty(value = "运行效果") |
|||
private String devResult; |
|||
|
|||
/** |
|||
* 运行情况 |
|||
*/ |
|||
@ExcelProperty(value = "运行情况") |
|||
private String devStatus; |
|||
|
|||
/** |
|||
* 目标实现(%) |
|||
*/ |
|||
@ExcelProperty(value = "目标实现(%)") |
|||
private String goal; |
|||
|
|||
/** |
|||
* 巡查模式 |
|||
*/ |
|||
@ExcelProperty(value = "巡查模式") |
|||
private String patrolType; |
|||
|
|||
/** |
|||
* 管理模式 |
|||
*/ |
|||
@ExcelProperty(value = "管理模式") |
|||
private String manageType; |
|||
|
|||
/** |
|||
* 长期运营 |
|||
*/ |
|||
@ExcelProperty(value = "长期运营") |
|||
private String longOperation; |
|||
|
|||
/** |
|||
* COD削减率(%) |
|||
*/ |
|||
@ExcelProperty(value = "COD削减率(%)") |
|||
private String cod; |
|||
|
|||
/** |
|||
* TN削减(%) |
|||
*/ |
|||
@ExcelProperty(value = "TN削减(%)") |
|||
private String tn; |
|||
|
|||
/** |
|||
* TP削减率(%) |
|||
*/ |
|||
@ExcelProperty(value = "TP削减率(%)") |
|||
private String tp; |
|||
|
|||
/** |
|||
* 资金完成率评分 |
|||
*/ |
|||
@ExcelProperty(value = "资金完成率评分") |
|||
private String fundingCompletionScore; |
|||
|
|||
/** |
|||
* 环境绩效评分 |
|||
*/ |
|||
@ExcelProperty(value = "环境绩效评分") |
|||
private String environmentalPerformanceScore; |
|||
|
|||
/** |
|||
* 长效运营评分 |
|||
*/ |
|||
@ExcelProperty(value = "长效运营评分") |
|||
private String longTermOperationScore; |
|||
|
|||
/** |
|||
* 当前状态 |
|||
*/ |
|||
@ExcelProperty(value = "当前状态") |
|||
private Long status; |
|||
|
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
package org.dromara.demo.mapper; |
|||
|
|||
import org.dromara.demo.domain.ProjectInfo; |
|||
import org.dromara.demo.domain.vo.ProjectInfoVo; |
|||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
|||
|
|||
/** |
|||
* 项目信息Mapper接口 |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
public interface ProjectInfoMapper extends BaseMapperPlus<ProjectInfo, ProjectInfoVo> { |
|||
|
|||
} |
@ -0,0 +1,68 @@ |
|||
package org.dromara.demo.service; |
|||
|
|||
import org.dromara.demo.domain.vo.ProjectInfoVo; |
|||
import org.dromara.demo.domain.bo.ProjectInfoBo; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
|
|||
import java.util.Collection; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 项目信息Service接口 |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
public interface IProjectInfoService { |
|||
|
|||
/** |
|||
* 查询项目信息 |
|||
* |
|||
* @param id 主键 |
|||
* @return 项目信息 |
|||
*/ |
|||
ProjectInfoVo queryById(String id); |
|||
|
|||
/** |
|||
* 分页查询项目信息列表 |
|||
* |
|||
* @param bo 查询条件 |
|||
* @param pageQuery 分页参数 |
|||
* @return 项目信息分页列表 |
|||
*/ |
|||
TableDataInfo<ProjectInfoVo> queryPageList(ProjectInfoBo bo, PageQuery pageQuery); |
|||
|
|||
/** |
|||
* 查询符合条件的项目信息列表 |
|||
* |
|||
* @param bo 查询条件 |
|||
* @return 项目信息列表 |
|||
*/ |
|||
List<ProjectInfoVo> queryList(ProjectInfoBo bo); |
|||
|
|||
/** |
|||
* 新增项目信息 |
|||
* |
|||
* @param bo 项目信息 |
|||
* @return 是否新增成功 |
|||
*/ |
|||
Boolean insertByBo(ProjectInfoBo bo); |
|||
|
|||
/** |
|||
* 修改项目信息 |
|||
* |
|||
* @param bo 项目信息 |
|||
* @return 是否修改成功 |
|||
*/ |
|||
Boolean updateByBo(ProjectInfoBo bo); |
|||
|
|||
/** |
|||
* 校验并批量删除项目信息信息 |
|||
* |
|||
* @param ids 待删除的主键集合 |
|||
* @param isValid 是否进行有效性校验 |
|||
* @return 是否删除成功 |
|||
*/ |
|||
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid); |
|||
} |
@ -0,0 +1,164 @@ |
|||
package org.dromara.demo.service.impl; |
|||
|
|||
import org.dromara.common.core.utils.MapstructUtils; |
|||
import org.dromara.common.core.utils.StringUtils; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
import org.dromara.demo.domain.bo.ProjectInfoBo; |
|||
import org.dromara.demo.domain.vo.ProjectInfoVo; |
|||
import org.dromara.demo.domain.ProjectInfo; |
|||
import org.dromara.demo.mapper.ProjectInfoMapper; |
|||
import org.dromara.demo.service.IProjectInfoService; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Collection; |
|||
|
|||
/** |
|||
* 项目信息Service业务层处理 |
|||
* |
|||
* @author GJH |
|||
* @date 2025-08-19 |
|||
*/ |
|||
@RequiredArgsConstructor |
|||
@Service |
|||
public class ProjectInfoServiceImpl implements IProjectInfoService { |
|||
|
|||
private final ProjectInfoMapper baseMapper; |
|||
|
|||
/** |
|||
* 查询项目信息 |
|||
* |
|||
* @param id 主键 |
|||
* @return 项目信息 |
|||
*/ |
|||
@Override |
|||
public ProjectInfoVo queryById(String id){ |
|||
return baseMapper.selectVoById(id); |
|||
} |
|||
|
|||
/** |
|||
* 分页查询项目信息列表 |
|||
* |
|||
* @param bo 查询条件 |
|||
* @param pageQuery 分页参数 |
|||
* @return 项目信息分页列表 |
|||
*/ |
|||
@Override |
|||
public TableDataInfo<ProjectInfoVo> queryPageList(ProjectInfoBo bo, PageQuery pageQuery) { |
|||
LambdaQueryWrapper<ProjectInfo> lqw = buildQueryWrapper(bo); |
|||
Page<ProjectInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|||
return TableDataInfo.build(result); |
|||
} |
|||
|
|||
/** |
|||
* 查询符合条件的项目信息列表 |
|||
* |
|||
* @param bo 查询条件 |
|||
* @return 项目信息列表 |
|||
*/ |
|||
@Override |
|||
public List<ProjectInfoVo> queryList(ProjectInfoBo bo) { |
|||
LambdaQueryWrapper<ProjectInfo> lqw = buildQueryWrapper(bo); |
|||
return baseMapper.selectVoList(lqw); |
|||
} |
|||
|
|||
private LambdaQueryWrapper<ProjectInfo> buildQueryWrapper(ProjectInfoBo bo) { |
|||
Map<String, Object> params = bo.getParams(); |
|||
LambdaQueryWrapper<ProjectInfo> lqw = Wrappers.lambdaQuery(); |
|||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), ProjectInfo::getProjectName, bo.getProjectName()); |
|||
lqw.eq(bo.getProjectDate() != null, ProjectInfo::getProjectDate, bo.getProjectDate()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getPlanInvest()), ProjectInfo::getPlanInvest, bo.getPlanInvest()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getActualInvest()), ProjectInfo::getActualInvest, bo.getActualInvest()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getInvestResource()), ProjectInfo::getInvestResource, bo.getInvestResource()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getIfPlan()), ProjectInfo::getIfPlan, bo.getIfPlan()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getApprovalLevel()), ProjectInfo::getApprovalLevel, bo.getApprovalLevel()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getExpect()), ProjectInfo::getExpect, bo.getExpect()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getEarlyDesign()), ProjectInfo::getEarlyDesign, bo.getEarlyDesign()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getDistrict()), ProjectInfo::getDistrict, bo.getDistrict()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getControlArea()), ProjectInfo::getControlArea, bo.getControlArea()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getRiverBasin()), ProjectInfo::getRiverBasin, bo.getRiverBasin()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getProjectTypeList()), ProjectInfo::getProjectTypeList, bo.getProjectTypeList()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getProjectTech()), ProjectInfo::getProjectTech, bo.getProjectTech()); |
|||
lqw.like(StringUtils.isNotBlank(bo.getTechName()), ProjectInfo::getTechName, bo.getTechName()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getTechCost()), ProjectInfo::getTechCost, bo.getTechCost()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getDevCost()), ProjectInfo::getDevCost, bo.getDevCost()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getTechUsability()), ProjectInfo::getTechUsability, bo.getTechUsability()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getTechStability()), ProjectInfo::getTechStability, bo.getTechStability()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getOperationLevel()), ProjectInfo::getOperationLevel, bo.getOperationLevel()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getProjectContent()), ProjectInfo::getProjectContent, bo.getProjectContent()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getProjectProgress()), ProjectInfo::getProjectProgress, bo.getProjectProgress()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getAcceptMethod()), ProjectInfo::getAcceptMethod, bo.getAcceptMethod()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getDevResult()), ProjectInfo::getDevResult, bo.getDevResult()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getDevStatus()), ProjectInfo::getDevStatus, bo.getDevStatus()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getGoal()), ProjectInfo::getGoal, bo.getGoal()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getPatrolType()), ProjectInfo::getPatrolType, bo.getPatrolType()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getManageType()), ProjectInfo::getManageType, bo.getManageType()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getLongOperation()), ProjectInfo::getLongOperation, bo.getLongOperation()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getCod()), ProjectInfo::getCod, bo.getCod()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getTn()), ProjectInfo::getTn, bo.getTn()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getTp()), ProjectInfo::getTp, bo.getTp()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getFundingCompletionScore()), ProjectInfo::getFundingCompletionScore, bo.getFundingCompletionScore()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getEnvironmentalPerformanceScore()), ProjectInfo::getEnvironmentalPerformanceScore, bo.getEnvironmentalPerformanceScore()); |
|||
lqw.eq(StringUtils.isNotBlank(bo.getLongTermOperationScore()), ProjectInfo::getLongTermOperationScore, bo.getLongTermOperationScore()); |
|||
lqw.eq(bo.getStatus() != null, ProjectInfo::getStatus, bo.getStatus()); |
|||
return lqw; |
|||
} |
|||
|
|||
/** |
|||
* 新增项目信息 |
|||
* |
|||
* @param bo 项目信息 |
|||
* @return 是否新增成功 |
|||
*/ |
|||
@Override |
|||
public Boolean insertByBo(ProjectInfoBo bo) { |
|||
ProjectInfo add = MapstructUtils.convert(bo, ProjectInfo.class); |
|||
validEntityBeforeSave(add); |
|||
boolean flag = baseMapper.insert(add) > 0; |
|||
if (flag) { |
|||
bo.setId(add.getId()); |
|||
} |
|||
return flag; |
|||
} |
|||
|
|||
/** |
|||
* 修改项目信息 |
|||
* |
|||
* @param bo 项目信息 |
|||
* @return 是否修改成功 |
|||
*/ |
|||
@Override |
|||
public Boolean updateByBo(ProjectInfoBo bo) { |
|||
ProjectInfo update = MapstructUtils.convert(bo, ProjectInfo.class); |
|||
validEntityBeforeSave(update); |
|||
return baseMapper.updateById(update) > 0; |
|||
} |
|||
|
|||
/** |
|||
* 保存前的数据校验 |
|||
*/ |
|||
private void validEntityBeforeSave(ProjectInfo entity){ |
|||
//TODO 做一些数据校验,如唯一约束
|
|||
} |
|||
|
|||
/** |
|||
* 校验并批量删除项目信息信息 |
|||
* |
|||
* @param ids 待删除的主键集合 |
|||
* @param isValid 是否进行有效性校验 |
|||
* @return 是否删除成功 |
|||
*/ |
|||
@Override |
|||
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) { |
|||
if(isValid){ |
|||
//TODO 做一些业务上的校验,判断是否需要校验
|
|||
} |
|||
return baseMapper.deleteByIds(ids) > 0; |
|||
} |
|||
} |
Loading…
Reference in new issue