diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/ComprehensiveEvaluationEnum.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/ComprehensiveEvaluationEnum.java new file mode 100644 index 00000000..04467215 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/ComprehensiveEvaluationEnum.java @@ -0,0 +1,78 @@ +package com.zdxt.enforcementcode.common.commonenum; + +/** + * 综合评价枚举定义 + * + * @author Vincent + */ +public enum ComprehensiveEvaluationEnum { + + /** + * A - 优秀 + */ + A("A", "优秀"), + + /** + * B - 良好 + */ + B("B", "良好"), + + /** + * C - 一般 + */ + C("C", "一般"); + + private String code; + private String description; + + ComprehensiveEvaluationEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public String getCode() { + return code; + } + + public String getDescription() { + return description; + } + + /** + * 根据code获取description + * + * @param code 综合评价编码 + * @return 综合评价描述 + */ + public static String getDescriptionByCode(String code) { + if (code == null || code.isEmpty()) { + return ""; + } + ComprehensiveEvaluationEnum[] enums = ComprehensiveEvaluationEnum.values(); + for (ComprehensiveEvaluationEnum evaluation : enums) { + if (evaluation.getCode().equals(code)) { + return evaluation.getDescription(); + } + } + return ""; + } + + /** + * 根据description获取code + * + * @param description 综合评价描述 + * @return 综合评价编码 + */ + public static String getCodeByDescription(String description) { + if (description == null || description.isEmpty()) { + return null; + } + ComprehensiveEvaluationEnum[] enums = ComprehensiveEvaluationEnum.values(); + for (ComprehensiveEvaluationEnum evaluation : enums) { + if (evaluation.getDescription().equals(description)) { + return evaluation.getCode(); + } + } + return null; + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardSituationTrendDomainController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardSituationTrendDomainController.java new file mode 100644 index 00000000..b60dda94 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardSituationTrendDomainController.java @@ -0,0 +1,66 @@ +package com.zdxt.enforcementcode.controller.web.supervision; + +import java.util.List; + +import com.zdxt.enforcementcode.domain.bo.ComprehensiveEvaluationStatBo; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationDomainQueryBo; +import com.zdxt.enforcementcode.domain.bo.DashboardTrendStatQueryBo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerListVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationDomainVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerVo; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.core.domain.R; +import com.zdxt.enforcementcode.service.IDashboardSituationTrendDomainService; + +/** + * 大屏-态势趋势分析-领域统计 + * + * @author Lion Li + * @date 2026-05-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/web/dashboard/situationTrendDomain") +public class DashboardSituationTrendDomainController extends BaseController { + + private final IDashboardSituationTrendDomainService situationTrendDomainService; + /** + * 查询态势趋势分析-领域统计列表 + */ + @GetMapping("/querySituationTrendDomainList") + public R> querySituationTrendDomainList(@Validated DashboardTrendStatQueryBo bo) { + List list = situationTrendDomainService.querySituationTrendDomainList(bo); + return R.ok(list); + } + + /** + * 风险态势情况占比 + * + * @param bo 查询参数 + * @return 综合评价统计列表 + */ + @GetMapping("/statByComprehensiveEvaluation") + public R statByComprehensiveEvaluation(@Validated ComprehensiveEvaluationStatBo bo) { + DashboardSituationPerVo dashboardSituationPerVo = situationTrendDomainService.statByComprehensiveEvaluation(bo); + return R.ok(dashboardSituationPerVo); + } + + + /** + * 风险态势构成 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计信息 + */ + @GetMapping("/getSituationTrendDomainInfo") + public R getSituationTrendDomainInfo(@Validated ComprehensiveEvaluationStatBo bo) { + DashboardSituationDomainVo vo = situationTrendDomainService.getSituationTrendDomainInfo(bo); + return R.ok(vo); + } + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardSituationTrendDomain.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardSituationTrendDomain.java new file mode 100644 index 00000000..7905e39a --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardSituationTrendDomain.java @@ -0,0 +1,106 @@ +package com.zdxt.enforcementcode.domain.bean; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 态势趋势分析-领域统计对象 dashboard_situation_trend_domain + * + * @author Lion Li + * @date 2026-05-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("dashboard_situation_trend_domain") +public class DashboardSituationTrendDomain extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private String id; + + /** + * 年份 + */ + private Long year; + + /** + * 季度 1-4 + */ + private Long quarter; + + /** + * 领域ID + */ + private String lyid; + + /** + * 领域名称 + */ + private String lymc; + + /** + * 执法单位ID + */ + private String zfdwid; + + /** + * 执法单位名称 + */ + private String zfdwmc; + + /** + * 综合评级:A|优秀、B|良好、C|一般 + */ + private String zhpj; + + /** + * 风险信用:A|优秀、B|良好、C|一般 + */ + private String fxxy; + + /** + * 高频检查:A|优秀、B|良好、C|一般 + */ + private String gpjc; + + /** + * 异常行为:A|优秀、B|良好、C|一般 + */ + private String ycxw; + + /** + * 趋势异常:A|优秀、B|良好、C|一般 + */ + private String qsyc; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + /** + * 局级部门ID + */ + private String bureauDeptId; + + /** + * 部门ID + */ + private String deptId; + + /** + * 组织单位ID + */ + private String organId; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/ComprehensiveEvaluationStatBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/ComprehensiveEvaluationStatBo.java new file mode 100644 index 00000000..f907c098 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/ComprehensiveEvaluationStatBo.java @@ -0,0 +1,33 @@ +package com.zdxt.enforcementcode.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; + +/** + * 综合评价统计查询BO + * + * @author Vincent + */ +@Data +public class ComprehensiveEvaluationStatBo implements Serializable { + + /** + * 年份 + */ + @NotNull(message = "年份不能为空") + private Long year; + + /** + * 季度(1-4) + */ + @NotNull(message = "季度不能为空") + private Long quarter; + + + /** + * 领域ID + */ + private String lyid; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationDomainQueryBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationDomainQueryBo.java new file mode 100644 index 00000000..6ea5f2de --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationDomainQueryBo.java @@ -0,0 +1,109 @@ +package com.zdxt.enforcementcode.domain.bo; + + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * 态势趋势分析-领域统计业务对象 dashboard_situation_trend_domain + * + * @author Lion Li + * @date 2026-05-28 + */ +@Data +public class DashboardSituationDomainQueryBo implements Serializable { + + /** + * 主键ID + */ + @NotBlank(message = "主键ID不能为空", groups = { EditGroup.class }) + private String id; + + /** + * 年份 + */ + @NotNull(message = "年份不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long year; + + /** + * 季度 1-4 + */ + @NotNull(message = "季度 1-4不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quarter; + + /** + * 领域ID + */ + @NotBlank(message = "领域ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lyid; + + /** + * 领域名称 + */ + @NotBlank(message = "领域名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lymc; + + /** + * 执法单位ID + */ + @NotBlank(message = "执法单位ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwid; + + /** + * 执法单位名称 + */ + @NotBlank(message = "执法单位名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwmc; + + /** + * 综合评级:A|优秀、B|良好、C|一般 + */ + private String zhpj; + + /** + * 风险信用:A|优秀、B|良好、C|一般 + */ + private String fxxy; + + /** + * 高频检查:A|优秀、B|良好、C|一般 + */ + private String gpjc; + + /** + * 异常行为:A|优秀、B|良好、C|一般 + */ + private String ycxw; + + /** + * 趋势异常:A|优秀、B|良好、C|一般 + */ + private String qsyc; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + /** + * 局级部门ID + */ + private String bureauDeptId; + + /** + * 部门ID + */ + private String deptId; + + /** + * 组织单位ID + */ + private String organId; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationTrendDomainBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationTrendDomainBo.java new file mode 100644 index 00000000..ffd380f7 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardSituationTrendDomainBo.java @@ -0,0 +1,112 @@ +package com.zdxt.enforcementcode.domain.bo; + + +import com.zdxt.enforcementcode.domain.bean.DashboardSituationTrendDomain; +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.*; + +/** + * 态势趋势分析-领域统计业务对象 dashboard_situation_trend_domain + * + * @author Lion Li + * @date 2026-05-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DashboardSituationTrendDomain.class, reverseConvertGenerate = false) +public class DashboardSituationTrendDomainBo extends BaseEntity { + + /** + * 主键ID + */ + @NotBlank(message = "主键ID不能为空", groups = { EditGroup.class }) + private String id; + + /** + * 年份 + */ + @NotNull(message = "年份不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long year; + + /** + * 季度 1-4 + */ + @NotNull(message = "季度 1-4不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quarter; + + /** + * 领域ID + */ + @NotBlank(message = "领域ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lyid; + + /** + * 领域名称 + */ + @NotBlank(message = "领域名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lymc; + + /** + * 执法单位ID + */ + @NotBlank(message = "执法单位ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwid; + + /** + * 执法单位名称 + */ + @NotBlank(message = "执法单位名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwmc; + + /** + * 综合评级:A|优秀、B|良好、C|一般 + */ + private String zhpj; + + /** + * 风险信用:A|优秀、B|良好、C|一般 + */ + private String fxxy; + + /** + * 高频检查:A|优秀、B|良好、C|一般 + */ + private String gpjc; + + /** + * 异常行为:A|优秀、B|良好、C|一般 + */ + private String ycxw; + + /** + * 趋势异常:A|优秀、B|良好、C|一般 + */ + private String qsyc; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + /** + * 局级部门ID + */ + private String bureauDeptId; + + /** + * 部门ID + */ + private String deptId; + + /** + * 组织单位ID + */ + private String organId; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardTrendStatQueryBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardTrendStatQueryBo.java index 861f947c..6e8eef69 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardTrendStatQueryBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardTrendStatQueryBo.java @@ -18,7 +18,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; * @date 2026-05-27 */ @Data -public class DashboardTrendStatQueryBo extends BaseEntity { +public class DashboardTrendStatQueryBo { /** * 年份(可选,不传则默认查询前四个季度) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationDomainVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationDomainVo.java new file mode 100644 index 00000000..3121e0aa --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationDomainVo.java @@ -0,0 +1,109 @@ +package com.zdxt.enforcementcode.domain.vo; + + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * 态势趋势分析-领域统计业务对象 dashboard_situation_trend_domain + * + * @author Lion Li + * @date 2026-05-28 + */ +@Data +public class DashboardSituationDomainVo implements Serializable { + + /** + * 主键ID + */ + @NotBlank(message = "主键ID不能为空", groups = { EditGroup.class }) + private String id; + + /** + * 年份 + */ + @NotNull(message = "年份不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long year; + + /** + * 季度 1-4 + */ + @NotNull(message = "季度 1-4不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quarter; + + /** + * 领域ID + */ + @NotBlank(message = "领域ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lyid; + + /** + * 领域名称 + */ + @NotBlank(message = "领域名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String lymc; + + /** + * 执法单位ID + */ + @NotBlank(message = "执法单位ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwid; + + /** + * 执法单位名称 + */ + @NotBlank(message = "执法单位名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String zfdwmc; + + /** + * 综合评级:A|优秀、B|良好、C|一般 + */ + private String zhpj; + + /** + * 风险信用:A|优秀、B|良好、C|一般 + */ + private String fxxy; + + /** + * 高频检查:A|优秀、B|良好、C|一般 + */ + private String gpjc; + + /** + * 异常行为:A|优秀、B|良好、C|一般 + */ + private String ycxw; + + /** + * 趋势异常:A|优秀、B|良好、C|一般 + */ + private String qsyc; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + /** + * 局级部门ID + */ + private String bureauDeptId; + + /** + * 部门ID + */ + private String deptId; + + /** + * 组织单位ID + */ + private String organId; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerListVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerListVo.java new file mode 100644 index 00000000..d52e8f57 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerListVo.java @@ -0,0 +1,39 @@ +package com.zdxt.enforcementcode.domain.vo; + +import com.zdxt.enforcementcode.common.commonenum.ComprehensiveEvaluationEnum; +import lombok.Data; +import java.io.Serializable; + +/** + * 综合评价统计VO + * + * @author Vincent + */ +@Data +public class DashboardSituationPerListVo implements Serializable { + + /** + * 综合评价等级(A-优秀、B-良好、C-一般) + */ + private String level; + + + /** + * 综合评价等级(A-优秀、B-良好、C-一般) + */ + private String levelDescription; + + /** + * 统计个数 + */ + private Long count; + + /** + * 比例 + */ + private double per; + + public String getLevelDescription() { + return ComprehensiveEvaluationEnum.getDescriptionByCode(level); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerVo.java new file mode 100644 index 00000000..11494069 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationPerVo.java @@ -0,0 +1,24 @@ +package com.zdxt.enforcementcode.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 综合评价统计VO + * + * @author Vincent + */ +@Data +public class DashboardSituationPerVo implements Serializable { + /** + * 总数 + */ + private int total; + + /** + * 统计列表 + */ + private List list; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationTrendDomainVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationTrendDomainVo.java new file mode 100644 index 00000000..41104e63 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardSituationTrendDomainVo.java @@ -0,0 +1,126 @@ +package com.zdxt.enforcementcode.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.zdxt.enforcementcode.domain.bean.DashboardSituationTrendDomain; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + + + +/** + * 态势趋势分析-领域统计视图对象 dashboard_situation_trend_domain + * + * @author Lion Li + * @date 2026-05-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DashboardSituationTrendDomain.class) +public class DashboardSituationTrendDomainVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private String id; + + /** + * 年份 + */ + @ExcelProperty(value = "年份") + private Long year; + + /** + * 季度 1-4 + */ + @ExcelProperty(value = "季度 1-4") + private Long quarter; + + /** + * 领域ID + */ + @ExcelProperty(value = "领域ID") + private String lyid; + + /** + * 领域名称 + */ + @ExcelProperty(value = "领域名称") + private String lymc; + + /** + * 执法单位ID + */ + @ExcelProperty(value = "执法单位ID") + private String zfdwid; + + /** + * 执法单位名称 + */ + @ExcelProperty(value = "执法单位名称") + private String zfdwmc; + + /** + * 综合评级:A|优秀、B|良好、C|一般 + */ + @ExcelProperty(value = "综合评级:A|优秀、B|良好、C|一般") + private String zhpj; + + /** + * 风险信用:A|优秀、B|良好、C|一般 + */ + @ExcelProperty(value = "风险信用:A|优秀、B|良好、C|一般") + private String fxxy; + + /** + * 高频检查:A|优秀、B|良好、C|一般 + */ + @ExcelProperty(value = "高频检查:A|优秀、B|良好、C|一般") + private String gpjc; + + /** + * 异常行为:A|优秀、B|良好、C|一般 + */ + @ExcelProperty(value = "异常行为:A|优秀、B|良好、C|一般") + private String ycxw; + + /** + * 趋势异常:A|优秀、B|良好、C|一般 + */ + @ExcelProperty(value = "趋势异常:A|优秀、B|良好、C|一般") + private String qsyc; + + /** + * 逻辑删除:0-否 1-是 + */ + @ExcelProperty(value = "逻辑删除:0-否 1-是") + private String isDelete; + + /** + * 局级部门ID + */ + @ExcelProperty(value = "局级部门ID") + private String bureauDeptId; + + /** + * 部门ID + */ + @ExcelProperty(value = "部门ID") + private String deptId; + + /** + * 组织单位ID + */ + @ExcelProperty(value = "组织单位ID") + private String organId; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardSituationTrendDomainMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardSituationTrendDomainMapper.java new file mode 100644 index 00000000..4c7ab9a6 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardSituationTrendDomainMapper.java @@ -0,0 +1,46 @@ +package com.zdxt.enforcementcode.mapper; + + +import com.zdxt.enforcementcode.domain.bean.DashboardSituationTrendDomain; +import com.zdxt.enforcementcode.domain.bo.ComprehensiveEvaluationStatBo; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationDomainQueryBo; +import com.zdxt.enforcementcode.domain.bo.DashboardTrendStatQueryBo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerListVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationDomainVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationTrendDomainVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +import java.util.List; + +/** + * 态势趋势分析-领域统计Mapper接口 + * + * @author Lion Li + * @date 2026-05-28 + */ +public interface DashboardSituationTrendDomainMapper extends BaseMapperPlus { + + /** + * 查询态势趋势分析-领域统计列表 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计列表 + */ + List querySituationTrendDomainList(DashboardTrendStatQueryBo bo); + + /** + * 根据年份和季度,按综合评价分组统计个数 + * + * @param bo 查询参数 + * @return 综合评价统计列表 + */ + List statByComprehensiveEvaluation(ComprehensiveEvaluationStatBo bo); + + /** + * 根据年度、季度、领域ID查询态势趋势分析-领域统计信息 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计信息 + */ + DashboardSituationDomainVo getSituationTrendDomainInfo(ComprehensiveEvaluationStatBo bo); +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardSituationTrendDomainService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardSituationTrendDomainService.java new file mode 100644 index 00000000..4e93318d --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardSituationTrendDomainService.java @@ -0,0 +1,98 @@ +package com.zdxt.enforcementcode.service; + +import com.zdxt.enforcementcode.domain.bo.ComprehensiveEvaluationStatBo; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationDomainQueryBo; +import com.zdxt.enforcementcode.domain.bo.DashboardTrendStatQueryBo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerListVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationDomainVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationTrendDomainVo; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationTrendDomainBo; +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 Lion Li + * @date 2026-05-28 + */ +public interface IDashboardSituationTrendDomainService { + + /** + * 查询态势趋势分析-领域统计 + * + * @param id 主键 + * @return 态势趋势分析-领域统计 + */ + DashboardSituationTrendDomainVo queryById(String id); + + /** + * 分页查询态势趋势分析-领域统计列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 态势趋势分析-领域统计分页列表 + */ + TableDataInfo queryPageList(DashboardSituationTrendDomainBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的态势趋势分析-领域统计列表 + * + * @param bo 查询条件 + * @return 态势趋势分析-领域统计列表 + */ + List queryList(DashboardSituationTrendDomainBo bo); + + /** + * 新增态势趋势分析-领域统计 + * + * @param bo 态势趋势分析-领域统计 + * @return 是否新增成功 + */ + Boolean insertByBo(DashboardSituationTrendDomainBo bo); + + /** + * 修改态势趋势分析-领域统计 + * + * @param bo 态势趋势分析-领域统计 + * @return 是否修改成功 + */ + Boolean updateByBo(DashboardSituationTrendDomainBo bo); + + /** + * 校验并批量删除态势趋势分析-领域统计信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询态势趋势分析-领域统计列表 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计列表 + */ + List querySituationTrendDomainList(DashboardTrendStatQueryBo bo); + + /** + * 根据年份和季度,按综合评价分组统计个数 + * + * @param bo 查询参数 + * @return 综合评价统计列表 + */ + DashboardSituationPerVo statByComprehensiveEvaluation(ComprehensiveEvaluationStatBo bo); + + /** + * 根据年度、季度、领域ID查询态势趋势分析-领域统计信息 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计信息 + */ + DashboardSituationDomainVo getSituationTrendDomainInfo(ComprehensiveEvaluationStatBo bo); +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardSituationTrendDomainServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardSituationTrendDomainServiceImpl.java new file mode 100644 index 00000000..e3d6da9d --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardSituationTrendDomainServiceImpl.java @@ -0,0 +1,207 @@ +package com.zdxt.enforcementcode.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.zdxt.enforcementcode.domain.bean.DashboardSituationTrendDomain; +import com.zdxt.enforcementcode.domain.bo.ComprehensiveEvaluationStatBo; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationDomainQueryBo; +import com.zdxt.enforcementcode.domain.bo.DashboardTrendStatQueryBo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerListVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationDomainVo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationPerVo; +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 lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.zdxt.enforcementcode.domain.bo.DashboardSituationTrendDomainBo; +import com.zdxt.enforcementcode.domain.vo.DashboardSituationTrendDomainVo; +import com.zdxt.enforcementcode.mapper.DashboardSituationTrendDomainMapper; +import com.zdxt.enforcementcode.service.IDashboardSituationTrendDomainService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 态势趋势分析-领域统计Service业务层处理 + * + * @author Lion Li + * @date 2026-05-28 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class DashboardSituationTrendDomainServiceImpl implements IDashboardSituationTrendDomainService { + + private final DashboardSituationTrendDomainMapper baseMapper; + + /** + * 查询态势趋势分析-领域统计 + * + * @param id 主键 + * @return 态势趋势分析-领域统计 + */ + @Override + public DashboardSituationTrendDomainVo queryById(String id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询态势趋势分析-领域统计列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 态势趋势分析-领域统计分页列表 + */ + @Override + public TableDataInfo queryPageList(DashboardSituationTrendDomainBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的态势趋势分析-领域统计列表 + * + * @param bo 查询条件 + * @return 态势趋势分析-领域统计列表 + */ + @Override + public List queryList(DashboardSituationTrendDomainBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DashboardSituationTrendDomainBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(DashboardSituationTrendDomain::getId); + lqw.eq(bo.getYear() != null, DashboardSituationTrendDomain::getYear, bo.getYear()); + lqw.eq(bo.getQuarter() != null, DashboardSituationTrendDomain::getQuarter, bo.getQuarter()); + lqw.eq(StringUtils.isNotBlank(bo.getLyid()), DashboardSituationTrendDomain::getLyid, bo.getLyid()); + lqw.eq(StringUtils.isNotBlank(bo.getLymc()), DashboardSituationTrendDomain::getLymc, bo.getLymc()); + lqw.eq(StringUtils.isNotBlank(bo.getZfdwid()), DashboardSituationTrendDomain::getZfdwid, bo.getZfdwid()); + lqw.eq(StringUtils.isNotBlank(bo.getZfdwmc()), DashboardSituationTrendDomain::getZfdwmc, bo.getZfdwmc()); + lqw.eq(StringUtils.isNotBlank(bo.getZhpj()), DashboardSituationTrendDomain::getZhpj, bo.getZhpj()); + lqw.eq(StringUtils.isNotBlank(bo.getFxxy()), DashboardSituationTrendDomain::getFxxy, bo.getFxxy()); + lqw.eq(StringUtils.isNotBlank(bo.getGpjc()), DashboardSituationTrendDomain::getGpjc, bo.getGpjc()); + lqw.eq(StringUtils.isNotBlank(bo.getYcxw()), DashboardSituationTrendDomain::getYcxw, bo.getYcxw()); + lqw.eq(StringUtils.isNotBlank(bo.getQsyc()), DashboardSituationTrendDomain::getQsyc, bo.getQsyc()); + lqw.eq(StringUtils.isNotBlank(bo.getIsDelete()), DashboardSituationTrendDomain::getIsDelete, bo.getIsDelete()); + lqw.eq(StringUtils.isNotBlank(bo.getBureauDeptId()), DashboardSituationTrendDomain::getBureauDeptId, bo.getBureauDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getDeptId()), DashboardSituationTrendDomain::getDeptId, bo.getDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getOrganId()), DashboardSituationTrendDomain::getOrganId, bo.getOrganId()); + return lqw; + } + + /** + * 新增态势趋势分析-领域统计 + * + * @param bo 态势趋势分析-领域统计 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DashboardSituationTrendDomainBo bo) { + DashboardSituationTrendDomain add = MapstructUtils.convert(bo, DashboardSituationTrendDomain.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改态势趋势分析-领域统计 + * + * @param bo 态势趋势分析-领域统计 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DashboardSituationTrendDomainBo bo) { + DashboardSituationTrendDomain update = MapstructUtils.convert(bo, DashboardSituationTrendDomain.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DashboardSituationTrendDomain entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除态势趋势分析-领域统计信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 查询态势趋势分析-领域统计列表 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计列表 + */ + @Override + public List querySituationTrendDomainList(DashboardTrendStatQueryBo bo) { + return baseMapper.querySituationTrendDomainList(bo); + } + + /** + * 根据年份和季度,按综合评价分组统计个数 + * + * @param bo 查询参数 + * @return 综合评价统计列表 + */ + @Override + public DashboardSituationPerVo statByComprehensiveEvaluation(ComprehensiveEvaluationStatBo bo) { + DashboardSituationPerVo dashboardSituationPerVo = new DashboardSituationPerVo(); + List list = baseMapper.statByComprehensiveEvaluation(bo); + + // 计算总数 + int total = list.stream() + .mapToInt(item -> item.getCount() != null ? item.getCount().intValue() : 0) + .sum(); + + // 计算每个级别的比例 + if (total > 0) { + list.forEach(item -> { + long count = item.getCount() != null ? item.getCount() : 0; + double per = (double) count / total * 100; + // 保留两位小数 + item.setPer(Math.round(per * 100.0) / 100.0); + }); + } + + dashboardSituationPerVo.setTotal(total); + dashboardSituationPerVo.setList(list); + + return dashboardSituationPerVo; + } + + /** + * 根据年度、季度、领域ID查询态势趋势分析-领域统计信息 + * + * @param bo 查询参数 + * @return 态势趋势分析-领域统计信息 + */ + @Override + public DashboardSituationDomainVo getSituationTrendDomainInfo(ComprehensiveEvaluationStatBo bo) { + return baseMapper.getSituationTrendDomainInfo(bo); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardSituationTrendDomainMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardSituationTrendDomainMapper.xml new file mode 100644 index 00000000..7dd01291 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardSituationTrendDomainMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + +