Browse Source

Merge branch 'dev' into dev-V1.10.4

dev-V1.10.4
vincent 2 days ago
parent
commit
4de1ef6ae7
  1. 23
      script/sql/vincent/shjjian.sql
  2. 4
      script/sql/zfjd-refactoring-v1/其他/njy/2026-1.10.0.sql
  3. 3
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewController.java
  4. 70
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewDataSumController.java
  5. 14
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewJobController.java
  6. 1
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/StatisticalPanelCityController.java
  7. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/StatisticalPanelController.java
  8. 17
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java
  9. 18
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/StatisticsComplaintController.java
  10. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementRegistrationBo.java
  11. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/ScanDataSituationBo.java
  12. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/CimDashboardOverviewVo.java
  13. 15
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/CimDashboardOverviewMapper.java
  14. 30
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/CimPersonUnitMonthDataSumJob.java
  15. 17
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/LawEnfOfficerSericeImpl.java
  16. 21
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/ScanDataSituationServiceImpl.java
  17. 37
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ICimDashboardOverviewDataSumService.java
  18. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IComplaintStatisticsService.java
  19. 192
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/CimDashboardOverviewDataSumSserviceImpl.java
  20. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/ComplaintStatisticsServiceImpl.java
  21. 4
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/StatisticalPaneServiceCityImpl.java
  22. 151
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/CimDashboardOverviewMapper.xml
  23. 10
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LawEnfOfficerMapper.xml
  24. 49
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/ScanDataSituationMapper.xml
  25. 62
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/StatisticalPanelCityMapper.xml
  26. 10
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/StatisticalPanelMapper.xml
  27. 4
      zdxt-web-client/zdxt-admin-plus-ui/.env.production
  28. 6
      zdxt-web-client/zdxt-admin-plus-ui/src/layout/components/AppMain.vue
  29. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/layout/index.vue
  30. 10
      zdxt-web-client/zdxt-admin-plus-ui/src/router/index.ts
  31. 5
      zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-district/index.vue
  32. 9
      zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-enforcer/index.vue
  33. 4
      zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-field/index.vue
  34. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/home/index.vue
  35. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/nos/add.vue
  36. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/add.vue
  37. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/detail.vue
  38. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/draft.vue
  39. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/edit.vue
  40. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/index.vue
  41. 2
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/repost.vue
  42. 64
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/city-direct/index.vue
  43. 4
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/components/TopSixMetrics.vue
  44. 26
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/home/index.vue
  45. 5
      zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-scope.css
  46. 18
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue
  47. 17
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue
  48. 8
      zdxt-web-client/zdxt-efcode-enterprise-app/src/components/enterprise/footerNav.vue

23
script/sql/vincent/shjjian.sql

@ -0,0 +1,23 @@
-- MySQL 建表语句
CREATE TABLE `sj_indiv_credit_rating_info` (
`sccode` VARCHAR(1020) DEFAULT NULL COMMENT '统一社会信用代码',
`entname` VARCHAR(1020) DEFAULT NULL COMMENT '个体工商户名称',
`creditlevel` VARCHAR(1020) DEFAULT NULL COMMENT '信用评价等级',
`id` INT NOT NULL COMMENT '非业务主键',
`add_time` DATETIME DEFAULT NULL COMMENT '新增时间,业务表数据首次创建时间',
`cd_operation` VARCHAR(40) DEFAULT NULL COMMENT '增量标识,业务表数据新增时值为I,修改时值为U,删除时值为D',
`cd_time` DATETIME DEFAULT NULL COMMENT '最后变更时间,表示业务表数据发生修改的时间,第一次新增则与新增时间一致',
`cd_batch` VARCHAR(200) DEFAULT NULL COMMENT '批次号,批次号按照数据日期+数据序号方式制定,数据日期是指更新数据的日期,如20180715,数据序号为5位数字,每天从00001开始,当天数据序号递增',
`ins` DECIMAL(22,0) DEFAULT NULL COMMENT '系统内部INS',
`seq` DECIMAL(22,0) DEFAULT NULL COMMENT '系统内部SEQ',
`updatestatus` DECIMAL(22,0) DEFAULT NULL COMMENT '系统内部UPDATESTATUS',
`updatetime` VARCHAR(200) DEFAULT NULL COMMENT '系统内部UPDATETIME',
`byzd01` VARCHAR(800) DEFAULT NULL COMMENT '备用字段01',
`byzd02` VARCHAR(800) DEFAULT NULL COMMENT '备用字段02',
`create_dept` VARCHAR(64) DEFAULT NULL COMMENT '创建人部门',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

4
script/sql/zfjd-refactoring-v1/其他/njy/2026-1.10.0.sql

@ -115,5 +115,5 @@ ALTER TABLE dashboard_trend_stat_domain CHANGE fourthTime fourthTime varchar(100
ALTER TABLE zfjd_ef20_1_2026_07_13.dashboard_area_info ADD area_code varchar(100) NULL COMMENT '行政区编码';
ALTER TABLE zfjd_ef20_1_2026_07_13.dashboard_area_info CHANGE area_code area_code varchar(100) NULL COMMENT '行政区编码' AFTER name;
ALTER TABLE dashboard_area_info ADD area_code varchar(100) NULL COMMENT '行政区编码';
ALTER TABLE dashboard_area_info CHANGE area_code area_code varchar(100) NULL COMMENT '行政区编码' AFTER name;

3
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewController.java

@ -97,8 +97,7 @@ public class CimDashboardOverviewController {
if (xzzfCount == null || xzzfCount == 0) {
vo.setRqyjl(BigDecimal.ZERO);
} else {
vo.setRqyjl(BigDecimal.valueOf(xzzfCount - (lhzfsCount + ddbmzfCount))
.divide(BigDecimal.valueOf(xzzfCount), 4, RoundingMode.HALF_UP));
vo.setRqyjl(BigDecimal.valueOf(xzzfCount - (lhzfsCount + ddbmzfCount)));
}
return R.ok(vo);
}

70
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewDataSumController.java

@ -43,12 +43,44 @@ public class CimDashboardOverviewDataSumController {
* @return
*/
@GetMapping("/getDashboardOverviewMonthDataSum")
public R<List<CimDashboardOverviewVo>> getDashboardOverviewMonthDataSum() {
public R<Map<String,Object>> getDashboardOverviewMonthDataSum(CimDashboardOverviewQueryBo bo) {
//查询大屏总览数据(月度)
List<CimDashboardOverviewVo> vo= cimDashboardOverviewDataSumService.getDashboardOverviewMonthDataSum();
return R.ok(vo);
Map<String,Object> map= cimDashboardOverviewDataSumService.getDashboardOverviewMonthDataSum(bo);
return R.ok(map);
}
/**
* 企业数量
* @return
*/
@GetMapping("/getDashboardOverviewMonthDataEntSum")
public R<Map<String,Object>> getDashboardOverviewMonthDataEntSum(CimDashboardOverviewQueryBo bo) {
//查询大屏总览数据(月度)
Map<String,Object> map= cimDashboardOverviewDataSumService.getDashboardOverviewMonthDataSum(bo);
return R.ok(map);
}
/**
* 执法人员-执法单位
* @return
*/
@GetMapping("/getDashboardOverviewMonthDataPenUnitSum")
public R<Map<String,Object>> getDashboardOverviewMonthDataPenUnitSum(CimDashboardOverviewQueryBo bo) {
//查询大屏总览数据(月度)
Map<String,Object> map= cimDashboardOverviewDataSumService.getDashboardOverviewMonthDataSum(bo);
return R.ok(map);
}
/**
* Cim-大屏总览 按区域查询 计划总数-预告总数-涉企执法总数-检查评价总数-检查投诉总数-平均检查频次
* @param bo
* @return
*/
@GetMapping("/getDashboardOverviewAreaMonthDataSum")
public R<CimDashboardOverviewVo> getDashboardOverviewAreaMonthDataSum(CimDashboardOverviewQueryBo bo){
CimDashboardOverviewVo vo= cimDashboardOverviewDataSumService.getDashboardOverviewAreaMonthDataSum(bo);
return R.ok(vo);
}
/**
* Cim-大屏总览-区域月数据汇总-企业数量-执法单位数-执法人员数
@ -66,9 +98,9 @@ public class CimDashboardOverviewDataSumController {
* @return
*/
@GetMapping("/getHighCheckAreaMonthDataSumMap")
public R<Map<String,Object>> getHighCheckAreaMonthDataSumMap() {
public R<Map<String,Object>> getHighCheckAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
// 查询数据
return R.ok(cimDashboardOverviewDataSumService.getHighCheckAreaMonthDataSumMap());
return R.ok(cimDashboardOverviewDataSumService.getHighCheckAreaMonthDataSumMap(bo));
}
@ -132,8 +164,18 @@ public class CimDashboardOverviewDataSumController {
* */
@GetMapping("/getTrendAreaMonthDataSumMap")
public R<Map<String,Object>> getTrendAreaMonthDataSumMap() {
return R.ok(cimDashboardOverviewDataSumService.getTrendAreaMonthDataSumMap());
public R<Map<String,Object>> getTrendAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
return R.ok(cimDashboardOverviewDataSumService.getTrendAreaMonthDataSumMap(bo));
}
/**
* 下转联动某个区域查询对应区域街道的数据
* @param bo
* @return
*/
@GetMapping("/getAreaQuarterlyRegionList")
public R<List<CimDashboardOverviewVo>> getAreaQuarterlyRegionList(CimDashboardOverviewQueryBo bo) {
return R.ok(cimDashboardOverviewDataSumService.getAreaQuarterlyRegionList(bo));
}
/**
@ -143,8 +185,18 @@ public class CimDashboardOverviewDataSumController {
* */
@GetMapping("/getTrendFieldMonthDataSumMap")
public R<Map<String,Object>> getTrendFieldMonthDataSumMap() {
return R.ok(cimDashboardOverviewDataSumService.getTrendFieldMonthDataSumMap());
public R<Map<String,Object>> getTrendFieldMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
return R.ok(cimDashboardOverviewDataSumService.getTrendFieldMonthDataSumMap(bo));
}
/**
* 下转联动某个区域查询对应区域领域的数据(季度)
* @param bo
* @return
*/
@GetMapping("/getAreaDomainQuarterList")
public R<List<CimDashboardOverviewVo>> getAreaDomainQuarterList(CimDashboardOverviewQueryBo bo) {
return R.ok(cimDashboardOverviewDataSumService.getAreaDomainQuarterList(bo));
}
}

14
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/cim/CimDashboardOverviewJobController.java

@ -40,6 +40,20 @@ public class CimDashboardOverviewJobController {
cimDashboardOverviewDataSumService.getMonthDataSum();
return R.ok();
}
/**
* Cim-大屏总览
* 执法监管
*月度数据
* 按区域统计执法人员数-执法单位数-企业总数
* @param
* @return
*/
@GetMapping("/getAreaMonthDataSum")
public R<Void> getAreaMonthDataSum(){
//模拟测试定时任务插入新数据(月度)
cimDashboardOverviewDataSumService.getAreaMonthDataSum();
return R.ok();
}

1
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/StatisticalPanelCityController.java

@ -64,7 +64,6 @@ public class StatisticalPanelCityController {
/** 监督端-市数据 */
@PostMapping("/collectStatistics")
@ResponseBody
public R<Map<String, Object>> analysisLawUnion(@RequestBody SixAnalysisParamsBo params){

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/StatisticalPanelController.java

@ -42,6 +42,7 @@ public class StatisticalPanelController {
*
* @param params
* */
@SaIgnore
@PostMapping("/analysisEnterprisesCoordination")
@ResponseBody
public R<Map<String,Object>> analysisEnterprisesCoordination(@RequestBody(required = false) SixAnalysisParamsBo params){
@ -210,6 +211,7 @@ public class StatisticalPanelController {
}
/** 监督端-行政时间维度 */
@SaIgnore
@PostMapping("/analysisTime")
@ResponseBody
public R <Map<String,Object>> analysisEnterprisesInsTime(@RequestBody SixAnalysisParamsBo params){

17
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java

@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.controller.web.supervision.report;
import cn.dev33.satoken.annotation.SaIgnore;
import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo;
import com.zdxt.enforcementcode.domain.vo.ComplaintStatisticsVo;
import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo;
import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo;
import com.zdxt.enforcementcode.domain.vo.report.RegistrationAnalysisVo;
@ -9,6 +10,7 @@ import com.zdxt.enforcementcode.domain.vo.report.RegistrationExportVo;
import com.zdxt.enforcementcode.domain.vo.report.RegistrationExportV2Vo;
import com.zdxt.enforcementcode.domain.vo.report.RegistrationStatisticsVo;
import com.zdxt.enforcementcode.report.IEnforcementRegistrationReportReport;
import com.zdxt.enforcementcode.service.IComplaintStatisticsService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -34,11 +36,11 @@ import java.util.List;
public class RegistrationController {
private final IEnforcementRegistrationReportReport registrationReport;
private final IComplaintStatisticsService complaintStatisticsService;
/**
* 接口1:涉企执法统计指标
*/
@SaIgnore
@GetMapping("/statistics")
public R<RegistrationStatisticsVo> statistics(EnforcementRegistrationBo bo) {
return R.ok(registrationReport.statistics(bo));
@ -55,7 +57,6 @@ public class RegistrationController {
/**
* 接口2-V2:涉企执法统计列表(SQL JOIN字典表排序 + 服务端分页,当前使用)
*/
@SaIgnore
@GetMapping("/list")
public TableDataInfo<EnforcementRegistrationVo> list(EnforcementRegistrationBo bo, PageQuery pageQuery) {
return registrationReport.listForV2(bo, pageQuery);
@ -156,11 +157,21 @@ public class RegistrationController {
* @param bo
* @return
*/
@SaIgnore
@GetMapping("/unionList")
public R<List<EnforcementRegistrationVo>> unionList(EnforcementRegistrationBo bo)
{
List<EnforcementRegistrationVo> returnList = registrationReport.selectEnforcementRegistrationAndAddressList(bo);
return R.ok(returnList);
}
/**
* 监督端-查询是否投诉明细
* @param rid
* @return
*/
@GetMapping("/complaintByRid")
public R<ComplaintStatisticsVo> complaintByRid(String rid){
ComplaintStatisticsVo vo=complaintStatisticsService.selectById(rid);
return R.ok(vo);
}
}

18
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/StatisticsComplaintController.java

@ -1,5 +1,6 @@
package com.zdxt.enforcementcode.controller.web.supervision.report;
import com.zdxt.enforcementcode.domain.ComplaintStatistics;
import com.zdxt.enforcementcode.domain.bo.ComplaintStatisticsBo;
import com.zdxt.enforcementcode.domain.vo.report.*;
import com.zdxt.enforcementcode.report.IStatisticsComplaintReport;
@ -10,6 +11,7 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -47,6 +49,22 @@ public class StatisticsComplaintController {
return reportService.detailList(bo, pageQuery);
}
/**
* 监督端-投诉明细
* @param id
* @param model
* @return
*/
/*@GetMapping("/details/{id}")
public String complaintsReportDetails(@PathVariable("id") String id, Model model) {
ComplaintStatistics complaintStatistics = complaintsReportService.complaintById(id);
model.addAttribute("complaintStatistics", complaintStatistics);
List<MssqOrderFlow> mssqOrderFlowList = iEnterpriseComplaintService.selectEnterpriseComplaintProcess(complaintStatistics.getCid());
model.addAttribute("mssqOrderFlowList", mssqOrderFlowList);
return prefix + "/details.html";
}*/
/** Tab2-投诉类型统计 */
@GetMapping("/typeStatList")
public R<List<ComplaintReportTypeStatVo>> typeStatList(ComplaintStatisticsBo bo) {

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementRegistrationBo.java

@ -392,4 +392,14 @@ public class EnforcementRegistrationBo extends BaseEntity {
* 街道名称
*/
private String streetName;
/**
* 排序方向 asc/desc
*/
private String isAsc;
/**
* 排序字段列
*/
private String orderByColumn;
}

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/ScanDataSituationBo.java

@ -52,4 +52,14 @@ public class ScanDataSituationBo {
* 结束时间
*/
private Date endTime;
/**
* 排序字段
*/
private String isAsc;
/**
* 排序字段列
*/
private String orderByColumn;
}

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/CimDashboardOverviewVo.java

@ -93,6 +93,13 @@ public class CimDashboardOverviewVo {
*/
private Long lhzfs;
private Long lhzfcs;
/**
* 检查次数
*/
private Long jccs;
/**
* 联合执法数同比(增长率,百分比,如 15.5 表示 +15.5%)
*/

15
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/CimDashboardOverviewMapper.java

@ -43,7 +43,7 @@ public interface CimDashboardOverviewMapper extends BaseMapperPlus<DashboardOver
List<CimDashboardOverviewVo> getLawPersonnelCount(CimDashboardOverviewQueryBo bo);
/**
* 获取执法人员数
* 获取执法单位数
*/
List<CimDashboardOverviewVo> getLawUnitCount(CimDashboardOverviewQueryBo bo);
/**
@ -110,6 +110,13 @@ public interface CimDashboardOverviewMapper extends BaseMapperPlus<DashboardOver
*/
List<CimDashboardOverviewVo> getQuarterlyRegionList(CimDashboardOverviewQueryBo bo);
/**
* 下转联动某个区域查询对应区域街道的数据
* @param bo
* @return
*/
List<CimDashboardOverviewVo> getAreaQuarterlyRegionList(CimDashboardOverviewQueryBo bo);
/**
* 获取领域检查趋势分析(季度)
* @param bo
@ -117,6 +124,12 @@ public interface CimDashboardOverviewMapper extends BaseMapperPlus<DashboardOver
*/
List<CimDashboardOverviewVo> getDomainQuarterList(CimDashboardOverviewQueryBo bo);
/**
* 下转联动某个区域查询对应区域领域的数据(季度)
* @param bo
* @return
*/
List<CimDashboardOverviewVo> getAreaDomainQuarterList(CimDashboardOverviewQueryBo bo);
/**
* 获取涉企登记执法类别(实)

30
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/quartz/job/CimPersonUnitMonthDataSumJob.java

@ -0,0 +1,30 @@
package com.zdxt.enforcementcode.quartz.job;
import com.zdxt.enforcementcode.service.ICimDashboardOverviewDataSumService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
*Cim执法人员-执法单位-企业数量
*
* @author zrb
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class CimPersonUnitMonthDataSumJob {
private final ICimDashboardOverviewDataSumService cimDashboardOverviewDataSumService;
/**
* 任务执行入口(public,供 JobInvokeUtil 通过反射调用)
*/
public void execute() {
Boolean result =cimDashboardOverviewDataSumService.getAreaMonthDataSum();
}
}

17
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/LawEnfOfficerSericeImpl.java

@ -11,15 +11,28 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@RequiredArgsConstructor
public class LawEnfOfficerSericeImpl implements ILawEnfOfficerService {
private final LawEnfOfficerMapper lawEnfOfficerMapper;
/**
* 构建分页对象:排序统一由 XML 中的 orderByColumn 白名单控制。
* 清空 MyBatis-Plus 的 OrderItem,避免 PageQuery 把驼峰列名转成下划线列名后,
* 在 SQL 里再追加一个排序字段(如 order by xzzf_count asc, xzzfCount asc)。
*/
private <T> Page<T> buildPage(PageQuery pageQuery) {
Page<T> page = pageQuery.build();
// 排序只由 XML 中的 orderByColumn 白名单决定,清空 MP 的 OrderItem
page.setOrders(new ArrayList<>());
return page;
}
@Override
public TableDataInfo<EnforcementRegistrationVo> selectLawEnfOfficerPageList(PageQuery pageQuery, EnforcementRegistrationBo bo) {
Page<EnforcementRegistrationVo> list=lawEnfOfficerMapper.selectLawEnfOfficerPageList(pageQuery.build(),bo);
Page<EnforcementRegistrationVo> list=lawEnfOfficerMapper.selectLawEnfOfficerPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(list);
}
@ -30,7 +43,7 @@ public class LawEnfOfficerSericeImpl implements ILawEnfOfficerService {
@Override
public TableDataInfo<EnforcementRegistrationVo> selectLawEnfOfficerDetailsPageList(PageQuery pageQuery, EnforcementRegistrationBo bo) {
Page<EnforcementRegistrationVo> list=lawEnfOfficerMapper.selectLawEnfOfficerDetailsPageList(pageQuery.build(),bo);
Page<EnforcementRegistrationVo> list=lawEnfOfficerMapper.selectLawEnfOfficerDetailsPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(list);
}
}

21
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/ScanDataSituationServiceImpl.java

@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@ -18,9 +19,21 @@ public class ScanDataSituationServiceImpl implements IScanDataSituationService {
private final ScanDataSituationMapper scanDataSituationMapper;
/**
* 构建分页对象:排序统一由 XML 中的 orderByColumn 白名单控制。
* 清空 MyBatis-Plus 的 OrderItem,避免 PageQuery 把驼峰列名转成下划线列名后,
* 在 SQL 里再追加一个排序字段(如 order by xzzf_count asc, xzzfCount asc)。
*/
private <T> Page<T> buildPage(PageQuery pageQuery) {
Page<T> page = pageQuery.build();
// 排序只由 XML 中的 orderByColumn 白名单决定,清空 MP 的 OrderItem
page.setOrders(new ArrayList<>());
return page;
}
@Override
public TableDataInfo<ScanDataSituationVo> selectScanDataSituationAreaPageList(PageQuery pageQuery, ScanDataSituationBo bo) {
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationAreaPageList(pageQuery.build(),bo);
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationAreaPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(page);
}
@ -31,14 +44,14 @@ public class ScanDataSituationServiceImpl implements IScanDataSituationService {
@Override
public TableDataInfo<ScanDataSituationVo> selectScanDataSituationAreaDetailsPageList(PageQuery pageQuery, ScanDataSituationBo bo) {
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationAreaDetailsPageList(pageQuery.build(),bo);
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationAreaDetailsPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(page);
}
@Override
public TableDataInfo<ScanDataSituationVo> selectScanDataSituationDomainPageList(PageQuery pageQuery, ScanDataSituationBo bo) {
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationDomainPageList(pageQuery.build(),bo);
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationDomainPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(page);
}
@ -49,7 +62,7 @@ public class ScanDataSituationServiceImpl implements IScanDataSituationService {
@Override
public TableDataInfo<ScanDataSituationVo> selectScanDataSituationDomainDetailsPageList(PageQuery pageQuery, ScanDataSituationBo bo) {
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationDomainDetailsPageList(pageQuery.build(),bo);
Page<ScanDataSituationVo> page=scanDataSituationMapper.selectScanDataSituationDomainDetailsPageList(buildPage(pageQuery),bo);
return TableDataInfo.build(page);
}
}

37
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ICimDashboardOverviewDataSumService.java

@ -21,12 +21,24 @@ public interface ICimDashboardOverviewDataSumService {
*/
Boolean getMonthDataSum();
/**
* Cim大屏-按区域统计-企业数量-执法人员数-执法单位数
* 定时任务调用方法
* @param
* @return
*/
Boolean getAreaMonthDataSum();
/**
* Cim大屏-查询大屏总览汇总月度数据
* @return
*/
List<CimDashboardOverviewVo> getDashboardOverviewMonthDataSum();
Map<String,Object> getDashboardOverviewMonthDataSum(CimDashboardOverviewQueryBo bo);
/**
* Cim大屏-按区域条件查询月度数据
*/
CimDashboardOverviewVo getDashboardOverviewAreaMonthDataSum(CimDashboardOverviewQueryBo bo);
/**
@ -54,7 +66,7 @@ public interface ICimDashboardOverviewDataSumService {
* Cim大屏-查询高频检查预警-区域月度数据
* @return
*/
Map<String,Object> getHighCheckAreaMonthDataSumMap();
Map<String,Object> getHighCheckAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo);
/**
* Cim大屏-查询高频检查预警-领域月度数据
@ -130,7 +142,15 @@ public interface ICimDashboardOverviewDataSumService {
* Cim大屏-查询态势感知-趋势行为分析-区域月度数据
* @return
*/
Map<String,Object> getTrendAreaMonthDataSumMap();
Map<String,Object> getTrendAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo);
/**
* 下转联动某个区域查询对应区域街道的数据
* @param bo
* @return
*/
List<CimDashboardOverviewVo> getAreaQuarterlyRegionList(CimDashboardOverviewQueryBo bo);
/**
* Cim大屏-查询态势感知-趋势行为分析-领域月度数据
@ -139,10 +159,17 @@ public interface ICimDashboardOverviewDataSumService {
*/
Boolean getTrendFieldMonthDataSum();
/**
* Cim大屏-查询态势感知-趋势行为分析-领域月度数据
* @return
*/
Map<String,Object> getTrendFieldMonthDataSumMap();
Map<String,Object> getTrendFieldMonthDataSumMap(CimDashboardOverviewQueryBo bo);
/**
* 下转联动某个区域查询对应区域领域的数据(季度)
* @param bo
* @return
*/
List<CimDashboardOverviewVo> getAreaDomainQuarterList(CimDashboardOverviewQueryBo bo);
}

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IComplaintStatisticsService.java

@ -24,6 +24,8 @@ public interface IComplaintStatisticsService {
*/
ComplaintStatisticsVo queryById(Long id);
ComplaintStatisticsVo selectById(String rid);
/**
* 分页查询【请填写功能名称】列表
*

192
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/CimDashboardOverviewDataSumSserviceImpl.java

@ -12,6 +12,7 @@ import com.zdxt.enforcementcode.mapper.*;
import com.zdxt.enforcementcode.service.ICimDashboardOverviewDataSumService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -102,17 +103,96 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
/*vo.setQyzs(0L);
vo.setQyzshb(0L);
vo.setQyzstb(0L);*/
/**
* 暂存需要确认数据来源
* 暂时未取数-执法人员数,执法单位数(月)
*
* 暂时未取数-区域-企业数量-执法单位数-执法人员数(月)
*/
//执法人员数:未传区域编码时查询结果是各区明细,需要汇总求和
long zfrysSum = 0L;
List<CimDashboardOverviewVo> lawPersonnelList = cimDashboardOverviewMapper.getLawPersonnelCount(bo);
if (lawPersonnelList != null) {
for (CimDashboardOverviewVo item : lawPersonnelList) {
if (item.getZfrys() != null) {
zfrysSum += item.getZfrys();
}
}
}
vo.setZfrys(zfrysSum);
//执法单位数:未传区域编码时查询结果是各区明细,需要汇总求和
long zfdwsSum = 0L;
List<CimDashboardOverviewVo> lawUnitList = cimDashboardOverviewMapper.getLawUnitCount(bo);
if (lawUnitList != null) {
for (CimDashboardOverviewVo item : lawUnitList) {
if (item.getZfdws() != null) {
zfdwsSum += item.getZfdws();
}
}
}
vo.setZfdws(zfdwsSum);
//添加月度数据
Boolean flag = insertNewData(vo);
return flag;
}
/**
* Cim大屏-按区域统计-企业数量-执法人员数-执法单位数
* 定时任务调用方法
* @return
*/
@Override
public Boolean getAreaMonthDataSum(){
CimDashboardOverviewQueryBo bo= getDateTime();
bo.setMonthTime(getDateTime().getMonthTime());
List<CimDashboardOverviewVo> list=cimDashboardOverviewMapper.getLawPersonnelCount(bo);
List<CimDashboardOverviewVo> list1=cimDashboardOverviewMapper.getLawUnitCount(bo);
// 1. 高频检查区域:VO(code/name/number) → 实体(areaCode/areaName/gpjcqy)
List<DashboardOverviewPersonnel> areaPersonnelList = new ArrayList<>();
if (list != null) {
for (CimDashboardOverviewVo vo : list) {
DashboardOverviewPersonnel entity = new DashboardOverviewPersonnel();
entity.setCityCode("440300");
entity.setCityName("深圳市");
entity.setDistrictCode(vo.getCode());
entity.setDistrictName(vo.getName());
entity.setZfrys(vo.getZfrys());
entity.setLevel(2L);
entity.setYear(getDateTime().getYear());
entity.setMonth(getDateTime().getMonth());
entity.setIsDelete("0");
areaPersonnelList.add(entity);
}
}
// 2. 高频检查区域执法单位联合执法数:VO(bueauDeptId/bureauDeptName/number) → 实体(bureauDeptId/bureauDeptName/lhzfcs)
List<DashboardOverviewUnit> areaUnionList = new ArrayList<>();
if (list1 != null) {
for (CimDashboardOverviewVo vo : list1) {
DashboardOverviewUnit entity = new DashboardOverviewUnit();
entity.setCityCode("440300");
entity.setCityName("深圳市");
entity.setDistrictCode(vo.getCode());
entity.setDistrictName(vo.getName());
entity.setZfdws(vo.getZfdws());
entity.setLevel(2L);
entity.setYear(getDateTime().getYear());
entity.setMonth(getDateTime().getMonth());
entity.setIsDelete("0");
areaUnionList.add(entity);
}
}
//新增数据到数据汇总表
if (!areaPersonnelList.isEmpty()) {
dashboardOverviewPersonnelMapper.insertBatch(areaPersonnelList);
}
if (!areaUnionList.isEmpty()) {
dashboardOverviewUnitMapper.insertBatch(areaUnionList);
}
return true;
}
/**
* Cim-大屏总览
* 获取月度数据
@ -120,15 +200,48 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
* @return
*/
@Override
public List<CimDashboardOverviewVo> getDashboardOverviewMonthDataSum() {
public Map<String ,Object> getDashboardOverviewMonthDataSum(CimDashboardOverviewQueryBo bo) {
Map<String ,Object> map=new HashMap<>();
LambdaQueryWrapper<DashboardOverview> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DashboardOverview::getIsDelete, "0");
queryWrapper.eq(DashboardOverview::getYear, getDateTime().getYear());
queryWrapper.eq(DashboardOverview::getMonth, getDateTime().getMonth());
return cimDashboardOverviewMapper.selectVoList(queryWrapper);
map.put("monthData",cimDashboardOverviewMapper.selectVoList(queryWrapper));
map.put("areaMonthData",getDashboardOverviewAreaMonthDataSum(bo));
return map;
}
/**
* Cim大屏-按区域条件查询月度数据
*/
@Override
public CimDashboardOverviewVo getDashboardOverviewAreaMonthDataSum(CimDashboardOverviewQueryBo bo) {
CimDashboardOverviewVo vo=new CimDashboardOverviewVo();
// 区域计划总数
bo.setMonthTime(getDateTime().getMonthTime());
Long jhzs=cimDashboardOverviewMapper.getPlanCount(bo);
vo.setJhzs(jhzs);
//区域预告总数
Long ygzs=cimDashboardOverviewMapper.getNoticeCount(bo);
vo.setYgzs(ygzs);
//涉企执法总数
Long sqzfzs=cimDashboardOverviewMapper.getEnfLawCount(bo);
vo.setSqzfzs(sqzfzs);
//稽查反馈总数
Long jcfkzs=cimDashboardOverviewMapper.getLawEvaluateCount(bo);
vo.setJcpjzs(jcfkzs);
//检查投诉总数
Long jctszs=cimDashboardOverviewMapper.getComplaintCount(bo);
vo.setJctszs(jctszs);
//平均检查频次
Long bzfqy=cimDashboardOverviewMapper.getSubLawEntCount(bo);
Long xzzf=cimDashboardOverviewMapper.getEnfRegistrationCount(bo);
if(bzfqy!=0) {
vo.setPjjcpc(xzzf / bzfqy);
}
return vo;
}
/**
* Cim大屏-大屏总览企业数量-执法单位数-执法人员数
@ -201,8 +314,10 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
add.setJctszs(vo.getJctszs());
add.setPjjcpc(vo.getPjjcpc());
add.setQyzs(vo.getQyzs());
add.setQyzshb(vo.getQyzshb());
add.setQyzstb(vo.getQyzstb());
/*add.setQyzshb(vo.getQyzshb());
add.setQyzstb(vo.getQyzstb());*/
add.setZfrys(vo.getZfrys());
add.setZfdws(vo.getZfdws());
// 年份、月份
add.setYear(cal.get(Calendar.YEAR));
add.setMonth(cal.get(Calendar.MONTH) + 1);
@ -258,7 +373,7 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
entity.setCityName("深圳市");
entity.setBureauDeptId(vo.getBueauDeptId());
entity.setBureauDeptName(vo.getBureauDeptName());
entity.setLhzfcs(vo.getNumber());
entity.setLhzfcs(vo.getLhzfcs());
entity.setLevel(2L);
entity.setYear(getDateTime().getYear());
entity.setMonth(getDateTime().getMonth());
@ -276,7 +391,7 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
entity.setCityName("深圳市");
entity.setBureauDeptId(vo.getBueauDeptId());
entity.setBureauDeptName(vo.getBureauDeptName());
entity.setJccs(vo.getNumber());
entity.setJccs(vo.getJccs());
entity.setLevel(2L);
entity.setYear(getDateTime().getYear());
entity.setMonth(getDateTime().getMonth());
@ -323,34 +438,39 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
* @return
*/
@Override
public Map<String, Object> getHighCheckAreaMonthDataSumMap() {
public Map<String, Object> getHighCheckAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
LambdaQueryWrapper<DashboardHighCheckArea> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DashboardHighCheckArea::getLevel, 2);
queryWrapper.eq(DashboardHighCheckArea::getIsDelete, "0");
queryWrapper.eq(DashboardHighCheckArea::getYear, getDateTime().getYear());
queryWrapper.eq(DashboardHighCheckArea::getMonth, getDateTime().getMonth());
queryWrapper.eq(StringUtils.isNotBlank(bo.getCode()),DashboardHighCheckArea::getAreaCode,bo.getCode());
List<DashboardHighCheckArea> areaList = dashboardHighCheckAreaMapper.selectList(queryWrapper);
LambdaQueryWrapper<DashboardHighCheckUnionArea> queryWrapper1 = new LambdaQueryWrapper<>();
/*LambdaQueryWrapper<DashboardHighCheckUnionArea> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(DashboardHighCheckUnionArea::getLevel, 2);
queryWrapper1.eq(DashboardHighCheckUnionArea::getIsDelete, "0");
queryWrapper1.eq(DashboardHighCheckUnionArea::getYear, getDateTime().getYear());
queryWrapper1.eq(DashboardHighCheckUnionArea::getMonth, getDateTime().getMonth());
List<DashboardHighCheckUnionArea> unionList = dashboardhighcheckunionMapper.selectList(queryWrapper1);
List<DashboardHighCheckUnionArea> unionList = dashboardhighcheckunionMapper.selectList(queryWrapper1);*/
bo.setMonthTime(getDateTime().getMonthTime());
List<CimDashboardOverviewVo> unionList= cimDashboardOverviewMapper.getHighCheckAreaUnionNoRanking(bo);
LambdaQueryWrapper<DashboardHighCheckFrequencyArea> queryWrapper2 = new LambdaQueryWrapper<>();
/*LambdaQueryWrapper<DashboardHighCheckFrequencyArea> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(DashboardHighCheckFrequencyArea::getLevel, 2);
queryWrapper2.eq(DashboardHighCheckFrequencyArea::getIsDelete, "0");
queryWrapper2.eq(DashboardHighCheckFrequencyArea::getYear, getDateTime().getYear());
queryWrapper2.eq(DashboardHighCheckFrequencyArea::getMonth, getDateTime().getMonth());
List<DashboardHighCheckFrequencyArea> freqList = dashboardHighCheckFrequencyAreaMapper.selectList(queryWrapper2);
List<DashboardHighCheckFrequencyArea> freqList = dashboardHighCheckFrequencyAreaMapper.selectList(queryWrapper2);*/
List<CimDashboardOverviewVo> freqList=cimDashboardOverviewMapper.getHighCheckAreaenfRegistraionRanking(bo);
LambdaQueryWrapper<DashboardHighCheckEnterprise> queryWrapper3 = new LambdaQueryWrapper<>();
queryWrapper3.eq(DashboardHighCheckEnterprise::getLevel, 2);
queryWrapper3.eq(DashboardHighCheckEnterprise::getIsDelete, "0");
queryWrapper3.eq(DashboardHighCheckEnterprise::getYear, getDateTime().getYear());
queryWrapper3.eq(DashboardHighCheckEnterprise::getMonth, getDateTime().getMonth());
queryWrapper.eq(StringUtils.isNotBlank(bo.getCode()),DashboardHighCheckArea::getAreaCode,bo.getCode());
List<DashboardHighCheckEnterprise> enterpriseList = dashboardHighCheckEnterpriseMapper.selectList(queryWrapper3);
Map<String, Object> map = new HashMap<>();
map.put("areaList", areaList);
@ -1070,7 +1190,7 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
* @return
*/
@Override
public Map<String, Object> getTrendAreaMonthDataSumMap() {
public Map<String, Object> getTrendAreaMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
LambdaQueryWrapper<DashboardTrendStatArea> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DashboardTrendStatArea::getIsDelete, "0");
@ -1123,9 +1243,26 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
map.put("highAreas", highAreas);
// 低频区域:每季度最低各1条,共4条
map.put("lowAreas", lowAreas);
// 查询街道
List<CimDashboardOverviewVo> streetList= cimDashboardOverviewMapper.getAreaQuarterlyRegionList(bo);
map.put("streetList", streetList);
return map;
}
/**
* 下转联动某个区域查询对应区域街道的数据
* @param bo
* @return
*/
@Override
public List<CimDashboardOverviewVo> getAreaQuarterlyRegionList(CimDashboardOverviewQueryBo bo) {
List<CimDashboardOverviewVo> list= cimDashboardOverviewMapper.getAreaQuarterlyRegionList(bo);
return list;
}
/**
* 构建区域趋势统计数据副本(用于高频/低频区域结果)
* 单独构建新对象,避免同一区域在多个季度上榜时 jccs 值被覆盖
@ -1206,7 +1343,7 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
* @return
*/
@Override
public Map<String, Object> getTrendFieldMonthDataSumMap() {
public Map<String, Object> getTrendFieldMonthDataSumMap(CimDashboardOverviewQueryBo bo) {
LambdaQueryWrapper<DashboardTrendStatDomain> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DashboardTrendStatDomain::getIsDelete, "0");
@ -1258,10 +1395,25 @@ public class CimDashboardOverviewDataSumSserviceImpl implements ICimDashboardOve
map.put("highDomains", highDomains);
// 低频领域:每季度最低各1条,共4条
map.put("lowDomains", lowDomains);
List<CimDashboardOverviewVo> areaDomainList=cimDashboardOverviewMapper.getAreaDomainQuarterList(bo);
map.put("areaDomainList",areaDomainList);
return map;
}
/**
* 下转联动某个区域查询对应区域领域的数据(季度)
* @param bo
* @return
*/
@Override
public List<CimDashboardOverviewVo> getAreaDomainQuarterList(CimDashboardOverviewQueryBo bo) {
List<CimDashboardOverviewVo> list=cimDashboardOverviewMapper.getAreaDomainQuarterList(bo);
return list;
}
/**
* 构建领域结果
*

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/ComplaintStatisticsServiceImpl.java

@ -44,6 +44,13 @@ public class ComplaintStatisticsServiceImpl implements IComplaintStatisticsServi
return baseMapper.selectVoById(id);
}
@Override
public ComplaintStatisticsVo selectById(String rid){
LambdaQueryWrapper<ComplaintStatistics> lqw =new LambdaQueryWrapper<>();
lqw.eq(ComplaintStatistics::getRid,rid);
return baseMapper.selectVoOne(lqw);
}
/**
* 分页查询【请填写功能名称】列表
*

4
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/StatisticalPaneServiceCityImpl.java

@ -2,9 +2,6 @@ package com.zdxt.enforcementcode.service.impl;
import com.zdxt.enforcementcode.common.annotation.DataScope;
import com.zdxt.enforcementcode.domain.EnforcementRegistration;
import com.zdxt.enforcementcode.domain.EnterpriseComplaint;
import com.zdxt.enforcementcode.domain.EnterpriseEvaluate;
import com.zdxt.enforcementcode.domain.bo.SixAnalysisParamsBo;
import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo;
import com.zdxt.enforcementcode.domain.vo.EnterpriseComplaintVo;
@ -12,7 +9,6 @@ import com.zdxt.enforcementcode.domain.vo.EnterpriseEvaluateVo;
import com.zdxt.enforcementcode.mapper.StatisticalPanelCityMapper;
import com.zdxt.enforcementcode.service.IStatisticalPaneCityService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.domain.SysDictData;
import org.dromara.system.domain.bo.SysDictDataBo;
import org.dromara.system.domain.vo.SysDictDataVo;
import org.dromara.system.service.ISysDeptService;

151
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/CimDashboardOverviewMapper.xml

@ -30,7 +30,7 @@
and DATE_FORMAT(t1.enforcement_time,'%Y-%m-%d') = DATE_FORMAT(#{dayTime},'%Y-%m-%d')
</if>
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') &gt;= DATE_FORMAT(#{monthTime},'%Y-%m')
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
@ -115,7 +115,7 @@
and DATE_FORMAT(t1.enforcement_time,'%Y-%m-%d') = DATE_FORMAT(#{dayTime},'%Y-%m-%d')
</if>
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m-%d') = DATE_FORMAT(#{monthTime},'%Y-%m-%d')
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="enterpriseNumber !=null and enterpriseNumber !=''">
and t1.enterprise_number = #{enterpriseNumber}
@ -126,6 +126,7 @@
</where>
</select>
<!-- 获取执法人员数 -->
<select id="getLawPersonnelCount" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
select
t1.code,
@ -134,12 +135,16 @@
t1.zfrys
from view_area_legal_officer t1
<where>
<if test="monthTime !=null">
and DATE_FORMAT(t1.CD_TIME,'%Y-%m')= DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code!=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
t1.code=#{code}
and t1.code=#{code}
</if>
</where>
</select>
<!-- 获取执法单位数据 -->
<select id="getLawUnitCount" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
select
t1.code ,
@ -148,10 +153,13 @@
from
dashboard_area_info t1
inner join sys_dept t2
on t1.code = t2.area_node and t1.`level` = '3' and t2.`zone` in(1, 3, 4, 15, 16)
on t1.code = t2.area_node and t1.`level` = '3' and t2.`zone` in(1,3,4,5,6,15,16)
<where>
<if test="code!=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
t1.code=#{code}
and t1.code=#{code}
</if>
<if test="monthTime !=null">
and DATE_FORMAT(t2.create_time,'%Y-%m')= DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
</where>
group by
@ -174,7 +182,7 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.plan_date,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!=''">
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
@ -196,7 +204,7 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.publish_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!=''">
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
@ -220,7 +228,7 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!=''">
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
@ -245,7 +253,7 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!=''">
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
@ -271,7 +279,7 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!=''">
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
@ -404,6 +412,53 @@
GROUP BY t3.code, t3.name
</select>
<!-- 下转联动某个区域查询对应区域街道的数据 -->
<select id="getAreaQuarterlyRegionList" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
SELECT
t3.code,
t3.name,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW()) - 5) / 4), 'Q', (year(NOW())* 4 + QUARTER(NOW()) - 5) % 4 + 1) as firstTime,
coalesce(q.first_quarter, 0) as firstQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW()) - 4) / 4), 'Q', (year(NOW())* 4 + QUARTER(NOW()) - 4) % 4 + 1) as secondTime,
coalesce(q.second_quarter, 0) as secondQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW()) - 3) / 4), 'Q', (year(NOW())* 4 + QUARTER(NOW()) - 3) % 4 + 1) as thirdTime,
coalesce(q.third_quarter, 0) as thirdQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW()) - 2) / 4), 'Q', (year(NOW())* 4 + QUARTER(NOW()) - 2) % 4 + 1) as fourthTime,
coalesce(q.fourth_quarter, 0) as fourthQuarter,
coalesce(q.total_cnt, 0) as total_cnt
FROM dashboard_area_info t3
LEFT JOIN (
SELECT
a.code,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW()) - 4 then 1 else 0 end) as first_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW()) - 3 then 1 else 0 end) as second_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW()) - 2 then 1 else 0 end) as third_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW()) - 1 then 1 else 0 end) as fourth_quarter,
COUNT(1) as total_cnt
FROM enforcement_registration t1
INNER JOIN dashboard_area_info a
ON t1.enterprise_address LIKE CONCAT('%', a.name, '%')
WHERE a.level = 4
AND a.is_delete = '0'
<if test="code!=null and code !='' and code!='20220210190102183-D7DD-E31F5E9C1'">
AND a.parent_code = #{code}
</if>
AND t1.is_delete = 0
AND t1.is_submit = 1
AND t1.enterprise_name IS NOT NULL
AND t1.enterprise_number IS NOT NULL
and year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) between year(NOW())* 4 + QUARTER(NOW()) - 4 and year(NOW())* 4 + QUARTER(NOW()) - 1
GROUP BY a.code
) q ON t3.code = q.code
WHERE t3.level = 4
AND t3.is_delete = '0'
<if test="code!=null and code !='' and code!='20220210190102183-D7DD-E31F5E9C1'">
AND t3.parent_code = #{code}
</if>
ORDER BY t3.code
</select>
<!-- 获取领域检查趋势分析(季度) -->
<select id="getDomainQuarterList" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
SELECT
@ -432,6 +487,59 @@
t3.domain_name
</select>
<!-- 下转联动某个区域查询对应区域领域的数据(季度) -->
<select id="getAreaDomainQuarterList" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
SELECT
t3.domain_id as code,
t3.domain_name as name,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW())-4-1)/ 4), 'Q', (year(NOW())* 4 + QUARTER(NOW())-4-1)%4 + 1) as firstTime,
coalesce(q.first_quarter, 0) as firstQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW())-3-1)/ 4), 'Q', (year(NOW())* 4 + QUARTER(NOW())-3-1)%4 + 1) as secondTime,
coalesce(q.second_quarter, 0) as secondQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW())-2-1)/ 4), 'Q', (year(NOW())* 4 + QUARTER(NOW())-2-1)%4 + 1) as thirdTime,
coalesce(q.third_quarter, 0) as thirdQuarter,
CONCAT(FLOOR((year(NOW())* 4 + QUARTER(NOW())-1-1)/ 4), 'Q', (year(NOW())* 4 + QUARTER(NOW())-1-1)%4 + 1) as fourthTime,
coalesce(q.fourth_quarter, 0) as fourthQuarter,
coalesce(q.total_cnt, 0) as total_cnt
FROM (
<!-- 该区下有部门的领域(去重)-->
SELECT DISTINCT
d.domain_id,
d.domain_name
FROM dashboard_domain_dept d
INNER JOIN sys_dept sd ON d.dept_id = sd.dept_id
<where>
<if test="code!=null and code !='' and code!='20220210190102183-D7DD-E31F5E9C1'">
AND sd.area_node = #{code}
</if>
</where>
) t3
LEFT JOIN (
SELECT
d.domain_id,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW())-4 then 1 else 0 end) as first_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW())-3 then 1 else 0 end) as second_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW())-2 then 1 else 0 end) as third_quarter,
SUM(case when year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) = year(NOW())* 4 + QUARTER(NOW())-1 then 1 else 0 end) as fourth_quarter,
COUNT(1) as total_cnt
FROM enforcement_registration t1
INNER JOIN sys_dept t2 ON t1.bureau_dept_id = t2.dept_id
INNER JOIN dashboard_domain_dept d ON t2.dept_id = d.dept_id
<where>
<if test="code!=null and code !='' and code!='20220210190102183-D7DD-E31F5E9C1'">
t2.area_node = #{code}
</if>
AND d.domain_id IS NOT NULL
AND t1.is_delete = 0
AND t1.is_submit = 1
and year(t1.enforcement_time)* 4 + QUARTER(t1.enforcement_time) between year(NOW())* 4 + QUARTER(NOW())-4 and year(NOW())* 4 + QUARTER(NOW())-1
</where>
GROUP BY d.domain_id
) q ON t3.domain_id = q.domain_id
ORDER BY t3.domain_id;
</select>
<!-- 获取涉企登记执法类别 (实)-->
<select id="getEnfRegistrationType" resultType="com.zdxt.enforcementcode.domain.vo.CimDashboardOverviewVo" parameterType="com.zdxt.enforcementcode.domain.bo.CimDashboardOverviewQueryBo">
select
@ -575,6 +683,9 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
and t3.level !=1
</where>
group by
@ -586,14 +697,14 @@
select
t1.bureau_dept_id as bueauDeptId,
t1.bureau_dept_name as bureauDeptName,
count(t4.sl) as number
count(t4.sl) as lhzfcs
from
enforcement_registration t1
left join sys_dept t2 on
inner join sys_dept t2 on
t1.bureau_dept_id = t2.dept_id
left join dashboard_area_info t3 on
inner join dashboard_area_info t3 on
t2.area_node = t3.code
left join (
inner join (
select
t1.enterprise_number ,
t1.enterprise_name ,
@ -630,11 +741,14 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
group by
t1.bureau_dept_id,
t1.bureau_dept_name
order by number desc
order by lhzfcs desc
</select>
<!-- 高频检查区域执法单位检查数据排行 (月)-->
@ -642,7 +756,7 @@
select
t1.bureau_dept_id as bueauDeptId,
t1.bureau_dept_name as bureauDeptName,
count(t4.sl) as number
count(t4.sl) as jccs
from
enforcement_registration t1
left join sys_dept t2 on
@ -682,11 +796,14 @@
<if test="monthTime !=null">
and DATE_FORMAT(t1.enforcement_time,'%Y-%m') = DATE_FORMAT(#{monthTime},'%Y-%m')
</if>
<if test="code !=null and code!='' and code!='20220210190102183-D7DD-E31F5E9C1'">
and t3.code = #{code}
</if>
</where>
group by
t1.bureau_dept_id,
t1.bureau_dept_name
order by number desc
order by jccs desc
</select>
<!-- 获取各领域高频检查次数排行 (月)-->

10
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LawEnfOfficerMapper.xml

@ -49,9 +49,17 @@
<if test="bo.districtName!=null and bo.districtName !=''">
and t4.name like CONCAT('%', #{bo.districtName}, '%')
</if>
<if test="bo.bureauDeptName!=null and bo.bureauDeptName !=''">
and t1.bureauDeptName like CONCAT('%', #{bo.bureauDeptName}, '%')
</if>
</where>
and t4.level = 3
order by t1.zfcs desc
order by
<choose>
<when test="bo.orderByColumn == 'zfcs'">zfcs</when>
<otherwise>zfcs</otherwise>
</choose>
<if test="bo.isAsc == 'desc'">desc</if>
</sql>
<select id="selectLawEnfOfficerPageList" resultType="com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo">

49
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/ScanDataSituationMapper.xml

@ -122,8 +122,19 @@
</if>
) base
<!--#where base.district_name ='宝安区'-->
<!-- 排序:orderByColumn 走白名单映射,避免 ${} 拼接造成 SQL 注入;未指定时默认按 xzzfslpm 升序 -->
order by
xzzfslpm
<choose>
<when test="bo.orderByColumn == 'enterpriseCount'">enterpriseCount</when>
<when test="bo.orderByColumn == 'xzzfCount'">xzzfCount</when>
<when test="bo.orderByColumn == 'xzzfslpm'">xzzfslpm</when>
<when test="bo.orderByColumn == 'xzzfslzb'">xzzfslzb</when>
<when test="bo.orderByColumn == 'fxzzfsl'">fxzzfsl</when>
<when test="bo.orderByColumn == 'fxzzfslpm'">fxzzfslpm</when>
<when test="bo.orderByColumn == 'fxzzfslzb'">fxzzfslzb</when>
<otherwise>xzzfslpm</otherwise>
</choose>
<if test="bo.isAsc == 'desc'">desc</if>
</sql>
<select id="selectScanDataSituationAreaPageList" resultType="com.zdxt.enforcementcode.domain.vo.ScanDataSituationVo">
@ -256,8 +267,19 @@
and t3.parent_code =#{bo.districtCode}
</if>
) base
<!-- 排序:与区域列表一致,走白名单,避免 MyBatis-Plus 再追加排序字段 -->
order by
xzzfslpm
<choose>
<when test="bo.orderByColumn == 'enterpriseCount'">enterpriseCount</when>
<when test="bo.orderByColumn == 'xzzfCount'">xzzfCount</when>
<when test="bo.orderByColumn == 'xzzfslpm'">xzzfslpm</when>
<when test="bo.orderByColumn == 'xzzfslzb'">xzzfslzb</when>
<when test="bo.orderByColumn == 'fxzzfsl'">fxzzfsl</when>
<when test="bo.orderByColumn == 'fxzzfslpm'">fxzzfslpm</when>
<when test="bo.orderByColumn == 'fxzzfslzb'">fxzzfslzb</when>
<otherwise>xzzfslpm</otherwise>
</choose>
<if test="bo.isAsc == 'desc'">desc</if>
</select>
@ -371,7 +393,16 @@
</where>
) base
order by
xzzfslpm
<choose>
<when test="bo.orderByColumn == 'xzzfCount'">xzzfCount</when>
<when test="bo.orderByColumn == 'xzzfslpm'">xzzfslpm</when>
<when test="bo.orderByColumn == 'xzzfslzb'">xzzfslzb</when>
<when test="bo.orderByColumn == 'fxzzfsl'">fxzzfsl</when>
<when test="bo.orderByColumn == 'fxzzfslpm'">fxzzfslpm</when>
<when test="bo.orderByColumn == 'fxzzfslzb'">fxzzfslzb</when>
<otherwise>xzzfslpm</otherwise>
</choose>
<if test="bo.isAsc == 'desc'">desc</if>
</sql>
<select id="selectScanDataSituationDomainPageList" resultType="com.zdxt.enforcementcode.domain.vo.ScanDataSituationVo">
@ -501,7 +532,17 @@
and t1.code = #{bo.districtCode}
</if>
) base
<!-- 排序:与领域列表一致,走白名单,避免 MyBatis-Plus 再追加排序字段 -->
order by
xzzfslpm
<choose>
<when test="bo.orderByColumn == 'xzzfCount'">xzzfCount</when>
<when test="bo.orderByColumn == 'xzzfslpm'">xzzfslpm</when>
<when test="bo.orderByColumn == 'xzzfslzb'">xzzfslzb</when>
<when test="bo.orderByColumn == 'fxzzfsl'">fxzzfsl</when>
<when test="bo.orderByColumn == 'fxzzfslpm'">fxzzfslpm</when>
<when test="bo.orderByColumn == 'fxzzfslzb'">fxzzfslzb</when>
<otherwise>xzzfslpm</otherwise>
</choose>
<if test="bo.isAsc == 'desc'">desc</if>
</select>
</mapper>

62
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/StatisticalPanelCityMapper.xml

@ -162,15 +162,71 @@
<!-- 所有重点领域类 -->
<select id="query_law_field_count" parameterType="com.zdxt.enforcementcode.domain.bo.SixAnalysisParamsBo" resultType="map">
SELECT r.law_field, CAST(COUNT(1) AS CHAR) AS cnt FROM enforcement_registration r WHERE enforcement_time IS NOT null and r.bureau_dept_name is not null and r.is_submit = 1 and r.law_enforcement_id is not null and r.enterprise_name is not null and r.enterprise_number is not null and r.law_enforcer is not null and r.law_enforcer_two is not null and r.is_complaint is not null and r.check_category is not null and r.bureau_dept_id is not null and law_field is not null
<!--SELECT r.law_field, CAST(COUNT(1) AS CHAR) AS cnt FROM enforcement_registration r
WHERE enforcement_time IS NOT null
and r.bureau_dept_name is not null
and r.is_submit = 1
and r.law_enforcement_id is not null
and r.enterprise_name is not null
and r.enterprise_number is not null
and r.law_enforcer is not null
and r.law_enforcer_two is not null
and r.is_complaint is not null
and r.check_category is not null
and r.bureau_dept_id is not null
and law_field is not null-->
select
r.bureau_dept_id,
case r.bureau_dept_id
when '20210922213242905-1183-F9897C287' then '01'
when '20210922213242781-25B8-DF4A0AB32' then '02'
when '20210922213015633-2458-5A5E07C0C' then '03'
when '20210922213015704-F9CB-3AFDBC097' then '04'
when '20210922213015633-2459-6D7CB4903' then '05'
when '20210922212956790-EDA0-123260206' then '06'
when '20210922213220191-2F55-3493B378E' then '07'
when '20221024170151446-F82B-F4F56D018' then '08'
when '20210922213219489-1142-3C752622D' then '09'
else ''
end as law_field,
CAST(count(1) AS CHAR) AS cnt
from
enforcement_registration r
<where>
and r.is_submit = 1
and r.is_delete =0
and enforcement_time IS NOT null
and r.bureau_dept_name is not null
and r.law_enforcement_id is not null
and r.enterprise_name is not null
and r.enterprise_number is not null
and r.law_enforcer is not null
and r.law_enforcer_two is not null
and r.is_complaint is not null
and r.check_category is not null
and r.bureau_dept_id is not null
and r.bureau_dept_id in (
'20210922213242905-1183-F9897C287',
'20210922213242781-25B8-DF4A0AB32',
'20210922213015633-2458-5A5E07C0C',
'20210922213015704-F9CB-3AFDBC097',
'20210922213015633-2459-6D7CB4903',
'20210922212956790-EDA0-123260206',
'20210922213220191-2F55-3493B378E',
'20221024170151446-F82B-F4F56D018',
'20210922213219489-1142-3C752622D'
)
<if test="beginTime != null and beginTime != ''"> and r.enforcement_time &gt;= #{beginTime} </if>
<if test="endTime != null and endTime != ''"> and r.enforcement_time &lt; #{endTime} </if>
<if test="endTime != null and endTime != ''"> and r.enforcement_time &lt;= #{endTime} </if>
<if test="zone == 1">and r.zone = 1</if>
<if test="filterDepts != null and filterDepts.size() > 0">
and r.bureau_dept_id in <foreach collection="filterDepts" item="bureau_dept_id" open="(" separator="," close=")"> #{bureau_dept_id} </foreach>
</if>
<if test="params.dataScope != null and params.dataScope != ''"> ${params.dataScope} </if>
GROUP BY r.law_field ORDER BY cnt DESC;
</where>
group by r.bureau_dept_id,law_field
ORDER BY cnt DESC
</select>
<!-- 行政执法投诉类别 -->

10
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/StatisticalPanelMapper.xml

@ -1639,6 +1639,7 @@
and r.is_complaint is not null
and r.check_category is not null
and r.bureau_dept_id is not null
and enforcement_time &lt; DATE_FORMAT(NOW(), '%Y-%m-01')
<!-- <if test="params.zone != null and params.zone != ''"> and r.bureau_dept_id in (select dept_id from sys_dept where zone = #{params.zone}) </if>-->
<if test="deptId != null and deptId != ''">
and r.bureau_dept_id in (select sd.dept_id from sys_dept sd where sd.area_node = #{deptId} or sd.dept_id = #{deptId})
@ -1646,8 +1647,8 @@
<if test="uniteCheck == '1'.toString()"> and (r.union_no is not null and r.union_no != '')</if>
<if test="uniteCheck == '0'.toString()"> and (r.union_no is null or r.union_no = '')</if>
<!-- <if test="userId != null and userId != '' ">and( r.law_enforcer_id=#{userId} or r.law_enforcer_id_two like concat('%',#{userId}, '%'))</if>-->
<if test="beginTime != null and beginTime != ''"> and DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') >= DATE_FORMAT(#{beginTime},'%Y-%m-%d') </if>
<if test="endTime != null and endTime != ''"> and DATE_FORMAT(#{endTime},'%Y-%m-%d') >= DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') </if>
<if test="beginTime != null and beginTime != ''"> and DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') &gt;= DATE_FORMAT(#{beginTime},'%Y-%m-%d') </if>
<if test="endTime != null and endTime != ''"> and DATE_FORMAT(#{endTime},'%Y-%m-%d') &lt;= DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') </if>
<if test="params.dataScope != null and params.dataScope != ''">
<!-- 数据范围过滤 -->
${params.dataScope}
@ -1697,6 +1698,7 @@
and r.is_complaint is not null
and r.check_category is not null
and r.bureau_dept_id is not null
and enforcement_time &lt; DATE_FORMAT(NOW(), '%Y-%m-01')
<!-- <if test="params.zone != null and params.zone != ''"> and r.bureau_dept_id in (select dept_id from sys_dept where zone = #{params.zone}) </if>-->
<if test="deptId != null and deptId != ''">
and r.bureau_dept_id in (select sd.dept_id from sys_dept sd where sd.area_node = #{deptId} or sd.dept_id = #{deptId})
@ -1704,8 +1706,8 @@
<if test="uniteCheck == '1'.toString()"> and (r.union_no is not null and r.union_no != '')</if>
<if test="uniteCheck == '0'.toString()"> and (r.union_no is null or r.union_no = '')</if>
<!-- <if test="userId != null and userId != '' ">and( r.law_enforcer_id=#{userId} or r.law_enforcer_id_two like concat('%',#{userId}, '%')) </if>-->
<if test="beginTime != null and beginTime != ''"> and DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') >= DATE_FORMAT(#{beginTime},'%Y-%m-%d') </if>
<if test="endTime != null and endTime != ''"> and DATE_FORMAT(#{endTime},'%Y-%m-%d') >= DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') </if>
<if test="beginTime != null and beginTime != ''"> and DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') &gt;= DATE_FORMAT(#{beginTime},'%Y-%m-%d') </if>
<if test="endTime != null and endTime != ''"> and DATE_FORMAT(#{endTime},'%Y-%m-%d') &lt;= DATE_FORMAT(r.enforcement_time,'%Y-%m-%d') </if>
<if test="params.dataScope != null and params.dataScope != ''">
<!-- 数据范围过滤 -->
${params.dataScope}

4
zdxt-web-client/zdxt-admin-plus-ui/.env.production

@ -16,8 +16,8 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
VITE_APP_SNAILJOB_ADMIN = '/snail-job'
# 生产环境
VITE_APP_BASE_API = '/efcode20-sup-web/prod-api'
# VITE_APP_BASE_API = '/zfjdm/prod-api'
# VITE_APP_BASE_API = '/efcode20-sup-web/prod-api' #本地环境
VITE_APP_BASE_API = '/zfjdm/prod-api' #生产环境
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip

6
zdxt-web-client/zdxt-admin-plus-ui/src/layout/components/AppMain.vue

@ -56,7 +56,9 @@ function addIframe() {
height: calc(100vh - 50px);
width: 100%;
position: relative;
overflow: hidden;
/* 滚动容器收敛在这里:唯一纵向滚动发生在这一层 */
overflow-y: auto;
overflow-x: hidden;
}
.fixed-header + .app-main {
@ -65,7 +67,7 @@ function addIframe() {
.hasTagsView {
.app-main {
height: calc(100vh - 84px);
height: calc(100vh - 118px);
}
.fixed-header + .app-main {

2
zdxt-web-client/zdxt-admin-plus-ui/src/layout/index.vue

@ -191,7 +191,7 @@ const setLayout = () => {
}
.iframe-main-full {
height: calc(100vh - 50px);
height: calc(100vh - 80px);
overflow: hidden;
}

10
zdxt-web-client/zdxt-admin-plus-ui/src/router/index.ts

@ -191,7 +191,7 @@ export const constantRoutes: RouteRecordRaw[] = [
path: '',
component: () => import('@/views/supervision/educationServices/add.vue'),
name: 'EducationServicesAdd',
meta: { title: '新增涉企服务', icon: 'plus' }
meta: { title: '新增普法服务', icon: 'plus' }
}
]
},
@ -204,7 +204,7 @@ export const constantRoutes: RouteRecordRaw[] = [
path: '',
component: () => import('@/views/supervision/educationServices/repost.vue'),
name: 'EducationServicesRepost',
meta: { title: '转载涉企服务', icon: 'plus' }
meta: { title: '转载普法服务', icon: 'plus' }
}
]
},
@ -217,7 +217,7 @@ export const constantRoutes: RouteRecordRaw[] = [
path: '',
component: () => import('@/views/supervision/educationServices/draft.vue'),
name: 'EducationServicesDraft',
meta: { title: '涉企服务草稿箱', activeMenu: '/supervision/educationServices' }
meta: { title: '普法服务草稿箱', activeMenu: '/supervision/educationServices' }
}
]
},
@ -230,7 +230,7 @@ export const constantRoutes: RouteRecordRaw[] = [
path: '',
component: () => import('@/views/supervision/educationServices/edit.vue'),
name: 'EducationServicesEdit',
meta: { title: '编辑涉企服务', activeMenu: '/supervision/educationServices' }
meta: { title: '编辑普法服务', activeMenu: '/supervision/educationServices' }
}
]
},
@ -243,7 +243,7 @@ export const constantRoutes: RouteRecordRaw[] = [
path: '',
component: () => import('@/views/supervision/educationServices/detail.vue'),
name: 'EducationServicesDetail',
meta: { title: '涉企服务详情', activeMenu: '/supervision/educationServices' }
meta: { title: '普法服务详情', activeMenu: '/supervision/educationServices' }
}
]
},

5
zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-district/index.vue

@ -158,10 +158,10 @@ const buildTimeParams = (): ScanTimeParams => {
return { startTime: queryParams.beginTime, endTime: queryParams.endTime };
};
/** 当前选中的所属区(字典 dictValue→districtCode,dictLabel→districtName) */
/** 当前选中的所属区(dictLabel→districtName,不再传 districtCode) */
const currentDistrict = () => {
const item = areaOptions.value.find((i: any) => i.dictValue === queryParams.area);
return { districtCode: queryParams.area, districtName: item?.dictLabel };
return { districtName: item?.dictLabel };
};
const getList = async () => {
@ -263,7 +263,6 @@ const getDetailList = async () => {
if (!detailArea.value) return;
const res = await listScanAreaDetails({
...buildTimeParams(),
districtCode: detailArea.value.districtCode || queryParams.area,
districtName: detailArea.value.districtName || detailArea.value.areaName || currentDistrict().districtName
});
detailTableData.value = (res as any)?.rows || (Array.isArray(res) ? res : []);

9
zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-enforcer/index.vue

@ -110,7 +110,14 @@ const calcTableHeight = () => {
const getList = async () => {
loading.value = true;
try {
const res = await listLawEnforcer(queryParams);
// 接口字段:区 → districtName(下拉绑定的是 dictLabel),领域 → bureauDeptName(传 domainName)
const { area, field, ...rest } = queryParams;
const domain = fieldOptions.value.find((i) => i.domainId === field);
const res = await listLawEnforcer({
...rest,
districtName: area,
bureauDeptName: domain?.domainName
});
tableData.value = (res as any)?.rows || [];
total.value = (res as any)?.total || 0;
} catch (e) {

4
zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/scan-field/index.vue

@ -123,10 +123,10 @@ const currentField = () => {
return { domainId: queryParams.field, domainName: item?.domainName };
};
/** 当前选中的所属区(dictValue→districtCode,dictLabel→districtName) */
/** 当前选中的所属区(dictLabel→districtName,不再传 districtCode) */
const currentArea = () => {
const item = areaOptions.value.find((i: any) => i.dictValue === queryParams.area);
return { districtCode: queryParams.area, districtName: item?.dictLabel };
return { districtName: item?.dictLabel };
};
const getList = async () => {

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/home/index.vue

@ -740,7 +740,7 @@ onUnmounted(() => {
.wrap_all {
position: relative;
width: 100%;
height: calc(100vh - 50px);
height: calc(100vh - 80px);
background: var(--bg-homebody) no-repeat;
background-size: cover;
background-position: center center;

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/nos/add.vue

@ -1,7 +1,7 @@
<template>
<div class="add-carousel-container">
<div class="page-header">
<h1>新增涉企服务</h1>
<h1>新增普法服务</h1>
</div>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" class="form-container">

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/add.vue

@ -1,7 +1,7 @@
<template>
<div class="add-carousel-container">
<div class="page-header">
<h1>新增涉企服务</h1>
<h1>新增普法服务</h1>
</div>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" class="form-container">

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/detail.vue

@ -1,7 +1,7 @@
<template>
<div v-loading="pageLoading" class="detail-container">
<div class="page-header">
<h1>涉企服务详情</h1>
<h1>普法服务详情</h1>
</div>
<div class="detail-card">

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/draft.vue

@ -330,7 +330,7 @@ onActivated(() => {
.law-service-container {
padding: 20px;
background: #f5f7fa;
min-height: calc(100vh - 100px);
min-height: calc(100vh - 118px);
}
.search-panel {

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/edit.vue

@ -1,7 +1,7 @@
<template>
<div v-loading="pageLoading" class="add-carousel-container">
<div class="page-header">
<h1>编辑涉企服务</h1>
<h1>编辑普法服务</h1>
</div>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" class="form-container">

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/index.vue

@ -345,7 +345,7 @@ const loadDictOptions = async () => {
.law-service-container {
padding: 20px;
background: #f5f7fa;
min-height: calc(100vh - 100px);
min-height: calc(100vh - 118px);
}
.search-panel {

2
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/educationServices/repost.vue

@ -1,7 +1,7 @@
<template>
<div class="add-carousel-container">
<div class="page-header">
<h1>转载涉企服务</h1>
<h1>转载普法服务</h1>
</div>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" class="form-container">

64
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/city-direct/index.vue

@ -1,5 +1,5 @@
<template>
<div class="statistical-analysis" :style="cssVars">
<div class="statistical-analysis statistical-analysis--adaptive" :style="cssVars">
<div class="wrap_all">
<div class="select_set">
<div class="select_item">
@ -51,8 +51,8 @@
<div class="count_div">
<img :src="item.icon" :alt="item.label" />
<div class="count_cont">
<span class="number_count">{{ item.count }}</span>
<span class="number_percent">{{ item.rate }}<i>%</i></span>
<span class="number_count">{{ item.count ? item.count : '-' }}</span>
<span class="number_percent">{{ item.rate ? item.rate : '-' }}<i>%</i></span>
</div>
</div>
</div>
@ -66,8 +66,8 @@
<div class="count_div">
<img :src="item.icon" :alt="item.label" />
<div class="count_cont">
<span class="number_count">{{ item.count }}</span>
<span class="number_percent">{{ item.rate }}<i>%</i></span>
<span class="number_count">{{ item.count ? item.count : '-' }}</span>
<span class="number_percent">{{ item.rate ? item.rate : '-' }}<i>%</i></span>
</div>
</div>
</div>
@ -81,8 +81,8 @@
<div v-for="item in lawFieldItems" :key="item.label" class="count_item">
<div class="count_lab">{{ item.label }}</div>
<div class="count_cont">
<span class="number_count">{{ item.count }}</span>
<span class="number_percent">{{ item.rate }}<i>%</i></span>
<span class="number_count">{{ item.count ? item.count : '-' }}</span>
<span class="number_percent">{{ item.rate ? item.rate : '-' }}<i>%</i></span>
</div>
</div>
</div>
@ -264,8 +264,10 @@ const cssVars = computed(() => {
function buildCategoryItems(data: Record<string, number>[] | undefined, total: number | undefined, iconMap: Record<string, string>) {
if (!data) return [];
return data.map((obj) => {
const [label, count] = Object.entries(obj)[0];
const rate = total ? parseFloat(((Number(count) / total) * 100).toFixed(2)) : 0;
const [label, rawCount] = Object.entries(obj)[0];
// 接口可能返回字符串 "0",统一转成数字,0 才会被模板判定为空显示 '-'
const count = Number(rawCount) || 0;
const rate = total ? parseFloat(((count / total) * 100).toFixed(2)) : 0;
return { label, count, rate, icon: `${BASE}statistical-new/images/${iconMap[label] || 'icon_801.png'}` };
});
}
@ -275,8 +277,9 @@ const caseTypeItems = computed(() => buildCategoryItems(stats.value.caseType, st
const lawFieldItems = computed(() => {
if (!stats.value.lawField) return [];
return stats.value.lawField.map((obj) => {
const [label, count] = Object.entries(obj)[0];
const rate = stats.value.lawFieldTotal ? parseFloat(((Number(count) / stats.value.lawFieldTotal!) * 100).toFixed(2)) : 0;
const [label, rawCount] = Object.entries(obj)[0];
const count = Number(rawCount) || 0;
const rate = stats.value.lawFieldTotal ? parseFloat(((count / stats.value.lawFieldTotal!) * 100).toFixed(2)) : 0;
return { label, count, rate };
});
});
@ -423,4 +426,43 @@ onUnmounted(() => {
@import '../styles/analysis-scope.css';
@import '/statistical-new/font-awesome/css/font-awesome.min.css';
@import '../styles/analysis-layout.css';
/* 卡片高度随内容自适应,避免条目增多时溢出裁切;同行卡片等高 */
.statistical-analysis--adaptive .twobox {
display: flex;
flex-wrap: wrap;
align-items: stretch;
}
.statistical-analysis--adaptive .twobox .threebox {
float: none;
height: auto;
/* min-height: 25rem; */
/* 等高时多出的高度留在底部,内容保持顶部对齐,不被分配到行间 */
align-content: flex-start;
}
/* 标题不再被第一行卡片压住(原 -2% / -0.5% 负外边距会让卡片上移盖住标题) */
.statistical-analysis--adaptive .twobox .chart_tit {
position: relative;
z-index: 1;
}
.statistical-analysis--adaptive .twobox .count_wrap {
margin-top: 0;
}
.statistical-analysis--adaptive .twobox .count_item {
margin-top: 0;
}
/* 投诉类别条目之间留出间隙 */
.statistical-analysis--adaptive .twobox .com_cate {
gap: 0.75rem;
}
.statistical-analysis--adaptive .twobox .com_cate .count_item {
margin: 0;
width: calc(50% - 0.375rem);
}
</style>

4
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/components/TopSixMetrics.vue

@ -1,7 +1,7 @@
<template>
<div class="data_cont">
<div class="data_item">
<div class="cont-title">单独执法数量</div>
<div class="cont-title">单部门执法数量</div>
<div class="cont-total">
<b><span>{{ m.singleLaw?.count ?? '-' }}</span></b>
<div class="nece-data">
@ -67,7 +67,7 @@
</div>
</div>
<div class="data_item">
<div class="cont-title">入企压减率</div>
<div class="cont-title">入企压减数</div>
<div class="cont-total">
<b><span>{{ m.entEeduction?.count ?? '-' }}</span></b>
<div class="nece-data">

26
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/home/index.vue

@ -7,7 +7,7 @@
<h1 class="block_tit">行政执法</h1>
<div class="count_admin_wrap">
<div class="count_admin">
<label><img :src="imgPath('icon_jc2.png')" alt="单独执法" />单独执法</label>
<label><img :src="imgPath('icon_jc2.png')" alt="单部门执法" />单部门执法</label>
<div class="count_admin_num">
<b>{{ coordination.singleNum.toLocaleString() }}</b>
<span class="number_percent">{{ coordination.singlePer }}<i>%</i></span>
@ -75,7 +75,7 @@
</div> -->
</div>
<div class="count_admin">
<label><img :src="imgPath('icon_yj.png')" alt="入企压减率" />入企压减率</label>
<label><img :src="imgPath('icon_yj.png')" alt="入企压减数" />入企压减数</label>
<div class="count_admin_num">
<b>{{ coordination.cutNum.toLocaleString() }}</b>
</div>
@ -257,7 +257,6 @@ import * as echarts from 'echarts';
import {
analysisEnterprises,
analysisEnterprisesCoordination,
analysisEnterprisesNonAll,
analysisNonRegistrationType,
analysisRegistrationType,
analysisTime,
@ -271,7 +270,6 @@ import {
normalizeDictStatList,
normalizeEnterpriseStat,
normalizeTimeSeries,
toNum,
unwrapData
} from '@/api/supervision/statistical/adapters';
import { buildAdminPieOption, buildNonAdminPieOption, buildTrendLineOption } from '@/views/supervision/statistical/utils/chartOptions';
@ -314,7 +312,7 @@ const coordination = reactive({
const enterprise = reactive({ num: 0, yoy: 0, rr: 0 });
const nonTypeList = ref<DictStatItem[]>([]);
const njcAll = ref(0);
const njcAll = computed(() => coordination.nonNum);
const qJcNum = ref(0);
const qNjcNum = ref(0);
@ -417,7 +415,9 @@ async function loadCoordination() {
const res = await safeLoad(() => analysisEnterprisesCoordination(getTimeParams()));
if (res) {
const data = normalizeCoordination(unwrapData(res));
console.log(data);
Object.assign(coordination, data);
console.log(coordination);
coordination.singleYoy = parseFloat(data.singleYoy);
coordination.singleRr = parseFloat(data.singleRr);
coordination.unionYoy = parseFloat(data.unionYoy);
@ -435,15 +435,6 @@ async function loadEnterprise() {
}
}
async function loadNjcAll() {
const res = await safeLoad(() => analysisEnterprisesNonAll(getTimeParams()));
if (res) {
njcAll.value = toNum(unwrapData(res));
}
}
// Mock data for when API is unavailable (已删除)
async function loadAdminType() {
const res = await safeLoad(() => analysisRegistrationType(getTimeParams()));
const list = res ? normalizeDictStatList(unwrapData(res)) : [];
@ -560,7 +551,6 @@ async function refreshAll() {
await Promise.allSettled([
loadCoordination(),
loadEnterprise(),
loadNjcAll(),
loadAdminType(),
loadNonType(),
loadAdminTrend(),
@ -660,7 +650,7 @@ onUnmounted(() => {
.home-wrap {
width: 100%;
height: calc(100vh - 50px);
height: calc(100vh - 70px);
font-size: 14px;
overflow: hidden;
}
@ -668,7 +658,7 @@ onUnmounted(() => {
.wrap_all {
position: relative;
width: 100%;
height: calc(100vh - 50px);
height: calc(100vh - 70px);
background: var(--bg-homebody) no-repeat;
background-size: cover;
background-position: center center;
@ -1410,7 +1400,7 @@ onUnmounted(() => {
.tab_tit {
position: absolute;
top: 8%;
top: 3%;
left: 10rem;
font-size: 1rem;
white-space: nowrap;

5
zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-scope.css

@ -317,6 +317,7 @@
height: 1.5rem;
font-size: 1.0rem;
line-height: 1.5;
margin-bottom: 10px;
}
.statistical-analysis .chart_box {
@ -330,7 +331,7 @@
flex-wrap: wrap;
float: left;
margin: 0.5% 1.23% 0.85% 0;
padding: 0.75% 1% 0.25%;
padding: 0.75% 1% 0.75%;
width: 32.51%;
height: 18rem;
background: #fff none;
@ -382,7 +383,7 @@
.statistical-analysis .count_item {
float: left;
position: relative;
margin: -0.5% 0.5% 0.5% 0.5%;
margin: -0.5% 0.5% 0.9% 0.5%;
width: 19%;
height: 9.25rem;
background: var(--bg-analy-card) no-repeat;

18
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue

@ -39,12 +39,12 @@
</van-tab>
</van-tabs>
<div v-if="activeTab === 'materials' && (Number(taskDetail.taskStatus) === 3 || (Number(taskDetail.taskStatus) === 6 && showVerifyBtn))" class="detail-footer">
<div v-if="activeTab === 'materials' && (Number(taskDetail.taskStatus) === 3 || (Number(taskDetail.taskStatus) === 6 && showVerifyBtn && showTransferBtn))" class="detail-footer">
<template v-if="Number(taskDetail.taskStatus) === 3">
<van-button class="btn-cancel" @click="onCloudRecord">云笔录</van-button>
<van-button class="btn-cancel" @click="onCancel">取消</van-button>
<van-button class="btn-submit" type="primary" native-type="submit">提交</van-button>
<van-button class="btn-cancel">转办案</van-button>
<van-button v-if="showTransferBtn" class="btn-cancel">转办案</van-button>
</template>
<van-button v-else class="btn-submit" type="primary">核实</van-button>
</div>
@ -57,6 +57,7 @@ import { showConfirmDialog, showSuccessToast, showToast } from 'vant'
import NosDetailTaskTab from './components/NosDetailTaskTab.vue'
import NosDetailMaterialsTab from './components/NosDetailMaterialsTab.vue'
import { nosInfoApi, nosApproveApi, cloudRecordStartApi, nosVerifyCaseApi } from '@/api/nos/index'
import { getSystemConfig } from '@/api/enforcement/index'
import { toFullFileUrl } from '@/util/fileUrl'
const router = useRouter()
@ -78,6 +79,8 @@ const taskDetail = ref({})
const taskItemList = ref([])
const evaluateData = ref(null)
const showVerifyBtn = ref(false)
// 是否显示「转办案」按钮(系统配置控制)
const showTransferBtn = ref(false)
const inspectResult = ref({
checkResult: '',
@ -169,6 +172,17 @@ const fetchTaskDetail = async () => {
}
onMounted(() => {
// 获取系统配置:是否显示「转办案」按钮
getSystemConfig('sys.show.function', (res) => {
if (res && res.code === 200) {
const configValue = res.data || res.configValue || res.value
showTransferBtn.value = String(configValue) === '1'
}
}, () => {
// 配置获取失败则默认不显示
showTransferBtn.value = false
})
if (route.query.id) {
fetchTaskDetail()
}

17
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue

@ -550,6 +550,9 @@ onBeforeUnmount(() => {
.warp_body {
position: relative;
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
background-image: linear-gradient(to bottom, #ebf3fb, transparent);
}
@ -580,6 +583,9 @@ onBeforeUnmount(() => {
margin: 0 3%;
width: 94%;
height: 99%;
box-sizing: border-box;
/* 为底部固定的补录栏预留空间,避免内容被遮挡 */
padding-bottom: 2rem;
background-color: #fff;
border-radius: 0.27rem;
}
@ -602,18 +608,25 @@ onBeforeUnmount(() => {
}
.record {
position: absolute;
/* 固定在页面底部,内容滚动时始终可见,避免被上方区域覆盖导致点击失效 */
position: fixed;
left: 3%;
right: 3%;
bottom: 2rem;
z-index: 200;
color: #bbbaba;
font-size: 0.35rem;
width: 100%;
text-align: center;
white-space: nowrap;
background-color: #fff;
}
.record div {
position: relative;
z-index: 200;
color: #287eef;
display: inline-block;
cursor: pointer;
}
/* ========== html5-qrcode 扫码弹层样式 ========== */

8
zdxt-web-client/zdxt-efcode-enterprise-app/src/components/enterprise/footerNav.vue

@ -4,12 +4,12 @@
<van-tabbar-item name="Home" replace icon="wap-home" to="/enterprise/enterpriseHome">{{
$t("common.lang_home")
}}</van-tabbar-item>
<!-- <van-tabbar-item name="Classify" replace icon="bell" to="/enterprise/lawQuery">
法律查询
</van-tabbar-item> -->
<van-tabbar-item name="Classify" replace icon="notes-o" to="/enterprise/lawQuery">
<van-tabbar-item name="Classify" replace icon="bell">
法律查询
</van-tabbar-item>
<!-- <van-tabbar-item name="Classify" replace icon="notes-o" to="/enterprise/lawQuery">
法律查询
</van-tabbar-item> -->
<van-tabbar-item name="Classify" push to="/enterprise/nos">
<template #icon>
<img src="@/assets/images/nos/off_site_bottom_icon.png" class="nos-icon" alt="" />

Loading…
Cancel
Save