|
@@ -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 = "*")
|