Browse Source

cpms优化

jiangbiao 1 năm trước cách đây
mục cha
commit
994fcfa205
100 tập tin đã thay đổi với 20501 bổ sung34 xóa
  1. 9 10
      pom.xml
  2. 19 12
      ruoyi-admin/pom.xml
  3. 105 0
      ruoyi-admin/src/main/java/com/ruoyi/project/asset/controller/TLeakagePointsController.java
  4. 323 0
      ruoyi-admin/src/main/java/com/ruoyi/project/asset/domain/TLeakagePoints.java
  5. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/asset/mapper/TLeakagePointsMapper.java
  6. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/asset/service/ITLeakagePointsService.java
  7. 94 0
      ruoyi-admin/src/main/java/com/ruoyi/project/asset/service/impl/TLeakagePointsServiceImpl.java
  8. 25 0
      ruoyi-admin/src/main/java/com/ruoyi/project/common/DataEntity.java
  9. 101 0
      ruoyi-admin/src/main/java/com/ruoyi/project/file/controller/TFileController.java
  10. 139 0
      ruoyi-admin/src/main/java/com/ruoyi/project/file/domain/TFile.java
  11. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/file/mapper/TFileMapper.java
  12. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/file/service/ITFileService.java
  13. 94 0
      ruoyi-admin/src/main/java/com/ruoyi/project/file/service/impl/TFileServiceImpl.java
  14. 550 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrController.java
  15. 124 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrRecordController.java
  16. 453 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/domain/TStaffmgr.java
  17. 206 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/domain/TStaffmgrRecord.java
  18. 130 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/mapper/TStaffmgrMapper.java
  19. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/mapper/TStaffmgrRecordMapper.java
  20. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/ITStaffmgrRecordService.java
  21. 110 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/ITStaffmgrService.java
  22. 94 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/impl/TStaffmgrRecordServiceImpl.java
  23. 167 0
      ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/impl/TStaffmgrServiceImpl.java
  24. 158 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevAqfController.java
  25. 391 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevAssetController.java
  26. 255 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevCcController.java
  27. 267 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDtController.java
  28. 274 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDzsbController.java
  29. 257 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevFixedAssetController.java
  30. 283 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevGlController.java
  31. 338 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevMainController.java
  32. 111 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevTypemgrController.java
  33. 332 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java
  34. 317 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlrqController.java
  35. 814 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevAqf.java
  36. 453 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevAsset.java
  37. 783 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevCc.java
  38. 763 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDt.java
  39. 794 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDzsb.java
  40. 571 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevFixedAsset.java
  41. 854 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevGl.java
  42. 555 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevMain.java
  43. 180 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevTypemgr.java
  44. 950 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlgd.java
  45. 885 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlrq.java
  46. 65 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevAqfMapper.java
  47. 64 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevAssetMapper.java
  48. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevCcMapper.java
  49. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDtMapper.java
  50. 67 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDzsbMapper.java
  51. 64 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevFixedAssetMapper.java
  52. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevGlMapper.java
  53. 64 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevMainMapper.java
  54. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevTypemgrMapper.java
  55. 73 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlgdMapper.java
  56. 75 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlrqMapper.java
  57. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevAqfService.java
  58. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevAssetService.java
  59. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevCcService.java
  60. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevDtService.java
  61. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevDzsbService.java
  62. 62 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevFixedAssetService.java
  63. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevGlService.java
  64. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevMainService.java
  65. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevTypemgrService.java
  66. 66 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevYlgdService.java
  67. 65 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevYlrqService.java
  68. 97 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevAqfServiceImpl.java
  69. 93 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevAssetServiceImpl.java
  70. 103 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevCcServiceImpl.java
  71. 105 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevDtServiceImpl.java
  72. 106 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevDzsbServiceImpl.java
  73. 94 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevFixedAssetServiceImpl.java
  74. 103 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevGlServiceImpl.java
  75. 93 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevMainServiceImpl.java
  76. 93 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevTypemgrServiceImpl.java
  77. 105 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevYlgdServiceImpl.java
  78. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevYlrqServiceImpl.java
  79. 7 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
  80. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
  81. 1 1
      ruoyi-admin/src/main/resources/application.yml
  82. 152 0
      ruoyi-admin/src/main/resources/mapper/asset/TLeakagePointsMapper.xml
  83. 405 0
      ruoyi-admin/src/main/resources/mapper/plant/TStaffmgrMapper.xml
  84. 104 0
      ruoyi-admin/src/main/resources/mapper/plant/TStaffmgrRecordMapper.xml
  85. 356 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevAqfMapper.xml
  86. 224 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevAssetMapper.xml
  87. 389 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevCcMapper.xml
  88. 311 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevDtMapper.xml
  89. 318 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevDzsbMapper.xml
  90. 253 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevFixedAssetMapper.xml
  91. 384 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevGlMapper.xml
  92. 250 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevMainMapper.xml
  93. 102 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevTypemgrMapper.xml
  94. 494 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevYlgdMapper.xml
  95. 437 0
      ruoyi-admin/src/main/resources/mapper/sems/TSpecdevYlrqMapper.xml
  96. 3 3
      ruoyi-common/pom.xml
  97. 7 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
  98. 69 0
      ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
  99. 2 2
      ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
  100. 4 4
      ruoyi-framework/pom.xml

+ 9 - 10
pom.xml

@@ -4,13 +4,12 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	
-    <groupId>com.ruoyi</groupId>
-    <artifactId>ruoyi</artifactId>
+    <groupId>com.newcpms</groupId>
+    <artifactId>cpms</artifactId>
     <version>3.8.7</version>
 
-    <name>ruoyi</name>
-    <url>http://www.ruoyi.vip</url>
-    <description>若依管理系统</description>
+    <name>newcpms</name>
+    <description>CPMS管理系统</description>
     
     <properties>
         <ruoyi.version>3.8.7</ruoyi.version>
@@ -137,35 +136,35 @@
 
             <!-- 定时任务-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
+                <groupId>com.newcpms</groupId>
                 <artifactId>ruoyi-quartz</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>
 
             <!-- 代码生成-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
+                <groupId>com.newcpms</groupId>
                 <artifactId>ruoyi-generator</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>
 
             <!-- 核心模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
+                <groupId>com.newcpms</groupId>
                 <artifactId>ruoyi-framework</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>
 
             <!-- 系统模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
+                <groupId>com.newcpms</groupId>
                 <artifactId>ruoyi-system</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>
 
             <!-- 通用工具-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
+                <groupId>com.newcpms</groupId>
                 <artifactId>ruoyi-common</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>

+ 19 - 12
ruoyi-admin/pom.xml

@@ -3,8 +3,8 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
+        <groupId>com.newcpms</groupId>
+        <artifactId>cpms</artifactId>
         <version>3.8.7</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -37,7 +37,7 @@
             <version>1.6.2</version>
         </dependency>
 
-         <!-- Mysql驱动包 -->
+        <!-- Mysql驱动包 -->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
@@ -45,19 +45,19 @@
 
         <!-- 核心模块-->
         <dependency>
-            <groupId>com.ruoyi</groupId>
+            <groupId>com.newcpms</groupId>
             <artifactId>ruoyi-framework</artifactId>
         </dependency>
 
         <!-- 定时任务-->
         <dependency>
-            <groupId>com.ruoyi</groupId>
+            <groupId>com.newcpms</groupId>
             <artifactId>ruoyi-quartz</artifactId>
         </dependency>
 
         <!-- 代码生成-->
         <dependency>
-            <groupId>com.ruoyi</groupId>
+            <groupId>com.newcpms</groupId>
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
 
@@ -87,6 +87,13 @@
             <version>1.10.4</version>
         </dependency>
 
+        <!--处理时间-->
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.10.6</version>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -106,15 +113,15 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>   
-                <groupId>org.apache.maven.plugins</groupId>   
-                <artifactId>maven-war-plugin</artifactId>   
-                <version>3.1.0</version>   
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.1.0</version>
                 <configuration>
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                     <warName>${project.artifactId}</warName>
-                </configuration>   
-           </plugin>   
+                </configuration>
+            </plugin>
         </plugins>
         <finalName>${project.artifactId}</finalName>
     </build>

+ 105 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/asset/controller/TLeakagePointsController.java

@@ -0,0 +1,105 @@
+package com.ruoyi.project.asset.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.project.asset.service.ITLeakagePointsService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.project.asset.domain.TLeakagePoints;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 漏点清单Controller
+ * 
+ * @author ruoyi
+ * @date 2024-03-28
+ */
+@RestController
+@RequestMapping("/asset/points")
+public class TLeakagePointsController extends BaseController
+{
+    @Autowired
+    private ITLeakagePointsService tLeakagePointsService;
+
+    /**
+     * 查询漏点清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TLeakagePoints tLeakagePoints)
+    {
+        startPage();
+        List<TLeakagePoints> list = tLeakagePointsService.selectTLeakagePointsList(tLeakagePoints);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出漏点清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:export')")
+    @Log(title = "漏点清单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TLeakagePoints tLeakagePoints)
+    {
+        List<TLeakagePoints> list = tLeakagePointsService.selectTLeakagePointsList(tLeakagePoints);
+        ExcelUtil<TLeakagePoints> util = new ExcelUtil<TLeakagePoints>(TLeakagePoints.class);
+        util.exportExcel(response, list, "漏点清单数据");
+    }
+
+    /**
+     * 获取漏点清单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(tLeakagePointsService.selectTLeakagePointsById(id));
+    }
+
+    /**
+     * 新增漏点清单
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:add')")
+    @Log(title = "漏点清单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TLeakagePoints tLeakagePoints)
+    {
+        return toAjax(tLeakagePointsService.insertTLeakagePoints(tLeakagePoints));
+    }
+
+    /**
+     * 修改漏点清单
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:edit')")
+    @Log(title = "漏点清单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TLeakagePoints tLeakagePoints)
+    {
+        return toAjax(tLeakagePointsService.updateTLeakagePoints(tLeakagePoints));
+    }
+
+    /**
+     * 删除漏点清单
+     */
+    @PreAuthorize("@ss.hasPermi('asset:points:remove')")
+    @Log(title = "漏点清单", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tLeakagePointsService.deleteTLeakagePointsByIds(ids));
+    }
+}

+ 323 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/asset/domain/TLeakagePoints.java

@@ -0,0 +1,323 @@
+package com.ruoyi.project.asset.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 漏点清单对象 t_leakage_points
+ * 
+ * @author ruoyi
+ * @date 2024-03-28
+ */
+public class TLeakagePoints extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 漏点编号 */
+    @Excel(name = "漏点编号")
+    private String pointNo;
+
+    /** 泄漏位置 */
+    @Excel(name = "泄漏位置")
+    private String leakagePosition;
+
+    /** 泄漏介质 */
+    @Excel(name = "泄漏介质")
+    private String leakageMedium;
+
+    /** 发现时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "发现时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date discoveryTime;
+
+    /** 发现人员 */
+    @Excel(name = "发现人员")
+    private String discoveryName;
+
+    /** 泄漏量 */
+    @Excel(name = "泄漏量")
+    private String leakageAmount;
+
+    /** SAP通知单号 */
+    @Excel(name = "SAP通知单号")
+    private String sapNo;
+
+    /** 消漏时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "消漏时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date leakageEliminationTime;
+
+    /** 消漏方法 */
+    @Excel(name = "消漏方法")
+    private String leakageEliminationFunc;
+
+    /** 挂牌 */
+    @Excel(name = "挂牌")
+    private String listing;
+
+    /** 带压堵漏 */
+    @Excel(name = "带压堵漏")
+    private String pressurePlugging;
+
+    /** 消漏结果 */
+    @Excel(name = "消漏结果")
+    private String leakageEliminationResult;
+
+    /** 下次检修日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "下次检修日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date nextCheckDate;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    @Excel(name = "更新人")
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setPointNo(String pointNo) 
+    {
+        this.pointNo = pointNo;
+    }
+
+    public String getPointNo() 
+    {
+        return pointNo;
+    }
+    public void setLeakagePosition(String leakagePosition) 
+    {
+        this.leakagePosition = leakagePosition;
+    }
+
+    public String getLeakagePosition() 
+    {
+        return leakagePosition;
+    }
+    public void setLeakageMedium(String leakageMedium) 
+    {
+        this.leakageMedium = leakageMedium;
+    }
+
+    public String getLeakageMedium() 
+    {
+        return leakageMedium;
+    }
+    public void setDiscoveryTime(Date discoveryTime) 
+    {
+        this.discoveryTime = discoveryTime;
+    }
+
+    public Date getDiscoveryTime() 
+    {
+        return discoveryTime;
+    }
+    public void setDiscoveryName(String discoveryName) 
+    {
+        this.discoveryName = discoveryName;
+    }
+
+    public String getDiscoveryName() 
+    {
+        return discoveryName;
+    }
+    public void setLeakageAmount(String leakageAmount) 
+    {
+        this.leakageAmount = leakageAmount;
+    }
+
+    public String getLeakageAmount() 
+    {
+        return leakageAmount;
+    }
+    public void setSapNo(String sapNo) 
+    {
+        this.sapNo = sapNo;
+    }
+
+    public String getSapNo() 
+    {
+        return sapNo;
+    }
+    public void setLeakageEliminationTime(Date leakageEliminationTime) 
+    {
+        this.leakageEliminationTime = leakageEliminationTime;
+    }
+
+    public Date getLeakageEliminationTime() 
+    {
+        return leakageEliminationTime;
+    }
+    public void setLeakageEliminationFunc(String leakageEliminationFunc) 
+    {
+        this.leakageEliminationFunc = leakageEliminationFunc;
+    }
+
+    public String getLeakageEliminationFunc() 
+    {
+        return leakageEliminationFunc;
+    }
+    public void setListing(String listing) 
+    {
+        this.listing = listing;
+    }
+
+    public String getListing() 
+    {
+        return listing;
+    }
+    public void setPressurePlugging(String pressurePlugging) 
+    {
+        this.pressurePlugging = pressurePlugging;
+    }
+
+    public String getPressurePlugging() 
+    {
+        return pressurePlugging;
+    }
+    public void setLeakageEliminationResult(String leakageEliminationResult) 
+    {
+        this.leakageEliminationResult = leakageEliminationResult;
+    }
+
+    public String getLeakageEliminationResult() 
+    {
+        return leakageEliminationResult;
+    }
+    public void setNextCheckDate(Date nextCheckDate) 
+    {
+        this.nextCheckDate = nextCheckDate;
+    }
+
+    public Date getNextCheckDate() 
+    {
+        return nextCheckDate;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+    public void setDelFlag(Integer delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode) 
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode() 
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate) 
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() 
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode) 
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode() 
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate) 
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate() 
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId) 
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() 
+    {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pointNo", getPointNo())
+            .append("leakagePosition", getLeakagePosition())
+            .append("leakageMedium", getLeakageMedium())
+            .append("discoveryTime", getDiscoveryTime())
+            .append("discoveryName", getDiscoveryName())
+            .append("leakageAmount", getLeakageAmount())
+            .append("sapNo", getSapNo())
+            .append("leakageEliminationTime", getLeakageEliminationTime())
+            .append("leakageEliminationFunc", getLeakageEliminationFunc())
+            .append("listing", getListing())
+            .append("pressurePlugging", getPressurePlugging())
+            .append("leakageEliminationResult", getLeakageEliminationResult())
+            .append("nextCheckDate", getNextCheckDate())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/asset/mapper/TLeakagePointsMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.asset.mapper;
+
+import java.util.List;
+import com.ruoyi.project.asset.domain.TLeakagePoints;
+
+/**
+ * 漏点清单Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-03-28
+ */
+public interface TLeakagePointsMapper 
+{
+    /**
+     * 查询漏点清单
+     * 
+     * @param id 漏点清单主键
+     * @return 漏点清单
+     */
+    public TLeakagePoints selectTLeakagePointsById(Long id);
+
+    /**
+     * 查询漏点清单列表
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 漏点清单集合
+     */
+    public List<TLeakagePoints> selectTLeakagePointsList(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 新增漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    public int insertTLeakagePoints(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 修改漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    public int updateTLeakagePoints(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 删除漏点清单
+     * 
+     * @param id 漏点清单主键
+     * @return 结果
+     */
+    public int deleteTLeakagePointsById(Long id);
+
+    /**
+     * 批量删除漏点清单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTLeakagePointsByIds(Long[] ids);
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/asset/service/ITLeakagePointsService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.asset.service;
+
+import java.util.List;
+import com.ruoyi.project.asset.domain.TLeakagePoints;
+
+/**
+ * 漏点清单Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-03-28
+ */
+public interface ITLeakagePointsService 
+{
+    /**
+     * 查询漏点清单
+     * 
+     * @param id 漏点清单主键
+     * @return 漏点清单
+     */
+    public TLeakagePoints selectTLeakagePointsById(Long id);
+
+    /**
+     * 查询漏点清单列表
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 漏点清单集合
+     */
+    public List<TLeakagePoints> selectTLeakagePointsList(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 新增漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    public int insertTLeakagePoints(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 修改漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    public int updateTLeakagePoints(TLeakagePoints tLeakagePoints);
+
+    /**
+     * 批量删除漏点清单
+     * 
+     * @param ids 需要删除的漏点清单主键集合
+     * @return 结果
+     */
+    public int deleteTLeakagePointsByIds(Long[] ids);
+
+    /**
+     * 删除漏点清单信息
+     * 
+     * @param id 漏点清单主键
+     * @return 结果
+     */
+    public int deleteTLeakagePointsById(Long id);
+}

+ 94 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/asset/service/impl/TLeakagePointsServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.project.asset.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.project.asset.service.ITLeakagePointsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.asset.mapper.TLeakagePointsMapper;
+import com.ruoyi.project.asset.domain.TLeakagePoints;
+
+/**
+ * 漏点清单Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-03-28
+ */
+@Service
+public class TLeakagePointsServiceImpl implements ITLeakagePointsService
+{
+    @Autowired
+    private TLeakagePointsMapper tLeakagePointsMapper;
+
+    /**
+     * 查询漏点清单
+     * 
+     * @param id 漏点清单主键
+     * @return 漏点清单
+     */
+    @Override
+    public TLeakagePoints selectTLeakagePointsById(Long id)
+    {
+        return tLeakagePointsMapper.selectTLeakagePointsById(id);
+    }
+
+    /**
+     * 查询漏点清单列表
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 漏点清单
+     */
+    @Override
+    public List<TLeakagePoints> selectTLeakagePointsList(TLeakagePoints tLeakagePoints)
+    {
+        return tLeakagePointsMapper.selectTLeakagePointsList(tLeakagePoints);
+    }
+
+    /**
+     * 新增漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    @Override
+    public int insertTLeakagePoints(TLeakagePoints tLeakagePoints)
+    {
+        return tLeakagePointsMapper.insertTLeakagePoints(tLeakagePoints);
+    }
+
+    /**
+     * 修改漏点清单
+     * 
+     * @param tLeakagePoints 漏点清单
+     * @return 结果
+     */
+    @Override
+    public int updateTLeakagePoints(TLeakagePoints tLeakagePoints)
+    {
+        return tLeakagePointsMapper.updateTLeakagePoints(tLeakagePoints);
+    }
+
+    /**
+     * 批量删除漏点清单
+     * 
+     * @param ids 需要删除的漏点清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTLeakagePointsByIds(Long[] ids)
+    {
+        return tLeakagePointsMapper.deleteTLeakagePointsByIds(ids);
+    }
+
+    /**
+     * 删除漏点清单信息
+     * 
+     * @param id 漏点清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTLeakagePointsById(Long id)
+    {
+        return tLeakagePointsMapper.deleteTLeakagePointsById(id);
+    }
+}

+ 25 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/common/DataEntity.java

@@ -0,0 +1,25 @@
+package com.ruoyi.project.common;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+public class DataEntity extends BaseEntity {
+
+    private String dataName;
+    private Integer dataNum;
+
+    public String getDataName() {
+        return dataName;
+    }
+
+    public void setDataName(String dataName) {
+        this.dataName = dataName;
+    }
+
+    public Integer getDataNum() {
+        return dataNum;
+    }
+
+    public void setDataNum(Integer dataNum) {
+        this.dataNum = dataNum;
+    }
+}

+ 101 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/file/controller/TFileController.java

@@ -0,0 +1,101 @@
+package com.ruoyi.project.file.controller;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.project.file.domain.TFile;
+import com.ruoyi.project.file.service.ITFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 附件Controller
+ *
+ * @author jiang
+ * @date 2023-10-16
+ */
+@RestController
+@RequestMapping("/file/file")
+public class TFileController extends BaseController {
+    @Autowired
+    private ITFileService tFileService;
+
+    /**
+     * 查询附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('file:file:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TFile tFile) {
+        startPage();
+        List<TFile> list = tFileService.selectTFileList(tFile);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取附件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('file:file:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tFileService.selectTFileById(id));
+    }
+
+    /**
+     * 新增附件
+     */
+    @PreAuthorize("@ss.hasPermi('file:file:add')")
+    @Log(title = "附件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TFile tFile) {
+        return toAjax(tFileService.insertTFile(tFile));
+    }
+
+    /**
+     * 修改附件
+     */
+    @PreAuthorize("@ss.hasPermi('file:file:edit')")
+    @Log(title = "附件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TFile tFile) {
+        return toAjax(tFileService.updateTFile(tFile));
+    }
+
+    /**
+     * 删除附件
+     */
+    @PreAuthorize("@ss.hasPermi('file:file:remove')")
+    @Log(title = "附件", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tFileService.deleteTFileByIds(ids));
+    }
+
+
+    @PostMapping("/uploadFile")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "linkId", required = false) Long linkId, @RequestParam(value = "linkName", required = false) String linkName) throws IOException {
+        if (!file.isEmpty()) {
+            String avatar = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file);
+            TFile tFile = new TFile();
+            tFile.setFileName(file.getOriginalFilename());
+            tFile.setFileUrl(avatar);
+            tFile.setUploader(getNickname());
+            tFile.setUploadDate(new Date());
+            tFile.setLinkId(linkId);
+            tFile.setLinkName(linkName);
+            tFileService.insertTFile(tFile);
+            return AjaxResult.success(avatar);
+        }
+        return AjaxResult.error("上传异常,请联系管理员");
+    }
+}

+ 139 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/file/domain/TFile.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.file.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 附件对象 t_file
+ *
+ * @author jiang
+ * @date 2023-10-16
+ */
+public class TFile extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 附件地址 */
+    @Excel(name = "附件地址")
+    private String fileUrl;
+
+    /** 附件名称 */
+    @Excel(name = "附件名称")
+    private String fileName;
+
+    /** 上传时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadDate;
+
+    /** 上传人 */
+    @Excel(name = "上传人")
+    private String uploader;
+
+    /** 关联表id */
+    @Excel(name = "关联表id")
+    private Long linkId;
+
+    /** 关联表名 */
+    @Excel(name = "关联表名")
+    private String linkName;
+
+    /** 删除标识 */
+    private String delFlag;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setFileName(String fileName)
+    {
+        this.fileName = fileName;
+    }
+
+    public String getFileName()
+    {
+        return fileName;
+    }
+    public void setUploadDate(Date uploadDate)
+    {
+        this.uploadDate = uploadDate;
+    }
+
+    public Date getUploadDate()
+    {
+        return uploadDate;
+    }
+    public void setUploader(String uploader)
+    {
+        this.uploader = uploader;
+    }
+
+    public String getUploader()
+    {
+        return uploader;
+    }
+    public void setLinkId(Long linkId)
+    {
+        this.linkId = linkId;
+    }
+
+    public Long getLinkId()
+    {
+        return linkId;
+    }
+    public void setLinkName(String linkName)
+    {
+        this.linkName = linkName;
+    }
+
+    public String getLinkName()
+    {
+        return linkName;
+    }
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fileUrl", getFileUrl())
+            .append("fileName", getFileName())
+            .append("uploadDate", getUploadDate())
+            .append("uploader", getUploader())
+            .append("remark", getRemark())
+            .append("linkId", getLinkId())
+            .append("linkName", getLinkName())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/file/mapper/TFileMapper.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.file.mapper;
+
+import com.ruoyi.project.file.domain.TFile;
+
+import java.util.List;
+
+/**
+ * 附件Mapper接口
+ * 
+ * @author jiang
+ * @date 2023-10-16
+ */
+public interface TFileMapper 
+{
+    /**
+     * 查询附件
+     * 
+     * @param id 附件主键
+     * @return 附件
+     */
+    public TFile selectTFileById(Long id);
+
+    /**
+     * 查询附件列表
+     * 
+     * @param tFile 附件
+     * @return 附件集合
+     */
+    public List<TFile> selectTFileList(TFile tFile);
+
+    /**
+     * 新增附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    public int insertTFile(TFile tFile);
+
+    /**
+     * 修改附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    public int updateTFile(TFile tFile);
+
+    /**
+     * 删除附件
+     * 
+     * @param id 附件主键
+     * @return 结果
+     */
+    public int deleteTFileById(Long id);
+
+    /**
+     * 批量删除附件
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTFileByIds(Long[] ids);
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/file/service/ITFileService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.file.service;
+
+import com.ruoyi.project.file.domain.TFile;
+
+import java.util.List;
+
+/**
+ * 附件Service接口
+ * 
+ * @author jiang
+ * @date 2023-10-16
+ */
+public interface ITFileService 
+{
+    /**
+     * 查询附件
+     * 
+     * @param id 附件主键
+     * @return 附件
+     */
+    public TFile selectTFileById(Long id);
+
+    /**
+     * 查询附件列表
+     * 
+     * @param tFile 附件
+     * @return 附件集合
+     */
+    public List<TFile> selectTFileList(TFile tFile);
+
+    /**
+     * 新增附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    public int insertTFile(TFile tFile);
+
+    /**
+     * 修改附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    public int updateTFile(TFile tFile);
+
+    /**
+     * 批量删除附件
+     * 
+     * @param ids 需要删除的附件主键集合
+     * @return 结果
+     */
+    public int deleteTFileByIds(Long[] ids);
+
+    /**
+     * 删除附件信息
+     * 
+     * @param id 附件主键
+     * @return 结果
+     */
+    public int deleteTFileById(Long id);
+}

+ 94 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/file/service/impl/TFileServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.project.file.service.impl;
+
+import com.ruoyi.project.file.domain.TFile;
+import com.ruoyi.project.file.mapper.TFileMapper;
+import com.ruoyi.project.file.service.ITFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 附件Service业务层处理
+ * 
+ * @author jiang
+ * @date 2023-10-16
+ */
+@Service
+public class TFileServiceImpl implements ITFileService 
+{
+    @Autowired
+    private TFileMapper tFileMapper;
+
+    /**
+     * 查询附件
+     * 
+     * @param id 附件主键
+     * @return 附件
+     */
+    @Override
+    public TFile selectTFileById(Long id)
+    {
+        return tFileMapper.selectTFileById(id);
+    }
+
+    /**
+     * 查询附件列表
+     * 
+     * @param tFile 附件
+     * @return 附件
+     */
+    @Override
+    public List<TFile> selectTFileList(TFile tFile)
+    {
+        return tFileMapper.selectTFileList(tFile);
+    }
+
+    /**
+     * 新增附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    @Override
+    public int insertTFile(TFile tFile)
+    {
+        return tFileMapper.insertTFile(tFile);
+    }
+
+    /**
+     * 修改附件
+     * 
+     * @param tFile 附件
+     * @return 结果
+     */
+    @Override
+    public int updateTFile(TFile tFile)
+    {
+        return tFileMapper.updateTFile(tFile);
+    }
+
+    /**
+     * 批量删除附件
+     * 
+     * @param ids 需要删除的附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTFileByIds(Long[] ids)
+    {
+        return tFileMapper.deleteTFileByIds(ids);
+    }
+
+    /**
+     * 删除附件信息
+     * 
+     * @param id 附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTFileById(Long id)
+    {
+        return tFileMapper.deleteTFileById(id);
+    }
+}

+ 550 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrController.java

@@ -0,0 +1,550 @@
+package com.ruoyi.project.plant.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.common.DataEntity;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+import com.ruoyi.project.plant.domain.TStaffmgrRecord;
+import com.ruoyi.project.plant.mapper.TStaffmgrMapper;
+import com.ruoyi.project.plant.service.ITStaffmgrRecordService;
+import com.ruoyi.project.plant.service.ITStaffmgrService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.system.service.ISysUserService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 人员管理Controller
+ *
+ * @author ruoyi
+ * @date 2020-11-25
+ */
+@RestController
+@RequestMapping("/plant/staffmgr")
+public class TStaffmgrController extends BaseController
+{
+    @Autowired
+    private ITStaffmgrService tStaffmgrService;
+
+    @Autowired
+    private ISysDeptService iSysDeptService;
+
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    @Resource
+    private TStaffmgrMapper tStaffmgrMapper;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+
+    @Autowired
+    private ITStaffmgrRecordService tStaffmgrRecordService;
+
+
+    /**
+     * 获取当前用户id
+     * @return 当前用户id
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:query')")
+    @GetMapping("/getStaffId")
+    public AjaxResult getStaffId()
+    {
+        Long userId = getUserId();
+        SysUser sysUser = sysUserService.selectUserById(userId);
+        String staffId = sysUser.getStaffId();
+        return AjaxResult.success("操作成功", staffId);
+    }
+
+    /**
+     * 判断当前用户是否为导师
+     * @return 是否为导师
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:query')")
+    @GetMapping("/isMentor")
+    public AjaxResult isMentor()
+    {
+        // 是否为导师
+        boolean isMentor = false;
+        ServletUtils.getParameter("sexs");
+        // 导师清单
+        List<TStaffmgr> tStaffmgrs = tStaffmgrService.selectMentorList(null);
+        Long userId = getUserId();
+        SysUser sysUser = sysUserService.selectUserById(userId);
+        // 当前用户id
+        String staffId = sysUser.getStaffId();
+        for (TStaffmgr staffmgr : tStaffmgrs) {
+            // 导师id=当前用户id
+            if (staffmgr.getStaffid().equals(staffId)) {
+                isMentor = true;
+            }
+        }
+        return AjaxResult.success("操作成功", isMentor);
+    }
+
+    /**
+     * 查询导师下拉列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/listMentors")
+    public AjaxResult listMentors(TStaffmgr tStaffmgr)
+    {
+        ServletUtils.getParameter("sexs");
+        return AjaxResult.success(tStaffmgrService.selectMentorList(tStaffmgr));
+    }
+
+    /**
+     * 查询人员管理列表--包含离职人员
+     */
+    @GetMapping("/listAll")
+    public TableDataInfo listAll(TStaffmgr tStaffmgr)
+    {
+        ServletUtils.getParameter("sexs");
+        startPage();
+        logger.info("staffmgr:" + tStaffmgr);
+        List<TStaffmgr> list = tStaffmgrMapper.selectTStaffmgrListAll(tStaffmgr);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询人员管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TStaffmgr tStaffmgr)
+    {
+        ServletUtils.getParameter("sexs");
+        startPage();
+        logger.info("staffmgr:" + tStaffmgr);
+        List<TStaffmgr> list = tStaffmgrService.selectTStaffmgrList(tStaffmgr);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询人员公司级培训时间列表
+     */
+   /* @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/selectTime")
+    public TableDataInfo selectTime(TStaffmgr tStaffmgr)
+    {
+        ServletUtils.getParameter("sexs");
+        startPage();
+        List<TStaffmgr> list = tStaffmgrService.selectRecordList(tStaffmgr);
+        List<TTrainingParticipants> tTrainingParticipants = tTrainingParticipantsService.selectTTrainingParticipantsList(new TTrainingParticipants());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        for (int i = 0; i < list.size(); i++) {
+            double time = 0;
+            for (TTrainingParticipants t : tTrainingParticipants) {
+                if (t.getStaffId().equals(list.get(i).getStaffid())) {
+                    if (t.getStartDate() != null) {
+                        if (sdf.format(t.getStartDate()).equals(sdf.format(new Date()))) {
+                            if (t.getTrainingDuration() != null) {
+                                time = time + Double.parseDouble(t.getTrainingDuration());
+                            }
+                        }
+                    }
+                }
+            }
+            list.get(i).setTrainingTime(String.valueOf(time));
+        }
+        return getDataTable(list);
+    }*/
+
+    /**
+     * 查询人员管理列表
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/ogzList")
+    public List<TStaffmgr> ogzList(TStaffmgr tStaffmgr)
+    {
+        List<TStaffmgr> list = tStaffmgrService.selectTStaffmgrList(tStaffmgr);
+        return list;
+    }
+
+    /**
+     * 上级领导字段查询人员管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/pIdList")
+    public AjaxResult pIdList(TStaffmgr tStaffmgr)
+    {
+        List<TStaffmgr> list = tStaffmgrService.selectTStaffmgrList(tStaffmgr);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 查询离职人员管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:list')")
+    @GetMapping("/leftList")
+    public List<TStaffmgr> leftList(TStaffmgr tStaffmgr)
+    {
+        List<TStaffmgr> list = tStaffmgrService.selectLeftTStaffmgrList(tStaffmgr);
+        return list;
+    }
+
+    //学历统计
+    @GetMapping("/eduData")
+    public List<DataEntity> eduData(Map param)
+    {
+        param.put("params" , new HashMap<>());
+        Map<String,Object> data = new HashMap();
+        List<DataEntity> list = tStaffmgrMapper.selectEduData(param);
+        List<SysDictData> education = iSysDictTypeService.selectDictDataByType("EDUCATION");
+        for (DataEntity d: list
+             ) {
+            for (SysDictData s: education
+                 ) {
+                if (StringUtils.isBlank(d.getDataName())){
+                    d.setDataName("未知");
+                    break;
+                }
+                if (s.getDictValue().equals(d.getDataName())){
+                    d.setDataName(s.getDictLabel());
+                    break;
+                }
+            }
+        }
+        return list;
+    }
+
+    //英语统计
+    @GetMapping("/engData")
+    public List<DataEntity> engData(Map param)
+    {
+        param.put("params" , new HashMap<>());
+        List<DataEntity> list = tStaffmgrMapper.selectEngData(param);
+        List<SysDictData> englishability = iSysDictTypeService.selectDictDataByType("ENGLISHABILITY");
+        for (DataEntity d: list
+        ) {
+            for (SysDictData s: englishability
+            ) {
+                if (StringUtils.isBlank(d.getDataName())){
+                    d.setDataName("未知");
+                    break;
+                }
+                if (s.getDictValue().equals(d.getDataName())){
+                    d.setDataName(s.getDictLabel());
+                    break;
+                }
+            }
+        }
+        return list;
+    }
+
+    //班值统计
+    @GetMapping("/teamData")
+    public List<DataEntity> teamData(Map param)
+    {
+        param.put("params" , new HashMap<>());
+        List<DataEntity> list = tStaffmgrMapper.selectTeamData(param);
+        List<SysDictData> englishability = iSysDictTypeService.selectDictDataByType("TEAM_DIVIDE");
+        for (DataEntity d: list
+        ) {
+            for (SysDictData s: englishability
+            ) {
+                if (StringUtils.isBlank(d.getDataName())){
+                    d.setDataName("未知");
+                    break;
+                }
+                if (s.getDictValue().equals(d.getDataName())){
+                    d.setDataName(s.getDictLabel());
+                    break;
+                }
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 导出人员管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:export')")
+    @Log(title = "人员管理", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TStaffmgr tStaffmgr)
+    {
+        List<TStaffmgr> list = tStaffmgrService.selectTStaffmgrList(tStaffmgr);
+        ExcelUtil<TStaffmgr> util = new ExcelUtil<TStaffmgr>(TStaffmgr.class);
+        return util.exportExcel(list, "staffmgr");
+    }
+
+    /**
+     * 获取人员管理详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        TStaffmgr staffmgr = tStaffmgrService.selectTStaffmgrById(id);
+        return AjaxResult.success(staffmgr);
+    }
+
+    /**
+     * 为参培人员名单获取人员管理详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:query')")
+    @GetMapping("/byStaffId/{staffIds}")
+    public AjaxResult byStaffId(@PathVariable String[] staffIds)
+    {
+        List<TStaffmgr> staffmgrs = new ArrayList<TStaffmgr>();
+        for (int i = 0; i <staffIds.length ; i++) {
+            TStaffmgr staffmgr = tStaffmgrService.selectTStaffmgrByStaffId(staffIds[i]);
+            staffmgrs.add(staffmgr);
+        }
+        return AjaxResult.success(staffmgrs);
+    }
+
+    /**
+     * 新增人员管理
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:add')")
+    @Log(title = "人员管理", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TStaffmgr tStaffmgr)
+    {
+        tStaffmgr.setCreaterCode(getUserId().toString());
+        int i = tStaffmgrService.insertTStaffmgr(tStaffmgr);
+
+        TStaffmgrRecord record = new TStaffmgrRecord();
+        record.setStaffmgrId(tStaffmgr.getId());
+        record.setType("入职");
+        record.setContent("入职");
+        record.setRemarks("入职");
+        record.setActionDate(new Date());
+        record.setCreatedate(new Date());
+        record.setCreaterCode(getUserId().toString());
+        tStaffmgrRecordService.insertTStaffmgrRecord(record);
+        return toAjax(i);
+    }
+
+    /**
+     * 修改人员管理
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:edit')")
+    @Log(title = "人员管理", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TStaffmgr tStaffmgr)
+    {
+        tStaffmgr.setPhoto(null);
+        tStaffmgr.setUpdaterCode(getUserId().toString());
+        tStaffmgr.setUpdatedate(new Date());
+        return toAjax(tStaffmgrService.updateTStaffmgr(tStaffmgr));
+    }
+
+    /**
+     * 删除人员管理
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:remove')")
+    @Log(title = "人员管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tStaffmgrService.deleteTStaffmgrByIds(ids));
+    }
+
+    /**
+     * 删除离职人员
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:remove')")
+    @Log(title = "人员管理", businessType = BusinessType.DELETE)
+    @GetMapping("/left/{id}")
+    public AjaxResult removeLeft(@PathVariable Long id)
+    {
+        return toAjax(tStaffmgrService.deleteLeftTStaffmgrByIds(id));
+    }
+
+    /**
+     * 复职离职人员
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:remove')")
+    @Log(title = "人员管理", businessType = BusinessType.DELETE)
+    @GetMapping("/reLeft/{id}")
+    public AjaxResult reLeft(@PathVariable Long id)
+    {
+        TStaffmgrRecord record = new TStaffmgrRecord();
+        record.setStaffmgrId(id);
+        record.setType("复职");
+        record.setContent("复职");
+        record.setRemarks("复职");
+        record.setActionDate(new Date());
+        record.setCreatedate(new Date());
+        record.setCreaterCode(getUserId().toString());
+        tStaffmgrRecordService.insertTStaffmgrRecord(record);
+        return toAjax(tStaffmgrService.reLeftTStaffmgrByIds(id));
+    }
+
+    /**
+     * 批量导入人员管理
+     */
+    @PreAuthorize("@ss.hasPermi('plant:staffmgr:add')")
+    @Log(title = "人员管理", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException
+    {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow =new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TStaffmgr> list = new ArrayList<TStaffmgr>();
+        //字典查询
+        List<SysDictData> plant = iSysDictTypeService.selectDictDataByType("plant_divide");
+        List<SysDictData> sex = iSysDictTypeService.selectDictDataByType("sys_user_sex");
+        List<SysDictData> staff = iSysDictTypeService.selectDictDataByType("staff_unit");
+        List<SysDictData> team = iSysDictTypeService.selectDictDataByType("team_divide");
+        List<SysDictData> actualpost = iSysDictTypeService.selectDictDataByType("actualpost");
+        List<SysDictData> education = iSysDictTypeService.selectDictDataByType("education");
+        List<SysDictData> enAbility = iSysDictTypeService.selectDictDataByType("englishability");
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getPhysicalNumberOfCells();
+                TStaffmgr entity = new TStaffmgr();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        for (SysDictData p : plant) {
+                            if (p.getDictLabel().equals(cellValue)) {
+                                entity.setPlantCode(p.getDictValue());//装置名称
+                            }
+                        }
+                    } else if (j == 1) {
+                        entity.setStaffid(cellValue);//员工编号
+                    } else if (j == 2) {
+                        entity.setName(cellValue);//员工姓名
+                    } else if (j == 3) {
+                        for (SysDictData p : sex) {
+                            if (p.getDictLabel().equals(cellValue)) {
+                                entity.setSex(p.getDictValue());//性别
+
+                            }
+                        }
+                    }else if (j == 4) {
+                        for (SysDictData p : staff) {
+                            if (p.getDictLabel().equals(cellValue)) {
+                                entity.setUnit(p.getDictValue());//部门
+                            }
+                        }
+                    } else if (j == 5) {
+                        for (SysDictData p : team) {
+                            if (p.getDictLabel().equals(cellValue.trim())) {
+                                entity.setTeam(p.getDictValue());//班值
+                            }
+                        }
+                    } else if (j == 6) {
+                        for (SysDictData p : actualpost) {
+                            if (p.getDictLabel().equals(cellValue)) {
+                                entity.setActualpost(p.getDictValue());//实际岗位
+                            }
+                        }
+                    } else if (j == 7) {
+                        entity.setContact(cellValue);//联系方式
+                    } else if (j == 8) {
+                        for (SysDictData p : education) {
+                            if (p.getDictLabel().equals(cellValue)) {
+                                entity.setEducation(p.getDictValue());//学历
+                            }
+                        }
+                    }  else if (j == 9) {
+                        entity.setMail(cellValue);//邮箱
+                    } else if (j == 10) {
+                        for (SysDept d : dept) {
+                            if (d.getDeptName().equals(cellValue)) {
+                                entity.setDeptId(d.getDeptId());//部门编号
+                            }
+                        }
+                    }  else if (j == 11) {
+                        if (cellValue.length() > 3) {
+                            String birthday = cellValue.substring(6, 10)+"-"+cellValue.substring(10,12)+"-"+cellValue.substring(12,14);
+                            entity.setBirthday(new SimpleDateFormat(DateUtils.getDateFormat(birthday)).parse(birthday));//出生日期
+                        }
+                        entity.setIdCard(cellValue);//身份证号
+                    }   else if (j == 12) {
+                        entity.setAddress(cellValue);//地址
+                    }   else if (j == 13) {
+                        entity.setSpeciality(cellValue);//专业
+                    }  else if (j == 14) {
+                        entity.setRemarks(cellValue);//备注
+                    }
+                }
+                entity.setCreaterCode(userId.toString());
+                logger.info("entity:" + entity);
+                list.add(entity);
+            }catch (Exception e){
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TStaffmgr t : list
+        ) {
+            failNum++;
+            try {
+                add(t);
+                successNumber++;
+            }catch (Exception e){
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" +String.valueOf(successNumber));
+        logger.info("failNumber:" +String.valueOf(failNumber));
+        logger.info("failRow:" +String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+
+    /**
+     * 证件照上传
+     */
+    @PostMapping("/uploadPhoto")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file,String pType,String pId) throws IOException
+    {
+        if (!file.isEmpty())
+        {
+            String url = FileUploadUtils.upload(RuoYiConfig.getFilePath("/"+ pType), file);
+            TStaffmgr staffmgr = tStaffmgrService.selectTStaffmgrById(Long.parseLong(pId));
+            staffmgr.setPhoto(url);
+            tStaffmgrService.updateTStaffmgr(staffmgr);
+            return AjaxResult.success();
+        }
+        return AjaxResult.error("上传失败,请联系管理员");
+    }
+}

+ 124 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrRecordController.java

@@ -0,0 +1,124 @@
+package com.ruoyi.project.plant.controller;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+import com.ruoyi.project.plant.domain.TStaffmgrRecord;
+import com.ruoyi.project.plant.service.ITStaffmgrRecordService;
+import com.ruoyi.project.plant.service.ITStaffmgrService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 人员操作记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-07-27
+ */
+@RestController
+@RequestMapping("/plant/record")
+public class TStaffmgrRecordController extends BaseController {
+    @Autowired
+    private ITStaffmgrRecordService tStaffmgrRecordService;
+    @Autowired
+    private ITStaffmgrService tStaffmgrService;
+
+    /**
+     * 查询人员操作记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:list')")
+    @GetMapping("/list")
+    public AjaxResult list(TStaffmgrRecord tStaffmgrRecord) {
+        return AjaxResult.success(tStaffmgrRecordService.selectTStaffmgrRecordList(tStaffmgrRecord));
+    }
+
+
+    /**
+     * 导出人员操作记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:export')")
+    @Log(title = "人员操作记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TStaffmgrRecord tStaffmgrRecord) {
+        List<TStaffmgrRecord> list = tStaffmgrRecordService.selectTStaffmgrRecordList(tStaffmgrRecord);
+        ExcelUtil<TStaffmgrRecord> util = new ExcelUtil<TStaffmgrRecord>(TStaffmgrRecord.class);
+        util.exportExcel(list, "人员操作记录数据");
+    }
+
+    /**
+     * 获取人员操作记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:query')")
+    @GetMapping(value = "/{recordId}")
+    public AjaxResult getInfo(@PathVariable("recordId") Long recordId) {
+        return AjaxResult.success(tStaffmgrRecordService.selectTStaffmgrRecordByRecordId(recordId));
+    }
+
+    /**
+     * 新增人员操作记录
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:add')")
+    @Log(title = "人员操作记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TStaffmgrRecord tStaffmgrRecord) {
+        if ("调班".equals(tStaffmgrRecord.getType())) {
+            TStaffmgr tStaffmgr = new TStaffmgr();
+            tStaffmgr.setId(tStaffmgrRecord.getStaffmgrId());
+            tStaffmgr.setTeam(tStaffmgrRecord.getChange());
+            tStaffmgr.setUpdatedate(new Date());
+            tStaffmgr.setUpdaterCode(getUserId().toString());
+            tStaffmgrService.updateTStaffmgr(tStaffmgr);
+        }else if ("调岗".equals(tStaffmgrRecord.getType())) {
+            TStaffmgr tStaffmgr = new TStaffmgr();
+            tStaffmgr.setId(tStaffmgrRecord.getStaffmgrId());
+            tStaffmgr.setActualpost(tStaffmgrRecord.getChange());
+            tStaffmgr.setUpdatedate(new Date());
+            tStaffmgr.setUpdaterCode(getUserId().toString());
+            tStaffmgrService.updateTStaffmgr(tStaffmgr);
+        }
+        return toAjax(tStaffmgrRecordService.insertTStaffmgrRecord(tStaffmgrRecord));
+    }
+
+    /**
+     * 修改人员操作记录
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:edit')")
+    @Log(title = "人员操作记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TStaffmgrRecord tStaffmgrRecord) {
+        if ("调班".equals(tStaffmgrRecord.getType())) {
+            TStaffmgr tStaffmgr = new TStaffmgr();
+            tStaffmgr.setId(tStaffmgrRecord.getStaffmgrId());
+            tStaffmgr.setTeam(tStaffmgrRecord.getChange());
+            tStaffmgr.setUpdatedate(new Date());
+            tStaffmgr.setUpdaterCode(getUserId().toString());
+            tStaffmgrService.updateTStaffmgr(tStaffmgr);
+        }else if ("调岗".equals(tStaffmgrRecord.getType())) {
+            TStaffmgr tStaffmgr = new TStaffmgr();
+            tStaffmgr.setId(tStaffmgrRecord.getStaffmgrId());
+            tStaffmgr.setActualpost(tStaffmgrRecord.getChange());
+            tStaffmgr.setUpdatedate(new Date());
+            tStaffmgr.setUpdaterCode(getUserId().toString());
+            tStaffmgrService.updateTStaffmgr(tStaffmgr);
+        }
+        return toAjax(tStaffmgrRecordService.updateTStaffmgrRecord(tStaffmgrRecord));
+    }
+
+    /**
+     * 删除人员操作记录
+     */
+    @PreAuthorize("@ss.hasPermi('plant:record:remove')")
+    @Log(title = "人员操作记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{recordIds}")
+    public AjaxResult remove(@PathVariable Long[] recordIds) {
+        return toAjax(tStaffmgrRecordService.deleteTStaffmgrRecordByRecordIds(recordIds));
+    }
+}

+ 453 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/domain/TStaffmgr.java

@@ -0,0 +1,453 @@
+package com.ruoyi.project.plant.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 人员管理对象 t_staffmgr
+ *
+ * @author ruoyi
+ * @date 2020-11-25
+ */
+public class TStaffmgr extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称", dictType = "PLANT_DIVIDE")
+    private String plantCode;
+
+    /** 员工编号 */
+    @Excel(name = "员工编号")
+    private String staffid;
+
+    /** 员工姓名 */
+    @Excel(name = "员工姓名")
+    private String name;
+
+    /** 性别 */
+    @Excel(name = "性别", dictType = "sys_user_sex")
+    private String sex;
+
+    /** 出生日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date birthday;
+
+    /** 部门 */
+    @Excel(name = "部门", dictType = "STAFF_UNIT")
+    private String unit;
+    private String units;
+    /** 班值 */
+    @Excel(name = "班值", dictType = "TEAM_DIVIDE")
+    private String team;
+    private String teams;
+    /** 实际岗位 */
+    @Excel(name = "实际岗位", dictType = "ACTUALPOST")
+    private String actualpost;
+    private String actualposts;
+    /** 联系方式 */
+    @Excel(name = "联系方式")
+    private String contact;
+
+    /** 学历 */
+    @Excel(name = "学历", dictType = "EDUCATION")
+    private String education;
+
+    /** 学历 */
+    private String educations;
+
+    /** 英语能力 */
+    @Excel(name = "英语能力", dictType = "ENGLISHABILITY")
+    private String enAbility;
+    private String enAbilitys;
+    /** 隐患查找数量 */
+    @Excel(name = "隐患查找数量")
+    private Long accidentNum;
+
+    /** 邮箱 */
+    @Excel(name = "邮箱")
+    private String mail;
+
+    /** 技能评估得分 */
+    @Excel(name = "技能评估得分")
+    private String skillScore;
+
+    /** 状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 部门名称 */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 岗位人员技能培训数据 */
+    private String skillevaluation;
+
+    /** 是否有邮箱 */
+    private Long haveEmail;
+
+    /** 培训时长 */
+    private String trainingTime;
+
+    /** 证件照地址 */
+    private String photo;
+
+    /** 父级领导ID */
+    private Long pId;
+
+    /** 特殊职能 */
+    private String specialDuty;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 专业
+     */
+    private String speciality;
+
+
+    /** 离职日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date leftDate;
+
+    public String getIdCard() {
+        return idCard;
+    }
+
+    public void setIdCard(String idCard) {
+        this.idCard = idCard;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getSpeciality() {
+        return speciality;
+    }
+
+    public void setSpeciality(String speciality) {
+        this.speciality = speciality;
+    }
+
+    public Date getLeftDate() {
+        return leftDate;
+    }
+
+    public void setLeftDate(Date leftDate) {
+        this.leftDate = leftDate;
+    }
+
+    public String getEducations() {
+        return educations;
+    }
+
+    public void setEducations(String educations) {
+        this.educations = educations;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setStaffid(String staffid)
+    {
+        this.staffid = staffid;
+    }
+
+    public String getStaffid()
+    {
+        return staffid;
+    }
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getEducation() { return education; }
+    public void setEducation(String education) { this.education = education; }
+
+    public String getEnAbility() { return enAbility; }
+    public void setEnAbility(String enAbility) { this.enAbility = enAbility; }
+
+    public Long getAccidentNum() { return accidentNum; }
+    public void setAccidentNum(Long accidentNum) { this.accidentNum = accidentNum; }
+
+    public String getName()
+    {
+        return name;
+    }
+    public void setSex(String sex)
+    {
+        this.sex = sex;
+    }
+
+    public String getSex()
+    {
+        return sex;
+    }
+    public void setBirthday(Date birthday)
+    {
+        this.birthday = birthday;
+    }
+
+    public Date getBirthday()
+    {
+        return birthday;
+    }
+    public void setUnit(String unit)
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit()
+    {
+        return unit;
+    }
+    public void setTeam(String team)
+    {
+        this.team = team;
+    }
+
+    public String getTeam()
+    {
+        return team;
+    }
+    public void setActualpost(String actualpost)
+    {
+        this.actualpost = actualpost;
+    }
+
+    public String getActualpost()
+    {
+        return actualpost;
+    }
+    public void setContact(String contact)
+    {
+        this.contact = contact;
+    }
+
+    public String getContact()
+    {
+        return contact;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptName(String deptName)
+    {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName()
+    {
+        return deptName;
+    }
+    public void setMail(String mail) { this.mail = mail; }
+
+    public String getMail() { return mail; }
+    public void setSkillScore(String skillScore) { this.skillScore = skillScore; }
+
+    public String getSkillScore() { return skillScore; }
+    public void setHaveEmail(Long haveEmail) { this.haveEmail = haveEmail; }
+
+    public Long getHaveEmail() { return haveEmail; }
+
+    public String getUnits() {
+        return units;
+    }
+
+    public void setUnits(String units) {
+        this.units = units;
+    }
+
+    public String getTeams() {
+        return teams;
+    }
+
+    public void setTeams(String teams) {
+        this.teams = teams;
+    }
+
+    public String getActualposts() {
+        return actualposts;
+    }
+
+    public void setActualposts(String actualposts) {
+        this.actualposts = actualposts;
+    }
+
+    public String getEnAbilitys() {
+        return enAbilitys;
+    }
+
+    public void setEnAbilitys(String enAbilitys) {
+        this.enAbilitys = enAbilitys;
+    }
+    public String getSkillevaluation() {
+        return skillevaluation;
+    }
+
+    public void setSkillevaluation(String skillevaluation) {
+        this.skillevaluation = skillevaluation;
+    }
+    public String getTrainingTime() { return trainingTime; }
+
+    public void setTrainingTime(String trainingTime) { this.trainingTime = trainingTime; }
+    public String getPhoto() { return photo; }
+
+    public void setPhoto(String photo) { this.photo = photo; }
+    public void setpId(Long pId) { this.pId = pId; }
+
+    public Long getpId() { return pId; }
+    public void setSpecialDuty(String specialDuty) { this.specialDuty = specialDuty; }
+
+    public String getSpecialDuty() { return specialDuty; }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("plantCode", getPlantCode())
+                .append("staffid", getStaffid())
+                .append("name", getName())
+                .append("sex", getSex())
+                .append("birthday", getBirthday())
+                .append("unit", getUnit())
+                .append("units", getUnits())
+                .append("team", getTeam())
+                .append("actualpost", getActualpost())
+                .append("actualposts", getActualposts())
+                .append("contact", getContact())
+                .append("education", getEducation())
+                .append("enAbility", getEnAbility())
+                .append("mail", getMail())
+                .append("skillScore", getSkillScore())
+                .append("accidentNum", getAccidentNum())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .append("remarks", getRemarks())
+                .append("deptName", getDeptName())
+                .append("haveEmail", getHaveEmail())
+                .append("trainingTime", getTrainingTime())
+                .append("photo", getPhoto())
+                .toString();
+    }
+}

+ 206 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/domain/TStaffmgrRecord.java

@@ -0,0 +1,206 @@
+package com.ruoyi.project.plant.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 人员操作记录对象 t_staffmgr_record
+ *
+ * @author ruoyi
+ * @date 2023-07-27
+ */
+public class TStaffmgrRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long recordId;
+
+    /** 员工表id */
+    @Excel(name = "员工表id")
+    private Long staffmgrId;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date actionDate;
+
+    /** 操作内容 */
+    @Excel(name = "操作内容")
+    private String content;
+
+    private String change;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    @Excel(name = "更新人")
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public String getChange() {
+        return change;
+    }
+
+    public void setChange(String change) {
+        this.change = change;
+    }
+
+    public void setRecordId(Long recordId)
+    {
+        this.recordId = recordId;
+    }
+
+    public Long getRecordId()
+    {
+        return recordId;
+    }
+    public void setStaffmgrId(Long staffmgrId)
+    {
+        this.staffmgrId = staffmgrId;
+    }
+
+    public Long getStaffmgrId()
+    {
+        return staffmgrId;
+    }
+    public void setType(String type)
+    {
+        this.type = type;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+    public void setActionDate(Date actionDate)
+    {
+        this.actionDate = actionDate;
+    }
+
+    public Date getActionDate()
+    {
+        return actionDate;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("recordId", getRecordId())
+            .append("staffmgrId", getStaffmgrId())
+            .append("type", getType())
+            .append("actionDate", getActionDate())
+            .append("content", getContent())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 130 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/mapper/TStaffmgrMapper.java

@@ -0,0 +1,130 @@
+package com.ruoyi.project.plant.mapper;
+
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.project.common.DataEntity;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人员管理Mapper接口
+ *
+ * @author ruoyi
+ * @date 2020-11-25
+ */
+public interface TStaffmgrMapper
+{
+    /**
+     * 查询导师下拉列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    public List<TStaffmgr> selectMentorList(TStaffmgr tStaffmgr);
+
+    /**
+     * 查询人员管理
+     *
+     * @param staffid 人员管理员工编号
+     * @return 人员管理
+     */
+    public TStaffmgr selectTStaffmgrByStaffId(String staffid);
+
+    /**
+     * 查询人员管理
+     *
+     * @param id 人员管理ID
+     * @return 人员管理
+     */
+    public TStaffmgr selectTStaffmgrById(Long id);
+
+    /**
+     * 查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TStaffmgr> selectTStaffmgrList(TStaffmgr tStaffmgr);
+
+    /**
+     * 查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    public List<TStaffmgr> selectTStaffmgrListAll(TStaffmgr tStaffmgr);
+
+    /**
+     * 定时任务查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TStaffmgr> selectList(TStaffmgr tStaffmgr);
+
+    List<TStaffmgr> selectTaskList(TStaffmgr tStaffmgr);
+    /**
+     * 培训查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TStaffmgr> selectRecordList(TStaffmgr tStaffmgr);
+
+    /**
+     * 新增人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    public int insertTStaffmgr(TStaffmgr tStaffmgr);
+
+    /**
+     * 修改人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    public int updateTStaffmgr(TStaffmgr tStaffmgr);
+
+    /**
+     * 删除人员管理
+     *
+     * @param id 人员管理ID
+     * @return 结果
+     */
+    public int deleteTStaffmgrById(Long id);
+    public int deleteLeftTStaffmgrByIds(Long ids);
+    /**
+     * 批量删除人员管理
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTStaffmgrByIds(Long[] ids);
+
+    @DataScope(deptAlias = "d")
+    List<DataEntity> selectEduData(Map param);
+
+    List<DataEntity> selectEngData(Map param);
+
+    List<DataEntity> selectTeamData(Map param);
+
+    List<TStaffmgr> selectLeftTStaffmgrList(TStaffmgr tStaffmgr);
+
+
+    int reLeftTStaffmgrByIds(Long id);
+
+
+    List<TStaffmgr> selectTStaffmgrByPost(SysUser sysUser);
+
+    List<TStaffmgr> selectStaffByTeam(TStaffmgr tStaffmgr);
+
+    List<TStaffmgr> selectTMentorStaffmgrByPost(SysUser sysUser);
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/mapper/TStaffmgrRecordMapper.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.plant.mapper;
+
+import com.ruoyi.project.plant.domain.TStaffmgrRecord;
+
+import java.util.List;
+
+/**
+ * 人员操作记录Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-07-27
+ */
+public interface TStaffmgrRecordMapper 
+{
+    /**
+     * 查询人员操作记录
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 人员操作记录
+     */
+    public TStaffmgrRecord selectTStaffmgrRecordByRecordId(Long recordId);
+
+    /**
+     * 查询人员操作记录列表
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 人员操作记录集合
+     */
+    public List<TStaffmgrRecord> selectTStaffmgrRecordList(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 新增人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    public int insertTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 修改人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    public int updateTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 删除人员操作记录
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 结果
+     */
+    public int deleteTStaffmgrRecordByRecordId(Long recordId);
+
+    /**
+     * 批量删除人员操作记录
+     * 
+     * @param recordIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTStaffmgrRecordByRecordIds(Long[] recordIds);
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/ITStaffmgrRecordService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.plant.service;
+
+import com.ruoyi.project.plant.domain.TStaffmgrRecord;
+
+import java.util.List;
+
+/**
+ * 人员操作记录Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-07-27
+ */
+public interface ITStaffmgrRecordService 
+{
+    /**
+     * 查询人员操作记录
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 人员操作记录
+     */
+    public TStaffmgrRecord selectTStaffmgrRecordByRecordId(Long recordId);
+
+    /**
+     * 查询人员操作记录列表
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 人员操作记录集合
+     */
+    public List<TStaffmgrRecord> selectTStaffmgrRecordList(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 新增人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    public int insertTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 修改人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    public int updateTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord);
+
+    /**
+     * 批量删除人员操作记录
+     * 
+     * @param recordIds 需要删除的人员操作记录主键集合
+     * @return 结果
+     */
+    public int deleteTStaffmgrRecordByRecordIds(Long[] recordIds);
+
+    /**
+     * 删除人员操作记录信息
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 结果
+     */
+    public int deleteTStaffmgrRecordByRecordId(Long recordId);
+}

+ 110 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/ITStaffmgrService.java

@@ -0,0 +1,110 @@
+package com.ruoyi.project.plant.service;
+
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+
+import java.util.List;
+
+/**
+ * 人员管理Service接口
+ *
+ * @author ruoyi
+ * @date 2020-11-25
+ */
+public interface ITStaffmgrService
+{
+    /**
+     * 查询导师下拉列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TStaffmgr> selectMentorList(TStaffmgr tStaffmgr);
+
+    /**
+     * 查询人员管理
+     *
+     * @param staffid 人员管理员工编号
+     * @return 人员管理
+     */
+    public TStaffmgr selectTStaffmgrByStaffId(String staffid);
+
+    /**
+     * 查询人员管理
+     *
+     * @param id 人员管理ID
+     * @return 人员管理
+     */
+    public TStaffmgr selectTStaffmgrById(Long id);
+
+    /**
+     * 查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    public List<TStaffmgr> selectTStaffmgrList(TStaffmgr tStaffmgr);
+
+    /**
+     * 定时任务查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    public List<TStaffmgr> selectList(TStaffmgr tStaffmgr);
+
+    List<TStaffmgr> selectTaskList(TStaffmgr tStaffmgr);
+    /**
+     * 培训查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    public List<TStaffmgr> selectRecordList(TStaffmgr tStaffmgr);
+
+    /**
+     * 新增人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    public int insertTStaffmgr(TStaffmgr tStaffmgr);
+
+    /**
+     * 修改人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    public int updateTStaffmgr(TStaffmgr tStaffmgr);
+
+    /**
+     * 批量删除人员管理
+     *
+     * @param ids 需要删除的人员管理ID
+     * @return 结果
+     */
+    public int deleteTStaffmgrByIds(Long[] ids);
+
+    /**
+     * 删除人员管理信息
+     *
+     * @param id 人员管理ID
+     * @return 结果
+     */
+    public int deleteTStaffmgrById(Long id);
+    public int deleteLeftTStaffmgrByIds(Long ids);
+    List<TStaffmgr> selectLeftTStaffmgrList(TStaffmgr tStaffmgr);
+
+
+    int reLeftTStaffmgrByIds(Long id);
+
+
+    List<TStaffmgr> selectTStaffmgrByPost(SysUser sysUser);
+    List<TStaffmgr> selectStaffByTeam(TStaffmgr tStaffmgr);
+
+    List<TStaffmgr> selectTMentorStaffmgrByPost(SysUser sysUser);
+}

+ 94 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/impl/TStaffmgrRecordServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.project.plant.service.impl;
+
+import com.ruoyi.project.plant.domain.TStaffmgrRecord;
+import com.ruoyi.project.plant.mapper.TStaffmgrRecordMapper;
+import com.ruoyi.project.plant.service.ITStaffmgrRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 人员操作记录Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-07-27
+ */
+@Service
+public class TStaffmgrRecordServiceImpl implements ITStaffmgrRecordService 
+{
+    @Autowired
+    private TStaffmgrRecordMapper tStaffmgrRecordMapper;
+
+    /**
+     * 查询人员操作记录
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 人员操作记录
+     */
+    @Override
+    public TStaffmgrRecord selectTStaffmgrRecordByRecordId(Long recordId)
+    {
+        return tStaffmgrRecordMapper.selectTStaffmgrRecordByRecordId(recordId);
+    }
+
+    /**
+     * 查询人员操作记录列表
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 人员操作记录
+     */
+    @Override
+    public List<TStaffmgrRecord> selectTStaffmgrRecordList(TStaffmgrRecord tStaffmgrRecord)
+    {
+        return tStaffmgrRecordMapper.selectTStaffmgrRecordList(tStaffmgrRecord);
+    }
+
+    /**
+     * 新增人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    @Override
+    public int insertTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord)
+    {
+        return tStaffmgrRecordMapper.insertTStaffmgrRecord(tStaffmgrRecord);
+    }
+
+    /**
+     * 修改人员操作记录
+     * 
+     * @param tStaffmgrRecord 人员操作记录
+     * @return 结果
+     */
+    @Override
+    public int updateTStaffmgrRecord(TStaffmgrRecord tStaffmgrRecord)
+    {
+        return tStaffmgrRecordMapper.updateTStaffmgrRecord(tStaffmgrRecord);
+    }
+
+    /**
+     * 批量删除人员操作记录
+     * 
+     * @param recordIds 需要删除的人员操作记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTStaffmgrRecordByRecordIds(Long[] recordIds)
+    {
+        return tStaffmgrRecordMapper.deleteTStaffmgrRecordByRecordIds(recordIds);
+    }
+
+    /**
+     * 删除人员操作记录信息
+     * 
+     * @param recordId 人员操作记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTStaffmgrRecordByRecordId(Long recordId)
+    {
+        return tStaffmgrRecordMapper.deleteTStaffmgrRecordByRecordId(recordId);
+    }
+}

+ 167 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/plant/service/impl/TStaffmgrServiceImpl.java

@@ -0,0 +1,167 @@
+package com.ruoyi.project.plant.service.impl;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+import com.ruoyi.project.plant.mapper.TStaffmgrMapper;
+import com.ruoyi.project.plant.service.ITStaffmgrService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 人员管理Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2020-11-25
+ */
+@Service
+public class TStaffmgrServiceImpl implements ITStaffmgrService
+{
+    @Resource
+    private TStaffmgrMapper tStaffmgrMapper;
+
+    @Override
+    public List<TStaffmgr> selectMentorList(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectMentorList(tStaffmgr);
+    }
+
+    /**
+     * 查询人员管理
+     *
+     * @param staffid 人员管理员工编号
+     * @return 人员管理
+     */
+    @Override
+    public TStaffmgr selectTStaffmgrByStaffId(String staffid) { return tStaffmgrMapper.selectTStaffmgrByStaffId(staffid); }
+
+    /**
+     * 查询人员管理
+     *
+     * @param id 人员管理ID
+     * @return 人员管理
+     */
+    @Override
+    public TStaffmgr selectTStaffmgrById(Long id)
+    {
+        return tStaffmgrMapper.selectTStaffmgrById(id);
+    }
+
+    /**
+     * 查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理
+     */
+    @Override
+    public List<TStaffmgr> selectTStaffmgrList(TStaffmgr tStaffmgr)
+    {
+        return tStaffmgrMapper.selectTStaffmgrList(tStaffmgr);
+    }
+
+    /**
+     * 定时任务查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @Override
+    public List<TStaffmgr> selectList(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectList(tStaffmgr);
+    }
+
+    @Override
+    public List<TStaffmgr> selectTaskList(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectTaskList(tStaffmgr);
+    }
+
+    /**
+     * 培训查询人员管理列表
+     *
+     * @param tStaffmgr 人员管理
+     * @return 人员管理集合
+     */
+    @Override
+    public List<TStaffmgr> selectRecordList(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectRecordList(tStaffmgr);
+    }
+
+    /**
+     * 新增人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    @Override
+    public int insertTStaffmgr(TStaffmgr tStaffmgr)
+    {
+        return tStaffmgrMapper.insertTStaffmgr(tStaffmgr);
+    }
+
+    /**
+     * 修改人员管理
+     *
+     * @param tStaffmgr 人员管理
+     * @return 结果
+     */
+    @Override
+    public int updateTStaffmgr(TStaffmgr tStaffmgr)
+    {
+        return tStaffmgrMapper.updateTStaffmgr(tStaffmgr);
+    }
+
+    /**
+     * 批量删除人员管理
+     *
+     * @param ids 需要删除的人员管理ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTStaffmgrByIds(Long[] ids)
+    {
+        return tStaffmgrMapper.deleteTStaffmgrByIds(ids);
+    }
+
+    @Override
+    public int deleteLeftTStaffmgrByIds(Long ids) {
+        return tStaffmgrMapper.deleteLeftTStaffmgrByIds(ids);
+    }
+    /**
+     * 删除人员管理信息
+     *
+     * @param id 人员管理ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTStaffmgrById(Long id)
+    {
+        return tStaffmgrMapper.deleteTStaffmgrById(id);
+    }
+
+
+
+    @Override
+    public List<TStaffmgr> selectLeftTStaffmgrList(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectLeftTStaffmgrList(tStaffmgr);
+    }
+
+    @Override
+    public int reLeftTStaffmgrByIds(Long id) {
+        return tStaffmgrMapper.reLeftTStaffmgrByIds(id);
+    }
+
+    @Override
+    public List<TStaffmgr> selectTStaffmgrByPost(SysUser sysUser) {
+        return tStaffmgrMapper.selectTStaffmgrByPost(sysUser);
+    }
+    @Override
+    public List<TStaffmgr> selectStaffByTeam(TStaffmgr tStaffmgr) {
+        return tStaffmgrMapper.selectStaffByTeam(tStaffmgr);
+    }
+
+    @Override
+    public List<TStaffmgr> selectTMentorStaffmgrByPost(SysUser sysUser) {
+        return tStaffmgrMapper.selectTMentorStaffmgrByPost(sysUser);
+    }
+
+}

+ 158 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevAqfController.java

@@ -0,0 +1,158 @@
+package com.ruoyi.project.sems.controller;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevAqf;
+import com.ruoyi.project.sems.service.ITSpecdevAqfService;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备安全阀台账Controller
+ *
+ * @author ruoyi
+ * @date 2022-09-28
+ */
+@RestController
+@RequestMapping("/sems/aqf")
+public class TSpecdevAqfController extends BaseController
+{
+    @Autowired
+    private ITSpecdevAqfService tSpecdevAqfService;
+
+    /**
+     * 查询特种设备安全阀台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevAqf tSpecdevAqf)
+    {
+        startPage();
+        List<TSpecdevAqf> list = tSpecdevAqfService.selectTSpecdevAqfList(tSpecdevAqf);
+        for (TSpecdevAqf specdevAqf : list) {
+            if (specdevAqf.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = specdevAqf.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    System.out.println(days);
+                    if  (days > 60) {
+                        specdevAqf.setCheckStatus("正常");
+                    }else{
+                        specdevAqf.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备安全阀台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:export')")
+    @Log(title = "特种设备安全阀台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevAqf tSpecdevAqf)
+    {
+        List<TSpecdevAqf> list = tSpecdevAqfService.selectTSpecdevAqfList(tSpecdevAqf);
+        for (TSpecdevAqf specdevAqf : list) {
+            if (StringUtils.isNotEmpty(specdevAqf.getIsInspection())){
+                specdevAqf.setIsInspection(specdevAqf.getIsInspection().equals("1")?"是":"否");
+            }
+            if (StringUtils.isNotEmpty(specdevAqf.getNeedScaffold())){
+                specdevAqf.setNeedScaffold(specdevAqf.getNeedScaffold().equals("1")?"是":"否");
+            }
+            if (StringUtils.isNotEmpty(specdevAqf.getKeepWarm())){
+                specdevAqf.setKeepWarm(specdevAqf.getKeepWarm().equals("1")?"是":"否");
+            }
+            if (StringUtils.isNotEmpty(specdevAqf.getCrane())){
+                specdevAqf.setCrane(specdevAqf.getCrane().equals("1")?"是":"否");
+            }
+            if (StringUtils.isNotEmpty(specdevAqf.getIsPid())){
+                specdevAqf.setIsPid(specdevAqf.getIsPid().equals("1")?"是":"否");
+            }
+            if (specdevAqf.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = specdevAqf.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    System.out.println(days);
+                    if  (days > 60) {
+                        specdevAqf.setCheckStatus("正常");
+                    }else{
+                        specdevAqf.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevAqf> util = new ExcelUtil<TSpecdevAqf>(TSpecdevAqf.class);
+        return util.exportExcel(list, "aqf");
+    }
+
+    /**
+     * 获取特种设备安全阀台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecdevAqfService.selectTSpecdevAqfById(id));
+    }
+
+    /**
+     * 新增特种设备安全阀台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:add')")
+    @Log(title = "特种设备安全阀台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevAqf tSpecdevAqf)
+    {
+        return toAjax(tSpecdevAqfService.insertTSpecdevAqf(tSpecdevAqf));
+    }
+
+    /**
+     * 修改特种设备安全阀台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:edit')")
+    @Log(title = "特种设备安全阀台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevAqf tSpecdevAqf)
+    {
+        return toAjax(tSpecdevAqfService.updateTSpecdevAqf(tSpecdevAqf));
+    }
+
+    /**
+     * 删除特种设备安全阀台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specAqf:remove')")
+    @Log(title = "特种设备安全阀台账", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecdevAqfService.deleteTSpecdevAqfByIds(ids));
+    }
+}

+ 391 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevAssetController.java

@@ -0,0 +1,391 @@
+package com.ruoyi.project.sems.controller;
+
+ import com.alibaba.fastjson2.JSON;
+ import com.ruoyi.common.annotation.Log;
+ import com.ruoyi.common.config.RuoYiConfig;
+ import com.ruoyi.common.core.controller.BaseController;
+ import com.ruoyi.common.core.domain.AjaxResult;
+ import com.ruoyi.common.core.page.TableDataInfo;
+ import com.ruoyi.common.enums.BusinessType;
+ import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevAsset;
+import com.ruoyi.project.sems.service.ITSpecdevAssetService;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+ import java.nio.file.Files;
+ import java.nio.file.Paths;
+ import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 资产与运营Controller
+ *
+ * @author ruoyi
+ * @date 2022-10-12
+ */
+@RestController
+@RequestMapping("/sems/asset")
+public class TSpecdevAssetController extends BaseController {
+    @Autowired
+    private ITSpecdevAssetService tSpecdevAssetService;
+
+    /**
+     * 查询资产与运营列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevAsset tSpecdevAsset) {
+        startPage();
+        List<TSpecdevAsset> list = tSpecdevAssetService.selectTSpecdevAssetList(tSpecdevAsset);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出资产与运营列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:export')")
+    @Log(title = "资产与运营", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevAsset tSpecdevAsset) throws IOException {
+        List<TSpecdevAsset> list = tSpecdevAssetService.selectTSpecdevAssetList(tSpecdevAsset);
+        SXSSFWorkbook wb = new SXSSFWorkbook(1000);
+        // 创建标题样式
+        CellStyle cellStyle = wb.createCellStyle();
+        // 内容垂直居中,四周加边框线,设置单元格前景色为灰色
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        cellStyle.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        cellStyle.setBorderRight(BorderStyle.THIN);
+        cellStyle.setBorderTop(BorderStyle.THIN);
+        // 设置字体,加粗,字体颜色
+        Font headerFont = wb.createFont();
+        headerFont.setFontName("Arial");
+        headerFont.setFontHeightInPoints((short) 10);
+        headerFont.setBold(true);
+        headerFont.setColor(IndexedColors.WHITE.getIndex());
+        cellStyle.setFont(headerFont);
+
+        // 正文格式
+        CellStyle style2 = wb.createCellStyle();
+        // 内容垂直居中,四周加边框线,自动换行
+        style2.setAlignment(HorizontalAlignment.CENTER);
+        style2.setVerticalAlignment(VerticalAlignment.CENTER);
+        style2.setBorderBottom(BorderStyle.THIN);
+        style2.setBorderLeft(BorderStyle.THIN);
+        style2.setBorderRight(BorderStyle.THIN);
+        style2.setBorderTop(BorderStyle.THIN);
+        style2.setWrapText(true);
+        // 设置正文字体,字体颜色
+        Font headerFont2 = wb.createFont();
+        headerFont2.setFontName("Arial");
+        headerFont2.setFontHeightInPoints((short) 10);
+        headerFont2.setColor(IndexedColors.BLACK.getIndex());
+        style2.setFont(headerFont2);
+        //创建sheet页
+        Sheet sheet = wb.createSheet("sheet1");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(2, 20 * 256);
+        sheet.setColumnWidth(3, 20 * 256);
+        sheet.setColumnWidth(4, 20 * 256);
+        sheet.setColumnWidth(20, 20 * 256);
+        // 创建表格第一行并设置相应标题
+        Row row0 = sheet.createRow(0);
+        row0.createCell(0).setCellValue("Type");
+        row0.createCell(1).setCellValue("内容");
+        row0.createCell(2).setCellValue("PID图号/管线号");
+        row0.createCell(3).setCellValue("分界具体位置及描述");
+        row0.createCell(4).setCellValue("According to");
+        row0.createCell(5).setCellValue("资产");
+        row0.createCell(6).setCellValue("DCS操作");
+        row0.createCell(7).setCellValue("现场操作");
+        row0.createCell(9).setCellValue("巡检");
+        row0.createCell(11).setCellValue("维修");
+        row0.createCell(13).setCellValue("维修协调");
+        row0.createCell(15).setCellValue("技术管理");
+        row0.createCell(17).setCellValue("资产分界点信息");
+        row0.createCell(20).setCellValue("备注");
+        row0.createCell(8);
+        row0.createCell(10);
+        row0.createCell(12);
+        row0.createCell(14);
+        row0.createCell(16);
+        row0.createCell(18);
+        row0.createCell(19);
+        // 设置单元格样式
+        setStyle(row0,20,cellStyle);
+
+        // 创建第二行标题
+        Row row1 = sheet.createRow(1);
+        row1.createCell(0);
+        row1.createCell(1);
+        row1.createCell(2);
+        row1.createCell(3);
+        row1.createCell(4);
+        row1.createCell(5).setCellValue("N.A");
+        row1.createCell(6).setCellValue("N.A");
+        row1.createCell(7).setCellValue("8小时");
+        row1.createCell(8).setCellValue("8小时外");
+        row1.createCell(9).setCellValue("8小时");
+        row1.createCell(10).setCellValue("8小时外");
+        row1.createCell(11).setCellValue("8小时");
+        row1.createCell(12).setCellValue("8小时外");
+        row1.createCell(13).setCellValue("8小时");
+        row1.createCell(14).setCellValue("8小时外");
+        row1.createCell(15).setCellValue("8小时");
+        row1.createCell(16).setCellValue("8小时外");
+        row1.createCell(17).setCellValue("位置");
+        row1.createCell(18).setCellValue("管径");
+        row1.createCell(19).setCellValue("照片");
+        row1.createCell(20);
+        // 设置单元格样式
+        setStyle(row1,20,cellStyle);
+        // 合并单元格  参数(1:起始行,2:结束行,3:起始列,4:结束列)
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 7, 8));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 9, 10));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 11, 12));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 13, 14));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 15, 16));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 17, 19));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 20, 20));
+
+        //填充数据
+        int rowIndex = 2;
+        int columnIndex = 1;
+        for (TSpecdevAsset t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);// 创建行
+            //填充数据
+            row.createCell(0).setCellValue(t.getType());
+            row.createCell(1).setCellValue(t.getContent());
+            row.createCell(2).setCellValue(t.getPidNo());
+            row.createCell(3).setCellValue(t.getPositionDescribe());
+            row.createCell(4).setCellValue(t.getAccordingTo());
+            row.createCell(5).setCellValue(t.getAsset());
+            row.createCell(6).setCellValue(t.getDcsOperation());
+            row.createCell(7).setCellValue(t.getInSceneOperation());
+            row.createCell(8).setCellValue(t.getOutSceneOperation());
+            row.createCell(9).setCellValue(t.getInInspection());
+            row.createCell(10).setCellValue(t.getOutInspection());
+            row.createCell(11).setCellValue(t.getInRepair());
+            row.createCell(12).setCellValue(t.getOutRepair());
+            row.createCell(13).setCellValue(t.getInMaintenanceCoordination());
+            row.createCell(14).setCellValue(t.getOutMaintenanceCoordination());
+            row.createCell(15).setCellValue(t.getInTechnicalManagement());
+            row.createCell(16).setCellValue(t.getOutTechnicalManagement());
+            row.createCell(17).setCellValue(t.getPosition());
+            row.createCell(18).setCellValue(t.getPipeDiameter());
+            row.createCell(19).setCellValue(StringUtils.isNotEmpty(t.getPicUrl())?"Y":"N.A");
+            row.createCell(20).setCellValue(t.getRemarks());
+            setStyle(row,20,style2);
+            rowIndex++;
+        }
+
+        // 生成文件返回下载地址
+        OutputStream out;
+        String filename = ExcelUtil.encodingFilename("资产与运营");
+        out = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(filename)));
+        wb.write(out);
+        wb.close();
+        out.close();
+        return AjaxResult.success(filename);
+    }
+
+    /**
+     * 设置单元格格式
+     * @param row 行
+     * @param colNum 该行列数
+     * @param style 单元格样式
+     */
+    private void setStyle(Row row,int colNum,CellStyle style){
+        for (int i = 0; i <= colNum; i++) {
+            row.getCell(i).setCellStyle(style);
+        }
+    }
+
+    /**
+     * 获取资产与运营详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevAssetService.selectTSpecdevAssetById(id));
+    }
+
+    /**
+     * 新增资产与运营
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:add')")
+    @Log(title = "资产与运营", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevAsset tSpecdevAsset) {
+        return toAjax(tSpecdevAssetService.insertTSpecdevAsset(tSpecdevAsset));
+    }
+
+    /**
+     * 修改资产与运营
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:edit')")
+    @Log(title = "资产与运营", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevAsset tSpecdevAsset) {
+        return toAjax(tSpecdevAssetService.updateTSpecdevAsset(tSpecdevAsset));
+    }
+
+    /**
+     * 删除资产与运营
+     */
+    @PreAuthorize("@ss.hasPermi('sems:asset:remove')")
+    @Log(title = "资产与运营", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevAssetService.deleteTSpecdevAssetByIds(ids));
+    }
+
+    @Log(title = "文件上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/uploadFile")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
+        if (!file.isEmpty()) {
+            String avatar = FileUploadUtils.upload(RuoYiConfig.getFilePath("/specAsset"), file);
+            return AjaxResult.success(avatar);
+        }
+        return AjaxResult.error("上传异常,请联系管理员");
+    }
+
+    @Log(title = "资产与运营批量导入更新", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevAsset> list = new ArrayList<>();
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 3; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevAsset entity = new TSpecdevAsset();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //type
+                        entity.setType(cellValue);
+                    } else if (j == 1) {
+                        //内容
+                        entity.setContent(cellValue);
+                    } else if (j == 2) {
+                        //PID图号/管线号
+                        entity.setPidNo(cellValue);
+                    } else if (j == 3) {
+                        //是分解具体位置及描述
+                        entity.setPositionDescribe(cellValue);
+                    } else if (j == 4) {
+                        //According to
+                        entity.setAccordingTo(cellValue);
+                    } else if (j == 5) {
+                        //资产
+                        entity.setAsset(cellValue);
+                    } else if (j == 6) {
+                        //DCS操作
+                        entity.setDcsOperation(cellValue);
+                    } else if (j == 7) {
+                        //现场操作8小时
+                        entity.setInSceneOperation(cellValue);
+                    } else if (j == 8) {
+                        //现场操作8小时外
+                        entity.setOutSceneOperation(cellValue);
+                    } else if (j == 9) {
+                        //巡检8小时
+                        entity.setInInspection(cellValue);
+                    } else if (j == 10) {
+                        //巡检8小时外
+                        entity.setOutInspection(cellValue);
+                    } else if (j == 11) {
+                        //维修8小时
+                        entity.setInRepair(cellValue);
+                    } else if (j == 12) {
+                        //维修8小时外
+                        entity.setOutRepair(cellValue);
+                    } else if (j == 13) {
+                        //维修协调8小时
+                        entity.setInMaintenanceCoordination(cellValue);
+                    } else if (j == 14) {
+                        //维修协调8小时外
+                        entity.setOutMaintenanceCoordination(cellValue);
+                    } else if (j == 15) {
+                        //技术管理8小时
+                        entity.setInTechnicalManagement(cellValue);
+                    } else if (j == 16) {
+                        //技术管理8小时外
+                        entity.setOutTechnicalManagement(cellValue);
+                    } else if (j == 17) {
+                        //位置
+                        entity.setPosition(cellValue);
+                    } else if (j == 18) {
+                        //管径
+                        entity.setPipeDiameter(cellValue);
+                    } else if (j == 19) {
+                        //备注
+                        entity.setRemarks(cellValue);
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevAsset t : list
+        ) {
+            failNum++;
+            try {
+                //根据使用证、注册编号、位号,进行数据更新
+                add(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+}

+ 255 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevCcController.java

@@ -0,0 +1,255 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevCc;
+import com.ruoyi.project.sems.service.ITSpecdevCcService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备叉车台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@RestController
+@RequestMapping("/sems/specCc")
+public class TSpecdevCcController extends BaseController
+{
+    @Autowired
+    private ITSpecdevCcService tSpecdevCcService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+    /**
+     * 查询特种设备叉车台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevCc tSpecdevCc)
+    {
+        startPage();
+        List<TSpecdevCc> list = tSpecdevCcService.selectTSpecdevCcList(tSpecdevCc);
+        for (TSpecdevCc dev : list) {
+            if (dev.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if  (days > 60) {
+                        dev.setCheckStatus("正常");
+                    }else{
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备叉车台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:export')")
+    @Log(title = "特种设备叉车台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevCc tSpecdevCc)
+    {
+        List<TSpecdevCc> list = tSpecdevCcService.selectTSpecdevCcList(tSpecdevCc);
+        for (TSpecdevCc dev : list) {
+            if (dev.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if  (days > 60) {
+                        dev.setCheckStatus("正常");
+                    }else{
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevCc> util = new ExcelUtil<TSpecdevCc>(TSpecdevCc.class);
+        return util.exportExcel(list, "specCc");
+    }
+
+    /**
+     * 获取特种设备叉车台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecdevCcService.selectTSpecdevCcById(id));
+    }
+
+    /**
+     * 新增特种设备叉车台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:add')")
+    @Log(title = "特种设备叉车台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevCc tSpecdevCc)
+    {
+        return toAjax(tSpecdevCcService.insertTSpecdevCc(tSpecdevCc));
+    }
+
+    /**
+     * 修改特种设备叉车台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:edit')")
+    @Log(title = "特种设备叉车台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevCc tSpecdevCc)
+    {
+        return toAjax(tSpecdevCcService.updateTSpecdevCc(tSpecdevCc));
+    }
+
+    /**
+     * 删除特种设备叉车台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:remove')")
+    @Log(title = "特种设备叉车台账", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecdevCcService.deleteTSpecdevCcByIds(ids));
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specCc:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException
+    {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow =new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevCc> list = new ArrayList<TSpecdevCc>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevCc entity = new TSpecdevCc();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //设备类别
+                        entity.setDevType(cellValue);
+                    } else if (j == 1) {
+                        entity.setPlantCode(cellValue);//装置名称
+                    } else if (j == 2) {
+                        entity.setCarNo(cellValue);//车牌号
+                    }else if (j == 3) {
+                        entity.setUseDept(cellValue);//使用部门
+                    } else if (j == 4) {
+                        entity.setModel(cellValue);//型号
+                    }else if (j == 5) {
+                        entity.setRegno(cellValue);//设备代码
+                    } else if (j == 6) {
+                        entity.setFrameNo(cellValue);//发动机号
+                    } else if (j == 7) {
+                        entity.setNextWarnDate(DateUtils.parseDate(cellValue));//下次校验日期
+                    } else if (j == 8) {
+                        entity.setFactoryInfo(cellValue);//出场资料
+                    } else if (j == 9) {
+                        entity.setExGrade(cellValue);//防爆级别
+                    } else if (j == 10) {
+                        entity.setCreateUnit(cellValue);//制造单位
+                    } else if (j == 11) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//状态
+                                break;
+                            }
+                        }
+                    } else if (j == 12) {
+                        entity.setRemarks(cellValue);//备注
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            }catch (Exception e){
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevCc t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevCcService.insertTSpecdevCc(t);
+                successNumber++;
+            }catch (Exception e){
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" +String.valueOf(successNumber));
+        logger.info("failNumber:" +String.valueOf(failNumber));
+        logger.info("failRow:" +String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+}

+ 267 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDtController.java

@@ -0,0 +1,267 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevDt;
+import com.ruoyi.project.sems.service.ITSpecdevDtService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备电梯台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@RestController
+@RequestMapping("/sems/specDt")
+public class TSpecdevDtController extends BaseController {
+    @Autowired
+    private ITSpecdevDtService tSpecdevDtService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    /**
+     * 查询特种设备电梯台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevDt tSpecdevDt) {
+        startPage();
+        List<TSpecdevDt> list = tSpecdevDtService.selectTSpecdevDtList(tSpecdevDt);
+        for (TSpecdevDt dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备电梯台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:export')")
+    @Log(title = "特种设备电梯台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevDt tSpecdevDt) {
+        List<TSpecdevDt> list = tSpecdevDtService.selectTSpecdevDtList(tSpecdevDt);
+        for (TSpecdevDt dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevDt> util = new ExcelUtil<TSpecdevDt>(TSpecdevDt.class);
+        return util.exportExcel(list, "specDt");
+    }
+
+    /**
+     * 获取特种设备电梯台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevDtService.selectTSpecdevDtById(id));
+    }
+
+    /**
+     * 新增特种设备电梯台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:add')")
+    @Log(title = "特种设备电梯台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevDt tSpecdevDt) {
+        return toAjax(tSpecdevDtService.insertTSpecdevDt(tSpecdevDt));
+    }
+
+    /**
+     * 修改特种设备电梯台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:edit')")
+    @Log(title = "特种设备电梯台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevDt tSpecdevDt) {
+        /*TSpecdevDt old = tSpecdevDtService.selectTSpecdevDtById(tSpecdevDt.getId());
+        if (!old.getReportNo().equals(tSpecdevDt.getReportNo())) {
+            TSpecCheck tc = new TSpecCheck();
+            tc.setDevType(5l);
+            tc.setCheckUnit(tSpecdevDt.getCheckUnit());
+            tc.setDevId(tSpecdevDt.getId());
+            tc.setNextWarnDate(tSpecdevDt.getNextWarnDate());
+            tc.setReportNo(tSpecdevDt.getReportNo());
+            tc.setWarnDate(tSpecdevDt.getWarnDate());
+            tSpecCheckService.insertTSpecCheck(tc);
+        }*/
+        return toAjax(tSpecdevDtService.updateTSpecdevDt(tSpecdevDt));
+    }
+
+    /**
+     * 删除特种设备电梯台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:remove')")
+    @Log(title = "特种设备电梯台账", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevDtService.deleteTSpecdevDtByIds(ids));
+    }
+
+    /**
+     * 去重
+     */
+    @PreAuthorize("@ss.hasPermi('sems:plant:remove')")
+    @GetMapping("/duplicate")
+    public AjaxResult duplicate() {
+        tSpecdevDtService.duplicateTSpecdevDt();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDt:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevDt> list = new ArrayList<TSpecdevDt>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevDt entity = new TSpecdevDt();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        entity.setPlantCode(cellValue);//装置名称
+                    } else if (j == 1) {
+                        entity.setModel(cellValue);
+                    } else if (j == 2) {
+                        entity.setUseDept(cellValue);//单元
+                    } else if (j == 3) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//备注
+                                break;
+                            }
+                        }
+                    } else if (j == 4) {
+                        entity.setNextWarnDate(DateUtils.parseDate(cellValue));// 使用部门
+                    } else if (j == 5) {
+                        entity.setPlateNo(cellValue);// 装置维修组
+                    } else if (j == 6) {
+                        entity.setRegno(cellValue);//名称
+                    } else if (j == 7) {
+                        entity.setFactoryInfo(cellValue);//设备注册编号
+                    } else if (j == 8) {
+                        entity.setEngineNo(cellValue);//型号
+                    } else if (j == 9) {
+                        entity.setExGrade(cellValue);//额定载重
+                    } else if (j == 10) {
+                        entity.setCreateUnit(cellValue);//层站数
+                    } else if (j == 11) {
+                        entity.setRemarks(cellValue);//制造单位
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevDt t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevDtService.insertTSpecdevDt(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+
+}

+ 274 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevDzsbController.java

@@ -0,0 +1,274 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevDzsb;
+import com.ruoyi.project.sems.service.ITSpecdevDzsbService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备吊装设备台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@RestController
+@RequestMapping("/sems/specDzsb")
+public class TSpecdevDzsbController extends BaseController {
+    @Autowired
+    private ITSpecdevDzsbService tSpecdevDzsbService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    /**
+     * 查询特种设备吊装设备台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevDzsb tSpecdevDzsb) {
+        startPage();
+        List<TSpecdevDzsb> list = tSpecdevDzsbService.selectTSpecdevDzsbList(tSpecdevDzsb);
+        for (TSpecdevDzsb dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备吊装设备台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:export')")
+    @Log(title = "特种设备吊装设备台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevDzsb tSpecdevDzsb) {
+        List<TSpecdevDzsb> list = tSpecdevDzsbService.selectTSpecdevDzsbList(tSpecdevDzsb);
+        for (TSpecdevDzsb dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevDzsb> util = new ExcelUtil<TSpecdevDzsb>(TSpecdevDzsb.class);
+        return util.exportExcel(list, "specDzsb");
+    }
+
+    /**
+     * 获取特种设备吊装设备台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevDzsbService.selectTSpecdevDzsbById(id));
+    }
+
+    /**
+     * 新增特种设备吊装设备台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:add')")
+    @Log(title = "特种设备吊装设备台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevDzsb tSpecdevDzsb) {
+
+        return toAjax(tSpecdevDzsbService.insertTSpecdevDzsb(tSpecdevDzsb));
+    }
+
+    /**
+     * 修改特种设备吊装设备台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:edit')")
+    @Log(title = "特种设备吊装设备台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevDzsb tSpecdevDzsb) {
+        /*TSpecdevDzsb old = tSpecdevDzsbService.selectTSpecdevDzsbById(tSpecdevDzsb.getId());
+        if (!old.getReportNo().equals(tSpecdevDzsb.getReportNo())) {
+            TSpecCheck tc = new TSpecCheck();
+            tc.setDevType(3l);
+            tc.setCheckUnit(tSpecdevDzsb.getCheckUnit());
+            tc.setDevId(tSpecdevDzsb.getId());
+            tc.setNextWarnDate(tSpecdevDzsb.getNextWarnDate());
+            tc.setReportNo(tSpecdevDzsb.getReportNo());
+            tc.setWarnDate(tSpecdevDzsb.getWarnDate());
+            tSpecCheckService.insertTSpecCheck(tc);
+        }*/
+        return toAjax(tSpecdevDzsbService.updateTSpecdevDzsb(tSpecdevDzsb));
+    }
+
+    /**
+     * 删除特种设备吊装设备台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:remove')")
+    @Log(title = "特种设备吊装设备台账", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevDzsbService.deleteTSpecdevDzsbByIds(ids));
+    }
+
+    /**
+     * 去重
+     */
+    @PreAuthorize("@ss.hasPermi('sems:plant:remove')")
+    @GetMapping("/duplicate")
+    public AjaxResult duplicate() {
+        tSpecdevDzsbService.duplicateTSpecdevDzsb();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specDzsb:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevDzsb> list = new ArrayList<TSpecdevDzsb>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        logger.info("rowNum:" + rowNum);
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                logger.info("cellNum:" + cellNum);
+                TSpecdevDzsb entity = new TSpecdevDzsb();
+                for (int j = 0; j <= cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //序号
+                        entity.setDevType(cellValue);
+                    } else if (j == 1) {
+                        entity.setPlantCode(cellValue);//装置
+                    } else if (j == 2) {
+                        entity.setDevType2(cellValue);//装置维修组
+                    } else if (j == 3) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//状态
+                                break;
+                            }
+                        }
+                    } else if (j == 4) {
+                        entity.setModel(cellValue);//装置维修工程师
+                    } else if (j == 5) {
+                        entity.setNextWarnDate(DateUtils.parseDate(cellValue));//设备名称
+                    } else if (j == 6) {
+                        entity.setFactoryInfo(cellValue);//设备位号
+                    } else if (j == 7) {
+                        entity.setPlateNo(cellValue);//档案号
+                    } else if (j == 8) {
+                        entity.setRegno(cellValue);//出厂编号
+                    } else if (j == 9) {
+                        entity.setEngineNo(cellValue);//设备型号
+                    } else if (j == 10) {
+                        entity.setExLevel(cellValue);//起吊重量
+                    } else if (j == 11) {
+                        entity.setCreateUnit(cellValue);//设备使用地点
+                    } else if (j == 12) {
+                        entity.setRemarks(cellValue);//设备注册编号
+                    }
+
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + JSON.toJSONString(entity));
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.error("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevDzsb t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevDzsbService.insertTSpecdevDzsb(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.error("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+}

+ 257 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevFixedAssetController.java

@@ -0,0 +1,257 @@
+package com.ruoyi.project.sems.controller;
+
+ import com.alibaba.fastjson2.JSON;
+ import com.ruoyi.common.annotation.Log;
+ import com.ruoyi.common.core.controller.BaseController;
+ import com.ruoyi.common.core.domain.AjaxResult;
+ import com.ruoyi.common.core.domain.entity.SysDictData;
+ import com.ruoyi.common.core.page.TableDataInfo;
+ import com.ruoyi.common.enums.BusinessType;
+ import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevFixedAsset;
+import com.ruoyi.project.sems.service.ITSpecdevFixedAssetService;
+ import com.ruoyi.system.service.ISysDictTypeService;
+ import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 固定资产Controller
+ *
+ * @author ruoyi
+ * @date 2022-10-18
+ */
+@RestController
+@RequestMapping("/sems/fixedAsset")
+public class TSpecdevFixedAssetController extends BaseController
+{
+    @Autowired
+    private ITSpecdevFixedAssetService tSpecdevFixedAssetService;
+
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+    /**
+     * 查询固定资产列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        startPage();
+        List<TSpecdevFixedAsset> list = tSpecdevFixedAssetService.selectTSpecdevFixedAssetList(tSpecdevFixedAsset);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出固定资产列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:export')")
+    @Log(title = "固定资产", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        List<TSpecdevFixedAsset> list = tSpecdevFixedAssetService.selectTSpecdevFixedAssetList(tSpecdevFixedAsset);
+        ExcelUtil<TSpecdevFixedAsset> util = new ExcelUtil<TSpecdevFixedAsset>(TSpecdevFixedAsset.class);
+        return util.exportExcel(list, "asset");
+    }
+
+    /**
+     * 获取固定资产详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecdevFixedAssetService.selectTSpecdevFixedAssetById(id));
+    }
+
+    /**
+     * 新增固定资产
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:add')")
+    @Log(title = "固定资产", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        return toAjax(tSpecdevFixedAssetService.insertTSpecdevFixedAsset(tSpecdevFixedAsset));
+    }
+
+    /**
+     * 修改固定资产
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:edit')")
+    @Log(title = "固定资产", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        return toAjax(tSpecdevFixedAssetService.updateTSpecdevFixedAsset(tSpecdevFixedAsset));
+    }
+
+    /**
+     * 删除固定资产
+     */
+    @PreAuthorize("@ss.hasPermi('sems:fixedAsset:remove')")
+    @Log(title = "固定资产", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecdevFixedAssetService.deleteTSpecdevFixedAssetByIds(ids));
+    }
+
+    @Log(title = "固定资产清单批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevFixedAsset> list = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        //字典查询
+        List<SysDictData> usingStatus = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 2; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevFixedAsset entity = new TSpecdevFixedAsset();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //资产类别
+                        entity.setAssetType(cellValue);
+                    } else if (j == 1) {
+                        //资产编号
+                        entity.setAssetNo(cellValue);
+                    } else if (j == 2) {
+                        //资产子编号
+                        entity.setAssetSubNo(cellValue);
+                    } else if (j == 3) {
+                        //资产描述(中文)
+                        entity.setDevName(cellValue);
+                    } else if (j == 4) {
+                        //资产描述(英文)
+                        entity.setDevEnname(cellValue);
+                    } else if (j == 5) {
+                        //成本中心名称
+                        entity.setCostCenter(cellValue);
+                    } else if (j == 6) {
+                        //成本中心代码
+                        entity.setCostCenterCode(cellValue);
+                    } else if (j == 7) {
+                        //资产类别ap003xxx
+                        entity.setAssetTypeAp(cellValue);
+                    } else if (j == 8) {
+                        //资本化日期
+                        entity.setCapitalizedDate(sdf.parse(cellValue));
+                    } else if (j == 9) {
+                        //数量
+                        entity.setQuantity(cellValue);
+                    } else if (j == 10) {
+                        //币种
+                        entity.setCurrency(cellValue);
+                    } else if (j == 11) {
+                        //原值
+                        entity.setCurrentApc(cellValue);
+                    } else if (j == 12) {
+                        //使用年限
+                        entity.setServiceLife(cellValue);
+                    } else if (j == 13) {
+                        //管理人
+                        entity.setAdministrator(cellValue);
+                    } else if (j == 14) {
+                        //位号
+                        entity.setDevNo(cellValue);
+                    } else if (j == 15) {
+                        //资产详细描述
+                        entity.setAssetDetail(cellValue);
+                    } else if (j == 16) {
+                        //工艺子单元
+                        entity.setProcessSubunit(cellValue);
+                    } else if (j == 17) {
+                        //pid图号/其他图号
+                        entity.setPidNo(cellValue);
+                    } else if (j == 18) {
+                        //安装位置
+                        entity.setInstallPosition(cellValue);
+                    } else if (j == 19) {
+                        //创建原由
+                        entity.setCreateReason(cellValue);
+                    } else if (j == 20) {
+                        //条形码位置
+                        entity.setBarcodePosition(cellValue);
+                    } else if (j == 21) {
+                        //报废原由
+                        entity.setScrapReason(cellValue);
+                    } else if (j == 22) {
+                        //报废提出日期
+                        entity.setScrapPoseDate(sdf.parse(cellValue));
+                    } else if (j == 23) {
+                        //报废完成时间
+                        entity.setScrapDoneDate(sdf.parse(cellValue));
+                    } else if (j == 24) {
+                        //报废人
+                        entity.setScraper(cellValue);
+                    } else if (j == 25) {
+                        //在用状态
+                        for (SysDictData dictData : usingStatus) {
+                            if (dictData.getDictLabel().equals(cellValue.trim())) {
+                                entity.setUsingStatus(dictData.getDictValue());
+                            }
+                        }
+                    } else if (j == 26) {
+                        //备注
+                        entity.setRemarks(cellValue);
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevFixedAsset t : list
+        ) {
+            failNum++;
+            try {
+                //根据使用证、注册编号、位号,进行数据更新
+                add(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+}

+ 283 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevGlController.java

@@ -0,0 +1,283 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevGl;
+import com.ruoyi.project.sems.service.ITSpecdevGlService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备锅炉台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-21
+ */
+@RestController
+@RequestMapping("/sems/specGl")
+public class TSpecdevGlController extends BaseController {
+    @Autowired
+    private ITSpecdevGlService tSpecdevGlService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    /**
+     * 查询特种设备锅炉台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevGl tSpecdevGl) {
+        startPage();
+        List<TSpecdevGl> list = tSpecdevGlService.selectTSpecdevGlList(tSpecdevGl);
+        for (TSpecdevGl dev : list) {
+            if (dev.getExternalInspection() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getExternalInspection();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备锅炉台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:export')")
+    @Log(title = "特种设备锅炉台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevGl tSpecdevGl) {
+        List<TSpecdevGl> list = tSpecdevGlService.selectTSpecdevGlList(tSpecdevGl);
+        for (TSpecdevGl dev : list) {
+            if (dev.getExternalInspection() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getExternalInspection();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevGl> util = new ExcelUtil<TSpecdevGl>(TSpecdevGl.class);
+        return util.exportExcel(list, "specGl");
+    }
+
+    /**
+     * 获取特种设备锅炉台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevGlService.selectTSpecdevGlById(id));
+    }
+
+    /**
+     * 新增特种设备锅炉台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:add')")
+    @Log(title = "特种设备锅炉台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevGl tSpecdevGl) {
+        return toAjax(tSpecdevGlService.insertTSpecdevGl(tSpecdevGl));
+    }
+
+    /**
+     * 修改特种设备锅炉台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:edit')")
+    @Log(title = "特种设备锅炉台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevGl tSpecdevGl) {
+        //TSpecdevGl old = tSpecdevGlService.selectTSpecdevGlById(tSpecdevGl.getId());
+       /* if (!old.getReportNo().equals(tSpecdevGl.getReportNo())) {
+            TSpecCheck tc = new TSpecCheck();
+            tc.setDevType(4l);
+            tc.setCheckUnit(tSpecdevGl.getCheckUnit());
+            tc.setDevId(tSpecdevGl.getId());
+            tc.setNextWarnDate(tSpecdevGl.getNextWarnDate());
+            tc.setReportNo(tSpecdevGl.getReportNo());
+            tc.setWarnDate(tSpecdevGl.getWarnDate());
+            tc.setOutWarnDate(tSpecdevGl.getOutWarnDate());
+            tc.setOutReportNo(tSpecdevGl.getOutReportNo());
+            tc.setOutCheckConclusion(tSpecdevGl.getOutCheckConclusion());
+            tc.setOutNextWarnDate(tSpecdevGl.getOutNextWarnDate());
+            tSpecCheckService.insertTSpecCheck(tc);
+        }*/
+        return toAjax(tSpecdevGlService.updateTSpecdevGl(tSpecdevGl));
+    }
+
+    /**
+     * 删除特种设备锅炉台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:remove')")
+    @Log(title = "特种设备锅炉台账", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevGlService.deleteTSpecdevGlByIds(ids));
+    }
+
+    /**
+     * 去重
+     */
+    @PreAuthorize("@ss.hasPermi('sems:plant:remove')")
+    @GetMapping("/duplicate")
+    public AjaxResult duplicate() {
+        tSpecdevGlService.duplicateTSpecdevGl();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specGl:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevGl> list = new ArrayList<TSpecdevGl>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 2; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevGl entity = new TSpecdevGl();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+
+                    if (j == 0) {
+                        //序号
+                        entity.setPlantCode(cellValue);
+                    } else if (j == 1) {
+                        entity.setContainerNo(cellValue);//装置名称
+                    } else if (j == 2) {
+                        entity.setRegno(cellValue);//位号
+                    } else if (j == 3) {
+                        entity.setUseno(cellValue);//设备名称
+                    } else if (j == 4) {
+                        entity.setFiledSituation(cellValue);//使用证号
+                    } else if (j == 5) {
+                        entity.setFactoryInfo(cellValue);//检验单位
+                    } else if (j == 6) {
+                        entity.setInternalInspection(DateUtils.parseDate(cellValue));
+                    } else if (j == 7) {
+                        entity.setExternalInspection(DateUtils.parseDate(cellValue));//内部检验结论
+                    } else if (j == 8) {
+                        entity.setPressureTest(DateUtils.parseDate(cellValue));//内部检验报告编号
+                    } else if (j == 9) {
+                        entity.setEnergyEfficiencyTest(DateUtils.parseDate(cellValue));
+
+                    } else if (j == 10) {
+                        entity.setDevname(cellValue);
+                    } else if (j == 11) {
+                        entity.setFactoryNo(cellValue);//外部检验结论
+                    } else if (j == 12) {
+                        entity.setMedium(cellValue);//外部检验报告编号
+                    } else if (j == 13) {
+                        entity.setDesignUnit(cellValue);
+                    }else if (j == 14) {
+                        entity.setCreateUnit(cellValue);
+                    }else if (j == 15) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//备注
+                                break;
+                            }
+                        }
+                    }else if (j == 16) {
+                        entity.setRemarks(cellValue);
+                    }}
+                entity.setCreaterCode(userId.toString());
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevGl t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevGlService.insertTSpecdevGl(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+
+}

+ 338 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevMainController.java

@@ -0,0 +1,338 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevMain;
+import com.ruoyi.project.sems.service.ITSpecdevAqfService;
+import com.ruoyi.project.sems.service.ITSpecdevFixedAssetService;
+import com.ruoyi.project.sems.service.ITSpecdevMainService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 设备总Controller
+ *
+ * @author ruoyi
+ * @date 2022-10-09
+ */
+@RestController
+@RequestMapping("/sems/main")
+public class TSpecdevMainController extends BaseController {
+    @Autowired
+    private ITSpecdevMainService tSpecdevMainService;
+
+    @Autowired
+    private ITSpecdevAqfService tSpecdevAqfService;
+
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    @Autowired
+    private ITSpecdevFixedAssetService tSpecdevFixedAssetService;
+
+    /**
+     * 查询设备总列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevMain tSpecdevMain) {
+        startPage();
+        List<TSpecdevMain> list = tSpecdevMainService.selectTSpecdevMainList(tSpecdevMain);
+//        for (TSpecdevMain specdevMain : list) {
+//            getDevType2(specdevMain);
+//        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出设备总列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:export')")
+    @Log(title = "设备总表格", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevMain tSpecdevMain) {
+        List<TSpecdevMain> list = tSpecdevMainService.selectTSpecdevMainList(tSpecdevMain);
+        List<SysDictData> devType = iSysDictTypeService.selectDictDataByType("dev_type");
+        List<SysDictData> assetStatus = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+        int index = 1;
+        for (TSpecdevMain specdevMain : list) {
+            specdevMain.setIndex(index++);
+        }
+        ExcelUtil<TSpecdevMain> util = new ExcelUtil<TSpecdevMain>(TSpecdevMain.class);
+        return util.exportExcel(list, "main");
+    }
+
+    /**
+     * 获取设备总详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevMainService.selectTSpecdevMainById(id));
+    }
+
+    /**
+     * 新增设备总
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:add')")
+    @Log(title = "设备总表格", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevMain tSpecdevMain) {
+        tSpecdevMainService.insertTSpecdevMain(tSpecdevMain);
+        /*switch (tSpecdevMain.getDevType2()) {
+                case "安全阀":
+                    TSpecdevAqf tSpecdevAqf = new TSpecdevAqf(tSpecdevMain);
+                    tSpecdevAqfService.insertTSpecdevAqf(tSpecdevAqf);
+                    break;
+            }*/
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改设备总
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:edit')")
+    @Log(title = "设备总表格", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevMain tSpecdevMain) {
+        tSpecdevMainService.updateTSpecdevMain(tSpecdevMain);//            switch (tSpecdevMain.getDevType2()) {
+//                case "安全阀":
+//                    TSpecdevAqf tSpecdevAqf = new TSpecdevAqf();
+//                    tSpecdevAqf.setMainId(tSpecdevMain.getId());
+//                    if (CollectionUtils.isNotEmpty(tSpecdevAqfService.selectTSpecdevAqfList(tSpecdevAqf))) {
+//                        tSpecdevAqf = new TSpecdevAqf(tSpecdevMain);
+//                        tSpecdevAqfService.updateTSpecdevAqf(tSpecdevAqf);
+//                    } else {
+//                        tSpecdevAqf = new TSpecdevAqf(tSpecdevMain);
+//                        tSpecdevAqfService.insertTSpecdevAqf(tSpecdevAqf);
+//                    }
+//                    break;
+//            }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除设备总
+     */
+    @PreAuthorize("@ss.hasPermi('sems:main:remove')")
+    @Log(title = "设备总表格", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        for (Long id : ids) {
+            TSpecdevMain tSpecdevMain = tSpecdevMainService.selectTSpecdevMainById(id);
+            tSpecdevMainService.deleteTSpecdevMainById(id);
+            //                switch (tSpecdevMain.getDevType2()) {
+//                    case "安全阀":
+//                        tSpecdevAqfService.deleteTSpecdevAqfByMainId(id);
+//                        break;
+//                }
+        }
+        return AjaxResult.success();
+    }
+
+    @Log(title = "设备总表格批量导入更新", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevMain> list = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        //字典查询
+        List<SysDictData> devType = iSysDictTypeService.selectDictDataByType("dev_type");
+        List<SysDictData> assetStatus = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 22; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevMain entity = new TSpecdevMain();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //中文名
+                        entity.setDevName(cellValue);
+                    } else if (j == 1) {
+                        //英文名
+                        entity.setDevEnname(cellValue);
+                    } else if (j == 2) {
+                        //位号
+                        entity.setDevno(cellValue);
+                    } else if (j == 3) {
+                        //是否在pid上
+                        entity.setIsPid(cellValue.equals("是") ? "1" : "0");
+                    } else if (j == 4) {
+                        //PID图号/其他图号
+                        entity.setPidNo(cellValue);
+                    } else if (j == 5) {
+                        //安装位置
+                        entity.setInstallPosition(cellValue);
+                    } else if (j == 6) {
+                        //功能位置
+                        entity.setFuncPosition(cellValue);
+                    } else if (j == 7) {
+                        //资产号
+                        entity.setAssetNo(cellValue);
+                    } else if (j == 8) {
+                        //安全相关
+                        entity.setSecurityRelevant(cellValue);
+                    } else if (j == 9) {
+                        //安全相关来自
+                        entity.setSecurityRelevantFrom(cellValue);
+                    } else if (j == 10) {
+                        //生产厂家
+                        entity.setManufacturer(cellValue);
+                    } else if (j == 11) {
+                        //生产年份
+                        entity.setProductionYear(cellValue);
+                    } else if (j == 12) {
+                        //型号
+                        entity.setModel(cellValue);
+                    } else if (j == 13) {
+                        //主要规格参数
+                        entity.setMainSpecifications(cellValue);
+                    } else if (j == 14) {
+                        //设备铭牌
+                        entity.setDataPlate(cellValue);
+                    } else if (j == 15) {
+                        //维修风险
+                        entity.setMaintenanceRisk(cellValue);
+                    } else if (j == 16) {
+                        //生产风险
+                        entity.setProductionRisk(cellValue);
+                    } else if (j == 17) {
+                        //设备分级
+                        entity.setDevGrade(cellValue);
+                    } else if (j == 18) {
+                        //设备来自
+                        entity.setDevFrom(cellValue);
+                    } else if (j == 19) {
+                        //设备类型 (一级)
+//                        for (SysDictData dictData : devType) {
+//                            if (dictData.getDictLabel().equals(cellValue.trim())) {
+//                                entity.setDevType1(dictData.getDictValue());
+//                            }
+//                        }
+                        entity.setDevType1(cellValue);
+                    } else if (j == 20) {
+//                        //设备类型 (二级)
+//                        List<SysDictData> devType2 = new ArrayList<>();
+//                        switch (entity.getDevType1()) {
+//                            case "1"://固定资产
+//                            case "5"://电气
+//                                break;
+//                            case "2"://静设备
+//                                devType2 = iSysDictTypeService.selectDictDataByType("dev_static");
+//                                break;
+//                            case "4"://仪表
+//                                devType2 = iSysDictTypeService.selectDictDataByType("dev_meter");
+//                                break;
+//                            case "6"://动设备
+//                                devType2 = iSysDictTypeService.selectDictDataByType("dev_act");
+//                                break;
+//                            case "3"://管线
+//                                devType2 = iSysDictTypeService.selectDictDataByType("dev_tunnel");
+//                                break;
+//                        }
+//                        for (SysDictData dictData : devType2) {
+//                            if (dictData.getDictLabel().equals(cellValue.trim())) {
+//                                entity.setDevType2(dictData.getDictValue());
+//                            }
+//                        }
+                        entity.setDevType2(cellValue);
+                    } else if (j == 21) {
+                        //资产状态
+                        for (SysDictData dictData : assetStatus) {
+                            if (dictData.getDictLabel().equals(cellValue.trim())) {
+                                entity.setAssetStatus(dictData.getDictValue());
+                            }
+                        }
+                    } else if (j == 22) {
+                        //备注
+                        entity.setRemarks(cellValue);
+                    } else if (j == 23) {
+                        //
+                        entity.setMainSpecifications(entity.getMainSpecifications() + " " + cellValue);
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevMain t : list
+        ) {
+            failNum++;
+            try {
+                //根据使用证、注册编号、位号,进行数据更新
+                add(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + successNumber);
+        logger.info("failNumber:" + failNumber);
+        logger.info("failRow:" + failRow);
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+
+    @PostMapping("/syncAllDev")
+    public AjaxResult syncAllDev() {
+        for (TSpecdevMain tSpecdevMain : tSpecdevMainService.selectTSpecdevMainList(new TSpecdevMain())) {
+//            if (StringUtils.isNotEmpty(tSpecdevMain.getDevType2())) {
+//                switch (tSpecdevMain.getDevType2()) {
+//                    case "安全阀":
+//                        TSpecdevAqf tSpecdevAqf = new TSpecdevAqf();
+//                        tSpecdevAqf.setMainId(tSpecdevMain.getId());
+//                        if (CollectionUtils.isEmpty(tSpecdevAqfService.selectTSpecdevAqfList(tSpecdevAqf))) {
+//                            tSpecdevAqf = new TSpecdevAqf(tSpecdevMain);
+//                            tSpecdevAqfService.insertTSpecdevAqf(tSpecdevAqf);
+//                        }
+//                        break;
+//                    default:
+//                        break;
+//                }
+//            }
+        }
+        return AjaxResult.success();
+    }
+}

+ 111 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevTypemgrController.java

@@ -0,0 +1,111 @@
+package com.ruoyi.project.sems.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevTypemgr;
+import com.ruoyi.project.sems.service.ITSpecdevTypemgrService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 设备类型管理Controller
+ *
+ * @author ruoyi
+ * @date 2023-08-08
+ */
+@RestController
+@RequestMapping("/sems/typemgr")
+public class TSpecdevTypemgrController extends BaseController
+{
+    @Autowired
+    private ITSpecdevTypemgrService tSpecdevTypemgrService;
+
+    /**
+     * 查询设备类型管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        startPage();
+        List<TSpecdevTypemgr> list = tSpecdevTypemgrService.selectTSpecdevTypemgrList(tSpecdevTypemgr);
+        return getDataTable(list);
+    }
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:list')")
+    @GetMapping("/listAll")
+    public AjaxResult listAll(TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return AjaxResult.success(tSpecdevTypemgrService.selectTSpecdevTypemgrList(tSpecdevTypemgr));
+    }
+
+    /**
+     * 导出设备类型管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:export')")
+    @Log(title = "设备类型管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        List<TSpecdevTypemgr> list = tSpecdevTypemgrService.selectTSpecdevTypemgrList(tSpecdevTypemgr);
+        ExcelUtil<TSpecdevTypemgr> util = new ExcelUtil<TSpecdevTypemgr>(TSpecdevTypemgr.class);
+        util.exportExcel( list, "设备类型管理数据");
+    }
+
+    /**
+     * 获取设备类型管理详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecdevTypemgrService.selectTSpecdevTypemgrById(id));
+    }
+
+    /**
+     * 新增设备类型管理
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:add')")
+    @Log(title = "设备类型管理", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return toAjax(tSpecdevTypemgrService.insertTSpecdevTypemgr(tSpecdevTypemgr));
+    }
+
+    /**
+     * 修改设备类型管理
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:edit')")
+    @Log(title = "设备类型管理", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return toAjax(tSpecdevTypemgrService.updateTSpecdevTypemgr(tSpecdevTypemgr));
+    }
+
+    /**
+     * 删除设备类型管理
+     */
+    @PreAuthorize("@ss.hasPermi('sems:typemgr:remove')")
+    @Log(title = "设备类型管理", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecdevTypemgrService.deleteTSpecdevTypemgrByIds(ids));
+    }
+}

+ 332 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java

@@ -0,0 +1,332 @@
+package com.ruoyi.project.sems.controller;
+
+ import com.alibaba.fastjson2.JSON;
+ import com.ruoyi.common.annotation.Log;
+ import com.ruoyi.common.config.RuoYiConfig;
+ import com.ruoyi.common.core.controller.BaseController;
+ import com.ruoyi.common.core.domain.AjaxResult;
+ import com.ruoyi.common.core.domain.entity.SysDept;
+ import com.ruoyi.common.core.domain.entity.SysDictData;
+ import com.ruoyi.common.core.page.TableDataInfo;
+ import com.ruoyi.common.enums.BusinessType;
+ import com.ruoyi.common.utils.DateUtils;
+ import com.ruoyi.common.utils.StringUtils;
+ import com.ruoyi.common.utils.file.ExcelUtils;
+ import com.ruoyi.common.utils.file.FileUploadUtils;
+ import com.ruoyi.common.utils.poi.ExcelUtil;
+ import com.ruoyi.project.sems.domain.TSpecdevYlgd;
+ import com.ruoyi.project.sems.service.ITSpecdevYlgdService;
+ import com.ruoyi.system.service.ISysDeptService;
+ import com.ruoyi.system.service.ISysDictTypeService;
+ import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备压力管道台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-22
+ */
+@RestController
+@RequestMapping("/sems/specYlgd")
+public class TSpecdevYlgdController extends BaseController {
+    @Autowired
+    private ITSpecdevYlgdService tSpecdevYlgdService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    /**
+     * 查询特种设备压力管道台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevYlgd tSpecdevYlgd) {
+        startPage();
+        List<TSpecdevYlgd> list = tSpecdevYlgdService.selectTSpecdevYlgdList(tSpecdevYlgd);
+        for (TSpecdevYlgd dev : list) {
+            if (dev.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if  (days > 60) {
+                        dev.setCheckStatus("正常");
+                    }else{
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备压力管道台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:export')")
+    @Log(title = "特种设备压力管道台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevYlgd tSpecdevYlgd) {
+        List<TSpecdevYlgd> list = tSpecdevYlgdService.selectTSpecdevYlgdList(tSpecdevYlgd);
+        for (TSpecdevYlgd dev : list) {
+            if(StringUtils.isNotEmpty(dev.getIsoPicUrl())){
+                dev.setIsoPicUrl("Y");
+            }else {
+                dev.setIsoPicUrl("NA");
+            }
+            if (dev.getNextWarnDate()!= null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if  (days > 60) {
+                        dev.setCheckStatus("正常");
+                    }else{
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevYlgd> util = new ExcelUtil<TSpecdevYlgd>(TSpecdevYlgd.class);
+        return util.exportExcel(list, "specYlgd");
+    }
+
+    /**
+     * 获取特种设备压力管道台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevYlgdService.selectTSpecdevYlgdById(id));
+    }
+
+    /**
+     * 新增特种设备压力管道台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:add')")
+    @Log(title = "特种设备压力管道台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevYlgd tSpecdevYlgd) {
+        return toAjax(tSpecdevYlgdService.insertTSpecdevYlgd(tSpecdevYlgd));
+    }
+
+    /**
+     * 修改特种设备压力管道台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:edit')")
+    @Log(title = "特种设备压力管道台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevYlgd tSpecdevYlgd) {
+/*
+        TSpecdevYlgd old = tSpecdevYlgdService.selectTSpecdevYlgdById(tSpecdevYlgd.getId());
+        if (!old.getReportNo().equals(tSpecdevYlgd.getReportNo())) {
+            TSpecCheck tc = new TSpecCheck();
+            tc.setDevType(2l);
+            tc.setCheckUnit(tSpecdevYlgd.getCheckUnit());
+            tc.setDevId(tSpecdevYlgd.getId());
+            tc.setNextWarnDate(tSpecdevYlgd.getNextWarnDate());
+            tc.setReportNo(tSpecdevYlgd.getReportNo());
+            tc.setWarnDate(tSpecdevYlgd.getWarnDate());
+            tc.setYearNextWarnDate(tSpecdevYlgd.getYearNextWarnDate());
+            tc.setYearWarnDate(tSpecdevYlgd.getYearWarnDate());
+            tc.setYearReportNo(tSpecdevYlgd.getReportNo());
+            tc.setSafeClass(tSpecdevYlgd.getSafeClass());
+            tSpecCheckService.insertTSpecCheck(tc);
+        }
+*/
+
+        return toAjax(tSpecdevYlgdService.updateTSpecdevYlgd(tSpecdevYlgd));
+    }
+
+    /**
+     * 删除特种设备压力管道台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:remove')")
+    @Log(title = "特种设备压力管道台账", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevYlgdService.deleteTSpecdevYlgdByIds(ids));
+    }
+
+    /**
+     * 去重
+     */
+    @PreAuthorize("@ss.hasPermi('sems:plant:remove')")
+    @GetMapping("/duplicate")
+    public AjaxResult duplicate()
+    {
+        tSpecdevYlgdService.duplicateTSpecdevYlgd();
+        return AjaxResult.success();
+    }
+
+    @Log(title = "文件上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/uploadFile")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
+        if (!file.isEmpty()) {
+            String avatar = FileUploadUtils.upload(RuoYiConfig.getFilePath("/specYlgd"), file);
+            return AjaxResult.success(avatar);
+        }
+        return AjaxResult.error("上传异常,请联系管理员");
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlgd:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevYlgd> list = new ArrayList<TSpecdevYlgd>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevYlgd entity = new TSpecdevYlgd();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        entity.setPlantCode(cellValue);//
+                    } else if (j == 1) {
+                        entity.setDevname(cellValue);
+                    } else if (j == 2) {
+                        entity.setPidNo(cellValue);//
+                    } else if (j == 3) {
+                        entity.setDevno(cellValue);//
+                    } else if (j == 4) {
+                        entity.setNextWarnDate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 5) {
+                        entity.setWarnDate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 6) {
+                        entity.setStarting(cellValue);//
+                    } else if (j == 7) {
+                        entity.setEnding(cellValue);//
+                    } else if (j == 8) {
+                        entity.setReliefValve(cellValue);//
+                    } else if (j == 9) {
+                        entity.setFitNumber(Long.valueOf(cellValue));//
+                    } else if (j == 10) {
+                        entity.setWeldNumber(cellValue);//
+                    } else if (j == 11) {
+                        entity.setGrade(cellValue);//
+                    } else if (j == 12) {//
+                        entity.setDesigner(cellValue);//
+                    } else if (j == 13) {//
+                        entity.setInstaller(cellValue);
+                    } else if (j == 14) {
+                        entity.setInstallDate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 15) {
+                        entity.setSubmitdate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 16) {
+                        entity.setDia(cellValue);//
+                    } else if (j == 17) {
+                        entity.setScheduleNo(cellValue);//
+                    } else if (j == 18) {
+                        entity.setLength(cellValue);//
+                    } else if (j == 19) {
+                        entity.setMaterial(cellValue);//
+                    } else if (j == 20) {
+                        entity.setHeatPreservation(cellValue);//
+                    } else if (j == 21) {
+                        entity.setThickness(cellValue);//
+                    } else if (j == 22) {
+                        entity.setDesPressure(cellValue);//
+                    } else if (j == 23) {
+                        entity.setOptPressure(cellValue);//
+                    } else if (j == 25) {
+                        entity.setDesTemp(cellValue);//
+                    } else if (j == 24) {
+                        entity.setOptTemp(cellValue);//
+                    } else if (j == 26) {
+                        entity.setMedium(cellValue);//
+                    } else if (j == 27) {
+                        entity.setCheckConclusion(cellValue);//
+                    } else if (j == 28) {
+                        entity.setCheckUnit(cellValue);
+                    } else if (j == 29) {
+                        entity.setReportNo(cellValue);//
+                    } else if (j == 30) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//
+                                break;
+                            }
+                        }
+                    } else if (j == 31) {
+                        entity.setRemarks(cellValue);//
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevYlgd t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevYlgdService.insertTSpecdevYlgd(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+}

+ 317 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlrqController.java

@@ -0,0 +1,317 @@
+package com.ruoyi.project.sems.controller;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.sems.domain.TSpecdevYlrq;
+import com.ruoyi.project.sems.service.ITSpecdevYlrqService;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 特种设备压力容器台账Controller
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@RestController
+@RequestMapping("/sems/specYlrq")
+public class TSpecdevYlrqController extends BaseController {
+    @Autowired
+    private ITSpecdevYlrqService tSpecdevYlrqService;
+    @Autowired
+    private ISysDeptService iSysDeptService;
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
+
+    /**
+     * 查询特种设备压力容器台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecdevYlrq tSpecdevYlrq) {
+        startPage();
+        List<TSpecdevYlrq> list = tSpecdevYlrqService.selectTSpecdevYlrqList(tSpecdevYlrq);
+        for (TSpecdevYlrq dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        //
+//        SpecOverLifeThead specOverLifeThead = new SpecOverLifeThead(tSpecdevYlrqService);
+//        Thread t = new Thread(specOverLifeThead);
+//        t.start();
+
+//        SpecDevYlrqThread specDevYlgdThread = new SpecDevYlrqThread(tSpecdevYlrqService);
+//        Thread t2 = new Thread(specDevYlgdThread);
+//        t2.start();
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出特种设备压力容器台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:export')")
+    @Log(title = "特种设备压力容器台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecdevYlrq tSpecdevYlrq) {
+        List<TSpecdevYlrq> list = tSpecdevYlrqService.selectTSpecdevYlrqList(tSpecdevYlrq);
+        for (TSpecdevYlrq dev : list) {
+            if (dev.getNextWarnDate() != null) {
+                try {
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Date d1 = dev.getNextWarnDate();
+                    Date d2 = format.parse(DateUtils.getDate());
+                    DateTime dt1 = new DateTime(d1);
+                    DateTime dt2 = new DateTime(d2);
+                    int days = Days.daysBetween(dt2, dt1).getDays();
+                    if (days > 60) {
+                        dev.setCheckStatus("正常");
+                    } else {
+                        dev.setCheckStatus("待报检");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        ExcelUtil<TSpecdevYlrq> util = new ExcelUtil<TSpecdevYlrq>(TSpecdevYlrq.class);
+        return util.exportExcel(list, "specYlrq");
+    }
+
+    /**
+     * 获取特种设备压力容器台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSpecdevYlrqService.selectTSpecdevYlrqById(id));
+    }
+
+    /**
+     * 新增特种设备压力容器台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:add')")
+    @Log(title = "特种设备压力容器台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecdevYlrq tSpecdevYlrq) {
+        return toAjax(tSpecdevYlrqService.insertTSpecdevYlrq(tSpecdevYlrq));
+    }
+
+    /**
+     * 修改特种设备压力容器台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:edit')")
+    @Log(title = "特种设备压力容器台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecdevYlrq tSpecdevYlrq) {
+        TSpecdevYlrq old = tSpecdevYlrqService.selectTSpecdevYlrqById(tSpecdevYlrq.getId());
+        /*if (!old.getReportNo().equals(tSpecdevYlrq.getReportNo())) {
+            TSpecCheck tc = new TSpecCheck();
+            tc.setDevType(1l);
+            tc.setCheckUnit(tSpecdevYlrq.getCheckUnit());
+            tc.setDevId(tSpecdevYlrq.getId());
+            tc.setNextWarnDate(tSpecdevYlrq.getNextWarnDate());
+            tc.setReportNo(tSpecdevYlrq.getReportNo());
+            tc.setWarnDate(tSpecdevYlrq.getWarnDate());
+            tc.setYearNextWarnDate(tSpecdevYlrq.getYearNextWarnDate());
+            tc.setYearWarnDate(tSpecdevYlrq.getYearWarnDate());
+            tc.setYearReportNo(tSpecdevYlrq.getReportNo());
+            tc.setSafeClass(tSpecdevYlrq.getSafeClass());
+            tSpecCheckService.insertTSpecCheck(tc);
+        }*/
+        return toAjax(tSpecdevYlrqService.updateTSpecdevYlrq(tSpecdevYlrq));
+    }
+
+    /**
+     * 修改特种设备压力容器台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:edit')")
+    @Log(title = "特种设备压力容器台账", businessType = BusinessType.UPDATE)
+    @PutMapping("/pre")
+    public AjaxResult editPre(@RequestBody TSpecdevYlrq tSpecdevYlrq) {
+        return toAjax(tSpecdevYlrqService.updateTSpecdevYlrq(tSpecdevYlrq));
+    }
+
+    /**
+     * 删除特种设备压力容器台账
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:remove')")
+    @Log(title = "特种设备压力容器台账", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSpecdevYlrqService.deleteTSpecdevYlrqByIds(ids));
+    }
+
+    /**
+     * 去重
+     */
+    @PreAuthorize("@ss.hasPermi('sems:plant:remove')")
+    @GetMapping("/duplicate")
+    public AjaxResult duplicate() {
+        tSpecdevYlrqService.duplicateTSpecdevYlrq();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 批量导入
+     */
+    @PreAuthorize("@ss.hasPermi('sems:specYlrq:add')")
+    @Log(title = "特种设备批量导入", businessType = BusinessType.INSERT)
+    @PostMapping("/importData")
+    public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException, ParseException {
+        //获取操作人员ID
+        Long userId = getUserId();
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
+        Workbook workbook = ExcelUtils.getWorkBook(file);
+        Sheet sheet = workbook.getSheetAt(0);
+        List<TSpecdevYlrq> list = new ArrayList<TSpecdevYlrq>();
+        //字典查询
+        List<SysDictData> status = iSysDictTypeService.selectDictDataByType("spec_dev_status");
+
+        //部门查询
+        List<SysDept> dept = iSysDeptService.selectDeptList(new SysDept());
+        int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        for (int i = 1; i < rowNum; i++) {
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TSpecdevYlrq entity = new TSpecdevYlrq();
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    cell.getCellType();
+                    String cellValue = ExcelUtils.getCellValue(cell);
+                    if (StringUtils.trim(cellValue) == "") {
+                        continue;
+                    }
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        entity.setPlantCode(cellValue);//
+                    } else if (j == 1) {
+                        entity.setDevno(cellValue);
+                    } else if (j == 2) {
+                        entity.setPidNo(cellValue);//
+                    } else if (j == 3) {
+                        for (SysDictData data : status) {
+                            if (data.getDictLabel().equals(cellValue)) {
+                                entity.setStatus(Long.valueOf(data.getDictValue()));//
+                                break;
+                            }
+                        }
+                    } else if (j == 4) {
+                        entity.setDevname(cellValue);//
+                    } else if (j == 5) {
+                        entity.setDevEnname(cellValue);//
+                    } else if (j == 6) {
+                        entity.setReliefValve(cellValue);//
+                    } else if (j == 7) {
+                        entity.setUseno(cellValue);//
+                    } else if (j == 8) {
+                        entity.setRegno(cellValue);//
+                    } else if (j == 9) {
+                        entity.setFactoryInfo(cellValue);//
+                    } else if (j == 10) {
+                        entity.setNextWarnDate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 11) {
+                        entity.setFactoryNo(cellValue);//
+                    } else if (j == 12) {
+                        entity.setDesignUnit(cellValue);//
+                    } else if (j == 13) {
+                        entity.setCreateUnit(cellValue);//
+                    } else if (j == 14) {
+                        entity.setVesselType(cellValue);//
+                    } else if (j == 15) {
+                        entity.setUseCode(cellValue);//
+                    } else if (j == 16) {
+                        entity.setPressureGrade(cellValue);//
+                    } else if (j == 17) {
+                        entity.setSafeClass(cellValue);//
+                    } else if (j == 18) {
+                        entity.setSubmitdate(DateUtils.parseDate(cellValue));//
+                    } else if (j == 19) {
+                        entity.setDesYear(cellValue);
+                    } else if (j == 20) {
+                        entity.setDesignDead(DateUtils.parseDate(cellValue));
+                    } else if (j == 21) {
+                        entity.setWarnDate(DateUtils.parseDate(cellValue));
+                    } else if (j == 22) {
+                        entity.setRemarks(cellValue);
+                    }
+                }
+                entity.setCreaterCode(userId);
+                logger.info("entity:" + entity);
+                list.add(entity);
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
+            }
+        }
+        int successNumber = 0;
+        int failNum = 0;
+        for (TSpecdevYlrq t : list
+        ) {
+            failNum++;
+            try {
+                tSpecdevYlrqService.insertTSpecdevYlrq(t);
+                successNumber++;
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + e);
+                failRow.add(failNum + 1);
+            }
+        }
+        logger.info("list:" + JSON.toJSONString(list));
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
+    }
+
+}

+ 814 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevAqf.java

@@ -0,0 +1,814 @@
+package com.ruoyi.project.sems.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备安全阀台账对象 t_specdev_aqf
+ *
+ * @author ruoyi
+ * @date 2022-09-28
+ */
+public class TSpecdevAqf extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TSpecdevAqf() {
+    }
+
+    public TSpecdevAqf(TSpecdevMain main) {
+        this.mainId=main.getId();
+        this.devno = main.getDevno();
+        this.pidNo = main.getPidNo();
+        this.manufacturer = main.getManufacturer();
+        this.model = main.getModel();
+        this.devName = main.getDevName();
+        this.devEnname = main.getDevEnname();
+        this.isPid = main.getIsPid();
+        this.installPosition = main.getInstallPosition();
+        this.funcPosition = main.getFuncPosition();
+        this.assetNo = main.getAssetNo();
+        this.securityRelevant = main.getSecurityRelevant();
+        this.securityRelevantFrom = main.getSecurityRelevantFrom();
+        this.productionYear = main.getProductionYear();
+        this.mainSpecifications = main.getMainSpecifications();
+        this.dataPlate = main.getDataPlate();
+        this.status = Long.valueOf(main.getAssetStatus());
+    }
+
+    /** 唯一标识ID */
+    private Long id;
+
+    private Long mainId;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantCode;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devno;
+
+    /** P&ID图号 */
+    @Excel(name = "P&ID图号")
+    private String pidNo;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 介质 */
+    @Excel(name = "介质")
+    private String medium;
+
+    /** 介质相态 */
+    @Excel(name = "介质相态")
+    private String mediumPhase;
+
+    /** 从 */
+    @Excel(name = "从")
+    private String starting;
+
+    /** 到 */
+    @Excel(name = "到")
+    private String arrive;
+
+    /** 生产厂家 */
+    @Excel(name = "生产厂家")
+    private String manufacturer;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String model;
+
+    /** 出厂编号 */
+    @Excel(name = "出厂编号")
+    private String factoryNo;
+
+    /** 阀类型 */
+    @Excel(name = "阀类型")
+    private String valveType;
+
+    /** 数据表 */
+    @Excel(name = "数据表")
+    private String datasheet;
+
+    /** 计算书 */
+    @Excel(name = "计算书")
+    private String calculationBook;
+
+    /** Free Orifice Selected Area mm2 */
+    @Excel(name = "Free Orifice Selected Area mm2")
+    private String selectedArea;
+
+    /** Senarios(design case bold) */
+    @Excel(name = "Senarios(design case bold)")
+    private String senarios;
+
+    /** Required relieving capacity */
+    @Excel(name = "Required relieving capacity")
+    private String requiredRelieving;
+
+    /** Rated relieving  capacity (Kg/hr) */
+    @Excel(name = "Rated relieving  capacity (Kg/hr)")
+    private String ratedRelieving;
+
+    /** 入口尺寸 */
+    @Excel(name = "入口尺寸")
+    private String inletSize;
+
+    /** 入口垫片压力等级 */
+    @Excel(name = "入口垫片压力等级")
+    private String pressureRating;
+
+    /** 出口尺寸 */
+    @Excel(name = "出口尺寸")
+    private String outSize;
+
+    /** 出口垫片压力等级 */
+    @Excel(name = "出口垫片压力等级")
+    private String outPressureRating;
+
+    /** 设定压力 */
+    @Excel(name = "设定压力")
+    private String setPressure;
+
+    /** 背压 */
+    @Excel(name = "背压")
+    private String backPressure;
+
+    /** 是否强检 */
+    @Excel(name = "是否强检")
+    private String isInspection;
+
+    /** 本次校验日期 */
+    @Excel(name = "本次校验日期")
+    private String warnDate;
+
+    /** 下次校验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date nextWarnDate;
+
+    /** 是否需要脚手架 */
+    @Excel(name = "是否需要脚手架")
+    private String needScaffold;
+
+    /** 保温 */
+    @Excel(name = "保温")
+    private String keepWarm;
+
+    /** 吊机 */
+    @Excel(name = "吊机")
+    private String crane;
+
+    /** 提交日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "提交日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /** 状态 */
+    private Long status;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private Long createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+    
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 审核状态 */
+    private Long approveStatus;
+
+
+    /** 中文名 */
+    //@Excel(name = "中文名")
+    private String devName;
+
+    /** 英文名 */
+   // @Excel(name = "英文名")
+    private String devEnname;
+
+    /** 是否在PID上 */
+    //@Excel(name = "是否在PID上")
+    private String isPid;
+
+
+    /** 安装位置 */
+  //  @Excel(name = "安装位置")
+    private String installPosition;
+
+    /** 功能位置 */
+  //  @Excel(name = "功能位置")
+    private String funcPosition;
+
+    /** 资产号 */
+  //  @Excel(name = "资产号")
+    private String assetNo;
+
+    /** 安全相关 */
+ //   @Excel(name = "安全相关")
+    private String securityRelevant;
+
+    /** 安全相关来自于 */
+  //  @Excel(name = "安全相关来自于")
+    private String securityRelevantFrom;
+
+
+    /** 生产年份 */
+  //  @Excel(name = "生产年份")
+    private String productionYear;
+
+
+    /** 主要规格参数 */
+  //  @Excel(name = "主要规格参数")
+    private String mainSpecifications;
+
+    /** 设备铭牌 */
+  //  @Excel(name = "设备铭牌")
+    private String dataPlate;
+
+    /** 最新申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date approveTime;
+
+    /** 状态修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date changeTime;
+
+    private String fuzzy;
+
+    public Long getMainId() {
+        return mainId;
+    }
+
+    public void setMainId(Long mainId) {
+        this.mainId = mainId;
+    }
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setPidNo(String pidNo)
+    {
+        this.pidNo = pidNo;
+    }
+
+    public String getPidNo()
+    {
+        return pidNo;
+    }
+    public void setDescribe(String describe)
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe()
+    {
+        return describe;
+    }
+    public void setMedium(String medium)
+    {
+        this.medium = medium;
+    }
+
+    public String getMedium()
+    {
+        return medium;
+    }
+    public void setMediumPhase(String mediumPhase)
+    {
+        this.mediumPhase = mediumPhase;
+    }
+
+    public String getMediumPhase()
+    {
+        return mediumPhase;
+    }
+    public void setStarting(String starting)
+    {
+        this.starting = starting;
+    }
+
+    public String getStarting()
+    {
+        return starting;
+    }
+    public void setArrive(String arrive)
+    {
+        this.arrive = arrive;
+    }
+
+    public String getArrive()
+    {
+        return arrive;
+    }
+    public void setManufacturer(String manufacturer)
+    {
+        this.manufacturer = manufacturer;
+    }
+
+    public String getManufacturer()
+    {
+        return manufacturer;
+    }
+    public void setModel(String model)
+    {
+        this.model = model;
+    }
+
+    public String getModel()
+    {
+        return model;
+    }
+    public void setFactoryNo(String factoryNo)
+    {
+        this.factoryNo = factoryNo;
+    }
+
+    public String getFactoryNo()
+    {
+        return factoryNo;
+    }
+    public void setValveType(String valveType)
+    {
+        this.valveType = valveType;
+    }
+
+    public String getValveType()
+    {
+        return valveType;
+    }
+    public void setDatasheet(String datasheet)
+    {
+        this.datasheet = datasheet;
+    }
+
+    public String getDatasheet()
+    {
+        return datasheet;
+    }
+    public void setCalculationBook(String calculationBook)
+    {
+        this.calculationBook = calculationBook;
+    }
+
+    public String getCalculationBook()
+    {
+        return calculationBook;
+    }
+    public void setSelectedArea(String selectedArea)
+    {
+        this.selectedArea = selectedArea;
+    }
+
+    public String getSelectedArea()
+    {
+        return selectedArea;
+    }
+    public void setSenarios(String senarios)
+    {
+        this.senarios = senarios;
+    }
+
+    public String getSenarios()
+    {
+        return senarios;
+    }
+    public void setRequiredRelieving(String requiredRelieving)
+    {
+        this.requiredRelieving = requiredRelieving;
+    }
+
+    public String getRequiredRelieving()
+    {
+        return requiredRelieving;
+    }
+    public void setRatedRelieving(String ratedRelieving)
+    {
+        this.ratedRelieving = ratedRelieving;
+    }
+
+    public String getRatedRelieving()
+    {
+        return ratedRelieving;
+    }
+    public void setInletSize(String inletSize)
+    {
+        this.inletSize = inletSize;
+    }
+
+    public String getInletSize()
+    {
+        return inletSize;
+    }
+    public void setPressureRating(String pressureRating)
+    {
+        this.pressureRating = pressureRating;
+    }
+
+    public String getPressureRating()
+    {
+        return pressureRating;
+    }
+    public void setOutSize(String outSize)
+    {
+        this.outSize = outSize;
+    }
+
+    public String getOutSize()
+    {
+        return outSize;
+    }
+    public void setOutPressureRating(String outPressureRating)
+    {
+        this.outPressureRating = outPressureRating;
+    }
+
+    public String getOutPressureRating()
+    {
+        return outPressureRating;
+    }
+    public void setSetPressure(String setPressure)
+    {
+        this.setPressure = setPressure;
+    }
+
+    public String getSetPressure()
+    {
+        return setPressure;
+    }
+    public void setBackPressure(String backPressure)
+    {
+        this.backPressure = backPressure;
+    }
+
+    public String getBackPressure()
+    {
+        return backPressure;
+    }
+    public void setIsInspection(String isInspection)
+    {
+        this.isInspection = isInspection;
+    }
+
+    public String getIsInspection()
+    {
+        return isInspection;
+    }
+    public void setWarnDate(String warnDate)
+    {
+        this.warnDate = warnDate;
+    }
+
+    public String getWarnDate()
+    {
+        return warnDate;
+    }
+    public void setNextWarnDate(Date nextWarnDate)
+    {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate()
+    {
+        return nextWarnDate;
+    }
+    public void setNeedScaffold(String needScaffold)
+    {
+        this.needScaffold = needScaffold;
+    }
+
+    public String getNeedScaffold()
+    {
+        return needScaffold;
+    }
+    public void setKeepWarm(String keepWarm)
+    {
+        this.keepWarm = keepWarm;
+    }
+
+    public String getKeepWarm()
+    {
+        return keepWarm;
+    }
+    public void setCrane(String crane)
+    {
+        this.crane = crane;
+    }
+
+    public String getCrane()
+    {
+        return crane;
+    }
+    public void setSubmitdate(Date submitdate)
+    {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate()
+    {
+        return submitdate;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setApproveStatus(Long approveStatus)
+    {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus()
+    {
+        return approveStatus;
+    }
+    public void setApproveTime(Date approveTime)
+    {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime()
+    {
+        return approveTime;
+    }
+    public void setChangeTime(Date changeTime)
+    {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime()
+    {
+        return changeTime;
+    }
+
+    public String getDevName() {
+        return devName;
+    }
+
+    public void setDevName(String devName) {
+        this.devName = devName;
+    }
+
+    public String getDevEnname() {
+        return devEnname;
+    }
+
+    public void setDevEnname(String devEnname) {
+        this.devEnname = devEnname;
+    }
+
+    public String getIsPid() {
+        return isPid;
+    }
+
+    public void setIsPid(String isPid) {
+        this.isPid = isPid;
+    }
+
+    public String getInstallPosition() {
+        return installPosition;
+    }
+
+    public void setInstallPosition(String installPosition) {
+        this.installPosition = installPosition;
+    }
+
+    public String getFuncPosition() {
+        return funcPosition;
+    }
+
+    public void setFuncPosition(String funcPosition) {
+        this.funcPosition = funcPosition;
+    }
+
+    public String getAssetNo() {
+        return assetNo;
+    }
+
+    public void setAssetNo(String assetNo) {
+        this.assetNo = assetNo;
+    }
+
+    public String getSecurityRelevant() {
+        return securityRelevant;
+    }
+
+    public void setSecurityRelevant(String securityRelevant) {
+        this.securityRelevant = securityRelevant;
+    }
+
+    public String getSecurityRelevantFrom() {
+        return securityRelevantFrom;
+    }
+
+    public void setSecurityRelevantFrom(String securityRelevantFrom) {
+        this.securityRelevantFrom = securityRelevantFrom;
+    }
+
+    public String getProductionYear() {
+        return productionYear;
+    }
+
+    public void setProductionYear(String productionYear) {
+        this.productionYear = productionYear;
+    }
+
+    public String getMainSpecifications() {
+        return mainSpecifications;
+    }
+
+    public void setMainSpecifications(String mainSpecifications) {
+        this.mainSpecifications = mainSpecifications;
+    }
+
+    public String getDataPlate() {
+        return dataPlate;
+    }
+
+    public void setDataPlate(String dataPlate) {
+        this.dataPlate = dataPlate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("devno", getDevno())
+            .append("pidNo", getPidNo())
+            .append("describe", getDescribe())
+            .append("medium", getMedium())
+            .append("mediumPhase", getMediumPhase())
+            .append("starting", getStarting())
+            .append("arrive", getArrive())
+            .append("manufacturer", getManufacturer())
+            .append("model", getModel())
+            .append("factoryNo", getFactoryNo())
+            .append("valveType", getValveType())
+            .append("datasheet", getDatasheet())
+            .append("calculationBook", getCalculationBook())
+            .append("selectedArea", getSelectedArea())
+            .append("senarios", getSenarios())
+            .append("requiredRelieving", getRequiredRelieving())
+            .append("ratedRelieving", getRatedRelieving())
+            .append("inletSize", getInletSize())
+            .append("pressureRating", getPressureRating())
+            .append("outSize", getOutSize())
+            .append("outPressureRating", getOutPressureRating())
+            .append("setPressure", getSetPressure())
+            .append("backPressure", getBackPressure())
+            .append("isInspection", getIsInspection())
+            .append("warnDate", getWarnDate())
+            .append("nextWarnDate", getNextWarnDate())
+            .append("needScaffold", getNeedScaffold())
+            .append("keepWarm", getKeepWarm())
+            .append("crane", getCrane())
+            .append("submitdate", getSubmitdate())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("approveStatus", getApproveStatus())
+            .append("approveTime", getApproveTime())
+            .append("changeTime", getChangeTime())
+            .toString();
+    }
+}

+ 453 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevAsset.java

@@ -0,0 +1,453 @@
+package com.ruoyi.project.sems.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 资产与运营对象 t_specdev_asset
+ *
+ * @author ruoyi
+ * @date 2022-10-12
+ */
+public class TSpecdevAsset extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识id */
+    private Long id;
+
+    /** Type */
+    @Excel(name = "Type")
+    private String type;
+
+    /** 内容 */
+    @Excel(name = "内容")
+    private String content;
+
+    /** PID图号/管线号 */
+    @Excel(name = "PID图号/管线号")
+    private String pidNo;
+
+    /** 分界具体位置及描述 */
+    @Excel(name = "分界具体位置及描述")
+    private String positionDescribe;
+
+    /** According to */
+    @Excel(name = "According to")
+    private String accordingTo;
+
+    /** 资产 */
+    @Excel(name = "资产")
+    private String asset;
+
+    /** DCS操作 */
+    @Excel(name = "DCS操作")
+    private String dcsOperation;
+
+    /** 现场操作8小时 */
+    @Excel(name = "现场操作8小时")
+    private String inSceneOperation;
+
+    /** 现场操作8小时外 */
+    @Excel(name = "现场操作8小时外")
+    private String outSceneOperation;
+
+    /** 巡检8小时 */
+    @Excel(name = "巡检8小时")
+    private String inInspection;
+
+    /** 巡检8小时外 */
+    @Excel(name = "巡检8小时外")
+    private String outInspection;
+
+    /** 维修8小时 */
+    @Excel(name = "维修8小时")
+    private String inRepair;
+
+    /** 维修8小时外 */
+    @Excel(name = "维修8小时外")
+    private String outRepair;
+
+    /** 维修协调8小时 */
+    @Excel(name = "维修协调8小时")
+    private String inMaintenanceCoordination;
+
+    /** 维修协调8小时外 */
+    @Excel(name = "维修协调8小时外")
+    private String outMaintenanceCoordination;
+
+    /** 现场操作8小时 */
+    @Excel(name = "技术管理8小时")
+    private String inTechnicalManagement;
+
+    /** 现场操作8小时外 */
+    @Excel(name = "技术管理8小时外")
+    private String outTechnicalManagement;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 管径 */
+    @Excel(name = "管径")
+    private String pipeDiameter;
+
+    /** 照片 */
+    @Excel(name = "照片")
+    private String picUrl;
+    private String picName;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private Long createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public String getPicName() {
+        return picName;
+    }
+
+    public void setPicName(String picName) {
+        this.picName = picName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setType(String type)
+    {
+        this.type = type;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setPidNo(String pidNo)
+    {
+        this.pidNo = pidNo;
+    }
+
+    public String getPidNo()
+    {
+        return pidNo;
+    }
+    public void setPositionDescribe(String positionDescribe)
+    {
+        this.positionDescribe = positionDescribe;
+    }
+
+    public String getPositionDescribe()
+    {
+        return positionDescribe;
+    }
+    public void setAccordingTo(String accordingTo)
+    {
+        this.accordingTo = accordingTo;
+    }
+
+    public String getAccordingTo()
+    {
+        return accordingTo;
+    }
+    public void setAsset(String asset)
+    {
+        this.asset = asset;
+    }
+
+    public String getAsset()
+    {
+        return asset;
+    }
+    public void setDcsOperation(String dcsOperation)
+    {
+        this.dcsOperation = dcsOperation;
+    }
+
+    public String getDcsOperation()
+    {
+        return dcsOperation;
+    }
+    public void setInSceneOperation(String inSceneOperation)
+    {
+        this.inSceneOperation = inSceneOperation;
+    }
+
+    public String getInSceneOperation()
+    {
+        return inSceneOperation;
+    }
+    public void setOutSceneOperation(String outSceneOperation)
+    {
+        this.outSceneOperation = outSceneOperation;
+    }
+
+    public String getOutSceneOperation()
+    {
+        return outSceneOperation;
+    }
+    public void setInInspection(String inInspection)
+    {
+        this.inInspection = inInspection;
+    }
+
+    public String getInInspection()
+    {
+        return inInspection;
+    }
+    public void setOutInspection(String outInspection)
+    {
+        this.outInspection = outInspection;
+    }
+
+    public String getOutInspection()
+    {
+        return outInspection;
+    }
+    public void setInRepair(String inRepair)
+    {
+        this.inRepair = inRepair;
+    }
+
+    public String getInRepair()
+    {
+        return inRepair;
+    }
+    public void setOutRepair(String outRepair)
+    {
+        this.outRepair = outRepair;
+    }
+
+    public String getOutRepair()
+    {
+        return outRepair;
+    }
+    public void setInMaintenanceCoordination(String inMaintenanceCoordination)
+    {
+        this.inMaintenanceCoordination = inMaintenanceCoordination;
+    }
+
+    public String getInMaintenanceCoordination()
+    {
+        return inMaintenanceCoordination;
+    }
+    public void setOutMaintenanceCoordination(String outMaintenanceCoordination)
+    {
+        this.outMaintenanceCoordination = outMaintenanceCoordination;
+    }
+
+    public String getOutMaintenanceCoordination()
+    {
+        return outMaintenanceCoordination;
+    }
+    public void setInTechnicalManagement(String inTechnicalManagement)
+    {
+        this.inTechnicalManagement = inTechnicalManagement;
+    }
+
+    public String getInTechnicalManagement()
+    {
+        return inTechnicalManagement;
+    }
+    public void setOutTechnicalManagement(String outTechnicalManagement)
+    {
+        this.outTechnicalManagement = outTechnicalManagement;
+    }
+
+    public String getOutTechnicalManagement()
+    {
+        return outTechnicalManagement;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setPipeDiameter(String pipeDiameter)
+    {
+        this.pipeDiameter = pipeDiameter;
+    }
+
+    public String getPipeDiameter()
+    {
+        return pipeDiameter;
+    }
+    public void setPicUrl(String picUrl)
+    {
+        this.picUrl = picUrl;
+    }
+
+    public String getPicUrl()
+    {
+        return picUrl;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("type", getType())
+            .append("content", getContent())
+            .append("pidNo", getPidNo())
+            .append("positionDescribe", getPositionDescribe())
+            .append("accordingTo", getAccordingTo())
+            .append("asset", getAsset())
+            .append("dcsOperation", getDcsOperation())
+            .append("inSceneOperation", getInSceneOperation())
+            .append("outSceneOperation", getOutSceneOperation())
+            .append("inInspection", getInInspection())
+            .append("outInspection", getOutInspection())
+            .append("inRepair", getInRepair())
+            .append("outRepair", getOutRepair())
+            .append("inMaintenanceCoordination", getInMaintenanceCoordination())
+            .append("outMaintenanceCoordination", getOutMaintenanceCoordination())
+            .append("inTechnicalManagement", getInTechnicalManagement())
+            .append("outTechnicalManagement", getOutTechnicalManagement())
+            .append("position", getPosition())
+            .append("pipeDiameter", getPipeDiameter())
+            .append("picUrl", getPicUrl())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 783 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevCc.java

@@ -0,0 +1,783 @@
+package com.ruoyi.project.sems.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备叉车台账对象 t_specdev_cc
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public class TSpecdevCc extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /**设备类别*/
+    @Excel(name = "设备类别")
+    private String devType;
+
+    /** 装置名称 */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /** 型号 */
+    @Excel(name = "设备型号")
+    private String model;
+
+    /** 车牌号 */
+    @Excel(name = "使用登记证编号车牌号")
+    private String carNo;
+
+    /** 注册代码 */
+    @Excel(name = "设备代码")
+    private String regno;
+
+    /** 发动机编号 */
+    @Excel(name = "发动机号/底盘号")
+    private String frameNo;
+
+    /** 下次检验日期 */
+    @JsonFormat(pattern = "yyyy-MM" , timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM")
+    private Date nextWarnDate;
+
+    /**出场资料*/
+    @Excel(name = "出厂资料")
+    private String  factoryInfo;
+
+    /** 使用部门 */
+    @Excel(name = "使用场所")
+    private String useDept;
+
+    /** 防爆级别 */
+    @Excel(name = "防爆等级")
+    private String exGrade;
+
+    /** 制造单位 */
+    @Excel(name = "制造单位")
+    private String createUnit;
+
+    /** 检验状态 */
+    @Excel(name = "检验状态")
+
+    private String checkStatus;
+
+    /** 单元 */
+    //@Excel(name = "单元")
+    private String unit;
+
+    /** 装置维修组 */
+    //@Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /** 装置维护人员 */
+    //@Excel(name = "装置维护人员")
+    private String engineer;
+
+
+    /** 档案号 */
+   // @Excel(name = "档案号")
+    private String docno;
+
+    /** 状态 */
+   // @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+    /** 审核状态 */
+    //@Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /** 颜色 */
+   // @Excel(name = "颜色")
+    private String color;
+
+    /** 工作能力(t) */
+   // @Excel(name = "工作能力(Ton)")
+    private String capacity;
+
+    /** 设备名称 */
+   // @Excel(name = "设备品种(名称)")
+    private String devname;
+
+    /** 动力形式 */
+    //@Excel(name = "动力形式")
+    private String engineType;
+
+
+
+    /** 车架编号 */
+    //@Excel(name = "车架(底盘)编号")
+    private String engineNo;
+
+    /** 产品编号 */
+   // @Excel(name = "产品编号")
+    private String productNo;
+
+    /** 防爆改造厂家 */
+    //@Excel(name = "防爆改造厂家")
+    private String exUnit;
+
+    /** 初检日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "初检日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date firstWarnDate;
+
+    /** 检测策略 */
+   // @Excel(name = "检测策略")
+    private String checkStrategy;
+
+    /** 检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warnDate;
+
+
+    /** 报告编号 */
+   // @Excel(name = "报告编号")
+    private String reportNo;
+
+
+
+    /** 资产归属形式 */
+   // @Excel(name = "资产归属形式")
+    private String assetOwner;
+    /** 定期检验结论 */
+   // @Excel(name = "定期检验结论")
+    private String perTestConclusion;
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 设备位号 */
+    //@Excel(name = "设备位号")
+    private String devno;
+
+    /** 提交日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "投用日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private Long createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 部门编号 */
+    //@Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 使用证编号 */
+    //@Excel(name = "使用证编号")
+    private String useno;
+
+    /** 检测周期 */
+    private Long warnCycle;
+
+    /** 预警标识 */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+    /** 检验单位 */
+    //@Excel(name = "检验单位")
+    private String checkUnit;
+
+    /** 最新申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /** 状态修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+    /** 类别 */
+    //@Excel(name = "类别")
+    private String devClass;
+
+    /** 部门名称 */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+
+    private Long devId;
+
+
+    private Long hiType;
+
+
+    private Long hiFlag;
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+    private Long isRepeat;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getDevType() {
+        return devType;
+    }
+
+    public void setDevType(String devType) {
+        this.devType = devType;
+    }
+
+    public String getFactoryInfo() {
+        return factoryInfo;
+    }
+
+    public void setFactoryInfo(String factoryInfo) {
+        this.factoryInfo = factoryInfo;
+    }
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public String getPerTestConclusion() {
+        return perTestConclusion;
+    }
+
+    public void setPerTestConclusion(String perTestConclusion) {
+        this.perTestConclusion = perTestConclusion;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public String getFrameNo() {
+        return frameNo;
+    }
+
+    public void setFrameNo(String frameNo) {
+        this.frameNo = frameNo;
+    }
+
+    public String getProductNo() {
+        return productNo;
+    }
+
+    public void setProductNo(String productNo) {
+        this.productNo = productNo;
+    }
+
+    public String getAssetOwner() {
+        return assetOwner;
+    }
+
+    public void setAssetOwner(String assetOwner) {
+        this.assetOwner = assetOwner;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setCarNo(String carNo)
+    {
+        this.carNo = carNo;
+    }
+
+    public String getCarNo()
+    {
+        return carNo;
+    }
+    public void setDevname(String devname)
+    {
+        this.devname = devname;
+    }
+
+    public String getDevname()
+    {
+        return devname;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setSubmitdate(Date submitdate)
+    {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate()
+    {
+        return submitdate;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setApproveStatus(Long approveStatus)
+    {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus()
+    {
+        return approveStatus;
+    }
+    public void setRegno(String regno)
+    {
+        this.regno = regno;
+    }
+
+    public String getRegno()
+    {
+        return regno;
+    }
+    public void setUseno(String useno)
+    {
+        this.useno = useno;
+    }
+
+    public String getUseno()
+    {
+        return useno;
+    }
+    public void setWarnDate(Date warnDate)
+    {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate()
+    {
+        return warnDate;
+    }
+    public void setWarnCycle(Long warnCycle)
+    {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle()
+    {
+        return warnCycle;
+    }
+    public void setNextWarnDate(Date nextWarnDate)
+    {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate()
+    {
+        return nextWarnDate;
+    }
+    public void setWarnFlag(Long warnFlag)
+    {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag()
+    {
+        return warnFlag;
+    }
+    public void setCreateUnit(String createUnit)
+    {
+        this.createUnit = createUnit;
+    }
+
+    public String getCreateUnit()
+    {
+        return createUnit;
+    }
+    public void setCheckStrategy(String checkStrategy)
+    {
+        this.checkStrategy = checkStrategy;
+    }
+
+    public String getCheckStrategy()
+    {
+        return checkStrategy;
+    }
+    public void setFirstWarnDate(Date firstWarnDate)
+    {
+        this.firstWarnDate = firstWarnDate;
+    }
+
+    public Date getFirstWarnDate()
+    {
+        return firstWarnDate;
+    }
+    public void setCheckUnit(String checkUnit)
+    {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit()
+    {
+        return checkUnit;
+    }
+    public void setDocno(String docno)
+    {
+        this.docno = docno;
+    }
+
+    public String getDocno()
+    {
+        return docno;
+    }
+    public void setApproveTime(Date approveTime)
+    {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime()
+    {
+        return approveTime;
+    }
+    public void setChangeTime(Date changeTime)
+    {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime()
+    {
+        return changeTime;
+    }
+    public void setEngineNo(String engineNo)
+    {
+        this.engineNo = engineNo;
+    }
+
+    public String getEngineNo()
+    {
+        return engineNo;
+    }
+    public void setColor(String color)
+    {
+        this.color = color;
+    }
+
+    public String getColor()
+    {
+        return color;
+    }
+    public void setCapacity(String capacity)
+    {
+        this.capacity = capacity;
+    }
+
+    public String getCapacity()
+    {
+        return capacity;
+    }
+    public void setModel(String model)
+    {
+        this.model = model;
+    }
+
+    public String getModel()
+    {
+        return model;
+    }
+    public void setEngineType(String engineType)
+    {
+        this.engineType = engineType;
+    }
+
+    public String getEngineType()
+    {
+        return engineType;
+    }
+    public void setDevClass(String devClass)
+    {
+        this.devClass = devClass;
+    }
+
+    public String getDevClass()
+    {
+        return devClass;
+    }
+    public void setExUnit(String exUnit)
+    {
+        this.exUnit = exUnit;
+    }
+
+    public String getExUnit()
+    {
+        return exUnit;
+    }
+    public void setUseDept(String useDept)
+    {
+        this.useDept = useDept;
+    }
+
+    public String getUseDept()
+    {
+        return useDept;
+    }
+    public void setEngineer(String engineer)
+    {
+        this.engineer = engineer;
+    }
+
+    public String getEngineer()
+    {
+        return engineer;
+    }
+    public void setExGrade(String exGrade)
+    {
+        this.exGrade = exGrade;
+    }
+
+    public String getExGrade()
+    {
+        return exGrade;
+    }
+    public void setReportNo(String reportNo)
+    {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo()
+    {
+        return reportNo;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getPlantMaint() {
+        return plantMaint;
+    }
+
+    public void setPlantMaint(String plantMaint) {
+        this.plantMaint = plantMaint;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("carNo", getCarNo())
+            .append("devname", getDevname())
+            .append("devno", getDevno())
+            .append("submitdate", getSubmitdate())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("approveStatus", getApproveStatus())
+            .append("regno", getRegno())
+            .append("useno", getUseno())
+            .append("warnDate", getWarnDate())
+            .append("warnCycle", getWarnCycle())
+            .append("nextWarnDate", getNextWarnDate())
+            .append("warnFlag", getWarnFlag())
+            .append("createUnit", getCreateUnit())
+            .append("checkStrategy", getCheckStrategy())
+            .append("firstWarnDate", getFirstWarnDate())
+            .append("checkUnit", getCheckUnit())
+            .append("docno", getDocno())
+            .append("approveTime", getApproveTime())
+            .append("changeTime", getChangeTime())
+            .append("engineNo", getEngineNo())
+            .append("color", getColor())
+            .append("capacity", getCapacity())
+            .append("model", getModel())
+            .append("engineType", getEngineType())
+            .append("devClass", getDevClass())
+            .append("exUnit", getExUnit())
+            .append("useDept", getUseDept())
+            .append("engineer", getEngineer())
+            .append("exGrade", getExGrade())
+            .append("reportNo", getReportNo())
+            .toString();
+    }
+}

+ 763 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDt.java

@@ -0,0 +1,763 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备电梯台账对象 t_specdev_dt
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+
+public class TSpecdevDt extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一标识ID
+     */
+    private Long id;
+
+    /**
+     * 装置名称
+     */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "型号")
+    private String model;
+
+    /**
+     * 使用地点
+     */
+    @Excel(name = "使用场所")
+    private String location;
+
+    /**
+     * 下次年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM")
+    private Date nextWarnDate;
+
+    /**
+     * 使用登记证编号 车牌号
+     */
+    @Excel(name = "使用登记证编号 车牌号")
+    private String plateNo;
+
+    /**
+     * 出厂资料
+     */
+    @Excel(name = "出厂资料")
+    private String factoryInfo;
+
+    /**
+     * 发动机号/底盘号
+     */
+    @Excel(name = "发动机号/底盘号")
+    private String engineNo;
+
+    /** 防爆级别*/
+    @Excel(name = "防爆级别")
+    private String exGrade;
+
+    /**
+     * 制造单位
+     */
+    @Excel(name = "制造单位")
+    private String createUnit;
+
+    /**
+     * 状态
+     */
+    @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+
+    /**
+     * 单元
+     */
+//    @Excel(name = "单元")
+    private String unit;
+
+    /**
+     * 档案号
+     */
+    //@Excel(name = "档案号")
+    private String docno;
+
+    /**
+     * 使用部门
+     */
+    //@Excel(name = "使用部门")
+    private String useDept;
+
+    /**
+     * 装置维修组
+     */
+   // @Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /**
+     * 设备名称
+     */
+   // @Excel(name = "名称")
+    private String devname;
+
+    /**
+     * 注册代码
+     */
+   // @Excel(name = "注册编号")
+    private String regno;
+
+    /**
+     * 审核状态
+     */
+    //@Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /**
+     * 额定载重
+     */
+   // @Excel(name = "额定载重量(kg)")
+    private String capacity;
+
+    /**
+     * 层站数
+     */
+   // @Excel(name = "层站数")
+    private String floor;
+
+    /**
+     * 维保承包商
+     */
+   // @Excel(name = "维保承包商")
+    private String maintContractor;
+
+    /**
+     * 初检日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "初检日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date firstWarnDate;
+
+    /**
+     * 检验日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    ///@Excel(name = "检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warnDate;
+
+    /**
+     * 检验单位
+     */
+   // @Excel(name = "检验单位")
+    private String checkUnit;
+
+    /**
+     * 报告编号
+     */
+  //  @Excel(name = "报告编号")
+    private String reportNo;
+
+
+    /**
+     * 定期检验结论
+     */
+   // @Excel(name = "定期检验结论")
+    private String perTestConclusion;
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 设备位号
+     */
+    //@Excel(name = "设备位号")
+    private String devno;
+
+    /**
+     * 创建日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /**
+     * 提交日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "投用日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /**
+     * 状态 0 :正常 ;-1:删除
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    private Long createrCode;
+
+    /**
+     * 创建时间
+     */
+    private Date createrDate;
+
+    /**
+     * 修改人
+     */
+    private Long updaterCode;
+
+    /**
+     * 修改时间
+     */
+    private Date updaterDate;
+
+    /**
+     * 部门编号
+     */
+    //@Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 使用证编号
+     */
+    //@Excel(name = "使用证编号")
+    private String useno;
+
+    /**
+     * 检测周期
+     */
+    private Long warnCycle;
+
+    /**
+     * 预警标识
+     */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+    /**
+     * 检测策略
+     */
+    //@Excel(name = "检测策略")
+    private String checkStrategy;
+
+    /**
+     * 最新申请时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /**
+     * 状态修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+    /**
+     * 部门名称
+     */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+
+    private Long devId;
+
+
+    private Long hiType;
+
+
+    private Long hiFlag;
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+    private Long isRepeat;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getPlateNo() {
+        return plateNo;
+    }
+
+    public void setPlateNo(String plateNo) {
+        this.plateNo = plateNo;
+    }
+
+    public String getExGrade() {
+        return exGrade;
+    }
+
+    public void setExGrade(String exGrade) {
+        this.exGrade = exGrade;
+    }
+
+    public String getEngineNo() {
+        return engineNo;
+    }
+
+    public void setEngineNo(String engineNo) {
+        this.engineNo = engineNo;
+    }
+
+    public String getFactoryInfo() {
+        return factoryInfo;
+    }
+
+    public void setFactoryInfo(String factoryInfo) {
+        this.factoryInfo = factoryInfo;
+    }
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public String getPerTestConclusion() {
+        return perTestConclusion;
+    }
+
+    public void setPerTestConclusion(String perTestConclusion) {
+        this.perTestConclusion = perTestConclusion;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setPlantCode(String plantCode) {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode() {
+        return plantCode;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setDevname(String devname) {
+        this.devname = devname;
+    }
+
+    public String getDevname() {
+        return devname;
+    }
+
+    public void setDevno(String devno) {
+        this.devno = devno;
+    }
+
+    public String getDevno() {
+        return devno;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setSubmitdate(Date submitdate) {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate() {
+        return submitdate;
+    }
+
+    public void setStatus(Long status) {
+        this.status = status;
+    }
+
+    public Long getStatus() {
+        return status;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(Long createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setCreaterDate(Date createrDate) {
+        this.createrDate = createrDate;
+    }
+
+    public Date getCreaterDate() {
+        return createrDate;
+    }
+
+    public void setUpdaterCode(Long updaterCode) {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode() {
+        return updaterCode;
+    }
+
+    public void setUpdaterDate(Date updaterDate) {
+        this.updaterDate = updaterDate;
+    }
+
+    public Date getUpdaterDate() {
+        return updaterDate;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setApproveStatus(Long approveStatus) {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus() {
+        return approveStatus;
+    }
+
+    public void setRegno(String regno) {
+        this.regno = regno;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    public String getRegno() {
+        return regno;
+    }
+
+    public void setUseno(String useno) {
+        this.useno = useno;
+    }
+
+    public String getUseno() {
+        return useno;
+    }
+
+    public void setWarnDate(Date warnDate) {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate() {
+        return warnDate;
+    }
+
+    public void setWarnCycle(Long warnCycle) {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle() {
+        return warnCycle;
+    }
+
+    public void setNextWarnDate(Date nextWarnDate) {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate() {
+        return nextWarnDate;
+    }
+
+    public void setWarnFlag(Long warnFlag) {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag() {
+        return warnFlag;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setCapacity(String capacity) {
+        this.capacity = capacity;
+    }
+
+    public String getCapacity() {
+        return capacity;
+    }
+
+    public void setFloor(String floor) {
+        this.floor = floor;
+    }
+
+    public String getFloor() {
+        return floor;
+    }
+
+    public void setCreateUnit(String createUnit) {
+        this.createUnit = createUnit;
+    }
+
+    public String getCreateUnit() {
+        return createUnit;
+    }
+
+    public void setMaintContractor(String maintContractor) {
+        this.maintContractor = maintContractor;
+    }
+
+    public String getMaintContractor() {
+        return maintContractor;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setCheckStrategy(String checkStrategy) {
+        this.checkStrategy = checkStrategy;
+    }
+
+    public String getCheckStrategy() {
+        return checkStrategy;
+    }
+
+    public void setFirstWarnDate(Date firstWarnDate) {
+        this.firstWarnDate = firstWarnDate;
+    }
+
+    public Date getFirstWarnDate() {
+        return firstWarnDate;
+    }
+
+    public void setCheckUnit(String checkUnit) {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit() {
+        return checkUnit;
+    }
+
+    public void setDocno(String docno) {
+        this.docno = docno;
+    }
+
+    public String getDocno() {
+        return docno;
+    }
+
+    public void setApproveTime(Date approveTime) {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime() {
+        return approveTime;
+    }
+
+    public void setChangeTime(Date changeTime) {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime() {
+        return changeTime;
+    }
+
+    public void setReportNo(String reportNo) {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo() {
+        return reportNo;
+    }
+
+    public String getUseDept() {
+        return useDept;
+    }
+
+    public void setUseDept(String useDept) {
+        this.useDept = useDept;
+    }
+
+    public String getPlantMaint() {
+        return plantMaint;
+    }
+
+    public void setPlantMaint(String plantMaint) {
+        this.plantMaint = plantMaint;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("plantCode", getPlantCode())
+                .append("unit", getUnit())
+                .append("devname", getDevname())
+                .append("devno", getDevno())
+                .append("createdate", getCreatedate())
+                .append("submitdate", getSubmitdate())
+                .append("status", getStatus())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createrDate", getCreaterDate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updaterDate", getUpdaterDate())
+                .append("deptId", getDeptId())
+                .append("remarks", getRemarks())
+                .append("approveStatus", getApproveStatus())
+                .append("regno", getRegno())
+                .append("useno", getUseno())
+                .append("warnDate", getWarnDate())
+                .append("warnCycle", getWarnCycle())
+                .append("nextWarnDate", getNextWarnDate())
+                .append("warnFlag", getWarnFlag())
+                .append("model", getModel())
+                .append("capacity", getCapacity())
+                .append("floor", getFloor())
+                .append("createUnit", getCreateUnit())
+                .append("maintContractor", getMaintContractor())
+                .append("location", getLocation())
+                .append("checkStrategy", getCheckStrategy())
+                .append("firstWarnDate", getFirstWarnDate())
+                .append("checkUnit", getCheckUnit())
+                .append("docno", getDocno())
+                .append("approveTime", getApproveTime())
+                .append("changeTime", getChangeTime())
+                .append("reportNo", getReportNo())
+                .toString();
+    }
+}

+ 794 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevDzsb.java

@@ -0,0 +1,794 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备吊装设备台账对象 t_specdev_dzsb
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+
+public class TSpecdevDzsb extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一标识ID
+     */
+    private Long id;
+
+    /**
+     * 设备类别
+     */
+    @Excel(name = "设备类别")
+    private String devType;
+
+    /**
+     * 装置名称
+     */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /**
+     * 设备类别2
+     */
+    @Excel(name = "设备类别2")
+    private String devType2;
+
+    /**
+     * 型号
+     */
+    @Excel(name = "设备型号")
+    private String model;
+
+    /**
+     * 下次年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM")
+    private Date nextWarnDate;
+
+    /**
+     * 出场资料
+     */
+    @Excel(name = "出场资料")
+    private String factoryInfo;
+
+    /**
+     * 使用登记证编号 车牌号
+     */
+    @Excel(name = "使用登记证编号 车牌号")
+    private String plateNo;
+
+    /**
+     * 设备代码
+     */
+    @Excel(name = "设备代码")
+    private String devCode;
+
+    /**
+     * 发动机号/底盘号
+     */
+    @Excel(name = "发动机号/底盘号")
+    private String engineNo;
+
+    /**
+     * 防爆等级
+     */
+    @Excel(name = "防爆等级")
+    private String exLevel;
+
+    /**
+     * 制造单位
+     */
+    @Excel(name = "制造单位")
+    private String createUnit;
+
+    /**
+     * 状态
+     */
+    @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+    /**
+     * 检验状态
+     */
+
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+    /**
+     * 单元
+     */
+    //@Excel(name = "单元")
+    private String unit;
+
+    /**
+     * 装置维修组
+     */
+    //@Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /**
+     * 工程师
+     */
+    //@Excel(name = "装置维修工程师")
+    private String engineer;
+
+    /**
+     * 审核状态
+     */
+    //@Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /**
+     * 设备名称
+     */
+    //@Excel(name = "设备名称")
+    private String devname;
+
+    /**
+     * 设备位号
+     */
+   // @Excel(name = "设备位号")
+    private String devno;
+
+    /**
+     * 档案号
+     */
+    //@Excel(name = "档案号")
+    private String docno;
+
+    /**
+     * 产品出厂编号
+     */
+    //@Excel(name = "产品出厂编号")
+    private String factoryNo;
+
+    /**
+     * 起吊重量
+     */
+    //@Excel(name = "起吊重量(Ton)")
+    private String capacity;
+
+    /**
+     * 设备使用地点
+     */
+    //@Excel(name = "使用地点")
+    private String location;
+
+    /**
+     * 注册代码
+     */
+    //@Excel(name = "设备注册登记证编号")
+    private String regno;
+
+    /**
+     * 提交日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "投用日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /**
+     * 是否防爆
+     */
+    //@Excel(name = "是否防爆")
+    private String isEx;
+
+    /**
+     * 检验单位
+     */
+    //@Excel(name = "检验单位")
+    private String checkUnit;
+
+    /**
+     * 检验策略
+     */
+    //@Excel(name = "检验策略")
+    private String checkStrategy;
+
+    /**
+     * 上次年检时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warnDate;
+
+    /**
+     * 报告编号
+     */
+    //@Excel(name = "检验报告编号")
+    private String reportNo;
+
+    /**
+     * 定期检验结论
+     */
+    //@Excel(name = "定期检验结论")
+    private String perTestConclusion;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 状态 1 :正常 ;0:删除
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    private Long createrCode;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 修改人
+     */
+    private Long updaterCode;
+
+    /**
+     * 修改时间
+     */
+    private Date updatedate;
+
+    /**
+     * 部门编号
+     */
+    //@Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 使用证编号
+     */
+    //@Excel(name = "使用证编号")
+    private String useno;
+
+    /**
+     * 检测周期
+     */
+    //@Excel(name = "检测周期")
+    private Long warnCycle;
+
+    /**
+     * 预警标识
+     */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+    /**
+     * 年度维保日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "年度维保日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date yearMaint;
+
+    /**
+     * 最新申请时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /**
+     * 状态修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+    /**
+     * 部门名称
+     */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+
+    private Long devId;
+
+
+    private Long hiType;
+
+
+    private Long hiFlag;
+
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+    private Long isRepeat;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getDevType() {
+        return devType;
+    }
+
+    public void setDevType(String devType) {
+        this.devType = devType;
+    }
+
+    public String getDevType2() {
+        return devType2;
+    }
+
+    public void setDevType2(String devType2) {
+        this.devType2 = devType2;
+    }
+
+    public String getFactoryInfo() {
+        return factoryInfo;
+    }
+
+    public void setFactoryInfo(String factoryInfo) {
+        this.factoryInfo = factoryInfo;
+    }
+
+    public String getPlateNo() {
+        return plateNo;
+    }
+
+    public void setPlateNo(String plateNo) {
+        this.plateNo = plateNo;
+    }
+
+    public String getEngineNo() {
+        return engineNo;
+    }
+
+    public void setEngineNo(String engineNo) {
+        this.engineNo = engineNo;
+    }
+
+    public String getExLevel() {
+        return exLevel;
+    }
+
+    public void setExLevel(String exLevel) {
+        this.exLevel = exLevel;
+    }
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public String getPerTestConclusion() {
+        return perTestConclusion;
+    }
+
+    public void setPerTestConclusion(String perTestConclusion) {
+        this.perTestConclusion = perTestConclusion;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public String getIsEx() {
+        return isEx;
+    }
+
+    public void setIsEx(String isEx) {
+        this.isEx = isEx;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setPlantCode(String plantCode) {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode() {
+        return plantCode;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setDevname(String devname) {
+        this.devname = devname;
+    }
+
+    public String getDevname() {
+        return devname;
+    }
+
+    public void setDevno(String devno) {
+        this.devno = devno;
+    }
+
+    public String getDevno() {
+        return devno;
+    }
+
+    public void setSubmitdate(Date submitdate) {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate() {
+        return submitdate;
+    }
+
+    public void setStatus(Long status) {
+        this.status = status;
+    }
+
+    public Long getStatus() {
+        return status;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(Long createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setUpdaterCode(Long updaterCode) {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode() {
+        return updaterCode;
+    }
+
+    public void setUpdatedate(Date updatedate) {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate() {
+        return updatedate;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setApproveStatus(Long approveStatus) {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus() {
+        return approveStatus;
+    }
+
+    public void setRegno(String regno) {
+        this.regno = regno;
+    }
+
+    public String getRegno() {
+        return regno;
+    }
+
+    public void setUseno(String useno) {
+        this.useno = useno;
+    }
+
+    public String getUseno() {
+        return useno;
+    }
+
+    public void setWarnDate(Date warnDate) {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate() {
+        return warnDate;
+    }
+
+    public void setWarnCycle(Long warnCycle) {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle() {
+        return warnCycle;
+    }
+
+    public void setNextWarnDate(Date nextWarnDate) {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate() {
+        return nextWarnDate;
+    }
+
+    public void setWarnFlag(Long warnFlag) {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag() {
+        return warnFlag;
+    }
+
+    public void setPlantMaint(String plantMaint) {
+        this.plantMaint = plantMaint;
+    }
+
+    public String getPlantMaint() {
+        return plantMaint;
+    }
+
+    public void setDocno(String docno) {
+        this.docno = docno;
+    }
+
+    public String getDocno() {
+        return docno;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setCapacity(String capacity) {
+        this.capacity = capacity;
+    }
+
+    public String getCapacity() {
+        return capacity;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setCreateUnit(String createUnit) {
+        this.createUnit = createUnit;
+    }
+
+    public String getCreateUnit() {
+        return createUnit;
+    }
+
+    public void setCheckStrategy(String checkStrategy) {
+        this.checkStrategy = checkStrategy;
+    }
+
+    public String getCheckStrategy() {
+        return checkStrategy;
+    }
+
+    public void setYearMaint(Date yearMaint) {
+        this.yearMaint = yearMaint;
+    }
+
+    public Date getYearMaint() {
+        return yearMaint;
+    }
+
+    public void setReportNo(String reportNo) {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo() {
+        return reportNo;
+    }
+
+    public void setApproveTime(Date approveTime) {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime() {
+        return approveTime;
+    }
+
+    public void setChangeTime(Date changeTime) {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime() {
+        return changeTime;
+    }
+
+    public void setCheckUnit(String checkUnit) {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit() {
+        return checkUnit;
+    }
+
+    public void setEngineer(String engineer) {
+        this.engineer = engineer;
+    }
+
+    public String getEngineer() {
+        return engineer;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    public String getFactoryNo() {
+        return factoryNo;
+    }
+
+    public void setFactoryNo(String factoryNo) {
+        this.factoryNo = factoryNo;
+    }
+
+    public String getDevCode() {
+        return devCode;
+    }
+
+    public void setDevCode(String devCode) {
+        this.devCode = devCode;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("plantCode", getPlantCode())
+                .append("unit", getUnit())
+                .append("devname", getDevname())
+                .append("devno", getDevno())
+                .append("submitdate", getSubmitdate())
+                .append("status", getStatus())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .append("remarks", getRemarks())
+                .append("approveStatus", getApproveStatus())
+                .append("regno", getRegno())
+                .append("useno", getUseno())
+                .append("warnDate", getWarnDate())
+                .append("warnCycle", getWarnCycle())
+                .append("nextWarnDate", getNextWarnDate())
+                .append("warnFlag", getWarnFlag())
+                .append("plantMaint", getPlantMaint())
+                .append("docno", getDocno())
+                .append("model", getModel())
+                .append("capacity", getCapacity())
+                .append("location", getLocation())
+                .append("createUnit", getCreateUnit())
+                .append("checkStrategy", getCheckStrategy())
+                .append("yearMaint", getYearMaint())
+                .append("reportNo", getReportNo())
+                .append("approveTime", getApproveTime())
+                .append("changeTime", getChangeTime())
+                .append("checkUnit", getCheckUnit())
+                .append("engineer", getEngineer())
+                .toString();
+    }
+}

+ 571 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevFixedAsset.java

@@ -0,0 +1,571 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 固定资产对象 t_specdev_fixed_asset
+ *
+ * @author ruoyi
+ * @date 2022-10-18
+ */
+public class TSpecdevFixedAsset extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    public TSpecdevFixedAsset(TSpecdevMain main) {
+        this.devNo = main.getDevno();
+        this.pidNo = main.getPidNo();
+        this.devName = main.getDevName();
+        this.devEnname = main.getDevEnname();
+        this.installPosition = main.getInstallPosition();
+//        this.assetNo = main.getAssetNo();
+        this.usingStatus = main.getAssetStatus();
+    }
+
+    public TSpecdevFixedAsset() {
+    }
+
+    /**
+     * 唯一标识id
+     */
+    private Long id;
+
+    /**
+     * 资产类别
+     */
+    @Excel(name = "资产类别")
+    private String assetType;
+
+    /**
+     * 资产编号
+     */
+    @Excel(name = "资产编号")
+    private String assetNo;
+
+    /**
+     * 资产子编号
+     */
+    @Excel(name = "资产子编号")
+    private String assetSubNo;
+
+    /**
+     * 资产描述(中文)
+     */
+    @Excel(name = "资产描述(中文)")
+    private String devName;
+
+    /**
+     * 资产描述(英文)
+     */
+    @Excel(name = "资产描述(英文)")
+    private String devEnname;
+
+    /**
+     * 成本中心名称
+     */
+    @Excel(name = "成本中心名称")
+    private String costCenter;
+
+    /**
+     * 成本中心代码
+     */
+    @Excel(name = "成本中心代码")
+    private String costCenterCode;
+
+    /**
+     * 资产类别AP03XXX
+     */
+    @Excel(name = "资产类别AP03XXX")
+    private String assetTypeAp;
+
+    /**
+     * 资本化日期Capitalized on
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "资本化日期Capitalized on", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date capitalizedDate;
+
+    /**
+     * 数量Quantity
+     */
+    @Excel(name = "数量Quantity")
+    private String quantity;
+
+    /**
+     * 币种
+     */
+    @Excel(name = "币种")
+    private String currency;
+
+    /**
+     * 原值Current APC
+     */
+    @Excel(name = "原值Current APC")
+    private String currentApc;
+
+    /**
+     * 使用年限
+     */
+    @Excel(name = "使用年限")
+    private String serviceLife;
+
+    /**
+     * 管理人
+     */
+    @Excel(name = "管理人")
+    private String administrator;
+
+    /**
+     * 位号
+     */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /**
+     * 资产详细
+     */
+    @Excel(name = "资产详细")
+    private String assetDetail;
+
+    /**
+     * 工艺子单元
+     */
+    @Excel(name = "工艺子单元")
+    private String processSubunit;
+
+    /**
+     * PID图号/其他图号
+     */
+    @Excel(name = "PID图号/其他图号")
+    private String pidNo;
+
+    /**
+     * 安装位置
+     */
+    @Excel(name = "安装位置")
+    private String installPosition;
+
+    /**
+     * 创建原由(项目号MOC号)
+     */
+    @Excel(name = "创建原由(项目号MOC号)")
+    private String createReason;
+
+    /**
+     * 条形码位置
+     */
+    @Excel(name = "条形码位置")
+    private String barcodePosition;
+
+    /**
+     * 报废原由
+     */
+    @Excel(name = "报废原由")
+    private String scrapReason;
+
+    /**
+     * 报废提出时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "报废提出时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date scrapPoseDate;
+
+    /**
+     * 报废完成时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "报废完成时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date scrapDoneDate;
+
+    /**
+     * 报废人
+     */
+    @Excel(name = "报废人")
+    private String scraper;
+
+    /**
+     * 在用状态
+     */
+    @Excel(name = "在用状态", dictType = "spec_dev_status")
+    private String usingStatus;
+
+    /**
+     * 状态
+     */
+    private Long status;
+
+    /**
+     * 状态 0 :正常 ;-1:删除
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    private Long createrCode;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createdate;
+
+    /**
+     * 修改人
+     */
+    private Long updaterCode;
+
+    /**
+     * 修改时间
+     */
+    private Date updatedate;
+
+    /**
+     * 部门编号
+     */
+    private Long deptId;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAssetType(String assetType) {
+        this.assetType = assetType;
+    }
+
+    public String getAssetType() {
+        return assetType;
+    }
+
+    public void setAssetNo(String assetNo) {
+        this.assetNo = assetNo;
+    }
+
+    public String getAssetNo() {
+        return assetNo;
+    }
+
+    public void setAssetSubNo(String assetSubNo) {
+        this.assetSubNo = assetSubNo;
+    }
+
+    public String getAssetSubNo() {
+        return assetSubNo;
+    }
+
+    public void setDevName(String devName) {
+        this.devName = devName;
+    }
+
+    public String getDevName() {
+        return devName;
+    }
+
+    public void setDevEnname(String devEnname) {
+        this.devEnname = devEnname;
+    }
+
+    public String getDevEnname() {
+        return devEnname;
+    }
+
+    public void setCostCenter(String costCenter) {
+        this.costCenter = costCenter;
+    }
+
+    public String getCostCenter() {
+        return costCenter;
+    }
+
+    public void setCostCenterCode(String costCenterCode) {
+        this.costCenterCode = costCenterCode;
+    }
+
+    public String getCostCenterCode() {
+        return costCenterCode;
+    }
+
+    public void setAssetTypeAp(String assetTypeAp) {
+        this.assetTypeAp = assetTypeAp;
+    }
+
+    public String getAssetTypeAp() {
+        return assetTypeAp;
+    }
+
+    public void setCapitalizedDate(Date capitalizedDate) {
+        this.capitalizedDate = capitalizedDate;
+    }
+
+    public Date getCapitalizedDate() {
+        return capitalizedDate;
+    }
+
+    public void setQuantity(String quantity) {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity() {
+        return quantity;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrentApc(String currentApc) {
+        this.currentApc = currentApc;
+    }
+
+    public String getCurrentApc() {
+        return currentApc;
+    }
+
+    public void setServiceLife(String serviceLife) {
+        this.serviceLife = serviceLife;
+    }
+
+    public String getServiceLife() {
+        return serviceLife;
+    }
+
+    public void setAdministrator(String administrator) {
+        this.administrator = administrator;
+    }
+
+    public String getAdministrator() {
+        return administrator;
+    }
+
+    public void setDevNo(String devNo) {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo() {
+        return devNo;
+    }
+
+    public void setAssetDetail(String assetDetail) {
+        this.assetDetail = assetDetail;
+    }
+
+    public String getAssetDetail() {
+        return assetDetail;
+    }
+
+    public void setProcessSubunit(String processSubunit) {
+        this.processSubunit = processSubunit;
+    }
+
+    public String getProcessSubunit() {
+        return processSubunit;
+    }
+
+    public void setPidNo(String pidNo) {
+        this.pidNo = pidNo;
+    }
+
+    public String getPidNo() {
+        return pidNo;
+    }
+
+    public void setInstallPosition(String installPosition) {
+        this.installPosition = installPosition;
+    }
+
+    public String getInstallPosition() {
+        return installPosition;
+    }
+
+    public void setCreateReason(String createReason) {
+        this.createReason = createReason;
+    }
+
+    public String getCreateReason() {
+        return createReason;
+    }
+
+    public void setBarcodePosition(String barcodePosition) {
+        this.barcodePosition = barcodePosition;
+    }
+
+    public String getBarcodePosition() {
+        return barcodePosition;
+    }
+
+    public void setScrapReason(String scrapReason) {
+        this.scrapReason = scrapReason;
+    }
+
+    public String getScrapReason() {
+        return scrapReason;
+    }
+
+    public void setScrapPoseDate(Date scrapPoseDate) {
+        this.scrapPoseDate = scrapPoseDate;
+    }
+
+    public Date getScrapPoseDate() {
+        return scrapPoseDate;
+    }
+
+    public void setScrapDoneDate(Date scrapDoneDate) {
+        this.scrapDoneDate = scrapDoneDate;
+    }
+
+    public Date getScrapDoneDate() {
+        return scrapDoneDate;
+    }
+
+    public void setScraper(String scraper) {
+        this.scraper = scraper;
+    }
+
+    public String getScraper() {
+        return scraper;
+    }
+
+    public void setUsingStatus(String usingStatus) {
+        this.usingStatus = usingStatus;
+    }
+
+    public String getUsingStatus() {
+        return usingStatus;
+    }
+
+    public void setStatus(Long status) {
+        this.status = status;
+    }
+
+    public Long getStatus() {
+        return status;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(Long createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setUpdaterCode(Long updaterCode) {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode() {
+        return updaterCode;
+    }
+
+    public void setUpdatedate(Date updatedate) {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate() {
+        return updatedate;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("assetType", getAssetType())
+                .append("assetNo", getAssetNo())
+                .append("assetSubNo", getAssetSubNo())
+                .append("devName", getDevName())
+                .append("devEnname", getDevEnname())
+                .append("costCenter", getCostCenter())
+                .append("costCenterCode", getCostCenterCode())
+                .append("assetTypeAp", getAssetTypeAp())
+                .append("capitalizedDate", getCapitalizedDate())
+                .append("quantity", getQuantity())
+                .append("currency", getCurrency())
+                .append("currentApc", getCurrentApc())
+                .append("serviceLife", getServiceLife())
+                .append("administrator", getAdministrator())
+                .append("devNo", getDevNo())
+                .append("assetDetail", getAssetDetail())
+                .append("processSubunit", getProcessSubunit())
+                .append("pidNo", getPidNo())
+                .append("installPosition", getInstallPosition())
+                .append("createReason", getCreateReason())
+                .append("barcodePosition", getBarcodePosition())
+                .append("scrapReason", getScrapReason())
+                .append("scrapPoseDate", getScrapPoseDate())
+                .append("scrapDoneDate", getScrapDoneDate())
+                .append("scraper", getScraper())
+                .append("usingStatus", getUsingStatus())
+                .append("status", getStatus())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .append("remarks", getRemarks())
+                .toString();
+    }
+}

+ 854 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevGl.java

@@ -0,0 +1,854 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备锅炉台账对象 t_specdev_gl
+ *
+ * @author ruoyi
+ * @date 2021-07-21
+ */
+
+public class TSpecdevGl extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /**容器编号*/
+    @Excel(name = "容器编号")
+    private String containerNo;
+
+    /** 注册代码 */
+    @Excel(name = "注册编号")
+    private String regno;
+
+    /** 使用证编号 */
+    @Excel(name = "使用证编号")
+    private String useno;
+
+    /** 建档情况 */
+    @Excel(name = "建档情况")
+    private String filedSituation;
+
+    /** 出厂资料 */
+    @Excel(name = "出厂资料")
+    private String factoryInfo;
+
+    /** 内部检验 */
+    @Excel(name = "下次内部检验定期检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date internalInspection;
+
+    /** 外部检验 */
+    @Excel(name = "下次外部检验定期检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date externalInspection;
+
+    /** 试压 */
+    @Excel(name = "下次试压定期检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date pressureTest;
+
+    /** 能效测试 */
+    @Excel(name = "下次能效测试定期检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date energyEfficiencyTest;
+
+    /** 设备名称 */
+    @Excel(name = "容器名称")
+    private String devname;
+
+    /** 出厂编号 */
+    @Excel(name = "出厂编号")
+    private String factoryNo;
+
+    /** 介质 */
+    @Excel(name = "介质")
+    private String medium;
+
+    /** 设计单位 */
+    @Excel(name = "设计单位")
+    private String designUnit;
+
+
+    /** 制造单位 */
+    @Excel(name = "制造单位")
+    private String createUnit;
+
+
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+    /** 单元 */
+   // @Excel(name = "单元")
+    private String unit;
+
+    /** 状态 */
+    @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+    /** 审核状态 */
+//    @Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /** 装置维修组 */
+   // @Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /** 装置维修工程师 */
+   // @Excel(name = "装置维修工程师")
+    private String engineer;
+
+    /** 设备位号 */
+   // @Excel(name = "位号")
+    private String devno;
+
+
+    /** 型号 */
+    //@Excel(name = "型号")
+    private String model;
+
+    /** 燃烧方式 */
+  //  @Excel(name = "燃烧方式")
+    private String burnMode;
+
+    /** 水处理方式 */
+   // @Excel(name = "水处理方式")
+    private String waterMode;
+
+    /** 燃烧种类 */
+  //  @Excel(name = "燃烧种类")
+    private String burnKind;
+
+    /** 额度出力 */
+    //@Excel(name = "额度出力")
+    private String ratedPower;
+
+    /** 设计温度 */
+   // @Excel(name = "设计温度(℃)")
+    private String desTemp;
+
+    /** 操作温度 */
+    //@Excel(name = "操作温度(℃)")
+    private String optTemp;
+
+    /** 设计压力 */
+    //@Excel(name = "设计压力(MPa)")
+    private String desPressure;
+
+    /** 操作压力 */
+    //@Excel(name = "操作压力(MPa)")
+    private String optPressure;
+
+    /** 提交日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "投用日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /** 检验单位 */
+    //@Excel(name = "检验单位")
+    private String checkUnit;
+
+    /** 本次内部检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "本次内部检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warnDate;
+
+    /** 检查结论 */
+ //   @Excel(name = "内部检验结论")
+    private String checkConclusion;
+
+    /** 报告编号 */
+   // @Excel(name = "内部检验报告编号")
+    private String reportNo;
+
+    /** 下次内部检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "下次内部检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date nextWarnDate;
+
+    /** 本次外部检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "本次外部检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date outWarnDate;
+
+    /** 外部检验结论 */
+   // @Excel(name = "外部检验结论")
+    private String outCheckConclusion;
+    /** 外部检验编号 */
+    //@Excel(name = "外部检验编号")
+    private String outReportNo;
+    /** 下次外部检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "下次外部检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date outNextWarnDate;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 状态 1 :正常 ;0:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 检测周期 */
+    private Long warnCycle;
+
+    /** 预警标识 */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+    /** 最新申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /** 状态修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+
+
+    /** 部门名称 */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+
+    private Long devId;
+
+
+    private Long hiType;
+
+
+    private Long hiFlag;
+
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+    private Long isRepeat;
+
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getContainerNo() {
+        return containerNo;
+    }
+
+    public void setContainerNo(String containerNo) {
+        this.containerNo = containerNo;
+    }
+
+    public String getFiledSituation() {
+        return filedSituation;
+    }
+
+    public void setFiledSituation(String filedSituation) {
+        this.filedSituation = filedSituation;
+    }
+
+    public String getFactoryInfo() {
+        return factoryInfo;
+    }
+
+    public void setFactoryInfo(String factoryInfo) {
+        this.factoryInfo = factoryInfo;
+    }
+
+    public Date getInternalInspection() {
+        return internalInspection;
+    }
+
+    public void setInternalInspection(Date internalInspection) {
+        this.internalInspection = internalInspection;
+    }
+
+    public Date getExternalInspection() {
+        return externalInspection;
+    }
+
+    public void setExternalInspection(Date externalInspection) {
+        this.externalInspection = externalInspection;
+    }
+
+    public Date getPressureTest() {
+        return pressureTest;
+    }
+
+    public void setPressureTest(Date pressureTest) {
+        this.pressureTest = pressureTest;
+    }
+
+    public Date getEnergyEfficiencyTest() {
+        return energyEfficiencyTest;
+    }
+
+    public void setEnergyEfficiencyTest(Date energyEfficiencyTest) {
+        this.energyEfficiencyTest = energyEfficiencyTest;
+    }
+
+    public String getFactoryNo() {
+        return factoryNo;
+    }
+
+    public void setFactoryNo(String factoryNo) {
+        this.factoryNo = factoryNo;
+    }
+
+    public String getMedium() {
+        return medium;
+    }
+
+    public void setMedium(String medium) {
+        this.medium = medium;
+    }
+
+    public String getDesignUnit() {
+        return designUnit;
+    }
+
+    public void setDesignUnit(String designUnit) {
+        this.designUnit = designUnit;
+    }
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setUnit(String unit)
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit()
+    {
+        return unit;
+    }
+    public void setDevname(String devname)
+    {
+        this.devname = devname;
+    }
+
+    public String getDevname()
+    {
+        return devname;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setSubmitdate(Date submitdate)
+    {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate()
+    {
+        return submitdate;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setApproveStatus(Long approveStatus)
+    {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus()
+    {
+        return approveStatus;
+    }
+    public void setRegno(String regno)
+    {
+        this.regno = regno;
+    }
+
+    public String getRegno()
+    {
+        return regno;
+    }
+    public void setUseno(String useno)
+    {
+        this.useno = useno;
+    }
+
+    public String getUseno()
+    {
+        return useno;
+    }
+    public void setWarnDate(Date warnDate)
+    {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate()
+    {
+        return warnDate;
+    }
+    public void setWarnCycle(Long warnCycle)
+    {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle()
+    {
+        return warnCycle;
+    }
+    public void setNextWarnDate(Date nextWarnDate)
+    {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate()
+    {
+        return nextWarnDate;
+    }
+    public void setWarnFlag(Long warnFlag)
+    {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag()
+    {
+        return warnFlag;
+    }
+    public void setCreateUnit(String createUnit)
+    {
+        this.createUnit = createUnit;
+    }
+
+    public String getCreateUnit()
+    {
+        return createUnit;
+    }
+    public void setBurnMode(String burnMode)
+    {
+        this.burnMode = burnMode;
+    }
+
+    public String getBurnMode()
+    {
+        return burnMode;
+    }
+    public void setBurnKind(String burnKind)
+    {
+        this.burnKind = burnKind;
+    }
+
+    public String getBurnKind()
+    {
+        return burnKind;
+    }
+    public void setRatedPower(String ratedPower)
+    {
+        this.ratedPower = ratedPower;
+    }
+
+    public String getRatedPower()
+    {
+        return ratedPower;
+    }
+    public void setDesPressure(String desPressure)
+    {
+        this.desPressure = desPressure;
+    }
+
+    public String getDesPressure()
+    {
+        return desPressure;
+    }
+    public void setDesTemp(String desTemp)
+    {
+        this.desTemp = desTemp;
+    }
+
+    public String getDesTemp()
+    {
+        return desTemp;
+    }
+    public void setOptPressure(String optPressure)
+    {
+        this.optPressure = optPressure;
+    }
+
+    public String getOptPressure()
+    {
+        return optPressure;
+    }
+    public void setOptTemp(String optTemp)
+    {
+        this.optTemp = optTemp;
+    }
+
+    public String getOptTemp()
+    {
+        return optTemp;
+    }
+    public void setCheckUnit(String checkUnit)
+    {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit()
+    {
+        return checkUnit;
+    }
+    public void setCheckConclusion(String checkConclusion)
+    {
+        this.checkConclusion = checkConclusion;
+    }
+
+    public String getCheckConclusion()
+    {
+        return checkConclusion;
+    }
+    public void setModel(String model)
+    {
+        this.model = model;
+    }
+
+    public String getModel()
+    {
+        return model;
+    }
+    public void setWaterMode(String waterMode)
+    {
+        this.waterMode = waterMode;
+    }
+
+    public String getWaterMode()
+    {
+        return waterMode;
+    }
+    public void setReportNo(String reportNo)
+    {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo()
+    {
+        return reportNo;
+    }
+    public void setApproveTime(Date approveTime)
+    {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime()
+    {
+        return approveTime;
+    }
+    public void setChangeTime(Date changeTime)
+    {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime()
+    {
+        return changeTime;
+    }
+    public void setPlantMaint(String plantMaint)
+    {
+        this.plantMaint = plantMaint;
+    }
+
+    public String getPlantMaint()
+    {
+        return plantMaint;
+    }
+    public void setOutWarnDate(Date outWarnDate)
+    {
+        this.outWarnDate = outWarnDate;
+    }
+
+    public Date getOutWarnDate()
+    {
+        return outWarnDate;
+    }
+    public void setOutNextWarnDate(Date outNextWarnDate)
+    {
+        this.outNextWarnDate = outNextWarnDate;
+    }
+
+    public Date getOutNextWarnDate()
+    {
+        return outNextWarnDate;
+    }
+    public void setOutCheckConclusion(String outCheckConclusion)
+    {
+        this.outCheckConclusion = outCheckConclusion;
+    }
+
+    public String getOutCheckConclusion()
+    {
+        return outCheckConclusion;
+    }
+    public void setOutReportNo(String outReportNo)
+    {
+        this.outReportNo = outReportNo;
+    }
+
+    public String getOutReportNo()
+    {
+        return outReportNo;
+    }
+    public void setEngineer(String engineer)
+    {
+        this.engineer = engineer;
+    }
+
+    public String getEngineer()
+    {
+        return engineer;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("unit", getUnit())
+            .append("devname", getDevname())
+            .append("devno", getDevno())
+            .append("submitdate", getSubmitdate())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("approveStatus", getApproveStatus())
+            .append("regno", getRegno())
+            .append("useno", getUseno())
+            .append("warnDate", getWarnDate())
+            .append("warnCycle", getWarnCycle())
+            .append("nextWarnDate", getNextWarnDate())
+            .append("warnFlag", getWarnFlag())
+            .append("createUnit", getCreateUnit())
+            .append("burnMode", getBurnMode())
+            .append("burnKind", getBurnKind())
+            .append("ratedPower", getRatedPower())
+            .append("desPressure", getDesPressure())
+            .append("desTemp", getDesTemp())
+            .append("optPressure", getOptPressure())
+            .append("optTemp", getOptTemp())
+            .append("checkUnit", getCheckUnit())
+            .append("checkConclusion", getCheckConclusion())
+            .append("model", getModel())
+            .append("waterMode", getWaterMode())
+            .append("reportNo", getReportNo())
+            .append("approveTime", getApproveTime())
+            .append("changeTime", getChangeTime())
+            .append("plantMaint", getPlantMaint())
+            .append("outWarnDate", getOutWarnDate())
+            .append("outNextWarnDate", getOutNextWarnDate())
+            .append("outCheckConclusion", getOutCheckConclusion())
+            .append("outReportNo", getOutReportNo())
+            .append("engineer", getEngineer())
+            .toString();
+    }
+}

+ 555 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevMain.java

@@ -0,0 +1,555 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 设备总对象 t_specdev_main
+ *
+ * @author ruoyi
+ * @date 2022-10-09
+ */
+public class TSpecdevMain extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识id */
+    private Long id;
+
+    @Excel(name = "序号")
+
+    private int index;
+    /** 中文名 */
+    @Excel(name = "中文名")
+    private String devName;
+
+    /** 英文名 */
+    @Excel(name = "英文名")
+    private String devEnname;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devno;
+
+    /** 是否在PID上 */
+    @Excel(name = "是否在PID上",readConverterExp = "1=是,0=否")
+    private String isPid;
+
+    /** P&ID图号/其他图号 */
+    @Excel(name = "P&ID图号/其他图号")
+    private String pidNo;
+
+    /** 安装位置 */
+    @Excel(name = "安装位置")
+    private String installPosition;
+
+    /** 功能位置 */
+    @Excel(name = "功能位置")
+    private String funcPosition;
+
+    /** 资产号 */
+    @Excel(name = "资产号")
+    private String assetNo;
+
+    /** 安全相关 */
+    @Excel(name = "安全相关")
+    private String securityRelevant;
+
+    /** 安全相关来自于 */
+    @Excel(name = "安全相关来自于")
+    private String securityRelevantFrom;
+
+    /** 生产厂家 */
+    @Excel(name = "生产厂家")
+    private String manufacturer;
+
+    /** 生产年份 */
+    @Excel(name = "生产年份")
+    private String productionYear;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String model;
+
+    /** 主要规格参数 */
+    @Excel(name = "主要规格参数")
+    private String mainSpecifications;
+
+    /** 设备铭牌 */
+    @Excel(name = "设备铭牌")
+    private String dataPlate;
+
+    /** 维修风险 */
+    @Excel(name = "维修风险")
+    private String maintenanceRisk;
+
+    /** 生产风险 */
+    @Excel(name = "生产风险")
+    private String productionRisk;
+
+    /** 设备分级 */
+    @Excel(name = "设备分级")
+    private String devGrade;
+
+    /** 设备来自 */
+    @Excel(name = "设备来自")
+    private String devFrom;
+
+    /** 设备类型(一级) */
+    @Excel(name = "设备类型(一级)" )
+    private String devType1;
+
+    /** 设备类型(二级) */
+    @Excel(name = "设备类型(二级)")
+    private String devType2;
+
+    /** 资产状态 */
+    @Excel(name = "资产状态",readConverterExp = "1=在用,2=停用,3=报废,-1=封存")
+    private String assetStatus;
+
+    /** 资料完整度 */
+    @Excel(name = "资料完整度")
+    private String dataIntegrity;
+
+    /** PM状态 */
+    @Excel(name = "PM状态")
+    private String pmStatus;
+
+    /** 资产剩余寿命评估 */
+    @Excel(name = "资产剩余寿命评估")
+    private String assetResidueLifeAssess;
+
+    /** 资产整体状态 */
+    @Excel(name = "资产整体状态")
+    private String overallAssetStatus;
+
+    /** 状态 */
+    private Long status;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private Long createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date updatedate;
+
+    /** 部门编号 */
+
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    private String deptName;
+
+    private String subId;
+
+    private String fuzzy;
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevName(String devName)
+    {
+        this.devName = devName;
+    }
+
+    public String getDevName()
+    {
+        return devName;
+    }
+    public void setDevEnname(String devEnname)
+    {
+        this.devEnname = devEnname;
+    }
+
+    public String getDevEnname()
+    {
+        return devEnname;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setIsPid(String isPid)
+    {
+        this.isPid = isPid;
+    }
+
+    public String getIsPid()
+    {
+        return isPid;
+    }
+    public void setPidNo(String pidNo)
+    {
+        this.pidNo = pidNo;
+    }
+
+    public String getPidNo()
+    {
+        return pidNo;
+    }
+    public void setInstallPosition(String installPosition)
+    {
+        this.installPosition = installPosition;
+    }
+
+    public String getInstallPosition()
+    {
+        return installPosition;
+    }
+    public void setFuncPosition(String funcPosition)
+    {
+        this.funcPosition = funcPosition;
+    }
+
+    public String getFuncPosition()
+    {
+        return funcPosition;
+    }
+    public void setAssetNo(String assetNo)
+    {
+        this.assetNo = assetNo;
+    }
+
+    public String getAssetNo()
+    {
+        return assetNo;
+    }
+    public void setSecurityRelevant(String securityRelevant)
+    {
+        this.securityRelevant = securityRelevant;
+    }
+
+    public String getSecurityRelevant()
+    {
+        return securityRelevant;
+    }
+    public void setSecurityRelevantFrom(String securityRelevantFrom)
+    {
+        this.securityRelevantFrom = securityRelevantFrom;
+    }
+
+    public String getSecurityRelevantFrom()
+    {
+        return securityRelevantFrom;
+    }
+    public void setManufacturer(String manufacturer)
+    {
+        this.manufacturer = manufacturer;
+    }
+
+    public String getManufacturer()
+    {
+        return manufacturer;
+    }
+    public void setProductionYear(String productionYear)
+    {
+        this.productionYear = productionYear;
+    }
+
+    public String getProductionYear()
+    {
+        return productionYear;
+    }
+    public void setModel(String model)
+    {
+        this.model = model;
+    }
+
+    public String getModel()
+    {
+        return model;
+    }
+    public void setMainSpecifications(String mainSpecifications)
+    {
+        this.mainSpecifications = mainSpecifications;
+    }
+
+    public String getMainSpecifications()
+    {
+        return mainSpecifications;
+    }
+    public void setDataPlate(String dataPlate)
+    {
+        this.dataPlate = dataPlate;
+    }
+
+    public String getDataPlate()
+    {
+        return dataPlate;
+    }
+    public void setMaintenanceRisk(String maintenanceRisk)
+    {
+        this.maintenanceRisk = maintenanceRisk;
+    }
+
+    public String getMaintenanceRisk()
+    {
+        return maintenanceRisk;
+    }
+    public void setProductionRisk(String productionRisk)
+    {
+        this.productionRisk = productionRisk;
+    }
+
+    public String getProductionRisk()
+    {
+        return productionRisk;
+    }
+    public void setDevGrade(String devGrade)
+    {
+        this.devGrade = devGrade;
+    }
+
+    public String getDevGrade()
+    {
+        return devGrade;
+    }
+    public void setDevFrom(String devFrom)
+    {
+        this.devFrom = devFrom;
+    }
+
+    public String getDevFrom()
+    {
+        return devFrom;
+    }
+    public void setDevType1(String devType1)
+    {
+        this.devType1 = devType1;
+    }
+
+    public String getDevType1()
+    {
+        return devType1;
+    }
+    public void setDevType2(String devType2)
+    {
+        this.devType2 = devType2;
+    }
+
+    public String getDevType2()
+    {
+        return devType2;
+    }
+    public void setAssetStatus(String assetStatus)
+    {
+        this.assetStatus = assetStatus;
+    }
+
+    public String getAssetStatus()
+    {
+        return assetStatus;
+    }
+    public void setDataIntegrity(String dataIntegrity)
+    {
+        this.dataIntegrity = dataIntegrity;
+    }
+
+    public String getDataIntegrity()
+    {
+        return dataIntegrity;
+    }
+    public void setPmStatus(String pmStatus)
+    {
+        this.pmStatus = pmStatus;
+    }
+
+    public String getPmStatus()
+    {
+        return pmStatus;
+    }
+    public void setAssetResidueLifeAssess(String assetResidueLifeAssess)
+    {
+        this.assetResidueLifeAssess = assetResidueLifeAssess;
+    }
+
+    public String getAssetResidueLifeAssess()
+    {
+        return assetResidueLifeAssess;
+    }
+    public void setOverallAssetStatus(String overallAssetStatus)
+    {
+        this.overallAssetStatus = overallAssetStatus;
+    }
+
+    public String getOverallAssetStatus()
+    {
+        return overallAssetStatus;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getSubId() {
+        return subId;
+    }
+
+    public void setSubId(String subId) {
+        this.subId = subId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devName", getDevName())
+            .append("devEnname", getDevEnname())
+            .append("devno", getDevno())
+            .append("isPid", getIsPid())
+            .append("pidNo", getPidNo())
+            .append("installPosition", getInstallPosition())
+            .append("funcPosition", getFuncPosition())
+            .append("assetNo", getAssetNo())
+            .append("securityRelevant", getSecurityRelevant())
+            .append("securityRelevantFrom", getSecurityRelevantFrom())
+            .append("manufacturer", getManufacturer())
+            .append("productionYear", getProductionYear())
+            .append("model", getModel())
+            .append("mainSpecifications", getMainSpecifications())
+            .append("dataPlate", getDataPlate())
+            .append("maintenanceRisk", getMaintenanceRisk())
+            .append("productionRisk", getProductionRisk())
+            .append("devGrade", getDevGrade())
+            .append("devFrom", getDevFrom())
+            .append("devType1", getDevType1())
+            .append("devType2", getDevType2())
+            .append("assetStatus", getAssetStatus())
+            .append("dataIntegrity", getDataIntegrity())
+            .append("pmStatus", getPmStatus())
+            .append("assetResidueLifeAssess", getAssetResidueLifeAssess())
+            .append("overallAssetStatus", getOverallAssetStatus())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 180 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevTypemgr.java

@@ -0,0 +1,180 @@
+package com.ruoyi.project.sems.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 设备类型管理对象 t_specdev_typemgr
+ *
+ * @author ruoyi
+ * @date 2023-08-08
+ */
+public class TSpecdevTypemgr extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 主题 */
+    @Excel(name = "主题")
+    private String devType;
+
+    /** pid */
+    @Excel(name = "pid")
+    private Long pid;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Integer status;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    @Excel(name = "更新人")
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevType(String devType)
+    {
+        this.devType = devType;
+    }
+
+    public String getDevType()
+    {
+        return devType;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setStatus(Integer status)
+    {
+        this.status = status;
+    }
+
+    public Integer getStatus()
+    {
+        return status;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devType", getDevType())
+            .append("pid", getPid())
+            .append("delFlag", getDelFlag())
+            .append("status", getStatus())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 950 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlgd.java

@@ -0,0 +1,950 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备压力管道台账对象 t_specdev_ylgd
+ *
+ * @author ruoyi
+ * @date 2021-07-22
+ */
+
+public class TSpecdevYlgd extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /** 管道名称 */
+    @Excel(name = "管道名称")
+    private String devname;
+
+    /** P&ID号 */
+    @Excel(name = "P&ID号")
+    private String pidNo;
+
+    /** 管道编号 */
+    @Excel(name = "管道编号")
+    private String devno;
+
+    /** ISO图纸 */
+    @Excel(name = "ISO图纸")
+    private  String isoPicUrl;
+
+    /** 下次定期检验日期 */
+    @JsonFormat(pattern = "yyyy-MM" , timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM")
+    private Date nextWarnDate;
+
+    /** 定期检验日期 */
+    @JsonFormat(pattern = "yyyy-MM" , timezone = "GMT+8")
+    @Excel(name = "最近一次检验日期", width = 30, dateFormat = "yyyy-MM")
+    private Date warnDate;
+
+    /** 起点 */
+    @Excel(name = "起点")
+    private String starting;
+
+    /** 终点 */
+    @Excel(name = "终点")
+    private String ending;
+
+    /** 安全阀 */
+    @Excel(name = "安全阀")
+    private String reliefValve;
+
+    /** 管件数量 */
+    @Excel(name = "管件数量")
+    private Long fitNumber;
+
+    /** 焊口数量 */
+    @Excel(name = "对接焊缝数量")
+    private String weldNumber;
+
+    /** 管道级别 */
+    @Excel(name = "管道级别")
+    private String grade;
+
+    /** 设计单位 */
+    @Excel(name = "设计单位")
+    private String designer;
+
+    /** 安装单位 */
+    @Excel(name = "安装单位")
+    private String installer;
+
+    /** 安装年月 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "安装年月", width = 30, dateFormat = "yyyy-MM")
+    private Date installDate;
+
+    /** 投用年月 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "投用年月", width = 30, dateFormat = "yyyy-MM")
+    private Date submitdate;
+
+    /** 直径 */
+    @Excel(name = "公称直径(DN)")
+    private String dia;
+
+    /** 厚度等级 */
+    @Excel(name = "壁厚(mm)")
+    private String scheduleNo;
+
+    /** 长度 */
+    @Excel(name = "管道长度(m)")
+    private String length;
+
+    /** 材质 */
+    @Excel(name = "材质")
+    private String material;
+
+    /** 保温 */
+    @Excel(name = "保温")
+    private String heatPreservation;
+
+    /** 厚度 */
+    @Excel(name = "厚度")
+    private String thickness;
+
+    /** 设计压力 */
+    @Excel(name = "设计压力(MPa)")
+    private String desPressure;
+
+    /** 工作压力 */
+    @Excel(name = "工作压力(MPa)")
+    private String optPressure;
+
+    /** 设计温度 */
+    @Excel(name = "设计温度(℃)")
+    private String desTemp;
+
+    /** 工作温度 */
+    @Excel(name = "工作温度(℃)")
+    private String optTemp;
+
+    /** 介质 */
+    @Excel(name = "介质")
+    private String medium;
+
+    /** 年度检验结论 */
+    @Excel(name = "检验结论")
+    private String checkConclusion;
+
+
+    /** 检验单位 */
+    @Excel(name = "检验机构名称")
+    private String checkUnit;
+
+    /** 报告编号 */
+    @Excel(name = "报告编号")
+    private String reportNo;
+
+    /** 状态 */
+    @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+    /** 单元 */
+    //@Excel(name = "单元")
+    private String unit;
+
+    /** PM维修组 */
+   // @Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /** 装置维修工程师 */
+   // @Excel(name = "装置维修工程师")
+    private String engineer;
+
+    /** 审核状态 */
+    //@Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /** 注册代码 */
+    //@Excel(name = "工业管道代码")
+    private String regno;
+
+    /** 使用证编号 */
+   // @Excel(name = "使用登记证编号")
+    private String useno;
+
+    /** 敷设方式 */
+   // @Excel(name = "敷设方式")
+    private String layingMethod;
+
+    /** 绝热层代码 */
+   // @Excel(name = "绝热层代码")
+    private String adiabatic;
+
+    /** 防腐层代码 */
+//    @Excel(name = "防腐层代码")
+    private String antiCorrosion;
+
+    /** 绝热层厚度 */
+    //@Excel(name = "绝热层厚度")
+    private String adiabaticThickness;
+
+    /** 是否涉危化品 */
+   // @Excel(name = "是否涉危化品")
+    private String isDanger;
+
+
+    /** 安全状况等级 */
+   // @Excel(name = "安全状况等级")
+    private String safeClass;
+
+    /** 年度检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+   // @Excel(name = "年度检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date yearWarnDate;
+
+    /** 下次年度检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+ //   @Excel(name = "下次年度检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date yearNextWarnDate;
+
+    /** 年度检查报告编号 */
+   // @Excel(name = "年度检查报告编号")
+    private String yearReportNo;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 状态 1 :正常 ;0:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private Long createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 检测周期 */
+    //@Excel(name = "检测周期")
+    private Long warnCycle;
+
+    /** 预警标识 */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+
+    /** 最新申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /** 状态修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+    /** 部门名称 */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+
+    private Long devId;
+
+
+    private Long hiType;
+
+
+    private Long hiFlag;
+
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+
+    private String fuzzy;
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+    public String getThickness() {
+        return thickness;
+    }
+
+    public void setThickness(String thickness) {
+        this.thickness = thickness;
+    }
+
+    public String getPidNo() {
+        return pidNo;
+    }
+
+    public void setPidNo(String pidNo) {
+        this.pidNo = pidNo;
+    }
+
+    public String getIsoPicUrl() {
+        return isoPicUrl;
+    }
+
+    public void setIsoPicUrl(String isoPicUrl) {
+        this.isoPicUrl = isoPicUrl;
+    }
+
+    public String getReliefValve() {
+        return reliefValve;
+    }
+
+    public void setReliefValve(String reliefValve) {
+        this.reliefValve = reliefValve;
+    }
+
+    public Long getFitNumber() {
+        return fitNumber;
+    }
+
+    public void setFitNumber(Long fitNumber) {
+        this.fitNumber = fitNumber;
+    }
+
+    public String getHeatPreservation() {
+        return heatPreservation;
+    }
+
+    public void setHeatPreservation(String heatPreservation) {
+        this.heatPreservation = heatPreservation;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    private Long isRepeat;
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public Date getInstallDate() {
+        return installDate;
+    }
+
+    public void setInstallDate(Date installDate) {
+        this.installDate = installDate;
+    }
+
+    public Date getYearWarnDate() {
+        return yearWarnDate;
+    }
+
+    public void setYearWarnDate(Date yearWarnDate) {
+        this.yearWarnDate = yearWarnDate;
+    }
+
+    public Date getYearNextWarnDate() {
+        return yearNextWarnDate;
+    }
+
+    public void setYearNextWarnDate(Date yearNextWarnDate) {
+        this.yearNextWarnDate = yearNextWarnDate;
+    }
+
+    public String getYearReportNo() {
+        return yearReportNo;
+    }
+
+    public void setYearReportNo(String yearReportNo) {
+        this.yearReportNo = yearReportNo;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setUnit(String unit)
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit()
+    {
+        return unit;
+    }
+    public void setDevname(String devname)
+    {
+        this.devname = devname;
+    }
+
+    public String getDevname()
+    {
+        return devname;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setSubmitdate(Date submitdate)
+    {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate()
+    {
+        return submitdate;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setApproveStatus(Long approveStatus)
+    {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus()
+    {
+        return approveStatus;
+    }
+    public void setRegno(String regno)
+    {
+        this.regno = regno;
+    }
+
+    public String getRegno()
+    {
+        return regno;
+    }
+    public void setUseno(String useno)
+    {
+        this.useno = useno;
+    }
+
+    public String getUseno()
+    {
+        return useno;
+    }
+    public void setWarnDate(Date warnDate)
+    {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate()
+    {
+        return warnDate;
+    }
+    public void setWarnCycle(Long warnCycle)
+    {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle()
+    {
+        return warnCycle;
+    }
+    public void setNextWarnDate(Date nextWarnDate)
+    {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate()
+    {
+        return nextWarnDate;
+    }
+    public void setWarnFlag(Long warnFlag)
+    {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag()
+    {
+        return warnFlag;
+    }
+    public void setGrade(String grade)
+    {
+        this.grade = grade;
+    }
+
+    public String getGrade()
+    {
+        return grade;
+    }
+    public void setDesigner(String designer)
+    {
+        this.designer = designer;
+    }
+
+    public String getDesigner()
+    {
+        return designer;
+    }
+    public void setInstaller(String installer)
+    {
+        this.installer = installer;
+    }
+
+    public String getInstaller()
+    {
+        return installer;
+    }
+    public void setMaterial(String material)
+    {
+        this.material = material;
+    }
+
+    public String getMaterial()
+    {
+        return material;
+    }
+    public void setDia(String dia)
+    {
+        this.dia = dia;
+    }
+
+    public String getDia()
+    {
+        return dia;
+    }
+    public void setScheduleNo(String scheduleNo)
+    {
+        this.scheduleNo = scheduleNo;
+    }
+
+    public String getScheduleNo()
+    {
+        return scheduleNo;
+    }
+    public void setLength(String length)
+    {
+        this.length = length;
+    }
+
+    public String getLength()
+    {
+        return length;
+    }
+    public void setStarting(String starting)
+    {
+        this.starting = starting;
+    }
+
+    public String getStarting()
+    {
+        return starting;
+    }
+    public void setEnding(String ending)
+    {
+        this.ending = ending;
+    }
+
+    public String getEnding()
+    {
+        return ending;
+    }
+    public void setDesPressure(String desPressure)
+    {
+        this.desPressure = desPressure;
+    }
+
+    public String getDesPressure()
+    {
+        return desPressure;
+    }
+    public void setDesTemp(String desTemp)
+    {
+        this.desTemp = desTemp;
+    }
+
+    public String getDesTemp()
+    {
+        return desTemp;
+    }
+    public void setOptPressure(String optPressure)
+    {
+        this.optPressure = optPressure;
+    }
+
+    public String getOptPressure()
+    {
+        return optPressure;
+    }
+    public void setOptTemp(String optTemp)
+    {
+        this.optTemp = optTemp;
+    }
+
+    public String getOptTemp()
+    {
+        return optTemp;
+    }
+    public void setMedium(String medium)
+    {
+        this.medium = medium;
+    }
+
+    public String getMedium()
+    {
+        return medium;
+    }
+
+    public String getCheckConclusion() {
+        return checkConclusion;
+    }
+
+    public void setCheckConclusion(String checkConclusion) {
+        this.checkConclusion = checkConclusion;
+    }
+
+    public void setCheckUnit(String checkUnit)
+    {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit()
+    {
+        return checkUnit;
+    }
+    public void setSafeClass(String safeClass)
+    {
+        this.safeClass = safeClass;
+    }
+
+    public String getSafeClass()
+    {
+        return safeClass;
+    }
+    public void setReportNo(String reportNo)
+    {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo()
+    {
+        return reportNo;
+    }
+    public void setApproveTime(Date approveTime)
+    {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime()
+    {
+        return approveTime;
+    }
+    public void setChangeTime(Date changeTime)
+    {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime()
+    {
+        return changeTime;
+    }
+    public void setPlantMaint(String plantMaint)
+    {
+        this.plantMaint = plantMaint;
+    }
+
+    public String getPlantMaint()
+    {
+        return plantMaint;
+    }
+    public void setEngineer(String engineer)
+    {
+        this.engineer = engineer;
+    }
+
+    public String getEngineer()
+    {
+        return engineer;
+    }
+    public void setWeldNumber(String weldNumber)
+    {
+        this.weldNumber = weldNumber;
+    }
+
+    public String getWeldNumber()
+    {
+        return weldNumber;
+    }
+    public void setLayingMethod(String layingMethod)
+    {
+        this.layingMethod = layingMethod;
+    }
+
+    public String getLayingMethod()
+    {
+        return layingMethod;
+    }
+    public void setAdiabatic(String adiabatic)
+    {
+        this.adiabatic = adiabatic;
+    }
+
+    public String getAdiabatic()
+    {
+        return adiabatic;
+    }
+    public void setAntiCorrosion(String antiCorrosion)
+    {
+        this.antiCorrosion = antiCorrosion;
+    }
+
+    public String getAntiCorrosion()
+    {
+        return antiCorrosion;
+    }
+    public void setAdiabaticThickness(String adiabaticThickness)
+    {
+        this.adiabaticThickness = adiabaticThickness;
+    }
+
+    public String getAdiabaticThickness()
+    {
+        return adiabaticThickness;
+    }
+
+    public String getIsDanger() {
+        return isDanger;
+    }
+
+    public void setIsDanger(String isDanger) {
+        this.isDanger = isDanger;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("unit", getUnit())
+            .append("devname", getDevname())
+            .append("devno", getDevno())
+            .append("submitdate", getSubmitdate())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("approveStatus", getApproveStatus())
+            .append("regno", getRegno())
+            .append("useno", getUseno())
+            .append("warnDate", getWarnDate())
+            .append("warnCycle", getWarnCycle())
+            .append("nextWarnDate", getNextWarnDate())
+            .append("warnFlag", getWarnFlag())
+            .append("grade", getGrade())
+            .append("designer", getDesigner())
+            .append("installer", getInstaller())
+            .append("material", getMaterial())
+            .append("dia", getDia())
+            .append("scheduleNo", getScheduleNo())
+            .append("length", getLength())
+            .append("starting", getStarting())
+            .append("ending", getEnding())
+            .append("desPressure", getDesPressure())
+            .append("desTemp", getDesTemp())
+            .append("optPressure", getOptPressure())
+            .append("optTemp", getOptTemp())
+            .append("medium", getMedium())
+            .append("checkConclusion", getCheckConclusion())
+            .append("checkUnit", getCheckUnit())
+            .append("safeClass", getSafeClass())
+            .append("reportNo", getReportNo())
+            .append("approveTime", getApproveTime())
+            .append("changeTime", getChangeTime())
+            .append("plantMaint", getPlantMaint())
+            .append("engineer", getEngineer())
+            .append("weldNumber", getWeldNumber())
+            .append("layingMethod", getLayingMethod())
+            .append("adiabatic", getAdiabatic())
+            .append("antiCorrosion", getAntiCorrosion())
+            .append("adiabaticThickness", getAdiabaticThickness())
+            .append("isDanger", getIsDanger())
+             .append("yearReportNo", getYearReportNo())
+            .toString();
+    }
+}

+ 885 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/domain/TSpecdevYlrq.java

@@ -0,0 +1,885 @@
+package com.ruoyi.project.sems.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 特种设备压力容器台账对象 t_specdev_ylrq
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+public class TSpecdevYlrq extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置")
+    private String plantCode;
+
+    /** 设备位号 */
+    @Excel(name = "容器位号")
+    private String devno;
+
+    /** P&ID号 */
+    @Excel(name = "P&ID号")
+    private String pidNo;
+
+    /** 设备名称 */
+    @Excel(name = "容器名称")
+    private String devname;
+
+    /** 英文名称 */
+    @Excel(name = "英文名称")
+    private String devEnname;
+
+    /** 状态 */
+    @Excel(name = "状态", dictType = "spec_dev_status")
+    private Long status;
+
+    /** 安全阀 */
+    @Excel(name = "安全阀")
+    private String reliefValve;
+
+    /** 使用证编号 */
+    @Excel(name = "使用证号码")
+    private String useno;
+
+    /** 注册代码 */
+    @Excel(name = "注册编号")
+    private String regno;
+
+    /** 出厂资料 */
+    @Excel(name = "出厂资料")
+    private String factoryInfo;
+
+    /** 下次检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "下次检验日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date nextWarnDate;
+
+    /** 设备出厂编号 */
+    @Excel(name = "设备出厂编号")
+    private String factoryNo;
+
+    /** 设计单位 */
+    @Excel(name = "设计单位")
+    private String designUnit;
+
+    /** 制造单位 */
+    @Excel(name = "制造单位")
+    private String createUnit;
+
+    /** 容器类别 */
+    @Excel(name = "容器类别")
+    private String vesselType;
+
+    /** 用途代码 */
+    @Excel(name = "用途代号")
+    private String useCode;
+
+    /** 压力等级 */
+    @Excel(name = "压力等级代号")
+    private String pressureGrade;
+
+    /** 安全等级 */
+    @Excel(name = "安全状况等级")
+    private String safeClass;
+
+    /** 提交日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "投用日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date submitdate;
+
+    /** 设计使用年限 */
+    @Excel(name = "设计使用年限")
+    private String desYear;
+
+    /** 设计寿命到期 */
+    @JsonFormat(pattern = "yyyy-MM" , timezone = "GMT+8")
+    @Excel(name = "设计寿命到期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date designDead;
+
+    /** 定期检验日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "最近检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warnDate;
+
+
+    @Excel(name = "检验状态")
+    private String checkStatus;
+
+    /** 单元 */
+    //@Excel(name = "单元")
+    private String unit;
+
+    /** PM维修组 */
+    //@Excel(name = "装置维修组")
+    private String plantMaint;
+
+    /** 工程师 */
+    //@Excel(name = "装置维修工程师")
+    private String engineer;
+
+
+    /** 审核状态 */
+    //@Excel(name = "审核状态", dictType = "spec_approve_status")
+    private Long approveStatus;
+
+    /** 国家 */
+    //@Excel(name = "国家")
+    private String nation;
+
+    /** 外形尺寸 */
+    //@Excel(name = "外形尺寸(直径*长(高)*厚(mm))")
+    private String outSize;
+
+    /** 材质 */
+    //@Excel(name = "材料")
+    private String material;
+
+    /** 介质 */
+   // @Excel(name = "介质")
+    private String medium;
+
+    /** 设计压力 */
+    //@Excel(name = "设计压力(MPa)")
+    private String desPressure;
+
+    /** 操作压力 */
+    //@Excel(name = "操作压力(MPa)")
+    private String optPressure;
+
+    /** 设计温度 */
+    //@Excel(name = "设计温度(℃)")
+    private String desTemp;
+
+    /** 操作温度 */
+    //@Excel(name = "操作温度(℃)")
+    private String optTemp;
+
+    /** 涉危化品 */
+    //@Excel(name = "是否涉危化品")
+    private String isDanger;
+
+    /** 超过使用寿命 */
+    //@Excel(name = "是否达到设计使用年限")
+    private String isOverlife;
+
+    /** 检验单位 */
+    //@Excel(name = "检验单位")
+    private String checkUnit;
+
+    /** 报告编号 */
+    //@Excel(name = "定期检验报告编号")
+    private String reportNo;
+
+    /** 年度检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+   // @Excel(name = "年度检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date yearWarnDate;
+
+    /** 年度检查结论 */
+   // @Excel(name = "年度检查结论")
+    private String checkConclusion;
+
+    /** 下次年度检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+   // @Excel(name = "下次年度检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date yearNextWarnDate;
+
+    /** 年度检查报告编号 */
+   // @Excel(name = "年度检查报告编号")
+    private String yearReportNo;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 状态 1 :正常 ;0:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private Long createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private Long updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 部门编号 */
+    //@Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 检测周期 */
+    //@Excel(name = "检测周期")
+    private Long warnCycle;
+
+    /** 预警标识 */
+    //@Excel(name = "预警标识")
+    private Long warnFlag;
+
+    /** 重点设备 */
+    //@Excel(name = "重点设备")
+    private Long isKey;
+
+    /** 最新申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "最新申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date approveTime;
+
+    /** 状态修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    //@Excel(name = "状态修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeTime;
+
+    /** 部门名称 */
+    //@Excel(name = "部门名称")
+
+    private String deptName;
+
+    /** 状态(0:改造,1:修改) */
+
+    private Long hiType;
+
+
+    private Long devId;
+
+
+    private Long hiFlag;
+
+
+    private String plantIds;
+
+
+    private String unitIds;
+
+
+    private String checkYear;
+
+
+
+    private String fuzzy;
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getFuzzy() {
+        return fuzzy;
+    }
+
+    public void setFuzzy(String fuzzy) {
+        this.fuzzy = fuzzy;
+    }
+    public String getDevEnname() {
+        return devEnname;
+    }
+
+    public void setDevEnname(String devEnname) {
+        this.devEnname = devEnname;
+    }
+
+    public String getPidNo() {
+        return pidNo;
+    }
+
+    public void setPidNo(String pidNo) {
+        this.pidNo = pidNo;
+    }
+
+    public String getReliefValve() {
+        return reliefValve;
+    }
+
+    public void setReliefValve(String reliefValve) {
+        this.reliefValve = reliefValve;
+    }
+
+    public String getFactoryInfo() {
+        return factoryInfo;
+    }
+
+    public void setFactoryInfo(String factoryInfo) {
+        this.factoryInfo = factoryInfo;
+    }
+
+    public String getDesignUnit() {
+        return designUnit;
+    }
+
+    public void setDesignUnit(String designUnit) {
+        this.designUnit = designUnit;
+    }
+
+    public String getUseCode() {
+        return useCode;
+    }
+
+    public void setUseCode(String useCode) {
+        this.useCode = useCode;
+    }
+
+    public String getPressureGrade() {
+        return pressureGrade;
+    }
+
+    public void setPressureGrade(String pressureGrade) {
+        this.pressureGrade = pressureGrade;
+    }
+
+    public Date getDesignDead() {
+        return designDead;
+    }
+
+    public void setDesignDead(Date designDead) {
+        this.designDead = designDead;
+    }
+
+    public Long getHiFlag() {
+        return hiFlag;
+    }
+
+    public void setHiFlag(Long hiFlag) {
+        this.hiFlag = hiFlag;
+    }
+
+    private Long isRepeat;
+
+    public Long getIsRepeat() {
+        return isRepeat;
+    }
+
+    public void setIsRepeat(Long isRepeat) {
+        this.isRepeat = isRepeat;
+    }
+
+    public Long getHiType() {
+        return hiType;
+    }
+
+    public void setHiType(Long hiType) {
+        this.hiType = hiType;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public String getDesYear() {
+        return desYear;
+    }
+
+    public void setDesYear(String desYear) {
+        this.desYear = desYear;
+    }
+
+    public Date getYearWarnDate() {
+        return yearWarnDate;
+    }
+
+    public void setYearWarnDate(Date yearWarnDate) {
+        this.yearWarnDate = yearWarnDate;
+    }
+
+    public String getCheckConclusion() {
+        return checkConclusion;
+    }
+
+    public void setCheckConclusion(String checkConclusion) {
+        this.checkConclusion = checkConclusion;
+    }
+
+    public Date getYearNextWarnDate() {
+        return yearNextWarnDate;
+    }
+
+    public void setYearNextWarnDate(Date yearNextWarnDate) {
+        this.yearNextWarnDate = yearNextWarnDate;
+    }
+
+    public String getYearReportNo() {
+        return yearReportNo;
+    }
+
+    public void setYearReportNo(String yearReportNo) {
+        this.yearReportNo = yearReportNo;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setUnit(String unit)
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit()
+    {
+        return unit;
+    }
+    public void setDevname(String devname)
+    {
+        this.devname = devname;
+    }
+
+    public String getDevname()
+    {
+        return devname;
+    }
+    public void setDevno(String devno)
+    {
+        this.devno = devno;
+    }
+
+    public String getDevno()
+    {
+        return devno;
+    }
+    public void setSubmitdate(Date submitdate)
+    {
+        this.submitdate = submitdate;
+    }
+
+    public Date getSubmitdate()
+    {
+        return submitdate;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setApproveStatus(Long approveStatus)
+    {
+        this.approveStatus = approveStatus;
+    }
+
+    public Long getApproveStatus()
+    {
+        return approveStatus;
+    }
+    public void setRegno(String regno)
+    {
+        this.regno = regno;
+    }
+
+    public String getRegno()
+    {
+        return regno;
+    }
+    public void setUseno(String useno)
+    {
+        this.useno = useno;
+    }
+
+    public String getUseno()
+    {
+        return useno;
+    }
+    public void setWarnDate(Date warnDate)
+    {
+        this.warnDate = warnDate;
+    }
+
+    public Date getWarnDate()
+    {
+        return warnDate;
+    }
+    public void setWarnCycle(Long warnCycle)
+    {
+        this.warnCycle = warnCycle;
+    }
+
+    public Long getWarnCycle()
+    {
+        return warnCycle;
+    }
+    public void setNextWarnDate(Date nextWarnDate)
+    {
+        this.nextWarnDate = nextWarnDate;
+    }
+
+    public Date getNextWarnDate()
+    {
+        return nextWarnDate;
+    }
+    public void setWarnFlag(Long warnFlag)
+    {
+        this.warnFlag = warnFlag;
+    }
+
+    public Long getWarnFlag()
+    {
+        return warnFlag;
+    }
+    public void setPlantMaint(String plantMaint)
+    {
+        this.plantMaint = plantMaint;
+    }
+
+    public String getPlantMaint()
+    {
+        return plantMaint;
+    }
+    public void setEngineer(String engineer)
+    {
+        this.engineer = engineer;
+    }
+
+    public String getEngineer()
+    {
+        return engineer;
+    }
+    public void setVesselType(String vesselType)
+    {
+        this.vesselType = vesselType;
+    }
+
+    public String getVesselType()
+    {
+        return vesselType;
+    }
+    public void setIsKey(Long isKey)
+    {
+        this.isKey = isKey;
+    }
+
+    public Long getIsKey()
+    {
+        return isKey;
+    }
+    public void setCreateUnit(String createUnit)
+    {
+        this.createUnit = createUnit;
+    }
+
+    public String getCreateUnit()
+    {
+        return createUnit;
+    }
+    public void setNation(String nation)
+    {
+        this.nation = nation;
+    }
+
+    public String getNation()
+    {
+        return nation;
+    }
+    public void setOutSize(String outSize)
+    {
+        this.outSize = outSize;
+    }
+
+    public String getOutSize()
+    {
+        return outSize;
+    }
+    public void setMaterial(String material)
+    {
+        this.material = material;
+    }
+
+    public String getMaterial()
+    {
+        return material;
+    }
+    public void setMedium(String medium)
+    {
+        this.medium = medium;
+    }
+
+    public String getMedium()
+    {
+        return medium;
+    }
+    public void setDesPressure(String desPressure)
+    {
+        this.desPressure = desPressure;
+    }
+
+    public String getDesPressure()
+    {
+        return desPressure;
+    }
+    public void setDesTemp(String desTemp)
+    {
+        this.desTemp = desTemp;
+    }
+
+    public String getDesTemp()
+    {
+        return desTemp;
+    }
+    public void setOptPressure(String optPressure)
+    {
+        this.optPressure = optPressure;
+    }
+
+    public String getOptPressure()
+    {
+        return optPressure;
+    }
+    public void setOptTemp(String optTemp)
+    {
+        this.optTemp = optTemp;
+    }
+
+    public String getOptTemp()
+    {
+        return optTemp;
+    }
+    public void setCheckUnit(String checkUnit)
+    {
+        this.checkUnit = checkUnit;
+    }
+
+    public String getCheckUnit()
+    {
+        return checkUnit;
+    }
+    public void setReportNo(String reportNo)
+    {
+        this.reportNo = reportNo;
+    }
+
+    public String getReportNo()
+    {
+        return reportNo;
+    }
+
+    public String getIsDanger() {
+        return isDanger;
+    }
+
+    public void setIsDanger(String isDanger) {
+        this.isDanger = isDanger;
+    }
+
+    public String getIsOverlife() {
+        return isOverlife;
+    }
+
+    public void setIsOverlife(String isOverlife) {
+        this.isOverlife = isOverlife;
+    }
+
+    public void setSafeClass(String safeClass)
+    {
+        this.safeClass = safeClass;
+    }
+
+    public String getSafeClass()
+    {
+        return safeClass;
+    }
+    public void setApproveTime(Date approveTime)
+    {
+        this.approveTime = approveTime;
+    }
+
+    public Date getApproveTime()
+    {
+        return approveTime;
+    }
+    public void setChangeTime(Date changeTime)
+    {
+        this.changeTime = changeTime;
+    }
+
+    public Date getChangeTime()
+    {
+        return changeTime;
+    }
+
+    public String getPlantIds() {
+        return plantIds;
+    }
+
+    public void setPlantIds(String plantIds) {
+        this.plantIds = plantIds;
+    }
+
+    public String getUnitIds() {
+        return unitIds;
+    }
+
+    public void setUnitIds(String unitIds) {
+        this.unitIds = unitIds;
+    }
+
+    public String getCheckYear() {
+        return checkYear;
+    }
+
+    public void setCheckYear(String checkYear) {
+        this.checkYear = checkYear;
+    }
+
+    public String getFactoryNo() {
+        return factoryNo;
+    }
+
+    public void setFactoryNo(String factoryNo) {
+        this.factoryNo = factoryNo;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("unit", getUnit())
+            .append("devname", getDevname())
+            .append("devno", getDevno())
+            .append("submitdate", getSubmitdate())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("approveStatus", getApproveStatus())
+            .append("regno", getRegno())
+            .append("useno", getUseno())
+            .append("warnDate", getWarnDate())
+            .append("warnCycle", getWarnCycle())
+            .append("nextWarnDate", getNextWarnDate())
+            .append("warnFlag", getWarnFlag())
+            .append("plantMaint", getPlantMaint())
+            .append("engineer", getEngineer())
+            .append("vesselType", getVesselType())
+            .append("isKey", getIsKey())
+            .append("createUnit", getCreateUnit())
+            .append("nation", getNation())
+            .append("outSize", getOutSize())
+            .append("material", getMaterial())
+            .append("medium", getMedium())
+            .append("desPressure", getDesPressure())
+            .append("desTemp", getDesTemp())
+            .append("optPressure", getOptPressure())
+            .append("optTemp", getOptTemp())
+            .append("checkUnit", getCheckUnit())
+            .append("reportNo", getReportNo())
+            .append("isDanger", getIsDanger())
+            .append("isOverlife", getIsOverlife())
+            .append("safeClass", getSafeClass())
+            .append("approveTime", getApproveTime())
+            .append("changeTime", getChangeTime())
+            .toString();
+    }
+}

+ 65 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevAqfMapper.java

@@ -0,0 +1,65 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.project.sems.domain.TSpecdevAqf;
+
+/**
+ * 特种设备安全阀台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-09-28
+ */
+public interface TSpecdevAqfMapper
+{
+    /**
+     * 查询特种设备安全阀台账
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 特种设备安全阀台账
+     */
+    public TSpecdevAqf selectTSpecdevAqfById(Long id);
+
+    /**
+     * 查询特种设备安全阀台账列表
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 特种设备安全阀台账集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TSpecdevAqf> selectTSpecdevAqfList(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 新增特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    public int insertTSpecdevAqf(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 修改特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    public int updateTSpecdevAqf(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 删除特种设备安全阀台账
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAqfById(Long id);
+    public int deleteTSpecdevAqfByMainId(Long id);
+
+    /**
+     * 批量删除特种设备安全阀台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAqfByIds(Long[] ids);
+}

+ 64 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevAssetMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.project.sems.domain.TSpecdevAsset;
+
+/**
+ * 资产与运营Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-12
+ */
+public interface TSpecdevAssetMapper 
+{
+    /**
+     * 查询资产与运营
+     * 
+     * @param id 资产与运营ID
+     * @return 资产与运营
+     */
+    public TSpecdevAsset selectTSpecdevAssetById(Long id);
+
+    /**
+     * 查询资产与运营列表
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 资产与运营集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TSpecdevAsset> selectTSpecdevAssetList(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 新增资产与运营
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    public int insertTSpecdevAsset(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 修改资产与运营
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    public int updateTSpecdevAsset(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 删除资产与运营
+     * 
+     * @param id 资产与运营ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAssetById(Long id);
+
+    /**
+     * 批量删除资产与运营
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAssetByIds(Long[] ids);
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevCcMapper.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.mapper;
+
+import com.ruoyi.project.sems.domain.TSpecdevCc;
+
+import java.util.List;
+
+/**
+ * 特种设备叉车台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface TSpecdevCcMapper
+{
+    /**
+     * 查询特种设备叉车台账
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 特种设备叉车台账
+     */
+    public TSpecdevCc selectTSpecdevCcById(Long id);
+
+    /**
+     * 查询特种设备叉车台账列表
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 特种设备叉车台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevCc> selectTSpecdevCcList(TSpecdevCc tSpecdevCc);
+
+    List<TSpecdevCc> selectTSpecdevCcListByYear(TSpecdevCc tSpecdevCc);
+    /**
+     * 新增特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    public int insertTSpecdevCc(TSpecdevCc tSpecdevCc);
+
+    /**
+     * 修改特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    public int updateTSpecdevCc(TSpecdevCc tSpecdevCc);
+
+    /**
+     * 删除特种设备叉车台账
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevCcById(Long id);
+
+    /**
+     * 批量删除特种设备叉车台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevCcByIds(Long[] ids);
+
+    void duplicateTSpecdevCc();
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDtMapper.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.project.sems.domain.TSpecdevDt;
+/**
+ * 特种设备电梯台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface TSpecdevDtMapper
+{
+    /**
+     * 查询特种设备电梯台账
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 特种设备电梯台账
+     */
+    public TSpecdevDt selectTSpecdevDtById(Long id);
+
+    /**
+     * 查询特种设备电梯台账列表
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 特种设备电梯台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevDt> selectTSpecdevDtList(TSpecdevDt tSpecdevDt);
+
+    List<TSpecdevDt> selectTSpecdevDtListByYear(TSpecdevDt tSpecdevDt);
+    /**
+     * 新增特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    public int insertTSpecdevDt(TSpecdevDt tSpecdevDt);
+
+    /**
+     * 修改特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    public int updateTSpecdevDt(TSpecdevDt tSpecdevDt);
+
+    /**
+     * 删除特种设备电梯台账
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDtById(Long id);
+
+    /**
+     * 批量删除特种设备电梯台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDtByIds(Long[] ids);
+
+    void duplicateTSpecdevDt();
+}

+ 67 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDzsbMapper.java

@@ -0,0 +1,67 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.project.sems.domain.TSpecdevDzsb;
+
+/**
+ * 特种设备吊装设备台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface TSpecdevDzsbMapper
+{
+    /**
+     * 查询特种设备吊装设备台账
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 特种设备吊装设备台账
+     */
+    public TSpecdevDzsb selectTSpecdevDzsbById(Long id);
+
+    /**
+     * 查询特种设备吊装设备台账列表
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 特种设备吊装设备台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevDzsb> selectTSpecdevDzsbList(TSpecdevDzsb tSpecdevDzsb);
+
+    List<TSpecdevDzsb> selectTSpecdevDzsbListByYear(TSpecdevDzsb tSpecdevDzsb);
+    /**
+     * 新增特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    public int insertTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb);
+
+    /**
+     * 修改特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    public int updateTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb);
+
+    /**
+     * 删除特种设备吊装设备台账
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDzsbById(Long id);
+
+    /**
+     * 批量删除特种设备吊装设备台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDzsbByIds(Long[] ids);
+
+    void duplicateTSpecdevDzsb();
+}

+ 64 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevFixedAssetMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.sems.mapper;
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.project.sems.domain.TSpecdevFixedAsset;
+
+import java.util.List;
+
+/**
+ * 固定资产Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-10-18
+ */
+public interface TSpecdevFixedAssetMapper
+{
+    /**
+     * 查询固定资产
+     *
+     * @param id 固定资产ID
+     * @return 固定资产
+     */
+    public TSpecdevFixedAsset selectTSpecdevFixedAssetById(Long id);
+
+    /**
+     * 查询固定资产列表
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 固定资产集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TSpecdevFixedAsset> selectTSpecdevFixedAssetList(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 新增固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    public int insertTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 修改固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    public int updateTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 删除固定资产
+     *
+     * @param id 固定资产ID
+     * @return 结果
+     */
+    public int deleteTSpecdevFixedAssetById(Long id);
+
+    /**
+     * 批量删除固定资产
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevFixedAssetByIds(Long[] ids);
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevGlMapper.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevGl;
+
+/**
+ * 特种设备锅炉台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-21
+ */
+public interface TSpecdevGlMapper
+{
+    /**
+     * 查询特种设备锅炉台账
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 特种设备锅炉台账
+     */
+    public TSpecdevGl selectTSpecdevGlById(Long id);
+
+    /**
+     * 查询特种设备锅炉台账列表
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 特种设备锅炉台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevGl> selectTSpecdevGlList(TSpecdevGl tSpecdevGl);
+
+    List<TSpecdevGl> selectTSpecdevGlListByYear(TSpecdevGl tSpecdevGl);
+    /**
+     * 新增特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    public int insertTSpecdevGl(TSpecdevGl tSpecdevGl);
+
+    /**
+     * 修改特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    public int updateTSpecdevGl(TSpecdevGl tSpecdevGl);
+
+    /**
+     * 删除特种设备锅炉台账
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevGlById(Long id);
+
+    /**
+     * 批量删除特种设备锅炉台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevGlByIds(Long[] ids);
+
+
+    void duplicateTSpecdevGl();
+}

+ 64 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevMainMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.project.sems.domain.TSpecdevMain;
+
+/**
+ * 设备总Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-09
+ */
+public interface TSpecdevMainMapper 
+{
+    /**
+     * 查询设备总
+     * 
+     * @param id 设备总ID
+     * @return 设备总
+     */
+    public TSpecdevMain selectTSpecdevMainById(Long id);
+
+    /**
+     * 查询设备总列表
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 设备总集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TSpecdevMain> selectTSpecdevMainList(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 新增设备总
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    public int insertTSpecdevMain(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 修改设备总
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    public int updateTSpecdevMain(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 删除设备总
+     * 
+     * @param id 设备总ID
+     * @return 结果
+     */
+    public int deleteTSpecdevMainById(Long id);
+
+    /**
+     * 批量删除设备总
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevMainByIds(Long[] ids);
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevTypemgrMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevTypemgr;
+
+/**
+ * 设备类型管理Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-08-08
+ */
+public interface TSpecdevTypemgrMapper 
+{
+    /**
+     * 查询设备类型管理
+     * 
+     * @param id 设备类型管理主键
+     * @return 设备类型管理
+     */
+    public TSpecdevTypemgr selectTSpecdevTypemgrById(Long id);
+
+    /**
+     * 查询设备类型管理列表
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 设备类型管理集合
+     */
+    public List<TSpecdevTypemgr> selectTSpecdevTypemgrList(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 新增设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    public int insertTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 修改设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    public int updateTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 删除设备类型管理
+     * 
+     * @param id 设备类型管理主键
+     * @return 结果
+     */
+    public int deleteTSpecdevTypemgrById(Long id);
+
+    /**
+     * 批量删除设备类型管理
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSpecdevTypemgrByIds(Long[] ids);
+}

+ 73 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlgdMapper.java

@@ -0,0 +1,73 @@
+package com.ruoyi.project.sems.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.sems.domain.TSpecdevYlgd;
+
+/**
+ * 特种设备压力管道台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-22
+ */
+public interface TSpecdevYlgdMapper{
+    /**
+     * 查询特种设备压力管道台账
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 特种设备压力管道台账
+     */
+    public TSpecdevYlgd selectTSpecdevYlgdById(Long id);
+
+    /**
+     * 查询特种设备压力管道台账
+     *
+     * @param ids 特种设备压力管道台账ID集合
+     * @return 特种设备压力管道台账
+     */
+    public List<TSpecdevYlgd> selectTSpecdevYlgdByIds(List<Long> ids);
+
+    /**
+     * 查询特种设备压力管道台账列表
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 特种设备压力管道台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevYlgd> selectTSpecdevYlgdList(TSpecdevYlgd tSpecdevYlgd);
+
+    List<TSpecdevYlgd> selectTSpecdevYlgdListByYear(TSpecdevYlgd tSpecdevYlgd);
+    /**
+     * 新增特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    public int insertTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd);
+
+    /**
+     * 修改特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    public int updateTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd);
+
+    /**
+     * 删除特种设备压力管道台账
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlgdById(Long id);
+
+    /**
+     * 批量删除特种设备压力管道台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlgdByIds(Long[] ids);
+
+    void duplicateTSpecdevYlgd();
+}

+ 75 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlrqMapper.java

@@ -0,0 +1,75 @@
+package com.ruoyi.project.sems.mapper;
+
+
+import com.ruoyi.project.sems.domain.TSpecdevYlrq;
+
+import java.util.List;
+
+/**
+ * 特种设备压力容器台账Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+public interface TSpecdevYlrqMapper {
+
+    /**
+     * 查询特种设备压力容器台账
+     *
+     * @param ids 特种设备压力容器台账ID集合
+     * @return 特种设备压力容器台账
+     */
+    public List<TSpecdevYlrq> selectTSpecdevYlrqByIds(List<Long> ids);
+
+    /**
+     * 查询特种设备压力容器台账
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 特种设备压力容器台账
+     */
+    public TSpecdevYlrq selectTSpecdevYlrqById(Long id);
+
+    /**
+     * 查询特种设备压力容器台账列表
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 特种设备压力容器台账集合
+     */
+//    @DataScopePlant(deptAlias = "d")
+    public List<TSpecdevYlrq> selectTSpecdevYlrqList(TSpecdevYlrq tSpecdevYlrq);
+
+    List<TSpecdevYlrq> selectTSpecdevYlrqListByYear(TSpecdevYlrq tSpecdevYlrq);
+    /**
+     * 新增特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    public int insertTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq);
+
+    /**
+     * 修改特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    public int updateTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq);
+
+    /**
+     * 删除特种设备压力容器台账
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlrqById(Long id);
+
+    /**
+     * 批量删除特种设备压力容器台账
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlrqByIds(Long[] ids);
+
+    void duplicateTSpecdevYlrq();
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevAqfService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.sems.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevAqf;
+
+/**
+ * 特种设备安全阀台账Service接口
+ *
+ * @author ruoyi
+ * @date 2022-09-28
+ */
+public interface ITSpecdevAqfService
+{
+    /**
+     * 查询特种设备安全阀台账
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 特种设备安全阀台账
+     */
+    public TSpecdevAqf selectTSpecdevAqfById(Long id);
+
+    /**
+     * 查询特种设备安全阀台账列表
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 特种设备安全阀台账集合
+     */
+    public List<TSpecdevAqf> selectTSpecdevAqfList(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 新增特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    public int insertTSpecdevAqf(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 修改特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    public int updateTSpecdevAqf(TSpecdevAqf tSpecdevAqf);
+
+    /**
+     * 批量删除特种设备安全阀台账
+     *
+     * @param ids 需要删除的特种设备安全阀台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAqfByIds(Long[] ids);
+
+    /**
+     * 删除特种设备安全阀台账信息
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAqfById(Long id);
+    public int deleteTSpecdevAqfByMainId(Long id);
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevAssetService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevAsset;
+
+/**
+ * 资产与运营Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-12
+ */
+public interface ITSpecdevAssetService 
+{
+    /**
+     * 查询资产与运营
+     * 
+     * @param id 资产与运营ID
+     * @return 资产与运营
+     */
+    public TSpecdevAsset selectTSpecdevAssetById(Long id);
+
+    /**
+     * 查询资产与运营列表
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 资产与运营集合
+     */
+    public List<TSpecdevAsset> selectTSpecdevAssetList(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 新增资产与运营
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    public int insertTSpecdevAsset(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 修改资产与运营
+     * 
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    public int updateTSpecdevAsset(TSpecdevAsset tSpecdevAsset);
+
+    /**
+     * 批量删除资产与运营
+     * 
+     * @param ids 需要删除的资产与运营ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAssetByIds(Long[] ids);
+
+    /**
+     * 删除资产与运营信息
+     * 
+     * @param id 资产与运营ID
+     * @return 结果
+     */
+    public int deleteTSpecdevAssetById(Long id);
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevCcService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.project.sems.domain.TSpecdevCc;
+
+/**
+ * 特种设备叉车台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface ITSpecdevCcService
+{
+    /**
+     * 查询特种设备叉车台账
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 特种设备叉车台账
+     */
+    public TSpecdevCc selectTSpecdevCcById(Long id);
+
+    /**
+     * 查询特种设备叉车台账列表
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 特种设备叉车台账集合
+     */
+    public List<TSpecdevCc> selectTSpecdevCcList(TSpecdevCc tSpecdevCc);
+
+    List<TSpecdevCc> selectTSpecdevCcListByYear(TSpecdevCc tSpecdevCc);
+    /**
+     * 新增特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    public int insertTSpecdevCc(TSpecdevCc tSpecdevCc);
+
+    /**
+     * 修改特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    public int updateTSpecdevCc(TSpecdevCc tSpecdevCc);
+
+    /**
+     * 批量删除特种设备叉车台账
+     *
+     * @param ids 需要删除的特种设备叉车台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevCcByIds(Long[] ids);
+
+    /**
+     * 删除特种设备叉车台账信息
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevCcById(Long id);
+
+    void duplicateTSpecdevCc();
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevDtService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevDt;
+
+import java.util.List;
+
+/**
+ * 特种设备电梯台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface ITSpecdevDtService {
+    /**
+     * 查询特种设备电梯台账
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 特种设备电梯台账
+     */
+    public TSpecdevDt selectTSpecdevDtById(Long id);
+
+    /**
+     * 查询特种设备电梯台账列表
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 特种设备电梯台账集合
+     */
+    public List<TSpecdevDt> selectTSpecdevDtList(TSpecdevDt tSpecdevDt);
+
+    List<TSpecdevDt> selectTSpecdevDtListByYear(TSpecdevDt tSpecdevDt);
+
+    /**
+     * 新增特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    public int insertTSpecdevDt(TSpecdevDt tSpecdevDt);
+
+    /**
+     * 修改特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    public int updateTSpecdevDt(TSpecdevDt tSpecdevDt);
+
+    /**
+     * 批量删除特种设备电梯台账
+     *
+     * @param ids 需要删除的特种设备电梯台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDtByIds(Long[] ids);
+
+    /**
+     * 删除特种设备电梯台账信息
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDtById(Long id);
+
+
+    void duplicateTSpecdevDt();
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevDzsbService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevDzsb;
+
+import java.util.List;
+
+/**
+ * 特种设备吊装设备台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+public interface ITSpecdevDzsbService {
+    /**
+     * 查询特种设备吊装设备台账
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 特种设备吊装设备台账
+     */
+    public TSpecdevDzsb selectTSpecdevDzsbById(Long id);
+
+    /**
+     * 查询特种设备吊装设备台账列表
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 特种设备吊装设备台账集合
+     */
+    public List<TSpecdevDzsb> selectTSpecdevDzsbList(TSpecdevDzsb tSpecdevDzsb);
+
+    List<TSpecdevDzsb> selectTSpecdevDzsbListByYear(TSpecdevDzsb tSpecdevDzsb);
+
+    /**
+     * 新增特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    public int insertTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb);
+
+    /**
+     * 修改特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    public int updateTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb);
+
+    /**
+     * 批量删除特种设备吊装设备台账
+     *
+     * @param ids 需要删除的特种设备吊装设备台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDzsbByIds(Long[] ids);
+
+    /**
+     * 删除特种设备吊装设备台账信息
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevDzsbById(Long id);
+
+
+    void duplicateTSpecdevDzsb();
+}

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevFixedAssetService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevFixedAsset;
+
+import java.util.List;
+
+/**
+ * 固定资产Service接口
+ *
+ * @author ruoyi
+ * @date 2022-10-18
+ */
+public interface ITSpecdevFixedAssetService
+{
+    /**
+     * 查询固定资产
+     *
+     * @param id 固定资产ID
+     * @return 固定资产
+     */
+    public TSpecdevFixedAsset selectTSpecdevFixedAssetById(Long id);
+
+    /**
+     * 查询固定资产列表
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 固定资产集合
+     */
+    public List<TSpecdevFixedAsset> selectTSpecdevFixedAssetList(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 新增固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    public int insertTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 修改固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    public int updateTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset);
+
+    /**
+     * 批量删除固定资产
+     *
+     * @param ids 需要删除的固定资产ID
+     * @return 结果
+     */
+    public int deleteTSpecdevFixedAssetByIds(Long[] ids);
+
+    /**
+     * 删除固定资产信息
+     *
+     * @param id 固定资产ID
+     * @return 结果
+     */
+    public int deleteTSpecdevFixedAssetById(Long id);
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevGlService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevGl;
+
+import java.util.List;
+
+/**
+ * 特种设备锅炉台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-21
+ */
+public interface ITSpecdevGlService
+{
+    /**
+     * 查询特种设备锅炉台账
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 特种设备锅炉台账
+     */
+    public TSpecdevGl selectTSpecdevGlById(Long id);
+
+    /**
+     * 查询特种设备锅炉台账列表
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 特种设备锅炉台账集合
+     */
+    public List<TSpecdevGl> selectTSpecdevGlList(TSpecdevGl tSpecdevGl);
+    List<TSpecdevGl> selectTSpecdevGlListByYear(TSpecdevGl tSpecdevGl);
+    /**
+     * 新增特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    public int insertTSpecdevGl(TSpecdevGl tSpecdevGl);
+
+    /**
+     * 修改特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    public int updateTSpecdevGl(TSpecdevGl tSpecdevGl);
+
+    /**
+     * 批量删除特种设备锅炉台账
+     *
+     * @param ids 需要删除的特种设备锅炉台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevGlByIds(Long[] ids);
+
+    /**
+     * 删除特种设备锅炉台账信息
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevGlById(Long id);
+
+
+
+    void duplicateTSpecdevGl();
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevMainService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevMain;
+
+/**
+ * 设备总Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-09
+ */
+public interface ITSpecdevMainService 
+{
+    /**
+     * 查询设备总
+     * 
+     * @param id 设备总ID
+     * @return 设备总
+     */
+    public TSpecdevMain selectTSpecdevMainById(Long id);
+
+    /**
+     * 查询设备总列表
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 设备总集合
+     */
+    public List<TSpecdevMain> selectTSpecdevMainList(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 新增设备总
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    public int insertTSpecdevMain(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 修改设备总
+     * 
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    public int updateTSpecdevMain(TSpecdevMain tSpecdevMain);
+
+    /**
+     * 批量删除设备总
+     * 
+     * @param ids 需要删除的设备总ID
+     * @return 结果
+     */
+    public int deleteTSpecdevMainByIds(Long[] ids);
+
+    /**
+     * 删除设备总信息
+     * 
+     * @param id 设备总ID
+     * @return 结果
+     */
+    public int deleteTSpecdevMainById(Long id);
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevTypemgrService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.domain.TSpecdevTypemgr;
+
+/**
+ * 设备类型管理Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-08-08
+ */
+public interface ITSpecdevTypemgrService 
+{
+    /**
+     * 查询设备类型管理
+     * 
+     * @param id 设备类型管理主键
+     * @return 设备类型管理
+     */
+    public TSpecdevTypemgr selectTSpecdevTypemgrById(Long id);
+
+    /**
+     * 查询设备类型管理列表
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 设备类型管理集合
+     */
+    public List<TSpecdevTypemgr> selectTSpecdevTypemgrList(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 新增设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    public int insertTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 修改设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    public int updateTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr);
+
+    /**
+     * 批量删除设备类型管理
+     * 
+     * @param ids 需要删除的设备类型管理主键集合
+     * @return 结果
+     */
+    public int deleteTSpecdevTypemgrByIds(Long[] ids);
+
+    /**
+     * 删除设备类型管理信息
+     * 
+     * @param id 设备类型管理主键
+     * @return 结果
+     */
+    public int deleteTSpecdevTypemgrById(Long id);
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevYlgdService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevYlgd;
+
+import java.util.List;
+
+/**
+ * 特种设备压力管道台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-22
+ */
+public interface ITSpecdevYlgdService
+{
+    /**
+     * 查询特种设备压力管道台账
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 特种设备压力管道台账
+     */
+    public TSpecdevYlgd selectTSpecdevYlgdById(Long id);
+
+    /**
+     * 查询特种设备压力管道台账列表
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 特种设备压力管道台账集合
+     */
+    public List<TSpecdevYlgd> selectTSpecdevYlgdList(TSpecdevYlgd tSpecdevYlgd);
+    List<TSpecdevYlgd> selectTSpecdevYlgdListByYear(TSpecdevYlgd tSpecdevYlgd);
+    /**
+     * 新增特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    public int insertTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd);
+
+    /**
+     * 修改特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    public int updateTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd);
+
+    /**
+     * 批量删除特种设备压力管道台账
+     *
+     * @param ids 需要删除的特种设备压力管道台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlgdByIds(Long[] ids);
+
+    /**
+     * 删除特种设备压力管道台账信息
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlgdById(Long id);
+
+
+
+    void duplicateTSpecdevYlgd();
+}

+ 65 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/ITSpecdevYlrqService.java

@@ -0,0 +1,65 @@
+package com.ruoyi.project.sems.service;
+
+import com.ruoyi.project.sems.domain.TSpecdevYlrq;
+
+import java.util.List;
+
+/**
+ * 特种设备压力容器台账Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+public interface ITSpecdevYlrqService
+{
+    /**
+     * 查询特种设备压力容器台账
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 特种设备压力容器台账
+     */
+    public TSpecdevYlrq selectTSpecdevYlrqById(Long id);
+
+    /**
+     * 查询特种设备压力容器台账列表
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 特种设备压力容器台账集合
+     */
+    public List<TSpecdevYlrq> selectTSpecdevYlrqList(TSpecdevYlrq tSpecdevYlrq);
+
+    List<TSpecdevYlrq> selectTSpecdevYlrqListByYear(TSpecdevYlrq tSpecdevYlrq);
+    /**
+     * 新增特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    public int insertTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq);
+
+    /**
+     * 修改特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    public int updateTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq);
+
+    /**
+     * 批量删除特种设备压力容器台账
+     *
+     * @param ids 需要删除的特种设备压力容器台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlrqByIds(Long[] ids);
+
+    /**
+     * 删除特种设备压力容器台账信息
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 结果
+     */
+    public int deleteTSpecdevYlrqById(Long id);
+
+    void duplicateTSpecdevYlrq();
+}

+ 97 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevAqfServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevAqfMapper;
+import com.ruoyi.project.sems.domain.TSpecdevAqf;
+import com.ruoyi.project.sems.service.ITSpecdevAqfService;
+
+/**
+ * 特种设备安全阀台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-09-28
+ */
+@Service
+public class TSpecdevAqfServiceImpl implements ITSpecdevAqfService
+{
+    @Autowired
+    private TSpecdevAqfMapper tSpecdevAqfMapper;
+
+    /**
+     * 查询特种设备安全阀台账
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 特种设备安全阀台账
+     */
+    @Override
+    public TSpecdevAqf selectTSpecdevAqfById(Long id)
+    {
+        return tSpecdevAqfMapper.selectTSpecdevAqfById(id);
+    }
+
+    /**
+     * 查询特种设备安全阀台账列表
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 特种设备安全阀台账
+     */
+    @Override
+    public List<TSpecdevAqf> selectTSpecdevAqfList(TSpecdevAqf tSpecdevAqf)
+    {
+        return tSpecdevAqfMapper.selectTSpecdevAqfList(tSpecdevAqf);
+    }
+
+    /**
+     * 新增特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevAqf(TSpecdevAqf tSpecdevAqf)
+    {
+        return tSpecdevAqfMapper.insertTSpecdevAqf(tSpecdevAqf);
+    }
+
+    /**
+     * 修改特种设备安全阀台账
+     *
+     * @param tSpecdevAqf 特种设备安全阀台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevAqf(TSpecdevAqf tSpecdevAqf)
+    {
+        return tSpecdevAqfMapper.updateTSpecdevAqf(tSpecdevAqf);
+    }
+
+    /**
+     * 批量删除特种设备安全阀台账
+     *
+     * @param ids 需要删除的特种设备安全阀台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevAqfByIds(Long[] ids)
+    {
+        return tSpecdevAqfMapper.deleteTSpecdevAqfByIds(ids);
+    }
+
+    /**
+     * 删除特种设备安全阀台账信息
+     *
+     * @param id 特种设备安全阀台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevAqfById(Long id)
+    {
+        return tSpecdevAqfMapper.deleteTSpecdevAqfById(id);
+    }  @Override
+    public int deleteTSpecdevAqfByMainId(Long id)
+    {
+        return tSpecdevAqfMapper.deleteTSpecdevAqfByMainId(id);
+    }
+}

+ 93 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevAssetServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevAssetMapper;
+import com.ruoyi.project.sems.domain.TSpecdevAsset;
+import com.ruoyi.project.sems.service.ITSpecdevAssetService;
+
+/**
+ * 资产与运营Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-10-12
+ */
+@Service
+public class TSpecdevAssetServiceImpl implements ITSpecdevAssetService
+{
+    @Autowired
+    private TSpecdevAssetMapper tSpecdevAssetMapper;
+
+    /**
+     * 查询资产与运营
+     *
+     * @param id 资产与运营ID
+     * @return 资产与运营
+     */
+    @Override
+    public TSpecdevAsset selectTSpecdevAssetById(Long id)
+    {
+        return tSpecdevAssetMapper.selectTSpecdevAssetById(id);
+    }
+
+    /**
+     * 查询资产与运营列表
+     *
+     * @param tSpecdevAsset 资产与运营
+     * @return 资产与运营
+     */
+    @Override
+    public List<TSpecdevAsset> selectTSpecdevAssetList(TSpecdevAsset tSpecdevAsset)
+    {
+        return tSpecdevAssetMapper.selectTSpecdevAssetList(tSpecdevAsset);
+    }
+
+    /**
+     * 新增资产与运营
+     *
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevAsset(TSpecdevAsset tSpecdevAsset)
+    {
+        return tSpecdevAssetMapper.insertTSpecdevAsset(tSpecdevAsset);
+    }
+
+    /**
+     * 修改资产与运营
+     *
+     * @param tSpecdevAsset 资产与运营
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevAsset(TSpecdevAsset tSpecdevAsset)
+    {
+        return tSpecdevAssetMapper.updateTSpecdevAsset(tSpecdevAsset);
+    }
+
+    /**
+     * 批量删除资产与运营
+     *
+     * @param ids 需要删除的资产与运营ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevAssetByIds(Long[] ids)
+    {
+        return tSpecdevAssetMapper.deleteTSpecdevAssetByIds(ids);
+    }
+
+    /**
+     * 删除资产与运营信息
+     *
+     * @param id 资产与运营ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevAssetById(Long id)
+    {
+        return tSpecdevAssetMapper.deleteTSpecdevAssetById(id);
+    }
+}

+ 103 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevCcServiceImpl.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevCcMapper;
+import com.ruoyi.project.sems.domain.TSpecdevCc;
+import com.ruoyi.project.sems.service.ITSpecdevCcService;
+
+/**
+ * 特种设备叉车台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@Service
+public class TSpecdevCcServiceImpl implements ITSpecdevCcService
+{
+    @Autowired
+    private TSpecdevCcMapper tSpecdevCcMapper;
+
+    /**
+     * 查询特种设备叉车台账
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 特种设备叉车台账
+     */
+    @Override
+    public TSpecdevCc selectTSpecdevCcById(Long id)
+    {
+        return tSpecdevCcMapper.selectTSpecdevCcById(id);
+    }
+
+    /**
+     * 查询特种设备叉车台账列表
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 特种设备叉车台账
+     */
+    @Override
+    public List<TSpecdevCc> selectTSpecdevCcList(TSpecdevCc tSpecdevCc)
+    {
+        return tSpecdevCcMapper.selectTSpecdevCcList(tSpecdevCc);
+    }
+
+    @Override
+    public List<TSpecdevCc> selectTSpecdevCcListByYear(TSpecdevCc tSpecdevCc) {
+        return tSpecdevCcMapper.selectTSpecdevCcListByYear(tSpecdevCc);
+    }
+
+    /**
+     * 新增特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevCc(TSpecdevCc tSpecdevCc)
+    {
+        return tSpecdevCcMapper.insertTSpecdevCc(tSpecdevCc);
+    }
+
+    /**
+     * 修改特种设备叉车台账
+     *
+     * @param tSpecdevCc 特种设备叉车台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevCc(TSpecdevCc tSpecdevCc)
+    {
+        return tSpecdevCcMapper.updateTSpecdevCc(tSpecdevCc);
+    }
+
+    /**
+     * 批量删除特种设备叉车台账
+     *
+     * @param ids 需要删除的特种设备叉车台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevCcByIds(Long[] ids)
+    {
+        return tSpecdevCcMapper.deleteTSpecdevCcByIds(ids);
+    }
+
+    /**
+     * 删除特种设备叉车台账信息
+     *
+     * @param id 特种设备叉车台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevCcById(Long id)
+    {
+        return tSpecdevCcMapper.deleteTSpecdevCcById(id);
+    }
+
+    @Override
+    public void duplicateTSpecdevCc() {
+        tSpecdevCcMapper.duplicateTSpecdevCc();
+    }
+}

+ 105 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevDtServiceImpl.java

@@ -0,0 +1,105 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevDtMapper;
+import com.ruoyi.project.sems.domain.TSpecdevDt;
+import com.ruoyi.project.sems.service.ITSpecdevDtService;
+
+/**
+ * 特种设备电梯台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@Service("tSpecdevDtService")
+public class TSpecdevDtServiceImpl implements ITSpecdevDtService
+{
+    @Autowired
+    private TSpecdevDtMapper tSpecdevDtMapper;
+
+    /**
+     * 查询特种设备电梯台账
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 特种设备电梯台账
+     */
+    @Override
+    public TSpecdevDt selectTSpecdevDtById(Long id)
+    {
+        return tSpecdevDtMapper.selectTSpecdevDtById(id);
+    }
+
+    /**
+     * 查询特种设备电梯台账列表
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 特种设备电梯台账
+     */
+    @Override
+    public List<TSpecdevDt> selectTSpecdevDtList(TSpecdevDt tSpecdevDt)
+    {
+        return tSpecdevDtMapper.selectTSpecdevDtList(tSpecdevDt);
+    }
+
+    @Override
+    public List<TSpecdevDt> selectTSpecdevDtListByYear(TSpecdevDt tSpecdevDt) {
+        return tSpecdevDtMapper.selectTSpecdevDtListByYear(tSpecdevDt);
+    }
+
+    /**
+     * 新增特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevDt(TSpecdevDt tSpecdevDt)
+    {
+        return tSpecdevDtMapper.insertTSpecdevDt(tSpecdevDt);
+    }
+
+    /**
+     * 修改特种设备电梯台账
+     *
+     * @param tSpecdevDt 特种设备电梯台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevDt(TSpecdevDt tSpecdevDt)
+    {
+        return tSpecdevDtMapper.updateTSpecdevDt(tSpecdevDt);
+    }
+
+    /**
+     * 批量删除特种设备电梯台账
+     *
+     * @param ids 需要删除的特种设备电梯台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevDtByIds(Long[] ids)
+    {
+        return tSpecdevDtMapper.deleteTSpecdevDtByIds(ids);
+    }
+
+    /**
+     * 删除特种设备电梯台账信息
+     *
+     * @param id 特种设备电梯台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevDtById(Long id)
+    {
+        return tSpecdevDtMapper.deleteTSpecdevDtById(id);
+    }
+
+    @Override
+    public void duplicateTSpecdevDt() {
+        tSpecdevDtMapper.duplicateTSpecdevDt();
+    }
+}

+ 106 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevDzsbServiceImpl.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevDzsbMapper;
+import com.ruoyi.project.sems.domain.TSpecdevDzsb;
+import com.ruoyi.project.sems.service.ITSpecdevDzsbService;
+
+/**
+ * 特种设备吊装设备台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-26
+ */
+@Service("tSpecdevDzsbService")
+public class TSpecdevDzsbServiceImpl implements ITSpecdevDzsbService
+{
+    @Autowired
+    private TSpecdevDzsbMapper tSpecdevDzsbMapper;
+
+    /**
+     * 查询特种设备吊装设备台账
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 特种设备吊装设备台账
+     */
+    @Override
+    public TSpecdevDzsb selectTSpecdevDzsbById(Long id)
+    {
+        return tSpecdevDzsbMapper.selectTSpecdevDzsbById(id);
+    }
+
+    /**
+     * 查询特种设备吊装设备台账列表
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 特种设备吊装设备台账
+     */
+    @Override
+    public List<TSpecdevDzsb> selectTSpecdevDzsbList(TSpecdevDzsb tSpecdevDzsb)
+    {
+        return tSpecdevDzsbMapper.selectTSpecdevDzsbList(tSpecdevDzsb);
+    }
+
+    @Override
+    public List<TSpecdevDzsb> selectTSpecdevDzsbListByYear(TSpecdevDzsb tSpecdevDzsb) {
+        return tSpecdevDzsbMapper.selectTSpecdevDzsbListByYear(tSpecdevDzsb);
+    }
+
+    /**
+     * 新增特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb)
+    {
+        return tSpecdevDzsbMapper.insertTSpecdevDzsb(tSpecdevDzsb);
+    }
+
+    /**
+     * 修改特种设备吊装设备台账
+     *
+     * @param tSpecdevDzsb 特种设备吊装设备台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevDzsb(TSpecdevDzsb tSpecdevDzsb)
+    {
+        return tSpecdevDzsbMapper.updateTSpecdevDzsb(tSpecdevDzsb);
+    }
+
+    /**
+     * 批量删除特种设备吊装设备台账
+     *
+     * @param ids 需要删除的特种设备吊装设备台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevDzsbByIds(Long[] ids)
+    {
+        return tSpecdevDzsbMapper.deleteTSpecdevDzsbByIds(ids);
+    }
+
+    /**
+     * 删除特种设备吊装设备台账信息
+     *
+     * @param id 特种设备吊装设备台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevDzsbById(Long id)
+    {
+        return tSpecdevDzsbMapper.deleteTSpecdevDzsbById(id);
+    }
+
+
+    @Override
+    public void duplicateTSpecdevDzsb() {
+        tSpecdevDzsbMapper.duplicateTSpecdevDzsb();
+    }
+}

+ 94 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevFixedAssetServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.project.sems.service.impl;
+
+import com.ruoyi.project.sems.domain.TSpecdevFixedAsset;
+import com.ruoyi.project.sems.mapper.TSpecdevFixedAssetMapper;
+import com.ruoyi.project.sems.service.ITSpecdevFixedAssetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 固定资产Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-10-18
+ */
+@Service
+public class TSpecdevFixedAssetServiceImpl implements ITSpecdevFixedAssetService
+{
+    @Autowired
+    private TSpecdevFixedAssetMapper tSpecdevFixedAssetMapper;
+
+    /**
+     * 查询固定资产
+     *
+     * @param id 固定资产ID
+     * @return 固定资产
+     */
+    @Override
+    public TSpecdevFixedAsset selectTSpecdevFixedAssetById(Long id)
+    {
+        return tSpecdevFixedAssetMapper.selectTSpecdevFixedAssetById(id);
+    }
+
+    /**
+     * 查询固定资产列表
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 固定资产
+     */
+    @Override
+    public List<TSpecdevFixedAsset> selectTSpecdevFixedAssetList(TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        return tSpecdevFixedAssetMapper.selectTSpecdevFixedAssetList(tSpecdevFixedAsset);
+    }
+
+    /**
+     * 新增固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        return tSpecdevFixedAssetMapper.insertTSpecdevFixedAsset(tSpecdevFixedAsset);
+    }
+
+    /**
+     * 修改固定资产
+     *
+     * @param tSpecdevFixedAsset 固定资产
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevFixedAsset(TSpecdevFixedAsset tSpecdevFixedAsset)
+    {
+        return tSpecdevFixedAssetMapper.updateTSpecdevFixedAsset(tSpecdevFixedAsset);
+    }
+
+    /**
+     * 批量删除固定资产
+     *
+     * @param ids 需要删除的固定资产ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevFixedAssetByIds(Long[] ids)
+    {
+        return tSpecdevFixedAssetMapper.deleteTSpecdevFixedAssetByIds(ids);
+    }
+
+    /**
+     * 删除固定资产信息
+     *
+     * @param id 固定资产ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevFixedAssetById(Long id)
+    {
+        return tSpecdevFixedAssetMapper.deleteTSpecdevFixedAssetById(id);
+    }
+}

+ 103 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevGlServiceImpl.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevGlMapper;
+import com.ruoyi.project.sems.domain.TSpecdevGl;
+import com.ruoyi.project.sems.service.ITSpecdevGlService;
+
+/**
+ * 特种设备锅炉台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-21
+ */
+@Service("tSpecdevGlService")
+public class TSpecdevGlServiceImpl  implements ITSpecdevGlService
+{
+    @Autowired
+    private TSpecdevGlMapper tSpecdevGlMapper;
+
+    /**
+     * 查询特种设备锅炉台账
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 特种设备锅炉台账
+     */
+    @Override
+    public TSpecdevGl selectTSpecdevGlById(Long id)
+    {
+        return tSpecdevGlMapper.selectTSpecdevGlById(id);
+    }
+
+    /**
+     * 查询特种设备锅炉台账列表
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 特种设备锅炉台账
+     */
+    @Override
+    public List<TSpecdevGl> selectTSpecdevGlList(TSpecdevGl tSpecdevGl)
+    {
+        return tSpecdevGlMapper.selectTSpecdevGlList(tSpecdevGl);
+    }
+
+    @Override
+    public List<TSpecdevGl> selectTSpecdevGlListByYear(TSpecdevGl tSpecdevGl) {
+        return  tSpecdevGlMapper.selectTSpecdevGlListByYear(tSpecdevGl);
+    }
+
+    /**
+     * 新增特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevGl(TSpecdevGl tSpecdevGl)
+    {
+        return tSpecdevGlMapper.insertTSpecdevGl(tSpecdevGl);
+    }
+
+    /**
+     * 修改特种设备锅炉台账
+     *
+     * @param tSpecdevGl 特种设备锅炉台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevGl(TSpecdevGl tSpecdevGl)
+    {
+        return tSpecdevGlMapper.updateTSpecdevGl(tSpecdevGl);
+    }
+
+    /**
+     * 批量删除特种设备锅炉台账
+     *
+     * @param ids 需要删除的特种设备锅炉台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevGlByIds(Long[] ids)
+    {
+        return tSpecdevGlMapper.deleteTSpecdevGlByIds(ids);
+    }
+
+    /**
+     * 删除特种设备锅炉台账信息
+     *
+     * @param id 特种设备锅炉台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevGlById(Long id)
+    {
+        return tSpecdevGlMapper.deleteTSpecdevGlById(id);
+    }
+
+    @Override
+    public void duplicateTSpecdevGl() {
+        tSpecdevGlMapper.duplicateTSpecdevGl();
+    }
+}

+ 93 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevMainServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevMainMapper;
+import com.ruoyi.project.sems.domain.TSpecdevMain;
+import com.ruoyi.project.sems.service.ITSpecdevMainService;
+
+/**
+ * 设备总Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-10-09
+ */
+@Service
+public class TSpecdevMainServiceImpl implements ITSpecdevMainService
+{
+    @Autowired
+    private TSpecdevMainMapper tSpecdevMainMapper;
+
+    /**
+     * 查询设备总
+     *
+     * @param id 设备总ID
+     * @return 设备总
+     */
+    @Override
+    public TSpecdevMain selectTSpecdevMainById(Long id)
+    {
+        return tSpecdevMainMapper.selectTSpecdevMainById(id);
+    }
+
+    /**
+     * 查询设备总列表
+     *
+     * @param tSpecdevMain 设备总
+     * @return 设备总
+     */
+    @Override
+    public List<TSpecdevMain> selectTSpecdevMainList(TSpecdevMain tSpecdevMain)
+    {
+        return tSpecdevMainMapper.selectTSpecdevMainList(tSpecdevMain);
+    }
+
+    /**
+     * 新增设备总
+     *
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevMain(TSpecdevMain tSpecdevMain)
+    {
+        return tSpecdevMainMapper.insertTSpecdevMain(tSpecdevMain);
+    }
+
+    /**
+     * 修改设备总
+     *
+     * @param tSpecdevMain 设备总
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevMain(TSpecdevMain tSpecdevMain)
+    {
+        return tSpecdevMainMapper.updateTSpecdevMain(tSpecdevMain);
+    }
+
+    /**
+     * 批量删除设备总
+     *
+     * @param ids 需要删除的设备总ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevMainByIds(Long[] ids)
+    {
+        return tSpecdevMainMapper.deleteTSpecdevMainByIds(ids);
+    }
+
+    /**
+     * 删除设备总信息
+     *
+     * @param id 设备总ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevMainById(Long id)
+    {
+        return tSpecdevMainMapper.deleteTSpecdevMainById(id);
+    }
+}

+ 93 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevTypemgrServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevTypemgrMapper;
+import com.ruoyi.project.sems.domain.TSpecdevTypemgr;
+import com.ruoyi.project.sems.service.ITSpecdevTypemgrService;
+
+/**
+ * 设备类型管理Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-08-08
+ */
+@Service
+public class TSpecdevTypemgrServiceImpl implements ITSpecdevTypemgrService 
+{
+    @Autowired
+    private TSpecdevTypemgrMapper tSpecdevTypemgrMapper;
+
+    /**
+     * 查询设备类型管理
+     * 
+     * @param id 设备类型管理主键
+     * @return 设备类型管理
+     */
+    @Override
+    public TSpecdevTypemgr selectTSpecdevTypemgrById(Long id)
+    {
+        return tSpecdevTypemgrMapper.selectTSpecdevTypemgrById(id);
+    }
+
+    /**
+     * 查询设备类型管理列表
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 设备类型管理
+     */
+    @Override
+    public List<TSpecdevTypemgr> selectTSpecdevTypemgrList(TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return tSpecdevTypemgrMapper.selectTSpecdevTypemgrList(tSpecdevTypemgr);
+    }
+
+    /**
+     * 新增设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return tSpecdevTypemgrMapper.insertTSpecdevTypemgr(tSpecdevTypemgr);
+    }
+
+    /**
+     * 修改设备类型管理
+     * 
+     * @param tSpecdevTypemgr 设备类型管理
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevTypemgr(TSpecdevTypemgr tSpecdevTypemgr)
+    {
+        return tSpecdevTypemgrMapper.updateTSpecdevTypemgr(tSpecdevTypemgr);
+    }
+
+    /**
+     * 批量删除设备类型管理
+     * 
+     * @param ids 需要删除的设备类型管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevTypemgrByIds(Long[] ids)
+    {
+        return tSpecdevTypemgrMapper.deleteTSpecdevTypemgrByIds(ids);
+    }
+
+    /**
+     * 删除设备类型管理信息
+     * 
+     * @param id 设备类型管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevTypemgrById(Long id)
+    {
+        return tSpecdevTypemgrMapper.deleteTSpecdevTypemgrById(id);
+    }
+}

+ 105 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevYlgdServiceImpl.java

@@ -0,0 +1,105 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevYlgdMapper;
+import com.ruoyi.project.sems.domain.TSpecdevYlgd;
+import com.ruoyi.project.sems.service.ITSpecdevYlgdService;
+
+/**
+ * 特种设备压力管道台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-22
+ */
+@Service("tSpecdevYlgdService")
+public class TSpecdevYlgdServiceImpl implements ITSpecdevYlgdService
+{
+    @Autowired
+    private TSpecdevYlgdMapper tSpecdevYlgdMapper;
+
+    /**
+     * 查询特种设备压力管道台账
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 特种设备压力管道台账
+     */
+    @Override
+    public TSpecdevYlgd selectTSpecdevYlgdById(Long id)
+    {
+        return tSpecdevYlgdMapper.selectTSpecdevYlgdById(id);
+    }
+
+    /**
+     * 查询特种设备压力管道台账列表
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 特种设备压力管道台账
+     */
+    @Override
+    public List<TSpecdevYlgd> selectTSpecdevYlgdList(TSpecdevYlgd tSpecdevYlgd)
+    {
+        return tSpecdevYlgdMapper.selectTSpecdevYlgdList(tSpecdevYlgd);
+    }
+
+    @Override
+    public List<TSpecdevYlgd> selectTSpecdevYlgdListByYear(TSpecdevYlgd tSpecdevYlgd) {
+         return tSpecdevYlgdMapper.selectTSpecdevYlgdListByYear(tSpecdevYlgd);
+    }
+
+    /**
+     * 新增特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd)
+    {
+        return tSpecdevYlgdMapper.insertTSpecdevYlgd(tSpecdevYlgd);
+    }
+
+    /**
+     * 修改特种设备压力管道台账
+     *
+     * @param tSpecdevYlgd 特种设备压力管道台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevYlgd(TSpecdevYlgd tSpecdevYlgd)
+    {
+        return tSpecdevYlgdMapper.updateTSpecdevYlgd(tSpecdevYlgd);
+    }
+
+    /**
+     * 批量删除特种设备压力管道台账
+     *
+     * @param ids 需要删除的特种设备压力管道台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevYlgdByIds(Long[] ids)
+    {
+        return tSpecdevYlgdMapper.deleteTSpecdevYlgdByIds(ids);
+    }
+
+    /**
+     * 删除特种设备压力管道台账信息
+     *
+     * @param id 特种设备压力管道台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevYlgdById(Long id)
+    {
+        return tSpecdevYlgdMapper.deleteTSpecdevYlgdById(id);
+    }
+
+
+    @Override
+    public void duplicateTSpecdevYlgd() {
+        tSpecdevYlgdMapper.duplicateTSpecdevYlgd();
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/project/sems/service/impl/TSpecdevYlrqServiceImpl.java

@@ -0,0 +1,104 @@
+package com.ruoyi.project.sems.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.mapper.TSpecdevYlrqMapper;
+import com.ruoyi.project.sems.domain.TSpecdevYlrq;
+import com.ruoyi.project.sems.service.ITSpecdevYlrqService;
+
+/**
+ * 特种设备压力容器台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Service("tSpecdevYlrqService")
+public class TSpecdevYlrqServiceImpl implements ITSpecdevYlrqService
+{
+    @Autowired
+    private TSpecdevYlrqMapper tSpecdevYlrqMapper;
+
+    /**
+     * 查询特种设备压力容器台账
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 特种设备压力容器台账
+     */
+    @Override
+    public TSpecdevYlrq selectTSpecdevYlrqById(Long id)
+    {
+        return tSpecdevYlrqMapper.selectTSpecdevYlrqById(id);
+    }
+
+    /**
+     * 查询特种设备压力容器台账列表
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 特种设备压力容器台账
+     */
+    @Override
+    public List<TSpecdevYlrq> selectTSpecdevYlrqList(TSpecdevYlrq tSpecdevYlrq)
+    {
+        return tSpecdevYlrqMapper.selectTSpecdevYlrqList(tSpecdevYlrq);
+    }
+
+    @Override
+    public List<TSpecdevYlrq> selectTSpecdevYlrqListByYear(TSpecdevYlrq tSpecdevYlrq) {
+        return tSpecdevYlrqMapper.selectTSpecdevYlrqListByYear(tSpecdevYlrq);
+    }
+
+    /**
+     * 新增特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq)
+    {
+        return tSpecdevYlrqMapper.insertTSpecdevYlrq(tSpecdevYlrq);
+    }
+
+    /**
+     * 修改特种设备压力容器台账
+     *
+     * @param tSpecdevYlrq 特种设备压力容器台账
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecdevYlrq(TSpecdevYlrq tSpecdevYlrq)
+    {
+        return tSpecdevYlrqMapper.updateTSpecdevYlrq(tSpecdevYlrq);
+    }
+
+    /**
+     * 批量删除特种设备压力容器台账
+     *
+     * @param ids 需要删除的特种设备压力容器台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevYlrqByIds(Long[] ids)
+    {
+        return tSpecdevYlrqMapper.deleteTSpecdevYlrqByIds(ids);
+    }
+
+    /**
+     * 删除特种设备压力容器台账信息
+     *
+     * @param id 特种设备压力容器台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecdevYlrqById(Long id)
+    {
+        return tSpecdevYlrqMapper.deleteTSpecdevYlrqById(id);
+    }
+
+    @Override
+    public void duplicateTSpecdevYlrq() {
+        tSpecdevYlrqMapper.duplicateTSpecdevYlrq();
+    }
+}

+ 7 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@@ -68,6 +68,13 @@ public class SysDeptController extends BaseController
         return success(deptService.selectDeptById(deptId));
     }
 
+    @GetMapping("/treeselect")
+    public AjaxResult treeselect(SysDept dept)
+    {
+        List<SysDept> depts = deptService.selectDeptList(dept);
+        return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
+    }
+
     /**
      * 新增部门
      */

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java

@@ -113,9 +113,9 @@ public class SwaggerConfig
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
                 // 设置标题
-                .title("标题:若依管理系统_接口文档")
+                .title("标题:cpms管理系统_接口文档")
                 // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+                .description("描述:用于管理人员信息,具体包括XXX,XXX模块...")
                 // 作者信息
                 .contact(new Contact(ruoyiConfig.getName(), null, null))
                 // 版本

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -95,7 +95,7 @@ token:
   # 令牌密钥
   secret: abcdefghijklmnopqrstuvwxyz
   # 令牌有效期(默认30分钟)
-  expireTime: 30
+  expireTime: 3000
 
 # MyBatis配置
 mybatis:

+ 152 - 0
ruoyi-admin/src/main/resources/mapper/asset/TLeakagePointsMapper.xml

@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.asset.mapper.TLeakagePointsMapper">
+    
+    <resultMap type="TLeakagePoints" id="TLeakagePointsResult">
+        <result property="id"    column="id"    />
+        <result property="pointNo"    column="point_no"    />
+        <result property="leakagePosition"    column="leakage_position"    />
+        <result property="leakageMedium"    column="leakage_medium"    />
+        <result property="discoveryTime"    column="discovery_time"    />
+        <result property="discoveryName"    column="discovery_name"    />
+        <result property="leakageAmount"    column="leakage_amount"    />
+        <result property="sapNo"    column="sap_no"    />
+        <result property="leakageEliminationTime"    column="leakage_elimination_time"    />
+        <result property="leakageEliminationFunc"    column="leakage_elimination_func"    />
+        <result property="listing"    column="listing"    />
+        <result property="pressurePlugging"    column="pressure_plugging"    />
+        <result property="leakageEliminationResult"    column="leakage_elimination_result"    />
+        <result property="nextCheckDate"    column="next_check_date"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+    </resultMap>
+
+    <sql id="selectTLeakagePointsVo">
+        select id, point_no, leakage_position, leakage_medium, discovery_time, discovery_name, leakage_amount, sap_no, leakage_elimination_time, leakage_elimination_func, listing, pressure_plugging, leakage_elimination_result, next_check_date, remarks, del_flag, creater_code, createdate, updater_code, updatedate, dept_id from t_leakage_points
+    </sql>
+
+    <select id="selectTLeakagePointsList" parameterType="TLeakagePoints" resultMap="TLeakagePointsResult">
+        <include refid="selectTLeakagePointsVo"/>
+        <where>  
+            <if test="pointNo != null  and pointNo != ''"> and point_no = #{pointNo}</if>
+            <if test="leakagePosition != null  and leakagePosition != ''"> and leakage_position = #{leakagePosition}</if>
+            <if test="leakageMedium != null  and leakageMedium != ''"> and leakage_medium = #{leakageMedium}</if>
+            <if test="discoveryTime != null "> and discovery_time = #{discoveryTime}</if>
+            <if test="discoveryName != null  and discoveryName != ''"> and discovery_name like concat('%', #{discoveryName}, '%')</if>
+            <if test="leakageAmount != null  and leakageAmount != ''"> and leakage_amount = #{leakageAmount}</if>
+            <if test="sapNo != null  and sapNo != ''"> and sap_no = #{sapNo}</if>
+            <if test="leakageEliminationTime != null "> and leakage_elimination_time = #{leakageEliminationTime}</if>
+            <if test="leakageEliminationFunc != null  and leakageEliminationFunc != ''"> and leakage_elimination_func = #{leakageEliminationFunc}</if>
+            <if test="listing != null  and listing != ''"> and listing = #{listing}</if>
+            <if test="pressurePlugging != null  and pressurePlugging != ''"> and pressure_plugging = #{pressurePlugging}</if>
+            <if test="leakageEliminationResult != null  and leakageEliminationResult != ''"> and leakage_elimination_result = #{leakageEliminationResult}</if>
+            <if test="nextCheckDate != null "> and next_check_date = #{nextCheckDate}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+        </where>
+    </select>
+    
+    <select id="selectTLeakagePointsById" parameterType="Long" resultMap="TLeakagePointsResult">
+        <include refid="selectTLeakagePointsVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTLeakagePoints" parameterType="TLeakagePoints">
+        insert into t_leakage_points
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pointNo != null">point_no,</if>
+            <if test="leakagePosition != null">leakage_position,</if>
+            <if test="leakageMedium != null">leakage_medium,</if>
+            <if test="discoveryTime != null">discovery_time,</if>
+            <if test="discoveryName != null">discovery_name,</if>
+            <if test="leakageAmount != null">leakage_amount,</if>
+            <if test="sapNo != null">sap_no,</if>
+            <if test="leakageEliminationTime != null">leakage_elimination_time,</if>
+            <if test="leakageEliminationFunc != null">leakage_elimination_func,</if>
+            <if test="listing != null">listing,</if>
+            <if test="pressurePlugging != null">pressure_plugging,</if>
+            <if test="leakageEliminationResult != null">leakage_elimination_result,</if>
+            <if test="nextCheckDate != null">next_check_date,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pointNo != null">#{pointNo},</if>
+            <if test="leakagePosition != null">#{leakagePosition},</if>
+            <if test="leakageMedium != null">#{leakageMedium},</if>
+            <if test="discoveryTime != null">#{discoveryTime},</if>
+            <if test="discoveryName != null">#{discoveryName},</if>
+            <if test="leakageAmount != null">#{leakageAmount},</if>
+            <if test="sapNo != null">#{sapNo},</if>
+            <if test="leakageEliminationTime != null">#{leakageEliminationTime},</if>
+            <if test="leakageEliminationFunc != null">#{leakageEliminationFunc},</if>
+            <if test="listing != null">#{listing},</if>
+            <if test="pressurePlugging != null">#{pressurePlugging},</if>
+            <if test="leakageEliminationResult != null">#{leakageEliminationResult},</if>
+            <if test="nextCheckDate != null">#{nextCheckDate},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTLeakagePoints" parameterType="TLeakagePoints">
+        update t_leakage_points
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pointNo != null">point_no = #{pointNo},</if>
+            <if test="leakagePosition != null">leakage_position = #{leakagePosition},</if>
+            <if test="leakageMedium != null">leakage_medium = #{leakageMedium},</if>
+            <if test="discoveryTime != null">discovery_time = #{discoveryTime},</if>
+            <if test="discoveryName != null">discovery_name = #{discoveryName},</if>
+            <if test="leakageAmount != null">leakage_amount = #{leakageAmount},</if>
+            <if test="sapNo != null">sap_no = #{sapNo},</if>
+            <if test="leakageEliminationTime != null">leakage_elimination_time = #{leakageEliminationTime},</if>
+            <if test="leakageEliminationFunc != null">leakage_elimination_func = #{leakageEliminationFunc},</if>
+            <if test="listing != null">listing = #{listing},</if>
+            <if test="pressurePlugging != null">pressure_plugging = #{pressurePlugging},</if>
+            <if test="leakageEliminationResult != null">leakage_elimination_result = #{leakageEliminationResult},</if>
+            <if test="nextCheckDate != null">next_check_date = #{nextCheckDate},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTLeakagePointsById" parameterType="Long">
+        delete from t_leakage_points where id = #{id}
+    </delete>
+
+    <delete id="deleteTLeakagePointsByIds" parameterType="String">
+        delete from t_leakage_points where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 405 - 0
ruoyi-admin/src/main/resources/mapper/plant/TStaffmgrMapper.xml

@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.plant.mapper.TStaffmgrMapper">
+
+    <resultMap type="TStaffmgr" id="TStaffmgrResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="staffid"    column="staffid"    />
+        <result property="name"    column="name"    />
+        <result property="sex"    column="sex"    />
+        <result property="birthday"    column="birthday"    />
+        <result property="unit"    column="unit"    />
+        <result property="team"    column="team"    />
+        <result property="actualpost"    column="actualpost"    />
+        <result property="contact"    column="contact"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="deptName" column="dept_name" />
+        <result property="education"    column="education"    />
+        <result property="enAbility"    column="en_ability"    />
+        <result property="mail"    column="mail"    />
+        <result property="skillScore"    column="skill_score"    />
+        <result property="accidentNum"    column="accident_num"    />
+        <result property="photo"    column="photo"    />
+        <result property="pId"    column="p_id"    />
+        <result property="specialDuty"    column="special_duty"    />
+        <result property="leftDate"    column="left_date"    />
+        <result property="idCard"    column="id_card"    />
+        <result property="address"    column="address"    />
+        <result property="speciality"    column="speciality"    />
+    </resultMap>
+
+    <sql id="selectTStaffmgrVo">
+         select d.id_card,d.address,d.speciality,d.id, d.plant_code,d.left_date, d.staffid, d.name, d.photo, d.sex, d.unit, d.team, d.actualpost, d.contact, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.education, d.en_ability, d.accident_num, d.mail, d.skill_score, d.p_id , d.special_duty, s.dept_name from t_staffmgr d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <!-- 查询导师下拉列表 -->
+    <select id="selectMentorList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        select d.id, s2.DICT_LABEL,d.plant_code, d.staffid, d.name, d.photo, d.sex,  d.unit,
+               d.team, d.actualpost, d.contact, d.del_flag, d.creater_code, d.createdate, d.updater_code,
+               d.updatedate, d.dept_id, d.remarks, d.education, d.en_ability, d.accident_num, d.mail,
+               d.skill_score, d.p_id , d.special_duty, s.dept_name
+
+        from t_staffmgr d
+        left join sys_dept s on s.dept_id = d.dept_id
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+
+        where
+        (s2.DICT_LABEL like '%主管%'
+        or s2.DICT_LABEL like '%经理%'
+        or s2.DICT_LABEL like '%工程师%')
+        and d.DEL_FLAG!=9
+    </select>
+
+    <select id="selectTStaffmgrList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+        <where>
+            <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="specialDuty != null  and specialDuty != ''"> and special_duty like concat(concat('%', #{specialDuty}), '%')</if>
+            <if test="units != null  and units != ''">
+                and
+                unit in
+                <foreach collection="units.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+             </if>
+            <if test="team != null  and team != ''"> and team = #{team}</if>
+            <if test="teams != null  and teams != ''">
+                and
+                team in
+                <foreach collection="teams.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+             </if>
+            <if test="actualpost != null  and actualpost != ''"> and actualpost = #{actualpost}</if>
+            <if test="actualposts != null  and actualposts != ''">
+                and
+                actualpost in
+                <foreach collection="actualposts.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+
+            </if>
+            <if test="education != null  and education != ''"> and education = #{education}</if>
+            <if test="educations != null  and educations != ''">
+                and
+                education in
+                <foreach collection="educations.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+             </if>
+            <if test="enAbility != null  and enAbility != ''"> and en_ability = #{enAbility}</if>
+            <if test="enAbilitys != null  and enAbilitys != ''">
+                and
+                en_ability in
+                <foreach collection="enAbilitys.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="haveEmail != null  and haveEmail != ''"> and mail IS NOT NULL</if>
+            <if test="skillevaluation != null"> and team = 10
+                or team = 12
+                or team = 14
+                or team = 16
+            </if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        ORDER BY s0.DICT_SORT, s1.DICT_SORT,s2.DICT_SORT,d.staffid
+    </select>
+
+
+    <select id="selectTStaffmgrListAll" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+        <where>
+            and d.del_flag in (0 , 9)
+        </where>
+        ORDER BY s0.DICT_SORT, s1.DICT_SORT ,s2.DICT_SORT
+    </select>
+
+    <select id="selectRecordList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+        <where>
+            <if test="units != null  and units != ''">
+                and
+                unit in
+                <foreach collection="units.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        ORDER BY s11.DICT_SORT, d.id
+    </select>
+
+    <select id="selectList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        <where>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTaskList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        <where>
+            and d.del_flag = 0
+        </where>
+    </select>
+
+
+    <select id="selectLeftTStaffmgrList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        <where>
+            and d.del_flag = 9
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTStaffmgrById" parameterType="Long" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectTStaffmgrByStaffId" parameterType="String" resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        where staffid = #{staffid}
+    </select>
+
+    <insert id="insertTStaffmgr" parameterType="TStaffmgr" useGeneratedKeys="true" keyProperty="id">
+
+        insert into t_staffmgr
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="staffid != null and staffid != ''">staffid,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="sex != null and sex != ''">sex,</if>
+            <if test="birthday != null">birthday,</if>
+            <if test="unit != null">unit,</if>
+            <if test="team != null">team,</if>
+            <if test="actualpost != null">actualpost,</if>
+            <if test="contact != null">contact,</if>
+            <if test="education != null">education,</if>
+            <if test="enAbility != null">en_ability,</if>
+            <if test="mail != null">mail,</if>
+            <if test="accidentNum != null">accident_num,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="skillScore != null">skill_score,</if>
+            <if test="photo != null">photo,</if>
+            <if test="pId != null">p_id,</if>
+            <if test="specialDuty != null">special_duty,</if>
+            <if test="idCard != null">id_card,</if>
+            <if test="address != null">address,</if>
+            <if test="speciality != null">speciality,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="staffid != null and staffid != ''">#{staffid},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="sex != null and sex != ''">#{sex},</if>
+            <if test="birthday != null">#{birthday},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="team != null">#{team},</if>
+            <if test="actualpost != null">#{actualpost},</if>
+            <if test="contact != null">#{contact},</if>
+            <if test="education != null">#{education},</if>
+            <if test="enAbility != null">#{enAbility},</if>
+            <if test="mail != null">#{mail},</if>
+            <if test="accidentNum != null">#{accidentNum},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="skillScore != null">#{skillScore},</if>
+            <if test="photo != null">#{photo},</if>
+            <if test="pId != null">#{pId},</if>
+            <if test="specialDuty != null">#{specialDuty},</if>
+            <if test="idCard != null">#{idCard},</if>
+            <if test="address != null">#{address},</if>
+            <if test="speciality != null">#{speciality},</if>
+        </trim>
+    </insert>
+
+    <update id="updateTStaffmgr" parameterType="TStaffmgr">
+        update t_staffmgr
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="staffid != null and staffid != ''">staffid = #{staffid},</if>
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="sex != null and sex != ''">sex = #{sex},</if>
+            <if test="birthday != null">birthday = #{birthday},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="team != null">team = #{team},</if>
+            <if test="actualpost != null">actualpost = #{actualpost},</if>
+            <if test="contact != null">contact = #{contact},</if>
+            <if test="education != null">education = #{education},</if>
+            <if test="enAbility != null">en_ability = #{enAbility},</if>
+            <if test="accidentNum != null">accident_num = #{accidentNum},</if>
+            <if test="mail != null">mail = #{mail},</if>
+            <if test="skillScore != null">skill_score = #{skillScore},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="photo != null">photo = #{photo},</if>
+            <if test="pId != null">p_id = #{pId},</if>
+            <if test="specialDuty != null">special_duty = #{specialDuty},</if>
+            <if test="leftDate != null">left_date = #{leftDate},</if>
+            <if test="idCard != null">id_card=#{idCard},</if>
+            <if test="address != null">address=#{address},</if>
+            <if test="speciality != null">speciality=#{speciality},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTStaffmgrById" parameterType="Long">
+        update t_staffmgr set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteLeftTStaffmgrByIds" parameterType="Long">
+        update t_staffmgr set del_flag = 9 , LEFT_DATE = now()  where id = #{id}
+    </update>
+
+    <update id="reLeftTStaffmgrByIds" parameterType="Long">
+        update t_staffmgr set del_flag = 0 , LEFT_DATE = null where id = #{id}
+    </update>
+    <update id="deleteTStaffmgrByIds" parameterType="String">
+        update t_staffmgr set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <select id="selectEduData" resultType="com.ruoyi.project.common.DataEntity">
+            SELECT count(1) as dataNum,d.EDUCATION as dataName FROM T_STAFFMGR d
+        <where>
+            <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="team != null  and team != ''"> and team = #{team}</if>
+            <if test="actualpost != null  and actualpost != ''"> and actualpost = #{actualpost}</if>
+            <if test="education != null  and education != ''"> and education = #{education}</if>
+            <if test="enAbility != null  and enAbility != ''"> and en_ability = #{enAbility}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        GROUP BY EDUCATION
+        order by dataName
+    </select>
+
+    <select id="selectEngData" resultType="com.ruoyi.project.common.DataEntity">
+        SELECT count(1) as dataNum,d.en_ability as dataName FROM T_STAFFMGR d
+        <where>
+            <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="team != null  and team != ''"> and team = #{team}</if>
+            <if test="actualpost != null  and actualpost != ''"> and actualpost = #{actualpost}</if>
+            <if test="education != null  and education != ''"> and education = #{education}</if>
+            <if test="enAbility != null  and enAbility != ''"> and en_ability = #{enAbility}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        GROUP BY en_ability
+        order by dataName
+    </select>
+
+    <select id="selectTeamData" resultType="com.ruoyi.project.common.DataEntity">
+        SELECT count(1) as dataNum,d.team as dataName FROM T_STAFFMGR d
+        <where>
+            <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="team != null  and team != ''"> and team = #{team}</if>
+            <if test="actualpost != null  and actualpost != ''"> and actualpost = #{actualpost}</if>
+            <if test="education != null  and education != ''"> and education = #{education}</if>
+            <if test="enAbility != null  and enAbility != ''"> and en_ability = #{enAbility}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        GROUP BY team
+        order by dataName
+    </select>
+
+
+    <select id="selectTMentorStaffmgrByPost"  resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+            LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+        where
+            d.dept_id = #{deptId}
+            and d.del_flag = 0
+            and (s11.DICT_LABEL like '%主管%'
+            or s11.DICT_LABEL like '%经理%'
+            or s11.DICT_LABEL like '%工程师%'
+            )
+    </select>
+
+    <select id="selectTStaffmgrByPost"  resultMap="TStaffmgrResult">
+        <include refid="selectTStaffmgrVo"/>
+        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+        where
+        d.dept_id = #{deptId}
+        and d.del_flag = 0
+        and (s11.DICT_LABEL like '%主操%'
+        or s11.DICT_LABEL like '%班长%'
+        or s11.DICT_LABEL like '%工长%'
+        )
+    </select>
+
+    <select id="selectStaffByTeam"  resultMap="TStaffmgrResult">
+        select  d.name,s11.DICT_LABEL team from t_staffmgr d
+        LEFT JOIN SYS_DICT_DATA s11 on d.team = s11.DICT_VALUE and s11.DICT_TYPE = 'TEAM_DIVIDE'
+        <where>
+            <if test="team != null  and team != ''"> and team = #{team}</if>
+        </where>
+        and d.del_flag = 0
+    </select>
+</mapper>

+ 104 - 0
ruoyi-admin/src/main/resources/mapper/plant/TStaffmgrRecordMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.plant.mapper.TStaffmgrRecordMapper">
+
+    <resultMap type="TStaffmgrRecord" id="TStaffmgrRecordResult">
+        <result property="recordId"    column="record_id"    />
+        <result property="staffmgrId"    column="staffmgr_id"    />
+        <result property="type"    column="type"    />
+        <result property="actionDate"    column="action_date"    />
+        <result property="content"    column="content"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectTStaffmgrRecordVo">
+        select record_id, staffmgr_id, type, action_date, content, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_staffmgr_record
+    </sql>
+
+    <select id="selectTStaffmgrRecordList" parameterType="TStaffmgrRecord" resultMap="TStaffmgrRecordResult">
+        <include refid="selectTStaffmgrRecordVo"/>
+        <where>
+            <if test="staffmgrId != null "> and staffmgr_id = #{staffmgrId}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="actionDate != null "> and action_date = #{actionDate}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTStaffmgrRecordByRecordId" parameterType="Long" resultMap="TStaffmgrRecordResult">
+    </select>
+
+    <insert id="insertTStaffmgrRecord" parameterType="TStaffmgrRecord" useGeneratedKeys="true" keyProperty="recordId">
+        insert into t_staffmgr_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="staffmgrId != null">staffmgr_id,</if>
+            <if test="type != null and type != ''">type,</if>
+            <if test="actionDate != null">action_date,</if>
+            <if test="content != null and content != ''">content,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="staffmgrId != null">#{staffmgrId},</if>
+            <if test="type != null and type != ''">#{type},</if>
+            <if test="actionDate != null">#{actionDate},</if>
+            <if test="content != null and content != ''">#{content},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTStaffmgrRecord" parameterType="TStaffmgrRecord">
+        update t_staffmgr_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="staffmgrId != null">staffmgr_id = #{staffmgrId},</if>
+            <if test="type != null and type != ''">type = #{type},</if>
+            <if test="actionDate != null">action_date = #{actionDate},</if>
+            <if test="content != null and content != ''">content = #{content},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where record_id = #{recordId}
+    </update>
+
+    <delete id="deleteTStaffmgrRecordByRecordId" parameterType="Long">
+        update t_staffmgr_record set del_flag=1 where record_id = #{recordId}
+    </delete>
+
+    <delete id="deleteTStaffmgrRecordByRecordIds" parameterType="String">
+        update t_staffmgr_record set del_flag=1 where record_id in
+        <foreach item="recordId" collection="array" open="(" separator="," close=")">
+            #{recordId}
+        </foreach>
+    </delete>
+</mapper>

+ 356 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevAqfMapper.xml

@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevAqfMapper">
+
+    <resultMap type="TSpecdevAqf" id="TSpecdevAqfResult">
+        <result property="id"    column="id"    />
+        <result property="mainId"    column="main_id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="devno"    column="devno"    />
+        <result property="pidNo"    column="pid_no"    />
+        <result property="describe"    column="describe"    />
+        <result property="medium"    column="medium"    />
+        <result property="mediumPhase"    column="medium_phase"    />
+        <result property="starting"    column="starting"    />
+        <result property="arrive"    column="arrive"    />
+        <result property="manufacturer"    column="manufacturer"    />
+        <result property="model"    column="model"    />
+        <result property="factoryNo"    column="factory_no"    />
+        <result property="valveType"    column="valve_type"    />
+        <result property="datasheet"    column="datasheet"    />
+        <result property="calculationBook"    column="calculation_book"    />
+        <result property="selectedArea"    column="selected_area"    />
+        <result property="senarios"    column="senarios"    />
+        <result property="requiredRelieving"    column="required_relieving"    />
+        <result property="ratedRelieving"    column="rated_relieving"    />
+        <result property="inletSize"    column="inlet_size"    />
+        <result property="pressureRating"    column="pressure_rating"    />
+        <result property="outSize"    column="out_size"    />
+        <result property="outPressureRating"    column="out_pressure_rating"    />
+        <result property="setPressure"    column="set_pressure"    />
+        <result property="backPressure"    column="back_pressure"    />
+        <result property="isInspection"    column="is_inspection"    />
+        <result property="warnDate"    column="warn_date"    />
+        <result property="nextWarnDate"    column="next_warn_date"    />
+        <result property="needScaffold"    column="need_scaffold"    />
+        <result property="keepWarm"    column="keep_warm"    />
+        <result property="crane"    column="crane"    />
+        <result property="submitdate"    column="submitdate"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="approveStatus"    column="approve_status"    />
+        <result property="approveTime"    column="approve_time"    />
+        <result property="changeTime"    column="change_time"    />
+        <result property="deptName" column="dept_name" />
+        <result property="devName" column="dev_name"/>
+        <result property="devEnname" column="dev_enname"/>
+        <result property="isPid" column="is_pid"/>
+        <result property="installPosition" column="install_position"/>
+        <result property="funcPosition" column="func_position"/>
+        <result property="assetNo" column="asset_no"/>
+        <result property="securityRelevant" column="security_relevant"/>
+        <result property="securityRelevantFrom" column="security_relevant_from"/>
+        <result property="productionYear" column="production_year"/>
+        <result property="mainSpecifications" column="main_specifications"/>
+        <result property="dataPlate" column="data_plate"/>
+        <result property="dataPlate" column="data_plate"/>
+    </resultMap>
+
+    <sql id="selectTSpecdevAqfVo">
+        select d.id,d.main_id, d.plant_code, d.devno, d.pid_no, d.describe, d.medium, d.medium_phase, d.starting, d.arrive, d.manufacturer, d.model, d.factory_no, d.valve_type, d.datasheet, d.calculation_book, d.selected_area, d.senarios, d.required_relieving, d.rated_relieving, d.inlet_size, d.pressure_rating, d.out_size, d.out_pressure_rating, d.set_pressure, d.back_pressure, d.is_inspection, d.warn_date, d.next_warn_date, d.need_scaffold, d.keep_warm, d.crane, d.submitdate, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.approve_time, d.change_time ,
+               d.dev_name,d.dev_enname,d.is_pid,d.install_position,d.func_position,d.asset_no,d.security_relevant,d.security_relevant_from,d.production_year,d.main_specifications,d.data_plate,s.dept_name from t_specdev_aqf d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevAqfList" parameterType="TSpecdevAqf" resultMap="TSpecdevAqfResult">
+        <include refid="selectTSpecdevAqfVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="mainId != null  and mainId != ''"> and main_id = #{mainId}</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="pidNo != null  and pidNo != ''"> and pid_no = #{pidNo}</if>
+            <if test="describe != null  and describe != ''"> and describe = #{describe}</if>
+            <if test="medium != null  and medium != ''"> and medium = #{medium}</if>
+            <if test="mediumPhase != null  and mediumPhase != ''"> and medium_phase = #{mediumPhase}</if>
+            <if test="starting != null  and starting != ''"> and starting = #{starting}</if>
+            <if test="arrive != null  and arrive != ''"> and arrive = #{arrive}</if>
+            <if test="manufacturer != null  and manufacturer != ''"> and manufacturer = #{manufacturer}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="factoryNo != null  and factoryNo != ''"> and factory_no = #{factoryNo}</if>
+            <if test="valveType != null  and valveType != ''"> and valve_type = #{valveType}</if>
+            <if test="datasheet != null  and datasheet != ''"> and datasheet = #{datasheet}</if>
+            <if test="calculationBook != null  and calculationBook != ''"> and calculation_book = #{calculationBook}</if>
+            <if test="selectedArea != null  and selectedArea != ''"> and selected_area = #{selectedArea}</if>
+            <if test="senarios != null  and senarios != ''"> and senarios = #{senarios}</if>
+            <if test="requiredRelieving != null  and requiredRelieving != ''"> and required_relieving = #{requiredRelieving}</if>
+            <if test="ratedRelieving != null  and ratedRelieving != ''"> and rated_relieving = #{ratedRelieving}</if>
+            <if test="inletSize != null  and inletSize != ''"> and inlet_size = #{inletSize}</if>
+            <if test="pressureRating != null  and pressureRating != ''"> and pressure_rating = #{pressureRating}</if>
+            <if test="outSize != null  and outSize != ''"> and out_size = #{outSize}</if>
+            <if test="outPressureRating != null  and outPressureRating != ''"> and out_pressure_rating = #{outPressureRating}</if>
+            <if test="setPressure != null  and setPressure != ''"> and set_pressure =  #{setPressure}</if>
+            <if test="backPressure != null  and backPressure != ''"> and back_pressure = #{backPressure}</if>
+            <if test="isInspection != null  and isInspection != ''"> and is_inspection = #{isInspection}</if>
+            <if test="warnDate != null  and warnDate != ''"> and warn_date = #{warnDate}</if>
+            <if test="nextWarnDate != null  and nextWarnDate != ''"> and next_warn_date = #{nextWarnDate}</if>
+            <if test="needScaffold != null  and needScaffold != ''"> and need_scaffold = #{needScaffold}</if>
+            <if test="keepWarm != null  and keepWarm != ''"> and keep_warm = #{keepWarm}</if>
+            <if test="crane != null  and crane != ''"> and crane = #{crane}</if>
+            <if test="submitdate != null "> and submitdate = #{submitdate}</if>
+            <if test="status != null "> and d.status = #{status}</if>
+            <if test="createrCode != null "> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="approveStatus != null "> and approve_status = #{approveStatus}</if>
+            <if test="approveTime != null "> and approve_time = #{approveTime}</if>
+            <if test="changeTime != null "> and change_time = #{changeTime}</if>
+            <if test="fuzzy != null and fuzzy!=''"> and (plant_code like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or pid_no like concat('%',#{fuzzy},'%')
+                or `describe` like concat('%',#{fuzzy},'%')
+                or `medium` like concat('%',#{fuzzy},'%')
+                or medium_phase like concat('%',#{fuzzy},'%')
+                or `starting` like concat('%',#{fuzzy},'%')
+                or arrive like concat('%',#{fuzzy},'%')
+                or manufacturer like concat('%',#{fuzzy},'%')
+                or model like concat('%',#{fuzzy},'%')
+                or factory_no like concat('%',#{fuzzy},'%')
+                or valve_type like concat('%',#{fuzzy},'%')
+                or datasheet like concat('%',#{fuzzy},'%')
+                or calculation_book like concat('%',#{fuzzy},'%')
+                or selected_area like concat('%',#{fuzzy},'%')
+                or senarios like concat('%',#{fuzzy},'%')
+                or required_relieving like concat('%',#{fuzzy},'%')
+                or rated_relieving like concat('%',#{fuzzy},'%')
+                or inlet_size like concat('%',#{fuzzy},'%')
+                or pressure_rating like concat('%',#{fuzzy},'%')
+                or out_size like concat('%',#{fuzzy},'%')
+                or out_pressure_rating like concat('%',#{fuzzy},'%')
+                or set_pressure like concat('%',#{fuzzy},'%')
+                or back_pressure like concat('%',#{fuzzy},'%')
+                or is_inspection like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or need_scaffold like concat('%',#{fuzzy},'%')
+                or keep_warm like concat('%',#{fuzzy},'%')
+                or crane like concat('%',#{fuzzy},'%')
+                or submitdate like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTSpecdevAqfById" parameterType="Long" resultMap="TSpecdevAqfResult">
+        <include refid="selectTSpecdevAqfVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevAqf" parameterType="TSpecdevAqf" useGeneratedKeys="true" keyProperty="id">
+        insert into t_specdev_aqf
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="devno != null">devno,</if>
+            <if test="pidNo != null">pid_no,</if>
+            <if test="describe != null">`describe`,</if>
+            <if test="medium != null">`medium`,</if>
+            <if test="mediumPhase != null">medium_phase,</if>
+            <if test="starting != null">`starting`,</if>
+            <if test="arrive != null">arrive,</if>
+            <if test="manufacturer != null">manufacturer,</if>
+            <if test="model != null">model,</if>
+            <if test="factoryNo != null">factory_no,</if>
+            <if test="valveType != null">valve_type,</if>
+            <if test="datasheet != null">datasheet,</if>
+            <if test="calculationBook != null">calculation_book,</if>
+            <if test="selectedArea != null">selected_area,</if>
+            <if test="senarios != null">senarios,</if>
+            <if test="requiredRelieving != null">required_relieving,</if>
+            <if test="ratedRelieving != null">rated_relieving,</if>
+            <if test="inletSize != null">inlet_size,</if>
+            <if test="pressureRating != null">pressure_rating,</if>
+            <if test="outSize != null">out_size,</if>
+            <if test="outPressureRating != null">out_pressure_rating,</if>
+            <if test="setPressure != null">set_pressure,</if>
+            <if test="backPressure != null">back_pressure,</if>
+            <if test="isInspection != null">is_inspection,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="needScaffold != null">need_scaffold,</if>
+            <if test="keepWarm != null">keep_warm,</if>
+            <if test="crane != null">crane,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">`status`,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="devName != null">dev_name,</if>
+            <if test="devEnname != null">dev_enname,</if>
+            <if test="isPid != null">is_pid,</if>
+            <if test="installPosition != null">install_position,</if>
+            <if test="funcPosition != null">func_position,</if>
+            <if test="assetNo != null">asset_no,</if>
+            <if test="securityRelevant != null">security_relevant,</if>
+            <if test="securityRelevantFrom != null">security_relevant_from,</if>
+            <if test="productionYear != null">production_year,</if>
+            <if test="mainSpecifications != null">main_specifications,</if>
+            <if test="dataPlate != null">data_plate,</if>
+            <if test="mainId != null">main_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="medium != null">#{medium},</if>
+            <if test="mediumPhase != null">#{mediumPhase},</if>
+            <if test="starting != null">#{starting},</if>
+            <if test="arrive != null">#{arrive},</if>
+            <if test="manufacturer != null">#{manufacturer},</if>
+            <if test="model != null">#{model},</if>
+            <if test="factoryNo != null">#{factoryNo},</if>
+            <if test="valveType != null">#{valveType},</if>
+            <if test="datasheet != null">#{datasheet},</if>
+            <if test="calculationBook != null">#{calculationBook},</if>
+            <if test="selectedArea != null">#{selectedArea},</if>
+            <if test="senarios != null">#{senarios},</if>
+            <if test="requiredRelieving != null">#{requiredRelieving},</if>
+            <if test="ratedRelieving != null">#{ratedRelieving},</if>
+            <if test="inletSize != null">#{inletSize},</if>
+            <if test="pressureRating != null">#{pressureRating},</if>
+            <if test="outSize != null">#{outSize},</if>
+            <if test="outPressureRating != null">#{outPressureRating},</if>
+            <if test="setPressure != null">#{setPressure},</if>
+            <if test="backPressure != null">#{backPressure},</if>
+            <if test="isInspection != null">#{isInspection},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="needScaffold != null">#{needScaffold},</if>
+            <if test="keepWarm != null">#{keepWarm},</if>
+            <if test="crane != null">#{crane},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="devName != null">#{devName},</if>
+            <if test="devEnname != null">#{devEnname},</if>
+            <if test="isPid != null">#{isPid},</if>
+            <if test="installPosition != null">#{installPosition},</if>
+            <if test="funcPosition != null">#{funcPosition},</if>
+            <if test="assetNo != null">#{assetNo},</if>
+            <if test="securityRelevant != null">#{securityRelevant},</if>
+            <if test="securityRelevantFrom != null">#{securityRelevantFrom},</if>
+            <if test="productionYear != null">#{productionYear},</if>
+            <if test="mainSpecifications != null">#{mainSpecifications},</if>
+            <if test="dataPlate != null">#{dataPlate},</if>
+            <if test="dataPlate != null">#{dataPlate},</if>
+            <if test="mainId != null">#{mainId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevAqf" parameterType="TSpecdevAqf">
+        update t_specdev_aqf
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="pidNo != null">pid_no = #{pidNo},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
+            <if test="medium != null">`medium` = #{medium},</if>
+            <if test="mediumPhase != null">medium_phase = #{mediumPhase},</if>
+            <if test="starting != null">`starting` = #{starting},</if>
+            <if test="arrive != null">arrive = #{arrive},</if>
+            <if test="manufacturer != null">manufacturer = #{manufacturer},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="factoryNo != null">factory_no = #{factoryNo},</if>
+            <if test="valveType != null">valve_type = #{valveType},</if>
+            <if test="datasheet != null">datasheet = #{datasheet},</if>
+            <if test="calculationBook != null">calculation_book = #{calculationBook},</if>
+            <if test="selectedArea != null">selected_area = #{selectedArea},</if>
+            <if test="senarios != null">senarios = #{senarios},</if>
+            <if test="requiredRelieving != null">required_relieving = #{requiredRelieving},</if>
+            <if test="ratedRelieving != null">rated_relieving = #{ratedRelieving},</if>
+            <if test="inletSize != null">inlet_size = #{inletSize},</if>
+            <if test="pressureRating != null">pressure_rating = #{pressureRating},</if>
+            <if test="outSize != null">out_size = #{outSize},</if>
+            <if test="outPressureRating != null">out_pressure_rating = #{outPressureRating},</if>
+            <if test="setPressure != null">set_pressure = #{setPressure},</if>
+            <if test="backPressure != null">back_pressure = #{backPressure},</if>
+            <if test="isInspection != null">is_inspection = #{isInspection},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="needScaffold != null">need_scaffold = #{needScaffold},</if>
+            <if test="keepWarm != null">keep_warm = #{keepWarm},</if>
+            <if test="crane != null">crane = #{crane},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">`status` = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="devName != null">dev_name = #{devName},</if>
+            <if test="devEnname != null">dev_enname = #{devEnname},</if>
+            <if test="isPid != null">is_pid = #{isPid},</if>
+            <if test="installPosition != null">install_position = #{installPosition},</if>
+            <if test="funcPosition != null">func_position = #{funcPosition},</if>
+            <if test="assetNo != null">asset_no = #{assetNo},</if>
+            <if test="securityRelevant != null">security_relevant = #{securityRelevant},</if>
+            <if test="securityRelevantFrom != null">security_relevant_from = #{securityRelevantFrom},</if>
+            <if test="productionYear != null">production_year = #{productionYear},</if>
+            <if test="mainSpecifications != null">main_specifications = #{mainSpecifications},</if>
+            <if test="dataPlate != null">data_plate = #{dataPlate},</if>
+        </trim>
+        <where>
+            <if test="id != null">and id = #{id}</if>
+        </where>
+    </update>
+
+    <update id="deleteTSpecdevAqfById" parameterType="Long">
+        update t_specdev_aqf set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevAqfByMainId" parameterType="Long">
+        update t_specdev_aqf set del_flag = 2 where main_id = #{mainId}
+    </update>
+
+    <update id="deleteTSpecdevAqfByIds" parameterType="String">
+        update t_specdev_aqf set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 224 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevAssetMapper.xml

@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevAssetMapper">
+
+    <resultMap type="TSpecdevAsset" id="TSpecdevAssetResult">
+        <result property="id"    column="id"    />
+        <result property="type"    column="type"    />
+        <result property="content"    column="content"    />
+        <result property="pidNo"    column="pid_no"    />
+        <result property="positionDescribe"    column="position_describe"    />
+        <result property="accordingTo"    column="according_to"    />
+        <result property="asset"    column="asset"    />
+        <result property="dcsOperation"    column="dcs_operation"    />
+        <result property="inSceneOperation"    column="in_scene_operation"    />
+        <result property="outSceneOperation"    column="out_scene_operation"    />
+        <result property="inInspection"    column="in_inspection"    />
+        <result property="outInspection"    column="out_inspection"    />
+        <result property="inRepair"    column="in_repair"    />
+        <result property="outRepair"    column="out_repair"    />
+        <result property="inMaintenanceCoordination"    column="in_maintenance_coordination"    />
+        <result property="outMaintenanceCoordination"    column="out_maintenance_coordination"    />
+        <result property="inTechnicalManagement"    column="in_technical_management"    />
+        <result property="outTechnicalManagement"    column="out_technical_management"    />
+        <result property="position"    column="position"    />
+        <result property="pipeDiameter"    column="pipe_diameter"    />
+        <result property="picUrl"    column="pic_url"    />
+        <result property="picName"    column="pic_Name"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTSpecdevAssetVo">
+        select d.pic_name,d.id, d.type, d.content, d.pid_no, d.position_describe, d.according_to, d.asset, d.dcs_operation, d.in_scene_operation, d.out_scene_operation, d.in_inspection, d.out_inspection, d.in_repair, d.out_repair, d.in_maintenance_coordination, d.out_maintenance_coordination, d.in_technical_management, d.out_technical_management, d.position, d.pipe_diameter, d.pic_url, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_specdev_asset d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevAssetList" parameterType="TSpecdevAsset" resultMap="TSpecdevAssetResult">
+        <include refid="selectTSpecdevAssetVo"/>
+        <where>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="pidNo != null  and pidNo != ''"> and pid_no = #{pidNo}</if>
+            <if test="positionDescribe != null  and positionDescribe != ''"> and position_describe = #{positionDescribe}</if>
+            <if test="accordingTo != null  and accordingTo != ''"> and according_to = #{accordingTo}</if>
+            <if test="asset != null  and asset != ''"> and asset = #{asset}</if>
+            <if test="dcsOperation != null  and dcsOperation != ''"> and dcs_operation = #{dcsOperation}</if>
+            <if test="inSceneOperation != null  and inSceneOperation != ''"> and in_scene_operation = #{inSceneOperation}</if>
+            <if test="outSceneOperation != null  and outSceneOperation != ''"> and out_scene_operation = #{outSceneOperation}</if>
+            <if test="inInspection != null  and inInspection != ''"> and in_inspection = #{inInspection}</if>
+            <if test="outInspection != null  and outInspection != ''"> and out_inspection = #{outInspection}</if>
+            <if test="inRepair != null  and inRepair != ''"> and in_repair = #{inRepair}</if>
+            <if test="outRepair != null  and outRepair != ''"> and out_repair = #{outRepair}</if>
+            <if test="inMaintenanceCoordination != null  and inMaintenanceCoordination != ''"> and in_maintenance_coordination = #{inMaintenanceCoordination}</if>
+            <if test="outMaintenanceCoordination != null  and outMaintenanceCoordination != ''"> and out_maintenance_coordination = #{outMaintenanceCoordination}</if>
+            <if test="inTechnicalManagement != null  and inTechnicalManagement != ''"> and in_technical_management = #{inTechnicalManagement}</if>
+            <if test="outTechnicalManagement != null  and outTechnicalManagement != ''"> and out_technical_management = #{outTechnicalManagement}</if>
+            <if test="position != null  and position != ''"> and position = #{position}</if>
+            <if test="pipeDiameter != null  and pipeDiameter != ''"> and pipe_diameter = #{pipeDiameter}</if>
+            <if test="picUrl != null  and picUrl != ''"> and pic_url = #{picUrl}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="createrCode != null "> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="fuzzy != null  and fuzzy != ''"> and
+             (
+                type like concat ('%', #{fuzzy},'%')
+                or content like concat ('%', #{fuzzy},'%')
+                or pid_no like concat ('%', #{fuzzy},'%')
+                or position_describe like concat ('%', #{fuzzy},'%')
+                or according_to like concat ('%', #{fuzzy},'%')
+                or asset like concat ('%', #{fuzzy},'%')
+                or dcs_operation like concat ('%', #{fuzzy},'%')
+                or in_scene_operation like concat ('%', #{fuzzy},'%')
+                or out_scene_operation like concat ('%', #{fuzzy},'%')
+                or in_inspection like concat ('%', #{fuzzy},'%')
+                or out_inspection like concat ('%', #{fuzzy},'%')
+                or in_repair like concat ('%', #{fuzzy},'%')
+                or out_repair like concat ('%', #{fuzzy},'%')
+                or in_maintenance_coordination like concat ('%', #{fuzzy},'%')
+                or out_maintenance_coordination like concat ('%', #{fuzzy},'%')
+                or in_technical_management like concat ('%', #{fuzzy},'%')
+                or out_technical_management like concat ('%', #{fuzzy},'%')
+                or position like concat ('%', #{fuzzy},'%')
+                or pipe_diameter like concat ('%', #{fuzzy},'%')
+                or remarks like concat ('%', #{fuzzy},'%')
+                )
+            </if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTSpecdevAssetById" parameterType="Long" resultMap="TSpecdevAssetResult">
+        <include refid="selectTSpecdevAssetVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevAsset" parameterType="TSpecdevAsset" useGeneratedKeys="true" keyProperty="id">
+        insert into t_specdev_asset
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="type != null">type,</if>
+            <if test="content != null">content,</if>
+            <if test="pidNo != null">pid_no,</if>
+            <if test="positionDescribe != null">position_describe,</if>
+            <if test="accordingTo != null">according_to,</if>
+            <if test="asset != null">asset,</if>
+            <if test="dcsOperation != null">dcs_operation,</if>
+            <if test="inSceneOperation != null">in_scene_operation,</if>
+            <if test="outSceneOperation != null">out_scene_operation,</if>
+            <if test="inInspection != null">in_inspection,</if>
+            <if test="outInspection != null">out_inspection,</if>
+            <if test="inRepair != null">in_repair,</if>
+            <if test="outRepair != null">out_repair,</if>
+            <if test="inMaintenanceCoordination != null">in_maintenance_coordination,</if>
+            <if test="outMaintenanceCoordination != null">out_maintenance_coordination,</if>
+            <if test="inTechnicalManagement != null">in_technical_management,</if>
+            <if test="outTechnicalManagement != null">out_technical_management,</if>
+            <if test="position != null">position,</if>
+            <if test="pipeDiameter != null">pipe_diameter,</if>
+            <if test="picUrl != null">pic_url,</if>
+            <if test="picName != null">pic_name,</if>
+            <if test="status != null">`status`,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="type != null">#{type},</if>
+            <if test="content != null">#{content},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="positionDescribe != null">#{positionDescribe},</if>
+            <if test="accordingTo != null">#{accordingTo},</if>
+            <if test="asset != null">#{asset},</if>
+            <if test="dcsOperation != null">#{dcsOperation},</if>
+            <if test="inSceneOperation != null">#{inSceneOperation},</if>
+            <if test="outSceneOperation != null">#{outSceneOperation},</if>
+            <if test="inInspection != null">#{inInspection},</if>
+            <if test="outInspection != null">#{outInspection},</if>
+            <if test="inRepair != null">#{inRepair},</if>
+            <if test="outRepair != null">#{outRepair},</if>
+            <if test="inMaintenanceCoordination != null">#{inMaintenanceCoordination},</if>
+            <if test="outMaintenanceCoordination != null">#{outMaintenanceCoordination},</if>
+            <if test="inTechnicalManagement != null">#{inTechnicalManagement},</if>
+            <if test="outTechnicalManagement != null">#{outTechnicalManagement},</if>
+            <if test="position != null">#{position},</if>
+            <if test="pipeDiameter != null">#{pipeDiameter},</if>
+            <if test="picUrl != null">#{picUrl},</if>
+            <if test="picName != null">#{picName},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevAsset" parameterType="TSpecdevAsset">
+        update t_specdev_asset
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="type != null">type = #{type},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="pidNo != null">pid_no = #{pidNo},</if>
+            <if test="positionDescribe != null">position_describe = #{positionDescribe},</if>
+            <if test="accordingTo != null">according_to = #{accordingTo},</if>
+            <if test="asset != null">asset = #{asset},</if>
+            <if test="dcsOperation != null">dcs_operation = #{dcsOperation},</if>
+            <if test="inSceneOperation != null">in_scene_operation = #{inSceneOperation},</if>
+            <if test="outSceneOperation != null">out_scene_operation = #{outSceneOperation},</if>
+            <if test="inInspection != null">in_inspection = #{inInspection},</if>
+            <if test="outInspection != null">out_inspection = #{outInspection},</if>
+            <if test="inRepair != null">in_repair = #{inRepair},</if>
+            <if test="outRepair != null">out_repair = #{outRepair},</if>
+            <if test="inMaintenanceCoordination != null">in_maintenance_coordination = #{inMaintenanceCoordination},</if>
+            <if test="outMaintenanceCoordination != null">out_maintenance_coordination = #{outMaintenanceCoordination},</if>
+            <if test="inTechnicalManagement != null">in_technical_management = #{inTechnicalManagement},</if>
+            <if test="outTechnicalManagement != null">out_technical_management = #{outTechnicalManagement},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="pipeDiameter != null">pipe_diameter = #{pipeDiameter},</if>
+            <if test="picUrl != null and picUrl!=''">pic_url = #{picUrl},</if>
+            <if test="picName != null">pic_name = #{picName},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevAssetById" parameterType="Long">
+        update t_specdev_asset set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevAssetByIds" parameterType="String">
+        update t_specdev_asset set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 389 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevCcMapper.xml

@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevCcMapper">
+
+    <resultMap type="TSpecdevCc" id="TSpecdevCcResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="unit"    column="unit"    />
+        <result property="carNo"    column="car_no"    />
+        <result property="devname"    column="devname"    />
+        <result property="devno"    column="devno"    />
+        <result property="submitdate"    column="submitdate"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="approveStatus"    column="approve_status"    />
+        <result property="regno"    column="regno"    />
+        <result property="useno"    column="useno"    />
+        <result property="warnDate"    column="warn_date"    />
+        <result property="warnCycle"    column="warn_cycle"    />
+        <result property="nextWarnDate"    column="next_warn_date"    />
+        <result property="warnFlag"    column="warn_flag"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="checkStrategy"    column="check_strategy"    />
+        <result property="firstWarnDate"    column="first_warn_date"    />
+        <result property="checkUnit"    column="check_unit"    />
+        <result property="docno"    column="docno"    />
+        <result property="approveTime"    column="approve_time"    />
+        <result property="changeTime"    column="change_time"    />
+        <result property="engineNo"    column="engine_no"    />
+        <result property="color"    column="color"    />
+        <result property="capacity"    column="capacity"    />
+        <result property="model"    column="model"    />
+        <result property="engineType"    column="engine_type"    />
+        <result property="devClass"    column="dev_class"    />
+        <result property="exUnit"    column="ex_unit"    />
+        <result property="useDept"    column="use_dept"    />
+        <result property="engineer"    column="engineer"    />
+        <result property="exGrade"    column="ex_grade"    />
+        <result property="reportNo"    column="report_no"    />
+        <result property="frameNo"    column="frame_no"    />
+        <result property="productNo"    column="product_no"    />
+        <result property="assetOwner"    column="asset_owner"    />
+        <result property="hiFlag" column="hiFlag" />
+        <result property="perTestConclusion" column="per_test_conclusion" />
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="plantMaint"    column="plant_maint"    />
+        <result property="factoryInfo"    column="factory_info"    />
+        <result property="devType"    column="dev_type"    />
+    </resultMap>
+
+    <sql id="selectTSpecdevCcVo">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.car_no,
+               d.devname,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.plant_maint,d.factory_info,d.dev_type,
+
+               d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.create_unit, d.check_strategy, d.first_warn_date, d.check_unit, d.docno, d.approve_time, d.change_time, d.engine_no, d.color, d.capacity, d.model, d.engine_type, d.dev_class, d.ex_unit, d.use_dept, d.engineer, d.ex_grade, d.report_no, d.frame_no, d.product_no, d.asset_owner ,s.dept_name,
+         per_test_conclusion
+                ,d.is_repeat
+        from t_specdev_cc d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevCcList" parameterType="TSpecdevCc" resultMap="TSpecdevCcResult">
+        <include refid="selectTSpecdevCcVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="carNo != null  and carNo != ''"> and car_no = #{carNo}</if>
+            <if test="devname != null  and devname != ''"> and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="status != null "> and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="fuzzy != null ">and ( plant_code like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or car_no like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or factory_info like concat('%',#{fuzzy},'%')
+                or dev_type like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_cycle like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or check_strategy like concat('%',#{fuzzy},'%')
+                or first_warn_date like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or docno like concat('%',#{fuzzy},'%')
+                or engine_no like concat('%',#{fuzzy},'%')
+                or color like concat('%',#{fuzzy},'%')
+                or capacity like concat('%',#{fuzzy},'%')
+                or model like concat('%',#{fuzzy},'%')
+                or engine_type like concat('%',#{fuzzy},'%')
+                or dev_class like concat('%',#{fuzzy},'%')
+                or ex_unit like concat('%',#{fuzzy},'%')
+                or use_dept like concat('%',#{fuzzy},'%')
+                or ex_grade like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or frame_no like concat('%',#{fuzzy},'%')
+                or product_no like concat('%',#{fuzzy},'%')
+                or asset_owner like concat('%',#{fuzzy},'%') )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code asc , d.unit,  d.id
+    </select>
+
+    <select id="selectTSpecdevCcListByYear" parameterType="TSpecdevCc" resultMap="TSpecdevCcResult">
+        <include refid="selectTSpecdevCcVo"/>
+        <where>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="checkYear != null ">and date_format(NEXT_WARN_DATE,'%Y%m') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSpecdevCcById" parameterType="Long" resultMap="TSpecdevCcResult">
+        <include refid="selectTSpecdevCcVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevCc" parameterType="TSpecdevCc">
+
+        insert into t_specdev_cc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="unit != null">unit,</if>
+            <if test="carNo != null">car_no,</if>
+            <if test="devname != null">devname,</if>
+            <if test="devno != null">devno,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="regno != null">regno,</if>
+            <if test="useno != null">useno,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="warnCycle != null">warn_cycle,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="warnFlag != null">warn_flag,</if>
+            <if test="createUnit != null">create_unit,</if>
+            <if test="checkStrategy != null">check_strategy,</if>
+            <if test="firstWarnDate != null">first_warn_date,</if>
+            <if test="checkUnit != null">check_unit,</if>
+            <if test="docno != null">docno,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="engineNo != null">engine_no,</if>
+            <if test="color != null">color,</if>
+            <if test="capacity != null">capacity,</if>
+            <if test="model != null">model,</if>
+            <if test="engineType != null">engine_type,</if>
+            <if test="devClass != null">dev_class,</if>
+            <if test="exUnit != null">ex_unit,</if>
+            <if test="useDept != null">use_dept,</if>
+            <if test="engineer != null">engineer,</if>
+            <if test="exGrade != null">ex_grade,</if>
+            <if test="reportNo != null">report_no,</if>
+            <if test="frameNo != null">frame_no,</if>
+            <if test="productNo != null">product_no,</if>
+            <if test="assetOwner != null">asset_owner,</if>
+            <if test="perTestConclusion != null">per_test_conclusion,</if>
+            <if test="plantMaint != null">plant_maint,</if>
+            <if test="factoryInfo != null">factory_info,</if>
+            <if test="devType != null">dev_type,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="carNo != null">#{carNo},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="createUnit != null">#{createUnit},</if>
+            <if test="checkStrategy != null">#{checkStrategy},</if>
+            <if test="firstWarnDate != null">#{firstWarnDate},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="docno != null">#{docno},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="engineNo != null">#{engineNo},</if>
+            <if test="color != null">#{color},</if>
+            <if test="capacity != null">#{capacity},</if>
+            <if test="model != null">#{model},</if>
+            <if test="engineType != null">#{engineType},</if>
+            <if test="devClass != null">#{devClass},</if>
+            <if test="exUnit != null">#{exUnit},</if>
+            <if test="useDept != null">#{useDept},</if>
+            <if test="engineer != null">#{engineer},</if>
+            <if test="exGrade != null">#{exGrade},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="frameNo != null">#{frameNo},</if>
+            <if test="productNo != null">#{productNo},</if>
+            <if test="assetOwner != null">#{assetOwner},</if>
+            <if test="perTestConclusion != null">#{perTestConclusion},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="factoryInfo != null">#{factoryInfo},</if>
+            <if test="devType != null">#{devType},</if>
+        </trim>
+    </insert>
+
+    <update id="updateTSpecdevCc" parameterType="TSpecdevCc">
+        update t_specdev_cc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="carNo != null">car_no = #{carNo},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="checkStrategy != null">check_strategy = #{checkStrategy},</if>
+            <if test="firstWarnDate != null">first_warn_date = #{firstWarnDate},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="docno != null">docno = #{docno},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="engineNo != null">engine_no = #{engineNo},</if>
+            <if test="color != null">color = #{color},</if>
+            <if test="capacity != null">capacity = #{capacity},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="engineType != null">engine_type = #{engineType},</if>
+            <if test="devClass != null">dev_class = #{devClass},</if>
+            <if test="exUnit != null">ex_unit = #{exUnit},</if>
+            <if test="useDept != null">use_dept = #{useDept},</if>
+            <if test="engineer != null">engineer = #{engineer},</if>
+            <if test="exGrade != null">ex_grade = #{exGrade},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="frameNo != null">frame_no = #{frameNo},</if>
+            <if test="productNo != null">product_no = #{productNo},</if>
+            <if test="assetOwner != null">asset_owner = #{assetOwner},</if>
+            <if test="perTestConclusion != null">per_test_conclusion = #{perTestConclusion},</if>
+            <if test="isRepeat != null">is_repeat = #{isRepeat},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="factoryInfo != null">factory_info=#{factoryInfo},</if>
+            <if test="devType != null">dev_type=#{devType},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="updateTSpecdevCcByHi" parameterType="TSpecdevCc">
+        update t_specdev_cc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="carNo != null">car_no = #{carNo},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="checkStrategy != null">check_strategy = #{checkStrategy},</if>
+            <if test="firstWarnDate != null">first_warn_date = #{firstWarnDate},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="docno != null">docno = #{docno},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="engineNo != null">engine_no = #{engineNo},</if>
+            <if test="color != null">color = #{color},</if>
+            <if test="capacity != null">capacity = #{capacity},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="engineType != null">engine_type = #{engineType},</if>
+            <if test="devClass != null">dev_class = #{devClass},</if>
+            <if test="exUnit != null">ex_unit = #{exUnit},</if>
+            <if test="useDept != null">use_dept = #{useDept},</if>
+            <if test="engineer != null">engineer = #{engineer},</if>
+            <if test="exGrade != null">ex_grade = #{exGrade},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="frameNo != null">frame_no = #{frameNo},</if>
+            <if test="productNo != null">product_no = #{productNo},</if>
+            <if test="assetOwner != null">asset_owner = #{assetOwner},</if>
+            <if test="perTestConclusion != null">per_test_conclusion = #{perTestConclusion},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="factoryInfo != null">factory_info=#{factoryInfo},</if>
+            <if test="devType != null">dev_type=#{devType},</if>
+        </trim>
+        where id = #{devId}
+    </update>
+
+    <update id="deleteTSpecdevCcById" parameterType="Long">
+        update t_specdev_cc set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevCcByIds" parameterType="String">
+        update t_specdev_cc set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
+
+    <update id="duplicateTSpecdevCc" >
+        UPDATE  T_SPECDEV_cc set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_cc a where (a.REGNO,a.plant_code) in(select REGNO,plant_code from t_specdev_cc group by REGNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_cc group by REGNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+
+</mapper>

+ 311 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevDtMapper.xml

@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevDtMapper">
+
+    <resultMap type="TSpecdevDt" id="TSpecdevDtResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="unit"    column="unit"    />
+        <result property="devname"    column="devname"    />
+        <result property="devno"    column="devno"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="submitdate"    column="submitdate"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createrDate"    column="creater_date"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updaterDate"    column="updater_date"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="approveStatus"    column="approve_status"    />
+        <result property="regno"    column="regno"    />
+        <result property="useno"    column="useno"    />
+        <result property="warnDate"    column="warn_date"    />
+        <result property="warnCycle"    column="warn_cycle"    />
+        <result property="nextWarnDate"    column="next_warn_date"    />
+        <result property="warnFlag"    column="warn_flag"    />
+        <result property="model"    column="model"    />
+        <result property="capacity"    column="capacity"    />
+        <result property="floor"    column="floor"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="maintContractor"    column="maint_contractor"    />
+        <result property="location"    column="location"    />
+        <result property="checkStrategy"    column="check_strategy"    />
+        <result property="firstWarnDate"    column="first_warn_date"    />
+        <result property="checkUnit"    column="check_unit"    />
+        <result property="docno"    column="docno"    />
+        <result property="approveTime"    column="approve_time"    />
+        <result property="changeTime"    column="change_time"    />
+        <result property="reportNo"    column="report_no"    />
+        <result property="hiFlag" column="hiFlag" />
+        <result property="perTestConclusion" column="per_test_conclusion" />
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="useDept"    column="use_dept"    />
+        <result property="plantMaint"    column="plant_maint"    />
+        <result property="factoryInfo"    column="factory_info"    />
+        <result property="plateNo"    column="plate_no"    />
+        <result property="exGrade"    column="ex_grade"    />
+        <result property="engineNo"    column="engine_no"    />
+    </resultMap>
+
+    <sql id="selectTSpecdevDtVo">
+        select d.id, d.plant_code,d.plant_maint,d.use_dept, d.unit, d.devname, d.devno, d.createdate, d.submitdate, d.status, d.del_flag, d.creater_code, d.creater_date, d.updater_code, d.updater_date, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.model, d.capacity, d.floor, d.create_unit, d.maint_contractor, d.location, d.check_strategy, d.first_warn_date, d.check_unit, d.docno, d.approve_time, d.change_time, d.report_no ,s.dept_name, per_test_conclusion
+        ,d.is_repeat,d.factory_info,d.plate_no,d.ex_grade,d.engine_no
+        from t_specdev_dt d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevDtList" parameterType="TSpecdevDt" resultMap="TSpecdevDtResult">
+        <include refid="selectTSpecdevDtVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="devname != null  and devname != ''"> and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="status != null "> and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="fuzzy != null and fuzzy!=''">and (
+                plant_code like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or use_dept like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or createdate like concat('%',#{fuzzy},'%')
+                or submitdate like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or warn_cycle like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or warn_flag like concat('%',#{fuzzy},'%')
+                or model like concat('%',#{fuzzy},'%')
+                or capacity like concat('%',#{fuzzy},'%')
+                or floor like concat('%',#{fuzzy},'%')
+                or create_unit like concat('%',#{fuzzy},'%')
+                or maint_contractor like concat('%',#{fuzzy},'%')
+                or location like concat('%',#{fuzzy},'%')
+                or check_strategy like concat('%',#{fuzzy},'%')
+                or first_warn_date like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or docno like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or is_repeat like concat('%',#{fuzzy},'%')
+                or factory_info like concat('%',#{fuzzy},'%')
+                or plate_no like concat('%',#{fuzzy},'%')
+                or ex_grade like concat('%',#{fuzzy},'%')
+                or engine_no like concat('%',#{fuzzy},'%') )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code, d.unit ,d.id
+    </select>
+
+    <select id="selectTSpecdevDtListByYear" parameterType="TSpecdevDt" resultMap="TSpecdevDtResult">
+        <include refid="selectTSpecdevDtVo"/>
+        <where>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="checkYear != null ">and date_format(NEXT_WARN_DATE,'%Y%m') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                or
+                d.plant_code in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+        </where>
+
+    </select>
+
+
+
+    <select id="selectTSpecdevDtById" parameterType="Long" resultMap="TSpecdevDtResult">
+        <include refid="selectTSpecdevDtVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevDt" parameterType="TSpecdevDt">
+
+        insert into t_specdev_dt
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="unit != null">unit,</if>
+            <if test="devname != null">devname,</if>
+            <if test="devno != null">devno,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createrDate != null">creater_date,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updaterDate != null">updater_date,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="regno != null">regno,</if>
+            <if test="useno != null">useno,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="warnCycle != null">warn_cycle,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="warnFlag != null">warn_flag,</if>
+            <if test="model != null">model,</if>
+            <if test="capacity != null">capacity,</if>
+            <if test="floor != null">floor,</if>
+            <if test="createUnit != null">create_unit,</if>
+            <if test="maintContractor != null">maint_contractor,</if>
+            <if test="location != null">location,</if>
+            <if test="checkStrategy != null">check_strategy,</if>
+            <if test="firstWarnDate != null">first_warn_date,</if>
+            <if test="checkUnit != null">check_unit,</if>
+            <if test="docno != null">docno,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="reportNo != null">report_no,</if>
+            <if test="perTestConclusion != null">per_test_conclusion,</if>
+            <if test="plantMaint != null">plant_maint,</if>
+            <if test="useDept != null">use_dept,</if>
+            <if test="factoryInfo != null">factory_info,</if>
+            <if test="plateNo != null">plate_no,</if>
+            <if test="engineNo != null">engine_no,</if>
+            <if test="exGrade != null">ex_grade,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createrDate != null">#{createrDate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updaterDate != null">#{updaterDate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="model != null">#{model},</if>
+            <if test="capacity != null">#{capacity},</if>
+            <if test="floor != null">#{floor},</if>
+            <if test="createUnit != null">#{createUnit},</if>
+            <if test="maintContractor != null">#{maintContractor},</if>
+            <if test="location != null">#{location},</if>
+            <if test="checkStrategy != null">#{checkStrategy},</if>
+            <if test="firstWarnDate != null">#{firstWarnDate},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="docno != null">#{docno},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="perTestConclusion != null">#{perTestConclusion},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="useDept != null">#{useDept},</if>
+            <if test="factoryInfo != null">#{factoryInfo},</if>
+            <if test="plateNo != null">#{plateNo},</if>
+            <if test="engineNo != null">#{engineNo},</if>
+            <if test="exGrade != null">#{exGrade},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevDt" parameterType="TSpecdevDt">
+        update t_specdev_dt
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createrDate != null">creater_date = #{createrDate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updaterDate != null">updater_date = #{updaterDate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="capacity != null">capacity = #{capacity},</if>
+            <if test="floor != null">floor = #{floor},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="maintContractor != null">maint_contractor = #{maintContractor},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="checkStrategy != null">check_strategy = #{checkStrategy},</if>
+            <if test="firstWarnDate != null">first_warn_date = #{firstWarnDate},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="docno != null">docno = #{docno},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="perTestConclusion != null">per_test_conclusion = #{perTestConclusion},</if>
+            <if test="isRepeat != null">is_repeat = #{isRepeat},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="useDept != null">use_dept = #{useDept},</if>
+            <if test="factoryInfo != null">factory_info=#{factoryInfo},</if>
+            <if test="plateNo != null">plate_no=#{plateNo},</if>
+            <if test="engineNo != null">engine_no = #{engineNo},</if>
+            <if test="exGrade != null">ex_grade = #{exGrade},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevDtById" parameterType="Long">
+        update t_specdev_dt set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevDtByIds" parameterType="String">
+        update t_specdev_dt set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
+
+    <update id="duplicateTSpecdevDt" >
+        UPDATE  T_SPECDEV_dt set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_dt a where (a.REGNO,a.plant_code) in(select REGNO,plant_code from t_specdev_dt group by REGNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_dt group by REGNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+</mapper>

+ 318 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevDzsbMapper.xml

@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevDzsbMapper">
+
+    <resultMap type="TSpecdevDzsb" id="TSpecdevDzsbResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="unit"    column="unit"    />
+        <result property="devname"    column="devname"    />
+        <result property="devno"    column="devno"    />
+        <result property="submitdate"    column="submitdate"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="approveStatus"    column="approve_status"    />
+        <result property="regno"    column="regno"    />
+        <result property="useno"    column="useno"    />
+        <result property="warnDate"    column="warn_date"    />
+        <result property="warnCycle"    column="warn_cycle"    />
+        <result property="nextWarnDate"    column="next_warn_date"    />
+        <result property="warnFlag"    column="warn_flag"    />
+        <result property="plantMaint"    column="plant_maint"    />
+        <result property="docno"    column="docno"    />
+        <result property="model"    column="model"    />
+        <result property="capacity"    column="capacity"    />
+        <result property="location"    column="location"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="checkStrategy"    column="check_strategy"    />
+        <result property="yearMaint"    column="year_maint"    />
+        <result property="reportNo"    column="report_no"    />
+        <result property="approveTime"    column="approve_time"    />
+        <result property="changeTime"    column="change_time"    />
+        <result property="checkUnit"    column="check_unit"    />
+        <result property="engineer"    column="engineer"    />
+        <result property="isEx"    column="is_ex"    />
+        <result property="hiFlag" column="hiFlag" />
+        <result property="perTestConclusion" column="per_test_conclusion" />
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="factoryNo" column="factory_no"/>
+        <result property="devCode" column="dev_code"/>
+        <result property="devType" column="dev_type"/>
+        <result property="devType2" column="dev_type2"/>
+        <result property="factoryInfo" column="factory_info"/>
+        <result property="plateNo" column="plate_no"/>
+        <result property="engineNo" column="engine_no"/>
+        <result property="exLevel" column="ex_level"/>
+    </resultMap>
+
+    <sql id="selectTSpecdevDzsbVo">
+        select d.id, d.plant_code, d.unit, d.devname,d.dev_code,d.factory_no, d.devno, d.submitdate, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.plant_maint, d.docno, d.model, d.capacity, d.location, d.create_unit, d.check_strategy, d.year_maint, d.report_no, d.approve_time, d.change_time, d.check_unit, d.engineer, d.is_ex  ,s.dept_name,
+         per_test_conclusion
+                ,d.is_repeat,
+                d.dev_type,
+                d.dev_type2,
+                d.factory_info,
+                d.plate_no,
+                d.engine_no,
+                d.ex_level
+        from t_specdev_dzsb d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevDzsbList" parameterType="TSpecdevDzsb" resultMap="TSpecdevDzsbResult">
+        <include refid="selectTSpecdevDzsbVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="devname != null  and devname != ''"> and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="submitdate != null "> and submitdate = #{submitdate}</if>
+            <if test="status != null "> and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="fuzzy != null ">and (plant_code like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or dev_code like concat('%',#{fuzzy},'%')
+                or factory_no like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or warn_cycle like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or warn_flag like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or docno like concat('%',#{fuzzy},'%')
+                or model like concat('%',#{fuzzy},'%')
+                or capacity like concat('%',#{fuzzy},'%')
+                or location like concat('%',#{fuzzy},'%')
+                or create_unit like concat('%',#{fuzzy},'%')
+                or check_strategy like concat('%',#{fuzzy},'%')
+                or year_maint like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or engineer like concat('%',#{fuzzy},'%')
+                or is_ex like concat('%',#{fuzzy},'%')
+                or dev_type like concat('%',#{fuzzy},'%')
+                or dev_type2 like concat('%',#{fuzzy},'%')
+                or factory_info like concat('%',#{fuzzy},'%')
+                or plate_no like concat('%',#{fuzzy},'%')
+                or engine_no like concat('%',#{fuzzy},'%')
+                or ex_level like concat('%',#{fuzzy},'%') )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code, d.unit, d.id
+    </select>
+    <select id="selectTSpecdevDzsbListByYear" parameterType="TSpecdevDzsb" resultMap="TSpecdevDzsbResult">
+        <include refid="selectTSpecdevDzsbVo"/>
+        <where>
+            <if test="checkYear != null ">and date_format(NEXT_WARN_DATE,'%Y%m') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+            and d.status = 1
+        </where>
+
+    </select>
+
+    <select id="selectTSpecdevDzsbById" parameterType="Long" resultMap="TSpecdevDzsbResult">
+        <include refid="selectTSpecdevDzsbVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevDzsb" parameterType="TSpecdevDzsb">
+
+        insert into t_specdev_dzsb
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="unit != null">unit,</if>
+            <if test="devname != null">devname,</if>
+            <if test="devno != null">devno,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="regno != null">regno,</if>
+            <if test="useno != null">useno,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="warnCycle != null">warn_cycle,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="warnFlag != null">warn_flag,</if>
+            <if test="plantMaint != null">plant_maint,</if>
+            <if test="docno != null">docno,</if>
+            <if test="model != null">model,</if>
+            <if test="capacity != null">capacity,</if>
+            <if test="location != null">location,</if>
+            <if test="createUnit != null">create_unit,</if>
+            <if test="checkStrategy != null">check_strategy,</if>
+            <if test="yearMaint != null">year_maint,</if>
+            <if test="reportNo != null">report_no,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="checkUnit != null">check_unit,</if>
+            <if test="engineer != null">engineer,</if>
+            <if test="isEx != null">is_ex,</if>
+            <if test="perTestConclusion != null">per_test_conclusion,</if>
+            <if test="factoryNo != null">factory_no,</if>
+            <if test="devCode != null">dev_code,</if>
+            <if test="devType != null">dev_type,</if>
+            <if test="devType2 != null">dev_type2,</if>
+            <if test="factoryInfo != null">factory_info,</if>
+            <if test="plateNo != null">plate_no,</if>
+            <if test="engineNo != null">engine_no,</if>
+            <if test="exLevel != null">ex_level,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="docno != null">#{docno},</if>
+            <if test="model != null">#{model},</if>
+            <if test="capacity != null">#{capacity},</if>
+            <if test="location != null">#{location},</if>
+            <if test="createUnit != null">#{createUnit},</if>
+            <if test="checkStrategy != null">#{checkStrategy},</if>
+            <if test="yearMaint != null">#{yearMaint},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="engineer != null">#{engineer},</if>
+            <if test="isEx != null">#{isEx},</if>
+            <if test="perTestConclusion != null">#{perTestConclusion},</if>
+            <if test="factoryNo != null">#{factoryNo},</if>
+            <if test="devCode != null">#{devCode},</if>
+            <if test="devType != null">#{devType},</if>
+            <if test="devType2 != null">#{devType2},</if>
+            <if test="factoryInfo != null">#{factoryInfo},</if>
+            <if test="plateNo != null">#{plateNo},</if>
+            <if test="engineNo != null">#{engineNo},</if>
+            <if test="exLevel != null">#{exLevel},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevDzsb" parameterType="TSpecdevDzsb">
+        update t_specdev_dzsb
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="docno != null">docno = #{docno},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="capacity != null">capacity = #{capacity},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="checkStrategy != null">check_strategy = #{checkStrategy},</if>
+            <if test="yearMaint != null">year_maint = #{yearMaint},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="engineer != null">engineer = #{engineer},</if>
+            <if test="isEx != null">is_ex = #{isEx},</if>
+            <if test="perTestConclusion != null">per_test_conclusion = #{perTestConclusion},</if>
+            <if test="isRepeat != null">is_repeat = #{isRepeat},</if>
+            <if test="factoryNo != null">factory_no = #{factoryNo},</if>
+            <if test="devCode != null">dev_code = #{devCode},</if>
+            <if test="devType != null">dev_type=#{devType},</if>
+            <if test="devType2 != null">dev_type2=#{devType2},</if>
+            <if test="factoryInfo != null">factory_info=#{factoryInfo},</if>
+            <if test="plateNo != null">plate_no=#{plateNo},</if>
+            <if test="engineNo != null">engine_no=#{engineNo},</if>
+            <if test="exLevel != null">ex_level=#{exLevel},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+
+
+    <update id="deleteTSpecdevDzsbById" parameterType="Long">
+        update t_specdev_dzsb set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevDzsbByIds" parameterType="String">
+        update t_specdev_dzsb set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <update id="duplicateTSpecdevDzsb" >
+        UPDATE  T_SPECDEV_dzsb set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_dzsb a where (a.DEVNO,a.plant_code) in(select DEVNO,plant_code from t_specdev_dzsb group by DEVNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_dzsb group by DEVNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+
+</mapper>

+ 253 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevFixedAssetMapper.xml

@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevFixedAssetMapper">
+
+    <resultMap type="TSpecdevFixedAsset" id="TSpecdevFixedAssetResult">
+        <result property="id"    column="id"    />
+        <result property="assetType"    column="asset_type"    />
+        <result property="assetNo"    column="asset_no"    />
+        <result property="assetSubNo"    column="asset_sub_no"    />
+        <result property="devName"    column="dev_name"    />
+        <result property="devEnname"    column="dev_enname"    />
+        <result property="costCenter"    column="cost_center"    />
+        <result property="costCenterCode"    column="cost_center_code"    />
+        <result property="assetTypeAp"    column="asset_type_ap"    />
+        <result property="capitalizedDate"    column="capitalized_date"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="currency"    column="currency"    />
+        <result property="currentApc"    column="current_apc"    />
+        <result property="serviceLife"    column="service_life"    />
+        <result property="administrator"    column="administrator"    />
+        <result property="devNo"    column="dev_no"    />
+        <result property="assetDetail"    column="asset_detail"    />
+        <result property="processSubunit"    column="process_subunit"    />
+        <result property="pidNo"    column="pid_no"    />
+        <result property="installPosition"    column="install_position"    />
+        <result property="createReason"    column="create_reason"    />
+        <result property="barcodePosition"    column="barcode_position"    />
+        <result property="scrapReason"    column="scrap_reason"    />
+        <result property="scrapPoseDate"    column="scrap_pose_date"    />
+        <result property="scrapDoneDate"    column="scrap_done_date"    />
+        <result property="scraper"    column="scraper"    />
+        <result property="usingStatus"    column="using_status"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTSpecdevFixedAssetVo">
+        select d.id, d.asset_type, d.asset_no, d.asset_sub_no, d.dev_name, d.dev_enname, d.cost_center, d.cost_center_code, d.asset_type_ap, d.capitalized_date, d.quantity, d.currency, d.current_apc, d.service_life, d.administrator, d.dev_no, d.asset_detail, d.process_subunit, d.pid_no, d.install_position, d.create_reason, d.barcode_position, d.scrap_reason, d.scrap_pose_date, d.scrap_done_date, d.scraper, d.using_status, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_specdev_fixed_asset d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevFixedAssetList" parameterType="TSpecdevFixedAsset" resultMap="TSpecdevFixedAssetResult">
+        <include refid="selectTSpecdevFixedAssetVo"/>
+        <where>
+            <if test="assetType != null  and assetType != ''"> and asset_type = #{assetType}</if>
+            <if test="assetNo != null  and assetNo != ''"> and asset_no = #{assetNo}</if>
+            <if test="assetSubNo != null  and assetSubNo != ''"> and asset_sub_no = #{assetSubNo}</if>
+            <if test="devName != null  and devName != ''"> and dev_name like concat(concat('%', #{devName}), '%')</if>
+            <if test="devEnname != null  and devEnname != ''"> and dev_enname like concat(concat('%', #{devEnname}), '%')</if>
+            <if test="costCenter != null  and costCenter != ''"> and cost_center = #{costCenter}</if>
+            <if test="costCenterCode != null  and costCenterCode != ''"> and cost_center_code = #{costCenterCode}</if>
+            <if test="assetTypeAp != null  and assetTypeAp != ''"> and asset_type_ap = #{assetTypeAp}</if>
+            <if test="capitalizedDate != null "> and capitalized_date = #{capitalizedDate}</if>
+            <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
+            <if test="currency != null  and currency != ''"> and currency = #{currency}</if>
+            <if test="currentApc != null  and currentApc != ''"> and current_apc = #{currentApc}</if>
+            <if test="serviceLife != null  and serviceLife != ''"> and service_life = #{serviceLife}</if>
+            <if test="administrator != null  and administrator != ''"> and administrator = #{administrator}</if>
+            <if test="devNo != null  and devNo != ''"> and dev_no = #{devNo}</if>
+            <if test="assetDetail != null  and assetDetail != ''"> and asset_detail = #{assetDetail}</if>
+            <if test="processSubunit != null  and processSubunit != ''"> and process_subunit = #{processSubunit}</if>
+            <if test="pidNo != null  and pidNo != ''"> and pid_no = #{pidNo}</if>
+            <if test="installPosition != null  and installPosition != ''"> and install_position = #{installPosition}</if>
+            <if test="createReason != null  and createReason != ''"> and create_reason = #{createReason}</if>
+            <if test="barcodePosition != null  and barcodePosition != ''"> and barcode_position = #{barcodePosition}</if>
+            <if test="scrapReason != null  and scrapReason != ''"> and scrap_reason = #{scrapReason}</if>
+            <if test="scrapPoseDate != null "> and scrap_pose_date = #{scrapPoseDate}</if>
+            <if test="scrapDoneDate != null "> and scrap_done_date = #{scrapDoneDate}</if>
+            <if test="scraper != null  and scraper != ''"> and scraper = #{scraper}</if>
+            <if test="usingStatus != null  and usingStatus != ''"> and using_status = #{usingStatus}</if>
+            <if test="status != null "> and `status` = #{status}</if>
+            <if test="createrCode != null "> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null "> and remarks = #{remarks}</if>
+            <if test="fuzzy != null and fuzzy != ''"> and (asset_type like concat ('%',#{fuzzy},'%')
+                or asset_no like concat ('%',#{fuzzy},'%')
+                or asset_sub_no like concat ('%',#{fuzzy},'%')
+                or dev_name like concat ('%',#{fuzzy},'%')
+                or dev_enname like concat ('%',#{fuzzy},'%')
+                or cost_center like concat ('%',#{fuzzy},'%')
+                or cost_center_code like concat ('%',#{fuzzy},'%')
+                or asset_type_ap like concat ('%',#{fuzzy},'%')
+                or capitalized_date like concat ('%',#{fuzzy},'%')
+                or quantity like concat ('%',#{fuzzy},'%')
+                or currency like concat ('%',#{fuzzy},'%')
+                or current_apc like concat ('%',#{fuzzy},'%')
+                or service_life like concat ('%',#{fuzzy},'%')
+                or administrator like concat ('%',#{fuzzy},'%')
+                or dev_no like concat ('%',#{fuzzy},'%')
+                or asset_detail like concat ('%',#{fuzzy},'%')
+                or process_subunit like concat ('%',#{fuzzy},'%')
+                or pid_no like concat ('%',#{fuzzy},'%')
+                or install_position like concat ('%',#{fuzzy},'%')
+                or create_reason like concat ('%',#{fuzzy},'%')
+                or barcode_position like concat ('%',#{fuzzy},'%')
+                or scrap_reason like concat ('%',#{fuzzy},'%')
+                or scrap_pose_date like concat ('%',#{fuzzy},'%')
+                or scrap_done_date like concat ('%',#{fuzzy},'%')
+                or scraper like concat ('%',#{fuzzy},'%')
+                or using_status like concat ('%',#{fuzzy},'%')
+                or remarks like concat ('%',#{fuzzy},'%'))</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTSpecdevFixedAssetById" parameterType="Long" resultMap="TSpecdevFixedAssetResult">
+        <include refid="selectTSpecdevFixedAssetVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevFixedAsset" parameterType="TSpecdevFixedAsset" keyProperty="id" useGeneratedKeys="true">
+        insert into t_specdev_fixed_asset
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="assetType != null">asset_type,</if>
+            <if test="assetNo != null">asset_no,</if>
+            <if test="assetSubNo != null">asset_sub_no,</if>
+            <if test="devName != null">dev_name,</if>
+            <if test="devEnname != null">dev_enname,</if>
+            <if test="costCenter != null">cost_center,</if>
+            <if test="costCenterCode != null">cost_center_code,</if>
+            <if test="assetTypeAp != null">asset_type_ap,</if>
+            <if test="capitalizedDate != null">capitalized_date,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="currency != null">currency,</if>
+            <if test="currentApc != null">current_apc,</if>
+            <if test="serviceLife != null">service_life,</if>
+            <if test="administrator != null">administrator,</if>
+            <if test="devNo != null">dev_no,</if>
+            <if test="assetDetail != null">asset_detail,</if>
+            <if test="processSubunit != null">process_subunit,</if>
+            <if test="pidNo != null">pid_no,</if>
+            <if test="installPosition != null">install_position,</if>
+            <if test="createReason != null">create_reason,</if>
+            <if test="barcodePosition != null">barcode_position,</if>
+            <if test="scrapReason != null">scrap_reason,</if>
+            <if test="scrapPoseDate != null">scrap_pose_date,</if>
+            <if test="scrapDoneDate != null">scrap_done_date,</if>
+            <if test="scraper != null">scraper,</if>
+            <if test="usingStatus != null">using_status,</if>
+            <if test="status != null">`status`,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="assetType != null">#{assetType},</if>
+            <if test="assetNo != null">#{assetNo},</if>
+            <if test="assetSubNo != null">#{assetSubNo},</if>
+            <if test="devName != null">#{devName},</if>
+            <if test="devEnname != null">#{devEnname},</if>
+            <if test="costCenter != null">#{costCenter},</if>
+            <if test="costCenterCode != null">#{costCenterCode},</if>
+            <if test="assetTypeAp != null">#{assetTypeAp},</if>
+            <if test="capitalizedDate != null">#{capitalizedDate},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="currency != null">#{currency},</if>
+            <if test="currentApc != null">#{currentApc},</if>
+            <if test="serviceLife != null">#{serviceLife},</if>
+            <if test="administrator != null">#{administrator},</if>
+            <if test="devNo != null">#{devNo},</if>
+            <if test="assetDetail != null">#{assetDetail},</if>
+            <if test="processSubunit != null">#{processSubunit},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="installPosition != null">#{installPosition},</if>
+            <if test="createReason != null">#{createReason},</if>
+            <if test="barcodePosition != null">#{barcodePosition},</if>
+            <if test="scrapReason != null">#{scrapReason},</if>
+            <if test="scrapPoseDate != null">#{scrapPoseDate},</if>
+            <if test="scrapDoneDate != null">#{scrapDoneDate},</if>
+            <if test="scraper != null">#{scraper},</if>
+            <if test="usingStatus != null">#{usingStatus},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">now(),</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevFixedAsset" parameterType="TSpecdevFixedAsset">
+        update t_specdev_fixed_asset
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="assetType != null">asset_type = #{assetType},</if>
+            <if test="assetNo != null">asset_no = #{assetNo},</if>
+            <if test="assetSubNo != null">asset_sub_no = #{assetSubNo},</if>
+            <if test="devName != null">dev_name = #{devName},</if>
+            <if test="devEnname != null">dev_enname = #{devEnname},</if>
+            <if test="costCenter != null">cost_center = #{costCenter},</if>
+            <if test="costCenterCode != null">cost_center_code = #{costCenterCode},</if>
+            <if test="assetTypeAp != null">asset_type_ap = #{assetTypeAp},</if>
+            <if test="capitalizedDate != null">capitalized_date = #{capitalizedDate},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="currency != null">currency = #{currency},</if>
+            <if test="currentApc != null">current_apc = #{currentApc},</if>
+            <if test="serviceLife != null">service_life = #{serviceLife},</if>
+            <if test="administrator != null">administrator = #{administrator},</if>
+            <if test="devNo != null">dev_no = #{devNo},</if>
+            <if test="assetDetail != null">asset_detail = #{assetDetail},</if>
+            <if test="processSubunit != null">process_subunit = #{processSubunit},</if>
+            <if test="pidNo != null">pid_no = #{pidNo},</if>
+            <if test="installPosition != null">install_position = #{installPosition},</if>
+            <if test="createReason != null">create_reason = #{createReason},</if>
+            <if test="barcodePosition != null">barcode_position = #{barcodePosition},</if>
+            <if test="scrapReason != null">scrap_reason = #{scrapReason},</if>
+            <if test="scrapPoseDate != null">scrap_pose_date = #{scrapPoseDate},</if>
+            <if test="scrapDoneDate != null">scrap_done_date = #{scrapDoneDate},</if>
+            <if test="scraper != null">scraper = #{scraper},</if>
+            <if test="usingStatus != null">using_status = #{usingStatus},</if>
+            <if test="status != null">`status` = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevFixedAssetById" parameterType="Long">
+        update t_specdev_fixed_asset set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevFixedAssetByIds" parameterType="String">
+        update t_specdev_fixed_asset set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 384 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevGlMapper.xml

@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevGlMapper">
+
+    <resultMap type="TSpecdevGl" id="TSpecdevGlResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="unit"    column="unit"    />
+        <result property="devname"    column="devname"    />
+        <result property="devno"    column="devno"    />
+        <result property="submitdate"    column="submitdate"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="approveStatus"    column="approve_status"    />
+        <result property="regno"    column="regno"    />
+        <result property="useno"    column="useno"    />
+        <result property="warnDate"    column="warn_date"    />
+        <result property="warnCycle"    column="warn_cycle"    />
+        <result property="nextWarnDate"    column="next_warn_date"    />
+        <result property="warnFlag"    column="warn_flag"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="burnMode"    column="burn_mode"    />
+        <result property="burnKind"    column="burn_kind"    />
+        <result property="ratedPower"    column="rated_power"    />
+        <result property="desPressure"    column="des_pressure"    />
+        <result property="desTemp"    column="des_temp"    />
+        <result property="optPressure"    column="opt_pressure"    />
+        <result property="optTemp"    column="opt_temp"    />
+        <result property="checkUnit"    column="check_unit"    />
+        <result property="checkConclusion"    column="check_conclusion"    />
+        <result property="model"    column="model"    />
+        <result property="waterMode"    column="water_mode"    />
+        <result property="reportNo"    column="report_no"    />
+        <result property="approveTime"    column="approve_time"    />
+        <result property="changeTime"    column="change_time"    />
+        <result property="plantMaint"    column="plant_maint"    />
+        <result property="outWarnDate"    column="out_warn_date"    />
+        <result property="outNextWarnDate"    column="out_next_warn_date"    />
+        <result property="outCheckConclusion"    column="out_check_conclusion"    />
+        <result property="outReportNo"    column="out_report_no"    />
+        <result property="engineer"    column="engineer"    />
+        <result property="hiFlag" column="hiFlag" />
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="containerNo" column="container_no"/>
+        <result property="filedSituation" column="filed_situation"/>
+        <result property="internalInspection" column="internal_inspection"/>
+        <result property="externalInspection" column="external_inspection"/>
+        <result property="pressureTest" column="pressure_test"/>
+        <result property="energyEfficiencyTest" column="energy_efficiency_test"/>
+        <result property="factoryInfo" column="factory_info"/>
+        <result property="factoryNo" column="factory_no"/>
+        <result property="medium" column="medium"/>
+        <result property="designUnit" column="design_unit"/>
+    </resultMap>
+
+    <sql id="selectTSpecdevGlVo">
+        select d.id, d.plant_code, d.unit, d.devname, d.devno, d.submitdate, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.create_unit, d.burn_mode, d.burn_kind, d.rated_power, d.des_pressure, d.des_temp, d.opt_pressure, d.opt_temp, d.check_unit, d.check_conclusion, d.model, d.water_mode, d.report_no, d.approve_time, d.change_time, d.plant_maint, d.out_warn_date, d.out_next_warn_date, d.out_check_conclusion, d.out_report_no, d.engineer ,s.dept_name,
+        d.is_repeat,d.container_no,
+               d.filed_situation,
+               d.internal_inspection,
+               d.external_inspection,
+               d.pressure_test,
+               d.energy_efficiency_test,
+               d.factory_info,
+               d.factory_no,
+               d.medium,
+               d.design_unit
+        from t_specdev_gl d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevGlList" parameterType="TSpecdevGl" resultMap="TSpecdevGlResult">
+        <include refid="selectTSpecdevGlVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="devname != null  and devname != ''"> and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="regno != null  and regno != ''"> and regno = #{regno}</if>
+            <if test="useno != null  and useno != ''"> and useno = #{useno}</if>
+            <if test="warnDate != null "> and warn_date = #{warnDate}</if>
+            <if test="nextWarnDate != null "> and next_warn_date = #{nextWarnDate}</if>
+            <if test="warnFlag != null "> and warn_flag = #{warnFlag}</if>
+            <if test="createUnit != null  and createUnit != ''"> and create_unit = #{createUnit}</if>
+            <if test="burnMode != null  and burnMode != ''"> and burn_mode = #{burnMode}</if>
+            <if test="burnKind != null  and burnKind != ''"> and burn_kind = #{burnKind}</if>
+            <if test="ratedPower != null  and ratedPower != ''"> and rated_power = #{ratedPower}</if>
+            <if test="desPressure != null  and desPressure != ''"> and des_pressure = #{desPressure}</if>
+            <if test="desTemp != null  and desTemp != ''"> and des_temp = #{desTemp}</if>
+            <if test="optPressure != null  and optPressure != ''"> and opt_pressure = #{optPressure}</if>
+            <if test="optTemp != null  and optTemp != ''"> and opt_temp = #{optTemp}</if>
+            <if test="checkUnit != null  and checkUnit != ''"> and check_unit = #{checkUnit}</if>
+            <if test="checkConclusion != null  and checkConclusion != ''"> and check_conclusion = #{checkConclusion}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="waterMode != null  and waterMode != ''"> and water_mode = #{waterMode}</if>
+            <if test="reportNo != null  and reportNo != ''"> and report_no = #{reportNo}</if>
+            <if test="approveTime != null "> and approve_time = #{approveTime}</if>
+            <if test="changeTime != null "> and change_time = #{changeTime}</if>
+            <if test="plantMaint != null  and plantMaint != ''"> and plant_maint = #{plantMaint}</if>
+            <if test="status != null "> and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="containerNo != null "> and `container_no` = #{containerNo}</if>
+            <if test="filedSituation != null "> and `filed_situation` = #{filedSituation}</if>
+            <if test="internalInspection != null "> and `internal_inspection` = #{internalInspection}</if>
+            <if test="externalInspection != null "> and `external_inspection` = #{externalInspection}</if>
+            <if test="pressureTest != null "> and `pressure_test` = #{pressureTest}</if>
+            <if test="energyEfficiencyTest != null "> and `energy_efficiency_test` = #{energyEfficiencyTest}</if>
+            <if test="factoryInfo != null "> and `factory_info` = #{factoryInfo}</if>
+            <if test="factoryNo != null "> and `factory_no` = #{factoryNo}</if>
+            <if test="medium != null "> and `medium` = #{medium}</if>
+            <if test="designUnit != null "> and `design_unit` = #{designUnit}</if>
+            <if test="fuzzy != null and  fuzzy!=''"> and (plant_code like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or warn_flag like concat('%',#{fuzzy},'%')
+                or create_unit like concat('%',#{fuzzy},'%')
+                or burn_mode like concat('%',#{fuzzy},'%')
+                or burn_kind like concat('%',#{fuzzy},'%')
+                or rated_power like concat('%',#{fuzzy},'%')
+                or des_pressure like concat('%',#{fuzzy},'%')
+                or des_temp like concat('%',#{fuzzy},'%')
+                or opt_pressure like concat('%',#{fuzzy},'%')
+                or opt_temp like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or check_conclusion like concat('%',#{fuzzy},'%')
+                or model like concat('%',#{fuzzy},'%')
+                or water_mode like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or `container_no` like concat('%',#{fuzzy},'%')
+                or `filed_situation` like concat('%',#{fuzzy},'%')
+                or `internal_inspection` like concat('%',#{fuzzy},'%')
+                or `external_inspection` like concat('%',#{fuzzy},'%')
+                or `pressure_test` like concat('%',#{fuzzy},'%')
+                or `energy_efficiency_test` like concat('%',#{fuzzy},'%')
+                or `factory_info` like concat('%',#{fuzzy},'%')
+                or `factory_no` like concat('%',#{fuzzy},'%')
+                or `medium` like concat('%',#{fuzzy},'%')
+                or `design_unit` like concat('%',#{fuzzy},'%'))</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code, d.unit, d.id
+    </select>
+
+    <select id="selectTSpecdevGlListByYear" parameterType="TSpecdevGl" resultMap="TSpecdevGlResult">
+        <include refid="selectTSpecdevGlVo"/>
+        <where>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="hiType == 1 ">and date_format(NEXT_WARN_DATE,'%Y') = #{checkYear}</if>
+            <if test="hiType == 2 ">and date_format(out_next_warn_date,'%Y') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+        </where>
+    </select>
+
+
+    <select id="selectTSpecdevGlById" parameterType="Long" resultMap="TSpecdevGlResult">
+        <include refid="selectTSpecdevGlVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevGl" parameterType="TSpecdevGl">
+
+        insert into t_specdev_gl
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="unit != null">unit,</if>
+            <if test="devname != null">devname,</if>
+            <if test="devno != null">devno,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="regno != null">regno,</if>
+            <if test="useno != null">useno,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="warnCycle != null">warn_cycle,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="warnFlag != null">warn_flag,</if>
+            <if test="createUnit != null">create_unit,</if>
+            <if test="burnMode != null">burn_mode,</if>
+            <if test="burnKind != null">burn_kind,</if>
+            <if test="ratedPower != null">rated_power,</if>
+            <if test="desPressure != null">des_pressure,</if>
+            <if test="desTemp != null">des_temp,</if>
+            <if test="optPressure != null">opt_pressure,</if>
+            <if test="optTemp != null">opt_temp,</if>
+            <if test="checkUnit != null">check_unit,</if>
+            <if test="checkConclusion != null">check_conclusion,</if>
+            <if test="model != null">model,</if>
+            <if test="waterMode != null">water_mode,</if>
+            <if test="reportNo != null">report_no,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="plantMaint != null">plant_maint,</if>
+            <if test="outWarnDate != null">out_warn_date,</if>
+            <if test="outNextWarnDate != null">out_next_warn_date,</if>
+            <if test="outCheckConclusion != null">out_check_conclusion,</if>
+            <if test="outReportNo != null">out_report_no,</if>
+            <if test="engineer != null">engineer,</if>
+            <if test="containerNo != null ">  `container_no`,</if>
+            <if test="filedSituation != null ">  `filed_situation` ,</if>
+            <if test="internalInspection != null ">  `internal_inspection` ,</if>
+            <if test="externalInspection != null ">  `external_inspection` ,</if>
+            <if test="pressureTest != null ">  `pressure_test`, </if>
+            <if test="energyEfficiencyTest != null ">  `energy_efficiency_test` ,</if>
+            <if test="factoryInfo != null ">  `factory_info` ,</if>
+            <if test="factoryNo != null ">  `factory_no` ,</if>
+            <if test="medium != null ">  `medium` ,</if>
+            <if test="designUnit != null ">  `design_unit` ,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="createUnit != null">#{createUnit},</if>
+            <if test="burnMode != null">#{burnMode},</if>
+            <if test="burnKind != null">#{burnKind},</if>
+            <if test="ratedPower != null">#{ratedPower},</if>
+            <if test="desPressure != null">#{desPressure},</if>
+            <if test="desTemp != null">#{desTemp},</if>
+            <if test="optPressure != null">#{optPressure},</if>
+            <if test="optTemp != null">#{optTemp},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="checkConclusion != null">#{checkConclusion},</if>
+            <if test="model != null">#{model},</if>
+            <if test="waterMode != null">#{waterMode},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="outWarnDate != null">#{outWarnDate},</if>
+            <if test="outNextWarnDate != null">#{outNextWarnDate},</if>
+            <if test="outCheckConclusion != null">#{outCheckConclusion},</if>
+            <if test="outReportNo != null">#{outReportNo},</if>
+            <if test="engineer != null">#{engineer},</if>
+            <if test="containerNo != null ">  #{containerNo},</if>
+            <if test="filedSituation != null ">  #{filedSituation},</if>
+            <if test="internalInspection != null ">  #{internalInspection},</if>
+            <if test="externalInspection != null ">  #{externalInspection},</if>
+            <if test="pressureTest != null ">  #{pressureTest},</if>
+            <if test="energyEfficiencyTest != null ">  #{energyEfficiencyTest},</if>
+            <if test="factoryInfo != null ">  #{factoryInfo},</if>
+            <if test="factoryNo != null ">  #{factoryNo},</if>
+            <if test="medium != null ">  #{medium},</if>
+            <if test="designUnit != null ">  #{designUnit},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevGl" parameterType="TSpecdevGl">
+        update t_specdev_gl
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="burnMode != null">burn_mode = #{burnMode},</if>
+            <if test="burnKind != null">burn_kind = #{burnKind},</if>
+            <if test="ratedPower != null">rated_power = #{ratedPower},</if>
+            <if test="desPressure != null">des_pressure = #{desPressure},</if>
+            <if test="desTemp != null">des_temp = #{desTemp},</if>
+            <if test="optPressure != null">opt_pressure = #{optPressure},</if>
+            <if test="optTemp != null">opt_temp = #{optTemp},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="checkConclusion != null">check_conclusion = #{checkConclusion},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="waterMode != null">water_mode = #{waterMode},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="outWarnDate != null">out_warn_date = #{outWarnDate},</if>
+            <if test="outNextWarnDate != null">out_next_warn_date = #{outNextWarnDate},</if>
+            <if test="outCheckConclusion != null">out_check_conclusion = #{outCheckConclusion},</if>
+            <if test="outReportNo != null">out_report_no = #{outReportNo},</if>
+            <if test="engineer != null">engineer = #{engineer},</if>
+            <if test="isRepeat != null">is_repeat = #{isRepeat},</if>
+            <if test="containerNo != null ">  `container_no`= #{containerNo},</if>
+            <if test="filedSituation != null ">  `filed_situation`= #{filedSituation} ,</if>
+            <if test="internalInspection != null ">  `internal_inspection` = #{internalInspection},</if>
+            <if test="externalInspection != null ">  `external_inspection` = #{externalInspection},</if>
+            <if test="pressureTest != null ">  `pressure_test`= #{pressureTest}, </if>
+            <if test="energyEfficiencyTest != null ">  `energy_efficiency_test` = #{energyEfficiencyTest},</if>
+            <if test="factoryInfo != null ">  `factory_info`= #{factoryInfo} ,</if>
+            <if test="factoryNo != null ">  `factory_no` = #{factoryNo},</if>
+            <if test="medium != null ">  `medium` = #{medium},</if>
+            <if test="designUnit != null ">  `design_unit`= #{designUnit} ,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevGlById" parameterType="Long">
+        update t_specdev_gl set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevGlByIds" parameterType="String">
+        update t_specdev_gl set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <update id="duplicateTSpecdevGl" >
+        UPDATE  T_SPECDEV_GL set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_gl a where (a.DEVNO,a.plant_code) in(select DEVNO,plant_code from t_specdev_gl group by DEVNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_gl group by DEVNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+
+</mapper>

+ 250 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevMainMapper.xml

@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevMainMapper">
+
+    <resultMap type="TSpecdevMain" id="TSpecdevMainResult">
+        <result property="id"    column="id"    />
+        <result property="devName"    column="dev_name"    />
+        <result property="devEnname"    column="dev_enname"    />
+        <result property="devno"    column="devno"    />
+        <result property="isPid"    column="is_pid"    />
+        <result property="pidNo"    column="pid_no"    />
+        <result property="installPosition"    column="install_position"    />
+        <result property="funcPosition"    column="func_position"    />
+        <result property="assetNo"    column="asset_no"    />
+        <result property="securityRelevant"    column="security_relevant"    />
+        <result property="securityRelevantFrom"    column="security_relevant_from"    />
+        <result property="manufacturer"    column="manufacturer"    />
+        <result property="productionYear"    column="production_year"    />
+        <result property="model"    column="model"    />
+        <result property="mainSpecifications"    column="main_specifications"    />
+        <result property="dataPlate"    column="data_plate"    />
+        <result property="maintenanceRisk"    column="maintenance_risk"    />
+        <result property="productionRisk"    column="production_risk"    />
+        <result property="devGrade"    column="dev_grade"    />
+        <result property="devFrom"    column="dev_from"    />
+        <result property="devType1"    column="dev_type1"    />
+        <result property="devType2"    column="dev_type2"    />
+        <result property="assetStatus"    column="asset_status"    />
+        <result property="dataIntegrity"    column="data_integrity"    />
+        <result property="pmStatus"    column="pm_status"    />
+        <result property="assetResidueLifeAssess"    column="asset_residue_life_assess"    />
+        <result property="overallAssetStatus"    column="overall_asset_status"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="deptName" column="dept_name" />
+        <result property="subId" column="sub_id" />
+    </resultMap>
+
+    <sql id="selectTSpecdevMainVo">
+        select d.sub_id,d.id, d.dev_name, d.dev_enname, d.devno, d.is_pid, d.pid_no, d.install_position, d.func_position, d.asset_no, d.security_relevant, d.security_relevant_from, d.manufacturer, d.production_year, d.model, d.main_specifications, d.data_plate, d.maintenance_risk, d.production_risk, d.dev_grade, d.dev_from, d.dev_type1, d.dev_type2, d.asset_status, d.data_integrity, d.pm_status, d.asset_residue_life_assess, d.overall_asset_status, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_specdev_main d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevMainList" parameterType="TSpecdevMain" resultMap="TSpecdevMainResult">
+        <include refid="selectTSpecdevMainVo"/>
+        <where>
+            <if test="devName != null  and devName != ''"> and dev_name like concat(concat('%', #{devName}), '%')</if>
+            <if test="devEnname != null  and devEnname != ''"> and dev_enname like concat(concat('%', #{devEnname}), '%')</if>
+            <if test="devno != null  and devno != ''"> and devno = #{devno}</if>
+            <if test="isPid != null  and isPid != ''"> and is_pid = #{isPid}</if>
+            <if test="pidNo != null  and pidNo != ''"> and pid_no = #{pidNo}</if>
+            <if test="installPosition != null  and installPosition != ''"> and install_position = #{installPosition}</if>
+            <if test="funcPosition != null  and funcPosition != ''"> and func_position = #{funcPosition}</if>
+            <if test="assetNo != null  and assetNo != ''"> and asset_no = #{assetNo}</if>
+            <if test="securityRelevant != null  and securityRelevant != ''"> and security_relevant = #{securityRelevant}</if>
+            <if test="securityRelevantFrom != null  and securityRelevantFrom != ''"> and security_relevant_from = #{securityRelevantFrom}</if>
+            <if test="manufacturer != null  and manufacturer != ''"> and manufacturer = #{manufacturer}</if>
+            <if test="productionYear != null  and productionYear != ''"> and production_year = #{productionYear}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="mainSpecifications != null  and mainSpecifications != ''"> and main_specifications = #{mainSpecifications}</if>
+            <if test="dataPlate != null  and dataPlate != ''"> and data_plate = #{dataPlate}</if>
+            <if test="maintenanceRisk != null  and maintenanceRisk != ''"> and maintenance_risk = #{maintenanceRisk}</if>
+            <if test="productionRisk != null  and productionRisk != ''"> and production_risk = #{productionRisk}</if>
+            <if test="devGrade != null  and devGrade != ''"> and dev_grade = #{devGrade}</if>
+            <if test="devFrom != null  and devFrom != ''"> and dev_from = #{devFrom}</if>
+            <if test="devType1 != null  and devType1 != ''"> and dev_type1 = #{devType1}</if>
+            <if test="devType2 != null  and devType2 != ''"> and dev_type2 = #{devType2}</if>
+            <if test="assetStatus != null  and assetStatus != ''"> and asset_status = #{assetStatus}</if>
+            <if test="dataIntegrity != null  and dataIntegrity != ''"> and data_integrity = #{dataIntegrity}</if>
+            <if test="pmStatus != null  and pmStatus != ''"> and pm_status = #{pmStatus}</if>
+            <if test="assetResidueLifeAssess != null  and assetResidueLifeAssess != ''"> and asset_residue_life_assess = #{assetResidueLifeAssess}</if>
+            <if test="overallAssetStatus != null  and overallAssetStatus != ''"> and overall_asset_status = #{overallAssetStatus}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="createrCode != null "> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="fuzzy != null  and fuzzy != ''"> and (
+                dev_name like concat('%',#{fuzzy},'%') or
+                dev_enname like concat('%',#{fuzzy},'%') or
+                devno like concat('%',#{fuzzy},'%') or
+                pid_no like concat('%',#{fuzzy},'%') or
+                install_position like concat('%',#{fuzzy},'%') or
+                func_position like concat('%',#{fuzzy},'%') or
+                asset_no like concat('%',#{fuzzy},'%') or
+                security_relevant like concat('%',#{fuzzy},'%') or
+                security_relevant_from like concat('%',#{fuzzy},'%') or
+                manufacturer like concat('%',#{fuzzy},'%') or
+                production_year like concat('%',#{fuzzy},'%') or
+                model like concat('%',#{fuzzy},'%') or
+                main_specifications like concat('%',#{fuzzy},'%') or
+                data_plate like concat('%',#{fuzzy},'%') or
+                maintenance_risk like concat('%',#{fuzzy},'%') or
+                production_risk like concat('%',#{fuzzy},'%') or
+                dev_grade like concat('%',#{fuzzy},'%') or
+                dev_from like concat('%',#{fuzzy},'%') or
+                remarks like concat('%',#{fuzzy},'%')
+                )</if>
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTSpecdevMainById" parameterType="Long" resultMap="TSpecdevMainResult">
+        <include refid="selectTSpecdevMainVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevMain" parameterType="TSpecdevMain" useGeneratedKeys="true" keyProperty="id">
+        insert into t_specdev_main
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="devName != null">dev_name,</if>
+            <if test="devEnname != null">dev_enname,</if>
+            <if test="devno != null">devno,</if>
+            <if test="isPid != null">is_pid,</if>
+            <if test="pidNo != null">pid_no,</if>
+            <if test="installPosition != null">install_position,</if>
+            <if test="funcPosition != null">func_position,</if>
+            <if test="assetNo != null">asset_no,</if>
+            <if test="securityRelevant != null">security_relevant,</if>
+            <if test="securityRelevantFrom != null">security_relevant_from,</if>
+            <if test="manufacturer != null">manufacturer,</if>
+            <if test="productionYear != null">production_year,</if>
+            <if test="model != null">model,</if>
+            <if test="mainSpecifications != null">main_specifications,</if>
+            <if test="dataPlate != null">data_plate,</if>
+            <if test="maintenanceRisk != null">maintenance_risk,</if>
+            <if test="productionRisk != null">production_risk,</if>
+            <if test="devGrade != null">dev_grade,</if>
+            <if test="devFrom != null">dev_from,</if>
+            <if test="devType1 != null">dev_type1,</if>
+            <if test="devType2 != null">dev_type2,</if>
+            <if test="assetStatus != null">asset_status,</if>
+            <if test="dataIntegrity != null">data_integrity,</if>
+            <if test="pmStatus != null">pm_status,</if>
+            <if test="assetResidueLifeAssess != null">asset_residue_life_assess,</if>
+            <if test="overallAssetStatus != null">overall_asset_status,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="subId != null">sub_id,</if>
+            createdate,
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="devName != null">#{devName},</if>
+            <if test="devEnname != null">#{devEnname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="isPid != null">#{isPid},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="installPosition != null">#{installPosition},</if>
+            <if test="funcPosition != null">#{funcPosition},</if>
+            <if test="assetNo != null">#{assetNo},</if>
+            <if test="securityRelevant != null">#{securityRelevant},</if>
+            <if test="securityRelevantFrom != null">#{securityRelevantFrom},</if>
+            <if test="manufacturer != null">#{manufacturer},</if>
+            <if test="productionYear != null">#{productionYear},</if>
+            <if test="model != null">#{model},</if>
+            <if test="mainSpecifications != null">#{mainSpecifications},</if>
+            <if test="dataPlate != null">#{dataPlate},</if>
+            <if test="maintenanceRisk != null">#{maintenanceRisk},</if>
+            <if test="productionRisk != null">#{productionRisk},</if>
+            <if test="devGrade != null">#{devGrade},</if>
+            <if test="devFrom != null">#{devFrom},</if>
+            <if test="devType1 != null">#{devType1},</if>
+            <if test="devType2 != null">#{devType2},</if>
+            <if test="assetStatus != null">#{assetStatus},</if>
+            <if test="dataIntegrity != null">#{dataIntegrity},</if>
+            <if test="pmStatus != null">#{pmStatus},</if>
+            <if test="assetResidueLifeAssess != null">#{assetResidueLifeAssess},</if>
+            <if test="overallAssetStatus != null">#{overallAssetStatus},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="subId != null">#{subId},</if>
+            now(),
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevMain" parameterType="TSpecdevMain">
+        update t_specdev_main
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="devName != null">dev_name = #{devName},</if>
+            <if test="devEnname != null">dev_enname = #{devEnname},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="isPid != null">is_pid = #{isPid},</if>
+            <if test="pidNo != null">pid_no = #{pidNo},</if>
+            <if test="installPosition != null">install_position = #{installPosition},</if>
+            <if test="funcPosition != null">func_position = #{funcPosition},</if>
+            <if test="assetNo != null">asset_no = #{assetNo},</if>
+            <if test="securityRelevant != null">security_relevant = #{securityRelevant},</if>
+            <if test="securityRelevantFrom != null">security_relevant_from = #{securityRelevantFrom},</if>
+            <if test="manufacturer != null">manufacturer = #{manufacturer},</if>
+            <if test="productionYear != null">production_year = #{productionYear},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="mainSpecifications != null">main_specifications = #{mainSpecifications},</if>
+            <if test="dataPlate != null">data_plate = #{dataPlate},</if>
+            <if test="maintenanceRisk != null">maintenance_risk = #{maintenanceRisk},</if>
+            <if test="productionRisk != null">production_risk = #{productionRisk},</if>
+            <if test="devGrade != null">dev_grade = #{devGrade},</if>
+            <if test="devFrom != null">dev_from = #{devFrom},</if>
+            <if test="devType1 != null">dev_type1 = #{devType1},</if>
+            <if test="devType2 != null">dev_type2 = #{devType2},</if>
+            <if test="assetStatus != null">asset_status = #{assetStatus},</if>
+            <if test="dataIntegrity != null">data_integrity = #{dataIntegrity},</if>
+            <if test="pmStatus != null">pm_status = #{pmStatus},</if>
+            <if test="assetResidueLifeAssess != null">asset_residue_life_assess = #{assetResidueLifeAssess},</if>
+            <if test="overallAssetStatus != null">overall_asset_status = #{overallAssetStatus},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="subId != null">sub_id = #{subId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevMainById" parameterType="Long">
+        update t_specdev_main set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevMainByIds" parameterType="String">
+        update t_specdev_main set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 102 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevTypemgrMapper.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevTypemgrMapper">
+
+    <resultMap type="TSpecdevTypemgr" id="TSpecdevTypemgrResult">
+        <result property="id"    column="id"    />
+        <result property="devType"    column="dev_type"    />
+        <result property="pid"    column="pid"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="status"    column="status"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectTSpecdevTypemgrVo">
+        select id, dev_type, pid, del_flag, status, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_specdev_typemgr
+    </sql>
+
+    <select id="selectTSpecdevTypemgrList" parameterType="TSpecdevTypemgr" resultMap="TSpecdevTypemgrResult">
+        <include refid="selectTSpecdevTypemgrVo"/>
+        <where>
+            <if test="devType != null  and devType != ''"> and dev_type = #{devType}</if>
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+        order by pid
+    </select>
+
+    <select id="selectTSpecdevTypemgrById" parameterType="Long" resultMap="TSpecdevTypemgrResult">
+        <include refid="selectTSpecdevTypemgrVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevTypemgr" parameterType="TSpecdevTypemgr" useGeneratedKeys="true" keyProperty="id">
+        insert into t_specdev_typemgr
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="devType != null and devType != ''">dev_type,</if>
+            <if test="pid != null">pid,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="status != null">status,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="devType != null and devType != ''">#{devType},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecdevTypemgr" parameterType="TSpecdevTypemgr">
+        update t_specdev_typemgr
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="devType != null and devType != ''">dev_type = #{devType},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSpecdevTypemgrById" parameterType="Long">
+        update t_specdev_typemgr set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSpecdevTypemgrByIds" parameterType="String">
+        update t_specdev_typemgr set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 494 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevYlgdMapper.xml

@@ -0,0 +1,494 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevYlgdMapper">
+
+    <resultMap type="TSpecdevYlgd" id="TSpecdevYlgdResult">
+        <result property="id" column="id"/>
+        <result property="plantCode" column="plant_code"/>
+        <result property="unit" column="unit"/>
+        <result property="devname" column="devname"/>
+        <result property="devno" column="devno"/>
+        <result property="submitdate" column="submitdate"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createrCode" column="creater_code"/>
+        <result property="createdate" column="createdate"/>
+        <result property="updaterCode" column="updater_code"/>
+        <result property="updatedate" column="updatedate"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="remarks" column="remarks"/>
+        <result property="approveStatus" column="approve_status"/>
+        <result property="regno" column="regno"/>
+        <result property="useno" column="useno"/>
+        <result property="warnDate" column="warn_date"/>
+        <result property="warnCycle" column="warn_cycle"/>
+        <result property="nextWarnDate" column="next_warn_date"/>
+        <result property="warnFlag" column="warn_flag"/>
+        <result property="grade" column="grade"/>
+        <result property="designer" column="designer"/>
+        <result property="installer" column="installer"/>
+        <result property="material" column="material"/>
+        <result property="dia" column="dia"/>
+        <result property="scheduleNo" column="schedule_no"/>
+        <result property="length" column="length"/>
+        <result property="starting" column="starting"/>
+        <result property="ending" column="ending"/>
+        <result property="desPressure" column="des_pressure"/>
+        <result property="desTemp" column="des_temp"/>
+        <result property="optPressure" column="opt_pressure"/>
+        <result property="optTemp" column="opt_temp"/>
+        <result property="medium" column="medium"/>
+        <result property="checkConclusion" column="check_conclusion"/>
+        <result property="checkUnit" column="check_unit"/>
+        <result property="safeClass" column="safe_class"/>
+        <result property="reportNo" column="report_no"/>
+        <result property="approveTime" column="approve_time"/>
+        <result property="changeTime" column="change_time"/>
+        <result property="plantMaint" column="plant_maint"/>
+        <result property="engineer" column="engineer"/>
+        <result property="weldNumber" column="weld_number"/>
+        <result property="layingMethod" column="laying_method"/>
+        <result property="adiabatic" column="adiabatic"/>
+        <result property="antiCorrosion" column="anti_corrosion"/>
+        <result property="adiabaticThickness" column="adiabatic_thickness"/>
+        <result property="isDanger" column="is_danger"/>
+        <result property="installDate" column="install_date"/>
+        <result property="yearWarnDate" column="year_warn_date"/>
+        <result property="yearNextWarnDate" column="year_next_warn_date"/>
+        <result property="yearReportNo" column="year_report_no"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="hiFlag" column="hiFlag"/>
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="pidNo" column="pid_no"/>
+        <result property="isoPicUrl" column="iso_pic_url"/>
+        <result property="reliefValve" column="relief_valve"/>
+        <result property="fitNumber" column="fit_number"/>
+        <result property="heatPreservation" column="heat_preservation"/>
+        <result property="thickness" column="thickness"/>
+    </resultMap>
+
+    <sql id="selectTSpecdevYlgdVo">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.devname,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.grade,
+               d.designer,
+               d.installer,
+               d.material,
+               d.dia,
+               d.schedule_no,
+               d.length,
+               d.starting,
+               d.ending,
+               d.des_pressure,
+               d.des_temp,
+               d.opt_pressure,
+               d.opt_temp,
+               d.medium,
+               d.check_conclusion,
+               d.check_unit,
+               d.safe_class,
+               d.report_no,
+               d.approve_time,
+               d.change_time,
+               d.plant_maint,
+               d.engineer,
+               d.weld_number,
+               d.laying_method,
+               d.adiabatic,
+               d.anti_corrosion,
+               d.adiabatic_thickness,
+               d.is_danger,
+               d.install_date,
+               d.year_warn_date,
+               d.year_next_warn_date,
+               d.year_report_no,
+               s.dept_name,
+               d.is_repeat,
+               d.pid_no,
+               d.iso_pic_url,
+               d.relief_valve,
+               d.fit_number,
+               d.thickness,
+               d.heat_preservation
+        from t_specdev_ylgd d
+                 left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevYlgdList" parameterType="TSpecdevYlgd" resultMap="TSpecdevYlgdResult">
+        <include refid="selectTSpecdevYlgdVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''">and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''">and unit = #{unit}</if>
+            <if test="devname != null  and devname != ''">and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''">and devno = #{devno}</if>
+            <if test="submitdate != null ">and submitdate = #{submitdate}</if>
+            <if test="material != null  and material != ''">and material = #{material}</if>
+            <if test="dia != null  and dia != ''">and dia = #{dia}</if>
+            <if test="scheduleNo != null  and scheduleNo != ''">and schedule_no = #{scheduleNo}</if>
+            <if test="length != null  and length != ''">and length = #{length}</if>
+            <if test="starting != null  and starting != ''">and `starting` = #{starting}</if>
+            <if test="ending != null  and ending != ''">and ending = #{ending}</if>
+            <if test="desPressure != null  and desPressure != ''">and des_pressure = #{desPressure}</if>
+            <if test="desTemp != null  and desTemp != ''">and des_temp = #{desTemp}</if>
+            <if test="optPressure != null  and optPressure != ''">and opt_pressure = #{optPressure}</if>
+            <if test="optTemp != null  and optTemp != ''">and opt_temp = #{optTemp}</if>
+            <if test="medium != null  and medium != ''">and `medium` = #{medium}</if>
+            <if test="checkConclusion != null ">and check_conclusion = #{checkConclusion}</if>
+            <if test="checkUnit != null  and checkUnit != ''">and check_unit = #{checkUnit}</if>
+            <if test="safeClass != null  and safeClass != ''">and safe_class = #{safeClass}</if>
+            <if test="reportNo != null  and reportNo != ''">and report_no = #{reportNo}</if>
+            <if test="approveTime != null ">and approve_time = #{approveTime}</if>
+            <if test="changeTime != null ">and change_time = #{changeTime}</if>
+            <if test="plantMaint != null  and plantMaint != ''">and plant_maint = #{plantMaint}</if>
+            <if test="engineer != null  and engineer != ''">and engineer = #{engineer}</if>
+            <if test="weldNumber != null  and weldNumber != ''">and weld_number = #{weldNumber}</if>
+            <if test="layingMethod != null  and layingMethod != ''">and laying_method = #{layingMethod}</if>
+            <if test="adiabatic != null  and adiabatic != ''">and adiabatic = #{adiabatic}</if>
+            <if test="antiCorrosion != null  and antiCorrosion != ''">and anti_corrosion = #{antiCorrosion}</if>
+            <if test="adiabaticThickness != null  and adiabaticThickness != ''">and adiabatic_thickness =
+                #{adiabaticThickness}
+            </if>
+            <if test="isDanger != null ">and is_danger = #{isDanger}</if>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="pidNo != null ">and pid_no = #{pidNo}</if>
+            <if test="reliefValve != null ">and relief_valve = #{reliefValve}</if>
+            <if test="fitNumber != null ">and fit_number = #{fitNumber}</if>
+            <if test="heatPreservation != null ">and heat_preservation = #{heatPreservation}</if>
+            <if test="thickness != null ">and thickness = #{thickness}</if>
+            <if test="fuzzy != null ">and (plant_code like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or warn_cycle like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or warn_flag like concat('%',#{fuzzy},'%')
+                or grade like concat('%',#{fuzzy},'%')
+                or designer like concat('%',#{fuzzy},'%')
+                or installer like concat('%',#{fuzzy},'%')
+                or material like concat('%',#{fuzzy},'%')
+                or dia like concat('%',#{fuzzy},'%')
+                or schedule_no like concat('%',#{fuzzy},'%')
+                or length like concat('%',#{fuzzy},'%')
+                or `starting` like concat('%',#{fuzzy},'%')
+                or ending like concat('%',#{fuzzy},'%')
+                or des_pressure like concat('%',#{fuzzy},'%')
+                or des_temp like concat('%',#{fuzzy},'%')
+                or opt_pressure like concat('%',#{fuzzy},'%')
+                or opt_temp like concat('%',#{fuzzy},'%')
+                or `medium` like concat('%',#{fuzzy},'%')
+                or check_conclusion like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or safe_class like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or engineer like concat('%',#{fuzzy},'%')
+                or weld_number like concat('%',#{fuzzy},'%')
+                or laying_method like concat('%',#{fuzzy},'%')
+                or adiabatic like concat('%',#{fuzzy},'%')
+                or anti_corrosion like concat('%',#{fuzzy},'%')
+                or adiabatic_thickness like concat('%',#{fuzzy},'%')
+                or is_danger like concat('%',#{fuzzy},'%')
+                or install_date like concat('%',#{fuzzy},'%')
+                or year_warn_date like concat('%',#{fuzzy},'%')
+                or year_next_warn_date like concat('%',#{fuzzy},'%')
+                or year_report_no like concat('%',#{fuzzy},'%')
+                or pid_no like concat('%',#{fuzzy},'%')
+                or relief_valve like concat('%',#{fuzzy},'%')
+                or fit_number like concat('%',#{fuzzy},'%')
+                or thickness like concat('%',#{fuzzy},'%')
+                or heat_preservation like concat('%',#{fuzzy},'%') )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code, d.unit, d.id
+    </select>
+
+
+    <select id="selectTSpecdevYlgdListByYear" parameterType="TSpecdevYlgd" resultMap="TSpecdevYlgdResult">
+        <include refid="selectTSpecdevYlgdVo"/>
+        <where>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="checkYear != null ">and date_format(NEXT_WARN_DATE,'%Y') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSpecdevYlgdById" parameterType="Long" resultMap="TSpecdevYlgdResult">
+        <include refid="selectTSpecdevYlgdVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectTSpecdevYlgdByIds" parameterType="Long" resultMap="TSpecdevYlgdResult">
+        <include refid="selectTSpecdevYlgdVo"/>
+        where id in
+        <foreach collection="ids" open="(" close=")" item="id" index="index">
+            <if test="index != 0">
+                <choose>
+                    <when test="index % 1000 == 999">) OR id in (</when>
+                    <otherwise>,</otherwise>
+                </choose>
+            </if>
+            #{id}
+        </foreach>
+    </select>
+
+
+    <insert id="insertTSpecdevYlgd" parameterType="TSpecdevYlgd">
+
+        insert into t_specdev_ylgd
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">`id`,</if>
+            <if test="plantCode != null">`plant_code`,</if>
+            <if test="unit != null">`unit`,</if>
+            <if test="devname != null">`devname`,</if>
+            <if test="devno != null">`devno`,</if>
+            <if test="submitdate != null">`submitdate`,</if>
+            <if test="status != null">`status`,</if>
+            <if test="delFlag != null">`del_flag`,</if>
+            <if test="createrCode != null">`creater_code`,</if>
+            <if test="createdate != null">`createdate`,</if>
+            <if test="updaterCode != null">`updater_code`,</if>
+            <if test="updatedate != null">`updatedate`,</if>
+            <if test="deptId != null">`dept_id`,</if>
+            <if test="remarks != null">`remarks`,</if>
+            <if test="approveStatus != null">`approve_status`,</if>
+            <if test="regno != null">`regno`,</if>
+            <if test="useno != null">`useno`,</if>
+            <if test="warnDate != null">`warn_date`,</if>
+            <if test="warnCycle != null">`warn_cycle`,</if>
+            <if test="nextWarnDate != null">`next_warn_date`,</if>
+            <if test="warnFlag != null">`warn_flag`,</if>
+            <if test="grade != null">`grade`,</if>
+            <if test="designer != null">`designer`,</if>
+            <if test="installer != null">`installer`,</if>
+            <if test="material != null">`material`,</if>
+            <if test="dia != null">`dia`,</if>
+            <if test="scheduleNo != null">`schedule_no`,</if>
+            <if test="length != null">`length`,</if>
+            <if test="starting != null">`starting`,</if>
+            <if test="ending != null">`ending`,</if>
+            <if test="desPressure != null">`des_pressure`,</if>
+            <if test="desTemp != null">`des_temp`,</if>
+            <if test="optPressure != null">`opt_pressure`,</if>
+            <if test="optTemp != null">`opt_temp`,</if>
+            <if test="medium != null">`medium`,</if>
+            <if test="checkConclusion != null">`check_conclusion`,</if>
+            <if test="checkUnit != null">`check_unit`,</if>
+            <if test="safeClass != null">`safe_class`,</if>
+            <if test="reportNo != null">`report_no`,</if>
+            <if test="approveTime != null">`approve_time`,</if>
+            <if test="changeTime != null">`change_time`,</if>
+            <if test="plantMaint != null">`plant_maint`,</if>
+            <if test="engineer != null">`engineer`,</if>
+            <if test="weldNumber != null">`weld_number`,</if>
+            <if test="layingMethod != null">`laying_method`,</if>
+            <if test="adiabatic != null">`adiabatic`,</if>
+            <if test="antiCorrosion != null">`anti_corrosion`,</if>
+            <if test="adiabaticThickness != null">`adiabatic_thickness`,</if>
+            <if test="isDanger != null">`is_danger`,</if>
+            <if test="installDate != null">`install_date`,</if>
+            <if test="yearWarnDate != null">`year_warn_date`,</if>
+            <if test="yearNextWarnDate != null">`year_next_warn_date`,</if>
+            <if test="yearReportNo != null">`year_report_no`,</if>
+            <if test="pidNo != null">`pid_no`,</if>
+            <if test="isoPicUrl != null">`iso_pic_url`,</if>
+            <if test="reliefValve != null">`relief_valve`,</if>
+            <if test="fitNumber != null">`fit_number`,</if>
+            <if test="heatPreservation != null">`heat_preservation`,</if>
+            <if test="thickness != null">`thickness`,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="grade != null">#{grade},</if>
+            <if test="designer != null">#{designer},</if>
+            <if test="installer != null">#{installer},</if>
+            <if test="material != null">#{material},</if>
+            <if test="dia != null">#{dia},</if>
+            <if test="scheduleNo != null">#{scheduleNo},</if>
+            <if test="length != null">#{length},</if>
+            <if test="starting != null">#{starting},</if>
+            <if test="ending != null">#{ending},</if>
+            <if test="desPressure != null">#{desPressure},</if>
+            <if test="desTemp != null">#{desTemp},</if>
+            <if test="optPressure != null">#{optPressure},</if>
+            <if test="optTemp != null">#{optTemp},</if>
+            <if test="medium != null">#{medium},</if>
+            <if test="checkConclusion != null">#{checkConclusion},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="safeClass != null">#{safeClass},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="engineer != null">#{engineer},</if>
+            <if test="weldNumber != null">#{weldNumber},</if>
+            <if test="layingMethod != null">#{layingMethod},</if>
+            <if test="adiabatic != null">#{adiabatic},</if>
+            <if test="antiCorrosion != null">#{antiCorrosion},</if>
+            <if test="adiabaticThickness != null">#{adiabaticThickness},</if>
+            <if test="isDanger != null">#{isDanger},</if>
+            <if test="installDate != null">#{installDate},</if>
+            <if test="yearWarnDate != null">#{yearWarnDate},</if>
+            <if test="yearNextWarnDate != null">#{yearNextWarnDate},</if>
+            <if test="yearReportNo != null">#{yearReportNo},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="isoPicUrl != null">#{isoPicUrl},</if>
+            <if test="reliefValve != null">#{reliefValve},</if>
+            <if test="fitNumber != null">#{fitNumber},</if>
+            <if test="heatPreservation != null">#{heatPreservation},</if>
+            <if test="thickness != null">#{thickness},</if>
+        </trim>
+    </insert>
+
+    <update id="updateTSpecdevYlgd" parameterType="TSpecdevYlgd">
+        update t_specdev_ylgd
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null">`plant_code` = #{plantCode},</if>
+            <if test="unit != null">`unit` = #{unit},</if>
+            <if test="devname != null">`devname` = #{devname},</if>
+            <if test="devno != null">`devno` = #{devno},</if>
+            <if test="submitdate != null">`submitdate` = #{submitdate},</if>
+            <if test="status != null">`status` = #{status},</if>
+            <if test="delFlag != null">`del_flag` = #{delFlag},</if>
+            <if test="createrCode != null">`creater_code` = #{createrCode},</if>
+            <if test="createdate != null">`createdate` = #{createdate},</if>
+            <if test="updaterCode != null">`updater_code` = #{updaterCode},</if>
+            <if test="updatedate != null">`updatedate` = #{updatedate},</if>
+            <if test="deptId != null">`dept_id` = #{deptId},</if>
+            <if test="remarks != null">`remarks` = #{remarks},</if>
+            <if test="approveStatus != null">`approve_status` = #{approveStatus},</if>
+            <if test="regno != null">`regno` = #{regno},</if>
+            <if test="useno != null">`useno` = #{useno},</if>
+            <if test="warnDate != null">`warn_date` = #{warnDate},</if>
+            <if test="warnCycle != null">`warn_cycle` = #{warnCycle},</if>
+            <if test="nextWarnDate != null">`next_warn_date` = #{nextWarnDate},</if>
+            <if test="warnFlag != null">`warn_flag` = #{warnFlag},</if>
+            <if test="grade != null">`grade` = #{grade},</if>
+            <if test="designer != null">`designer` = #{designer},</if>
+            <if test="installer != null">`installer` = #{installer},</if>
+            <if test="material != null">`material` = #{material},</if>
+            <if test="dia != null">`dia` = #{dia},</if>
+            <if test="scheduleNo != null">`schedule_no` = #{scheduleNo},</if>
+            <if test="length != null">`length` = #{length},</if>
+            <if test="starting != null">`starting` = #{starting},</if>
+            <if test="ending != null">`ending` = #{ending},</if>
+            <if test="desPressure != null">`des_pressure` = #{desPressure},</if>
+            <if test="desTemp != null">`des_temp` = #{desTemp},</if>
+            <if test="optPressure != null">`opt_pressure` = #{optPressure},</if>
+            <if test="optTemp != null">`opt_temp` = #{optTemp},</if>
+            <if test="medium != null">`medium` = #{medium},</if>
+            <if test="checkConclusion != null">`check_conclusion` = #{checkConclusion},</if>
+            <if test="checkUnit != null">`check_unit` = #{checkUnit},</if>
+            <if test="safeClass != null">`safe_class` = #{safeClass},</if>
+            <if test="reportNo != null">`report_no` = #{reportNo},</if>
+            <if test="approveTime != null">`approve_time` = #{approveTime},</if>
+            <if test="changeTime != null">`change_time` = #{changeTime},</if>
+            <if test="plantMaint != null">`plant_maint` = #{plantMaint},</if>
+            <if test="engineer != null">`engineer` = #{engineer},</if>
+            <if test="weldNumber != null">`weld_number` = #{weldNumber},</if>
+            <if test="layingMethod != null">`laying_method` = #{layingMethod},</if>
+            <if test="adiabatic != null">`adiabatic` = #{adiabatic},</if>
+            <if test="antiCorrosion != null">`anti_corrosion` = #{antiCorrosion},</if>
+            <if test="adiabaticThickness != null">`adiabatic_thickness` = #{adiabaticThickness},</if>
+            <if test="isDanger != null">`is_danger` = #{isDanger},</if>
+            <if test="installDate != null">`install_date` = #{installDate},</if>
+            <if test="yearWarnDate != null">`year_warn_date` = #{yearWarnDate},</if>
+            <if test="yearNextWarnDate != null">`year_next_warn_date` = #{yearNextWarnDate},</if>
+            <if test="yearReportNo != null">`year_report_no` = #{yearReportNo},</if>
+            <if test="isRepeat != null">`is_repeat` = #{isRepeat},</if>
+            <if test="pidNo != null">`pid_no`= #{pidNo},</if>
+            <if test="isoPicUrl != null and isoPicUrl!=''">`iso_pic_url`= #{isoPicUrl},</if>
+            <if test="reliefValve != null">`relief_valve`= #{reliefValve},</if>
+            <if test="fitNumber != null">`fit_number`= #{fitNumber},</if>
+            <if test="heatPreservation != null">`heat_preservation`= #{heatPreservation},</if>
+            <if test="thickness != null">`thickness`= #{thickness},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevYlgdById" parameterType="Long">
+        update t_specdev_ylgd
+        set del_flag = 2
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevYlgdByIds" parameterType="String">
+        update t_specdev_ylgd set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" close=")" separator="," index="index">
+            #{id}
+        </foreach>
+    </update>
+
+    <update id="duplicateTSpecdevYlgd" >
+        UPDATE  t_specdev_ylgd set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_ylgd a where (a.DEVNO,a.plant_code) in(select DEVNO,plant_code from t_specdev_ylgd group by DEVNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_ylgd group by DEVNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+
+</mapper>

+ 437 - 0
ruoyi-admin/src/main/resources/mapper/sems/TSpecdevYlrqMapper.xml

@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevYlrqMapper">
+
+    <resultMap type="TSpecdevYlrq" id="TSpecdevYlrqResult">
+        <result property="id" column="id"/>
+        <result property="plantCode" column="plant_code"/>
+        <result property="unit" column="unit"/>
+        <result property="devname" column="devname"/>
+        <result property="devno" column="devno"/>
+        <result property="submitdate" column="submitdate"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createrCode" column="creater_code"/>
+        <result property="createdate" column="createdate"/>
+        <result property="updaterCode" column="updater_code"/>
+        <result property="updatedate" column="updatedate"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="remarks" column="remarks"/>
+        <result property="approveStatus" column="approve_status"/>
+        <result property="regno" column="regno"/>
+        <result property="useno" column="useno"/>
+        <result property="warnDate" column="warn_date"/>
+        <result property="warnCycle" column="warn_cycle"/>
+        <result property="nextWarnDate" column="next_warn_date"/>
+        <result property="warnFlag" column="warn_flag"/>
+        <result property="plantMaint" column="plant_maint"/>
+        <result property="engineer" column="engineer"/>
+        <result property="vesselType" column="vessel_type"/>
+        <result property="isKey" column="is_key"/>
+        <result property="createUnit" column="create_unit"/>
+        <result property="nation" column="nation"/>
+        <result property="outSize" column="out_size"/>
+        <result property="material" column="material"/>
+        <result property="medium" column="medium"/>
+        <result property="desPressure" column="des_pressure"/>
+        <result property="desTemp" column="des_temp"/>
+        <result property="optPressure" column="opt_pressure"/>
+        <result property="optTemp" column="opt_temp"/>
+        <result property="checkUnit" column="check_unit"/>
+        <result property="reportNo" column="report_no"/>
+        <result property="isDanger" column="is_danger"/>
+        <result property="isOverlife" column="is_overlife"/>
+        <result property="safeClass" column="safe_class"/>
+        <result property="approveTime" column="approve_time"/>
+        <result property="changeTime" column="change_time"/>
+        <result property="desYear" column="des_year"/>
+        <result property="yearWarnDate" column="year_warn_date"/>
+        <result property="checkConclusion" column="check_conclusion"/>
+        <result property="yearNextWarnDate" column="year_next_warn_date"/>
+        <result property="yearReportNo" column="year_report_no"/>
+        <result property="hiFlag" column="hiFlag"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="isRepeat" column="is_repeat"/>
+        <result property="factoryNo" column="factory_no"/>
+        <result property="devEnname" column="dev_enname"/>
+        <result property="pidNo" column="pid_no"/>
+        <result property="reliefValve" column="relief_valve"/>
+        <result property="factoryInfo" column="factory_info"/>
+        <result property="designUnit" column="design_unit"/>
+        <result property="useCode" column="use_code"/>
+        <result property="pressureGrade" column="pressure_grade"/>
+        <result property="designDead" column="design_dead"/>
+    </resultMap>
+
+    <sql id="selectTSpecdevYlrqVo">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.devname,
+               d.factory_no,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.plant_maint,
+               d.engineer,
+               d.vessel_type,
+               d.is_key,
+               d.create_unit,
+               d.nation,
+               d.out_size,
+               d.material,
+               d.medium,
+               d.des_pressure,
+               d.des_temp,
+               d.opt_pressure,
+               d.opt_temp,
+               d.check_unit,
+               d.report_no,
+               d.is_danger,
+               d.is_overlife,
+               d.safe_class,
+               d.approve_time,
+               d.change_time,
+               d.des_year,
+               d.year_warn_date,
+               d.check_conclusion,
+               d.year_next_warn_date,
+               d.year_report_no,
+               s.dept_name,
+               d.is_repeat,
+               d.dev_enname,
+               d.pid_no,
+               d.relief_valve,
+               d.factory_info,
+               d.design_unit,
+               d.use_code,
+               d.pressure_grade,
+               d.design_dead
+        from t_specdev_ylrq d
+                 left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTSpecdevYlrqByIds" parameterType="Long" resultMap="TSpecdevYlrqResult">
+        <include refid="selectTSpecdevYlrqVo"/>
+        where id in
+        <foreach collection="ids" open="(" close=")" item="id" index="index">
+            <if test="index != 0">
+                <choose>
+                    <when test="index % 1000 == 999">) OR id in (</when>
+                    <otherwise>,</otherwise>
+                </choose>
+            </if>
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="selectTSpecdevYlrqList" parameterType="TSpecdevYlrq" resultMap="TSpecdevYlrqResult">
+        <include refid="selectTSpecdevYlrqVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''">and plant_code = #{plantCode}</if>
+            <if test="unit != null  and unit != ''">and unit = #{unit}</if>
+            <if test="devname != null  and devname != ''">and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''">and devno = #{devno}</if>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
+            <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
+            <if test="fuzzy != null ">and (plant_code like concat('%',#{fuzzy},'%')
+                or unit like concat('%',#{fuzzy},'%')
+                or devname like concat('%',#{fuzzy},'%')
+                or factory_no like concat('%',#{fuzzy},'%')
+                or devno like concat('%',#{fuzzy},'%')
+                or createdate like concat('%',#{fuzzy},'%')
+                or remarks like concat('%',#{fuzzy},'%')
+                or regno like concat('%',#{fuzzy},'%')
+                or useno like concat('%',#{fuzzy},'%')
+                or warn_date like concat('%',#{fuzzy},'%')
+                or warn_cycle like concat('%',#{fuzzy},'%')
+                or next_warn_date like concat('%',#{fuzzy},'%')
+                or plant_maint like concat('%',#{fuzzy},'%')
+                or engineer like concat('%',#{fuzzy},'%')
+                or vessel_type like concat('%',#{fuzzy},'%')
+                or create_unit like concat('%',#{fuzzy},'%')
+                or nation like concat('%',#{fuzzy},'%')
+                or out_size like concat('%',#{fuzzy},'%')
+                or material like concat('%',#{fuzzy},'%')
+                or `medium` like concat('%',#{fuzzy},'%')
+                or des_pressure like concat('%',#{fuzzy},'%')
+                or des_temp like concat('%',#{fuzzy},'%')
+                or opt_pressure like concat('%',#{fuzzy},'%')
+                or opt_temp like concat('%',#{fuzzy},'%')
+                or check_unit like concat('%',#{fuzzy},'%')
+                or report_no like concat('%',#{fuzzy},'%')
+                or is_danger like concat('%',#{fuzzy},'%')
+                or is_overlife like concat('%',#{fuzzy},'%')
+                or safe_class like concat('%',#{fuzzy},'%')
+                or des_year like concat('%',#{fuzzy},'%')
+                or year_warn_date like concat('%',#{fuzzy},'%')
+                or check_conclusion like concat('%',#{fuzzy},'%')
+                or year_next_warn_date like concat('%',#{fuzzy},'%')
+                or year_report_no like concat('%',#{fuzzy},'%')
+                or dev_enname like concat('%',#{fuzzy},'%')
+                or pid_no like concat('%',#{fuzzy},'%')
+                or relief_valve like concat('%',#{fuzzy},'%')
+                or factory_info like concat('%',#{fuzzy},'%')
+                or design_unit like concat('%',#{fuzzy},'%')
+                or use_code like concat('%',#{fuzzy},'%')
+                or pressure_grade like concat('%',#{fuzzy},'%')
+                or design_dead like concat('%',#{fuzzy},'%') )</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+        order by d.is_repeat desc, d.plant_code, d.unit, d.id
+    </select>
+
+    <select id="selectTSpecdevYlrqListByYear" parameterType="TSpecdevYlrq" resultMap="TSpecdevYlrqResult">
+        <include refid="selectTSpecdevYlrqVo"/>
+        <where>
+            <if test="status != null ">and d.status = #{status}</if>
+            <if test="checkYear != null ">and date_format(NEXT_WARN_DATE,'%Y') = #{checkYear}</if>
+            <if test="plantIds != null  and plantIds != ''">
+                and
+                d.plant_code in
+                <foreach collection="plantIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <!--<if test="unitIds != null  and unitIds != ''">
+                and
+                (
+                d.unit in
+                <foreach collection="unitIds.split(',')" item="item" index="index"
+                         open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </if>-->
+            and d.del_flag = 0
+        </where>
+    </select>
+
+
+    <select id="selectTSpecdevYlrqById" parameterType="Long" resultMap="TSpecdevYlrqResult">
+        <include refid="selectTSpecdevYlrqVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecdevYlrq" parameterType="TSpecdevYlrq">
+
+        insert into t_specdev_ylrq
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="unit != null">unit,</if>
+            <if test="devname != null">devname,</if>
+            <if test="factoryNo != null">factory_no,</if>
+            <if test="devno != null">devno,</if>
+            <if test="submitdate != null">submitdate,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="approveStatus != null">approve_status,</if>
+            <if test="regno != null">regno,</if>
+            <if test="useno != null">useno,</if>
+            <if test="warnDate != null">warn_date,</if>
+            <if test="warnCycle != null">warn_cycle,</if>
+            <if test="nextWarnDate != null">next_warn_date,</if>
+            <if test="warnFlag != null">warn_flag,</if>
+            <if test="plantMaint != null">plant_maint,</if>
+            <if test="engineer != null">engineer,</if>
+            <if test="vesselType != null">vessel_type,</if>
+            <if test="isKey != null">is_key,</if>
+            <if test="createUnit != null">create_unit,</if>
+            <if test="nation != null">nation,</if>
+            <if test="outSize != null">out_size,</if>
+            <if test="material != null">material,</if>
+            <if test="medium != null">medium,</if>
+            <if test="desPressure != null">des_pressure,</if>
+            <if test="desTemp != null">des_temp,</if>
+            <if test="optPressure != null">opt_pressure,</if>
+            <if test="optTemp != null">opt_temp,</if>
+            <if test="checkUnit != null">check_unit,</if>
+            <if test="reportNo != null">report_no,</if>
+            <if test="isDanger != null">is_danger,</if>
+            <if test="isOverlife != null">is_overlife,</if>
+            <if test="safeClass != null">safe_class,</if>
+            <if test="approveTime != null">approve_time,</if>
+            <if test="changeTime != null">change_time,</if>
+            <if test="desYear != null">des_year,</if>
+            <if test="yearWarnDate != null">year_warn_date,</if>
+            <if test="checkConclusion != null">check_conclusion,</if>
+            <if test="yearNextWarnDate != null">year_next_warn_date,</if>
+            <if test="yearReportNo != null">year_report_no,</if>
+            <if test="devEnname != null">dev_enname,</if>
+            <if test="pidNo != null">pid_no,</if>
+            <if test="reliefValve != null">relief_valve,</if>
+            <if test="factoryInfo != null">factory_info,</if>
+            <if test="designUnit != null">design_unit,</if>
+            <if test="useCode != null">use_code,</if>
+            <if test="pressureGrade != null">pressure_grade,</if>
+            <if test="designDead != null">design_dead,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="devname != null">#{devname},</if>
+            <if test="factoryNo != null">#{factoryNo},</if>
+            <if test="devno != null">#{devno},</if>
+            <if test="submitdate != null">#{submitdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="regno != null">#{regno},</if>
+            <if test="useno != null">#{useno},</if>
+            <if test="warnDate != null">#{warnDate},</if>
+            <if test="warnCycle != null">#{warnCycle},</if>
+            <if test="nextWarnDate != null">#{nextWarnDate},</if>
+            <if test="warnFlag != null">#{warnFlag},</if>
+            <if test="plantMaint != null">#{plantMaint},</if>
+            <if test="engineer != null">#{engineer},</if>
+            <if test="vesselType != null">#{vesselType},</if>
+            <if test="isKey != null">#{isKey},</if>
+            <if test="createUnit != null">#{createUnit},</if>
+            <if test="nation != null">#{nation},</if>
+            <if test="outSize != null">#{outSize},</if>
+            <if test="material != null">#{material},</if>
+            <if test="medium != null">#{medium},</if>
+            <if test="desPressure != null">#{desPressure},</if>
+            <if test="desTemp != null">#{desTemp},</if>
+            <if test="optPressure != null">#{optPressure},</if>
+            <if test="optTemp != null">#{optTemp},</if>
+            <if test="checkUnit != null">#{checkUnit},</if>
+            <if test="reportNo != null">#{reportNo},</if>
+            <if test="isDanger != null">#{isDanger},</if>
+            <if test="isOverlife != null">#{isOverlife},</if>
+            <if test="safeClass != null">#{safeClass},</if>
+            <if test="approveTime != null">#{approveTime},</if>
+            <if test="changeTime != null">#{changeTime},</if>
+            <if test="desYear != null">#{desYear},</if>
+            <if test="yearWarnDate != null">#{yearWarnDate},</if>
+            <if test="checkConclusion != null">#{checkConclusion},</if>
+            <if test="yearNextWarnDate != null">#{yearNextWarnDate},</if>
+            <if test="yearReportNo != null">#{yearReportNo},</if>
+            <if test="devEnname != null">#{devEnname},</if>
+            <if test="pidNo != null">#{pidNo},</if>
+            <if test="reliefValve != null">#{reliefValve},</if>
+            <if test="factoryInfo != null">#{factoryInfo},</if>
+            <if test="designUnit != null">#{designUnit},</if>
+            <if test="useCode != null">#{useCode},</if>
+            <if test="pressureGrade != null">#{pressureGrade},</if>
+            <if test="designDead != null">#{designDead},</if>
+        </trim>
+    </insert>
+
+    <update id="updateTSpecdevYlrq" parameterType="TSpecdevYlrq">
+        update t_specdev_ylrq
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="devname != null">devname = #{devname},</if>
+            <if test="factoryNo != null">factory_no = #{factoryNo},</if>
+            <if test="devno != null">devno = #{devno},</if>
+            <if test="submitdate != null">submitdate = #{submitdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="regno != null">regno = #{regno},</if>
+            <if test="useno != null">useno = #{useno},</if>
+            <if test="warnDate != null">warn_date = #{warnDate},</if>
+            <if test="warnCycle != null">warn_cycle = #{warnCycle},</if>
+            <if test="nextWarnDate != null">next_warn_date = #{nextWarnDate},</if>
+            <if test="warnFlag != null">warn_flag = #{warnFlag},</if>
+            <if test="plantMaint != null">plant_maint = #{plantMaint},</if>
+            <if test="engineer != null">engineer = #{engineer},</if>
+            <if test="vesselType != null">vessel_type = #{vesselType},</if>
+            <if test="isKey != null">is_key = #{isKey},</if>
+            <if test="createUnit != null">create_unit = #{createUnit},</if>
+            <if test="nation != null">nation = #{nation},</if>
+            <if test="outSize != null">out_size = #{outSize},</if>
+            <if test="material != null">material = #{material},</if>
+            <if test="medium != null">medium = #{medium},</if>
+            <if test="desPressure != null">des_pressure = #{desPressure},</if>
+            <if test="desTemp != null">des_temp = #{desTemp},</if>
+            <if test="optPressure != null">opt_pressure = #{optPressure},</if>
+            <if test="optTemp != null">opt_temp = #{optTemp},</if>
+            <if test="checkUnit != null">check_unit = #{checkUnit},</if>
+            <if test="reportNo != null">report_no = #{reportNo},</if>
+            <if test="isDanger != null">is_danger = #{isDanger},</if>
+            <if test="isOverlife != null">is_overlife = #{isOverlife},</if>
+            <if test="safeClass != null">safe_class = #{safeClass},</if>
+            <if test="approveTime != null">approve_time = #{approveTime},</if>
+            <if test="changeTime != null">change_time = #{changeTime},</if>
+            <if test="desYear != null">des_year = #{desYear},</if>
+            <if test="yearWarnDate != null">year_warn_date = #{yearWarnDate},</if>
+            <if test="checkConclusion != null">check_conclusion = #{checkConclusion},</if>
+            <if test="yearNextWarnDate != null">year_next_warn_date = #{yearNextWarnDate},</if>
+            <if test="yearReportNo != null">year_report_no = #{yearReportNo},</if>
+            <if test="isRepeat != null">is_repeat = #{isRepeat},</if>
+            <if test="devEnname != null">dev_enname = #{devEnname},</if>
+            <if test="pidNo != null">pid_no = #{pidNo},</if>
+            <if test="reliefValve != null">relief_valve = #{reliefValve},</if>
+            <if test="factoryInfo != null">factory_info = #{factoryInfo},</if>
+            <if test="designUnit != null">design_unit = #{designUnit},</if>
+            <if test="useCode != null">use_code = #{useCode},</if>
+            <if test="pressureGrade != null">pressure_grade = #{pressureGrade},</if>
+            <if test="designDead != null">design_dead = #{designDead},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevYlrqById" parameterType="Long">
+        update t_specdev_ylrq
+        set del_flag = 2
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecdevYlrqByIds" parameterType="String">
+        update t_specdev_ylrq set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")" index="index">
+            #{id}
+        </foreach>
+    </update>
+
+    <update id="duplicateTSpecdevYlrq" >
+        UPDATE  T_SPECDEV_YLRQ set DEL_FLAG = 2 where id  in  (select b.id from   ( select id from t_specdev_YLRQ a where (a.DEVNO,a.plant_code) in(select DEVNO,plant_code from t_specdev_YLRQ group by DEVNO,plant_code having count(*) > 1)
+                                                                                                                  and id not in (select min(id) from t_specdev_YLRQ group by DEVNO,plant_code having count(*)>1)   and a.DEL_FLAG = 0
+                                                                                                                  and a.APPROVE_STATUS = 0 ) AS  b )
+    </update>
+
+
+</mapper>

+ 3 - 3
ruoyi-common/pom.xml

@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>3.8.7</version>
+        <groupId>com.newcpms</groupId>
+    <artifactId>cpms</artifactId>
+    <version>3.8.7</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 7 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java

@@ -199,4 +199,11 @@ public class BaseController
     {
         return getLoginUser().getUsername();
     }
+    /**
+     * 获取用户昵称
+     */
+    public String getNickname()
+    {
+        return getLoginUser().getUser().getNickName();
+    }
 }

+ 69 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -9,6 +9,8 @@ import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.Date;
+import java.util.regex.Pattern;
+
 import org.apache.commons.lang3.time.DateFormatUtils;
 
 /**
@@ -188,4 +190,71 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
+
+    /**
+     * 常规自动日期格式识别
+     *
+     * @param str 时间字符串
+     * @return Date
+     * @author dc
+     */
+    public static String getDateFormat(String str) throws ParseException {
+//        if (str.matches("[0-9]+")){
+//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式
+//            Date date = dateFormat.parse("1900-01-01 00:00:00"); // 指定日期
+//            Date newDate = addDate(date, Long.parseLong(str)); // 指定日期加上天
+//            str =  new SimpleDateFormat("yyyy-MM-dd").format(newDate);
+//        }
+        boolean year = false;
+        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+        if (pattern.matcher(str.substring(0, 4)).matches()) {
+            year = true;
+        }
+        StringBuilder sb = new StringBuilder();
+        int index = 0;
+        if (!year) {
+            if (str.contains("月") || str.contains("-") || str.contains("/") || str.contains(".")) {
+                if (Character.isDigit(str.charAt(0))) {
+                    index = 1;
+                }
+            } else {
+                index = 3;
+            }
+        }
+        for (int i = 0; i < str.length(); i++) {
+            char chr = str.charAt(i);
+            if (Character.isDigit(chr)) {
+                if (index == 0) {
+                    sb.append("y");
+                }
+                if (index == 1) {
+                    sb.append("M");
+                }
+                if (index == 2) {
+                    sb.append("d");
+                }
+                if (index == 3) {
+                    sb.append("H");
+                }
+                if (index == 4) {
+                    sb.append("m");
+                }
+                if (index == 5) {
+                    sb.append("s");
+                }
+                if (index == 6) {
+                    sb.append("S");
+                }
+            } else {
+                if (i > 0) {
+                    char lastChar = str.charAt(i - 1);
+                    if (Character.isDigit(lastChar)) {
+                        index++;
+                    }
+                }
+                sb.append(chr);
+            }
+        }
+        return sb.toString();
+    }
 }

+ 2 - 2
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java

@@ -1342,7 +1342,7 @@ public class ExcelUtil<T>
     /**
      * 编码文件名
      */
-    public String encodingFilename(String filename)
+    public static String encodingFilename(String filename)
     {
         filename = UUID.randomUUID() + "_" + filename + ".xlsx";
         return filename;
@@ -1353,7 +1353,7 @@ public class ExcelUtil<T>
      * 
      * @param filename 文件名称
      */
-    public String getAbsoluteFile(String filename)
+    public static String getAbsoluteFile(String filename)
     {
         String downloadPath = RuoYiConfig.getDownloadPath() + filename;
         File desc = new File(downloadPath);

+ 4 - 4
ruoyi-framework/pom.xml

@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>3.8.7</version>
+        <groupId>com.newcpms</groupId>
+    <artifactId>cpms</artifactId>
+    <version>3.8.7</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -55,7 +55,7 @@
 
         <!-- 系统模块-->
         <dependency>
-            <groupId>com.ruoyi</groupId>
+            <groupId>com.newcpms</groupId>
             <artifactId>ruoyi-system</artifactId>
         </dependency>
 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác