From d9c657aa78cf0ebe31933a87e63ca92edd8a8da3 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 六月 2026 09:57:50 +0800
Subject: [PATCH] 数据采集站

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java |  158 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 91 insertions(+), 67 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
index 8223921..c797984 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.HKResponseCode;
@@ -17,21 +16,22 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.DeviceMapper;
 import com.doumee.dao.business.MemberCardMapper;
-import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.dao.MemberMapper;
 import com.doumee.dao.business.join.EmpowerJoinMapper;
-import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.model.Member;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.Executor;
 
 /**
  * 娴峰悍闂ㄧ鎺堟潈涓氬姟Service瀹炵幇
@@ -52,11 +52,17 @@
     @Autowired
     private MemberCardMapper memberCardMapper;
 
+    @Autowired
+    @Qualifier("asyncExecutor")
+    private Executor asyncExecutor;
+
     /**
      * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
      */
     @Override
     public  Integer   syncEmpowerDetailData(Integer endId){
+        long startTime = System.currentTimeMillis();
+        log.info("syncEmpowerDetailData鎵ц寮�濮�, endId={}", endId);
 //        if(Constants.DEALING_HK_EMPOWER_DETAIL){
 //            return   ;
 //        }
@@ -64,14 +70,19 @@
             //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍
             List<Empower>  list = getDealListDetail(endId);
            if(list == null || list.size() ==0){
+               log.info("syncEmpowerDetailData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
                return null;
            }
-        Thread t1=new Thread(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    for(Empower c : list){
-                        TaskPersonDetailRequest param = new TaskPersonDetailRequest();
+        asyncExecutor.execute(() -> {
+            try {
+                for(Empower c : list){
+                        AuthResultPageRequest param = new AuthResultPageRequest();
+                        param.setPageNo(1);
+                        param.setPageSize(999);
+                        param.setBusinessNo(c.getHkId());
+                        BaseResponse<AuthResultPageResponse> response =HKService.authResultPage(param);
+
+                       /* TaskPersonDetailRequest param = new TaskPersonDetailRequest();
                         param.setPageNo(1);
                         param.setPageSize(10);
                         param.setPersonIds(new String[]{c.getMemberHkId()});
@@ -81,22 +92,24 @@
                         rec.setResourceType(c.getDeviceType());
                         param.setResourceInfo(rec);
                         //鏌ヨ涓嬪彂鐘舵��
-                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
+                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);*/
                         if(response!=null
-                                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                                 && response.getData()!=null
                                 && response.getData().getList() != null
                                 && response.getData().getList().size() > 0
                                 &&response.getData().getList().get(0) !=null){
-                                TaskPersonDetailResponse model = response.getData().getList().get(0);
-                            if (model.getPersonDownloadDetail()!=null ) {
+//                                TaskPersonDetailResponse model = response.getData().getList().get(0);
+
+                            AuthResultPageDetailResponse model = getAuthDetailByUserAndDevice(c,response.getData().getList());
+//                            if (model.getPersonDownloadDetail()!=null ) {
+                            if (model!=null ) {
                                 boolean isface = false;//鏄惁浜鸿劯涓嬪彂鎴愬姛
                                 boolean iscard = false;//鏄惁鏈夊崱鐗囦笅鍙戞垚鍔�
                                 //鏇存柊宸插畬鎴愪笅杞戒换鍔�
                                 String remark = "";
                                 String cardInfo ="";
-                                TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail();
-                                if (d.getCards() != null && d.getCards().size() > 0) {
+                               /* if (d.getCards() != null && d.getCards().size() > 0) {
                                     for (TaskPersonDetailCardInfoResponse card : d.getCards()) {
                                         if(StringUtils.equals(card.getErrorCode(),HKResponseCode.ReturnCode.RESPONSE_SUCCEE.getKey())){
                                             cardInfo += card.getId() + " ";
@@ -139,13 +152,31 @@
                                     }
                                 }
                                 //濡傛灉杩斿洖涓嬪彂鎴愬姛 鎴栬�� 浜鸿劯涓嬪彂鎴愬姛骞朵笖鍗$墖涓嬪彂鎴愬姛
-                                boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);
+                                boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);*/
+
+                                if (Constants.equalsInteger(model.getDownCardStatus(),0)) {
+                                    cardInfo = "鍗$墖涓嬪彂鏈彉鏇�";
+                                }else  if (Constants.equalsInteger(model.getDownCardStatus(),1)) {
+                                    cardInfo = "鍗$墖涓嬪彂鎴愬姛";
+                                }else {
+                                    cardInfo = "鍗$墖涓嬪彂澶辫触";
+                                }
+
+                                if ( Constants.equalsInteger(model.getDownFaceStatus(),0)) {
+                                    remark = "浜鸿劯涓嬪彂鏈彉鏇达紒";
+                                } else  if (Constants.equalsInteger(model.getDownFaceStatus(),1)) {
+                                    remark = "浜鸿劯涓嬪彂鎴愬姛锛�";
+                                }else{
+                                    remark = "浜鸿劯涓嬪彂澶辫触锛�";
+                                }
+                                //涓嬪彂鎴愬姛鎴栬�呮湭鍙樻洿
+                                boolean isSuccess = Constants.equalsInteger(model.getDownPersonStatus(),1)|| Constants.equalsInteger(model.getDownPersonStatus(),0) ;
                                 empowerMapper.update(null, new UpdateWrapper<Empower>()
                                         .lambda()
                                         .eq(Empower::getId, c.getId())
-                                        .set(Empower::getRemark, remark)
+                                        .set(Empower::getRemark,cardInfo+ remark)
                                         .set(Empower::getEditDate,new Date())
-                                        .set(Empower::getSendInfo, remark)
+                                        .set(Empower::getSendInfo,cardInfo+remark)
                                         .set(Empower::getSendStatus, isSuccess?Constants.EmpowerStatus.pass:Constants.EmpowerStatus.fail));
                                 if(isSuccess && Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
                                     //濡傛灉鏄垹闄ゆ潈闄愭垚鍔燂紝妫�鏌ユ槸鍚﹀垹闄や汉鍛�
@@ -176,13 +207,21 @@
                         }
                     }
                 }catch (Exception e){
-                    e.printStackTrace();
+                    log.error("syncEmpowerDetailData鎵ц寮傚父", e);
                 }
-            }
         });
-        t1.start();
+         log.info("syncEmpowerDetailData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
          return list.get(list.size()-1).getId();
 
+    }
+
+    private AuthResultPageDetailResponse getAuthDetailByUserAndDevice(Empower c, List<AuthResultPageDetailResponse> list) {
+        for(AuthResultPageDetailResponse t : list){
+            if(StringUtils.equals(t.getPersonId(),c.getMemberHkId()) && StringUtils.equals(t.getDeviceIndexCode(),c.getDeviceIndexCode())){
+                return t;
+            }
+        }
+        return null;
     }
 
 
@@ -200,7 +239,7 @@
         request.setPersonIds(new String[]{delHkIds});
         BaseResponse<List<UserDelResponse>> result =  HKService.delBatchUser(request);
         boolean succes = false;
-        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+        if(result !=null && StringUtils.equals(result.getCode(), HKConstants.RESPONSE_SUCCEE)){
             //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
             if(result.getData()!=null && result.getData().size()>0){
                 UserDelResponse tem = result.getData().get(0);
@@ -311,18 +350,15 @@
      */
     @Override
     public  Integer syncEmpowerResultData(Integer endId){
-//        if(Constants.DEALING_HK_EMPOWER_RESULT){
-//            return  null ;
-//        }
-//        Constants.DEALING_HK_EMPOWER_RESULT=true;
+        long startTime = System.currentTimeMillis();
+        log.info("syncEmpowerResultData鎵ц寮�濮�, endId={}", endId);
             //鏌ヨ鎵�鏈夋墽琛屼腑寰楁暟鎹�
          List<Empower>  list = getIngTaskListResult(Constants.formatIntegerNum(endId));
            if(list == null || list.size() ==0){
+               log.info("syncEmpowerResultData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
                return null;
            }
-            Thread t1=new Thread(new Runnable() {
-                @Override
-                public void run() {
+            asyncExecutor.execute(() -> {
                     try {
                         for(Empower c : list){
                             TaskProgressRequest param = new TaskProgressRequest();
@@ -355,13 +391,10 @@
                             }
                         }
                     }catch (Exception e1){
-                        e1.printStackTrace();
-                    }finally {
-                        Constants.DEALING_HK_EMPOWER_RESULT =false;
+                        log.error("syncEmpowerResultData鎵ц寮傚父", e1);
                     }
-                }
-            });
-            t1.start();
+                });
+            log.info("syncEmpowerResultData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
             return list.get(list.size()-1).getId();
 
     }
@@ -373,6 +406,8 @@
      */
     @Override
     public  Integer syncEmpowerFailData(Integer endId) {
+        long startTime = System.currentTimeMillis();
+        log.info("syncEmpowerFailData鎵ц寮�濮�, endId={}", endId);
         List<Empower> allList =getAllFailDealList( endId);
         if(allList!=null && allList.size()>0){
             Date date = new Date();
@@ -412,6 +447,7 @@
             }
             return allList.get(allList.size()-1).getId();
         }
+        log.info("syncEmpowerFailData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
         return null;
     }
     /**
@@ -419,28 +455,28 @@
      */
     @Override
     public  Integer syncEmpowerData(Integer endId) {
-//        if(Constants.DEALING_HK_EMPOWER){
-//            return  null ;
-//        }
-//        Constants.DEALING_HK_EMPOWER =true;
+        long startTime = System.currentTimeMillis();
+        log.info("syncEmpowerData鎵ц寮�濮�, endId={}", endId);
             //鍏堝垹闄ゆ墍鏈夐渶瑕佸彇娑堟巿鏉冪殑鏁版嵁
             if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
                     .eq(Empower::getSendStatus,Constants.EmpowerStatus.ing)) > 1000){
-                //濡傛灉褰撳墠浠诲姟澶т簬1000涓紙澶ф10涓换鍔★級
+                log.info("syncEmpowerData浠诲姟闃熷垪宸叉弧(>1000), 璺宠繃, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
                 return endId;
             }
             List<Empower> allList =getAllWaitDealList( endId);
             if(allList !=null && allList.size()>0){
                 //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁,閲嶆柊涓嬪彂鏈�鏂颁汉鍛樻潈闄愬嵆鍙�
-                Thread t1=new Thread(new Runnable() {
-                    @Override
-                    public void run() {
+                asyncExecutor.execute(() -> {
+                    try {
                         dealAllListTask(allList);
+                    }catch (Exception e){
+                        log.error("======================涓嬪彂鎺堟潈寮傚父", e);
                     }
                 });
-                t1.start();
+                log.info("syncEmpowerData鎻愪氦{}鏉℃暟鎹�, 鑰楁椂{}ms", allList.size(), System.currentTimeMillis() - startTime);
                 return allList.get(allList.size()-1).getId();
             }
+        log.info("syncEmpowerData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
         return null;
     }
     @Override
@@ -524,21 +560,7 @@
 
         }
     }
-    public class TaskRuner implements Runnable{
-        private    List<Empower> list ;
-        @Override
-        public void run() {
-            dealNewListTask(list);
-        }
-
-        public List<Empower> getList() {
-            return list;
-        }
-
-        public void setList(List<Empower> list) {
-            this.list = list;
-        }
-    }
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     private void dealAllListTask(List<Empower> list) {
         //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
         if(list ==null || list.size()==0){
@@ -555,7 +577,8 @@
         List<Empower> faceErrorList = new ArrayList<>();
         for(Empower c : list) {
             //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
-            if((Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) &&
+            if((Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO) &&
+                    Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) &&
                     Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE))
                     ||  Constants.equalsInteger(c.getDeviceDeleted(),1)){
                 //濡傛灉浜哄摗鎴栬�呰ō鍌欏垹闄わ紝鍙栨秷涓嬪彂
@@ -563,7 +586,8 @@
                 continue;
             }
             if(Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE)
-                   && Constants.equalsInteger(c.getIsdeleted(),1)){
+                    && Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE)
+                    && Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO)){
                 //濡傛灉浜哄憳宸茬鑱岋紝鏂板鎺堟潈鏃犻渶涓嬪彂锛屽彇娑堜笅鍙�
                 cacenList.add(c);
                 continue;
@@ -577,7 +601,7 @@
                 continue;
             }
             HKConstants.OPERA_TYPE flag = HKConstants.OPERA_TYPE.ADD;
-            if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){
+            if(Constants.equalsInteger(c.getIsdeleted(),Constants.ONE)){
                 flag = HKConstants.OPERA_TYPE.DEL;
             }
             if(addTaskData(c,taskId,flag.getKey())){
@@ -664,7 +688,7 @@
         if(list ==null || list.size()==0){
             return;
         }
-//        clearAllEmpowerFirst(list);
+//      clearAllEmpowerFirst(list);
         Date date = new Date();
         //鍒涘缓浠诲姟
         String taskId = hkTaskAddtion();
@@ -800,8 +824,8 @@
         queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
         queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
         queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus);
-        queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberFaceStatus);
-        queryWrapper.selectAs(Device::getOnline,Empower::getMemberHkStatus);
+        queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberHkStatus);
+        queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline);
         queryWrapper.selectAs(Device::getIsdeleted,Empower::getDeviceDeleted);
         queryWrapper.selectAs(Member::getIsdeleted,Empower::getMemberDeleted);
         queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);

--
Gitblit v1.9.3