|  | @ -0,0 +1,210 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.config.NetworkCardConfig;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.sim.WlyySimFlowDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.sim.WlyySimVoiceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.service.device.NetworkCardService;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.util.DateUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.sim.WlyySimFlowDo;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.sim.WlyySimVoicesDo;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.http.HttpClientUtil;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.apache.http.NameValuePair;
 | 
	
		
			
				|  |  | import org.apache.http.message.BasicNameValuePair;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Calendar;
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  | import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by Bing on 2022/2/14.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Service
 | 
	
		
			
				|  |  | public class WlyysimFlowVoiceService{
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private NetworkCardService networkCardService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WlyySimVoiceDao wlyySimVoiceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WlyySimFlowDao wlyySimFlowDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private HttpClientUtil httpClientUtil;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public String initData() throws InterruptedException {
 | 
	
		
			
				|  |  |         Date date = new Date();
 | 
	
		
			
				|  |  |         Date month = new Date();
 | 
	
		
			
				|  |  |         for (int i=1;i<=7;i++){
 | 
	
		
			
				|  |  |             date = DateUtil.getPreDays(date,-1);
 | 
	
		
			
				|  |  |             String dateTime = DateUtil.dateToStr(date,DateUtil.YYYYMMDD);
 | 
	
		
			
				|  |  |             System.out.println("day"+dateTime);
 | 
	
		
			
				|  |  |             initDay(dateTime);
 | 
	
		
			
				|  |  |             TimeUnit.SECONDS.sleep(10);
 | 
	
		
			
				|  |  |             Calendar cal = Calendar.getInstance();
 | 
	
		
			
				|  |  |             cal.setTime(month);
 | 
	
		
			
				|  |  |             cal.set(Calendar.DAY_OF_MONTH,1);
 | 
	
		
			
				|  |  |             cal.add(Calendar.MONTH,-1*(i-1));
 | 
	
		
			
				|  |  |             dateTime = DateUtil.dateToStr(cal.getTime(),DateUtil.YYYYMM);
 | 
	
		
			
				|  |  |             System.out.println("mon"+dateTime);
 | 
	
		
			
				|  |  |             initMonth(dateTime);
 | 
	
		
			
				|  |  |             TimeUnit.SECONDS.sleep(10);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return "success";
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void initDay(String dateTime){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             String sql = " select msisdn from wlyy_sims";
 | 
	
		
			
				|  |  |             List<String> msisdns = jdbcTemplate.queryForList(sql,String.class);
 | 
	
		
			
				|  |  |             List<WlyySimFlowDo> wlyySimFlowDos = new ArrayList<>();
 | 
	
		
			
				|  |  |             List<WlyySimVoicesDo> wlyySimVoicesDos = new ArrayList<>();
 | 
	
		
			
				|  |  |             Integer pageTotal = msisdns.size()%100==0?(msisdns.size()/100):(msisdns.size()/100)+1;
 | 
	
		
			
				|  |  |             for (int pageTmp = 1;pageTmp<=pageTotal;pageTmp++){
 | 
	
		
			
				|  |  |                 try {
 | 
	
		
			
				|  |  |                     Integer startSize = (pageTmp-1)*100;
 | 
	
		
			
				|  |  |                     Integer endSize = pageTmp*100>msisdns.size()?msisdns.size():pageTmp*100;
 | 
	
		
			
				|  |  |                     String msisdn = msisdns.subList(startSize,endSize).stream().map(String::valueOf).collect(Collectors.joining("_"));
 | 
	
		
			
				|  |  |                     List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("queryDate", dateTime));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("msisdns", msisdn));//多个下换线隔开100张
 | 
	
		
			
				|  |  |                     String response = httpClientUtil.get(NetworkCardConfig.getVoiceUsageDaily, params, "UTF-8");//物联网卡单卡语音单日批量使用情况 分钟
 | 
	
		
			
				|  |  |                     JSONObject responseObj = JSONObject.parseObject(response);
 | 
	
		
			
				|  |  |                     String status = responseObj.getString("status");
 | 
	
		
			
				|  |  |                     if ("0".equals(status)){
 | 
	
		
			
				|  |  |                         JSONArray resultArray =responseObj.getJSONArray("result");
 | 
	
		
			
				|  |  |                         JSONObject result =resultArray.getJSONObject(0);
 | 
	
		
			
				|  |  |                         JSONArray voiceAmounts = result.getJSONArray("voiceAmount");
 | 
	
		
			
				|  |  |                         for (int i=0;i<voiceAmounts.size();i++){
 | 
	
		
			
				|  |  |                             JSONObject tmp = voiceAmounts.getJSONObject(i);
 | 
	
		
			
				|  |  |                             String msisdnTmp = tmp.getString("msisdn");
 | 
	
		
			
				|  |  |                             String voces = StringUtils.isBlank(tmp.getString("voice"))?"0":tmp.getString("voice");
 | 
	
		
			
				|  |  |                             WlyySimVoicesDo wlyySimVoicesDo = new WlyySimVoicesDo();
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setDay(dateTime);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setMsisdn(msisdnTmp);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setValue(voces);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setType(2);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDos.add(wlyySimVoicesDo);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     params = new ArrayList<>();
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("queryDate", dateTime));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("msisdns", msisdn));//多个下换线隔开
 | 
	
		
			
				|  |  |                     response = httpClientUtil.get(NetworkCardConfig.getFlowUsageDaily, params, "UTF-8");//物联网卡单卡批量某一天流量使用 KB
 | 
	
		
			
				|  |  |                     responseObj = JSONObject.parseObject(response);
 | 
	
		
			
				|  |  |                     status = responseObj.getString("status");
 | 
	
		
			
				|  |  |                     if ("0".equals(status)){
 | 
	
		
			
				|  |  |                         JSONArray resultArray =responseObj.getJSONArray("result");
 | 
	
		
			
				|  |  |                         JSONObject result =resultArray.getJSONObject(0);
 | 
	
		
			
				|  |  |                         JSONArray voiceAmounts = result.getJSONArray("dataAmountList");
 | 
	
		
			
				|  |  |                         for (int i=0;i<voiceAmounts.size();i++){
 | 
	
		
			
				|  |  |                             JSONObject tmp = voiceAmounts.getJSONObject(i);
 | 
	
		
			
				|  |  |                             String msisdnTmp = tmp.getString("msisdn");
 | 
	
		
			
				|  |  |                             String dataAmount = StringUtils.isBlank(tmp.getString("dataAmount"))?"0":tmp.getString("dataAmount");
 | 
	
		
			
				|  |  |                             WlyySimFlowDo wlyySimFlowDo = new WlyySimFlowDo();
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setDay(dateTime);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setMsisdn(msisdnTmp);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setValue(dataAmount);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setType(2);
 | 
	
		
			
				|  |  |                             wlyySimFlowDos.add(wlyySimFlowDo);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     wlyySimVoiceDao.save(wlyySimVoicesDos);
 | 
	
		
			
				|  |  |                     wlyySimFlowDao.save(wlyySimFlowDos);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 }catch (Exception e){
 | 
	
		
			
				|  |  |                     e.printStackTrace();
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void initMonth(String dateTime){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             String sql = " select msisdn from wlyy_sims";
 | 
	
		
			
				|  |  |             List<String> msisdns = jdbcTemplate.queryForList(sql,String.class);
 | 
	
		
			
				|  |  |             List<WlyySimFlowDo> wlyySimFlowDos = new ArrayList<>();
 | 
	
		
			
				|  |  |             List<WlyySimVoicesDo> wlyySimVoicesDos = new ArrayList<>();
 | 
	
		
			
				|  |  |             Integer pageTotal = msisdns.size()%100==0?(msisdns.size()/100):(msisdns.size()/100)+1;
 | 
	
		
			
				|  |  |             for (int pageTmp = 1;pageTmp<=pageTotal;pageTmp++){
 | 
	
		
			
				|  |  |                 try {
 | 
	
		
			
				|  |  |                     Integer startSize = (pageTmp-1)*100;
 | 
	
		
			
				|  |  |                     Integer endSize = pageTmp*100>msisdns.size()?msisdns.size():pageTmp*100;
 | 
	
		
			
				|  |  |                     String msisdn = msisdns.subList(startSize,endSize).stream().map(String::valueOf).collect(Collectors.joining("_"));
 | 
	
		
			
				|  |  |                     List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("queryDate", dateTime));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("msisdns", msisdn));//多个下换线隔开100张
 | 
	
		
			
				|  |  |                     String response = httpClientUtil.get(NetworkCardConfig.getVoiceUsageMonthly, params, "UTF-8");//物联网卡单卡语音单日批量使用情况 分钟
 | 
	
		
			
				|  |  |                     JSONObject responseObj = JSONObject.parseObject(response);
 | 
	
		
			
				|  |  |                     String status = responseObj.getString("status");
 | 
	
		
			
				|  |  |                     if ("0".equals(status)){
 | 
	
		
			
				|  |  |                         JSONArray resultArray =responseObj.getJSONArray("result");
 | 
	
		
			
				|  |  |                         JSONObject result =resultArray.getJSONObject(0);
 | 
	
		
			
				|  |  |                         JSONArray voiceAmounts = result.getJSONArray("voiceAmount");
 | 
	
		
			
				|  |  |                         for (int i=0;i<voiceAmounts.size();i++){
 | 
	
		
			
				|  |  |                             JSONObject tmp = voiceAmounts.getJSONObject(i);
 | 
	
		
			
				|  |  |                             String msisdnTmp = tmp.getString("msisdn");
 | 
	
		
			
				|  |  |                             String voces = StringUtils.isBlank(tmp.getString("voice"))?"0":tmp.getString("voice");
 | 
	
		
			
				|  |  |                             WlyySimVoicesDo wlyySimVoicesDo = new WlyySimVoicesDo();
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setDay(dateTime);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setMsisdn(msisdnTmp);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setValue(voces);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDo.setType(1);
 | 
	
		
			
				|  |  |                             wlyySimVoicesDos.add(wlyySimVoicesDo);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     params = new ArrayList<>();
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("queryDate", dateTime));
 | 
	
		
			
				|  |  |                     params.add(new BasicNameValuePair("msisdns", msisdn));//多个下换线隔开
 | 
	
		
			
				|  |  |                     response = httpClientUtil.get(NetworkCardConfig.getFlowUsageMonthly, params, "UTF-8");//物联网卡单卡批量某一天流量使用 KB
 | 
	
		
			
				|  |  |                     responseObj = JSONObject.parseObject(response);
 | 
	
		
			
				|  |  |                     status = responseObj.getString("status");
 | 
	
		
			
				|  |  |                     if ("0".equals(status)){
 | 
	
		
			
				|  |  |                         JSONArray resultArray =responseObj.getJSONArray("result");
 | 
	
		
			
				|  |  |                         JSONObject result =resultArray.getJSONObject(0);
 | 
	
		
			
				|  |  |                         JSONArray voiceAmounts = result.getJSONArray("dataAmountList");
 | 
	
		
			
				|  |  |                         for (int i=0;i<voiceAmounts.size();i++){
 | 
	
		
			
				|  |  |                             JSONObject tmp = voiceAmounts.getJSONObject(i);
 | 
	
		
			
				|  |  |                             String msisdnTmp = tmp.getString("msisdn");
 | 
	
		
			
				|  |  |                             String dataAmount = StringUtils.isBlank(tmp.getString("dataAmount"))?"0":tmp.getString("dataAmount");
 | 
	
		
			
				|  |  |                             WlyySimFlowDo wlyySimFlowDo = new WlyySimFlowDo();
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setDay(dateTime);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setMsisdn(msisdnTmp);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setValue(dataAmount);
 | 
	
		
			
				|  |  |                             wlyySimFlowDo.setType(1);
 | 
	
		
			
				|  |  |                             wlyySimFlowDos.add(wlyySimFlowDo);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     wlyySimVoiceDao.save(wlyySimVoicesDos);
 | 
	
		
			
				|  |  |                     wlyySimFlowDao.save(wlyySimFlowDos);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 }catch (Exception e){
 | 
	
		
			
				|  |  |                     e.printStackTrace();
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |