home 2 tahun lalu
induk
melakukan
ed04c6ed64

+ 9 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java

@@ -136,6 +136,15 @@ public class StockBackController {
     }
 
     /**
+     * 面料使用率工艺统计
+     */
+    @PostMapping("/techStatistics")
+    public R techStatistics(@RequestBody Map<String, String> condition) {
+        Map<String, List<Map<String, Object>>> result = stockBackService.techStatistics(condition);
+        return R.success(result);
+    }
+
+    /**
      * 面料使用率用户统计
      */
     @PostMapping("/statisticsDetails")

+ 2 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackService.java

@@ -44,6 +44,8 @@ public interface StockBackService extends BaseService<StockBack> {
 
     Map<String, List<Map<String, Object>>> userStatistics(Map<String, String> condition);
 
+    Map<String, List<Map<String, Object>>> techStatistics(Map<String, String> condition);
+
     StatisticsResult statisticsDetails(Map<String, String> condition);
 
     Page<StatisticsResult> statisticsPage(Map<String, String> condition);

+ 69 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

@@ -300,6 +300,75 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
     }
 
     @Override
+    public Map<String, List<Map<String, Object>>> techStatistics(Map<String, String> condition) {
+        String beginTimeStr = condition.get("beginTime");
+        Assert.notEmpty(beginTimeStr, "开始时间不能为空");
+        Date beginTime = DateUtil.beginOfDay(DateUtil.parse(beginTimeStr));
+
+        String endTimeStr = condition.get("endTime");
+        Assert.notEmpty(endTimeStr, "结束时间不能为空");
+        Date endTime = DateUtil.endOfDay(DateUtil.parse(endTimeStr));
+
+        List<Map<String, Object>> userList = userList();
+
+        List<StockBackPlanDetails> planList = stockBackPlanDetailsService.list(Wrappers.<StockBackPlanDetails>lambdaQuery()
+                .between(StockBackPlanDetails::getPlanTime, beginTime, endTime)
+                .ne(StockBackPlanDetails::getTech, "")
+                .isNotNull(StockBackPlanDetails::getTech)
+        );
+
+        // 用户按工号分组
+        Map<String, Map<String, Object>> jobNoMap = userList.stream().collect(Collectors.toMap(
+                item -> item.get("jobNo").toString(),
+                item -> item
+        ));
+
+        // 先按工艺归类,再按用户归类
+        Map<String, Map<String, List<StockBackPlanDetails>>> collect = planList.stream().collect(Collectors.groupingBy(
+                StockBackPlanDetails::getTech,
+                Collectors.groupingBy(StockBackPlanDetails::getJobNo)
+        ));
+
+        Map<String, List<Map<String, Object>>> result = new HashMap<>();
+
+        collect.forEach((k, v) -> {
+            List<Map<String, Object>> list = new ArrayList<>();
+
+            v.forEach((k2, v2) -> {
+                Map<String, Object> map = jobNoMap.get(k);
+                if (map != null) {
+                    if (v2 != null && v2.size() > 0) {
+                        BigDecimal scheduleArea = BigDecimal.ZERO;
+                        BigDecimal pickingArea = BigDecimal.ZERO;
+                        BigDecimal backArea = BigDecimal.ZERO;
+                        BigDecimal correctArea = BigDecimal.ZERO;
+
+                        for (StockBackPlanDetails item : v2) {
+                            scheduleArea = scheduleArea.add(item.getQuantity());
+                            pickingArea = pickingArea.add(item.getPickingArea()).add(item.getTransferInArea() == null ? BigDecimal.ZERO : item.getTransferInArea());
+                            backArea = backArea.add(item.getBackArea()).add(item.getTransferOutArea() == null ? BigDecimal.ZERO : item.getTransferOutArea());
+                            correctArea = correctArea.add(item.getCorrectArea());
+                        }
+
+                        // 赋值使用率
+                        BigDecimal value = BigDecimalUtil.init(scheduleArea).multiply(100).
+                                divideTry(pickingArea.subtract(backArea).subtract(correctArea), 2).getValue();
+
+                        map.put("useRate", value);
+                    } else {
+                        map.put("useRate", BigDecimal.ZERO);
+                    }
+                    list.add(map);
+                }
+            });
+
+            result.put(k, list);
+        });
+
+        return result;
+    }
+
+    @Override
     public StatisticsResult statisticsDetails(Map<String, String> condition) {
 
         StatisticsResult result = new StatisticsResult();

+ 5 - 7
hx-service/storage/src/main/java/com/fjhx/task/controller/ScheduleTaskController.java

@@ -11,8 +11,6 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
-import javax.annotation.PostConstruct;
-
 @Configuration
 @EnableScheduling
 @Slf4j
@@ -65,12 +63,12 @@ public class ScheduleTaskController {
      * 统计排班数据
      */
     @Scheduled(cron = "30 0/5 * * * ?")
-   // @PostConstruct
+//    @PostConstruct
     private void statisticsScheduleDateTask() {
-        // if (BladeApplication.isLocalDev()) {
-        //     return;
-        // }
-        stockBackPlanService.statisticsScheduleDateTask(15);
+        if (BladeApplication.isLocalDev()) {
+            return;
+        }
+        stockBackPlanService.statisticsScheduleDateTask(4);
     }
 
     /**