| | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.function.Supplier; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | * */ |
| | | @Override |
| | | public List<EchartsDto> selectList(String productionCode) { |
| | | List<EchartsDto> echartsDtos = new ArrayList<>(); |
| | | // 提前初始化四个统计项对象,设置默认值0 |
| | | Map<String, EchartsDto> echartsMap = new LinkedHashMap<>(); |
| | | echartsMap.put("bysbzs", new EchartsDto("bysbzs", "本月三保计划总数", "0", null, null)); |
| | | echartsMap.put("bwc", new EchartsDto("bwc", "本月完成", "0", null, null)); |
| | | echartsMap.put("xysb", new EchartsDto("xysb", "下月三保计划", "0", null, null)); |
| | | echartsMap.put("xxysb", new EchartsDto("xxysb", "下下月三保计划", "0", null, null)); |
| | | |
| | | QueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new QueryWrapper<>(); |
| | | boolean hasValidCondition = false; |
| | | |
| | | if (StrUtil.isEmpty(productionCode)) { |
| | | // 用户数据权限检查 |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | if (sysUser == null) { |
| | | return echartsDtos; // 返回空列表而非null |
| | | } |
| | | // 设备过滤逻辑 |
| | | if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { |
| | | List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); |
| | | queryWrapper.in("e.equipment_code", equipArr); |
| | | } else { |
| | | List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId())); |
| | | if (CollectionUtils.isEmpty(baseFactoryUserList)) { |
| | | return echartsDtos; // 返回空列表而非null |
| | | if (sysUser != null) { |
| | | // 设备过滤逻辑 |
| | | if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { |
| | | List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); |
| | | queryWrapper.in("e.equipment_code", equipArr); |
| | | hasValidCondition = true; |
| | | } else { |
| | | List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.list( |
| | | new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()) |
| | | ); |
| | | if (!CollectionUtils.isEmpty(baseFactoryUserList)) { |
| | | Set<String> factoryIds = baseFactoryUserList.stream() |
| | | .map(BaseFactoryUser::getFactoryId) |
| | | .collect(Collectors.toSet()); |
| | | Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds).stream() |
| | | .map(BaseFactory::getOrgCode) |
| | | .collect(Collectors.toSet()); |
| | | queryWrapper.in("e.factory_org_code", factoryCodes); |
| | | hasValidCondition = true; |
| | | } |
| | | } |
| | | Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); |
| | | Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); |
| | | } |
| | | } else { |
| | | List<BaseFactory> baseFactoryList = baseFactoryService.list( |
| | | new LambdaQueryWrapper<BaseFactory>() |
| | | .like(BaseFactory::getRemark, productionCode) |
| | | .eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString()) |
| | | ); |
| | | if (!CollectionUtils.isEmpty(baseFactoryList)) { |
| | | Set<String> factoryCodes = new HashSet<>(); |
| | | for (BaseFactory baseFactory : baseFactoryList) { |
| | | List<BaseFactory> factoryList = baseFactoryService.queryFactoryByPid(baseFactory.getId()); |
| | | factoryCodes.addAll(factoryList.stream() |
| | | .map(BaseFactory::getOrgCode) |
| | | .collect(Collectors.toSet())); |
| | | } |
| | | queryWrapper.in("e.factory_org_code", factoryCodes); |
| | | hasValidCondition = true; |
| | | } |
| | | }else { |
| | | //通过选择的车间过滤对应中心 |
| | | List<BaseFactory> baseFactoryList = baseFactoryService.list(new LambdaQueryWrapper<BaseFactory>() |
| | | .like(BaseFactory::getRemark, productionCode).eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); |
| | | if (CollectionUtils.isEmpty(baseFactoryList)) { |
| | | return echartsDtos; |
| | | } |
| | | //组装EAM数据 |
| | | Set<String> factoryCodes= new HashSet<>(); |
| | | baseFactoryList.forEach(baseFactory -> { |
| | | List<BaseFactory> factoryList=baseFactoryService.queryFactoryByPid(baseFactory.getId()); |
| | | factoryCodes.addAll(factoryList.stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet())); |
| | | }); |
| | | queryWrapper.in("e.factory_org_code", factoryCodes); |
| | | } |
| | | |
| | | // 如果没有有效查询条件,直接返回默认值列表 |
| | | if (!hasValidCondition) { |
| | | return new ArrayList<>(echartsMap.values()); |
| | | } |
| | | |
| | | // 获取当前年月和下两个月的年月字符串 |
| | |
| | | String nextNextMonth = LocalDate.now().plusMonths(2).format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | |
| | | // 从字典表获取配置值 |
| | | String bysbjh = sysDictService.queryEnableDictItemsByCode("eam_home_third_number_bysbzs").get(0).getValue(); |
| | | String bywc = sysDictService.queryEnableDictItemsByCode("eam_home_third_number_bwc").get(0).getValue(); |
| | | String xysb = sysDictService.queryEnableDictItemsByCode("eam_home_third_number_xysb").get(0).getValue(); |
| | | String xxysb = sysDictService.queryEnableDictItemsByCode("eam_home_third_number_xxysb").get(0).getValue(); |
| | | Map<String, String> dictValues = new HashMap<>(); |
| | | dictValues.put("bysbzs", sysDictService.queryEnableDictItemsByCode("eam_home_third_number_bysbzs").get(0).getValue()); |
| | | dictValues.put("bwc", sysDictService.queryEnableDictItemsByCode("eam_home_third_number_bwc").get(0).getValue()); |
| | | dictValues.put("xysb", sysDictService.queryEnableDictItemsByCode("eam_home_third_number_xysb").get(0).getValue()); |
| | | dictValues.put("xxysb", sysDictService.queryEnableDictItemsByCode("eam_home_third_number_xxysb").get(0).getValue()); |
| | | |
| | | // 本月三保计划总数 |
| | | if ("0".equals(bysbjh)) { |
| | | List<EamThirdMaintenanceOrder> currentMonthOrders = this.baseMapper.queryAsList( |
| | | queryWrapper.clone().like("maintenance_date", currentYearMonth) |
| | | ); |
| | | echartsDtos.add(new EchartsDto("bysbzs", "本月三保计划总数", |
| | | String.valueOf(currentMonthOrders.size()), null, null)); |
| | | // 更新统计项(仅在配置值为"0"时查询实际数据) |
| | | updateEchartsValue(echartsMap, "bysbzs", dictValues, |
| | | () -> this.baseMapper.queryAsList(queryWrapper.clone().like("maintenance_date", currentYearMonth)).size()); |
| | | |
| | | updateEchartsValue(echartsMap, "bwc", dictValues, |
| | | () -> this.baseMapper.queryAsList(queryWrapper.clone() |
| | | .like("maintenance_date", currentYearMonth) |
| | | .eq("maintenance_status", ThirdMaintenanceStatusEnum.COMPLETE.name()) |
| | | ).size()); |
| | | |
| | | updateEchartsValue(echartsMap, "xysb", dictValues, |
| | | () -> this.baseMapper.queryAsList(queryWrapper.clone().like("maintenance_date", nextMonth)).size()); |
| | | |
| | | updateEchartsValue(echartsMap, "xxysb", dictValues, |
| | | () -> this.baseMapper.queryAsList(queryWrapper.clone().like("maintenance_date", nextNextMonth)).size()); |
| | | |
| | | return new ArrayList<>(echartsMap.values()); |
| | | } |
| | | |
| | | // 辅助方法:更新统计项的值 |
| | | private void updateEchartsValue(Map<String, EchartsDto> echartsMap, String key, |
| | | Map<String, String> dictValues, Supplier<Integer> valueSupplier) { |
| | | if ("0".equals(dictValues.get(key))) { |
| | | int count = valueSupplier.get(); |
| | | echartsMap.get(key).setValue(String.valueOf(count)); |
| | | } else { |
| | | echartsDtos.add(new EchartsDto("bysbzs", "本月三保计划总数", |
| | | bysbjh, null, null)); |
| | | echartsMap.get(key).setValue(dictValues.get(key)); |
| | | } |
| | | |
| | | // 本月完成 |
| | | if ("0".equals(bywc)) { |
| | | List<EamThirdMaintenanceOrder> currentMonthCompleted = this.baseMapper.queryAsList( |
| | | queryWrapper.clone().like("maintenance_date", currentYearMonth) |
| | | .eq("maintenance_status", ThirdMaintenanceStatusEnum.COMPLETE.name()) |
| | | ); |
| | | echartsDtos.add(new EchartsDto("bwc", "本月完成", |
| | | String.valueOf(currentMonthCompleted.size()), null, null)); |
| | | } else { |
| | | echartsDtos.add(new EchartsDto("bwc", "本月完成", |
| | | bywc, null, null)); |
| | | } |
| | | |
| | | // 下月三保计划 |
| | | if ("0".equals(xysb)) { |
| | | List<EamThirdMaintenanceOrder> nextMonthOrders = this.baseMapper.queryAsList( |
| | | queryWrapper.clone().like("maintenance_date", nextMonth) |
| | | ); |
| | | echartsDtos.add(new EchartsDto("xysb", "下月三保计划", |
| | | String.valueOf(nextMonthOrders.size()), null, null)); |
| | | } else { |
| | | echartsDtos.add(new EchartsDto("xysb", "下月三保计划", |
| | | xysb, null, null)); |
| | | } |
| | | |
| | | // 下下月三保计划 |
| | | if ("0".equals(xxysb)) { |
| | | List<EamThirdMaintenanceOrder> nextNextMonthOrders = this.baseMapper.queryAsList( |
| | | queryWrapper.clone().like("maintenance_date", nextNextMonth) |
| | | ); |
| | | echartsDtos.add(new EchartsDto("xxysb", "下下月三保计划", |
| | | String.valueOf(nextNextMonthOrders.size()), null, null)); |
| | | } else { |
| | | echartsDtos.add(new EchartsDto("xxysb", "下下月三保计划", |
| | | xxysb, null, null)); |
| | | } |
| | | |
| | | return echartsDtos; |
| | | } |
| | | |
| | | /** |