| | |
| | | import org.jeecg.common.constant.CommonConstant; |
| | | import org.jeecg.common.exception.JeecgBootException; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | | import org.jeecg.modules.system.entity.BaseFactory; |
| | | import org.jeecg.modules.system.entity.BaseFactoryUser; |
| | | import org.jeecg.modules.system.entity.SysParams; |
| | | import org.jeecg.modules.system.service.*; |
| | | import org.jeecg.modules.eam.constant.BusinessCodeConst; |
| | | import org.jeecg.modules.eam.constant.EamMaintenanceStandardDetailCategory; |
| | | import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; |
| | |
| | | import org.jeecg.modules.eam.service.IEamEquipmentService; |
| | | import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; |
| | | import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; |
| | | import org.jeecg.modules.eam.vo.*; |
| | | import org.jeecg.modules.eam.vo.EamMaintenanceStandardVo; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; |
| | | import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; |
| | | import org.jeecg.modules.flowable.apithird.service.FlowCommonService; |
| | | import org.jeecg.modules.flowable.service.IFlowDefinitionService; |
| | | import org.jeecg.modules.flowable.service.IFlowTaskService; |
| | | import org.jeecg.modules.system.entity.BaseFactory; |
| | | import org.jeecg.modules.system.entity.BaseFactoryUser; |
| | | import org.jeecg.modules.system.entity.SysParams; |
| | | import org.jeecg.modules.system.service.*; |
| | | import org.jeecg.modules.system.vo.UserSelector; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | /** |
| | | * @Description: 保养标准 |
| | | * @Author: jeecg-boot |
| | | * @Date: 2025-03-26 |
| | | * @Date: 2025-03-26 |
| | | * @Version: V1.0 |
| | | */ |
| | | @Service("IEamMaintenanceStandardService") |
| | | public class EamMaintenanceStandardServiceImpl extends ServiceImpl<EamMaintenanceStandardMapper, EamMaintenanceStandard> implements IEamMaintenanceStandardService , FlowCallBackServiceI { |
| | | public class EamMaintenanceStandardServiceImpl extends ServiceImpl<EamMaintenanceStandardMapper, EamMaintenanceStandard> implements IEamMaintenanceStandardService, FlowCallBackServiceI { |
| | | |
| | | @Resource |
| | | private EamMaintenanceStandardMapper eamMaintenanceStandardMapper; |
| | |
| | | queryWrapper.in("e.equipment_code", equipArr); |
| | | } else { |
| | | //没有选择设备,根据中心过滤设备 |
| | | List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService. |
| | | list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId())); |
| | | if(!CollectionUtils.isEmpty(baseFactoryUserList)){ |
| | | 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()); |
| | | Set<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); |
| | | queryWrapper.in("e.factory_org_code", factoryCode); |
| | | } else { |
| | | return page; |
| | | } |
| | | } |
| | | if(eamMaintenanceStandard != null) { |
| | | if (eamMaintenanceStandard != null) { |
| | | //编码 模糊查询 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardCode())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getStandardCode())) { |
| | | queryWrapper.like("ems.standard_code", eamMaintenanceStandard.getStandardCode()); |
| | | } |
| | | //名称 模糊查询 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardName())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getStandardName())) { |
| | | queryWrapper.like("ems.standard_name", eamMaintenanceStandard.getStandardName()); |
| | | } |
| | | //设备 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getEquipmentId())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getEquipmentId())) { |
| | | queryWrapper.eq("ems.equipment_id", eamMaintenanceStandard.getEquipmentId()); |
| | | } |
| | | //保养分类 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getMaintenanceCategory())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getMaintenanceCategory())) { |
| | | queryWrapper.eq("ems.maintenance_category", eamMaintenanceStandard.getMaintenanceCategory()); |
| | | } |
| | | //保养分类 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardStatus())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getStandardStatus())) { |
| | | queryWrapper.eq("ems.standard_status", eamMaintenanceStandard.getStandardStatus()); |
| | | } |
| | | //设备编码 |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getKeyword())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getKeyword())) { |
| | | queryWrapper.and(wrapper -> wrapper.like("e.equipment_name", eamMaintenanceStandard.getKeyword()) |
| | | .or() |
| | | .like("e.equipment_code", eamMaintenanceStandard.getKeyword())); |
| | | } |
| | | //id |
| | | if(StringUtils.isNotBlank(eamMaintenanceStandard.getId())) { |
| | | if (StringUtils.isNotBlank(eamMaintenanceStandard.getId())) { |
| | | queryWrapper.eq("ems.id", eamMaintenanceStandard.getId()); |
| | | } |
| | | } |
| | |
| | | BeanUtils.copyProperties(standardRequest, entity); |
| | | entity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | //版本递增 |
| | | entity.setStandardVersion("v"+CommonConstant.OPERATE_TYPE_1); |
| | | entity.setStandardVersion("v" + CommonConstant.OPERATE_TYPE_1); |
| | | //设备处理 |
| | | entity.setEquipmentId(standardRequest.getEquipmentId()); |
| | | //删除标记 |
| | | entity.setDelFlag(CommonConstant.DEL_FLAG_0); |
| | | //重复性校验 |
| | | EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory(),MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | if(exist != null){ |
| | | EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory(), MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | if (exist != null) { |
| | | throw new JeecgBootException("设备标准已存在,不能重复添加!"); |
| | | } |
| | | eamMaintenanceStandardMapper.insert(entity); |
| | | //处理明细数据 |
| | | if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | if (CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | standardRequest.getTableDetailList().forEach(tableDetail -> { |
| | | tableDetail.setStandardId(entity.getId()); |
| | | }); |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean editMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) { |
| | | EamMaintenanceStandard entity = eamMaintenanceStandardMapper.selectById(standardRequest.getId()); |
| | | if(entity == null){ |
| | | if (entity == null) { |
| | | throw new JeecgBootException("编辑的数据已删除,请刷新重试!"); |
| | | } |
| | | entity.setStandardName(standardRequest.getStandardName()); |
| | | entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod()); |
| | | eamMaintenanceStandardMapper.updateById(entity); |
| | | //处理详情 |
| | | if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | if (CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | List<EamMaintenanceStandardDetail> addList = new ArrayList<>(); |
| | | List<EamMaintenanceStandardDetail> updateList = new ArrayList<>(); |
| | | standardRequest.getTableDetailList().forEach(tableDetail -> { |
| | | tableDetail.setStandardId(entity.getId()); |
| | | if(tableDetail.getId() == null){ |
| | | if (tableDetail.getId() == null) { |
| | | addList.add(tableDetail); |
| | | }else { |
| | | } else { |
| | | updateList.add(tableDetail); |
| | | } |
| | | }); |
| | | if(CollectionUtil.isNotEmpty(addList)){ |
| | | if (CollectionUtil.isNotEmpty(addList)) { |
| | | eamMaintenanceStandardDetailService.saveBatch(addList); |
| | | } |
| | | if(CollectionUtil.isNotEmpty(updateList)){ |
| | | if (CollectionUtil.isNotEmpty(updateList)) { |
| | | eamMaintenanceStandardDetailService.updateBatchById(updateList); |
| | | } |
| | | } |
| | | if(CollectionUtil.isNotEmpty(standardRequest.getRemoveDetailList())) { |
| | | if (CollectionUtil.isNotEmpty(standardRequest.getRemoveDetailList())) { |
| | | List<String> ids = standardRequest.getRemoveDetailList().stream().map(EamMaintenanceStandardDetail::getId).collect(Collectors.toList()); |
| | | eamMaintenanceStandardDetailService.removeBatchByIds(ids); |
| | | } |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean upgradeMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) { |
| | | EamMaintenanceStandard entity = eamMaintenanceStandardMapper.selectById(standardRequest.getId()); |
| | | if(entity == null){ |
| | | if (entity == null) { |
| | | throw new JeecgBootException("编辑的数据已删除,请刷新重试!"); |
| | | } |
| | | |
| | |
| | | if (matcher.find()) { |
| | | try { |
| | | int mainVersion = Integer.parseInt(matcher.group(1)); |
| | | newEntity.setStandardVersion("v"+(mainVersion+1)); |
| | | newEntity.setStandardVersion("v" + (mainVersion + 1)); |
| | | } catch (NumberFormatException ignored) { |
| | | } |
| | | } |
| | |
| | | //删除标记 |
| | | newEntity.setDelFlag(CommonConstant.DEL_FLAG_0); |
| | | //重复性校验 |
| | | EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory(),MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | if(exist != null){ |
| | | EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory(), MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | if (exist != null) { |
| | | throw new JeecgBootException("设备标准已存在,不能重复添加!"); |
| | | } |
| | | eamMaintenanceStandardMapper.insert(newEntity); |
| | | //处理明细数据 |
| | | if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | if (CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { |
| | | standardRequest.getTableDetailList().forEach(tableDetail -> { |
| | | tableDetail.setId(null); |
| | | tableDetail.setCreateBy(null); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory,String standardStatus) { |
| | | public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory, String standardStatus) { |
| | | LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId); |
| | | queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory); |
| | |
| | | queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion); |
| | | |
| | | List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper); |
| | | if(CollectionUtil.isEmpty(list)) { |
| | | if (CollectionUtil.isEmpty(list)) { |
| | | return null; |
| | | } |
| | | return list.get(0); |
| | |
| | | |
| | | /** |
| | | * 查询标准列表-前端展示该用户拥有的标准 |
| | | * @param keyword 设备编号 |
| | | * |
| | | * @param keyword 设备编号 |
| | | * @param maintenanceCategory 保养类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<EamMaintenanceStandard> queryListByKeywordAndCategory(String keyword, String equipmentId, Integer pageSize, String maintenanceCategory){ |
| | | public List<EamMaintenanceStandard> queryListByKeywordAndCategory(String keyword, String equipmentId, Integer pageSize, String maintenanceCategory) { |
| | | Page<EamMaintenanceStandard> page = new Page<EamMaintenanceStandard>(1, pageSize); |
| | | EamMaintenanceStandard query = new EamMaintenanceStandard(); |
| | | query.setEquipmentId(equipmentId); |
| | |
| | | |
| | | /** |
| | | * 流程启动,保存对应的数据 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result<?> saveEamMaintenanceStandardProcess(String id){ |
| | | public Result<?> saveEamMaintenanceStandardProcess(String id) { |
| | | LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | EamMaintenanceStandard maintenanceStandard=this.getById(id); |
| | | if (maintenanceStandard==null){ |
| | | EamMaintenanceStandard maintenanceStandard = this.getById(id); |
| | | if (maintenanceStandard == null) { |
| | | return Result.error("未找到对应保养标准"); |
| | | } |
| | | System.out.println("保养规范流程:" + maintenanceStandard.getId()); |
| | | flowCommonService.initActBusiness(maintenanceStandard.getStandardName()+"规范进行流程审核", |
| | | flowCommonService.initActBusiness(maintenanceStandard.getStandardName() + "规范进行流程审核", |
| | | maintenanceStandard.getId(), "IEamMaintenanceStandardService", "eam_maintenance_standard", null); |
| | | Map<String, Object> variables = new HashMap<>(); |
| | | variables.put("dataId", maintenanceStandard.getId()); |
| | | variables.put("organization", "保养规范启动流程"); |
| | | variables.put("comment", "保养规范启动流程"); |
| | | variables.put("proofreading",true); |
| | | Result result= flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables); |
| | | variables.put("proofreading", true); |
| | | Result result = flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables); |
| | | if (!result.isSuccess()) { |
| | | super.removeById(maintenanceStandard.getId()); |
| | | }else { |
| | | } else { |
| | | maintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name()); |
| | | maintenanceStandard.setDesigner(user.getUsername()); |
| | | maintenanceStandard.setDesignTime(new Date()); |
| | |
| | | return Result.error("流程记录不存在"); |
| | | } |
| | | FlowMyBusiness flowMyBusiness = businessList.get(0); |
| | | EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); |
| | | BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode())); |
| | | List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0008); |
| | | EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); |
| | | List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008); |
| | | if (!CollectionUtils.isEmpty(userSelectorList)) { |
| | | List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); |
| | | List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); |
| | | flowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList)); |
| | | flowMyBusinessService.updateById(flowMyBusiness); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 审批操作 |
| | | * |
| | | * @param eamMaintenanceStandardVo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo eamMaintenanceStandardVo){ |
| | | public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo eamMaintenanceStandardVo) { |
| | | try { |
| | | // 参数校验 |
| | | if (StrUtil.isEmpty(eamMaintenanceStandardVo.getTaskId()) || StrUtil.isEmpty(eamMaintenanceStandardVo.getDataId())) { |
| | |
| | | Result result = flowTaskService.complete(eamMaintenanceStandardVo); |
| | | if (result.isSuccess()) { |
| | | if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) { |
| | | if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")){ |
| | | if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")) { |
| | | List<FlowMyBusiness> newbusinessList = flowMyBusinessService.list( |
| | | new QueryWrapper<FlowMyBusiness>() |
| | | .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId())); |
| | | FlowMyBusiness newflowMyBusiness = newbusinessList.get(0); |
| | | eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name()); |
| | | //获取flow的流程实例id,设置下一步的处理人员 |
| | | EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId()); |
| | | EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); |
| | | BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode())); |
| | | List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0009); |
| | | EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId()); |
| | | EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); |
| | | List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0009); |
| | | if (!CollectionUtils.isEmpty(userSelectorList)) { |
| | | List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); |
| | | List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); |
| | | newflowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList)); |
| | | flowMyBusinessService.updateById(newflowMyBusiness); |
| | | } |
| | | }else { |
| | | } else { |
| | | eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | } |
| | | eamMaintenanceStandard.setRepairManager(user.getUsername()); |
| | |
| | | eamMaintenanceStandard.setRepairManagerApproveComment(eamMaintenanceStandardVo.getComment()); |
| | | } |
| | | if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) { |
| | | if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")){ |
| | | if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")) { |
| | | eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); |
| | | //判断是否进行升版,通过设备编号、保养分类、状态进行筛选 |
| | | EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId()); |
| | | QueryWrapper<EamMaintenanceStandard> queryWrapper=new QueryWrapper<>(); |
| | | EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId()); |
| | | QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId()); |
| | | queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory()); |
| | | queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name()); |
| | | List<EamMaintenanceStandard> list=eamMaintenanceStandardMapper.selectList(queryWrapper); |
| | | List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper); |
| | | if (!CollectionUtils.isEmpty(list)) { |
| | | //作废原有 |
| | | for (EamMaintenanceStandard eamMaintenanceStandard1 : list) { |
| | |
| | | this.updateById(eamMaintenanceStandard1); |
| | | } |
| | | } |
| | | }else { |
| | | } else { |
| | | eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | } |
| | | eamMaintenanceStandard.setTechnicalManager(user.getUsername()); |
| | |
| | | |
| | | |
| | | /*导入点检文件Excel--------------------------开始*/ |
| | | |
| | | /** |
| | | * 点检表导入入口 |
| | | */ |
| | | * 点检表导入入口 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result<?> importPointInspectionExcel(MultipartFile file) { |
| | |
| | | EamMaintenanceStandard eamMaintenanceStandard = extractDeviceInfo(sheet); |
| | | if (eamMaintenanceStandard == null) { |
| | | return Result.error("设备信息提取失败"); |
| | | }else { |
| | | } else { |
| | | if (eamMaintenanceStandard.getEquipmentId() == null) { |
| | | return Result.error("设备信息提取失败"); |
| | | } |
| | |
| | | |
| | | eamMaintenanceStandard.setStandardName(name); |
| | | |
| | | EamMaintenanceStandard exist = checkDuplicate(eamMaintenanceStandard.getEquipmentId(), eamMaintenanceStandard.getMaintenanceCategory(),MaintenanceStandardStatusEnum.START.name()); |
| | | if(exist != null){ |
| | | EamMaintenanceStandard exist = checkDuplicate(eamMaintenanceStandard.getEquipmentId(), eamMaintenanceStandard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.START.name()); |
| | | if (exist != null) { |
| | | return Result.error(name + ": 设备标准已存在,不能重复添加"); |
| | | } |
| | | |
| | |
| | | |
| | | // 2. 提取每日点检项目 |
| | | List<EamMaintenanceStandardDetail> dailyDetails = extractDailyItems(sheet, eamMaintenanceStandard); |
| | | if(dailyDetails.isEmpty()){ |
| | | if (dailyDetails.isEmpty()) { |
| | | return Result.error("未找到每日点检项目"); |
| | | } |
| | | |
| | | // 3. 提取周保养项目 |
| | | List<EamMaintenanceStandardDetail> weeklyDetails = extractWeeklyItems(sheet, eamMaintenanceStandard); |
| | | if(weeklyDetails.isEmpty()){ |
| | | if (weeklyDetails.isEmpty()) { |
| | | return Result.error("未找到周保养项目"); |
| | | } |
| | | |
| | |
| | | SysParams sysParams = sysParamsService.getSysPramBySettingKey("maintenance_import_type"); |
| | | |
| | | if (sysParams != null) { |
| | | if (sysParams.getSettingValue().equals("1")){ |
| | | if (sysParams.getSettingValue().equals("1")) { |
| | | //触发保养流程 |
| | | eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | eamMaintenanceStandardMapper.updateById(eamMaintenanceStandard); |
| | | } |
| | | }else { |
| | | } else { |
| | | return Result.error("未找到保养流程导入相关配置,请联系管理员"); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 提取点检表标题 |
| | | */ |
| | | * 提取点检表标题 |
| | | */ |
| | | private String extractInspectionTitle(MultipartFile file) { |
| | | try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) { |
| | | Sheet sheet = workbook.getSheetAt(0); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 提取点检表之前的文字 |
| | | * 提取点检表之前的文字 |
| | | */ |
| | | private String extractTextBeforeInspection(String title) { |
| | | if (StringUtils.isBlank(title)) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 提取设备信息 |
| | | */ |
| | | * 提取设备信息 |
| | | */ |
| | | private EamMaintenanceStandard extractDeviceInfo(Sheet sheet) { |
| | | Row headerRow = sheet.getRow(0); |
| | | if (headerRow == null) { |
| | |
| | | EamEquipment equipments = eamEquipmentService.selectByEquipmentCode(standard.getEquipmentCode()); |
| | | if (equipments == null) { |
| | | return null; |
| | | }else { |
| | | } else { |
| | | standard.setEquipmentId(equipments.getId()); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 解析日期字符串 |
| | | * 解析日期字符串 |
| | | */ |
| | | private Date parseDate(String dateStr) throws ParseException { |
| | | // 尝试多种日期格式 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 提取每日点检项目 |
| | | */ |
| | | * 提取每日点检项目 |
| | | */ |
| | | private List<EamMaintenanceStandardDetail> extractDailyItems(Sheet sheet, EamMaintenanceStandard standard) { |
| | | return extractItems(sheet, standard, "点检项目", "完成数据/要求", "DAY_INSPECTION"); |
| | | } |
| | | |
| | | /** |
| | | * 提取周保养项目 |
| | | */ |
| | | * 提取周保养项目 |
| | | */ |
| | | private List<EamMaintenanceStandardDetail> extractWeeklyItems(Sheet sheet, EamMaintenanceStandard standard) { |
| | | return extractItems(sheet, standard, "周保养项目", "检查标准", "WEEK_INSPECTION"); |
| | | } |
| | | |
| | | /** |
| | | * 通用项目提取方法 |
| | | */ |
| | | * 通用项目提取方法 |
| | | */ |
| | | private List<EamMaintenanceStandardDetail> extractItems(Sheet sheet, EamMaintenanceStandard standard, |
| | | String primaryHeader, String secondaryHeader, |
| | | String itemCategory) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查找表格区域 |
| | | * 查找表格区域 |
| | | */ |
| | | private int[] findTableSection(Sheet sheet, String primaryHeader, String secondaryHeader) { |
| | | for (int rowIdx = 0; rowIdx <= sheet.getLastRowNum(); rowIdx++) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 检查是否为表头行 |
| | | */ |
| | | * 检查是否为表头行 |
| | | */ |
| | | private boolean isHeaderRow(Row row, String header1, String header2) { |
| | | boolean foundHeader1 = false; |
| | | boolean foundHeader2 = false; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查找数据结束位置 |
| | | * 查找数据结束位置 |
| | | */ |
| | | private int findDataEnd(Sheet sheet, int startRow) { |
| | | for (int rowIdx = startRow; rowIdx <= sheet.getLastRowNum(); rowIdx++) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 识别签字行特征 |
| | | */ |
| | | * 识别签字行特征 |
| | | */ |
| | | private boolean isSignatureRow(Row row) { |
| | | for (int colIdx = 0; colIdx < row.getLastCellNum(); colIdx++) { |
| | | Cell cell = row.getCell(colIdx); |
| | |
| | | |
| | | /** |
| | | * 识别新表头开始 |
| | | */ |
| | | */ |
| | | private boolean isNewHeaderStart(Row row) { |
| | | for (int colIdx = 0; colIdx < row.getLastCellNum(); colIdx++) { |
| | | Cell cell = row.getCell(colIdx); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 检查行是否为空 |
| | | */ |
| | | * 检查行是否为空 |
| | | */ |
| | | private boolean isEmptyRow(Row row) { |
| | | if (row == null) return true; |
| | | for (int colIdx = 0; colIdx < row.getLastCellNum(); colIdx++) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 使用正则提取字段 |
| | | */ |
| | | * 使用正则提取字段 |
| | | */ |
| | | private String extractField(String text, String regex) { |
| | | if (StringUtils.isBlank(text)) return ""; |
| | | Pattern pattern = Pattern.compile(regex); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取单元格字符串值 |
| | | */ |
| | | * 获取单元格字符串值 |
| | | */ |
| | | private String getCellStringValue(Cell cell) { |
| | | if (cell == null) return ""; |
| | | switch (cell.getCellType()) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 处理公式单元格 |
| | | */ |
| | | * 处理公式单元格 |
| | | */ |
| | | private String handleFormulaCell(Cell cell) { |
| | | try { |
| | | FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator(); |
| | |
| | | if (cellValue == null) return ""; |
| | | |
| | | switch (cellValue.getCellType()) { |
| | | case STRING: return cellValue.getStringValue(); |
| | | case NUMERIC: return String.valueOf((int) cellValue.getNumberValue()); |
| | | case BOOLEAN: return String.valueOf(cellValue.getBooleanValue()); |
| | | default: return ""; |
| | | case STRING: |
| | | return cellValue.getStringValue(); |
| | | case NUMERIC: |
| | | return String.valueOf((int) cellValue.getNumberValue()); |
| | | case BOOLEAN: |
| | | return String.valueOf(cellValue.getBooleanValue()); |
| | | default: |
| | | return ""; |
| | | } |
| | | } catch (Exception e) { |
| | | return ""; |
| | |
| | | |
| | | /** |
| | | * 统一保养规范导入入口 |
| | | * |
| | | * @param file 上传文件 |
| | | * @param type 保养类型 (SECOND/THIRD) |
| | | * @return 导入结果(包含成功/失败信息) |
| | |
| | | } |
| | | |
| | | // 提取设备信息 |
| | | standard = extractDeviceInfo(table,type); |
| | | standard = extractDeviceInfo(table, type); |
| | | if (standard == null) { |
| | | return Result.error(fileName + ": 设备信息提取失败"); |
| | | } |
| | | |
| | | // 配置类型相关参数 |
| | | configureStandard(standard, type, file); |
| | | EamMaintenanceStandard exist = checkDuplicate(standard.getEquipmentId(), standard.getMaintenanceCategory(),MaintenanceStandardStatusEnum.START.name()); |
| | | if(exist != null){ |
| | | EamMaintenanceStandard exist = checkDuplicate(standard.getEquipmentId(), standard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.START.name()); |
| | | if (exist != null) { |
| | | return Result.error(fileName + ": 设备标准已存在,不能重复添加"); |
| | | } |
| | | eamMaintenanceStandardMapper.insert(standard); |
| | |
| | | standard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); |
| | | eamMaintenanceStandardMapper.updateById(standard); |
| | | } |
| | | }else { |
| | | } else { |
| | | return Result.error("未找到保养流程导入相关配置,请联系管理员"); |
| | | } |
| | | |
| | |
| | | |
| | | /** |
| | | * 后处理方法:根据不同类型进行处理 |
| | | */ |
| | | */ |
| | | private void processItemsAfterExtraction(List<EamMaintenanceStandardDetail> items, String type) { |
| | | if ("SECOND".equals(type)) { |
| | | // 二级保养: 删除没有序号的数据 |
| | |
| | | } |
| | | // 2. 为缺失部位的数据填充前一条的保养部位 |
| | | String lastPart = ""; |
| | | int i =1; |
| | | int i = 1; |
| | | for (EamMaintenanceStandardDetail item : items) { |
| | | item.setItemCode(i); |
| | | if (item.getItemPart() != null && !item.getItemPart().isEmpty()) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 提取二级保养项目(区分第一页和后续页面) |
| | | */ |
| | |
| | | if (row.getTableCells().size() > 1) { |
| | | String seqText = getCellText(row.getCell(1)); |
| | | try { |
| | | if (!seqText.equals("序号")){ |
| | | if (!seqText.equals("序号")) { |
| | | item.setItemCode(Integer.parseInt(seqText.trim())); |
| | | } |
| | | } catch (NumberFormatException e) { |
| | |
| | | |
| | | /** |
| | | * 文档类型校验 - 防止二保传入三保或反之 |
| | | */ |
| | | */ |
| | | private boolean isWrongDocumentType(XWPFTable table, String requestedType) { |
| | | boolean hasRepairTitle = false; |
| | | boolean hasOperatorTitle = false; |
| | |
| | | /** |
| | | * 提取设备基本信息 |
| | | */ |
| | | private EamMaintenanceStandard extractDeviceInfo(XWPFTable table,String type) { |
| | | private EamMaintenanceStandard extractDeviceInfo(XWPFTable table, String type) { |
| | | if (table.getNumberOfRows() < 2) return null; |
| | | |
| | | // 提取前两行数据 |
| | |
| | | EamEquipment equipments = eamEquipmentService.selectByEquipmentCode(standard.getEquipmentCode()); |
| | | if (equipments == null) { |
| | | return null; |
| | | }else { |
| | | } else { |
| | | standard.setEquipmentId(equipments.getId()); |
| | | } |
| | | if (type.equals("THIRD")){ |
| | | EamEquipmentExtend eamEquipmentExtend=eamEquipmentExtendService.getById(standard.getEquipmentId()); |
| | | if (type.equals("THIRD")) { |
| | | EamEquipmentExtend eamEquipmentExtend = eamEquipmentExtendService.getById(standard.getEquipmentId()); |
| | | standard.setMaintenancePeriod(eamEquipmentExtend.getThirdMaintenancePeriod()); |
| | | } |
| | | } |