dengzedong
6 天以前 a6e46fe2b5729e7468b6f3c4e079232801c22520
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
@@ -3,7 +3,9 @@
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.module.model.mcs.pre.dao.MmItemResultDao;
import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
import com.iailab.module.model.mcs.pre.entity.MmItemResultEntity;
import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity;
import com.iailab.module.model.mcs.pre.service.MmItemResultService;
@@ -31,32 +33,6 @@
    @Autowired
    private MmItemResultDao mmItemResultDao;
    @Override
    public List<MmItemResultEntity> getListByOutputId(String outputid, Map<String, Object> params) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date startDateParam = null;
        try {
            startDateParam = sdf.parse((String)params.get("startTime"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Date endDateParam = null;
        try {
            endDateParam = sdf.parse((String)params.get("endTime"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        List<MmItemResultEntity> list = mmItemResultDao.selectList(
                new QueryWrapper<MmItemResultEntity>()
                        .eq("outputid", outputid)
                        .between("datatime", startDateParam, endDateParam)
                        .orderByAsc("datatime")
        );
        return list;
    }
    @Override
    public void savePredictValue(Map<String, List<DataValueVO>> predictValueMap, int t, String nIndex, Date predictTime) {
@@ -75,9 +51,9 @@
            List<DataValueVO> lastVoList = new ArrayList<>();
            int size = entry.getValue().size();
            t = t > 0 ? t : 0;
            t = Math.max(t, 0);
            int n = "n".equals(nIndex) ? size : Integer.parseInt(nIndex);
            int length = (n - t) > 0 ? (n - t) : 0; //预测完不变的数据长度
            int length = Math.max((n - t), 0); //预测完不变的数据长度
            if (size >= n) {
                for (int i = 0; i < (size - length); i ++) {
                    int index = length + i;
@@ -100,7 +76,10 @@
            resultJson.setId(UUID.randomUUID().toString());
            resultJson.setOutputid(entry.getKey());
            resultJson.setPredicttime(predictTime);
            resultJson.setJsonvalue(JSONArray.toJSONString(entry.getValue()));
            List<Double> jsonValueList = entry.getValue().stream().map(valueVO -> {
                return valueVO.getDataValue();
            }).collect(Collectors.toList());
            resultJson.setJsonvalue(JSONArray.toJSONString(jsonValueList));
            Map<String, Object> map4 = new HashMap(2);
            map4.put("TABLENAME", "T_MM_ITEM_RESULT_JSON");
            map4.put("entity", resultJson);
@@ -112,41 +91,7 @@
            params.put("STARTTIME", importList.get(0).getDatatime());
            params.put("ENDTIME", importList.get(importList.size() - 1).getDatatime());
            mmItemResultDao.deletePredictValue(params);
        }
//        Map<String, Object> params = new HashMap(4);
//        params.put("TABLENAME", T_MM_ITEM_RESULT);
//        params.put("OUTPUTID", importList.get(0).getOutputid());
//        params.put("STARTTIME", importList.get(0).getDatatime());
//        params.put("ENDTIME", importList.get(importList.size() - 1).getDatatime());
//        mmItemResultDao.deletePredictValue(params);
//        int num1 = importList.size() / max_group_count;
//        int num2 = importList.size() % max_group_count;
//        if (num2 != 0) {
//            num1++;
//        }
//
//        List<MmItemResultEntity> tempList;
//        //先删除已经存在的数据,再插入新数据
//        for (int i = 0; i < num1; i++) {
//            int startIndex = max_group_count * i;
//            int count = max_group_count;
//            if (num2!=0 && i == num1 - 1) {
//                count = num2;
//            }
//            tempList = new ArrayList<>();
//            //获取某个索引范围内的对象集合
//            for (int j = startIndex; j < startIndex + count; j++) {
//                tempList.add(importList.get(j));
//            }
//            Map<String, Object> map2 = new HashMap<>(2);
//            map2.put("TABLENAME", T_MM_ITEM_RESULT);
//            map2.put("list", tempList);
//            mmItemResultDao.savePredictValue(map2);
//        }
        mmItemResultDao.insertBatch(importList,max_group_count);
        Map<String, Object> map3 = new HashMap<>(2);
@@ -174,4 +119,39 @@
        }).collect(Collectors.toList());
        return result;
    }
    @Override
    public List<Object[]> getData(String outputid, Date startTime, Date endTime, String timeFormat) {
        List<Object[]> result = new ArrayList<>();
        QueryWrapper<MmItemResultEntity> queryWrapper = new QueryWrapper<MmItemResultEntity>()
                .eq("outputid", outputid)
                .between("datatime", startTime, endTime)
                .orderByAsc("datatime");
        List<MmItemResultEntity> list = mmItemResultDao.selectList(queryWrapper);
        if (CollectionUtils.isEmpty(list)) {
            return result;
        }
        list.forEach(item -> {
            Object[] dataItem = new Object[2];
            dataItem[0] = DateUtils.format(item.getDatatime(), timeFormat);
            dataItem[1] = item.getDatavalue().setScale(2, BigDecimal.ROUND_HALF_UP);
            result.add(dataItem);
        });
        return result;
    }
    @Override
    public void savePredictValue(Map<MmItemOutputEntity, Double> predictDoubleValues, Date predictTime) {
        for (Map.Entry<MmItemOutputEntity, Double> entry : predictDoubleValues.entrySet()) {
            MmItemResultJsonEntity resultJson = new MmItemResultJsonEntity();
            resultJson.setId(UUID.randomUUID().toString());
            resultJson.setOutputid(entry.getKey().getId());
            resultJson.setPredicttime(predictTime);
            resultJson.setCumulant(String.valueOf(entry.getValue()));
            Map<String, Object> map4 = new HashMap(2);
            map4.put("TABLENAME", "T_MM_ITEM_RESULT_JSON");
            map4.put("entity", resultJson);
            mmItemResultDao.savePredictJsonValue(map4);
        }
    }
}