Browse Source

增加配方相关功能

wukai 1 year ago
parent
commit
18cda7e423

+ 37 - 4
ruoyi-admin/src/main/java/com/ruoyi/biz/controller/ApiController.java

@@ -1,9 +1,6 @@
 package com.ruoyi.biz.controller;
 
-import com.ruoyi.biz.domain.IndexData;
-import com.ruoyi.biz.domain.TwinCalc2hr;
-import com.ruoyi.biz.domain.TwinDevice;
-import com.ruoyi.biz.domain.TwinRecordAlarms;
+import com.ruoyi.biz.domain.*;
 import com.ruoyi.biz.service.*;
 import com.ruoyi.biz.service.impl.AsyncServiceImpl;
 import com.ruoyi.biz.tools.Tools;
@@ -40,6 +37,7 @@ import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * swagger 用户测试方法
@@ -137,6 +135,41 @@ public class ApiController extends BaseController {
         return R.ok(result);
     }
 
+    @ApiOperation("配方统计")
+    @GetMapping("/formula/total")
+    @CrossOrigin(origins = "*")
+    public R<List<FormulaTotal>> formulaTotal() {
+        Object d = CacheUtils.get(Constants.IOT_TOKEN, Constants.INDEX_FORMULA_TOTAL);
+        if (d != null) {
+            List<FormulaTotal> list = (List<FormulaTotal>) d;
+            return R.ok(list);
+        } else {
+            return R.fail();
+        }
+    }
+
+    @ApiOperation("配方详情")
+    @GetMapping("/formula/detail/{height}")
+    @CrossOrigin(origins = "*")
+    public R<List> formulaDetail(@PathVariable Float height) {
+        Object d = CacheUtils.get(Constants.IOT_TOKEN, Constants.INDEX_FORMULA_DETAIL);
+        if (d != null) {
+            List<FormulaDetail> list = (List<FormulaDetail>) d;
+            list = list.stream().filter(detail -> detail.getFormula_data_15().equals(height)).collect(Collectors.toList());
+            return R.ok(list);
+        } else {
+            return R.fail();
+        }
+    }
+
+    @ApiOperation("配方详情导出")
+    @GetMapping("/formula/export/{height}")
+    @CrossOrigin(origins = "*")
+    public R<Map> formulaExport(@PathVariable Float height) {
+        return R.ok();
+    }
+
+
     @ApiOperation("导出Excel")
     @GetMapping("/export")
     @CrossOrigin(origins = "*")

+ 101 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/domain/FormulaDetail.java

@@ -0,0 +1,101 @@
+package com.ruoyi.biz.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 周曲线
+ *
+ * @author wukai
+ * @date 2024/5/8 15:50
+ */
+@ApiModel(value = "FormulaTotal", description = "配方-统计数据")
+@Data
+public class FormulaDetail {
+    @ApiModelProperty("设备信息")
+    private String device;
+    @ApiModelProperty("配方号")
+    private Integer formula_data_1;
+    @ApiModelProperty("机台号")
+    private Integer formula_data_2;
+    @ApiModelProperty("米克重")
+    private Integer formula_data_3;
+    @ApiModelProperty("L1、L5纱线规格D")
+    private Integer formula_data_4;
+    @ApiModelProperty("L2、L4纱线规格D")
+    private Integer formula_data_5;
+    @ApiModelProperty("L3纱线规格D")
+    private Integer formula_data_6;
+    @ApiModelProperty("L1、L5纱线规格F")
+    private Integer formula_data_7;
+    @ApiModelProperty("L2、L4纱线规格F")
+    private Integer formula_data_8;
+    @ApiModelProperty("L3纱线规格F")
+    private Integer formula_data_9;
+    @ApiModelProperty("L1、L5盘头根数")
+    private Integer formula_data_10;
+    @ApiModelProperty("L2、L4盘头根数")
+    private Integer formula_data_11;
+    @ApiModelProperty("L3盘头根数")
+    private Integer formula_data_12;
+    @ApiModelProperty("卷曲幅宽")
+    private Float formula_data_13;
+    @ApiModelProperty("下布长度")
+    private Float formula_data_14;
+    @ApiModelProperty("毛高")
+    private Float formula_data_15;
+    @ApiModelProperty("成品长")
+    private Float formula_data_16;
+    @ApiModelProperty("成品宽")
+    private Float formula_data_17;
+    @ApiModelProperty("成品重")
+    private Float formula_data_18;
+    @ApiModelProperty("GB1送经量")
+    private Integer formula_data_19;
+    @ApiModelProperty("GB2送经量")
+    private Integer formula_data_20;
+    @ApiModelProperty("GB3送经量")
+    private Integer formula_data_21;
+    @ApiModelProperty("GB4送经量")
+    private Integer formula_data_22;
+    @ApiModelProperty("GB5送经量")
+    private Integer formula_data_23;
+    @ApiModelProperty("牵拉密度")
+    private Float formula_data_24;
+    @ApiModelProperty("卷曲张力系数")
+    private Float formula_data_25;
+
+    public FormulaDetail(Map<String, Object> map) {
+        TwinDevice twinDevice = (TwinDevice) map.get("device");
+        this.device = twinDevice.getDeviceName();
+        this.formula_data_1 = (int) map.get("Formula_data_1");
+        this.formula_data_2 = (int) map.get("Formula_data_2");
+        this.formula_data_3 = (int) map.get("Formula_data_3");
+        this.formula_data_4 = (int) map.get("Formula_data_4");
+        this.formula_data_5 = (int) map.get("Formula_data_5");
+        this.formula_data_6 = (int) map.get("Formula_data_6");
+        this.formula_data_7 = (int) map.get("Formula_data_7");
+        this.formula_data_8 = (int) map.get("Formula_data_8");
+        this.formula_data_9 = (int) map.get("Formula_data_9");
+        this.formula_data_10 = (int) map.get("Formula_data_10");
+        this.formula_data_11 = (int) map.get("Formula_data_11");
+        this.formula_data_12 = (int) map.get("Formula_data_12");
+        this.formula_data_13 = (float) map.get("Formula_data_13");
+        this.formula_data_14 = (float) map.get("Formula_data_14");
+        this.formula_data_15 = (float) map.get("Formula_data_15");
+        this.formula_data_16 = (float) map.get("Formula_data_16");
+        this.formula_data_17 = (float) map.get("Formula_data_17");
+        this.formula_data_18 = (float) map.get("Formula_data_18");
+        this.formula_data_19 = (int) map.get("Formula_data_19");
+        this.formula_data_20 = (int) map.get("Formula_data_20");
+        this.formula_data_21 = (int) map.get("Formula_data_21");
+        this.formula_data_22 = (int) map.get("Formula_data_22");
+        this.formula_data_23 = (int) map.get("Formula_data_23");
+        this.formula_data_24 = (float) map.get("Formula_data_24");
+        this.formula_data_25 = (float) map.get("Formula_data_25");
+    }
+
+}

+ 23 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/domain/FormulaTotal.java

@@ -0,0 +1,23 @@
+package com.ruoyi.biz.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 周曲线
+ *
+ * @author wukai
+ * @date 2024/5/8 15:50
+ */
+@ApiModel(value = "FormulaTotal", description = "配方-统计数据")
+@Data
+public class FormulaTotal {
+    @ApiModelProperty("毛高")
+    private Float height;
+    @ApiModelProperty("数量")
+    private Integer num;
+    @ApiModelProperty("占比")
+    private Float percent;
+
+}

+ 24 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/ApiServiceImpl.java

@@ -17,6 +17,7 @@ import java.time.ZoneOffset;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
+import java.util.stream.Collectors;
 
 /**
  * 首页统计数据
@@ -84,6 +85,10 @@ public class ApiServiceImpl implements IApiService {
         IndexData indexData = new IndexData();
         List<IndexAlarm> alarmList = new ArrayList<>();
         List<IndexPan> panList = new ArrayList<>();
+        //配方统计数据
+        List<FormulaTotal> formulaTotal = new ArrayList<>();
+        //配方明细数据
+        List<FormulaDetail> formulaDetail = new ArrayList<>();
         int stop1 = 0, stop2 = 0, stop6 = 0, stop8 = 0;
         iotService.getToken();
         List<TwinDevice> list = deviceService.selectTwinDeviceList(new TwinDevice());
@@ -101,11 +106,16 @@ public class ApiServiceImpl implements IApiService {
             for (Future<Map<String, Object>> future : futureList) {
                 Map<String, Object> map = future.get();
                 TwinDevice device = (TwinDevice) map.get("device");
+
                 int total = (int) map.get("total");
                 if (total == 0) {
                     //可能会出现接口返回无数据的情况
                     continue;
                 }
+                //处理配方明细数据
+                FormulaDetail detail = new FormulaDetail(map);
+                formulaDetail.add(detail);
+
                 int data4 = (int) map.get("Capacity_data_4");
                 if (data4 == 0) {
                     //Capacity_data_4,如果设定落布米数为0,则证明当前数据无效
@@ -193,6 +203,20 @@ public class ApiServiceImpl implements IApiService {
         device.setAlarm(alarmList.size());
         indexData.setDevice(device);
         CacheUtils.put(Constants.IOT_TOKEN, Constants.INDEX_ALARM, indexData);
+
+        Map<Float, Long> temp = formulaDetail.stream().collect(Collectors.groupingBy(FormulaDetail::getFormula_data_15, Collectors.counting()));
+        for (Float v : temp.keySet()) {
+            FormulaTotal total = new FormulaTotal();
+            total.setHeight(v);
+            int num = Math.toIntExact(temp.get(v));
+            total.setNum(num);
+            float percent = BigDecimal.valueOf(num).divide(BigDecimal.valueOf(list.size()), 2, RoundingMode.HALF_UP).floatValue();
+            total.setPercent(percent);
+            formulaTotal.add(total);
+        }
+
+        CacheUtils.put(Constants.IOT_TOKEN, Constants.INDEX_FORMULA_TOTAL, formulaTotal);
+        CacheUtils.put(Constants.IOT_TOKEN, Constants.INDEX_FORMULA_DETAIL, formulaDetail);
     }
 
     @PostConstruct

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

@@ -86,6 +86,14 @@ public class Constants {
      */
     public static final String INDEX_ALARM = "indexAlarm";
     /**
+     * 首页配方明细缓存
+     */
+    public static final String INDEX_FORMULA_DETAIL = "indexFormulaDetail";
+    /**
+     * 首页配方统计缓存
+     */
+    public static final String INDEX_FORMULA_TOTAL = "indexFormulaTotal";
+    /**
      * 参数管理 cache key
      */
     public static final String SYS_CONFIG_KEY = "sys_config:";