Ver Fonte

1.地铁盘查

wxg há 2 anos atrás
pai
commit
e25241d88e

+ 43 - 0
src/main/java/com/metro/controller/OpenAPIController.java

@@ -0,0 +1,43 @@
+package com.metro.controller;
+
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.metro.baseRe.BaseResponse;
+import com.metro.entity.dto.DeviceDTO;
+import com.metro.service.OpenAPIService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 战果统计表 前端控制器
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-05-19
+ */
+@RestController
+@Api(tags = "对外的api接口")
+public class OpenAPIController {
+
+    @Autowired
+    private OpenAPIService openAPIService;
+
+    @ApiOperation("验证是否在临控区")
+    @ApiOperationSupport(order = 1)
+    @GetMapping("/selectByIdNum")
+    public BaseResponse<Boolean> selectByIdNum(@RequestParam("idNum")@ApiParam("身份证号") String idNum) {
+        return openAPIService.selectByIdNum(idNum);
+    }
+    @ApiOperation("设备获取信息")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/device/getInfo")
+    public Map<String,Object> selectByDeviceId(@RequestBody DeviceDTO deviceDTO) {
+        return openAPIService.selectByDeviceId(deviceDTO);
+    }
+}

+ 17 - 0
src/main/java/com/metro/entity/dto/DeviceDTO.java

@@ -0,0 +1,17 @@
+package com.metro.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @ClassName DeviceDTO
+ * @Author WXG
+ * @Date 2022/6/16 10:18
+ */
+@Data
+public class DeviceDTO {
+
+    @ApiModelProperty(value = "设备号")
+    private String device_id;
+}

+ 3 - 0
src/main/java/com/metro/entity/dto/JpersonEditDTO.java

@@ -37,5 +37,8 @@ public class JpersonEditDTO implements Serializable {
     @ApiModelProperty(value = "照片")
     private String photo;
 
+    @ApiModelProperty(value = "身份证号")
+    private String idNum;
+
 
 }

+ 3 - 0
src/main/java/com/metro/entity/po/JPersons.java

@@ -101,4 +101,7 @@ public class JPersons implements Serializable {
     @TableField("feature")
     private String feature;
 
+    @TableField("id_num")
+    private String idNum;
+
 }

+ 37 - 0
src/main/java/com/metro/entity/po/OrgCode.java

@@ -0,0 +1,37 @@
+package com.metro.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-06-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("org_code")
+public class OrgCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "company_id", type = IdType.AUTO)
+    private String companyId;
+
+    @TableField("company_name")
+    private String companyName;
+
+    @TableField("org_code")
+    private String orgCode;
+
+}

+ 43 - 0
src/main/java/com/metro/entity/po/SelfDatabase.java

@@ -0,0 +1,43 @@
+package com.metro.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+/**
+ * <p>
+ * 自建库
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-06-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("self_database")
+public class SelfDatabase implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 身份证
+     */
+    @TableField("id_num")
+    private String idNum;
+
+}

+ 3 - 0
src/main/java/com/metro/entity/ro/passrecords/SelectPassreCordsPageListResp.java

@@ -33,6 +33,9 @@ public class SelectPassreCordsPageListResp implements Serializable {
     @ApiModelProperty(value = "身份证号")
     private String cardId;
 
+    @ApiModelProperty(value = "证件照片")
+    private String idPhoto;
+
     @ApiModelProperty(value = "现场照片")
     private String scenePhoto;
 

+ 6 - 0
src/main/java/com/metro/entity/vo/JPersonVO.java

@@ -54,4 +54,10 @@ public class JPersonVO {
     @ApiModelProperty("是否是后台管理员账号 1-是   0-不是")
     private Integer isAdmin;
 
+    @ApiModelProperty(value = "密码")
+    private String passwd;
+
+    @ApiModelProperty(value = "身份证号")
+    private String idNum;
+
 }

+ 9 - 0
src/main/java/com/metro/entity/vo/WarningVO.java

@@ -22,6 +22,9 @@ import java.util.Date;
 @Accessors(chain = true)
 public class WarningVO implements Serializable {
 
+    @ApiModelProperty(value = "主键id")
+    private Integer id;
+
     @ApiModelProperty(value = "姓名")
     private String xm;
 
@@ -46,4 +49,10 @@ public class WarningVO implements Serializable {
     @ApiModelProperty(value = "通行时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date passTime;
+
+    @ApiModelProperty(value = "证件照片")
+    private String idPhoto;
+
+    @ApiModelProperty(value = "现场照片")
+    private String scenePhoto;
 }

+ 16 - 0
src/main/java/com/metro/mapper/OrgCodeMapper.java

@@ -0,0 +1,16 @@
+package com.metro.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.metro.entity.po.OrgCode;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-06-15
+ */
+public interface OrgCodeMapper extends BaseMapper<OrgCode> {
+
+}

+ 16 - 0
src/main/java/com/metro/mapper/SelfDatabaseMapper.java

@@ -0,0 +1,16 @@
+package com.metro.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.metro.entity.po.SelfDatabase;
+
+/**
+ * <p>
+ * 自建库 Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-06-15
+ */
+public interface SelfDatabaseMapper extends BaseMapper<SelfDatabase> {
+
+}

+ 19 - 0
src/main/java/com/metro/service/OpenAPIService.java

@@ -0,0 +1,19 @@
+package com.metro.service;
+
+import com.metro.baseRe.BaseResponse;
+import com.metro.entity.dto.DeviceDTO;
+
+import java.util.Map;
+
+/**
+ * @description:
+ * @ClassName OpenAPIService
+ * @Author WXG
+ * @Date 2022/6/15 15:42
+ */
+public interface OpenAPIService {
+    /*根据身份证号查看是否在临控表中*/
+    BaseResponse<Boolean> selectByIdNum(String idNum);
+    /*设备获取信息*/
+    Map<String, Object> selectByDeviceId(DeviceDTO deviceDTO);
+}

+ 10 - 0
src/main/java/com/metro/service/impl/JPersonsServiceImpl.java

@@ -18,6 +18,7 @@ import com.metro.security.JWTUtils;
 import com.metro.service.CompanyService;
 import com.metro.service.JPersonsService;
 import com.metro.utils.MapperManager;
+import com.metro.utils.SMSOrIdCardUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateUtils;
@@ -170,6 +171,15 @@ public class JPersonsServiceImpl implements JPersonsService {
                 throw new BusinessException("请选择地铁");
             }
         }
+        if(StringUtils.isNotEmpty(jPersons.getCompanyId()) && StringUtils.isNotEmpty(jPersons.getBranchId())){
+            if(StringUtils.isEmpty(jPersons.getIdNum())){
+                throw new BusinessException("民警身份证不能为空");
+            }else{
+                if(!SMSOrIdCardUtils.isIdCard(jPersons.getIdNum())){
+                    throw new BusinessException("身份证有误");
+                }
+            }
+        }
         Integer integer = null ;
         if(jpersonEditDTO.getId() == null ){
             jPersons.setRegTime(date);

+ 93 - 0
src/main/java/com/metro/service/impl/OpenAPIServiceImpl.java

@@ -0,0 +1,93 @@
+package com.metro.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.metro.baseRe.BaseResponse;
+import com.metro.entity.dto.DeviceDTO;
+import com.metro.entity.po.Company;
+import com.metro.entity.po.JDevices;
+import com.metro.entity.po.OrgCode;
+import com.metro.entity.po.SelfDatabase;
+import com.metro.mapper.CompanysMapper;
+import com.metro.mapper.JDevicesMapper;
+import com.metro.mapper.OrgCodeMapper;
+import com.metro.mapper.SelfDatabaseMapper;
+import com.metro.service.OpenAPIService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description:
+ * @ClassName OpenAPIServiceImpl
+ * @Author WXG
+ * @Date 2022/6/15 15:43
+ */
+@Service
+public class OpenAPIServiceImpl implements OpenAPIService {
+    @Resource
+    private SelfDatabaseMapper selfDatabaseMapper;
+    @Resource
+    private JDevicesMapper jDevicesMapper;
+    @Resource
+    private CompanysMapper companysMapper;
+    @Resource
+    private OrgCodeMapper orgCodeMapper;
+    @Override
+    public BaseResponse<Boolean> selectByIdNum(String idNum) {
+        if(StringUtils.isEmpty(idNum)){
+            throw new NullPointerException();
+        }
+        LambdaQueryWrapper<SelfDatabase> databaseLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        databaseLambdaQueryWrapper.eq(SelfDatabase::getIdNum, idNum);
+        List<SelfDatabase> selfDatabases = selfDatabaseMapper.selectList(databaseLambdaQueryWrapper);
+        if(selfDatabases !=null && selfDatabases.size() > 0){
+            return BaseResponse.fail("管控人员");
+        }
+        return BaseResponse.ok(false);
+    }
+
+    @Override
+    public Map<String, Object> selectByDeviceId(DeviceDTO deviceDTO) {
+        if(deviceDTO == null){
+            return getMapInfo(1001,"数据为空",null);
+        }
+        if(deviceDTO.getDevice_id() == null || StringUtils.isEmpty(deviceDTO.getDevice_id())){
+            return getMapInfo(1001,"设备号为空",null);
+        }
+        JDevices jDevices = jDevicesMapper.selectOne(
+                new LambdaQueryWrapper<JDevices>().eq(JDevices::getDeviceId, deviceDTO.getDevice_id())
+        );
+        if(jDevices == null){
+            return getMapInfo(1001,"设备号不存在",null);
+        }
+        Company company = companysMapper.selectOne(
+                new LambdaQueryWrapper<Company>()
+                        .eq(Company::getCompanyId, jDevices.getCompanyId())
+                        .eq(Company::getBranchId, jDevices.getBranchId())
+        );
+        if(company == null){
+            return getMapInfo(1001,"单位站点数据不存在",null);
+        }
+        OrgCode orgCode = orgCodeMapper.selectById(company.getCompanyId());
+        Map<String,Object> dataMap = new HashMap<>();
+        dataMap.put("company_id",company.getCompanyId());
+        dataMap.put("company_name",company.getCompanyName());
+        dataMap.put("branch_id",company.getBranchId());
+        dataMap.put("branch_name",company.getBranchName());
+        dataMap.put("org_code",orgCode == null?null:orgCode.getOrgCode());
+        return getMapInfo(1,"",dataMap);
+
+    }
+
+    private Map<String, Object> getMapInfo(int errCode, String errMsg ,Map<String,Object> dataMap) {
+        Map<String,Object> map = new HashMap<>();
+        map.put("errCode",errCode);
+        map.put("errMsg",errMsg);
+        map.put("data",dataMap);
+        return map;
+    }
+}

+ 8 - 0
src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java

@@ -33,6 +33,7 @@ import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -112,9 +113,16 @@ public class PassreCordsServiceImpl extends BaseService implements PassreCordsSe
         /*获取数据中companyMap 和barnchMap*/
         Map<String, Company> companyMap = companyService.getCompanyMapByList(records,WarningVO::getCompanyId);
         Map<String, Company> barnchMap = companyService.getBranchMapByList(records,WarningVO::getBranchId);
+        /*获取id列表 并根据idList获取数据列表*/
+        List<Integer> idList = records.stream().map(WarningVO::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<PassreCords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.in(PassreCords::getId, idList);
+        List<PassreCords> passreCords = passreCordsMapper.selectList(lambdaQueryWrapper);
+        Map<Integer, PassreCords> map = passreCords.stream().collect(Collectors.toMap(PassreCords::getId, Function.identity()));
 
         /*数据填入*/
         for (WarningVO record : records) {
+            BeanUtils.copyProperties(map.get(record.getId()),record);
             record.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
             record.setBranchName(barnchMap.get(record.getCompanyId()+record.getBranchId()) == null ?
                     "" : barnchMap.get(record.getCompanyId()+record.getBranchId()).getBranchName()).getBranchName();

+ 110 - 0
src/main/java/com/metro/utils/SMSOrIdCardUtils.java

@@ -0,0 +1,110 @@
+package com.metro.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.regex.Pattern;
+
+/**
+ * @author cyh
+ * @Description
+ * @date 2021/4/9 13:58
+ */
+public class SMSOrIdCardUtils {
+
+    //校验手机是否合规 2020年最全的国内手机号格式
+    private static final String REGEX_MOBILE = "^1\\d{10}$";
+
+    //校验身份证号码
+    private static final String REGEX_ID = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" + "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";
+
+
+    /**
+     * 校验手机号
+     *
+     * @param phone 手机号
+     * @return boolean true:是  false:否
+     */
+    public static boolean isMobile(String phone) {
+        return Pattern.matches(REGEX_MOBILE, phone);
+    }
+
+    /**
+     * 校验身份证
+     *
+     * @param IDNumber
+     * @return boolean true:是  false:否
+     */
+    public static boolean isIdCard(String IDNumber){
+        if (IDNumber == null || "".equals(IDNumber)) {
+            return false;
+        }
+        boolean matches = IDNumber.matches(REGEX_ID);
+
+        //判断第18位校验值
+        if (matches) {
+
+            if (IDNumber.length() == 18) {
+                try {
+                    char[] charArray = IDNumber.toCharArray();
+                    //前十七位加权因子
+                    int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
+                    //这是除以11后,可能产生的11位余数对应的验证码
+                    String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
+                    int sum = 0;
+                    for (int i = 0; i < idCardWi.length; i++) {
+                        int current = Integer.parseInt(String.valueOf(charArray[i]));
+                        int count = current * idCardWi[i];
+                        sum += count;
+                    }
+                    char idCardLast = charArray[17];
+                    int idCardMod = sum % 11;
+                    if (idCardY[idCardMod].equals(String.valueOf(idCardLast))) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    return false;
+                }
+            }
+        }
+        return matches;
+    }
+
+    /*
+    隐藏手机号中间的部分
+     */
+    public static String hidePhone(String phone){
+        if (StringUtils.isBlank(phone) || phone.length() != 11){
+            return phone;
+        }
+        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
+    }
+
+
+    /*
+    隐藏身份证中间的部分
+     */
+    public static String hideIdNumber(String idNumber){
+        if (StringUtils.isBlank(idNumber) || idNumber.length() != 18){
+            return idNumber;
+        }
+        return idNumber.substring(0, 4) +"*****" + idNumber.substring(14);
+    }
+
+    /*
+    隐藏姓名  的名部分
+    */
+    public static String hideName(String name){
+        String sub ="";
+        if(name.length()>=1){
+            for (int i = 0; i < name.length()-1; i++) {
+                sub+="*";
+            }
+            return name.substring(0,1)+sub;
+        }else{
+            return name;
+        }
+    }
+}

+ 1 - 1
src/main/resources/mapper/JPersonsMapper.xml

@@ -28,7 +28,7 @@
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id
-        , company_id, branch_id, card_id, xm, xb, photo, is_admin, bz, reg_time, update_timestamp, flag, account, passwd, area_id, phone, is_delete, valid_start_time, valid_end_time, feature
+        , company_id, branch_id, card_id, xm, xb, photo, is_admin, bz, reg_time, update_timestamp, flag, account, passwd, area_id, phone, is_delete, valid_start_time, valid_end_time, feature, id_num
     </sql>
 
     <select id="getPageList" resultType="com.metro.entity.vo.JPersonVO">

+ 7 - 0
src/main/resources/mapper/OrgCodeMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.metro.mapper.OrgCodeMapper">
+
+
+
+</mapper>

+ 1 - 7
src/main/resources/mapper/PassreCordsMapper.xml

@@ -5,13 +5,7 @@
 
     <select id="warningPageList" resultType="com.metro.entity.vo.WarningVO">
         SELECT
-        card_id,
-        xm,
-        phone,
-        company_id,
-        branch_id,
-        max(id) as id,
-        max(pass_time) as passTime
+        max(id) as id
         from j_passrecords
         <where>
             pass in(0,1,3)

+ 6 - 0
src/main/resources/mapper/SelfDatabaseMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.metro.mapper.SelfDatabaseMapper">
+
+
+</mapper>