|
@@ -1,12 +1,5 @@
|
|
package com.gyee.datatraining.util.dd;
|
|
package com.gyee.datatraining.util.dd;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
|
-import java.math.RoundingMode;
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.Date;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Vector;
|
|
|
|
-
|
|
|
|
import com.gyee.common.model.DNAVal;
|
|
import com.gyee.common.model.DNAVal;
|
|
import com.gyee.datatraining.task.SaticScheduleTask;
|
|
import com.gyee.datatraining.task.SaticScheduleTask;
|
|
import com.gyee.datatraining.util.StringUtils;
|
|
import com.gyee.datatraining.util.StringUtils;
|
|
@@ -17,255 +10,259 @@ import com.gyee.datatraining.vo.WtTrainVo;
|
|
import org.apache.commons.math3.linear.RealMatrix;
|
|
import org.apache.commons.math3.linear.RealMatrix;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.math.RoundingMode;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Vector;
|
|
|
|
|
|
|
|
|
|
@Component
|
|
@Component
|
|
public class ModuleState {
|
|
public class ModuleState {
|
|
|
|
|
|
- private static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
|
|
|
|
-
|
|
|
|
- @Resource
|
|
|
|
- private Environment env;
|
|
|
|
-
|
|
|
|
- private int digits = 4;
|
|
|
|
- /**
|
|
|
|
- * 结果集数量
|
|
|
|
- */
|
|
|
|
- private int coment_bit = 4;
|
|
|
|
- /**
|
|
|
|
- * 指标点数量
|
|
|
|
- */
|
|
|
|
- //private int point_bit = 4;
|
|
|
|
- /**
|
|
|
|
- * 报警值数量
|
|
|
|
- */
|
|
|
|
- private double warnnum = 0.95;
|
|
|
|
- /**
|
|
|
|
- * 查询模块健康状况
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public ModuleVo getModuleValue(List<String> wtId, List<String> code, List<Integer> typels, List<Double> cwdls, List<String> rules, MembershipRuleVo msvo, Date now)
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- ModuleVo modelvo=new ModuleVo();
|
|
|
|
- //初始化读取数据对象
|
|
|
|
- LoadData load = new LoadData();
|
|
|
|
- Vector<DNAVal[]> loadDataVc = new Vector<DNAVal[]>();
|
|
|
|
- // 初始化变权对象数组
|
|
|
|
- double[] cwchange = new double[code.size()];
|
|
|
|
- //超过报警线直接判定严重健康状态为1
|
|
|
|
- int breakstate = 0;
|
|
|
|
- //结果状态值
|
|
|
|
- int state = 1;
|
|
|
|
- List<Double> result= new ArrayList<Double>();
|
|
|
|
- List<ChangeWeightVo> cwls = new ArrayList<ChangeWeightVo>();
|
|
|
|
- WtTrainVo vo = new WtTrainVo();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- int recodeDate = new BigDecimal(now.getTime()).divide(new BigDecimal(1000), 0, RoundingMode.HALF_EVEN).intValue();
|
|
|
|
-
|
|
|
|
- vo.setRecodeDate(recodeDate);
|
|
|
|
- vo.setUniformcode(code);
|
|
|
|
- vo.setWtId(wtId);
|
|
|
|
-
|
|
|
|
- try {
|
|
|
|
- load.loadEdosData(vo, loadDataVc);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
-
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (StringUtils.notEmp(loadDataVc) && !loadDataVc.isEmpty()) {
|
|
|
|
- //取得一组指标的数据集合
|
|
|
|
- DNAVal[] data = loadDataVc.get(0);
|
|
|
|
- //劣化度结果集合
|
|
|
|
- List<Double> ddls = new ArrayList<Double>();
|
|
|
|
- //实例化劣化度对象
|
|
|
|
- DegradationDegree dd = new DegradationDegree();
|
|
|
|
-
|
|
|
|
- for (int i = 0; i < data.length; i++) {
|
|
|
|
- double value = 0;
|
|
|
|
- // 判断数据劣化度
|
|
|
|
- if (typels.get(i) == 0) {
|
|
|
|
- value = dd.getValueBySmall(data[i].DValue, rules.get(i));
|
|
|
|
- } else if (typels.get(i) == 1) {
|
|
|
|
- value = dd.getValueByMedium(data[i].DValue, rules.get(i));
|
|
|
|
- }
|
|
|
|
- // 实例化权重和劣化度对象
|
|
|
|
- ChangeWeightVo cwvo = new ChangeWeightVo();
|
|
|
|
- // 赋值权重和劣化度对象
|
|
|
|
- cwvo.setDegradationDegree(value);
|
|
|
|
- cwvo.setWeight(cwdls.get(i));
|
|
|
|
-
|
|
|
|
- cwls.add(cwvo);
|
|
|
|
- ddls.add(value);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 实例化隶属度对象
|
|
|
|
- Membership ms = new Membership();
|
|
|
|
|
|
+ private static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private Environment env;
|
|
|
|
+
|
|
|
|
+ private int digits = 4;
|
|
|
|
+ /**
|
|
|
|
+ * 结果集数量
|
|
|
|
+ */
|
|
|
|
+ private int coment_bit = 4;
|
|
|
|
+ /**
|
|
|
|
+ * 指标点数量
|
|
|
|
+ */
|
|
|
|
+ //private int point_bit = 4;
|
|
|
|
+ /**
|
|
|
|
+ * 报警值数量
|
|
|
|
+ */
|
|
|
|
+ private double warnnum = 0.95;
|
|
|
|
+ /**
|
|
|
|
+ * 查询模块健康状况
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public ModuleVo getModuleValue(List<String> wtId, List<String> code, List<Integer> typels, List<Double> cwdls, List<String> rules, MembershipRuleVo msvo, Date now)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ ModuleVo modelvo=new ModuleVo();
|
|
|
|
+ //初始化读取数据对象
|
|
|
|
+ LoadData load = new LoadData();
|
|
|
|
+ Vector<DNAVal[]> loadDataVc = new Vector<DNAVal[]>();
|
|
|
|
+ // 初始化变权对象数组
|
|
|
|
+ double[] cwchange = new double[code.size()];
|
|
|
|
+ //超过报警线直接判定严重健康状态为1
|
|
|
|
+ int breakstate = 0;
|
|
|
|
+ //结果状态值
|
|
|
|
+ int state = 1;
|
|
|
|
+ List<Double> result= new ArrayList<Double>();
|
|
|
|
+ List<ChangeWeightVo> cwls = new ArrayList<ChangeWeightVo>();
|
|
|
|
+ WtTrainVo vo = new WtTrainVo();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ int recodeDate = new BigDecimal(now.getTime()).divide(new BigDecimal(1000), 0, RoundingMode.HALF_EVEN).intValue();
|
|
|
|
+
|
|
|
|
+ vo.setRecodeDate(recodeDate);
|
|
|
|
+ vo.setUniformcode(code);
|
|
|
|
+ vo.setWtId(wtId);
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ load.loadEdosData(vo, loadDataVc);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (StringUtils.notEmp(loadDataVc) && !loadDataVc.isEmpty()) {
|
|
|
|
+ //取得一组指标的数据集合
|
|
|
|
+ DNAVal[] data = loadDataVc.get(0);
|
|
|
|
+ //劣化度结果集合
|
|
|
|
+ List<Double> ddls = new ArrayList<Double>();
|
|
|
|
+ //实例化劣化度对象
|
|
|
|
+ DegradationDegree dd = new DegradationDegree();
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < data.length; i++) {
|
|
|
|
+ double value = 0;
|
|
|
|
+ // 判断数据劣化度
|
|
|
|
+ if (typels.get(i) == 0) {
|
|
|
|
+ value = dd.getValueBySmall(data[i].DValue, rules.get(i));
|
|
|
|
+ } else if (typels.get(i) == 1) {
|
|
|
|
+ value = dd.getValueByMedium(data[i].DValue, rules.get(i));
|
|
|
|
+ }
|
|
|
|
+ // 实例化权重和劣化度对象
|
|
|
|
+ ChangeWeightVo cwvo = new ChangeWeightVo();
|
|
|
|
+ // 赋值权重和劣化度对象
|
|
|
|
+ cwvo.setDegradationDegree(value);
|
|
|
|
+ cwvo.setWeight(cwdls.get(i));
|
|
|
|
+
|
|
|
|
+ cwls.add(cwvo);
|
|
|
|
+ ddls.add(value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 实例化隶属度对象
|
|
|
|
+ Membership ms = new Membership();
|
|
// MembershipRuleVo msvo = new MembershipRuleVo();
|
|
// MembershipRuleVo msvo = new MembershipRuleVo();
|
|
// msvo.setCondition("");
|
|
// msvo.setCondition("");
|
|
// msvo.setStaterule1("");
|
|
// msvo.setStaterule1("");
|
|
// msvo.setStaterule2("");
|
|
// msvo.setStaterule2("");
|
|
// msvo.setStaterule3("");
|
|
// msvo.setStaterule3("");
|
|
// msvo.setStaterule4("");
|
|
// msvo.setStaterule4("");
|
|
-
|
|
|
|
- // 生成隶属度数组
|
|
|
|
- double[][] msarr = new double[ddls.size()][coment_bit];
|
|
|
|
- for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
- double[] temparr = new double[coment_bit];
|
|
|
|
- for (int j = 0; j < coment_bit; j++) {
|
|
|
|
- double msstate = ms.getStateValue(ddls.get(i), j, msvo);
|
|
|
|
- temparr[j] = StringUtils.round(msstate, digits);
|
|
|
|
- }
|
|
|
|
- msarr[i] = temparr;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 变权处理
|
|
|
|
- ChangeWeight cw = new ChangeWeight();
|
|
|
|
- for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
- double value = ddls.get(i);
|
|
|
|
- if (value > warnnum) {
|
|
|
|
- breakstate = 1;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (breakstate == 0) {
|
|
|
|
-
|
|
|
|
- for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
- double value = ddls.get(i);
|
|
|
|
- cwchange[i] = cw.change(cwdls.get(i), value, cwls);
|
|
|
|
- }
|
|
|
|
- double cwarr[][] = new double[1][code.size()];
|
|
|
|
- cwarr[0] = cwchange;
|
|
|
|
-
|
|
|
|
- MatrixCalculation mc = new MatrixCalculation();
|
|
|
|
-
|
|
|
|
- RealMatrix matrix1 = mc.createMatrix(cwarr);
|
|
|
|
- RealMatrix matrix2 = mc.createMatrix(msarr);
|
|
|
|
-
|
|
|
|
- RealMatrix rmresult = matrix1.multiply(matrix2);
|
|
|
|
-
|
|
|
|
- double value = rmresult.getEntry(0, 0);
|
|
|
|
- for (int i = 0; i < rmresult.getColumnDimension(); i++) {
|
|
|
|
- double temp = rmresult.getEntry(0, i)<1?rmresult.getEntry(0, i):1;
|
|
|
|
- if (temp > value) {
|
|
|
|
- value = temp;
|
|
|
|
- state = i+1;
|
|
|
|
- }
|
|
|
|
- result.add(temp);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- state=4;
|
|
|
|
- result=new ArrayList<Double>();
|
|
|
|
- result.add(0.0);
|
|
|
|
- result.add(0.0);
|
|
|
|
- result.add(0.0);
|
|
|
|
- result.add(1.0);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }else{
|
|
|
|
- //没有查询到数据,默认为良好状态
|
|
|
|
- state=1;
|
|
|
|
- result=new ArrayList<Double>();
|
|
|
|
- result.add(1.0);
|
|
|
|
- result.add(0.0);
|
|
|
|
- result.add(0.0);
|
|
|
|
- result.add(0.0);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- modelvo.setModuleResult(result);
|
|
|
|
- modelvo.setModuleState(state);;
|
|
|
|
- return modelvo;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 检查部件健康情况
|
|
|
|
- */
|
|
|
|
- public ModuleVo checkPartState(String wtId,String part_clx,String type_clx,String weight_clx,String part_rule,String condition_lsd
|
|
|
|
- ,String params_lsd1,String params_lsd2,String params_lsd3,String params_lsd4,Date now) {
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- List<String> wtIdls = new ArrayList<String>();
|
|
|
|
- List<String> code = new ArrayList<String>();
|
|
|
|
- List<Integer> typels = new ArrayList<Integer>();
|
|
|
|
- List<Double> cwdls = new ArrayList<Double>();
|
|
|
|
- List<String> rules = new ArrayList<String>();
|
|
|
|
|
|
+
|
|
|
|
+ // 生成隶属度数组
|
|
|
|
+ double[][] msarr = new double[ddls.size()][coment_bit];
|
|
|
|
+ for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
+ double[] temparr = new double[coment_bit];
|
|
|
|
+ for (int j = 0; j < coment_bit; j++) {
|
|
|
|
+ double msstate = ms.getStateValue(ddls.get(i), j, msvo);
|
|
|
|
+ temparr[j] = StringUtils.round(msstate, digits);
|
|
|
|
+ }
|
|
|
|
+ msarr[i] = temparr;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 变权处理
|
|
|
|
+ ChangeWeight cw = new ChangeWeight();
|
|
|
|
+ for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
+ double value = ddls.get(i);
|
|
|
|
+ if (value > warnnum) {
|
|
|
|
+ breakstate = 1;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+// if (breakstate == 0) {
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < ddls.size(); i++) {
|
|
|
|
+ double value = ddls.get(i);
|
|
|
|
+ cwchange[i] = cw.change(cwdls.get(i), value, cwls);
|
|
|
|
+ }
|
|
|
|
+ double cwarr[][] = new double[1][code.size()];
|
|
|
|
+ cwarr[0] = cwchange;
|
|
|
|
+
|
|
|
|
+ MatrixCalculation mc = new MatrixCalculation();
|
|
|
|
+
|
|
|
|
+ RealMatrix matrix1 = mc.createMatrix(cwarr);
|
|
|
|
+ RealMatrix matrix2 = mc.createMatrix(msarr);
|
|
|
|
+
|
|
|
|
+ RealMatrix rmresult = matrix1.multiply(matrix2);
|
|
|
|
+
|
|
|
|
+ double value = rmresult.getEntry(0, 0);
|
|
|
|
+ for (int i = 0; i < rmresult.getColumnDimension(); i++) {
|
|
|
|
+ double temp = rmresult.getEntry(0, i)<1?rmresult.getEntry(0, i):1;
|
|
|
|
+ if (temp > value) {
|
|
|
|
+ value = temp;
|
|
|
|
+ state = i+1;
|
|
|
|
+ }
|
|
|
|
+ result.add(temp);
|
|
|
|
+ }
|
|
|
|
+// } else {
|
|
|
|
+// state=4;
|
|
|
|
+// result=new ArrayList<Double>();
|
|
|
|
+// result.add(0.0);
|
|
|
|
+// result.add(0.0);
|
|
|
|
+// result.add(0.0);
|
|
|
|
+// result.add(1.0);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ }else{
|
|
|
|
+ //没有查询到数据,默认为良好状态
|
|
|
|
+ state=1;
|
|
|
|
+ result=new ArrayList<Double>();
|
|
|
|
+ result.add(1.0);
|
|
|
|
+ result.add(0.0);
|
|
|
|
+ result.add(0.0);
|
|
|
|
+ result.add(0.0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ modelvo.setModuleResult(result);
|
|
|
|
+ modelvo.setModuleState(state);;
|
|
|
|
+ return modelvo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 检查部件健康情况
|
|
|
|
+ */
|
|
|
|
+ public ModuleVo checkPartState(String wtId,String part_clx,String type_clx,String weight_clx,String part_rule,String condition_lsd
|
|
|
|
+ ,String params_lsd1,String params_lsd2,String params_lsd3,String params_lsd4,Date now) {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ List<String> wtIdls = new ArrayList<String>();
|
|
|
|
+ List<String> code = new ArrayList<String>();
|
|
|
|
+ List<Integer> typels = new ArrayList<Integer>();
|
|
|
|
+ List<Double> cwdls = new ArrayList<Double>();
|
|
|
|
+ List<String> rules = new ArrayList<String>();
|
|
|
|
|
|
|
|
|
|
// wtId.add("NG01_01");
|
|
// wtId.add("NG01_01");
|
|
// wtId.add("NG01_01");
|
|
// wtId.add("NG01_01");
|
|
// wtId.add("NG01_01");
|
|
// wtId.add("NG01_01");
|
|
|
|
|
|
- // 遍历齿轮箱统一编码
|
|
|
|
- String[] up82_part_clx = env.getProperty(part_clx).split(",");
|
|
|
|
-
|
|
|
|
- for (int i = 0; i < up82_part_clx.length; i++) {
|
|
|
|
- code.add(up82_part_clx[i]);
|
|
|
|
- wtIdls.add(wtId);
|
|
|
|
- }
|
|
|
|
- // 遍历齿轮箱各指标对应算法
|
|
|
|
- String[] up82_type_clx = env.getProperty(type_clx).split(",");
|
|
|
|
-
|
|
|
|
- for (int i = 0; i < up82_type_clx.length; i++) {
|
|
|
|
- typels.add(Integer.valueOf(up82_type_clx[i]));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 遍历齿轮箱权重
|
|
|
|
- String[] up82_weight_clx = env.getProperty(weight_clx).split(",");
|
|
|
|
-
|
|
|
|
- for (int i = 0; i < up82_weight_clx.length; i++) {
|
|
|
|
- cwdls.add(Double.valueOf(up82_weight_clx[i]));
|
|
|
|
- }
|
|
|
|
- // 获得齿轮箱范围值
|
|
|
|
- String rule = env.getProperty(part_rule);
|
|
|
|
-
|
|
|
|
- if (StringUtils.notEmp(rule)) {
|
|
|
|
- String[] part_rules = rule.split(",");
|
|
|
|
- for (int i = 0; i < part_rules.length; i++) {
|
|
|
|
- String temp = env.getProperty(part_rules[i]);
|
|
|
|
-
|
|
|
|
- rules.add(temp);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 初始化隶属度计算参数
|
|
|
|
- MembershipRuleVo msvo = new MembershipRuleVo();
|
|
|
|
- msvo.setCondition(env.getProperty(condition_lsd));
|
|
|
|
- msvo.setStaterule1(env.getProperty(params_lsd1));
|
|
|
|
- msvo.setStaterule2(env.getProperty(params_lsd2));
|
|
|
|
- msvo.setStaterule3(env.getProperty(params_lsd3));
|
|
|
|
- msvo.setStaterule4(env.getProperty(params_lsd4));
|
|
|
|
-
|
|
|
|
- ModuleVo vo = getModuleValue(wtIdls, code, typels, cwdls, rules, msvo,now);
|
|
|
|
-
|
|
|
|
- if (StringUtils.notEmp(vo)) {
|
|
|
|
- logger.info("状态值" + vo.getModuleState());
|
|
|
|
-
|
|
|
|
- logger.info("结果值是:" );
|
|
|
|
-
|
|
|
|
- StringBuilder sb=new StringBuilder();
|
|
|
|
- for(int i=0;i<vo.getModuleResult().size();i++)
|
|
|
|
- {
|
|
|
|
- if(i==vo.getModuleResult().size()-1)
|
|
|
|
- {
|
|
|
|
- sb.append(StringUtils.round(vo.getModuleResult().get(i), digits));
|
|
|
|
- }else{
|
|
|
|
- sb.append(StringUtils.round(vo.getModuleResult().get(i), digits)).append(",");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- logger.info(String.valueOf(sb));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return vo;
|
|
|
|
- }
|
|
|
|
|
|
+ // 遍历齿轮箱统一编码
|
|
|
|
+ String[] up82_part_clx = env.getProperty(part_clx).split(",");
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < up82_part_clx.length; i++) {
|
|
|
|
+ code.add(up82_part_clx[i]);
|
|
|
|
+ wtIdls.add(wtId);
|
|
|
|
+ }
|
|
|
|
+ // 遍历齿轮箱各指标对应算法
|
|
|
|
+ String[] up82_type_clx = env.getProperty(type_clx).split(",");
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < up82_type_clx.length; i++) {
|
|
|
|
+ typels.add(Integer.valueOf(up82_type_clx[i]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 遍历齿轮箱权重
|
|
|
|
+ String[] up82_weight_clx = env.getProperty(weight_clx).split(",");
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < up82_weight_clx.length; i++) {
|
|
|
|
+ cwdls.add(Double.valueOf(up82_weight_clx[i]));
|
|
|
|
+ }
|
|
|
|
+ // 获得齿轮箱范围值
|
|
|
|
+ String rule = env.getProperty(part_rule);
|
|
|
|
+
|
|
|
|
+ if (StringUtils.notEmp(rule)) {
|
|
|
|
+ String[] part_rules = rule.split(",");
|
|
|
|
+ for (int i = 0; i < part_rules.length; i++) {
|
|
|
|
+ String temp = env.getProperty(part_rules[i]);
|
|
|
|
+
|
|
|
|
+ rules.add(temp);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 初始化隶属度计算参数
|
|
|
|
+ MembershipRuleVo msvo = new MembershipRuleVo();
|
|
|
|
+ msvo.setCondition(env.getProperty(condition_lsd));
|
|
|
|
+ msvo.setStaterule1(env.getProperty(params_lsd1));
|
|
|
|
+ msvo.setStaterule2(env.getProperty(params_lsd2));
|
|
|
|
+ msvo.setStaterule3(env.getProperty(params_lsd3));
|
|
|
|
+ msvo.setStaterule4(env.getProperty(params_lsd4));
|
|
|
|
+
|
|
|
|
+ ModuleVo vo = getModuleValue(wtIdls, code, typels, cwdls, rules, msvo,now);
|
|
|
|
+
|
|
|
|
+ if (StringUtils.notEmp(vo)) {
|
|
|
|
+ logger.info("状态值" + vo.getModuleState());
|
|
|
|
+
|
|
|
|
+ logger.info("结果值是:" );
|
|
|
|
+
|
|
|
|
+ StringBuilder sb=new StringBuilder();
|
|
|
|
+ for(int i=0;i<vo.getModuleResult().size();i++)
|
|
|
|
+ {
|
|
|
|
+ if(i==vo.getModuleResult().size()-1)
|
|
|
|
+ {
|
|
|
|
+ sb.append(StringUtils.round(vo.getModuleResult().get(i), digits));
|
|
|
|
+ }else{
|
|
|
|
+ sb.append(StringUtils.round(vo.getModuleResult().get(i), digits)).append(",");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ logger.info(String.valueOf(sb));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|