From aa2143b7583644191f84e0d3f830f9cd968573ab Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 27 二月 2024 14:18:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java      |    4 
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java                         |   97 ++++++++++++++++++++++++++++++--
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java      |   21 ++++---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java |    2 
 4 files changed, 106 insertions(+), 18 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
index d5a038b..a1f5f3f 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -135,10 +135,27 @@
      *   鍒ゆ柇鏄惁涓烘湁鏁堣溅鐗屽彿
      */
     public static boolean checkCarNo(String str) {
-        String patt="^[浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹宸濋潚钘忕惣瀹佺Е宸漖\\\\d{5}[A-Z]$";
-        Pattern r = Pattern.compile(patt);
-        Matcher matcher = r.matcher(str);
-        return matcher.find();
+//        String patt="^[浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹宸濋潚钘忕惣瀹佺Е宸漖\\\\d{5}[A-Z]$";
+//        Pattern r = Pattern.compile(patt);
+//        Matcher matcher = r.matcher(str);
+//        String regex = "^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-HJ-NP-Z]{1}[A-HJ-NP-Z0-9]{4}[D0-9X]$";
+//        Pattern pattern = Pattern.compile(regex);
+//        Matcher matcher = pattern.matcher(str);
+//        boolean isMatcher = matcher.matches();
+//        return isMatcher;
+
+
+        if (str.length() >= 7 && str.length() <= 8){
+            Pattern pattern = Pattern.compile("^([浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹绮ら潚钘忓窛瀹佺惣浣块A-Z]{1}[a-zA-Z](([ABCDF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDF]))|[浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹绮ら潚钘忓窛瀹佺惣浣块A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9鎸傚璀︽腐婢砞{1})$");
+            Matcher m = pattern.matcher(str);
+            if (!m.matches()){
+                return false;
+            }
+            return true;
+        }else {
+            return false;
+        }
+
     }
 
     public static  String  getTuominStr(String s){
@@ -328,10 +345,78 @@
     int otherDeal = 4;//浠栦汉宸插鐞�
 }
 
+    /**
+     * 鑾峰彇杞︾墝绫诲瀷淇℃伅
+     *
+     * @param plateNo
+     * @return 杩斿洖null锛岃〃绀鸿溅鐗屼笉鍖归厤
+     */
+    public static VehiclePlateNoEnum getVehiclePlateNo(String plateNo) {
+        for (VehiclePlateNoEnum vehiclePlateNoEnum : VehiclePlateNoEnum.values()) {
+            Matcher matcher = vehiclePlateNoEnum.pattern.matcher(plateNo);
+            if (matcher.find()) {
+                return vehiclePlateNoEnum;
+            }
+        }
+        return null;
+    }
+
+
+    public enum VehiclePlateNoEnum {
+        /**
+         * 鍖归厤姘戠敤杞︾墝鍜屼娇棣嗚溅鐗�
+         * 1銆佺涓�浣嶄负姹夊瓙鐪佷唤缂╁啓
+         * 2銆佺浜屼綅涓哄ぇ鍐欏瓧姣嶅煄甯傜紪鐮�
+         * 3銆佸悗闈㈡槸5浣嶄粎鍚瓧姣嶅拰鏁板瓧鐨勭粍鍚�
+         */
+        CIVIL_LICENSE_PLATE_AND_EMBASSY_LICENSE_PLATE(1, "姘戠敤杞︾墝鍜屼娇棣嗚溅鐗�", Pattern.compile("^[浜触鍐�鏅嬭挋杈藉悏榛戞勃鑻忔禉鐨栭椊璧i瞾璞剛婀樼菠妗傜惣宸濊吹浜戞笣钘忛檿鐢橀潚瀹佹柊]{1}[A-Z]{1}[0-9a-zA-Z]{5}$")),
+        /**
+         * 鍖归厤鐗圭杞︾墝(鎸�,璀�,瀛�,棰�,娓�,婢�)
+         */
+        SPECIAL_LICENSE_PLATES(2, "鐗圭杞︾墝", Pattern.compile("^[浜触鍐�鏅嬭挋杈藉悏榛戞勃鑻忔禉鐨栭椊璧i瞾璞剛婀樼菠妗傜惣宸濊吹浜戞笣钘忛檿鐢橀潚瀹佹柊]{1}[A-Z]{1}[0-9a-zA-Z]{4}[鎸傝瀛﹂娓境]{1}$")),
+        /**
+         * 鍖归厤
+         */
+        ARMED_POLICE_CAR(3, "姝﹁杞︾墝", Pattern.compile("^WJ[浜触鍐�鏅嬭挋杈藉悏榛戞勃鑻忔禉鐨栭椊璧i瞾璞剛婀樼菠妗傜惣宸濊吹浜戞笣钘忛檿鐢橀潚瀹佹柊]?[0-9a-zA-Z]{5}$")),
+        /**
+         * 鍖归厤鍐涚墝
+         */
+        MILITARY_CAR(4, "鍐涚敤杞︾墝", Pattern.compile("^[A-Z]{2}[0-9]{5}$")),
+        /**
+         * 灏忓瀷鏂拌兘婧愯溅
+         * 1銆佸尮閰嶆柊鑳芥簮杞﹁締6浣嶈溅鐗�
+         */
+        SMALL_NEW_ENERGY_VEHICLE(5, "灏忓瀷鏂拌兘婧愯溅鐗�", Pattern.compile("^[浜触鍐�鏅嬭挋杈藉悏榛戞勃鑻忔禉鐨栭椊璧i瞾璞剛婀樼菠妗傜惣宸濊吹浜戞笣钘忛檿鐢橀潚瀹佹柊]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$")),
+        /**
+         * 澶у瀷鏂拌兘婧愯溅
+         */
+        LARGE_NEW_ENERGY_VEHICLE(6, "澶у瀷鏂拌兘婧愯溅鐗�", Pattern.compile("^[浜触鍐�鏅嬭挋杈藉悏榛戞勃鑻忔禉鐨栭椊璧i瞾璞剛婀樼菠妗傜惣宸濊吹浜戞笣钘忛檿鐢橀潚瀹佹柊]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$"));
+        private int code;
+
+        private String description;
+
+        private Pattern pattern;
+
+        VehiclePlateNoEnum(int code, String description, Pattern pattern) {
+            this.code = code;
+            this.description = description;
+            this.pattern = pattern;
+        }
+
+        public int getCode() {
+            return code;
+        }
+
+        public String getDescription() {
+            return description;
+        }
+    }
 
     public static void main(String[] args) {
-        System.out.println(Constants.checkCarNo("婀楤40D17"));
-        System.out.println(Constants.checkCarNo("鐨朅P0637"));
+        System.out.println(Constants.getVehiclePlateNo("婀楤D40D17").getDescription());
+
+        System.out.println(Constants.getVehiclePlateNo("婀楤140D17").getDescription());
+        System.out.println(Constants.getVehiclePlateNo("瀹緼P0637").getDescription());
     }
 
 
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 74de87d..bf9b156 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -701,8 +701,8 @@
                 .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE desc  limit 1) as visitsLastDate");
 
                 queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getCreaterId()),Member::getEditor,pageWrap.getModel().getCreaterId());
-        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType());
-        queryWrapper
+                queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType());
+                queryWrapper
                 .and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Member::getPhone,pageWrap.getModel().getName())
                         .or().like(Member::getName,pageWrap.getModel().getName()))
                 .and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 065884b..862ba48 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -683,11 +683,11 @@
     }
 
     private Member getMemberListParam(String cardno, Visits visits, List<Member> addList, List<Member> editList) {
-//        if(!StringUtils.isNotBlank(visits.getCarNos())
-////                &&!Constants.checkCarNo(visits.getCarNos())
-//        ){
-//            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝杞︾墝鍙枫��"+visits.getCarNos()+"銆戜笉鍚堟硶锛岃鏍稿疄鍚庨噸璇晘");
-//        }
+        if(!StringUtils.isNotBlank(visits.getCarNos())
+                &&Objects.isNull(Constants.getVehiclePlateNo(visits.getCarNos()))
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝杞︾墝鍙枫��"+visits.getCarNos()+"銆戜笉鍚堟硶锛岃鏍稿疄鍚庨噸璇晘");
+        }
         if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&cardno.length()!=18
             //&&!IdcardUtil.isValidCard(cardno)
         ){
@@ -730,7 +730,9 @@
                 throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ヨ韩浠借瘉鍙疯绂佹璁块棶鐢宠锛屽鏈夌枒闂紝璇疯仈绯绘偍鐨勬嫓璁夸汉杩涜鏍稿疄");
             }
             //鏍告煡棰勭害鐢ㄦ埛鏄惁瀛樺湪鏈绂荤殑棰勭害璁板綍
-            isExsitNoOutVisisRecord(member);
+
+//            isExsitNoOutVisisRecord(member);
+
             member.setFaceImg(visits.getFaceImg());
             member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null);
             member.setEditDate(visits.getCreateDate());
@@ -751,9 +753,10 @@
         }
         //鏍规嵁鎵嬫満鍙峰拰韬唤璇佸彿鐮佹煡璇� 褰撳墠棰勭害鐨勬椂闂存槸鍚︿笌鍏朵粬棰勭害璁板綍鏈夊啿绐�
         if (visitsMapper.selectCount(new QueryWrapper<Visits>().lambda()
-                        .notIn(Visits::getStatus,Constants.VisitStatus.cancel,Constants.VisitStatus.cancel,Constants.VisitStatus.noPass,Constants.VisitStatus.xfFail)
-                .and(ms -> ms.eq(Visits::getPhone, visits.getPhone())
-                        .or().eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno)))
+                        .notIn(Visits::getStatus,Constants.VisitStatus.cancel,Constants.VisitStatus.noPass,Constants.VisitStatus.xfFail)
+//                .and(ms -> ms.eq(Visits::getPhone, visits.getPhone())
+//                        .or().eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno)))
+                .eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno))
                 .and(ms -> ms.apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' ")
                         .or().apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ")
                 )) > Constants.ZERO) {
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
index bbbb7b3..ea6a205 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -986,7 +986,7 @@
         }
         Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getUserId()).last("limit 1"));
         if(Objects.isNull(member)){
-            return;
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛淇℃伅涓嶅瓨鍦紒");
         }
         List<Integer> doorIds = getRoleIdByParam(param.getRoleIds(),member);
         //鏇存柊鎺堟潈鏈夋晥鏈�

--
Gitblit v1.9.3