|
@@ -2,6 +2,8 @@ package com.pj.project.tb_person_filing;
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
|
+import java.nio.charset.Charset;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -15,6 +17,7 @@ import cn.hutool.core.io.FileUtil;
|
|
import cn.hutool.core.util.IdcardUtil;
|
|
import cn.hutool.core.util.IdcardUtil;
|
|
import cn.hutool.core.util.RandomUtil;
|
|
import cn.hutool.core.util.RandomUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
+import cn.hutool.core.util.ZipUtil;
|
|
import cn.hutool.json.JSONArray;
|
|
import cn.hutool.json.JSONArray;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
@@ -34,10 +37,13 @@ import com.pj.current.task.TaskService;
|
|
import com.pj.project.tb_dept.TbDept;
|
|
import com.pj.project.tb_dept.TbDept;
|
|
import com.pj.project.tb_dept.TbDeptService;
|
|
import com.pj.project.tb_dept.TbDeptService;
|
|
import com.pj.project.tb_person_black.TbPersonBlack;
|
|
import com.pj.project.tb_person_black.TbPersonBlack;
|
|
|
|
+import com.pj.project.tb_person_filing.task.DelayIsuuedList;
|
|
import com.pj.project.tb_terminal.TbTerminal;
|
|
import com.pj.project.tb_terminal.TbTerminal;
|
|
import com.pj.project.tb_terminal.TbTerminalService;
|
|
import com.pj.project.tb_terminal.TbTerminalService;
|
|
import com.pj.project4sp.spcfg.SpCfgUtil;
|
|
import com.pj.project4sp.spcfg.SpCfgUtil;
|
|
import com.pj.project4sp.uploadfile.UploadConfig;
|
|
import com.pj.project4sp.uploadfile.UploadConfig;
|
|
|
|
+import com.pj.project4sp.uploadfile.UploadUtil;
|
|
|
|
+import com.pj.utils.sg.AjaxError;
|
|
import com.sun.imageio.plugins.common.ImageUtil;
|
|
import com.sun.imageio.plugins.common.ImageUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.poi.ss.util.ImageUtils;
|
|
import org.apache.poi.ss.util.ImageUtils;
|
|
@@ -76,6 +82,9 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
|
|
@Resource
|
|
@Resource
|
|
private ImportPersonListener importPersonListener;
|
|
private ImportPersonListener importPersonListener;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private TaskService taskService;
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 增
|
|
* 增
|
|
@@ -330,4 +339,65 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
|
|
is.close();
|
|
is.close();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void importFace(MultipartFile file) {
|
|
|
|
+ if (file.getSize() == 0) {
|
|
|
|
+ throw new AjaxError("上传文件不能为空");
|
|
|
|
+ }
|
|
|
|
+ String filename = file.getOriginalFilename();
|
|
|
|
+ //创建临时目录
|
|
|
|
+ String tempDir = uploadConfig.rootFolder + File.separator + RandomUtil.randomNumbers(6);
|
|
|
|
+ String fileDir = tempDir + File.separator + StrUtil.subBefore(filename,".",true);
|
|
|
|
+ File temFileDir = FileUtil.mkdir(tempDir);
|
|
|
|
+ try (InputStream is = file.getInputStream()) {
|
|
|
|
+ //解压
|
|
|
|
+ ZipUtil.unzip(is, temFileDir, Charset.forName("gbk"));
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new AjaxError("压缩包解析错误");
|
|
|
|
+ }
|
|
|
|
+ //说明是压缩的是文件夹
|
|
|
|
+ if (FileUtil.exist(fileDir)) {
|
|
|
|
+ tempDir = fileDir;
|
|
|
|
+ }
|
|
|
|
+ List<String> files = FileUtil.listFileNames(tempDir);
|
|
|
|
+ String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() + "/" +
|
|
|
|
+ uploadConfig.httpPrefix + "/face/";
|
|
|
|
+ List<TbPersonFiling> personFilings = new ArrayList<>();
|
|
|
|
+ for (String imageName : files) {
|
|
|
|
+ String idCard = StrUtil.subBefore(imageName, ".", true);
|
|
|
|
+ if (!IdcardUtil.isValidCard(idCard)) {
|
|
|
|
+ throw new AjaxError(idCard + "身份证号码不正确");
|
|
|
|
+ }
|
|
|
|
+ TbPersonFiling tbPersonFiling = this.findByIdCard(idCard);
|
|
|
|
+ if (tbPersonFiling == null) {
|
|
|
|
+ throw new AjaxError(idCard + "人员不存在");
|
|
|
|
+ }
|
|
|
|
+ String newFilename = StrUtil.replace(imageName, idCard, RandomUtil.randomString(16));
|
|
|
|
+ FileUtil.move(new File(tempDir + File.separator + imageName), new File(fileFolder + File.separator + newFilename), true);
|
|
|
|
+ // 对外暴露的http路径
|
|
|
|
+ String httpUrl = SystemObject.config.getDomain() + uploadConfig.httpPrefix + "/face/" + newFilename;
|
|
|
|
+ tbPersonFiling.setPhoto(httpUrl);
|
|
|
|
+ personFilings.add(tbPersonFiling);
|
|
|
|
+ }
|
|
|
|
+ this.updateBatchById(personFilings);
|
|
|
|
+ FileUtil.del(temFileDir);
|
|
|
|
+ //下发新的人脸到设备
|
|
|
|
+ personFilings = personFilings.stream().filter(tbPersonFiling -> tbPersonFiling.getJudgeState() == 1).collect(Collectors.toList());
|
|
|
|
+ taskService.addTask(new DelayIsuuedList(RandomUtil.randomNumbers(10), 2000, personFilings));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 批量下发到设备端
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ */
|
|
|
|
+ public void isuuedList(List<TbPersonFiling> list) {
|
|
|
|
+ List<TbTerminal> tbTerminalList = tbTerminalService.list();
|
|
|
|
+ tbTerminalList.stream().parallel().forEach(tbTerminal -> {
|
|
|
|
+ list.forEach(tbPersonFiling -> {
|
|
|
|
+ JSONObject params = builderParams(tbPersonFiling);
|
|
|
|
+ tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, tbTerminal);
|
|
|
|
+ });
|
|
|
|
+ tbTerminalService.startHeartCommand(tbTerminal.getSn());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|