bug修复

This commit is contained in:
guo 2024-04-12 16:44:15 +08:00
parent e8a044b1de
commit d2a26b02ec
2 changed files with 89 additions and 12 deletions

View File

@ -1,12 +1,12 @@
package com.zhgd.xmgl.modules.worker.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ZipUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.redis.annotation.ApiIdempotent;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.entity.vo.*;
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
@ -18,13 +18,11 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.*;
@ -43,7 +41,9 @@ import java.util.*;
public class WorkerInfoController {
@Autowired
private IWorkerInfoService workerInfoService;
@Autowired
@Lazy
private RedisRepository redisRepository;
/**
* 添加
@ -653,8 +653,11 @@ public class WorkerInfoController {
})
@PostMapping(value = "/uploadWorkerInfoImgs")
public Result uploadWorkerInfoImgs(MultipartFile file, String projectSn) throws IOException {
if (!redisRepository.setNx("uploadWorkerInfoImgs:projectSn" + projectSn, 1000 * 30L)) {
return Result.ok("正在导入中,请耐心等待通知!");
}
workerInfoService.uploadWorkerInfoImgs(file, projectSn);
return Result.ok();
return Result.ok("导入中,请耐心等待通知!");
}
}

View File

@ -7,10 +7,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.core.util.*;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -32,6 +29,7 @@ import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.basicdata.service.UploadFileService;
import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl;
import com.zhgd.xmgl.modules.govtapi.GovtOpenApiService;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
@ -45,6 +43,7 @@ import com.zhgd.xmgl.modules.worker.entity.vo.*;
import com.zhgd.xmgl.modules.worker.enums.EduTypeEnum;
import com.zhgd.xmgl.modules.worker.mapper.*;
import com.zhgd.xmgl.modules.worker.service.*;
import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.util.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
@ -61,6 +60,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
@ -79,6 +79,8 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
@Autowired
private AsyncJiLianDa asyncJiLianDa;
@Autowired
private NoticeServiceImpl noticeService;
@Autowired
private UfaceDevMapper ufaceDevMapper;
@Autowired
private ICompanyService companyService;
@ -1982,16 +1984,88 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
@Override
public void uploadWorkerInfoImgs(MultipartFile file, String projectSn) throws IOException {
InputStream is = file.getInputStream();
String folder = basePath + "/" + IdUtil.simpleUUID();
new File(folder).mkdirs();
String zipPath = folder + "/" + IdUtil.simpleUUID() + ".zip";
String unzipFolder = folder + "/" + IdUtil.simpleUUID();
file.transferTo(new File(zipPath));
File file1 = ZipUtil.unzip(zipPath, unzipFolder);
File unzipFolderFile = ZipUtil.unzip(zipPath, unzipFolder, Charset.forName("gbk"));
File[] files = unzipFolderFile.listFiles();
if (files.length == 0) {
throw new OpenAlertException("上传zip文件为空");
}
StringBuilder formatSb = new StringBuilder();
StringBuilder failSb = new StringBuilder();
for (int i = 0; i < files.length; i++) {
File f = files[i];
traverseFile(f.getAbsolutePath(), formatSb, failSb);
}
//通知
if (SecurityUtils.getUser().getUserId() != null) {
String failStr = failSb.toString();
if (StrUtil.isNotBlank(failStr)) {
failStr = "更新失败>" + failStr;
}
String formatStr = formatSb.toString();
if (StrUtil.isNotBlank(formatStr)) {
formatStr = "图片格式不正确>" + formatStr;
}
String msg = "";
if (StrUtil.isNotBlank(failStr + formatStr)) {
msg = "失败的信息:" + failStr + formatStr;
}
noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, "更新人员图片成功", "2");
}
}
/**
* 真正递归的方法
*
* @param path 根目录的抽象路径
*/
public void traverseFile(String path, StringBuilder formatSb, StringBuilder failSb) {
File file = new File(path);
if (file.exists()) {
File[] fileArray = file.listFiles();
for (File f : fileArray) {
if (f.isDirectory()) {
System.out.println("【文件夹】-----" + f.getAbsolutePath());
// -----递归的方法体
traverseFile(f.getAbsolutePath(), formatSb, failSb);
} else {
System.out.println("【文件】-----" + f.getAbsolutePath());
String name = f.getName();
//处理
//名称_身份证.jpg
boolean isMatch = ReUtil.isMatch(".+_.+[.].+", name);
if (!isMatch) {
formatSb.append(name + ",");
continue;
}
String idCard = name.split("_")[1].split("\\.")[0];
String workerName = name.split("_")[0];
String suffix = name.split("\\.")[1];
String saveName = IdUtil.randomUUID() + "." + suffix;
FileUtil.move(f, new File(basePath + "/" + saveName), true);
List<WorkerInfo> workerInfos = workerInfoMapper.selectList(new LambdaQueryWrapper<WorkerInfo>()
.eq(WorkerInfo::getIdCard, idCard));
try {
for (WorkerInfo workerInfo : workerInfos) {
workerInfo.setFieldAcquisitionUrl(saveName);
editWorkerInfo(workerInfo);
}
} catch (Exception e) {
e.printStackTrace();
failSb.append(workerName + ":错误原因" + e.getMessage() + ",");
}
}
}
} else {
System.out.println("文件不存在!");
}
}
private void addDatas(List<WorkerInfo> infos, String del, ArrayList<GetWorkerInfoByDevVo.Worker> datas) {
for (WorkerInfo workerInfo : infos) {
GetWorkerInfoByDevVo.Worker worker = new GetWorkerInfoByDevVo.Worker();