package com.fzzy.igds.utils; import com.fzzy.igds.data.GrainParam; import com.fzzy.igds.data.PrintModeData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; /** * @Description 筒仓打印模板-包括圆筒仓和浅圆仓 -通用 * @Author CZT * @Date 2025/12/9 9:56 */ @Slf4j public class GrainPrintBuilder04 { public static PrintModeData buildModel(GrainParam param) { PrintModeData result = new PrintModeData(); result.setCompanyId(param.getCompanyId()); result.setDepotType(param.getDepotType()); if (StringUtils.isEmpty(param.getCableRule()) || StringUtils.isEmpty(param.getCableCir())) { result.setMsg("当前粮情没有获取到粮情布线规则配置,无法生成报表!"); return result; } //获取层的最高值 int layMax = 1; String[] arrLay = param.getCableCir().split("-"); for (String lay : arrLay) { if (Integer.valueOf(lay) > layMax) layMax = Integer.valueOf(lay); } String[] arrRule = param.getCableRule().split("-"); int cirNum = arrRule.length; StringBuilder sb = new StringBuilder(); //模板头 sb.append("筒仓报表"); sb.append("
"); //样式表,不能缩进 sb.append(""); sb.append("
companyName粮情报表"); sb.append(""); sb.append("depotName    粮情报表
"); sb.append("
天气:weather   方向:检测时间:checkDate
"); // sb.append(""); //-----层数----- sb.append(""); sb.append(""); for (int i = 1; i <= layMax; i++) { sb.append(""); } sb.append(""); //-----每圈各根具体数据----- int startGen = 0; int endGen = 0; int curGen = 0; for (int i = 1; i <= cirNum; i++) { //每圈的根数 if(i==1){ startGen = 1; }else { startGen = endGen + 1; } curGen = Integer.valueOf(arrRule[i - 1]); endGen += curGen; //每圈层数 int curLayNum = Integer.valueOf(arrLay[i - 1]); String className = "row-fz"; for (int j = startGen; j <= endGen; j++) { if (j == endGen) { className = "row-tr"; } sb.append(""); if (j == startGen) { sb.append(""); } //添加根数 sb.append(""); //添加每根的值,如果当前根没有那么多层,则不添加值保留空 for (int k = 1; k <= layMax; k++) { sb.append(""); } sb.append(""); } } //-----各层分析(最高、平均、最低)----- String classNme1 = "row-fz"; String valueName = ""; for (int i = 1; i <= 3; i++) { sb.append(""); if(i == 1){ valueName = "c_max_"; sb.append(""); sb.append(""); }else if(i == 2){ valueName = "c_ave_"; sb.append(""); }else { classNme1 = "row-tr"; valueName = "c_min_"; sb.append(""); } for (int k = 1; k <= layMax; k++) { sb.append(""); } sb.append(""); } sb.append("
"); sb.append(i + "层"); sb.append("
"); sb.append(i); sb.append("圈"); sb.append(j); sb.append("根"); sb.append(i + "_" + j + "_" + k); sb.append("
各层汇总最高平均最低"); sb.append(valueName); sb.append(k); sb.append("
"); //仓库基本信息 sb.append(""); sb.append(""); sb.append(""); sb.append(""); sb.append(""); sb.append(""); sb.append("
整仓分析
仓温c_tIn仓湿c_hIn气温c_tOut气湿c_hOut
层最高c_max_all层平均c_ave_all层最低c_min_all
仓房类型c_depotType入仓日期c_storeDate水分(%)c_perWet杂质(%)c_perImpurity
粮食品种c_foodVariety粮食产地c_foodLocation容重(kg/m3)c_bulkWeight实际储量(吨)c_storageReal
保管员c_storeKeeperName检测人c_checkUser
"); sb.append("
注:#表示层最低温  *表示层最高温制表时间:createBillDate
"); sb.append("
"); log.debug("获取到的粮情模板={}", sb.toString()); result.setModel(sb.toString()); return result; } }