diff --git a/.gitignore b/.gitignore
index e87c6ac7..7d5c0c24 100644
Binary files a/.gitignore and b/.gitignore differ
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 6ccf062a..ff78f1cb 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
@@ -5,17 +5,19 @@ import cn.hutool.core.util.StrUtil;
import com.zdxt.enforcementcode.common.util.DataFilterUtil;
import com.zdxt.enforcementcode.common.util.StringUtils;
import com.zdxt.enforcementcode.domain.EfcodeCpPlan;
+import com.zdxt.enforcementcode.domain.MssqOrderFlow;
import com.zdxt.enforcementcode.domain.SysApiPlatformConfigEntity;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpPlanBo;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpTaskBo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryPlanBo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryUserBo;
import com.zdxt.enforcementcode.domain.bo.externalInterface.*;
+import com.zdxt.enforcementcode.domain.vo.DashboardAreaInfoVo;
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.domain.vo.externalInterface.*;
import com.zdxt.enforcementcode.service.*;
-import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
@@ -31,7 +33,6 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@@ -43,6 +44,7 @@ import java.util.stream.Collectors;
public class LongGangInterfaceController {
private static final String HEADER_APP_KEY = "App-Key";
+ private static final String LG_AREA_CODE = "440307000";
private final IOutEfcodeCpPlanService outEfcodeCpPlanService;
private final IOutEfcodeCpTaskService outEfcodeCpTaskService;
@@ -50,6 +52,9 @@ public class LongGangInterfaceController {
private final IEnterpriseInformationService enterpriseInformationService;
private final ISysDeptService sysDeptService;
private final ILongGangCaseQueryService longGangCaseQueryService;
+ private final IDashboardAreaInfoService dashboardAreaInfoService;
+ private final ILongGangUserQueryService longGangUserQueryService;
+ private final IEnterpriseComplaintService enterpriseComplaintService;
/**
* 渠道认证:校验 appKey 并返回 channelNo
@@ -413,4 +418,118 @@ public class LongGangInterfaceController {
return R.ok(vo);
}
+
+ /**
+ * 外部接口-执法计划同步
+ * 分页查询本渠道下已产生任务的计划,支持通过 startTime/endTime(计划更新时间)做增量同步。
+ *
+ * @param appKey 请求头 App-Key,用于识别调用渠道
+ * @param bo 查询参数(pageNum、pageSize、startTime、endTime)
+ * @return 计划分页结果
+ */
+ @SaIgnore
+ @Log(title = "外部接口-执法计划同步", businessType = BusinessType.OTHER)
+ @PostMapping("/plan/sync")
+ public R syncPlan(
+ @RequestHeader(value = HEADER_APP_KEY, required = false) String appKey,
+ @RequestBody LongGangQueryPlanBo bo) {
+ // 渠道认证
+ R authResult = authenticateChannel(appKey);
+ if (!R.isSuccess(authResult)) {
+ return R.fail(authResult.getMsg());
+ }
+ String channelNo = authResult.getData();
+
+ // 根据行政区code查询龙岗区code
+ DashboardAreaInfoVo areaInfoVo = dashboardAreaInfoService.getAreaInfoByCode(LG_AREA_CODE);
+ if (areaInfoVo == null) {
+ return R.fail("未找到龙岗区行政区信息");
+ }
+
+ LongGangPlanSyncPageVo vo = outEfcodeCpPlanService.syncPlan(bo, areaInfoVo.getCode());
+ log.info("[外部接口] 同步执法计划, appKey={}, channelNo={}, startTime={}, endTime={}, pageNum={}, pageSize={}, total={}",
+ appKey, channelNo, bo.getStartTime(), bo.getEndTime(), vo.getPageNum(), vo.getPageSize(), vo.getTotal());
+ return R.ok(vo);
+ }
+
+
+ /**
+ * 外部接口-龙岗区用户同步
+ * 分页查询龙岗区(行政区编码 440307000)下的用户,支持通过 startTime/endTime(用户更新时间)做增量同步。
+ *
+ * @param appKey 请求头 App-Key,用于识别调用渠道
+ * @param bo 查询参数(pageNum、pageSize、startTime、endTime)
+ * @return 用户分页结果
+ */
+ @SaIgnore
+ @Log(title = "外部接口-龙岗区用户同步", businessType = BusinessType.OTHER)
+ @PostMapping("/user/sync")
+ public R syncUser(
+ @RequestHeader(value = HEADER_APP_KEY, required = false) String appKey,
+ @RequestBody LongGangQueryUserBo bo) {
+ // 渠道认证
+ R authResult = authenticateChannel(appKey);
+ if (!R.isSuccess(authResult)) {
+ return R.fail(authResult.getMsg());
+ }
+ String channelNo = authResult.getData();
+
+ // 根据行政区code查询龙岗区code
+ DashboardAreaInfoVo areaInfoVo = dashboardAreaInfoService.getAreaInfoByCode(LG_AREA_CODE);
+ if (areaInfoVo == null) {
+ return R.fail("未找到龙岗区行政区信息");
+ }
+
+ // sys_user、sys_dept连表根据code查询龙岗区用户信息
+ LongGangUserSyncPageVo vo = longGangUserQueryService.syncUser(bo, areaInfoVo.getCode());
+ log.info("[外部接口] 同步用户, appKey={}, channelNo={}, startTime={}, endTime={}, pageNum={}, pageSize={}, total={}",
+ appKey, channelNo, bo.getStartTime(), bo.getEndTime(), vo.getPageNum(), vo.getPageSize(), vo.getTotal());
+ return R.ok(vo);
+ }
+
+
+ @SaIgnore
+ @Log(title = "外部接口-龙岗区企业投诉同步", businessType = BusinessType.OTHER)
+ @PostMapping("/complaint/sync")
+ public R syncComplaint(
+ @RequestHeader(value = HEADER_APP_KEY, required = false) String appKey,
+ @RequestBody LongGangQueryComplaintBo bo) {
+ R authResult = authenticateChannel(appKey);
+ if (!R.isSuccess(authResult)) {
+ return R.fail(authResult.getMsg());
+ }
+ String channelNo = authResult.getData();
+
+ // 根据行政区code查询龙岗区code
+ DashboardAreaInfoVo areaInfoVo = dashboardAreaInfoService.getAreaInfoByCode(LG_AREA_CODE);
+ if (areaInfoVo == null) {
+ return R.fail("未找到龙岗区行政区信息");
+ }
+
+ LongGangComplaintSyncPageVo vo = enterpriseComplaintService.syncComplaint(bo, areaInfoVo.getCode());
+ log.info("[外部接口] 同步企业投诉, appKey={}, channelNo={}, startTime={}, endTime={}, pageNum={}, pageSize={}, total={}",
+ appKey, channelNo, bo.getStartTime(), bo.getEndTime(), vo.getPageNum(), vo.getPageSize(), vo.getTotal());
+ return R.ok(vo);
+ }
+
+
+ @SaIgnore
+ @Log(title = "外部接口-龙岗区企业投诉进度详情", businessType = BusinessType.OTHER)
+ @PostMapping("/complaint/detail")
+ public R> getComplaintDetail(
+ @RequestHeader(value = HEADER_APP_KEY, required = false) String appKey,
+ @RequestBody LongGangQueryComplaintBo bo) {
+ R authResult = authenticateChannel(appKey);
+ if (!R.isSuccess(authResult)) {
+ return R.fail(authResult.getMsg());
+ }
+ String channelNo = authResult.getData();
+ String complaintId = bo.getComplaintId();
+
+ List mssqOrderFlowList = enterpriseComplaintService.selectEnterpriseComplaintProcess(complaintId);
+
+ log.info("[外部接口] 获取企业投诉详情, appKey={}, channelNo={}, complaintId={}",
+ appKey, channelNo, complaintId);
+ return R.ok(mssqOrderFlowList);
+ }
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EnterpriseComplaint.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EnterpriseComplaint.java
index 6138a479..ffcd227b 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EnterpriseComplaint.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EnterpriseComplaint.java
@@ -1,13 +1,14 @@
package com.zdxt.enforcementcode.domain;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
+import java.util.Date;
import java.util.List;
/**
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java
index 31c3e3a7..8d8cec91 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/DashboardAreaInfo.java
@@ -37,6 +37,11 @@ public class DashboardAreaInfo extends BaseEntity {
*/
private String name;
+ /**
+ * 行政区编码
+ */
+ private String areaCode;
+
/**
* 父级编码
*/
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryComplaintBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryComplaintBo.java
new file mode 100644
index 00000000..36963e38
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryComplaintBo.java
@@ -0,0 +1,27 @@
+package com.zdxt.enforcementcode.domain.bo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangQueryComplaintBo {
+
+ @Schema(description = "页码,从1开始,默认1")
+ private Integer pageNum = 1;
+
+ @Schema(description = "每页条数,默认 100")
+ private Integer pageSize = 100;
+
+ @Schema(description = "开始时间(yyyy-MM-dd HH:mm:ss)")
+ private String startTime;
+
+ @Schema(description = "结束时间(yyyy-MM-dd HH:mm:ss)")
+ private String endTime;
+
+ @Schema(description = "投诉id")
+ private String complaintId;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryPlanBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryPlanBo.java
new file mode 100644
index 00000000..26afe8a8
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryPlanBo.java
@@ -0,0 +1,24 @@
+package com.zdxt.enforcementcode.domain.bo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangQueryPlanBo {
+
+ @Schema(description = "页码,从1开始,默认1")
+ private Integer pageNum = 1;
+
+ @Schema(description = "每页条数,默认 100")
+ private Integer pageSize = 100;
+
+ @Schema(description = "开始时间(yyyy-MM-dd HH:mm:ss)")
+ private String startTime;
+
+ @Schema(description = "结束时间(yyyy-MM-dd HH:mm:ss)")
+ private String endTime;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryUserBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryUserBo.java
new file mode 100644
index 00000000..fddcd362
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/externalInterface/LongGangQueryUserBo.java
@@ -0,0 +1,24 @@
+package com.zdxt.enforcementcode.domain.bo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangQueryUserBo {
+
+ @Schema(description = "页码,从1开始,默认1")
+ private Integer pageNum = 1;
+
+ @Schema(description = "每页条数,默认 100")
+ private Integer pageSize = 100;
+
+ @Schema(description = "开始时间(yyyy-MM-dd HH:mm:ss)")
+ private String startTime;
+
+ @Schema(description = "结束时间(yyyy-MM-dd HH:mm:ss)")
+ private String endTime;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java
index 10bbefe2..0878fe10 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/DashboardAreaInfoVo.java
@@ -45,6 +45,12 @@ public class DashboardAreaInfoVo implements Serializable {
@ExcelProperty(value = "名称")
private String name;
+ /**
+ * 行政区编码
+ */
+ @ExcelProperty(value = "行政区编码")
+ private String areaCode;
+
/**
* 父级编码
*/
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncPageVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncPageVo.java
new file mode 100644
index 00000000..c21234d5
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncPageVo.java
@@ -0,0 +1,32 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangComplaintSyncPageVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "页码,从1开始")
+ private Integer pageNum;
+
+ @Schema(description = "每页条数")
+ private Integer pageSize;
+
+ @Schema(description = "总条数")
+ private Long total;
+
+ @Schema(description = "投诉列表")
+ private List list = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncVo.java
new file mode 100644
index 00000000..a32f0d28
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangComplaintSyncVo.java
@@ -0,0 +1,178 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangComplaintSyncVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ private String id;
+
+ /**
+ * 关联执法记录ID
+ */
+ @Schema(description = "关联执法记录ID")
+ private String relId;
+
+ /**
+ * 执法类型
+ */
+ @Schema(description = "执法类型")
+ private Long enforceType;
+
+ /**
+ * 问题描述
+ */
+ @Schema(description = "问题描述")
+ private String problemDescription;
+
+ /**
+ * 联系人
+ */
+ @Schema(description = "联系人")
+ private String linkman;
+
+ /**
+ * 联系方式
+ */
+ @Schema(description = "联系方式")
+ private String linkmanTel;
+
+ /**
+ * 是否删除 0 否 1 是
+ */
+ @Schema(description = "是否删除 0 否 1 是")
+ private Long isDelete;
+
+ /**
+ * 投诉对接12345案件类型
+ */
+ @Schema(description = "投诉对接12345案件类型")
+ private String caseType;
+
+ /**
+ *
+ */
+ private Long authorization;
+
+ /**
+ *
+ */
+ private Long comOrOpi;
+
+ /**
+ *
+ */
+ private String enterpriseAddress;
+
+ /**
+ *
+ */
+ private String proWoCode;
+
+ /**
+ *
+ */
+ private Long status;
+
+ /**
+ *
+ */
+ private Date evaluateTime;
+
+ /**
+ *
+ */
+ private String enterpriseNumber;
+
+ /**
+ *
+ */
+ private String enterpriseName;
+
+ /**
+ * 执法部门多个-逗号隔开
+ */
+ @Schema(description = "执法部门多个-逗号隔开")
+ private String complaintDepartments;
+
+ /**
+ * 执法部门id多个-逗号隔开
+ */
+ @Schema(description = "执法部门id多个-逗号隔开")
+ private String complaintDepartmentIds;
+
+ /**
+ * 执法时间
+ */
+ @Schema(description = "执法时间")
+ private Date enforcementTime;
+
+ /**
+ * 投诉类型 0 系默认 1 联合检查
+ */
+ @Schema(description = "投诉类型 0 系默认 1 联合检查")
+ private Long complaintType;
+
+ /**
+ * 投诉事项编码,多个逗号隔开
+ */
+ @Schema(description = "投诉事项编码,多个逗号隔开")
+ private String complaintItemCodes;
+
+ /**
+ * 投诉事项名称,多个逗号隔开
+ */
+ @Schema(description = "投诉事项名称,多个逗号隔开")
+ private String complaintItemNames;
+
+ /**
+ * 同步过来的处理时间
+ */
+ @Schema(description = "同步过来的处理时间")
+ private String handleTime;
+
+ /**
+ * 投诉事项(对应记录表执法/入企事项)
+ */
+ @Schema(description = "投诉事项(对应记录表执法/入企事项)")
+ private String complaintRecordItem;
+
+ /**
+ * 数据类型 0行政 1 非行政
+ */
+ @Schema(description = "数据类型 0行政 1 非行政")
+ private Long recordType;
+
+ /**
+ * 详细地址
+ */
+ @Schema(description = "详细地址")
+ private String detailedAddress;
+
+ /**
+ * 创建时间
+ */
+ @Schema(description = "创建时间")
+ private Date createTime;
+
+ /**
+ * 更新时间
+ */
+ @Schema(description = "更新时间")
+ private Date updateTime;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncPageVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncPageVo.java
new file mode 100644
index 00000000..8437c883
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncPageVo.java
@@ -0,0 +1,34 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 外部接口-执法计划同步分页结果
+ *
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangPlanSyncPageVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "页码,从1开始")
+ private Integer pageNum;
+
+ @Schema(description = "每页条数")
+ private Integer pageSize;
+
+ @Schema(description = "总条数")
+ private Long total;
+
+ @Schema(description = "计划列表")
+ private List list = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncVo.java
new file mode 100644
index 00000000..bc39b177
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangPlanSyncVo.java
@@ -0,0 +1,58 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangPlanSyncVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "计划id")
+ private String planId;
+
+ @Schema(description = "任务id")
+ private String taskId;
+
+ @Schema(description = "外部流水号")
+ private String outSerialNo;
+
+ @Schema(description = "执法单位ID")
+ private String bureauDeptId;
+
+ @Schema(description = "执法单位名称")
+ private String bureauDeptName;
+
+ @Schema(description = "计划执行日期(如 2025-05-08)")
+ private Date planDate;
+
+ @Schema(description = "执行时段:1=上午,2=下午,3=其他")
+ private Long planTime;
+
+ @Schema(description = "被检查企业/机构名称")
+ private String enterpriseName;
+
+ @Schema(description = "被检查企业/机构信用代码")
+ private String enterpriseNumber;
+
+ @Schema(description = "执法人员姓名(多个逗号分隔)")
+ private String enforceUserNames;
+
+ @Schema(description = "执法人员ID(多个逗号分隔)")
+ private String enforceUserIds;
+
+ @Schema(description = "创建时间")
+ private Date createTime;
+
+ @Schema(description = "更新时间")
+ private Date updateTime;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncPageVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncPageVo.java
new file mode 100644
index 00000000..7e89c8df
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncPageVo.java
@@ -0,0 +1,32 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangUserSyncPageVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "页码,从1开始")
+ private Integer pageNum;
+
+ @Schema(description = "每页条数")
+ private Integer pageSize;
+
+ @Schema(description = "总条数")
+ private Long total;
+
+ @Schema(description = "用户列表")
+ private List list = new ArrayList<>();
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncVo.java
new file mode 100644
index 00000000..1215647c
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/externalInterface/LongGangUserSyncVo.java
@@ -0,0 +1,81 @@
+package com.zdxt.enforcementcode.domain.vo.externalInterface;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ * @author msy
+ * @Date: 2026/11/10
+ */
+@Data
+public class LongGangUserSyncVo {
+
+ @Schema(description = "用户ID")
+ private Long userId;
+
+ @Schema(description = "部门ID")
+ private String deptId;
+
+ @Schema(description = "用户账号")
+ private String userName;
+
+ @Schema(description = "用户昵称")
+ private String nickName;
+
+ @Schema(description = "用户类型(sys_user系统用户)")
+ private String userType;
+
+ @Schema(description = "用户邮箱")
+ private String email;
+
+ @Schema(description = "手机号码")
+ private String phonenumber;
+
+ @Schema(description = "用户性别")
+ private String sex;
+
+ @Schema(description = "账号状态(0正常 1停用)")
+ private String status;
+
+ @Schema(description = "删除标志(0代表存在 1代表删除)")
+ private String delFlag;
+
+ @Schema(description = "备注")
+ private String remark;
+
+ @Schema(description = "登录账号")
+ private String loginName;
+
+ @Schema(description = "用户类型")
+ private String type;
+
+ @Schema(description = "执法证件号")
+ private String lawCertificateNum;
+
+ @Schema(description = "姓名")
+ private String fullname;
+
+ @Schema(description = "是否删除 (0否;1是)")
+ private String isDeleted;
+
+ @Schema(description = "是否禁用 (0否;1是)")
+ private String isDisabled;
+
+ @Schema(description = "创建日期(时间戳)")
+ private String createAt;
+
+ @Schema(description = "更新日期(时间戳)")
+ private String updateAt;
+
+ @Schema(description = "创建时间")
+ private Date createTime;
+
+ @Schema(description = "更新时间")
+ private Date updateTime;
+
+ @Schema(description = "加密备注二")
+ private String cryptoRemarkTwo;
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpPlanMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpPlanMapper.java
index 06166998..e7bad040 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpPlanMapper.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpPlanMapper.java
@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zdxt.enforcementcode.domain.EfcodeCpPlan;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpPlanBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpPlanVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangPlanSyncVo;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.Date;
+
/**
* 行政执法检查计划-计划Mapper接口
*
@@ -35,4 +38,18 @@ public interface EfcodeCpPlanMapper extends BaseMapperPlus selectSyncPage(Page page,
+ @Param("areaCode") String areaCode,
+ @Param("startTime") Date startTime,
+ @Param("endTime") Date endTime);
+
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnterpriseComplaintMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnterpriseComplaintMapper.java
index eeb4c235..1ce9c3f9 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnterpriseComplaintMapper.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnterpriseComplaintMapper.java
@@ -1,9 +1,14 @@
package com.zdxt.enforcementcode.mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zdxt.enforcementcode.domain.EnterpriseComplaint;
import com.zdxt.enforcementcode.domain.vo.EnterpriseComplaintVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangComplaintSyncVo;
+import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.Date;
+
/**
* 企业执法-在线投诉Mapper接口
*
@@ -19,4 +24,19 @@ public interface EnterpriseComplaintMapper extends BaseMapperPlus只要投诉关联的执法单位中有一个属于该区域即计入
+ *
+ * @param page 分页参数
+ * @param areaCode 行政区编码(dashboard_area_info.code)
+ * @param startTime 更新时间起(含),null 不限
+ * @param endTime 更新时间止(含),null 不限
+ * @return 投诉分页数据
+ */
+ Page selectSyncPage(Page page,
+ @Param("areaCode") String areaCode,
+ @Param("startTime") Date startTime,
+ @Param("endTime") Date endTime);
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/LongGangUserQueryMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/LongGangUserQueryMapper.java
new file mode 100644
index 00000000..b5c66b11
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/LongGangUserQueryMapper.java
@@ -0,0 +1,30 @@
+package com.zdxt.enforcementcode.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangUserSyncVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+
+/**
+ * 龙岗外部接口-用户同步查询 Mapper
+ *
+ * @author msy
+ */
+public interface LongGangUserQueryMapper {
+
+ /**
+ * 按所属区域分页查询用户,支持按更新时间区间增量同步
+ *
+ * @param page 分页参数
+ * @param areaCode 龙岗区行政区编码(dashboard_area_info.code)
+ * @param startTime 更新时间起(含),null 不限
+ * @param endTime 更新时间止(含),null 不限
+ * @return 用户分页数据
+ */
+ Page selectUserSyncPage(Page page,
+ @Param("areaCode") String areaCode,
+ @Param("startTime") Date startTime,
+ @Param("endTime") Date endTime);
+
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java
index b3af85be..6a7da0eb 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IDashboardAreaInfoService.java
@@ -72,4 +72,6 @@ public interface IDashboardAreaInfoService {
List> buildAreaTree();
List getDomainInfo();
+
+ DashboardAreaInfoVo getAreaInfoByCode(String code);
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseComplaintService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseComplaintService.java
index 299cebe3..a1f1bfbe 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseComplaintService.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseComplaintService.java
@@ -3,6 +3,8 @@ package com.zdxt.enforcementcode.service;
import com.zdxt.enforcementcode.domain.MssqOrderFlow;
import com.zdxt.enforcementcode.domain.vo.EnterpriseComplaintVo;
import com.zdxt.enforcementcode.domain.bo.EnterpriseComplaintBo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangComplaintSyncPageVo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryComplaintBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@@ -74,4 +76,13 @@ public interface IEnterpriseComplaintService {
* @return 企业执法-在线投诉
*/
List selectEnterpriseComplaintProcess(String id);
+
+ /**
+ * 分页查询指定区域的企业投诉,支持按更新时间区间增量同步
+ *
+ * @param bo 查询参数(pageNum、pageSize、startTime、endTime)
+ * @param areaCode 行政区编码(dashboard_area_info.code)
+ * @return 投诉分页结果
+ */
+ LongGangComplaintSyncPageVo syncComplaint(LongGangQueryComplaintBo bo, String areaCode);
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangUserQueryService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangUserQueryService.java
new file mode 100644
index 00000000..9a637a18
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ILongGangUserQueryService.java
@@ -0,0 +1,19 @@
+package com.zdxt.enforcementcode.service;
+
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryUserBo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangUserSyncPageVo;
+
+/**
+ * 龙岗外部接口-用户同步查询
+ */
+public interface ILongGangUserQueryService {
+
+ /**
+ * 分页查询龙岗区用户,支持按更新时间区间增量同步。
+ *
+ * @param bo 查询参数(pageNum、pageSize、startTime、endTime)
+ * @param areaCode 龙岗区行政区编码(dashboard_area_info.code)
+ * @return 用户分页结果
+ */
+ LongGangUserSyncPageVo syncUser(LongGangQueryUserBo bo, String areaCode);
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IOutEfcodeCpPlanService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IOutEfcodeCpPlanService.java
index 2d6bd9cc..68ced6e0 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IOutEfcodeCpPlanService.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IOutEfcodeCpPlanService.java
@@ -2,7 +2,9 @@ package com.zdxt.enforcementcode.service;
import com.zdxt.enforcementcode.domain.EfcodeCpReserve;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpPlanBo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryPlanBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpPlanVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangPlanSyncPageVo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.transaction.annotation.Transactional;
@@ -53,6 +55,15 @@ public interface IOutEfcodeCpPlanService {
*/
EfcodeCpPlanVo queryByOutSerialNoAndChannelNo(String outSerialNo, String channelNo);
+ /**
+ * 分页查询指定区域执法单位下已产生任务的计划,支持按更新时间区间增量同步
+ *
+ * @param bo 查询参数(pageNum、pageSize、startTime、endTime)
+ * @param areaCode 行政区编码(dashboard_area_info.code)
+ * @return 计划分页结果
+ */
+ LongGangPlanSyncPageVo syncPlan(LongGangQueryPlanBo bo, String areaCode);
+
/**
* 新增行政执法检查计划-计划
*
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java
index 49fae7f0..ed4df518 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/DashboardAreaInfoServiceImpl.java
@@ -120,5 +120,17 @@ public class DashboardAreaInfoServiceImpl implements IDashboardAreaInfoService {
return dashboardDomainDeptMapper.getDomainInfo();
}
+ @Override
+ public DashboardAreaInfoVo getAreaInfoByCode(String code) {
+ if (StringUtils.isBlank(code)) {
+ return null;
+ }
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(DashboardAreaInfo::getAreaCode, code)
+ .eq(DashboardAreaInfo::getIsDelete, "0")
+ .last("LIMIT 1");
+ return baseMapper.selectVoOne(lqw);
+ }
+
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseComplaintServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseComplaintServiceImpl.java
index 09c848c5..19800569 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseComplaintServiceImpl.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseComplaintServiceImpl.java
@@ -1,12 +1,17 @@
package com.zdxt.enforcementcode.service.impl;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.zdxt.enforcementcode.domain.MssqAddOrder;
import com.zdxt.enforcementcode.domain.MssqOrderFlow;
import com.zdxt.enforcementcode.domain.bo.MssqAddOrderBo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangComplaintSyncPageVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangComplaintSyncVo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryComplaintBo;
import com.zdxt.enforcementcode.service.IMssqApiService;
import org.apache.commons.compress.utils.Lists;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -24,6 +29,7 @@ import com.zdxt.enforcementcode.mapper.EnterpriseComplaintMapper;
import com.zdxt.enforcementcode.service.IEnterpriseComplaintService;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -39,6 +45,10 @@ import java.util.Collection;
@Service
public class EnterpriseComplaintServiceImpl implements IEnterpriseComplaintService {
+ 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 EnterpriseComplaintMapper baseMapper;
private final IMssqApiService mssqApiService;
@@ -195,4 +205,37 @@ public class EnterpriseComplaintServiceImpl implements IEnterpriseComplaintServi
}
return Lists.newArrayList();
}
+
+ @Override
+ public LongGangComplaintSyncPageVo syncComplaint(LongGangQueryComplaintBo bo, String areaCode) {
+ if (bo == null) {
+ bo = new LongGangQueryComplaintBo();
+ }
+ 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);
+
+ Date startTime = parseTime(bo.getStartTime(), "开始时间");
+ Date endTime = parseTime(bo.getEndTime(), "结束时间");
+
+ Page page = baseMapper.selectSyncPage(
+ new Page<>(pageNum, pageSize), areaCode, startTime, endTime);
+
+ LongGangComplaintSyncPageVo vo = new LongGangComplaintSyncPageVo();
+ vo.setPageNum(pageNum);
+ vo.setPageSize(pageSize);
+ vo.setTotal(page.getTotal());
+ vo.setList(page.getRecords());
+ return vo;
+ }
+
+ private Date parseTime(String time, String fieldName) {
+ if (StrUtil.isBlank(time)) {
+ return null;
+ }
+ try {
+ return DateUtil.parse(time);
+ } catch (Exception e) {
+ throw new ServiceException(fieldName + "格式错误,应为 yyyy-MM-dd HH:mm:ss");
+ }
+ }
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangUserQueryServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangUserQueryServiceImpl.java
new file mode 100644
index 00000000..adc64cc6
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/LongGangUserQueryServiceImpl.java
@@ -0,0 +1,70 @@
+package com.zdxt.enforcementcode.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zdxt.enforcementcode.common.util.CommonUtil;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryUserBo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangUserSyncPageVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangUserSyncVo;
+import com.zdxt.enforcementcode.mapper.LongGangUserQueryMapper;
+import com.zdxt.enforcementcode.service.ILongGangUserQueryService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.exception.ServiceException;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * 龙岗外部接口-用户同步查询。
+ * 按所属区域分页查询用户,供第三方按更新时间增量同步。
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class LongGangUserQueryServiceImpl implements ILongGangUserQueryService {
+
+ 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 LongGangUserQueryMapper userQueryMapper;
+
+
+ @Override
+ public LongGangUserSyncPageVo syncUser(LongGangQueryUserBo bo, String areaCode) {
+ 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);
+
+ Date startTime = parseTime(bo.getStartTime(), "开始时间");
+ Date endTime = parseTime(bo.getEndTime(), "结束时间");
+
+ Page page = userQueryMapper.selectUserSyncPage(
+ new Page<>(pageNum, pageSize), areaCode, startTime, endTime);
+
+ // crypto_remark_two 可能存 AES 密文或明文: 明文直接使用, 密文解密后使用.
+ page.getRecords().parallelStream().forEach(record -> {
+ String phone = record.getCryptoRemarkTwo();
+ record.setPhonenumber(CommonUtil.isPhoneEncrypted(phone) ? CommonUtil.decryptPhone(phone) : phone);
+ });
+
+ LongGangUserSyncPageVo vo = new LongGangUserSyncPageVo();
+ vo.setPageNum(pageNum);
+ vo.setPageSize(pageSize);
+ vo.setTotal(page.getTotal());
+ vo.setList(page.getRecords());
+ return vo;
+ }
+
+ private Date parseTime(String time, String fieldName) {
+ if (StrUtil.isBlank(time)) {
+ return null;
+ }
+ try {
+ return DateUtil.parse(time);
+ } catch (Exception e) {
+ throw new ServiceException(fieldName + "格式错误,应为 yyyy-MM-dd HH:mm:ss");
+ }
+ }
+}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/OutEfcodeCpPlanServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/OutEfcodeCpPlanServiceImpl.java
index 218892f5..b84ffd31 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/OutEfcodeCpPlanServiceImpl.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/OutEfcodeCpPlanServiceImpl.java
@@ -1,5 +1,6 @@
package com.zdxt.enforcementcode.service.impl;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -9,10 +10,13 @@ import com.zdxt.enforcementcode.domain.EfcodeCpPlan;
import com.zdxt.enforcementcode.domain.EfcodeCpPlanUsers;
import com.zdxt.enforcementcode.domain.EfcodeCpReserve;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpPlanBo;
+import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryPlanBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpPlanVo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpReserveVo;
import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo;
import com.zdxt.enforcementcode.domain.vo.SsztJbxx110497NewVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangPlanSyncPageVo;
+import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangPlanSyncVo;
import com.zdxt.enforcementcode.mapper.EfcodeCpPlanMapper;
import com.zdxt.enforcementcode.mapper.EfcodeCpPlanUsersMapper;
import com.zdxt.enforcementcode.mapper.EfcodeCpReserveMapper;
@@ -47,6 +51,10 @@ import java.util.stream.Collectors;
@Service
public class OutEfcodeCpPlanServiceImpl implements IOutEfcodeCpPlanService {
+ 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 EfcodeCpPlanMapper baseMapper;
private final EfcodeCpPlanUsersMapper efcodeCpPlanUsersMapper;
private final EfcodeCpReserveMapper efcodeCpReserveMapper;
@@ -1429,4 +1437,34 @@ public class OutEfcodeCpPlanServiceImpl implements IOutEfcodeCpPlanService {
return baseMapper.selectVoOne(lqw);
}
+ @Override
+ public LongGangPlanSyncPageVo syncPlan(LongGangQueryPlanBo bo, String areaCode) {
+ 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);
+
+ Date startTime = parseTime(bo.getStartTime(), "开始时间");
+ Date endTime = parseTime(bo.getEndTime(), "结束时间");
+
+ Page page = baseMapper.selectSyncPage(
+ new Page<>(pageNum, pageSize), areaCode, startTime, endTime);
+
+ LongGangPlanSyncPageVo vo = new LongGangPlanSyncPageVo();
+ vo.setPageNum(pageNum);
+ vo.setPageSize(pageSize);
+ vo.setTotal(page.getTotal());
+ vo.setList(page.getRecords());
+ return vo;
+ }
+
+ private Date parseTime(String time, String fieldName) {
+ if (StringUtils.isBlank(time)) {
+ return null;
+ }
+ try {
+ return DateUtil.parse(time);
+ } catch (Exception e) {
+ throw new ServiceException(fieldName + "格式错误,应为 yyyy-MM-dd HH:mm:ss");
+ }
+ }
+
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpPlanMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpPlanMapper.xml
index e33a905a..683c5457 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpPlanMapper.xml
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpPlanMapper.xml
@@ -125,4 +125,39 @@
ORDER BY cp.plan_date DESC, cp.plan_time DESC
+
+
+
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnterpriseComplaintMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnterpriseComplaintMapper.xml
index 4621fb2e..24924ab3 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnterpriseComplaintMapper.xml
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnterpriseComplaintMapper.xml
@@ -45,4 +45,54 @@
where id = #{id}
+
+
+
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LongGangUserQueryMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LongGangUserQueryMapper.xml
new file mode 100644
index 00000000..6a2dd293
--- /dev/null
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LongGangUserQueryMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+