package com.ld.igds.grain;
|
|
import com.ld.igds.grain.dto.GrainParam;
|
import com.ld.igds.grain.dto.PrintModeData;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
|
/**
|
* 筒仓打印模板-包括圆筒仓和浅圆仓 -通用
|
*
|
* @author jiazx
|
*/
|
@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("<!DOCTYPE html><html lang=\"zh-cn\"><head><meta http-equiv=\"Content-Type\"content=\"text/html; charset=UTF-8\"><title>筒仓报表</title></head><body>");
|
//
|
// sb.append("<div id=\"print_main\" style=\"margin: 20px;\">");
|
//
|
// //样式表,不能缩进
|
// sb.append("<style>");
|
// sb.append("table,table tr th,table tr td {border:1px solid #0d1021}");
|
// sb.append("table {width:100%;line-height:23px;text-align:center;font-size:14px}");
|
// sb.append(".table-2 {border-top:0px solid #0d1021 !important}");
|
// sb.append(".table-2 tr {border-top:0px solid #0d1021 !important}");
|
// sb.append(".table-2 td {border-top:0px solid #0d1021 !important}");
|
// sb.append(".row-tr {border-left:0px !important;border-right:0px!important;border-top:0px !important}");
|
// sb.append(".row-tr1 {border-left:0px !important;border-right:0px !important;border-top:0px !important;font-size:12px}");
|
// sb.append(".row-fz {border:0px !important}");
|
// sb.append(".row-fz1 {border:0px !important;font-size:12px}");
|
// sb.append(".row-li1 {font-size:12px}");
|
// sb.append(".link-top {width:100%;border-top:solid #0d1021 1px}");
|
// sb.append("</style>");
|
//
|
// sb.append("<div style=\"text-align: center\"><span style=\"font-size: 26px; font-weight: bold;\">companyName粮情报表</span>");
|
// sb.append("<div class=\"link-top\"></div><div class=\"link-top\"></div>");
|
// sb.append("<span style=\"font-size: 16px;\">depotName 粮情报表</span></div>");
|
//
|
// sb.append("<div style=\"margin-top: 5px;\"><span style=\"float: left;\">天气:weather 方向:</span><span style=\"float: right;\">检测时间:checkDate</span></div>");
|
//
|
// //<!--动态坐标-->
|
// sb.append("<table cellspacing=\"0\" cellpadding=\"0\">");
|
// sb.append("<tr>");
|
// sb.append("<td colspan=\"2\"></td>");
|
// for (int i = 1; i <= layMax; i++) {
|
// sb.append("<td>");
|
// sb.append("第" + i + "层");
|
// sb.append("</td>");
|
// }
|
// sb.append("</tr>");
|
//
|
// 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("<tr>");
|
// if (j == startGen) {
|
// sb.append("<td rowspan=\"");
|
// sb.append(curGen);
|
// sb.append("\" class=\"");
|
// sb.append("row-tr");//固定
|
// sb.append("\">");
|
// sb.append(i);
|
// sb.append("圈</td>");
|
// }
|
// //添加根数
|
// sb.append("<td class=\"");
|
// sb.append(className);
|
// sb.append("\">");
|
// sb.append(j);
|
// sb.append("根</td>");
|
//
|
// //添加每根的值,如果当前根没有那么多层,则不添加值保留空
|
// for (int k = 1; k <= layMax; k++) {
|
// if (curLayNum < layMax) {
|
// sb.append("<td class=\"");
|
// sb.append(className);
|
// sb.append("\"></td>");
|
// } else {
|
// sb.append("<td class=\"");
|
// sb.append(className);
|
// sb.append("\">");
|
// sb.append(i + "_" + j + "_" + k);
|
// sb.append("</td>");
|
// }
|
// }
|
// sb.append("</tr>");
|
// }
|
//
|
// }
|
// sb.append("</table>");
|
//
|
// // <!--动态层表格-->
|
// sb.append("<table cellspacing=\"0\" cellpadding=\"0\" class=\"table-2\"><tr><td width=\"200px\">粮情分析:</td><td colspan=\"5\">");
|
// sb.append("remark</td></tr><tr><td></td><td width=\"16.6%\">最高</td><td width=\"16.6%\">最低</td><td width=\"16.6%\">平均</td><td width=\"16.6%\">周均</td><td width=\"16.6%\">内均</td></tr>");
|
// //层信息
|
// for (int k = 1; k <= layMax; k++) {
|
// sb.append("<tr>\n<td>第");
|
// sb.append(k);
|
// sb.append("层</td>");
|
// sb.append("<td>c_max_" + k + "</td>");
|
// sb.append("<td>c_min_" + k + "</td>");
|
// sb.append("<td>c_ave_" + k + "</td>");
|
// sb.append("<td>c_out_ave_" + k + "</td>");
|
// sb.append("<td>c_in_ave_" + k + "</td>");
|
// sb.append("</tr>");
|
// }
|
//
|
// //整仓
|
// sb.append("<tr><td>整 仓</td>");
|
// sb.append("<td>c_max_all</td>");
|
// sb.append("<td>c_min_all</td>");
|
// sb.append("<td>c_ave_all</td>");
|
// sb.append("<td>c_out_ave_all</td>");
|
// sb.append("<td>c_in_ave_all</td>");
|
//
|
// //<!-- 固定数据-->
|
// sb.append("<tr><td >仓温:c_tIn</td><td >仓湿:c_hIn</td><td colspan=\"2\">气温:c_tOut</td><td colspan=\"2\">气湿:c_hOut</td></tr>");
|
// sb.append("<tr><td>仓房类型</td><td >c_depotType</td><td colspan=\"2\">入仓日期</td><td colspan=\"2\">c_storeDate</td></tr>");
|
// sb.append("<tr><td>杂质(%)</td><td>c_perImpurity</td><td colspan=\"2\">粮食产地</td><td colspan=\"2\">c_foodLocation</td></tr>");
|
// sb.append("<tr><td>检测人</td><td>c_checkUser</td><td colspan=\"2\">保管员</td><td colspan=\"2\">c_storeKeeperName</td></tr>");
|
// sb.append("</table>");
|
//
|
// // <!--尾部信息 -->
|
// sb.append("<div style=\"margin-top: 5px;\"><span style=\"float: left;\">注:#表示层最低温 *表示层最高温</span><span style=\"float: right;\">制表时间:createBillDate</span></div>");
|
// sb.append("</div></body></html>");
|
//
|
// log.debug("获取到的粮情模板={}", sb.toString());
|
//
|
// result.setModel(sb.toString());
|
// System.out.println(sb.toString());
|
// return result;
|
// }
|
|
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("<!DOCTYPE html><html lang=\"zh-cn\"><head><meta http-equiv=\"Content-Type\"content=\"text/html; charset=UTF-8\"><title>筒仓报表</title></head><body>");
|
|
sb.append("<div id=\"print_main\" style=\"margin: 20px;\">");
|
|
//样式表,不能缩进
|
sb.append("<style>");
|
sb.append("table,table tr th,table tr td {border:1px solid #0d1021}");
|
sb.append("table {width:100%;line-height:23px;text-align:center;font-size:14px}");
|
sb.append(".table-2 {border-top:0px solid #0d1021 !important}");
|
sb.append(".table-2 tr {border-top:0px solid #0d1021 !important}");
|
sb.append(".table-2 td {border-top:0px solid #0d1021 !important}");
|
sb.append(".row-tr {border-left:0px !important;border-right:0px!important;border-top:0px !important}");
|
sb.append(".row-tr1 {border-left:0px !important;border-right:0px !important;border-top:0px !important;font-size:12px}");
|
sb.append(".row-fz {border:0px !important}");
|
sb.append(".row-fz1 {border:0px !important;font-size:12px}");
|
sb.append(".row-li1 {font-size:12px}");
|
sb.append(".link-top {width:100%;border-top:solid #0d1021 1px}");
|
sb.append("</style>");
|
|
sb.append("<div style=\"text-align: center\"><span style=\"font-size: 26px; font-weight: bold;\">companyName粮情报表</span>");
|
sb.append("<div class=\"link-top\"></div><div class=\"link-top\"></div>");
|
sb.append("<span style=\"font-size: 16px;\">depotName 粮情报表</span></div>");
|
|
sb.append("<div style=\"margin-top: 5px;\"><span style=\"float: left;\">天气:weather 方向:</span><span style=\"float: right;\">检测时间:checkDate</span></div>");
|
|
//<!--动态坐标-->
|
sb.append("<table cellspacing=\"0\" cellpadding=\"0\">");
|
//-----层数-----
|
sb.append("<tr>");
|
sb.append("<td colspan=\"2\"></td>");
|
for (int i = 1; i <= layMax; i++) {
|
sb.append("<td>");
|
sb.append(i + "层");
|
sb.append("</td>");
|
}
|
sb.append("</tr>");
|
//-----每圈各根具体数据-----
|
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("<tr>");
|
if (j == startGen) {
|
sb.append("<td rowspan=\"");
|
sb.append(curGen);
|
sb.append("\" class=\"");
|
sb.append("row-tr");
|
sb.append("\">");
|
sb.append(i);
|
sb.append("圈</td>");
|
}
|
//添加根数
|
sb.append("<td class=\"");
|
sb.append(className);
|
sb.append("\">");
|
sb.append(j);
|
sb.append("根</td>");
|
//添加每根的值,如果当前根没有那么多层,则不添加值保留空
|
for (int k = 1; k <= layMax; k++) {
|
sb.append("<td class=\"");
|
sb.append(className);
|
sb.append("\">");
|
sb.append(i + "_" + j + "_" + k);
|
sb.append("</td>");
|
}
|
sb.append("</tr>");
|
}
|
}
|
|
//-----各层分析(最高、平均、最低)-----
|
String classNme1 = "row-fz";
|
String valueName = "";
|
for (int i = 1; i <= 3; i++) {
|
sb.append("<tr>");
|
if(i == 1){
|
valueName = "c_max_";
|
sb.append("<td rowspan=\"3\" class=\"row-tr\">各层汇总</td>");
|
sb.append("<td class=\"row-fz\">最高</td>");
|
}else if(i == 2){
|
valueName = "c_ave_";
|
sb.append("<td class=\"");
|
sb.append("classNme1");
|
sb.append("\">平均</td>");
|
}else {
|
classNme1 = "row-tr";
|
valueName = "c_min_";
|
sb.append("<td class=\"");
|
sb.append("classNme1");
|
sb.append("\">最低</td>");
|
}
|
for (int k = 1; k <= layMax; k++) {
|
sb.append("<td ");
|
sb.append("class=\"");
|
sb.append(classNme1);
|
sb.append("\">");
|
sb.append(valueName);
|
sb.append(k);
|
sb.append("</td>");
|
}
|
sb.append("</tr>");
|
}
|
sb.append("</table>");
|
|
//仓库基本信息
|
sb.append("<table cellspacing=\"0\"cellpadding=\"0\"class=\"table-2\">");
|
sb.append("<tr><td colspan=\"8\">整仓分析</td></tr><tr><td>仓温</td><td>c_tIn</td><td>仓湿</td><td>c_hIn</td><td>气温</td><td>c_tOut</td><td>气湿</td><td>c_hOut</td></tr>");
|
sb.append("<tr><td>层最高</td><td>c_max_all</td><td>层平均</td><td>c_ave_all</td><td>层最低</td><td>c_min_all</td><td></td><td></td></tr>");
|
sb.append("<tr><td>仓房类型</td><td>c_depotType</td><td>入仓日期</td><td>c_storeDate</td><td>水分(%)</td><td>c_perWet</td><td>杂质(%)</td><td>c_perImpurity</td></tr>");
|
sb.append("<tr><td>粮食品种</td><td>c_foodVariety</td><td>粮食产地</td><td>c_foodLocation</td><td>容重(kg/m3)</td><td>c_bulkWeight</td><td>实际储量(吨)</td><td>c_storageReal</td></tr>");
|
sb.append("<tr><td colspan=\"2\">保管员</td><td colspan=\"2\">c_storeKeeperName</td><td colspan=\"2\">检测人</td><td colspan=\"2\">c_checkUser</td></tr>");
|
sb.append("</table>");
|
sb.append("<div style=\"margin-top: 5px;\"><span style=\"float: left;\">注:#表示层最低温 *表示层最高温</span><span style=\"float: right;\">制表时间:createBillDate</span></div>");
|
sb.append("</div></body></html>");
|
|
log.debug("获取到的粮情模板={}", sb.toString());
|
|
result.setModel(sb.toString());
|
return result;
|
}
|
}
|