浏览代码

LY 特种设备 优化

ly 1 年之前
父节点
当前提交
75d5cdba4d
共有 69 个文件被更改,包括 1132 次插入213 次删除
  1. 16 0
      master/src/main/java/com/ruoyi/RuoYiApplication.java
  2. 192 0
      master/src/main/java/com/ruoyi/common/utils/AesUtil.java
  3. 19 0
      master/src/main/java/com/ruoyi/framework/config/TomcatConfig.java
  4. 1 0
      master/src/main/java/com/ruoyi/framework/task/TSpecdevAllTask.java
  5. 2 0
      master/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
  6. 8 8
      master/src/main/java/com/ruoyi/project/invoice/controller/TInvoiceBookingworkticketController.java
  7. 26 0
      master/src/main/java/com/ruoyi/project/invoice/domain/TInvoiceBookingworkticket.java
  8. 102 26
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevCcController.java
  9. 87 10
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDtController.java
  10. 91 9
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDzsbController.java
  11. 93 13
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevGlController.java
  12. 92 13
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java
  13. 90 14
      master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlrqController.java
  14. 1 1
      master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDt.java
  15. 1 1
      master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevGl.java
  16. 1 1
      master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlrq.java
  17. 20 5
      master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecWeekcheckController.java
  18. 1 1
      master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecPersonweekcheck.java
  19. 2 1
      master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecWeekcheck.java
  20. 2 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecWeekcheckMapper.java
  21. 4 0
      master/src/main/resources/mybatis/invoice/TInvoiceBookingworkticketMapper.xml
  22. 11 0
      master/src/main/resources/mybatis/sems/TSpecdevCcMapper.xml
  23. 11 0
      master/src/main/resources/mybatis/sems/TSpecdevDtMapper.xml
  24. 12 1
      master/src/main/resources/mybatis/sems/TSpecdevDzsbMapper.xml
  25. 11 0
      master/src/main/resources/mybatis/sems/TSpecdevGlMapper.xml
  26. 11 0
      master/src/main/resources/mybatis/sems/TSpecdevYlgdMapper.xml
  27. 11 0
      master/src/main/resources/mybatis/sems/TSpecdevYlrqMapper.xml
  28. 5 0
      master/src/main/resources/mybatis/sems/safecheck/TSpecWeekcheckMapper.xml
  29. 二进制
      master/src/main/resources/static/template/sems/specCc.xlsx
  30. 二进制
      master/src/main/resources/static/template/sems/specDt.xlsx
  31. 二进制
      master/src/main/resources/static/template/sems/specGl.xlsx
  32. 二进制
      master/src/main/resources/static/template/sems/specYlrq.xlsx
  33. 9 0
      ui/src/api/sems/safecheck/weekcheck.js
  34. 5 24
      ui/src/views/approve/approveDetail/semsWeekCheck-detail.vue
  35. 1 1
      ui/src/views/approve/approveDetail/spec-detail.vue
  36. 1 1
      ui/src/views/approve/pending/spec-detail.vue
  37. 1 1
      ui/src/views/intact/gj/specGl-hisReform.vue
  38. 1 1
      ui/src/views/intact/pump/specGl-hisReform.vue
  39. 58 10
      ui/src/views/invoice/bookingworkticket/index.vue
  40. 1 1
      ui/src/views/sems/reportYlrq/index.vue
  41. 1 1
      ui/src/views/sems/reportYlrq/yearapprove.vue
  42. 5 5
      ui/src/views/sems/safecheck/agent-personweekcheck/index.vue
  43. 1 1
      ui/src/views/sems/safecheck/dailycheck/index.vue
  44. 7 7
      ui/src/views/sems/safecheck/personweekcheck/index.vue
  45. 36 8
      ui/src/views/sems/safecheck/weekcheck/index.vue
  46. 8 3
      ui/src/views/sems/specCc/index.vue
  47. 3 3
      ui/src/views/sems/specDt/bf.vue
  48. 9 3
      ui/src/views/sems/specDt/index.vue
  49. 1 1
      ui/src/views/sems/specDt/operlog.vue
  50. 1 1
      ui/src/views/sems/specDt/specDt-hisReform.vue
  51. 2 2
      ui/src/views/sems/specDt/ty.vue
  52. 2 2
      ui/src/views/sems/specDt/zx.vue
  53. 6 1
      ui/src/views/sems/specDzsb/index.vue
  54. 3 3
      ui/src/views/sems/specGl/bf.vue
  55. 11 5
      ui/src/views/sems/specGl/index.vue
  56. 1 1
      ui/src/views/sems/specGl/operlog.vue
  57. 1 1
      ui/src/views/sems/specGl/specGl-hisReform.vue
  58. 3 3
      ui/src/views/sems/specGl/ty.vue
  59. 3 3
      ui/src/views/sems/specGl/zx.vue
  60. 6 0
      ui/src/views/sems/specYlgd/index.vue
  61. 3 3
      ui/src/views/sems/specYlrq/bf.vue
  62. 9 3
      ui/src/views/sems/specYlrq/index.vue
  63. 1 1
      ui/src/views/sems/specYlrq/operlog.vue
  64. 1 1
      ui/src/views/sems/specYlrq/specYlrq-hisReform.vue
  65. 2 2
      ui/src/views/sems/specYlrq/ty.vue
  66. 2 2
      ui/src/views/sems/specYlrq/zx.vue
  67. 1 1
      ui/src/views/sems/specanalysis/BoilerChart.vue
  68. 2 2
      ui/src/views/sems/specanalysis/LiftChart.vue
  69. 1 1
      ui/src/views/sems/specanalysis/PvChart.vue

+ 16 - 0
master/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -1,12 +1,24 @@
 package com.ruoyi;
 
+import com.ruoyi.common.utils.AesUtil;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
 import org.springframework.boot.web.servlet.MultipartConfigFactory;
+import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
 import org.springframework.context.annotation.Bean;
 
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.SecretKeySpec;
 import javax.servlet.MultipartConfigElement;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import org.apache.commons.codec.binary.Base64;
 
 /**
  * 启动程序
@@ -21,6 +33,9 @@ public class RuoYiApplication
         // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(RuoYiApplication.class, args);
         System.out.println("(♥◠‿◠)ノ゙  CPMS启动成功   ლ(´ڡ`ლ)゙");
+
+
+
     }
 
     @Bean
@@ -29,4 +44,5 @@ public class RuoYiApplication
         factory.setLocation("/u03/tmp");
         return factory.createMultipartConfig();
     }
+
 }

+ 192 - 0
master/src/main/java/com/ruoyi/common/utils/AesUtil.java

@@ -0,0 +1,192 @@
+package com.ruoyi.common.utils;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ *
+ * @author shen_feng 加密解密
+ */
+public class AesUtil {
+
+    // static String sKey = "HOPERUN.COM";
+
+    /**
+     * 密钥如超过16位,截至16位,不足16位,补/000至16位
+     *
+     * @param key原密钥
+     * @return 新密钥
+     */
+    public static String secureBytes(String key) {
+        if (key.length() > 16) {
+            key = key.substring(0, 16);
+        } else if (key.length() < 16) {
+            for (int i = (key.length() - 1); i < 15; i++) {
+                key += "\000";
+            }
+        }
+        return key;
+    }
+
+    /**
+     * AES解密 用于数据库储存
+     *
+     * @param sSrc
+     * @param sKey
+     * @return
+     * @throws Exception
+     */
+    public static String decryptCode(String sSrc, String key) {
+
+        String sKey = secureBytes(key);
+
+        try {
+            // 判断Key是否正确
+            if (sKey == null) {
+                // LogUtil.d("AesUtil", "Key为空null");
+                return null;
+            }
+            // 判断Key是否为16位
+            if (sKey.length() != 16) {
+                // LogUtil.d("AesUtil", "Key长度不是16位");
+                sKey = secureBytes(sKey);
+            }
+            byte[] raw = sKey.getBytes("ASCII");
+            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
+            Cipher cipher = Cipher.getInstance("AES");
+            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
+            byte[] encrypted1 = hex2byte(sSrc);
+            try {
+                byte[] original = cipher.doFinal(encrypted1);
+                String originalString = new String(original, "GBK");
+                return originalString;
+            } catch (Exception e) {
+                return null;
+            }
+        } catch (Exception ex) {
+            return null;
+        }
+
+    }
+
+    /**
+     * AES解密 用于数据库储存
+     *
+     * @param sSrc
+     * @param sKey
+     * @return
+     * @throws Exception
+     */
+    public static String decrypt(String sSrc, String key) {
+
+        String sKey = secureBytes(key);
+
+        try {
+            // 判断Key是否正确
+            if (sKey == null) {
+                // LogUtil.d("AesUtil", "Key为空null");
+                return null;
+            }
+            // 判断Key是否为16位
+            if (sKey.length() != 16) {
+                System.out.println("长度不是16");
+                // LogUtil.d("AesUtil", "Key长度不是16位");
+                sKey = secureBytes(sKey);
+            }
+            byte[] raw = sKey.getBytes("ASCII");
+            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
+            Cipher cipher = Cipher.getInstance("AES");
+            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
+            byte[] encrypted1 = hex2byte(sSrc);
+            try {
+                byte[] original = cipher.doFinal(encrypted1);
+
+                String originalString = new String(original, "utf-8");
+                // String originalString = new String(original, "GBK");
+
+                return originalString;
+            } catch (Exception e) {
+                return null;
+            }
+        } catch (Exception ex) {
+            return null;
+        }
+
+    }
+
+    public static String encrypt4Contacts(String sSrc) {
+        return sSrc;
+    }
+
+    /**
+     * AES加密
+     *
+     * @param sSrc
+     * @param sKey
+     * @return
+     * @throws Exception
+     */
+    public static String encrypt(String sSrc, String key) {
+
+        String sKey = secureBytes(key);
+        try {
+            if (sSrc == null || sKey == null) {
+                // LogUtil.d("AesUtil", "Key为空null");
+                return null;
+            }
+            // 判断Key是否为16位
+            if (sKey.length() != 16) {
+                // LogUtil.d("AesUtil", "Key长度不是16位");
+                sKey = secureBytes(sKey);
+            }
+            byte[] raw = sKey.getBytes("ASCII");
+            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
+            Cipher cipher = Cipher.getInstance("AES");
+            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
+            byte[] encrypted = cipher.doFinal(sSrc.getBytes());
+            return byte2hex(encrypted).toLowerCase();
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * @param strhex
+     * @return
+     */
+    public static byte[] hex2byte(String strhex) {
+        if (strhex == null) {
+            return null;
+        }
+        int l = strhex.length();
+        if (l % 2 == 1) {
+            return null;
+        }
+        byte[] b = new byte[l / 2];
+        for (int i = 0; i != l / 2; i++) {
+            b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2),
+                    16);
+        }
+        return b;
+    }
+
+    /**
+     * @param b
+     * @return
+     */
+    public static String byte2hex(byte[] b) {
+        String hs = "";
+        String stmp = "";
+        for (int n = 0; n < b.length; n++) {
+            stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
+            if (stmp.length() == 1) {
+                hs = hs + "0" + stmp;
+            } else {
+                hs = hs + stmp;
+            }
+        }
+        return hs.toUpperCase();
+    }
+}

+ 19 - 0
master/src/main/java/com/ruoyi/framework/config/TomcatConfig.java

@@ -0,0 +1,19 @@
+package com.ruoyi.framework.config;
+
+import org.apache.catalina.connector.Connector;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class TomcatConfig {
+    @Bean
+    public TomcatServletWebServerFactory tomcatServletWebServerFactory(){
+        TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
+        tomcatServletWebServerFactory.addConnectorCustomizers((Connector connector) -> {
+            connector.setProperty("relaxedPathChars","|{}[]");
+            connector.setProperty("relaxedQueryChars","|{}[]");
+        });
+        return tomcatServletWebServerFactory;
+    }
+}

+ 1 - 0
master/src/main/java/com/ruoyi/framework/task/TSpecdevAllTask.java

@@ -860,4 +860,5 @@ public class TSpecdevAllTask extends BaseController {
         alarmhistory.setSendTime(new Date());
         alarmhistoryService.insertTAlarmhistory(alarmhistory);
     }
+
 }

+ 2 - 0
master/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java

@@ -47,11 +47,13 @@ public class BaseEntity implements Serializable
     /** 开始时间 */
     @JsonIgnore
     @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private String beginTime;
 
     /** 结束时间 */
     @JsonIgnore
     @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private String endTime;
 
     /** 请求参数 */

+ 8 - 8
master/src/main/java/com/ruoyi/project/invoice/controller/TInvoiceBookingworkticketController.java

@@ -741,14 +741,14 @@ public class TInvoiceBookingworkticketController extends BaseController {
         List<TInvoiceWorkcontent> workcontentList = tInvoiceBookingworkticket.gettInvoiceWorkcontentList();
         if ("12".equals(workcontentList.get(0).getXpxp())) { //续票
             TInvoiceWorkcontent tw = workcontentList.get(0);
-            if (StringUtils.isEmpty(tw.getGczyxkzh()) && StringUtils.isEmpty(tw.getDhzyxkzh()) && StringUtils.isEmpty(tw.getXzkjxkzh()) && StringUtils.isEmpty(tw.getMbzyxkzh()) && StringUtils.isEmpty(tw.getWhgzxkzh())) {
-                return AjaxResult.error("没有工作票号,无法预约");
-            }
-            int i = tInvoiceWorkcontentMapper.countXp(workcontentList.get(0));
-            logger.info("预约票数量:" + i);
-            if (i >= 10) {
-                return AjaxResult.error("超过预约票数量上限10");
-            }
+//            if (StringUtils.isEmpty(tw.getGczyxkzh()) && StringUtils.isEmpty(tw.getDhzyxkzh()) && StringUtils.isEmpty(tw.getXzkjxkzh()) && StringUtils.isEmpty(tw.getMbzyxkzh()) && StringUtils.isEmpty(tw.getWhgzxkzh())) {
+//                return AjaxResult.error("没有工作票号,无法预约");
+//            }
+//            int i = tInvoiceWorkcontentMapper.countXp(workcontentList.get(0));
+//            logger.info("预约票数量:" + i);
+//            if (i >= 10) {
+//                return AjaxResult.error("超过预约票数量上限10");
+//            }
         }
         //先查当前登录的用户关联的承包商信息, 将名称 联系人 电话 都关联起来
         String createAccount = SecurityUtils.getUsername();

+ 26 - 0
master/src/main/java/com/ruoyi/project/invoice/domain/TInvoiceBookingworkticket.java

@@ -48,6 +48,16 @@ public class TInvoiceBookingworkticket extends BaseEntity
     @Excel(name = "作业结束时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date workEndTime;
 
+    /** 查询开始日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date startDate;
+
+    /** 查询结束日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date endDate;
+
     /** 状态 1 :正常 ;0:删除 */
     private Long delFlag;
 
@@ -386,6 +396,22 @@ public class TInvoiceBookingworkticket extends BaseEntity
         this.allNo = allNo;
     }
 
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 102 - 26
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevCcController.java

@@ -28,8 +28,10 @@ import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -75,6 +77,10 @@ public class TSpecdevCcController extends BaseController {
     private TApproveSpecModifyController approveSpecModifyController;
     @Autowired
     private TSpechiCcController tSpechiCcController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
+
     /**
      * 查询特种设备叉车台账列表
      */
@@ -143,14 +149,14 @@ public class TSpecdevCcController extends BaseController {
         logger.info("流程实例id:" + pi.getProcessInstanceId());
         tApproveSpecModify.setProcessId(pi.getProcessInstanceId());
         new Thread(() -> {
-            approveSpecModifyController.sendMail(tApproveSpecModify , tSpecdevCc.getWxjl());
-        },"发送邮件").start();
+            approveSpecModifyController.sendMail(tApproveSpecModify, tSpecdevCc.getWxjl());
+        }, "发送邮件").start();
 
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        String userName =loginUser != null? loginUser.getUsername(): "";
+        String userName = loginUser != null ? loginUser.getUsername() : "";
         new Thread(() -> {
-            tSpechiCcController.addOperLog(String.valueOf(tSpecdevCc.getId()),userName,new Date() , "新增申请" );
-        },"特种设备操作日志").start();
+            tSpechiCcController.addOperLog(String.valueOf(tSpecdevCc.getId()), userName, new Date(), "新增申请");
+        }, "特种设备操作日志").start();
         return AjaxResult.success();
     }
 
@@ -176,10 +182,13 @@ public class TSpecdevCcController extends BaseController {
         tSpecdevCcService.updateTSpecdevCc(tSpecdevCc);
 
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        String userName =loginUser != null? loginUser.getUsername(): "";
+        String userName = loginUser != null ? loginUser.getUsername() : "";
         new Thread(() -> {
-            tSpechiCcController.addOperLog(String.valueOf(tSpecdevCc.getId()),userName,new Date() , "修改" );
-        },"特种设备操作日志").start();
+            tSpechiCcController.addOperLog(String.valueOf(tSpecdevCc.getId()), userName, new Date(), "修改");
+        }, "特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        }, "特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -355,14 +364,14 @@ public class TSpecdevCcController extends BaseController {
         logger.info("流程实例id:" + pi.getProcessInstanceId());
         tApproveSpecModify.setProcessId(pi.getProcessInstanceId());
         new Thread(() -> {
-            approveSpecModifyController.sendMail(tApproveSpecModify , wxjl);
-        },"发送邮件").start();
+            approveSpecModifyController.sendMail(tApproveSpecModify, wxjl);
+        }, "发送邮件").start();
 
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        String userName =loginUser != null? loginUser.getUsername(): "";
+        String userName = loginUser != null ? loginUser.getUsername() : "";
         new Thread(() -> {
-            tSpechiCcController.addOperLog(ids.toArray(),userName,new Date() , "新增申请" );
-        },"特种设备操作日志").start();
+            tSpechiCcController.addOperLog(ids.toArray(), userName, new Date(), "新增申请");
+        }, "特种设备操作日志").start();
 
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
@@ -469,23 +478,30 @@ public class TSpecdevCcController extends BaseController {
             }
         }
         for (TSpecdevCc t : oldList) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(6l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setCheckConclusion(t.getPerTestConclusion());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(6l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setCheckConclusion(t.getPerTestConclusion());
+                tSpecCheckService.insertTSpecCheck(tc);
+            } catch (Exception e) {
+                logger.info("e:" + e);
+                e.printStackTrace();
+            }
         }
 
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        String userName =loginUser != null? loginUser.getUsername(): "";
+        String userName = loginUser != null ? loginUser.getUsername() : "";
         new Thread(() -> {
-            tSpechiCcController.addOperLog(ids.toArray(),userName,new Date() , "批量更新" );
-        },"特种设备操作日志").start();
-
+            tSpechiCcController.addOperLog(ids.toArray(), userName, new Date(), "批量更新");
+        }, "特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        }, "特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
         logger.info("failNumber:" + String.valueOf(failNumber));
@@ -575,5 +591,65 @@ public class TSpecdevCcController extends BaseController {
         return AjaxResult.success(filename);
     }
 
+    public void checkWarnflag() {
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+        List<TSpecdevCc> list = this.tSpecdevCcService.list(new QueryWrapper<TSpecdevCc>()
+                .eq("del_flag", 0).eq("status", "1"));
+        List<TSpecdevCc> firstList = new ArrayList<>();
+        List<TSpecdevCc> secondList = new ArrayList<>();
+        List<TSpecdevCc> thirdList = new ArrayList<>();
+        for (TSpecdevCc tSpecdevCc : list) {
+            if (tSpecdevCc.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevCc.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForCc(2L, tSpecdevCc);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevCc);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForCc(1L, tSpecdevCc);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevCc);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForCc(3L, tSpecdevCc);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevCc);
+                    }
+                    continue;
+                }
+                if (day > thirdlevel) {
+                    this.updateForCc(0L, tSpecdevCc);
+                    continue;
+                }
+            }
+        }
+    }
+
+    private void updateForCc(Long flag, TSpecdevCc tSpecdevCc) {
+        tSpecdevCc.setWarnFlag(flag);
+        this.tSpecdevCcService.updateTSpecdevCc(tSpecdevCc);
+    }
 
 }

+ 87 - 10
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDtController.java

@@ -23,8 +23,10 @@ import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -69,6 +71,9 @@ public class TSpecdevDtController extends BaseController {
     private TApproveSpecModifyController approveSpecModifyController;
     @Autowired
     private TSpechiDtController tSpechiDtController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
 
     /**
      * 查询特种设备电梯台账列表
@@ -175,6 +180,9 @@ public class TSpecdevDtController extends BaseController {
         new Thread(() -> {
             tSpechiDtController.addOperLog(String.valueOf(tSpecdevDt.getId()),userName,new Date() , "修改" );
         },"特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -458,15 +466,21 @@ public class TSpecdevDtController extends BaseController {
             }
         }
         for (TSpecdevDt t : oldList) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(5l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setCheckConclusion(t.getPerTestConclusion());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(5l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setCheckConclusion(t.getPerTestConclusion());
+                tSpecCheckService.insertTSpecCheck(tc);
+            }catch (Exception e) {
+                logger.info("e:" + e);
+                e.printStackTrace();
+            }
+
         }
 
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
@@ -474,7 +488,9 @@ public class TSpecdevDtController extends BaseController {
         new Thread(() -> {
             tSpechiDtController.addOperLog(ids.toArray(),userName,new Date() , "批量更新" );
         },"特种设备操作日志").start();
-
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
         logger.info("failNumber:" + String.valueOf(failNumber));
@@ -569,5 +585,66 @@ public class TSpecdevDtController extends BaseController {
         return AjaxResult.success(filename);
     }
 
+    public void checkWarnflag(){
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+
+        List<TSpecdevDt> list = tSpecdevDtService.list(new QueryWrapper<TSpecdevDt>()
+                .eq("del_flag", 0).eq("status", "1"));
+        List<TSpecdevDt> firstList = new ArrayList<>();
+        List<TSpecdevDt> secondList = new ArrayList<>();
+        List<TSpecdevDt> thirdList = new ArrayList<>();
+        for (TSpecdevDt tSpecdevDt : list) {
+            if (tSpecdevDt.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevDt.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForDt(2L, tSpecdevDt);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevDt);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForDt(1L, tSpecdevDt);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevDt);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForDt(3L, tSpecdevDt);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevDt);
+                    }
+                    continue;
+                }
+                if (day > thirdlevel ) {
+                    this.updateForDt(0L, tSpecdevDt);
+                    continue;
+                }
+            }
+        }
+    }
+
+    private void updateForDt(Long flag, TSpecdevDt tSpecdevDt) {
+        tSpecdevDt.setWarnFlag(flag);
+        this.tSpecdevDtService.updateTSpecdevDt(tSpecdevDt);
+    }
 
 }

+ 91 - 9
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDzsbController.java

@@ -25,8 +25,10 @@ import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -70,6 +72,10 @@ public class TSpecdevDzsbController extends BaseController {
     private TApproveSpecModifyController approveSpecModifyController;
     @Autowired
     private TSpechiDzsbController tSpechiDzsbController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
+
     /**
      * 查询特种设备吊装设备台账列表
      */
@@ -175,6 +181,9 @@ public class TSpecdevDzsbController extends BaseController {
         new Thread(() -> {
             tSpechiDzsbController.addOperLog(String.valueOf(tSpecdevDzsb.getId()),userName,new Date() , "修改" );
         },"特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -468,21 +477,30 @@ public class TSpecdevDzsbController extends BaseController {
             }
         }
         for (TSpecdevDzsb t : oldList) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(3l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setCheckConclusion(t.getPerTestConclusion());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(3l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setCheckConclusion(t.getPerTestConclusion());
+                tSpecCheckService.insertTSpecCheck(tc);
+            } catch (Exception e) {
+                logger.error("e:" + e);
+                e.printStackTrace();
+            }
+
         }
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         String userName =loginUser != null? loginUser.getUsername(): "";
         new Thread(() -> {
             tSpechiDzsbController.addOperLog(ids.toArray(),userName,new Date() , "批量更新" );
         },"特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
         logger.info("failNumber:" + String.valueOf(failNumber));
@@ -575,4 +593,68 @@ public class TSpecdevDzsbController extends BaseController {
         out.close();
         return AjaxResult.success(filename);
     }
+
+    public void checkWarnflag(){
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+
+        List<TSpecdevDzsb> list = this.tSpecdevDzsbService.list(new QueryWrapper<TSpecdevDzsb>()
+                .eq("del_flag", 0).eq("status", "1"));
+        List<TSpecdevDzsb> firstList = new ArrayList<>();
+        List<TSpecdevDzsb> secondList = new ArrayList<>();
+        List<TSpecdevDzsb> thirdList = new ArrayList<>();
+        for (TSpecdevDzsb tSpecdevDzsb : list) {
+            if (tSpecdevDzsb.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevDzsb.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForDzsb(2L, tSpecdevDzsb);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevDzsb);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForDzsb(1L, tSpecdevDzsb);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevDzsb);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForDzsb(3L, tSpecdevDzsb);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevDzsb);
+                    }
+                    continue;
+                }
+                if (day > thirdlevel ) {
+                    this.updateForDzsb(0L, tSpecdevDzsb);
+                    continue;
+                }
+            }
+        }
+    }
+
+    private void updateForDzsb(Long flag, TSpecdevDzsb tSpecdevDzsb) {
+        tSpecdevDzsb.setWarnFlag(flag);
+        this.tSpecdevDzsbService.updateTSpecdevDzsb(tSpecdevDzsb);
+    }
+
+
 }

+ 93 - 13
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevGlController.java

@@ -24,8 +24,10 @@ import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -70,6 +72,9 @@ public class TSpecdevGlController extends BaseController
     private TApproveSpecModifyController approveSpecModifyController;
     @Autowired
     private TSpechiGlController tSpechiGlController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
     /**
      * 查询特种设备锅炉台账列表
      */
@@ -183,6 +188,9 @@ public class TSpecdevGlController extends BaseController
         new Thread(() -> {
             tSpechiGlController.addOperLog(String.valueOf(tSpecdevGl.getId()),userName,new Date() , "修改" );
         },"特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -512,25 +520,34 @@ public class TSpecdevGlController extends BaseController
         }
 
         for (TSpecdevGl t : oldList) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(4l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setCheckConclusion(t.getCheckConclusion());
-            tc.setOutWarnDate(t.getOutWarnDate());
-            tc.setOutReportNo(t.getOutReportNo());
-            tc.setOutCheckConclusion(t.getOutCheckConclusion());
-            tc.setOutNextWarnDate(t.getOutNextWarnDate());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(4l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setCheckConclusion(t.getCheckConclusion());
+                tc.setOutWarnDate(t.getOutWarnDate());
+                tc.setOutReportNo(t.getOutReportNo());
+                tc.setOutCheckConclusion(t.getOutCheckConclusion());
+                tc.setOutNextWarnDate(t.getOutNextWarnDate());
+                tSpecCheckService.insertTSpecCheck(tc);
+            }catch (Exception e){
+                logger.info("e:" + e);
+                e.printStackTrace();
+            }
+
         }
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         String userName =loginUser != null? loginUser.getUsername(): "";
         new Thread(() -> {
             tSpechiGlController.addOperLog(ids.toArray(),userName,new Date() , "批量更新" );
         },"特种设备操作日志").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" +String.valueOf(successNumber));
         logger.info("failNumber:" +String.valueOf(failNumber));
@@ -637,4 +654,67 @@ public class TSpecdevGlController extends BaseController
         out.close();
         return AjaxResult.success(filename);
     }
+
+    public void checkWarnflag(){
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+        List<TSpecdevGl> list = this.tSpecdevGlService.list(new QueryWrapper<TSpecdevGl>()
+                .eq("del_flag", 0).eq("status", "1")
+        );
+        //获取动态处理预警级别
+        List<TSpecdevGl> firstList = new ArrayList<>();
+        List<TSpecdevGl> secondList = new ArrayList<>();
+        List<TSpecdevGl> thirdList = new ArrayList<>();
+        for (TSpecdevGl tSpecdevGl : list) {
+            if (tSpecdevGl.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevGl.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForGl(2L, tSpecdevGl);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevGl);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForGl(1L, tSpecdevGl);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevGl);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForGl(3L, tSpecdevGl);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevGl);
+                    }
+                    continue;
+                }
+                if (day > thirdlevel) {
+                    this.updateForGl(0l, tSpecdevGl);
+                    continue;
+                }
+            }
+        }
+
+    }
+    private void updateForGl(Long flag, TSpecdevGl tSpecdevGl) {
+        tSpecdevGl.setWarnFlag(flag);
+        this.tSpecdevGlService.updateTSpecdevGl(tSpecdevGl);
+    }
 }

+ 92 - 13
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java

@@ -29,8 +29,10 @@ import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -76,6 +78,9 @@ public class TSpecdevYlgdController extends BaseController {
     private TSpechiYlgdController tSpechiYlgdController;
     @Autowired
     private TReportYlgdController tReportYlgdController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
     /**
      * 查询特种设备压力管道台账列表
      */
@@ -187,6 +192,9 @@ public class TSpecdevYlgdController extends BaseController {
         new Thread(() -> {
             tReportYlgdController.syncData();;
         },"同步").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -547,19 +555,24 @@ public class TSpecdevYlgdController extends BaseController {
             }
         }
         for (TSpecdevYlgd t : oldList) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(2l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setYearNextWarnDate(t.getYearNextWarnDate());
-            tc.setYearWarnDate(t.getYearWarnDate());
-            tc.setYearReportNo(t.getReportNo());
-            tc.setSafeClass(t.getSafeClass());
-            tc.setCheckConclusion(t.getCheckConclusion());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(2l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setYearNextWarnDate(t.getYearNextWarnDate());
+                tc.setYearWarnDate(t.getYearWarnDate());
+                tc.setYearReportNo(t.getReportNo());
+                tc.setSafeClass(t.getSafeClass());
+                tc.setCheckConclusion(t.getCheckConclusion());
+                tSpecCheckService.insertTSpecCheck(tc);
+            }catch (Exception e) {
+                e.printStackTrace();
+                logger.error("e:" + e);
+            }
         }
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         String userName =loginUser != null? loginUser.getUsername(): "";
@@ -571,6 +584,9 @@ public class TSpecdevYlgdController extends BaseController {
             tReportYlgdController.syncData();;
         },"同步年报").start();
 
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
         logger.info("failNumber:" + String.valueOf(failNumber));
@@ -704,4 +720,67 @@ public class TSpecdevYlgdController extends BaseController {
         out.close();
         return AjaxResult.success(filename);
     }
+
+    public void checkWarnflag(){
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+        List<TSpecdevYlgd> list = this.tSpecdevYlgdService.list(new QueryWrapper<TSpecdevYlgd>()
+                .eq("del_flag", 0).eq("status", "1"));
+        List<TSpecdevYlgd> firstList = new ArrayList<>();
+        List<TSpecdevYlgd> secondList = new ArrayList<>();
+        List<TSpecdevYlgd> thirdList = new ArrayList<>();
+        for (TSpecdevYlgd tSpecdevYlgd : list) {
+            if (tSpecdevYlgd.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevYlgd.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForYlgd(2L, tSpecdevYlgd);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevYlgd);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForYlgd(1L, tSpecdevYlgd);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevYlgd);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForYlgd(3L, tSpecdevYlgd);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevYlgd);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > thirdlevel ) {
+                    this.updateForYlgd(0L, tSpecdevYlgd);
+                    continue;
+                }
+            }
+        }
+
+    }
+
+    private void updateForYlgd(Long flag, TSpecdevYlgd tSpecdevYlgd) {
+        tSpecdevYlgd.setWarnFlag(flag);
+        this.tSpecdevYlgdService.updateTSpecdevYlgd(tSpecdevYlgd);
+    }
 }

+ 90 - 14
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlrqController.java

@@ -33,8 +33,10 @@ import com.ruoyi.project.sems.mapper.TSpecdevYlrqMapper;
 import com.ruoyi.project.sems.service.ITSpecCheckService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.domain.TAlarmtype;
 import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysDictTypeService;
+import com.ruoyi.project.system.service.ITAlarmtypeService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -85,6 +87,9 @@ public class TSpecdevYlrqController extends BaseController {
     private TSpecdevYlrqMapper tSpecdevYlrqMapper;
     @Autowired
     private TReportYlrqController tReportYlrqController;
+    //注入特种设备预警接口
+    @Autowired
+    private ITAlarmtypeService tAlarmtypeService;
 
     /**
      * 查询特种设备压力容器台账列表
@@ -205,6 +210,9 @@ public class TSpecdevYlrqController extends BaseController {
         new Thread(() -> {
             tReportYlrqController.syncData();
         },"同步年度检查").start();
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         return AjaxResult.success();
     }
 
@@ -434,7 +442,9 @@ public class TSpecdevYlrqController extends BaseController {
         new Thread(() -> {
             tReportYlrqController.syncData();
         },"同步年度检查").start();
-
+        new Thread(() -> {
+            this.checkWarnflag();
+        },"特种设备warnflag更新").start();
         logger.info("list:" + JSON.toJSONString(list));
         logger.info("successNumber:" + String.valueOf(successNumber));
         logger.info("failNumber:" + String.valueOf(failNumber));
@@ -562,19 +572,24 @@ public class TSpecdevYlrqController extends BaseController {
         for (TSpecdevYlrq t : oldList) {
 //            TSpecdevYlrq old = tSpecdevYlrqService.selectTSpecdevYlrqById(t.getId());
 //            if (!old.getReportNo().equals(t.getReportNo())) {
-            TSpecCheck tc = new TSpecCheck();
-            tc.setDevType(1l);
-            tc.setCheckUnit(t.getCheckUnit());
-            tc.setDevId(t.getId());
-            tc.setNextWarnDate(t.getNextWarnDate());
-            tc.setReportNo(t.getReportNo());
-            tc.setWarnDate(t.getWarnDate());
-            tc.setYearNextWarnDate(t.getYearNextWarnDate());
-            tc.setYearWarnDate(t.getYearWarnDate());
-            tc.setYearReportNo(t.getReportNo());
-            tc.setSafeClass(t.getSafeClass());
-            tc.setCheckConclusion(t.getCheckConclusion());
-            tSpecCheckService.insertTSpecCheck(tc);
+            try {
+                TSpecCheck tc = new TSpecCheck();
+                tc.setDevType(1l);
+                tc.setCheckUnit(t.getCheckUnit());
+                tc.setDevId(t.getId());
+                tc.setNextWarnDate(t.getNextWarnDate());
+                tc.setReportNo(t.getReportNo());
+                tc.setWarnDate(t.getWarnDate());
+                tc.setYearNextWarnDate(t.getYearNextWarnDate());
+                tc.setYearWarnDate(t.getYearWarnDate());
+                tc.setYearReportNo(t.getReportNo());
+                tc.setSafeClass(t.getSafeClass());
+                tc.setCheckConclusion(t.getCheckConclusion());
+                tSpecCheckService.insertTSpecCheck(tc);
+            }catch (Exception e) {
+                e.printStackTrace();
+                logger.error("e:" + e);
+            }
 //            }
         }
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
@@ -715,4 +730,65 @@ public class TSpecdevYlrqController extends BaseController {
         out.close();
         return AjaxResult.success(filename);
     }
+
+    public void checkWarnflag(){
+        //获取动态处理预警级别
+        TAlarmtype tAlarmtype = this.tAlarmtypeService.selectTAlarmtypeById(1080L);
+        if (tAlarmtype.getIsOpen() == 0) {
+            logger.info("特种设备预警标识定时任务未启用");
+            return;
+        }
+        Long firstlevel = tAlarmtype.getFirstlevel();//1级
+        Long secondlevel = tAlarmtype.getSecondlevel();//2级
+        Long thirdlevel = tAlarmtype.getThirdlevel();//3级
+        List<TSpecdevYlrq> list = this.tSpecdevYlrqService.list(new QueryWrapper<TSpecdevYlrq>()
+                .eq("del_flag", 0).eq("status", "1"));
+        List<TSpecdevYlrq> firstList = new ArrayList<>();
+        List<TSpecdevYlrq> secondList = new ArrayList<>();
+        List<TSpecdevYlrq> thirdList = new ArrayList<>();
+        for (TSpecdevYlrq tSpecdevYlrq : list) {
+            if (tSpecdevYlrq.getNextWarnDate() != null) {
+                long now = System.currentTimeMillis();
+                long diff = tSpecdevYlrq.getNextWarnDate().getTime() - now;
+                long nd = 1000 * 24 * 60 * 60;
+                long day = diff / nd;
+                // 半年内 预警标识为2级
+                if (day > 0 && day <= secondlevel) {
+                    this.updateForYlrq(2L, tSpecdevYlrq);
+                    //只在当天发送邮件
+                    if (day == secondlevel) {
+                        firstList.add(tSpecdevYlrq);
+                    }
+                    continue;
+                }
+                // 半年-一年 预警标识为1级
+                if (day > secondlevel && day <= thirdlevel) {
+                    this.updateForYlrq(1L, tSpecdevYlrq);
+                    //只在当天发送邮件
+                    if (day == thirdlevel) {
+                        secondList.add(tSpecdevYlrq);
+                    }
+                    continue;
+                }
+                // 超时 预警标识为3级
+                if (day <= firstlevel) {
+                    this.updateForYlrq(3L, tSpecdevYlrq);
+                    //只在当天发送邮件
+                    if (day == firstlevel) {
+                        thirdList.add(tSpecdevYlrq);
+                    }
+                    continue;
+                }
+                if (day > thirdlevel ) {
+                    this.updateForYlrq(0L, tSpecdevYlrq);
+                    continue;
+                }
+            }
+        }
+
+    }
+    private void updateForYlrq(Long flag, TSpecdevYlrq tSpecdevYlrq) {
+        tSpecdevYlrq.setWarnFlag(flag);
+        this.tSpecdevYlrqService.updateTSpecdevYlrq(tSpecdevYlrq);
+    }
 }

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDt.java

@@ -49,7 +49,7 @@ public class TSpecdevDt extends BaseEntity
     private String devname;
 
     /** 注册代码 */
-    @Excel(name = "注册编号")
+    @Excel(name = "设备代码")
     private String regno;
 
     /** 型号 */

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevGl.java

@@ -65,7 +65,7 @@ public class TSpecdevGl extends BaseEntity
     private String useno;
 
     /** 注册代码 */
-    @Excel(name = "注册编号")
+    @Excel(name = "设备代码")
     private String regno;
 
     /** 制造单位 */

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlrq.java

@@ -65,7 +65,7 @@ public class TSpecdevYlrq extends BaseEntity
     private String useno;
 
     /** 注册代码 */
-    @Excel(name = "注册编号")
+    @Excel(name = "设备代码")
     private String regno;
 
     /** 容器类别 */

+ 20 - 5
master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecWeekcheckController.java

@@ -27,6 +27,7 @@ import com.ruoyi.project.listener.semsWeekCheck.WeekcheckEndFailListener;
 import com.ruoyi.project.listener.semsWeekCheck.WeekcheckEndSuccessListener;
 import com.ruoyi.project.officeConvert.OfficeConvertController;
 import com.ruoyi.project.sems.safecheck.domain.TSpecDailycheck;
+import com.ruoyi.project.sems.safecheck.mapper.TSpecWeekcheckMapper;
 import com.ruoyi.project.system.domain.SysConfig;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysConfigMapper;
@@ -82,6 +83,9 @@ public class TSpecWeekcheckController extends BaseController
     private SysConfigMapper configMapper;
     @Resource
     private SysUserMapper userMapper;
+    @Resource
+    private TSpecWeekcheckMapper tSpecWeekcheckMapper;
+
     /**
      * 查询每周安全排查列表
      */
@@ -190,6 +194,17 @@ public class TSpecWeekcheckController extends BaseController
         return toAjax(tSpecWeekcheckService.deleteTSpecWeekcheckByIds(ids));
     }
 
+    /**
+     * 作废每周安全排查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:remove')")
+    @Log(title = "作废每周安全排查", businessType = BusinessType.DELETE)
+    @DeleteMapping("/cancel/{id}")
+    public AjaxResult cancel(@PathVariable Long id)
+    {
+        return toAjax(tSpecWeekcheckMapper.cancelTSpecWeekcheckByIds(id));
+    }
+
     /**
      * @return
      * @throws IOException
@@ -385,11 +400,11 @@ public class TSpecWeekcheckController extends BaseController
 
         String taskName = task.getName();//实例名
         if (taskName.equals("安全总监")) {
-
-            String id = devTask.getBusinessKey();
-            TSpecWeekcheck t = tSpecWeekcheckService.selectTSpecWeekcheckById(Long.parseLong(id));
-            t.setSafeDirSug(devTask.getComment());
-            tSpecWeekcheckService.updateTSpecWeekcheck(t);
+            String jsonString = JSON.toJSONString(devTask.getApproveObject()) ;
+// 将JSON字符串转换为TSpecWeekcheck对象
+            TSpecWeekcheck weekcheck = JSON.parseObject(jsonString, TSpecWeekcheck.class);
+            weekcheck.setSafeDirDate(weekcheck.getCheckDate());
+            tSpecWeekcheckService.updateTSpecWeekcheck(weekcheck);
         }
         ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
         TaskService taskService = processEngine.getTaskService();

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecPersonweekcheck.java

@@ -49,7 +49,7 @@ public class TSpecPersonweekcheck extends BaseEntity
 
     /** 检查日期 */
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    @Excel(name = "查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "周排查日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date checkDate;
 
     @Excel(name = "确认状态", readConverterExp = "0=未确认,1=已确认")

+ 2 - 1
master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecWeekcheck.java

@@ -23,6 +23,7 @@ public class TSpecWeekcheck extends BaseEntity
     /** 装置名称 */
     private String plantCode;
 
+    @Excel(name = "状态", readConverterExp = "0=申请中,1=已通过,2=已取消,3=已作废")
     private Integer status;
 
     /** 状态 0 :正常 ;-1:删除 */
@@ -44,7 +45,7 @@ public class TSpecWeekcheck extends BaseEntity
 
     /** 检查日期 */
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    @Excel(name = "查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "周排查日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date checkDate;
 
     /** 查询开始日期 */

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecWeekcheckMapper.java

@@ -61,4 +61,6 @@ public interface TSpecWeekcheckMapper
      * @return 结果
      */
     public int deleteTSpecWeekcheckByIds(Long[] ids);
+
+    int cancelTSpecWeekcheckByIds(Long id);
 }

+ 4 - 0
master/src/main/resources/mybatis/invoice/TInvoiceBookingworkticketMapper.xml

@@ -190,6 +190,10 @@
             </if>
             <if test="workStartTime != null ">and b.work_start_time = #{workStartTime}</if>
             <if test="workEndTime != null ">and b.work_end_time = #{workEndTime}</if>
+
+            <if test="startDate != null ">and b.work_start_time <![CDATA[>=]]> #{startDate}</if>
+            <if test="endDate != null">and b.work_start_time <![CDATA[<=]]>#{endDate}</if>
+
             <if test="contact != null  and contact != ''">and b.contact = #{contact}</if>
             <if test="phonenumber != null  and phonenumber != ''">and b.phonenumber = #{phonenumber}</if>
             <if test="whgzxkzh != null  and whgzxkzh != ''">and whgzxkzh = #{whgzxkzh}</if>

+ 11 - 0
master/src/main/resources/mybatis/sems/TSpecdevCcMapper.xml

@@ -93,6 +93,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 or devno like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                  and  (d.REGNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT REGNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_CC
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY REGNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

+ 11 - 0
master/src/main/resources/mybatis/sems/TSpecdevDtMapper.xml

@@ -74,6 +74,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 or devno like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                    and  (d.REGNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT REGNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_DT
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY REGNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

+ 12 - 1
master/src/main/resources/mybatis/sems/TSpecdevDzsbMapper.xml

@@ -74,6 +74,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 or devno like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                    and  (d.DEVNO,d.DOCNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT DEVNO,DOCNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_DZSB
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY DEVNO,DOCNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->
@@ -324,7 +335,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         UPDATE  T_SPECDEV_DZSB set DEL_FLAG = 2
         where rowid !=( select max(rowid)
         from T_SPECDEV_DZSB b
-        where b.DEVNO = T_SPECDEV_DZSB.DEVNO and b.PLANT_CODE = T_SPECDEV_DZSB.PLANT_CODE and T_SPECDEV_DZSB.DEL_FLAG = 0 and b.DEL_FLAG = 0
+        where b.DEVNO = T_SPECDEV_DZSB.DEVNO and b.DOCNO = T_SPECDEV_DZSB.DOCNO and b.PLANT_CODE = T_SPECDEV_DZSB.PLANT_CODE and T_SPECDEV_DZSB.DEL_FLAG = 0 and b.DEL_FLAG = 0
         and T_SPECDEV_DZSB.APPROVE_STATUS = 0
         )
     </update>

+ 11 - 0
master/src/main/resources/mybatis/sems/TSpecdevGlMapper.xml

@@ -100,6 +100,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 or useno like concat(concat('%', #{searchValue}), '%')
                )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                    and  (d.DEVNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT DEVNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_GL
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY DEVNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

+ 11 - 0
master/src/main/resources/mybatis/sems/TSpecdevYlgdMapper.xml

@@ -180,6 +180,17 @@
                 or opt_temp like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                    and  (d.DEVNO,d.USENO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT DEVNO,USENO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_DZSB
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY DEVNO,USENO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

+ 11 - 0
master/src/main/resources/mybatis/sems/TSpecdevYlrqMapper.xml

@@ -144,6 +144,17 @@
                 or devno like concat(concat('%', #{searchValue}), '%')
                 )
             </if>
+            <if test="isRepeat != null  and isRepeat != ''">
+                <if test="isRepeat == 2 ">
+                    and  (d.DEVNO,d.USENO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    SELECT DEVNO,USENO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    FROM T_SPECDEV_DZSB
+                    WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
+                    GROUP BY DEVNO,USENO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
+                    HAVING COUNT(*) > 1
+                    )
+                </if>
+            </if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->

+ 5 - 0
master/src/main/resources/mybatis/sems/safecheck/TSpecWeekcheckMapper.xml

@@ -147,6 +147,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update t_spec_weekcheck set del_flag = 2 where id = #{id}
     </update>
 
+
+    <update id="cancelTSpecWeekcheckByIds" parameterType="Long">
+        update t_spec_weekcheck set status = 3 where id = #{id}
+    </update>
+
     <update id="deleteTSpecWeekcheckByIds" parameterType="String">
         update t_spec_weekcheck set del_flag = 2 where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">

二进制
master/src/main/resources/static/template/sems/specCc.xlsx


二进制
master/src/main/resources/static/template/sems/specDt.xlsx


二进制
master/src/main/resources/static/template/sems/specGl.xlsx


二进制
master/src/main/resources/static/template/sems/specYlrq.xlsx


+ 9 - 0
ui/src/api/sems/safecheck/weekcheck.js

@@ -52,6 +52,15 @@ export function delWeekcheck(id) {
   })
 }
 
+// 作废每周安全排查
+export function cancelWeekcheck(id) {
+  return request({
+    url: '/safecheck/weekcheck/cancel/' + id,
+    method: 'delete'
+  })
+}
+
+
 // 导出每周安全排查
 export function exportWeekcheck(query) {
   return request({

+ 5 - 24
ui/src/views/approve/approveDetail/semsWeekCheck-detail.vue

@@ -7,7 +7,7 @@
     <el-form ref="form" :model="form" label-width="80px">
       <el-row>
         <el-col :span="12">
-          <el-form-item  label-width="150px" label="查日期" prop="checkDate">
+          <el-form-item  label-width="150px" label="周排查日期" prop="checkDate">
             <el-date-picker clearable size="small" style="width: 200px"
                             :disabled="true"
                             v-model="dataForm.checkDate"
@@ -25,19 +25,19 @@
       </el-row>
 
       <el-form-item label-width="150px" label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
-        <el-input v-model="dataForm.lastWeekRisk" type="textarea" placeholder="请输入内容" :disabled="true"/>
+        <el-input v-model="dataForm.lastWeekRisk" type="textarea" placeholder="请输入内容"/>
       </el-form-item>
       <el-form-item label-width="150px" label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
         <el-input v-model="dataForm.thisWeekRisk" type="textarea" placeholder="请输入内容" :disabled="true"/>
       </el-form-item>
       <el-form-item label-width="150px" label="本周安全管理情况评价">
-        <el-radio-group v-model="dataForm.safeCondition" :disabled="true">
+        <el-radio-group v-model="dataForm.safeCondition" >
           <el-radio label="安全风险可控,无较大(质量)安全风险隐患">安全风险可控,无较大(质量)安全风险隐患</el-radio>
           <el-radio label="存在安全风险隐患,需尽快采取防范措施">存在安全风险隐患,需尽快采取防范措施</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item label-width="150px" label="下周工作重点" prop="nextWeekWork">
-        <el-input v-model="dataForm.nextWeekWork" type="textarea" placeholder="请输入内容" :disabled="true" />
+        <el-input v-model="dataForm.nextWeekWork" type="textarea" placeholder="请输入内容" />
       </el-form-item>
       <el-form-item label-width="150px" label="安全管理员" prop="safeAdminId">
         <el-input v-model="dataForm.safeAdminName" placeholder="请输入安全管理员" :disabled="true" />
@@ -105,25 +105,6 @@ export default {
       dataListLoading:true,
       taskName: '',
       dataForm: {
-        id: 0,
-        userId: '',
-        devId: '',
-        devType: '',
-        approveType: '',
-        content: '',
-        fileUrls: '',
-        reUrls: '',
-        status: '',
-        creattime: '',
-        plantCode: '',
-        unit: '',
-        devname: '',
-        devno: '',
-        files: [],
-        delayDate: '',
-        delayReason: '',
-        delayMeasure: '',
-        delayNotice: ''
       },
       taskForm: {
         comment: '',
@@ -176,7 +157,6 @@ export default {
   },
   methods: {
     init (id, taskId, processId,taskName) {
-      this.dataForm.processId = processId
       this.taskName = taskName
       this.taskForm.taskId = taskId
       this.dataForm.id = id || 0
@@ -237,6 +217,7 @@ export default {
       this.taskForm.condition = val
       this.taskForm.comment = this.dataForm.safeDirSug
       this.taskForm.businessKey = this.dataForm.id
+      this.taskForm.approveObject = this.dataForm
       handle(this.taskForm).then(response => {
         this.submitDisabled = false
         this.msgSuccess(this.$t('处理成功'));

+ 1 - 1
ui/src/views/approve/approveDetail/spec-detail.vue

@@ -56,7 +56,7 @@
           <el-table-column :label="$t('位号')" align="center" fixed="left" prop="devno" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-          <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('介质')" align="center" prop="medium" :show-overflow-tooltip="true" :render-header="renderHeader">
           </el-table-column>
           <el-table-column :label="$t('设计压力')+'(MPa)'" align="center" prop="desPressure" :show-overflow-tooltip="true" :render-header="renderHeader">

+ 1 - 1
ui/src/views/approve/pending/spec-detail.vue

@@ -63,7 +63,7 @@
           <u-table-column :label="$t('位号')" align="center" fixed="left" prop="devno" :show-overflow-tooltip="true"/>
           <u-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
           <u-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-          <u-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+          <u-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
           <u-table-column :label="$t('介质')" align="center" prop="medium" :show-overflow-tooltip="true" :render-header="renderHeader">
           </u-table-column>
           <u-table-column :label="$t('设计压力')+'(MPa)'" align="center" prop="desPressure" :show-overflow-tooltip="true" :render-header="renderHeader">

+ 1 - 1
ui/src/views/intact/gj/specGl-hisReform.vue

@@ -11,7 +11,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>

+ 1 - 1
ui/src/views/intact/pump/specGl-hisReform.vue

@@ -11,7 +11,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>

+ 58 - 10
ui/src/views/invoice/bookingworkticket/index.vue

@@ -31,13 +31,29 @@
           ></el-option>
         </el-select>
       </el-form-item>
+<!--      <el-form-item label="预约作业日期" prop="workStartTime">-->
+<!--        <el-date-picker clearable size="small" style="width: 200px"-->
+<!--                        v-model="queryParams.workStartTime"-->
+<!--                        type="date"-->
+<!--                        value-format="yyyy-MM-dd"-->
+<!--                        placeholder="选择预约作业日期"-->
+<!--                        @input="handleQuery">-->
+<!--        </el-date-picker>-->
+<!--      </el-form-item>-->
+
       <el-form-item label="预约作业日期" prop="workStartTime">
-        <el-date-picker clearable size="small" style="width: 200px"
-                        v-model="queryParams.workStartTime"
-                        type="date"
-                        value-format="yyyy-MM-dd"
-                        placeholder="选择预约作业日期"
-                        @input="handleQuery">
+        <el-date-picker
+          v-model="chooseDate"
+          @change="handleQuery"
+          type="daterange"
+          style="width: 508px"
+          align="right"
+          unlink-panels
+          :range-separator="$t('至')"
+          :start-placeholder="$t('开始日期')"
+          :end-placeholder="$t('结束日期')"
+          value-format="yyyy-MM-dd"
+          :picker-options="pickerOptions">
         </el-date-picker>
       </el-form-item>
 
@@ -233,7 +249,7 @@
       <u-table-column label="续票预约" fixed="right" align="center" width="90">
         <template slot-scope="scope">
           <el-button
-            v-if="scope.row.bookingworkticket.status== 3 && scope.row.whgzxkzh && !scope.row.dhzyxkzh && !scope.row.gczyxkzh && !scope.row.mbzyxkzh && !scope.row.xzkjxkzh"
+            v-if="scope.row.bookingworkticket.status== 3"
             size="mini"
             type="text"
             @click="handleXp(scope.row)"
@@ -681,6 +697,36 @@ export default {
         pageTotalNum: 1,
         loadedRatio: 0,
       },
+      //日期快速选择
+      pickerOptions: {
+        shortcuts: [{
+          text: this.$t('最近一周'),
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: this.$t('最近一个月'),
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: this.$t('最近三个月'),
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      //日期选择器
+      chooseDate: [],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -751,9 +797,6 @@ export default {
       },
       // 表单校验
       rulesXp: {
-        yqxkzh: [
-          {required: true, message: "票号不能为空", trigger: "blur"}
-        ],
         workStartTime: [
           {required: true, message: "作业时间不能为空", trigger: "blur"}
         ],
@@ -1113,6 +1156,11 @@ export default {
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
+      if (this.chooseDate == null) {
+        this.chooseDate = []
+      }
+      this.queryParams.startDate = this.chooseDate[0]
+      this.queryParams.endDate = this.chooseDate[1]
      this.getList(JSON.stringify(this.queryParams));
     },
     /** 重置按钮操作 */

+ 1 - 1
ui/src/views/sems/reportYlrq/index.vue

@@ -122,7 +122,7 @@
                        :formatter="approveStatusFormat"/>
       <u-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <u-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <u-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('介质')" align="center" prop="medium" :show-overflow-tooltip="true" :render-header="renderHeader">
         <template slot-scope="scope">
           <el-input v-if="scope.row.isEdit" v-model="scope.row.medium" :placeholder="$t('请输入')+$t('介质')"/>

+ 1 - 1
ui/src/views/sems/reportYlrq/yearapprove.vue

@@ -13,7 +13,7 @@
           <el-table-column :label="$t('位号')" align="center" fixed="left" prop="devno" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-          <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
           <el-table-column :label="$t('介质')" align="center" prop="medium" :show-overflow-tooltip="true" :render-header="renderHeader">
           </el-table-column>
           <el-table-column :label="$t('设计压力')+'(MPa)'" align="center" prop="desPressure" :show-overflow-tooltip="true" :render-header="renderHeader">

+ 5 - 5
ui/src/views/sems/safecheck/agent-personweekcheck/index.vue

@@ -193,10 +193,10 @@
           </el-col>
         </el-row>
         <el-form-item label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
-          <el-input v-model="form.lastWeekRisk" placeholder="请输入上周安全风险隐患问题整改核实情况" />
+          <el-input v-model="form.lastWeekRisk" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入上周安全风险隐患问题整改核实情况" />
         </el-form-item>
         <el-form-item label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
-          <el-input v-model="form.thisWeekRisk" placeholder="请输入本周主要安全风险隐患和整改情况" />
+          <el-input v-model="form.thisWeekRisk" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入本周主要安全风险隐患和整改情况" />
         </el-form-item>
         <el-form-item label="本周安全管理情况评价" prop="safeCondition">
           <el-radio-group v-model="form.safeCondition">
@@ -205,7 +205,7 @@
           </el-radio-group>
         </el-form-item>
         <el-form-item label="下周工作重点" prop="nextWeekWork">
-          <el-input v-model="form.nextWeekWork" placeholder="请输入下周工作重点" />
+          <el-input v-model="form.nextWeekWork" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入下周工作重点" />
         </el-form-item>
         <el-form-item  label="被代理人" prop="agentId">
           <el-select v-model="form.agentId" filterable placeholder="被代理人">
@@ -465,7 +465,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加每周个人安全检查";
+      this.title = "添加装置周排查情况";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -485,7 +485,7 @@ export default {
       getPersonweekcheck(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改每周个人安全检查";
+        this.title = "修改装置周排查情况";
       });
     },
     /** 提交按钮 */

+ 1 - 1
ui/src/views/sems/safecheck/dailycheck/index.vue

@@ -12,7 +12,7 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="查日期" prop="checkDate">
+      <el-form-item label="周排查日期" prop="checkDate">
         <el-date-picker
           v-model="chooseDate"
           @change="handleQuery"

+ 7 - 7
ui/src/views/sems/safecheck/personweekcheck/index.vue

@@ -12,7 +12,7 @@
         </el-option>
       </el-select>
       </el-form-item>
-      <el-form-item label="查日期" prop="checkDate">
+      <el-form-item label="周排查日期" prop="checkDate">
         <el-date-picker
           v-model="chooseDate"
           @change="handleQuery"
@@ -108,7 +108,7 @@
     <el-table v-loading="loading" :data="personweekcheckList" @selection-change="handleSelectionChange" :height="clientHeight" border>
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="装置名称" align="center" prop="plantCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="查日期" align="center" prop="checkDate" width="100">
+      <el-table-column label="周排查日期" align="center" prop="checkDate" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.checkDate, '{y}-{m}-{d}') }}</span>
         </template>
@@ -178,12 +178,12 @@
         </el-form-item>
         <el-row>
           <el-col :span="12">
-            <el-form-item  label-width="150px" label="查日期" prop="checkDate">
+            <el-form-item  label-width="150px" label="周排查日期" prop="checkDate">
               <el-date-picker clearable size="small" style="width: 200px" @change="calculateWeekNumber"
                               v-model="form.checkDate"
                               type="date"
                               value-format="yyyy-MM-dd"
-                              placeholder="选择查日期">
+                              placeholder="选择周排查日期">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -194,10 +194,10 @@
           </el-col>
         </el-row>
         <el-form-item label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
-          <el-input v-model="form.lastWeekRisk" placeholder="请输入上周安全风险隐患问题整改核实情况" />
+          <el-input v-model="form.lastWeekRisk" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入上周安全风险隐患问题整改核实情况" />
         </el-form-item>
         <el-form-item label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
-          <el-input v-model="form.thisWeekRisk" placeholder="请输入本周主要安全风险隐患和整改情况" />
+          <el-input v-model="form.thisWeekRisk" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入本周主要安全风险隐患和整改情况" />
         </el-form-item>
         <el-form-item label="本周安全管理情况评价" prop="safeCondition">
           <el-radio-group v-model="form.safeCondition">
@@ -206,7 +206,7 @@
           </el-radio-group>
         </el-form-item>
         <el-form-item label="下周工作重点" prop="nextWeekWork">
-          <el-input v-model="form.nextWeekWork" placeholder="请输入下周工作重点" />
+          <el-input v-model="form.nextWeekWork" :autosize="{ minRows: 2, maxRows: 9}" type="textarea" placeholder="请输入下周工作重点" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">

+ 36 - 8
ui/src/views/sems/safecheck/weekcheck/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="查日期" prop="checkDate">
+      <el-form-item label="周排查日期" prop="checkDate">
         <el-date-picker
           v-model="chooseDate"
           @change="handleQuery"
@@ -86,7 +86,7 @@
 
     <el-table v-loading="loading" :data="weekcheckList" @selection-change="handleSelectionChange" :height="clientHeight" border>
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="查日期" align="center" prop="checkDate" width="100">
+      <el-table-column label="周排查日期" align="center" prop="checkDate" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.checkDate, '{y}-{m}-{d}') }}</span>
         </template>
@@ -114,6 +114,14 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['safecheck:weekcheck:edit']"
           >修改</el-button>
+          <el-button
+            v-if="scope.row.status == 1"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleCancel(scope.row)"
+            v-hasPermi="['safecheck:weekcheck:edit']"
+          >作废</el-button>
           <el-button
             v-if="scope.row.status == 2"
             size="mini"
@@ -123,6 +131,7 @@
             v-hasPermi="['safecheck:weekcheck:remove']"
           >删除</el-button>
           <el-button
+            v-if="scope.row.status == 1 || scope.row.status == 0"
             size="mini"
             type="text"
             icon="el-icon-document"
@@ -146,12 +155,12 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="12">
-            <el-form-item  label-width="150px" label="查日期" prop="checkDate">
+            <el-form-item  label-width="150px" label="周排查日期" prop="checkDate">
               <el-date-picker clearable size="small" style="width: 200px" @change="calculateWeekNumber"
                               v-model="form.checkDate"
                               type="date"
                               value-format="yyyy-MM-dd"
-                              placeholder="选择查日期">
+                              placeholder="选择周排查日期">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -269,7 +278,7 @@
 </template>
 
 <script>
-import {wordView,getWeekcheckByWeek,getSafeDirUserId, listWeekcheck, getWeekcheck, delWeekcheck, addWeekcheck, updateWeekcheck, exportWeekcheck, importTemplate} from "@/api/sems/safecheck/weekcheck";
+import {wordView,getWeekcheckByWeek,getSafeDirUserId,cancelWeekcheck, listWeekcheck, getWeekcheck, delWeekcheck, addWeekcheck, updateWeekcheck, exportWeekcheck, importTemplate} from "@/api/sems/safecheck/weekcheck";
 import { treeselect } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
@@ -428,19 +437,24 @@ export default {
     statusFormat(row, column) {
       let type = 'info';
        if (row.status == 0) {
-         let s = '未完成'
+         let s = '申请中'
          return <el-tag type={type}>{s}</el-tag>;
        }
-      if (row.status === 1) {
+      if (row.status == 1) {
         let s = '已完成'
         type = 'success';
         return <el-tag type={type}>{s}</el-tag>;
       }
-      if (row.status === 2) {
+      if (row.status == 2) {
         let s = '已取消'
         type = 'danger';
         return <el-tag type={type}>{s}</el-tag>;
       }
+      if (row.status == 3) {
+        let s = '已作废'
+        type = 'danger';
+        return <el-tag type={type}>{s}</el-tag>;
+      }
     },
     calculateWeekNumber() {
        console.log(this.form.checkDate)
@@ -570,6 +584,20 @@ export default {
           this.msgSuccess("删除成功");
         })
     },
+    /** 作废按钮操作 */
+    handleCancel(row) {
+      const ids = row.id ;
+      this.$confirm('是否确认作废?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return cancelWeekcheck(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("作废成功");
+      })
+    },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;

+ 8 - 3
ui/src/views/sems/specCc/index.vue

@@ -65,6 +65,10 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </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>
@@ -173,7 +177,7 @@
       <el-table-column :label="$t('申请状态')" align="center" fixed="left" prop="approveStatus"
                        :formatter="approveStatusFormat"/>
       <el-table-column :label="$t('发动机号')" align="center" prop="engineNo" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('颜色')" align="center" prop="color" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('工作能力')+'(Ton)'" align="center" prop="capacity" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('设备品种(名称)')" align="center" prop="devname" :show-overflow-tooltip="true"/>
@@ -312,8 +316,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label="$t('注册代码')" prop="regno">
-              <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('注册代码')"/>
+            <el-form-item :label="$t('设备代码')+ '(无设备代码填注册代码)'" prop="regno">
+              <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('设备代码')"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -514,6 +518,7 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 3 - 3
ui/src/views/sems/specDt/bf.vue

@@ -75,7 +75,7 @@
       <el-table-column :label="$t('装置维修组')" align="center"  fixed="left" prop="plantMaint" :show-overflow-tooltip="true"/>
 
       <el-table-column :label="$t('名称')" align="center"  fixed="left" prop="devname" width="130" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left"  prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('状态')" align="center" fixed="left"  prop="status" :formatter="statusFormat" />
       <el-table-column :label="$t('申请状态')" align="center" fixed="left"  prop="approveStatus" :formatter="approveStatusFormat" />
@@ -179,8 +179,8 @@
         </el-form-item>
         </el-col>
         <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
-          <el-input v-model="form.regno" :placeholder="$t('请输入') + $t('注册编号')" />
+        <el-form-item :label="$t('设备代码')+ '(无设备代码填注册代码)'" prop="regno">
+          <el-input v-model="form.regno" :placeholder="$t('请输入') + $t('设备代码')" />
         </el-form-item>
         </el-col>
       </el-row>

+ 9 - 3
ui/src/views/sems/specDt/index.vue

@@ -75,6 +75,10 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </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>
@@ -179,7 +183,7 @@
 
       <el-table-column :label="$t('名称')" align="center" fixed="left" prop="devname" width="130"
                        :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left" prop="regno" width="100"
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left" prop="regno" width="100"
                        :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('状态')" align="center" fixed="left" prop="status" :formatter="statusFormat"/>
@@ -306,8 +310,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
-              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入') + $t('注册代码')"/>
+            <el-form-item :label="$t('设备代码')+ '(无设备代码填注册代码)'" prop="regno">
+              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入') + $t('设备代码')"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -466,6 +470,8 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
+
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 1 - 1
ui/src/views/sems/specDt/operlog.vue

@@ -62,7 +62,7 @@
       <el-table-column :label="$t('装置维修组')" align="center"  fixed="left" prop="plantMaint" :show-overflow-tooltip="true"/>
 
       <el-table-column :label="$t('名称')" align="center"  fixed="left" prop="devname" width="130" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left"  prop="model" :show-overflow-tooltip="true"/>
       <!--      <el-table-column :label="$t('状态')" align="center" fixed="left"  prop="status" :formatter="statusFormat" />-->
       <!--      <el-table-column :label="$t('申请状态')" align="center" fixed="left"  prop="approveStatus" :formatter="approveStatusFormat" />-->

+ 1 - 1
ui/src/views/sems/specDt/specDt-hisReform.vue

@@ -8,7 +8,7 @@
       <el-table-column :label="$t('装置维修组')" align="center"  fixed="left" prop="plantMaint" :show-overflow-tooltip="true"/>
 
       <el-table-column :label="$t('名称')" align="center"  fixed="left" prop="devname" width="130" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left"  prop="model" :show-overflow-tooltip="true"/>
 <!--      <el-table-column :label="$t('状态')" align="center" fixed="left"  prop="status" :formatter="statusFormat" />-->
 <!--      <el-table-column :label="$t('申请状态')" align="center" fixed="left"  prop="approveStatus" :formatter="approveStatusFormat" />-->

+ 2 - 2
ui/src/views/sems/specDt/ty.vue

@@ -141,7 +141,7 @@
 
       <el-table-column :label="$t('名称')" align="center" fixed="left" prop="devname" width="130"
                        :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left" prop="regno" width="100"
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left" prop="regno" width="100"
                        :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('状态')" align="center" fixed="left" prop="status" :formatter="statusFormat"/>
@@ -268,7 +268,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
+            <el-form-item :label="$t('设备代码')" prop="regno">
               <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入') + $t('注册代码')"/>
             </el-form-item>
           </el-col>

+ 2 - 2
ui/src/views/sems/specDt/zx.vue

@@ -75,7 +75,7 @@
       <el-table-column :label="$t('装置维修组')" align="center"  fixed="left" prop="plantMaint" :show-overflow-tooltip="true"/>
 
       <el-table-column :label="$t('名称')" align="center"  fixed="left" prop="devname" width="130" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" fixed="left"  prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('状态')" align="center" fixed="left"  prop="status" :formatter="statusFormat" />
       <el-table-column :label="$t('申请状态')" align="center" fixed="left"  prop="approveStatus" :formatter="approveStatusFormat" />
@@ -179,7 +179,7 @@
         </el-form-item>
         </el-col>
         <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
+        <el-form-item :label="$t('设备代码')" prop="regno">
           <el-input v-model="form.regno" :placeholder="$t('请输入') + $t('注册代码')" />
         </el-form-item>
         </el-col>

+ 6 - 1
ui/src/views/sems/specDzsb/index.vue

@@ -74,7 +74,10 @@
           />
         </el-select>
       </el-form-item>
-
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </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>
@@ -489,6 +492,8 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
+
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 3 - 3
ui/src/views/sems/specGl/bf.vue

@@ -96,7 +96,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>
@@ -238,8 +238,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
-          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('注册编号')" />
+        <el-form-item :label="$t('设备代码')" prop="regno">
+          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('设备代码')" />
         </el-form-item>
           </el-col>
           <el-col :span="12">

+ 11 - 5
ui/src/views/sems/specGl/index.vue

@@ -46,10 +46,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item :label="$t('注册代码')" prop="regno" label-width="50">
+      <el-form-item :label="$t('设备代码')" prop="regno" label-width="50">
         <el-input
           v-model="queryParams.regno"
-          :placeholder="$t('请输入') + $t('注册代码')"
+          :placeholder="$t('请输入') + $t('设备代码')"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -92,6 +92,10 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </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>
@@ -191,7 +195,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>
@@ -348,8 +352,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
-              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('注册编号')"/>
+            <el-form-item :label="$t('设备代码')+ '(无设备代码填注册代码)'" prop="regno">
+              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('设备代码')"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -561,6 +565,8 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
+
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 1 - 1
ui/src/views/sems/specGl/operlog.vue

@@ -66,7 +66,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>

+ 1 - 1
ui/src/views/sems/specGl/specGl-hisReform.vue

@@ -11,7 +11,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>

+ 3 - 3
ui/src/views/sems/specGl/ty.vue

@@ -152,7 +152,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>
@@ -309,8 +309,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
-              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('注册编号')"/>
+            <el-form-item :label="$t('设备代码')" prop="regno">
+              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('设备代码')"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">

+ 3 - 3
ui/src/views/sems/specGl/zx.vue

@@ -96,7 +96,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>
@@ -238,8 +238,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
-          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('注册编号')" />
+        <el-form-item :label="$t('设备代码')" prop="regno">
+          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('设备代码')" />
         </el-form-item>
           </el-col>
           <el-col :span="12">

+ 6 - 0
ui/src/views/sems/specYlgd/index.vue

@@ -136,6 +136,10 @@
           </el-option>
         </el-select>
       </el-form-item>
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </el-form-item>
 
       <el-form-item>
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
@@ -694,6 +698,8 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
+
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 3 - 3
ui/src/views/sems/specYlrq/bf.vue

@@ -89,7 +89,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('设备出厂编号')" align="center" prop="factoryNo" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>
@@ -227,8 +227,8 @@
         </el-form-item>
           </el-col>
           <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
-          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('注册代码')" />
+        <el-form-item :label="$t('设备代码')" prop="regno">
+          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('设备代码')" />
         </el-form-item>
           </el-col>
         </el-row>

+ 9 - 3
ui/src/views/sems/specYlrq/index.vue

@@ -74,6 +74,10 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item :label="$t('重复数据')" prop="isRepeat" label-width="50">
+        <el-radio v-model="queryParams.isRepeat" label="1">全部数据</el-radio>
+        <el-radio v-model="queryParams.isRepeat" label="2">重复数据</el-radio>
+      </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>
@@ -191,7 +195,7 @@
       <u-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('设备出厂编号')" align="center" prop="factoryNo" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <u-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <u-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>
@@ -352,8 +356,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
-              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('注册代码')"/>
+            <el-form-item :label="$t('设备代码')+ '(无设备代码填注册代码)'" prop="regno">
+              <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('设备代码')"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -625,6 +629,8 @@
           <input name="type" :value="upload.type" hidden/>
         </form>
         <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+        <div class="el-upload__tip" style="color:red" slot="tip"> Excel单元格式为文本格式 </div>
+
       </el-upload>
       <div slot="footer" class="dialog-footer">
         <a v-if="waitSubmit" style="margin-right: 300px">{{ $t('正在导入...') }}</a>

+ 1 - 1
ui/src/views/sems/specYlrq/operlog.vue

@@ -66,7 +66,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('设备出厂编号')" align="center" prop="factoryNo" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>

+ 1 - 1
ui/src/views/sems/specYlrq/specYlrq-hisReform.vue

@@ -12,7 +12,7 @@
       <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('设备出厂编号')" align="center" prop="factoryNo" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <el-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>

+ 2 - 2
ui/src/views/sems/specYlrq/ty.vue

@@ -152,7 +152,7 @@
       <u-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('设备出厂编号')" align="center" prop="factoryNo" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-      <u-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <u-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
       <u-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>
@@ -313,7 +313,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label="$t('注册编号')" prop="regno">
+            <el-form-item :label="$t('设备代码')" prop="regno">
               <el-input v-model="form.regno" v-bind:disabled="dataForm == 1" :placeholder="$t('请输入')+ $t('注册代码')"/>
             </el-form-item>
           </el-col>

+ 2 - 2
ui/src/views/sems/specYlrq/zx.vue

@@ -228,8 +228,8 @@
         </el-form-item>
           </el-col>
           <el-col :span="12">
-        <el-form-item :label="$t('注册编号')" prop="regno">
-          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('注册代码')" />
+        <el-form-item :label="$t('设备代码')" prop="regno">
+          <el-input v-model="form.regno" :placeholder="$t('请输入')+ $t('设备代码')" />
         </el-form-item>
           </el-col>
         </el-row>

+ 1 - 1
ui/src/views/sems/specanalysis/BoilerChart.vue

@@ -18,7 +18,7 @@
         <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-        <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+        <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>

+ 2 - 2
ui/src/views/sems/specanalysis/LiftChart.vue

@@ -14,7 +14,7 @@
         <el-table-column :label="$t('单元')" align="center"  fixed="left" prop="unit" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('档案号')" align="center"  fixed="left" prop="docno" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('名称')" align="center"  fixed="left" prop="devname" width="130" :show-overflow-tooltip="true"/>
-        <el-table-column :label="$t('注册编号')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
+        <el-table-column :label="$t('设备代码')" align="center" fixed="left"  prop="regno" width="100" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('型号')" align="center" fixed="left"  prop="model" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('额定载重量')+'(kg)'" align="center" prop="capacity" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('层站数')" align="center" prop="floor" :show-overflow-tooltip="true"/>
@@ -126,7 +126,7 @@
         <el-table-column :label="$t('设备型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('起吊重量')+'(Ton)'" align="center" prop="capacity" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('使用地点')" align="center" prop="location" :show-overflow-tooltip="true"/>
-        <el-table-column :label="$t('设备注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+        <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
 
         <el-table-column :label="$t('投用日期')" align="center" prop="submitdate" width="100">
           <template slot-scope="scope">

+ 1 - 1
ui/src/views/sems/specanalysis/PvChart.vue

@@ -20,7 +20,7 @@
         </el-table-column>
         <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
-        <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+        <el-table-column :label="$t('设备代码')" align="center" prop="regno" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('容器类别')" align="center" prop="vesselType" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
         <el-table-column :label="$t('国家')" align="center" prop="nation" :show-overflow-tooltip="true"/>