package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.*;
import com.ruoyi.web.controller.query.ConsultationQuery;
import com.ruoyi.web.controller.query.DeclareNoticeQuery;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 申报通知 前端控制器
*
*
* @author luodangjia
* @since 2024-09-19
*/
@RestController
@RequestMapping("/t-declare-notice")
public class TDeclareNoticeController {
@Resource
private TDeclareNoticeService tDeclareNoticeService;
@Resource
private TDeclareNoticeFileService tDeclareNoticeFileService;
@Resource
private TDeclareNoticeTechnicalService tDeclareNoticeTechnicalService;
@Resource
private TDeclareNoticeMajorService tDeclareNoticeMajorService;
@Resource
private TRegionService regionService;
@Resource
private TTechnicalTitleService tTechnicalTitleService;
@Resource
private TTitleMajorService majorService;
//添加
@ApiOperation(value = "添加",tags = "后台-申报通知")
@PostMapping(value = "/add")
public R add(@RequestBody TDeclareNotice tDeclareNotice) {
tDeclareNoticeService.save(tDeclareNotice);
//附件要求
for (TDeclareNoticeFile declareNoticeFile : tDeclareNotice.getDeclareNoticeFiles()) {
declareNoticeFile.setId(null);
declareNoticeFile.setDeclareId(tDeclareNotice.getId());
}
tDeclareNoticeFileService.saveBatch(tDeclareNotice.getDeclareNoticeFiles());
//评审职称
for (TDeclareNoticeTechnical declareNoticeTechnical : tDeclareNotice.getDeclareNoticeTechnicals()) {
declareNoticeTechnical.setId(null);
declareNoticeTechnical.setDeclareId(tDeclareNotice.getId());
}
tDeclareNoticeTechnicalService.saveBatch(tDeclareNotice.getDeclareNoticeTechnicals());
//评审专业
for (TDeclareNoticeMajor declareNoticeMajor : tDeclareNotice.getDeclareNoticeMajors()) {
declareNoticeMajor.setId(null);
declareNoticeMajor.setDeclareId(tDeclareNotice.getId());
}
tDeclareNoticeMajorService.saveBatch(tDeclareNotice.getDeclareNoticeMajors());
return R.ok();
}
//修改
@ApiOperation(value = "修改",tags = "后台-申报通知")
@PostMapping(value = "/edit")
public R edit(@RequestBody TDeclareNotice tDeclareNotice) {
tDeclareNoticeService.updateById(tDeclareNotice);
//删除关联数据
tDeclareNoticeFileService.remove(Wrappers.lambdaQuery(TDeclareNoticeFile.class).eq(TDeclareNoticeFile::getDeclareId, tDeclareNotice.getId()));
tDeclareNoticeTechnicalService.remove(Wrappers.lambdaQuery(TDeclareNoticeTechnical.class).eq(TDeclareNoticeTechnical::getDeclareId, tDeclareNotice.getId()));
tDeclareNoticeMajorService.remove(Wrappers.lambdaQuery(TDeclareNoticeMajor.class).eq(TDeclareNoticeMajor::getDeclareId, tDeclareNotice.getId()));
//附件要求
for (TDeclareNoticeFile declareNoticeFile : tDeclareNotice.getDeclareNoticeFiles()) {
declareNoticeFile.setId(null);
declareNoticeFile.setDeclareId(tDeclareNotice.getId());
}
tDeclareNoticeFileService.saveBatch(tDeclareNotice.getDeclareNoticeFiles());
//评审职称
for (TDeclareNoticeTechnical declareNoticeTechnical : tDeclareNotice.getDeclareNoticeTechnicals()) {
declareNoticeTechnical.setDeclareId(tDeclareNotice.getId());
declareNoticeTechnical.setId(null);
}
tDeclareNoticeTechnicalService.saveBatch(tDeclareNotice.getDeclareNoticeTechnicals());
//评审专业
for (TDeclareNoticeMajor declareNoticeMajor : tDeclareNotice.getDeclareNoticeMajors()) {
declareNoticeMajor.setDeclareId(tDeclareNotice.getId());
declareNoticeMajor.setId(null);
}
tDeclareNoticeMajorService.saveBatch(tDeclareNotice.getDeclareNoticeMajors());
return R.ok();
}
@Resource
private TCommitteeService committeeService;
//删除
@ApiOperation(value = "删除",tags = "后台-申报通知")
@PostMapping(value = "/deleteByIds")
public R deleteByIds(String ids) {
List list = Arrays.asList(ids.split(","));
tDeclareNoticeService.removeByIds(list);
Long count = committeeService.lambdaQuery().in(TCommittee::getDeclareId, list).count();
if (count>0){
return R.fail("当前通知已设置委员会,无法删除");
}
//删除相关数据
tDeclareNoticeFileService.remove(Wrappers.lambdaQuery(TDeclareNoticeFile.class).in(TDeclareNoticeFile::getDeclareId, list));
tDeclareNoticeTechnicalService.remove(Wrappers.lambdaQuery(TDeclareNoticeTechnical.class).in(TDeclareNoticeTechnical::getDeclareId, list));
tDeclareNoticeMajorService.remove(Wrappers.lambdaQuery(TDeclareNoticeMajor.class).in(TDeclareNoticeMajor::getDeclareId, list));
return R.ok();
}
//列表
@ApiOperation(value = "查询",tags = {"后台-申报通知","web-职称申报"})
@PostMapping(value = "/list")
public R> list(@RequestBody DeclareNoticeQuery informationQuery) {
Page page;
if(StringUtils.isEmpty(informationQuery.getProvinceName())){
if(informationQuery.getSortType()==1){
page = tDeclareNoticeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getDeclareNoticeName()), TDeclareNotice::getDeclareNoticeName, informationQuery.getDeclareNoticeName())
.eq(informationQuery.getRegionId() != null, TDeclareNotice::getRegionId, informationQuery.getRegionId())
.eq(informationQuery.getTechnicalId() != null, TDeclareNotice::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TDeclareNotice::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TDeclareNotice::getLevel, informationQuery.getLevel())
.eq(informationQuery.getIsOnline()!=null, TDeclareNotice::getIsOnline, informationQuery.getIsOnline())
.between(informationQuery.getDeclareStartTime1()!=null,TDeclareNotice::getDeclareStartTime,informationQuery.getDeclareStartTime1(),informationQuery.getDeclareStartTime2())
.between(informationQuery.getDeclareEndTime1()!=null,TDeclareNotice::getDeclareEndTime,informationQuery.getDeclareEndTime1(),informationQuery.getDeclareEndTime2())
.orderByDesc(TDeclareNotice::getCreateTime)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}else {
page = tDeclareNoticeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getDeclareNoticeName()), TDeclareNotice::getDeclareNoticeName, informationQuery.getDeclareNoticeName())
.eq(informationQuery.getRegionId() != null, TDeclareNotice::getRegionId, informationQuery.getRegionId())
.eq(informationQuery.getTechnicalId() != null, TDeclareNotice::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TDeclareNotice::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TDeclareNotice::getLevel, informationQuery.getLevel())
.eq(informationQuery.getIsOnline()!=null, TDeclareNotice::getIsOnline, informationQuery.getIsOnline())
.between(informationQuery.getDeclareStartTime1()!=null,TDeclareNotice::getDeclareStartTime,informationQuery.getDeclareStartTime1(),informationQuery.getDeclareStartTime2())
.between(informationQuery.getDeclareEndTime1()!=null,TDeclareNotice::getDeclareEndTime,informationQuery.getDeclareEndTime1(),informationQuery.getDeclareEndTime2())
.orderByDesc(TDeclareNotice::getNoticeSort)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}
}else {
List list;
// 查询省份下的市
if(informationQuery.getProvinceName().equals("直辖市")){
List cityList = new ArrayList<>();
cityList.add("北京市");
cityList.add("天津市");
cityList.add("重庆市");
cityList.add("上海市");
list = regionService.lambdaQuery().in(TRegion::getProvinceName, cityList).list();
}else {
list = regionService.lambdaQuery().eq(TRegion::getProvinceName, informationQuery.getProvinceName()).list();
}
List ids = list.stream().map(TRegion::getId).collect(Collectors.toList());
if(informationQuery.getSortType()==1){
page = tDeclareNoticeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getDeclareNoticeName()), TDeclareNotice::getDeclareNoticeName, informationQuery.getDeclareNoticeName())
.in( TDeclareNotice::getRegionId, ids)
.eq(informationQuery.getTechnicalId() != null, TDeclareNotice::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TDeclareNotice::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TDeclareNotice::getLevel, informationQuery.getLevel())
.eq(informationQuery.getIsOnline()!=null, TDeclareNotice::getIsOnline, informationQuery.getIsOnline())
.between(informationQuery.getDeclareStartTime1()!=null,TDeclareNotice::getDeclareStartTime,informationQuery.getDeclareStartTime1(),informationQuery.getDeclareStartTime2())
.between(informationQuery.getDeclareEndTime1()!=null,TDeclareNotice::getDeclareEndTime,informationQuery.getDeclareEndTime1(),informationQuery.getDeclareEndTime2())
.orderByDesc(TDeclareNotice::getCreateTime)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}else {
page = tDeclareNoticeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getDeclareNoticeName()), TDeclareNotice::getDeclareNoticeName, informationQuery.getDeclareNoticeName())
.in( TDeclareNotice::getRegionId, ids)
.eq(informationQuery.getTechnicalId() != null, TDeclareNotice::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TDeclareNotice::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TDeclareNotice::getLevel, informationQuery.getLevel())
.eq(informationQuery.getIsOnline()!=null, TDeclareNotice::getIsOnline, informationQuery.getIsOnline())
.between(informationQuery.getDeclareStartTime1()!=null,TDeclareNotice::getDeclareStartTime,informationQuery.getDeclareStartTime1(),informationQuery.getDeclareStartTime2())
.between(informationQuery.getDeclareEndTime1()!=null,TDeclareNotice::getDeclareEndTime,informationQuery.getDeclareEndTime1(),informationQuery.getDeclareEndTime2())
.orderByDesc(TDeclareNotice::getNoticeSort)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}
}
List regions = regionService.lambdaQuery().list();
List tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
List tTitleMajors = majorService.lambdaQuery().list();
for (TDeclareNotice record : page.getRecords()) {
TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
record.setRegionName(region.getProvinceName()+"-"+region.getName());
record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
}
return R.ok(page);
}
//详情
@ApiOperation(value = "详情",tags = {"后台-申报通知","web-职称申报"})
@PostMapping(value = "/getById")
public R getById(Long id){
TDeclareNotice tDeclareNotice = tDeclareNoticeService.getById(id);
List tDeclareNoticeFiles = tDeclareNoticeFileService.lambdaQuery().eq(TDeclareNoticeFile::getDeclareId, id).list();
List tDeclareNoticeTechnicals = tDeclareNoticeTechnicalService.lambdaQuery().eq(TDeclareNoticeTechnical::getDeclareId, id).list();
List tDeclareNoticeMajors = tDeclareNoticeMajorService.lambdaQuery().eq(TDeclareNoticeMajor::getDeclareId, id).list();
tDeclareNotice.setDeclareNoticeFiles(tDeclareNoticeFiles);
tDeclareNotice.setDeclareNoticeTechnicals(tDeclareNoticeTechnicals);
tDeclareNotice.setDeclareNoticeMajors(tDeclareNoticeMajors);
if(StringUtils.isEmpty(tDeclareNotice.getDeclareLevel())){
tDeclareNotice.setDeclareLevel(tDeclareNoticeTechnicals.stream().map(TDeclareNoticeTechnical::getTechnicalName).collect(Collectors.joining("/")));
}
return R.ok(tDeclareNotice);
}
}