Explorar el Código

1.龙洞堡机场预警修改

wxg hace 2 años
padre
commit
b14f796f16

+ 2 - 2
src/main/java/com/yx/face/controller/admin/UserControlEarlyWarningListController.java

@@ -59,7 +59,7 @@ public class UserControlEarlyWarningListController {
 
         AdminVO info = adminService.getInfo(userControlEarlyWarningDTO.getAdminId());
         if(info == null)throw new ServiceException("没有查询到账号信息");
-        if(info.getType() != 5)throw new ServiceException("预警人员只能添加到区级账号下");
+        if(info.getType() == 1)throw new ServiceException("预警人员只能添加到超管及以下的账号下");
         Integer insert = userControlEarlyWarningListService.addOrUpdate(userControlEarlyWarningDTO);
         if (insert == 1) return RestResponse.ok(true);
         else return RestResponse.error("操作失败");
@@ -70,7 +70,7 @@ public class UserControlEarlyWarningListController {
     public RestResult<List<String>> userControlEarlyWarningListExcel(@RequestParam("file") MultipartFile excelFile , @RequestParam("adminId")Integer adminId ) {
         AdminVO info = adminService.getInfo(adminId);
         if(info == null)throw new ServiceException("没有查询到账号信息");
-        if(info.getType() != 5)throw new ServiceException("预警人员只能添加到区级账号下");
+        if(info.getType() == 1)throw new ServiceException("预警人员只能添加到超管及以下的账号下");
 
         ExcelListenerUtils listener = new ExcelListenerUtils();  //ExcelListener
         try {

+ 2 - 1
src/main/java/com/yx/face/dao/UserControlEarlyWarningListDao.java

@@ -1,6 +1,7 @@
 package com.yx.face.dao;
 
 import com.yx.face.boot.component.tk.TKMapper;
+import com.yx.face.model.entity.Admin;
 import com.yx.face.model.entity.UserControlEarlyWarningList;
 import com.yx.face.model.search.UserControlEarlyWarningDelete;
 import com.yx.face.model.vo.AdminAndUserEarlyWarningVO;
@@ -30,7 +31,7 @@ public interface UserControlEarlyWarningListDao extends TKMapper<UserControlEarl
      * @return
      * 2022-01-29  修改 isControlEarlyWarning 这个只做前端的判定,不对后端的逻辑进行处理
      */
-    AdminAndUserEarlyWarningVO getAdminWarningInformation(@Param("deviceSn") String deviceSn, @Param("idNumber") String idNumber, @Param("isControlEarlyWarning") Integer isControlEarlyWarning);
+    AdminAndUserEarlyWarningVO getAdminWarningInformation(@Param("admin") Admin admin, @Param("idNumber") String idNumber, @Param("isControlEarlyWarning") Integer isControlEarlyWarning);
 
     List<UserControlEarlyWarningVO> getControlUnitList(Map<String, Object> map);
 

+ 3 - 0
src/main/java/com/yx/face/model/excel/UserControlEarlyWarningExcel.java

@@ -28,5 +28,8 @@ public class UserControlEarlyWarningExcel {
     @ExcelProperty(value = "布控人单位",index = 4)
     private String controlUnit;
 
+    @ExcelProperty(value = "错误信息",index = 5)
+    private String message;
+
 
 }

+ 2 - 1
src/main/java/com/yx/face/service/UserControlEarlyWarningListService.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
 import com.yx.face.boot.restful.RestDTO;
 import com.yx.face.boot.restful.RestResult;
 import com.yx.face.model.dto.UserControlEarlyWarningDTO;
+import com.yx.face.model.entity.Admin;
 import com.yx.face.model.entity.UserControlEarlyWarningList;
 import com.yx.face.model.search.UserControlEarlyWarningDelete;
 import com.yx.face.model.search.UserControlEarlyWarningSearch;
@@ -39,7 +40,7 @@ public interface UserControlEarlyWarningListService{
      * @param idNumber 身份证
      * @param faceLogId 现场照片
      */
-    void addWarningInformation(String deviceSn, String idNumber, Long faceLogId);
+    void addWarningInformation(Admin admin, String idNumber, Long faceLogId);
 
     /*获取当前账号可看到的布控单位列表*/
     List<UserControlEarlyWarningVO> getControlUnitList();

+ 1 - 1
src/main/java/com/yx/face/service/impl/AdminServiceImpl.java

@@ -106,7 +106,7 @@ public class AdminServiceImpl implements AdminService {
         adminLoginVO.setEmail();
         adminLoginVO.setGender();*/
         adminLoginVO.setType(adminInfo.getType());
-        adminLoginVO.setToken(JWTUtils.sign(adminInfo.getId().toString(), password, DateUtils.addDays(new Date(), 1)));
+        adminLoginVO.setToken(JWTUtils.sign(adminInfo.getId().toString(), password, DateUtils.addYears(new Date(), 1)));
         /*wxg 2021-11-4 增加省市区详细地址 开始*/
         adminLoginVO.setProvinceId(adminInfo.getProvinceId());
         adminLoginVO.setProvinceName(adminInfo.getProvinceName());

+ 18 - 16
src/main/java/com/yx/face/service/impl/FaceTBServiceImpl.java

@@ -65,6 +65,8 @@ public class FaceTBServiceImpl implements FaceTBService {
     private AsyncTriggerRetryImpl asyncTriggerRetry;
     @Resource
     private FaceTaskDao faceTaskDao;
+    @Resource
+    private AdminDao adminDao;
     @Autowired
     private TBDeviceFaceService tbDeviceFaceService;
 
@@ -619,24 +621,18 @@ public class FaceTBServiceImpl implements FaceTBService {
                 photo = buildImage(photo, sn + pin);
             }
             faceLog = new FaceLog();
+//            if (verifytype == 0) {
+//                userId = Long.valueOf(pin);
+//                UserInfo userInfo = userInfoDao.selectByPrimaryKey(userId);
+//                if(userInfo != null && userInfo.getPhone() !=null) faceLog.setPhone(userInfo.getPhone());
+//            } else {
+//                userId = 0L;
+//            }
             if (verifytype == 0) {
                 userId = Long.valueOf(pin);
-                UserInfo userInfo = userInfoDao.selectByPrimaryKey(userId);
-                if(userInfo != null && userInfo.getPhone() !=null) faceLog.setPhone(userInfo.getPhone());
             } else {
                 userId = 0L;
             }
-            if (verifytype == 0) {
-                if (facePassDao.getFacePassBySn(sn, userId, DateUtils.addMinutes(now, -2)) == null) {
-                    continue;
-                }
-                logTime = faceLogDao.getRecent(userId, sn);
-                if (logTime != null) {
-                    if (DateUtils.addSeconds(logTime, 30).getTime() > nowL) {
-                        continue;
-                    }
-                }
-            }
 
             faceLog.setRecordid(Long.valueOf(recordid));
             faceLog.setAction(action);
@@ -675,7 +671,10 @@ public class FaceTBServiceImpl implements FaceTBService {
             faceLog.setSfzBorn(sfzBorn);
             faceLog.setSfzApartment(sfzApartment);
             faceLog.setSfzAddress(sfzAddress);
-            faceLog.setAdminId(faceDeviceDao.getAdminIdBySn(sn));
+            FaceDevice faceDevice = faceDeviceDao.getFaceDeviceBySn(sn);
+            if(faceDevice != null){
+                faceLog.setAdminId(faceDevice.getAdminId());
+            }
             faceLog.setVerifyScore(verify_score);
             faceLog.setCreateTime(now);
             log.info("进出记录推送内容,姓名:{}, 身份证:{}, 健康码状态:{}", faceLog.getName(), faceLog.getCardid(), faceLog.getJkmStatus());
@@ -684,8 +683,11 @@ public class FaceTBServiceImpl implements FaceTBService {
                 faceLogDao.insertSelective(faceLog);
                 //短期通行记录
                 shortTermFaceLogDao.insertSelective(BeanUtil.copyProperties(faceLog, ShortTermFaceLog.class));
-                //预警数据插入
-                userControlEarlyWarningListService.addWarningInformation(faceLog.getDeviceSn(), faceLog.getCardid(), faceLog.getId());
+                Admin admin = adminDao.selectByPrimaryKey(faceDevice.getAdminId());
+                if(admin != null){
+                    //预警数据插入
+                    userControlEarlyWarningListService.addWarningInformation(admin, faceLog.getCardid(), faceLog.getId());
+                }
             }
 //            Map<String, String> maps = new HashMap<>(1);
 //            maps.put("face-log", JSONObject.toJSONString(faceLog));

+ 46 - 6
src/main/java/com/yx/face/service/impl/UserControlEarlyWarningListServiceImpl.java

@@ -1,7 +1,11 @@
 package com.yx.face.service.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.yx.face.boot.core.Constants;
 import com.yx.face.boot.restful.RestDTO;
 import com.yx.face.boot.restful.RestResponse;
 import com.yx.face.boot.restful.RestResult;
@@ -11,6 +15,7 @@ import com.yx.face.dao.UserControlEarlyWarningListDao;
 import com.yx.face.dao.UserControlEarlyWarningListLogDao;
 import com.yx.face.model.dto.UserControlEarlyWarningDTO;
 import com.yx.face.model.dto.UserWhitelistDTO;
+import com.yx.face.model.entity.Admin;
 import com.yx.face.model.entity.UserControlEarlyWarningList;
 import com.yx.face.model.entity.UserControlEarlyWarningListLog;
 import com.yx.face.model.excel.UserControlEarlyWarningExcel;
@@ -26,10 +31,14 @@ import com.yx.face.service.UserControlEarlyWarningListService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 /**
@@ -50,6 +59,8 @@ public class UserControlEarlyWarningListServiceImpl implements UserControlEarlyW
 
     @Autowired
     private AdminService adminService;
+    @Value("${web.address}")
+    private String address;
 
     @Override
     public Integer addOrUpdate(UserControlEarlyWarningDTO userControlEarlyWarningDTO) {
@@ -80,10 +91,11 @@ public class UserControlEarlyWarningListServiceImpl implements UserControlEarlyW
 
     @Override
     public RestResult<List<String>> userControlEarlyWarningListExcel(List<Object> datas, Integer adminId) {
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<>(datas.size());
+        List<UserControlEarlyWarningExcel> errList = new ArrayList<>(datas.size());
         for (int i = 0; i < datas.size(); i++) {
+            UserControlEarlyWarningExcel ucewe = (UserControlEarlyWarningExcel) datas.get(i);
             try {
-                UserControlEarlyWarningExcel ucewe = (UserControlEarlyWarningExcel) datas.get(i);
                 if (ucewe.getEarlyWarningIdNumber() == null)
                     throw new ServiceException("第" + (i + 2) + "行,预警人员身份证号不能为空");
 
@@ -97,9 +109,36 @@ public class UserControlEarlyWarningListServiceImpl implements UserControlEarlyW
                 }
             } catch (ServiceException e) {
                 list.add(e.getMessage());
+                ucewe.setMessage(e.getMessage());
+                errList.add(ucewe);
                 continue;
             }
         }
+        if (errList.size() > 0) {
+            String uploadExcel = Constants.UPLOAD_EXCEL;
+            String fileName = uploadExcel + "/错误记录-" + System.currentTimeMillis() + ".xlsx";
+
+            // 这里 需要指定写用哪个class去写
+            ExcelWriter excelWriter = null;
+            try {
+                Path directory = Paths.get(uploadExcel);
+                if (!Files.exists(directory)) {
+                    Files.createDirectories(directory);
+                }
+                excelWriter = EasyExcel.write(fileName, UserControlEarlyWarningExcel.class).build();
+                WriteSheet writeSheet = EasyExcel.writerSheet("错误记录").build();
+                excelWriter.write(errList, writeSheet);
+            } catch (Exception ed) {
+                ed.printStackTrace();
+            } finally {
+                // 千万别忘记finish 会帮忙关闭流
+                if (excelWriter != null) {
+                    excelWriter.finish();
+                }
+            }
+            String filePath = address.concat(fileName);
+            list.add(filePath);
+        }
         datas.clear();//结束后销毁不用的资源
         return RestResponse.ok(list);
     }
@@ -124,15 +163,16 @@ public class UserControlEarlyWarningListServiceImpl implements UserControlEarlyW
     /**
      * 插入匹配人员预警信息
      *
-     * @param deviceSn 设备编号
+     * @param admin 账号信息
      * @param idNumber 身份证
      * @param faceLogId  进出记录id
      */
     @Async
     @Override
-    public void addWarningInformation(String deviceSn, String idNumber, Long faceLogId) {
+    public void addWarningInformation(Admin admin, String idNumber, Long faceLogId) {
         // null 代表未查到
-        AdminAndUserEarlyWarningVO adminAndUserEarlyWarningVO = userControlEarlyWarningListDao.getAdminWarningInformation(deviceSn, idNumber, 1);
+        //查询上级账号信息 且开启布控的账号
+        AdminAndUserEarlyWarningVO adminAndUserEarlyWarningVO = userControlEarlyWarningListDao.getAdminWarningInformation(admin, idNumber, 1);
         if (adminAndUserEarlyWarningVO != null) {
             System.out.println(adminAndUserEarlyWarningVO);
             UserControlEarlyWarningListLog userControlEarlyWarningListLog = new UserControlEarlyWarningListLog();
@@ -142,7 +182,7 @@ public class UserControlEarlyWarningListServiceImpl implements UserControlEarlyW
             userControlEarlyWarningListLog.setControlUnit(adminAndUserEarlyWarningVO.getControlUnit());
             userControlEarlyWarningListLog.setControlPhone(adminAndUserEarlyWarningVO.getControlPhone());
             userControlEarlyWarningListLog.setControlName(adminAndUserEarlyWarningVO.getControlName());
-            userControlEarlyWarningListLog.setAdminId(adminAndUserEarlyWarningVO.getAdminId());
+            userControlEarlyWarningListLog.setAdminId(admin.getId());
             userControlEarlyWarningListLog.setStatus(1);
             userControlEarlyWarningListLog.setFaceLogId(faceLogId);
             System.out.println(userControlEarlyWarningListLog);

+ 17 - 10
src/main/resources/mapper/UserControlEarlyWarningListDao.xml

@@ -71,20 +71,27 @@
                 AND a.username = #{query.username}
             </if>
         </where>
-
+        order by u.id desc
 
     </select>
     <select id="getAdminWarningInformation" resultType="com.yx.face.model.vo.AdminAndUserEarlyWarningVO">
         SELECT
-               c.control_name as controlName ,
-               c.control_phone  as controlPhone ,
-               c.control_unit  as controlUnit,
-               c.admin_id as adminId
-        FROM face_device as a
-        LEFT JOIN admin as b on a.admin_id = b.id
-        LEFT JOIN user_control_early_warning_list as c on b.id  = c.admin_id
-        WHERE a.sn = #{deviceSn}
-          and c.early_warning_id_number = #{idNumber}
+            e.control_name AS controlName,
+            e.control_phone AS controlPhone,
+            e.control_unit AS controlUnit
+        FROM
+            user_control_early_warning_list e
+            LEFT JOIN admin a on a.id = e.admin_id
+        WHERE
+            e.early_warning_id_number = #{idNumber}
+          AND e.admin_id IN (
+            SELECT id FROM admin WHERE type IN ( 2, 3 ) AND province_id = #{admin.provinceId}
+            UNION
+            SELECT id FROM admin WHERE type = 4 AND city_id = #{admin.cityId}
+            UNION
+            SELECT id FROM admin WHERE id = #{admin.id}
+        )
+        order by a.type desc limit 1
     </select>
     <select id="getControlUnitList" resultType="com.yx.face.model.vo.UserControlEarlyWarningVO">
         select