Browse Source

临时提交

王苗苗 2 weeks ago
parent
commit
7426a3df11

+ 215 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/business/HandleDataController.java

@@ -0,0 +1,215 @@
+package com.ruoyi.web.controller.business;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.business.domain.*;
+import com.ruoyi.business.mapper.BizDeviceMapper;
+import com.ruoyi.business.mapper.TOrganizationMapper;
+import com.ruoyi.business.mapper.TPositionMapper;
+import com.ruoyi.business.mapper.TQualityConfMapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Collection;
+import java.util.List;
+
+import static com.ruoyi.common.constant.Constants.HTTP_GET_TIME_OUT_MILLION_SECONDS;
+import static com.ruoyi.common.constant.Constants.SQL_SERVER_REMOTE_INTERFACE_ADDR;
+
+/**
+ *
+ * 手动处理数据相关的,大部分都是只需要同步一次即可完成的任务
+ *
+ */
+@RestController
+@Slf4j
+public class HandleDataController {
+
+    @Autowired
+    private BizDeviceMapper bizDeviceMapper;
+
+    @Autowired
+    private TOrganizationMapper organizationMapper;
+
+    @Autowired
+    private TPositionMapper positionMapper;
+
+    @Autowired
+    private TQualityConfMapper qualityConfMapper;
+
+
+    /**
+     * 同步 组织【设备信息】列表
+     */
+    @GetMapping("/bizDeviceList")
+    public R<String> bizDeviceList(BizDevice reqBean)
+    {
+        String result;
+        List<BizDevice> list;
+        try {
+            result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/bizDeviceList", HTTP_GET_TIME_OUT_MILLION_SECONDS);
+            log.info("调用同步设备接口返回的结果为{}", result);
+            list = JSON.parseArray(result, BizDevice.class);
+        } catch (Exception e) {
+            throw new RuntimeException("调用同步设备接口异常,异常信息为:" + e.getMessage());
+        }
+        log.info("调用同步设备接口转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(list));
+        //执行插入本地数据的操作
+        //后续的设备状态更新定时任务参考此功能
+        return R.ok("同步成功");
+    }
+
+
+
+    /**
+     * 同步 组织【水厂信息】列表
+     */
+    @GetMapping("/syncWaterWorkList")
+    public R<String> syncWaterWorkList(BizWaterWork reqBean)
+    {
+        String result;
+        List<BizWaterWork> list;
+        try {
+            result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/bizWaterWorkList", HTTP_GET_TIME_OUT_MILLION_SECONDS);
+            log.info("调用同步组织接口接口返回的结果为{}", result);
+            list = JSON.parseArray(result, BizWaterWork.class);
+        } catch (Exception e) {
+            throw new RuntimeException("调用同步组织接口异常,异常信息为:" + e.getMessage());
+        }
+        log.info("调用同步组织接口转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(list));
+        //执行插入本地数据的操作
+        if(!CollectionUtils.isEmpty(list)){
+            for (BizWaterWork bizWaterWork : list) {
+                TOrganization organization = new TOrganization();
+                Long parentId = bizWaterWork.getParentId();
+                organization.setId(bizWaterWork.getWorksId());
+                organization.setName(bizWaterWork.getWorksName());
+                organization.setCode(bizWaterWork.getWorksNo());
+                organization.setType(212L == parentId ? 0 : 1);
+                organization.setProvinceCode(bizWaterWork.getWorksProvince());
+                organization.setCityCode(bizWaterWork.getWorksCity());
+                organization.setCountryCode(bizWaterWork.getWorksArea());
+                organization.setConcat(bizWaterWork.getWorksMaintainer());
+                organization.setPhone(bizWaterWork.getWorksTel());
+                organization.setStatus(Integer.valueOf(bizWaterWork.getWorksStatus()));
+                organization.setParentId(parentId);
+                organization.setTopId(parentId);//因为只有2级
+                organization.setSort(bizWaterWork.getOrderNum());
+                organization.setAddress(bizWaterWork.getWorksAddress());
+                organization.setLongitude(bizWaterWork.getWorksLongitude());
+                organization.setLatitude(bizWaterWork.getWorksLatitude());
+                organization.setCreateBy("sys");
+                organization.setCreateTime(DateUtils.getNowDate());
+                this.organizationMapper.insertTOrganization(organization);
+            }
+        }
+        return R.ok("同步成功");
+    }
+
+
+
+
+    /**
+     * 同步 组织【取样点位】列表
+     */
+    @GetMapping("/syncDeviceSampleList")
+    @Transactional
+    public R<String> syncDeviceSampleList(ZDeviceSample reqBean)
+    {
+        String result;
+        List<ZDeviceSample> list;
+        try {
+            result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/deviceSampleList", HTTP_GET_TIME_OUT_MILLION_SECONDS);
+            log.info("调用同步取样点位接口接口返回的结果为{}", result);
+            list = JSON.parseArray(result, ZDeviceSample.class);
+        } catch (Exception e) {
+            throw new RuntimeException("调用同步取样点位接口异常,异常信息为:" + e.getMessage());
+        }
+        log.info("调用同步取样点位接口转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(list));
+        //执行插入本地数据的操作
+        if(!CollectionUtils.isEmpty(list)){
+            for (ZDeviceSample deviceSample : list) {
+                TPosition tPosition = new TPosition();
+                String deviceNo = deviceSample.getDeviceNo();
+                //通过设备编号去查询设备ID和水厂ID
+                if(StringUtils.isBlank(deviceNo)){
+                    log.error("查询到的点位信息对应的设备编号时,因为没有配置设备编号导致无法获取水厂和设备信息!跳过该条数据,此数据为{}", JSON.toJSONString(deviceSample));
+                    continue;
+                }
+                //查询设备
+                List<BizDevice> deviceList = this.bizDeviceMapper.selectBizDeviceList(BizDevice.builder().deviceNo(deviceNo).build());
+                if(CollectionUtils.isEmpty(deviceList)){
+                    log.error("查询到的点位信息对应的设备编号时,因为没有通过设备编号查询到设备信息导致无法获取水厂和设备信息!跳过该条数据,此数据为{}", JSON.toJSONString(deviceSample));
+                    continue;
+                }
+                if(deviceList.size() > 1){
+                    log.error("通过设备编号查询设备详情时,查出多个设备信息,异常数据为{}", JSON.toJSONString(deviceSample));
+                    continue;
+                }
+                BizDevice bizDevice = deviceList.get(0);
+                tPosition.setOrganizationId(bizDevice.getDeviceWorks());
+                tPosition.setDeviceId(bizDevice.getDeviceId());
+                tPosition.setCode(deviceSample.getAssayType());
+                tPosition.setName(deviceSample.getItemName());
+                tPosition.setCreateBy("sys");
+                tPosition.setCreateTime(DateUtils.getNowDate());
+                this.positionMapper.insertTPosition(tPosition);
+            }
+        }
+        return R.ok("同步成功");
+    }
+
+
+    //化验项目表比较简单,直接SQL语句处理了
+
+
+
+
+    /**
+     * 同步 组织【质控样配置】列表
+     */
+    @GetMapping("/syncQualityValueList")
+    @Transactional
+    public R<String> syncQualityValueList(ZQualityValue reqBean)
+    {
+        String result;
+        List<ZQualityValue> list;
+        try {
+            result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/qualityValueList", HTTP_GET_TIME_OUT_MILLION_SECONDS);
+            log.info("调用同步质控样配置接口接口返回的结果为{}", result);
+            list = JSON.parseArray(result, ZQualityValue.class);
+        } catch (Exception e) {
+            throw new RuntimeException("调用同步质控样配置接口异常,异常信息为:" + e.getMessage());
+        }
+        log.info("调用同步质控样配置接口转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(list));
+        //执行插入本地数据的操作
+        if(!CollectionUtils.isEmpty(list)){
+            for (ZQualityValue qualityValue : list) {
+                TQualityConf qualityConf = new TQualityConf();
+                qualityConf.setOrganizationId(qualityValue.getDeviceWorks());
+                qualityConf.setItemId(Long.valueOf(qualityValue.getAssayItem()));
+                qualityConf.setResultValue(BigDecimal.valueOf(qualityValue.getResultValue()));
+                qualityConf.setFloatRate(null);
+                qualityConf.setHighValue(BigDecimal.valueOf(qualityValue.getHighValue()));
+                qualityConf.setLowValue(BigDecimal.valueOf(qualityValue.getLowValue()));
+                qualityConf.setBeginTime(qualityValue.getBeginTime());
+                qualityConf.setEndTime(qualityValue.getEndTime());
+                qualityConf.setCreateBy("sys");
+                qualityConf.setCreateTime(DateUtils.getNowDate());
+                this.qualityConfMapper.insertTQualityConf(qualityConf);
+            }
+        }
+        return R.ok("同步成功");
+    }
+
+
+
+}

+ 2 - 2
ruoyi-admin/src/main/resources/application-local.yml

@@ -7,9 +7,9 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/smart-robot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://192.168.40.20:3306/smart-robot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: 1234qwer
+                password: Hongshan2024@longjiang
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 7 - 0
ruoyi-common/pom.xml

@@ -140,6 +140,13 @@
             <version>3.1.1</version>
         </dependency>
 
+        <!-- hutool -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.16</version>
+        </dependency>
+
 
     </dependencies>
 

+ 4 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -174,4 +174,8 @@ public class Constants
     public static final int INT_4 = 4;
 
     public static final int INT_2 = 2;
+
+    public static final String SQL_SERVER_REMOTE_INTERFACE_ADDR = "http://localhost:8881";
+
+    public static final int HTTP_GET_TIME_OUT_MILLION_SECONDS = 30 * 1000;
 }

+ 21 - 21
ruoyi-system/src/main/java/com/ruoyi/business/domain/BizDevice.java

@@ -26,47 +26,47 @@ public class BizDevice extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /** id */
     private Long deviceId;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 设备编号 */
+    @Excel(name = "设备编号")
     private String deviceNo;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 设备名称 */
+    @Excel(name = "设备名称")
     private String deviceName;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 设备sn */
+    @Excel(name = "设备sn")
     private String deviceSn;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 设备用途 */
+    @Excel(name = "设备用途")
     private String deviceModel;
 
     /** $column.columnComment */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String deviceMaker;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 水厂ID */
+    @Excel(name = "水厂ID")
     private Long deviceWorks;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 维护人员 */
+    @Excel(name = "维护人员")
     private String deviceMaintainer;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 维护人员电话 */
+    @Excel(name = "维护人员电话")
     private String deviceTel;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**  */
+    @Excel(name = "")
     private String deviceType;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /** 0:使用;1:停用 */
+    @Excel(name = "0:使用;1:停用")
     private String deviceStatus;
 
     /** $column.columnComment */
@@ -121,8 +121,8 @@ public class BizDevice extends BaseEntity
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String deviceAddress;
 
-    /** 设备类型(1:化验室,2:连续检测) */
-    @Excel(name = "设备类型(1:化验室,2:连续检测)")
+    /** 设备用途(1:化验室,2:连续检测)' */
+    @Excel(name = "设备用途(1:化验室,2:连续检测)'")
     private String type;
 
     /** 删除标志(0代表存在 2代表删除) */

+ 113 - 0
ruoyi-system/src/main/java/com/ruoyi/business/domain/ZDeviceSample.java

@@ -0,0 +1,113 @@
+package com.ruoyi.business.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+/**
+ * 【请填写功能名称】对象 z_device_sample
+ * 
+ * @author ruoyi
+ * @date 2025-03-06
+ */
+public class ZDeviceSample
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 设备样品对应关系id */
+    private Long sampleId;
+
+    /** 设备no */
+    private String deviceNo;
+
+    /** 化验样品编号 */
+    private String assayType;
+
+    /** 化验样品名称 */
+    private String itemName;
+
+    /** 创建者 */
+    private String createBy;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 更新者 */
+    private String updateBy;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public void setSampleId(Long sampleId)
+    {
+        this.sampleId = sampleId;
+    }
+
+    public Long getSampleId() 
+    {
+        return sampleId;
+    }
+    public void setDeviceNo(String deviceNo) 
+    {
+        this.deviceNo = deviceNo;
+    }
+
+    public String getDeviceNo() 
+    {
+        return deviceNo;
+    }
+    public void setAssayType(String assayType) 
+    {
+        this.assayType = assayType;
+    }
+
+    public String getAssayType() 
+    {
+        return assayType;
+    }
+    public void setItemName(String itemName) 
+    {
+        this.itemName = itemName;
+    }
+
+    public String getItemName() 
+    {
+        return itemName;
+    }
+
+}