| | |
| | | import org.jeecg.common.constant.CommonConstant; |
| | | import org.jeecg.common.constant.DataBaseConstant; |
| | | import org.jeecg.common.exception.JeecgBootException; |
| | | import org.jeecg.common.system.vo.DictModel; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | | import org.jeecg.common.util.StrUtils; |
| | | import org.jeecg.common.util.oConvertUtils; |
| | | import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; |
| | | import org.jeecg.modules.eam.constant.*; |
| | | import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExport; |
| | | import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExport; |
| | | import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExportYj; |
| | | import org.jeecg.modules.eam.dto.EchartsDto; |
| | | import org.jeecg.modules.eam.entity.*; |
| | | import org.jeecg.modules.eam.mapper.EamThirdMaintenanceOrderMapper; |
| | | import org.jeecg.modules.eam.request.EamThirdMaintenanceBaseResponse; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.function.Supplier; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | if (sysUser == null) { |
| | | return page; |
| | | } |
| | | if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { |
| | | if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { |
| | | //选择了设备,根据设备id过滤设备 |
| | | List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); |
| | | List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); |
| | | queryWrapper.in("e.equipment_code", equipArr); |
| | | } else { |
| | | //没有选择设备,根据中心过滤设备 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 批量打印加工设备三级保养完工移交单 |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<EamThirdMaintenanceOrderExportYj> export(String ids){ |
| | | QueryWrapper<EamThirdMaintenanceOrderExport> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("wmo.del_flag",CommonConstant.DEL_FLAG_0.toString()); |
| | | queryWrapper.eq("wmo.maintenance_status",SecondMaintenanceStatusEnum.COMPLETE.name()); |
| | | //用户数据权限 |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | if (sysUser == null) { |
| | | return new ArrayList<>(); |
| | | } |
| | | if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { |
| | | //选择了设备,根据设备id过滤设备 |
| | | 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)){ |
| | | Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); |
| | | Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); |
| | | queryWrapper.in("e.factory_org_code", factoryCode); |
| | | } else { |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | //查询条件过滤 |
| | | if (StrUtil.isNotEmpty(ids)) { |
| | | List<String> idList = Arrays.asList(ids.split(",")); |
| | | queryWrapper.in("wmo.id", idList); |
| | | } else { |
| | | queryWrapper.orderByDesc("wmo.create_time"); |
| | | } |
| | | List<EamThirdMaintenanceOrderExport> eamThirdMaintenanceOrderExports=this.baseMapper.queryList(queryWrapper); |
| | | List<EamThirdMaintenanceOrderExportYj> eamThirdMaintenanceOrderExportYjs=new ArrayList<>(); |
| | | if (!eamThirdMaintenanceOrderExports.isEmpty()){ |
| | | for (EamThirdMaintenanceOrderExport eamThirdMaintenanceOrderExport:eamThirdMaintenanceOrderExports) { |
| | | EamThirdMaintenanceOrderExportYj eamThirdMaintenanceOrderExportYj = new EamThirdMaintenanceOrderExportYj(); |
| | | BeanUtils.copyProperties(eamThirdMaintenanceOrderExport, eamThirdMaintenanceOrderExportYj); |
| | | eamThirdMaintenanceOrderExportYjs.add(eamThirdMaintenanceOrderExportYj); |
| | | } |
| | | } |
| | | //填充对应修理更换备件明细 |
| | | eamThirdMaintenanceOrderExportYjs.forEach(eamThirdMaintenanceOrderExportYj->{ |
| | | List<EamThirdMaintenanceSpare> eamThirdMaintenanceSpares=eamThirdMaintenanceSpareService.list( |
| | | new QueryWrapper<EamThirdMaintenanceSpare>().eq("order_Id",eamThirdMaintenanceOrderExportYj.getId())); |
| | | if (!eamThirdMaintenanceSpares.isEmpty()){ |
| | | eamThirdMaintenanceOrderExportYj.setEamThirdMaintenanceSpareList(eamThirdMaintenanceSpares); |
| | | } |
| | | }); |
| | | return eamThirdMaintenanceOrderExportYjs; |
| | | } |
| | | |
| | | /** |
| | | * 批量打印加工设备三级保养验收单 |
| | | */ |
| | | @Override |
| | | public List<EamThirdMaintenanceOrderExport> exportAcceptance(String ids){ |
| | | QueryWrapper<EamThirdMaintenanceOrderExport> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("wmo.del_flag",CommonConstant.DEL_FLAG_0.toString()); |
| | | queryWrapper.eq("wmo.maintenance_status",SecondMaintenanceStatusEnum.COMPLETE.name()); |
| | | //用户数据权限 |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | if (sysUser == null) { |
| | | return new ArrayList<>(); |
| | | } |
| | | if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { |
| | | //选择了设备,根据设备id过滤设备 |
| | | 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)){ |
| | | Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); |
| | | Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); |
| | | queryWrapper.in("e.factory_org_code", factoryCode); |
| | | } else { |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | //查询条件过滤 |
| | | if (StrUtil.isNotEmpty(ids)) { |
| | | List<String> idList = Arrays.asList(ids.split(",")); |
| | | queryWrapper.in("wmo.id", idList); |
| | | } else { |
| | | queryWrapper.orderByDesc("wmo.create_time"); |
| | | } |
| | | List<EamThirdMaintenanceOrderExport> eamThirdMaintenanceOrderExports=this.baseMapper.queryList(queryWrapper); |
| | | //填充对应保养项明细 |
| | | eamThirdMaintenanceOrderExports.forEach(eamThirdMaintenanceOrderExport->{ |
| | | List<EamThirdMaintenanceOrderDetail> eamThirdMaintenanceSpares=eamThirdMaintenanceOrderDetailService.list( |
| | | new QueryWrapper<EamThirdMaintenanceOrderDetail>().eq("order_Id",eamThirdMaintenanceOrderExport.getId())); |
| | | if (!eamThirdMaintenanceSpares.isEmpty()){ |
| | | eamThirdMaintenanceOrderExport.setEamThirdMaintenanceOrderDetailList(eamThirdMaintenanceSpares); |
| | | } |
| | | }); |
| | | return eamThirdMaintenanceOrderExports; |
| | | } |
| | | |
| | | /** |
| | | * 设备管理首页-三保计划 |
| | | * @return |
| | | * */ |
| | | @Override |
| | | public List<EchartsDto> selectList(String productionCode) { |
| | | // 提前初始化四个统计项对象,设置默认值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) { |
| | | // 设备过滤逻辑 |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } 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; |
| | | } |
| | | } |
| | | |
| | | // 如果没有有效查询条件,直接返回默认值列表 |
| | | if (!hasValidCondition) { |
| | | return new ArrayList<>(echartsMap.values()); |
| | | } |
| | | |
| | | // 获取当前年月和下两个月的年月字符串 |
| | | String currentYearMonth = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | String nextMonth = LocalDate.now().plusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | String nextNextMonth = LocalDate.now().plusMonths(2).format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | |
| | | // 从字典表获取配置值 |
| | | 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()); |
| | | |
| | | // 更新统计项(仅在配置值为"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 { |
| | | echartsMap.get(key).setValue(dictValues.get(key)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 设备管理首页-三保计划列表 |
| | | * @param code |
| | | * @param page |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<EamThirdMaintenanceOrder> maintenanceList(String code,String productionCode, Page<EamThirdMaintenanceOrder> page){ |
| | | IPage<EamThirdMaintenanceOrder> eamThirdMaintenanceOrderIPage=new Page<>(); |
| | | QueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new QueryWrapper<>(); |
| | | if (StrUtil.isEmpty(productionCode)) { |
| | | // 用户数据权限检查 |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | if (sysUser == null) { |
| | | return eamThirdMaintenanceOrderIPage; // 返回空列表而非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 eamThirdMaintenanceOrderIPage; // 返回空列表而非null |
| | | } |
| | | 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); |
| | | } |
| | | }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 eamThirdMaintenanceOrderIPage; |
| | | } |
| | | //组装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); |
| | | } |
| | | queryWrapper.orderByDesc("wmo.create_time"); |
| | | // 获取当前年月和下两个月的年月字符串 |
| | | String currentYearMonth = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | switch (code){ |
| | | case "bysbzs": |
| | | // 本月三保计划总数 |
| | | eamThirdMaintenanceOrderIPage=this.baseMapper.queryPageList(page,queryWrapper.clone().like("maintenance_date", currentYearMonth)); |
| | | break; |
| | | case "bwc": |
| | | // 本月完成 |
| | | eamThirdMaintenanceOrderIPage=this.baseMapper.queryPageList(page,queryWrapper.clone().like("maintenance_date", currentYearMonth) |
| | | .eq("maintenance_status", ThirdMaintenanceStatusEnum.COMPLETE.name())); |
| | | break; |
| | | case "xysb": |
| | | // 下月三保计划 |
| | | String nextMonth = LocalDate.now().plusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | eamThirdMaintenanceOrderIPage=this.baseMapper.queryPageList(page,queryWrapper.clone().like("maintenance_date", nextMonth)); |
| | | break; |
| | | case "xxysb": |
| | | // 下下月三保计划 |
| | | String nextNextMonth = LocalDate.now().plusMonths(2).format(DateTimeFormatter.ofPattern("yyyy-MM")); |
| | | eamThirdMaintenanceOrderIPage=this.baseMapper.queryPageList(page,queryWrapper.clone().like("maintenance_date", nextNextMonth)); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | eamThirdMaintenanceOrderIPage.getRecords().forEach(eamThirdMaintenanceOrder -> { |
| | | eamThirdMaintenanceOrder.setTechnologyStatus(eamEquipmentExtendService.getById(eamThirdMaintenanceOrder.getEquipmentId()).getTechnologyStatus()); |
| | | }); |
| | | return eamThirdMaintenanceOrderIPage; |
| | | } |
| | | |
| | | /** |
| | | * 更新工单状态 |
| | | */ |
| | | private void updateOrderStatus(Result result, EamThirdMaintenanceRequest request, EamThirdMaintenanceOrder order, LoginUser user) { |