package com.ruoyi.web.controller.api;
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.CommitteeQuery;
import io.swagger.annotations.ApiOperation;
import org.bouncycastle.jcajce.provider.symmetric.AES;
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.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 评审委员会 前端控制器
*
*
* @author luodangjia
* @since 2024-09-19
*/
@RestController
@RequestMapping("/t-committee")
public class TCommitteeController {
@Resource
private TCommitteeService tCommitteeService;
@Resource
private TCommitteeTechnicalService committeeTechnicalService;
@Resource
private TCommitteeMajorService tCommitteeMajorService;
@Resource
private TRegionService regionService;
@Resource
private TTechnicalTitleService tTechnicalTitleService;
@Resource
private TTitleMajorService majorService;
//添加
@ApiOperation(value = "添加",tags = "后台-评审委员会管理")
@PostMapping("/add")
public R add(@RequestBody TCommittee committee){
tCommitteeService.save(committee);
for (TCommitteeTechnical tCommitteeTechnical : committee.getTCommitteeTechnicals()) {
tCommitteeTechnical.setCommitteeId(committee.getId());
}
committeeTechnicalService.saveBatch(committee.getTCommitteeTechnicals());
for (TCommitteeMajor tCommitteeMajor : committee.getTCommitteeMajors()) {
tCommitteeMajor.setCommitteeId(committee.getId());
}
tCommitteeMajorService.saveBatch(committee.getTCommitteeMajors());
return R.ok();
}
//修改
@ApiOperation(value = "编辑",tags = "后台-评审委员会管理")
@PostMapping("/edit")
public R edit(@RequestBody TCommittee committee){
tCommitteeService.updateById(committee);
//删除相关数据
committeeTechnicalService.remove(Wrappers.lambdaQuery(TCommitteeTechnical.class).eq(TCommitteeTechnical::getCommitteeId, committee.getId()));
tCommitteeMajorService.remove(Wrappers.lambdaQuery(TCommitteeMajor.class).eq(TCommitteeMajor::getCommitteeId, committee.getId()));
for (TCommitteeTechnical tCommitteeTechnical : committee.getTCommitteeTechnicals()) {
tCommitteeTechnical.setId(null);
tCommitteeTechnical.setCommitteeId(committee.getId());
}
committeeTechnicalService.saveBatch(committee.getTCommitteeTechnicals());
for (TCommitteeMajor tCommitteeMajor : committee.getTCommitteeMajors()) {
tCommitteeMajor.setCommitteeId(committee.getId());
tCommitteeMajor.setId(null);
}
tCommitteeMajorService.saveBatch(committee.getTCommitteeMajors());
return R.ok();
}
//删除
@ApiOperation(value = "删除",tags = "后台-评审委员会管理")
@PostMapping("/deleteByIds")
public R deleteByIds(String ids){
List list = Arrays.asList(ids.split(","));
tCommitteeService.removeByIds(list);
//删除相关数据
committeeTechnicalService.remove(Wrappers.lambdaQuery(TCommitteeTechnical.class).in(TCommitteeTechnical::getCommitteeId, list));
tCommitteeMajorService.remove(Wrappers.lambdaQuery(TCommitteeMajor.class).in(TCommitteeMajor::getCommitteeId, list));
return R.ok();
}
//列表
@ApiOperation(value = "查询",tags = {"后台-评审委员会管理"})
@PostMapping("/list")
public R> list(@RequestBody CommitteeQuery informationQuery){
Page page;
if(StringUtils.isEmpty(informationQuery.getProvinceName())){
if(informationQuery.getSortType() == 1){
page = tCommitteeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getName()), TCommittee::getCommitteeName, informationQuery.getName())
.like(!StringUtils.isEmpty(informationQuery.getCommitteeUnit()), TCommittee::getCommitteeUnit, informationQuery.getCommitteeUnit())
.eq(informationQuery.getRegionId() != null, TCommittee::getRegionId, informationQuery.getRegionId())
.eq(informationQuery.getTechnicalId() != null, TCommittee::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TCommittee::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TCommittee::getLevel, informationQuery.getLevel())
.orderByDesc(TCommittee::getCreateTime)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}else {
page = tCommitteeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getName()), TCommittee::getCommitteeName, informationQuery.getName())
.like(!StringUtils.isEmpty(informationQuery.getCommitteeUnit()), TCommittee::getCommitteeUnit, informationQuery.getCommitteeUnit())
.eq(informationQuery.getRegionId() != null, TCommittee::getRegionId, informationQuery.getRegionId())
.eq(informationQuery.getTechnicalId() != null, TCommittee::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TCommittee::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TCommittee::getLevel, informationQuery.getLevel())
.orderByDesc(TCommittee::getCommitteeSort)
.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 = tCommitteeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getName()), TCommittee::getCommitteeName, informationQuery.getName())
.like(!StringUtils.isEmpty(informationQuery.getCommitteeUnit()), TCommittee::getCommitteeUnit, informationQuery.getCommitteeUnit())
.in( TCommittee::getRegionId, ids)
.eq(informationQuery.getTechnicalId() != null, TCommittee::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TCommittee::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TCommittee::getLevel, informationQuery.getLevel())
.orderByDesc(TCommittee::getCreateTime)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}else {
page = tCommitteeService.lambdaQuery()
.like(!StringUtils.isEmpty(informationQuery.getName()), TCommittee::getCommitteeName, informationQuery.getName())
.like(!StringUtils.isEmpty(informationQuery.getCommitteeUnit()), TCommittee::getCommitteeUnit, informationQuery.getCommitteeUnit())
.in( TCommittee::getRegionId, ids)
.eq(informationQuery.getTechnicalId() != null, TCommittee::getTechnicalId, informationQuery.getTechnicalId())
.eq(informationQuery.getMajorId() != null, TCommittee::getMajorId, informationQuery.getMajorId())
.eq(informationQuery.getLevel() != null, TCommittee::getLevel, informationQuery.getLevel())
.orderByDesc(TCommittee::getCommitteeSort)
.page(Page.of(informationQuery.getPageNum(), informationQuery.getPageSize()));
}
}
List records = page.getRecords();
List regionIds = records.stream().map(TCommittee::getRegionId).collect(Collectors.toList());
List regions = regionService.lambdaQuery().in(TRegion::getId, regionIds).list();
List technicalIds = records.stream().map(TCommittee::getTechnicalId).collect(Collectors.toList());
List tTechnicalTitles = tTechnicalTitleService.lambdaQuery().in(TTechnicalTitle::getId, technicalIds).list();
List majorIds = records.stream().map(TCommittee::getMajorId).collect(Collectors.toList());
List tTitleMajors = majorService.lambdaQuery().in(TTitleMajor::getId, majorIds).list();
List ids = records.stream().map(TCommittee::getId).collect(Collectors.toList());
List committeeTechnicals = committeeTechnicalService.lambdaQuery().in(TCommitteeTechnical::getCommitteeId, ids).list();
List committeeMajors = tCommitteeMajorService.lambdaQuery().in(TCommitteeMajor::getCommitteeId, ids).list();
for (TCommittee record : records) {
TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
record.setRegionName(region.getProvinceName()+"-"+region.getName());
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.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
List tCommitteeTechnicals = committeeTechnicals.stream().filter(e -> e.getCommitteeId().equals(record.getId())).collect(Collectors.toList());
List tCommitteeMajors = committeeMajors.stream().filter(e -> e.getCommitteeId().equals(record.getId())).collect(Collectors.toList());
record.setTCommitteeTechnicals(tCommitteeTechnicals);
record.setTCommitteeMajors(tCommitteeMajors);
}
return R.ok(page);
}
@Resource
private TDeclareNoticeService noticeService;
//详情
@ApiOperation(value = "详情",tags = {"后台-评审委员会管理","web-评审委员会"})
@PostMapping("/getById")
public R getById(Long id){
TCommittee tCommittee = tCommitteeService.getById(id);
List tCommitteeTechnicals = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getCommitteeId, id).list();
List tCommitteeMajors =tCommitteeMajorService.lambdaQuery().eq(TCommitteeMajor::getCommitteeId, id).list();
if (tCommittee.getDeclareId()!=null) {
String[] split = tCommittee.getDeclareId().split(",");
List list = noticeService.lambdaQuery().in(TDeclareNotice::getId, split).list();
tCommittee.setDeclareNotice(list);
}
tCommittee.setTCommitteeTechnicals(tCommitteeTechnicals);
tCommittee.setTCommitteeMajors(tCommitteeMajors);
return R.ok(tCommittee);
}
}