diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardAreaInfoController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardAreaInfoController.java new file mode 100644 index 00000000..85c6e935 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardAreaInfoController.java @@ -0,0 +1,38 @@ +package com.zdxt.enforcementcode.controller.web.supervision; + +import cn.hutool.core.lang.tree.Tree; +import com.zdxt.enforcementcode.service.IDashboardAreaInfoService; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 大屏-基础信息-行政区 + * + * @author Lion Li + * @date 2026-06-05 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/web/dashboard/areaInfo") +public class DashboardAreaInfoController extends BaseController { + + private final IDashboardAreaInfoService dashboardAreaInfoService; + + /** + * 查询大屏-基础信息-行政区列表 + * 树状结构 + */ + @GetMapping("/getAreaInfo") + public R>> getAreaInfo() { + List> areaTree = dashboardAreaInfoService.buildAreaTree(); + return R.ok(areaTree); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardOverviewController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardOverviewController.java index b71622e2..caea8cb2 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardOverviewController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/DashboardOverviewController.java @@ -1,5 +1,6 @@ package com.zdxt.enforcementcode.controller.web.supervision; +import com.zdxt.enforcementcode.domain.bo.GenerateDataBo; import com.zdxt.enforcementcode.domain.bo.QueryDashboardOverviewBo; import com.zdxt.enforcementcode.domain.bo.QueryDashboardOverviewCountBo; import com.zdxt.enforcementcode.domain.vo.DashboardOverviewVo; @@ -71,4 +72,16 @@ public class DashboardOverviewController extends BaseController { return R.ok(result); } + + /** + * 生成数据 + * @param bo + * @return + */ + @GetMapping("/generateData") + public R generateData(GenerateDataBo bo) { + String result = dashboardOverviewService.generateData(bo); + return R.ok(result); + } + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java new file mode 100644 index 00000000..31c3e3a7 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java @@ -0,0 +1,61 @@ +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_area_info + * + * @author Lion Li + * @date 2026-06-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("dashboard_area_info") +public class DashboardAreaInfo extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(自增) + */ + @TableId(value = "id") + private Long id; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 父级编码 + */ + private String parentCode; + + /** + * 排序号,数字越小越靠前 + */ + private Long sort; + + /** + * 级别 + */ + private Long level; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardCheckRegisterDomain.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardCheckRegisterDomain.java index ae039bad..13041dbf 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardCheckRegisterDomain.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardCheckRegisterDomain.java @@ -105,17 +105,17 @@ public class DashboardCheckRegisterDomain extends BaseEntity { /** * 行政强制总数 */ - private Long xzzqzs; + private Long xzqzzs; /** * 行政强制同比% */ - private Long xzzqtb; + private Long xzqztb; /** * 行政强制环比% */ - private Long xzzqhb; + private Long xzqzhb; /** * 其他执法总数 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardOverview.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardOverview.java index 4a827afd..4de793bf 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardOverview.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardOverview.java @@ -65,12 +65,12 @@ public class DashboardOverview extends BaseEntity { /** * 年份 */ - private Long year; + private Integer year; /** * 月份 */ - private Long month; + private Integer month; /** * 企业总数 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardAreaInfoBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardAreaInfoBo.java new file mode 100644 index 00000000..3a7f2659 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/DashboardAreaInfoBo.java @@ -0,0 +1,62 @@ +package com.zdxt.enforcementcode.domain.bo; + +import com.zdxt.enforcementcode.domain.bean.DashboardAreaInfo; +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_area_info + * + * @author Lion Li + * @date 2026-06-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DashboardAreaInfo.class, reverseConvertGenerate = false) +public class DashboardAreaInfoBo extends BaseEntity { + + /** + * 主键ID(自增) + */ + @NotNull(message = "主键ID(自增)不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 父级编码 + */ + private String parentCode; + + /** + * 排序号,数字越小越靠前 + */ + @NotNull(message = "排序号,数字越小越靠前不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sort; + + /** + * 级别 + */ + @NotNull(message = "级别不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long level; + + /** + * 逻辑删除:0-否 1-是 + */ + private String isDelete; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/GenerateDataBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/GenerateDataBo.java new file mode 100644 index 00000000..887d37fd --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/GenerateDataBo.java @@ -0,0 +1,37 @@ +package com.zdxt.enforcementcode.domain.bo; + +import com.zdxt.enforcementcode.domain.bean.DashboardOverview; +import io.github.linpeilie.annotations.AutoMapper; +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_overview + * + * @author Lion Li + * @date 2026-05-27 + */ +@Data +public class GenerateDataBo implements Serializable { + + /** + * 类型:1-大屏总览数据 + */ + private Integer type; + + /** + * 年份 + */ + private Integer year; + + /** + * 月份 + */ + private Integer month; + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java new file mode 100644 index 00000000..10bbefe2 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java @@ -0,0 +1,73 @@ +package com.zdxt.enforcementcode.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.zdxt.enforcementcode.domain.bean.DashboardAreaInfo; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 大屏-基础信息-行政区视图对象 dashboard_area_info + * + * @author Lion Li + * @date 2026-06-05 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DashboardAreaInfo.class) +public class DashboardAreaInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(自增) + */ + @ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "自=增") + private Long id; + + /** + * 编码 + */ + @ExcelProperty(value = "编码") + private String code; + + /** + * 名称 + */ + @ExcelProperty(value = "名称") + private String name; + + /** + * 父级编码 + */ + @ExcelProperty(value = "父级编码") + private String parentCode; + + /** + * 排序号,数字越小越靠前 + */ + @ExcelProperty(value = "排序号,数字越小越靠前") + private Long sort; + + /** + * 级别 + */ + @ExcelProperty(value = "级别") + private Long level; + + /** + * 逻辑删除:0-否 1-是 + */ + @ExcelProperty(value = "逻辑删除:0-否 1-是") + private String isDelete; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardCheckRegisterDomainVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardCheckRegisterDomainVo.java index a86c6df3..e8bc4851 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardCheckRegisterDomainVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardCheckRegisterDomainVo.java @@ -127,20 +127,17 @@ public class DashboardCheckRegisterDomainVo implements Serializable { /** * 行政强制总数 */ - @ExcelProperty(value = "行政强制总数") - private Long xzzqzs; + private Long xzqzzs; /** * 行政强制同比% */ - @ExcelProperty(value = "行政强制同比%") - private Long xzzqtb; + private Long xzqztb; /** * 行政强制环比% */ - @ExcelProperty(value = "行政强制环比%") - private Long xzzqhb; + private Long xzqzhb; /** * 其他执法总数 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardAreaInfoMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardAreaInfoMapper.java new file mode 100644 index 00000000..366f7c06 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardAreaInfoMapper.java @@ -0,0 +1,15 @@ +package com.zdxt.enforcementcode.mapper; + +import com.zdxt.enforcementcode.domain.bean.DashboardAreaInfo; +import com.zdxt.enforcementcode.domain.vo.DashboardAreaInfoVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 大屏-基础信息-行政区Mapper接口 + * + * @author Lion Li + * @date 2026-06-05 + */ +public interface DashboardAreaInfoMapper extends BaseMapperPlus { + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardOverviewMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardOverviewMapper.java index 96fc4943..469da062 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardOverviewMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/DashboardOverviewMapper.java @@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.mapper; import com.zdxt.enforcementcode.domain.bean.DashboardOverview; +import com.zdxt.enforcementcode.domain.bo.GenerateDataBo; import com.zdxt.enforcementcode.domain.bo.LawEnforcementIntensityQueryBo; import com.zdxt.enforcementcode.domain.bo.QueryDashboardOverviewCountBo; import com.zdxt.enforcementcode.domain.vo.DashboardOverviewVo; @@ -11,29 +12,14 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; -/** - * 大屏总览Mapper接口 - * - * @author Lion Li - * @date 2026-05-27 - */ public interface DashboardOverviewMapper extends BaseMapperPlus { - /** - * 查询执法力度统计数据 - * - * @param queryBo 查询参数 - * @return 执法力度统计信息 - */ LawEnforcementIntensityVo queryLawEnforcementIntensity(LawEnforcementIntensityQueryBo queryBo); - /** - * 查询数量统计数据(企业数、执法单位数、执法人员数) - * level=1 查询该市下所有区数据,level=2 查询该区下所有街道数据 - * - * @param bo 查询参数 - * @return 数量统计列表 - */ List queryCount(QueryDashboardOverviewCountBo bo); + int deleteByYearMonth(Long year, Long month); + + void generateOverviewData(GenerateDataBo bo); + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java new file mode 100644 index 00000000..0a02cb13 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java @@ -0,0 +1,71 @@ +package com.zdxt.enforcementcode.service; + +import com.zdxt.enforcementcode.domain.vo.DashboardAreaInfoVo; +import com.zdxt.enforcementcode.domain.bo.DashboardAreaInfoBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import cn.hutool.core.lang.tree.Tree; + +import java.util.Collection; +import java.util.List; + +/** + * 大屏-基础信息-行政区Service接口 + * + * @author Lion Li + * @date 2026-06-05 + */ +public interface IDashboardAreaInfoService { + + /** + * 查询大屏-基础信息-行政区 + * + * @param id 主键 + * @return 大屏-基础信息-行政区 + */ + DashboardAreaInfoVo queryById(Long id); + + /** + * 分页查询大屏-基础信息-行政区列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 大屏-基础信息-行政区分页列表 + */ + TableDataInfo queryPageList(DashboardAreaInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的大屏-基础信息-行政区列表 + * + * @param bo 查询条件 + * @return 大屏-基础信息-行政区列表 + */ + List queryList(DashboardAreaInfoBo bo); + + /** + * 新增大屏-基础信息-行政区 + * + * @param bo 大屏-基础信息-行政区 + * @return 是否新增成功 + */ + Boolean insertByBo(DashboardAreaInfoBo bo); + + /** + * 修改大屏-基础信息-行政区 + * + * @param bo 大屏-基础信息-行政区 + * @return 是否修改成功 + */ + Boolean updateByBo(DashboardAreaInfoBo bo); + + /** + * 校验并批量删除大屏-基础信息-行政区信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List> buildAreaTree(); +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardOverviewService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardOverviewService.java index 285ce588..c9002dff 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardOverviewService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardOverviewService.java @@ -1,5 +1,6 @@ package com.zdxt.enforcementcode.service; +import com.zdxt.enforcementcode.domain.bo.GenerateDataBo; import com.zdxt.enforcementcode.domain.vo.DashboardOverviewVo; import com.zdxt.enforcementcode.domain.bo.DashboardOverviewBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -91,4 +92,12 @@ public interface IDashboardOverviewService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 生成大屏总览数据 + * + * @param bo 生成参数 + * @return 生成结果信息 + */ + String generateData(GenerateDataBo bo); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java new file mode 100644 index 00000000..7dd956f6 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java @@ -0,0 +1,113 @@ +package com.zdxt.enforcementcode.service.impl; + +import com.zdxt.enforcementcode.domain.bean.DashboardAreaInfo; +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.DashboardAreaInfoBo; +import com.zdxt.enforcementcode.domain.vo.DashboardAreaInfoVo; +import com.zdxt.enforcementcode.mapper.DashboardAreaInfoMapper; +import com.zdxt.enforcementcode.service.IDashboardAreaInfoService; +import cn.hutool.core.lang.tree.Tree; +import org.dromara.common.core.utils.TreeBuildUtils; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +@Slf4j +@RequiredArgsConstructor +@Service +public class DashboardAreaInfoServiceImpl implements IDashboardAreaInfoService { + + private final DashboardAreaInfoMapper baseMapper; + + @Override + public DashboardAreaInfoVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(DashboardAreaInfoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(DashboardAreaInfoBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DashboardAreaInfoBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(DashboardAreaInfo::getSort); + lqw.eq(StringUtils.isNotBlank(bo.getCode()), DashboardAreaInfo::getCode, bo.getCode()); + lqw.like(StringUtils.isNotBlank(bo.getName()), DashboardAreaInfo::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getParentCode()), DashboardAreaInfo::getParentCode, bo.getParentCode()); + lqw.eq(bo.getSort() != null, DashboardAreaInfo::getSort, bo.getSort()); + lqw.eq(bo.getLevel() != null, DashboardAreaInfo::getLevel, bo.getLevel()); + lqw.eq(StringUtils.isNotBlank(bo.getIsDelete()), DashboardAreaInfo::getIsDelete, bo.getIsDelete()); + return lqw; + } + + @Override + public Boolean insertByBo(DashboardAreaInfoBo bo) { + DashboardAreaInfo add = MapstructUtils.convert(bo, DashboardAreaInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(DashboardAreaInfoBo bo) { + DashboardAreaInfo update = MapstructUtils.convert(bo, DashboardAreaInfo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + private void validEntityBeforeSave(DashboardAreaInfo entity){ + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public List> buildAreaTree() { + DashboardAreaInfoBo bo = new DashboardAreaInfoBo(); + bo.setIsDelete("0"); + List areaList = queryList(bo); + + if (areaList == null || areaList.isEmpty()) { + return List.of(); + } + + return TreeBuildUtils.buildMultiRoot( + areaList, + DashboardAreaInfoVo::getCode, + DashboardAreaInfoVo::getParentCode, + (node, tree) -> tree + .setId(node.getCode()) + .setParentId(node.getParentCode()) + .setName(node.getName()) + .setWeight(node.getSort() != null ? node.getSort().intValue() : 0) + .putExtra("level", node.getLevel()) + ); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardCheckRegisterDomainServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardCheckRegisterDomainServiceImpl.java index 654ea59e..c0f33c90 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardCheckRegisterDomainServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardCheckRegisterDomainServiceImpl.java @@ -96,9 +96,9 @@ public class DashboardCheckRegisterDomainServiceImpl implements IDashboardCheckR lqw.eq(bo.getXzcfzs() != null, DashboardCheckRegisterDomain::getXzcfzs, bo.getXzcfzs()); lqw.eq(bo.getXzcftb() != null, DashboardCheckRegisterDomain::getXzcftb, bo.getXzcftb()); lqw.eq(bo.getXzcfhb() != null, DashboardCheckRegisterDomain::getXzcfhb, bo.getXzcfhb()); - lqw.eq(bo.getXzzqzs() != null, DashboardCheckRegisterDomain::getXzzqzs, bo.getXzzqzs()); - lqw.eq(bo.getXzzqtb() != null, DashboardCheckRegisterDomain::getXzzqtb, bo.getXzzqtb()); - lqw.eq(bo.getXzzqhb() != null, DashboardCheckRegisterDomain::getXzzqhb, bo.getXzzqhb()); + lqw.eq(bo.getXzzqzs() != null, DashboardCheckRegisterDomain::getXzqzzs, bo.getXzzqzs()); + lqw.eq(bo.getXzzqtb() != null, DashboardCheckRegisterDomain::getXzqztb, bo.getXzzqtb()); + lqw.eq(bo.getXzzqhb() != null, DashboardCheckRegisterDomain::getXzqzhb, bo.getXzzqhb()); lqw.eq(bo.getQtzfzs() != null, DashboardCheckRegisterDomain::getQtzfzs, bo.getQtzfzs()); lqw.eq(bo.getQtzftb() != null, DashboardCheckRegisterDomain::getQtzftb, bo.getQtzftb()); lqw.eq(bo.getQtzfhb() != null, DashboardCheckRegisterDomain::getQtzfhb, bo.getQtzfhb()); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardOverviewServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardOverviewServiceImpl.java index 96ebcf7e..593e51ac 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardOverviewServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardOverviewServiceImpl.java @@ -1,12 +1,14 @@ package com.zdxt.enforcementcode.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdUtil; import com.zdxt.enforcementcode.domain.bean.DashboardOverview; -import com.zdxt.enforcementcode.domain.bo.LawEnforcementIntensityQueryBo; -import com.zdxt.enforcementcode.domain.bo.QueryDashboardOverviewBo; -import com.zdxt.enforcementcode.domain.bo.QueryDashboardOverviewCountBo; +import com.zdxt.enforcementcode.domain.bo.*; +import com.zdxt.enforcementcode.domain.vo.DashboardAreaInfoVo; import com.zdxt.enforcementcode.domain.vo.LawEnforcementIntensityVo; import com.zdxt.enforcementcode.domain.vo.LawEnforcementIntensityCountVo; +import com.zdxt.enforcementcode.service.IDashboardAreaInfoService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -16,12 +18,17 @@ 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.dromara.common.redis.utils.SequenceUtils; +import org.dromara.common.translation.annotation.Translation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.annotation.Transient; import org.springframework.stereotype.Service; -import com.zdxt.enforcementcode.domain.bo.DashboardOverviewBo; import com.zdxt.enforcementcode.domain.vo.DashboardOverviewVo; import com.zdxt.enforcementcode.mapper.DashboardOverviewMapper; import com.zdxt.enforcementcode.service.IDashboardOverviewService; +import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -38,6 +45,77 @@ public class DashboardOverviewServiceImpl implements IDashboardOverviewService { private final DashboardOverviewMapper baseMapper; + @Autowired + private IDashboardAreaInfoService dashboardAreaInfoService; + + /** + * 生成大屏总览数据 + * + * @param bo 生成参数 + * @return 生成结果信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public String generateData(GenerateDataBo bo) { + if (bo.getType() == null) { + throw new IllegalArgumentException("生成类型不能为空,类型:1-大屏总览数据"); + } + + // 默认使用当前年和上一个月 + LocalDate now = LocalDate.now(); + LocalDate targetMonth = now.minusMonths(1); + if (bo.getYear() == null) { + bo.setYear(targetMonth.getYear()); + } + if (bo.getMonth() == null) { + bo.setMonth(targetMonth.getMonthValue()); + } + + // 类型1:大屏总览数据 + if (bo.getType() == 1) { +// // 先删除该年月的旧数据 +// baseMapper.deleteByYearMonth(bo.getYear().longValue(), bo.getMonth().longValue()); +// DashboardAreaInfoBo queryBo = new DashboardAreaInfoBo(); +// queryBo.setLevel(2L);//查询所有的区 +// List areaInfoVos = dashboardAreaInfoService.queryList(queryBo); +// for (DashboardAreaInfoVo areaInfoVo : areaInfoVos) { +// DashboardOverview dashboardOverviewArea = new DashboardOverview(); +// dashboardOverviewArea.setId(IdUtil.simpleUUID()); +// dashboardOverviewArea.setCityCode(areaInfoVo.getParentCode()); +// dashboardOverviewArea.setCityName("深圳"); +// dashboardOverviewArea.setYear(bo.getYear()); +// dashboardOverviewArea.setMonth(bo.getMonth()); +// dashboardOverviewArea.setDistrictCode(areaInfoVo.getCode()); +// dashboardOverviewArea.setDistrictName(areaInfoVo.getName()); +// dashboardOverviewArea.setLevel(3L);//区 +// this.baseMapper.insert(dashboardOverviewArea); + +// // 查询街道 +// queryBo.setLevel(3L); +// queryBo.setParentCode(areaInfoVo.getCode());//区编码 +// List streetInfoVos = dashboardAreaInfoService.queryList(queryBo); +// if(CollectionUtil.isNotEmpty(streetInfoVos)){ +// for (DashboardAreaInfoVo dashboardAreaInfoVo: streetInfoVos ) { +// DashboardOverview dashboardOverviewStreet = new DashboardOverview(); +// dashboardOverviewStreet.setId(IdUtil.simpleUUID()); +// dashboardOverviewStreet.setCityCode("1"); +// dashboardOverviewStreet.setCityName("深圳"); +// dashboardOverviewStreet.setYear(bo.getYear()); +// dashboardOverviewStreet.setMonth(bo.getMonth()); +// dashboardOverviewStreet.setDistrictCode(areaInfoVo.getCode()); +// dashboardOverviewStreet.setDistrictName(areaInfoVo.getName()); +// dashboardOverviewStreet.setStreetCode(dashboardAreaInfoVo.getCode()); +// dashboardOverviewStreet.setStreetName(dashboardAreaInfoVo.getName()); +// dashboardOverviewStreet.setLevel(5L);//街道 +// this.baseMapper.insert(dashboardOverviewStreet); +// } +// } + + } + + return "大屏总览数据生成成功,年份:" + bo.getYear() + ",月份:" + bo.getMonth(); + } + /** * 查询大屏总览 * @@ -333,4 +411,6 @@ public class DashboardOverviewServiceImpl implements IDashboardOverviewService { } return baseMapper.deleteByIds(ids) > 0; } + + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardOverviewMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardOverviewMapper.xml index 1b59ab47..0008f886 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardOverviewMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/DashboardOverviewMapper.xml @@ -4,7 +4,6 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + + DELETE FROM dashboard_overview + WHERE year = #{year} + AND month = #{month} + + + + INSERT INTO dashboard_overview ( + id, + city_code, + city_name, + district_code, + district_name, + street_code, + street_name, + level, + year, + month, + qyzs, + ddzfs, + lhzfs, + bzfqys, + zfrys, + zfdws, + jczs, + xzjc, + xzcf, + xzqz, + xzqt, + is_delete, + create_time, + update_time, + create_by, + update_by + ) + SELECT + REPLACE(UUID(), '-', '') AS id, + '440300' AS city_code, + '深圳市' AS city_name, + d.district_code AS district_code, + d.district_name AS district_name, + NULL AS street_code, + NULL AS street_name, + 2 AS level, + #{year} AS year, + #{month} AS month, + + COALESCE(ent.qyzs, 0) AS qyzs, + + COALESCE(er.ddzfs, 0) AS ddzfs, + COALESCE(er.lhzfs, 0) AS lhzfs, + COALESCE(er.bzfqys, 0) AS bzfqys, + + COALESCE(dept_zf.zfrys, 0) AS zfrys, + COALESCE(dept_zf.zfdws, 0) AS zfdws, + + COALESCE(er.jczs, 0) AS jczs, + COALESCE(er.xzjc, 0) AS xzjc, + COALESCE(er.xzcf, 0) AS xzcf, + COALESCE(er.xzqz, 0) AS xzqz, + COALESCE(er.xzqt, 0) AS xzqt, + + '0' AS is_delete, + NOW() AS create_time, + NOW() AS update_time, + 'system' AS create_by, + 'system' AS update_by + FROM ( + SELECT DISTINCT + sd.area_node AS district_code, + sd.dept_name AS district_name + FROM sys_dept sd + WHERE sd.area_node IS NOT NULL + AND sd.area_node != '' + GROUP BY sd.area_node, sd.dept_name + ) d + + LEFT JOIN ( + SELECT + COUNT(DISTINCT s.recordid) AS qyzs + FROM sszt_jbxx110497_new s + CROSS JOIN ( + SELECT DISTINCT dept_name + FROM sys_dept + WHERE area_node IS NOT NULL AND area_node != '' + ) dn + WHERE s.jycs LIKE CONCAT('%', dn.dept_name, '%') + ) ent ON 1=1 + + LEFT JOIN ( + SELECT + SUM(CASE WHEN er.is_real_union = 0 THEN 1 ELSE 0 END) AS ddzfs, + SUM(CASE WHEN er.is_real_union = 1 THEN 1 ELSE 0 END) AS lhzfs, + COUNT(DISTINCT er.enterprise_id) AS bzfqys, + COUNT(er.id) AS jczs, + SUM(CASE WHEN er.law_enforcement_item = '行政检查' OR er.law_enforcement_item LIKE '%检查%' THEN 1 ELSE 0 END) AS xzjc, + SUM(CASE WHEN er.law_enforcement_item = '行政处罚' OR er.law_enforcement_item LIKE '%处罚%' THEN 1 ELSE 0 END) AS xzcf, + SUM(CASE WHEN er.law_enforcement_item = '行政强制' OR er.law_enforcement_item LIKE '%强制%' THEN 1 ELSE 0 END) AS xzqz, + SUM(CASE WHEN er.law_enforcement_item NOT IN ('行政检查', '行政处罚', '行政强制') + AND er.law_enforcement_item NOT LIKE '%检查%' + AND er.law_enforcement_item NOT LIKE '%处罚%' + AND er.law_enforcement_item NOT LIKE '%强制%' THEN 1 ELSE 0 END) AS xzqt, + sd.area_node AS area_node + FROM enforcement_registration er + INNER JOIN sys_dept sd ON er.bureau_dept_id = sd.dept_id + WHERE er.is_delete = 0 + AND er.is_submit = 1 + AND er.enforcement_time >= DATE_FORMAT(CONCAT(#{year}, '-', LPAD(#{month}, 2, '0'), '-01'), '%Y-%m-%d %H:%i:%s') + AND er.enforcement_time < DATE_FORMAT(DATE_ADD(CONCAT(#{year}, '-', LPAD(#{month}, 2, '0'), '-01'), INTERVAL 1 MONTH), '%Y-%m-%d %H:%i:%s') + GROUP BY sd.area_node + ) er ON d.district_code = er.area_node + + LEFT JOIN ( + SELECT + COUNT(DISTINCT u.user_id) AS zfrys, + COUNT(DISTINCT sd.dept_id) AS zfdws, + sd.area_node AS area_node + FROM sys_user u + INNER JOIN sys_dept sd ON u.dept_id = sd.dept_id + WHERE sd.area_node IS NOT NULL + AND sd.area_node != '' + GROUP BY sd.area_node + ) dept_zf ON d.district_code = dept_zf.area_node + + WHERE d.district_code IS NOT NULL + AND d.district_code != '' + +