diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.java
new file mode 100644
index 00000000..bf6ba060
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.java
@@ -0,0 +1,40 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
+
+/**
+ * 酸雾塔报警记录对照表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+public interface EpTowerRecAlarmMapper extends BaseMapper {
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.xml
new file mode 100644
index 00000000..e9d6b5b5
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpTowerRecAlarmMapper.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.java
new file mode 100644
index 00000000..4a0be341
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.java
@@ -0,0 +1,40 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.desk.energy.pojo.entity.RpParameterSet;
+
+/**
+ * 参数设置表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+public interface RpParameterSetMapper extends BaseMapper {
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.xml
new file mode 100644
index 00000000..c050aa5d
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/RpParameterSetMapper.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsDosingRecEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsDosingRecEntity.java
index fc87ce31..03f622b8 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsDosingRecEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsDosingRecEntity.java
@@ -38,6 +38,8 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
+import java.util.HashMap;
+import java.util.Map;
/**
* 废气/废水加药记录表 实体类
@@ -103,4 +105,37 @@ public class BsDosingRecEntity extends BaseEntity {
//@Schema(description = "酸雾塔")
private Long btId;
+
+
+
+ /**
+ * 废气加药
+ */
+ public static Short DORTYPE_GAS_DOS = 1;
+ /**
+ * 废水加药
+ */
+ public static Short DORTYPE_WATER_DOS = 2;
+
+ public static Map dorTypeMap = new HashMap<>(2);
+ /**
+ * 手动新增-默认已处理
+ */
+ public static Short HANDLE_RESULT_ADD = 1;
+ /**
+ * 自动生成-待处理
+ */
+ public static Short HANDLE_RESULT_WAIT = 2;
+ /**
+ * 自动生成-pda处理
+ */
+ public static Short HANDLE_RESULT_PDA = 3;
+
+ public static Map handleResultMap = new HashMap<>(3);
+
+ static {
+ handleResultMap.put(HANDLE_RESULT_ADD, "手动新增");
+ handleResultMap.put(HANDLE_RESULT_WAIT, "待处理");
+ handleResultMap.put(HANDLE_RESULT_PDA, "PDA已处理");
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsTowerReportEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsTowerReportEntity.java
index 754c61d6..b45fe700 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsTowerReportEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsTowerReportEntity.java
@@ -60,13 +60,16 @@ public class BsTowerReportEntity extends BaseEntity {
/**
* 处理状态
*/
- @Schema(description = "处理状态")
- private String dealStatus;
+ @Schema(description = "处理状态(是否报警 、、 0否1是)")
+ private Boolean dealStatus = false;
/**
* 编码
*/
@Schema(description = "编码")
private String btCode;
+ //点位
+ @Schema(description = "点位")
+ private String key;
/**
* 日期
*/
@@ -74,6 +77,17 @@ public class BsTowerReportEntity extends BaseEntity {
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@Schema(description = "日期")
private Date btDate;
+
+ @Schema(name = "开始时间")
+ @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
+ @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
+ private Date startTime;
+
+ @Schema(name = "结束时间")
+ @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
+ @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
+ private Date endTime;
+
/**
* 错误点
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsWasteGasRunRecEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsWasteGasRunRecEntity.java
index 4fa5ba40..e9991a57 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsWasteGasRunRecEntity.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/BsWasteGasRunRecEntity.java
@@ -73,10 +73,8 @@ public class BsWasteGasRunRecEntity extends BaseEntity {
/**
* 运行时间
*/
- @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
- @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@Schema(description = "运行时间")
- private Date runTime;
+ private Double runTime;
/**
* 系统参数
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/EpTowerRecAlarm.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/EpTowerRecAlarm.java
new file mode 100644
index 00000000..e906104f
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/EpTowerRecAlarm.java
@@ -0,0 +1,76 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 酸雾塔报警记录对照表 实体类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+@Data
+@TableName("EP_TOWER_REC_ALARM")
+@Schema(description = "EpTowerRecAlarm对象")
+public class EpTowerRecAlarm extends BaseEntity implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @Schema(description = "编号")
+ private String code;
+
+ /**
+ * 点位
+ */
+ @Schema(description = "点位")
+ private String key;
+
+ /**
+ * 错误点
+ */
+ @Schema(description = "错误点")
+ private String errorPoint;
+
+ /**
+ * 消息文本
+ */
+ @Schema(description = "消息文本")
+ private String messText;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/RpParameterSet.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/RpParameterSet.java
new file mode 100644
index 00000000..7aae4e0f
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/entity/RpParameterSet.java
@@ -0,0 +1,194 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 参数设置表 实体类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+@Data
+@TableName("RP_PARAMETER_SET")
+@Schema(description = "RpParameterSet对象")
+public class RpParameterSet implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 日期
+ */
+ @Schema(description = "日期")
+ private String rpsDate;
+
+ /**
+ * 时间
+ */
+ @Schema(description = "时间")
+ private String rpsTime;
+
+ /**
+ * NF产水导电率A
+ */
+ @Schema(description = "NF产水导电率A")
+ private String nfA;
+
+ /**
+ * NF产水导电率B
+ */
+ @Schema(description = "NF产水导电率B")
+ private String nfB;
+
+ /**
+ * NF进水导电率
+ */
+ @Schema(description = "NF进水导电率")
+ private String nf;
+
+ /**
+ * RO1_1_产水导电率A
+ */
+ @Schema(description = "RO1_1_产水导电率A")
+ private String ro11A;
+
+ /**
+ * RO1_1_产水导电率B
+ */
+ @Schema(description = "RO1_1_产水导电率B")
+ private String ro11B;
+
+ /**
+ * RO1_1_产水导电率C
+ */
+ @Schema(description = "RO1_1_产水导电率C")
+ private String ro11C;
+
+ /**
+ * RO1_1_进水导电率
+ */
+ @Schema(description = "RO1_1_进水导电率")
+ private String ro11;
+
+ /**
+ * RO1_1_浓水PH值
+ */
+ @Schema(description = "RO1_1_浓水PH值")
+ private String ro11Ph;
+
+ /**
+ * RO2_1_产水导电
+ */
+ @Schema(description = "RO2_1_产水导电")
+ private String ro21;
+
+ /**
+ * RO2_1_进水导电率
+ */
+ @Schema(description = "RO2_1_进水导电率")
+ private String ro21Rate;
+
+ /**
+ * RO2_2_产水导电率
+ */
+ @Schema(description = "RO2_2_产水导电率")
+ private String ro22Rate;
+
+ /**
+ * RO2_2_进水导电
+ */
+ @Schema(description = "RO2_2_进水导电")
+ private String ro22;
+
+ /**
+ * 电镀镍PH值
+ */
+ @Schema(description = "电镀镍PH值")
+ private String electPh;
+
+ /**
+ * 废液反应池ORP_A
+ */
+ @Schema(description = "废液反应池ORP_A")
+ private String orpA;
+
+ /**
+ * 废液反应池ORP_B
+ */
+ @Schema(description = "废液反应池ORP_B")
+ private String orpB;
+
+ /**
+ * 废液反应池PH_A
+ */
+ @Schema(description = "废液反应池PH_A")
+ private String phA;
+
+ /**
+ * 废液反应池PH_B
+ */
+ @Schema(description = "废液反应池PH_B")
+ private String phB;
+
+ /**
+ * 废液反应池温度_A
+ */
+ @Schema(description = "废液反应池温度_A")
+ private String tempA;
+
+ /**
+ * 废液反应池温度_B
+ */
+ @Schema(description = "废液反应池温度_B")
+ private String tempB;
+
+ /**
+ * 生化溶解氧
+ */
+ @Schema(description = "生化溶解氧")
+ private String oxygen;
+
+ /**
+ * 阴阳床产水PH
+ */
+ @Schema(description = "阴阳床产水PH")
+ private String ph;
+
+ /**
+ * 预处理ORP
+ */
+ @Schema(description = "预处理ORP")
+ private String orp;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsDosingRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsDosingRecService.java
index b9e7150f..491fe160 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsDosingRecService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsDosingRecService.java
@@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@@ -59,4 +60,6 @@ public interface IBsDosingRecService extends BaseService {
*/
List exportBsDosingRec(Wrapper queryWrapper);
+ void towerSosRec(List objList);
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerReportService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerReportService.java
index ecb7c2ce..62246059 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerReportService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerReportService.java
@@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@@ -59,4 +60,8 @@ public interface IBsTowerReportService extends BaseService
*/
List exportBsTowerReport(Wrapper queryWrapper);
+ void setEpTowerRec(List objList);
+
+
+ BsTowerReportEntity getTowerReportByTerm(String pid, Short type, Long id);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerService.java
index 51a1e492..e1645b82 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsTowerService.java
@@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@@ -59,4 +60,6 @@ public interface IBsTowerService extends BaseService {
*/
List exportBsTower(Wrapper queryWrapper);
+ void generateData(List objList);
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsWasteGasRunRecService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsWasteGasRunRecService.java
index 610e40e2..3beb57c6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsWasteGasRunRecService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsWasteGasRunRecService.java
@@ -25,6 +25,7 @@
*/
package org.springblade.desk.energy.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@@ -59,4 +60,7 @@ public interface IBsWasteGasRunRecService extends BaseService exportBsWasteGasRunRec(Wrapper queryWrapper);
+ void creatRunData(List objList);
+
+ BsWasteGasRunRecEntity queryMaxDataByCode(String btCode);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IEpTowerRecAlarmService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IEpTowerRecAlarmService.java
new file mode 100644
index 00000000..9ffc56fe
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IEpTowerRecAlarmService.java
@@ -0,0 +1,40 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
+
+/**
+ * 酸雾塔报警记录对照表 服务类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+public interface IEpTowerRecAlarmService extends BaseService {
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IRpParameterSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IRpParameterSetService.java
new file mode 100644
index 00000000..1a52a089
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IRpParameterSetService.java
@@ -0,0 +1,45 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.service;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.energy.pojo.entity.RpParameterSet;
+
+import java.util.List;
+
+/**
+ * 参数设置表 服务类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+public interface IRpParameterSetService extends IService {
+
+ void setParameterSet(List objList);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsDosingRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsDosingRecServiceImpl.java
index 30dc426c..c6b3b692 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsDosingRecServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsDosingRecServiceImpl.java
@@ -25,18 +25,25 @@
*/
package org.springblade.desk.energy.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.desk.energy.excel.BsDosingRecExcel;
import org.springblade.desk.energy.mapper.BsDosingRecMapper;
import org.springblade.desk.energy.pojo.entity.BsDosingRecEntity;
+import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.vo.BsDosingRecVO;
import org.springblade.desk.energy.service.IBsDosingRecService;
+import org.springblade.desk.energy.service.IBsTowerService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
+import static org.springblade.desk.energy.pojo.entity.BsDosingRecEntity.HANDLE_RESULT_WAIT;
+
/**
* 废气/废水加药记录表 服务实现类
*
@@ -45,7 +52,8 @@ import java.util.List;
*/
@Service
public class BsDosingRecServiceImpl extends BaseServiceImpl implements IBsDosingRecService {
-
+@Resource
+ IBsTowerService iBsTowerService;
@Override
public IPage selectBsDosingRecPage(IPage page, BsDosingRecVO bsDosingRec) {
if(StringUtils.isNotEmpty(bsDosingRec.getQueryDosingTime())){
@@ -65,4 +73,33 @@ public class BsDosingRecServiceImpl extends BaseServiceImpl objList) {
+ List bsTowers = iBsTowerService.list();
+ for (BsTowerEntity bsTower : bsTowers) {
+ BsDosingRecEntity epDos = getOne(Wrappers.lambdaQuery(BsDosingRecEntity.class)
+ .eq(BsDosingRecEntity::getBtId,bsTower.getId())
+ .eq(BsDosingRecEntity::getHandleResult,HANDLE_RESULT_WAIT));
+ if (epDos != null) {
+ removeById(epDos.getId());
+ }
+ for (JSONObject jsonObject : objList) {
+ if ("false".equals(jsonObject.getString("defaultValue")) || "true".equals(jsonObject.getString("defaultValue"))) {
+ continue;
+ }
+ if (bsTower.getPhPoint() != null && bsTower.getPhPoint().equals(jsonObject.getString("identifierName")) && bsTower.getThreshold().doubleValue() > Double.parseDouble(jsonObject.getString("defaultValue"))) {
+ BsDosingRecEntity epDosingRec = new BsDosingRecEntity();
+ epDosingRec.setDevice(bsTower.getBtName());
+ epDosingRec.setDrug(bsTower.getDrugName());
+ epDosingRec.setDorType("2");
+ epDosingRec.setHandleResult(Long.valueOf(HANDLE_RESULT_WAIT));
+ epDosingRec.setBtId(bsTower.getId());
+ save(epDosingRec);
+ }
+
+ }
+
+ }
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerReportServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerReportServiceImpl.java
index d365f2c9..4aef1f54 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerReportServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerReportServiceImpl.java
@@ -26,17 +26,29 @@
package org.springblade.desk.energy.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.desk.energy.excel.BsTowerReportExcel;
import org.springblade.desk.energy.mapper.BsTowerReportMapper;
+import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.BsTowerReportEntity;
+import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
+import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.pojo.vo.BsTowerReportVO;
import org.springblade.desk.energy.service.IBsTowerReportService;
+import org.springblade.desk.energy.service.IBsTowerService;
+import org.springblade.desk.energy.service.IEpTowerRecAlarmService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
+
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* 酸雾塔报警记录表 服务实现类
@@ -46,7 +58,10 @@ import java.util.List;
*/
@Service
public class BsTowerReportServiceImpl extends BaseServiceImpl implements IBsTowerReportService {
-
+ @Resource
+ IBsTowerService iBsTowerService;
+ @Resource
+ IEpTowerRecAlarmService iEpTowerRecAlarmService;
@Override
public IPage selectBsTowerReportPage(IPage page, BsTowerReportVO bsTowerReport) {
if(StringUtils.isNotEmpty(bsTowerReport.getQueryBtDate())){
@@ -66,4 +81,72 @@ public class BsTowerReportServiceImpl extends BaseServiceImpl objList) {
+ JSONObject jsonListObj = new JSONObject();
+ // 拿到所有的值装到一个对象中
+ for (JSONObject jsonObject : objList) {
+ jsonListObj.put(jsonObject.getString("identifierName"), jsonObject.getString("defaultValue"));
+ }
+ // 拿出所有的报警记录对照表
+ List allEpTowerRecAlarm = iEpTowerRecAlarmService.list();
+
+ // 创建空的报警记录
+ List allAlarmList = new ArrayList<>();
+ BsTowerReportEntity epTowerRec;
+ //
+ for (String s : jsonListObj.keySet()) {
+ for (EpTowerRecAlarm epTowerRecAlarm : allEpTowerRecAlarm) {
+ // 如果当前点位为在报警记录对照表中找到,并且当前点位的值为true
+ if (s.equals(epTowerRecAlarm.getKey()) && jsonListObj.getString(s) == "true") {
+ // 添加到报警记录中
+ allAlarmList.add(epTowerRecAlarm);
+ // 查看数据库中是否存在 点位为 s 并且正在报警的数据
+ Long num = count(Wrappers.lambdaQuery(BsTowerReportEntity.class)
+ .eq(BsTowerReportEntity::getKey, s)
+ .eq(BsTowerReportEntity::getDealStatus, "1"));
+ // 如果不存在则创建一条新的数据
+ if(num != 1) {
+ epTowerRec = new BsTowerReportEntity();
+ epTowerRec.setDealStatus(true);
+ epTowerRec.setBtCode(epTowerRecAlarm.getCode());
+ epTowerRec.setKey(epTowerRecAlarm.getKey());
+ epTowerRec.setErrorPoint(epTowerRecAlarm.getErrorPoint());
+ epTowerRec.setMessText(epTowerRecAlarm.getMessText());
+ epTowerRec.setBtDate(new Date());
+ epTowerRec.setStartTime(new Date());
+ save(epTowerRec);
+ }
+ }
+ }
+ };
+ // 剩余都是不报警的数据
+ allEpTowerRecAlarm.removeAll(allAlarmList);
+ // 拿出正在报警的数据
+ List alarmList = list(Wrappers.lambdaQuery(BsTowerReportEntity.class)
+ .eq(BsTowerReportEntity::getDealStatus, "1"));
+ if(alarmList.size()>0) {
+ for (BsTowerReportEntity towerRec : alarmList) {
+ for (EpTowerRecAlarm epTowerRecAlarm : allEpTowerRecAlarm) {
+ // 如果当前报警点位在不报警的数据中,则该点位现在不报警,并且给结束时间
+ if (towerRec.getKey().equals(epTowerRecAlarm.getKey())) {
+ towerRec.setEndTime(new Date());
+ towerRec.setDealStatus(false);
+ save(towerRec);
+ }
+ }
+ }
+ }
+ }
+
+ // TODO: 2026/4/21 缺少报表用表
+ @Override
+ public BsTowerReportEntity getTowerReportByTerm(String pid, Short type, Long id) {
+ //return getOne(Wrappers.lambdaQuery(BsTowerReportEntity.class)
+ // .eq(BsTowerReportEntity::getKey, pid )
+ // .eq(BsTowerReportEntity::get, , ))
+ return null;
+ }
+
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerServiceImpl.java
index f0cf1f97..1ac8c9d3 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsTowerServiceImpl.java
@@ -25,15 +25,21 @@
*/
package org.springblade.desk.energy.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import jakarta.annotation.Resource;
import org.springblade.desk.energy.excel.BsTowerExcel;
import org.springblade.desk.energy.mapper.BsTowerMapper;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
+import org.springblade.desk.energy.pojo.entity.BsTowerReportEntity;
import org.springblade.desk.energy.pojo.vo.BsTowerVO;
+import org.springblade.desk.energy.service.IBsTowerReportService;
import org.springblade.desk.energy.service.IBsTowerService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
+
+import java.util.Date;
import java.util.List;
/**
@@ -44,7 +50,8 @@ import java.util.List;
*/
@Service
public class BsTowerServiceImpl extends BaseServiceImpl implements IBsTowerService {
-
+ //@Resource
+ //IBsTowerReportService epTowerReportService;
@Override
public IPage selectBsTowerPage(IPage page, BsTowerVO bsTower) {
return page.setRecords(baseMapper.selectBsTowerPage(page, bsTower));
@@ -59,5 +66,86 @@ public class BsTowerServiceImpl extends BaseServiceImpl objList) {
+ List bsTowers = list();
+ for (BsTowerEntity bsTower : bsTowers) {
+ for (JSONObject jsonObject : objList) {
+ String identifierName = jsonObject.getString("identifierName");
+ String defaultValue = jsonObject.getString("defaultValue");
+ // 如果当前点位与所配置PH点位一样并且点位对应的值为true
+ if (identifierName.equals(bsTower.getPhPoint()) && "true".equals(defaultValue)) {
+ queryAlsoSave(identifierName, PH, bsTower);
+ } else if (identifierName.equals(bsTower.getPhPoint()) && "false".equals(defaultValue)) {
+ queryAlsoUpdate(identifierName, PH, bsTower);
+ }
+
+ // 如果当前点位跟所配置风机点位一样并且点位对应的值为true
+ if (identifierName.equals(bsTower.getFanPoint()) && "true".equals(defaultValue)) {
+ this.queryAlsoSave(identifierName, FAN, bsTower);
+ } else if (identifierName.equals(bsTower.getFanPoint()) && "false".equals(defaultValue)) {
+ this.queryAlsoUpdate(identifierName, FAN, bsTower);
+ }
+ // 如果当前点位跟所配置循环泵点位一样并且点位对应的值为true
+ if (identifierName.equals(bsTower.getPumpPoint()) && "true".equals(defaultValue)) {
+ this.queryAlsoSave(identifierName, PUMP, bsTower);
+ } else if (identifierName.equals(bsTower.getPumpPoint()) && "false".equals(defaultValue)) {
+ this.queryAlsoUpdate(identifierName, PUMP, bsTower);
+ }
+
+ // 酸雾塔运行时间记录
+ //if (identifierName.equals(bsTower.getFanRunPoint()) && "true".equals(defaultValue)) {
+ // // 根据酸雾塔查询酸雾塔运行数据并存储开始运行时间
+ // EpTowerRunTime epTowerRunTime = epTowerRunTimeDao.getEpTowerRunTimeByBtId(bsTower.getBtId());
+ // if (epTowerRunTime == null) {
+ // EpTowerRunTime newEpTowerRunTime = new EpTowerRunTime();
+ // newEpTowerRunTime.setBsTower(bsTower);
+ // newEpTowerRunTime.setStartTime(new Date());
+ // epTowerRunTimeDao.save(newEpTowerRunTime);
+ // }
+ //} else if (identifierName.equals(bsTower.getFanRunPoint()) && "false".equals(defaultValue)) {
+ // // 存储关闭时间
+ // EpTowerRunTime epTowerRunTime = epTowerRunTimeDao.getEpTowerRunTimeByBtId(bsTower.getBtId());
+ // if (epTowerRunTime != null) {
+ // epTowerRunTime.setEtrtTime(this.getTimeFun(epTowerRunTime.getStartTime()));
+ // epTowerRunTime.setEndTime(new Date());
+ // epTowerRunTimeDao.update(epTowerRunTime);
+ // }
+ //}
+ }
+
+ }
+ }
+
+ private void queryAlsoUpdate(String identifierName, Short ph, BsTowerEntity bsTower) {
+
+ }
+
+ private void queryAlsoSave(String pid, Short type, BsTowerEntity bsTower) {
+ // 然后根据点位、类型、名称 并且没有结束时间的 去查数据
+ //BsTowerReportEntity epTowerReport = epTowerReportService.getTowerReportByTerm(pid, type, bsTower.getId());
+ // 如果查到不做任何操作 如果没有查到新增一条数据
+ //if (epTowerReport == null) {
+ // EpTowerReport newEpTowerReport = new EpTowerReport();
+ // newEpTowerReport.setBsTower(bsTower);
+ // newEpTowerReport.setEtrType(type);
+ // newEpTowerReport.setStartTime(new Date());
+ // newEpTowerReport.setKey(pid);
+ // epTowerReportDao.save(newEpTowerReport);
+ //}
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsWasteGasRunRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsWasteGasRunRecServiceImpl.java
index afc9ba3b..70b8d751 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsWasteGasRunRecServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsWasteGasRunRecServiceImpl.java
@@ -25,18 +25,28 @@
*/
package org.springblade.desk.energy.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.energy.excel.BsWasteGasRunRecExcel;
import org.springblade.desk.energy.mapper.BsWasteGasRunRecMapper;
+import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.BsWasteGasRunRecEntity;
import org.springblade.desk.energy.pojo.vo.BsWasteGasRunRecVO;
+import org.springblade.desk.energy.service.IBsTowerService;
import org.springblade.desk.energy.service.IBsWasteGasRunRecService;
import org.springframework.stereotype.Service;
-import java.util.List;
+import java.text.NumberFormat;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import static org.springblade.desk.energy.util.TimeSpan.dateDiff;
/**
* 废气运行记录表 服务实现类
@@ -46,6 +56,8 @@ import java.util.List;
*/
@Service
public class BsWasteGasRunRecServiceImpl extends BaseServiceImpl implements IBsWasteGasRunRecService {
+ @Resource
+ IBsTowerService iBsTowerService;
@Override
public IPage selectBsWasteGasRunRecPage(IPage page, BsWasteGasRunRecVO bsWasteGasRunRec) {
@@ -70,4 +82,86 @@ public class BsWasteGasRunRecServiceImpl extends BaseServiceImpl objList) {
+ List bsTowers = iBsTowerService.list();
+ Map bsTowersMap = bsTowers
+ .stream()
+ .filter(bsTower -> StringUtils.isNotBlank(bsTower.getFanRunPoint()))
+ .collect(Collectors.toMap(BsTowerEntity::getFanRunPoint,
+ Function.identity(),
+ (oldValue, newValue) -> newValue));
+
+ if (bsTowersMap.size() == 0) {
+ return;
+ }
+
+ Random rand = new Random();
+ BsWasteGasRunRecEntity epWasteGasRunRec;
+ for (JSONObject jsonObject : objList) {
+ String name = jsonObject.getString("identifierName");
+ BsTowerEntity bsTower = bsTowersMap.get(name);
+
+ // 如果数据存在,并且维护得编码不是六位
+ if (bsTower != null && bsTower.getId() != null && bsTower.getBtCode().length() != 6) {
+ Boolean value = jsonObject.getBoolean("defaultValue");
+ // 查询最新得一条数据
+ epWasteGasRunRec = queryMaxDataByCode(bsTower.getBtCode());
+ // 如果存在
+ if (epWasteGasRunRec != null && epWasteGasRunRec.getId() != null) {
+ // 如果当前点位值为true,
+ if (value) {
+ // 如果有结束时间,说明已经开关过一次,并且此次是再次开启,如果没有不做任何处理
+ if (epWasteGasRunRec.getEndTime() != null) {
+ // 获取运行时间
+ epWasteGasRunRec = new BsWasteGasRunRecEntity();
+ epWasteGasRunRec.setDeviceNum(bsTower.getBtCode());
+ epWasteGasRunRec.setStartTime(new Date());
+ epWasteGasRunRec.setSysData(String.valueOf(Double.valueOf(rand.nextInt(300) + 800) / 100));
+ save(epWasteGasRunRec);
+ }
+ } else {
+ // 如果没有结束时间,说明开过之后一直运行到现在,要给上结束时间
+ if (epWasteGasRunRec.getEndTime() == null) {
+ // 获取运行时间
+ String s = formatDouble(dateDiff(epWasteGasRunRec.getStartTime(), new Date()).getTotalHours(), 2, 0, false);
+ epWasteGasRunRec.setRunTime(Double.valueOf(s));
+ epWasteGasRunRec.setEndTime(new Date());
+ updateById(epWasteGasRunRec);
+ }
+ }
+ } else {
+ // 没有运行记录,创建一条
+ epWasteGasRunRec = new BsWasteGasRunRecEntity();
+ epWasteGasRunRec.setDeviceNum(bsTower.getBtCode());
+ epWasteGasRunRec.setStartTime(new Date());
+ epWasteGasRunRec.setSysData(String.valueOf((rand.nextInt(300) + 800) / 100));
+ save(epWasteGasRunRec);
+ }
+ }
+ }
+
+ }
+ public static String formatDouble(double n, int maxDigits, int minDigits, boolean useGrouping) {
+ if (maxDigits > 10) {
+ maxDigits = 10;
+ }
+
+ if (minDigits < 0) {
+ minDigits = 0;
+ }
+
+ NumberFormat nf = NumberFormat.getInstance();
+ nf.setMaximumFractionDigits(maxDigits);
+ nf.setMinimumFractionDigits(minDigits);
+ nf.setGroupingUsed(useGrouping);
+ return nf.format(n);
+ }
+
+ @Override
+ public BsWasteGasRunRecEntity queryMaxDataByCode(String btCode) {
+ return getOne(Wrappers.lambdaQuery(BsWasteGasRunRecEntity.class)
+ .eq(BsWasteGasRunRecEntity::getDeviceNum, btCode),false);
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/EpTowerRecAlarmServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/EpTowerRecAlarmServiceImpl.java
new file mode 100644
index 00000000..7001a917
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/EpTowerRecAlarmServiceImpl.java
@@ -0,0 +1,44 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.service.impl;
+
+
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.desk.energy.mapper.EpTowerRecAlarmMapper;
+import org.springblade.desk.energy.pojo.entity.EpTowerRecAlarm;
+import org.springblade.desk.energy.service.IEpTowerRecAlarmService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 酸雾塔报警记录对照表 服务实现类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+@Service
+public class EpTowerRecAlarmServiceImpl extends BaseServiceImpl implements IEpTowerRecAlarmService {
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/RpParameterSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/RpParameterSetServiceImpl.java
new file mode 100644
index 00000000..f921fc77
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/RpParameterSetServiceImpl.java
@@ -0,0 +1,93 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.energy.service.impl;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.desk.energy.mapper.RpParameterSetMapper;
+import org.springblade.desk.energy.pojo.entity.RpParameterSet;
+import org.springblade.desk.energy.service.IRpParameterSetService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 参数设置表 服务实现类
+ *
+ * @author BladeX
+ * @since 2026-04-20
+ */
+@Service
+public class RpParameterSetServiceImpl extends ServiceImpl implements IRpParameterSetService {
+
+ @Override
+ public void setParameterSet(List objList) {
+ if (objList == null || objList.isEmpty()) {
+ return;
+ }
+ JSONObject obj = new JSONObject(objList.size());
+ for (JSONObject jsonObject : objList) {
+ if (jsonObject == null) {
+ continue;
+ }
+ if (StringUtils.isNotEmpty(jsonObject.getString("identifierName"))) {
+ obj.put(jsonObject.getString("identifierName"), jsonObject.getString("defaultValue"));
+ }
+ }
+
+ RpParameterSet rpParameterSet = new RpParameterSet();
+ // 拿出所需的值存储
+ rpParameterSet.setRpsDate(obj.getString("$日期"));
+ rpParameterSet.setRpsTime(obj.getString("$时间"));
+ rpParameterSet.setNfA(obj.getString("NF产水电导率A"));
+ rpParameterSet.setNfB(obj.getString("NF产水电导率B"));
+ rpParameterSet.setNf(obj.getString("NF进水电导率"));
+ rpParameterSet.setRo11A(obj.getString("RO1_1_产水电导率A"));
+ rpParameterSet.setRo11B(obj.getString("RO1_1_产水电导率B"));
+ rpParameterSet.setRo11C(obj.getString("RO1_1_产水电导率C"));
+ rpParameterSet.setRo11(obj.getString("RO1_1_进水电导率"));
+ rpParameterSet.setRo11Ph(obj.getString("RO1_浓水PH值"));
+ rpParameterSet.setRo21(obj.getString("RO2_1_产水电导率"));
+ rpParameterSet.setRo21Rate(obj.getString("RO2_1_进水电导率"));
+ rpParameterSet.setRo22Rate(obj.getString("RO2_2_产水电导率"));
+ rpParameterSet.setRo22(obj.getString("RO2_2_进水电导率"));
+ rpParameterSet.setElectPh(obj.getString("电镀镍PH值"));
+ rpParameterSet.setOrpA(obj.getString("废液反应池ORP_A"));
+ rpParameterSet.setOrpB(obj.getString("废液反应池ORP_B"));
+ rpParameterSet.setPhA(obj.getString("废液反应池PH_A"));
+ rpParameterSet.setPhB(obj.getString("废液反应池PH_B"));
+ rpParameterSet.setTempA(obj.getString("废液反应池温度_A"));
+ rpParameterSet.setTempB(obj.getString("废液反应池温度_B"));
+ rpParameterSet.setOxygen(obj.getString("生化溶解氧"));
+ rpParameterSet.setPh(obj.getString("阴阳床产水PH"));
+ rpParameterSet.setOrp(obj.getString("预处理ORP"));
+
+ save(rpParameterSet);
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
index 2a238b7f..0d64fc33 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
@@ -4,11 +4,16 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
+import org.springblade.desk.energy.pojo.entity.RpParameterSet;
+import org.springblade.desk.energy.service.*;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
import java.util.List;
@Service
@@ -17,9 +22,17 @@ public class HttpRequestService {
private static final Logger log = LoggerFactory.getLogger(HttpRequestService.class);
- // private final RestTemplate httpClientTemplate;
+ private final RestTemplate httpClientTemplate;
+ private final IBsTowerReportService epTowerRecService;
+ private final IBsWasteGasRunRecService epWasteGasRunRecService;
+ private final IRpParameterSetService rpParameterSetServer;
+ private final IBsDosingRecService epDosingRecService;
+ private final IBsTowerService bsTowerService;
+ @Value("${request.iotNew.url}")
+ private String iotNewUrl;
+
/**
@@ -39,7 +52,7 @@ public class HttpRequestService {
JSONObject result = null;
HttpEntity entity = new HttpEntity<>(object, headers);
- ResponseEntity responseEntity= null;//httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/getDataByIotCode", entity, JSONObject.class);
+ ResponseEntity responseEntity= httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/getDataByIotCode", entity, JSONObject.class);
result = responseEntity.getBody();
if (result != null && result.getInteger("code").equals(200)) {
JSONObject object1 = result.getJSONObject("data");
@@ -49,18 +62,18 @@ public class HttpRequestService {
if (flag) {
if (str.equals("rpAcidMistTower")) {
// 酸雾塔报警记录
- // epTowerRecService.setEpTowerRec(objList);
+ epTowerRecService.setEpTowerRec(objList);
// 废气运行记录
- // epWasteGasRunRecService.creatRunData(objList);
+ epWasteGasRunRecService.creatRunData(objList);
} else if (str.equals("rpParameterSet")) {
// 参数设置
- // rpParameterSetServer.setParameterSet(objList);
+ rpParameterSetServer.setParameterSet(objList);
} else if (str.equals("towerSosRec")) {
// 生产酸雾塔报警任务
- // epDosingRecService.towerSosRec(objList);
+ epDosingRecService.towerSosRec(objList);
// 生成报警数据用于报表展示
- // bsTowerService.generateData(objList);
+ bsTowerService.generateData(objList);
}
} else {
return objList;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/TimeSpan.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/TimeSpan.java
new file mode 100644
index 00000000..6bccc681
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/TimeSpan.java
@@ -0,0 +1,146 @@
+package org.springblade.desk.energy.util;/**
+ * @date : 2026/4/21 10:02
+ */
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 文件名称
+ * @module 归属项目
+ * @author ***
+ * @date 2025/11/26 10:27
+ */
+public class TimeSpan implements Serializable {
+ private static final long serialVersionUID = 807778275482047920L;
+ private static final long MILLISECONDS_OF_DAY = 86400000L;
+ private static final long MILLISECONDS_OF_HOUR = 3600000L;
+ private static final long MILLISECONDS_OF_MINUTE = 60000L;
+ private static final long MILLISECONDS_OF_SECOND = 1000L;
+ private long totalMilliseconds;
+ private int days;
+ private int hours;
+ private int minutes;
+ private int seconds;
+ private int milliseconds;
+
+ public static TimeSpan days(int day) {
+ return new TimeSpan((long)day * 86400000L);
+ }
+
+ public static TimeSpan hours(int hour) {
+ return new TimeSpan((long)hour * 3600000L);
+ }
+
+ public static TimeSpan minutes(int minute) {
+ return new TimeSpan((long)minute * 60000L);
+ }
+
+ public TimeSpan(Date sd, Date ed) {
+ this(ed.getTime() - sd.getTime());
+ }
+
+ public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds) {
+ this((long)days * 86400000L + (long)hours * 3600000L + (long)minutes * 60000L + (long)seconds * 1000L + (long)milliseconds);
+ }
+
+ public TimeSpan(long mscs) {
+ this.totalMilliseconds = 0L;
+ this.days = 0;
+ this.hours = 0;
+ this.minutes = 0;
+ this.seconds = 0;
+ this.milliseconds = 0;
+ this.totalMilliseconds = mscs;
+ boolean isNav = this.totalMilliseconds < 0L;
+ long millBanlance = Math.abs(this.totalMilliseconds);
+ this.days = (int)(millBanlance / 86400000L);
+ millBanlance -= 86400000L * (long)this.days;
+ if (isNav) {
+ this.days = 0 - this.days;
+ }
+
+ if (millBanlance > 0L) {
+ this.hours = (int)(millBanlance / 3600000L);
+ millBanlance -= 3600000L * (long)this.hours;
+ if (isNav) {
+ this.hours = 0 - this.hours;
+ }
+
+ if (millBanlance > 0L) {
+ this.minutes = (int)(millBanlance / 60000L);
+ millBanlance -= 60000L * (long)this.minutes;
+ if (isNav) {
+ this.minutes = 0 - this.minutes;
+ }
+
+ if (millBanlance > 0L) {
+ this.seconds = (int)(millBanlance / 1000L);
+ millBanlance -= 1000L * (long)this.seconds;
+ if (isNav) {
+ this.seconds = 0 - this.seconds;
+ }
+
+ if (millBanlance > 0L) {
+ this.milliseconds = (int)millBanlance;
+ if (isNav) {
+ this.milliseconds = 0 - this.milliseconds;
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ public int getDays() {
+ return this.days;
+ }
+
+ public int getHours() {
+ return this.hours;
+ }
+
+ public int getMinutes() {
+ return this.minutes;
+ }
+
+ public int getSeconds() {
+ return this.seconds;
+ }
+
+ public int getMilliseconds() {
+ return this.milliseconds;
+ }
+
+ public long getTotalMilliseconds() {
+ return this.totalMilliseconds;
+ }
+
+ public double getTotalSeconds() {
+ return 1.0D * (double)this.totalMilliseconds / 1000.0D;
+ }
+
+ public double getTotalMinutes() {
+ return 1.0D * (double)this.totalMilliseconds / 60000.0D;
+ }
+
+ public double getTotalHours() {
+ return 1.0D * (double)this.totalMilliseconds / 3600000.0D;
+ }
+
+ public double getTotalDays() {
+ return 1.0D * (double)this.totalMilliseconds / 8.64E7D;
+ }
+
+
+ public static final TimeSpan dateDiff(Date date1, Date date2) {
+ long diff = 0L;
+ if (date1 != null && date2 != null) {
+ diff = date2.getTime() - date1.getTime();
+ }
+
+ return new TimeSpan(diff);
+ }
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderCraftService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderCraftService.java
index 994e8a26..1fbf812d 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderCraftService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderCraftService.java
@@ -49,5 +49,5 @@ public interface IYieldOrderCraftService extends BaseService {
* @param rxlSpace 需要特殊分派,true:需要, false:不需要,null:不需要
* @throws BusinessException
*/
- void automaticDispatch(List yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws BusinessException;
+ void automaticDispatch(List yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws Exception;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
index 577e17be..49caacd8 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java
@@ -74,7 +74,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl listByYoId(Long yoId) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(YieldOrderCraft.class)
.eq(YieldOrderCraft::getYoId, yoId)
- .eq(YieldOrderCraft::getIsDeleted, CommonConstant.DELETE_FALSE);
+ .eq(YieldOrderCraft::getIsDeleted, CommonConstant.DELETE_FALSE).orderByAsc(YieldOrderCraft::getProcessNo);
List craftList = baseMapper.selectList(queryWrapper);
craftList.stream().forEach(item ->{
BsProcessSetEntity processSet = processSetService.getById(item.getPpsId());
@@ -93,9 +93,10 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws BusinessException {
+ public void automaticDispatch(List yieldOrderCraftList, YieldOrder yieldOrder, Boolean factor, Boolean rxlSpace) throws Exception {
// 组装key为工艺能力的作业计划map
- Map> craftAbilityMap = yieldOrderCraftList.stream().collect(Collectors.groupingBy(YieldOrderCraft::getCaId));
+ Map> craftAbilityMap = yieldOrderCraftList.stream()
+ .collect(Collectors.groupingBy(YieldOrderCraft::getCaId,LinkedHashMap::new,Collectors.toList()));
//作业计划map工艺能力key集合
Set craftKeys = craftAbilityMap.keySet();
//获取到认定的主工艺能力(默认第一个工艺能力为主工艺能力)
@@ -382,7 +383,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl bindWorkCenter(Long workCenterId, Map workCenterMap, Long craftAbilityId,
Map> craftAbilityMap, Set craftKeys,
- YieldOrder yieldOrder, Boolean factor) throws BusinessException {
+ YieldOrder yieldOrder, Boolean factor) throws Exception {
List orderCrafts = new ArrayList<>();
// 开始循环生产订单中组合的工艺能力key集合, 主工艺能力之前的全部分配到此作业中心
for (Long craftId : craftKeys) {
@@ -568,7 +569,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl bindOem(Oem oemCustomer, Long craftAbilityId, Map> craftAbilityMap, Set keys, YieldOrder yieldOrder, Boolean factor) {
+ List> craftAbilityMap, Set keys, YieldOrder yieldOrder, Boolean factor) throws Exception {
List rtnList = new ArrayList<>();
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/安全巡检配置导入模板.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/安全巡检配置导入模板.xls
index cdbb3958..3a0a044d 100644
Binary files a/blade-service/blade-desk/src/main/resources/Excel/QA/安全巡检配置导入模板.xls and b/blade-service/blade-desk/src/main/resources/Excel/QA/安全巡检配置导入模板.xls differ
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/酸雾塔导入模板.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/酸雾塔导入模板.xls
index b89b452f..1b00270a 100644
Binary files a/blade-service/blade-desk/src/main/resources/Excel/QA/酸雾塔导入模板.xls and b/blade-service/blade-desk/src/main/resources/Excel/QA/酸雾塔导入模板.xls differ