|  |  | 
 |  |  | package com.doumee.task; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
 |  |  | import org.apache.http.client.methods.CloseableHttpResponse; | 
 |  |  | import org.apache.http.client.methods.HttpGet; | 
 |  |  | import org.apache.http.client.utils.URIBuilder; | 
 |  |  | import org.apache.http.impl.client.CloseableHttpClient; | 
 |  |  | import org.apache.http.impl.client.HttpClients; | 
 |  |  | import org.apache.http.util.EntityUtils; | 
 |  |  | import com.doumee.config.DataSyncConfig; | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.utils.Constants; | 
 |  |  | import com.doumee.service.business.MemberService; | 
 |  |  | import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl; | 
 |  |  | import com.doumee.service.business.impl.hksync.fhk.HkSyncVisitFromHKServiceImpl; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.scheduling.annotation.EnableScheduling; | 
 |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  |  | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.net.URI; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.Map; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 定时任务 | 
 |  |  | 
 |  |  | @EnableScheduling | 
 |  |  | public class ScheduleTool { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |     private HkSyncParkServiceImpl hkSyncParkService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncImgServiceImpl hkSyncImgService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncEmpowerServiceImpl hkSyncEmpowerService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncOrgUserToHKServiceImpl hkSyncOrgUserService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncVisitFromHKServiceImpl hkSyncVisitFromHKService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncVehicleFromHKServiceImpl hkSyncVehicleFromHKService; | 
 |  |  |     @Autowired | 
 |  |  |     private HkSyncVisitServiceImpl hkSyncVisitService; | 
 |  |  |     @Autowired | 
 |  |  |     private MemberService memberService; | 
 |  |  |     /** | 
 |  |  |      * 是否开发者 | 
 |  |  |      */ | 
 |  |  |     @Value("${timing}") | 
 |  |  |     private Boolean timing; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DataSyncConfig dataSyncConfig; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 缓存省市区 | 
 |  |  |      * 每分钟拉取一次今日的访客预约数据 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay=24*60*60*1000) | 
 |  |  |     public void cacheCampus() throws Exception { | 
 |  |  |     @Scheduled(cron= "0 0 23 * * ?") | 
 |  |  |     public void syncVehicleUpdateData() throws Exception { | 
 |  |  |         hkSyncVehicleFromHKService.syncVehicleUpdateData(new Date(System.currentTimeMillis()-24*60*60*1000)); | 
 |  |  |     } | 
 |  |  |      /** | 
 |  |  |      * 每天凌晨重置所有订单code类初始值 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(cron="0 0 0 * * ?") | 
 |  |  |     public void resetOrderCodes() throws Exception { | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 发送get请求 | 
 |  |  |      * @param url 请求URL | 
 |  |  |      * @param param 请求参数 key:value url携带参数 或者无参可不填 | 
 |  |  |      * @return | 
 |  |  |      * 每分钟拉取一次今日的访客预约数据 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     public  String doGet(String url, Map<String, String> param) { | 
 |  |  |         // 创建Httpclient对象 | 
 |  |  |         CloseableHttpClient httpclient = HttpClients.createDefault(); | 
 |  |  |         String resultString = ""; | 
 |  |  |         CloseableHttpResponse response = null; | 
 |  |  |         try { | 
 |  |  |             // 创建uri | 
 |  |  |             URIBuilder builder = new URIBuilder(url); | 
 |  |  |             if (param != null) { | 
 |  |  |                 for (String key : param.keySet()) { | 
 |  |  |                     builder.addParameter(key, param.get(key)); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             URI uri = builder.build(); | 
 |  |  |             // 创建http GET请求 | 
 |  |  |             HttpGet httpGet = new HttpGet(uri); | 
 |  |  |             // 执行请求 | 
 |  |  |             response = httpclient.execute(httpGet); | 
 |  |  |             // 判断返回状态是否为200 | 
 |  |  |             if (response.getStatusLine().getStatusCode() == 200) { | 
 |  |  |                 resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } finally { | 
 |  |  |             try { | 
 |  |  |                 if (response != null) { | 
 |  |  |                     response.close(); | 
 |  |  |                 } | 
 |  |  |                 httpclient.close(); | 
 |  |  |             } catch (IOException e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncVistAppointData() throws Exception { | 
 |  |  |         if(Constants.DEALING_FROM_HK_VISIT){ | 
 |  |  |             return ; | 
 |  |  |         } | 
 |  |  |         return resultString; | 
 |  |  |         try { | 
 |  |  |             Constants.DEALING_FROM_HK_VISIT =true; | 
 |  |  |             hkSyncVisitFromHKService.syncVistAppointData(new Date()); | 
 |  |  |             Constants.DEALING_FROM_HK_VISIT =false; | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); | 
 |  |  |         }finally { | 
 |  |  |             Constants.DEALING_FROM_HK_VISIT =false; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 下载海康系统图片数据 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void downloadHkImg() throws Exception { | 
 |  |  |         if(dataSyncConfig.getNeedDealImg()!=null && dataSyncConfig.getNeedDealImg()){ | 
 |  |  |             hkSyncImgService.downHKImgs(0); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时同步组织信息到海康系统 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncOrgData() { | 
 |  |  |         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){ | 
 |  |  |             //如果是ERP系统同步下发 | 
 |  |  |             hkSyncOrgUserService.syncOrgData(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时同步用户信息到海康系统 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncUserData()  { | 
 |  |  |         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp) { | 
 |  |  |             //如果是ERP系统同步下发 | 
 |  |  |             hkSyncOrgUserService.syncUserData(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时同步申请通过的访客数据到海康系统 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncVisitData()  { | 
 |  |  |         hkSyncVisitService.syncVisitData(); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时同步内部人员授权到海康系统 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncEmpowerData()  { | 
 |  |  |  | 
 |  |  |         hkSyncEmpowerService.syncEmpowerData(); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时查询人员下发海康结果(任务是否已下载结束) | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncEmpowerResultData()  { | 
 |  |  |         hkSyncEmpowerService.syncEmpowerResultData(); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时查询人员实际下发权限结果,是否已经下载成功 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncEmpowerDetailData()  { | 
 |  |  |         hkSyncEmpowerService.syncEmpowerDetailData(); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 定时同步车辆包期到海康系统 | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void syncParkBookData()  { | 
 |  |  |         hkSyncParkService.syncParkBookData(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 定时冻结内部人员 | 
 |  |  |      */ | 
 |  |  |     @Scheduled(fixedDelay= 60*1000) | 
 |  |  |     public void memberFreeze()  { | 
 |  |  |         memberService.memberFreeze(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |