Prechádzať zdrojové kódy

增加耗用液位的计算

hfxc226 1 mesiac pred
rodič
commit
a10af41514

+ 10 - 1
platform-dao/src/main/java/com/platform/dao/enums/SysConfigEnum.java

@@ -75,7 +75,16 @@ public enum SysConfigEnum {
     PRODUCE_YEWEI_A1("a1"),
     PRODUCE_YEWEI_A2("a2"),
     PRODUCE_YEWEI_A3("a3"),
-    PRODUCE_YEWEI_B("b");
+    PRODUCE_YEWEI_B("b"),
+    PRODUCE_YEWEI_903_HY("903_HY"),
+    PRODUCE_YEWEI_905_HY("905_HY"),
+    PRODUCE_YEWEI_907_HY("907_HY"),
+    PRODUCE_YEWEI_F160C_HY("F160C_HY"),
+    PRODUCE_YEWEI_CM47B_HY("CM47B_HY"),
+    PRODUCE_YEWEI_QFS_HY("QFS_HY"),
+    PRODUCE_YEWEI_LXL_HY("LXL_HY"),
+    PRODUCE_YEWEI_YJ_HY("YJ_HY"),
+    PRODUCE_YEWEI_YS_HY("YS_HY");
     private final String typeName;
 
 }

+ 1 - 1
platform-service/src/main/java/com/platform/service/produce/ProduceReportService.java

@@ -64,7 +64,7 @@ public interface ProduceReportService extends IBaseService<ProduceReport, Produc
      * @return
      */
     void generateYeweiAll(LocalDate date);
-    BigDecimal generateYeweiReport(LocalDate date, String no, String configName);
+    BigDecimal generateYeweiReport(LocalDate date, String prefix, String no, String configName);
     void generateYeweiTotalReport(LocalDate date, Map<String, Double> param);
     /**
      * 获取某日的数据,可以传递其他参数

+ 93 - 13
platform-service/src/main/java/com/platform/service/produce/impl/ProduceReportServiceImpl.java

@@ -4,6 +4,8 @@ import com.github.pagehelper.PageHelper;
 import com.greenpineyu.fel.FelEngine;
 import com.greenpineyu.fel.FelEngineImpl;
 import com.greenpineyu.fel.context.FelContext;
+import com.greenpineyu.fel.function.CommonFunction;
+import com.greenpineyu.fel.function.Function;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.cache.ConfigCache;
 import com.platform.common.exception.BusinessException;
@@ -541,14 +543,14 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
 
     @Override
     public void generateYeweiAll(LocalDate date) {
-        generateYeweiReport(date, "GS-907", SysConfigEnum.PRODUCE_YEWEI_GS907.name());
-        generateYeweiReport(date, "GS-905", SysConfigEnum.PRODUCE_YEWEI_GS905.name());
-        generateYeweiReport(date, "GS-904", SysConfigEnum.PRODUCE_YEWEI_GS904.name());
-        generateYeweiReport(date, "F-160C", SysConfigEnum.PRODUCE_YEWEI_F160C.name());
-        BigDecimal a1 = generateYeweiReport(date, "a1", SysConfigEnum.PRODUCE_YEWEI_A1.name());
-        BigDecimal a2 = generateYeweiReport(date, "a2", SysConfigEnum.PRODUCE_YEWEI_A2.name());
-        BigDecimal a3 = generateYeweiReport(date, "a3", SysConfigEnum.PRODUCE_YEWEI_A3.name());
-        generateYeweiReport(date, "b", SysConfigEnum.PRODUCE_YEWEI_B.name());
+        generateYeweiReport(date, "zcp_", "GS-907", SysConfigEnum.PRODUCE_YEWEI_GS907.name());
+        generateYeweiReport(date, "zcp_", "GS-905", SysConfigEnum.PRODUCE_YEWEI_GS905.name());
+        generateYeweiReport(date, "zcp_", "GS-904", SysConfigEnum.PRODUCE_YEWEI_GS904.name());
+        generateYeweiReport(date, "zcp_", "F-160C", SysConfigEnum.PRODUCE_YEWEI_F160C.name());
+        BigDecimal a1 = generateYeweiReport(date, "zcp_", "a1", SysConfigEnum.PRODUCE_YEWEI_A1.name());
+        BigDecimal a2 = generateYeweiReport(date, "zcp_", "a2", SysConfigEnum.PRODUCE_YEWEI_A2.name());
+        BigDecimal a3 = generateYeweiReport(date, "zcp_", "a3", SysConfigEnum.PRODUCE_YEWEI_A3.name());
+        generateYeweiReport(date, "zcp_", "b", SysConfigEnum.PRODUCE_YEWEI_B.name());
 
         // 计算total总数据((a1+a2)*0.58+a3)/2
         Map<String, Double> param = new HashMap<>();
@@ -556,6 +558,17 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
         param.put("a2", a2.doubleValue());
         param.put("a3", a3.doubleValue());
         generateYeweiTotalReport(date, param);
+
+        // 计算耗用
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_903_HY.name());// 903
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_905_HY.name());// 905
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_907_HY.name());// 907
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_F160C_HY.name());// F160C
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_CM47B_HY.name());// CM47B
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_QFS_HY.name());// 氢氟酸
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_LXL_HY.name());// 硫酰氯
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_YJ_HY.name());// 液碱
+        generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_YS_HY.name());// 盐酸
     }
 
     /**
@@ -569,10 +582,8 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
      * @param date
      */
     @Override
-    public BigDecimal generateYeweiReport(LocalDate date, String no, String configName) {
-        log.info("正在处理液位:" + no);
-        // GS-907
-        String prefix = "zcp_";
+    public BigDecimal generateYeweiReport(LocalDate date, String prefix, String no, String configName) {
+        log.info("正在处理液位:" + prefix + no);
 
         // 找到对应填报数据
         ProduceData produceData = produceDataService.selectByNo(prefix + no);
@@ -1518,7 +1529,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
                     vo.setRiverWaterId(produceReportVO.getId());
                     vo.setRiverWaterNo(produceReportVO.getNo());
                     vo.setRiverWaterDataId(produceReportVO.getDataId());
-                } else if (produceReportVO.getNo().equals("dl_污水")){
+                } else if (produceReportVO.getNo().equals("dl_污水")) {
                     vo.setSewage(produceReportVO.getValue());
                     vo.setSewageId(produceReportVO.getId());
                     vo.setSewageNo(produceReportVO.getNo());
@@ -1779,6 +1790,70 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
         }
     }
 
+    /**
+     * 注册sin函数
+     *
+     * @return
+     */
+    public Function getSinFunction(){
+        Function sinFunction = new CommonFunction() {
+            @Override
+            public String getName() {
+                return "SIN"; // 函数名称
+            }
+
+            @Override
+            public Object call(Object[] arguments) {
+                if (arguments == null || arguments.length != 1) {
+                    throw new IllegalArgumentException("SIN函数需要一个参数");
+                }
+
+                Object arg = arguments[0];
+                if (arg instanceof Number) {
+                    double radians = ((Number) arg).doubleValue();
+                    return Math.sin(radians); // 使用Java的Math.sin计算正弦值
+                } else {
+                    throw new IllegalArgumentException("SIN函数的参数必须是数字类型");
+                }
+            }
+        };
+        return sinFunction;
+    }
+
+    /**
+     * 注册sin函数
+     *
+     * @return
+     */
+    public Function getAcosFunction(){
+        // 注册自定义 ACOS 函数
+        Function acosFunction = new CommonFunction() {
+            @Override
+            public String getName() {
+                return "ACOS"; // 函数名称
+            }
+
+            @Override
+            public Object call(Object[] arguments) {
+                if (arguments == null || arguments.length != 1) {
+                    throw new IllegalArgumentException("ACOS 函数需要一个参数");
+                }
+
+                Object arg = arguments[0];
+                if (arg instanceof Number) {
+                    double value = ((Number) arg).doubleValue();
+                    // 检查参数范围是否在 -1 到 1 之间
+                    if (value < -1 || value > 1) {
+                        throw new IllegalArgumentException("ACOS 函数的参数必须在 -1 到 1 之间");
+                    }
+                    return Math.acos(value); // 使用 Java 的 Math.acos 计算反余弦值
+                } else {
+                    throw new IllegalArgumentException("ACOS 函数的参数必须是数字类型");
+                }
+            }
+        };
+        return acosFunction;
+    }
 
     /**
      * 计算一条表达式的值
@@ -1792,6 +1867,11 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
 
         FelEngine fel = new FelEngineImpl();
         FelContext ctx = fel.getContext();
+
+        // 将自定义函数添加到引擎中
+        fel.addFun(getSinFunction());
+        fel.addFun(getAcosFunction());
+
         log.info("开始时间:" + LocalDateTime.now());
         for (Map.Entry<String, Double> entry : param.entrySet()) {
             log.info("key = " + entry.getKey() + ", value = " + entry.getValue());