فهرست منبع

物联网卡统计相关

liubing 3 سال پیش
والد
کامیت
05a80ae0c8
18فایلهای تغییر یافته به همراه1001 افزوده شده و 2 حذف شده
  1. 27 1
      common/common-entity/sql记录
  2. 42 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimDo.java
  3. 51 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimFlowDo.java
  4. 50 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimVoicesDo.java
  5. 6 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/NetworkCardConfig.java
  6. 56 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  7. 65 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/NetworkCardService.java
  8. 14 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/NetworkCardConfig.java
  9. 11 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimDao.java
  10. 20 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimFlowDao.java
  11. 20 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimVoiceDao.java
  12. 30 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java
  13. 127 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/GetSimsVoiceFlowDayJob.java
  14. 134 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/GetSimsVoiceFlowMonthJob.java
  15. 116 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/UpdateSimsJob.java
  16. 210 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/WlyysimFlowVoiceService.java
  17. 13 1
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java
  18. 9 0
      svr/svr-cloud-job/src/main/resources/system.properties

+ 27 - 1
common/common-entity/sql记录

@ -1637,4 +1637,30 @@ CREATE TABLE `base_sleep_x1device` (
  `total` int(11) NULL DEFAULT NULL COMMENT '检测次数',
  `del` int(1) DEFAULT NULL COMMENT '是否有效 1有效 0无效',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='爱牵挂X1手表睡眠数据';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='爱牵挂X1手表睡眠数据';
--
CREATE TABLE `wlyy_sims` (
  `id` varchar(50) NOT NULL COMMENT '主键',
  `msisdn` varchar(20) DEFAULT NULL COMMENT '物联网卡msisdn',
  `iccid` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'iccid',
  `imsi` varchar(255) DEFAULT NULL COMMENT '物联网卡imsi',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='物联网卡信息';
CREATE TABLE `wlyy_sims_flow` (
  `id` varchar(50) NOT NULL COMMENT '主键',
  `msisdn` varchar(20) DEFAULT NULL COMMENT '物联网卡msisdn',
  `day` varchar(10) DEFAULT NULL COMMENT '日期',
  `type` int(1) DEFAULT NULL COMMENT '1月统计 2日统计',
  `value` varchar(11) DEFAULT NULL COMMENT '使用量KB',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='物联网卡流量使用信息';
CREATE TABLE `wlyy_sims_voices` (
  `id` varchar(50) NOT NULL COMMENT '主键',
  `msisdn` varchar(20) DEFAULT NULL COMMENT '物联网卡msisdn',
  `day` varchar(10) DEFAULT NULL COMMENT '日期',
  `type` int(1) DEFAULT NULL COMMENT '1月统计 2日统计',
  `value` varchar(11) DEFAULT NULL COMMENT '使用量/分钟',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='物联网卡语音使用情况';

+ 42 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimDo.java

@ -0,0 +1,42 @@
package com.yihu.jw.entity.care.sim;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2022/2/11.
 * 物联网卡--job更新
 */
@Entity
@Table(name = "wlyy_sims")
public class WlyySimDo extends UuidIdentityEntity {
    private String msisdn;
    private String iccid;
    private String imsi;
    public String getMsisdn() {
        return msisdn;
    }
    public void setMsisdn(String msisdn) {
        this.msisdn = msisdn;
    }
    public String getIccid() {
        return iccid;
    }
    public void setIccid(String iccid) {
        this.iccid = iccid;
    }
    public String getImsi() {
        return imsi;
    }
    public void setImsi(String imsi) {
        this.imsi = imsi;
    }
}

+ 51 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimFlowDo.java

@ -0,0 +1,51 @@
package com.yihu.jw.entity.care.sim;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2022/2/11.
 * 物联网卡流量使用
 */
@Entity
@Table(name="wlyy_sims_flow")
public class WlyySimFlowDo extends UuidIdentityEntity {
    private String msisdn;
    private String day;
    private Integer type;//1月统计 2日统计
    private String value;//使用量KB
    public String getMsisdn() {
        return msisdn;
    }
    public void setMsisdn(String msisdn) {
        this.msisdn = msisdn;
    }
    public String getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

+ 50 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/sim/WlyySimVoicesDo.java

@ -0,0 +1,50 @@
package com.yihu.jw.entity.care.sim;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Bing on 2022/2/11.
 */
@Entity
@Table(name="wlyy_sims_voices")
public class WlyySimVoicesDo extends UuidIdentityEntity {
    private String msisdn;
    private String day;
    private Integer type;//1月统计 2日统计
    private String value;//使用量/分钟
    public String getMsisdn() {
        return msisdn;
    }
    public void setMsisdn(String msisdn) {
        this.msisdn = msisdn;
    }
    public String getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

+ 6 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/NetworkCardConfig.java

@ -17,6 +17,7 @@ public class NetworkCardConfig {
    public static final String appid="571AIOT2021072910102922281";
    public static final String password="OnXE@QFlwt9R";
    public static final String redisKey="dianXinAssesToken";
    public static final String flowGroupId= "9911000019265335";//流量池群组
    //APPID+YYYYMMDDHHMISS+8位数字序列
    public static String getTransid() {
@ -31,4 +32,9 @@ public class NetworkCardConfig {
    public static final String setPatientContacts="https://api.iot.10086.cn/v5/ec/config/member-voice-whitelist";
    //查询语音卡 群组Id
    public static final String getGroupId="https://api.iot.10086.cn/v5/ec/query/group-by-member";
    //获取流量池使用量
    public static final String getGroupFlowUsage="https://api.iot.10086.cn/v5/ec/query/group-data-usage";
}

+ 56 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.device.NetworkCardService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.care.service.statistics.DetectionPlatformService;
@ -40,6 +41,8 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    private PatientDeviceService patientDeviceService;
    @Autowired
    private SecurityMonitoringOrderService securityMonitoringOrderService;
    @Autowired
    private NetworkCardService networkCardService;
    @ApiOperation("环境信息")
@ -326,4 +329,57 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
        }
    }
    @ApiOperation("获取本月流量池使用信息")
    @ResponseBody
    @RequestMapping(value = "getFlowPoolInfo", method = RequestMethod.GET)
    public ObjEnvelop getPatientContacts() {
        try {
            return ObjEnvelop.getSuccess("查询成功", networkCardService.getFlowPoolInfo());
        } catch (Exception e) {
           return failedObjEnvelopException2(e);
        }
    }
    @ApiOperation("获取流量/语音使用趋势--折线")
    @ResponseBody
    @RequestMapping(value = "getFlowVoiceLineInfo", method = RequestMethod.GET)
    public ListEnvelop getFlowVoiceLineInfo(@ApiParam(name="type",value = "1月2日")
                                       @RequestParam(value ="type",required = true)String type,
                                       @ApiParam(name="data",value = "flow,voice")
                                       @RequestParam(value ="data",required = true)String data,
                                       @ApiParam(name="size",value = "返回大小")
                                       @RequestParam(value ="size",required = true)Integer size) {
        try {
            return ListEnvelop.getSuccess("查询成功",networkCardService.getFlowVoiceLineInfo(type,data,size));
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
    @ApiOperation("获取流量/语音使用信息")
    @ResponseBody
    @RequestMapping(value = "getSimFlowVoiceLineInfo", method = RequestMethod.GET)
    public ListEnvelop getSimFlowVoiceLineInfo(@ApiParam(name="type",value = "1月2日")
                                            @RequestParam(value ="type",required = true)String type,
                                            @ApiParam(name="data",value = "flow,voice")
                                            @RequestParam(value ="data",required = true)String data,
                                            @ApiParam(name="day",value = "")
                                            @RequestParam(value ="day",required = false)String day) {
        try {
            return ListEnvelop.getSuccess("查询成功",networkCardService.getSimFlowVoiceLineInfo(type,data,day));
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
    @ApiOperation("获取物联卡数量")
    @ResponseBody
    @RequestMapping(value = "getSimCounts", method = RequestMethod.GET)
    public ListEnvelop getSimCounts() {
        try {
            return ListEnvelop.getSuccess("查询成功",networkCardService.getSimCounts());
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
}

+ 65 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/NetworkCardService.java

@ -10,17 +10,21 @@ import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.bouncycastle.math.ec.custom.sec.SecT409R1Curve;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
@ -33,6 +37,8 @@ public class NetworkCardService {
    private StringRedisTemplate redisTemplate;
    @Autowired
    private HttpClientUtilCare httpClientUtil;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 获取电信物联网卡assesToken
@ -147,4 +153,63 @@ public class NetworkCardService {
        return null;
    }
    /**
     * 获取本月流量池使用信息(实时)
     * @return
     * @throws
     */
    public String getFlowPoolInfo() throws Exception {
        List<NameValuePair> params = new ArrayList<>();
        String useAmount = "";
        params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
        params.add(new BasicNameValuePair("token", getAccessToken()));
        params.add(new BasicNameValuePair("groupId", NetworkCardConfig.flowGroupId));
        String response = httpClientUtil.get("https://api.iot.10086.cn/v5/ec/query/group-data-usage",params,"UTF-8");
//        {"status":"0","message":"正确","result":[{"useAmount":"2507595.00"}]}  单位KB  1GB=1024MB 1MB=1021KB
        JSONObject responseBody = JSONObject.parseObject(response);
        if ("0".equals(responseBody.getString("status"))){
            useAmount= responseBody.getJSONArray("result").getJSONObject(0).getString("useAmount");
        }else{
            throw new Exception("流量池接口查询失败");
        }
        return useAmount;
    }
    public List<Map<String,Object>> getFlowVoiceLineInfo(String type,String data,Integer size){
        String sql = "";
        if ("flow".equals(data)){
            sql = " select  sum(`VALUE`) value,day,type from wlyy_sims_flow where type="+type+" GROUP BY day,type ORDER BY day desc limit "+size;
        }if ("voice".equals(data)){
            sql = " select  sum(`VALUE`) value,day,type from wlyy_sims_voices where type="+type+" GROUP BY day,type ORDER BY day desc limit "+size;
        }
        return jdbcTemplate.queryForList(sql);
    }
    public List<Map<String,Object>> getSimFlowVoiceLineInfo(String type,String data,String day){
        String sql = "";
        String sqlFilter = " ";
        if (StringUtils.isBlank(day)){
            if ("1".equals(type)){
                day = DateUtil.dateToStr(new Date(),DateUtil.YYYYMM);
            }
            if ("2".equals(type)){
                Date yesDay = DateUtil.getPreDays(new Date(),-1);
                day = DateUtil.dateToStr(yesDay,DateUtil.YYYYMMDD);
            }
        }
        sqlFilter += " and day='"+day+"' ";
        if ("flow".equals(data)){
            sql = " select * from wlyy_sims_flow where type="+type+" ";
        }if ("voice".equals(data)){
            sql = " select * from wlyy_sims_voices where type="+type+" ";
        }
        sqlFilter += " ORDER BY `value`+0 desc ";
        return jdbcTemplate.queryForList(sql+sqlFilter);
    }
    public List<Map<String,Object>> getSimCounts(){
        String sql = " select dict_value,dict_code from wlyy_hospital_sys_dict where dict_name='WLYY_SIM' ";
        return jdbcTemplate.queryForList(sql);
    }
}

+ 14 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/config/NetworkCardConfig.java

@ -32,4 +32,18 @@ public class NetworkCardConfig {
    //查询语音卡 群组Id
    public static final String getGroupId="https://api.iot.10086.cn/v5/ec/query/group-by-member";
    //查询集团所有群组信息
    public static final String getMyGroups="https://api.iot.10086.cn/v5/ec/query/group-info";
    //获取群组卡号信息 返回SIM卡的 msisdn
    public static final String getGroupMember="https://api.iot.10086.cn/v5/ec/query/group-member";
    //物联网卡单卡批量某一天流量使用 返回KB
    public static final String getFlowUsageDaily="https://api.iot.10086.cn/v5/ec/query/sim-data-usage-daily/batch";
    //物联网卡单卡批量获取某月流量使用  KB
    public static final String getFlowUsageMonthly="https://api.iot.10086.cn/v5/ec/query/sim-data-usage-monthly/batch";
    //物联网卡单卡语音单日批量使用情况 分钟
    public static final String getVoiceUsageDaily="https://api.iot.10086.cn/v5/ec/query/sim-voice-usage-daily/batch";
    //物联网卡单卡语音某月批量使用情况 分钟
    public static final String getVoiceUsageMonthly="https://api.iot.10086.cn/v5/ec/query/sim-voice-usage-monthly/batch";
}

+ 11 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.care.dao.sim;
import com.yihu.jw.entity.care.sim.WlyySimDo;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Bing on 2022/2/11.
 */
public interface WlyySimDao extends PagingAndSortingRepository<WlyySimDo,String>, JpaSpecificationExecutor<WlyySimDo> {
}

+ 20 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimFlowDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.sim;
import com.yihu.jw.entity.care.sim.WlyySimFlowDo;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by Bing on 2022/2/14.
 */
public interface WlyySimFlowDao extends PagingAndSortingRepository<WlyySimFlowDo,String>,
        JpaSpecificationExecutor<WlyySimFlowDo> {
    @Modifying
    @Transactional
    @Query("delete WlyySimFlowDo sv where sv.day=?1 and sv.type=?2 ")
    void deleteByDayAndType(String day,Integer type);
}

+ 20 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/sim/WlyySimVoiceDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.sim;
import com.yihu.jw.entity.care.sim.WlyySimVoicesDo;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by Bing on 2022/2/14.
 */
public interface WlyySimVoiceDao extends PagingAndSortingRepository<WlyySimVoicesDo,String>,
        JpaSpecificationExecutor<WlyySimVoicesDo> {
    @Modifying
    @Transactional
    @Query("delete WlyySimVoicesDo sv where sv.day=?1 and sv.type=?2 ")
    void deleteByDayAndType(String day,Integer type);
}

+ 30 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java

@ -11,6 +11,9 @@ import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.job.order.CancelPayOrderJob;
import com.yihu.jw.care.job.order.EmeWarnOrderDayJob;
import com.yihu.jw.care.job.order.EmeWarnOrderJob;
import com.yihu.jw.care.job.sim.GetSimsVoiceFlowDayJob;
import com.yihu.jw.care.job.sim.GetSimsVoiceFlowMonthJob;
import com.yihu.jw.care.job.sim.UpdateSimsJob;
import com.yihu.jw.care.job.visit.OverTimeVistJob;
import com.yihu.jw.care.util.SystemConf;
import org.slf4j.Logger;
@ -133,6 +136,33 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("SAVE_DATA_PUSH_JOB success");
            }
            //定时查询移动平台物联卡信息
            if (!quartzHelper.isExistJob("UPDATE_SIMS_JOB")){
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("UPDATE_SIMS_JOB");
                quartzHelper.addJob(UpdateSimsJob.class, trigger, "UPDATE_SIMS_JOB", new HashMap<String, Object>());
                logger.info("UPDATE_SIMS_JOB success");
            }else {
                logger.info("UPDATE_SIMS_JOB success");
            }
            //定时查询移动平台物联卡信息--日
            if (!quartzHelper.isExistJob("GET_SIMS_VOICE_FLOW_DAY_JOB")){
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("GET_SIMS_VOICE_FLOW_DAY_JOB");
                quartzHelper.addJob(GetSimsVoiceFlowDayJob.class, trigger, "GET_SIMS_VOICE_FLOW_DAY_JOB", new HashMap<String, Object>());
                logger.info("GET_SIMS_VOICE_FLOW_DAY_JOB success");
            }else {
                logger.info("GET_SIMS_VOICE_FLOW_DAY_JOB success");
            }
            //定时查询移动平台物联卡信息--月
            if (!quartzHelper.isExistJob("GET_SIMS_VOICE_FLOW_MONTH_JOB")){
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("GET_SIMS_VOICE_FLOW_MONTH_JOB");
                quartzHelper.addJob(GetSimsVoiceFlowMonthJob.class, trigger, "GET_SIMS_VOICE_FLOW_MONTH_JOB", new HashMap<String, Object>());
                logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB success");
            }else {
                logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB success");
            }
        } catch (Exception e) {
            logger.info(" job start failed");
        }

+ 127 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/GetSimsVoiceFlowDayJob.java

@ -0,0 +1,127 @@
package com.yihu.jw.care.job.sim;
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.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Created by Bing on 2022/2/14.
 * 获取物联网卡流量语音使用情况 每日
 */
@DisallowConcurrentExecution
public class GetSimsVoiceFlowDayJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(GetSimsVoiceFlowDayJob.class);
    @Autowired
    private NetworkCardService networkCardService;
    @Autowired
    private WlyySimVoiceDao wlyySimVoiceDao;
    @Autowired
    private WlyySimFlowDao wlyySimFlowDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("GET_SIMS_VOICE_FLOW_DAY_JOB start");
        Date yesDay = DateUtil.getPreDays(new Date(),-1);
        String dateTime = DateUtil.dateToStr(yesDay,DateUtil.YYYYMMDD);
        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();
                }
            }
            logger.info("GET_SIMS_VOICE_FLOW_DAY_JOB end");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("GET_SIMS_VOICE_FLOW_DAY_JOB end===ERROE===,message:"+e.getMessage());
        }
    }
}

+ 134 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/GetSimsVoiceFlowMonthJob.java

@ -0,0 +1,134 @@
package com.yihu.jw.care.job.sim;
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.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Created by Bing on 2022/2/14.
 * 获取物联网卡流量语音使用情况 每月
 */
@DisallowConcurrentExecution
public class GetSimsVoiceFlowMonthJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(GetSimsVoiceFlowMonthJob.class);
    @Autowired
    private NetworkCardService networkCardService;
    @Autowired
    private WlyySimVoiceDao wlyySimVoiceDao;
    @Autowired
    private WlyySimFlowDao wlyySimFlowDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB start");
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.set(Calendar.DAY_OF_MONTH,1);
//        cal.add(Calendar.MONTH,-1);
        cal.getTime();
        String dateTime = DateUtil.dateToStr(cal.getTime(),DateUtil.YYYYMM);
        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.deleteByDayAndType(dateTime,1);
                    wlyySimFlowDao.deleteByDayAndType(dateTime,1);
                    wlyySimVoiceDao.save(wlyySimVoicesDos);
                    wlyySimFlowDao.save(wlyySimFlowDos);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB end");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("GET_SIMS_VOICE_FLOW_MONTH_JOB end===ERROE===,message:"+e.getMessage());
        }
    }
}

+ 116 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/sim/UpdateSimsJob.java

@ -0,0 +1,116 @@
package com.yihu.jw.care.job.sim;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.config.NetworkCardConfig;
import com.yihu.jw.care.dao.sim.WlyySimDao;
import com.yihu.jw.care.service.device.NetworkCardService;
import com.yihu.jw.entity.care.sim.WlyySimDo;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Created by Bing on 2022/2/11.
 * 定时更新获取移动物联网群组卡号信息;
 */
@DisallowConcurrentExecution
public class UpdateSimsJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(UpdateSimsJob.class);
    @Autowired
    private NetworkCardService networkCardService;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private WlyySimDao wlyySimDao;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info(" UPDATE_SIMS_JOB start");
        try {
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
            try {
                params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
            } catch (Exception e) {
                e.printStackTrace();
            }
            params.add(new BasicNameValuePair("groupId", "9911000019333024"));
            params.add(new BasicNameValuePair("pageSize", "50"));
            params.add(new BasicNameValuePair("startNum", "1"));
            String response = httpClientUtil.get(NetworkCardConfig.getMyGroups,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);
                if (0<Integer.parseInt(result.getString("totalCount"))){
                    JSONArray groupArr = result.getJSONArray("groupList");
                    List<String> groups = groupArr.stream().map(item->((JSONObject)item).getString("groupId")).collect(Collectors.toList());
                    List<WlyySimDo> simDos = new ArrayList<>();
                    List<String> msisdn = new ArrayList<>();
                    for (String groupId:groups) {
                        Integer page = 1;
                        Integer forFlag = 1;
                        try {
                            for (;forFlag>0;page++){
                                params = new ArrayList<>();
                                params.add(new BasicNameValuePair("transid", NetworkCardConfig.getTransid()));
                                params.add(new BasicNameValuePair("token", networkCardService.getAccessToken()));
                                params.add(new BasicNameValuePair("groupId", groupId));
                                params.add(new BasicNameValuePair("pageSize", "50"));//size
                                params.add(new BasicNameValuePair("startNum", page+""));//页码
                                response = httpClientUtil.get(NetworkCardConfig.getGroupMember, params, "UTF-8");
                                responseObj = JSONObject.parseObject(response);
                                status = responseObj.getString("status");
                                if ("0".equals(status)) {
                                    resultArray =responseObj.getJSONArray("result");
                                    result =resultArray.getJSONObject(0);
                                    String lastFlag = result.getString("flag");
                                    JSONArray members = result.getJSONArray("memberinfoList");
                                    Integer memberSize = members.size();
                                    for (int i=0;i<memberSize;i++){
                                        JSONObject memberInfo = members.getJSONObject(i);
                                        String memberNum = memberInfo.getString("memberNum");
                                        if (msisdn.contains(memberNum)){
                                            continue;
                                        }else {
                                            msisdn.add(memberNum);
                                            WlyySimDo wlyySimDo = new WlyySimDo();
                                            wlyySimDo.setMsisdn(memberNum);
                                            simDos.add(wlyySimDo);
                                        }
                                    }
                                    if ("Y".equals(lastFlag)){
                                        forFlag = -1;
                                    }
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    wlyySimDao.deleteAll();
                    wlyySimDao.save(simDos);
                }
            }
            logger.info(" UPDATE_SIMS_JOB end");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("UPDATE_SIMS_JOB end===ERROE===,message:"+e.getMessage());
        }
    }
}

+ 210 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/WlyysimFlowVoiceService.java

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

+ 13 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/web/JobController.java

@ -8,6 +8,7 @@ import com.yihu.jw.care.job.message.DoctorSendUnreadJob;
import com.yihu.jw.care.job.message.PatientSendUnreadJob;
import com.yihu.jw.care.service.BirthdayReminderService;
import com.yihu.jw.care.service.JobService;
import com.yihu.jw.care.service.WlyysimFlowVoiceService;
import com.yihu.jw.care.util.DateUtil;
import com.yihu.jw.care.util.SystemConf;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -40,6 +41,8 @@ public class JobController extends BaseController {
    private final QuartzHelper quartzHelper;
    @Autowired
    private BirthdayReminderService birthdayReminderService;
    @Autowired
    private WlyysimFlowVoiceService wlyysimFlowVoiceService;
    @RequestMapping(value = "/deviceLostAssociationJob", method = RequestMethod.POST)
    @ApiOperation("医养物联网检测大屏失联率")
@ -315,7 +318,16 @@ public class JobController extends BaseController {
    }
    @RequestMapping(value = "/wlyySimFlowVoice", method = RequestMethod.POST)
    @ApiOperation("物联网卡流量语音初始化查询")
    public String wlyySimFlowVoice() {
        try {
            return write(200, wlyysimFlowVoiceService.initData());
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }

+ 9 - 0
svr/svr-cloud-job/src/main/resources/system.properties

@ -31,3 +31,12 @@ EME_WARNING_OVERTIME_NOT_RESPONSE_DAY=0 30 9 * * ?
#\u5B9A\u65F6\u63A8\u9001\u4FDD\u5B58\u6570\u636E
SAVE_DATA_PUSH_JOB= 0 0 23 * * ?
#\u5B9A\u65F6\u67E5\u8BE2\u79FB\u52A8\u5E73\u53F0\u7269\u8054\u5361\u4FE1\u606F
UPDATE_SIMS_JOB= 0 30 0 * * ?
#\u5B9A\u65F6\u67E5\u8BE2\u79FB\u52A8\u7269\u8054\u5361\u8BED\u97F3\uFF0C\u6D41\u91CF\u4F7F\u7528\u4FE1\u606F--\u65E5
GET_SIMS_VOICE_FLOW_DAY_JOB= 0 50 1 * * ?
#\u5B9A\u65F6\u67E5\u8BE2\u79FB\u52A8\u7269\u8054\u5361\u8BED\u97F3\uFF0C\u6D41\u91CF\u4F7F\u7528\u4FE1\u606F--\u6708
GET_SIMS_VOICE_FLOW_MONTH_JOB= 0 0 2 * * ?