Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev-V1.0.1
庄锐波 4 months ago
parent
commit
cea47625ba
  1. 65
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCarouselBannerController.java
  2. 14
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfEnterpriseInformationController.java
  3. 109
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfNoticeInfoController.java
  4. 205
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java
  5. 93
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java
  6. 58
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfducationServicesController.java
  7. 110
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java
  8. 4
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEducationServicesController.java
  9. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnforcementCarouselBannerController.java
  10. 21
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/EnforcementCarouselBanner.java
  11. 195
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bean/SsztJbxx110497New.java
  12. 28
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnforcementCarouselBannerBo.java
  13. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EnterpriseInformationBo.java
  14. 38
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/QueryEnterpriseInformationListBo.java
  15. 199
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SsztJbxx110497NewBo.java
  16. 18
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementCarouselBannerVo.java
  17. 243
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SsztJbxx110497NewVo.java
  18. 11
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java
  19. 15
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SsztJbxx110497NewMapper.java
  20. 9
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseInformationService.java
  21. 76
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISsztJbxx110497NewService.java
  22. 1
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enforcement/impl/AppEnfLoginServiceImpl.java
  23. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementCarouselBannerServiceImpl.java
  24. 66
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java
  25. 137
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseInformationServiceImpl.java
  26. 191
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SsztJbxx110497NewServiceImpl.java
  27. 15
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml
  28. 6
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java
  29. 7
      zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml

65
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/enforcement/carouselBanner")
public class AppEnfCarouselBannerController extends BaseController {
private final IEnforcementCarouselBannerService enforcementCarouselBannerService;
/**
* 执法端-查询轮播公告信息列表
*/
@SaCheckPermission("enforcementcode:carouselBanner:list")
@GetMapping("/list")
public TableDataInfo<EnforcementCarouselBannerVo> 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<EnforcementCarouselBannerVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(enforcementCarouselBannerService.queryById(id));
}
}

14
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<EnterpriseInformationVo> result = enterpriseInformationService.queryPageList(bo, pageQuery);
return result;
}
/**
* 执法端-新增保存企业信息登记
*/
@PostMapping("/add")
@ResponseBody
public R<Void> addSave(@RequestBody EnterpriseInformation enterpriseInformation) {
int result = enterpriseInformationService.insertEnterpriseInformation(enterpriseInformation);
if (result > 0) {
return R.ok();
}
return R.fail("操作失败");
}
}

109
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<List<String>> 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<SysNoticeInfoVo> list(SysNoticeInfoBo bo, PageQuery pageQuery) {
return sysNoticeInfoService.queryPageList(bo, pageQuery);
}
/**
* 获取系统公告信息主详细信息
*
* @param id 主键
*/
@SaCheckPermission("enforcementcode:noticeInfo:query")
@GetMapping("/{id}")
public R<SysNoticeInfoVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(sysNoticeInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

205
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<SysUserVo> result = userService.selectUserListByHave(user, pageQuery);
List<SysUserVo> list = result.getRows();
// 解密手机号
if (list != null && !list.isEmpty()) {
decryptPhoneNumbers(list);
}
return result;
}
/**
* 批量解密用户手机号
*
* @param userList 用户列表
*/
private void decryptPhoneNumbers(List<SysUserVo> 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);
}
});
}
/**
* 查询企业信息以及二维码地址支持分页
* 当输入完整统一社会信用代码时enterpriseNumbersearchValue若企业业务表无该企业信息
* 则会向市监表查询市监表存在则会将该企业信息添加至企业业务表并生成二维码
*
* @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<SsztJbxx110497NewVo> 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);
}
}

93
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<TodoItemVo> list(TodoItemBo bo, PageQuery pageQuery) {
return todoItemService.queryPageList(bo, pageQuery);
}
/**
* 获取待办事项详细信息
*
* @param id 主键
*/
@SaCheckPermission("enforcementcode:item:query")
@GetMapping("/{id}")
public R<TodoItemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(todoItemService.queryById(id));
}
/**
* 获取待办个数
* 返回普法服务执法评价执法预告的未读个数及总数
*/
@GetMapping("/statisticsUnReadCount")
public R<TodoStatisticsVo> 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);
}
}

58
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<EnforcementEducationServicesVo> list(EnforcementEducationServicesBo bo, PageQuery pageQuery) {
return enforcementEducationServicesService.queryPageList(bo, pageQuery);
}
/**
* 获取普法服务发布主详细信息
*
* @param id 主键
*/
@GetMapping("/details")
public R<EnforcementEducationServicesVo> getInfo(String id) {
return R.ok(enforcementEducationServicesService.queryById(id));
}
/**
* 统计当前用户企业的普法未读个数
*/
@GetMapping("/unreadCount")
public R<Long> getUnreadCount() {
Long unreadCount = enforcementEducationServicesService.countUnreadEducationServices();
return R.ok(unreadCount);
}
}

110
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java

@ -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<SysUserVo> result = userService.selectUserListByHave(user, pageQuery);
List<SysUserVo> list = result.getRows();
// 解密手机号
if (list != null && !list.isEmpty()) {
decryptPhoneNumbers(list);
}
return result;
}
/**
* 批量解密用户手机号
*
* @param userList 用户列表
*/
private void decryptPhoneNumbers(List<SysUserVo> 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);
}
});
}
}

4
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java → 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;

7
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<EnforcementCarouselBannerVo> 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);
}

21
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;
/**
* 备注

195
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;
}

28
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<Integer> 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;
/**
* 备注

2
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

38
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;
}

199
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;
}

18
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;
/**
* 备注

243
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;
}

11
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java

@ -24,11 +24,20 @@ public interface EnforcementEducationServicesMapper extends BaseMapperPlus<Enfor
Long countUnreadEducationServices(@Param("companyId") String companyId);
/**
* 查询已读的消息ID列表
* 查询已读的消息ID列表企业端-根据企业ID
*
* @param messageIds 消息ID列表
* @param companyId 企业ID
* @return 已读的消息ID列表
*/
List<String> selectReadMessageIds(@Param("messageIds") List<String> messageIds, @Param("companyId") String companyId);
/**
* 查询已读的消息ID列表执法端-根据用户ID
*
* @param messageIds 消息ID列表
* @param userId 用户ID
* @return 已读的消息ID列表
*/
List<String> selectReadMessageIdsByUserId(@Param("messageIds") List<String> messageIds, @Param("userId") Long userId);
}

15
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<SsztJbxx110497New, SsztJbxx110497NewVo> {
}

9
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<EnterpriseSearchVo> searchSsztByNumber(String enterpriseNumber);
/**
* 插入企业信息
*
* @param enterpriseInformation 企业信息
* @return 是否插入成功
*/
int insertEnterpriseInformation(EnterpriseInformation enterpriseInformation);
}

76
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<SsztJbxx110497NewVo> queryPageList(SsztJbxx110497NewBo bo, PageQuery pageQuery);
/**
* 查询符合条件的请填写功能名称列表
*
* @param bo 查询条件
* @return 请填写功能名称列表
*/
List<SsztJbxx110497NewVo> queryList(SsztJbxx110497NewBo bo);
/**
* 根据统一社会信用代码查询企业信息
*
* @param tyshxydm 统一社会信用代码
* @return 企业信息
*/
List<SsztJbxx110497NewVo> 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<String> ids, Boolean isValid);
}

1
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);
}

7
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<EnforcementCarouselBanner> 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());

66
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<EnforcementEducationServicesVo> 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<String> readMessageIds = baseMapper.selectReadMessageIds(messageIds, companyId);
// 查询已读的消息ID集合(使用 Set 提高查询效率)
Set<String> 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<String> queryReadMessageIds(List<String> messageIds) {
if (messageIds == null || messageIds.isEmpty()) {
return new HashSet<>();
}
Integer platformType = LoginHelper.getPlatformType();
Long userId = LoginHelper.getUserId();
String companyId = LoginHelper.getDeptId();
List<String> 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<EnforcementEducationServices> buildQueryWrapper(EnforcementEducationServicesBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EnforcementEducationServices> lqw = Wrappers.lambdaQuery();

137
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<EnterpriseInformation> lqw = Wrappers.lambdaQuery();
lqw.eq(EnterpriseInformation::getEnterpriseNumber, enterpriseInformation.getEnterpriseNumber());
List<EnterpriseInformation> 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<String, String> 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);
}
}
}

191
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<SsztJbxx110497NewVo> queryPageList(SsztJbxx110497NewBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SsztJbxx110497New> lqw = buildQueryWrapper(bo);
Page<SsztJbxx110497NewVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的请填写功能名称列表
*
* @param bo 查询条件
* @return 请填写功能名称列表
*/
@Override
public List<SsztJbxx110497NewVo> queryList(SsztJbxx110497NewBo bo) {
LambdaQueryWrapper<SsztJbxx110497New> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
/**
* 根据统一社会信用代码查询企业信息(市监数据可能存在重复数据)
*
* @param tyshxydm 统一社会信用代码
* @return 企业信息
*/
@Override
public List<SsztJbxx110497NewVo> queryByTyshxydm(String tyshxydm) {
if (StringUtils.isBlank(tyshxydm)) {
log.warn("统一社会信用代码不能为空");
return null;
}
LambdaQueryWrapper<SsztJbxx110497New> lqw = Wrappers.lambdaQuery();
lqw.eq(SsztJbxx110497New::getTyshxydm, tyshxydm.trim());
List<SsztJbxx110497NewVo> result = baseMapper.selectVoList(lqw);
if (result != null) {
log.info("根据统一社会信用代码[{}]查询到企业信息", tyshxydm);
} else {
log.info("根据统一社会信用代码[{}]未查询到企业信息", tyshxydm);
}
return result;
}
private LambdaQueryWrapper<SsztJbxx110497New> buildQueryWrapper(SsztJbxx110497NewBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SsztJbxx110497New> 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<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

15
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml

@ -20,7 +20,7 @@
)
</select>
<!-- 查询已读的消息ID列表 -->
<!-- 查询已读的消息ID列表(企业端-根据企业ID) -->
<select id="selectReadMessageIds" resultType="java.lang.String">
SELECT DISTINCT smvl.source_id
FROM sys_message_view_log smvl
@ -33,4 +33,17 @@
AND smvl.is_delete = 0
</select>
<!-- 查询已读的消息ID列表(执法端-根据用户ID) -->
<select id="selectReadMessageIdsByUserId" resultType="java.lang.String">
SELECT DISTINCT smvl.source_id
FROM sys_message_view_log smvl
WHERE smvl.source_id IN
<foreach collection="messageIds" item="messageId" open="(" separator="," close=")">
#{messageId}
</foreach>
AND smvl.create_by = #{userId}
AND smvl.source_type = 1
AND smvl.is_delete = 0
</select>
</mapper>

6
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<String, Object> params;
/**
* 综合搜索字段
*/
private String searchValue;
}

7
zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -54,10 +54,13 @@
AND u.login_name like concat('%', #{user.loginName}, '%')
</if>
<if test="user.userName != null and user.userName != ''">
AND u.user_name like concat('%', #{user.userName}, '%')
</if>
<if test="user.searchValue != null and user.searchValue != ''">
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}, '%')
)
</if>
<if test="user.status != null and user.status != ''">

Loading…
Cancel
Save