From 6765787baa5e0b771d71f865c4deb776367410c4 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 13 八月 2024 13:38:19 +0800 Subject: [PATCH] 修复bug --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java | 662 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 510 insertions(+), 152 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..0447e18 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,12 @@ 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.core.constants.ResponseStatus; -import com.doumee.core.exception.BusinessException; +import com.doumee.biz.system.SystemDictDataBiz; 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.*; @@ -15,8 +17,10 @@ import com.doumee.dao.business.MemberCardMapper; import com.doumee.dao.business.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.Device; +import com.doumee.dao.business.model.Empower; +import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.MemberCard; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -38,6 +42,8 @@ @Autowired private EmpowerJoinMapper empowerMapper; @Autowired + private SystemDictDataBiz systemDictDataBiz; + @Autowired private MemberMapper memberMapper; @Autowired private DeviceMapper deviceMapper; @@ -48,138 +54,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 +262,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 +308,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 +370,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 +508,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 +519,138 @@ .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> cancelList = new ArrayList<>(); + List<Empower> faceErrorList = new ArrayList<>(); + for(Empower c : list) { + //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹� + if (Constants.equalsInteger(c.getDeviceDeleted(),Constants.ONE) || + (Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE) && + Constants.equalsInteger(c.getMemberHkStatus(), Constants.ONE))){ + cancelList.add(c); + continue; + } + 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(cancelList.size()>0){ + for(Empower model : cancelList){ + Empower update = new Empower(); + update.setId(model.getId()); + update.setSendDate(date); + update.setEditDate(date); + update.setHkId(taskId); + update.setFailFlag(Constants.ONE); + update.setSendStatus(Constants.EmpowerStatus.cancel); + 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 +687,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 +768,64 @@ 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(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); + 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 +836,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 +856,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