Browse Source

fix: 移动督察问题修复

master
wxc 7 months ago
parent
commit
d626d2d112
  1. 2
      src/main/java/com/biutag/supervision/pojo/vo/FileVo.java
  2. 53
      src/main/java/com/biutag/supervision/service/SupTaskProblemAsyncService.java
  3. 20
      src/main/java/com/biutag/supervision/service/SupTaskProblemService.java
  4. 120
      src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleAsyncService.java
  5. 78
      src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleService.java

2
src/main/java/com/biutag/supervision/pojo/vo/FileVo.java

@ -19,4 +19,6 @@ public class FileVo {
private Integer fileClassId; private Integer fileClassId;
private String base64;
} }

53
src/main/java/com/biutag/supervision/service/SupTaskProblemAsyncService.java

@ -0,0 +1,53 @@
package com.biutag.supervision.service;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.biutag.supervision.mapper.SupTaskProblemMapper;
import com.biutag.supervision.pojo.entity.SupTaskProblem;
import com.biutag.supervision.pojo.vo.FileVo;
import com.biutag.supervision.util.JSON;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.util.Base64;
import java.util.List;
/**
* @author wxc
* @date 2025/7/17
*/
@RequiredArgsConstructor
@Service
public class SupTaskProblemAsyncService {
private final FileService fileService;
private final SupTaskProblemMapper baseMapper;
@Async
public void uploadFile(List<FileVo> files, Integer id) {
if (!files.isEmpty()) {
for (FileVo file : files) {
if (StrUtil.isNotBlank(file.getFilePath())) {
continue;
}
String base64 = file.getBase64();
if (base64.contains(",")) {
base64 = base64.substring(base64.indexOf(",") + 1);
}
byte[] decodedBytes = Base64.getDecoder().decode(base64);
ByteArrayInputStream is = new ByteArrayInputStream(decodedBytes);
String filePath = fileService.upload(is, is.available(), FileUtil.extName(file.getFileName()));
file.setFilePath(filePath);
file.setBase64(null);
}
LambdaUpdateWrapper<SupTaskProblem> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(SupTaskProblem::getId, id)
.set(SupTaskProblem::getFiles, JSON.toJSONString(files));
baseMapper.update(updateWrapper);
}
}
}

20
src/main/java/com/biutag/supervision/service/SupTaskProblemService.java

@ -37,6 +37,8 @@ public class SupTaskProblemService extends ServiceImpl<SupTaskProblemMapper, Sup
private final SupDictProblemTypeService problemTypeService; private final SupDictProblemTypeService problemTypeService;
private final SupTaskProblemAsyncService taskProblemAsyncService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean save(TaskProblemDto dto) { public boolean save(TaskProblemDto dto) {
SupTaskProblem problem = new SupTaskProblem(); SupTaskProblem problem = new SupTaskProblem();
@ -45,7 +47,7 @@ public class SupTaskProblemService extends ServiceImpl<SupTaskProblemMapper, Sup
problem.setHasProblem(dto.getHasProblem()); problem.setHasProblem(dto.getHasProblem());
problem.setDepartId(dto.getDepartId()); problem.setDepartId(dto.getDepartId());
problem.setDepartName(departService.getById(dto.getDepartId()).getShortName()); problem.setDepartName(departService.getById(dto.getDepartId()).getShortName());
problem.setFiles(JSON.toJSONString(dto.getFiles()));
if (dto.getHasProblem()) { if (dto.getHasProblem()) {
problem.setThingDesc(dto.getThingDesc()); problem.setThingDesc(dto.getThingDesc());
problem.setProblemTypeCode(dto.getProblemTypeCode()); problem.setProblemTypeCode(dto.getProblemTypeCode());
@ -58,7 +60,11 @@ public class SupTaskProblemService extends ServiceImpl<SupTaskProblemMapper, Sup
} }
} }
problem.setCreateTime(LocalDateTime.now()); problem.setCreateTime(LocalDateTime.now());
try {
problem.setCreateUsername(UserContextHolder.getCurrentUser().getUserName()); problem.setCreateUsername(UserContextHolder.getCurrentUser().getUserName());
} catch (RuntimeException e) {
}
problem.setDistributionState(DistributionStateEnum.UNDISTRIBUTED.getValue()); problem.setDistributionState(DistributionStateEnum.UNDISTRIBUTED.getValue());
if (StrUtil.isNotBlank(dto.getTaskId())) { if (StrUtil.isNotBlank(dto.getTaskId())) {
SupTask task = taskService.getById(dto.getTaskId()); SupTask task = taskService.getById(dto.getTaskId());
@ -80,7 +86,17 @@ public class SupTaskProblemService extends ServiceImpl<SupTaskProblemMapper, Sup
} }
} }
} }
return save(problem); if (dto.getFiles().stream().noneMatch(item -> StrUtil.isBlank(item.getFilePath()) && StrUtil.isNotBlank(item.getBase64()))) {
problem.setFiles(JSON.toJSONString(dto.getFiles()));
}
boolean save = save(problem);
if (save) {
if (dto.getFiles().stream().anyMatch(item -> StrUtil.isBlank(item.getFilePath()) && StrUtil.isNotBlank(item.getBase64()))) {
// 异步处理
taskProblemAsyncService.uploadFile(dto.getFiles(), problem.getId());
}
}
return save;
} }
} }

120
src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleAsyncService.java

@ -0,0 +1,120 @@
package com.biutag.supervision.service;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.biutag.supervision.mapper.SupTaskTestingAlcoholPeopleMapper;
import com.biutag.supervision.pojo.dto.TaskProblemDto;
import com.biutag.supervision.pojo.dto.TaskTestingAlcoholPeopleDto;
import com.biutag.supervision.pojo.entity.SupDepart;
import com.biutag.supervision.pojo.entity.SupPolice;
import com.biutag.supervision.pojo.entity.SupTaskTestingAlcoholPeople;
import com.biutag.supervision.pojo.vo.FileVo;
import com.biutag.supervision.util.JSON;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
import java.util.List;
import java.util.Objects;
/**
* @author wxc
* @date 2025/7/17
*/
@RequiredArgsConstructor
@Service
public class SupTaskTestingAlcoholPeopleAsyncService {
private final FileService fileService;
private final SupTaskTestingAlcoholPeopleMapper baseMapper;
private final SupTaskProblemService taskProblemService;
private final SupPoliceService policeService;
private final SupDepartService departService;
@Async
public void uploadFile(TaskTestingAlcoholPeopleDto dto) {
List<FileVo> testingFiles = dto.getTestingFiles().stream().filter(item -> StrUtil.isNotBlank(item.getBase64())).toList();
if (!testingFiles.isEmpty()) {
for (FileVo testingFile : testingFiles) {
String base64 = testingFile.getBase64();
if (base64.contains(",")) {
base64 = base64.substring(base64.indexOf(",") + 1);
}
byte[] decodedBytes = Base64.getDecoder().decode(base64);
ByteArrayInputStream is = new ByteArrayInputStream(decodedBytes);
String filePath = fileService.upload(is, is.available(), FileUtil.extName(testingFile.getFileName()));
testingFile.setFilePath(filePath);
testingFile.setBase64(null);
}
LambdaUpdateWrapper<SupTaskTestingAlcoholPeople> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(SupTaskTestingAlcoholPeople::getTaskId, dto.getTaskId())
.eq(SupTaskTestingAlcoholPeople::getEmpNo, dto.getEmpNo())
.set(SupTaskTestingAlcoholPeople::getTestingFiles, JSON.toJSONString(testingFiles));
baseMapper.update(updateWrapper);
}
dto.setTestingFiles(testingFiles);
saveProblem(dto);
}
public void saveProblem(TaskTestingAlcoholPeopleDto dto) {
if ("已检测".equals(dto.getTestingResult())) {
if ("饮酒".equals(dto.getDrinkResult()) || "是".equals(dto.getIsIllegalBanquet())) {
SupPolice police = policeService.getByEmpNo(dto.getEmpNo());
SupDepart depart = departService.getById(police.getOrgId());
TaskProblemDto problemDto = new TaskProblemDto();
TaskProblemDto.People people = new TaskProblemDto.People();
people.setName(police.getName());
people.setEmpNo(police.getEmpNo());
people.setIdCode(police.getIdCode());
problemDto.setHasProblem(true);
problemDto.setDepartId(police.getOrgId());
problemDto.setPeoples(List.of(people));
problemDto.setTaskId(dto.getTaskId());
problemDto.setFiles(dto.getTestingFiles());
// XX年X月X日X时X分,在“公安部六项规定”督察中,发现“XX”单位的“X”存在“违规宴请”的问题情况,请立即组织核实其当时情况。
// XX年X月X日X时X分,在“公安部六项规定”督察中,发现“X”单位的“XX”存在“饮酒”的问题情况,请立即组织核实其当时情况.
String thingDesc = String.format("%s,在“公安部六项规定”督察中,", dto.getTestingTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分")));
if ("饮酒".equals(dto.getDrinkResult())) {
thingDesc += String.format("发现“%s”单位的“%s”存在“饮酒”%s的问题情况,",
depart.getName(),
police.getName(),
Objects.nonNull(dto.getAlcoholContent()) ? String.format("%s(mg/100ml)", dto.getAlcoholContent()) : "");
}
if ("是".equals(dto.getIsIllegalBanquet())) {
thingDesc += String.format("发现“%s”单位的“%s”存在“违规宴请”的问题情况,",
depart.getName(),
police.getName());
}
thingDesc += "请立即组织核实其当时情况。";
problemDto.setThingDesc(thingDesc);
taskProblemService.save(problemDto);
}
} else {
String unTestingDesc = "其他".equals(dto.getUnTestingDesc()) ? dto.getUnTestingDescOther() : dto.getUnTestingDesc();
if (!"请假".equals(unTestingDesc)) {
SupPolice police = policeService.getByEmpNo(dto.getEmpNo());
SupDepart depart = departService.getById(police.getOrgId());
TaskProblemDto problemDto = new TaskProblemDto();
TaskProblemDto.People people = new TaskProblemDto.People();
people.setName(police.getName());
people.setEmpNo(police.getEmpNo());
people.setIdCode(police.getIdCode());
problemDto.setHasProblem(true);
problemDto.setDepartId(police.getOrgId());
problemDto.setPeoples(List.of(people));
problemDto.setTaskId(dto.getTaskId());
// X年X月X日X时X分,在“公安部六项规定”督察中,发现“XX”单位的“XX”存在“联系不上”的问题情况,未参加监测,请立即组织核实其当时情况。
problemDto.setThingDesc(String.format("%s,在“公安部六项规定”督察中,发现“%s”单位的“%s”存在“%s”的问题情况,未参加监测,请立即组织核实其当时情况。",
dto.getTestingTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分")),
depart.getName(),
police.getName(),
unTestingDesc));
taskProblemService.save(problemDto);
}
}
}
}

78
src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleService.java

@ -7,30 +7,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.supervision.constants.enums.TaskStatusEnum; import com.biutag.supervision.constants.enums.TaskStatusEnum;
import com.biutag.supervision.mapper.SupTaskTestingAlcoholPeopleMapper; import com.biutag.supervision.mapper.SupTaskTestingAlcoholPeopleMapper;
import com.biutag.supervision.pojo.dto.TaskProblemDto;
import com.biutag.supervision.pojo.dto.TaskTestingAlcoholPeopleDto; import com.biutag.supervision.pojo.dto.TaskTestingAlcoholPeopleDto;
import com.biutag.supervision.pojo.entity.SupDepart;
import com.biutag.supervision.pojo.entity.SupPolice;
import com.biutag.supervision.pojo.entity.SupTaskTestingAlcoholPeople; import com.biutag.supervision.pojo.entity.SupTaskTestingAlcoholPeople;
import com.biutag.supervision.pojo.param.TaskTestingAlcoholPeopleQueryParam; import com.biutag.supervision.pojo.param.TaskTestingAlcoholPeopleQueryParam;
import com.biutag.supervision.pojo.vo.FileVo; import com.biutag.supervision.pojo.vo.FileVo;
import com.biutag.supervision.pojo.vo.TaskTestingAlcoholPeopleVo; import com.biutag.supervision.pojo.vo.TaskTestingAlcoholPeopleVo;
import com.biutag.supervision.util.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Objects;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class SupTaskTestingAlcoholPeopleService extends ServiceImpl<SupTaskTestingAlcoholPeopleMapper, SupTaskTestingAlcoholPeople> { public class SupTaskTestingAlcoholPeopleService extends ServiceImpl<SupTaskTestingAlcoholPeopleMapper, SupTaskTestingAlcoholPeople> {
private final SupTaskProblemService taskProblemService;
private final SupPoliceService policeService; private final SupTaskTestingAlcoholPeopleAsyncService taskTestingAlcoholPeopleAsyncService;
private final SupDepartService departService;
public Page<TaskTestingAlcoholPeopleVo> page(String taskId, TaskTestingAlcoholPeopleQueryParam queryParam) { public Page<TaskTestingAlcoholPeopleVo> page(String taskId, TaskTestingAlcoholPeopleQueryParam queryParam) {
QueryWrapper<SupTaskTestingAlcoholPeople> queryWrapper = new QueryWrapper<>(); QueryWrapper<SupTaskTestingAlcoholPeople> queryWrapper = new QueryWrapper<>();
@ -64,7 +54,6 @@ public class SupTaskTestingAlcoholPeopleService extends ServiceImpl<SupTaskTesti
.set(SupTaskTestingAlcoholPeople::getTestingResult, dto.getTestingResult()); .set(SupTaskTestingAlcoholPeople::getTestingResult, dto.getTestingResult());
if ("已检测".equals(dto.getTestingResult())) { if ("已检测".equals(dto.getTestingResult())) {
updateWrapper.set(SupTaskTestingAlcoholPeople::getDrinkResult, dto.getDrinkResult()) updateWrapper.set(SupTaskTestingAlcoholPeople::getDrinkResult, dto.getDrinkResult())
.set(SupTaskTestingAlcoholPeople::getTestingFiles, JSON.toJSONString(dto.getTestingFiles()))
.set(SupTaskTestingAlcoholPeople::getIsIllegalBanquet, dto.getIsIllegalBanquet()); .set(SupTaskTestingAlcoholPeople::getIsIllegalBanquet, dto.getIsIllegalBanquet());
if ("饮酒".equals(dto.getDrinkResult())) { if ("饮酒".equals(dto.getDrinkResult())) {
updateWrapper.set(SupTaskTestingAlcoholPeople::getAlcoholContent, dto.getAlcoholContent()); updateWrapper.set(SupTaskTestingAlcoholPeople::getAlcoholContent, dto.getAlcoholContent());
@ -73,66 +62,11 @@ public class SupTaskTestingAlcoholPeopleService extends ServiceImpl<SupTaskTesti
String unTestingDesc = "其他".equals(dto.getUnTestingDesc()) ? dto.getUnTestingDescOther() : dto.getUnTestingDesc(); String unTestingDesc = "其他".equals(dto.getUnTestingDesc()) ? dto.getUnTestingDescOther() : dto.getUnTestingDesc();
updateWrapper.set(SupTaskTestingAlcoholPeople::getUnTestingDesc, unTestingDesc); updateWrapper.set(SupTaskTestingAlcoholPeople::getUnTestingDesc, unTestingDesc);
} }
saveProblem(dto); long l = System.currentTimeMillis();
// 异步上传
taskTestingAlcoholPeopleAsyncService.uploadFile(dto);
System.out.println(System.currentTimeMillis() - l + "ms-----------------------------");
return update(updateWrapper); return update(updateWrapper);
} }
@Async
public void saveProblem(TaskTestingAlcoholPeopleDto dto) {
if ("已检测".equals(dto.getTestingResult())) {
if ("饮酒".equals(dto.getDrinkResult()) || "是".equals(dto.getIsIllegalBanquet())) {
SupPolice police = policeService.getByEmpNo(dto.getEmpNo());
SupDepart depart = departService.getById(police.getOrgId());
TaskProblemDto problemDto = new TaskProblemDto();
TaskProblemDto.People people = new TaskProblemDto.People();
people.setName(police.getName());
people.setEmpNo(police.getEmpNo());
people.setIdCode(police.getIdCode());
problemDto.setHasProblem(true);
problemDto.setDepartId(police.getOrgId());
problemDto.setPeoples(List.of(people));
problemDto.setTaskId(dto.getTaskId());
problemDto.setFiles(dto.getTestingFiles());
// XX年X月X日X时X分,在“公安部六项规定”督察中,发现“XX”单位的“X”存在“违规宴请”的问题情况,请立即组织核实其当时情况。
// XX年X月X日X时X分,在“公安部六项规定”督察中,发现“X”单位的“XX”存在“饮酒”的问题情况,请立即组织核实其当时情况.
String thingDesc = String.format("%s,在“公安部六项规定”督察中,", dto.getTestingTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分")));
if ("饮酒".equals(dto.getDrinkResult())) {
thingDesc += String.format("发现“%s”单位的“%s”存在“饮酒”%s的问题情况,",
depart.getName(),
police.getName(),
Objects.nonNull(dto.getAlcoholContent()) ? String.format("%s(mg/100ml)", dto.getAlcoholContent()) : "");
}
if ("是".equals(dto.getIsIllegalBanquet())) {
thingDesc += String.format("发现“%s”单位的“%s”存在“违规宴请”的问题情况,",
depart.getName(),
police.getName());
}
thingDesc += "请立即组织核实其当时情况。";
problemDto.setThingDesc(thingDesc);
taskProblemService.save(problemDto);
}
} else {
String unTestingDesc = "其他".equals(dto.getUnTestingDesc()) ? dto.getUnTestingDescOther() : dto.getUnTestingDesc();
if (!"请假".equals(unTestingDesc)) {
SupPolice police = policeService.getByEmpNo(dto.getEmpNo());
SupDepart depart = departService.getById(police.getOrgId());
TaskProblemDto problemDto = new TaskProblemDto();
TaskProblemDto.People people = new TaskProblemDto.People();
people.setName(police.getName());
people.setEmpNo(police.getEmpNo());
people.setIdCode(police.getIdCode());
problemDto.setHasProblem(true);
problemDto.setDepartId(police.getOrgId());
problemDto.setPeoples(List.of(people));
problemDto.setTaskId(dto.getTaskId());
// X年X月X日X时X分,在“公安部六项规定”督察中,发现“XX”单位的“XX”存在“联系不上”的问题情况,未参加监测,请立即组织核实其当时情况。
problemDto.setThingDesc(String.format("%s,在“公安部六项规定”督察中,发现“%s”单位的“%s”存在“%s”的问题情况,未参加监测,请立即组织核实其当时情况。",
dto.getTestingTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分")),
depart.getName(),
police.getName(),
unTestingDesc));
taskProblemService.save(problemDto);
}
}
}
} }

Loading…
Cancel
Save