package com.ruoyi.web.controller.api; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.TechImportExcel; import com.ruoyi.system.service.*; import com.ruoyi.system.query.RegionQuery; import io.swagger.annotations.ApiOperation; import org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; /** *

* 职称系列 前端控制器 *

* * @author luodangjia * @since 2024-09-19 */ @RestController @RequestMapping("/t-technical-title") public class TTechnicalTitleController { @Resource private TTechnicalTitleService tTechnicalTitleService; @Resource private TRegionService regionService; @Resource private TTitleMajorService majorService; @Resource private TLevelService levelService; @Resource private TUserChangeDetailService userChangeDetailService; @Resource private TConsultationService consultationService; @Resource private TDeclareNoticeService declareNoticeService; @Resource private TCommitteeTechnicalService committeeTechnicalService; @Resource private TCommitteeService committeeService; @Resource private TInformationService informationService; @Resource private TCourseService courseService; //添加接口 @ApiOperation(value = "添加",tags = "后台-系统设置-职称系列") @PostMapping(value = "/add") public R add(@RequestBody TTechnicalTitle tTechnicalTitle){ tTechnicalTitleService.save(tTechnicalTitle); return R.ok(); } @ApiOperation(value = "职称分类",tags = "后台-下拉框") @PostMapping(value = "/select") public R> select(){ return R.ok(tTechnicalTitleService.list()); } @ApiOperation(value = "树状图",tags = "web-下拉框") @PostMapping(value = "/tree") public R> tree(){ List tTitleMajorList = majorService.lambdaQuery().list(); List list = tTechnicalTitleService.list(); for (TTechnicalTitle tTechnicalTitle : list) { tTechnicalTitle.setName(tTechnicalTitle.getTitileName()); List tTitleMajors = tTitleMajorList.stream().filter(e -> e.getTechnicalId().equals(tTechnicalTitle.getId())).collect(Collectors.toList()); for (TTitleMajor tTitleMajor : tTitleMajors) { tTitleMajor.setName(tTitleMajor.getMajorName()); // tTitleMajor.setMajors(list2); } tTechnicalTitle.setMajors(tTitleMajors); } return R.ok(list); } //编辑接口 @ApiOperation(value = "编辑",tags = "后台-系统设置-职称系列") @PostMapping(value = "/edit") public R edit(@RequestBody TTechnicalTitle tTechnicalTitle){ tTechnicalTitleService.updateById(tTechnicalTitle); // 修改专业的地区 majorService.lambdaUpdate().eq(TTitleMajor::getTechnicalId, tTechnicalTitle.getId()).set(TTitleMajor::getRegionIds, tTechnicalTitle.getRegionIds()).update(); return R.ok(); } //批量删除接口 @ApiOperation(value = "删除",tags = "后台-系统设置-职称系列") @PostMapping(value = "/deleteByIds") public R deleteByIds(String ids){ List list = Arrays.asList(ids.split(",")); for (String s : list) { //判断是否有关联数据 Long userChange = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getTitleId, s).count(); if (userChange>0){ return R.fail("当前职称已有用户设为偏好,无法删除"); } Long consultation = consultationService.lambdaQuery().eq(TConsultation::getTitleId, s).count(); if (consultation>0){ return R.fail("当前职称已设置咨询,无法删除"); } Long declareNotice = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getTechnicalId, s).count(); if (declareNotice>0){ return R.fail("当前职称已设置申报通知,无法删除"); } Long committeeTechnical = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getTechnicalId, s).count(); if (committeeTechnical>0){ return R.fail("当前职称已设置委员会可评审职称,无法删除"); } Long committee = committeeService.lambdaQuery().eq(TCommittee::getTechnicalId, s).count(); if (committee>0){ return R.fail("当前职称已设置评审委员会,无法删除"); } Long infomation = informationService.lambdaQuery().eq(TInformation::getTechnicalId, s).count(); if (infomation>0){ return R.fail("当前职称已设置资料,无法删除"); } Long major = majorService.lambdaQuery().eq(TTitleMajor::getTechnicalId, s).count(); if (major>0){ return R.fail("当前职称已设置专业,无法删除"); } Long course = courseService.lambdaQuery().eq(TCourse::getTechnicalId, s).count(); if (course>0){ return R.fail("当前职称已设置课程,无法删除"); } } tTechnicalTitleService.removeByIds(list); return R.ok(); } //分页查询 @ApiOperation(value = "查询",tags = "后台-系统设置-职称系列") @PostMapping(value = "/pageList") public R> pageList(@RequestBody RegionQuery regionQuery){ return R.ok(tTechnicalTitleService.pageList(regionQuery)); } @ApiOperation(value = "导入",tags = "后台-系统设置-职称系列") @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) @PostMapping("/export") public R export (@RequestParam("file") MultipartFile file) { List tTechnicalTitles = new ArrayList<>(); ImportParams params = new ImportParams(); // params.setTitleRows(1);//标题行数 params.setHeadRows(1); //表头行数 String msg = null; InputStream inputStream = null; List failMsg = new ArrayList<>(); try { inputStream = file.getInputStream(); List techImportExcels = ExcelImportUtil.importExcel(inputStream, TechImportExcel.class, params); List list = regionService.lambdaQuery().list(); for (TechImportExcel techImportExcel : techImportExcels) { List regionIds; if (techImportExcel.getAddress() == null || StringUtils.isEmpty(techImportExcel.getAddress())) { msg = "第" + techImportExcels.indexOf(techImportExcel) + "行,地区不能为空"; failMsg.add(msg); continue; } else { if("全部".equals(techImportExcel.getAddress())){ regionIds = list.stream().map(TRegion::getId).collect(Collectors.toList()); }else { String[] split = techImportExcel.getAddress().split(";"); regionIds = new ArrayList<>(); for (String s : split) { TRegion region = list.stream().filter(e -> e.getName().contains(s)).findFirst().orElse(null); // TRegion region = regionService.lambdaQuery().like(TRegion::getName, s).one(); if (region == null) { msg = "第" + techImportExcels.indexOf(techImportExcel) + "行,地区不存在"; failMsg.add(msg); } else { regionIds.add(region.getId()); } } if (regionIds.size() != split.length) { continue; } } } TTechnicalTitle tTechnicalTitle = new TTechnicalTitle(); tTechnicalTitle.setTitileName(techImportExcel.getTitileName()); tTechnicalTitle.setRegionIds(StringUtils.join(regionIds, ",")); tTechnicalTitles.add(tTechnicalTitle); } if (failMsg.size()==0){ tTechnicalTitleService.saveBatch(tTechnicalTitles); }else { return R.fail(failMsg); } } catch (Exception e) { e.printStackTrace(); // logger.error("批量购入导入失败:{}",e.getMessage()); // importRecordService.removeById(tImportRecord.getId()); return R.fail("批量导入失败!"); }finally { try { inputStream.close(); } catch (IOException e) { throw new ServiceException(e.getMessage()); } } return R.ok(); } }