| | |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | import com.ruoyi.common.utils.MapUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.domain.ArchiveRecords; |
| | | import com.ruoyi.domain.Archiverecordstouser; |
| | | import com.ruoyi.domain.vo.AnalysisResult; |
| | | import com.ruoyi.domain.vo.ArchiveInfoVo; |
| | | import com.ruoyi.domain.vo.ArchiveRecordSmall; |
| | | import com.ruoyi.mapper.ArchiveRecordsMapper; |
| | | import com.ruoyi.mapper.ArchiverecordstouserMapper; |
| | | import com.ruoyi.service.IArchiveRecordsService; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| | | * 档案记录Service业务层处理 |
| | |
| | | private LambdaQueryWrapper<ArchiveRecords> buildCondition(ArchiveRecords archiveRecords, Long userId){ |
| | | LambdaQueryWrapper<ArchiveRecords> lqw = new LambdaQueryWrapper<>(); |
| | | |
| | | lqw.like(!StringUtils.isEmpty(archiveRecords.getProjectName()), ArchiveRecords::getProjectName, archiveRecords.getProjectName()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getFilingNumber()), ArchiveRecords::getFilingNumber, archiveRecords.getFilingNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getArchiveRoomNumber()), ArchiveRecords::getArchiveRoomNumber, archiveRecords.getArchiveRoomNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getRecordId()), ArchiveRecords::getRecordId, archiveRecords.getRecordId()); |
| | | // 根据开始和结束的categoryNumber生成连续的recordId |
| | | String categoryNumberStart = archiveRecords.getCategoryNumberStart(); |
| | | String categoryNumberEnd = archiveRecords.getCategoryNumberEnd(); |
| | | |
| | | if (!StringUtils.isEmpty(categoryNumberStart) && !StringUtils.isEmpty(categoryNumberEnd)) { |
| | | try { |
| | | // 解析开始和结束的编号,提取前缀和数字部分 |
| | | // 例如:B1.3-999-2024-1 -> 前缀: B1.3-999-2024-, 数字: 1 |
| | | int lastDashIndexStart = categoryNumberStart.lastIndexOf('-'); |
| | | int lastDashIndexEnd = categoryNumberEnd.lastIndexOf('-'); |
| | | |
| | | if (lastDashIndexStart > 0 && lastDashIndexEnd > 0) { |
| | | String prefixStart = categoryNumberStart.substring(0, lastDashIndexStart + 1); |
| | | String prefixEnd = categoryNumberEnd.substring(0, lastDashIndexEnd + 1); |
| | | |
| | | // 确保前缀相同,才生成连续编号 |
| | | if (prefixStart.equals(prefixEnd)) { |
| | | int startNum = Integer.parseInt(categoryNumberStart.substring(lastDashIndexStart + 1)); |
| | | int endNum = Integer.parseInt(categoryNumberEnd.substring(lastDashIndexEnd + 1)); |
| | | |
| | | // 生成连续的recordId列表,将数字格式化为5位(如00001, 00101) |
| | | List<String> recordIds = new ArrayList<>(); |
| | | for (int i = startNum; i <= endNum; i++) { |
| | | // 使用String.format将数字格式化为5位,不足前面补0 |
| | | String formattedNumber = String.format("%05d", i); |
| | | recordIds.add(prefixStart + formattedNumber); |
| | | } |
| | | |
| | | // 添加到查询条件中 |
| | | lqw.in(ArchiveRecords::getRecordId, recordIds); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | // 如果解析失败,忽略此条件 |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | System.out.println(archiveRecords.getIds()); |
| | | |
| | | // 如果没有使用连续编号条件,才使用普通的like条件 |
| | | if (StringUtils.isEmpty(categoryNumberStart) || StringUtils.isEmpty(categoryNumberEnd)) { |
| | | lqw.like(!StringUtils.isEmpty(archiveRecords.getRecordId()), ArchiveRecords::getRecordId, archiveRecords.getRecordId()); |
| | | } |
| | | else { |
| | | lqw. |
| | | like(!StringUtils.isEmpty(archiveRecords.getInquiryNumber()), ArchiveRecords::getInquiryNumber, archiveRecords.getInquiryNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getCaseTitle()), ArchiveRecords::getCaseTitle, archiveRecords.getCaseTitle()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getPublicAttribute()), ArchiveRecords::getPublicAttribute, archiveRecords.getPublicAttribute()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getPreparationUnit()), ArchiveRecords::getPreparationUnit, archiveRecords.getPreparationUnit()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getRetentionPeriod()), ArchiveRecords::getRetentionPeriod, archiveRecords.getRetentionPeriod()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getSecurityClassification()), ArchiveRecords::getSecurityClassification, archiveRecords.getSecurityClassification()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getFilingNumber()), ArchiveRecords::getFilingNumber, archiveRecords.getFilingNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getConstructionUnit()), ArchiveRecords::getConstructionUnit, archiveRecords.getConstructionUnit()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getConstructionAddress()), ArchiveRecords::getConstructionAddress, archiveRecords.getConstructionAddress()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getProjectName()), ArchiveRecords::getProjectName, archiveRecords.getProjectName()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getProjectNumber()), ArchiveRecords::getProjectNumber, archiveRecords.getProjectNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getScanningCompany()), ArchiveRecords::getScanningCompany, archiveRecords.getScanningCompany()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getArchiveRoomNumber()), ArchiveRecords::getArchiveRoomNumber, archiveRecords.getArchiveRoomNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getMicrofilmNumber()), ArchiveRecords::getMicrofilmNumber, archiveRecords.getMicrofilmNumber()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getHistoricalReferenceNumber()), ArchiveRecords::getHistoricalReferenceNumber, archiveRecords.getHistoricalReferenceNumber()) |
| | | .eq(!StringUtils.isEmpty(archiveRecords.getRecordStatus()), ArchiveRecords::getRecordStatus, archiveRecords.getRecordStatus()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getEveryProjectName()), ArchiveRecords::getEveryProjectName, archiveRecords.getEveryProjectName()) |
| | | .like(!StringUtils.isEmpty(archiveRecords.getRemarks()), ArchiveRecords::getRemarks, archiveRecords.getRemarks()); |
| | | |
| | | } |
| | | |
| | | if(archiveRecords.getIds()!=null) |
| | | lqw.in(ArchiveRecords::getId,new ArrayList<>(Arrays.asList(archiveRecords.getIds()))); |
| | | |
| | | |
| | | |
| | | // .like(!StringUtils.isEmpty(zfProperty.getLocation()), ZfProperty::getLocation, zfProperty.getLocation()) |
| | | // .like(!StringUtils.isEmpty(zfProperty.getHolder()), ZfProperty::getHolder, zfProperty.getHolder()) |
| | | // .like(!StringUtils.isEmpty(zfProperty.getAddress()), ZfProperty::getAddress, zfProperty.getAddress()) |
| | |
| | | |
| | | return beanRecords; |
| | | } |
| | | |
| | | @Override |
| | | public List<ArchiveRecords> selectArchiveRecordsByIds(Long[] ids) |
| | | { |
| | | // 获取当前用户ID |
| | | Long userid = SecurityUtils.getUserId(); |
| | | |
| | | // 创建查询条件 |
| | | LambdaQueryWrapper<ArchiveRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | |
| | | // 根据ids查询 |
| | | lambdaQueryWrapper.in(ArchiveRecords::getId, Arrays.asList(ids)); |
| | | |
| | | // 如果不是管理员,需要考虑权限过滤(可根据实际权限需求调整) |
| | | if (userid != 1) { |
| | | // 这里可以添加权限相关的过滤条件 |
| | | } |
| | | |
| | | List<ArchiveRecords> beanRecords = list(lambdaQueryWrapper); |
| | | return beanRecords; |
| | | } |
| | | |
| | | /** |
| | | * 新增档案记录 |
| | |
| | | |
| | | Date date = Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); |
| | | archiveRecords.setCreateTime(date); |
| | | System.out.println(archiveRecords.getRecordId()); |
| | | //根据档号查询,是否已经有档号,有的话,就不让插入 |
| | | LambdaQueryWrapper<ArchiveRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | lambdaQueryWrapper.eq(!StringUtils.isEmpty(archiveRecords.getRecordId()), ArchiveRecords::getRecordId, |
| | | archiveRecords.getRecordId()); |
| | | List<ArchiveRecords> lis = list(lambdaQueryWrapper); |
| | | if(!lis.isEmpty()) |
| | | { |
| | | return 0; |
| | | } |
| | | archiveRecords.setRecordStatus("未录入"); |
| | | // archiveRecords |
| | | boolean res = this.save(archiveRecords); |
| | | |
| | | //0表示失败,1表示成功 |
| | | if(res) |
| | | return 1; |
| | | else |
| | |
| | | @Override |
| | | public int deleteArchiveRecordsByIds(Long[] ids) |
| | | { |
| | | if (this.removeByIds(Arrays.asList(ids))) { |
| | | return 1; |
| | | Long res = 0L; |
| | | for(Long id: ids) |
| | | { |
| | | this.baseMapper.updateAllInfoById(id); |
| | | |
| | | } |
| | | else |
| | | return 0; |
| | | return 1; |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public ArchiveInfoVo selectByRecordId(Long id) { |
| | | return this.baseMapper.findByRecordId(id); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult importExcel(MultipartFile file) { |
| | | ExcelUtil<ArchiveRecords> util = new ExcelUtil<>(ArchiveRecords.class); |
| | | List<ArchiveRecords> dataList = null; |
| | | try { |
| | | dataList = util.importExcel(file.getInputStream()); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException("没有按照规则导入数据"); |
| | | } |
| | | |
| | | assert dataList != null; |
| | | |
| | | for (ArchiveRecords archiveRecords : dataList) { |
| | | // physcialService.mySave(physcial); |
| | | archiveRecords.setRecordStatus("未录入"); |
| | | LocalDateTime time = LocalDateTime.now(); |
| | | |
| | | Date date = Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); |
| | | archiveRecords.setCreateTime(date); |
| | | this.mySave(archiveRecords); |
| | | } |
| | | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | @Override |
| | | public List<AnalysisResult> statisticAya() { |
| | | return this.baseMapper.statisticAyasis(); |
| | | } |
| | | |
| | | @Override |
| | | public int updateArchiveById(String status, Long id) { |
| | | this.baseMapper.updateStatusById(status, id); |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public int updateStatusByIds(Long[] ids) { |
| | | for(Long id : ids) |
| | | this.baseMapper.updateStatusById("录入完成",id); |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<ArchiveRecordSmall> findByIds(ArchiveRecords archiveRecords) { |
| | | |
| | | LambdaQueryWrapper<ArchiveRecords> lqw = new LambdaQueryWrapper<>(); |
| | | if(archiveRecords.getIds()!=null) |
| | | lqw.in(ArchiveRecords::getId,new ArrayList<>(Arrays.asList(archiveRecords.getIds()))); |
| | | return this.baseMapper.selectByIds(lqw); |
| | | } |
| | | |
| | | |
| | | public AjaxResult mySave(ArchiveRecords archiveRecords) { |
| | | |
| | | |
| | | //检查是否有重复数据插入 |
| | | LambdaQueryWrapper<ArchiveRecords> lqw = new LambdaQueryWrapper<>(); |
| | | lqw.eq(!StringUtils.isEmpty(archiveRecords.getRecordId()), ArchiveRecords::getRecordId,archiveRecords.getRecordId()); |
| | | List<ArchiveRecords> list = list(lqw); |
| | | if (list.size() > 0) { |
| | | // throw new RuntimeException("请勿新增重复数据"); |
| | | //如果有重复数据,则根据recordId进行数据修改 |
| | | // if() |
| | | |
| | | this.baseMapper.update(archiveRecords, lqw); |
| | | return AjaxResult.success(); |
| | | |
| | | |
| | | } |
| | | else { |
| | | Long userid = SecurityUtils.getUserId(); |
| | | if(userid==1) { |
| | | if (save(archiveRecords)) { |
| | | return AjaxResult.success(); |
| | | } else { |
| | | return AjaxResult.error(); |
| | | } |
| | | } |
| | | else |
| | | return AjaxResult.error("档案号不存在!"); |
| | | } |
| | | |
| | | } |
| | | @Override |
| | | public boolean whether(@Param("recordId") Long recordId){ |
| | | return this.baseMapper.whether(recordId); |
| | | } |
| | | } |