Kaynağa Gözat

纱线规格接口

wukai 4 ay önce
ebeveyn
işleme
5521e012e8

+ 61 - 1
jjt-biz/src/main/java/com/jjt/biz/controller/ApiYarnExportController.java

@@ -2,12 +2,15 @@ package com.jjt.biz.controller;
 
 import com.jjt.biz.service.impl.BrokenYarnExportServiceImpl;
 import com.jjt.biz.vo.FormulaDetail;
+import com.jjt.biz.vo.YarnVO;
 import com.jjt.calc.domain.TwinCalcDay;
 import com.jjt.calc.service.ITwinCalcDayService;
 import com.jjt.common.constant.CacheConstants;
 import com.jjt.common.core.controller.BaseController;
+import com.jjt.common.core.domain.R;
 import com.jjt.common.core.redis.RedisCache;
 import com.jjt.common.utils.DateUtils;
+import com.jjt.common.utils.bean.BeanUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -17,8 +20,8 @@ import org.apache.poi.xddf.usermodel.chart.BarDirection;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -194,6 +197,63 @@ public class ApiYarnExportController extends BaseController {
         }
     }
 
+    @ApiOperation("纱线规格")
+    @RequestMapping("/api/view/yarn-specifications")
+    @CrossOrigin(origins = "*")
+    public R yarnSpecificationsView(@RequestParam Integer day) {
+        List<FormulaDetail> list = redisCache.getCacheObject(CacheConstants.INDEX_FORMULA_DETAIL);
+        Map<String, Object> result = new HashMap<>(16);
+        if (list != null) {
+            list.sort(Comparator.comparing(FormulaDetail::getFormula_data_4).thenComparing(FormulaDetail::getFormula_data_5).thenComparing(FormulaDetail::getFormula_data_6)
+                    .thenComparing(FormulaDetail::getFormula_data_7).thenComparing(FormulaDetail::getFormula_data_8).thenComparing(FormulaDetail::getFormula_data_9)
+                    .thenComparing(FormulaDetail::getFormula_data_15));
+            Map<String, List<FormulaDetail>> map = list.stream().collect(Collectors.groupingBy(FormulaDetail::getYarnD, LinkedHashMap::new, Collectors.toList()));
+            result.put("list", map);
+            LocalDate localDate = LocalDateTime.now().minusHours(7).minusDays(1).toLocalDate();
+            Date sd = DateUtils.toDate(localDate);
+            List<TwinCalcDay> calcDayList = twinCalcDayService.selectTwinCalcDayListByTime(sd, sd);
+            Map<Long, BigDecimal> decimalMap = calcDayList.stream().collect(Collectors.toMap(TwinCalcDay::getDeviceId, TwinCalcDay::getLength));
+            List<YarnVO> voList = new ArrayList<>();
+            //1.先按底纱分组
+            Map<String, List<FormulaDetail>> map2 = list.stream().collect(Collectors.groupingBy(FormulaDetail::getYarnDd, LinkedHashMap::new, Collectors.toList()));
+            for (String s : map2.keySet()) {
+                List<FormulaDetail> l12list = map2.get(s);
+                //2.再按规格分组
+                Map<Integer, List<FormulaDetail>> d1map = l12list.stream().collect(Collectors.groupingBy(FormulaDetail::getFormula_data_6, LinkedHashMap::new, Collectors.toList()));
+                for (Integer l3d : d1map.keySet()) {
+                    List<FormulaDetail> l3list = d1map.get(l3d);
+                    //3.再按盘头根数和毛高分组
+                    Map<String, List<FormulaDetail>> d2map = l3list.stream().collect(Collectors.groupingBy(FormulaDetail::getYarnPt, LinkedHashMap::new, Collectors.toList()));
+                    for (String pt : d2map.keySet()) {
+                        List<FormulaDetail> ptList = d2map.get(pt);
+                        FormulaDetail detail = ptList.get(0);
+                        YarnVO vo = new YarnVO();
+                        BeanUtils.copyProperties(detail, vo);
+                        BigDecimal length = BigDecimal.ZERO;
+                        for (FormulaDetail dd : ptList) {
+                            BigDecimal temp = decimalMap.get(dd.getDeviceId());
+                            if (temp != null) {
+                                length = length.add(temp);
+                            }
+                        }
+                        BigDecimal yLength = length.multiply(BigDecimal.valueOf(day));
+                        vo.setLastLength(length);
+                        vo.setNextLength(yLength);
+                        //规格占比
+                        BigDecimal percent1 = BigDecimal.valueOf(ptList.size()).divide(BigDecimal.valueOf(list.size()), 4, RoundingMode.HALF_UP);
+                        vo.setPercentD(percent1);
+                        BigDecimal percent2 = BigDecimal.valueOf(l12list.size()).divide(BigDecimal.valueOf(list.size()), 4, RoundingMode.HALF_UP);
+                        vo.setPercentDd(percent2);
+                        voList.add(vo);
+                    }
+                }
+            }
+            result.put("calc", voList);
+            return R.ok(result);
+        }
+        return R.fail("暂时没有数据");
+    }
+
     @ApiOperation("导出断纱分析")
     @RequestMapping("/api/export/broken-yarn")
     @CrossOrigin(origins = "*")

+ 45 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/YarnVO.java

@@ -0,0 +1,45 @@
+package com.jjt.biz.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 纱线规格视图
+ *
+ * @author wukai
+ * @date 2024/5/8 15:50
+ */
+@ApiModel(value = "YarnVO", description = "纱线规格统计视图")
+@Data
+public class YarnVO {
+    @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盘头根数")
+    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_15;
+    @ApiModelProperty("最近生产日米长")
+    private BigDecimal lastLength;
+    @ApiModelProperty("预计生产米长")
+    private BigDecimal nextLength;
+    @ApiModelProperty("规格占比")
+    private BigDecimal percentD;
+    @ApiModelProperty("底纱占比")
+    private BigDecimal percentDd;
+
+    @ApiModelProperty("纱线规格D")
+    private String yarnD;
+    @ApiModelProperty("纱线规格D底纱")
+    private String yarnDd;
+}