|
@@ -10,38 +10,14 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.Map.Entry;
|
|
import java.util.Map.Entry;
|
|
|
|
|
|
|
|
|
|
+import cn.vbdsm.analysis.dao.*;
|
|
|
|
|
+import cn.vbdsm.analysis.model.*;
|
|
|
import org.apache.log4j.Logger;
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
-import cn.vbdsm.analysis.dao.CityDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.CityDateMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.CityMonthMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.CityOnlineDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.DistrictDateMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.DistrictMonthMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.DistrictOnlineDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ParkDateMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ParkMonthMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ParkOnlineDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.PowerUserDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ProvinceDateMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ProvinceMonthMDao;
|
|
|
|
|
-import cn.vbdsm.analysis.dao.ProvinceOnlineDao;
|
|
|
|
|
-import cn.vbdsm.analysis.model.CityDateM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.CityMonthM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.CityOnline;
|
|
|
|
|
-import cn.vbdsm.analysis.model.DistrictDateM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.DistrictMonthM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.DistrictOnline;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ParkDateM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ParkMonthM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ParkOnline;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ProvinceDateM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ProvinceMonthM;
|
|
|
|
|
-import cn.vbdsm.analysis.model.ProvinceOnline;
|
|
|
|
|
import cn.vbdsm.common.annotation.Comment;
|
|
import cn.vbdsm.common.annotation.Comment;
|
|
|
import cn.vbdsm.common.constants.CronExpression;
|
|
import cn.vbdsm.common.constants.CronExpression;
|
|
|
|
|
|
|
@@ -61,20 +37,23 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
@Autowired private DistrictOnlineDao districtOnlineDao;
|
|
@Autowired private DistrictOnlineDao districtOnlineDao;
|
|
|
@Autowired private CityOnlineDao cityOnlineDao;
|
|
@Autowired private CityOnlineDao cityOnlineDao;
|
|
|
@Autowired private ProvinceOnlineDao provinceOnlineDao;
|
|
@Autowired private ProvinceOnlineDao provinceOnlineDao;
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ @Autowired private CompanyOnlineDao companyOnlineDao;
|
|
|
|
|
+
|
|
|
//操作园区、省、城市日最值统计数据
|
|
//操作园区、省、城市日最值统计数据
|
|
|
@Autowired private ParkDateMDao parkDateMDao;
|
|
@Autowired private ParkDateMDao parkDateMDao;
|
|
|
@Autowired private ProvinceDateMDao provinceDateMDao;
|
|
@Autowired private ProvinceDateMDao provinceDateMDao;
|
|
|
@Autowired private CityDateMDao cityDateMDao;
|
|
@Autowired private CityDateMDao cityDateMDao;
|
|
|
@Autowired private DistrictDateMDao districtDateMDao;
|
|
@Autowired private DistrictDateMDao districtDateMDao;
|
|
|
-
|
|
|
|
|
|
|
+ @Autowired private CompanyDateMDao companyDateMDao;
|
|
|
|
|
+
|
|
|
//操作园区、省、城市月最值统计数据
|
|
//操作园区、省、城市月最值统计数据
|
|
|
@Autowired private ParkMonthMDao parkMonthMDao;
|
|
@Autowired private ParkMonthMDao parkMonthMDao;
|
|
|
@Autowired private ProvinceMonthMDao provinceMonthMDao;
|
|
@Autowired private ProvinceMonthMDao provinceMonthMDao;
|
|
|
@Autowired private CityMonthMDao cityMonthMDao;
|
|
@Autowired private CityMonthMDao cityMonthMDao;
|
|
|
@Autowired private DistrictMonthMDao districtMonthMDao;
|
|
@Autowired private DistrictMonthMDao districtMonthMDao;
|
|
|
-
|
|
|
|
|
|
|
+ //@Autowired private CompanyMonthMDao companyMonthMDao;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
//查找企业和园区
|
|
//查找企业和园区
|
|
|
@Autowired private PowerUserDao powerUserDao;
|
|
@Autowired private PowerUserDao powerUserDao;
|
|
|
|
|
|
|
@@ -418,7 +397,7 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
}
|
|
}
|
|
|
//平均值
|
|
//平均值
|
|
|
districtData.get(district).setMavg(districtData.get(district).getMavg().add(online.getP()));
|
|
districtData.get(district).setMavg(districtData.get(district).getMavg().add(online.getP()));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
String totalKey = "district_" + district;
|
|
String totalKey = "district_" + district;
|
|
|
if(!total.containsKey(totalKey)){
|
|
if(!total.containsKey(totalKey)){
|
|
|
total.put(totalKey, new BigDecimal(0));
|
|
total.put(totalKey, new BigDecimal(0));
|
|
@@ -426,12 +405,45 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
total.put(totalKey,total.get(totalKey).add(new BigDecimal(1)));
|
|
total.put(totalKey,total.get(totalKey).add(new BigDecimal(1)));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ Map<String,CompanyDateM> companyData = new HashMap<String,CompanyDateM>();
|
|
|
|
|
+ List<CompanyOnline> companyOnlineList = companyOnlineDao.selectByDate(time);
|
|
|
|
|
+ for (CompanyOnline online : companyOnlineList) {
|
|
|
|
|
+ String company = online.getCompanyId().toString();
|
|
|
|
|
+ if(!companyData.containsKey(company)){
|
|
|
|
|
+ CompanyDateM pm = new CompanyDateM();
|
|
|
|
|
+ pm.setGetDate(Integer.valueOf(time));
|
|
|
|
|
+ pm.setCompanyId(online.getCompanyId());
|
|
|
|
|
+ companyData.put(company,pm);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(online.getP() != null){
|
|
|
|
|
+ //最小值
|
|
|
|
|
+ if(isMin(companyData.get(company).getMmin(), online.getP(),false)){
|
|
|
|
|
+ companyData.get(company).setMinTime(online.getGetTime());
|
|
|
|
|
+ companyData.get(company).setMmin(online.getP());
|
|
|
|
|
+ }
|
|
|
|
|
+ //最大值
|
|
|
|
|
+ if(isMax(companyData.get(company).getMmax(), online.getP(),false)){
|
|
|
|
|
+ companyData.get(company).setMaxTime(online.getGetTime());
|
|
|
|
|
+ companyData.get(company).setMmax(online.getP());
|
|
|
|
|
+ }
|
|
|
|
|
+ //平均值
|
|
|
|
|
+ companyData.get(company).setMavg(companyData.get(company).getMavg().add(online.getP()));
|
|
|
|
|
+
|
|
|
|
|
+ String totalKey = "company_" + company;
|
|
|
|
|
+ if(!total.containsKey(totalKey)){
|
|
|
|
|
+ total.put(totalKey, new BigDecimal(0));
|
|
|
|
|
+ }
|
|
|
|
|
+ total.put(totalKey,total.get(totalKey).add(new BigDecimal(1)));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
List<DistrictDateM> districtDateList = new ArrayList<DistrictDateM>();
|
|
List<DistrictDateM> districtDateList = new ArrayList<DistrictDateM>();
|
|
|
List<CityDateM> cityDateList = new ArrayList<CityDateM>();
|
|
List<CityDateM> cityDateList = new ArrayList<CityDateM>();
|
|
|
List<ProvinceDateM> provinceDateList = new ArrayList<ProvinceDateM>();
|
|
List<ProvinceDateM> provinceDateList = new ArrayList<ProvinceDateM>();
|
|
|
List<ParkDateM> parkDateList = new ArrayList<ParkDateM>();
|
|
List<ParkDateM> parkDateList = new ArrayList<ParkDateM>();
|
|
|
-
|
|
|
|
|
|
|
+ List<CompanyDateM> companyDateList = new ArrayList<CompanyDateM>();
|
|
|
|
|
+
|
|
|
for (Entry<String, BigDecimal> entry : total.entrySet()) {
|
|
for (Entry<String, BigDecimal> entry : total.entrySet()) {
|
|
|
if(entry.getKey().startsWith("park_")){
|
|
if(entry.getKey().startsWith("park_")){
|
|
|
String key = entry.getKey().replace("park_","");
|
|
String key = entry.getKey().replace("park_","");
|
|
@@ -461,6 +473,13 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
(districtData.get(key).getMmin() == null || districtData.get(key).getMmin().doubleValue() == 0))){
|
|
(districtData.get(key).getMmin() == null || districtData.get(key).getMmin().doubleValue() == 0))){
|
|
|
districtDateList.add(districtData.get(key));
|
|
districtDateList.add(districtData.get(key));
|
|
|
}
|
|
}
|
|
|
|
|
+ }else if(entry.getKey().startsWith("company_")){
|
|
|
|
|
+ String key = entry.getKey().replace("company_","");
|
|
|
|
|
+ companyData.get(key).setMavg(companyData.get(key).getMavg().divide(entry.getValue(),BigDecimal.ROUND_UP));
|
|
|
|
|
+ if(!((companyData.get(key).getMmax() == null || companyData.get(key).getMmax().doubleValue() == 0) &&
|
|
|
|
|
+ (companyData.get(key).getMmin() == null || companyData.get(key).getMmin().doubleValue() == 0))){
|
|
|
|
|
+ companyDateList.add(companyData.get(key));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(parkDateList.size() > 0 && parkDateList.size() % 1000 == 0){
|
|
if(parkDateList.size() > 0 && parkDateList.size() % 1000 == 0){
|
|
@@ -502,6 +521,16 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ if(companyDateList.size() > 0 && companyDateList.size() % 1000 == 0){
|
|
|
|
|
+ try {
|
|
|
|
|
+ int count = companyDateMDao.replaceForBatch(companyDateList);
|
|
|
|
|
+ LOG.info("产生" + companyDateList.size() + "条公司最值统计数据,成功写入" + count + "条。");
|
|
|
|
|
+ companyDateList.clear();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -541,6 +570,16 @@ public class DivisionLimitTimer extends LimitAnalBase {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ if(companyDateList.size() > 0){
|
|
|
|
|
+ try {
|
|
|
|
|
+ int count = companyDateMDao.replaceForBatch(companyDateList);
|
|
|
|
|
+ LOG.info("产生" + companyDateList.size() + "条公司最值统计数据,成功写入" + count + "条。");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|