From c47939d7739039542da167a4ade38ec034269673 Mon Sep 17 00:00:00 2001 From: ganhao Date: Thu, 21 May 2026 11:44:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E6=89=A7?= =?UTF-8?q?=E6=B3=95=E7=AB=AF=E4=BC=81=E4=B8=9A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppEnfCarouselBannerController.java | 65 +++++ .../AppEnfNoticeInfoController.java | 109 ++++++++ .../enforcement/AppEnfSystemController.java | 205 +++++++++++++++ .../enforcement/AppEnfTodoItemController.java | 93 +++++++ .../AppEnfducationServicesController.java | 58 +++++ .../app/enforcement/AppSystemController.java | 110 -------- ...va => AppEducationServicesController.java} | 4 +- ...ppEnforcementCarouselBannerController.java | 7 +- .../bean/EnforcementCarouselBanner.java | 21 +- .../domain/bean/SsztJbxx110497New.java | 195 ++++++++++++++ .../bo/EnforcementCarouselBannerBo.java | 28 +- .../domain/bo/EnterpriseInformationBo.java | 2 +- .../bo/QueryEnterpriseInformationListBo.java | 38 +++ .../domain/bo/SsztJbxx110497NewBo.java | 199 ++++++++++++++ .../vo/EnforcementCarouselBannerVo.java | 18 +- .../domain/vo/SsztJbxx110497NewVo.java | 243 ++++++++++++++++++ .../EnforcementEducationServicesMapper.java | 11 +- .../mapper/SsztJbxx110497NewMapper.java | 15 ++ .../IEnterpriseInformationService.java | 9 + .../service/ISsztJbxx110497NewService.java | 76 ++++++ .../impl/AppEnfLoginServiceImpl.java | 1 + .../EnforcementCarouselBannerServiceImpl.java | 7 +- ...forcementEducationServicesServiceImpl.java | 66 +++-- .../EnterpriseInformationServiceImpl.java | 137 +++++++++- .../impl/SsztJbxx110497NewServiceImpl.java | 191 ++++++++++++++ .../EnforcementEducationServicesMapper.xml | 15 +- .../system/domain/bo/QuerySysUserBo.java | 6 + .../resources/mapper/system/SysUserMapper.xml | 7 +- 28 files changed, 1764 insertions(+), 172 deletions(-) create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfNoticeInfoController.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfducationServicesController.java delete mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java rename zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/{EnforcementEducationServicesController.java => AppEducationServicesController.java} (96%) create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/SsztJbxx110497New.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/QueryEnterpriseInformationListBo.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SsztJbxx110497NewBo.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SsztJbxx110497NewVo.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SsztJbxx110497NewMapper.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISsztJbxx110497NewService.java create mode 100644 zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SsztJbxx110497NewServiceImpl.java diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java new file mode 100644 index 00000000..fcece429 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java @@ -0,0 +1,65 @@ +package com.zdxt.enforcementcode.controller.app.enforcement; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.zdxt.enforcementcode.domain.bo.EnforcementCarouselBannerBo; +import com.zdxt.enforcementcode.domain.vo.EnforcementCarouselBannerVo; +import com.zdxt.enforcementcode.service.IEnforcementCarouselBannerService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * 执法端-轮播公告信息 + * + * @author Lion Li + * @date 2026-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app-ent/enterprise/carouselBanner") +public class AppEnfCarouselBannerController extends BaseController { + + private final IEnforcementCarouselBannerService enforcementCarouselBannerService; + + /** + * 执法端-查询轮播公告信息列表 + */ + @SaCheckPermission("enforcementcode:carouselBanner:list") + @GetMapping("/list") + public TableDataInfo list(EnforcementCarouselBannerBo bo, PageQuery pageQuery) { + // 设置默认查询平台:企业端(0) 和 执法端(2) + if (bo.getTargetPlatforms() == null || bo.getTargetPlatforms().isEmpty()) { + bo.setTargetPlatforms(Arrays.asList(0, 2)); + } + return enforcementCarouselBannerService.queryPageList(bo, pageQuery); + } + + /** + * 执法端-获取轮播公告信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("enforcementcode:carouselBanner:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String id) { + return R.ok(enforcementCarouselBannerService.queryById(id)); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfNoticeInfoController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfNoticeInfoController.java new file mode 100644 index 00000000..2987f449 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfNoticeInfoController.java @@ -0,0 +1,109 @@ +package com.zdxt.enforcementcode.controller.app.enforcement; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.zdxt.enforcementcode.domain.bo.SysNoticeInfoBo; +import com.zdxt.enforcementcode.domain.bo.enterprise.EnterpriseNoticeListInfoBo; +import com.zdxt.enforcementcode.domain.vo.SysNoticeInfoVo; +import com.zdxt.enforcementcode.service.ISysNoticeInfoService; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 执法端-系统公告信息 + * + * @author Lion Li + * @date 2026-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app-enf/enforcement/noticeInfo") +public class AppEnfNoticeInfoController extends BaseController { + + private final ISysNoticeInfoService sysNoticeInfoService; + + /** + * 企业端-系统公告信息主列表 + * @param bo + * @return + */ + @PostMapping("/queryNoticeContentList") + public R> queryNoticeContentList(@RequestBody EnterpriseNoticeListInfoBo bo) { + bo.setEffectiveStatus(Integer.valueOf(1));//1-有效 + List noticeList = sysNoticeInfoService.queryNoticeContentList(bo); + return R.ok(noticeList); + } + + + /** + * 查询系统公告信息主列表 + */ + @SaCheckPermission("enforcementcode:noticeInfo:list") + @GetMapping("/list") + public TableDataInfo list(SysNoticeInfoBo bo, PageQuery pageQuery) { + return sysNoticeInfoService.queryPageList(bo, pageQuery); + } + + + + /** + * 获取系统公告信息主详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("enforcementcode:noticeInfo:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String id) { + return R.ok(sysNoticeInfoService.queryById(id)); + } + + /** + * 新增系统公告信息主 + */ + @SaCheckPermission("enforcementcode:noticeInfo:add") + @Log(title = "系统公告信息主", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysNoticeInfoBo bo) { + return toAjax(sysNoticeInfoService.insertByBo(bo)); + } + + /** + * 修改系统公告信息主 + */ + @SaCheckPermission("enforcementcode:noticeInfo:edit") + @Log(title = "系统公告信息主", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysNoticeInfoBo bo) { + return toAjax(sysNoticeInfoService.updateByBo(bo)); + } + + /** + * 删除系统公告信息主 + * + * @param ids 主键串 + */ + @SaCheckPermission("enforcementcode:noticeInfo:remove") + @Log(title = "系统公告信息主", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable String[] ids) { + return toAjax(sysNoticeInfoService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java new file mode 100644 index 00000000..f1f8f7c7 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java @@ -0,0 +1,205 @@ +package com.zdxt.enforcementcode.controller.app.enforcement; + + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.IdUtil; +import com.zdxt.enforcementcode.common.config.SrnwgConfig; +import com.zdxt.enforcementcode.common.util.IdCardCryptoUtil; +import com.zdxt.enforcementcode.common.util.PasswordTools; +import com.zdxt.enforcementcode.domain.EnterpriseInformation; +import com.zdxt.enforcementcode.domain.bo.EnterpriseInformationBo; +import com.zdxt.enforcementcode.domain.bo.QueryEnterpriseInformationListBo; +import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo; +import com.zdxt.enforcementcode.domain.vo.EnterpriseSearchVo; +import com.zdxt.enforcementcode.domain.vo.SsztJbxx110497NewVo; +import com.zdxt.enforcementcode.service.IEnterpriseInformationService; +import com.zdxt.enforcementcode.service.ISsztJbxx110497NewService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.QuerySysUserBo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 执法端-共用方法类 + * @Author: kylin + * @Date: 2024/5/1 3:00 下午 + * @Version: 1.0 + * @Desc: TODO + */ +@Slf4j +@Controller +@RequestMapping("/app-enf/app") +public class AppEnfSystemController extends BaseController { + + @Autowired + private ISysUserService userService; + + @Autowired + private SrnwgConfig srnwgConfig; + + @Autowired + private IEnterpriseInformationService enterpriseInformationService; + + @Autowired + private ISsztJbxx110497NewService ssztJbxx110497NewService; + + /** + * 监督端查询执法人员&非执法人员 + * 排除admin和手机号码为空的数据) + * + * @param user 查询条件 + * @param pageQuery 分页参数 + * @return 分页结果 + */ + @PostMapping("/selectUserListByHave") + @ResponseBody + public TableDataInfo selectUserListByHave(QuerySysUserBo user, PageQuery pageQuery) { + // 初始化 params,避免空指针异常 + if (user.getParams() == null) { + user.setParams(new java.util.HashMap<>()); + } + + // 设置排除的用户ID列表 + if (null != user.getNotUserId()) { + user.getParams().put("notUserIds", Convert.toStrArray(user.getNotUserId())); + } + + // 设置是否显示执法证号标识 + if (null != user.getIsShowCardId()) { + user.getParams().put("showCardId", user.getIsShowCardId()); + } + + // 清空部门ID过滤 + user.setDeptId(null); + + // 调用 Service 层获取分页数据 + TableDataInfo result = userService.selectUserListByHave(user, pageQuery); + List list = result.getRows(); + + // 解密手机号 + if (list != null && !list.isEmpty()) { + decryptPhoneNumbers(list); + } + + return result; + } + + /** + * 批量解密用户手机号 + * + * @param userList 用户列表 + */ + private void decryptPhoneNumbers(List userList) { + String secretKey = srnwgConfig.getSecretKey(); + userList.forEach(user -> { + if (StringUtils.isEmpty(user.getPhonenumber())) { + return; + } + + // 纯数字表示未加密,直接使用 + if (user.getPhonenumber().matches("^\\d+$")) { + return; + } + + // 尝试解密手机号 + try { + String decryptPhone = IdCardCryptoUtil.symmetricDecryptIdCard(secretKey, user.getPhonenumber()); + user.setPhonenumber(decryptPhone); + } catch (Exception e) { + // 解密失败,保持原值 + log.warn("手机号解密失败: {}", user.getPhonenumber(), e); + } + }); + } + + + + /** + * 查询企业信息以及二维码地址(支持分页) + * 当输入完整统一社会信用代码时(enterpriseNumber、searchValue),若企业业务表无该企业信息, + * 则会向市监表查询,市监表存在,则会将该企业信息添加至企业业务表,并生成二维码 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分页结果 + */ + @PostMapping("/queryListAndQrInfo") + @ResponseBody + public TableDataInfo queryListAndQrInfo(QueryEnterpriseInformationListBo bo, PageQuery pageQuery) { + // 将 QueryEnterpriseInformationListBo 转换为 EnterpriseInformationBo + EnterpriseInformationBo enterpriseBo = new EnterpriseInformationBo(); + enterpriseBo.setEnterpriseName(bo.getEnterpriseName()); + enterpriseBo.setEnterpriseNumber(bo.getEnterpriseNumber()); + enterpriseBo.setSearchValue(bo.getSearchValue()); + + // 判断是否为完整的统一社会信用代码查询(18位) + String creditCode = StringUtils.isNotBlank(bo.getEnterpriseNumber()) + ? bo.getEnterpriseNumber() + : bo.getSearchValue(); + + if (StringUtils.isNotBlank(creditCode) && creditCode.length() == 18) { + // 检查企业业务表中是否存在该企业 + EnterpriseInformationVo existingEnterprise = enterpriseInformationService.queryByEnterpriseNumber(creditCode); + + if (existingEnterprise == null) { + // 企业业务表不存在,查询市监表 + List ssztJbxx110497NewListVo = ssztJbxx110497NewService.queryByTyshxydm(creditCode); + + if (CollectionUtil.isNotEmpty(ssztJbxx110497NewListVo)) { + SsztJbxx110497NewVo ssztInfo = ssztJbxx110497NewListVo.get(0); + + // 创建企业信息对象,将市监数据转换为企业业务数据 + EnterpriseInformation newEnterpriseInfo = new EnterpriseInformation(); + + // 基本信息映射 + newEnterpriseInfo.setEnterpriseName(ssztInfo.getQymc()); // 企业名称 + newEnterpriseInfo.setEnterpriseNumber(ssztInfo.getTyshxydm()); // 统一社会信用代码 + newEnterpriseInfo.setEnterpriseType(ssztInfo.getSsztlx()); // 企业类型(商事主体类型) + newEnterpriseInfo.setEnterpriseAddress(ssztInfo.getJycs()); // 企业地址(经营场所) + newEnterpriseInfo.setLegalPerson(ssztInfo.getFddbr()); // 法定代表人 + newEnterpriseInfo.setRegisteredCapital(ssztInfo.getZczb() != null ? String.valueOf(ssztInfo.getZczb()) : null); // 注册资本 + newEnterpriseInfo.setBusinessScope(ssztInfo.getJyfw()); // 经营范围 + newEnterpriseInfo.setCompanyOrgType(ssztInfo.getHyml()); // 公司组织类型(行业门类) + newEnterpriseInfo.setIndustry(ssztInfo.getHydm()); // 行业代码 + if (StringUtils.isNotBlank(ssztInfo.getClrq())) { + try { + // 成立日期格式转换(假设格式为 yyyy-MM-dd) + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd"); + newEnterpriseInfo.setEstablishmentTime(sdf.parse(ssztInfo.getClrq())); + } catch (Exception e) { + log.warn("成立日期格式转换失败: {}", ssztInfo.getClrq(), e); + } + } + + // 营业期限处理 + if (StringUtils.isNotBlank(ssztInfo.getJyqxq()) && StringUtils.isNotBlank(ssztInfo.getJyqxz())) { + newEnterpriseInfo.setOperatingTerm(ssztInfo.getJyqxq() + "至" + ssztInfo.getJyqxz()); + } + + // 插入企业业务表 + enterpriseInformationService.insertEnterpriseInformation(newEnterpriseInfo); + + } else { + log.warn("统一社会信用代码[{}]在市监表中未找到", creditCode); + } + } + } + + // 执行分页查询 + return enterpriseInformationService.queryPageList(enterpriseBo, pageQuery); + } + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java new file mode 100644 index 00000000..c5f37dff --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java @@ -0,0 +1,93 @@ +package com.zdxt.enforcementcode.controller.app.enforcement; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.zdxt.enforcementcode.domain.bo.TodoItemBo; +import com.zdxt.enforcementcode.domain.vo.TodoItemVo; +import com.zdxt.enforcementcode.domain.vo.TodoStatisticsVo; +import com.zdxt.enforcementcode.service.IEnforcementEducationServicesService; +import com.zdxt.enforcementcode.service.ITodoItemService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 执法端-待办事项 + * + * @author Lion Li + * @date 2026-05-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app-enf/enforcement/todoitem") +public class AppEnfTodoItemController extends BaseController { + + private final ITodoItemService todoItemService; + + private final IEnforcementEducationServicesService educationServicesService; + + /** + * 查询待办事项列表 + */ + @SaCheckPermission("enforcementcode:item:list") + @GetMapping("/list") + public TableDataInfo list(TodoItemBo bo, PageQuery pageQuery) { + return todoItemService.queryPageList(bo, pageQuery); + } + + + /** + * 获取待办事项详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("enforcementcode:item:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String id) { + return R.ok(todoItemService.queryById(id)); + } + + + /** + * 获取待办个数 + * 返回普法服务、执法评价、执法预告的未读个数及总数 + */ + @GetMapping("/statisticsUnReadCount") + public R statisticsUnReadCount() { + TodoStatisticsVo statistics = new TodoStatisticsVo(); + + // 1. 统计普法服务未读个数 + Long pffwCount = educationServicesService.countUnreadEducationServices(); + statistics.setPffwCount(pffwCount != null ? pffwCount : 0L); + + // 2. 执法评价未读个数(暂时默认为0) + statistics.setZfpjCount(0L); + + // 3. 执法预告未读个数(暂时默认为0) + statistics.setZfygCount(0L); + + // 4. 计算总未读个数 + Long totalCount = statistics.getPffwCount() + + statistics.getZfpjCount() + + statistics.getZfygCount(); + statistics.setTotalCount(totalCount); + + return R.ok(statistics); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfducationServicesController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfducationServicesController.java new file mode 100644 index 00000000..3098d740 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfducationServicesController.java @@ -0,0 +1,58 @@ +package com.zdxt.enforcementcode.controller.app.enforcement; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.zdxt.enforcementcode.domain.bo.EnforcementEducationServicesBo; +import com.zdxt.enforcementcode.domain.vo.EnforcementEducationServicesVo; +import com.zdxt.enforcementcode.service.IEnforcementEducationServicesService; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 执法端-普法服务 + * + * @author Lion Li + * @date 2026-05-09 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app-enf/enforcementcode/educationServices") +public class AppEnfducationServicesController extends BaseController { + + private final IEnforcementEducationServicesService enforcementEducationServicesService; + + /** + * 查询普法服务发布主列表 + */ + @SaCheckPermission("enforcementcode:educationServices:list") + @GetMapping("/list") + public TableDataInfo list(EnforcementEducationServicesBo bo, PageQuery pageQuery) { + return enforcementEducationServicesService.queryPageList(bo, pageQuery); + } + + /** + * 获取普法服务发布主详细信息 + * + * @param id 主键 + */ + @GetMapping("/details") + public R getInfo(String id) { + return R.ok(enforcementEducationServicesService.queryById(id)); + } + + /** + * 统计当前用户企业的普法未读个数 + */ + @GetMapping("/unreadCount") + public R getUnreadCount() { + Long unreadCount = enforcementEducationServicesService.countUnreadEducationServices(); + return R.ok(unreadCount); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java deleted file mode 100644 index c398d4ca..00000000 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.zdxt.enforcementcode.controller.app.enforcement; - - -import cn.hutool.core.convert.Convert; -import com.zdxt.enforcementcode.common.config.SrnwgConfig; -import com.zdxt.enforcementcode.common.util.IdCardCryptoUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.web.core.BaseController; -import org.dromara.system.domain.bo.QuerySysUserBo; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import java.util.List; - -/** - * 执法端共用方法类 - * @Author: kylin - * @Date: 2024/5/1 3:00 下午 - * @Version: 1.0 - * @Desc: TODO - */ -@Slf4j -@Controller -@RequestMapping("/app-enf/app") -public class AppSystemController extends BaseController { - - @Autowired - private ISysUserService userService; - - @Autowired - private SrnwgConfig srnwgConfig; - - /** - * 监督端查询执法人员&非执法人员 - * 排除admin和手机号码为空的数据) - * - * @param user 查询条件 - * @param pageQuery 分页参数 - * @return 分页结果 - */ - @PostMapping("/selectUserListByHave") - @ResponseBody - public TableDataInfo selectUserListByHave(QuerySysUserBo user, PageQuery pageQuery) { - // 初始化 params,避免空指针异常 - if (user.getParams() == null) { - user.setParams(new java.util.HashMap<>()); - } - - // 设置排除的用户ID列表 - if (null != user.getNotUserId()) { - user.getParams().put("notUserIds", Convert.toStrArray(user.getNotUserId())); - } - - // 设置是否显示执法证号标识 - if (null != user.getIsShowCardId()) { - user.getParams().put("showCardId", user.getIsShowCardId()); - } - - // 清空部门ID过滤 - user.setDeptId(null); - - // 调用 Service 层获取分页数据 - TableDataInfo result = userService.selectUserListByHave(user, pageQuery); - List list = result.getRows(); - - // 解密手机号 - if (list != null && !list.isEmpty()) { - decryptPhoneNumbers(list); - } - - return result; - } - - /** - * 批量解密用户手机号 - * - * @param userList 用户列表 - */ - private void decryptPhoneNumbers(List userList) { - String secretKey = srnwgConfig.getSecretKey(); - userList.forEach(user -> { - if (StringUtils.isEmpty(user.getPhonenumber())) { - return; - } - - // 纯数字表示未加密,直接使用 - if (user.getPhonenumber().matches("^\\d+$")) { - return; - } - - // 尝试解密手机号 - try { - String decryptPhone = IdCardCryptoUtil.symmetricDecryptIdCard(secretKey, user.getPhonenumber()); - user.setPhonenumber(decryptPhone); - } catch (Exception e) { - // 解密失败,保持原值 - log.warn("手机号解密失败: {}", user.getPhonenumber(), e); - } - }); - } - -} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEducationServicesController.java similarity index 96% rename from zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java rename to zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEducationServicesController.java index 08ab292b..2be39be4 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEducationServicesController.java @@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Arrays; + /** * 企业端-普法服务 * @@ -28,7 +30,7 @@ import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @RestController @RequestMapping("/app-ent/enforcementcode/educationServices") -public class EnforcementEducationServicesController extends BaseController { +public class AppEducationServicesController extends BaseController { private final IEnforcementEducationServicesService enforcementEducationServicesService; diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnforcementCarouselBannerController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnforcementCarouselBannerController.java index ee3ac8de..cbc48725 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnforcementCarouselBannerController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnforcementCarouselBannerController.java @@ -1,5 +1,6 @@ package com.zdxt.enforcementcode.controller.app.enterprise; +import java.util.Arrays; import java.util.List; import lombok.RequiredArgsConstructor; @@ -43,8 +44,10 @@ public class AppEnforcementCarouselBannerController extends BaseController { @SaCheckPermission("enforcementcode:carouselBanner:list") @GetMapping("/list") public TableDataInfo list(EnforcementCarouselBannerBo bo, PageQuery pageQuery) { - - //LoginHelper.getLoginUser(); + // 设置默认查询平台:企业端(0) 和 企业端(1) + if (bo.getTargetPlatforms() == null || bo.getTargetPlatforms().isEmpty()) { + bo.setTargetPlatforms(Arrays.asList(0, 1)); + } return enforcementCarouselBannerService.queryPageList(bo, pageQuery); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/EnforcementCarouselBanner.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/EnforcementCarouselBanner.java index 72d1e506..307b5fd4 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/EnforcementCarouselBanner.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/EnforcementCarouselBanner.java @@ -34,20 +34,21 @@ public class EnforcementCarouselBanner extends BaseEntity { */ private String title; + /** * 发布平台 0-全部 1-企业端 2-执法端 3-监督端 */ - private Long targetPlatform; - + private Integer targetPlatform; + /** - * 橱窗/轮播位,如“橱窗1” + * 橱窗/轮播位,如"橱窗1" */ - private Long carouselPosition; - + private Integer carouselPosition; + /** * 显示天数,0表示永久显示 */ - private Long displayDays; + private Integer displayDays; /** * 有效时间(由发布时间+显示天数计算,默认为空) @@ -67,7 +68,7 @@ public class EnforcementCarouselBanner extends BaseEntity { /** * 排序号,数值越小越靠前 */ - private Long sort; + private Integer sort; /** * 内容(富文本内容) @@ -77,17 +78,17 @@ public class EnforcementCarouselBanner extends BaseEntity { /** * 状态 1-待发布 2-已发布 3-已下架 */ - private Long status; + private Integer status; /** * 类型 0-富文本 1-外部链接 */ - private Long type; + private Integer type; /** * 是否删除 0=否 1=是 */ - private Long isDelete; + private Integer isDelete; /** * 备注 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/SsztJbxx110497New.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/SsztJbxx110497New.java new file mode 100644 index 00000000..feeb4f51 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/SsztJbxx110497New.java @@ -0,0 +1,195 @@ +package com.zdxt.enforcementcode.domain.bean; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 【请填写功能名称】对象 sszt_jbxx110497_new + * + * @author Lion Li + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sszt_jbxx110497_new") +public class SsztJbxx110497New extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 经营范围 + */ + private String jyfw; + + /** + * 注册资本 + */ + private Long zczb; + + /** + * 房屋编码 + */ + private String fwbm; + + /** + * 企业状态 + */ + private String yyzt; + + /** + * 商事主体类型 + */ + private String ssztlx; + + /** + * 年度报告信息 + */ + private String ndbgxx; + + /** + * 备用字段1 + */ + private String byzd1; + + /** + * 备注 + */ + private String bz; + + /** + * 注册号 + */ + private String zch; + + /** + * 成立日期 + */ + private String clrq; + + /** + * 年检情况 + */ + private String njqk; + + /** + * 经营场所 + */ + private String jycs; + + /** + * 组织机构代码 + */ + private String zzjgdm; + + /** + * 币种 + */ + private String bizhong; + + /** + * 行业代码 + */ + private String hydm; + + /** + * 备用字段3 + */ + private String byzd3; + + /** + * 备用字段2 + */ + private String byzd2; + + /** + * 核准/备案日期 + */ + private String hzrq; + + /** + * 经营期限起 + */ + private String jyqxq; + + /** + * 经营期限止 + */ + private String jyqxz; + + /** + * 统一社会信用代码 + */ + private String tyshxydm; + + /** + * 申报实收资本 + */ + private Long sbsszb; + + /** + * 身份证号 + */ + private String swzh; + + /** + * 法定代表人/负责人 + */ + private String fddbr; + + /** + * 隶属企业注册号 + */ + private String lsqyzch; + + /** + * 隶属企业名称 + */ + private String lsqymc; + + /** + * 行业门类 + */ + private String hyml; + + /** + * 企业名称 + */ + private String qymc; + + /** + * 唯一编码 + */ + private String recordid; + + /** + * 登记机构代号 + */ + private String djjgdh; + + /** + * 主体身份代码 + */ + private String pripid; + + /** + * 系统内部INS + */ + private Long ins; + + /** + * 系统内部SEQ + */ + private Long seq; + + /** + * + */ + private Long updatestatus; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java index f37d5714..f26056bb 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; /** @@ -36,18 +37,23 @@ public class EnforcementCarouselBannerBo extends BaseEntity { /** * 发布平台 0-全部 1-企业端 2-执法端 3-监督端 */ - - private Long targetPlatform; - + + private Integer targetPlatform; + /** - * 橱窗/轮播位,如“橱窗1” + * 发布平台列表(支持多平台查询) */ - private Long carouselPosition; - + private List targetPlatforms; + + /** + * 橱窗/轮播位,如"橱窗1" + */ + private Integer carouselPosition; + /** * 显示天数,0表示永久显示 */ - private Long displayDays; + private Integer displayDays; /** * 有效时间(由发布时间+显示天数计算,默认为空) @@ -67,7 +73,7 @@ public class EnforcementCarouselBannerBo extends BaseEntity { /** * 排序号,数值越小越靠前 */ - private Long sort; + private Integer sort; /** * 内容(富文本内容) @@ -77,17 +83,17 @@ public class EnforcementCarouselBannerBo extends BaseEntity { /** * 状态 1-待发布 2-已发布 3-已下架 */ - private Long status; + private Integer status; /** * 类型 0-富文本 1-外部链接 */ - private Long type; + private Integer type; /** * 是否删除 0=否 1=是 */ - private Long isDelete; + private Integer isDelete; /** * 备注 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnterpriseInformationBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnterpriseInformationBo.java index f6868614..9ae7d0d6 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnterpriseInformationBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnterpriseInformationBo.java @@ -81,7 +81,7 @@ public class EnterpriseInformationBo extends BaseEntity { /** * 部门ID */ - private Long deptId; + private String deptId; /** * 二维码id diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/QueryEnterpriseInformationListBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/QueryEnterpriseInformationListBo.java new file mode 100644 index 00000000..5132347a --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/QueryEnterpriseInformationListBo.java @@ -0,0 +1,38 @@ +package com.zdxt.enforcementcode.domain.bo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 企业端-企业信息对象 enterprise_information + * + * @author Lion Li + * @date 2026-04-10 + */ +@Data +public class QueryEnterpriseInformationListBo implements Serializable { + + /** + * 企业名称 + */ + private String enterpriseName; + + /** + * 企业纳税识别号 + */ + private String enterpriseNumber; + + + /** + * 综合搜索字段 + */ + private String searchValue; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SsztJbxx110497NewBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SsztJbxx110497NewBo.java new file mode 100644 index 00000000..1e8b8924 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SsztJbxx110497NewBo.java @@ -0,0 +1,199 @@ +package com.zdxt.enforcementcode.domain.bo; + + +import com.zdxt.enforcementcode.domain.bean.SsztJbxx110497New; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 【请填写功能名称】业务对象 sszt_jbxx110497_new + * + * @author Lion Li + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SsztJbxx110497New.class, reverseConvertGenerate = false) +public class SsztJbxx110497NewBo extends BaseEntity { + + /** + * 经营范围 + */ + private String jyfw; + + /** + * 注册资本 + */ + private Long zczb; + + /** + * 房屋编码 + */ + private String fwbm; + + /** + * 企业状态 + */ + private String yyzt; + + /** + * 商事主体类型 + */ + private String ssztlx; + + /** + * 年度报告信息 + */ + private String ndbgxx; + + /** + * 备用字段1 + */ + private String byzd1; + + /** + * 备注 + */ + private String bz; + + /** + * 注册号 + */ + private String zch; + + /** + * 成立日期 + */ + private String clrq; + + /** + * 年检情况 + */ + private String njqk; + + /** + * 经营场所 + */ + private String jycs; + + /** + * 组织机构代码 + */ + private String zzjgdm; + + /** + * 币种 + */ + private String bizhong; + + /** + * 行业代码 + */ + private String hydm; + + /** + * 备用字段3 + */ + private String byzd3; + + /** + * 备用字段2 + */ + private String byzd2; + + /** + * 核准/备案日期 + */ + private String hzrq; + + /** + * 经营期限起 + */ + private String jyqxq; + + /** + * 经营期限止 + */ + private String jyqxz; + + /** + * 统一社会信用代码 + */ + private String tyshxydm; + + /** + * 申报实收资本 + */ + private Long sbsszb; + + /** + * 身份证号 + */ + private String swzh; + + /** + * 法定代表人/负责人 + */ + private String fddbr; + + /** + * 隶属企业注册号 + */ + private String lsqyzch; + + /** + * 隶属企业名称 + */ + private String lsqymc; + + /** + * 行业门类 + */ + private String hyml; + + /** + * 企业名称 + */ + private String qymc; + + /** + * 唯一编码 + */ + @NotBlank(message = "唯一编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String recordid; + + /** + * 登记机构代号 + */ + private String djjgdh; + + /** + * 主体身份代码 + */ + private String pripid; + + /** + * 系统内部INS + */ + @NotNull(message = "系统内部INS不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long ins; + + /** + * 系统内部SEQ + */ + @NotNull(message = "系统内部SEQ不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long seq; + + /** + * + */ + @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long updatestatus; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementCarouselBannerVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementCarouselBannerVo.java index 211a7b23..d5df6a7b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementCarouselBannerVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementCarouselBannerVo.java @@ -45,19 +45,19 @@ public class EnforcementCarouselBannerVo implements Serializable { * 发布平台 0-全部 1-企业端 2-执法端 3-监督端 */ @ExcelProperty(value = "发布平台 0-全部 1-企业端 2-执法端 3-监督端") - private Long targetPlatform; + private Integer targetPlatform; /** - * 橱窗/轮播位,如“橱窗1” + * 橱窗/轮播位,如"橱窗1" */ - @ExcelProperty(value = "橱窗/轮播位,如“橱窗1”") - private Long carouselPosition; + @ExcelProperty(value = "橱窗/轮播位,如橱窗1") + private Integer carouselPosition; /** * 显示天数,0表示永久显示 */ @ExcelProperty(value = "显示天数,0表示永久显示") - private Long displayDays; + private Integer displayDays; /** * 有效时间(由发布时间+显示天数计算,默认为空) @@ -82,7 +82,7 @@ public class EnforcementCarouselBannerVo implements Serializable { * 排序号,数值越小越靠前 */ @ExcelProperty(value = "排序号,数值越小越靠前") - private Long sort; + private Integer sort; /** * 内容(富文本内容) @@ -94,19 +94,19 @@ public class EnforcementCarouselBannerVo implements Serializable { * 状态 1-待发布 2-已发布 3-已下架 */ @ExcelProperty(value = "状态 1-待发布 2-已发布 3-已下架") - private Long status; + private Integer status; /** * 类型 0-富文本 1-外部链接 */ @ExcelProperty(value = "类型 0-富文本 1-外部链接") - private Long type; + private Integer type; /** * 是否删除 0=否 1=是 */ @ExcelProperty(value = "是否删除 0=否 1=是") - private Long isDelete; + private Integer isDelete; /** * 备注 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SsztJbxx110497NewVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SsztJbxx110497NewVo.java new file mode 100644 index 00000000..c3b70426 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SsztJbxx110497NewVo.java @@ -0,0 +1,243 @@ +package com.zdxt.enforcementcode.domain.vo; + + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.zdxt.enforcementcode.domain.bean.SsztJbxx110497New; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 【请填写功能名称】视图对象 sszt_jbxx110497_new + * + * @author Lion Li + * @date 2026-05-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SsztJbxx110497New.class) +public class SsztJbxx110497NewVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 经营范围 + */ + @ExcelProperty(value = "经营范围") + private String jyfw; + + /** + * 注册资本 + */ + @ExcelProperty(value = "注册资本") + private Long zczb; + + /** + * 房屋编码 + */ + @ExcelProperty(value = "房屋编码") + private String fwbm; + + /** + * 企业状态 + */ + @ExcelProperty(value = "企业状态") + private String yyzt; + + /** + * 商事主体类型 + */ + @ExcelProperty(value = "商事主体类型") + private String ssztlx; + + /** + * 年度报告信息 + */ + @ExcelProperty(value = "年度报告信息") + private String ndbgxx; + + /** + * 备用字段1 + */ + @ExcelProperty(value = "备用字段1") + private String byzd1; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String bz; + + /** + * 注册号 + */ + @ExcelProperty(value = "注册号") + private String zch; + + /** + * 成立日期 + */ + @ExcelProperty(value = "成立日期") + private String clrq; + + /** + * 年检情况 + */ + @ExcelProperty(value = "年检情况") + private String njqk; + + /** + * 经营场所 + */ + @ExcelProperty(value = "经营场所") + private String jycs; + + /** + * 组织机构代码 + */ + @ExcelProperty(value = "组织机构代码") + private String zzjgdm; + + /** + * 币种 + */ + @ExcelProperty(value = "币种") + private String bizhong; + + /** + * 行业代码 + */ + @ExcelProperty(value = "行业代码") + private String hydm; + + /** + * 备用字段3 + */ + @ExcelProperty(value = "备用字段3") + private String byzd3; + + /** + * 备用字段2 + */ + @ExcelProperty(value = "备用字段2") + private String byzd2; + + /** + * 核准/备案日期 + */ + @ExcelProperty(value = "核准/备案日期 ") + private String hzrq; + + /** + * 经营期限起 + */ + @ExcelProperty(value = "经营期限起") + private String jyqxq; + + /** + * 经营期限止 + */ + @ExcelProperty(value = "经营期限止") + private String jyqxz; + + /** + * 统一社会信用代码 + */ + @ExcelProperty(value = "统一社会信用代码") + private String tyshxydm; + + /** + * 申报实收资本 + */ + @ExcelProperty(value = "申报实收资本") + private Long sbsszb; + + /** + * 身份证号 + */ + @ExcelProperty(value = "身份证号") + private String swzh; + + /** + * 法定代表人/负责人 + */ + @ExcelProperty(value = "法定代表人/负责人") + private String fddbr; + + /** + * 隶属企业注册号 + */ + @ExcelProperty(value = "隶属企业注册号") + private String lsqyzch; + + /** + * 隶属企业名称 + */ + @ExcelProperty(value = "隶属企业名称") + private String lsqymc; + + /** + * 行业门类 + */ + @ExcelProperty(value = "行业门类") + private String hyml; + + /** + * 企业名称 + */ + @ExcelProperty(value = "企业名称") + private String qymc; + + /** + * 唯一编码 + */ + @ExcelProperty(value = "唯一编码") + private String recordid; + + /** + * 登记机构代号 + */ + @ExcelProperty(value = "登记机构代号") + private String djjgdh; + + /** + * 主体身份代码 + */ + @ExcelProperty(value = "主体身份代码") + private String pripid; + + /** + * 系统内部INS + */ + @ExcelProperty(value = "系统内部INS") + private Long ins; + + /** + * 系统内部SEQ + */ + @ExcelProperty(value = "系统内部SEQ") + private Long seq; + + /** + * + */ + @ExcelProperty(value = "") + private Long updatestatus; + + /** + * + */ + @ExcelProperty(value = "") + private String updatetime; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java index c590f914..73cb199a 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java @@ -24,11 +24,20 @@ public interface EnforcementEducationServicesMapper extends BaseMapperPlus selectReadMessageIds(@Param("messageIds") List messageIds, @Param("companyId") String companyId); + + /** + * 查询已读的消息ID列表(执法端-根据用户ID) + * + * @param messageIds 消息ID列表 + * @param userId 用户ID + * @return 已读的消息ID列表 + */ + List selectReadMessageIdsByUserId(@Param("messageIds") List messageIds, @Param("userId") Long userId); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SsztJbxx110497NewMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SsztJbxx110497NewMapper.java new file mode 100644 index 00000000..9b20cca6 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SsztJbxx110497NewMapper.java @@ -0,0 +1,15 @@ +package com.zdxt.enforcementcode.mapper; + +import com.zdxt.enforcementcode.domain.bean.SsztJbxx110497New; +import com.zdxt.enforcementcode.domain.vo.SsztJbxx110497NewVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 【请填写功能名称】Mapper接口 + * + * @author Lion Li + * @date 2026-05-20 + */ +public interface SsztJbxx110497NewMapper extends BaseMapperPlus { + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseInformationService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseInformationService.java index 4e107f87..285ef35b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseInformationService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseInformationService.java @@ -1,5 +1,6 @@ package com.zdxt.enforcementcode.service; +import com.zdxt.enforcementcode.domain.EnterpriseInformation; import com.zdxt.enforcementcode.domain.bo.EnterpriseInformationBo; import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo; import com.zdxt.enforcementcode.domain.vo.EnterpriseSearchVo; @@ -158,4 +159,12 @@ public interface IEnterpriseInformationService { * @return 搜索结果列表 */ List searchSsztByNumber(String enterpriseNumber); + + /** + * 插入企业信息 + * + * @param enterpriseInformation 企业信息 + * @return 是否插入成功 + */ + int insertEnterpriseInformation(EnterpriseInformation enterpriseInformation); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISsztJbxx110497NewService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISsztJbxx110497NewService.java new file mode 100644 index 00000000..bc33c88f --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISsztJbxx110497NewService.java @@ -0,0 +1,76 @@ +package com.zdxt.enforcementcode.service; + +import com.zdxt.enforcementcode.domain.vo.SsztJbxx110497NewVo; +import com.zdxt.enforcementcode.domain.bo.SsztJbxx110497NewBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 【请填写功能名称】Service接口 + * + * @author Lion Li + * @date 2026-05-20 + */ +public interface ISsztJbxx110497NewService { + + /** + * 查询【请填写功能名称】 + * + * @param jyfw 主键 + * @return 【请填写功能名称】 + */ + SsztJbxx110497NewVo queryById(String jyfw); + + /** + * 分页查询【请填写功能名称】列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 【请填写功能名称】分页列表 + */ + TableDataInfo queryPageList(SsztJbxx110497NewBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的【请填写功能名称】列表 + * + * @param bo 查询条件 + * @return 【请填写功能名称】列表 + */ + List queryList(SsztJbxx110497NewBo bo); + + /** + * 根据统一社会信用代码查询企业信息 + * + * @param tyshxydm 统一社会信用代码 + * @return 企业信息 + */ + List queryByTyshxydm(String tyshxydm); + + /** + * 新增【请填写功能名称】 + * + * @param bo 【请填写功能名称】 + * @return 是否新增成功 + */ + Boolean insertByBo(SsztJbxx110497NewBo bo); + + /** + * 修改【请填写功能名称】 + * + * @param bo 【请填写功能名称】 + * @return 是否修改成功 + */ + Boolean updateByBo(SsztJbxx110497NewBo bo); + + /** + * 校验并批量删除【请填写功能名称】信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enforcement/impl/AppEnfLoginServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enforcement/impl/AppEnfLoginServiceImpl.java index c8d0a3c1..21bfed3a 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enforcement/impl/AppEnfLoginServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enforcement/impl/AppEnfLoginServiceImpl.java @@ -156,6 +156,7 @@ public class AppEnfLoginServiceImpl implements IAppEnfLoginService { result.put("bureauUnitId", bureauDept != null ? bureauDept.getDeptId() : ""); result.put("bureauUnitName", bureauDept != null ? bureauDept.getDeptName() : ""); result.put("lawOfficer", sysUser.getLawOfficer()); + result.put("platformType", PlatformTypeEnums.ENFORCEMENT.getKey()); return R.ok(result); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java index 61e5a391..7817b97c 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java @@ -75,7 +75,12 @@ public class EnforcementCarouselBannerServiceImpl implements IEnforcementCarouse LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(EnforcementCarouselBanner::getId); lqw.eq(StringUtils.isNotBlank(bo.getTitle()), EnforcementCarouselBanner::getTitle, bo.getTitle()); - lqw.eq(bo.getTargetPlatform() != null, EnforcementCarouselBanner::getTargetPlatform, bo.getTargetPlatform()); + // 支持 targetPlatform 数组查询 + if (bo.getTargetPlatforms() != null && !bo.getTargetPlatforms().isEmpty()) { + lqw.in(EnforcementCarouselBanner::getTargetPlatform, bo.getTargetPlatforms()); + } else { + lqw.eq(bo.getTargetPlatform() != null, EnforcementCarouselBanner::getTargetPlatform, bo.getTargetPlatform()); + } lqw.eq(bo.getCarouselPosition() != null, EnforcementCarouselBanner::getCarouselPosition, bo.getCarouselPosition()); lqw.eq(bo.getDisplayDays() != null, EnforcementCarouselBanner::getDisplayDays, bo.getDisplayDays()); lqw.eq(bo.getEffectiveTime() != null, EnforcementCarouselBanner::getEffectiveTime, bo.getEffectiveTime()); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java index fd9c29f6..ce6a8eda 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java @@ -1,5 +1,6 @@ package com.zdxt.enforcementcode.service.impl; +import com.zdxt.enforcementcode.common.commonenum.PlatformTypeEnums; import com.zdxt.enforcementcode.domain.bean.EnforcementEducationServices; import com.zdxt.enforcementcode.service.ISysMessageViewLogService; import org.dromara.common.core.utils.MapstructUtils; @@ -19,10 +20,13 @@ import com.zdxt.enforcementcode.service.IEnforcementEducationServicesService; import org.dromara.common.satoken.utils.LoginHelper; import com.zdxt.enforcementcode.domain.bo.SysMessageViewLogBo; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.Set; import java.util.stream.Collectors; +import java.util.HashSet; /** * 执法信息发布主Service业务层处理 @@ -60,7 +64,6 @@ public class EnforcementEducationServicesServiceImpl implements IEnforcementEduc SysMessageViewLogBo viewLogBo = new SysMessageViewLogBo(); viewLogBo.setSourceId(id); -// viewLogBo.setPlatformType(LoginHelper.getTenantId()); viewLogBo.setSourceType(1); // 1-普法消息 Long userId = LoginHelper.getUserId(); @@ -125,13 +128,7 @@ public class EnforcementEducationServicesServiceImpl implements IEnforcementEduc * @param records 消息记录列表 */ private void setReadStatus(List records) { - // 获取当前登录用户的企业ID - String companyId = LoginHelper.getDeptId(); - - if (StringUtils.isBlank(companyId)) { - log.warn("当前用户未关联企业,无法设置已读状态"); - // 将所有记录设置为未读 - records.forEach(record -> record.setIsRead(0)); + if (records == null || records.isEmpty()) { return; } @@ -140,23 +137,54 @@ public class EnforcementEducationServicesServiceImpl implements IEnforcementEduc .map(EnforcementEducationServicesVo::getId) .collect(Collectors.toList()); - if (messageIds.isEmpty()) { - return; - } - - // 查询已读的消息ID列表 - List readMessageIds = baseMapper.selectReadMessageIds(messageIds, companyId); + // 查询已读的消息ID集合(使用 Set 提高查询效率) + Set readMessageIdSet = queryReadMessageIds(messageIds); // 设置每条记录的已读状态 records.forEach(record -> { - if (readMessageIds.contains(record.getId())) { - record.setIsRead(1); // 已读 - } else { - record.setIsRead(0); // 未读 - } + record.setIsRead(readMessageIdSet.contains(record.getId()) ? 1 : 0); }); } + /** + * 查询已读的消息ID集合 + * + * @param messageIds 消息ID列表 + * @return 已读消息ID集合 + */ + private Set queryReadMessageIds(List messageIds) { + if (messageIds == null || messageIds.isEmpty()) { + return new HashSet<>(); + } + + Integer platformType = LoginHelper.getPlatformType(); + Long userId = LoginHelper.getUserId(); + String companyId = LoginHelper.getDeptId(); + + List readMessageIds; + + if (PlatformTypeEnums.ENTERPRISE.getKey().equals(platformType)) { + // 企业端:根据企业ID查询已读消息 + if (StringUtils.isBlank(companyId)) { + log.warn("当前用户未关联企业,无法查询已读状态"); + return new HashSet<>(); + } + readMessageIds = baseMapper.selectReadMessageIds(messageIds, companyId); + log.debug("企业端查询已读消息: companyId={}, 已读数量={}", companyId, readMessageIds.size()); + } else { + // 执法端:根据用户ID查询已读消息 + if (userId == null) { + log.warn("当前用户未登录,无法查询已读状态"); + return new HashSet<>(); + } + readMessageIds = baseMapper.selectReadMessageIdsByUserId(messageIds, userId); + log.debug("执法端查询已读消息: userId={}, 已读数量={}", userId, readMessageIds.size()); + } + + // 转换为 Set 提高 contains 查询效率 + return new HashSet<>(readMessageIds); + } + private LambdaQueryWrapper buildQueryWrapper(EnforcementEducationServicesBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseInformationServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseInformationServiceImpl.java index 3206cedc..392d117a 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseInformationServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseInformationServiceImpl.java @@ -1,6 +1,12 @@ package com.zdxt.enforcementcode.service.impl; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONObject; +import com.zdxt.enforcementcode.common.config.RuoYiConfig; +import com.zdxt.enforcementcode.common.util.PasswordTools; +import com.zdxt.enforcementcode.common.util.QRCodeUtil; import com.zdxt.enforcementcode.domain.EnterpriseInformation; +import com.zdxt.enforcementcode.domain.QrCodeGenerateHistory; import com.zdxt.enforcementcode.domain.bo.EnterpriseInformationBo; import com.zdxt.enforcementcode.domain.bo.QrCodeGenerateHistoryBo; import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo; @@ -10,6 +16,8 @@ import com.zdxt.enforcementcode.mapper.EnterpriseInformationMapper; import com.zdxt.enforcementcode.service.IEnterpriseInformationService; import com.zdxt.enforcementcode.service.IQrCodeGenerateHistoryService; import com.zdxt.enforcementcode.helper.QrCodeHelper; +import com.zdxt.enforcementcode.service.common.FileUploadApi; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.exception.ServiceException; @@ -20,12 +28,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.satoken.utils.LoginHelper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.Date; +import java.io.File; +import java.util.*; /** * 企业端-企业信息Service业务层处理 @@ -40,6 +49,9 @@ public class EnterpriseInformationServiceImpl implements IEnterpriseInformationS private final EnterpriseInformationMapper baseMapper; private final IQrCodeGenerateHistoryService qrCodeGenerateHistoryService; + private final FileUploadApi fileUploadApi; + private final RuoYiConfig ruoYiConfig; + /** * 查询企业端-企业信息 @@ -355,4 +367,121 @@ public class EnterpriseInformationServiceImpl implements IEnterpriseInformationS .replace("深圳", ""); return keyword.length() < 3 ? null : keyword; } + + + /** + * 新增企业信息登记(存在则修改,不存在则插入) + * + * @param enterpriseInformation 企业信息登记 + * @return 结果 + */ + @Override + public int insertEnterpriseInformation(EnterpriseInformation enterpriseInformation) { + // 1. 检查企业是否已存在(根据统一社会信用代码) + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(EnterpriseInformation::getEnterpriseNumber, enterpriseInformation.getEnterpriseNumber()); + List existingList = baseMapper.selectList(lqw); + + boolean isUpdate = !existingList.isEmpty(); + + // 2. 设置字段值 + if (isUpdate) { + // 存在则更新 + prepareUpdateFields(enterpriseInformation, existingList.get(0)); + log.info("企业[{}]已存在,执行更新操作", enterpriseInformation.getEnterpriseNumber()); + } else { + // 不存在则插入 + prepareInsertFields(enterpriseInformation); + log.info("企业[{}]不存在,执行插入操作", enterpriseInformation.getEnterpriseNumber()); + } + + // 3. 执行数据库操作 + int result; + if (isUpdate) { + result = baseMapper.updateById(enterpriseInformation); + } else { + result = baseMapper.insert(enterpriseInformation); + } + + // 4. 仅在新增成功时生成二维码 + if (!isUpdate && result > 0) { + generateQrCodeForNewEnterprise(enterpriseInformation); + } + + return result; + } + + /** + * 准备更新字段 + * + * @param enterpriseInformation 企业信息 + * @param existing 已存在的企业信息 + */ + private void prepareUpdateFields(EnterpriseInformation enterpriseInformation, EnterpriseInformation existing) { + enterpriseInformation.setId(existing.getId()); + enterpriseInformation.setUpdateTime(DateUtils.getNowDate()); + enterpriseInformation.setUpdateBy(LoginHelper.getUserId()); + // 更新时保持原盐值不变 + if (StringUtils.isBlank(enterpriseInformation.getSalt())) { + enterpriseInformation.setSalt(existing.getSalt()); + } + } + + /** + * 准备插入字段 + * + * @param enterpriseInformation 企业信息 + */ + private void prepareInsertFields(EnterpriseInformation enterpriseInformation) { + enterpriseInformation.setCreateTime(DateUtils.getNowDate()); + enterpriseInformation.setId(IdUtil.simpleUUID()); + enterpriseInformation.setCreateBy(LoginHelper.getUserId()); + enterpriseInformation.setUserId(LoginHelper.getUserId()); + enterpriseInformation.setDeptId(LoginHelper.getDeptId()); + enterpriseInformation.setUpdateTime(DateUtils.getNowDate()); + // 生成企业统一信用代码盐 + String salt = PasswordTools.encrypt(enterpriseInformation.getEnterpriseNumber()); + enterpriseInformation.setSalt(salt); + } + + /** + * 为新企业生成二维码 + * + * @param enterpriseInformation 企业信息 + */ + private void generateQrCodeForNewEnterprise(EnterpriseInformation enterpriseInformation) { + String uuid = IdUtil.simpleUUID(); + + // 构建二维码内容 + Map jsonMap = new HashMap<>(); + jsonMap.put("salt", enterpriseInformation.getSalt()); + jsonMap.put("codeId", uuid); + jsonMap.put("type", "zfjd"); + String qrContent = JSONObject.toJSONString(jsonMap); + + try { + // 生成二维码文件 + String logoPath = ruoYiConfig.getFile().getQrCodeUrl(); + String uploadPath = ruoYiConfig.getFile().getUploadPath(); + File qrCodeFile = QRCodeUtil.encodeFile(qrContent, logoPath, uploadPath, true); + + // 上传文件 + MultipartFile multipartFile = QRCodeUtil.getMultipartFile(qrCodeFile); + String qrCodeUrl = fileUploadApi.upload(multipartFile); + + // 保存二维码历史记录 + QrCodeGenerateHistoryBo qrCodeHistory = new QrCodeGenerateHistoryBo(); + qrCodeHistory.setId(uuid); + qrCodeHistory.setGenerateTime(DateUtils.getNowDate()); + qrCodeHistory.setQrCodeUrl(qrCodeUrl); + qrCodeHistory.setEnterpriseNumber(enterpriseInformation.getEnterpriseNumber()); + qrCodeHistory.setReasonsChange("企业登记"); + qrCodeGenerateHistoryService.insertByBo(qrCodeHistory); + + log.info("企业[{}]二维码生成成功,qrCodeId={}, url={}", + enterpriseInformation.getEnterpriseNumber(), uuid, qrCodeUrl); + } catch (Exception e) { + log.error("企业[{}]二维码生成失败", enterpriseInformation.getEnterpriseNumber(), e); + } + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SsztJbxx110497NewServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SsztJbxx110497NewServiceImpl.java new file mode 100644 index 00000000..98e29336 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SsztJbxx110497NewServiceImpl.java @@ -0,0 +1,191 @@ +package com.zdxt.enforcementcode.service.impl; + +import com.zdxt.enforcementcode.domain.bean.SsztJbxx110497New; +import com.zdxt.enforcementcode.mapper.SsztJbxx110497NewMapper; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.zdxt.enforcementcode.domain.bo.SsztJbxx110497NewBo; +import com.zdxt.enforcementcode.domain.vo.SsztJbxx110497NewVo; +import com.zdxt.enforcementcode.service.ISsztJbxx110497NewService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 【请填写功能名称】Service业务层处理 + * + * @author Lion Li + * @date 2026-05-20 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SsztJbxx110497NewServiceImpl implements ISsztJbxx110497NewService { + + private final SsztJbxx110497NewMapper baseMapper; + + /** + * 查询【请填写功能名称】 + * + * @param jyfw 主键 + * @return 【请填写功能名称】 + */ + @Override + public SsztJbxx110497NewVo queryById(String jyfw){ + return baseMapper.selectVoById(jyfw); + } + + /** + * 分页查询【请填写功能名称】列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 【请填写功能名称】分页列表 + */ + @Override + public TableDataInfo queryPageList(SsztJbxx110497NewBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的【请填写功能名称】列表 + * + * @param bo 查询条件 + * @return 【请填写功能名称】列表 + */ + @Override + public List queryList(SsztJbxx110497NewBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 根据统一社会信用代码查询企业信息(市监数据可能存在重复数据) + * + * @param tyshxydm 统一社会信用代码 + * @return 企业信息 + */ + @Override + public List queryByTyshxydm(String tyshxydm) { + if (StringUtils.isBlank(tyshxydm)) { + log.warn("统一社会信用代码不能为空"); + return null; + } + + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SsztJbxx110497New::getTyshxydm, tyshxydm.trim()); + + List result = baseMapper.selectVoList(lqw); + + if (result != null) { + log.info("根据统一社会信用代码[{}]查询到企业信息", tyshxydm); + } else { + log.info("根据统一社会信用代码[{}]未查询到企业信息", tyshxydm); + } + + return result; + } + + private LambdaQueryWrapper buildQueryWrapper(SsztJbxx110497NewBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getJyfw()), SsztJbxx110497New::getJyfw, bo.getJyfw()); + lqw.eq(bo.getZczb() != null, SsztJbxx110497New::getZczb, bo.getZczb()); + lqw.eq(StringUtils.isNotBlank(bo.getFwbm()), SsztJbxx110497New::getFwbm, bo.getFwbm()); + lqw.eq(StringUtils.isNotBlank(bo.getYyzt()), SsztJbxx110497New::getYyzt, bo.getYyzt()); + lqw.eq(StringUtils.isNotBlank(bo.getSsztlx()), SsztJbxx110497New::getSsztlx, bo.getSsztlx()); + lqw.eq(StringUtils.isNotBlank(bo.getNdbgxx()), SsztJbxx110497New::getNdbgxx, bo.getNdbgxx()); + lqw.eq(StringUtils.isNotBlank(bo.getByzd1()), SsztJbxx110497New::getByzd1, bo.getByzd1()); + lqw.eq(StringUtils.isNotBlank(bo.getBz()), SsztJbxx110497New::getBz, bo.getBz()); + lqw.eq(StringUtils.isNotBlank(bo.getZch()), SsztJbxx110497New::getZch, bo.getZch()); + lqw.eq(StringUtils.isNotBlank(bo.getClrq()), SsztJbxx110497New::getClrq, bo.getClrq()); + lqw.eq(StringUtils.isNotBlank(bo.getNjqk()), SsztJbxx110497New::getNjqk, bo.getNjqk()); + lqw.eq(StringUtils.isNotBlank(bo.getJycs()), SsztJbxx110497New::getJycs, bo.getJycs()); + lqw.eq(StringUtils.isNotBlank(bo.getZzjgdm()), SsztJbxx110497New::getZzjgdm, bo.getZzjgdm()); + lqw.eq(StringUtils.isNotBlank(bo.getBizhong()), SsztJbxx110497New::getBizhong, bo.getBizhong()); + lqw.eq(StringUtils.isNotBlank(bo.getHydm()), SsztJbxx110497New::getHydm, bo.getHydm()); + lqw.eq(StringUtils.isNotBlank(bo.getByzd3()), SsztJbxx110497New::getByzd3, bo.getByzd3()); + lqw.eq(StringUtils.isNotBlank(bo.getByzd2()), SsztJbxx110497New::getByzd2, bo.getByzd2()); + lqw.eq(StringUtils.isNotBlank(bo.getHzrq()), SsztJbxx110497New::getHzrq, bo.getHzrq()); + lqw.eq(StringUtils.isNotBlank(bo.getJyqxq()), SsztJbxx110497New::getJyqxq, bo.getJyqxq()); + lqw.eq(StringUtils.isNotBlank(bo.getJyqxz()), SsztJbxx110497New::getJyqxz, bo.getJyqxz()); + lqw.eq(StringUtils.isNotBlank(bo.getTyshxydm()), SsztJbxx110497New::getTyshxydm, bo.getTyshxydm()); + lqw.eq(bo.getSbsszb() != null, SsztJbxx110497New::getSbsszb, bo.getSbsszb()); + lqw.eq(StringUtils.isNotBlank(bo.getSwzh()), SsztJbxx110497New::getSwzh, bo.getSwzh()); + lqw.eq(StringUtils.isNotBlank(bo.getFddbr()), SsztJbxx110497New::getFddbr, bo.getFddbr()); + lqw.eq(StringUtils.isNotBlank(bo.getLsqyzch()), SsztJbxx110497New::getLsqyzch, bo.getLsqyzch()); + lqw.eq(StringUtils.isNotBlank(bo.getLsqymc()), SsztJbxx110497New::getLsqymc, bo.getLsqymc()); + lqw.eq(StringUtils.isNotBlank(bo.getHyml()), SsztJbxx110497New::getHyml, bo.getHyml()); + lqw.eq(StringUtils.isNotBlank(bo.getQymc()), SsztJbxx110497New::getQymc, bo.getQymc()); + lqw.eq(StringUtils.isNotBlank(bo.getRecordid()), SsztJbxx110497New::getRecordid, bo.getRecordid()); + lqw.eq(StringUtils.isNotBlank(bo.getDjjgdh()), SsztJbxx110497New::getDjjgdh, bo.getDjjgdh()); + lqw.eq(StringUtils.isNotBlank(bo.getPripid()), SsztJbxx110497New::getPripid, bo.getPripid()); + lqw.eq(bo.getIns() != null, SsztJbxx110497New::getIns, bo.getIns()); + lqw.eq(bo.getSeq() != null, SsztJbxx110497New::getSeq, bo.getSeq()); + lqw.eq(bo.getUpdatestatus() != null, SsztJbxx110497New::getUpdatestatus, bo.getUpdatestatus()); + return lqw; + } + + /** + * 新增【请填写功能名称】 + * + * @param bo 【请填写功能名称】 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SsztJbxx110497NewBo bo) { + SsztJbxx110497New add = MapstructUtils.convert(bo, SsztJbxx110497New.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setJyfw(add.getJyfw()); + } + return flag; + } + + /** + * 修改【请填写功能名称】 + * + * @param bo 【请填写功能名称】 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SsztJbxx110497NewBo bo) { + SsztJbxx110497New update = MapstructUtils.convert(bo, SsztJbxx110497New.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SsztJbxx110497New entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除【请填写功能名称】信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml index ea5348f4..b8bf90e5 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml @@ -20,7 +20,7 @@ ) - + + + + diff --git a/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java b/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java index c0f4a522..171b2282 100644 --- a/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java +++ b/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java @@ -106,5 +106,11 @@ public class QuerySysUserBo implements Serializable { private Map params; + /** + * 综合搜索字段 + */ + private String searchValue; + + } diff --git a/zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml b/zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml index 50e9bf49..cb333ba6 100644 --- a/zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -54,10 +54,13 @@ AND u.login_name like concat('%', #{user.loginName}, '%') + AND u.user_name like concat('%', #{user.userName}, '%') + + AND ( - u.user_name like concat('%', #{user.userName}, '%') + u.user_name like concat('%', #{searchValue}, '%') or - u.law_certificate_num like concat('%', #{user.userName}, '%') + u.law_certificate_num like concat('%', #{searchValue}, '%') ) From ef00af50f392908860edf0ce7cdce7deb142d57d Mon Sep 17 00:00:00 2001 From: ganhao Date: Thu, 21 May 2026 11:51:38 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E6=89=A7?= =?UTF-8?q?=E6=B3=95=E7=AB=AF=E4=BC=81=E4=B8=9A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/enforcement/AppEnfCarouselBannerController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java index fcece429..c74bd6c8 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java @@ -33,7 +33,7 @@ import java.util.List; @Validated @RequiredArgsConstructor @RestController -@RequestMapping("/app-ent/enterprise/carouselBanner") +@RequestMapping("/app-ent/enforcement/carouselBanner") public class AppEnfCarouselBannerController extends BaseController { private final IEnforcementCarouselBannerService enforcementCarouselBannerService; From 2bb9c5385416f3d40dff6b7d47b159347972139c Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 21 May 2026 14:34:51 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BC=81=E4=B8=9A=E7=99=BB=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppEnfEnterpriseInformationController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfEnterpriseInformationController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfEnterpriseInformationController.java index ad4b2dbb..0ec42f05 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfEnterpriseInformationController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfEnterpriseInformationController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.zdxt.enforcementcode.domain.EnterpriseInformation; import com.zdxt.enforcementcode.domain.bo.EnterpriseInformationBo; import com.zdxt.enforcementcode.domain.vo.EnterpriseInformationVo; import com.zdxt.enforcementcode.domain.vo.QrCodeGenerateHistoryVo; @@ -137,4 +138,17 @@ public class AppEnfEnterpriseInformationController { TableDataInfo result = enterpriseInformationService.queryPageList(bo, pageQuery); return result; } + + /** + * 执法端-新增保存企业信息登记 + */ + @PostMapping("/add") + @ResponseBody + public R addSave(@RequestBody EnterpriseInformation enterpriseInformation) { + int result = enterpriseInformationService.insertEnterpriseInformation(enterpriseInformation); + if (result > 0) { + return R.ok(); + } + return R.fail("操作失败"); + } }