|
@ -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();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|