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 | 854 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 814 insertions(+), 40 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 2e89198..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,23 +1,35 @@ 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.VisitAppointmentRequest; -import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse; +import com.doumee.core.haikang.model.param.request.*; +import com.doumee.core.haikang.model.param.respose.*; import com.doumee.core.haikang.service.HKService; import com.doumee.core.utils.Constants; 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.join.EmpowerJoinMapper; import com.doumee.dao.business.join.VisitsJoinMapper; -import com.doumee.dao.business.model.Empower; -import com.doumee.dao.business.model.Member; -import com.doumee.dao.business.model.Visits; +import com.doumee.dao.business.model.*; 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; import java.util.Date; import java.util.List; @@ -30,53 +42,815 @@ @Slf4j public class HkSyncEmpowerServiceImpl extends HkSyncBaseServiceImpl { @Autowired - private EmpowerJoinMapper empowerJoinMapper; + private EmpowerJoinMapper empowerMapper; + @Autowired + private SystemDictDataBiz systemDictDataBiz; + @Autowired + private MemberMapper memberMapper; + @Autowired + private DeviceMapper deviceMapper; + @Autowired + private MemberCardMapper memberCardMapper; /** - * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭� + * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉 */ @Override - public void syncEmpowerData(){ - if(Constants.DEALING_HK_EMPOWER){ + public Integer syncEmpowerDetailData(Integer endId){ +// if(Constants.DEALING_HK_EMPOWER_DETAIL){ +// return ; +// } +// Constants.DEALING_HK_EMPOWER_DETAIL = true; + //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍 + List<Empower> list = getDealListDetail(endId); + if(list == null || list.size() ==0){ + return null; + } + 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 = "鍗$墖涓嬪彂澶辫触"; + } + 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(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)); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }); + t1.start(); + return list.get(list.size()-1).getId(); + + } + + + /** + * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭� + * @param id + * @param 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)){ + //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� + if(result.getData()!=null && result.getData().size()>0){ + 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::getHkDate,date) + .in(Member::getId, id)); + //鍒犻櫎鎵�鏈夌粦瀹氱殑鍗$墖淇℃伅 + memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,id)); + } + } + return succes; + } + + /** + * 妫�鏌ュ垹闄や汉鍛樼殑鏉冮檺鏄惁閮藉垹闄ゅ畬鎴愶紝濡傛灉鏉冮檺鍒犻櫎瀹屾垚锛� 杩涜娴峰悍浜哄憳鐨勫垹闄ゆ搷浣� + */ + 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) ){ + if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda() + .eq(Empower::getMemberId,memberId) + .eq(Empower::getIsdeleted,Constants.ONE) + .ne(Empower::getFailFlag,Constants.ONE) + .ne(Empower::getSendStatus,Constants.EmpowerStatus.pass)) ==0){ + //濡傛灉鏉冮檺閮藉凡缁忓垹闄ゆ垚鍔燂紝鍒欏垹闄ゆ捣搴蜂汉鍛樺拰鍗$墖鏁版嵁 + doHkDeleteUser(memberId,memberHkid,date,memberMapper,memberCardMapper); +// } + } + } + + public void syncEmpowerDetailDataOld(){ + if(Constants.DEALING_HK_EMPOWER_DETAIL){ return ; } - Constants.DEALING_HK_EMPOWER =true; + Constants.DEALING_HK_EMPOWER_DETAIL = true; try { - //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁 + //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍 + List<Empower> list = getDealListDetail(0); + if(list == null || list.size() ==0){ + return; + } + for(Empower c : list){ + AuthItemListRequest param = new AuthItemListRequest(); + param.setPageNo(1); + param.setPageSize(100); +// param.setPersonIds(new ArrayList<>()); - MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>(); - queryWrapper.selectAll(Empower.class); - queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName) - .select("t1.hk_id as receptMemberHkId") - .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); - queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.pass)//瀹℃壒閫氳繃 - .eq(Visits::getHkStatus,Constants.ZERO)//鏈悓姝ュ埌娴峰悍 - .orderByAsc(Visits::getCreateDate); - List<Empower> list = empowerJoinMapper.selectJoinList(Empower.class,queryWrapper); - if(list ==null || list.size()==0){ - return; - } - Date date = new Date(); - for(Empower c : list) { - //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎 - VisitAppointmentRequest request = new VisitAppointmentRequest(); - BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request); - if (response != null - && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) - &&response.getData()!=null - &&StringUtils.isNotBlank(response.getData().getAppointRecordId())) { - //娴峰悍涓嬪彂鎴愬姛 - c.setHkId( response.getData().getAppointRecordId());//棰勭害鏍囪瘑 - } else { - //娴峰悍涓嬪彂鎴愬姛 - } - empowerJoinMapper.updateById(c); - } + param.setPersonIds(new String[]{c.getMemberHkId()}); + param.setQueryType(c.getDeviceType()); + TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest(); + rec.setResourceIndexCode(c.getDeviceIndexCode()); + rec.setResourceType(c.getDeviceType()); +// rec.setChannelNos(c.getDeviceChannelNo().split(",")); + List<TaskDataAdditionResourceRequest> resourceRequests = new ArrayList<>(); + resourceRequests.add(rec); +// param.setResourceInfos(resourceRequests); + //鏌ヨ宸蹭笅杞� +// param.setPersonStatus(new Integer[]{3}); + //鏌ヨ涓嬪彂鐘舵�� + BaseResponse<AuthItemListResponse> response = HKService.authItemList(param); + if(response!=null + && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) + && response.getData()!=null + && response.getData().getList() != null + && response.getData().getList().size()>0 ){ + //鏇存柊宸插畬鎴愪笅杞戒换鍔� + empowerMapper.update(null,new UpdateWrapper<Empower>() + .lambda() + .eq(Empower::getId,c.getId() ) + .set(Empower::getSendStatus,Constants.EmpowerStatus.pass) ); + } + } }catch (Exception e){ e.printStackTrace(); }finally { - Constants.DEALING_HK_EMPOWER =false; + Constants.DEALING_HK_EMPOWER_DETAIL=false; + } + + } + /** + * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉 + */ + @Override + public Integer syncEmpowerResultData(Integer endId){ +// if(Constants.DEALING_HK_EMPOWER_RESULT){ +// return null ; +// } +// Constants.DEALING_HK_EMPOWER_RESULT=true; + //鏌ヨ鎵�鏈夋墽琛屼腑寰楁暟鎹� + List<Empower> list = getIngTaskListResult(Constants.formatIntegerNum(endId)); + if(list == null || list.size() ==0){ + return null; + } + 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(); + + } + + + + /** + * 澶勭悊浜哄憳鎺堟潈鏁版嵁锛屽畾鏃朵笅鍙� + */ + @Override + 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(); + } + 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,start,end)); + //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁,閲嶆柊涓嬪彂鏈�鏂颁汉鍛樻潈闄愬嵆鍙� + dealNewListTask(getDealList(Constants.ZERO,start,end)); + }catch (Exception e){ + e.printStackTrace(); + }finally { + } } + /** + * 鍒嗘璇锋眰涓嬪彂鏉冮檺 + * @param list + */ + private void dealDelListTask(List<Empower> list) { + int sublistSize = 100; + int startIndex = 0; + int endIndex = sublistSize; + + while (startIndex < list.size()) { + if (endIndex > list.size()) { + endIndex = list.size(); + } + List<Empower> sublist = list.subList(startIndex, endIndex); + if(sublist.size()>0){ + dealDelListTaskDo(sublist); + } + startIndex = endIndex; + endIndex += sublistSize; + } + } + private void dealDelListTaskDo(List<Empower> list) { + //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁 + if(list ==null || list.size()==0){ + return; + } + Date date = new Date(); + //鍒涘缓浠诲姟 + String taskId = hkTaskAddtion(); + List<Integer> successList = new ArrayList<>(); + List<Integer> errorList = new ArrayList<>(); + for(Empower c : list) { + //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹� + if(addTaskData(c,taskId,HKConstants.OPERA_TYPE.DEL.getKey())){ + successList.add(c.getId()); + }else{ + errorList.add(c.getId()); + } + } + if(successList.size()>0){ + //寮�濮嬫墽琛屼笅鍙� + boolean status = startTask(taskId); + empowerMapper.update(null,new UpdateWrapper<Empower>() + .lambda() + .set(Empower::getSendDate,date) + .set(Empower::getEditDate,date) + .set(Empower::getSendStatus,status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail) + .set(Empower::getHkId,taskId) + .set(Empower::getSendInfo,status?"涓嬪彂浠诲姟鎵ц鎴愬姛":"涓嬪彂浠诲姟鎵ц澶辫触") + .set(Empower::getRemark,status?"涓嬪彂浠诲姟鎵ц鎴愬姛":"涓嬪彂浠诲姟鎵ц澶辫触") + .set(Empower::getEditDate,date) + .in(Empower::getId,successList)); + } + if(errorList.size()>0){ + empowerMapper.update(null,new UpdateWrapper<Empower>() + .lambda() + .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) + .set(Empower::getSendDate,date) + .set(Empower::getEditDate,date) + .set(Empower::getHkId,taskId) + .set(Empower::getSendInfo, "娣诲姞涓嬪彂浠诲姟鏁版嵁鍒櫎鎺堟潈澶辫触") + .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){ + return; + } +// clearAllEmpowerFirst(list); + Date date = new Date(); + //鍒涘缓浠诲姟 + String taskId = hkTaskAddtion(); + List<Empower> successList = new ArrayList<>(); + List<Empower> errorList = new ArrayList<>(); + for(Empower c : list) { + //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹� + if(addTaskData(c,taskId,HKConstants.OPERA_TYPE.ADD.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); + } + } + + + + } + + private void clearAllEmpowerFirst(List<Empower> list) { + //鏌ヨ鍏ㄩ儴鏁版嵁 + List<Device> allDevice = deviceMapper.selectList(new QueryWrapper<Device>().lambda().isNotNull(Device::getHkId)); + //鍒涘缓浠诲姟 + String taskId = hkTaskAddtion(); + for(Empower c : list) { + //鍚戜换鍔″埅闄や汉鍛樼殑鎵�鏈夎澶囦俊鎭暟鎹� + addTaskDataAllDel(c.getHkId(),taskId,allDevice); + } + startTask(taskId); + } + + private boolean addTaskData(Empower c,String taskId,int type) { + if(StringUtils.isBlank(c.getMemberHkId() ) + ||StringUtils.isBlank(c.getDeviceChannelNo()) + ||StringUtils.isBlank(c.getDeviceType()) + ||StringUtils.isBlank(c.getDeviceIndexCode())){ + //蹇呭~鍙傛暟鏍¢獙 + c.setSendInfo("璁惧淇℃伅涓嶆敮鎸佹巿鏉冧笅鍙戯紝妫�鏌ヤ汉鍛樻槸鍚﹀凡涓嬪彂娴峰悍鎴栬�呰澶囨槸鍚︺�愯澶囩被鍨嬨�侀�氶亾鍙枫�戞槸鍚﹀畬鍠�"); + c.setRemark("璁惧淇℃伅涓嶆敮鎸佹巿鏉冧笅鍙戯紝妫�鏌ヤ汉鍛樻槸鍚﹀凡涓嬪彂娴峰悍鎴栬�呰澶囨槸鍚︺�愯澶囩被鍨嬨�侀�氶亾鍙枫�戞槸鍚﹀畬鍠�"); + return false; + } + TaskDataAdditionRequest param = new TaskDataAdditionRequest(); + param.setTaskId(taskId); + List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();// object[] True 璧勬簮瀵硅薄 + TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest(); + res.setChannelNos(c.getDeviceChannelNo().split(",")); + res.setResourceType(c.getDeviceType()); + res.setResourceIndexCode(c.getDeviceIndexCode()); + resourceInfos.add(res); + List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>(); + TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest(); + pinfo.setName(c.getMemberName()); + pinfo.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime())); + pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime())); + pinfo.setOperatorType(type); + pinfo.setPersonId(c.getMemberHkId()); + personInfos.add(pinfo);// + param.setResourceInfos(resourceInfos); + param.setPersonInfos(personInfos); + + //--------------鍗$墖娣诲姞---------- + /* if(StringUtils.isNotBlank(c.getCardNos())){ + List<TaskDataAdditionCardRequest> cards = new ArrayList<>(); + for(String s : c.getCardNos().split(",")){ + TaskDataAdditionCardRequest tc = new TaskDataAdditionCardRequest(); + tc.setCard(s); + tc.setStatus(HKConstants.OPERA_TYPE.ADD.getKey()); + tc.setCardType(HKConstants.CARD_TYPE.NORMAL.getKey()); + cards.add(tc); + } + param.setCards(cards); + }*/ + BaseResponse response = HKService.taskDataAddition(param); + if(response!=null + && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ + return true; + }else{ + c.setRemark("娣诲姞浜哄憳銆佽澶囬�氶亾鏉冮檺涓嬪彂鏁版嵁澶辫触"+(response!=null?response.getMsg():"")); + c.setSendInfo("娣诲姞浜哄憳銆佽澶囬�氶亾鏉冮檺涓嬪彂鏁版嵁澶辫触"+(response!=null?response.getMsg():"")); + 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 ,int start,int end) { + 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,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(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); + queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId); + 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(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); + queryWrapper.orderByAsc(Empower::getSendDate); + queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓� + List<Empower> list = empowerMapper.selectList(queryWrapper); + return list; + } + + } -- Gitblit v1.9.3