czt
4 天以前 9013a9201cb49e5777d39a4d08fd6255731fb36d
粮情报表提交
已添加3个文件
已修改2个文件
2227 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/GrainDataReport.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/GrainDataBuilder.java 462 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/GrainReport.view.xml 1334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/GrainReportPR.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/GrainDataReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,269 @@
package com.fzzy.igds.data;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * @Description ç²®æƒ…的报表数据,将每一层的数据使用一个对象展示出来
 * @Author CZT
 * @Date 2025/12/9 10:19
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class GrainDataReport extends GrainData {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    //粮食品种
    private String foodVariety;
    @Excel(name = "实际储量", sort = 11)
    //实际储量,单位:吨
    private Double storageReal;
    //仓库类型
    private String depotTypeName;
    //仓库类型
    private String depotType;
    //保管员
    private String storeKeeperName;
    //水分
    private String perWet = "--";
    //杂质
    private String perImpurity = "--";
    //最高层数
    private int maxZ;
    // --- ä»¥ä¸‹æ˜¯æ‰€æœ‰å±‚信息---//
    //所在层
    private int z1;
    //层最低温
    private String tempMin1 = "--";
    //层最高温
    private String tempMax1 = "--";
    //层平均温
    private String tempAve1 = "--";
    //所在层
    private int z2;
    //层最低温
    private String tempMin2 = "--";
    //层最高温
    private String tempMax2 = "--";
    //层平均温
    private String tempAve2 = "--";
    //所在层
    private int z3;
    //层最低温
    private String tempMin3 = "--";
    //层最高温
    private String tempMax3 = "--";
    //层平均温
    private String tempAve3 = "--";
    //所在层
    private int z4;
    //层最低温
    private String tempMin4 = "--";
    //层最高温
    private String tempMax4 = "--";
    //层平均温
    private String tempAve4 = "--";
    //所在层
    private int z5;
    //层最低温
    private String tempMin5 = "--";
    //层最高温
    private String tempMax5 = "--";
    //层平均温
    private String tempAve5 = "--";
    //所在层
    private int z6;
    //层最低温
    private String tempMin6 = "--";
    //层最高温
    private String tempMax6 = "--";
    //层平均温
    private String tempAve6 = "--";
    //所在层
    private int z7;
    //层最低温
    private String tempMin7 = "--";
    //层最高温
    private String tempMax7 = "--";
    //层平均温
    private String tempAve7 = "--";
    //所在层
    private int z8;
    //层最低温"
    private String tempMin8 = "--";
    //层最高温
    private String tempMax8 = "--";
    //层平均温
    private String tempAve8 = "--";
    //所在层
    private int z9;
    //层最低温
    private String tempMin9 = "--";
    //层最高温
    private String tempMax9 = "--";
    //层平均温
    private String tempAve9 = "--";
    //所在层
    private int z10;
    //层最低温
    private String tempMin10 = "--";
    //层最高温
    private String tempMax10 = "--";
    //层平均温
    private String tempAve10 = "--";
    //所在层
    private int z11;
    //层最低温
    private String tempMin11 = "--";
    //层最高温
    private String tempMax11 = "--";
    //层平均温
    private String tempAve11 = "--";
    //所在层
    private int z12;
    //层最低温
    private String tempMin12 = "--";
    //层最高温
    private String tempMax12 = "--";
    //层平均温
    private String tempAve12 = "--";
    //所在层
    private int z13;
    //层最低温
    private String tempMin13 = "--";
    //层最高温
    private String tempMax13 = "--";
    //层平均温
    private String tempAve13 = "--";
    //所在层
    private int z14;
    //层最低温
    private String tempMin14 = "--";
    //层最高温
    private String tempMax14 = "--";
    //层平均温
    private String tempAve14 = "--";
    //所在层
    private int z15;
    //层最低温
    private String tempMin15 = "--";
    //层最高温
    private String tempMax15 = "--";
    //层平均温
    private String tempAve15 = "--";
    //所在层
    private int z16;
    //层最低温
    private String tempMin16 = "--";
    //层最高温
    private String tempMax16 = "--";
    //层平均温
    private String tempAve16 = "--";
    //所在层
    private int z17;
    //层最低温
    private String tempMin17 = "--";
    //层最高温
    private String tempMax17 = "--";
    //层平均温
    private String tempAve17 = "--";
    //所在层
    private int z18;
    //层最低温
    private String tempMin18 = "--";
    //层最高温
    private String tempMax18 = "--";
    //层平均温
    private String tempAve18 = "--";
    //所在层
    private int z19;
    //层最低温
    private String tempMin19 = "--";
    //层最高温
    private String tempMax19 = "--";
    //层平均温
    private String tempAve19 = "--";
    //所在层
    private int z20;
    //层最低温
    private String tempMin20 = "--";
    //层最高温
    private String tempMax20 = "--";
    //层平均温
    private String tempAve20 = "--";
    //所在层
    private int z21;
    //层最低温
    private String tempMin21 = "--";
    //层最高温
    private String tempMax21 = "--";
    //层平均温
    private String tempAve21 = "--";
    //所在层
    private int z22;
    //层最低温
    private String tempMin22 = "--";
    //层最高温
    private String tempMax22 = "--";
    //层平均温
    private String tempAve22 = "--";
    //所在层
    private int z23;
    //层最低温
    private String tempMin23 = "--";
    //层最高温
    private String tempMax23 = "--";
    //层平均温
    private String tempAve23 = "--";
    //所在层
    private int z24;
    //层最低温
    private String tempMin24 = "--";
    //层最高温
    private String tempMax24 = "--";
    //层平均温
    private String tempAve24 = "--";
    //所在层
    private int z25;
    //层最低温
    private String tempMin25 = "--";
    //层最高温
    private String tempMax25 = "--";
    //层平均温
    private String tempAve25 = "--";
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GrainService.java
@@ -1,8 +1,11 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.data.GrainParam;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.domain.Grain;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.mapper.GrainMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
@@ -10,7 +13,10 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Description
@@ -59,7 +65,32 @@
        return grainMapper.selectList(queryWrapper);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     * @param page
     * @param param
     */
    public void pageData(Page<Grain> page, Map<String, Object> param) {
        QueryWrapper<Grain> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id", ContextUtil.getCompanyId());
        queryWrapper.eq("dept_id", ContextUtil.subDeptId(null));
        String ids = (String) param.get("ids");
        if (StringUtils.isNotBlank(ids)) {
            queryWrapper.in("depot_id", ids);
        }
        Date date = (Date) param.get(("start"));
        if (null != date) {
            queryWrapper.ge("receive_date", DateUtil.getCurZero(date));
        }
        date = (Date) param.get(("end"));
        if (null != date) {
            queryWrapper.le("receive_date", DateUtil.getNextZero(date));
        }
        queryWrapper.orderByDesc("batch_id");
        grainMapper.selectPage(page, queryWrapper);
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/GrainDataBuilder.java
@@ -3,10 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.data.GrainData;
import com.fzzy.igds.data.GrainLay;
import com.fzzy.igds.data.GrainPoint;
import com.fzzy.igds.data.GrainRow;
import com.fzzy.igds.data.*;
import com.fzzy.igds.domain.DepotConf;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -19,6 +16,27 @@
 */
@Slf4j
public class GrainDataBuilder {
    /**
     * @param report
     * @param conf   æ³¨æ„å½“前参数只是为了获取其全局配置参数,不考虑是否与当前粮情信息是否匹配
     * @return
     */
    public static GrainDataReport updateReport(GrainDataReport report, DepotConf conf) {
        // æ ¹æ®ä»“库类型不同进行不同调整
        if (DepotType.TYPE_02.getCode().equals(report.getDepotType())) {// æµ…圆仓
            buildLays2(report, conf);
        } else if (DepotType.TYPE_03.getCode().equals(report.getDepotType())) {
            buildLays2(report, conf);
        } else if (DepotType.TYPE_04.getCode().equals(report.getDepotType())) {
            buildLays2(report, conf);
        } else {
            buildLays(report);
        }
        report.setPoints(null);
        return report;
    }
    /**
     * æ ¹æ®å•个粮情的数据信息,包括采集点和层信息
@@ -633,4 +651,440 @@
        return temp + "";
    }
    /**
     * ç­’仓报表数据封装
     *
     * @param result
     * @param depotConf
     */
    private static void buildLays2(GrainDataReport result, DepotConf depotConf) {
        String points = result.getPoints();
        String cableRule = result.getCable();
        String cableCir = result.getCableCir();
        // èŽ·å–å¸ƒçº¿è§„åˆ™
        if (StringUtils.isEmpty(cableRule) || StringUtils.isEmpty(cableCir)) {
            return;
        }
        if (StringUtils.isEmpty(points)) {
            return;
        }
        // æ¯ä¸€åœˆåˆ—æ•°
        String[] cableRuleAtt = result.getCable().split("-");
        // æ¯ä¸€åœˆå±‚æ•°
        String[] cableCirAtt = result.getCableCir().split("-");
        if (cableRuleAtt.length != cableCirAtt.length) {
            return;
        }
        // èŽ·å–æœ€å¤§çš„å±‚é…ç½®--默认每一圈都一样
        int layMax = Integer.valueOf(cableCirAtt[0]);
        for (int i = 0; i < cableCirAtt.length; i++) {
            if (Integer.valueOf(cableCirAtt[i]) >= layMax) layMax = Integer.valueOf(cableCirAtt[i]);
        }
        result.setMaxZ(layMax);
        List<GrainLay> listLays = new ArrayList<>();// å±‚数据
        List<GrainPoint> listPoints = new ArrayList<>();
        // æ ¹æ®å±‚更新层列表信息
        updateListLaysCir(listLays, cableRuleAtt, cableCirAtt, layMax);
        String[] attr = points.split(",");
        GrainPoint point;
        Double tempT;
        GrainLay lay;
        int x = 0, y = 0, z = 1, fz = 0;// x=所在圈,从0开始;y代表电缆根号从0开始,z=代表所在层从1开始
        List<Integer> listErrorTag = new ArrayList<>();// æ•…障或者错误的点
        List<Integer> listHighTag = new ArrayList<>();// é«˜æ¸©ç‚¹
        int layNum = layMax;// å½“前圈的层数
        int rowNum = 1;// å½“前圈的根数
        int index = 0;// å½“前温度点的位置
        int startRow = 0;//当前粮情电缆根号
        for (int i = 0; i < cableRuleAtt.length; i++) {
            x = i;
            rowNum = Integer.valueOf(cableRuleAtt[i]);// æ ¹æ•°
            for (int k = 0; k < rowNum; k++) {
                y = k;
                for (int j = 0; j < layNum; j++) {
                    z = j;
                    fz = j + 1;
                    tempT = Double.valueOf(attr[index]);
                    index++;
                    point = new GrainPoint(tempT, x, startRow, z, fz);
                    // ç»Ÿè®¡æ¯å±‚数据 --初始化数据
                    lay = listLays.get(z);
                    point.setTemp(tempT);
                    listPoints.add(point);
                    if (tempT <= Constant.ERROR_TEMP) {
                        if (tempT != Constant.ADD_TEMP) {
                            lay.setSumNum(lay.getSumNum() - 1);
                        }
                    } else {
                        //判断是否高温优化
                        if (null != depotConf && Constant.YN_Y.equals(depotConf.getGrainAuto())) {
                            lay.setSumTemp(lay.getSumTemp() + tempT);
                            // å±‚最高最低
                            if (tempT > lay.getTempMax()) {
                                lay.setTempMax(tempT);
                            }
                            if (tempT < lay.getTempMin()) {
                                lay.setTempMin(tempT);
                            }
                        } else {
                            lay.setSumTemp(lay.getSumTemp() + tempT);
                            // å±‚最高最低
                            if (tempT > lay.getTempMax()) {
                                lay.setTempMax(tempT);
                            }
                            if (tempT < lay.getTempMin()) {
                                lay.setTempMin(tempT);
                            }
                        }
                    }
                    if (tempT == Constant.ERROR_TEMP || tempT == Constant.FAULT_TEMP) {
                        listErrorTag.add(listPoints.size() - 1);
                    }
                }
                startRow++;
            }
        }
        Double maxTemp = -50.0; //比较最高温
        // è°ƒæ•´å±‚信息
        for (GrainLay detail : listLays) {
            if (0 != detail.getSumNum()) {
                detail.setTempAve(detail.getSumTemp() / detail.getSumNum());
                detail.setTempAve(NumberUtil.keepPrecision(detail.getTempAve(),
                        1));
            }
            if (0 != detail.getSumInNum()) {
                detail.setTempAveIn(detail.getSumInTemp()
                        / detail.getSumInNum());
                detail.setTempAveIn(NumberUtil.keepPrecision(
                        detail.getTempAveIn(), 1));
            }
            if (0 != detail.getSumOutNum()) {
                detail.setTempAveOut(detail.getSumOutTemp()
                        / detail.getSumOutNum());
                detail.setTempAveOut(NumberUtil.keepPrecision(
                        detail.getTempAveOut(), 1));
            }
            //过滤掉比较的最大最小的值50和-50
            if (detail.getTempMax() == -50) {
                detail.setTempMax(0.0);
            }
            if (detail.getTempMin() == 50) {
                detail.setTempMin(0.0);
            }
            if (listHighTag.size() > 0) {
                if (detail.getTempMax() > maxTemp) {
                    maxTemp = detail.getTempMax();
                }
            }
            // å°†å±‚数据转换为行数据
            updateReportLayInfo(result, detail);
        }
    }
    private static void buildLays(GrainDataReport report) {
        String points = report.getPoints();
        String cable = report.getCable();
        // èŽ·å–å¸ƒçº¿è§„åˆ™
        if (StringUtils.isEmpty(cable)) {
            return;
        }
        if (StringUtils.isEmpty(points)) {
            return;
        }
        String[] attr = cable.split("-");
        int cableZ = Integer.valueOf(attr[0]);
        int cableY = Integer.valueOf(attr[1]);
        int cableX = Integer.valueOf(attr[2]);
        report.setMaxZ(cableZ);
        List<GrainPoint> listPoints = new ArrayList<GrainPoint>();
        List<GrainLay> listLays = initDetail(cableX, cableY, cableZ);
        attr = points.split(",");
        GrainPoint point;
        Double tempT;
        GrainLay lay;
        List<Integer> listErrorTag = new ArrayList<>();// æ•…障或者错误的点
        Double sumAll = 0.0;
        Double sumAllTemp = 0.0;
        int sumAllNum = 0;
        int x = 0, y = 0, z = 0, fz = 0;
        for (int i = 0; i < attr.length; i++) {
            z = i % cableZ;
            fz = z + 1;
            x = i / (cableZ * cableY);
            y = x * (cableZ * cableY);
            y = (i - y) / cableZ;
            // å€’转Xè½´
            x = cableX - 1 - x;
            tempT = Double.valueOf(attr[i]);
            point = new GrainPoint(tempT, x, y, z, fz);
            // ç»Ÿè®¡æ¯å±‚数据 --初始化数据
            lay = listLays.get(z);
            if (tempT <= Constant.ERROR_TEMP) {
                listErrorTag.add(i);
                lay.setSumNum(lay.getSumNum() - 1);
                if (x == (cableX - 1) || y == (cableY - 1) || x == 0 || y == 0) {
                    lay.setSumOutNum(lay.getSumOutNum() - 1);
                } else {
                    lay.setSumInNum(lay.getSumInNum() - 1);
                }
            } else {
                sumAllTemp += tempT;
                if (tempT > report.getTempMax()) {
                    report.setTempMax(tempT);
                }
                // å±‚行列补充
                lay.setSumTemp(lay.getSumTemp() + tempT);
                if (x == (cableX - 1) || y == (cableY - 1) || x == 0 || y == 0) {
                    lay.setSumOutTemp(lay.getSumOutTemp() + tempT);
                } else {
                    lay.setSumInTemp(lay.getSumInTemp() + tempT);
                }
                // å±‚最高最低
                if (tempT > lay.getTempMax()) {
                    lay.setTempMax(tempT);
                }
                if (tempT < lay.getTempMin()) {
                    lay.setTempMin(tempT);
                }
                // log.info("----温度点={}",tempT);
                sumAll += tempT;
                sumAllNum = sumAllNum + 1;
                point.setTemp(tempT);
            }
            listPoints.add(point);
        }
        // è°ƒæ•´å±‚信息
        for (GrainLay detail : listLays) {
            if (0 != detail.getSumNum()) {
                detail.setTempAve(detail.getSumTemp() / detail.getSumNum());
                detail.setTempAve(NumberUtil.keepPrecision(detail.getTempAve(),
                        1));
            }
            if (0 != detail.getSumInNum()) {
                detail.setTempAveIn(detail.getSumInTemp()
                        / detail.getSumInNum());
                detail.setTempAveIn(NumberUtil.keepPrecision(
                        detail.getTempAveIn(), 1));
            }
            if (0 != detail.getSumOutNum()) {
                detail.setTempAveOut(detail.getSumOutTemp()
                        / detail.getSumOutNum());
                detail.setTempAveOut(NumberUtil.keepPrecision(
                        detail.getTempAveOut(), 1));
            }
            // å°†å±‚数据转换为行数据
            updateReportLayInfo(report, detail);
        }
    }
    private static void updateReportLayInfo(GrainDataReport report, GrainLay lay) {
        if (1 == lay.getFz()) {// ç¬¬1层
            report.setZ1(lay.getFz());
            report.setTempAve1(lay.getTempAve() + "");
            report.setTempMax1(lay.getTempMax() + "");
            report.setTempMin1(lay.getTempMin() + "");
        }
        if (2 == lay.getFz()) {// ç¬¬2层
            report.setZ2(lay.getFz());
            report.setTempAve2(lay.getTempAve() + "");
            report.setTempMax2(lay.getTempMax() + "");
            report.setTempMin2(lay.getTempMin() + "");
        }
        if (3 == lay.getFz()) {// ç¬¬3层
            report.setZ3(lay.getFz());
            report.setTempAve3(lay.getTempAve() + "");
            report.setTempMax3(lay.getTempMax() + "");
            report.setTempMin3(lay.getTempMin() + "");
        }
        if (4 == lay.getFz()) {// ç¬¬4层
            report.setZ4(lay.getFz());
            report.setTempAve4(lay.getTempAve() + "");
            report.setTempMax4(lay.getTempMax() + "");
            report.setTempMin4(lay.getTempMin() + "");
        }
        if (5 == lay.getFz()) {// ç¬¬5层
            report.setZ5(lay.getFz());
            report.setTempAve5(lay.getTempAve() + "");
            report.setTempMax5(lay.getTempMax() + "");
            report.setTempMin5(lay.getTempMin() + "");
        }
        if (6 == lay.getFz()) {// ç¬¬6层
            report.setZ6(lay.getFz());
            report.setTempAve6(lay.getTempAve() + "");
            report.setTempMax6(lay.getTempMax() + "");
            report.setTempMin6(lay.getTempMin() + "");
        }
        if (7 == lay.getFz()) {// ç¬¬7层
            report.setZ7(lay.getFz());
            report.setTempAve7(lay.getTempAve() + "");
            report.setTempMax7(lay.getTempMax() + "");
            report.setTempMin7(lay.getTempMin() + "");
        }
        if (8 == lay.getFz()) {// ç¬¬8层
            report.setZ8(lay.getFz());
            report.setTempAve8(lay.getTempAve() + "");
            report.setTempMax8(lay.getTempMax() + "");
            report.setTempMin8(lay.getTempMin() + "");
        }
        if (9 == lay.getFz()) {// ç¬¬9层
            report.setZ9(lay.getFz());
            report.setTempAve9(lay.getTempAve() + "");
            report.setTempMax9(lay.getTempMax() + "");
            report.setTempMin9(lay.getTempMin() + "");
        }
        if (10 == lay.getFz()) {// ç¬¬10层
            report.setZ10(lay.getFz());
            report.setTempAve10(lay.getTempAve() + "");
            report.setTempMax10(lay.getTempMax() + "");
            report.setTempMin10(lay.getTempMin() + "");
        }
        if (11 == lay.getFz()) {// ç¬¬11层
            report.setZ11(lay.getFz());
            report.setTempAve11(lay.getTempAve() + "");
            report.setTempMax11(lay.getTempMax() + "");
            report.setTempMin11(lay.getTempMin() + "");
        }
        if (12 == lay.getFz()) {// ç¬¬12层
            report.setZ12(lay.getFz());
            report.setTempAve12(lay.getTempAve() + "");
            report.setTempMax12(lay.getTempMax() + "");
            report.setTempMin12(lay.getTempMin() + "");
        }
        if (13 == lay.getFz()) {// ç¬¬13层
            report.setZ13(lay.getFz());
            report.setTempAve13(lay.getTempAve() + "");
            report.setTempMax13(lay.getTempMax() + "");
            report.setTempMin13(lay.getTempMin() + "");
        }
        if (14 == lay.getFz()) {// ç¬¬14层
            report.setZ14(lay.getFz());
            report.setTempAve14(lay.getTempAve() + "");
            report.setTempMax14(lay.getTempMax() + "");
            report.setTempMin14(lay.getTempMin() + "");
        }
        if (15 == lay.getFz()) {// ç¬¬15层
            report.setZ15(lay.getFz());
            report.setTempAve15(lay.getTempAve() + "");
            report.setTempMax15(lay.getTempMax() + "");
            report.setTempMin15(lay.getTempMin() + "");
        }
        if (16 == lay.getFz()) {// ç¬¬16层
            report.setZ16(lay.getFz());
            report.setTempAve16(lay.getTempAve() + "");
            report.setTempMax16(lay.getTempMax() + "");
            report.setTempMin16(lay.getTempMin() + "");
        }
        if (17 == lay.getFz()) {// ç¬¬17层
            report.setZ17(lay.getFz());
            report.setTempAve17(lay.getTempAve() + "");
            report.setTempMax17(lay.getTempMax() + "");
            report.setTempMin17(lay.getTempMin() + "");
        }
        if (18 == lay.getFz()) {// ç¬¬18层
            report.setZ18(lay.getFz());
            report.setTempAve18(lay.getTempAve() + "");
            report.setTempMax18(lay.getTempMax() + "");
            report.setTempMin18(lay.getTempMin() + "");
        }
        if (19 == lay.getFz()) {// ç¬¬19层
            report.setZ19(lay.getFz());
            report.setTempAve19(lay.getTempAve() + "");
            report.setTempMax19(lay.getTempMax() + "");
            report.setTempMin19(lay.getTempMin() + "");
        }
        if (20 == lay.getFz()) {// ç¬¬20层
            report.setZ20(lay.getFz());
            report.setTempAve20(lay.getTempAve() + "");
            report.setTempMax20(lay.getTempMax() + "");
            report.setTempMin20(lay.getTempMin() + "");
        }
        if (21 == lay.getFz()) {// ç¬¬21层
            report.setZ21(lay.getFz());
            report.setTempAve21(lay.getTempAve() + "");
            report.setTempMax21(lay.getTempMax() + "");
            report.setTempMin21(lay.getTempMin() + "");
        }
        if (22 == lay.getFz()) {// ç¬¬22层
            report.setZ22(lay.getFz());
            report.setTempAve22(lay.getTempAve() + "");
            report.setTempMax22(lay.getTempMax() + "");
            report.setTempMin22(lay.getTempMin() + "");
        }
        if (23 == lay.getFz()) {// ç¬¬23层
            report.setZ23(lay.getFz());
            report.setTempAve23(lay.getTempAve() + "");
            report.setTempMax23(lay.getTempMax() + "");
            report.setTempMin23(lay.getTempMin() + "");
        }
        if (24 == lay.getFz()) {// ç¬¬24层
            report.setZ24(lay.getFz());
            report.setTempAve24(lay.getTempAve() + "");
            report.setTempMax24(lay.getTempMax() + "");
            report.setTempMin24(lay.getTempMin() + "");
        }
        if (25 == lay.getFz()) {// ç¬¬25层
            report.setZ25(lay.getFz());
            report.setTempAve25(lay.getTempAve() + "");
            report.setTempMax25(lay.getTempMax() + "");
            report.setTempMin25(lay.getTempMin() + "");
        }
    }
    private static List<GrainLay> initDetail(int cableX, int cableY, int cableZ) {
        List<GrainLay> result = new ArrayList<>();
        GrainLay lay;
        for (int i = 1; i <= cableZ; i++) {
            lay = new GrainLay(i, i - 1);
            lay.setSumNum(cableY * cableX);
            lay.setSumInNum((cableY - 2) * (cableX - 2));
            lay.setSumOutNum(2 * cableY + 2 * cableX - 4);
            lay.setTempMin(50.0);
            lay.setTempMax(-50.0);
            result.add(lay);
        }
        return result;
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/GrainReport.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1334 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtGrainDataReport">
      <Property name="creationType">com.fzzy.igds.data.GrainDataReport</Property>
      <PropertyDef name="batchId">
        <Property></Property>
        <Property name="label">批次编号</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">组织编码</Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
        <Property name="label">仓库</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="tempMin">
        <Property name="dataType">Double</Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax">
        <Property name="dataType">Double</Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve">
        <Property name="dataType">Double</Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="humidityIn">
        <Property name="dataType">Double</Property>
        <Property name="label">仓湿</Property>
      </PropertyDef>
      <PropertyDef name="tempIn">
        <Property name="dataType">Double</Property>
        <Property name="label">仓温</Property>
      </PropertyDef>
      <PropertyDef name="humidityOut">
        <Property name="dataType">Double</Property>
        <Property name="label">气湿</Property>
      </PropertyDef>
      <PropertyDef name="tempOut">
        <Property name="dataType">Double</Property>
        <Property name="label">气温</Property>
      </PropertyDef>
      <PropertyDef name="cable">
        <Property></Property>
        <Property name="label">层行列</Property>
      </PropertyDef>
      <PropertyDef name="weather">
        <Property></Property>
        <Property name="label">天气</Property>
      </PropertyDef>
      <PropertyDef name="receiveDate">
        <Property name="dataType">DateTime</Property>
        <Property name="label">检测时间</Property>
      </PropertyDef>
      <PropertyDef name="checkUser">
        <Property></Property>
        <Property name="label">检测人</Property>
      </PropertyDef>
      <PropertyDef name="remark">
        <Property></Property>
        <Property name="label">备注</Property>
      </PropertyDef>
      <PropertyDef name="depotType">
        <Property></Property>
        <Property name="label">仓库类型</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerDepotType&quot;).getResult()}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="foodVariety">
        <Property></Property>
        <Property name="label">粮食品种</Property>
      </PropertyDef>
      <PropertyDef name="storeKeeperName">
        <Property></Property>
        <Property name="label">保管员</Property>
      </PropertyDef>
      <PropertyDef name="z1">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin1">
        <Property name="dataType">String</Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax1">
        <Property name="dataType">String</Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve1">
        <Property name="dataType">String</Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z2">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin2">
        <Property name="dataType">String</Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax2">
        <Property name="dataType">String</Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve2">
        <Property name="dataType">String</Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z3">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin3">
        <Property name="dataType">String</Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax3">
        <Property name="dataType">String</Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve3">
        <Property name="dataType">String</Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z4">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin4">
        <Property name="dataType">String</Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax4">
        <Property name="dataType">String</Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve4">
        <Property name="dataType">String</Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z5">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin5">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax5">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve5">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z6">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin6">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax6">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve6">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z7">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin7">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax7">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve7">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z8">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin8">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax8">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve8">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z9">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin9">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax9">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve9">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z10">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin10">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax10">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve10">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z11">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin11">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax11">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve11">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z12">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin12">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax12">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve12">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z13">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin13">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax13">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve13">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z14">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin14">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax14">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve14">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z15">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin15">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax15">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve15">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z16">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin16">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax16">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve16">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z17">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin17">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax17">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve17">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z18">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin18">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax18">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve18">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z19">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin19">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax19">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve19">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z20">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin20">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax20">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve20">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z21">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin21">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax21">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve21">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z22">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin22">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax22">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve22">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z23">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin23">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax23">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve23">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z24">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin24">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax24">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve24">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="z25">
        <Property name="dataType">int</Property>
        <Property name="label">所在层</Property>
      </PropertyDef>
      <PropertyDef name="tempMin25">
        <Property></Property>
        <Property name="label">最低</Property>
      </PropertyDef>
      <PropertyDef name="tempMax25">
        <Property></Property>
        <Property name="label">最高</Property>
      </PropertyDef>
      <PropertyDef name="tempAve25">
        <Property></Property>
        <Property name="label">平均</Property>
      </PropertyDef>
      <PropertyDef name="storageReal">
        <Property name="dataType">Double</Property>
        <Property name="label">实际储量</Property>
        <Property name="displayFormat">#</Property>
      </PropertyDef>
      <PropertyDef name="maxZ"/>
      <PropertyDef name="cableCir">
        <Property></Property>
        <Property name="label">筒仓层配置</Property>
      </PropertyDef>
      <PropertyDef name="oilHeight">
        <Property></Property>
        <Property name="label">油面高度</Property>
      </PropertyDef>
      <PropertyDef name="points">
        <Property></Property>
        <Property name="label">采集点信息</Property>
      </PropertyDef>
      <PropertyDef name="sysDate">
        <Property name="dataType">Date</Property>
        <Property name="label">系统时间</Property>
      </PropertyDef>
      <PropertyDef name="depotHeight">
        <Property></Property>
        <Property name="label">建筑高度</Property>
      </PropertyDef>
      <PropertyDef name="storage">
        <Property name="dataType">Double</Property>
        <Property name="label">检测储量</Property>
      </PropertyDef>
      <PropertyDef name="depotTypeName">
        <Property></Property>
        <Property name="label">仓库类型</Property>
      </PropertyDef>
      <PropertyDef name="perWet">
        <Property></Property>
        <Property name="label">水分(%)</Property>
      </PropertyDef>
      <PropertyDef name="perImpurity">
        <Property></Property>
        <Property name="label">杂质(%)</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dataTypeC">
      <PropertyDef name="title">
        <Property name="label"> </Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
        <Property name="label">选择仓库:</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="start">
        <Property name="dataType">Date</Property>
        <Property name="label">检测日期</Property>
      </PropertyDef>
      <PropertyDef name="end">
        <Property name="dataType">Date</Property>
        <Property name="label">检测时间截至</Property>
      </PropertyDef>
      <PropertyDef name="createUser">
        <Property name="label">制表人</Property>
      </PropertyDef>
      <PropertyDef name="timeDesc">
        <Property name="label">检测时间</Property>
      </PropertyDef>
      <PropertyDef name="depotName">
        <Property name="label">说明:</Property>
      </PropertyDef>
      <PropertyDef name="createTime">
        <Property name="label">制表时间</Property>
      </PropertyDef>
      <PropertyDef name="timeDescLabel"/>
      <PropertyDef name="depotNameLabel"/>
      <PropertyDef name="time">
        <Property name="dataType">int</Property>
        <Property name="displayFormat"># ç‚¹</Property>
        <Property name="label">检测时间</Property>
      </PropertyDef>
      <PropertyDef name="ids">
        <Property></Property>
        <Property name="label">选择仓库:</Property>
      </PropertyDef>
      <PropertyDef name="names">
        <Property></Property>
        <Property name="label">选择仓库:</Property>
      </PropertyDef>
    </DataType>
  </Model>
  <View layout="padding:10">
    <Property name="packages">font-awesome,css-common</Property>
    <Property name="cache">
      <Property name="mode">clientSide</Property>
    </Property>
    <DataSet id="dsMain">
      <ClientEvent name="onLoadData">var hearder = view.get(&quot;#dataSetC.data&quot;);&#xD;
&#xD;
if(hearder.get(&quot;start&quot;) &amp;&amp; hearder.get(&quot;end&quot;)){&#xD;
    hearder.set(&quot;timeDesc&quot;,hearder.get('start').formatDate(&quot;Y-m-d&quot;) +&quot; æˆªè‡³ï¼š&quot;+hearder.get('end').formatDate(&quot;Y-m-d&quot;));&#xD;
}&#xD;
&#xD;
&#xD;
//根据加载完成的数据进行页面调整&#xD;
var list = self.getData();&#xD;
if(!list) return;&#xD;
var last = list.getLast();&#xD;
var maxZ = last.get(&quot;maxZ&quot;);&#xD;
//动态隐藏或者显示列&#xD;
for (var i = 5; i &lt; 26; i++) {&#xD;
    if(i > maxZ){&#xD;
        view.get(&quot;#lay&quot;+i).set(&quot;visible&quot;,false);&#xD;
    }else{&#xD;
        view.get(&quot;#lay&quot;+i).set(&quot;visible&quot;,true);&#xD;
    }&#xD;
}&#xD;
&#xD;
</ClientEvent>
      <Property name="dataProvider">grainReportPR#getDataReport</Property>
      <Property name="dataType">[dtGrainDataReport]</Property>
      <Property name="pageSize">20</Property>
      <Property name="loadMode">manual</Property>
    </DataSet>
    <DataSet id="dataSetC">
      <Property name="dataType">dataTypeC</Property>
      <Property name="dataProvider">grainReportPR#getQuery</Property>
    </DataSet>
    <Container>
      <Property name="className">c-param</Property>
      <AutoForm>
        <Property name="cols">*,*,*,90,90</Property>
        <Property name="dataSet">dataSetC</Property>
        <Property name="labelSeparator">:</Property>
        <Property name="labelAlign">right</Property>
        <Property name="labelWidth">110</Property>
        <AutoFormElement>
          <Property name="name">start</Property>
          <Property name="property">start</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">end</Property>
          <Property name="property">end</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">names</Property>
          <Property name="property">names</Property>
          <Property name="trigger">CDDDept</Property>
          <Editor/>
        </AutoFormElement>
        <Button>
          <ClientEvent name="onClick">var param = view.get(&quot;#dataSetC.data&quot;);&#xD;
&#xD;
view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param).flushAsync();</ClientEvent>
          <Property name="caption">搜索</Property>
          <Property name="iconClass">fa fa-search</Property>
          <Property name="exClassName">btn-q1</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">view.get(&quot;#dataSetC&quot;).flushAsync();</ClientEvent>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
        </Button>
      </AutoForm>
    </Container>
    <Container>
      <Property name="className">c-data</Property>
      <AutoForm id="autoForm1" layoutConstraint="top">
        <Property name="cols">*,*,*,*</Property>
        <Property name="dataSet">dataSetC</Property>
        <Property name="labelAlign">right</Property>
        <Property name="showHint">false</Property>
        <Property name="labelWidth">120</Property>
        <AutoFormElement layoutConstraint="colSpan:4">
          <Property name="name">title</Property>
          <Property name="property">title</Property>
          <Property name="showLabel">false</Property>
          <Property name="editorType">Label</Property>
          <Property name="style">
            <Property name="font">bold 30px Georgia, serif;</Property>
            <Property name="text-align">center</Property>
          </Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">timeDesc</Property>
          <Property name="property">timeDesc</Property>
          <Property name="editorType">Label</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">depotName</Property>
          <Property name="property">depotName</Property>
          <Property name="editorType">Label</Property>
          <Property name="labelAlign">right</Property>
          <Property name="labelWidth">80</Property>
          <Property name="showLabel">false</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">createUser</Property>
          <Property name="property">createUser</Property>
          <Property name="editorType">Label</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">createTime</Property>
          <Property name="property">createTime</Property>
          <Property name="editorType">Label</Property>
          <Editor/>
        </AutoFormElement>
      </AutoForm>
      <DataGrid id="dataGrid1" layoutConstraint="padding:8">
        <Property name="dataSet">dsMain</Property>
        <Property name="readOnly">true</Property>
        <Property name="headerRowHeight">30</Property>
        <Property name="fixedColumnCount">3</Property>
        <Property name="rowHeight">50</Property>
        <RowNumColumn>
          <Property name="width">50</Property>
        </RowNumColumn>
        <DataColumn name="depotId">
          <Property name="property">depotId</Property>
          <Property name="width">110</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="width">110</Property>
          <Property name="align">center</Property>
          <Property name="property">batchId</Property>
          <Editor/>
        </DataColumn>
        <DataColumn name="tempIn">
          <Property name="property">tempIn</Property>
          <Property name="width">80</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="humidityIn">
          <Property name="property">humidityIn</Property>
          <Property name="width">80</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <ColumnGroup>
          <Property name="caption">整仓</Property>
          <DataColumn name="tempMin">
            <Property name="property">tempMin</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax">
            <Property name="property">tempMax</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve">
            <Property name="property">tempAve</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup>
          <Property name="caption">第1层</Property>
          <DataColumn name="tempMin1">
            <Property name="property">tempMin1</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax1">
            <Property name="property">tempMax1</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve1">
            <Property name="property">tempAve1</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup>
          <Property name="caption">第2层</Property>
          <DataColumn name="tempMin2">
            <Property name="property">tempMin2</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax2">
            <Property name="property">tempMax2</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve2">
            <Property name="property">tempAve2</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup>
          <Property name="caption">第3层</Property>
          <DataColumn name="tempMin3">
            <Property name="property">tempMin3</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax3">
            <Property name="property">tempMax3</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve3">
            <Property name="property">tempAve3</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup>
          <Property name="caption">第4层</Property>
          <Property name="visible">true</Property>
          <DataColumn name="tempMin4">
            <Property name="property">tempMin4</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax4">
            <Property name="property">tempMax4</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve4">
            <Property name="property">tempAve4</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay5">
          <Property name="caption">第5层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin5">
            <Property name="property">tempMin5</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax5">
            <Property name="property">tempMax5</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve5">
            <Property name="property">tempAve5</Property>
            <Property name="width">80</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay6">
          <Property name="caption">第6层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin6">
            <Property name="property">tempMin6</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax6">
            <Property name="property">tempMax6</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve6">
            <Property name="property">tempAve6</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay7">
          <Property name="caption">第7层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin7">
            <Property name="property">tempMin7</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax7">
            <Property name="property">tempMax7</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve7">
            <Property name="property">tempAve7</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay8">
          <Property name="caption">第8层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin8">
            <Property name="property">tempMin8</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax8">
            <Property name="property">tempMax8</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve8">
            <Property name="property">tempAve8</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay9">
          <Property name="caption">第9层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin9">
            <Property name="property">tempMin9</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax9">
            <Property name="property">tempMax9</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve9">
            <Property name="property">tempAve9</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay10">
          <Property name="caption">第10层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin10">
            <Property name="property">tempMin10</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax10">
            <Property name="property">tempMax10</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve10">
            <Property name="property">tempAve10</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay11">
          <Property name="caption">第11层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin11">
            <Property name="property">tempMin11</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax11">
            <Property name="property">tempMax11</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve11">
            <Property name="property">tempAve11</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay12">
          <Property name="caption">第12层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin12">
            <Property name="property">tempMin12</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax12">
            <Property name="property">tempMax12</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve12">
            <Property name="property">tempAve12</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay13">
          <Property name="caption">第13层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin13">
            <Property name="property">tempMin13</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax13">
            <Property name="property">tempMax13</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve13">
            <Property name="property">tempAve13</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay14">
          <Property name="caption">第14层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin14">
            <Property name="property">tempMin14</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax14">
            <Property name="property">tempMax14</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve14">
            <Property name="property">tempAve14</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay15">
          <Property name="caption">第15层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin15">
            <Property name="property">tempMin15</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax15">
            <Property name="property">tempMax15</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve15">
            <Property name="property">tempAve15</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay16">
          <Property name="caption">第16层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin16">
            <Property name="property">tempMin16</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax16">
            <Property name="property">tempMax16</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve16">
            <Property name="property">tempAve16</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay17">
          <Property name="caption">第17层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin17">
            <Property name="property">tempMin17</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax17">
            <Property name="property">tempMax17</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve17">
            <Property name="property">tempAve17</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay18">
          <Property name="caption">第18层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin18">
            <Property name="property">tempMin18</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax18">
            <Property name="property">tempMax18</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve18">
            <Property name="property">tempAve18</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay19">
          <Property name="caption">第19层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin19">
            <Property name="property">tempMin19</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax19">
            <Property name="property">tempMax19</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve19">
            <Property name="property">tempAve19</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay20">
          <Property name="caption">第20层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin20">
            <Property name="property">tempMin20</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax20">
            <Property name="property">tempMax20</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve20">
            <Property name="property">tempAve20</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay21">
          <Property name="caption">第21层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin21">
            <Property name="property">tempMin21</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax21">
            <Property name="property">tempMax21</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve21">
            <Property name="property">tempAve21</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay22">
          <Property name="caption">第22层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin22">
            <Property name="property">tempMin22</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax22">
            <Property name="property">tempMax22</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve22">
            <Property name="property">tempAve22</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay23">
          <Property name="caption">第23层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin23">
            <Property name="property">tempMin23</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax23">
            <Property name="property">tempMax23</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve23">
            <Property name="property">tempAve23</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay24">
          <Property name="caption">第24层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin24">
            <Property name="property">tempMin24</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax24">
            <Property name="property">tempMax24</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve24">
            <Property name="property">tempAve24</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <ColumnGroup id="lay25">
          <Property name="caption">第25层</Property>
          <Property name="visible">false</Property>
          <DataColumn name="tempMin25">
            <Property name="property">tempMin25</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempMax25">
            <Property name="property">tempMax25</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="tempAve25">
            <Property name="property">tempAve25</Property>
            <Property name="width">90</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </ColumnGroup>
        <DataColumn name="foodVariety">
          <Property name="property">foodVariety</Property>
          <Property name="width">90</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="storageReal">
          <Property name="property">storageReal</Property>
          <Property name="width">110</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="depotType">
          <Property name="property">depotType</Property>
          <Property name="width">100</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="perWet">
          <Property name="property">perWet</Property>
          <Property name="width">80</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="perImpurity">
          <Property name="property">perImpurity</Property>
          <Property name="width">80</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="storeKeeperName">
          <Property name="property">storeKeeperName</Property>
          <Property name="width">100</Property>
          <Property name="align">center</Property>
        </DataColumn>
      </DataGrid>
      <ToolBar layoutConstraint="bottom">
        <Fill/>
        <DataPilot layoutConstraint="right">
          <Property name="itemCodes">pageSize,pages</Property>
          <Property name="dataSet">dsMain</Property>
        </DataPilot>
      </ToolBar>
    </Container>
    <ListDropDown id="listHour">
      <Property name="items">6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22</Property>
    </ListDropDown>
    <CustomDropDown id="CDDDept">
      <Property name="minWidth">400</Property>
      <Property name="minHeight">600</Property>
      <Property name="assignmentMap">ids=ids,names=names</Property>
      <Panel>
        <Property name="showCaptionBar">false</Property>
        <Buttons>
          <Button>
            <ClientEvent name="onClick">var selection = view.get(&quot;#dgDepotSelect&quot;).get(&quot;selection&quot;);&#xD;
if(!selection || selection.length == 0){&#xD;
    $alert(&quot;请选择仓库&quot;);&#xD;
    return;&#xD;
}&#xD;
&#xD;
var ids = &quot;&quot;,names=&quot;&quot;;&#xD;
selection.each(function(item){&#xD;
    ids += item.get(&quot;id&quot;)+&quot;,&quot;;&#xD;
    names+=item.get(&quot;name&quot;)+&quot;,&quot;;&#xD;
});&#xD;
&#xD;
view.get(&quot;#CDDDept&quot;).close({ids:ids,names:names});</ClientEvent>
            <Property name="caption">确认选择</Property>
            <Property name="iconClass">fa fa-check-circle</Property>
            <Property name="exClassName">btn1</Property>
            <Property name="width">120</Property>
          </Button>
          <Button>
            <ClientEvent name="onClick">view.get(&quot;#CDDDept&quot;).close({});&#xD;
view.get(&quot;#dgDepotSelect&quot;).set(&quot;selection&quot;,null);</ClientEvent>
            <Property name="caption">取消操作</Property>
            <Property name="exClassName">btn3</Property>
            <Property name="iconClass">fa fa-times-circle</Property>
            <Property name="width">120</Property>
          </Button>
        </Buttons>
        <Children>
          <DataSet id="dsDeptSelect">
            <Property name="dataType">[dtDepot]</Property>
            <Property name="dataProvider">depotPR#getAllCache</Property>
          </DataSet>
          <DataGrid id="dgDepotSelect">
            <Property name="dataSet">dsDeptSelect</Property>
            <Property name="selectionMode">multiRows</Property>
            <RowSelectorColumn>
              <Property name="caption">选择</Property>
              <Property name="width">50</Property>
            </RowSelectorColumn>
            <DataColumn name="name">
              <Property name="property">name</Property>
              <Property name="readOnly">true</Property>
            </DataColumn>
            <DataColumn name="id">
              <Property name="property">id</Property>
              <Property name="readOnly">true</Property>
            </DataColumn>
            <DataColumn name="depotType">
              <Property name="property">depotType</Property>
              <Property name="readOnly">true</Property>
            </DataColumn>
          </DataGrid>
        </Children>
        <Tools/>
      </Panel>
    </CustomDropDown>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/GrainReportPR.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package com.fzzy.igds;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.data.GrainDataReport;
import com.fzzy.igds.domain.DepotConf;
import com.fzzy.igds.domain.Grain;
import com.fzzy.igds.service.DepotConfService;
import com.fzzy.igds.service.GrainService;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.igds.utils.GrainDataBuilder;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
/**
 * @Description ç²®æƒ…报表页面入口
 * @Author CZT
 * @Date 2025/12/9 10:19
 */
@Component
public class GrainReportPR {
    @Resource
    private GrainService grainService;
    @Resource
    private SysDeptService sysDeptService;
    @Resource
    private DepotConfService depotConfService;
    /**
     * grainReportPR#getQuery
     * @return
     */
    @DataProvider
    public Map<String, Object> getQuery() {
        Map<String, Object> result = new HashMap<>();
        SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
        result.put("title", "粮情汇总表");
        if (null != subDept) {
            result.put("title", subDept.getDeptName() + "粮情汇总表");
            result.put("deptId", subDept.getDeptId());
        }
        result.put("timeDesc", "检测时间");
        result.put("depotNameLabel", "");
        result.put("depotName", "");
        result.put("end", new Date());
        Date start = DateUtil.getNewByDay(new Date(), -30);
        result.put("start", start);
        result.put("timeDesc",
                DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                        + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        result.put("createUser", ContextUtil.getLoginUserName());
        result.put("createTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        return result;
    }
    /**
     * ç²®æƒ…数据报表数据分页查询,查询条件根据选择具体日期查询
     * grainReportPR#getDataReport
     *
     * @param page
     * @param param
     */
    @DataProvider
    public void getDataReport(Page<GrainDataReport> page, Map<String, Object> param) {
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<Grain> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
        if (null == param) {
            param = new HashMap<>();
        }
        grainService.pageData(corePage, param);
        List<Grain> records = corePage.getRecords();
        // æ˜¯å¦å…è®¸é‡å¤ï¼Œåœ¨æŒ‰ç…§æŸå¤©æŸ¥è¯¢æƒ…况,只获取当天最后一条信息 0= ä¸å…è®¸ï¼Œ1=允许
        String repeat = (String) param.get(("repeat"));
        Map<String, String> tempMap = new HashMap<>();
        // è°ƒæ•´æ•°æ®
        int maxZ = 3;
        int hour = 0;
        List<GrainDataReport> dataList = new ArrayList<>();
        GrainDataReport report;
        DepotConf depotConf;
        for (Grain grain : records) {
            // åŽ»é™¤é‡å¤
            if (null != repeat && "0".equals(repeat)) {
                if (null == tempMap.get(grain.getDepotId())) {
                    tempMap.put(grain.getDepotId(), grain.getBatchId());
                } else {
                    continue;
                }
            }
            report = new GrainDataReport();
            BeanUtils.copyProperties(grain, report);
            // è°ƒæ•´ç±»åž‹å­—段显示中文
            report.setDepotTypeName(DepotType.getMsg(report.getDepotType()));
            report.setFoodVariety(FoodVariety.getMsg(report.getFoodVariety()));
            if (report.getMaxZ() > maxZ) {
                maxZ = report.getMaxZ();
            }
            report.setMaxZ(maxZ);
            depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
            GrainDataBuilder.updateReport(report, depotConf);
            dataList.add(report);
        }
        // é‡æ–°å°è£…
        page.setEntities(dataList);
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
}