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 cd4ba449..f694e03c 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; /** @@ -158,12 +159,16 @@ public class EnterpriseComplaint extends BaseEntity { /** * 投诉事项编码 多个逗号隔开 */ + @TableField(exist = false) private String enforceTypeStr; + @TableField(exist = false) private String complaintTypeStr; + @TableField(exist = false) private String createTimeStr; /** * 民生诉求数据处置流程 */ + @TableField(exist = false) private List mssqOrderFlows; } 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 @@ + + + + + + + +