From 51a208c7715ecfea9faeccd5ee56ed2d0a697c95 Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期六, 20 四月 2024 15:24:28 +0800
Subject: [PATCH] 工作调度

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java |  632 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 484 insertions(+), 148 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
index da9086c..46323fb 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -1,10 +1,14 @@
 package com.doumee.service.business.impl.hksync;
 
+import com.alibaba.fastjson.JSONObject;
 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;
+import com.doumee.core.haikang.model.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.respose.*;
@@ -20,7 +24,9 @@
 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.stereotype.Service;
 
 import java.util.ArrayList;
@@ -38,6 +44,8 @@
     @Autowired
     private EmpowerJoinMapper empowerMapper;
     @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
     private MemberMapper memberMapper;
     @Autowired
     private DeviceMapper deviceMapper;
@@ -48,138 +56,204 @@
      * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
      */
     @Override
-    public  void syncEmpowerDetailData(){
-        if(Constants.DEALING_HK_EMPOWER_DETAIL){
-            return   ;
-        }
-        Constants.DEALING_HK_EMPOWER_DETAIL = true;
-        try {
+    public  Integer   syncEmpowerDetailData(Integer endId){
+//        if(Constants.DEALING_HK_EMPOWER_DETAIL){
+//            return   ;
+//        }
+//        Constants.DEALING_HK_EMPOWER_DETAIL = true;
             //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍
-            List<Empower>  list = getDealListDetail();
+            List<Empower>  list = getDealListDetail(endId);
            if(list == null || list.size() ==0){
-               return;
+               return null;
            }
-           for(Empower c : list){
-               TaskPersonDetailRequest param = new TaskPersonDetailRequest();
-               param.setPageNo(1);
-               param.setPageSize(100);
-//               param.setPersonIds(new ArrayList<>());
-
-               param.setPersonIds(new String[]{c.getMemberHkId()});
-               param.setTaskId(c.getHkId());
-               TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
-               rec.setResourceIndexCode(c.getDeviceIndexCode());
-               rec.setResourceType(c.getDeviceType());
-//               rec.setChannelNos(c.getDeviceChannelNo().split(","));
-               param.setResourceInfo(rec);
-               //鏌ヨ涓嬪彂鐘舵��
-               BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
-               if(response!=null
-                       && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null
-                       ){
-                if(response.getData().getList() != null
-                       && response.getData().getList().size()>0 ){
-                   TaskPersonDetailResponse model = response.getData().getList().get(0);
-                   if(model != null && StringUtils.equals(model.getPersondownloadResult(),"0")){
-                       //鏇存柊宸插畬鎴愪笅杞戒换鍔�
-                           String remark = "";
-                           String cardInfo = "鍗$墖涓嬪彂澶辫触";
-                           TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail();
-                            if(d.getCards() !=null && d.getCards().size()>0){
-                                cardInfo = "鍗$墖锛氥��" ;
-                                for(TaskPersonDetailCardInfoResponse card : d.getCards()){
-                                    cardInfo +=card.getId()+" ";
+        Thread t1=new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    for(Empower c : list){
+                        TaskPersonDetailRequest param = new TaskPersonDetailRequest();
+                        param.setPageNo(1);
+                        param.setPageSize(10);
+                        param.setPersonIds(new String[]{c.getMemberHkId()});
+                        param.setTaskId(c.getHkId());
+                        TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
+                        rec.setResourceIndexCode(c.getDeviceIndexCode());
+                        rec.setResourceType(c.getDeviceType());
+                        param.setResourceInfo(rec);
+                        //鏌ヨ涓嬪彂鐘舵��
+                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
+                        if(response!=null
+                                && 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 ) {
+                                boolean isface = false;//鏄惁浜鸿劯涓嬪彂鎴愬姛
+                                boolean iscard = false;//鏄惁鏈夊崱鐗囦笅鍙戞垚鍔�
+                                //鏇存柊宸插畬鎴愪笅杞戒换鍔�
+                                String remark = "";
+                                String cardInfo ="";
+                                TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail();
+                                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() + " ";
+                                            iscard=true;
+                                        }
+                                    }
+                                    if(iscard){
+                                        cardInfo = "鍗$墖銆�"+cardInfo+"銆戜笅鍙戞垚鍔�";
+                                    }else{
+                                        cardInfo = "鍗$墖涓嬪彂澶辫触";
+                                    }
+                                }else {
+                                    cardInfo = "鍗$墖涓嬪彂澶辫触";
                                 }
-                                cardInfo += "銆戜笅鍙戞垚鍔�";
+                                if (d.getFaces() == null || d.getFaces().size() == 0) {
+                                    remark = cardInfo + "锛� 鏃犱汉鑴镐笅鍙戯紒";
+                                } else {
+                                    if(d.getFaces().get(0).getErrorCode() !=null && d.getFaces().get(0).getErrorCode().equals(HKConstants.RESPONSE_SUCCEE)){
+                                        isface=true;
+                                        remark = "" + cardInfo + "锛屼汉鑴镐笅鍙戞垚鍔燂紒";
+                                    }else{
+                                        isface=false;
+                                        if(d.getFaces().get(0).getErrorCode()!=null &&
+                                                (d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR.getKey()) ||
+                                                        d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR2.getKey()))){
+                                            //濡傛灉浜鸿劯涓嶅悎鏍�
+                                            memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                                                    .eq(Member::getId,c.getMemberId())
+                                                    .set(Member::getFaceStatus,Constants.THREE)
+                                                    .set(Member::getEditDate,new Date())
+                                            );
+                                            remark = "" + cardInfo + "锛屼汉鑴稿缓妯″け璐ワ紒";
+                                        }else  if(d.getFaces().get(0).getErrorCode()!=null && d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_DEVICE_NOFAVOR.getKey())){
+                                            //濡傛灉璁惧涓嶆敮鎸佷汉鑴镐笅鍙�
+                                            isface=true;//姝ゆ儏鍐典笉瑕佽�冭檻浜鸿劯涓嬪彂缁撴灉
+                                            remark = "" + cardInfo + "锛岃澶囦笉鏀寔浜鸿劯涓嬪彂锛�";
+                                        }else{
+                                            remark = "" + cardInfo + "锛屼汉鑴镐笅鍙戝け璐ワ紒";
+                                        }
+                                    }
+                                }
+                                //濡傛灉杩斿洖涓嬪彂鎴愬姛 鎴栬�� 浜鸿劯涓嬪彂鎴愬姛骞朵笖鍗$墖涓嬪彂鎴愬姛
+                                boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);
+                                empowerMapper.update(null, new UpdateWrapper<Empower>()
+                                        .lambda()
+                                        .eq(Empower::getId, c.getId())
+                                        .set(Empower::getRemark, remark)
+                                        .set(Empower::getEditDate,new Date())
+                                        .set(Empower::getSendInfo, 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) ){
+                                    //濡傛灉鏄垹闄ゆ潈闄愭垚鍔燂紝妫�鏌ユ槸鍚﹀垹闄や汉鍛�
+                                    checkDelMemberTask(c.getMemberId(),c.getMemberHkId());
+                                }
+                                continue;
                             }
-                           if(d.getFaces() == null || d.getFaces().size() ==0){
-                               remark  = cardInfo+"锛� 涓嶆敮鎸佷汉鑴歌澶囷紒";
-                           }else{
-                               remark = ""+cardInfo+"锛屼汉鑴镐笅鍙戞垚鍔燂紒";
-                           }
-                           empowerMapper.update(null,new UpdateWrapper<Empower>()
-                                   .lambda()
-                                   .eq(Empower::getId,c.getId() )
-                                   .set(Empower::getRemark,remark )
-                                   .set(Empower::getSendInfo,remark )
-                                   .set(Empower::getSendStatus,Constants.EmpowerStatus.pass) );
-                       }else{
-                           empowerMapper.update(null,new UpdateWrapper<Empower>()
-                               .lambda()
-                               .eq(Empower::getId,c.getId() )
-                               .set(Empower::getRemark,"涓嬪彂澶辫触" )
-                               .set(Empower::getSendInfo,"涓嬪彂澶辫触" )
-                               .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) );
-                       }
-                   }else{
-                    empowerMapper.update(null,new UpdateWrapper<Empower>()
-                            .lambda()
-                            .eq(Empower::getId,c.getId() )
-                            .set(Empower::getRemark,"涓嬪彂澶辫触" )
-                            .set(Empower::getSendInfo,"涓嬪彂澶辫触" )
-                            .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) );
+                        }
+                        //鎵�鏈夊紓甯告儏鍐甸兘鏍囪涓轰笅鍙戝け璐�
+                        //濡傛灉鏄凡鍒犻櫎鐨勬暟鎹紝涓嬪彂澶辫触锛堥槻姝㈣澶囩绾匡級锛屽垯灏濊瘯閲嶆柊涓嬪彂浠诲姟
+                        if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
+                            empowerMapper.update(null, new UpdateWrapper<Empower>()
+                                    .lambda()
+                                    .eq(Empower::getId, c.getId())
+                                    .set(Empower::getRemark, "鍒犻櫎鏉冮檺涓嬪彂澶辫触")
+                                    .set(Empower::getSendInfo, "鍒犻櫎鏉冮檺涓嬪彂澶辫触")
+                                    .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
+                                    .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
+                        }else{
+                            empowerMapper.update(null, new UpdateWrapper<Empower>()
+                                    .lambda()
+                                    .eq(Empower::getId, c.getId())
+                                    .set(Empower::getEditDate,new Date())
+                                    .set(Empower::getRemark, "涓嬪彂澶辫触")
+                                    .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
+                                    .set(Empower::getSendInfo, "涓嬪彂澶辫触")
+                                    .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
+                        }
                     }
-                   checkDelMemberTask(c.getMemberId());
-               }
-           }
-        }catch (Exception e){
-            e.printStackTrace();
-        }finally {
-            Constants.DEALING_HK_EMPOWER_DETAIL=false;
-        }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        });
+        t1.start();
+         return list.get(list.size()-1).getId();
 
     }
+
+
     /**
      * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭�
      * @param id
      * @param date
      */
-    private boolean doHkDeleteUser(Integer  id,String delHkIds,  Date date ) {
+    public static boolean doHkDeleteUser(Integer  id,String delHkIds,  Date date ,MemberMapper memberMapper,MemberCardMapper memberCardMapper) {
         if(StringUtils.isBlank(delHkIds)){
+
             return true;
         }
         UserDelRequest request = new UserDelRequest();
         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)){
-            List<String> fIds = new ArrayList<>();
             //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
             if(result.getData()!=null && result.getData().size()>0){
-                log.info("娴峰悍鍒犻櫎鐢ㄦ埛澶辫触锛�==============="+result.getData().get(0).getPersonId());
-                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
-                        .set(Member::getHkStatus,Constants.TWO)//鍚屾澶辫触
-                        .set(Member::getRemark,"鍚屾娴峰悍鍒犻櫎澶辫触")//鍚屾澶辫触
-                        .set(Member::getHkDate,date)
-                        .in(Member::getId, id));
+                UserDelResponse tem = result.getData().get(0);
+                if(tem!=null && StringUtils.equals(tem.getPersonId(),delHkIds)){
+                    UserByParamListRequest param = new UserByParamListRequest();
+                    param.setPersonIds(delHkIds);
+                    param.setPageNo(1);
+                    param.setPageSize(2);
+                    BaseResponse<BaseListPageResponse<UserInfoResponse>>  t =  HKService.personList(param);
+                    if(t!=null && t.getData()!=null && t.getData().getTotal()  ==0){
+                        //浜哄憳淇℃伅宸茶鍒犻櫎鐨勫紓甯� 浣滀负宸插垹闄ゆ垚鍔熷鐞�
+                        succes =true;
+                    }else{
+                        //鎺掗櫎浜哄憳淇℃伅宸茶鍒犻櫎鐨勫紓甯�
+                        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                                .set(Member::getHkStatus,Constants.TWO)//鍚屾澶辫触
+                                .set(Member::getRemark,"鍚屾娴峰悍鍒犻櫎澶辫触" + JSONObject.toJSONString(result.getData().get(0)))//鍚屾澶辫触
+                                .set(Member::getHkDate,date)
+                                .in(Member::getId, id));
+                    }
+                }
             }else{
                 //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
+                succes =true;
+            }
+            if(succes){
                 memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                         .set(Member::getHkStatus,Constants.ONE)//鍚屾鎴愬姛
-                        .set(Member::getRemark,"鍚屾娴峰悍鍒犻櫎澶辫触")//鍚屾澶辫触
+                        .set(Member::getRemark,"宸插悓姝�")//鍚屾澶辫触
                         .set(Member::getHkDate,date)
                         .in(Member::getId, id));
                 //鍒犻櫎鎵�鏈夌粦瀹氱殑鍗$墖淇℃伅
                 memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,id));
             }
-            return true;
         }
-        return false;
+        return succes;
     }
 
     /**
      * 妫�鏌ュ垹闄や汉鍛樼殑鏉冮檺鏄惁閮藉垹闄ゅ畬鎴愶紝濡傛灉鏉冮檺鍒犻櫎瀹屾垚锛� 杩涜娴峰悍浜哄憳鐨勫垹闄ゆ搷浣�
      */
-    private void checkDelMemberTask(Integer memberId) {
+    private void checkDelMemberTask(Integer memberId,String memberHkid) {
             Date date = new Date();
-            Member member = memberMapper.selectById(memberId);
-            if(member!=null && Constants.equalsInteger(member.getIsdeleted(),Constants.ONE) ){
+//            Member member = memberMapper.selectById(memberId);
+//            if(member!=null && Constants.equalsInteger(member.getIsdeleted(),Constants.ONE) ){
                 if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
-                        .eq(Empower::getMemberId,member.getId())
+                        .eq(Empower::getMemberId,memberId)
                         .eq(Empower::getIsdeleted,Constants.ONE)
+                        .ne(Empower::getFailFlag,Constants.ONE)
                         .ne(Empower::getSendStatus,Constants.EmpowerStatus.pass)) ==0){
                     //濡傛灉鏉冮檺閮藉凡缁忓垹闄ゆ垚鍔燂紝鍒欏垹闄ゆ捣搴蜂汉鍛樺拰鍗$墖鏁版嵁
-                     doHkDeleteUser(member.getId(),member.getHkId(),date);
-            }
+                     doHkDeleteUser(memberId,memberHkid,date,memberMapper,memberCardMapper);
+//            }
         }
     }
 
@@ -190,7 +264,7 @@
         Constants.DEALING_HK_EMPOWER_DETAIL = true;
         try {
             //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍
-            List<Empower>  list = getDealListDetail();
+            List<Empower>  list = getDealListDetail(0);
            if(list == null || list.size() ==0){
                return;
            }
@@ -236,40 +310,59 @@
      * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
      */
     @Override
-    public  void syncEmpowerResultData(){
-        if(Constants.DEALING_HK_EMPOWER_RESULT){
-            return   ;
-        }
-        Constants.DEALING_HK_EMPOWER_RESULT=true;
-        try {
+    public  Integer syncEmpowerResultData(Integer endId){
+//        if(Constants.DEALING_HK_EMPOWER_RESULT){
+//            return  null ;
+//        }
+//        Constants.DEALING_HK_EMPOWER_RESULT=true;
             //鏌ヨ鎵�鏈夋墽琛屼腑寰楁暟鎹�
-            List<Empower>  list = getIngTaskListResult();
+         List<Empower>  list = getIngTaskListResult(Constants.formatIntegerNum(endId));
            if(list == null || list.size() ==0){
-               return;
+               return null;
            }
-           for(Empower c : list){
-               TaskProgressRequest param = new TaskProgressRequest();
-               param.setTaskId(c.getHkId());
-               //鏌ヨ涓嬪彂鐘舵��
-               BaseResponse<TaskProgressNumResponse> response = HKService.taskProgressNum(param);
-               if(response!=null
-                       && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
-                       && response.getData()!=null
-                       && response.getData().getIsDownloadFinished() != null
-                       && response.getData().getIsDownloadFinished() ){
-                   //鏇存柊宸插畬鎴愪笅杞戒换鍔�
-                   empowerMapper.update(null,new UpdateWrapper<Empower>()
-                           .lambda()
-                           .eq(Empower::getHkId,c.getHkId() )
-                           .set(Empower::getSendInfo,"浠诲姟宸蹭笅杞藉畬鎴�" )
-                           .set(Empower::getSendStatus,Constants.EmpowerStatus.downloaded) );
-               }
-           }
-        }catch (Exception e){
-            e.printStackTrace();
-        }finally {
-            Constants.DEALING_HK_EMPOWER_RESULT =false;
-        }
+            Thread t1=new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        for(Empower c : list){
+                            TaskProgressRequest param = new TaskProgressRequest();
+                            param.setTaskId(c.getHkId());
+                            //鏌ヨ涓嬪彂鐘舵��
+                            BaseResponse<TaskProgressNumResponse> response = HKService.taskProgressNum(param);
+                            if(response!=null
+                                    && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                                    && response.getData()!=null){
+                                //鏇存柊宸插畬鎴愪笅杞戒换鍔�
+                                if(  response.getData().getIsDownloadFinished() != null
+                                        && response.getData().getIsDownloadFinished() ){
+                                    empowerMapper.update(null,new UpdateWrapper<Empower>()
+                                            .lambda()
+                                            .eq(Empower::getHkId,c.getHkId() )
+                                            .set(Empower::getSendInfo,"浠诲姟宸蹭笅杞藉畬鎴�" )
+                                            .set(Empower::getRemark,"浠诲姟宸蹭笅杞藉畬鎴�" )
+                                            .set(Empower::getSendStatus,Constants.EmpowerStatus.downloaded) );
+
+                                }
+                            }else if(response!=null
+                                    && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                                    && response.getData()==null){
+                                empowerMapper.update(null,new UpdateWrapper<Empower>()
+                                        .lambda()
+                                        .eq(Empower::getHkId,c.getHkId() )
+                                        .set(Empower::getSendInfo,"浠诲姟宸茶鍒犻櫎锛屼笅鍙戝け璐�" )
+                                        .set(Empower::getRemark,"浠诲姟宸茶鍒犻櫎锛屼笅鍙戝け璐�" )
+                                        .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) );
+                            }
+                        }
+                    }catch (Exception e1){
+                        e1.printStackTrace();
+                    }finally {
+                        Constants.DEALING_HK_EMPOWER_RESULT =false;
+                    }
+                }
+            });
+            t1.start();
+            return list.get(list.size()-1).getId();
 
     }
 
@@ -279,20 +372,88 @@
      * 澶勭悊浜哄憳鎺堟潈鏁版嵁锛屽畾鏃朵笅鍙�
      */
     @Override
-    public  void syncEmpowerData() {
-        if(Constants.DEALING_HK_EMPOWER){
-            return   ;
+    public  Integer syncEmpowerFailData(Integer endId) {
+        List<Empower> allList =getAllFailDealList( endId);
+        if(allList!=null && allList.size()>0){
+            Date date = new Date();
+            List<Integer> retryIds = new ArrayList<>();
+            List<Integer> noIds = new ArrayList<>();
+            for(Empower empower:allList){
+                //濡傛灉鏄垹闄ょ殑鏉冮檺涓嬪彂锛屾煡璇㈡槸鍚︿己鍊欐湁涓嬪彂鎴愬姛鐨勬暟鎹紝濡傛灉鏈夛紝鍒欎笉澶勭悊
+//                int flag= empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
+//                        .eq(Empower::getMemberId,empower.getMemberId())
+//                        .eq(Empower::getDeviceId,empower.getDeviceId() )
+//                        .gt(Empower::getId,empower.getId())
+//                        .last("limit 1"));
+                    if(empower.getTempCouunt() ==0){
+                        retryIds.add(empower.getId());
+                    }else{
+                        //濡傛灉涔嬪悗鏃堕棿鍐呭張閲嶆柊涓嬪彂璁板綍锛屽垯璺宠繃涓嶅仛澶勭悊
+                        noIds.add(empower.getId());
+                    }
+            }
+
+             if(retryIds.size()>0){
+                empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
+                        .set(Empower::getCreateDate,date)
+                        .set(Empower::getSendStatus,Constants.EmpowerStatus.wait)
+                        .set(Empower::getEditDate,date)
+                        .set(Empower::getRemark,"涓嬪彂澶辫触锛屽緟閲嶆柊涓嬪彂~")
+                        .set(Empower::getSendInfo,"涓嬪彂澶辫触锛屽緟閲嶆柊涓嬪彂~")
+                        .in(Empower::getId,retryIds));
+            }
+            if(noIds.size()>0){
+                empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
+                        .set(Empower::getEditDate,date)
+                        .set(Empower::getRemark,"涓嬪彂澶辫触锛屽凡澶辨晥~")
+                        .set(Empower::getSendInfo,"涓嬪彂澶辫触锛屽凡澶辨晥~")
+                        .set(Empower::getFailFlag,Constants.ONE)
+                        .in(Empower::getId,noIds));
+            }
+            return allList.get(allList.size()-1).getId();
         }
-        Constants.DEALING_HK_EMPOWER =true;
+        return null;
+    }
+    /**
+     * 澶勭悊浜哄憳鎺堟潈鏁版嵁锛屽畾鏃朵笅鍙�
+     */
+    @Override
+    public  Integer syncEmpowerData(Integer endId) {
+//        if(Constants.DEALING_HK_EMPOWER){
+//            return  null ;
+//        }
+//        Constants.DEALING_HK_EMPOWER =true;
+            //鍏堝垹闄ゆ墍鏈夐渶瑕佸彇娑堟巿鏉冪殑鏁版嵁
+            if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
+                    .eq(Empower::getSendStatus,Constants.EmpowerStatus.ing)) > 1000){
+                //濡傛灉褰撳墠浠诲姟澶т簬1000涓紙澶ф10涓换鍔★級
+                return endId;
+            }
+            List<Empower> allList =getAllWaitDealList( endId);
+            if(allList !=null && allList.size()>0){
+                //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁,閲嶆柊涓嬪彂鏈�鏂颁汉鍛樻潈闄愬嵆鍙�
+                Thread t1=new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        dealAllListTask(allList);
+                    }
+                });
+                t1.start();
+                return allList.get(allList.size()-1).getId();
+            }
+        return null;
+    }
+    @Override
+    public  void syncEmpowerDataNew(int start,int end) {
         try {
             //鍏堝垹闄ゆ墍鏈夐渶瑕佸彇娑堟巿鏉冪殑鏁版嵁
-            dealDelListTask(getDealList(Constants.ONE));
+            dealDelListTask(getDealList(Constants.ONE,start,end));
             //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁,閲嶆柊涓嬪彂鏈�鏂颁汉鍛樻潈闄愬嵆鍙�
-            dealNewListTask(getDealList(Constants.ZERO));
+            dealNewListTask(getDealList(Constants.ZERO,start,end));
         }catch (Exception e){
             e.printStackTrace();
         }finally {
-            Constants.DEALING_HK_EMPOWER =false;
+
         }
     }
 
@@ -349,8 +510,8 @@
                     .set(Empower::getEditDate,date)
                     .in(Empower::getId,successList));
         }
-
-        empowerMapper.update(null,new UpdateWrapper<Empower>()
+        if(errorList.size()>0){
+            empowerMapper.update(null,new UpdateWrapper<Empower>()
                 .lambda()
                 .set(Empower::getSendStatus,Constants.EmpowerStatus.fail)
                 .set(Empower::getSendDate,date)
@@ -360,8 +521,117 @@
                 .set(Empower::getRemark, "娣诲姞涓嬪彂浠诲姟鏁版嵁鍒櫎鎺堟潈澶辫触")
                 .set(Empower::getEditDate,date)
                 .in(Empower::getId,errorList));
-    }
 
+        }
+    }
+    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;
+        }
+    }
+    private void dealAllListTask(List<Empower> list) {
+        //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+        if(list ==null || list.size()==0){
+            return;
+        }
+//        clearAllEmpowerFirst(list);
+        Date date = new Date();
+        //鍒涘缓浠诲姟
+        String taskId = hkTaskAddtion();
+        List<Empower> successList = new ArrayList<>();
+        List<Empower> errorList = new ArrayList<>();
+        List<Empower> waitList = new ArrayList<>();
+        List<Empower> faceErrorList = new ArrayList<>();
+        for(Empower c : list) {
+            //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
+            if(c.getDeviceOnline() !=null && Constants.equalsInteger(c.getDeviceOnline(),0)){
+                waitList.add(c);
+                continue;
+            }
+            if(  Constants.equalsInteger(c.getMemberFaceStatus(),Constants.THREE)){
+                faceErrorList.add(c);
+                continue;
+            }
+            HKConstants.OPERA_TYPE flag = HKConstants.OPERA_TYPE.ADD;
+            if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){
+                flag = HKConstants.OPERA_TYPE.DEL;
+            }
+            if(addTaskData(c,taskId,flag.getKey())){
+                successList.add(c);
+            }else{
+                errorList.add(c);
+            }
+        }
+        if(successList.size()>0){
+            //寮�濮嬫墽琛屼笅鍙�
+            boolean status = startTask(taskId);
+            for(Empower model : successList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setRemark(status?"涓嬪彂浠诲姟鎴愬姛":"涓嬪彂浠诲姟澶辫触");
+                update.setSendInfo(status?"涓嬪彂浠诲姟鎴愬姛":"涓嬪彂浠诲姟澶辫触");
+                //涓嬪彂涓�
+                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
+                empowerMapper.updateById(update);
+            }
+        }
+
+        if(errorList.size()>0){
+            for(Empower model : errorList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setSendStatus(Constants.EmpowerStatus.fail);
+                update.setRemark( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
+                update.setSendInfo( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
+                empowerMapper.updateById(update);
+            }
+        }
+        if(waitList.size()>0){
+            for(Empower model : waitList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setSendStatus(Constants.EmpowerStatus.fail);
+                update.setRemark( "璁惧鐘舵�佸紓甯革紝绛夊緟閲嶆柊涓嬪彂");
+                update.setSendInfo( "璁惧鐘舵�佸紓甯革紝绛夊緟閲嶆柊涓嬪彂");
+                empowerMapper.updateById(update);
+            }
+        }
+        if(faceErrorList.size()>0){
+            for(Empower model : faceErrorList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setSendStatus(Constants.EmpowerStatus.fail);
+                update.setRemark( "浜鸿劯寤烘ā澶辫触锛岀瓑寰呮洿鎹汉鑴稿悗閲嶆柊涓嬪彂");
+                update.setSendInfo( "浜鸿劯寤烘ā澶辫触锛岀瓑寰呮洿鎹汉鑴稿悗閲嶆柊涓嬪彂");
+                empowerMapper.updateById(update);
+            }
+        }
+
+
+
+    }
     private void dealNewListTask(List<Empower> list) {
         //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
         if(list ==null || list.size()==0){
@@ -398,17 +668,20 @@
             }
         }
 
-        for(Empower model : errorList){
-            Empower update = new Empower();
-            update.setId(model.getId());
-            update.setSendDate(date);
-            update.setEditDate(date);
-            update.setHkId(taskId);
-            update.setSendStatus(Constants.EmpowerStatus.fail);
-            update.setRemark( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
-            update.setSendInfo( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
-            empowerMapper.updateById(update);
+        if(errorList.size()>0){
+            for(Empower model : errorList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setSendStatus(Constants.EmpowerStatus.fail);
+                update.setRemark( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
+                update.setSendInfo( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
+                empowerMapper.updateById(update);
+            }
         }
+
 
 
     }
@@ -476,9 +749,61 @@
             return  false;
         }
     }
+    private List<Empower> getDealList(int del ,Integer endId ) {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Empower.class);
+        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
+        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
+        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
+        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
+        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
+        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait);
+//        queryWrapper.eq( Empower::getIsdeleted,del);
+        queryWrapper.gt(Empower::getId,endId);
+        queryWrapper.orderByAsc(Empower::getId );
+//        queryWrapper.orderByAsc(Empower::getCreateDate );
+        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
+    private List<Empower> getAllWaitDealList(int endId   ) {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Empower.class);
+        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
+        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
+        queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus);
+        queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline);
+        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
+        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
+        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
+        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait);
+//        queryWrapper.eq( Empower::getIsdeleted,del);
+        queryWrapper.gt(Empower::getId,endId);
+        queryWrapper.orderByAsc(Empower::getId );
+//        queryWrapper.orderByAsc(Empower::getCreateDate );
+        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
+    private List<Empower> getAllFailDealList(int endId ) {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.select(Empower::getId,Empower::getMemberId,Empower::getDeviceId,Empower::getIsdeleted);
+        queryWrapper.select(" (select count(1) from empower ee  where ee.member_id=t.MEMBER_ID and ee.device_id =t.DEVICE_ID   and ee.id>t.id) as tempCouunt");
+        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
+        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
+        queryWrapper.ne(Member::getFaceStatus,Constants.THREE);//浜鸿劯寤烘ā娌℃湁澶辫触杩囩殑
+        queryWrapper.ne(Device::getOnline,Constants.ZERO+"");//闈炵绾�
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.fail);
+        queryWrapper.gt(Empower::getId,endId);
+        queryWrapper.and(w-> w.eq( Empower::getFailFlag,Constants.ZERO).or().isNull(Empower::getFailFlag));
+        queryWrapper.orderByAsc(Empower::getId );
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
 
-
-    private List<Empower> getDealList(int del ) {
+    private List<Empower> getDealList(int del ,int start,int end) {
         MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(Empower.class);
         queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
@@ -489,14 +814,19 @@
         queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
         queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait);
         queryWrapper.eq( Empower::getIsdeleted,del);
-//        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
+        queryWrapper.gt( Empower::getId,start);
+        queryWrapper.le( Empower::getId,end);
+        queryWrapper.orderByDesc(Empower::getId );
+//        queryWrapper.orderByAsc(Empower::getCreateDate );
+        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
         List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
         return list;
     }
-    private List<Empower> getDealListDetail() {
+    private List<Empower> getDealListDetail(int endId ) {
         MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(Empower.class);
         queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
+        queryWrapper.selectAs(Member::getIsdeleted,Empower::getMemberDeleted);
         queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
         queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
         queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
@@ -504,17 +834,23 @@
         queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
         queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
         queryWrapper.isNotNull(Member::getHkId) ;
+        queryWrapper.gt(Empower::getId,endId);
         queryWrapper.orderByAsc(Empower::getSendDate);
+        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
         List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
         return list;
     }
-    private List<Empower> getIngTaskListResult() {
+    private List<Empower> getIngTaskListResult(int endId) {
         MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(Empower.class);
         queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.ing);
+        queryWrapper.gt(Empower::getId,endId);
         queryWrapper.groupBy(Empower::getHkId);
-        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        queryWrapper.orderByAsc(Empower::getSendDate);
+        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
+        List<Empower> list = empowerMapper.selectList(queryWrapper);
         return list;
     }
 
+
 }

--
Gitblit v1.9.3