kaiyu
2020-11-16 cd264145f9b4107f1430da46269dd306d26f3116
src/main/java/com/moral/controller/ScreenController.java
@@ -41,6 +41,7 @@
import com.rabbitmq.client.*;
import com.rabbitmq.client.Channel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -48,6 +49,7 @@
import io.swagger.models.auth.In;
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
import net.sf.json.JSONString;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.net.ftp.FTPClient;
@@ -72,6 +74,7 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.xml.sax.InputSource;
import static com.moral.common.util.ResourceUtil.getValue;
import static com.moral.common.util.WebUtils.getParametersStartingWith;
import static java.util.Calendar.*;
@@ -708,13 +711,32 @@
            parameters.put("sensors", Arrays.asList(sensorKey));
            // monitorPointService.isCompensateCalculation(parameters);
            list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
            list.remove(0);
            if (list.size() == 23) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                //获取全格式时间yyyy-MM-dd HH:mm:ss
                time1 = time1 + " 00:00:00";
                Date date = sdf.parse(time1);
                date = DateUtil.rollDay(date, 1);
                //将全格式时间截取
                String time2 = sdf2.format(date);
                parameters.put("time", time2);
                List<Map<String, Object>> nextDayList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
                if(!ObjectUtils.isEmpty(nextDayList)){
                    time1=time1.replaceAll(" 00:00:00"," 24");
                    Map<String, Object> datas = nextDayList.get(0);
                    datas.put("time",time1);
                    list.add(datas);
                }
            }
            for (Map<String, Object> map : list) {
                String time = map.get("time").toString();
                time = time.substring(time.length() - 2);
                map.put("time", Integer.valueOf(time));
                if (parameters.get("type").equals("day")) {
             /*   if (parameters.get("type").equals("day")) {
                    map.put("time", Integer.valueOf(time) + 1);
                }
                }*/
                map.put("value", map.remove(sensorKey));
            }
        }
@@ -2037,7 +2059,7 @@
            mon = "" + month;
        }
        String table = "history_minutely_" + year + mon;
        List list = deviceService.byMonitorIdGetDeviceAndWind(monitorPointId,table);
        List list = deviceService.byMonitorIdGetDeviceAndWind(monitorPointId, table);
        return list;
    }
@@ -2058,7 +2080,7 @@
            mon = "" + month;
        }
        String table = "history_minutely_" + year + mon;
        List list = deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId,table);
        List list = deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId, table);
        return list;
    }
@@ -2182,7 +2204,7 @@
                    for (Map<String, Object> dataMap : dataList) {
                        JSONObject dataJson = JSONObject.parseObject(dataMap.get("json").toString());
                        if (dataMap.get("time").toString().equals(day + " 00:00:00.0")) {
                            oneSensorMap.put(dataMap.get("time").toString().substring(0, 10), dataJson.getJSONArray(key).get(2));
                            oneSensorMap.put(dataMap.get("time").toString().substring(0, 10), dataJson.getJSONArray(key).get(0));
                            break;
                        } else {
                            continue;
@@ -2198,7 +2220,7 @@
                    for (Map sameDayHourlyMap : sameDayHourlyList) {
                        List<Double> arr = new ArrayList<>();
                        JSONObject hourlyJson = JSONObject.parseObject(sameDayHourlyMap.get("json").toString());
                        arr.add(Double.parseDouble(hourlyJson.getJSONArray(key).get(2).toString()));
                        arr.add(Double.parseDouble(hourlyJson.getJSONArray(key).get(0).toString()));
                        Double sum = 0.0;
                        for (int i = 0; i < arr.size(); i++) {
                            sum += arr.get(i);
@@ -2234,8 +2256,10 @@
                    for (Map<String, Object> hourlyMap : hourlyList) {
                        JSONObject dataJson = JSONObject.parseObject(hourlyMap.get("json").toString());
                        if (hourlyMap.get("time").toString().equals(hour + ".0")) {
                            oneSensorMap.put(hourlyMap.get("time").toString().substring(0, 19), dataJson.getJSONArray(key).get(2));
                            break;
                            if (dataJson.getJSONArray(key) != null) {
                                oneSensorMap.put(hourlyMap.get("time").toString().substring(0, 19), dataJson.getJSONArray(key).get(0));
                                break;
                            }
                        } else {
                            continue;
                        }
@@ -2607,10 +2631,79 @@
        return deviceList;
    }
    @RequestMapping("/getBiaoZhun")
    @ResponseBody
    public List<DeviceAdjustValueTiming> getBiaoZhun(String id){
        List<DeviceAdjustValueTiming> dataByDeviceid = deviceAdjustValueTimingService.getDataByDeviceid(Integer.parseInt(id));
        for (DeviceAdjustValueTiming deviceAdjustValueTiming : dataByDeviceid) {
            int seconds = Integer.parseInt(deviceAdjustValueTiming.getSeconds());
            String hour = String.valueOf(seconds/3600);
            int millAndSeconds = seconds%3600;
            String mill = String.valueOf(millAndSeconds/60);
            String second = String.valueOf(millAndSeconds%60);
            if (hour.length()<2){
                hour="0"+hour;
            }
            if (mill.length()<2){
                mill="0"+mill;
            }
            if (second.length()<2){
                second="0"+second;
            }
            String time = hour+":"+mill+":"+second;
            Map<String, String> value = deviceAdjustValueTiming.getValue();
            Collection<String> values = value.values();
            deviceAdjustValueTiming.setSeconds(time);
        }
        return dataByDeviceid;
    }
    @RequestMapping("/getSensor")
    @ResponseBody
    public  List<Map<String, Object>> getSensor(String id){
        List<Map<String, Object>> allSensors = sensorService.getSensorByDeviceId(id);
        return allSensors;
    }
}
    @RequestMapping("/deleteBiaoZhun")
    @ResponseBody
    public int deleteBiaoZhun(String id){
        int i= deviceAdjustValueTimingService.delete(id);
        return i;
    }
    @GetMapping("/monitorAVGData")
    @ApiOperation(value = "monitor平均数据导出", notes = "monitor平均数据导出")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "monitorPointIds", value = "多个monitorid", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")})
    public  List<List<Map>> monitorAVGData(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        String monitorPointIds = (String) parameters.get("monitorPointIds");
        String time = (String) parameters.get("time");
        time = time+" 00:00:00";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd mm:HH:ss");//注意月份是MM
        Date date = simpleDateFormat.parse(time);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(calendar.DATE,+1);
        String date1= simpleDateFormat.format(date);
        String date2= simpleDateFormat.format(calendar.getTime());
        String[] mIds = monitorPointIds.split(",");
        List<List<Map>> lists = new ArrayList<>();
        if (mIds.length==1 && mIds.length!=0){
            String mId = mIds[0];
            List<Map> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mId, date1, date2);
            lists.add(dataAvbByMIdAndTime);
            //List<Device> devicesByMonitorPointId = deviceService.getDevicesByMonitorPointId(Integer.valueOf(mId));
        }else {
            for (int i = 0; i <mIds.length ; i++) {
                List<Map> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mIds[i], date1, date2);
                lists.add(dataAvbByMIdAndTime);
            }
        }
        return lists;
    }
}