Browse Source

250108

main
wxc 1 year ago
parent
commit
67d1bb682c
  1. 8
      src/main/java/com/biutag/supervision/config/InterceptorConfig.java
  2. 11
      src/main/java/com/biutag/supervision/constants/enums/CaseVerifSource.java
  3. 2
      src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java
  4. 15
      src/main/java/com/biutag/supervision/controller/LoginController.java
  5. 106
      src/main/java/com/biutag/supervision/controller/api/plugin/CaseVerifController.java
  6. 14
      src/main/java/com/biutag/supervision/controller/books/NegativeBookController.java
  7. 11
      src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java
  8. 11
      src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaint12337Controller.java
  9. 78
      src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java
  10. 18
      src/main/java/com/biutag/supervision/controller/work/NegativeController.java
  11. 8
      src/main/java/com/biutag/supervision/mapper/DataCaseVerifExtFileMapper.java
  12. 8
      src/main/java/com/biutag/supervision/mapper/DataCaseVerifExtMapper.java
  13. 82
      src/main/java/com/biutag/supervision/pojo/dto/DataPetition12337Distribute.java
  14. 9
      src/main/java/com/biutag/supervision/pojo/dto/DataPetition12337Dto.java
  15. 11
      src/main/java/com/biutag/supervision/pojo/dto/NegativeImportDto.java
  16. 30
      src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifDisposalDetails.java
  17. 25
      src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifDisposalOpinion.java
  18. 22
      src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifFile.java
  19. 17
      src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifOuterId.java
  20. 10
      src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerif.java
  21. 40
      src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerifExt.java
  22. 40
      src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerifExtFile.java
  23. 11
      src/main/java/com/biutag/supervision/service/DataCaseVerifExtFileService.java
  24. 11
      src/main/java/com/biutag/supervision/service/DataCaseVerifExtService.java
  25. 3
      src/main/resources/application.yml
  26. BIN
      src/main/resources/static/templates/问题批量导入标准模板.xlsx
  27. BIN
      src/main/resources/static/templates/问题标准模板.xlsx
  28. 2
      src/test/java/com/biutag/supervision/tools/GenCodeTests.java

8
src/main/java/com/biutag/supervision/config/InterceptorConfig.java

@ -8,6 +8,7 @@ import com.biutag.supervision.util.SpringUtil;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
@ -26,6 +27,9 @@ import java.util.concurrent.TimeUnit;
@Configuration @Configuration
public class InterceptorConfig implements WebMvcConfigurer { public class InterceptorConfig implements WebMvcConfigurer {
@Value("${token.timeout}")
private Integer tokenTimeout;
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new DefaultInterceptor()) registry.addInterceptor(new DefaultInterceptor())
@ -43,7 +47,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
.addPathPatterns("/api/jwdc/**"); .addPathPatterns("/api/jwdc/**");
} }
static class DefaultInterceptor implements HandlerInterceptor { class DefaultInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
@ -54,7 +58,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
throw new AuthException(); throw new AuthException();
} }
// 更新 会话 有效期 // 更新 会话 有效期
redisTemplate.expire(String.format(RedisKeyConstants.LOGIN_USERINFO_KEY, authorization), 24, TimeUnit.HOURS); redisTemplate.expire(String.format(RedisKeyConstants.LOGIN_USERINFO_KEY, authorization), tokenTimeout, TimeUnit.HOURS);
return true; return true;
} }

11
src/main/java/com/biutag/supervision/constants/enums/CaseVerifSource.java

@ -0,0 +1,11 @@
package com.biutag.supervision.constants.enums;
/**
* @author wxc
* @date 2025/1/8
*/
public enum CaseVerifSource {
excel_import,
plugin
}

2
src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java

@ -21,7 +21,7 @@ public enum ProblemSourcesEnum {
GABXF("公安部信访", "22"), GABXF("公安部信访", "22"),
JZXX("局长信箱", "23"), JZXX("局长信箱", "23"),
XF12337("12337信访", "24"), XF12337("12337信访", "24"),
XF_QT("其他", "25"), XF_QT("信访投诉/其他", "25"),
SJJD("审计监督", "26"), SJJD("审计监督", "26"),
ZFTZSJ("政府投资审计", "27"), ZFTZSJ("政府投资审计", "27"),

15
src/main/java/com/biutag/supervision/controller/LoginController.java

@ -5,23 +5,23 @@ import com.biutag.supervision.common.UserContextHolder;
import com.biutag.supervision.constants.RedisKeyConstants; import com.biutag.supervision.constants.RedisKeyConstants;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.dto.AccountDto; import com.biutag.supervision.pojo.dto.AccountDto;
import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.entity.BaseAccount;
import com.biutag.supervision.pojo.model.UserAuth; import com.biutag.supervision.pojo.model.UserAuth;
import com.biutag.supervision.pojo.vo.TokenVo; import com.biutag.supervision.pojo.vo.TokenVo;
import com.biutag.supervision.service.*; import com.biutag.supervision.service.BaseAccountService;
import com.biutag.supervision.service.UserLoginService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCrypt; import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Tag(name = "登录接口") @Tag(name = "登录接口")
@ -36,13 +36,16 @@ public class LoginController {
private final RedisTemplate<Object, Object> redisTemplate; private final RedisTemplate<Object, Object> redisTemplate;
@Value("${token.timeout}")
private Integer tokenTimeout;
@Operation(summary = "登录") @Operation(summary = "登录")
@PostMapping("login") @PostMapping("login")
public Result<TokenVo> login(@RequestBody AccountDto account) { public Result<TokenVo> login(@RequestBody AccountDto account) {
BaseAccount baseAccount = accountService.getByLogin(account.getAccount()); BaseAccount baseAccount = accountService.getByLogin(account.getAccount());
try { try {
if (Objects.isNull(baseAccount) || !BCrypt.checkpw(account.getPassword(), baseAccount.getPassword())) { if (Objects.isNull(baseAccount) || !BCrypt.checkpw(account.getPassword(), baseAccount.getPassword())) {
throw new RuntimeException("用户名或密码有误,请重新输入"); throw new RuntimeException();
} }
} catch (RuntimeException e) { } catch (RuntimeException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
@ -50,7 +53,7 @@ public class LoginController {
} }
UserAuth userAuth = userLoginService.buildUserAuth(baseAccount.getAccount()); UserAuth userAuth = userLoginService.buildUserAuth(baseAccount.getAccount());
String token = IdUtil.fastSimpleUUID(); String token = IdUtil.fastSimpleUUID();
redisTemplate.opsForValue().set(String.format(RedisKeyConstants.LOGIN_USERINFO_KEY, token), userAuth, 24, TimeUnit.HOURS); redisTemplate.opsForValue().set(String.format(RedisKeyConstants.LOGIN_USERINFO_KEY, token), userAuth, tokenTimeout, TimeUnit.HOURS);
return Result.success(new TokenVo().setToken(token)); return Result.success(new TokenVo().setToken(token));
} }

106
src/main/java/com/biutag/supervision/controller/api/plugin/CaseVerifController.java

@ -1,18 +1,32 @@
package com.biutag.supervision.controller.api.plugin; package com.biutag.supervision.controller.api.plugin;
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.biutag.supervision.common.UserContextHolder;
import com.biutag.supervision.constants.enums.CaseVerifSource;
import com.biutag.supervision.constants.enums.InspectCaseEnum;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.dto.DataPetitionComplaintDto; import com.biutag.supervision.pojo.dto.plugin.*;
import com.biutag.supervision.pojo.dto.plugin.CaseVerifPluginDto;
import com.biutag.supervision.pojo.entity.DataCaseVerif; import com.biutag.supervision.pojo.entity.DataCaseVerif;
import com.biutag.supervision.pojo.entity.DataCaseVerifExt;
import com.biutag.supervision.pojo.entity.DataCaseVerifExtFile;
import com.biutag.supervision.service.DataCaseVerifExtFileService;
import com.biutag.supervision.service.DataCaseVerifExtService;
import com.biutag.supervision.service.DataCaseVerifService; import com.biutag.supervision.service.DataCaseVerifService;
import com.biutag.supervision.service.FileService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import java.io.InputStream;
import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime;
import java.util.List;
/** /**
* @author wxc * @author wxc
@ -20,12 +34,18 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@Tag(name = "案件核查(插件)") @Tag(name = "案件核查(插件)")
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("plugin/caseVerif") @RequestMapping("crx/ajhc")
@RestController @RestController
public class CaseVerifController { public class CaseVerifController {
private final DataCaseVerifService dataCaseVerifService; private final DataCaseVerifService dataCaseVerifService;
private final DataCaseVerifExtService dataCaseVerifExtService;
private final FileService fileService;
private final DataCaseVerifExtFileService dataCaseVerifExtFileService;
@Operation(summary = "推送案件核查数据") @Operation(summary = "推送案件核查数据")
@PostMapping @PostMapping
public Result<Boolean> add(@RequestBody @Validated CaseVerifPluginDto body) { public Result<Boolean> add(@RequestBody @Validated CaseVerifPluginDto body) {
@ -35,7 +55,79 @@ public class CaseVerifController {
caseVerif.setResponderPhone(body.getReporterContact()); caseVerif.setResponderPhone(body.getReporterContact());
caseVerif.setThingDesc(body.getBriefCase()); caseVerif.setThingDesc(body.getBriefCase());
caseVerif.setSourceInvolveDepartName(body.getVerifiedObjectUnit()); caseVerif.setSourceInvolveDepartName(body.getVerifiedObjectUnit());
caseVerif.setSource(CaseVerifSource.plugin.name());
caseVerif.setCreator(UserContextHolder.getCurrentUserId());
caseVerif.setCrxState("1");
dataCaseVerifService.save(caseVerif); dataCaseVerifService.save(caseVerif);
return Result.success(); return Result.success();
} }
@Operation(summary = "案件核查数据列表")
@GetMapping
public Result<List<DataCaseVerif>> list() {
LambdaQueryWrapper<DataCaseVerif> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataCaseVerif::getSource, CaseVerifSource.plugin.name())
.eq(DataCaseVerif::getCreator, UserContextHolder.getCurrentUserId())
.orderByDesc(DataCaseVerif::getCreateTime);
Page<DataCaseVerif> page = dataCaseVerifService.page(Page.of(1, 10), queryWrapper);
return Result.success(page.getRecords());
}
@Operation(summary = "处置意见上传")
@PostMapping("disposalOpinion")
public Result<Boolean> disposalOpinion(@RequestBody CaseVerifDisposalOpinion body) {
DataCaseVerifExt dataCaseVerifExt = new DataCaseVerifExt();
dataCaseVerifExt.setOuterId(body.getOuterId());
if ("属实".equals(body.getTrueSituation())) {
dataCaseVerifExt.setCheckStatus(InspectCaseEnum.TRUE.getValue());
dataCaseVerifExt.setCheckStatusName(InspectCaseEnum.TRUE.getLabel());
}
if ("部分属实".equals(body.getTrueSituation()) || "查明其他情况".equals(body.getTrueSituation())) {
dataCaseVerifExt.setCheckStatus(InspectCaseEnum.PARTIALLY_TRUE.getValue());
dataCaseVerifExt.setCheckStatusName(InspectCaseEnum.PARTIALLY_TRUE.getLabel());
}
if ("不属实".equals(body.getTrueSituation())) {
dataCaseVerifExt.setCheckStatus(InspectCaseEnum.FALSE.getValue());
dataCaseVerifExt.setCheckStatusName(InspectCaseEnum.FALSE.getLabel());
}
// 处置意见
dataCaseVerifExt.setCheckStatusDesc(body.getHandlingSuggestions());
dataCaseVerifExt.setCreateTime(LocalDateTime.now());
dataCaseVerifExtService.saveOrUpdate(dataCaseVerifExt);
return Result.success();
}
@Operation(summary = "ID列表更新")
@PostMapping("outerIds")
public Result<Boolean> outerIds(@RequestBody List<CaseVerifOuterId> outerIds) {
for (CaseVerifOuterId outerId : outerIds) {
dataCaseVerifService.update(new LambdaUpdateWrapper<DataCaseVerif>().eq(DataCaseVerif::getOriginId, outerId.getCaseNumber())
.set(DataCaseVerif::getOuterId, outerId.getOuterId()));
}
return Result.success();
}
@Operation(summary = "附件上传")
@PostMapping("file")
public Result<Boolean> file(@RequestBody CaseVerifFile caseVerifFile) {
HttpResponse httpResponse = HttpUtil.createGet(caseVerifFile.getFileUrl()).execute();
InputStream is = httpResponse.bodyStream();
String filePath = fileService.upload(is, 0L, FileUtil.extName(caseVerifFile.getFileName()));
DataCaseVerifExtFile dataCaseVerifExtFile = new DataCaseVerifExtFile();
dataCaseVerifExtFile.setOuterId(caseVerifFile.getOuterId());
dataCaseVerifExtFile.setFilePath(filePath);
dataCaseVerifExtFile.setFileName(caseVerifFile.getFileName());
dataCaseVerifExtFile.setCreateTime(LocalDateTime.now());
dataCaseVerifExtFile.setFileClassName(caseVerifFile.getFileType());
dataCaseVerifExtFileService.save(dataCaseVerifExtFile);
return Result.success();
}
@Operation(summary = "处置明细上传")
@PostMapping("disposalDetails")
public Result<Boolean> disposalDetails(@RequestBody CaseVerifDisposalDetails body) {
DataCaseVerifExt dataCaseVerifExt = new DataCaseVerifExt();
return Result.success();
}
} }

14
src/main/java/com/biutag/supervision/controller/books/NegativeBookController.java

@ -226,4 +226,18 @@ public class NegativeBookController {
} }
@GetMapping("export/mail12337")
public void exportByMail12337(NegativeQueryParam param, HttpServletResponse response) throws IOException {
param.setCurrent(1);
param.setSize(100000);
List<DataPetitionComplaintExportGabxfVo> list = new ArrayList<>();
String headerValue = "attachment; filename=\"" + URLEncoder.encode("12337信访投诉数据台账.xlsx", "UTF-8") + "\"";
response.setHeader("Content-Disposition", headerValue);
response.setContentType("application/octet-stream");
EasyExcel.write(response.getOutputStream(), DataPetitionComplaintExportGabxfVo.class).inMemory(Boolean.TRUE).sheet("12337信访投诉数据台账").doWrite(list);
}
} }

11
src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java

@ -5,9 +5,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.biutag.supervision.constants.enums.DepartLevelEnum; import com.biutag.supervision.constants.enums.DepartLevelEnum;
@ -86,14 +84,7 @@ public class DataCaseVerifController {
public void doAfterAllAnalysed(AnalysisContext analysisContext) { public void doAfterAllAnalysed(AnalysisContext analysisContext) {
} }
}).build(); }).build().read(EasyExcel.readSheet(0).build());
ReadSheet sheet = EasyExcel.readSheet(0).build();
try {
excelReader.read(sheet);
} catch (ExcelDataConvertException e) {
log.error(e.getMessage(), e);
throw new RuntimeException("日期格式错误");
}
excelReader.close(); excelReader.close();
return Result.success(list); return Result.success(list);
} }

11
src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaint12337Controller.java

@ -2,6 +2,7 @@ package com.biutag.supervision.controller.data;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
@ -15,10 +16,12 @@ import com.biutag.supervision.pojo.dto.DataPetition12337Dto;
import com.biutag.supervision.pojo.dto.DataPetition12337ExportDto; import com.biutag.supervision.pojo.dto.DataPetition12337ExportDto;
import com.biutag.supervision.pojo.entity.DataPetition12337; import com.biutag.supervision.pojo.entity.DataPetition12337;
import com.biutag.supervision.pojo.entity.Negative; import com.biutag.supervision.pojo.entity.Negative;
import com.biutag.supervision.pojo.entity.SupDepart;
import com.biutag.supervision.pojo.param.DataPetitionComplaintQueryParam; import com.biutag.supervision.pojo.param.DataPetitionComplaintQueryParam;
import com.biutag.supervision.pojo.vo.DataPetition12337Vo; import com.biutag.supervision.pojo.vo.DataPetition12337Vo;
import com.biutag.supervision.service.DataPetition12337Service; import com.biutag.supervision.service.DataPetition12337Service;
import com.biutag.supervision.service.NegativeService; import com.biutag.supervision.service.NegativeService;
import com.biutag.supervision.service.SupDepartService;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -82,6 +85,7 @@ public class DataPetitionComplaint12337Controller {
return Result.success(dataPetition12337Service.removeById(id)); return Result.success(dataPetition12337Service.removeById(id));
} }
private final SupDepartService departService;
@PostMapping("import") @PostMapping("import")
public Result<List<DataPetition12337Dto>> importExcel(@RequestPart("file") MultipartFile file) throws IOException { public Result<List<DataPetition12337Dto>> importExcel(@RequestPart("file") MultipartFile file) throws IOException {
log.info("文件导入中------------------------------"); log.info("文件导入中------------------------------");
@ -94,7 +98,12 @@ public class DataPetitionComplaint12337Controller {
@Override @Override
public void invoke(DataPetition12337Dto data, AnalysisContext analysisContext) { public void invoke(DataPetition12337Dto data, AnalysisContext analysisContext) {
if (StrUtil.isNotBlank(data.getReviewOrg())) {
List<SupDepart> departs = departService.list(new LambdaUpdateWrapper<SupDepart>().eq(SupDepart::getShortName, data.getReviewOrg()));
if (departs.size() == 1) {
data.setDepartId(departs.get(0).getId());
}
}
list.add(data); list.add(data);
} }
@Override @Override

78
src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java

@ -72,10 +72,27 @@ public class DataPetitionComplaintController {
@Override @Override
public void invoke(DataPetitionComplaintImportDto data, AnalysisContext analysisContext) { public void invoke(DataPetitionComplaintImportDto data, AnalysisContext analysisContext) {
// 处理单位
if (StrUtil.isNotBlank(data.getInvolveDepartName())) { if (StrUtil.isNotBlank(data.getInvolveDepartName())) {
List<SupDepart> departs = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getShortName, data.getInvolveDepartName())); String[] departParts = data.getInvolveDepartName().replace("长沙市公安局", "").split("-");
String departName = departParts[departParts.length - 1];
List<SupDepart> departs = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getShortName, departName));
if (departs.size() == 1) { if (departs.size() == 1) {
data.setDepartId(departs.get(0).getId()); data.setDepartId(departs.get(0).getId());
} else if (departParts.length > 1) {
String departPart = departParts[0].replace("公安", "");
List<SupDepart> departs2 = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getShortName, departPart));
if (departs2.size() == 1) {
data.setDepartId(departs2.get(0).getId());
}
}
} else {
if (StrUtil.isNotBlank(data.getTurnAround())) {
String departPart = data.getTurnAround().replace("公安", "");
List<SupDepart> departs = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getShortName, departPart));
if (departs.size() == 1) {
data.setDepartId(departs.get(0).getId());
}
} }
} }
list.add(data); list.add(data);
@ -106,17 +123,19 @@ public class DataPetitionComplaintController {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }
SupDepart depart = departService.getById(item.getDepartId()); if (StrUtil.isNotBlank(item.getDepartId())) {
if (depart.getLevel() == 2) { SupDepart depart = departService.getById(item.getDepartId());
dataPetitionComplaint.setSecondDepartId(depart.getId()); if (depart.getLevel() == 2) {
dataPetitionComplaint.setSecondDepartName(depart.getShortName()); dataPetitionComplaint.setSecondDepartId(depart.getId());
} dataPetitionComplaint.setSecondDepartName(depart.getShortName());
if (depart.getLevel() == 3) { }
dataPetitionComplaint.setThirdDepartId(depart.getId()); if (depart.getLevel() == 3) {
dataPetitionComplaint.setThirdDepartName(depart.getShortName()); dataPetitionComplaint.setThirdDepartId(depart.getId());
SupDepart parent = departService.getById(depart.getPid()); dataPetitionComplaint.setThirdDepartName(depart.getShortName());
dataPetitionComplaint.setSecondDepartId(parent.getId()); SupDepart parent = departService.getById(depart.getPid());
dataPetitionComplaint.setSecondDepartName(parent.getShortName()); dataPetitionComplaint.setSecondDepartId(parent.getId());
dataPetitionComplaint.setSecondDepartName(parent.getShortName());
}
} }
return dataPetitionComplaint; return dataPetitionComplaint;
}).toList(); }).toList();
@ -138,9 +157,13 @@ public class DataPetitionComplaintController {
@Override @Override
public void invoke(DataPetitionComplaintGjImportDto data, AnalysisContext analysisContext) { public void invoke(DataPetitionComplaintGjImportDto data, AnalysisContext analysisContext) {
if (StrUtil.isNotBlank(data.getHandleDepartName())) { if (StrUtil.isNotBlank(data.getHandleDepartName())) {
List<SupDepart> departs = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getName, data.getHandleDepartName())); // 处理单位
if (departs.size() == 1) { if (StrUtil.isNotBlank(data.getHandleDepartName())) {
data.setDepartId(departs.get(0).getId()); String departName = data.getHandleDepartName().replace("长沙市公安局", "");
List<SupDepart> departs = departService.list(new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getShortName, departName));
if (departs.size() == 1) {
data.setDepartId(departs.get(0).getId());
}
} }
} }
list.add(data); list.add(data);
@ -178,18 +201,21 @@ public class DataPetitionComplaintController {
dataPetitionComplaint.setInitialPetition(InitialPetition.REPEAT.getValue()); dataPetitionComplaint.setInitialPetition(InitialPetition.REPEAT.getValue());
} }
} }
SupDepart depart = departService.getById(item.getDepartId()); if (StrUtil.isNotBlank(item.getDepartId())) {
if (depart.getLevel() == 2) { SupDepart depart = departService.getById(item.getDepartId());
dataPetitionComplaint.setSecondDepartId(depart.getId()); if (depart.getLevel() == 2) {
dataPetitionComplaint.setSecondDepartName(depart.getShortName()); dataPetitionComplaint.setSecondDepartId(depart.getId());
} dataPetitionComplaint.setSecondDepartName(depart.getShortName());
if (depart.getLevel() == 3) { }
dataPetitionComplaint.setThirdDepartId(depart.getId()); if (depart.getLevel() == 3) {
dataPetitionComplaint.setThirdDepartName(depart.getShortName()); dataPetitionComplaint.setThirdDepartId(depart.getId());
SupDepart parent = departService.getById(depart.getPid()); dataPetitionComplaint.setThirdDepartName(depart.getShortName());
dataPetitionComplaint.setSecondDepartId(parent.getId()); SupDepart parent = departService.getById(depart.getPid());
dataPetitionComplaint.setSecondDepartName(parent.getShortName()); dataPetitionComplaint.setSecondDepartId(parent.getId());
dataPetitionComplaint.setSecondDepartName(parent.getShortName());
}
} }
return dataPetitionComplaint; return dataPetitionComplaint;
}).toList(); }).toList();
dataPetitionComplaintService.saveOrUpdateBatch(petitionComplaints); dataPetitionComplaintService.saveOrUpdateBatch(petitionComplaints);

18
src/main/java/com/biutag/supervision/controller/work/NegativeController.java

@ -17,6 +17,7 @@ import com.biutag.supervision.pojo.domain.NegativeDetail;
import com.biutag.supervision.pojo.dto.ActionDto; import com.biutag.supervision.pojo.dto.ActionDto;
import com.biutag.supervision.pojo.dto.NegativeDto; import com.biutag.supervision.pojo.dto.NegativeDto;
import com.biutag.supervision.pojo.dto.NegativeSpotCheckDto; import com.biutag.supervision.pojo.dto.NegativeSpotCheckDto;
import com.biutag.supervision.pojo.dto.flow.VerifyData;
import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.entity.*;
import com.biutag.supervision.pojo.model.UserAuth; import com.biutag.supervision.pojo.model.UserAuth;
import com.biutag.supervision.pojo.param.NegativeQueryParam; import com.biutag.supervision.pojo.param.NegativeQueryParam;
@ -70,6 +71,11 @@ public class NegativeController {
return Result.success(negativeService.get(id, workId)); return Result.success(negativeService.get(id, workId));
} }
@GetMapping("outer/{id}")
public Result<NegativeDetail> outerDetail(@PathVariable String id) {
return Result.success(negativeService.get(id, null));
}
@PostMapping @PostMapping
public Result<Boolean> add(@Validated(AddGroup.class) @RequestBody NegativeDto negativeDto) { public Result<Boolean> add(@Validated(AddGroup.class) @RequestBody NegativeDto negativeDto) {
negativeService.save(negativeDto); negativeService.save(negativeDto);
@ -255,4 +261,16 @@ public class NegativeController {
return Result.success(); return Result.success();
} }
@PostMapping("{id}/verifySubmit")
@Transactional(rollbackFor = Exception.class)
public Result<Void> verifySubmit(@PathVariable String id, @RequestBody VerifyData verifyData) {
Negative negative = negativeService.getById(id);
applyCompletionAction.updateNegative(negative, verifyData);
negativeService.update(new LambdaUpdateWrapper<Negative>()
.eq(Negative::getId, id)
.set(Negative::getProcessingStatus, ProcessingStatusEnum.completed.name())
.set(Negative::getFlowKey, FlowNodeEnum.COMPLETED.getKey()));
return Result.success();
}
} }

8
src/main/java/com/biutag/supervision/mapper/DataCaseVerifExtFileMapper.java

@ -0,0 +1,8 @@
package com.biutag.supervision.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.DataCaseVerifExtFile;
public interface DataCaseVerifExtFileMapper extends BaseMapper<DataCaseVerifExtFile> {
}

8
src/main/java/com/biutag/supervision/mapper/DataCaseVerifExtMapper.java

@ -0,0 +1,8 @@
package com.biutag.supervision.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.DataCaseVerifExt;
public interface DataCaseVerifExtMapper extends BaseMapper<DataCaseVerifExt> {
}

82
src/main/java/com/biutag/supervision/pojo/dto/DataPetition12337Distribute.java

@ -46,86 +46,4 @@ public class DataPetition12337Distribute {
private List<FileVo> thingFiles = new ArrayList<>(); private List<FileVo> thingFiles = new ArrayList<>();
@Schema(description = "信访投诉")
@Setter
@Getter
public static class DataPetitionComplaintGjImportDto {
// 信件编号
@ExcelProperty({"信访件编号"})
private String originId;
// 信访形式
@ExcelProperty({"信访形式"})
private String channelForFilingComplaints;
// 投诉人
@ExcelProperty({"姓名"})
private String responderName;
// 投诉人
@ExcelProperty({"身份证号"})
private String responderIdCode;
// 投诉人
@ExcelProperty({"住址"})
private String responderAddress;
// 手机号码
@ExcelProperty({"手机号码"})
private String responderPhone;
// 信访日期
@ExcelProperty({"信访日期"})
private String discoveryTime;
// 问题发生地
@ExcelProperty({"问题发生地"})
private String occurred;
// 信访内容
@ExcelProperty({"信访内容"})
@NotBlank(message = "信访内容为空")
private String thingDesc;
// 异常动态
@ExcelProperty({"异常动态"})
private String abnormal;
@ExcelProperty({"问题发生日期"})
private String happenTime;
@ExcelProperty({"信访人数"})
private Integer peopleNumber;
@ExcelProperty({"信访诉求"})
private String appeal;
// 业务类别
@ExcelProperty({"公安业务分类"})
private String businessTypeName;
// 档案编号
@ExcelProperty({"档案编号"})
private String fileNo;
@ExcelProperty({"转往处"})
private String turnAround;
@ExcelProperty({"办理方式"})
private String handingMethod;
@ExcelProperty({"具体承办单位"})
private String handleDepartName;
@ExcelProperty({"责任部门"})
private String involveDepartName;
@ExcelIgnore
private String departId;
}
} }

9
src/main/java/com/biutag/supervision/pojo/dto/DataPetition12337Dto.java

@ -1,7 +1,10 @@
package com.biutag.supervision.pojo.dto; package com.biutag.supervision.pojo.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -38,7 +41,8 @@ public class DataPetition12337Dto {
* 信息受理登记时间 * 信息受理登记时间
*/ */
@ExcelProperty("信息受理登记时间") @ExcelProperty("信息受理登记时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@NotNull(message = "信息受理登记时间不能为空")
private Date discoverTime; private Date discoverTime;
/** /**
@ -219,6 +223,7 @@ public class DataPetition12337Dto {
* 涉嫌违纪违法事项 * 涉嫌违纪违法事项
*/ */
@ExcelProperty("涉嫌违纪违法事项") @ExcelProperty("涉嫌违纪违法事项")
@NotBlank(message = "涉嫌违纪违法事项不能为空")
private String wjwfProject; private String wjwfProject;
/** /**
@ -551,6 +556,8 @@ public class DataPetition12337Dto {
@ExcelProperty("操作时间") @ExcelProperty("操作时间")
private String handleTime; private String handleTime;
@ExcelIgnore
@NotBlank(message = "核查办理单位不能为空")
private String departId; private String departId;
} }

11
src/main/java/com/biutag/supervision/pojo/dto/NegativeImportDto.java

@ -1,5 +1,6 @@
package com.biutag.supervision.pojo.dto; package com.biutag.supervision.pojo.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
@ -23,6 +24,7 @@ public class NegativeImportDto {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm")
@ExcelProperty("问题发生时间")
private LocalDateTime happenTime; private LocalDateTime happenTime;
// 问题来源 // 问题来源
@ -30,6 +32,7 @@ public class NegativeImportDto {
@NotBlank(message = "问题来源不能为空") @NotBlank(message = "问题来源不能为空")
private String problemSources; private String problemSources;
@ExcelIgnore
private String problemSourcesCode; private String problemSourcesCode;
// 业务类别 // 业务类别
@ -37,11 +40,13 @@ public class NegativeImportDto {
@ExcelProperty("业务类别") @ExcelProperty("业务类别")
private String businessTypeName; private String businessTypeName;
@ExcelIgnore
private String businessTypeCode; private String businessTypeCode;
@ExcelProperty("涉及警种") @ExcelProperty("涉及警种")
private String policeTypeName; private String policeTypeName;
@ExcelIgnore
private String policeType; private String policeType;
// 涉嫌问题 // 涉嫌问题
@ -49,7 +54,7 @@ public class NegativeImportDto {
@NotBlank(message = "涉嫌问题不能为空") @NotBlank(message = "涉嫌问题不能为空")
private String involveProblemStr; private String involveProblemStr;
// 涉嫌问题 @ExcelIgnore
private List<String> involveProblem = new ArrayList<>(); private List<String> involveProblem = new ArrayList<>();
// 反映人姓名 // 反映人姓名
@ -68,6 +73,7 @@ public class NegativeImportDto {
@ExcelProperty("涉及单位") @ExcelProperty("涉及单位")
private String involveDepartName; private String involveDepartName;
@ExcelIgnore
private String involveDepartId; private String involveDepartId;
// 涉及案件/警情编号 // 涉及案件/警情编号
@ -78,7 +84,8 @@ public class NegativeImportDto {
@ExcelProperty("专项督察") @ExcelProperty("专项督察")
private String specialSupervisionName; private String specialSupervisionName;
private String specialSupervision; @ExcelIgnore
private String SpecialSupervision;
// 通报期数 // 通报期数
@ExcelProperty("通报期数") @ExcelProperty("通报期数")

30
src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifDisposalDetails.java

@ -0,0 +1,30 @@
package com.biutag.supervision.pojo.dto.plugin;
import lombok.Getter;
import lombok.Setter;
/**
* @author wxc
* @date 2025/1/7
*/
@Setter
@Getter
public class CaseVerifDisposalDetails {
private String outerId;
// 警号
private String disposalAlarm;
// 单位
private String disposalDepart;
// 处置人身份证号
private String disposalIdNo;
// 0:已处置人,1:未处置人,2:暂未处置
private String disposalSituation;
// 处置情况说明
private String disposalSituationDescription;
}

25
src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifDisposalOpinion.java

@ -0,0 +1,25 @@
package com.biutag.supervision.pojo.dto.plugin;
import lombok.Getter;
import lombok.Setter;
/**
* @author wxc
* @date 2025/1/7
*/
@Setter
@Getter
public class CaseVerifDisposalOpinion {
private String outerId;
// 投诉性质
private String complaintNature;
// 处置意见
private String handlingSuggestions;
// 问题查实情况 属实、查明其他情况、不属实、部分属实
private String trueSituation;
}

22
src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifFile.java

@ -0,0 +1,22 @@
package com.biutag.supervision.pojo.dto.plugin;
import lombok.Getter;
import lombok.Setter;
/**
* @author wxc
* @date 2025/1/7
*/
@Setter
@Getter
public class CaseVerifFile {
private String outerId;
private String fileUrl;
private String fileName;
private String fileType;
}

17
src/main/java/com/biutag/supervision/pojo/dto/plugin/CaseVerifOuterId.java

@ -0,0 +1,17 @@
package com.biutag.supervision.pojo.dto.plugin;
import lombok.Getter;
import lombok.Setter;
/**
* @author wxc
* @date 2025/1/7
*/
@Setter
@Getter
public class CaseVerifOuterId {
private String caseNumber;
private String outerId;
}

10
src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerif.java

@ -78,4 +78,14 @@ public class DataCaseVerif {
// 源涉及单位 // 源涉及单位
private String sourceInvolveDepartName; private String sourceInvolveDepartName;
private String outerId;
// 来源
private String source;
private String creator;
// 状态
private String crxState;
} }

40
src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerifExt.java

@ -0,0 +1,40 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
@Setter
@Getter
public class DataCaseVerifExt {
//
@TableId(value = "outer_id")
private String outerId;
// 核查情况(是否属实)
@TableField("check_status")
private String checkStatus;
// 核查情况(是否属实)
@TableField("check_status_name")
private String checkStatusName;
// 问题核查情况
@TableField("check_status_desc")
private String checkStatusDesc;
private String involveDepartName;
private String blameEmpNo;
private String blameIdCode;
private String disposalSituationDescription;
private LocalDateTime createTime;
}

40
src/main/java/com/biutag/supervision/pojo/entity/DataCaseVerifExtFile.java

@ -0,0 +1,40 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
@Setter
@Getter
public class DataCaseVerifExtFile {
@TableId(type = IdType.AUTO)
private Integer id;
private String outerId;
//
@TableField("file_path")
private String filePath;
//
@TableField("file_name")
private String fileName;
//
@TableField("file_class_name")
private String fileClassName;
//
@TableField("file_class_id")
private Integer fileClassId;
//
@TableField("create_time")
private LocalDateTime createTime;
}

11
src/main/java/com/biutag/supervision/service/DataCaseVerifExtFileService.java

@ -0,0 +1,11 @@
package com.biutag.supervision.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.supervision.pojo.entity.DataCaseVerifExtFile;
import com.biutag.supervision.mapper.DataCaseVerifExtFileMapper;
import org.springframework.stereotype.Service;
@Service
public class DataCaseVerifExtFileService extends ServiceImpl<DataCaseVerifExtFileMapper, DataCaseVerifExtFile> {
}

11
src/main/java/com/biutag/supervision/service/DataCaseVerifExtService.java

@ -0,0 +1,11 @@
package com.biutag.supervision.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.supervision.pojo.entity.DataCaseVerifExt;
import com.biutag.supervision.mapper.DataCaseVerifExtMapper;
import org.springframework.stereotype.Service;
@Service
public class DataCaseVerifExtService extends ServiceImpl<DataCaseVerifExtMapper, DataCaseVerifExt> {
}

3
src/main/resources/application.yml

@ -46,3 +46,6 @@ fdfs:
knife4j: knife4j:
setting: setting:
language: zh_cn language: zh_cn
token:
timeout: 168 # 7 * 24 小时

BIN
src/main/resources/static/templates/问题批量导入标准模板.xlsx

Binary file not shown.

BIN
src/main/resources/static/templates/问题标准模板.xlsx

Binary file not shown.

2
src/test/java/com/biutag/supervision/tools/GenCodeTests.java

@ -25,7 +25,7 @@ public class GenCodeTests {
@Test @Test
public void genEntity() throws TemplateException, IOException { public void genEntity() throws TemplateException, IOException {
String tableName = "data_alarm_alarm_info"; String tableName = "data_case_verif_ext_file";
String tableSchema = "negative"; String tableSchema = "negative";
boolean genMapper = true; boolean genMapper = true;
boolean genService = true; boolean genService = true;

Loading…
Cancel
Save