|
@@ -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());
|