Browse Source

fit: 新增文件base64表

fit: 禁酒督察新增督察动态字段
fit: 督察动态新增查看数量接口
fit: 督察问题新增创建人姓名字段
master
wxc 7 months ago
parent
commit
e6f57d45db
  1. 23
      src/main/java/com/biutag/supervision/controller/FileController.java
  2. 12
      src/main/java/com/biutag/supervision/controller/mobileSupervision/TaskController.java
  3. 2
      src/main/java/com/biutag/supervision/job/RiskJob.java
  4. 11
      src/main/java/com/biutag/supervision/mapper/FileBase64Mapper.java
  5. 20
      src/main/java/com/biutag/supervision/pojo/entity/FileBase64.java
  6. 2
      src/main/java/com/biutag/supervision/pojo/entity/SupTaskProblem.java
  7. 3
      src/main/java/com/biutag/supervision/pojo/entity/SupTaskTestingAlcohol.java
  8. 2
      src/main/java/com/biutag/supervision/pojo/param/TaskInspectionQueryParam.java
  9. 2
      src/main/java/com/biutag/supervision/pojo/vo/TaskCountVo.java
  10. 2
      src/main/java/com/biutag/supervision/pojo/vo/TaskVo.java
  11. 25
      src/main/java/com/biutag/supervision/service/FileService.java
  12. 1
      src/main/java/com/biutag/supervision/service/SupRiskPersonalService.java
  13. 7
      src/main/java/com/biutag/supervision/service/SupRiskPersonalSupRecordAsyncService.java
  14. 3
      src/main/java/com/biutag/supervision/service/SupTaskInspectionService.java
  15. 7
      src/main/java/com/biutag/supervision/service/SupTaskProblemAsyncService.java
  16. 5
      src/main/java/com/biutag/supervision/service/SupTaskProblemService.java
  17. 11
      src/main/java/com/biutag/supervision/service/SupTaskService.java
  18. 24
      src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleAsyncService.java
  19. 3
      src/main/java/com/biutag/supervision/service/SupTaskTestingAlcoholPeopleService.java
  20. 1
      src/main/java/com/biutag/supervision/service/TaskManagementService.java
  21. 4
      src/main/resources/mapper/SupTaskMapper.xml
  22. 6
      src/test/java/com/biutag/supervision/StrUtil.java

23
src/main/java/com/biutag/supervision/controller/FileController.java

@ -3,8 +3,10 @@ package com.biutag.supervision.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import com.biutag.supervision.mapper.FileBase64Mapper;
import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.dto.FileBase64Dto;
import com.biutag.supervision.pojo.entity.FileBase64;
import com.biutag.supervision.pojo.vo.FileVo;
import com.biutag.supervision.service.FileService;
import com.biutag.supervision.util.ImgUtils;
@ -21,6 +23,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.Optional;
@Slf4j
@RequiredArgsConstructor
@ -30,6 +33,8 @@ public class FileController {
private final FileService fileService;
private final FileBase64Mapper fileBase64Mapper;
@ResponseBody
@PostMapping("upload")
public Result<FileVo> upload(@RequestPart("file") MultipartFile file) throws IOException {
@ -44,17 +49,9 @@ public class FileController {
@PostMapping("upload/base64")
public Result<FileVo> upload(@RequestBody FileBase64Dto file) {
log.info("文件BASE64上传 upload------------------------------");
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.getOriginalFilename()));
return Result.success(new FileVo()
.setFileName(file.getOriginalFilename())
.setFilePath(filePath));
.setFilePath(fileService.uploadBase64(file.getBase64(), file.getOriginalFilename())));
}
@GetMapping("stream/**")
@ -78,12 +75,8 @@ public class FileController {
if (StrUtil.isBlank(filepath)) {
return Result.success(null);
}
InputStream is = fileService.download(filepath);
String base64 = Base64.getEncoder().encodeToString(is.readAllBytes());
if (ImgUtils.isImg(filepath)) {
base64 = String.format("data:image/%s;base64,", FileUtil.extName(filepath).toLowerCase()) + base64;
}
return Result.success(base64);
FileBase64 fileBase64 = fileBase64Mapper.selectById(filepath);
return Result.success(Optional.ofNullable(fileBase64).map(FileBase64::getBase64).orElse(null));
}
}

12
src/main/java/com/biutag/supervision/controller/mobileSupervision/TaskController.java

@ -1,8 +1,10 @@
package com.biutag.supervision.controller.mobileSupervision;
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.constants.enums.TaskStatusEnum;
import com.biutag.supervision.constants.enums.WorkStatusEnum;
import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.entity.SupTask;
import com.biutag.supervision.pojo.vo.TaskCountVo;
@ -34,6 +36,16 @@ public class TaskController {
return Result.success(taskService.getTaskCount());
}
@GetMapping("count/all")
public Result<TaskCountVo> countAll() {
long todoCount = taskService.count(new LambdaQueryWrapper<SupTask>().eq(SupTask::getTaskStatus, WorkStatusEnum.todo.name()));
long doneCount = taskService.count(new LambdaQueryWrapper<SupTask>().eq(SupTask::getTaskStatus, WorkStatusEnum.done.name()));
TaskCountVo taskCountVo = new TaskCountVo();
taskCountVo.setTodoCount(todoCount);
taskCountVo.setDoneCount(doneCount);
return Result.success(taskCountVo);
}
@PostMapping("{taskId}/submit")
public Result<Void> submit(@PathVariable String taskId) {
taskService.update(new LambdaUpdateWrapper<SupTask>().eq(SupTask::getId, taskId).set(SupTask::getTaskStatus, TaskStatusEnum.done.name()));

2
src/main/java/com/biutag/supervision/job/RiskJob.java

@ -69,7 +69,7 @@ public class RiskJob {
if (!riskPersonalSupRecordService.exists(new LambdaQueryWrapper<SupRiskPersonalSupRecord>()
.eq(SupRiskPersonalSupRecord::getTaskId, riskPersonal.getTaskId())
.eq(SupRiskPersonalSupRecord::getIdCode, riskPersonal.getIdCode())
.between(SupRiskPersonalSupRecord::getSupTime, now.minusMinutes(remainder), LocalDateTime.now()))) {
.between(SupRiskPersonalSupRecord::getSupTime, now.minusMinutes(remainder), now))) {
// 状态更新为未督察
riskPersonalService.update(new LambdaUpdateWrapper<SupRiskPersonal>().eq(SupRiskPersonal::getIdCode, riskPersonal.getIdCode())
.set(SupRiskPersonal::getWorkStatus, WorkStatusEnum.todo.name()));

11
src/main/java/com/biutag/supervision/mapper/FileBase64Mapper.java

@ -0,0 +1,11 @@
package com.biutag.supervision.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.FileBase64;
/**
* @author wxc
* @date 2025/7/23
*/
public interface FileBase64Mapper extends BaseMapper<FileBase64> {
}

20
src/main/java/com/biutag/supervision/pojo/entity/FileBase64.java

@ -0,0 +1,20 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Getter;
import lombok.Setter;
/**
* @author wxc
* @date 2025/7/23
*/
@Setter
@Getter
public class FileBase64 {
@TableId
private String filePath;
private String base64;
}

2
src/main/java/com/biutag/supervision/pojo/entity/SupTaskProblem.java

@ -59,6 +59,8 @@ public class SupTaskProblem {
private String createUsername;
private String createName;
private String distributionState;
private String taskType;

3
src/main/java/com/biutag/supervision/pojo/entity/SupTaskTestingAlcohol.java

@ -36,4 +36,7 @@ public class SupTaskTestingAlcohol {
@TableField("filter_object")
private String filterObject;
// 总结
private String summary;
}

2
src/main/java/com/biutag/supervision/pojo/param/TaskInspectionQueryParam.java

@ -17,4 +17,6 @@ public class TaskInspectionQueryParam extends BasePage {
private String type;
private String taskStatus;
}

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

@ -17,6 +17,8 @@ public class TaskCountVo {
private Long negativeTodoCount;
private Long photoNoneUseCount;
public TaskCountVo() {
}

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

@ -59,4 +59,6 @@ public class TaskVo {
//被督察人员
private Integer problemNumber;
private String summary;
}

25
src/main/java/com/biutag/supervision/service/FileService.java

@ -3,6 +3,9 @@ package com.biutag.supervision.service;
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.biutag.supervision.mapper.FileBase64Mapper;
import com.biutag.supervision.pojo.entity.FileBase64;
import com.biutag.supervision.util.ImgUtils;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import lombok.RequiredArgsConstructor;
@ -10,8 +13,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
@RequiredArgsConstructor
@Service
@ -19,6 +24,8 @@ public class FileService {
private final FastFileStorageClient fastFileStorageClient;
private final FileBase64Mapper fileBase64Mapper;
@Value("${fdfs.preview-url}")
private String FDFS_PREVIEW_URL;
@ -31,6 +38,24 @@ public class FileService {
return "/" + storePath.getFullPath();
}
public String uploadBase64(String base64, String originalFilename) {
if (base64.contains(",")) {
base64 = base64.substring(base64.indexOf(",") + 1);
}
byte[] decodedBytes = Base64.getDecoder().decode(base64);
ByteArrayInputStream is = new ByteArrayInputStream(decodedBytes);
String extName = FileUtil.extName(originalFilename);
String filePath = upload(is, is.available(), extName);
FileBase64 fileBase64 = new FileBase64();
fileBase64.setFilePath(filePath);
if (ImgUtils.isImg(originalFilename)) {
base64 = String.format("data:image/%s;base64,", extName.toLowerCase()) + base64;
}
fileBase64.setBase64(base64);
fileBase64Mapper.insert(fileBase64);
return filePath;
}
public InputStream download(String filePath) {
HttpResponse httpResponse = HttpUtil.createGet(FDFS_PREVIEW_URL + filePath)
.execute();

1
src/main/java/com/biutag/supervision/service/SupRiskPersonalService.java

@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.supervision.common.UserContextHolder;
import com.biutag.supervision.mapper.SupRiskPersonalMapper;
import com.biutag.supervision.mapper.SupRiskPersonalSupRecordMapper;
import com.biutag.supervision.pojo.entity.SupRiskPersonal;

7
src/main/java/com/biutag/supervision/service/SupRiskPersonalSupRecordAsyncService.java

@ -31,12 +31,7 @@ public class SupRiskPersonalSupRecordAsyncService {
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()));
String filePath = fileService.uploadBase64(base64, file.getFileName());
file.setFilePath(filePath);
file.setBase64(null);
}

3
src/main/java/com/biutag/supervision/service/SupTaskInspectionService.java

@ -34,7 +34,8 @@ public class SupTaskInspectionService extends ServiceImpl<SupTaskInspectionMappe
QueryWrapper<SupTaskInspection> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("t.task_type", TaskTypeEnum.inspection.name())
.like(StrUtil.isNotBlank(queryParam.getTaskName()), "t.task_name", queryParam.getTaskName())
.eq(StrUtil.isNotBlank(queryParam.getSupDepartId()), "t.sup_depart_id", queryParam.getSupDepartId());
.eq(StrUtil.isNotBlank(queryParam.getSupDepartId()), "t.sup_depart_id", queryParam.getSupDepartId())
.eq(StrUtil.isNotBlank(queryParam.getTaskStatus()), "t.task_status", queryParam.getTaskStatus());
return baseMapper.queryPage(Page.of(queryParam.getCurrent(), queryParam.getSize()), queryWrapper);
}

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

@ -35,12 +35,7 @@ public class SupTaskProblemAsyncService {
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()));
String filePath = fileService.uploadBase64(base64, file.getFileName());
file.setFilePath(filePath);
file.setBase64(null);
}

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

@ -14,6 +14,7 @@ import com.biutag.supervision.pojo.entity.SupPhoto;
import com.biutag.supervision.pojo.entity.SupTask;
import com.biutag.supervision.pojo.entity.SupTaskProblem;
import com.biutag.supervision.pojo.entity.SupTaskSelfexaminationContent;
import com.biutag.supervision.pojo.model.UserAuth;
import com.biutag.supervision.pojo.vo.FileVo;
import com.biutag.supervision.util.JSON;
import lombok.RequiredArgsConstructor;
@ -61,7 +62,9 @@ public class SupTaskProblemService extends ServiceImpl<SupTaskProblemMapper, Sup
}
problem.setCreateTime(LocalDateTime.now());
try {
problem.setCreateUsername(UserContextHolder.getCurrentUser().getUserName());
UserAuth user = UserContextHolder.getCurrentUser();
problem.setCreateUsername(user.getUserName());
problem.setCreateName(user.getNickName());
} catch (RuntimeException e) {
}

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

@ -10,9 +10,9 @@ import com.biutag.supervision.common.UserContextHolder;
import com.biutag.supervision.constants.enums.TaskTypeEnum;
import com.biutag.supervision.constants.enums.WorkStatusEnum;
import com.biutag.supervision.mapper.SupTaskMapper;
import com.biutag.supervision.pojo.entity.SupPhoto;
import com.biutag.supervision.pojo.entity.SupTask;
import com.biutag.supervision.pojo.entity.SupTaskPerson;
import com.biutag.supervision.pojo.entity.SupTaskProblem;
import com.biutag.supervision.pojo.model.NegativeWorkModel;
import com.biutag.supervision.pojo.model.UserAuth;
import com.biutag.supervision.pojo.param.NegativeQueryParam;
@ -23,9 +23,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Objects;
import java.util.stream.Collectors;
@RequiredArgsConstructor
@Service
@ -35,6 +34,8 @@ public class SupTaskService extends ServiceImpl<SupTaskMapper, SupTask> {
private final SupTaskPersonService personService;
private final SupPhotoService photoService;
public Page<TaskVo> pageTask(TaskQueryParam queryParam) {
UserAuth user = UserContextHolder.getCurrentUser();
QueryWrapper<SupTask> queryWrapper = new QueryWrapper<>();
@ -87,6 +88,10 @@ public class SupTaskService extends ServiceImpl<SupTaskMapper, SupTask> {
}
Page<NegativeWorkModel> workModelPage = negativeWorkService.page(new NegativeQueryParam(), WorkStatusEnum.todo.name());
taskCountVo.setNegativeTodoCount(workModelPage.getTotal());
Long photoNoneUseCount = photoService.count(new LambdaQueryWrapper<SupPhoto>()
.eq(SupPhoto::getCreateUsername, user.getUserName())
.eq(SupPhoto::getIsUse, false));
taskCountVo.setPhotoNoneUseCount(photoNoneUseCount);
return taskCountVo;
}

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

@ -1,23 +1,20 @@
package com.biutag.supervision.service;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.biutag.supervision.mapper.SupTaskTestingAlcoholMapper;
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.entity.*;
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;
@ -30,6 +27,7 @@ import java.util.Objects;
public class SupTaskTestingAlcoholPeopleAsyncService {
private final FileService fileService;
private final SupTaskTestingAlcoholMapper taskTestingAlcoholMapper;
private final SupTaskTestingAlcoholPeopleMapper baseMapper;
private final SupTaskProblemService taskProblemService;
private final SupPoliceService policeService;
@ -41,12 +39,7 @@ public class SupTaskTestingAlcoholPeopleAsyncService {
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()));
String filePath = fileService.uploadBase64(base64, testingFile.getFileName());
testingFile.setFilePath(filePath);
testingFile.setBase64(null);
}
@ -58,6 +51,13 @@ public class SupTaskTestingAlcoholPeopleAsyncService {
}
dto.setTestingFiles(testingFiles);
saveProblem(dto);
List<SupTaskTestingAlcoholPeople> peopleList = baseMapper.selectList(new LambdaQueryWrapper<SupTaskTestingAlcoholPeople>().eq(SupTaskTestingAlcoholPeople::getTaskId, dto.getTaskId()));
long detected = peopleList.stream().filter(item -> "已检测".equals(item.getTestingResult())).count();
long problemCount = taskProblemService.count(new LambdaQueryWrapper<SupTaskProblem>().eq(SupTaskProblem::getTaskId, dto.getTaskId()));
String summary = String.format("应检%s人、已检%s人,未检%s人,发现%s哥问题。", peopleList.size(), detected, peopleList.size() - detected, problemCount);
taskTestingAlcoholMapper.update(new LambdaUpdateWrapper<SupTaskTestingAlcohol>().eq(SupTaskTestingAlcohol::getTaskId, dto.getTaskId())
.set(SupTaskTestingAlcohol::getSummary, summary));
}
public void saveProblem(TaskTestingAlcoholPeopleDto dto) {

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

@ -66,7 +66,8 @@ public class SupTaskTestingAlcoholPeopleService extends ServiceImpl<SupTaskTesti
// 异步上传
taskTestingAlcoholPeopleAsyncService.uploadFile(dto);
System.out.println(System.currentTimeMillis() - l + "ms-----------------------------");
return update(updateWrapper);
boolean updated = update(updateWrapper);
return updated;
}
}

1
src/main/java/com/biutag/supervision/service/TaskManagementService.java

@ -144,6 +144,7 @@ public class TaskManagementService {
BeanUtils.copyProperties(dto, testingAlcohol);
testingAlcohol.setTaskId(task.getId());
testingAlcohol.setDataGenerationMethod(dto.getSamplingTarget());
testingAlcohol.setSummary(String.format("应检%s人、已检0人,未检0人,发现0个问题。", dto.getPersons().size()));
testingAlcoholService.save(testingAlcohol);
//处理关联关系
List<SupTaskTestingAlcoholSampling> samplings = new ArrayList<>();

4
src/main/resources/mapper/SupTaskMapper.xml

@ -18,7 +18,8 @@
i.task_content,
i.has_sign,
s.requirement,
s.type
s.type,
a.summary
from sup_task t
left join sup_task_person p on p.task_id = t.id
left join sup_task_inspection i on t.id = i.task_id
@ -42,6 +43,7 @@
i.has_sign,
s.requirement,
s.type,
a.summary,
count(DISTINCT tp.depart_id) depart_number,
count(tp.id) problem_number
from sup_task t

6
src/test/java/com/biutag/supervision/StrUtil.java

@ -1,6 +1,7 @@
package com.biutag.supervision;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson2.JSONObject;
@ -15,6 +16,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@ -97,9 +99,7 @@ public class StrUtil {
@Test
public void template3() throws FileNotFoundException {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String passwordEncoder = encoder.encode("123456");
System.out.println(passwordEncoder);
System.out.println(LocalDateTime.now().minusMinutes(240));
}
}

Loading…
Cancel
Save