Browse Source

加入印花产量

wukai 1 day ago
parent
commit
dba2bd35a7

+ 14 - 14
jjt-admin/src/test/java/com/jjt/task/RzTest.java

@@ -128,22 +128,22 @@ public class RzTest {
     public void hour() {
         iotService.setToken();
         String st = "2025-06-01";
-        String ed = "2025-06-03";
+        String ed = "2025-06-06";
         LocalDate localDate = LocalDate.parse(st);
         LocalDate endDate = LocalDate.parse(ed);
         LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN).plusHours(7);
-        hourRzService.hour(start, start.plusHours(1));
-//        LocalDateTime end = LocalDateTime.of(endDate.plusDays(1), LocalTime.MIN).plusHours(6);
-//        LocalDateTime curr = LocalDateTime.now();
-//        if (end.isAfter(curr)) {
-//            end = curr.minusHours(1);
-//        }
-//        do {
-//            int i = start.getHour();
-//            System.err.println(start.toLocalDate().toString() + "\t" + i);
-//            hourRzService.hour(start, start.plusHours(1));
-//            start = start.plusHours(1);
-//        } while (!start.isAfter(end));
+//        hourRzService.hour(start, start.plusHours(1));
+        LocalDateTime end = LocalDateTime.of(endDate.plusDays(1), LocalTime.MIN).plusHours(6);
+        LocalDateTime curr = LocalDateTime.now();
+        if (end.isAfter(curr)) {
+            end = curr.minusHours(1);
+        }
+        do {
+            int i = start.getHour();
+            System.err.println(start.toLocalDate().toString() + "\t" + i);
+            hourRzService.hour(start, start.plusHours(1));
+            start = start.plusHours(1);
+        } while (!start.isAfter(end));
     }
 
     @Test
@@ -203,7 +203,7 @@ public class RzTest {
         req.setEnd(end);
         list.add(req);
 
-        List<CompareVO> vos = apiYrService.compare(list);
+        List<CompareVO> vos = apiYrService.compare(list,true);
         System.err.println(vos.size());
     }
 }

+ 3 - 4
jjt-biz/src/main/java/com/jjt/biz/controller/ApiYrController.java

@@ -50,9 +50,8 @@ public class ApiYrController extends BaseController {
     @RequestMapping("/api/yr/compare")
     @CrossOrigin(origins = "*")
     @ResponseBody
-    public R<?> compare(@RequestBody YrCompareReq vo) throws IOException {
-        String str = new String(Files.readAllBytes(Paths.get(path)));
-        return R.ok(JSONUtil.parseArray(str));
+    public R<?> compare(@RequestBody List<YrCompareBackReq> list)  {
+        return R.ok( service.compare(list,false));
     }
 
     @ApiOperation("后台工艺比对")
@@ -60,7 +59,7 @@ public class ApiYrController extends BaseController {
     @CrossOrigin(origins = "*")
     @ResponseBody
     public R<?> compareBack(@RequestBody List<YrCompareBackReq> list)  {
-        return R.ok( service.compare(list));
+        return R.ok( service.compare(list,true));
     }
 
 

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/domain/TwinDeviceYhj.java

@@ -23,7 +23,7 @@ public class TwinDeviceYhj extends BaseEntity{
     /** ID */
     @ApiModelProperty("ID")
     @TableId
-    private Long deviceId;
+    private Integer deviceId;
 
     /** 设备名称 */
     @ApiModelProperty("设备名称")

+ 2 - 1
jjt-biz/src/main/java/com/jjt/biz/service/IApiYrService.java

@@ -48,7 +48,8 @@ public interface IApiYrService {
      * 工艺对比
      *
      * @param list 输入参数
+     * @param flag 是否返回明细参数
      * @return 结果集
      */
-    List<CompareVO> compare(List<YrCompareBackReq> list);
+    List<CompareVO> compare(List<YrCompareBackReq> list,boolean flag);
 }

+ 168 - 114
jjt-biz/src/main/java/com/jjt/biz/service/impl/ApiYrServiceImpl.java

@@ -6,11 +6,11 @@ import com.jjt.biz.vo.*;
 import com.jjt.calc.domain.TwinCalcDayYhj;
 import com.jjt.calc.domain.TwinCalcHourYhj;
 import com.jjt.calc.service.ITwinCalcDayYhjService;
+import com.jjt.calc.service.ITwinCalcHourYhjService;
 import com.jjt.common.constant.CacheConstants;
 import com.jjt.common.core.redis.RedisCache;
 import com.jjt.common.utils.DateUtils;
 import com.jjt.rz.domain.TwinCalcHourRz;
-import com.jjt.rz.domain.TwinDeviceTypeData;
 import com.jjt.rz.service.ITwinCalcHourRzService;
 import com.jjt.rz.service.ITwinDeviceRzService;
 import com.jjt.rz.service.ITwinDeviceTypeService;
@@ -95,7 +95,7 @@ public class ApiYrServiceImpl implements IApiYrService {
 //        }
 
         List<TwinCalcHourYhj> calcList = redisCache.getCacheObject(CacheConstants.YHJ_TODAY);
-        Map<Long, Map<String, Integer>> sumByDeviceAndTeam = calcList.stream()
+        Map<Integer, Map<String, Integer>> sumByDeviceAndTeam = calcList.stream()
                 .collect(Collectors.groupingBy(
                         TwinCalcHourYhj::getDeviceId,
                         Collectors.groupingBy(
@@ -111,7 +111,7 @@ public class ApiYrServiceImpl implements IApiYrService {
                 lengthB = 0;
             }
             Integer length = lengthA + lengthB;
-            YrProdEfficiencyVO vo = arr[deviceId.intValue()];
+            YrProdEfficiencyVO vo = arr[deviceId];
             if (length > 0) {
                 openTimes.incrementAndGet();
             } else {
@@ -284,6 +284,9 @@ public class ApiYrServiceImpl implements IApiYrService {
 
     }
 
+    @Resource
+    private ITwinCalcHourYhjService yhjService;
+
     /**
      * 工艺对比
      *
@@ -291,122 +294,173 @@ public class ApiYrServiceImpl implements IApiYrService {
      * @return 结果集
      */
     @Override
-    public List<CompareVO> compare(List<YrCompareBackReq> reqs) {
+    public List<CompareVO> compare(List<YrCompareBackReq> reqs, boolean flag) {
         List<CompareVO> result = new ArrayList<>();
-        List<TwinDeviceTypeData> all = typeService.selectTwinDeviceTypeDataAll();
-        Map<Long, TwinDeviceTypeData> dataMap = all.stream()
-                .collect(Collectors.toMap(
-                        TwinDeviceTypeData::getDataId,
-                        item -> item,
-                        (existing, replacement) -> existing
-                ));
         for (YrCompareBackReq req : reqs) {
-            CompareVO vo = new CompareVO();
-            vo.setLine(req.getLine());
-            vo.setStart(req.getStart());
-            vo.setEnd(req.getEnd());
-            vo.setYh(10);
-            CompareVO.Qz qz = vo.getQz();
-            CompareVO.Hz hz = vo.getHz();
-            LocalDateTime ldt = req.getEnd().minusHours(1);
-            Date date = Date.from(ldt.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
-            TwinCalcHourRz search = new TwinCalcHourRz();
-            search.setDataDate(date);
-            search.setHour(ldt.getHour());
-            search.setLine(req.getLine());
-            List<TwinCalcHourRz> list = hourRzService.selectTwinCalcHourRzList(search);
-            list.forEach(item -> {
-                Map<String, Object> map = JSON.parseObject(item.getData(), Map.class);
-                map.put("device", item.getDeviceName());
-                map.put("online", item.getOnline());
-
-                if (item.getWsName().equals("Forward")) {
-                    //前整
-                    switch (item.getTypeId()) {
-                        case 2:
-                            //四节定型机
-                            if ("Y".equals(item.getOnline())) {
-                                qz.setDx(qz.getDx() + 1);
-                            }
-                            qz.addDxPara(map);
-                            break;
-                        case 3:
-                            //双棍烫光机
-                            if ("Y".equals(item.getOnline())) {
-                                qz.setTg(qz.getTg() + 1);
-                            }
-                            qz.addTgPara(map);
-                            break;
-                        case 4:
-                            //高梳机
-                            if ("Y".equals(item.getOnline())) {
-                                qz.setGs(qz.getGs() + 1);
-                            }
-                            qz.addGsPara(map);
-                            break;
-                        case 5:
-                            //双棍刷毛
-                            if ("Y".equals(item.getOnline())) {
-                                qz.setSm(qz.getSm() + 1);
-                            }
-                            qz.addSmPara(map);
-                            break;
-                        default:
-                            break;
-                    }
-                } else if (item.getWsName().equals("Back")) {
-                    //后整
-                    switch (item.getTypeId()) {
-                        case 6:
-                            //六节定型机
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setDx(hz.getDx() + 1);
-                            }
-                            hz.addDxPara(map);
-                            break;
-                        case 3:
-                            //双棍烫光机
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setTg(hz.getTg() + 1);
-                            }
-                            hz.addTgPara(map);
-                            break;
-                        case 4:
-                            //高梳机
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setGs(hz.getGs() + 1);
-                            }
-                            hz.addGsPara(map);
-                            break;
-                        case 5:
-                            //双棍刷毛
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setSm(hz.getSm() + 1);
-                            }
-                            hz.addSmPara(map);
-                            break;
-                        case 7:
-                            //起毛机
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setQm(hz.getQm() + 1);
-                            }
-                            hz.addQmPara(map);
-                            break;
-                        case 9:
-                            //烫剪机
-                            if ("Y".equals(item.getOnline())) {
-                                hz.setTj(hz.getTj() + 1);
-                            }
-                            hz.addTjPara(map);
-                            break;
-                        default:
-                            break;
-                    }
-                }
-            });
+            CompareVO vo = itemProcessor(req, flag);
+            int totalLength = getTotalLength(req);
+            vo.setLength(totalLength);
             result.add(vo);
         }
         return result;
     }
 
+    /**
+     * 获取印花产量数据
+     *
+     * @param req 请求
+     * @return 结果
+     */
+    private Integer getTotalLength(YrCompareBackReq req) {
+        //获取印花产量数据
+        TwinCalcHourYhj yhjSearch = new TwinCalcHourYhj();
+        yhjSearch.setDeviceId(req.getLine());
+        Map<String, Object> params = new HashMap<>(16);
+        params.put("sTime", DateUtils.toDate(req.getStart()));
+        params.put("eTime", DateUtils.toDate(req.getEnd()));
+        yhjSearch.setParams(params);
+        List<TwinCalcHourYhj> yhjList = yhjService.selectTwinCalcHourYhjList(yhjSearch);
+        int totalLength = yhjList.stream()
+                .mapToInt(TwinCalcHourYhj::getLength)
+                .sum();
+        return totalLength;
+    }
+
+    private CompareVO itemProcessor(YrCompareBackReq req, boolean flag) {
+        CompareVO vo = new CompareVO();
+        vo.setLine(req.getLine());
+        vo.setStart(req.getStart());
+        vo.setEnd(req.getEnd());
+        vo.setYh(10);
+        CompareVO.Qz qz = vo.getQz();
+        CompareVO.Hz hz = vo.getHz();
+        LocalDateTime ldt = req.getEnd().minusHours(1);
+        Date date = Date.from(ldt.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
+        TwinCalcHourRz search = new TwinCalcHourRz();
+        search.setDataDate(date);
+        search.setHour(ldt.getHour());
+        search.setLine(req.getLine());
+        List<TwinCalcHourRz> list = hourRzService.selectTwinCalcHourRzList(search);
+        list.forEach(item -> {
+            Map<String, Object> map = JSON.parseObject(item.getData(), Map.class);
+            map.put("device", item.getDeviceName());
+            map.put("online", item.getOnline());
+
+            if ("Forward".equals(item.getWsName())) {
+                qzProcessor(qz, item, flag, map);
+            } else if ("Back".equals(item.getWsName())) {
+                hzProcessor(hz, item, flag, map);
+            } else {
+                //留给烘固机
+            }
+        });
+        return vo;
+    }
+
+    private void qzProcessor(CompareVO.Qz qz, TwinCalcHourRz item, boolean flag, Map<String, Object> map) {
+        //前整
+        switch (item.getTypeId()) {
+            case 2:
+                //四节定型机
+                if ("Y".equals(item.getOnline())) {
+                    qz.setDx(qz.getDx() + 1);
+                }
+                if (flag) {
+                    qz.addDxPara(map);
+                }
+                break;
+            case 3:
+                //双棍烫光机
+                if ("Y".equals(item.getOnline())) {
+                    qz.setTg(qz.getTg() + 1);
+                }
+                if (flag) {
+                    qz.addTgPara(map);
+                }
+                break;
+            case 4:
+                //高梳机
+                if ("Y".equals(item.getOnline())) {
+                    qz.setGs(qz.getGs() + 1);
+                }
+                if (flag) {
+                    qz.addGsPara(map);
+                }
+                break;
+            case 5:
+                //双棍刷毛
+                if ("Y".equals(item.getOnline())) {
+                    qz.setSm(qz.getSm() + 1);
+                }
+                if (flag) {
+                    qz.addSmPara(map);
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void hzProcessor(CompareVO.Hz hz, TwinCalcHourRz item, boolean flag, Map<String, Object> map) {
+        //后整
+        switch (item.getTypeId()) {
+            case 6:
+                //六节定型机
+                if ("Y".equals(item.getOnline())) {
+                    hz.setDx(hz.getDx() + 1);
+                }
+                if (flag) {
+                    hz.addDxPara(map);
+                }
+                break;
+            case 3:
+                //双棍烫光机
+                if ("Y".equals(item.getOnline())) {
+                    hz.setTg(hz.getTg() + 1);
+                }
+                if (flag) {
+                    hz.addTgPara(map);
+                }
+                break;
+            case 4:
+                //高梳机
+                if ("Y".equals(item.getOnline())) {
+                    hz.setGs(hz.getGs() + 1);
+                }
+                if (flag) {
+                    hz.addGsPara(map);
+                }
+                break;
+            case 5:
+                //双棍刷毛
+                if ("Y".equals(item.getOnline())) {
+                    hz.setSm(hz.getSm() + 1);
+                }
+                if (flag) {
+                    hz.addSmPara(map);
+                }
+                break;
+            case 7:
+                //起毛机
+                if ("Y".equals(item.getOnline())) {
+                    hz.setQm(hz.getQm() + 1);
+                }
+                if (flag) {
+                    hz.addQmPara(map);
+                }
+                break;
+            case 9:
+                //烫剪机
+                if ("Y".equals(item.getOnline())) {
+                    hz.setTj(hz.getTj() + 1);
+                }
+                if (flag) {
+                    hz.addTjPara(map);
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
 }

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/vo/YrProdTradeVO.java

@@ -38,7 +38,7 @@ public class YrProdTradeVO {
     }
 
     public void split(List<TwinCalcDayYhj> yhjList, BigDecimal length, BigDecimal weight) {
-        Map<Long, TwinCalcDayYhj> yhjMap = new HashMap<>();
+        Map<Integer, TwinCalcDayYhj> yhjMap = new HashMap<>();
         if (yhjList != null) {
             yhjMap = yhjList.stream()
                     .collect(Collectors.toMap(

+ 1 - 1
jjt-biz/src/main/java/com/jjt/calc/domain/TwinCalcDayYhj.java

@@ -43,7 +43,7 @@ public class TwinCalcDayYhj extends BaseEntity {
      */
     @ApiModelProperty("设备ID")
     @Excel(name = "设备ID")
-    private Long deviceId;
+    private Integer deviceId;
 
     /**
      * 自然天统计长度

+ 1 - 1
jjt-biz/src/main/java/com/jjt/calc/domain/TwinCalcHourYhj.java

@@ -48,7 +48,7 @@ public class TwinCalcHourYhj extends BaseEntity {
      */
     @ApiModelProperty("设备ID")
     @Excel(name = "设备ID")
-    private Long deviceId;
+    private Integer deviceId;
 
     /**
      * 织造米数

+ 5 - 5
jjt-biz/src/main/java/com/jjt/calc/service/impl/TwinCalcDayYhjServiceImpl.java

@@ -121,9 +121,9 @@ public class TwinCalcDayYhjServiceImpl implements ITwinCalcDayYhjService {
         //设置班组
         list.forEach(TwinCalcHourYhj::setTeam);
         //先按ID分组
-        Map<Long, List<TwinCalcHourYhj>> calcMap = list.stream().collect(Collectors.groupingBy(TwinCalcHourYhj::getDeviceId, LinkedHashMap::new, Collectors.toList()));
-        Map<Long, TwinCalcDayYhj> resultMap = new HashMap<>(16);
-        for (Long deviceId : calcMap.keySet()) {
+        Map<Integer, List<TwinCalcHourYhj>> calcMap = list.stream().collect(Collectors.groupingBy(TwinCalcHourYhj::getDeviceId, LinkedHashMap::new, Collectors.toList()));
+        Map<Integer, TwinCalcDayYhj> resultMap = new HashMap<>(16);
+        for (Integer deviceId : calcMap.keySet()) {
             //按班组统计
             Map<String, Integer> calcTeam = calcMap.get(deviceId).stream().collect(Collectors.groupingBy(TwinCalcHourYhj::getTeam, Collectors.reducing(0, TwinCalcHourYhj::getLength, Integer::sum)));
             TwinCalcDayYhj calc = new TwinCalcDayYhj();
@@ -142,8 +142,8 @@ public class TwinCalcDayYhjServiceImpl implements ITwinCalcDayYhjService {
         list = hourYhjMapper.selectTwinCalcHourYhjList(search);
         List<TwinCalcDayYhj> yhjList = new ArrayList<>();
         //按ID分组统计
-        Map<Long, Integer> calcDay = list.stream().collect(Collectors.groupingBy(TwinCalcHourYhj::getDeviceId, Collectors.reducing(0, TwinCalcHourYhj::getLength, Integer::sum)));
-        for (Long deviceId : calcMap.keySet()) {
+        Map<Integer, Integer> calcDay = list.stream().collect(Collectors.groupingBy(TwinCalcHourYhj::getDeviceId, Collectors.reducing(0, TwinCalcHourYhj::getLength, Integer::sum)));
+        for (Integer deviceId : calcMap.keySet()) {
             TwinCalcDayYhj calc = resultMap.get(deviceId);
             calc.setDayLength(calcDay.get(deviceId));
             yhjList.add(calc);