Newer
Older
device-data-creator / src / main / java / com / casic / service / impl / DayDataProvider.java
chaizhuang on 5 Jun 2023 6 KB 亦庄新增
package com.casic.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.casic.config.DeviceTypeConfig;
import com.casic.dao.*;
import com.casic.entity.*;
import com.casic.service.DayDataService;
import com.casic.util.SnowBizPhyId;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.*;

@Service
public class DayDataProvider implements DayDataService {

    @Resource
    private DayDataDao dayDataDao;
    @Resource
    private WellLocalDataMapper wellLocalDataMapper;
    @Resource
    private WellInfoDao wellInfoDao;
    @Resource
    private LiquidDataMapper liquidDataMapper;
    @Resource
    private HarmfulDataMapper harmfulDataMapper;

    @Override
    public void wellLocalData() {
        List<Map<String, String>> devcodeList = dayDataDao.getWellLocalByType();
        if (devcodeList != null) {
            for (int i = 0; i < devcodeList.size() * 0.9; i++) {
                String devcode = devcodeList.get(i).get("DEVCODE");
                String wellCode = devcodeList.get(i).get("wellCode");
                CreateWellDataLocal(devcode, wellCode);
            }
        }
    }

    @Override
    public void wellCoverData() {
        List<Map<String, String>> devcodeList = dayDataDao.getWellCoverByType();
        if (devcodeList != null) {
            for (int i = 0; i < devcodeList.size() * 0.9; i++) {
                String devcode = devcodeList.get(i).get("DEVCODE");
                String wellCode = devcodeList.get(i).get("wellCode");
                wellDataCreator(devcode, wellCode);
            }
        }
    }

    @Override
    public void liquidData() {
        List<Map<String, Object>> devcodeList = dayDataDao.getLiquidByType();
        List<Map<String, Object>> standardLiquid = dayDataDao.getStandardLiquid();
        Optional<Map<String, Object>> standardLiquidOptional = standardLiquid.stream().findFirst();
        float proportion = 0.0f;
        if (standardLiquidOptional.isPresent()) {
            String liquiddata = String.valueOf(standardLiquidOptional.get().get("liquiddata"));
            String deep = standardLiquidOptional.get().get("DEEP").toString();
            proportion = Float.valueOf(liquiddata) / Float.valueOf(deep);
        }
        if (devcodeList != null) {
            for (int i = 0; i < devcodeList.size() * 0.9; i++) {
                String devcode = String.valueOf(devcodeList.get(i).get("DEVCODE"));
                String wellCode = String.valueOf(devcodeList.get(i).get("wellCode"));
                String deep = String.valueOf(devcodeList.get(i).get("DEEP"));
                Float liquidValue = 0.0f;
                if (!StringUtils.isEmpty(deep)) {
                    liquidValue = proportion * Float.valueOf(deep);
                }
                liquidDataCreator(devcode, wellCode, liquidValue);
            }
        }
    }

    @Override
    public void harmFulData() {
        List<Map<String, String>> devcodeList = dayDataDao.getHarmfulCode();
        if (devcodeList != null) {
            for (int i = 0; i < devcodeList.size() * 0.9; i++) {
                String switchs = String.valueOf(devcodeList.get(i).get("switch"));
                String devcode = String.valueOf(devcodeList.get(i).get("DEVCODE"));
                String wellCode = String.valueOf(devcodeList.get(i).get("wellCode"));
                harmfulDataCreator(devcode, wellCode,switchs);
            }
        }
    }


    private void harmfulDataCreator(String devcode, String wellCode,String switchs) {
        DecimalFormat df = new DecimalFormat("0.00");
        HarmfulData harmfulData = new HarmfulData();
        harmfulData.setWellCode(wellCode);
        harmfulData.setDevcode(devcode);
        Double coData = Math.random();
        harmfulData.setCo(df.format(coData));
        harmfulData.setH2s("0");
        harmfulData.setO2(df.format(coData));
        harmfulData.setUptime(new Date());
        harmfulData.setLogtime(new Date());
        harmfulData.setSWITCH(switchs);
        harmfulDataMapper.insert(harmfulData);
    }


    private Random random = new Random();

    /**
     * 井盖儿3天创建6条
     */
    private void wellDataCreator(String devcode, String wellCode) {
        WellInfo wellInfo = new WellInfo();
//        wellInfo.setId(SnowBizPhyId.getBizPhyId());
        wellInfo.setWellCode(wellCode);
        wellInfo.setDevcode(devcode);
        wellInfo.setDescn("心跳");
        wellInfo.setStatus("0");
        Long initTime = new Date().getTime();
        wellInfo.setLogtime(new Date());
        for (int i = 0; i < 6; i++) {
            wellInfoDao.insert(wellInfo);
            initTime += random.nextInt(200000);
            wellInfo.setLogtime(new Date(initTime));
        }
    }

    /**
     * 1天6次,发六次
     */
    private void liquidDataCreator(String devcode, String wellCode, Float liquidValue) {
        LiquidData liquidData = new LiquidData();
        DecimalFormat df = new DecimalFormat("0.00");
//        liquidData.setId(SnowBizPhyId.getBizPhyId());
        liquidData.setWellCode(wellCode);
        liquidData.setDevcode(devcode);
        liquidData.setCell("22");
        liquidData.setUptime(new Date());
        Long initTime = new Date().getTime();
        for (int i = 0; i < 6; i++) {
            Double errorData = Math.random() * 0.2 - 0.1;
            liquidData.setLiquiddata(df.format(liquidValue + errorData));
            initTime += random.nextInt(200000);
            liquidData.setLogtime(new Date(initTime));
            liquidDataMapper.insert(liquidData);
        }
    }

    /**
     * 4天发六次
     */
    private void CreateWellDataLocal(String devcode, String wellCode) {
        WellLocalData wellLocalData = new WellLocalData();
        DecimalFormat df = new DecimalFormat("0.000000");
//        wellLocalData.setId(SnowBizPhyId.getBizPhyId());
        wellLocalData.setWellCode(wellCode);
        wellLocalData.setDevcode(devcode);
        Double lng = 116.54 + Math.random() * 0.02 - 0.01;
        Double lat = 39.79 + Math.random() * 0.02 - 0.01;
        wellLocalData.setLng(df.format(lng));
        wellLocalData.setLat(df.format(lat));
        Long initTime = new Date().getTime();
        for (int i = 0; i < 6; i++) {
            initTime += random.nextInt(200000);
            wellLocalData.setLogtime(new Date(initTime));
            wellLocalDataMapper.insert(wellLocalData);
        }

    }


}