Browse Source

ly 测厚

ly 5 tháng trước cách đây
mục cha
commit
8162586347

+ 42 - 0
master/src/main/java/com/ruoyi/common/utils/document/PDFTemplateUtil.java

@@ -5,6 +5,7 @@ import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.domain.server.Sys;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.xhtmlrenderer.pdf.ITextRenderer;
 
 
@@ -44,6 +45,8 @@ public class PDFTemplateUtil {
             Template template = cfg.getTemplate(templateFileName, "UTF-8");
             StringWriter writer = new StringWriter();
 
+            // 对数据进行转义,防止非法字符
+//            Map<String, Object> sanitizedMap = sanitizeMap(map);
             // 将数据输出到html中
             template.process(map, writer);
             writer.flush();
@@ -72,6 +75,45 @@ public class PDFTemplateUtil {
         }
     }
 
+    // 对输入的数据进行转义处理,避免非法字符
+    private static Map<String, Object> sanitizeMap(Map<String, Object> map) {
+        // 遍历 map 对数据进行处理
+        for (Map.Entry<String, Object> entry : map.entrySet()) {
+            Object value = entry.getValue();
+            if (value != null) {
+                // 转义每个字符串中的非法字符
+                entry.setValue(escapeHtml4(value.toString()));
+            }
+        }
+        return map;
+    }
+
+    // 手动实现 HTML 转义方法
+    public static String escapeHtml4(String input) {
+        if (input == null) {
+            return null;
+        }
+
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < input.length(); i++) {
+            char c = input.charAt(i);
+            switch (c) {
+                case '<':
+                    sb.append("&lt;");
+                    break;
+                case '>':
+                    sb.append("&gt;");
+                    break;
+                case '&':
+                    sb.append("&amp;");
+                    break;
+                default:
+                    sb.append(c);
+                    break;
+            }
+        }
+        return sb.toString();
+    }
     /**
      * 通过模板导出pdf文件
      *

+ 2 - 2
master/src/main/java/com/ruoyi/framework/task/sems/measure/MeasureThicknessEstTask.java

@@ -46,7 +46,7 @@ public class MeasureThicknessEstTask extends BaseController {
     @Autowired
     private RuoYiConfig ruoyiConfig;
 
-    private final String stAlarmType = "定点测厚-预估剩余寿命小于3年";
+    private final String stAlarmType = "定点测厚-预估剩余寿命小于1年";
     private final String estAlarmType = "定点测厚-预估剩余寿命小于5年";
     private final String glUrlSuffix = "sems/thickness";
 
@@ -96,7 +96,7 @@ public class MeasureThicknessEstTask extends BaseController {
             );
             for (TMeasureThickness tMeasureThickness : list) {
                 if (tMeasureThickness.getEstRemain() != null) {
-                    if (new BigDecimal(tMeasureThickness.getEstRemain()).compareTo(new BigDecimal("3")) <= 0) { //寿命小于3
+                    if (new BigDecimal(tMeasureThickness.getEstRemain()).compareTo(new BigDecimal("1")) <= 0) { //寿命小于1
                         stList.add(tMeasureThickness);
                     }
                 }

+ 3 - 0
master/src/main/java/com/ruoyi/project/plant/controller/TTargetagreementController.java

@@ -7,6 +7,7 @@ import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
 
+import com.alibaba.fastjson.JSON;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.document.DocumentHandler;
 import com.ruoyi.common.utils.document.PDFTemplateUtil;
@@ -243,7 +244,9 @@ public class TTargetagreementController extends BaseController
                     }
                 }
             }
+
             map.put("TTargetyardstick", tTargetyardsticks);
+            logger.info(JSON.toJSONString(tTargetyardsticks));
             String year = tTargetagreement.getYear().toString();
             map.put("year", year);
             PDFTemplateUtil.exportPdf("agreemenetFMaker.ftl", staffmgr.getName() + tTargetagreement.getYear() + "年目标协议.pdf","file:/"+ RuoYiConfig.getProfile(), map, response);

+ 1 - 0
master/src/main/java/com/ruoyi/project/sems/controller/TMeasureThicknessController.java

@@ -74,6 +74,7 @@ public class TMeasureThicknessController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(TMeasureThickness tMeasureThickness)
     {
+        logger.info(JSON.toJSONString(tMeasureThickness));
         startPage();
         List<TMeasureThickness> list = tMeasureThicknessService.selectTMeasureThicknessList(tMeasureThickness);
         for (TMeasureThickness m : list) {

+ 20 - 10
master/src/main/java/com/ruoyi/project/sems/domain/TMeasureThickness.java

@@ -252,27 +252,21 @@ public class TMeasureThickness extends BaseEntity
     /** 安装日期 */
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-
     @Excel(name = "安装日期", width = 30, dateFormat = "yyyy-MM-dd")
-
     private Date installDate;
 
 
-
     /** 测厚位置 */
-
-    @Excel(name = "测厚位置")
-
     private String checkUrl;
 
 
-
     /** 单线图 */
-
-    @Excel(name = "单线图")
-
     private String singleUrl;
 
+    @TableField(exist = false)
+    private String estRemainWarn;
+    @TableField(exist = false)
+    private String measureDateWarn;
 
     public Date getNextWarnDate() {
         return nextWarnDate;
@@ -772,6 +766,22 @@ public class TMeasureThickness extends BaseEntity
         this.singleUrl = singleUrl;
     }
 
+    public String getEstRemainWarn() {
+        return estRemainWarn;
+    }
+
+    public void setEstRemainWarn(String estRemainWarn) {
+        this.estRemainWarn = estRemainWarn;
+    }
+
+    public String getMeasureDateWarn() {
+        return measureDateWarn;
+    }
+
+    public void setMeasureDateWarn(String measureDateWarn) {
+        this.measureDateWarn = measureDateWarn;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 2 - 2
master/src/main/resources/freeMaker/agreemenetFMaker.ftl

@@ -182,7 +182,7 @@
 					<td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:90pt; word-wrap:break-word; word-break:break-all;">
 						<p style="margin:0pt; orphans:0; text-align:justify; widows:0">
 							<#if list.target??>
-								<span style="font-family:SimSun; font-size:7pt">${list.target}</span>
+								<span style="font-family:SimSun; font-size:7pt">${list.target?html}</span>
 							</#if>
 						</p>
 					</td>
@@ -196,7 +196,7 @@
 					<td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align: middle; width:200pt; word-wrap:break-word; word-break:break-all;">
 						<p style="margin:0pt; orphans:0; text-align:justify; widows:0">
 							<#if list.yardstick??>
-								<span style="font-family:SimSun; font-size:7pt">${list.yardstick?replace("\n","<br />")}</span>
+								<span style="font-family:SimSun; font-size:7pt">${list.yardstick?replace("\n","<br/>")}</span>
 							</#if>
 						</p>
 					</td>

+ 9 - 0
master/src/main/resources/mybatis/sems/TMeasureThicknessMapper.xml

@@ -177,6 +177,15 @@
                 or temperature like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="estRemainWarn != null and estRemainWarn != '' "> and TO_NUMBER(#{estRemainWarn}) > est_remain </if>
+            <if test="measureDateWarn != null and measureDateWarn != '' ">
+                <if test='measureDateWarn == "1" '>
+                    and SYSDATE + INTERVAL '1' MONTH   >  next_warn_date
+                </if>
+                <if test='measureDateWarn == "3" '>
+                    and  SYSDATE + INTERVAL '3' MONTH   >  next_warn_date
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

BIN
master/src/main/resources/static/word/sems/measure/cehou.docx


+ 36 - 2
ui/src/views/sems/thickness/thicknessData/index.vue

@@ -57,9 +57,41 @@
           :placeholder="$t('请输入') + $t('关键字')"
           clearable
           size="small"
-          @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="寿命预警" prop="estRemainWarn">
+        <el-select v-model="queryParams.estRemainWarn"  :placeholder="$t('请选择') + $t('寿命预警')" filterable clearable size="small">
+          <el-option
+            key="1"
+            label="小于1年"
+            value="1"
+          />
+          <el-option
+            key="3"
+            label="小于3年"
+            value="3"
+          />
+          <el-option
+            key="5"
+            label="小于5年"
+            value="5"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="下次测厚预警" prop="measureDateWarn">
+        <el-select v-model="queryParams.measureDateWarn"  :placeholder="$t('请选择') + $t('下次测厚预警')" filterable clearable size="small">
+          <el-option
+            key="1"
+            label="小于1个月"
+            value="1"
+          />
+          <el-option
+            key="3"
+            label="小于3个月"
+            value="3"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
@@ -1075,7 +1107,9 @@ export default {
         analysisUrl: null,
         measureCycle: null,
         recordUrl: null,
-        otherContent: null
+        otherContent: null,
+        estRemainWarn: null,
+        measureDateWarn: null,
       }, // 查询参数
       recordParams: {
         pageNum: 1,