|
@@ -0,0 +1,140 @@
|
|
|
+package com.gyee.frame.service.report;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.gyee.frame.mapper.auto.MisdailydataMapper;
|
|
|
+import com.gyee.frame.model.auto.Misdailydata;
|
|
|
+import com.gyee.frame.model.auto.MisdailydataExample;
|
|
|
+import com.gyee.frame.util.DateUtils;
|
|
|
+import com.gyee.frame.util.SnowflakeIdWorker;
|
|
|
+import com.gyee.frame.util.excel.MisDailyData;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class MisDailyDateService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MisdailydataMapper misdailydataMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存数据
|
|
|
+ *
|
|
|
+ * @param list
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void insert(List<MisDailyData> list) {
|
|
|
+ if (list == null || list.size() == 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ list.stream().forEach(a -> {
|
|
|
+ String str = JSONObject.toJSONString(a);
|
|
|
+ Misdailydata data = JSON.parseObject(str, Misdailydata.class);
|
|
|
+ data.setId(SnowflakeIdWorker.getUUID());
|
|
|
+ boolean flag = selectItem(data);
|
|
|
+ if (!flag)
|
|
|
+ misdailydataMapper.insert(data);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询是否存在
|
|
|
+ * @param data
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean selectItem(Misdailydata data){
|
|
|
+ MisdailydataExample example = new MisdailydataExample();
|
|
|
+ example.createCriteria().andImportdateEqualTo(data.getImportdate())
|
|
|
+ .andUnitNoEqualTo((short) data.getUnitNo());
|
|
|
+
|
|
|
+ List<Misdailydata> list = misdailydataMapper.selectByExample(example);
|
|
|
+ if (list.size() > 0)
|
|
|
+ return true;
|
|
|
+ else
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算数据 风速、同期电量等
|
|
|
+ * @param st
|
|
|
+ * @param et
|
|
|
+ */
|
|
|
+ public List<Object> getCalData(Date st, Date et){
|
|
|
+ //当前数据
|
|
|
+ MisdailydataExample example = new MisdailydataExample();
|
|
|
+ example.createCriteria().andImportdateBetween(st, et);
|
|
|
+ example.setOrderByClause(" IMPORTDATE ASC");
|
|
|
+ List<Misdailydata> listC = misdailydataMapper.selectByExample(example);
|
|
|
+
|
|
|
+ //同期数据
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(st);
|
|
|
+ cal.add(Calendar.YEAR, -1);
|
|
|
+ Date sDate = cal.getTime();
|
|
|
+ cal.clear();
|
|
|
+ cal.setTime(et);
|
|
|
+ cal.add(Calendar.YEAR, -1);
|
|
|
+ Date eDate = cal.getTime();
|
|
|
+
|
|
|
+ MisdailydataExample example2 = new MisdailydataExample();
|
|
|
+ example2.createCriteria().andImportdateBetween(sDate, eDate);
|
|
|
+ example2.setOrderByClause(" IMPORTDATE ASC");
|
|
|
+ List<Misdailydata> listT = misdailydataMapper.selectByExample(example2);
|
|
|
+ Map<String, List<Misdailydata>> collect2 = listT.stream().filter(a -> !a.getProjectid().equals("HJ"))
|
|
|
+ .collect(Collectors.groupingBy(Misdailydata::getName, Collectors.toList()));
|
|
|
+
|
|
|
+ //计算数据
|
|
|
+ List<Object> list = new ArrayList<>();
|
|
|
+ if (listC.size() > 0){
|
|
|
+ Map<String, List<Misdailydata>> collect = listC.stream().filter(a -> !a.getProjectid().equals("HJ"))
|
|
|
+ .collect(Collectors.groupingBy(Misdailydata::getName, Collectors.toList()));
|
|
|
+ collect.forEach((k, v) -> {
|
|
|
+ Map<String, Object> mp = new HashMap<>();
|
|
|
+ double pjfs = v.stream().mapToDouble(Misdailydata::getPjfsJzR).average().getAsDouble();
|
|
|
+ double fdl = v.stream().mapToDouble(Misdailydata::getFdlJzR).sum();
|
|
|
+ double yfdl = v.stream().mapToDouble(Misdailydata::getYfdlJzR).sum();
|
|
|
+ double fdlscada = v.stream().mapToDouble(Misdailydata::getFdlJzRScada).sum();
|
|
|
+ double swdl = v.stream().mapToDouble(Misdailydata::getSwdlJzRT).sum();
|
|
|
+ double zhcydl = v.stream().mapToDouble(Misdailydata::getZhcydlJzR).sum();
|
|
|
+ double zhcydlscada = v.stream().mapToDouble(Misdailydata::getZhcydlJzRScada).sum();
|
|
|
+ mp.put("name", k);
|
|
|
+ mp.put("fs1", pjfs);
|
|
|
+ mp.put("fdl1", fdl);
|
|
|
+ mp.put("ylj1", yfdl);
|
|
|
+ mp.put("fdlscada1", fdlscada);
|
|
|
+ mp.put("swdl1", swdl);
|
|
|
+ mp.put("zhcydl1", zhcydl);
|
|
|
+ mp.put("zhcydlscada1", zhcydlscada);
|
|
|
+
|
|
|
+ List<Misdailydata> ls = collect2.get(k);
|
|
|
+ double pjfs2 = ls.stream().mapToDouble(Misdailydata::getPjfsJzR).average().getAsDouble();
|
|
|
+ double fdl2 = ls.stream().mapToDouble(Misdailydata::getFdlJzR).sum();
|
|
|
+ double yfdl2 = ls.stream().mapToDouble(Misdailydata::getYfdlJzR).sum();
|
|
|
+ double fdlscada2 = ls.stream().mapToDouble(Misdailydata::getFdlJzRScada).sum();
|
|
|
+ double swdl2 = ls.stream().mapToDouble(Misdailydata::getSwdlJzRT).sum();
|
|
|
+ double zhcydl2 = ls.stream().mapToDouble(Misdailydata::getZhcydlJzR).sum();
|
|
|
+ double zhcydlscada2 = ls.stream().mapToDouble(Misdailydata::getZhcydlJzRScada).sum();
|
|
|
+ mp.put("fs2", pjfs2);
|
|
|
+ mp.put("fdl2", fdl2);
|
|
|
+ mp.put("ylj2", yfdl2);
|
|
|
+ mp.put("fdlscada2", fdlscada2);
|
|
|
+ mp.put("swdl2", swdl2);
|
|
|
+ mp.put("zhcydl2", zhcydl2);
|
|
|
+ mp.put("zhcydlscada2", zhcydlscada2);
|
|
|
+
|
|
|
+ list.add(mp);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args){
|
|
|
+ }
|
|
|
+}
|