| | |
| | | import com.ruoyi.productionPlan.enums.AddressRegionEnum; |
| | | import com.ruoyi.productionPlan.mapper.SalesDeliveryMapper; |
| | | import com.ruoyi.productionPlan.pojo.SalesDelivery; |
| | | import com.ruoyi.productionPlan.pojo.ProductionPlan; |
| | | import com.ruoyi.productionPlan.service.ProductionPlanService; |
| | | import com.ruoyi.project.system.domain.SysDept; |
| | | import com.ruoyi.project.system.domain.SysDictData; |
| | | import com.ruoyi.project.system.mapper.SysDeptMapper; |
| | |
| | | map.put("materialInspection", materialInspection); |
| | | return map; |
| | | } |
| | | |
| | | @Autowired |
| | | private ProductionPlanService productionPlanService; |
| | | |
| | | @Override |
| | | public List<PlanTrendsDto> planTrends(Integer type) { |
| | | LocalDate now = LocalDate.now(); |
| | | LocalDate startDate; |
| | | DateTimeFormatter formatter; |
| | | int points; |
| | | |
| | | if (type == null) type = 1; |
| | | if (type == 1) { // 日 |
| | | points = 1; |
| | | startDate = now; |
| | | formatter = DateTimeFormatter.ofPattern("MM-dd"); |
| | | } else if (type == 2) { // 周 |
| | | startDate = now.with(DayOfWeek.MONDAY); |
| | | points = (int) ChronoUnit.DAYS.between(startDate, now) + 1; |
| | | formatter = DateTimeFormatter.ofPattern("MM-dd"); |
| | | } else { // 月 |
| | | startDate = now.with(TemporalAdjusters.firstDayOfMonth()); |
| | | points = now.getDayOfMonth(); |
| | | formatter = DateTimeFormatter.ofPattern("MM-dd"); |
| | | } |
| | | |
| | | Map<String, PlanTrendsDto> resultMap = new LinkedHashMap<>(); |
| | | for (int i = 0; i < points; i++) { |
| | | String label = startDate.plusDays(i).format(formatter); |
| | | PlanTrendsDto dto = new PlanTrendsDto(); |
| | | dto.setDateStr(label); |
| | | dto.setPlannedVolume(BigDecimal.ZERO); |
| | | dto.setLowerVolume(BigDecimal.ZERO); |
| | | dto.setCompletionVolume(BigDecimal.ZERO); |
| | | resultMap.put(label, dto); |
| | | } |
| | | // 统计计划量 |
| | | List<ProductionPlan> plans = productionPlanService.list(Wrappers.<ProductionPlan>lambdaQuery() |
| | | .ge(ProductionPlan::getStartDate, Date.from(startDate.atStartOfDay(ZoneId.systemDefault()).toInstant()))); |
| | | for (ProductionPlan plan : plans) { |
| | | if (plan.getStartDate() == null || plan.getVolume() == null) continue; |
| | | LocalDate d = plan.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | String label = d.format(formatter); |
| | | if (resultMap.containsKey(label)) { |
| | | PlanTrendsDto dto = resultMap.get(label); |
| | | dto.setPlannedVolume(dto.getPlannedVolume().add(plan.getVolume())); |
| | | } |
| | | } |
| | | // 统计下发量 |
| | | List<ProductOrder> orders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery() |
| | | .ge(ProductOrder::getStartTime, startDate.atStartOfDay())); |
| | | for (ProductOrder order : orders) { |
| | | if (order.getStartTime() == null || order.getQuantity() == null) continue; |
| | | LocalDate d = order.getStartTime().toLocalDate(); |
| | | String label = d.format(formatter); |
| | | if (resultMap.containsKey(label)) { |
| | | PlanTrendsDto dto = resultMap.get(label); |
| | | dto.setLowerVolume(dto.getLowerVolume().add(order.getQuantity())); |
| | | } |
| | | } |
| | | // 统计完成量 |
| | | List<ProductionProductOutput> outputs = productionProductOutputMapper.selectList(Wrappers.<ProductionProductOutput>lambdaQuery() |
| | | .ge(ProductionProductOutput::getCreateTime, startDate.atStartOfDay())); |
| | | for (ProductionProductOutput output : outputs) { |
| | | if (output.getCreateTime() == null || output.getQuantity() == null) continue; |
| | | LocalDate d = output.getCreateTime().toLocalDate(); |
| | | String label = d.format(formatter); |
| | | if (resultMap.containsKey(label)) { |
| | | PlanTrendsDto dto = resultMap.get(label); |
| | | dto.setCompletionVolume(dto.getCompletionVolume().add(output.getQuantity())); |
| | | } |
| | | } |
| | | |
| | | return new ArrayList<>(resultMap.values()); |
| | | } |
| | | |
| | | } |