diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/externalInterface/LongGangInterfaceController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/externalInterface/LongGangInterfaceController.java
index a4006199..6562970d 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/externalInterface/LongGangInterfaceController.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/externalInterface/LongGangInterfaceController.java
@@ -12,6 +12,7 @@ import com.zdxt.enforcementcode.domain.bo.externalInterface.*;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpPlanVo;
import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo;
import com.zdxt.enforcementcode.domain.vo.SrzDeptVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCaseSyncVo;
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCreatePlanVo;
import com.zdxt.enforcementcode.service.*;
import lombok.RequiredArgsConstructor;
@@ -47,6 +48,7 @@ public class LongGangInterfaceController {
private final ISysApiPlatformConfigService sysApiPlatformConfigService;
private final IEnterpriseInformationService enterpriseInformationService;
private final ISysDeptService sysDeptService;
+ private final ILongGangCaseQueryService longGangCaseQueryService;
/**
* 渠道认证:校验 appKey 并返回 channelNo
@@ -375,4 +377,39 @@ public class LongGangInterfaceController {
return R.ok();
}
+
+
+ /**
+ * 外部接口-同步案件信息(行政检查 / 行政处罚 / 行政强制)
+ *
+ * 不传 syncDate 返回全量;传入 syncDate 只返回该自然日数据。三类主表各自按 pageNum/pageSize 分页,并整包装明细、当事人。
+ *
+ * @param appKey 请求头 App-Key,用于识别调用渠道
+ * @param bo 同步参数(syncDate 可选;pageNum/pageSize 可选)
+ * @return 三组嵌套案件数据及各自总条数
+ */
+ @SaIgnore
+ @Log(title = "外部接口-同步案件信息", businessType = BusinessType.OTHER)
+ @PostMapping("/case/sync")
+ public R syncCase(
+ @RequestHeader(value = HEADER_APP_KEY, required = false) String appKey,
+ @RequestBody LongGangQueryCaseBo bo) {
+ R authResult = authenticateChannel(appKey);
+ if (!R.isSuccess(authResult)) {
+ return R.fail(authResult.getMsg());
+ }
+ String channelNo = authResult.getData();
+ if (bo == null) {
+ bo = new LongGangQueryCaseBo();
+ }
+
+ LongGangCaseSyncVo vo = longGangCaseQueryService.syncCase(bo);
+ log.info("[外部接口] 同步案件信息, appKey={}, channelNo={}, syncDate={}, pageNum={}, pageSize={}, xzjc={}/{}, xzcf={}/{}, xzqz={}/{}",
+ appKey, channelNo, bo.getSyncDate(), vo.getPageNum(), vo.getPageSize(),
+ vo.getXzjcList().size(), vo.getXzjcTotal(),
+ vo.getXzcfList().size(), vo.getXzcfTotal(),
+ vo.getXzqzList().size(), vo.getXzqzTotal());
+ return R.ok(vo);
+ }
+
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryCaseBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryCaseBo.java
new file mode 100644
index 00000000..301cdce7
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryCaseBo.java
@@ -0,0 +1,31 @@
+package com.zdxt.enforcementcode.domain.bo.externalInterface;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 外部接口-案件数据同步查询(龙岗渠道)
+ *
+ * 不传 syncDate:全量同步;传入 syncDate:只返回该自然日变更/产生的数据。
+ */
+@Data
+public class LongGangQueryCaseBo {
+
+ /**
+ * 同步日期(yyyy-MM-dd)。为空则全量;有值则只取当天数据
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date syncDate;
+
+ /**
+ * 页码,从 1 开始,默认 1
+ */
+ private Integer pageNum = 1;
+
+ /**
+ * 每页条数,默认 100(三类主表各自按此分页)
+ */
+ private Integer pageSize = 100;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangCaseSyncVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangCaseSyncVo.java
new file mode 100644
index 00000000..4f5c2e76
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangCaseSyncVo.java
@@ -0,0 +1,54 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 外部接口-案件同步结果(行政检查 / 行政处罚 / 行政强制)
+ *
+ * 三类主表各自独立分页,pageNum/pageSize 对三类同时生效。
+ */
+@Data
+public class LongGangCaseSyncVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ private Integer pageNum;
+
+ private Integer pageSize;
+
+ /**
+ * 行政检查
+ */
+ private List xzjcList = new ArrayList<>();
+
+ /**
+ * 行政检查主表总条数
+ */
+ private Long xzjcTotal = 0L;
+
+ /**
+ * 行政处罚
+ */
+ private List xzcfList = new ArrayList<>();
+
+ /**
+ * 行政处罚主表总条数
+ */
+ private Long xzcfTotal = 0L;
+
+ /**
+ * 行政强制
+ */
+ private List xzqzList = new ArrayList<>();
+
+ /**
+ * 行政强制主表总条数
+ */
+ private Long xzqzTotal = 0L;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzcfCaseVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzcfCaseVo.java
new file mode 100644
index 00000000..718db1ea
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzcfCaseVo.java
@@ -0,0 +1,36 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import com.zdxt.enforcementcode.domain.vo.SxtXzcfajdsrxx594019Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzcfajjbxx026705Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzcfajjdxx778518Vo;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 行政处罚同步包:案件基本信息 + 决定信息 + 当事人
+ */
+@Data
+public class LongGangXzcfCaseVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 行政处罚案件基本信息 sxt_xzcfajjbxx026705
+ */
+ private SxtXzcfajjbxx026705Vo master;
+
+ /**
+ * 行政处罚案件决定信息 sxt_xzcfajjdxx778518
+ */
+ private List decisions = new ArrayList<>();
+
+ /**
+ * 行政处罚案件当事人信息 sxt_xzcfajdsrxx594019
+ */
+ private List parties = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzjcCaseVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzjcCaseVo.java
new file mode 100644
index 00000000..dbf8eb17
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzjcCaseVo.java
@@ -0,0 +1,36 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import com.zdxt.enforcementcode.domain.vo.SxtJcdzb107522Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzjcdsrxx016987Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzjcjcxxx050280Vo;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 行政检查同步包:检查单主表 + 检查项 + 当事人
+ */
+@Data
+public class LongGangXzjcCaseVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 检查单主表 sxt_jcdzb107522
+ */
+ private SxtJcdzb107522Vo master;
+
+ /**
+ * 行政检查项信息 sxt_xzjcjcxxx050280
+ */
+ private List items = new ArrayList<>();
+
+ /**
+ * 行政检查当事人信息 sxt_xzjcdsrxx016987
+ */
+ private List parties = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzqzCaseVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzqzCaseVo.java
new file mode 100644
index 00000000..2154f960
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangXzqzCaseVo.java
@@ -0,0 +1,36 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import com.zdxt.enforcementcode.domain.vo.SxtXzqzcsxx274939Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzqzdsrxx997874Vo;
+import com.zdxt.enforcementcode.domain.vo.SxtXzqzjbxx173774Vo;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 行政强制同步包:基本信息 + 措施信息 + 当事人
+ */
+@Data
+public class LongGangXzqzCaseVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 行政强制基本信息 sxt_xzqzjbxx173774
+ */
+ private SxtXzqzjbxx173774Vo master;
+
+ /**
+ * 行政强制措施信息 sxt_xzqzcsxx274939
+ */
+ private List measures = new ArrayList<>();
+
+ /**
+ * 行政强制当事人信息 sxt_xzqzdsrxx997874
+ */
+ private List parties = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangCaseQueryService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangCaseQueryService.java
new file mode 100644
index 00000000..e4bb4155
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangCaseQueryService.java
@@ -0,0 +1,20 @@
+package com.zdxt.enforcementcode.service;
+
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryCaseBo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCaseSyncVo;
+
+/**
+ * 龙岗外部接口-案件同步查询
+ */
+public interface ILongGangCaseQueryService {
+
+ /**
+ * 同步查询行政检查、行政处罚、行政强制三组完整数据。
+ *
+ * syncDate 为空:全量;有值:只返回该自然日数据。三类主表各自按 pageNum/pageSize 分页。
+ *
+ * @param bo 同步参数
+ * @return 三组嵌套案件数据及各自总条数
+ */
+ LongGangCaseSyncVo syncCase(LongGangQueryCaseBo bo);
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangCaseQueryServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangCaseQueryServiceImpl.java
new file mode 100644
index 00000000..20cdf746
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangCaseQueryServiceImpl.java
@@ -0,0 +1,218 @@
+package com.zdxt.enforcementcode.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zdxt.enforcementcode.domain.*;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryCaseBo;
+import com.zdxt.enforcementcode.domain.vo.*;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCaseSyncVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzcfCaseVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzjcCaseVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzqzCaseVo;
+import com.zdxt.enforcementcode.mapper.*;
+import com.zdxt.enforcementcode.service.ILongGangCaseQueryService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 龙岗外部接口-案件同步查询。
+ * 按主表分页查出案件,再按主键整包装明细、当事人,供对方系统落库。
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class LongGangCaseQueryServiceImpl implements ILongGangCaseQueryService {
+
+ private static final int DEFAULT_PAGE_NUM = 1;
+ private static final int DEFAULT_PAGE_SIZE = 100;
+ private static final int MAX_PAGE_SIZE = 500;
+
+ private final SxtJcdzb107522Mapper jcdzbMapper;
+ private final SxtXzjcjcxxx050280Mapper xzjcItemMapper;
+ private final SxtXzjcdsrxx016987Mapper xzjcDsrMapper;
+
+ private final SxtXzcfajjbxx026705Mapper xzcfJbxxMapper;
+ private final SxtXzcfajjdxx778518Mapper xzcfJdxxMapper;
+ private final SxtXzcfajdsrxx594019Mapper xzcfDsrMapper;
+
+ private final SxtXzqzjbxx173774Mapper xzqzJbxxMapper;
+ private final SxtXzqzcsxx274939Mapper xzqzCsxxMapper;
+ private final SxtXzqzdsrxx997874Mapper xzqzDsrMapper;
+
+ @Override
+ public LongGangCaseSyncVo syncCase(LongGangQueryCaseBo bo) {
+ int pageNum = bo.getPageNum() == null || bo.getPageNum() < 1 ? DEFAULT_PAGE_NUM : bo.getPageNum();
+ int pageSize = bo.getPageSize() == null || bo.getPageSize() < 1 ? DEFAULT_PAGE_SIZE : Math.min(bo.getPageSize(), MAX_PAGE_SIZE);
+ PageQuery pageQuery = new PageQuery(pageSize, pageNum);
+
+ Date dayBegin = null;
+ Date dayEnd = null;
+ if (bo.getSyncDate() != null) {
+ dayBegin = DateUtil.beginOfDay(bo.getSyncDate());
+ dayEnd = DateUtil.endOfDay(bo.getSyncDate());
+ }
+
+ LongGangCaseSyncVo vo = new LongGangCaseSyncVo();
+ vo.setPageNum(pageNum);
+ vo.setPageSize(pageSize);
+ fillXzjc(vo, pageQuery, dayBegin, dayEnd);
+ fillXzcf(vo, pageQuery, dayBegin, dayEnd);
+ fillXzqz(vo, pageQuery, dayBegin, dayEnd);
+ return vo;
+ }
+
+ /**
+ * 检查单主表.sign_id = 检查项.c601000 = 当事人.c601000
+ * 按日过滤:检查日期 inspectionDate
+ */
+ private void fillXzjc(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ if (dayBegin != null && dayEnd != null) {
+ lqw.between(SxtJcdzb107522::getInspectionDate, dayBegin, dayEnd);
+ }
+ lqw.orderByDesc(SxtJcdzb107522::getInspectionDate).orderByAsc(SxtJcdzb107522::getId);
+
+ Page page = jcdzbMapper.selectVoPage(pageQuery.build(), lqw);
+ vo.setXzjcTotal(page.getTotal());
+ List masters = page.getRecords();
+ if (CollUtil.isEmpty(masters)) {
+ vo.setXzjcList(Collections.emptyList());
+ return;
+ }
+
+ Set signIds = collectIds(masters, SxtJcdzb107522Vo::getSignId);
+ Map> itemMap = groupBy(
+ xzjcItemMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzjcjcxxx050280::getC601000, signIds)),
+ SxtXzjcjcxxx050280Vo::getC601000);
+ Map> partyMap = groupBy(
+ xzjcDsrMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzjcdsrxx016987::getC601000, signIds)),
+ SxtXzjcdsrxx016987Vo::getC601000);
+
+ List list = new ArrayList<>();
+ for (SxtJcdzb107522Vo master : masters) {
+ LongGangXzjcCaseVo caseVo = new LongGangXzjcCaseVo();
+ caseVo.setMaster(master);
+ caseVo.setItems(itemMap.getOrDefault(master.getSignId(), Collections.emptyList()));
+ caseVo.setParties(partyMap.getOrDefault(master.getSignId(), Collections.emptyList()));
+ list.add(caseVo);
+ }
+ vo.setXzjcList(list);
+ }
+
+ /**
+ * 处罚基本信息.c201000 = 决定.c201000 = 当事人.c201000
+ * 按日过滤:最后变更时间 cdTime
+ */
+ private void fillXzcf(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ if (dayBegin != null && dayEnd != null) {
+ lqw.between(SxtXzcfajjbxx026705::getCdTime, dayBegin, dayEnd);
+ }
+ lqw.orderByDesc(SxtXzcfajjbxx026705::getCdTime).orderByAsc(SxtXzcfajjbxx026705::getId);
+
+ Page page = xzcfJbxxMapper.selectVoPage(pageQuery.build(), lqw);
+ vo.setXzcfTotal(page.getTotal());
+ List masters = page.getRecords();
+ if (CollUtil.isEmpty(masters)) {
+ vo.setXzcfList(Collections.emptyList());
+ return;
+ }
+
+ Set jbxxIds = collectIds(masters, SxtXzcfajjbxx026705Vo::getC201000);
+ Map> decisionMap = groupBy(
+ xzcfJdxxMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzcfajjdxx778518::getC201000, jbxxIds)),
+ SxtXzcfajjdxx778518Vo::getC201000);
+ Map> partyMap = groupBy(
+ xzcfDsrMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzcfajdsrxx594019::getC201000, jbxxIds)),
+ SxtXzcfajdsrxx594019Vo::getC201000);
+
+ List list = new ArrayList<>();
+ for (SxtXzcfajjbxx026705Vo master : masters) {
+ LongGangXzcfCaseVo caseVo = new LongGangXzcfCaseVo();
+ caseVo.setMaster(master);
+ caseVo.setDecisions(decisionMap.getOrDefault(master.getC201000(), Collections.emptyList()));
+ caseVo.setParties(partyMap.getOrDefault(master.getC201000(), Collections.emptyList()));
+ list.add(caseVo);
+ }
+ vo.setXzcfList(list);
+ }
+
+ /**
+ * 强制基本信息.c301000 = 措施.c301000 = 当事人.c301000
+ * 按日过滤:最后变更时间 cdTime
+ */
+ private void fillXzqz(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ if (dayBegin != null && dayEnd != null) {
+ lqw.between(SxtXzqzjbxx173774::getCdTime, dayBegin, dayEnd);
+ }
+ lqw.orderByDesc(SxtXzqzjbxx173774::getCdTime).orderByAsc(SxtXzqzjbxx173774::getId);
+
+ Page page = xzqzJbxxMapper.selectVoPage(pageQuery.build(), lqw);
+ vo.setXzqzTotal(page.getTotal());
+ List masters = page.getRecords();
+ if (CollUtil.isEmpty(masters)) {
+ vo.setXzqzList(Collections.emptyList());
+ return;
+ }
+
+ Set jbxxIds = collectIds(masters, SxtXzqzjbxx173774Vo::getC301000);
+ Map> measureMap = groupBy(
+ xzqzCsxxMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzqzcsxx274939::getC301000, jbxxIds)),
+ SxtXzqzcsxx274939Vo::getC301000);
+ Map> partyMap = groupBy(
+ xzqzDsrMapper.selectVoList(
+ Wrappers.lambdaQuery().in(SxtXzqzdsrxx997874::getC301000, jbxxIds)),
+ SxtXzqzdsrxx997874Vo::getC301000);
+
+ List list = new ArrayList<>();
+ for (SxtXzqzjbxx173774Vo master : masters) {
+ LongGangXzqzCaseVo caseVo = new LongGangXzqzCaseVo();
+ caseVo.setMaster(master);
+ caseVo.setMeasures(measureMap.getOrDefault(master.getC301000(), Collections.emptyList()));
+ caseVo.setParties(partyMap.getOrDefault(master.getC301000(), Collections.emptyList()));
+ list.add(caseVo);
+ }
+ vo.setXzqzList(list);
+ }
+
+ private Set collectIds(List list, Function idGetter) {
+ if (CollUtil.isEmpty(list)) {
+ return Collections.emptySet();
+ }
+ return list.stream()
+ .map(idGetter)
+ .filter(StrUtil::isNotBlank)
+ .collect(Collectors.toCollection(LinkedHashSet::new));
+ }
+
+ private Map> groupBy(List list, Function keyGetter) {
+ if (CollUtil.isEmpty(list)) {
+ return Collections.emptyMap();
+ }
+ return list.stream()
+ .filter(item -> StrUtil.isNotBlank(keyGetter.apply(item)))
+ .collect(Collectors.groupingBy(keyGetter));
+ }
+}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome-bak.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome-bak.vue
new file mode 100644
index 00000000..65ab9179
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome-bak.vue
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/enterpriseHome-bak.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/enterpriseHome-bak.vue
new file mode 100644
index 00000000..d65c4212
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/enterpriseHome-bak.vue
@@ -0,0 +1,418 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+