From ed8d46af267e455c9ff1096585d16c3cd0f4bb0c Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期五, 16 五月 2025 18:55:48 +0800
Subject: [PATCH] 采集数据分表存储

---
 jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java                                        |   37 
 jcdm-ui/src/api/main/da/tightenCollection/tightenCollection.js                                              |   44 
 jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/IDaLeakageDetectionService.java           |   62 
 jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/impl/DaTightenCollectionServiceImpl.java |  122 +
 jcdm-ui/src/views/main/cfkb/fuelNozzle/index.vue                                                            |  161 +
 jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/impl/DaCameraResultsServiceImpl.java         |   94 +
 jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/domain/DaCameraResults.java                          |  166 +
 jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/IDaOilFillingService.java                       |   62 
 jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/IDaTightenCollectionService.java         |   66 
 jcdm-main/src/main/resources/mapper/da/leakageDetection/DaLeakageDetectionMapper.xml                        |  142 +
 jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/controller/DaLeakageDetectionController.java      |  105 +
 jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/controller/DaTightenCollectionController.java    |  467 +++++
 jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/controller/DaOilFillingController.java                  |  105 +
 jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/domain/DaLeakageDetection.java                    |  334 +++
 jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/mapper/DaOilFillingMapper.java                          |   62 
 jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/mapper/DaCameraResultsMapper.java                    |   62 
 jcdm-ui/src/api/main/da/oilFilling/oilFilling.js                                                            |   44 
 jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/mapper/DaLeakageDetectionMapper.java              |   62 
 jcdm-main/src/main/resources/mapper/da/cameraResults/DaCameraResultsMapper.xml                              |   91 +
 jcdm-main/src/main/resources/mapper/da/oilFilling/DaOilFillingMapper.xml                                    |  147 +
 jcdm-ui/src/api/main/da/cameraResults/cameraResults.js                                                      |   44 
 jcdm-main/src/main/resources/mapper/da/tightenCollection/DaTightenCollectionMapper.xml                      |   85 
 jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/mapper/DaTightenCollectionMapper.java            |   62 
 jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java                                           |   23 
 jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/impl/DaOilFillingServiceImpl.java               |   94 +
 jcdm-ui/src/views/main/da/tightenCollection/index.vue                                                       |  364 ++++
 jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/controller/DaCameraResultsController.java            |  105 +
 jcdm-ui/src/views/main/da/cameraResults/index.vue                                                           |  316 +++
 jcdm-ui/src/views/main/da/oilFilling/index.vue                                                              |  392 ++++
 jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java                                  |    1 
 jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/impl/DaLeakageDetectionServiceImpl.java   |   94 +
 jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/domain/DaTightenCollection.java                  |  166 +
 jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/IDaCameraResultsService.java                 |   62 
 jcdm-ui/src/api/main/da/leakageDetection/leakageDetection.js                                                |   44 
 jcdm-ui/src/views/main/da/leakageDetection/index.vue                                                        |  404 ++++
 jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/domain/DaOilFilling.java                                |  362 ++++
 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java                                  |  325 +++
 37 files changed, 5,354 insertions(+), 24 deletions(-)

diff --git a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
index b004244..d2e52e5 100644
--- a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
+++ b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
@@ -117,6 +117,7 @@
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 .antMatchers("/bs/technologyRouteChild/ttest").permitAll()
                 .antMatchers("/bs/orderScheduling/engine-report").permitAll()
+                .antMatchers("/da/tightenCollection/**").permitAll()
                 .antMatchers("/websocket/**").anonymous()
                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
                 .anyRequest().authenticated()
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/controller/DaCameraResultsController.java b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/controller/DaCameraResultsController.java
new file mode 100644
index 0000000..d929dc5
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/controller/DaCameraResultsController.java
@@ -0,0 +1,105 @@
+package com.jcdm.main.da.cameraResults.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
+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.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 鐩告満缁撴灉Controller
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@RestController
+@RequestMapping("/da/cameraResults")
+public class DaCameraResultsController extends BaseController
+{
+    @Autowired
+    private IDaCameraResultsService daCameraResultsService;
+
+    /**
+     * 鏌ヨ鐩告満缁撴灉鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaCameraResults daCameraResults)
+    {
+        startPage();
+        List<DaCameraResults> list = daCameraResultsService.selectDaCameraResultsList(daCameraResults);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鐩告満缁撴灉鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:export')")
+    @Log(title = "鐩告満缁撴灉", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaCameraResults daCameraResults)
+    {
+        List<DaCameraResults> list = daCameraResultsService.selectDaCameraResultsList(daCameraResults);
+        ExcelUtil<DaCameraResults> util = new ExcelUtil<DaCameraResults>(DaCameraResults.class);
+        util.exportExcel(response, list, "鐩告満缁撴灉鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鐩告満缁撴灉璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daCameraResultsService.selectDaCameraResultsById(id));
+    }
+
+    /**
+     * 鏂板鐩告満缁撴灉
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:add')")
+    @Log(title = "鐩告満缁撴灉", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaCameraResults daCameraResults)
+    {
+        return toAjax(daCameraResultsService.insertDaCameraResults(daCameraResults));
+    }
+
+    /**
+     * 淇敼鐩告満缁撴灉
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:edit')")
+    @Log(title = "鐩告満缁撴灉", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaCameraResults daCameraResults)
+    {
+        return toAjax(daCameraResultsService.updateDaCameraResults(daCameraResults));
+    }
+
+    /**
+     * 鍒犻櫎鐩告満缁撴灉
+     */
+    @PreAuthorize("@ss.hasPermi('da:cameraResults:remove')")
+    @Log(title = "鐩告満缁撴灉", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daCameraResultsService.deleteDaCameraResultsByIds(ids));
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/domain/DaCameraResults.java b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/domain/DaCameraResults.java
new file mode 100644
index 0000000..90ddd6f
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/domain/DaCameraResults.java
@@ -0,0 +1,166 @@
+package com.jcdm.main.da.cameraResults.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.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+/**
+ * 鐩告満缁撴灉瀵硅薄 da_camera_results
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public class DaCameraResults
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 鎬绘垚搴忓垪鍙� */
+    @Excel(name = "鎬绘垚搴忓垪鍙�")
+    private String sfcCode;
+
+    /** 宸ヤ綅缂栫爜 */
+    @Excel(name = "宸ヤ綅缂栫爜")
+    private String locationCode;
+
+    /** 鎻忚堪 */
+    @Excel(name = "鎻忚堪")
+    private String describe;
+
+    /** 鐩告満1缁撴灉 */
+    @Excel(name = "鐩告満1缁撴灉")
+    private String ResultData0;
+
+    /** 鐩告満2缁撴灉 */
+    @Excel(name = "鐩告満2缁撴灉")
+    private String ResultData1;
+
+    /** 鐩告満3缁撴灉 */
+    @Excel(name = "鐩告満3缁撴灉")
+    private String ResultData2;
+
+    /** 鐩告満4缁撴灉 */
+    @Excel(name = "鐩告満4缁撴灉")
+    private String ResultData3;
+
+    /** 鐩告満5缁撴灉 */
+    @Excel(name = "鐩告満5缁撴灉")
+    private String ResultData4;
+
+    /** 閲囬泦鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSfcCode(String sfcCode) 
+    {
+        this.sfcCode = sfcCode;
+    }
+
+    public String getSfcCode() 
+    {
+        return sfcCode;
+    }
+    public void setLocationCode(String locationCode) 
+    {
+        this.locationCode = locationCode;
+    }
+
+    public String getLocationCode() 
+    {
+        return locationCode;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setResultData0(String ResultData0) 
+    {
+        this.ResultData0 = ResultData0;
+    }
+
+    public String getResultData0() 
+    {
+        return ResultData0;
+    }
+    public void setResultData1(String ResultData1) 
+    {
+        this.ResultData1 = ResultData1;
+    }
+
+    public String getResultData1() 
+    {
+        return ResultData1;
+    }
+    public void setResultData2(String ResultData2) 
+    {
+        this.ResultData2 = ResultData2;
+    }
+
+    public String getResultData2() 
+    {
+        return ResultData2;
+    }
+    public void setResultData3(String ResultData3) 
+    {
+        this.ResultData3 = ResultData3;
+    }
+
+    public String getResultData3() 
+    {
+        return ResultData3;
+    }
+    public void setResultData4(String ResultData4) 
+    {
+        this.ResultData4 = ResultData4;
+    }
+
+    public String getResultData4() 
+    {
+        return ResultData4;
+    }
+    public void setCollectTime(Date collectTime) 
+    {
+        this.collectTime = collectTime;
+    }
+
+    public Date getCollectTime() 
+    {
+        return collectTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sfcCode", getSfcCode())
+            .append("locationCode", getLocationCode())
+            .append("describe", getDescribe())
+            .append("ResultData0", getResultData0())
+            .append("ResultData1", getResultData1())
+            .append("ResultData2", getResultData2())
+            .append("ResultData3", getResultData3())
+            .append("ResultData4", getResultData4())
+            .append("collectTime", getCollectTime())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/mapper/DaCameraResultsMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/mapper/DaCameraResultsMapper.java
new file mode 100644
index 0000000..e49c627
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/mapper/DaCameraResultsMapper.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.cameraResults.mapper;
+
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+
+import java.util.List;
+
+/**
+ * 鐩告満缁撴灉Mapper鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface DaCameraResultsMapper 
+{
+    /**
+     * 鏌ヨ鐩告満缁撴灉
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 鐩告満缁撴灉
+     */
+    public DaCameraResults selectDaCameraResultsById(Long id);
+
+    /**
+     * 鏌ヨ鐩告満缁撴灉鍒楄〃
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 鐩告満缁撴灉闆嗗悎
+     */
+    public List<DaCameraResults> selectDaCameraResultsList(DaCameraResults daCameraResults);
+
+    /**
+     * 鏂板鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    public int insertDaCameraResults(DaCameraResults daCameraResults);
+
+    /**
+     * 淇敼鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    public int updateDaCameraResults(DaCameraResults daCameraResults);
+
+    /**
+     * 鍒犻櫎鐩告満缁撴灉
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaCameraResultsById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎鐩告満缁撴灉
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaCameraResultsByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/IDaCameraResultsService.java b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/IDaCameraResultsService.java
new file mode 100644
index 0000000..06f603f
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/IDaCameraResultsService.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.cameraResults.service;
+
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+
+import java.util.List;
+
+/**
+ * 鐩告満缁撴灉Service鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface IDaCameraResultsService 
+{
+    /**
+     * 鏌ヨ鐩告満缁撴灉
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 鐩告満缁撴灉
+     */
+    public DaCameraResults selectDaCameraResultsById(Long id);
+
+    /**
+     * 鏌ヨ鐩告満缁撴灉鍒楄〃
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 鐩告満缁撴灉闆嗗悎
+     */
+    public List<DaCameraResults> selectDaCameraResultsList(DaCameraResults daCameraResults);
+
+    /**
+     * 鏂板鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    public int insertDaCameraResults(DaCameraResults daCameraResults);
+
+    /**
+     * 淇敼鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    public int updateDaCameraResults(DaCameraResults daCameraResults);
+
+    /**
+     * 鎵归噺鍒犻櫎鐩告満缁撴灉
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鐩告満缁撴灉涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaCameraResultsByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎鐩告満缁撴灉淇℃伅
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaCameraResultsById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/impl/DaCameraResultsServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/impl/DaCameraResultsServiceImpl.java
new file mode 100644
index 0000000..ec2e78a
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/cameraResults/service/impl/DaCameraResultsServiceImpl.java
@@ -0,0 +1,94 @@
+package com.jcdm.main.da.cameraResults.service.impl;
+
+import java.util.List;
+
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+import com.jcdm.main.da.cameraResults.mapper.DaCameraResultsMapper;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鐩告満缁撴灉Service涓氬姟灞傚鐞�
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@Service
+public class DaCameraResultsServiceImpl implements IDaCameraResultsService
+{
+    @Autowired
+    private DaCameraResultsMapper daCameraResultsMapper;
+
+    /**
+     * 鏌ヨ鐩告満缁撴灉
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 鐩告満缁撴灉
+     */
+    @Override
+    public DaCameraResults selectDaCameraResultsById(Long id)
+    {
+        return daCameraResultsMapper.selectDaCameraResultsById(id);
+    }
+
+    /**
+     * 鏌ヨ鐩告満缁撴灉鍒楄〃
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 鐩告満缁撴灉
+     */
+    @Override
+    public List<DaCameraResults> selectDaCameraResultsList(DaCameraResults daCameraResults)
+    {
+        return daCameraResultsMapper.selectDaCameraResultsList(daCameraResults);
+    }
+
+    /**
+     * 鏂板鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaCameraResults(DaCameraResults daCameraResults)
+    {
+        return daCameraResultsMapper.insertDaCameraResults(daCameraResults);
+    }
+
+    /**
+     * 淇敼鐩告満缁撴灉
+     * 
+     * @param daCameraResults 鐩告満缁撴灉
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaCameraResults(DaCameraResults daCameraResults)
+    {
+        return daCameraResultsMapper.updateDaCameraResults(daCameraResults);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鐩告満缁撴灉
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鐩告満缁撴灉涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaCameraResultsByIds(Long[] ids)
+    {
+        return daCameraResultsMapper.deleteDaCameraResultsByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎鐩告満缁撴灉淇℃伅
+     * 
+     * @param id 鐩告満缁撴灉涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaCameraResultsById(Long id)
+    {
+        return daCameraResultsMapper.deleteDaCameraResultsById(id);
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/controller/DaLeakageDetectionController.java b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/controller/DaLeakageDetectionController.java
new file mode 100644
index 0000000..088223d
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/controller/DaLeakageDetectionController.java
@@ -0,0 +1,105 @@
+package com.jcdm.main.da.leakageDetection.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+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.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 澶栨紡妫�娴婥ontroller
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@RestController
+@RequestMapping("/da/leakageDetection")
+public class DaLeakageDetectionController extends BaseController
+{
+    @Autowired
+    private IDaLeakageDetectionService daLeakageDetectionService;
+
+    /**
+     * 鏌ヨ澶栨紡妫�娴嬪垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaLeakageDetection daLeakageDetection)
+    {
+        startPage();
+        List<DaLeakageDetection> list = daLeakageDetectionService.selectDaLeakageDetectionList(daLeakageDetection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭澶栨紡妫�娴嬪垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:export')")
+    @Log(title = "澶栨紡妫�娴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaLeakageDetection daLeakageDetection)
+    {
+        List<DaLeakageDetection> list = daLeakageDetectionService.selectDaLeakageDetectionList(daLeakageDetection);
+        ExcelUtil<DaLeakageDetection> util = new ExcelUtil<DaLeakageDetection>(DaLeakageDetection.class);
+        util.exportExcel(response, list, "澶栨紡妫�娴嬫暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇澶栨紡妫�娴嬭缁嗕俊鎭�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daLeakageDetectionService.selectDaLeakageDetectionById(id));
+    }
+
+    /**
+     * 鏂板澶栨紡妫�娴�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:add')")
+    @Log(title = "澶栨紡妫�娴�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaLeakageDetection daLeakageDetection)
+    {
+        return toAjax(daLeakageDetectionService.insertDaLeakageDetection(daLeakageDetection));
+    }
+
+    /**
+     * 淇敼澶栨紡妫�娴�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:edit')")
+    @Log(title = "澶栨紡妫�娴�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaLeakageDetection daLeakageDetection)
+    {
+        return toAjax(daLeakageDetectionService.updateDaLeakageDetection(daLeakageDetection));
+    }
+
+    /**
+     * 鍒犻櫎澶栨紡妫�娴�
+     */
+    @PreAuthorize("@ss.hasPermi('da:leakageDetection:remove')")
+    @Log(title = "澶栨紡妫�娴�", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daLeakageDetectionService.deleteDaLeakageDetectionByIds(ids));
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/domain/DaLeakageDetection.java b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/domain/DaLeakageDetection.java
new file mode 100644
index 0000000..fd86687
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/domain/DaLeakageDetection.java
@@ -0,0 +1,334 @@
+package com.jcdm.main.da.leakageDetection.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.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+/**
+ * 澶栨紡妫�娴嬪璞� da_leakage_detection
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public class DaLeakageDetection
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 鎬绘垚搴忓垪鍙� */
+    @Excel(name = "鎬绘垚搴忓垪鍙�")
+    private String sfcCode;
+
+    /** 宸ヤ綅缂栫爜 */
+    @Excel(name = "宸ヤ綅缂栫爜")
+    private String locationCode;
+
+    /** 鍙傛暟闆嗙紪鐮� */
+    @Excel(name = "鍙傛暟闆嗙紪鐮�")
+    private String paramSetCode;
+
+    /** 鍙傛暟闆嗗悕绉� */
+    @Excel(name = "鍙傛暟闆嗗悕绉�")
+    private String paramSetName;
+
+    /** 鎻忚堪 */
+    @Excel(name = "鎻忚堪")
+    private String describe;
+
+    /** 鍘嬪姏鍊� */
+    @Excel(name = "鍘嬪姏鍊�")
+    private String pressureValue;
+
+    /** 娉勯湶鐜� */
+    @Excel(name = "娉勯湶鐜�")
+    private String leakageRate;
+
+    /** 缁撴灉 */
+    @Excel(name = "缁撴灉")
+    private String result;
+
+    /** 姘撮亾浜掓紡娉勬紡閲� */
+    @Excel(name = "姘撮亾浜掓紡娉勬紡閲�")
+    private String Leakrate1;
+
+    /** 姘撮亾澶栨紡娉勬紡閲� */
+    @Excel(name = "姘撮亾澶栨紡娉勬紡閲�")
+    private String Leakrate2;
+
+    /** 榻胯疆绠卞婕忔硠婕忛噺 */
+    @Excel(name = "榻胯疆绠卞婕忔硠婕忛噺")
+    private String Leakrate3;
+
+    /** 娌归亾澶栨紡娉勬紡閲� */
+    @Excel(name = "娌归亾澶栨紡娉勬紡閲�")
+    private String Leakrate4;
+
+    /** 姘撮亾浜掓紡鍘嬪姏 */
+    @Excel(name = "姘撮亾浜掓紡鍘嬪姏")
+    private String Press1;
+
+    /** 姘撮亾澶栨紡鍘嬪姏 */
+    @Excel(name = "姘撮亾澶栨紡鍘嬪姏")
+    private String Press2;
+
+    /** 榻胯疆绠卞婕忓帇鍔� */
+    @Excel(name = "榻胯疆绠卞婕忓帇鍔�")
+    private String Press3;
+
+    /** 娌归亾澶栨紡鍘嬪姏 */
+    @Excel(name = "娌归亾澶栨紡鍘嬪姏")
+    private String Press4;
+
+    /** 姘撮亾浜掓紡缁撴灉鐘舵��:1OK 2NG */
+    @Excel(name = "姘撮亾浜掓紡缁撴灉鐘舵��:1OK 2NG")
+    private String Status1;
+
+    /** 姘撮亾澶栨紡缁撴灉鐘舵��:1OK 2NG */
+    @Excel(name = "姘撮亾澶栨紡缁撴灉鐘舵��:1OK 2NG")
+    private String Status2;
+
+    /** 榻胯疆绠卞婕忕粨鏋滅姸鎬�:1OK 2NG */
+    @Excel(name = "榻胯疆绠卞婕忕粨鏋滅姸鎬�:1OK 2NG")
+    private String Status3;
+
+    /** 娌归亾澶栨紡缁撴灉鐘舵��:1OK 2NG */
+    @Excel(name = "娌归亾澶栨紡缁撴灉鐘舵��:1OK 2NG")
+    private String Status4;
+
+    /** 閲囬泦鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSfcCode(String sfcCode) 
+    {
+        this.sfcCode = sfcCode;
+    }
+
+    public String getSfcCode() 
+    {
+        return sfcCode;
+    }
+    public void setLocationCode(String locationCode) 
+    {
+        this.locationCode = locationCode;
+    }
+
+    public String getLocationCode() 
+    {
+        return locationCode;
+    }
+    public void setParamSetCode(String paramSetCode) 
+    {
+        this.paramSetCode = paramSetCode;
+    }
+
+    public String getParamSetCode() 
+    {
+        return paramSetCode;
+    }
+    public void setParamSetName(String paramSetName) 
+    {
+        this.paramSetName = paramSetName;
+    }
+
+    public String getParamSetName() 
+    {
+        return paramSetName;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setPressureValue(String pressureValue) 
+    {
+        this.pressureValue = pressureValue;
+    }
+
+    public String getPressureValue() 
+    {
+        return pressureValue;
+    }
+    public void setLeakageRate(String leakageRate) 
+    {
+        this.leakageRate = leakageRate;
+    }
+
+    public String getLeakageRate() 
+    {
+        return leakageRate;
+    }
+    public void setResult(String result) 
+    {
+        this.result = result;
+    }
+
+    public String getResult() 
+    {
+        return result;
+    }
+    public void setLeakrate1(String Leakrate1) 
+    {
+        this.Leakrate1 = Leakrate1;
+    }
+
+    public String getLeakrate1() 
+    {
+        return Leakrate1;
+    }
+    public void setLeakrate2(String Leakrate2) 
+    {
+        this.Leakrate2 = Leakrate2;
+    }
+
+    public String getLeakrate2() 
+    {
+        return Leakrate2;
+    }
+    public void setLeakrate3(String Leakrate3) 
+    {
+        this.Leakrate3 = Leakrate3;
+    }
+
+    public String getLeakrate3() 
+    {
+        return Leakrate3;
+    }
+    public void setLeakrate4(String Leakrate4) 
+    {
+        this.Leakrate4 = Leakrate4;
+    }
+
+    public String getLeakrate4() 
+    {
+        return Leakrate4;
+    }
+    public void setPress1(String Press1) 
+    {
+        this.Press1 = Press1;
+    }
+
+    public String getPress1() 
+    {
+        return Press1;
+    }
+    public void setPress2(String Press2) 
+    {
+        this.Press2 = Press2;
+    }
+
+    public String getPress2() 
+    {
+        return Press2;
+    }
+    public void setPress3(String Press3) 
+    {
+        this.Press3 = Press3;
+    }
+
+    public String getPress3() 
+    {
+        return Press3;
+    }
+    public void setPress4(String Press4) 
+    {
+        this.Press4 = Press4;
+    }
+
+    public String getPress4() 
+    {
+        return Press4;
+    }
+    public void setStatus1(String Status1) 
+    {
+        this.Status1 = Status1;
+    }
+
+    public String getStatus1() 
+    {
+        return Status1;
+    }
+    public void setStatus2(String Status2) 
+    {
+        this.Status2 = Status2;
+    }
+
+    public String getStatus2() 
+    {
+        return Status2;
+    }
+    public void setStatus3(String Status3) 
+    {
+        this.Status3 = Status3;
+    }
+
+    public String getStatus3() 
+    {
+        return Status3;
+    }
+    public void setStatus4(String Status4) 
+    {
+        this.Status4 = Status4;
+    }
+
+    public String getStatus4() 
+    {
+        return Status4;
+    }
+    public void setCollectTime(Date collectTime) 
+    {
+        this.collectTime = collectTime;
+    }
+
+    public Date getCollectTime() 
+    {
+        return collectTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sfcCode", getSfcCode())
+            .append("locationCode", getLocationCode())
+            .append("paramSetCode", getParamSetCode())
+            .append("paramSetName", getParamSetName())
+            .append("describe", getDescribe())
+            .append("pressureValue", getPressureValue())
+            .append("leakageRate", getLeakageRate())
+            .append("result", getResult())
+            .append("Leakrate1", getLeakrate1())
+            .append("Leakrate2", getLeakrate2())
+            .append("Leakrate3", getLeakrate3())
+            .append("Leakrate4", getLeakrate4())
+            .append("Press1", getPress1())
+            .append("Press2", getPress2())
+            .append("Press3", getPress3())
+            .append("Press4", getPress4())
+            .append("Status1", getStatus1())
+            .append("Status2", getStatus2())
+            .append("Status3", getStatus3())
+            .append("Status4", getStatus4())
+            .append("collectTime", getCollectTime())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/mapper/DaLeakageDetectionMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/mapper/DaLeakageDetectionMapper.java
new file mode 100644
index 0000000..ee5c4c8
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/mapper/DaLeakageDetectionMapper.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.leakageDetection.mapper;
+
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+
+import java.util.List;
+
+/**
+ * 澶栨紡妫�娴婱apper鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface DaLeakageDetectionMapper 
+{
+    /**
+     * 鏌ヨ澶栨紡妫�娴�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 澶栨紡妫�娴�
+     */
+    public DaLeakageDetection selectDaLeakageDetectionById(Long id);
+
+    /**
+     * 鏌ヨ澶栨紡妫�娴嬪垪琛�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 澶栨紡妫�娴嬮泦鍚�
+     */
+    public List<DaLeakageDetection> selectDaLeakageDetectionList(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 鏂板澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    public int insertDaLeakageDetection(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 淇敼澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    public int updateDaLeakageDetection(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 鍒犻櫎澶栨紡妫�娴�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 缁撴灉
+     */
+    public int deleteDaLeakageDetectionById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎澶栨紡妫�娴�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaLeakageDetectionByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/IDaLeakageDetectionService.java b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/IDaLeakageDetectionService.java
new file mode 100644
index 0000000..0fb90ca
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/IDaLeakageDetectionService.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.leakageDetection.service;
+
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+
+import java.util.List;
+
+/**
+ * 澶栨紡妫�娴婼ervice鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface IDaLeakageDetectionService 
+{
+    /**
+     * 鏌ヨ澶栨紡妫�娴�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 澶栨紡妫�娴�
+     */
+    public DaLeakageDetection selectDaLeakageDetectionById(Long id);
+
+    /**
+     * 鏌ヨ澶栨紡妫�娴嬪垪琛�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 澶栨紡妫�娴嬮泦鍚�
+     */
+    public List<DaLeakageDetection> selectDaLeakageDetectionList(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 鏂板澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    public int insertDaLeakageDetection(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 淇敼澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    public int updateDaLeakageDetection(DaLeakageDetection daLeakageDetection);
+
+    /**
+     * 鎵归噺鍒犻櫎澶栨紡妫�娴�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑澶栨紡妫�娴嬩富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteDaLeakageDetectionByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎澶栨紡妫�娴嬩俊鎭�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 缁撴灉
+     */
+    public int deleteDaLeakageDetectionById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/impl/DaLeakageDetectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/impl/DaLeakageDetectionServiceImpl.java
new file mode 100644
index 0000000..a8d9568
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/leakageDetection/service/impl/DaLeakageDetectionServiceImpl.java
@@ -0,0 +1,94 @@
+package com.jcdm.main.da.leakageDetection.service.impl;
+
+import java.util.List;
+
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+import com.jcdm.main.da.leakageDetection.mapper.DaLeakageDetectionMapper;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 澶栨紡妫�娴婼ervice涓氬姟灞傚鐞�
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@Service
+public class DaLeakageDetectionServiceImpl implements IDaLeakageDetectionService
+{
+    @Autowired
+    private DaLeakageDetectionMapper daLeakageDetectionMapper;
+
+    /**
+     * 鏌ヨ澶栨紡妫�娴�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 澶栨紡妫�娴�
+     */
+    @Override
+    public DaLeakageDetection selectDaLeakageDetectionById(Long id)
+    {
+        return daLeakageDetectionMapper.selectDaLeakageDetectionById(id);
+    }
+
+    /**
+     * 鏌ヨ澶栨紡妫�娴嬪垪琛�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 澶栨紡妫�娴�
+     */
+    @Override
+    public List<DaLeakageDetection> selectDaLeakageDetectionList(DaLeakageDetection daLeakageDetection)
+    {
+        return daLeakageDetectionMapper.selectDaLeakageDetectionList(daLeakageDetection);
+    }
+
+    /**
+     * 鏂板澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaLeakageDetection(DaLeakageDetection daLeakageDetection)
+    {
+        return daLeakageDetectionMapper.insertDaLeakageDetection(daLeakageDetection);
+    }
+
+    /**
+     * 淇敼澶栨紡妫�娴�
+     * 
+     * @param daLeakageDetection 澶栨紡妫�娴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaLeakageDetection(DaLeakageDetection daLeakageDetection)
+    {
+        return daLeakageDetectionMapper.updateDaLeakageDetection(daLeakageDetection);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎澶栨紡妫�娴�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑澶栨紡妫�娴嬩富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaLeakageDetectionByIds(Long[] ids)
+    {
+        return daLeakageDetectionMapper.deleteDaLeakageDetectionByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎澶栨紡妫�娴嬩俊鎭�
+     * 
+     * @param id 澶栨紡妫�娴嬩富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaLeakageDetectionById(Long id)
+    {
+        return daLeakageDetectionMapper.deleteDaLeakageDetectionById(id);
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/controller/DaOilFillingController.java b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/controller/DaOilFillingController.java
new file mode 100644
index 0000000..72445c7
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/controller/DaOilFillingController.java
@@ -0,0 +1,105 @@
+package com.jcdm.main.da.oilFilling.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
+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.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 鏈烘补鍔犳敞Controller
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@RestController
+@RequestMapping("/da/oilFilling")
+public class DaOilFillingController extends BaseController
+{
+    @Autowired
+    private IDaOilFillingService daOilFillingService;
+
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaOilFilling daOilFilling)
+    {
+        startPage();
+        List<DaOilFilling> list = daOilFillingService.selectDaOilFillingList(daOilFilling);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鏈烘补鍔犳敞鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:export')")
+    @Log(title = "鏈烘补鍔犳敞", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaOilFilling daOilFilling)
+    {
+        List<DaOilFilling> list = daOilFillingService.selectDaOilFillingList(daOilFilling);
+        ExcelUtil<DaOilFilling> util = new ExcelUtil<DaOilFilling>(DaOilFilling.class);
+        util.exportExcel(response, list, "鏈烘补鍔犳敞鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鏈烘补鍔犳敞璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daOilFillingService.selectDaOilFillingById(id));
+    }
+
+    /**
+     * 鏂板鏈烘补鍔犳敞
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:add')")
+    @Log(title = "鏈烘补鍔犳敞", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaOilFilling daOilFilling)
+    {
+        return toAjax(daOilFillingService.insertDaOilFilling(daOilFilling));
+    }
+
+    /**
+     * 淇敼鏈烘补鍔犳敞
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:edit')")
+    @Log(title = "鏈烘补鍔犳敞", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaOilFilling daOilFilling)
+    {
+        return toAjax(daOilFillingService.updateDaOilFilling(daOilFilling));
+    }
+
+    /**
+     * 鍒犻櫎鏈烘补鍔犳敞
+     */
+    @PreAuthorize("@ss.hasPermi('da:oilFilling:remove')")
+    @Log(title = "鏈烘补鍔犳敞", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daOilFillingService.deleteDaOilFillingByIds(ids));
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/domain/DaOilFilling.java b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/domain/DaOilFilling.java
new file mode 100644
index 0000000..8337754
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/domain/DaOilFilling.java
@@ -0,0 +1,362 @@
+package com.jcdm.main.da.oilFilling.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.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+/**
+ * 鏈烘补鍔犳敞瀵硅薄 da_oil_filling
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public class DaOilFilling
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 鎬绘垚搴忓垪鍙� */
+    @Excel(name = "鎬绘垚搴忓垪鍙�")
+    private String sfcCode;
+
+    /** 宸ヤ綅缂栫爜 */
+    @Excel(name = "宸ヤ綅缂栫爜")
+    private String locationCode;
+
+    /** 鎻忚堪 */
+    @Excel(name = "鎻忚堪")
+    private String describe;
+
+    /** 璁惧畾鍔犳补閲� */
+    @Excel(name = "璁惧畾鍔犳补閲�")
+    private String setFuelVolume;
+
+    /** 瀹為檯鍔犳补閲� */
+    @Excel(name = "瀹為檯鍔犳补閲�")
+    private String actualFuelConsumption;
+
+    /** 鍔犳补鑰楁椂 */
+    @Excel(name = "鍔犳补鑰楁椂")
+    private String refuelingTime;
+
+    /** 鍔犳补鐘舵�� */
+    @Excel(name = "鍔犳补鐘舵��")
+    private String result;
+
+    /** 涓�鍙锋灙瀹為檯鍔犳补閲�(L) */
+    @Excel(name = "涓�鍙锋灙瀹為檯鍔犳补閲�(L)")
+    private String actualOilvolume1;
+
+    /** 浜屽彿鏋疄闄呭姞娌归噺(L) */
+    @Excel(name = "浜屽彿鏋疄闄呭姞娌归噺(L)")
+    private String actualOilvolume2;
+
+    /** 涓夊彿鏋疄闄呭姞娌归噺(L) */
+    @Excel(name = "涓夊彿鏋疄闄呭姞娌归噺(L)")
+    private String actualOilvolume3;
+
+    /** 涓�鍙锋灙鍔犳补绫诲瀷 */
+    @Excel(name = "涓�鍙锋灙鍔犳补绫诲瀷")
+    private String OilModel1;
+
+    /** 浜屽彿鏋姞娌圭被鍨� */
+    @Excel(name = "浜屽彿鏋姞娌圭被鍨�")
+    private String OilModel2;
+
+    /** 涓夊彿鏋姞娌圭被鍨� */
+    @Excel(name = "涓夊彿鏋姞娌圭被鍨�")
+    private String OilModel3;
+
+    /** 涓�鍙锋灙棰勮鍔犳补閲�(L) */
+    @Excel(name = "涓�鍙锋灙棰勮鍔犳补閲�(L)")
+    private String setOilvolume1;
+
+    /** 浜屽彿鏋璁″姞娌归噺(L) */
+    @Excel(name = "浜屽彿鏋璁″姞娌归噺(L)")
+    private String setOilvolume2;
+
+    /** 涓夊彿鏋璁″姞娌归噺(L) */
+    @Excel(name = "涓夊彿鏋璁″姞娌归噺(L)")
+    private String setOilvolume3;
+
+    /** 涓�鍙锋灙鍔犳补鐘舵��1OK锛�2NG */
+    @Excel(name = "涓�鍙锋灙鍔犳补鐘舵��1OK锛�2NG")
+    private String Status1;
+
+    /** 浜屽彿鏋姞娌圭姸鎬�1OK锛�2NG */
+    @Excel(name = "浜屽彿鏋姞娌圭姸鎬�1OK锛�2NG")
+    private String Status2;
+
+    /** 涓夊彿鏋姞娌圭姸鎬�1OK锛�2NG */
+    @Excel(name = "涓夊彿鏋姞娌圭姸鎬�1OK锛�2NG")
+    private String Status3;
+
+    /** 涓�鍙锋灙鍔犳补鏃堕棿锛圫锛� */
+    @Excel(name = "涓�鍙锋灙鍔犳补鏃堕棿", readConverterExp = "S=")
+    private String Time1;
+
+    /** 浜屽彿鏋姞娌规椂闂达紙S锛� */
+    @Excel(name = "浜屽彿鏋姞娌规椂闂�", readConverterExp = "S=")
+    private String Time2;
+
+    /** 涓夊彿鏋姞娌规椂闂达紙S锛� */
+    @Excel(name = "涓夊彿鏋姞娌规椂闂�", readConverterExp = "S=")
+    private String Time3;
+
+    /** 閲囬泦鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSfcCode(String sfcCode) 
+    {
+        this.sfcCode = sfcCode;
+    }
+
+    public String getSfcCode() 
+    {
+        return sfcCode;
+    }
+    public void setLocationCode(String locationCode) 
+    {
+        this.locationCode = locationCode;
+    }
+
+    public String getLocationCode() 
+    {
+        return locationCode;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setSetFuelVolume(String setFuelVolume) 
+    {
+        this.setFuelVolume = setFuelVolume;
+    }
+
+    public String getSetFuelVolume() 
+    {
+        return setFuelVolume;
+    }
+    public void setActualFuelConsumption(String actualFuelConsumption) 
+    {
+        this.actualFuelConsumption = actualFuelConsumption;
+    }
+
+    public String getActualFuelConsumption() 
+    {
+        return actualFuelConsumption;
+    }
+    public void setRefuelingTime(String refuelingTime) 
+    {
+        this.refuelingTime = refuelingTime;
+    }
+
+    public String getRefuelingTime() 
+    {
+        return refuelingTime;
+    }
+    public void setResult(String result) 
+    {
+        this.result = result;
+    }
+
+    public String getResult() 
+    {
+        return result;
+    }
+    public void setActualOilvolume1(String actualOilvolume1) 
+    {
+        this.actualOilvolume1 = actualOilvolume1;
+    }
+
+    public String getActualOilvolume1() 
+    {
+        return actualOilvolume1;
+    }
+    public void setActualOilvolume2(String actualOilvolume2) 
+    {
+        this.actualOilvolume2 = actualOilvolume2;
+    }
+
+    public String getActualOilvolume2() 
+    {
+        return actualOilvolume2;
+    }
+    public void setActualOilvolume3(String actualOilvolume3) 
+    {
+        this.actualOilvolume3 = actualOilvolume3;
+    }
+
+    public String getActualOilvolume3() 
+    {
+        return actualOilvolume3;
+    }
+    public void setOilModel1(String OilModel1) 
+    {
+        this.OilModel1 = OilModel1;
+    }
+
+    public String getOilModel1() 
+    {
+        return OilModel1;
+    }
+    public void setOilModel2(String OilModel2) 
+    {
+        this.OilModel2 = OilModel2;
+    }
+
+    public String getOilModel2() 
+    {
+        return OilModel2;
+    }
+    public void setOilModel3(String OilModel3) 
+    {
+        this.OilModel3 = OilModel3;
+    }
+
+    public String getOilModel3() 
+    {
+        return OilModel3;
+    }
+    public void setSetOilvolume1(String setOilvolume1) 
+    {
+        this.setOilvolume1 = setOilvolume1;
+    }
+
+    public String getSetOilvolume1() 
+    {
+        return setOilvolume1;
+    }
+    public void setSetOilvolume2(String setOilvolume2) 
+    {
+        this.setOilvolume2 = setOilvolume2;
+    }
+
+    public String getSetOilvolume2() 
+    {
+        return setOilvolume2;
+    }
+    public void setSetOilvolume3(String setOilvolume3) 
+    {
+        this.setOilvolume3 = setOilvolume3;
+    }
+
+    public String getSetOilvolume3() 
+    {
+        return setOilvolume3;
+    }
+    public void setStatus1(String Status1) 
+    {
+        this.Status1 = Status1;
+    }
+
+    public String getStatus1() 
+    {
+        return Status1;
+    }
+    public void setStatus2(String Status2) 
+    {
+        this.Status2 = Status2;
+    }
+
+    public String getStatus2() 
+    {
+        return Status2;
+    }
+    public void setStatus3(String Status3) 
+    {
+        this.Status3 = Status3;
+    }
+
+    public String getStatus3() 
+    {
+        return Status3;
+    }
+    public void setTime1(String Time1) 
+    {
+        this.Time1 = Time1;
+    }
+
+    public String getTime1() 
+    {
+        return Time1;
+    }
+    public void setTime2(String Time2) 
+    {
+        this.Time2 = Time2;
+    }
+
+    public String getTime2() 
+    {
+        return Time2;
+    }
+    public void setTime3(String Time3) 
+    {
+        this.Time3 = Time3;
+    }
+
+    public String getTime3() 
+    {
+        return Time3;
+    }
+    public void setCollectTime(Date collectTime) 
+    {
+        this.collectTime = collectTime;
+    }
+
+    public Date getCollectTime() 
+    {
+        return collectTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sfcCode", getSfcCode())
+            .append("locationCode", getLocationCode())
+            .append("describe", getDescribe())
+            .append("setFuelVolume", getSetFuelVolume())
+            .append("actualFuelConsumption", getActualFuelConsumption())
+            .append("refuelingTime", getRefuelingTime())
+            .append("result", getResult())
+            .append("actualOilvolume1", getActualOilvolume1())
+            .append("actualOilvolume2", getActualOilvolume2())
+            .append("actualOilvolume3", getActualOilvolume3())
+            .append("OilModel1", getOilModel1())
+            .append("OilModel2", getOilModel2())
+            .append("OilModel3", getOilModel3())
+            .append("setOilvolume1", getSetOilvolume1())
+            .append("setOilvolume2", getSetOilvolume2())
+            .append("setOilvolume3", getSetOilvolume3())
+            .append("Status1", getStatus1())
+            .append("Status2", getStatus2())
+            .append("Status3", getStatus3())
+            .append("Time1", getTime1())
+            .append("Time2", getTime2())
+            .append("Time3", getTime3())
+            .append("collectTime", getCollectTime())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/mapper/DaOilFillingMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/mapper/DaOilFillingMapper.java
new file mode 100644
index 0000000..bb4f657
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/mapper/DaOilFillingMapper.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.oilFilling.mapper;
+
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+
+import java.util.List;
+
+/**
+ * 鏈烘补鍔犳敞Mapper鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface DaOilFillingMapper 
+{
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 鏈烘补鍔犳敞
+     */
+    public DaOilFilling selectDaOilFillingById(Long id);
+
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞鍒楄〃
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 鏈烘补鍔犳敞闆嗗悎
+     */
+    public List<DaOilFilling> selectDaOilFillingList(DaOilFilling daOilFilling);
+
+    /**
+     * 鏂板鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    public int insertDaOilFilling(DaOilFilling daOilFilling);
+
+    /**
+     * 淇敼鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    public int updateDaOilFilling(DaOilFilling daOilFilling);
+
+    /**
+     * 鍒犻櫎鏈烘补鍔犳敞
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaOilFillingById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎鏈烘补鍔犳敞
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaOilFillingByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/IDaOilFillingService.java b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/IDaOilFillingService.java
new file mode 100644
index 0000000..f93edb1
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/IDaOilFillingService.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.oilFilling.service;
+
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+
+import java.util.List;
+
+/**
+ * 鏈烘补鍔犳敞Service鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+public interface IDaOilFillingService 
+{
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 鏈烘补鍔犳敞
+     */
+    public DaOilFilling selectDaOilFillingById(Long id);
+
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞鍒楄〃
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 鏈烘补鍔犳敞闆嗗悎
+     */
+    public List<DaOilFilling> selectDaOilFillingList(DaOilFilling daOilFilling);
+
+    /**
+     * 鏂板鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    public int insertDaOilFilling(DaOilFilling daOilFilling);
+
+    /**
+     * 淇敼鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    public int updateDaOilFilling(DaOilFilling daOilFilling);
+
+    /**
+     * 鎵归噺鍒犻櫎鏈烘补鍔犳敞
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏈烘补鍔犳敞涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaOilFillingByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎鏈烘补鍔犳敞淇℃伅
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaOilFillingById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/impl/DaOilFillingServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/impl/DaOilFillingServiceImpl.java
new file mode 100644
index 0000000..47d458b
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/oilFilling/service/impl/DaOilFillingServiceImpl.java
@@ -0,0 +1,94 @@
+package com.jcdm.main.da.oilFilling.service.impl;
+
+import java.util.List;
+
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+import com.jcdm.main.da.oilFilling.mapper.DaOilFillingMapper;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈烘补鍔犳敞Service涓氬姟灞傚鐞�
+ * 
+ * @author Yi
+ * @date 2025-05-07
+ */
+@Service
+public class DaOilFillingServiceImpl implements IDaOilFillingService
+{
+    @Autowired
+    private DaOilFillingMapper daOilFillingMapper;
+
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 鏈烘补鍔犳敞
+     */
+    @Override
+    public DaOilFilling selectDaOilFillingById(Long id)
+    {
+        return daOilFillingMapper.selectDaOilFillingById(id);
+    }
+
+    /**
+     * 鏌ヨ鏈烘补鍔犳敞鍒楄〃
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 鏈烘补鍔犳敞
+     */
+    @Override
+    public List<DaOilFilling> selectDaOilFillingList(DaOilFilling daOilFilling)
+    {
+        return daOilFillingMapper.selectDaOilFillingList(daOilFilling);
+    }
+
+    /**
+     * 鏂板鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaOilFilling(DaOilFilling daOilFilling)
+    {
+        return daOilFillingMapper.insertDaOilFilling(daOilFilling);
+    }
+
+    /**
+     * 淇敼鏈烘补鍔犳敞
+     * 
+     * @param daOilFilling 鏈烘补鍔犳敞
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaOilFilling(DaOilFilling daOilFilling)
+    {
+        return daOilFillingMapper.updateDaOilFilling(daOilFilling);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鏈烘补鍔犳敞
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏈烘补鍔犳敞涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaOilFillingByIds(Long[] ids)
+    {
+        return daOilFillingMapper.deleteDaOilFillingByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎鏈烘补鍔犳敞淇℃伅
+     * 
+     * @param id 鏈烘补鍔犳敞涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaOilFillingById(Long id)
+    {
+        return daOilFillingMapper.deleteDaOilFillingById(id);
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/controller/DaTightenCollectionController.java b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/controller/DaTightenCollectionController.java
new file mode 100644
index 0000000..746d369
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/controller/DaTightenCollectionController.java
@@ -0,0 +1,467 @@
+package com.jcdm.main.da.tightenCollection.controller;
+
+import java.util.*;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
+import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
+import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
+import com.jcdm.main.da.tightenCollection.domain.DaTightenCollection;
+import com.jcdm.main.da.tightenCollection.service.IDaTightenCollectionService;
+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.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 鎷х揣閲囬泦Controller
+ * 
+ * @author Yi
+ * @date 2025-05-06
+ */
+@RestController
+    @RequestMapping("/da/tightenCollection")
+public class DaTightenCollectionController extends BaseController
+{
+    @Autowired
+    private IDaTightenCollectionService daTightenCollectionService;
+
+    /**
+     * 鏌ヨ鎷х揣閲囬泦鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaTightenCollection daTightenCollection)
+    {
+        startPage();
+        List<DaTightenCollection> list = daTightenCollectionService.selectDaTightenCollectionList(daTightenCollection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鎷х揣閲囬泦鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:export')")
+    @Log(title = "鎷х揣閲囬泦", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaTightenCollection daTightenCollection)
+    {
+        List<DaTightenCollection> list = daTightenCollectionService.selectDaTightenCollectionList(daTightenCollection);
+        ExcelUtil<DaTightenCollection> util = new ExcelUtil<DaTightenCollection>(DaTightenCollection.class);
+        util.exportExcel(response, list, "鎷х揣閲囬泦鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鎷х揣閲囬泦璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daTightenCollectionService.selectDaTightenCollectionById(id));
+    }
+
+    /**
+     * 鏂板鎷х揣閲囬泦
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:add')")
+    @Log(title = "鎷х揣閲囬泦", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaTightenCollection daTightenCollection)
+    {
+        return toAjax(daTightenCollectionService.insertDaTightenCollection(daTightenCollection));
+    }
+
+    /**
+     * 淇敼鎷х揣閲囬泦
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:edit')")
+    @Log(title = "鎷х揣閲囬泦", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaTightenCollection daTightenCollection)
+    {
+        return toAjax(daTightenCollectionService.updateDaTightenCollection(daTightenCollection));
+    }
+
+    /**
+     * 鍒犻櫎鎷х揣閲囬泦
+     */
+    @PreAuthorize("@ss.hasPermi('da:tightenCollection:remove')")
+    @Log(title = "鎷х揣閲囬泦", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daTightenCollectionService.deleteDaTightenCollectionByIds(ids));
+    }
+
+    @Autowired
+    private IDaCollectionParamConfService collectionParamConfService;
+
+    @PostMapping("/test")
+    public AjaxResult test()
+    {
+        List<DaCollectionParamConf> list = new ArrayList<>();
+        DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
+        daCollectionParamConf.setGatherAddress("CFL4ZZ.OP240");
+        daCollectionParamConf.setRemarks("1");
+        list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
+
+        List readWriteEntityList = new ArrayList<>();
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("32");
+        readWriteEntityList.add("23.4");
+        readWriteEntityList.add("2");
+        readWriteEntityList.add("78");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("11");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("40");
+        readWriteEntityList.add("87.4");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("33");
+        readWriteEntityList.add("11.4");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("0.0");
+        readWriteEntityList.add("0.0");
+        readWriteEntityList.add("0.0");
+
+
+        LinkedHashMap<String, Map<String, Object>> groupMap = new LinkedHashMap<>();
+        for (int i = 0; i < list.size(); i += 3) {
+            String groupKey = String.valueOf(i/3);
+            String paramSetName = list.get(i).getParameterSetName();
+            int secondSlash = paramSetName.indexOf("/", paramSetName.indexOf("/") + 1);
+            paramSetName = secondSlash > 0 ? paramSetName.substring(0, secondSlash) : paramSetName;
+            
+            Map<String, Object> paramMap = new HashMap<>();
+
+            // 鑾峰彇鎵煩鍊�
+            Object torqueObj = readWriteEntityList.get(i);
+            String torqueValue = torqueObj == null ? null : torqueObj.toString();
+            if (torqueValue != null && !"0.0".equals(torqueValue)) {
+                paramMap.put("torque", Double.parseDouble(torqueValue));
+            }
+            
+            // 鑾峰彇瑙掑害鍊�
+            Object angleObj = readWriteEntityList.get(i + 1);
+            String angleValue = angleObj == null ? null : angleObj.toString();
+            if (angleValue != null && !"0.0".equals(angleValue)) {
+                paramMap.put("angle", Double.parseDouble(angleValue));
+            }
+            
+            // 鑾峰彇鐘舵�佸��
+            Object statusObj = readWriteEntityList.get(i + 2);
+            String statusValue = statusObj == null ? null : statusObj.toString();
+            if (statusValue != null && !"0.0".equals(statusValue)) {
+                paramMap.put("angleStatus", statusValue);
+                paramMap.put("paramSetName", paramSetName);
+                groupMap.put(groupKey, paramMap);
+            }
+
+        }
+        
+        List<DaTightenCollection> tightenList = new ArrayList<>();
+        for (Map<String, Object> paramMap : groupMap.values()) {
+            DaTightenCollection tighten = new DaTightenCollection();
+            tighten.setSfcCode("1234");
+            tighten.setLocationCode("OP070");
+            tighten.setParamSetName((String) paramMap.get("paramSetName"));
+            tighten.setTorque(paramMap.get("torque") != null ? paramMap.get("torque").toString() : null);
+            tighten.setAngle(paramMap.get("angle") != null ? paramMap.get("angle").toString() : null);
+            tighten.setAngleStatus((String) paramMap.get("angleStatus"));
+            tighten.setCollectTime(new Date());
+            tightenList.add(tighten);
+        }
+        daTightenCollectionService.saveBeachDaTightenCollection(tightenList);
+        return AjaxResult.success(tightenList);
+    }
+
+    @Autowired
+    private IDaCameraResultsService cameraResultsService;
+
+    @PostMapping("/testCameraResults")
+    public AjaxResult testCameraResults()
+    {
+        List<DaCollectionParamConf> list = new ArrayList<>();
+        DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
+        daCollectionParamConf.setGatherAddress("CFL4ZZ.OP230");
+        daCollectionParamConf.setRemarks("1");
+        list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
+
+        List readWriteEntityList = new ArrayList<>();
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("333");
+        readWriteEntityList.add("4444");
+        readWriteEntityList.add("55555");
+
+        DaCameraResults cameraResults = new DaCameraResults();
+        cameraResults.setSfcCode("1234");
+        cameraResults.setLocationCode("OP070");
+        cameraResults.setCollectTime(new Date());
+
+        for (int i = 0; i < list.size(); i++) {
+            String paramCode = list.get(i).getParameterSetCode();
+            String value = readWriteEntityList.get(i).toString();
+            
+            switch (paramCode) {
+                case "ResultData0":
+                    cameraResults.setResultData0(value);
+                    break;
+                case "ResultData1":
+                    cameraResults.setResultData1(value);
+                    break;
+                case "ResultData2":
+                    cameraResults.setResultData2(value);
+                    break;
+                case "ResultData3":
+                    cameraResults.setResultData3(value);
+                    break;
+                case "ResultData4":
+                    cameraResults.setResultData4(value);
+                    break;
+            }
+        }
+
+        cameraResultsService.insertDaCameraResults(cameraResults);
+        
+        return AjaxResult.success(cameraResults);
+    }
+
+    @Autowired
+    private IDaLeakageDetectionService leakageDetectionService;
+
+    //  澶栨紡妫�娴嬫祴璇�
+    @PostMapping("/testLeakageDetection")
+    public AjaxResult testLeakageDetection()
+    {
+        List<DaCollectionParamConf> list = new ArrayList<>();
+        DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
+        daCollectionParamConf.setGatherAddress("CFL4ZZ.OP670");
+        daCollectionParamConf.setRemarks("1");
+        list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
+
+        List readWriteEntityList = new ArrayList<>();
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("333");
+        readWriteEntityList.add("4444");
+        readWriteEntityList.add("55555");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("333");
+        readWriteEntityList.add("4444");
+        readWriteEntityList.add("55555");
+        readWriteEntityList.add("89");
+        readWriteEntityList.add("23");
+
+
+        DaLeakageDetection leakageDetection = new DaLeakageDetection();
+        leakageDetection.setSfcCode("1234");
+        leakageDetection.setLocationCode("OP070");
+        leakageDetection.setCollectTime(new Date());
+
+        for (int i = 0; i < list.size(); i++) {
+            String paramCode = list.get(i).getParameterSetCode();
+            String value = readWriteEntityList.get(i).toString();
+            
+            switch (paramCode) {
+                case "Leakrate1":
+                    leakageDetection.setLeakrate1(value);
+                    break;
+                case "Leakrate2":
+                    leakageDetection.setLeakrate2(value);
+                    break;
+                case "Leakrate3":
+                    leakageDetection.setLeakrate3(value);
+                    break;
+                case "Leakrate4":
+                    leakageDetection.setLeakrate4(value);
+                    break;
+                case "Press1":
+                    leakageDetection.setPress1(value);
+                    break;
+                case "Press2":
+                    leakageDetection.setPress2(value);
+                    break;
+                case "Press3":
+                    leakageDetection.setPress3(value);
+                    break;
+                case "Press4":
+                    leakageDetection.setPress4(value);
+                    break;
+                case "Status1":
+                    leakageDetection.setStatus1(value);
+                    break;
+                case "Status2":
+                    leakageDetection.setStatus2(value);
+                    break;
+                case "Status3":
+                    leakageDetection.setStatus3(value);
+                    break;
+                case "Status4":
+                    leakageDetection.setStatus4(value);
+                    break;
+            }
+        }
+
+        leakageDetectionService.insertDaLeakageDetection(leakageDetection);
+
+        return AjaxResult.success(leakageDetection);
+    }
+
+    @Autowired
+    private IDaOilFillingService oilFillingService;
+
+    //  鏈烘补鍔犳敞
+    @PostMapping("/testOilFilling")
+    public AjaxResult testOilFilling()
+    {
+        List<DaCollectionParamConf> list = new ArrayList<>();
+        DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
+        daCollectionParamConf.setGatherAddress("CFL4ZZ.OP730");
+        daCollectionParamConf.setRemarks("1");
+        list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
+
+        List readWriteEntityList = new ArrayList<>();
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("333");
+        readWriteEntityList.add("4444");
+        readWriteEntityList.add("55555");
+        readWriteEntityList.add("1");
+        readWriteEntityList.add("22");
+        readWriteEntityList.add("333");
+        readWriteEntityList.add("4444");
+        readWriteEntityList.add("55555");
+        readWriteEntityList.add("89");
+        readWriteEntityList.add("23");
+        readWriteEntityList.add("55555");
+        readWriteEntityList.add("89");
+        readWriteEntityList.add("23");
+
+
+        DaOilFilling oilFilling = new DaOilFilling();
+        oilFilling.setSfcCode("1234");
+        oilFilling.setLocationCode("OP730");
+        oilFilling.setCollectTime(new Date());
+
+        for (int i = 0; i < list.size(); i++) {
+            String paramCode = list.get(i).getParameterSetCode();
+            String value = readWriteEntityList.get(i).toString();
+
+            switch (paramCode) {
+                case "Actual_OilVolume1":
+                    oilFilling.setActualOilvolume1(value);
+                    break;
+                case "Actual_OilVolume2":
+                    oilFilling.setActualOilvolume2(value);
+                    break;
+                case "Actual_OilVolume3":
+                    oilFilling.setActualOilvolume3(value);
+                    break;
+                case "OilModel1":
+                    oilFilling.setOilModel1(value);
+                    break;
+                case "OilModel2":
+                    oilFilling.setOilModel2(value);
+                    break;
+                case "OilModel3":
+                    oilFilling.setOilModel3(value);
+                    break;
+                case "Set_OilVolume1":
+                    oilFilling.setSetOilvolume1(value);
+                    break;
+                case "Set_OilVolume2":
+                    oilFilling.setSetOilvolume2(value);
+                    break;
+                case "Set_OilVolume3":
+                    oilFilling.setSetOilvolume3(value);
+                    break;
+                case "Status1":
+                    oilFilling.setStatus1(value);
+                    break;
+                case "Status2":
+                    oilFilling.setStatus2(value);
+                    break;
+                case "Status3":
+                    oilFilling.setStatus3(value);
+                    break;
+                case "Time1":
+                    oilFilling.setTime1(value);
+                    break;
+                case "Time2":
+                    oilFilling.setTime2(value);
+                    break;
+                case "Time3":
+                    oilFilling.setTime3(value);
+                    break;
+            }
+        }
+
+        oilFillingService.insertDaOilFilling(oilFilling);
+
+        return AjaxResult.success(oilFilling);
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/domain/DaTightenCollection.java b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/domain/DaTightenCollection.java
new file mode 100644
index 0000000..9acf470
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/domain/DaTightenCollection.java
@@ -0,0 +1,166 @@
+package com.jcdm.main.da.tightenCollection.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 鎷х揣閲囬泦瀵硅薄 da_tighten_collection
+ * 
+ * @author Yi
+ * @date 2025-05-06
+ */
+public class DaTightenCollection
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 鎬绘垚搴忓垪鍙� */
+    @Excel(name = "鎬绘垚搴忓垪鍙�")
+    private String sfcCode;
+
+    /** 宸ヤ綅缂栫爜 */
+    @Excel(name = "宸ヤ綅缂栫爜")
+    private String locationCode;
+
+    /** 鍙傛暟闆嗙紪鐮� */
+    @Excel(name = "鍙傛暟闆嗙紪鐮�")
+    private String paramSetCode;
+
+    /** 鍙傛暟闆嗗悕绉� */
+    @Excel(name = "鍙傛暟闆嗗悕绉�")
+    private String paramSetName;
+
+    /** 鎵煩鍊� */
+    @Excel(name = "鎵煩鍊�")
+    private String torque;
+
+    /** 鎵煩鐘舵�� */
+    @Excel(name = "鎵煩鐘舵��")
+    private String torqueStatus;
+
+    /** 瑙掑害鍊� */
+    @Excel(name = "瑙掑害鍊�")
+    private String angle;
+
+    /** 瑙掑害鐘舵�� */
+    @Excel(name = "瑙掑害鐘舵��")
+    private String angleStatus;
+
+    /** 閲囬泦鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSfcCode(String sfcCode) 
+    {
+        this.sfcCode = sfcCode;
+    }
+
+    public String getSfcCode() 
+    {
+        return sfcCode;
+    }
+    public void setLocationCode(String locationCode) 
+    {
+        this.locationCode = locationCode;
+    }
+
+    public String getLocationCode() 
+    {
+        return locationCode;
+    }
+    public void setParamSetCode(String paramSetCode) 
+    {
+        this.paramSetCode = paramSetCode;
+    }
+
+    public String getParamSetCode() 
+    {
+        return paramSetCode;
+    }
+    public void setParamSetName(String paramSetName) 
+    {
+        this.paramSetName = paramSetName;
+    }
+
+    public String getParamSetName() 
+    {
+        return paramSetName;
+    }
+    public void setTorque(String torque) 
+    {
+        this.torque = torque;
+    }
+
+    public String getTorque() 
+    {
+        return torque;
+    }
+    public void setTorqueStatus(String torqueStatus) 
+    {
+        this.torqueStatus = torqueStatus;
+    }
+
+    public String getTorqueStatus() 
+    {
+        return torqueStatus;
+    }
+    public void setAngle(String angle) 
+    {
+        this.angle = angle;
+    }
+
+    public String getAngle() 
+    {
+        return angle;
+    }
+    public void setAngleStatus(String angleStatus) 
+    {
+        this.angleStatus = angleStatus;
+    }
+
+    public String getAngleStatus() 
+    {
+        return angleStatus;
+    }
+
+    public Date getCollectTime() {
+        return collectTime;
+    }
+
+    public void setCollectTime(Date collectTime) {
+        this.collectTime = collectTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sfcCode", getSfcCode())
+            .append("locationCode", getLocationCode())
+            .append("paramSetCode", getParamSetCode())
+            .append("paramSetName", getParamSetName())
+            .append("torque", getTorque())
+            .append("torqueStatus", getTorqueStatus())
+            .append("angle", getAngle())
+            .append("angleStatus", getAngleStatus())
+            .append("collectTime", getCollectTime())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/mapper/DaTightenCollectionMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/mapper/DaTightenCollectionMapper.java
new file mode 100644
index 0000000..50768bb
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/mapper/DaTightenCollectionMapper.java
@@ -0,0 +1,62 @@
+package com.jcdm.main.da.tightenCollection.mapper;
+
+import com.jcdm.main.da.tightenCollection.domain.DaTightenCollection;
+
+import java.util.List;
+
+/**
+ * 鎷х揣閲囬泦Mapper鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-06
+ */
+public interface DaTightenCollectionMapper 
+{
+    /**
+     * 鏌ヨ鎷х揣閲囬泦
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 鎷х揣閲囬泦
+     */
+    public DaTightenCollection selectDaTightenCollectionById(Long id);
+
+    /**
+     * 鏌ヨ鎷х揣閲囬泦鍒楄〃
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 鎷х揣閲囬泦闆嗗悎
+     */
+    public List<DaTightenCollection> selectDaTightenCollectionList(DaTightenCollection daTightenCollection);
+
+    /**
+     * 鏂板鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    public int insertDaTightenCollection(DaTightenCollection daTightenCollection);
+
+    /**
+     * 淇敼鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    public int updateDaTightenCollection(DaTightenCollection daTightenCollection);
+
+    /**
+     * 鍒犻櫎鎷х揣閲囬泦
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTightenCollectionById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎鎷х揣閲囬泦
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTightenCollectionByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/IDaTightenCollectionService.java b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/IDaTightenCollectionService.java
new file mode 100644
index 0000000..00ecd2e
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/IDaTightenCollectionService.java
@@ -0,0 +1,66 @@
+package com.jcdm.main.da.tightenCollection.service;
+
+import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
+import com.jcdm.main.da.tightenCollection.domain.DaTightenCollection;
+
+import java.util.List;
+
+/**
+ * 鎷х揣閲囬泦Service鎺ュ彛
+ * 
+ * @author Yi
+ * @date 2025-05-06
+ */
+public interface IDaTightenCollectionService 
+{
+    /**
+     * 鏌ヨ鎷х揣閲囬泦
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 鎷х揣閲囬泦
+     */
+    public DaTightenCollection selectDaTightenCollectionById(Long id);
+
+    /**
+     * 鏌ヨ鎷х揣閲囬泦鍒楄〃
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 鎷х揣閲囬泦闆嗗悎
+     */
+    public List<DaTightenCollection> selectDaTightenCollectionList(DaTightenCollection daTightenCollection);
+
+    /**
+     * 鏂板鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    public int insertDaTightenCollection(DaTightenCollection daTightenCollection);
+
+    /**
+     * 淇敼鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    public int updateDaTightenCollection(DaTightenCollection daTightenCollection);
+
+    /**
+     * 鎵归噺鍒犻櫎鎷х揣閲囬泦
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鎷х揣閲囬泦涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTightenCollectionByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎鎷х揣閲囬泦淇℃伅
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTightenCollectionById(Long id);
+
+    void saveBeachDaTightenCollection(List<DaTightenCollection> list);
+
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/impl/DaTightenCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/impl/DaTightenCollectionServiceImpl.java
new file mode 100644
index 0000000..c1dfbc3
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tightenCollection/service/impl/DaTightenCollectionServiceImpl.java
@@ -0,0 +1,122 @@
+package com.jcdm.main.da.tightenCollection.service.impl;
+
+import java.util.List;
+
+import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
+import com.jcdm.main.da.tightenCollection.domain.DaTightenCollection;
+import com.jcdm.main.da.tightenCollection.mapper.DaTightenCollectionMapper;
+import com.jcdm.main.da.tightenCollection.service.IDaTightenCollectionService;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.Resource;
+
+/**
+ * 鎷х揣閲囬泦Service涓氬姟灞傚鐞�
+ * 
+ * @author Yi
+ * @date 2025-05-06
+ */
+@Service
+public class DaTightenCollectionServiceImpl implements IDaTightenCollectionService
+{
+    private static final Logger logger = LoggerFactory.getLogger(DaTightenCollectionServiceImpl.class);
+    
+    @Resource
+    private SqlSessionFactory sqlSessionFactory;
+    @Autowired
+    private DaTightenCollectionMapper daTightenCollectionMapper;
+
+    /**
+     * 鏌ヨ鎷х揣閲囬泦
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 鎷х揣閲囬泦
+     */
+    @Override
+    public DaTightenCollection selectDaTightenCollectionById(Long id)
+    {
+        return daTightenCollectionMapper.selectDaTightenCollectionById(id);
+    }
+
+    /**
+     * 鏌ヨ鎷х揣閲囬泦鍒楄〃
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 鎷х揣閲囬泦
+     */
+    @Override
+    public List<DaTightenCollection> selectDaTightenCollectionList(DaTightenCollection daTightenCollection)
+    {
+        return daTightenCollectionMapper.selectDaTightenCollectionList(daTightenCollection);
+    }
+
+    /**
+     * 鏂板鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaTightenCollection(DaTightenCollection daTightenCollection)
+    {
+        return daTightenCollectionMapper.insertDaTightenCollection(daTightenCollection);
+    }
+
+    /**
+     * 淇敼鎷х揣閲囬泦
+     * 
+     * @param daTightenCollection 鎷х揣閲囬泦
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaTightenCollection(DaTightenCollection daTightenCollection)
+    {
+        return daTightenCollectionMapper.updateDaTightenCollection(daTightenCollection);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鎷х揣閲囬泦
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鎷х揣閲囬泦涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTightenCollectionByIds(Long[] ids)
+    {
+        return daTightenCollectionMapper.deleteDaTightenCollectionByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎鎷х揣閲囬泦淇℃伅
+     * 
+     * @param id 鎷х揣閲囬泦涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTightenCollectionById(Long id)
+    {
+        return daTightenCollectionMapper.deleteDaTightenCollectionById(id);
+    }
+
+    @Override
+    public void saveBeachDaTightenCollection(List<DaTightenCollection> list) {
+        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+        try {
+            DaTightenCollectionMapper userMapper = sqlSession.getMapper(DaTightenCollectionMapper.class);
+            list.stream().forEach(DaTightenCollection -> userMapper.insertDaTightenCollection(DaTightenCollection));
+            // 鎻愪氦鏁版嵁
+            sqlSession.commit();
+        } catch (Exception e) {
+            logger.error("鎵归噺淇濆瓨鎷х揣閲囬泦鏁版嵁澶辫触", e);
+            sqlSession.rollback();
+        } finally {
+            sqlSession.close();
+        }
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
index ef21404..87f21bb 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
@@ -3,12 +3,16 @@
 
 import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
 import com.jcdm.main.bs.technologyRouteChild.service.IBsTechnologyRouteChildInfoService;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
 import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
 import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
 import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
 import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
 import com.jcdm.main.da.passingStationCollection.service.ProductNewPassStationService;
 import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl;
+import com.jcdm.main.da.tightenCollection.service.IDaTightenCollectionService;
 import com.jcdm.main.plcserver.sub.OPCUaSubscription;
 import com.jcdm.main.rm.repairRecord.service.IRmRepairRecordService;
 import com.kangaroohy.milo.service.MiloService;
@@ -51,6 +55,18 @@
     @Resource
     private ProductNewPassStationService productNewPassStationService;
 
+    @Resource
+    private IDaCameraResultsService daCameraResultsService;
+
+    @Resource
+    private IDaLeakageDetectionService daLeakageDetectionService;
+
+    @Resource
+    private IDaOilFillingService daOilFillingService;
+
+    @Resource
+    private IDaTightenCollectionService daTightenCollectionService;
+
     @Override
     public void run(ApplicationArguments args) throws Exception {
 
@@ -65,7 +81,12 @@
                 lists,
                 rmRepairRecordService,
                 bsTechnologyRouteChildInfoService,
-                productNewPassStationService);
+                productNewPassStationService,
+                daCameraResultsService,
+                daLeakageDetectionService,
+                daOilFillingService,
+                daTightenCollectionService
+        );
         miloService.subscriptionFromOpcUa(collect,100,opcUaSubscription);
     }
 
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
index 08a6d69..dee494d 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
@@ -1,6 +1,8 @@
 package com.jcdm.main.plcserver.conf;
 
 import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * @ClassName: OPCElement
@@ -78,4 +80,39 @@
     public static final String OP001_SAVE_REQUEST = "CFL4HX.OP001.SaveRequest";
     public static final String OP002_SAVE_REQUEST = "CFL4HX.OP002.SaveRequest";
 
+    public static final List CAMERA_RESULTS_LIST = Arrays.asList("OP230","OP490"); //鐩告満缁撴灉
+    public static final List LEAKAGEDETECTION_LIST = Arrays.asList("OP660","OP670"); //澶栨紡妫�娴�
+    public static final List OIL_FILLING_LIST = Arrays.asList("OP730"); //鏈烘补鍔犳敞鏁版嵁
+    public static final List TIGHTENCOLLECTION_LIST = Arrays.asList(
+            "HOP110",
+            "OP060",
+            "OP070",
+            "OP080",
+            "OP090",
+            "OP110",
+            "OP120",
+            "OP140",
+            "OP160",
+            "OP170",
+            "OP180",
+            "OP240",
+            "OP270",
+            "OP280",
+            "OP330",
+            "OP350",
+            "OP390",
+            "OP430",
+            "OP450",
+            "OP460",
+            "OP520",
+            "OP590",
+            "OP600",
+            "OP620",
+            "OP710",
+            "OP760",
+            "OP770"
+    ); //鎷х揣鏁版嵁
+
+
+
 }
\ No newline at end of file
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
index 2cb2892..053f50b 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -8,8 +8,14 @@
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
 import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
 import com.jcdm.main.bs.technologyRouteChild.service.IBsTechnologyRouteChildInfoService;
+import com.jcdm.main.da.cameraResults.domain.DaCameraResults;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
 import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
 import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
 import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
 import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
 import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
@@ -17,6 +23,8 @@
 import com.jcdm.main.da.passingStationCollection.domain.ProductNewPassStation;
 import com.jcdm.main.da.passingStationCollection.service.ProductNewPassStationService;
 import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl;
+import com.jcdm.main.da.tightenCollection.domain.DaTightenCollection;
+import com.jcdm.main.da.tightenCollection.service.IDaTightenCollectionService;
 import com.jcdm.main.plcserver.conf.OPCElement;
 import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord;
 import com.jcdm.main.rm.repairRecord.service.IRmRepairRecordService;
@@ -29,6 +37,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.sql.Time;
 import java.time.LocalDateTime;
@@ -63,6 +72,14 @@
 
     public HashMap<String,List<DaCollectionParamConf>> allCollectParamList = new HashMap<>();
 
+    private IDaCameraResultsService daCameraResultsService;
+
+    private IDaLeakageDetectionService daLeakageDetectionService;
+
+    private IDaOilFillingService daOilFillingService;
+
+    private IDaTightenCollectionService daTightenCollectionService;
+
     public OPCUaSubscription(MiloService miloService,
                              IDaCollectionParamConfService collectionParamConfService,
                              IDaParamCollectionService daParamCollectionService,
@@ -71,7 +88,11 @@
                              List<DaOpcuaConfig> lists,
                              IRmRepairRecordService rmRepairRecordService,
                              IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService,
-                             ProductNewPassStationService productNewPassStationService) {
+                             ProductNewPassStationService productNewPassStationService,
+                             IDaCameraResultsService daCameraResultsService,
+                             IDaLeakageDetectionService daLeakageDetectionService,
+                             IDaOilFillingService daOilFillingService,
+                             IDaTightenCollectionService daTightenCollectionService) {
         OPCUaSubscription.miloService = miloService;
         this.collectionParamConfService = collectionParamConfService;
         this.daParamCollectionService = daParamCollectionService;
@@ -81,6 +102,10 @@
         this.rmRepairRecordService = rmRepairRecordService;
         this.bsTechnologyRouteChildInfoService = bsTechnologyRouteChildInfoService;
         this.productNewPassStationService = productNewPassStationService;
+        this.daCameraResultsService = daCameraResultsService;
+        this.daLeakageDetectionService = daLeakageDetectionService;
+        this.daOilFillingService = daOilFillingService;
+        this.daTightenCollectionService = daTightenCollectionService;
 
 
     }
@@ -629,32 +654,286 @@
                 BsOrderScheduling bsOrderScheduling=bsOrderSchedulingService.selectBsOrderSchedulingSNCode(SNCode);
 
                 List<DaParamCollection> daParamCollectionlist = new ArrayList<>();
-                if (CollUtil.isNotEmpty(nodeIdList)){
-                    for(int i=0;i<nodeIdList.size();i++){
-                        if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
-                            DaParamCollection ParamCollection = new DaParamCollection();
-                            ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]);
-                            ParamCollection.setLocationCode(parts[1]);
-                            if (readWriteEntityList.get(i) == null){
-                                ParamCollection.setParamValue("0");
-                            }else {
-                                ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString());
+//                if (CollUtil.isNotEmpty(nodeIdList)){
+//                    for(int i=0;i<nodeIdList.size();i++){
+//                        if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+//                            DaParamCollection ParamCollection = new DaParamCollection();
+//                            ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]);
+//                            ParamCollection.setLocationCode(parts[1]);
+//                            if (readWriteEntityList.get(i) == null){
+//                                ParamCollection.setParamValue("0");
+//                            }else {
+//                                ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString());
+//                            }
+//                            ParamCollection.setSfcCode(SNCode);
+//                            ParamCollection.setParamName(list.get(i).getParameterSetName());
+//                            ParamCollection.setParamUpper(list.get(i).getParamUpper());
+//                            ParamCollection.setParamLower(list.get(i).getParamLower());
+//                            ParamCollection.setUnit(list.get(i).getCollectParameterUnit());
+//                            ParamCollection.setState("鍚堟牸");
+//                            ParamCollection.setType(list.get(i).getCollectParameterType());
+//                            ParamCollection.setCollectionTime(new Date());
+//                            ParamCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo());
+//                            daParamCollectionlist.add(ParamCollection);
+//                        }
+//                    }
+//                    daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist);
+//                    logger.info("{}鍙戝姩鏈猴紙{}锛夐噰闆嗘暟鎹繚瀛樺畬鎴�",SNCode,Node);
+//                }
+
+            //鏂板姞鐨� 寮�濮�
+            String locationCode = parts[1];
+            if(OPCElement.CAMERA_RESULTS_LIST.contains(locationCode)){
+                //瀛樼浉鏈烘暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    DaCameraResults cameraResults = new DaCameraResults();
+                                    cameraResults.setSfcCode(SNCode);
+                                    cameraResults.setLocationCode(locationCode);
+                                    cameraResults.setCollectTime(new Date());
+                                    if (readWriteEntityList.get(i) == null){
+                                        cameraResults.setResultData0("0");
+                                    }else {
+                                        cameraResults.setResultData0(readWriteEntityList.get(i).getValue().toString());
+                                    }
+                                    daCameraResultsService.insertDaCameraResults(cameraResults);
+                                    logger.info("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹繚瀛樺畬鎴�",SNCode,Node);
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹{}鏉′繚瀛樺け璐�: {}", SNCode, Node, i, e.getMessage());
                             }
-                            ParamCollection.setSfcCode(SNCode);
-                            ParamCollection.setParamName(list.get(i).getParameterSetName());
-                            ParamCollection.setParamUpper(list.get(i).getParamUpper());
-                            ParamCollection.setParamLower(list.get(i).getParamLower());
-                            ParamCollection.setUnit(list.get(i).getCollectParameterUnit());
-                            ParamCollection.setState("鍚堟牸");
-                            ParamCollection.setType(list.get(i).getCollectParameterType());
-                            ParamCollection.setCollectionTime(new Date());
-                            ParamCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo());
-                            daParamCollectionlist.add(ParamCollection);
                         }
                     }
-                    daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist);
-                    logger.info("{}鍙戝姩鏈猴紙{}锛夐噰闆嗘暟鎹繚瀛樺畬鎴�",SNCode,Node);
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
                 }
+            }
+
+            if(OPCElement.LEAKAGEDETECTION_LIST.contains(locationCode)){
+                //瀛樺婕忔娴嬫暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        DaLeakageDetection leakageDetection = new DaLeakageDetection();
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    leakageDetection.setSfcCode(SNCode);
+                                    leakageDetection.setLocationCode(locationCode);
+                                    leakageDetection.setCollectTime(new Date());
+                                    String paramCode = list.get(i).getParameterSetCode();
+                                    String value = "0";
+                                    if (readWriteEntityList.get(i) != null){
+                                        value = readWriteEntityList.get(i).getValue().toString();
+                                    }
+
+                                    switch (paramCode) {
+                                        case "Leakrate1":
+                                            leakageDetection.setLeakrate1(value);
+                                            break;
+                                        case "Leakrate2":
+                                            leakageDetection.setLeakrate2(value);
+                                            break;
+                                        case "Leakrate3":
+                                            leakageDetection.setLeakrate3(value);
+                                            break;
+                                        case "Leakrate4":
+                                            leakageDetection.setLeakrate4(value);
+                                            break;
+                                        case "Press1":
+                                            leakageDetection.setPress1(value);
+                                            break;
+                                        case "Press2":
+                                            leakageDetection.setPress2(value);
+                                            break;
+                                        case "Press3":
+                                            leakageDetection.setPress3(value);
+                                            break;
+                                        case "Press4":
+                                            leakageDetection.setPress4(value);
+                                            break;
+                                        case "Status1":
+                                            leakageDetection.setStatus1(value);
+                                            break;
+                                        case "Status2":
+                                            leakageDetection.setStatus2(value);
+                                            break;
+                                        case "Status3":
+                                            leakageDetection.setStatus3(value);
+                                            break;
+                                        case "Status4":
+                                            leakageDetection.setStatus4(value);
+                                            break;
+                                    }
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹{}鏉″鐞嗗け璐�: {}", SNCode, Node, i, e.getMessage());
+                            }
+                        }
+                        try {
+                            daLeakageDetectionService.insertDaLeakageDetection(leakageDetection);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨澶栨紡妫�娴嬫暟鎹繚瀛樺畬鎴�",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+
+            if(OPCElement.OIL_FILLING_LIST.contains(locationCode)){
+                //瀛樻満娌瑰姞娉ㄦ暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        DaOilFilling oilFilling = new DaOilFilling();
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    oilFilling.setSfcCode(SNCode);
+                                    oilFilling.setLocationCode(locationCode);
+                                    oilFilling.setCollectTime(new Date());
+                                    String paramCode = list.get(i).getParameterSetCode();
+                                    String value = "0";
+                                    if (readWriteEntityList.get(i).getValue() != null){
+                                        value = readWriteEntityList.get(i).getValue().toString();
+                                    }
+
+                                    switch (paramCode) {
+                                        case "Actual_OilVolume1":
+                                            oilFilling.setActualOilvolume1(value);
+                                            break;
+                                        case "Actual_OilVolume2":
+                                            oilFilling.setActualOilvolume2(value);
+                                            break;
+                                        case "Actual_OilVolume3":
+                                            oilFilling.setActualOilvolume3(value);
+                                            break;
+                                        case "OilModel1":
+                                            oilFilling.setOilModel1(value);
+                                            break;
+                                        case "OilModel2":
+                                            oilFilling.setOilModel2(value);
+                                            break;
+                                        case "OilModel3":
+                                            oilFilling.setOilModel3(value);
+                                            break;
+                                        case "Set_OilVolume1":
+                                            oilFilling.setSetOilvolume1(value);
+                                            break;
+                                        case "Set_OilVolume2":
+                                            oilFilling.setSetOilvolume2(value);
+                                            break;
+                                        case "Set_OilVolume3":
+                                            oilFilling.setSetOilvolume3(value);
+                                            break;
+                                        case "Status1":
+                                            oilFilling.setStatus1(value);
+                                            break;
+                                        case "Status2":
+                                            oilFilling.setStatus2(value);
+                                            break;
+                                        case "Status3":
+                                            oilFilling.setStatus3(value);
+                                            break;
+                                        case "Time1":
+                                            oilFilling.setTime1(value);
+                                            break;
+                                        case "Time2":
+                                            oilFilling.setTime2(value);
+                                            break;
+                                        case "Time3":
+                                            oilFilling.setTime3(value);
+                                            break;
+                                    }
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹{}鏉″鐞嗗け璐�: {}", SNCode, Node, i, e.getMessage());
+                            }
+                        }
+                        try {
+                            daOilFillingService.insertDaOilFilling(oilFilling);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨鏈烘补鍔犳敞鏁版嵁淇濆瓨瀹屾垚",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+
+            if(OPCElement.TIGHTENCOLLECTION_LIST.contains(locationCode)){
+                //瀛樻嫥绱ф暟鎹�
+                try {
+                    LinkedHashMap<String, Map<String, Object>> groupMap = new LinkedHashMap<>();
+                    for (int i = 0; i < list.size(); i += 3) {
+                        try {
+                            String groupKey = String.valueOf(i/3);
+                            String paramSetName = list.get(i).getParameterSetName();
+                            int secondSlash = paramSetName.indexOf("/", paramSetName.indexOf("/") + 1);
+                            paramSetName = secondSlash > 0 ? paramSetName.substring(0, secondSlash) : paramSetName;
+
+                            Map<String, Object> paramMap = new HashMap<>();
+
+                            // 鑾峰彇鎵煩鍊�
+                            Object torqueObj = readWriteEntityList.get(i).getValue();
+                            String torqueValue = torqueObj == null ? null : torqueObj.toString();
+                            if (torqueValue != null && !"0.0".equals(torqueValue)) {
+                                paramMap.put("torque", Double.parseDouble(torqueValue));
+                            }
+
+                            // 鑾峰彇瑙掑害鍊�
+                            Object angleObj = readWriteEntityList.get(i + 1).getValue();
+                            String angleValue = angleObj == null ? null : angleObj.toString();
+                            if (angleValue != null && !"0.0".equals(angleValue)) {
+                                paramMap.put("angle", Double.parseDouble(angleValue));
+                            }
+
+                            // 鑾峰彇鐘舵�佸��
+                            Object statusObj = readWriteEntityList.get(i + 2).getValue();
+                            String statusValue = statusObj == null ? null : statusObj.toString();
+                            if (statusValue != null && !"0.0".equals(statusValue)) {
+                                paramMap.put("angleStatus", statusValue);
+                                paramMap.put("paramSetName", paramSetName);
+                                groupMap.put(groupKey, paramMap);
+                            }
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹{}缁勫鐞嗗け璐�: {}", SNCode, Node, i/3, e.getMessage());
+                        }
+                    }
+
+                    List<DaTightenCollection> tightenList = new ArrayList<>();
+                    for (Map<String, Object> paramMap : groupMap.values()) {
+                        try {
+                            DaTightenCollection tighten = new DaTightenCollection();
+                            tighten.setSfcCode(SNCode);
+                            tighten.setLocationCode(locationCode);
+                            tighten.setParamSetName((String) paramMap.get("paramSetName"));
+                            tighten.setTorque(paramMap.get("torque") != null ? paramMap.get("torque").toString() : null);
+                            tighten.setAngle(paramMap.get("angle") != null ? paramMap.get("angle").toString() : null);
+                            tighten.setAngleStatus((String) paramMap.get("angleStatus"));
+                            tighten.setCollectTime(new Date());
+                            tightenList.add(tighten);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹璞¤浆鎹㈠け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                    if(tightenList.size()>0){
+                        try {
+                            daTightenCollectionService.saveBeachDaTightenCollection(tightenList);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨鎷х揣鏁版嵁淇濆瓨瀹屾垚",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹壒閲忎繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+            //鏂板姞鐨� 缁撴潫
 
             Object ProductStatus = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".ProductStatus").getValue();
             String str1="鍚堟牸" ;
diff --git a/jcdm-main/src/main/resources/mapper/da/cameraResults/DaCameraResultsMapper.xml b/jcdm-main/src/main/resources/mapper/da/cameraResults/DaCameraResultsMapper.xml
new file mode 100644
index 0000000..07749b8
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/cameraResults/DaCameraResultsMapper.xml
@@ -0,0 +1,91 @@
+<?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.jcdm.main.da.cameraResults.mapper.DaCameraResultsMapper">
+    
+    <resultMap type="DaCameraResults" id="DaCameraResultsResult">
+        <result property="id"    column="id"    />
+        <result property="sfcCode"    column="sfc_code"    />
+        <result property="locationCode"    column="location_code"    />
+        <result property="describe"    column="describe"    />
+        <result property="ResultData0"    column="ResultData0"    />
+        <result property="ResultData1"    column="ResultData1"    />
+        <result property="ResultData2"    column="ResultData2"    />
+        <result property="ResultData3"    column="ResultData3"    />
+        <result property="ResultData4"    column="ResultData4"    />
+        <result property="collectTime"    column="collect_time"    />
+    </resultMap>
+
+    <sql id="selectDaCameraResultsVo">
+        select id, sfc_code, location_code, describe, ResultData0, ResultData1, ResultData2, ResultData3, ResultData4, collect_time from da_camera_results
+    </sql>
+
+    <select id="selectDaCameraResultsList" parameterType="DaCameraResults" resultMap="DaCameraResultsResult">
+        <include refid="selectDaCameraResultsVo"/>
+        <where>  
+            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaCameraResultsById" parameterType="Long" resultMap="DaCameraResultsResult">
+        <include refid="selectDaCameraResultsVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaCameraResults" parameterType="DaCameraResults">
+        insert into da_camera_results
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="locationCode != null">location_code,</if>
+            <if test="describe != null">describe,</if>
+            <if test="ResultData0 != null">ResultData0,</if>
+            <if test="ResultData1 != null">ResultData1,</if>
+            <if test="ResultData2 != null">ResultData2,</if>
+            <if test="ResultData3 != null">ResultData3,</if>
+            <if test="ResultData4 != null">ResultData4,</if>
+            <if test="collectTime != null">collect_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="locationCode != null">#{locationCode},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="ResultData0 != null">#{ResultData0},</if>
+            <if test="ResultData1 != null">#{ResultData1},</if>
+            <if test="ResultData2 != null">#{ResultData2},</if>
+            <if test="ResultData3 != null">#{ResultData3},</if>
+            <if test="ResultData4 != null">#{ResultData4},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaCameraResults" parameterType="DaCameraResults">
+        update da_camera_results
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sfcCode != null">sfc_code = #{sfcCode},</if>
+            <if test="locationCode != null">location_code = #{locationCode},</if>
+            <if test="describe != null">describe = #{describe},</if>
+            <if test="ResultData0 != null">ResultData0 = #{ResultData0},</if>
+            <if test="ResultData1 != null">ResultData1 = #{ResultData1},</if>
+            <if test="ResultData2 != null">ResultData2 = #{ResultData2},</if>
+            <if test="ResultData3 != null">ResultData3 = #{ResultData3},</if>
+            <if test="ResultData4 != null">ResultData4 = #{ResultData4},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaCameraResultsById" parameterType="Long">
+        delete from da_camera_results where id = #{id}
+    </delete>
+
+    <delete id="deleteDaCameraResultsByIds" parameterType="String">
+        delete from da_camera_results where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/da/leakageDetection/DaLeakageDetectionMapper.xml b/jcdm-main/src/main/resources/mapper/da/leakageDetection/DaLeakageDetectionMapper.xml
new file mode 100644
index 0000000..788a591
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/leakageDetection/DaLeakageDetectionMapper.xml
@@ -0,0 +1,142 @@
+<?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.jcdm.main.da.leakageDetection.mapper.DaLeakageDetectionMapper">
+    
+    <resultMap type="DaLeakageDetection" id="DaLeakageDetectionResult">
+        <result property="id"    column="id"    />
+        <result property="sfcCode"    column="sfc_code"    />
+        <result property="locationCode"    column="location_code"    />
+        <result property="paramSetCode"    column="param_set_code"    />
+        <result property="paramSetName"    column="param_set_name"    />
+        <result property="describe"    column="describe"    />
+        <result property="pressureValue"    column="pressure_value"    />
+        <result property="leakageRate"    column="leakage_rate"    />
+        <result property="result"    column="result"    />
+        <result property="Leakrate1"    column="Leakrate1"    />
+        <result property="Leakrate2"    column="Leakrate2"    />
+        <result property="Leakrate3"    column="Leakrate3"    />
+        <result property="Leakrate4"    column="Leakrate4"    />
+        <result property="Press1"    column="Press1"    />
+        <result property="Press2"    column="Press2"    />
+        <result property="Press3"    column="Press3"    />
+        <result property="Press4"    column="Press4"    />
+        <result property="Status1"    column="Status1"    />
+        <result property="Status2"    column="Status2"    />
+        <result property="Status3"    column="Status3"    />
+        <result property="Status4"    column="Status4"    />
+        <result property="collectTime"    column="collect_time"    />
+    </resultMap>
+
+    <sql id="selectDaLeakageDetectionVo">
+        select id, sfc_code, location_code, param_set_code, param_set_name, describe, pressure_value, leakage_rate, result, Leakrate1, Leakrate2, Leakrate3, Leakrate4, Press1, Press2, Press3, Press4, Status1, Status2, Status3, Status4, collect_time from da_leakage_detection
+    </sql>
+
+    <select id="selectDaLeakageDetectionList" parameterType="DaLeakageDetection" resultMap="DaLeakageDetectionResult">
+        <include refid="selectDaLeakageDetectionVo"/>
+        <where>  
+            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+            <if test="paramSetCode != null  and paramSetCode != ''"> and param_set_code = #{paramSetCode}</if>
+            <if test="paramSetName != null  and paramSetName != ''"> and param_set_name like concat('%', #{paramSetName}, '%')</if>
+            <if test="result != null  and result != ''"> and result = #{result}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaLeakageDetectionById" parameterType="Long" resultMap="DaLeakageDetectionResult">
+        <include refid="selectDaLeakageDetectionVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaLeakageDetection" parameterType="DaLeakageDetection">
+        insert into da_leakage_detection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="locationCode != null">location_code,</if>
+            <if test="paramSetCode != null">param_set_code,</if>
+            <if test="paramSetName != null">param_set_name,</if>
+            <if test="describe != null">describe,</if>
+            <if test="pressureValue != null">pressure_value,</if>
+            <if test="leakageRate != null">leakage_rate,</if>
+            <if test="result != null">result,</if>
+            <if test="Leakrate1 != null">Leakrate1,</if>
+            <if test="Leakrate2 != null">Leakrate2,</if>
+            <if test="Leakrate3 != null">Leakrate3,</if>
+            <if test="Leakrate4 != null">Leakrate4,</if>
+            <if test="Press1 != null">Press1,</if>
+            <if test="Press2 != null">Press2,</if>
+            <if test="Press3 != null">Press3,</if>
+            <if test="Press4 != null">Press4,</if>
+            <if test="Status1 != null">Status1,</if>
+            <if test="Status2 != null">Status2,</if>
+            <if test="Status3 != null">Status3,</if>
+            <if test="Status4 != null">Status4,</if>
+            <if test="collectTime != null">collect_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="locationCode != null">#{locationCode},</if>
+            <if test="paramSetCode != null">#{paramSetCode},</if>
+            <if test="paramSetName != null">#{paramSetName},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="pressureValue != null">#{pressureValue},</if>
+            <if test="leakageRate != null">#{leakageRate},</if>
+            <if test="result != null">#{result},</if>
+            <if test="Leakrate1 != null">#{Leakrate1},</if>
+            <if test="Leakrate2 != null">#{Leakrate2},</if>
+            <if test="Leakrate3 != null">#{Leakrate3},</if>
+            <if test="Leakrate4 != null">#{Leakrate4},</if>
+            <if test="Press1 != null">#{Press1},</if>
+            <if test="Press2 != null">#{Press2},</if>
+            <if test="Press3 != null">#{Press3},</if>
+            <if test="Press4 != null">#{Press4},</if>
+            <if test="Status1 != null">#{Status1},</if>
+            <if test="Status2 != null">#{Status2},</if>
+            <if test="Status3 != null">#{Status3},</if>
+            <if test="Status4 != null">#{Status4},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaLeakageDetection" parameterType="DaLeakageDetection">
+        update da_leakage_detection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sfcCode != null">sfc_code = #{sfcCode},</if>
+            <if test="locationCode != null">location_code = #{locationCode},</if>
+            <if test="paramSetCode != null">param_set_code = #{paramSetCode},</if>
+            <if test="paramSetName != null">param_set_name = #{paramSetName},</if>
+            <if test="describe != null">describe = #{describe},</if>
+            <if test="pressureValue != null">pressure_value = #{pressureValue},</if>
+            <if test="leakageRate != null">leakage_rate = #{leakageRate},</if>
+            <if test="result != null">result = #{result},</if>
+            <if test="Leakrate1 != null">Leakrate1 = #{Leakrate1},</if>
+            <if test="Leakrate2 != null">Leakrate2 = #{Leakrate2},</if>
+            <if test="Leakrate3 != null">Leakrate3 = #{Leakrate3},</if>
+            <if test="Leakrate4 != null">Leakrate4 = #{Leakrate4},</if>
+            <if test="Press1 != null">Press1 = #{Press1},</if>
+            <if test="Press2 != null">Press2 = #{Press2},</if>
+            <if test="Press3 != null">Press3 = #{Press3},</if>
+            <if test="Press4 != null">Press4 = #{Press4},</if>
+            <if test="Status1 != null">Status1 = #{Status1},</if>
+            <if test="Status2 != null">Status2 = #{Status2},</if>
+            <if test="Status3 != null">Status3 = #{Status3},</if>
+            <if test="Status4 != null">Status4 = #{Status4},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaLeakageDetectionById" parameterType="Long">
+        delete from da_leakage_detection where id = #{id}
+    </delete>
+
+    <delete id="deleteDaLeakageDetectionByIds" parameterType="String">
+        delete from da_leakage_detection where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/da/oilFilling/DaOilFillingMapper.xml b/jcdm-main/src/main/resources/mapper/da/oilFilling/DaOilFillingMapper.xml
new file mode 100644
index 0000000..845586d
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/oilFilling/DaOilFillingMapper.xml
@@ -0,0 +1,147 @@
+<?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.jcdm.main.da.oilFilling.mapper.DaOilFillingMapper">
+    
+    <resultMap type="DaOilFilling" id="DaOilFillingResult">
+        <result property="id"    column="id"    />
+        <result property="sfcCode"    column="sfc_code"    />
+        <result property="locationCode"    column="location_code"    />
+        <result property="describe"    column="describe"    />
+        <result property="setFuelVolume"    column="set_fuel_volume"    />
+        <result property="actualFuelConsumption"    column="actual_fuel_consumption"    />
+        <result property="refuelingTime"    column="refueling_time"    />
+        <result property="result"    column="result"    />
+        <result property="actualOilvolume1"    column="Actual_OilVolume1"    />
+        <result property="actualOilvolume2"    column="Actual_OilVolume2"    />
+        <result property="actualOilvolume3"    column="Actual_OilVolume3"    />
+        <result property="OilModel1"    column="OilModel1"    />
+        <result property="OilModel2"    column="OilModel2"    />
+        <result property="OilModel3"    column="OilModel3"    />
+        <result property="setOilvolume1"    column="Set_OilVolume1"    />
+        <result property="setOilvolume2"    column="Set_OilVolume2"    />
+        <result property="setOilvolume3"    column="Set_OilVolume3"    />
+        <result property="Status1"    column="Status1"    />
+        <result property="Status2"    column="Status2"    />
+        <result property="Status3"    column="Status3"    />
+        <result property="Time1"    column="Time1"    />
+        <result property="Time2"    column="Time2"    />
+        <result property="Time3"    column="Time3"    />
+        <result property="collectTime"    column="collect_time"    />
+    </resultMap>
+
+    <sql id="selectDaOilFillingVo">
+        select id, sfc_code, location_code, set_fuel_volume, actual_fuel_consumption, refueling_time, Actual_OilVolume1, Actual_OilVolume2, Actual_OilVolume3, OilModel1, OilModel2, OilModel3, Set_OilVolume1, Set_OilVolume2, Set_OilVolume3, Status1, Status2, Status3, Time1, Time2, Time3, collect_time from da_oil_filling
+    </sql>
+
+    <select id="selectDaOilFillingList" parameterType="DaOilFilling" resultMap="DaOilFillingResult">
+        <include refid="selectDaOilFillingVo"/>
+        <where>  
+            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaOilFillingById" parameterType="Long" resultMap="DaOilFillingResult">
+        <include refid="selectDaOilFillingVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaOilFilling" parameterType="DaOilFilling">
+        insert into da_oil_filling
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="locationCode != null">location_code,</if>
+            <if test="describe != null">describe,</if>
+            <if test="setFuelVolume != null">set_fuel_volume,</if>
+            <if test="actualFuelConsumption != null">actual_fuel_consumption,</if>
+            <if test="refuelingTime != null">refueling_time,</if>
+            <if test="result != null">result,</if>
+            <if test="actualOilvolume1 != null">Actual_OilVolume1,</if>
+            <if test="actualOilvolume2 != null">Actual_OilVolume2,</if>
+            <if test="actualOilvolume3 != null">Actual_OilVolume3,</if>
+            <if test="OilModel1 != null">OilModel1,</if>
+            <if test="OilModel2 != null">OilModel2,</if>
+            <if test="OilModel3 != null">OilModel3,</if>
+            <if test="setOilvolume1 != null">Set_OilVolume1,</if>
+            <if test="setOilvolume2 != null">Set_OilVolume2,</if>
+            <if test="setOilvolume3 != null">Set_OilVolume3,</if>
+            <if test="Status1 != null">Status1,</if>
+            <if test="Status2 != null">Status2,</if>
+            <if test="Status3 != null">Status3,</if>
+            <if test="Time1 != null">Time1,</if>
+            <if test="Time2 != null">Time2,</if>
+            <if test="Time3 != null">Time3,</if>
+            <if test="collectTime != null">collect_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="locationCode != null">#{locationCode},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="setFuelVolume != null">#{setFuelVolume},</if>
+            <if test="actualFuelConsumption != null">#{actualFuelConsumption},</if>
+            <if test="refuelingTime != null">#{refuelingTime},</if>
+            <if test="result != null">#{result},</if>
+            <if test="actualOilvolume1 != null">#{actualOilvolume1},</if>
+            <if test="actualOilvolume2 != null">#{actualOilvolume2},</if>
+            <if test="actualOilvolume3 != null">#{actualOilvolume3},</if>
+            <if test="OilModel1 != null">#{OilModel1},</if>
+            <if test="OilModel2 != null">#{OilModel2},</if>
+            <if test="OilModel3 != null">#{OilModel3},</if>
+            <if test="setOilvolume1 != null">#{setOilvolume1},</if>
+            <if test="setOilvolume2 != null">#{setOilvolume2},</if>
+            <if test="setOilvolume3 != null">#{setOilvolume3},</if>
+            <if test="Status1 != null">#{Status1},</if>
+            <if test="Status2 != null">#{Status2},</if>
+            <if test="Status3 != null">#{Status3},</if>
+            <if test="Time1 != null">#{Time1},</if>
+            <if test="Time2 != null">#{Time2},</if>
+            <if test="Time3 != null">#{Time3},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaOilFilling" parameterType="DaOilFilling">
+        update da_oil_filling
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sfcCode != null">sfc_code = #{sfcCode},</if>
+            <if test="locationCode != null">location_code = #{locationCode},</if>
+            <if test="describe != null">describe = #{describe},</if>
+            <if test="setFuelVolume != null">set_fuel_volume = #{setFuelVolume},</if>
+            <if test="actualFuelConsumption != null">actual_fuel_consumption = #{actualFuelConsumption},</if>
+            <if test="refuelingTime != null">refueling_time = #{refuelingTime},</if>
+            <if test="result != null">result = #{result},</if>
+            <if test="actualOilvolume1 != null">Actual_OilVolume1 = #{actualOilvolume1},</if>
+            <if test="actualOilvolume2 != null">Actual_OilVolume2 = #{actualOilvolume2},</if>
+            <if test="actualOilvolume3 != null">Actual_OilVolume3 = #{actualOilvolume3},</if>
+            <if test="OilModel1 != null">OilModel1 = #{OilModel1},</if>
+            <if test="OilModel2 != null">OilModel2 = #{OilModel2},</if>
+            <if test="OilModel3 != null">OilModel3 = #{OilModel3},</if>
+            <if test="setOilvolume1 != null">Set_OilVolume1 = #{setOilvolume1},</if>
+            <if test="setOilvolume2 != null">Set_OilVolume2 = #{setOilvolume2},</if>
+            <if test="setOilvolume3 != null">Set_OilVolume3 = #{setOilvolume3},</if>
+            <if test="Status1 != null">Status1 = #{Status1},</if>
+            <if test="Status2 != null">Status2 = #{Status2},</if>
+            <if test="Status3 != null">Status3 = #{Status3},</if>
+            <if test="Time1 != null">Time1 = #{Time1},</if>
+            <if test="Time2 != null">Time2 = #{Time2},</if>
+            <if test="Time3 != null">Time3 = #{Time3},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaOilFillingById" parameterType="Long">
+        delete from da_oil_filling where id = #{id}
+    </delete>
+
+    <delete id="deleteDaOilFillingByIds" parameterType="String">
+        delete from da_oil_filling where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/da/tightenCollection/DaTightenCollectionMapper.xml b/jcdm-main/src/main/resources/mapper/da/tightenCollection/DaTightenCollectionMapper.xml
new file mode 100644
index 0000000..d7d8de4
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/tightenCollection/DaTightenCollectionMapper.xml
@@ -0,0 +1,85 @@
+<?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.jcdm.main.da.tightenCollection.mapper.DaTightenCollectionMapper">
+    
+    <resultMap type="DaTightenCollection" id="DaTightenCollectionResult">
+        <result property="id"    column="id"    />
+        <result property="sfcCode"    column="sfc_code"    />
+        <result property="locationCode"    column="location_code"    />
+        <result property="paramSetName"    column="param_set_name"    />
+        <result property="torque"    column="torque"    />
+        <result property="angle"    column="angle"    />
+        <result property="angleStatus"    column="angle_status"    />
+        <result property="collectTime"    column="collect_time"    />
+    </resultMap>
+
+    <sql id="selectDaTightenCollectionVo">
+        select id, sfc_code, location_code, param_set_name, torque, angle, angle_status, collect_time from da_tighten_collection
+    </sql>
+
+    <select id="selectDaTightenCollectionList" parameterType="DaTightenCollection" resultMap="DaTightenCollectionResult">
+        <include refid="selectDaTightenCollectionVo"/>
+        <where>  
+            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+            <if test="paramSetName != null  and paramSetName != ''"> and param_set_name like concat('%', #{paramSetName}, '%')</if>
+            <if test="angleStatus != null  and angleStatus != ''"> and angle_status = #{angleStatus}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaTightenCollectionById" parameterType="Long" resultMap="DaTightenCollectionResult">
+        <include refid="selectDaTightenCollectionVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaTightenCollection" parameterType="DaTightenCollection">
+        insert into da_tighten_collection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="locationCode != null">location_code,</if>
+            <if test="paramSetName != null">param_set_name,</if>
+            <if test="torque != null">torque,</if>
+            <if test="angle != null">angle,</if>
+            <if test="angleStatus != null">angle_status,</if>
+            <if test="collectTime != null">collect_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="locationCode != null">#{locationCode},</if>
+            <if test="paramSetName != null">#{paramSetName},</if>
+            <if test="torque != null">#{torque},</if>
+            <if test="angle != null">#{angle},</if>
+            <if test="angleStatus != null">#{angleStatus},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaTightenCollection" parameterType="DaTightenCollection">
+        update da_tighten_collection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sfcCode != null">sfc_code = #{sfcCode},</if>
+            <if test="locationCode != null">location_code = #{locationCode},</if>
+            <if test="paramSetName != null">param_set_name = #{paramSetName},</if>
+            <if test="torque != null">torque = #{torque},</if>
+            <if test="angle != null">angle = #{angle},</if>
+            <if test="angleStatus != null">angle_status = #{angleStatus},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaTightenCollectionById" parameterType="Long">
+        delete from da_tighten_collection where id = #{id}
+    </delete>
+
+    <delete id="deleteDaTightenCollectionByIds" parameterType="String">
+        delete from da_tighten_collection where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-ui/src/api/main/da/cameraResults/cameraResults.js b/jcdm-ui/src/api/main/da/cameraResults/cameraResults.js
new file mode 100644
index 0000000..7e1727a
--- /dev/null
+++ b/jcdm-ui/src/api/main/da/cameraResults/cameraResults.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鐩告満缁撴灉鍒楄〃
+export function listCameraResults(query) {
+  return request({
+    url: '/da/cameraResults/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ鐩告満缁撴灉璇︾粏
+export function getCameraResults(id) {
+  return request({
+    url: '/da/cameraResults/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板鐩告満缁撴灉
+export function addCameraResults(data) {
+  return request({
+    url: '/da/cameraResults',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼鐩告満缁撴灉
+export function updateCameraResults(data) {
+  return request({
+    url: '/da/cameraResults',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎鐩告満缁撴灉
+export function delCameraResults(id) {
+  return request({
+    url: '/da/cameraResults/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/api/main/da/leakageDetection/leakageDetection.js b/jcdm-ui/src/api/main/da/leakageDetection/leakageDetection.js
new file mode 100644
index 0000000..c495ab9
--- /dev/null
+++ b/jcdm-ui/src/api/main/da/leakageDetection/leakageDetection.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ澶栨紡妫�娴嬪垪琛�
+export function listLeakageDetection(query) {
+  return request({
+    url: '/da/leakageDetection/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ澶栨紡妫�娴嬭缁�
+export function getLeakageDetection(id) {
+  return request({
+    url: '/da/leakageDetection/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板澶栨紡妫�娴�
+export function addLeakageDetection(data) {
+  return request({
+    url: '/da/leakageDetection',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼澶栨紡妫�娴�
+export function updateLeakageDetection(data) {
+  return request({
+    url: '/da/leakageDetection',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎澶栨紡妫�娴�
+export function delLeakageDetection(id) {
+  return request({
+    url: '/da/leakageDetection/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/api/main/da/oilFilling/oilFilling.js b/jcdm-ui/src/api/main/da/oilFilling/oilFilling.js
new file mode 100644
index 0000000..1e2ae33
--- /dev/null
+++ b/jcdm-ui/src/api/main/da/oilFilling/oilFilling.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鏈烘补鍔犳敞鍒楄〃
+export function listOilFilling(query) {
+  return request({
+    url: '/da/oilFilling/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ鏈烘补鍔犳敞璇︾粏
+export function getOilFilling(id) {
+  return request({
+    url: '/da/oilFilling/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板鏈烘补鍔犳敞
+export function addOilFilling(data) {
+  return request({
+    url: '/da/oilFilling',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼鏈烘补鍔犳敞
+export function updateOilFilling(data) {
+  return request({
+    url: '/da/oilFilling',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎鏈烘补鍔犳敞
+export function delOilFilling(id) {
+  return request({
+    url: '/da/oilFilling/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/api/main/da/tightenCollection/tightenCollection.js b/jcdm-ui/src/api/main/da/tightenCollection/tightenCollection.js
new file mode 100644
index 0000000..4829fce
--- /dev/null
+++ b/jcdm-ui/src/api/main/da/tightenCollection/tightenCollection.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎷х揣閲囬泦鍒楄〃
+export function listTightenCollection(query) {
+  return request({
+    url: '/da/tightenCollection/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ鎷х揣閲囬泦璇︾粏
+export function getTightenCollection(id) {
+  return request({
+    url: '/da/tightenCollection/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板鎷х揣閲囬泦
+export function addTightenCollection(data) {
+  return request({
+    url: '/da/tightenCollection',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼鎷х揣閲囬泦
+export function updateTightenCollection(data) {
+  return request({
+    url: '/da/tightenCollection',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎鎷х揣閲囬泦
+export function delTightenCollection(id) {
+  return request({
+    url: '/da/tightenCollection/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/views/main/cfkb/fuelNozzle/index.vue b/jcdm-ui/src/views/main/cfkb/fuelNozzle/index.vue
new file mode 100644
index 0000000..943413a
--- /dev/null
+++ b/jcdm-ui/src/views/main/cfkb/fuelNozzle/index.vue
@@ -0,0 +1,161 @@
+<template>
+  <div class="app-container">
+    <div class="scan-container">
+      <div class="input-group">
+        <label class="input-label">鍙戝姩鏈虹爜锛�</label>
+        <input 
+          type="text" 
+          v-model="engineCode" 
+          class="engine-input"
+          @keyup.enter="handleScan"
+          placeholder="璇锋壂鎻忓彂鍔ㄦ満鐮�"
+        />
+      </div>
+      <div class="result-display" v-if="fuelAmount" :class="{ 'highlight': isHighlighted }">
+        <div class="result-title">鍔犳补閲�</div>
+        <div class="result-value">{{ fuelAmount }}鍗�</div>
+        <div class="scan-time">{{ lastScanTime }}</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      engineCode: '',
+      fuelAmount: null,
+      isHighlighted: false,
+      lastScanTime: ''
+    }
+  },
+  mounted() {
+  },
+  methods: {
+    handleScan() {
+      if (this.engineCode) {
+        const prefix = this.engineCode.substring(0, 4);
+        if (prefix === '380Y') {
+          this.fuelAmount = 380;
+        } else if (prefix === '280Y') {
+          this.fuelAmount = 280;
+        } else {
+          this.fuelAmount = null;
+        }
+        
+        // 娣诲姞楂樹寒鏁堟灉
+        this.isHighlighted = true;
+        setTimeout(() => {
+          this.isHighlighted = false;
+        }, 1000);
+
+        // 鏇存柊鏃堕棿
+        const now = new Date();
+        this.lastScanTime = `鎵弿鏃堕棿锛�${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;
+        
+        // 娓呯┖杈撳叆妗嗭紝鍑嗗涓嬩竴娆℃壂鎻�
+        this.engineCode = '';
+      }
+    }
+  },
+}
+</script>
+
+<style scoped>
+.scan-container {
+  padding: 60px;
+  background: #fff;
+  border-radius: 8px;
+  box-shadow: 0 2px 12px 0 rgba(0,0,0,0.1);
+  margin: 40px;
+  min-height: 400px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.input-group {
+  display: flex;
+  align-items: center;
+  margin-bottom: 40px;
+  width: 100%;
+  justify-content: center;
+}
+
+.input-label {
+  font-size: 24px;
+  font-weight: bold;
+  margin-right: 20px;
+  min-width: 120px;
+}
+
+.engine-input {
+  width: 300px;
+  height: 50px;
+  font-size: 24px;
+  padding: 0 15px;
+  border: 2px solid #409EFF;
+  border-radius: 4px;
+  outline: none;
+}
+
+.engine-input:focus {
+  border-color: #66b1ff;
+}
+
+.result-display {
+  font-size: 48px;
+  color: #409EFF;
+  font-weight: bold;
+  margin-top: 50px;
+  padding: 40px;
+  background: #f5f7fa;
+  border-radius: 8px;
+  text-align: center;
+  border: 3px solid #409EFF;
+  box-shadow: 0 4px 12px rgba(64, 158, 255, 0.2);
+  width: 80%;
+  margin-left: auto;
+  margin-right: auto;
+  transition: all 0.3s ease;
+}
+
+.result-display.highlight {
+  transform: scale(1.05);
+  background: #ecf5ff;
+  border-color: #66b1ff;
+  box-shadow: 0 0 20px rgba(64, 158, 255, 0.4);
+}
+
+.result-title {
+  font-size: 32px;
+  margin-bottom: 20px;
+  color: #606266;
+}
+
+.result-value {
+  font-size: 72px;
+  color: #409EFF;
+  margin: 20px 0;
+  text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
+}
+
+.scan-time {
+  font-size: 24px;
+  color: #909399;
+  margin-top: 20px;
+}
+
+@keyframes highlight {
+  0% {
+    transform: scale(1);
+  }
+  50% {
+    transform: scale(1.05);
+  }
+  100% {
+    transform: scale(1);
+  }
+}
+</style>
diff --git a/jcdm-ui/src/views/main/da/cameraResults/index.vue b/jcdm-ui/src/views/main/da/cameraResults/index.vue
new file mode 100644
index 0000000..45c8c7c
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/cameraResults/index.vue
@@ -0,0 +1,316 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+            <el-input
+              v-model="queryParams.sfcCode"
+              placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+            <el-input
+              v-model="queryParams.locationCode"
+              placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+    </el-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['da:cameraResults:add']"
+            >鏂板</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['da:cameraResults:edit']"
+            >淇敼</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['da:cameraResults:remove']"
+            >鍒犻櫎</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['da:cameraResults:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="cameraResultsList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="涓婚敭id" align="center" prop="id" />
+          <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode">
+          </el-table-column>
+          <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode">
+          </el-table-column>
+          <el-table-column label="鎻忚堪" align="center" prop="describe">
+          </el-table-column>
+          <el-table-column label="鐩告満1缁撴灉" align="center" prop="ResultData0">
+          </el-table-column>
+          <el-table-column label="鐩告満2缁撴灉" align="center" prop="ResultData1">
+          </el-table-column>
+          <el-table-column label="鐩告満3缁撴灉" align="center" prop="ResultData2">
+          </el-table-column>
+          <el-table-column label="鐩告満4缁撴灉" align="center" prop="ResultData3">
+          </el-table-column>
+          <el-table-column label="鐩告満5缁撴灉" align="center" prop="ResultData4">
+          </el-table-column>
+          <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime">
+          </el-table-column>
+          <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="success"
+                plain
+                style="width: 72px"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['da:cameraResults:edit']"
+              >淇敼</el-button>
+              <el-button
+                size="mini"
+                type="danger"
+                plain
+                style="width: 72px"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['da:cameraResults:remove']"
+              >鍒犻櫎</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀圭浉鏈虹粨鏋滃璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+          <el-input v-model="form.sfcCode" placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�" />
+        </el-form-item>
+        <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+          <el-input v-model="form.locationCode" placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="describe">
+          <el-input v-model="form.describe" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鐩告満1缁撴灉" prop="ResultData0">
+          <el-input v-model="form.ResultData0" placeholder="璇疯緭鍏ョ浉鏈�1缁撴灉" />
+        </el-form-item>
+        <el-form-item label="鐩告満2缁撴灉" prop="ResultData1">
+          <el-input v-model="form.ResultData1" placeholder="璇疯緭鍏ョ浉鏈�2缁撴灉" />
+        </el-form-item>
+        <el-form-item label="鐩告満3缁撴灉" prop="ResultData2">
+          <el-input v-model="form.ResultData2" placeholder="璇疯緭鍏ョ浉鏈�3缁撴灉" />
+        </el-form-item>
+        <el-form-item label="鐩告満4缁撴灉" prop="ResultData3">
+          <el-input v-model="form.ResultData3" placeholder="璇疯緭鍏ョ浉鏈�4缁撴灉" />
+        </el-form-item>
+        <el-form-item label="鐩告満5缁撴灉" prop="ResultData4">
+          <el-input v-model="form.ResultData4" placeholder="璇疯緭鍏ョ浉鏈�5缁撴灉" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listCameraResults, getCameraResults, delCameraResults, addCameraResults, updateCameraResults } from "@/api/main/da/cameraResults/cameraResults";
+
+export default {
+  name: "CameraResults",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐩告満缁撴灉琛ㄦ牸鏁版嵁
+      cameraResultsList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        locationCode: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ鐩告満缁撴灉鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listCameraResults(this.queryParams).then(response => {
+        this.cameraResultsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        sfcCode: null,
+        locationCode: null,
+        describe: null,
+        ResultData0: null,
+        ResultData1: null,
+        ResultData2: null,
+        ResultData3: null,
+        ResultData4: null,
+        collectTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.titleName = "娣诲姞鐩告満缁撴灉";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getCameraResults(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼鐩告満缁撴灉";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateCameraResults(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addCameraResults(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鐩告満缁撴灉缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delCameraResults(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/cameraResults/export', {
+        ...this.queryParams
+      }, `cameraResults_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/jcdm-ui/src/views/main/da/leakageDetection/index.vue b/jcdm-ui/src/views/main/da/leakageDetection/index.vue
new file mode 100644
index 0000000..269a559
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/leakageDetection/index.vue
@@ -0,0 +1,404 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+            <el-input
+              v-model="queryParams.sfcCode"
+              placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+            <el-input
+              v-model="queryParams.locationCode"
+              placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鍙傛暟闆嗙紪鐮�" prop="paramSetCode">
+            <el-input
+              v-model="queryParams.paramSetCode"
+              placeholder="璇疯緭鍏ュ弬鏁伴泦缂栫爜"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鍙傛暟闆嗗悕绉�" prop="paramSetName">
+            <el-input
+              v-model="queryParams.paramSetName"
+              placeholder="璇疯緭鍏ュ弬鏁伴泦鍚嶇О"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+    </el-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <el-row :gutter="10" class="mb8">
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="primary"-->
+<!--              plain-->
+<!--              icon="el-icon-plus"-->
+<!--              size="mini"-->
+<!--              @click="handleAdd"-->
+<!--              v-hasPermi="['da:leakageDetection:add']"-->
+<!--            >鏂板</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="success"-->
+<!--              plain-->
+<!--              icon="el-icon-edit"-->
+<!--              size="mini"-->
+<!--              :disabled="single"-->
+<!--              @click="handleUpdate"-->
+<!--              v-hasPermi="['da:leakageDetection:edit']"-->
+<!--            >淇敼</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="danger"-->
+<!--              plain-->
+<!--              icon="el-icon-delete"-->
+<!--              size="mini"-->
+<!--              :disabled="multiple"-->
+<!--              @click="handleDelete"-->
+<!--              v-hasPermi="['da:leakageDetection:remove']"-->
+<!--            >鍒犻櫎</el-button>-->
+<!--          </el-col>-->
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['da:leakageDetection:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="leakageDetectionList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="涓婚敭id" align="center" prop="id" />
+          <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode">
+          </el-table-column>
+          <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode">
+          </el-table-column>
+<!--          <el-table-column label="鍙傛暟闆嗙紪鐮�" align="center" prop="paramSetCode">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column label="鍙傛暟闆嗗悕绉�" align="center" prop="paramSetName">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column label="鎻忚堪" align="center" prop="describe">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column label="鍘嬪姏鍊�" align="center" prop="pressureValue">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column label="娉勯湶鐜�" align="center" prop="leakageRate">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column label="缁撴灉" align="center" prop="result">-->
+<!--          </el-table-column>-->
+          <el-table-column label="姘撮亾浜掓紡娉勬紡閲�" align="center" prop="leakrate1">
+          </el-table-column>
+          <el-table-column label="姘撮亾澶栨紡娉勬紡閲�" align="center" prop="leakrate2">
+          </el-table-column>
+          <el-table-column label="榻胯疆绠卞婕忔硠婕忛噺" align="center" prop="leakrate3">
+          </el-table-column>
+          <el-table-column label="娌归亾澶栨紡娉勬紡閲�" align="center" prop="leakrate4">
+          </el-table-column>
+          <el-table-column label="姘撮亾浜掓紡鍘嬪姏" align="center" prop="press1">
+          </el-table-column>
+          <el-table-column label="姘撮亾澶栨紡鍘嬪姏" align="center" prop="press2">
+          </el-table-column>
+          <el-table-column label="榻胯疆绠卞婕忓帇鍔�" align="center" prop="press3">
+          </el-table-column>
+          <el-table-column label="娌归亾澶栨紡鍘嬪姏" align="center" prop="press4">
+          </el-table-column>
+          <el-table-column label="姘撮亾浜掓紡缁撴灉鐘舵��:1OK 2NG" align="center" prop="status1">
+          </el-table-column>
+          <el-table-column label="姘撮亾澶栨紡缁撴灉鐘舵��:1OK 2NG" align="center" prop="status2">
+          </el-table-column>
+          <el-table-column label="榻胯疆绠卞婕忕粨鏋滅姸鎬�:1OK 2NG" align="center" prop="status3">
+          </el-table-column>
+          <el-table-column label="娌归亾澶栨紡缁撴灉鐘舵��:1OK 2NG" align="center" prop="status4">
+          </el-table-column>
+          <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime">
+          </el-table-column>
+<!--          <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">-->
+<!--            <template slot-scope="scope">-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="success"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-edit"-->
+<!--                @click="handleUpdate(scope.row)"-->
+<!--                v-hasPermi="['da:leakageDetection:edit']"-->
+<!--              >淇敼</el-button>-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="danger"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-delete"-->
+<!--                @click="handleDelete(scope.row)"-->
+<!--                v-hasPermi="['da:leakageDetection:remove']"-->
+<!--              >鍒犻櫎</el-button>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀瑰婕忔娴嬪璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+          <el-input v-model="form.sfcCode" placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�" />
+        </el-form-item>
+        <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+          <el-input v-model="form.locationCode" placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�" />
+        </el-form-item>
+        <el-form-item label="鍙傛暟闆嗙紪鐮�" prop="paramSetCode">
+          <el-input v-model="form.paramSetCode" placeholder="璇疯緭鍏ュ弬鏁伴泦缂栫爜" />
+        </el-form-item>
+        <el-form-item label="鍙傛暟闆嗗悕绉�" prop="paramSetName">
+          <el-input v-model="form.paramSetName" placeholder="璇疯緭鍏ュ弬鏁伴泦鍚嶇О" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="describe">
+          <el-input v-model="form.describe" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鍘嬪姏鍊�" prop="pressureValue">
+          <el-input v-model="form.pressureValue" placeholder="璇疯緭鍏ュ帇鍔涘��" />
+        </el-form-item>
+        <el-form-item label="娉勯湶鐜�" prop="leakageRate">
+          <el-input v-model="form.leakageRate" placeholder="璇疯緭鍏ユ硠闇茬巼" />
+        </el-form-item>
+        <el-form-item label="姘撮亾浜掓紡娉勬紡閲�" prop="Leakrate1">
+          <el-input v-model="form.Leakrate1" placeholder="璇疯緭鍏ユ按閬撲簰婕忔硠婕忛噺" />
+        </el-form-item>
+        <el-form-item label="姘撮亾澶栨紡娉勬紡閲�" prop="Leakrate2">
+          <el-input v-model="form.Leakrate2" placeholder="璇疯緭鍏ユ按閬撳婕忔硠婕忛噺" />
+        </el-form-item>
+        <el-form-item label="榻胯疆绠卞婕忔硠婕忛噺" prop="Leakrate3">
+          <el-input v-model="form.Leakrate3" placeholder="璇疯緭鍏ラ娇杞澶栨紡娉勬紡閲�" />
+        </el-form-item>
+        <el-form-item label="娌归亾澶栨紡娉勬紡閲�" prop="Leakrate4">
+          <el-input v-model="form.Leakrate4" placeholder="璇疯緭鍏ユ补閬撳婕忔硠婕忛噺" />
+        </el-form-item>
+        <el-form-item label="姘撮亾浜掓紡鍘嬪姏" prop="Press1">
+          <el-input v-model="form.Press1" placeholder="璇疯緭鍏ユ按閬撲簰婕忓帇鍔�" />
+        </el-form-item>
+        <el-form-item label="姘撮亾澶栨紡鍘嬪姏" prop="Press2">
+          <el-input v-model="form.Press2" placeholder="璇疯緭鍏ユ按閬撳婕忓帇鍔�" />
+        </el-form-item>
+        <el-form-item label="榻胯疆绠卞婕忓帇鍔�" prop="Press3">
+          <el-input v-model="form.Press3" placeholder="璇疯緭鍏ラ娇杞澶栨紡鍘嬪姏" />
+        </el-form-item>
+        <el-form-item label="娌归亾澶栨紡鍘嬪姏" prop="Press4">
+          <el-input v-model="form.Press4" placeholder="璇疯緭鍏ユ补閬撳婕忓帇鍔�" />
+        </el-form-item>
+        <el-form-item label="姘撮亾浜掓紡缁撴灉鐘舵��:1OK 2NG" prop="Status1">
+          <el-input v-model="form.Status1" placeholder="璇疯緭鍏ユ按閬撲簰婕忕粨鏋滅姸鎬�:1OK 2NG" />
+        </el-form-item>
+        <el-form-item label="姘撮亾澶栨紡缁撴灉鐘舵��:1OK 2NG" prop="Status2">
+          <el-input v-model="form.Status2" placeholder="璇疯緭鍏ユ按閬撳婕忕粨鏋滅姸鎬�:1OK 2NG" />
+        </el-form-item>
+        <el-form-item label="榻胯疆绠卞婕忕粨鏋滅姸鎬�:1OK 2NG" prop="Status3">
+          <el-input v-model="form.Status3" placeholder="璇疯緭鍏ラ娇杞澶栨紡缁撴灉鐘舵��:1OK 2NG" />
+        </el-form-item>
+        <el-form-item label="娌归亾澶栨紡缁撴灉鐘舵��:1OK 2NG" prop="Status4">
+          <el-input v-model="form.Status4" placeholder="璇疯緭鍏ユ补閬撳婕忕粨鏋滅姸鎬�:1OK 2NG" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listLeakageDetection, getLeakageDetection, delLeakageDetection, addLeakageDetection, updateLeakageDetection } from "@/api/main/da/leakageDetection/leakageDetection";
+
+export default {
+  name: "LeakageDetection",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 澶栨紡妫�娴嬭〃鏍兼暟鎹�
+      leakageDetectionList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        locationCode: null,
+        paramSetCode: null,
+        paramSetName: null,
+        result: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ澶栨紡妫�娴嬪垪琛� */
+    getList() {
+      this.loading = true;
+      listLeakageDetection(this.queryParams).then(response => {
+        this.leakageDetectionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        sfcCode: null,
+        locationCode: null,
+        paramSetCode: null,
+        paramSetName: null,
+        describe: null,
+        pressureValue: null,
+        leakageRate: null,
+        result: null,
+        Leakrate1: null,
+        Leakrate2: null,
+        Leakrate3: null,
+        Leakrate4: null,
+        Press1: null,
+        Press2: null,
+        Press3: null,
+        Press4: null,
+        Status1: null,
+        Status2: null,
+        Status3: null,
+        Status4: null,
+        collectTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.titleName = "娣诲姞澶栨紡妫�娴�";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getLeakageDetection(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼澶栨紡妫�娴�";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateLeakageDetection(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addLeakageDetection(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎澶栨紡妫�娴嬬紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delLeakageDetection(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/leakageDetection/export', {
+        ...this.queryParams
+      }, `leakageDetection_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/jcdm-ui/src/views/main/da/oilFilling/index.vue b/jcdm-ui/src/views/main/da/oilFilling/index.vue
new file mode 100644
index 0000000..92278cc
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/oilFilling/index.vue
@@ -0,0 +1,392 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+            <el-input
+              v-model="queryParams.sfcCode"
+              placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+            <el-input
+              v-model="queryParams.locationCode"
+              placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+    </el-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <el-row :gutter="10" class="mb8">
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="primary"-->
+<!--              plain-->
+<!--              icon="el-icon-plus"-->
+<!--              size="mini"-->
+<!--              @click="handleAdd"-->
+<!--              v-hasPermi="['da:oilFilling:add']"-->
+<!--            >鏂板</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="success"-->
+<!--              plain-->
+<!--              icon="el-icon-edit"-->
+<!--              size="mini"-->
+<!--              :disabled="single"-->
+<!--              @click="handleUpdate"-->
+<!--              v-hasPermi="['da:oilFilling:edit']"-->
+<!--            >淇敼</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="danger"-->
+<!--              plain-->
+<!--              icon="el-icon-delete"-->
+<!--              size="mini"-->
+<!--              :disabled="multiple"-->
+<!--              @click="handleDelete"-->
+<!--              v-hasPermi="['da:oilFilling:remove']"-->
+<!--            >鍒犻櫎</el-button>-->
+<!--          </el-col>-->
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['da:oilFilling:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="oilFillingList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="涓婚敭id" align="center" prop="id" />
+          <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode">
+          </el-table-column>
+          <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode">
+          </el-table-column>
+          <el-table-column label="涓�鍙锋灙瀹為檯鍔犳补閲�(L)" align="center" prop="actualOilvolume1">
+          </el-table-column>
+          <el-table-column label="浜屽彿鏋疄闄呭姞娌归噺(L)" align="center" prop="actualOilvolume2">
+          </el-table-column>
+          <el-table-column label="涓夊彿鏋疄闄呭姞娌归噺(L)" align="center" prop="actualOilvolume3">
+          </el-table-column>
+          <el-table-column label="涓�鍙锋灙鍔犳补绫诲瀷" align="center" prop="oilModel1">
+          </el-table-column>
+          <el-table-column label="浜屽彿鏋姞娌圭被鍨�" align="center" prop="oilModel2">
+          </el-table-column>
+          <el-table-column label="涓夊彿鏋姞娌圭被鍨�" align="center" prop="oilModel3">
+          </el-table-column>
+          <el-table-column label="涓�鍙锋灙棰勮鍔犳补閲�(L)" align="center" prop="setOilvolume1">
+          </el-table-column>
+          <el-table-column label="浜屽彿鏋璁″姞娌归噺(L)" align="center" prop="setOilvolume2">
+          </el-table-column>
+          <el-table-column label="涓夊彿鏋璁″姞娌归噺(L)" align="center" prop="setOilvolume3">
+          </el-table-column>
+          <el-table-column label="涓�鍙锋灙鍔犳补鐘舵��1OK锛�2NG" align="center" prop="status1">
+          </el-table-column>
+          <el-table-column label="浜屽彿鏋姞娌圭姸鎬�1OK锛�2NG" align="center" prop="status2">
+          </el-table-column>
+          <el-table-column label="涓夊彿鏋姞娌圭姸鎬�1OK锛�2NG" align="center" prop="status3">
+          </el-table-column>
+          <el-table-column label="涓�鍙锋灙鍔犳补鏃堕棿" align="center" prop="time1">
+          </el-table-column>
+          <el-table-column label="浜屽彿鏋姞娌规椂闂�" align="center" prop="time2">
+          </el-table-column>
+          <el-table-column label="涓夊彿鏋姞娌规椂闂�" align="center" prop="time3">
+          </el-table-column>
+          <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime">
+          </el-table-column>
+<!--          <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">-->
+<!--            <template slot-scope="scope">-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="success"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-edit"-->
+<!--                @click="handleUpdate(scope.row)"-->
+<!--                v-hasPermi="['da:oilFilling:edit']"-->
+<!--              >淇敼</el-button>-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="danger"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-delete"-->
+<!--                @click="handleDelete(scope.row)"-->
+<!--                v-hasPermi="['da:oilFilling:remove']"-->
+<!--              >鍒犻櫎</el-button>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀规満娌瑰姞娉ㄥ璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+          <el-input v-model="form.sfcCode" placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�" />
+        </el-form-item>
+        <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+          <el-input v-model="form.locationCode" placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="describe">
+          <el-input v-model="form.describe" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="璁惧畾鍔犳补閲�" prop="setFuelVolume">
+          <el-input v-model="form.setFuelVolume" placeholder="璇疯緭鍏ヨ瀹氬姞娌归噺" />
+        </el-form-item>
+        <el-form-item label="瀹為檯鍔犳补閲�" prop="actualFuelConsumption">
+          <el-input v-model="form.actualFuelConsumption" placeholder="璇疯緭鍏ュ疄闄呭姞娌归噺" />
+        </el-form-item>
+        <el-form-item label="鍔犳补鑰楁椂" prop="refuelingTime">
+          <el-input v-model="form.refuelingTime" placeholder="璇疯緭鍏ュ姞娌硅�楁椂" />
+        </el-form-item>
+        <el-form-item label="鍔犳补鐘舵��" prop="result">
+          <el-input v-model="form.result" placeholder="璇疯緭鍏ュ姞娌圭姸鎬�" />
+        </el-form-item>
+        <el-form-item label="涓�鍙锋灙瀹為檯鍔犳补閲�(L)" prop="actualOilvolume1">
+          <el-input v-model="form.actualOilvolume1" placeholder="璇疯緭鍏ヤ竴鍙锋灙瀹為檯鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="浜屽彿鏋疄闄呭姞娌归噺(L)" prop="actualOilvolume2">
+          <el-input v-model="form.actualOilvolume2" placeholder="璇疯緭鍏ヤ簩鍙锋灙瀹為檯鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="涓夊彿鏋疄闄呭姞娌归噺(L)" prop="actualOilvolume3">
+          <el-input v-model="form.actualOilvolume3" placeholder="璇疯緭鍏ヤ笁鍙锋灙瀹為檯鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="涓�鍙锋灙鍔犳补绫诲瀷" prop="OilModel1">
+          <el-input v-model="form.OilModel1" placeholder="璇疯緭鍏ヤ竴鍙锋灙鍔犳补绫诲瀷" />
+        </el-form-item>
+        <el-form-item label="浜屽彿鏋姞娌圭被鍨�" prop="OilModel2">
+          <el-input v-model="form.OilModel2" placeholder="璇疯緭鍏ヤ簩鍙锋灙鍔犳补绫诲瀷" />
+        </el-form-item>
+        <el-form-item label="涓夊彿鏋姞娌圭被鍨�" prop="OilModel3">
+          <el-input v-model="form.OilModel3" placeholder="璇疯緭鍏ヤ笁鍙锋灙鍔犳补绫诲瀷" />
+        </el-form-item>
+        <el-form-item label="涓�鍙锋灙棰勮鍔犳补閲�(L)" prop="setOilvolume1">
+          <el-input v-model="form.setOilvolume1" placeholder="璇疯緭鍏ヤ竴鍙锋灙棰勮鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="浜屽彿鏋璁″姞娌归噺(L)" prop="setOilvolume2">
+          <el-input v-model="form.setOilvolume2" placeholder="璇疯緭鍏ヤ簩鍙锋灙棰勮鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="涓夊彿鏋璁″姞娌归噺(L)" prop="setOilvolume3">
+          <el-input v-model="form.setOilvolume3" placeholder="璇疯緭鍏ヤ笁鍙锋灙棰勮鍔犳补閲�(L)" />
+        </el-form-item>
+        <el-form-item label="涓�鍙锋灙鍔犳补鐘舵��1OK锛�2NG" prop="Status1">
+          <el-input v-model="form.Status1" placeholder="璇疯緭鍏ヤ竴鍙锋灙鍔犳补鐘舵��1OK锛�2NG" />
+        </el-form-item>
+        <el-form-item label="浜屽彿鏋姞娌圭姸鎬�1OK锛�2NG" prop="Status2">
+          <el-input v-model="form.Status2" placeholder="璇疯緭鍏ヤ簩鍙锋灙鍔犳补鐘舵��1OK锛�2NG" />
+        </el-form-item>
+        <el-form-item label="涓夊彿鏋姞娌圭姸鎬�1OK锛�2NG" prop="Status3">
+          <el-input v-model="form.Status3" placeholder="璇疯緭鍏ヤ笁鍙锋灙鍔犳补鐘舵��1OK锛�2NG" />
+        </el-form-item>
+        <el-form-item label="涓�鍙锋灙鍔犳补鏃堕棿" prop="Time1">
+          <el-input v-model="form.Time1" placeholder="璇疯緭鍏ヤ竴鍙锋灙鍔犳补鏃堕棿" />
+        </el-form-item>
+        <el-form-item label="浜屽彿鏋姞娌规椂闂�" prop="Time2">
+          <el-input v-model="form.Time2" placeholder="璇疯緭鍏ヤ簩鍙锋灙鍔犳补鏃堕棿" />
+        </el-form-item>
+        <el-form-item label="涓夊彿鏋姞娌规椂闂�" prop="Time3">
+          <el-input v-model="form.Time3" placeholder="璇疯緭鍏ヤ笁鍙锋灙鍔犳补鏃堕棿" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listOilFilling, getOilFilling, delOilFilling, addOilFilling, updateOilFilling } from "@/api/main/da/oilFilling/oilFilling";
+
+export default {
+  name: "OilFilling",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鏈烘补鍔犳敞琛ㄦ牸鏁版嵁
+      oilFillingList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        locationCode: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ鏈烘补鍔犳敞鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listOilFilling(this.queryParams).then(response => {
+        this.oilFillingList = response.rows;
+        console.log(response.rows)
+        console.log(this.oilFillingList)
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        sfcCode: null,
+        locationCode: null,
+        describe: null,
+        setFuelVolume: null,
+        actualFuelConsumption: null,
+        refuelingTime: null,
+        result: null,
+        actualOilvolume1: null,
+        actualOilvolume2: null,
+        actualOilvolume3: null,
+        OilModel1: null,
+        OilModel2: null,
+        OilModel3: null,
+        setOilvolume1: null,
+        setOilvolume2: null,
+        setOilvolume3: null,
+        Status1: null,
+        Status2: null,
+        Status3: null,
+        Time1: null,
+        Time2: null,
+        Time3: null,
+        collectTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.titleName = "娣诲姞鏈烘补鍔犳敞";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getOilFilling(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼鏈烘补鍔犳敞";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateOilFilling(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addOilFilling(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鏈烘补鍔犳敞缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delOilFilling(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/oilFilling/export', {
+        ...this.queryParams
+      }, `oilFilling_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/jcdm-ui/src/views/main/da/tightenCollection/index.vue b/jcdm-ui/src/views/main/da/tightenCollection/index.vue
new file mode 100644
index 0000000..25f169e
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/tightenCollection/index.vue
@@ -0,0 +1,364 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+            <el-input
+              v-model="queryParams.sfcCode"
+              placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+            <el-input
+              v-model="queryParams.locationCode"
+              placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鍙傛暟闆嗙紪鐮�" prop="paramSetCode">
+            <el-input
+              v-model="queryParams.paramSetCode"
+              placeholder="璇疯緭鍏ュ弬鏁伴泦缂栫爜"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鍙傛暟闆嗗悕绉�" prop="paramSetName">
+            <el-input
+              v-model="queryParams.paramSetName"
+              placeholder="璇疯緭鍏ュ弬鏁伴泦鍚嶇О"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+<!--          <el-form-item label="鎵煩鐘舵��" prop="torqueStatus">-->
+<!--            <el-select v-model="queryParams.torqueStatus" placeholder="璇烽�夋嫨鎵煩鐘舵��" clearable>-->
+<!--              <el-option-->
+<!--                v-for="dict in dict.type.${dictType}"-->
+<!--                :key="dict.value"-->
+<!--                :label="dict.label"-->
+<!--                :value="dict.value"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </el-form-item>-->
+<!--          <el-form-item label="瑙掑害鐘舵��" prop="angleStatus">-->
+<!--            <el-select v-model="queryParams.angleStatus" placeholder="璇烽�夋嫨瑙掑害鐘舵��" clearable>-->
+<!--              <el-option-->
+<!--                v-for="dict in dict.type.${dictType}"-->
+<!--                :key="dict.value"-->
+<!--                :label="dict.label"-->
+<!--                :value="dict.value"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </el-form-item>-->
+          <el-form-item style="float: right">
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+    </el-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <el-row :gutter="10" class="mb8">
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="primary"-->
+<!--              plain-->
+<!--              icon="el-icon-plus"-->
+<!--              size="mini"-->
+<!--              @click="handleAdd"-->
+<!--              v-hasPermi="['da:tightenCollection:add']"-->
+<!--            >鏂板</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="success"-->
+<!--              plain-->
+<!--              icon="el-icon-edit"-->
+<!--              size="mini"-->
+<!--              :disabled="single"-->
+<!--              @click="handleUpdate"-->
+<!--              v-hasPermi="['da:tightenCollection:edit']"-->
+<!--            >淇敼</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              type="danger"-->
+<!--              plain-->
+<!--              icon="el-icon-delete"-->
+<!--              size="mini"-->
+<!--              :disabled="multiple"-->
+<!--              @click="handleDelete"-->
+<!--              v-hasPermi="['da:tightenCollection:remove']"-->
+<!--            >鍒犻櫎</el-button>-->
+<!--          </el-col>-->
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['da:tightenCollection:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="tightenCollectionList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="涓婚敭id" align="center" prop="id" />
+          <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode">
+          </el-table-column>
+          <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode">
+          </el-table-column>
+          <el-table-column label="鍙傛暟闆嗗悕绉�" align="center" prop="paramSetName">
+          </el-table-column>
+          <el-table-column label="鎵煩鍊�" align="center" prop="torque">
+          </el-table-column>
+          <el-table-column label="瑙掑害鍊�" align="center" prop="angle">
+          </el-table-column>
+          <el-table-column label="瑙掑害鐘舵��" align="center" prop="angleStatus">
+          </el-table-column>
+          <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime">
+          </el-table-column>
+<!--          <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">-->
+<!--            <template slot-scope="scope">-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="success"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-edit"-->
+<!--                @click="handleUpdate(scope.row)"-->
+<!--                v-hasPermi="['da:tightenCollection:edit']"-->
+<!--              >淇敼</el-button>-->
+<!--              <el-button-->
+<!--                size="mini"-->
+<!--                type="danger"-->
+<!--                plain-->
+<!--                style="width: 72px"-->
+<!--                icon="el-icon-delete"-->
+<!--                @click="handleDelete(scope.row)"-->
+<!--                v-hasPermi="['da:tightenCollection:remove']"-->
+<!--              >鍒犻櫎</el-button>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀规嫥绱ч噰闆嗗璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="鎬绘垚搴忓垪鍙�" prop="sfcCode">
+          <el-input v-model="form.sfcCode" placeholder="璇疯緭鍏ユ�绘垚搴忓垪鍙�" />
+        </el-form-item>
+        <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">
+          <el-input v-model="form.locationCode" placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�" />
+        </el-form-item>
+        <el-form-item label="鍙傛暟闆嗙紪鐮�" prop="paramSetCode">
+          <el-input v-model="form.paramSetCode" placeholder="璇疯緭鍏ュ弬鏁伴泦缂栫爜" />
+        </el-form-item>
+        <el-form-item label="鍙傛暟闆嗗悕绉�" prop="paramSetName">
+          <el-input v-model="form.paramSetName" placeholder="璇疯緭鍏ュ弬鏁伴泦鍚嶇О" />
+        </el-form-item>
+        <el-form-item label="鎵煩鍊�" prop="torque">
+          <el-input v-model="form.torque" placeholder="璇疯緭鍏ユ壄鐭╁��" />
+        </el-form-item>
+<!--        <el-form-item label="鎵煩鐘舵��" prop="torqueStatus">-->
+<!--          <el-radio-group v-model="form.torqueStatus">-->
+<!--            <el-radio-->
+<!--              v-for="dict in dict.type.${dictType}"-->
+<!--              :key="dict.value"-->
+<!--              :label="dict.value"-->
+<!--            >{{dict.label}}</el-radio>-->
+<!--          </el-radio-group>-->
+<!--        </el-form-item>-->
+        <el-form-item label="瑙掑害鍊�" prop="angle">
+          <el-input v-model="form.angle" placeholder="璇疯緭鍏ヨ搴﹀��" />
+        </el-form-item>
+<!--        <el-form-item label="瑙掑害鐘舵��" prop="angleStatus">-->
+<!--          <el-radio-group v-model="form.angleStatus">-->
+<!--            <el-radio-->
+<!--              v-for="dict in dict.type.${dictType}"-->
+<!--              :key="dict.value"-->
+<!--              :label="dict.value"-->
+<!--            >{{dict.label}}</el-radio>-->
+<!--          </el-radio-group>-->
+<!--        </el-form-item>-->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listTightenCollection, getTightenCollection, delTightenCollection, addTightenCollection, updateTightenCollection } from "@/api/main/da/tightenCollection/tightenCollection";
+
+export default {
+  name: "TightenCollection",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鎷х揣閲囬泦琛ㄦ牸鏁版嵁
+      tightenCollectionList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        locationCode: null,
+        paramSetCode: null,
+        paramSetName: null,
+        torqueStatus: null,
+        angleStatus: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ鎷х揣閲囬泦鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listTightenCollection(this.queryParams).then(response => {
+        this.tightenCollectionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        sfcCode: null,
+        locationCode: null,
+        paramSetCode: null,
+        paramSetName: null,
+        torque: null,
+        torqueStatus: null,
+        angle: null,
+        angleStatus: null,
+        collectTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.titleName = "娣诲姞鎷х揣閲囬泦";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTightenCollection(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼鎷х揣閲囬泦";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateTightenCollection(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTightenCollection(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鎷х揣閲囬泦缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delTightenCollection(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/tightenCollection/export', {
+        ...this.queryParams
+      }, `tightenCollection_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3