Browse Source

执法端-行政执法记录

dev-V1.0.1
niujiyi 5 months ago
parent
commit
1923ac3f13
  1. 323
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java
  2. 1
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java
  3. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/IAppEnterpriseComplaintService.java
  4. 25
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/impl/AppEnterpriseComplaintServiceImpl.java
  5. 1
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java
  6. 9
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationMapper.xml

323
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java

@ -1,31 +1,30 @@
package com.zdxt.enforcementcode.controller.app.enforcement;
import cn.dev33.satoken.annotation.SaIgnore;
import com.zdxt.enforcementcode.common.util.CommonUtil;
import com.zdxt.enforcementcode.domain.EnforcementRegistration;
import com.zdxt.enforcementcode.domain.EnterpriseLawEnforcement;
import com.zdxt.enforcementcode.domain.bo.EnforcementLawCheckPlanBo;
import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo;
import com.zdxt.enforcementcode.domain.bo.EnterpriseLawEnforcementBo;
import com.zdxt.enforcementcode.domain.bo.enterprise.AppEnterpriseComplaintBo;
import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo;
import com.zdxt.enforcementcode.domain.vo.EnterpriseEvaluateVo;
import com.zdxt.enforcementcode.domain.vo.EnterpriseLawEnforcementVo;
import com.zdxt.enforcementcode.domain.vo.enterprise.AppEnterpriseComplaintVo;
import com.zdxt.enforcementcode.service.IEnforcementRegistrationService;
import com.zdxt.enforcementcode.service.IEnterpriseEvaluateService;
import com.zdxt.enforcementcode.service.IEnterpriseLawEnforcementService;
import com.zdxt.enforcementcode.service.enterprise.IAppEnterpriseComplaintService;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.helper.DataPermissionHelper;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.SysDictData;
import org.dromara.system.domain.bo.SysDictDataBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysDictDataVo;
@ -34,9 +33,12 @@ import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysDictDataService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
@ -63,6 +65,9 @@ public class AppEnforcementRegistrationController extends BaseController {
@Autowired
private IEnterpriseEvaluateService enterpriseEvaluateService;
@Autowired
private IAppEnterpriseComplaintService appEnterpriseComplaintService;
/**
* 执法端-执法登记新增保存
*/
@ -91,11 +96,9 @@ public class AppEnforcementRegistrationController extends BaseController {
*/
@GetMapping("/queryList")
@ResponseBody
public R<EnforcementRegistrationVo> queryList(EnforcementRegistrationBo bo, PageQuery pageQuery)
{
public R<EnforcementRegistrationVo> queryList(EnforcementRegistrationBo bo, PageQuery pageQuery) {
// dateType本单位 0 全市 1
if (Objects.nonNull(bo.getUserId()) && bo.getDateType()==0) {
//UserBean userByUser = userApi.getUserByUserId(bo.getUserId());
bo.setDeptId(LoginHelper.getDeptId() == null ? null : LoginHelper.getDeptId());
SysDeptVo bureauDept = sysDeptService.iterationDeptParentToBureau(LoginHelper.getDeptId());
@ -125,6 +128,7 @@ public class AppEnforcementRegistrationController extends BaseController {
public R<Void> editSave(@RequestBody EnforcementRegistrationBo bo)
{
int resNum = 0;
bo.setIsSubmit(1L);
if (StringUtils.isNotEmpty(bo.getId())) {
resNum = enforcementRegistrationService.updateEnforcementRegistration(bo);
} else {
@ -142,7 +146,25 @@ public class AppEnforcementRegistrationController extends BaseController {
return toAjax(resNum);
}
/**
* 执法端-行政执法记录修改
* @param bo
* @return
*/
@PostMapping("/editInfo")
@ResponseBody
public R<Void> editInfo(@RequestBody EnforcementRegistrationBo bo)
{
bo.setIsSubmit(0L);
int resNum = enforcementRegistrationService.updateEnforcementRegistration(bo);
if (StringUtils.isNotEmpty(bo.getLawId())) {
EnterpriseLawEnforcementBo law = new EnterpriseLawEnforcementBo();
law.setId(bo.getLawId());
law.setIsReg(1L);
resNum = enterpriseLawEnforcementService.updateEnterpriseLawEnforcement(law);
}
return toAjax(resNum);
}
/**
* 执法端-联合执法查询补录(用于补录时关联)
* 根据企业统一信用号, 搜索出该企业前推一小时内的联合执法.
@ -424,4 +446,283 @@ public class AppEnforcementRegistrationController extends BaseController {
return R.ok(result);
}
/**
* 查询执法端-执法登记列表
*/
@SaIgnore
@PostMapping("/list")
@ResponseBody
public TableDataInfo<EnforcementRegistrationVo> list(@RequestBody EnforcementRegistrationBo bo, PageQuery pageQuery) {
long startTime = System.currentTimeMillis();
// 使用 DataPermissionHelper.ignore() 跳过数据权限检查,避免 token 冻结导致的认证错误
List<EnforcementRegistrationVo> list = DataPermissionHelper.ignore(() ->
enforcementRegistrationService.selectEnforcementRegistrationList(bo, pageQuery)
);
if (list == null || list.isEmpty()) {
TableDataInfo<EnforcementRegistrationVo> emptyResult = new TableDataInfo<>();
emptyResult.setCode(0);
emptyResult.setRows(new ArrayList<>());
emptyResult.setTotal(0L);
return emptyResult;
}
// 1. 批量获取字典数据(只查询一次)
List<SysDictDataVo> dicts = getCheckCategoryDicts();
Map<String, String> dictMap = buildDictMap(dicts);
// 2. 收集所有用户ID并批量查询(只查询一次)
List<Long> allUserIds = collectAllUserIds(list);
Map<Long, SysUserVo> userMap = buildUserMap(allUserIds);
// 3. 批量查询投诉标记(只查询一次)
List<String> recordIds = extractRecordIds(list);
Map<String, Boolean> complaintMap = buildComplaintMapBatch(recordIds);
// 4. 在内存中批量填充数据(无数据库查询)
for (EnforcementRegistrationVo vo : list) {
fillComplaintFlagFromMap(vo, complaintMap);
fillCheckCategoryText(vo, dictMap);
fillLawEnforcerInfo(vo, userMap);
fillOutTimeDayNum(vo);
}
TableDataInfo<EnforcementRegistrationVo> rspData = new TableDataInfo<>();
rspData.setCode(0);
rspData.setRows(list);
rspData.setTotal(list.size());
long endTime = System.currentTimeMillis();
log.info("执法登记列表查询耗时: {}ms, 数据量: {}", (endTime - startTime), list.size());
return rspData;
}
/**
* 获取检查类别字典数据
*/
private List<SysDictDataVo> getCheckCategoryDicts() {
SysDictDataBo dictParams = new SysDictDataBo();
dictParams.setDictType("check_category");
return sysDictDataService.selectDictDataList(dictParams);
}
/**
* 构建字典映射表 (dictValue -> dictLabel)
*/
private Map<String, String> buildDictMap(List<SysDictDataVo> dicts) {
Map<String, String> dictMap = new HashMap<>();
if (dicts != null) {
for (SysDictDataVo dict : dicts) {
dictMap.put(dict.getDictValue(), dict.getDictLabel());
}
}
return dictMap;
}
/**
* 提取所有记录ID
*/
private List<String> extractRecordIds(List<EnforcementRegistrationVo> list) {
List<String> ids = new ArrayList<>();
for (EnforcementRegistrationVo vo : list) {
if (vo.getId() != null) {
ids.add(vo.getId());
}
}
return ids;
}
/**
* 批量构建投诉标记映射 (recordId -> hasComplaint)
* 优化:使用 IN 查询一次性获取所有投诉记录
*/
private Map<String, Boolean> buildComplaintMapBatch(List<String> recordIds) {
Map<String, Boolean> complaintMap = new HashMap<>();
if (recordIds.isEmpty()) {
return complaintMap;
}
// 使用 IN 批量查询所有投诉记录
List<AppEnterpriseComplaintVo> complaints = DataPermissionHelper.ignore(() -> {
AppEnterpriseComplaintBo params = new AppEnterpriseComplaintBo();
params.setComOrOpi(1L);
return appEnterpriseComplaintService.queryListByIds(recordIds, params);
});
// 构建映射:recordId -> 是否有投诉
if (complaints != null) {
for (AppEnterpriseComplaintVo complaint : complaints) {
complaintMap.put(complaint.getRelId(), true);
}
}
return complaintMap;
}
/**
* 收集所有需要查询的用户ID
*/
private List<Long> collectAllUserIds(List<?> list) {
Set<Long> userIdSet = new HashSet<>();
for (Object obj : list) {
EnforcementRegistrationVo vo;
if (obj instanceof EnforcementRegistrationVo) {
vo = (EnforcementRegistrationVo) obj;
} else {
continue;
}
if (StringUtils.isNotEmpty(vo.getLawEnforcerId())) {
try {
userIdSet.add(Long.parseLong(vo.getLawEnforcerId()));
} catch (NumberFormatException ignored) {
}
}
if (StringUtils.isNotEmpty(vo.getLawEnforcerIdTwo())) {
String[] ids = vo.getLawEnforcerIdTwo().split(",");
for (String id : ids) {
if (StringUtils.isNotEmpty(id.trim())) {
try {
userIdSet.add(Long.parseLong(id.trim()));
} catch (NumberFormatException ignored) {
}
}
}
}
}
return new ArrayList<>(userIdSet);
}
/**
* 构建用户映射表 (userId -> SysUserVo)
*/
private Map<Long, SysUserVo> buildUserMap(List<Long> userIds) {
Map<Long, SysUserVo> userMap = new HashMap<>();
if (userIds.isEmpty()) {
return userMap;
}
// 使用 DataPermissionHelper.ignore() 跳过数据权限检查
List<SysUserVo> users = DataPermissionHelper.ignore(() ->
sysUserService.selectUserByIds(userIds, null)
);
if (users != null) {
for (SysUserVo user : users) {
userMap.put(user.getUserId(), user);
}
}
return userMap;
}
/**
* 从映射表填充投诉标记
*/
private void fillComplaintFlagFromMap(EnforcementRegistrationVo vo, Map<String, Boolean> complaintMap) {
boolean hasComplaint = complaintMap.getOrDefault(vo.getId(), false);
vo.setComOrOpi(hasComplaint ? 1 : 0);
}
/**
* 填充执法类别文本
*/
private void fillCheckCategoryText(EnforcementRegistrationVo vo, Map<String, String> dictMap) {
if (StringUtils.isNotEmpty(vo.getCheckCategory())) {
String text = dictMap.get(vo.getCheckCategory());
if (StringUtils.isNotEmpty(text)) {
vo.setCheckCategoryText(text);
}
}
}
/**
* 填充执法人员信息
*/
private void fillLawEnforcerInfo(EnforcementRegistrationVo vo, Map<Long, SysUserVo> userMap) {
fillLawEnforcer1(vo, userMap);
fillLawEnforcer2(vo, userMap);
}
/**
* 填充执法人员1信息
*/
private void fillLawEnforcer1(EnforcementRegistrationVo vo, Map<Long, SysUserVo> userMap) {
if (StringUtils.isEmpty(vo.getLawEnforcerId())) {
return;
}
try {
Long userId = Long.parseLong(vo.getLawEnforcerId());
SysUserVo user = userMap.get(userId);
if (user != null) {
String lawCN = buildEnforcerDisplayText(user);
vo.setLawEnforcer(lawCN);
}
} catch (NumberFormatException ignored) {
}
}
/**
* 填充执法人员2信息列表
*/
private void fillLawEnforcer2(EnforcementRegistrationVo vo, Map<Long, SysUserVo> userMap) {
List<String> lawTwoList = new ArrayList<>();
if (StringUtils.isEmpty(vo.getLawEnforcerIdTwo())) {
vo.setLawEnforcer2List(lawTwoList);
return;
}
String[] ids = vo.getLawEnforcerIdTwo().split(",");
for (String id : ids) {
if (StringUtils.isEmpty(id.trim())) {
continue;
}
try {
Long userId = Long.parseLong(id.trim());
SysUserVo user = userMap.get(userId);
if (user != null) {
lawTwoList.add(buildEnforcerDisplayText(user));
}
} catch (NumberFormatException ignored) {
}
}
vo.setLawEnforcer2List(lawTwoList);
}
/**
* 构建执法人员展示文本(用户名 + 执法码/加密手机号)
*/
private String buildEnforcerDisplayText(SysUserVo user) {
if (user == null) {
return "";
}
String userName = user.getUserName();
String certificateNum = user.getLawCertificateNum();
if (StringUtils.isNotEmpty(certificateNum)) {
return userName + " " + certificateNum;
}
String phone = user.getPhonenumber();
if (StringUtils.isNotEmpty(phone)) {
return userName + " " + CommonUtil.encryptPhone(phone);
}
return userName;
}
/**
* 填充超时天数
*/
private void fillOutTimeDayNum(EnforcementRegistrationVo vo) {
if (vo.getEnforcementTime() == null) {
vo.setOutTimeDayNum(0L);
return;
}
Instant instant = vo.getEnforcementTime().toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate startDate = instant.atZone(zoneId).toLocalDate();
long daysBetween = ChronoUnit.DAYS.between(startDate, LocalDate.now());
vo.setOutTimeDayNum(daysBetween);
}
}

1
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java

@ -65,6 +65,7 @@ public interface EnforcementRegistrationMapper extends BaseMapperPlus<Enforcemen
* @param bo 执法端-执法登记
* @return 执法端-执法登记列表
*/
@InterceptorIgnore(dataPermission = "true")
List<EnforcementRegistrationVo> selectEnforcementRegistrationList(@Param("bo") EnforcementRegistrationBo bo,@Param("page") Page<EnforcementRegistrationVo> page);
}

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/IAppEnterpriseComplaintService.java

@ -32,6 +32,16 @@ public interface IAppEnterpriseComplaintService {
*/
TableDataInfo<AppEnterpriseComplaintVo> queryPageList(AppEnterpriseComplaintBo bo, PageQuery pageQuery);
List<AppEnterpriseComplaintVo> queryList(AppEnterpriseComplaintBo bo);
/**
* 批量查询投诉记录(根据relId列表)
*
* @param relIds 关联记录ID列表
* @param bo 查询条件
* @return 投诉记录列表
*/
List<AppEnterpriseComplaintVo> queryListByIds(List<String> relIds, AppEnterpriseComplaintBo bo);
/**
* 新增企业执法-在线投诉

25
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/impl/AppEnterpriseComplaintServiceImpl.java

@ -108,6 +108,31 @@ public class AppEnterpriseComplaintServiceImpl implements IAppEnterpriseComplain
return TableDataInfo.build(result);
}
@Override
public List<AppEnterpriseComplaintVo> queryList(AppEnterpriseComplaintBo bo) {
LambdaQueryWrapper<EnterpriseComplaint> lqw =Wrappers.lambdaQuery();
lqw.eq(EnterpriseComplaint::getRelId,bo.getId()).eq(EnterpriseComplaint::getComOrOpi,bo.getComOrOpi());
return baseMapper.selectVoList(lqw);
}
/**
* 批量查询投诉记录(根据relId列表)
*
* @param relIds 关联记录ID列表
* @param bo 查询条件
* @return 投诉记录列表
*/
@Override
public List<AppEnterpriseComplaintVo> queryListByIds(List<String> relIds, AppEnterpriseComplaintBo bo) {
if (relIds == null || relIds.isEmpty()) {
return new ArrayList<>();
}
LambdaQueryWrapper<EnterpriseComplaint> lqw = Wrappers.lambdaQuery();
lqw.in(EnterpriseComplaint::getRelId, relIds)
.eq(EnterpriseComplaint::getComOrOpi, bo.getComOrOpi());
return baseMapper.selectVoList(lqw);
}
/**
* 新增企业执法-在线投诉
*

1
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java

@ -741,7 +741,6 @@ public class EnforcementRegistrationServiceImpl implements IEnforcementRegistrat
}
bo.setUpdateTime(DateUtils.getNowDate());
bo.setIsSubmit(1L);
String district = "";
String street = "";
if (StringUtils.isNotEmpty(bo.getEnterpriseAddress())) {

9
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationMapper.xml

@ -437,7 +437,7 @@
</insert>
<select id="selectEnforcementRegistrationList" parameterType="com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo" resultMap="EnforcementRegistrationResult">
<select id="selectEnforcementRegistrationList" parameterType="com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo" resultType="com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo">
select
*
from
@ -545,10 +545,11 @@
<if test="bo.bureauDeptId != null and bo.bureauDeptId != ''">
and bureau_dept_id = #{bo.bureauDeptId}
</if>
<if test="bo.params.dataScope != null and bo.params.dataScope != ''">
<!-- 数据范围过滤 -->
<!-- 注释掉数据权限过滤,避免 token 冻结导致的认证错误 -->
<!-- <if test="bo.params.dataScope != null and bo.params.dataScope != ''">
<!- - 数据范围过滤 - ->
${bo.params.dataScope}
</if>
</if> -->
</where>
GROUP BY enterprise_number order by enforcement_time desc) t
<where>

Loading…
Cancel
Save