Newer
Older
huludao / src / main / java / com / newfiber / api / pc / controller / River / SiteWaterController.java
package com.newfiber.api.pc.controller.River;

import com.baomidou.mybatisplus.plugins.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.newfiber.api.core.annotation.SysLog;
import com.newfiber.api.core.bean.ReqBodyObj;
import com.newfiber.api.core.bean.RespBodyObj;
import com.newfiber.api.core.utils.ExportExcel;
import com.newfiber.api.pc.dao.RiverManage.SiteWaterLevelDao;
import com.newfiber.api.pc.dao.RiverManage.StationBaseDao;
import com.newfiber.api.pc.model.River.SiteWaterLevel;
import com.newfiber.api.pc.model.River.SiteWaterLevelDto;
import com.newfiber.api.pc.model.River.SiteWaterLevelExcel;
import com.newfiber.api.pc.model.River.StationBase;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author wmj
 * @version 创建时间:2017/11/25
 * @description 河道基础信息控制器
 */
@Controller
@CrossOrigin
@RequestMapping("waterlevel")
public class SiteWaterController {

    @Autowired
    private SiteWaterLevelDao siteWaterLevelDao;

    @Autowired
    private StationBaseDao stationBaseDao;

    @PostMapping("yearWaterQuality")
    @ResponseBody
    @SysLog(value="查询站点水质信息",actionType="4")
    public RespBodyObj yearWaterQuality(@RequestBody ReqBodyObj<Map<String, Object>> params){

        Integer pageSize = params.getSize();
        Integer pageNo = params.getCurrent();
        Integer year = Integer.valueOf(params.getData().get("year").toString());
        PageHelper.startPage(pageNo, pageSize);
        List<SiteWaterLevel> siteWaterLevels = siteWaterLevelDao.listAll(year);
        PageInfo<SiteWaterLevel> result = new PageInfo<>();
        if (!siteWaterLevels.isEmpty()){
            result = new PageInfo<>(siteWaterLevels);
        }
        List<SiteWaterLevelDto> list = new ArrayList<>();
        if(!siteWaterLevels.isEmpty()){
            for (SiteWaterLevel siteWaterLevel : siteWaterLevels) {
                SiteWaterLevelDto dto = new SiteWaterLevelDto();
                BeanUtils.copyProperties(siteWaterLevel,dto);
                List<String> data = new ArrayList<>();
                changeLevel(siteWaterLevel, dto,data);
                list.add(dto);
            }
        }
        Page page1 = new Page();
        page1.setTotal(result.getTotal());
        page1.setRecords(list);
        return RespBodyObj.ok(page1);
    }

    @PostMapping("stationBaseMap")
    @ResponseBody
    @SysLog(value="查询站点信息",actionType="4")
    public RespBodyObj stationBaseMap(@RequestBody ReqBodyObj<Map<String, Object>> params){
        String stCode = params.getData().get("stCode").toString();
        StationBase stationbase = stationBaseDao.selectByStCode(stCode);
        return RespBodyObj.ok(stationbase);
    }

    private void changeLevel(SiteWaterLevel siteWaterLevel, SiteWaterLevelDto dto,List<String> data) {
        if(siteWaterLevel.getMonth1Level()!=null){
            dto.setMonth1Level(siteWaterLevel.getMonth1Level());
            data.add(changeLevel(siteWaterLevel.getMonth1Level()));
        }else{
            data.add("无");
            dto.setMonth1Level("无");
        }
        if(siteWaterLevel.getMonth2Level()!=null){
            dto.setMonth2Level(siteWaterLevel.getMonth2Level());
            data.add(changeLevel(siteWaterLevel.getMonth2Level()));
        }else{
            data.add("无");
            dto.setMonth2Level("无");
        }
        if(siteWaterLevel.getMonth3Level()!=null){
            dto.setMonth3Level(siteWaterLevel.getMonth3Level());
            data.add(changeLevel(siteWaterLevel.getMonth3Level()));
        }else{
            data.add("无");
            dto.setMonth3Level("无");
        }
        if(siteWaterLevel.getMonth4Level()!=null){
            dto.setMonth4Level(siteWaterLevel.getMonth4Level());
            data.add(changeLevel(siteWaterLevel.getMonth4Level()));
        }else{
            data.add("无");
            dto.setMonth4Level("无");
        }
        if(siteWaterLevel.getMonth5Level()!=null){
            dto.setMonth5Level(siteWaterLevel.getMonth5Level());
            data.add(changeLevel(siteWaterLevel.getMonth5Level()));
        }else{
            data.add("无");
            dto.setMonth5Level("无");
        }
        if(siteWaterLevel.getMonth6Level()!=null){
            dto.setMonth6Level(siteWaterLevel.getMonth6Level());
            data.add(changeLevel(siteWaterLevel.getMonth6Level()));
        }else{
            data.add("无");
            dto.setMonth6Level("无");
        }
        if(siteWaterLevel.getMonth7Level()!=null){
            dto.setMonth7Level(siteWaterLevel.getMonth7Level());
            data.add(changeLevel(siteWaterLevel.getMonth7Level()));
        }else{
            data.add("无");
            dto.setMonth7Level("无");
        }
        if(siteWaterLevel.getMonth8Level()!=null){
            dto.setMonth8Level(siteWaterLevel.getMonth8Level());
            data.add(changeLevel(siteWaterLevel.getMonth8Level()));
        }else{
            data.add("无");
            dto.setMonth8Level("无");
        }
        if(siteWaterLevel.getMonth9Level()!=null){
            dto.setMonth9Level(siteWaterLevel.getMonth9Level());
            data.add(changeLevel(siteWaterLevel.getMonth9Level()));
        }else{
            data.add("无");
            dto.setMonth9Level("无");
        }
        if(siteWaterLevel.getMonth10Level()!=null){
            dto.setMonth10Level(siteWaterLevel.getMonth10Level());
            data.add(changeLevel(siteWaterLevel.getMonth10Level()));
        }else{
            data.add("无");
            dto.setMonth10Level("无");
        }
        if(siteWaterLevel.getMonth11Level()!=null){
            dto.setMonth11Level(siteWaterLevel.getMonth11Level());
            data.add(changeLevel(siteWaterLevel.getMonth11Level()));
        }else{
            data.add("无");
            dto.setMonth11Level("无");
        }
        if(siteWaterLevel.getMonth12Level()!=null){
            dto.setMonth12Level(siteWaterLevel.getMonth12Level());
            data.add(changeLevel(siteWaterLevel.getMonth12Level()));
        }else{
            data.add("无");
            dto.setMonth12Level("无");
        }
        if(siteWaterLevel.getNowLevel()!=null){
            dto.setNowLevel(siteWaterLevel.getNowLevel());
        }else{
            dto.setNowLevel("无");
        }
        dto.setData(data);
    }

    private String changeLevel(int monthLevel){
        switch (monthLevel){
            case 1 : return  "I";
            case 2 : return  "II";
            case 3 : return  "III";
            case 4 : return  "IV";
            case 5 : return  "V";
            case 6 : return  "超V";
        }
        return "-";
    }

    /**
     * 导出我的日志记录
     */
    @GetMapping(value = "yearWaterQualityExcel", produces = "application/json;charset=utf-8")
    @SysLog(value="导出我的日志记录",actionType="4")
    public void selectRiverChiefLogListExcel(Integer year, HttpServletRequest request, OutputStream out, HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Origin", "*");
        List<String> headers = new ArrayList<>();
        headers.add("站点编号");
        headers.add("站点名称");
        headers.add("一月");
        headers.add("二月");
        headers.add("三月");
        headers.add("四月");
        headers.add("五月");
        headers.add("六月");
        headers.add("七月");
        headers.add("八月");
        headers.add("九月");
        headers.add("十月");
        headers.add("十一月");
        headers.add("十二月");
        headers.add("当前等级");
        try {
            List<SiteWaterLevel> siteWaterLevels = siteWaterLevelDao.listAll(year);
            if(!siteWaterLevels.isEmpty()){
                List<List> result = new ArrayList<>();
                for (SiteWaterLevel siteWaterLevel : siteWaterLevels) {
                    SiteWaterLevelExcel excel = new SiteWaterLevelExcel();
                    List<String> ex = new ArrayList<>();
                    ex.add(siteWaterLevel.getStName());
                    ex.add(siteWaterLevel.getStName());
                    if(siteWaterLevel.getMonth1Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth1Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth2Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth2Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth3Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth3Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth4Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth4Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth5Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth5Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth6Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth6Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth7Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth7Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth8Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth8Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth9Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth9Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth10Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth10Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth11Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth11Level()));
                    }else{
                        ex.add("无");
                    }
                    if(siteWaterLevel.getMonth12Level()!=null){
                        ex.add(changeLevel(siteWaterLevel.getMonth12Level()));
                    }else{
                        ex.add("无");
                    }
                    result.add(ex);
                }
                ExportExcel excel = new ExportExcel();
                excel.exportExcel3("站点表", headers, result, out, response,(new Date()).toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /*public List<Map<String,Object>> yearWaterQuality(Map<String, Object> map){
        List<Map<String,Object>> yearQuality = new ArrayList<>();
        Map<String,Object> siteQuery = new HashMap<>();
        siteQuery.put("groupId",2);
        List<SiteInfo> siteInfos = siteInfoDao.queryList(siteQuery);
        if(siteInfos.size() > 0) {
            Integer year = (Integer) map.get("year");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR, year);
            List<Sl6512014> sl6512014s = sl6512014Dao.maxCountWaterQuality();
            siteInfos.forEach(p->{
                Map<String,Object> siteQuality = new HashMap<>();
                siteQuality.put("siteNo",p.getSiteNo());
                siteQuality.put("siteName",p.getSiteName());
                Map<String, Object> slMap = new HashMap<>();
                for (int i = 0; i < 12; i++) {
                    c.set(Calendar.MONTH, i);
                    String date = sdf.format(c.getTime());
                    List<Sl6512014> sl6512014List = sl6512014s.stream()
                            .filter(e->e.getDateStr().equals(date) && e.getSt().equals(p.getSiteNo())).collect(Collectors.toList());
                    if(sl6512014List.size() > 0){
                        Sl6512014 maxSl6512014 = sl6512014List.stream().max(Comparator.comparingInt(Sl6512014::getCountNum)).get();
                        siteQuality.put("monthQuality"+(i+1),maxSl6512014.getWaterQualityLevel());
                    }else {
                        siteQuality.put("monthQuality"+(i+1),"无");
                    }
                }
                slMap.put("st",p.getSiteNo());
                List<TempData> tempDatas = tempDataDao.queryList(slMap);
                if(tempDatas.size() > 0){
                    TempData nowQuality = tempDatas.get(0);
                    siteQuality.put("nowQuality",nowQuality.getWaterQualityLevel());
                }
                yearQuality.add(siteQuality);
            });
        }
        return yearQuality;
    }*/
}