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 GrainPrintBuilder01 {
|
|
/**
|
* 平仓仓打印模板
|
**/
|
public static PrintModeData buildModel(GrainParam param) {
|
PrintModeData result = new PrintModeData();
|
result.setCompanyId(param.getCompanyId());
|
result.setDepotType(param.getDepotType());
|
|
if (StringUtils.isEmpty(param.getCableRule())) {
|
result.setMsg("当前粮情没有获取到粮情布线规则配置,无法生成报表!");
|
return result;
|
}
|
|
String[] attr = param.getCableRule().split("-");
|
int cableZ = Integer.valueOf(attr[0]);
|
int cableY = Integer.valueOf(attr[1]);
|
int cableX = Integer.valueOf(attr[2]);
|
|
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>");
|
|
if (cableX > 18) {
|
sb.append("<td colspan=\"2\" class='row-li1'></td>");
|
} else {
|
sb.append("<td colspan=\"2\"></td>");
|
}
|
|
for (int i = 1; i <= cableX; i++) {
|
if (cableX > 18) {
|
sb.append("<td class='row-li1'>");
|
} else {
|
sb.append("<td>");
|
}
|
|
sb.append("第" + i + "列");
|
sb.append("</td>");
|
}
|
sb.append("</tr>");
|
|
// <!-- 动态圈-->
|
for (int y = 1; y <= cableY; y++) {
|
String className = "row-fz";
|
if (cableX > 18) className = "row-fz1";
|
for (int z = 1; z <= cableZ; z++) {
|
sb.append("<tr>");
|
if (z == cableZ) {
|
className = "row-tr";
|
if (cableX > 18) className = "row-tr1";
|
}
|
//行
|
if (z == 1) {
|
sb.append("<td rowspan='");
|
sb.append(cableZ);
|
sb.append("' class='");
|
if (cableX > 18) {
|
sb.append("row-tr1");
|
} else {
|
sb.append("row-tr");
|
}
|
sb.append("'>");
|
sb.append(y);
|
sb.append("行</td>");
|
}
|
//层
|
sb.append("<td class='");
|
sb.append(className);
|
sb.append("'>" + z + "层</td>");
|
|
//添加数据
|
for (int x = cableX; x >= 1; x--) {
|
sb.append("<td class='");
|
sb.append(className);
|
sb.append("'>");
|
sb.append(z + "_" + y + "_" + x);
|
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 <= cableZ; 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());
|
return result;
|
}
|
|
|
}
|