初始化数据分组规则、分组删除关联数据
This commit is contained in:
parent
47216f68fa
commit
4985133ea4
|
@ -1,8 +1,11 @@
|
||||||
package org.jeecg.modules.controller;
|
package org.jeecg.modules.controller;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
|
|
||||||
|
@ -13,7 +16,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import org.jeecg.common.system.base.controller.JeecgController;
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
import org.jeecg.modules.entity.CetGroup;
|
import org.jeecg.modules.entity.CetGroup;
|
||||||
|
import org.jeecg.modules.entity.CetInvigilateData;
|
||||||
import org.jeecg.modules.service.ICetGroupService;
|
import org.jeecg.modules.service.ICetGroupService;
|
||||||
|
import org.jeecg.modules.service.ICetInvigilateDataService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
@ -35,6 +40,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
public class CetGroupController extends JeecgController<CetGroup, ICetGroupService> {
|
public class CetGroupController extends JeecgController<CetGroup, ICetGroupService> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICetGroupService cetGroupService;
|
private ICetGroupService cetGroupService;
|
||||||
|
@Autowired
|
||||||
|
private ICetInvigilateDataService cetInvigilateDataService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
|
@ -49,16 +56,45 @@ public class CetGroupController extends JeecgController<CetGroup, ICetGroupServi
|
||||||
@ApiOperation(value="分组数据表-分页列表查询", notes="分组数据表-分页列表查询")
|
@ApiOperation(value="分组数据表-分页列表查询", notes="分组数据表-分页列表查询")
|
||||||
@GetMapping(value = "/list")
|
@GetMapping(value = "/list")
|
||||||
public Result<IPage<CetGroup>> queryPageList(CetGroup cetGroup,
|
public Result<IPage<CetGroup>> queryPageList(CetGroup cetGroup,
|
||||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||||
HttpServletRequest req) {
|
HttpServletRequest req) {
|
||||||
QueryWrapper<CetGroup> queryWrapper = QueryGenerator.initQueryWrapper(cetGroup, req.getParameterMap());
|
QueryWrapper<CetGroup> queryWrapper = QueryGenerator.initQueryWrapper(cetGroup, req.getParameterMap());
|
||||||
Page<CetGroup> page = new Page<CetGroup>(pageNo, pageSize);
|
Page<CetGroup> page = new Page<>(pageNo, pageSize);
|
||||||
IPage<CetGroup> pageList = cetGroupService.page(page, queryWrapper);
|
IPage<CetGroup> pageList = cetGroupService.page(page, queryWrapper);
|
||||||
|
|
||||||
|
// 取分页内所有分组id,类型保持一致(假设是Long)
|
||||||
|
Set<String> groupIds = pageList.getRecords().stream()
|
||||||
|
.map(CetGroup::getId)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
if(!groupIds.isEmpty()){
|
||||||
|
// 批量查询所有这些分组下的用户
|
||||||
|
List<CetInvigilateData> userList = cetInvigilateDataService.list(
|
||||||
|
new QueryWrapper<CetInvigilateData>().in("group_id", groupIds)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 按groupId分组用户名称列表,groupId类型保持一致
|
||||||
|
Map<String, List<String>> groupIdToUserNames = userList.stream()
|
||||||
|
.collect(Collectors.groupingBy(CetInvigilateData::getGroupId,
|
||||||
|
Collectors.mapping(CetInvigilateData::getName, Collectors.toList())));
|
||||||
|
|
||||||
|
// 设置每个分组的userNames字段
|
||||||
|
pageList.getRecords().forEach(group -> {
|
||||||
|
String groupIdStr = String.valueOf(group.getId());
|
||||||
|
List<String> names = groupIdToUserNames.get(groupIdStr);
|
||||||
|
// 拼接为字符串,例如用逗号分隔
|
||||||
|
String userNamesStr = (names != null && !names.isEmpty()) ? String.join(", ", names) : "";
|
||||||
|
group.setRowUser(userNamesStr);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
return Result.OK(pageList);
|
return Result.OK(pageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
|
/**
|
||||||
* 添加
|
* 添加
|
||||||
*
|
*
|
||||||
* @param cetGroup
|
* @param cetGroup
|
||||||
|
@ -98,12 +134,20 @@ public class CetGroupController extends JeecgController<CetGroup, ICetGroupServi
|
||||||
@ApiOperation(value="分组数据表-通过id删除", notes="分组数据表-通过id删除")
|
@ApiOperation(value="分组数据表-通过id删除", notes="分组数据表-通过id删除")
|
||||||
@RequiresPermissions("cet:cet_group:delete")
|
@RequiresPermissions("cet:cet_group:delete")
|
||||||
@DeleteMapping(value = "/delete")
|
@DeleteMapping(value = "/delete")
|
||||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
public Result<String> delete(@RequestParam(name="id", required=true) String id) {
|
||||||
|
// 删除分组表中的分组
|
||||||
cetGroupService.removeById(id);
|
cetGroupService.removeById(id);
|
||||||
|
|
||||||
|
// 将数据总表对应groupId置空
|
||||||
|
UpdateWrapper<CetInvigilateData> updateWrapper = new UpdateWrapper<>();
|
||||||
|
updateWrapper.eq("group_id", id).set("group_id", null);
|
||||||
|
cetInvigilateDataService.update(updateWrapper);
|
||||||
|
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
|
/**
|
||||||
* 批量删除
|
* 批量删除
|
||||||
*
|
*
|
||||||
* @param ids
|
* @param ids
|
||||||
|
@ -113,12 +157,21 @@ public class CetGroupController extends JeecgController<CetGroup, ICetGroupServi
|
||||||
@ApiOperation(value="分组数据表-批量删除", notes="分组数据表-批量删除")
|
@ApiOperation(value="分组数据表-批量删除", notes="分组数据表-批量删除")
|
||||||
@RequiresPermissions("cet:cet_group:deleteBatch")
|
@RequiresPermissions("cet:cet_group:deleteBatch")
|
||||||
@DeleteMapping(value = "/deleteBatch")
|
@DeleteMapping(value = "/deleteBatch")
|
||||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
public Result<String> deleteBatch(@RequestParam(name="ids", required=true) String ids) {
|
||||||
this.cetGroupService.removeByIds(Arrays.asList(ids.split(",")));
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
|
// 删除分组表中的分组
|
||||||
|
cetGroupService.removeByIds(idList);
|
||||||
|
|
||||||
|
// 将数据总表对应groupId置空
|
||||||
|
UpdateWrapper<CetInvigilateData> updateWrapper = new UpdateWrapper<>();
|
||||||
|
updateWrapper.in("group_id", idList).set("group_id", null);
|
||||||
|
cetInvigilateDataService.update(updateWrapper);
|
||||||
|
|
||||||
return Result.OK("批量删除成功!");
|
return Result.OK("批量删除成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
|
/**
|
||||||
* 通过id查询
|
* 通过id查询
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package org.jeecg.modules.controller;
|
package org.jeecg.modules.controller;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
import java.util.stream.Collectors;
|
||||||
import java.util.List;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
@ -11,17 +10,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
import org.jeecg.modules.entity.CetGraduates;
|
import org.jeecg.modules.entity.*;
|
||||||
import org.jeecg.modules.entity.CetTeachers;
|
|
||||||
import org.jeecg.modules.entity.CetNoTeachers;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import org.jeecg.common.system.base.controller.JeecgController;
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
import org.jeecg.modules.entity.CetInvigilateData;
|
import org.jeecg.modules.service.*;
|
||||||
import org.jeecg.modules.service.ICetGraduatesService;
|
|
||||||
import org.jeecg.modules.service.ICetInvigilateDataService;
|
|
||||||
import org.jeecg.modules.service.ICetNoTeachersService;
|
|
||||||
import org.jeecg.modules.service.ICetTeachersService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
@ -49,6 +42,24 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
|
||||||
private ICetGraduatesService cetGraduatesService;
|
private ICetGraduatesService cetGraduatesService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICetNoTeachersService cetNoTeachersService;
|
private ICetNoTeachersService cetNoTeachersService;
|
||||||
|
@Autowired
|
||||||
|
private ICetGroupService cetGroupService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量分组
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "分组")
|
||||||
|
@ApiOperation(value="分组", notes="分组")
|
||||||
|
@PostMapping(value = "/batchHandleGroup")
|
||||||
|
public Result<String> batchHandleGroup(@RequestBody Map<String, Object> webData) {
|
||||||
|
|
||||||
|
return cetInvigilateDataService.batchHandleGroup(webData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
|
@ -69,6 +80,28 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
|
||||||
QueryWrapper<CetInvigilateData> queryWrapper = QueryGenerator.initQueryWrapper(cetInvigilateData, req.getParameterMap());
|
QueryWrapper<CetInvigilateData> queryWrapper = QueryGenerator.initQueryWrapper(cetInvigilateData, req.getParameterMap());
|
||||||
Page<CetInvigilateData> page = new Page<CetInvigilateData>(pageNo, pageSize);
|
Page<CetInvigilateData> page = new Page<CetInvigilateData>(pageNo, pageSize);
|
||||||
IPage<CetInvigilateData> pageList = cetInvigilateDataService.page(page, queryWrapper);
|
IPage<CetInvigilateData> pageList = cetInvigilateDataService.page(page, queryWrapper);
|
||||||
|
// 取所有分组ID(假设 groupId 是 String 类型,如果是 Long 请对应修改)
|
||||||
|
Set<String> groupIds = pageList.getRecords().stream()
|
||||||
|
.map(CetInvigilateData::getGroupId)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
if (!groupIds.isEmpty()) {
|
||||||
|
// 批量查询分组信息
|
||||||
|
List<CetGroup> groupList = cetGroupService.list(
|
||||||
|
new QueryWrapper<CetGroup>().in("id", groupIds)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 转成 Map<groupId, groupName>
|
||||||
|
Map<String, String> groupIdToName = groupList.stream()
|
||||||
|
.collect(Collectors.toMap(CetGroup::getId, CetGroup::getGroupName));
|
||||||
|
|
||||||
|
// 给每条数据设置 groupName 字段(需保证 CetInvigilateData 有对应字段及setter)
|
||||||
|
pageList.getRecords().forEach(item -> {
|
||||||
|
String name = groupIdToName.get(item.getGroupId());
|
||||||
|
item.setGroupName(name != null ? name : "");
|
||||||
|
});
|
||||||
|
}
|
||||||
return Result.OK(pageList);
|
return Result.OK(pageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,4 +84,8 @@ public class CetGraduates implements Serializable {
|
||||||
/**类型*/
|
/**类型*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String type;
|
private String type;
|
||||||
|
/**类型*/
|
||||||
|
@Excel(name = "分组", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组")
|
||||||
|
private String groupId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.entity;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -31,18 +32,22 @@ public class CetGroup implements Serializable {
|
||||||
/**主键*/
|
/**主键*/
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "主键")
|
@ApiModelProperty(value = "主键")
|
||||||
private java.lang.String id;
|
private String id;
|
||||||
/**分组名称*/
|
@Excel(name = "分组名称", width = 15)
|
||||||
@Excel(name = "分组名称", width = 15)
|
|
||||||
@ApiModelProperty(value = "分组名称")
|
@ApiModelProperty(value = "分组名称")
|
||||||
private java.lang.String groupName;
|
private String groupName;
|
||||||
|
/**分组名称*/
|
||||||
|
@Excel(name = "分组名称", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String rowUser;
|
||||||
/**教室ID*/
|
/**教室ID*/
|
||||||
@Excel(name = "教室ID", width = 15)
|
@Excel(name = "教室ID", width = 15)
|
||||||
@ApiModelProperty(value = "教室ID")
|
@ApiModelProperty(value = "教室ID")
|
||||||
private java.lang.String roomId;
|
private String roomId;
|
||||||
/**创建人*/
|
/**创建人*/
|
||||||
@ApiModelProperty(value = "创建人")
|
@ApiModelProperty(value = "创建人")
|
||||||
private java.lang.String createBy;
|
private String createBy;
|
||||||
/**创建日期*/
|
/**创建日期*/
|
||||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ -50,7 +55,7 @@ public class CetGroup implements Serializable {
|
||||||
private java.util.Date createTime;
|
private java.util.Date createTime;
|
||||||
/**更新人*/
|
/**更新人*/
|
||||||
@ApiModelProperty(value = "更新人")
|
@ApiModelProperty(value = "更新人")
|
||||||
private java.lang.String updateBy;
|
private String updateBy;
|
||||||
/**更新日期*/
|
/**更新日期*/
|
||||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ -58,5 +63,5 @@ public class CetGroup implements Serializable {
|
||||||
private java.util.Date updateTime;
|
private java.util.Date updateTime;
|
||||||
/**所属部门*/
|
/**所属部门*/
|
||||||
@ApiModelProperty(value = "所属部门")
|
@ApiModelProperty(value = "所属部门")
|
||||||
private java.lang.String sysOrgCode;
|
private String sysOrgCode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -84,4 +85,13 @@ public class CetInvigilateData implements Serializable {
|
||||||
@Excel(name = "类型", width = 15)
|
@Excel(name = "类型", width = 15)
|
||||||
@ApiModelProperty(value = "类型")
|
@ApiModelProperty(value = "类型")
|
||||||
private String type;
|
private String type;
|
||||||
|
/**类型*/
|
||||||
|
// @Excel(name = "分组", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组")
|
||||||
|
private String groupId;
|
||||||
|
/**类型*/
|
||||||
|
@Excel(name = "分组", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String groupName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,4 +76,8 @@ public class CetNoTeachers implements Serializable {
|
||||||
/**类型*/
|
/**类型*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String type;
|
private String type;
|
||||||
|
/**类型*/
|
||||||
|
@Excel(name = "分组", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组")
|
||||||
|
private String groupId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,5 +84,9 @@ public class CetTeachers implements Serializable {
|
||||||
/**类型*/
|
/**类型*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String type;
|
private String type;
|
||||||
|
/**类型*/
|
||||||
|
@Excel(name = "分组", width = 15)
|
||||||
|
@ApiModelProperty(value = "分组")
|
||||||
|
private String groupId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.modules.entity.CetInvigilateData;
|
import org.jeecg.modules.entity.CetInvigilateData;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 数据总表
|
* @Description: 数据总表
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
|
@ -15,4 +17,5 @@ public interface ICetInvigilateDataService extends IService<CetInvigilateData> {
|
||||||
|
|
||||||
Result<String> add(CetInvigilateData cetInvigilateData);
|
Result<String> add(CetInvigilateData cetInvigilateData);
|
||||||
|
|
||||||
|
Result<String> batchHandleGroup(Map<String, Object> webData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,24 +5,20 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.Db;
|
import com.baomidou.mybatisplus.extension.toolkit.Db;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.modules.entity.CetGraduates;
|
import org.jeecg.modules.entity.*;
|
||||||
import org.jeecg.modules.entity.CetInvigilateData;
|
|
||||||
import org.jeecg.modules.entity.CetNoTeachers;
|
|
||||||
import org.jeecg.modules.entity.CetTeachers;
|
|
||||||
import org.jeecg.modules.mapper.CetGraduatesMapper;
|
import org.jeecg.modules.mapper.CetGraduatesMapper;
|
||||||
import org.jeecg.modules.mapper.CetInvigilateDataMapper;
|
import org.jeecg.modules.mapper.CetInvigilateDataMapper;
|
||||||
import org.jeecg.modules.mapper.CetNoTeachersMapper;
|
import org.jeecg.modules.mapper.CetNoTeachersMapper;
|
||||||
import org.jeecg.modules.mapper.CetTeachersMapper;
|
import org.jeecg.modules.mapper.CetTeachersMapper;
|
||||||
import org.jeecg.modules.service.ICetGraduatesService;
|
import org.jeecg.modules.service.*;
|
||||||
import org.jeecg.modules.service.ICetInvigilateDataService;
|
|
||||||
import org.jeecg.modules.service.ICetNoTeachersService;
|
|
||||||
import org.jeecg.modules.service.ICetTeachersService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 数据总表
|
* @Description: 数据总表
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
|
@ -40,6 +36,12 @@ public class CetInvigilateDataServiceImpl extends ServiceImpl<CetInvigilateDataM
|
||||||
private CetGraduatesMapper cetGraduatesMapper;
|
private CetGraduatesMapper cetGraduatesMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CetNoTeachersMapper cetNoTeachersMapper;
|
private CetNoTeachersMapper cetNoTeachersMapper;
|
||||||
|
@Autowired
|
||||||
|
private CetInvigilateDataMapper cetInvigilateDataMapper;
|
||||||
|
@Autowired
|
||||||
|
private ICetGroupService cetGroupService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -93,4 +95,90 @@ public class CetInvigilateDataServiceImpl extends ServiceImpl<CetInvigilateDataM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<String> batchHandleGroup(Map<String, Object> webData) {
|
||||||
|
List<String> ids = (List<String>) webData.get("ids");
|
||||||
|
if (ids == null || ids.isEmpty()) {
|
||||||
|
return Result.error("ID列表为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CetInvigilateData> users = cetInvigilateDataMapper.selectBatchIds(ids);
|
||||||
|
|
||||||
|
List<CetInvigilateData> maleTeachers = new ArrayList<>();
|
||||||
|
List<CetInvigilateData> femaleTeachers = new ArrayList<>();
|
||||||
|
List<CetInvigilateData> maleOthers = new ArrayList<>();
|
||||||
|
List<CetInvigilateData> femaleOthers = new ArrayList<>();
|
||||||
|
List<CetInvigilateData> maleGraduates = new ArrayList<>();
|
||||||
|
List<CetInvigilateData> femaleGraduates = new ArrayList<>();
|
||||||
|
|
||||||
|
for (CetInvigilateData user : users) {
|
||||||
|
String type = user.getType();
|
||||||
|
String sex = user.getSex();
|
||||||
|
boolean isMale = "男".equals(sex);
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case "教师":
|
||||||
|
if (isMale) maleTeachers.add(user);
|
||||||
|
else femaleTeachers.add(user);
|
||||||
|
break;
|
||||||
|
case "研究生":
|
||||||
|
if (isMale) maleGraduates.add(user);
|
||||||
|
else femaleGraduates.add(user);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (isMale) maleOthers.add(user);
|
||||||
|
else femaleOthers.add(user);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<List<CetInvigilateData>> groups = new ArrayList<>();
|
||||||
|
|
||||||
|
// 分组逻辑
|
||||||
|
while (!maleTeachers.isEmpty() && !femaleOthers.isEmpty()) {
|
||||||
|
groups.add(Arrays.asList(maleTeachers.remove(0), femaleOthers.remove(0)));
|
||||||
|
}
|
||||||
|
while (!femaleTeachers.isEmpty() && !maleOthers.isEmpty()) {
|
||||||
|
groups.add(Arrays.asList(femaleTeachers.remove(0), maleOthers.remove(0)));
|
||||||
|
}
|
||||||
|
while (!maleTeachers.isEmpty() && !femaleTeachers.isEmpty()) {
|
||||||
|
groups.add(Arrays.asList(maleTeachers.remove(0), femaleTeachers.remove(0)));
|
||||||
|
}
|
||||||
|
while (!maleTeachers.isEmpty() && !femaleGraduates.isEmpty()) {
|
||||||
|
groups.add(Arrays.asList(maleTeachers.remove(0), femaleGraduates.remove(0)));
|
||||||
|
}
|
||||||
|
while (!femaleTeachers.isEmpty() && !maleGraduates.isEmpty()) {
|
||||||
|
groups.add(Arrays.asList(femaleTeachers.remove(0), maleGraduates.remove(0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = 1;
|
||||||
|
for (List<CetInvigilateData> group : groups) {
|
||||||
|
// 创建组
|
||||||
|
String groupName = "第" + index + "组";
|
||||||
|
CetGroup cetGroup = new CetGroup()
|
||||||
|
.setGroupName(groupName)
|
||||||
|
.setRoomId("") // 可选
|
||||||
|
.setCreateBy("system") // 建议改为当前用户
|
||||||
|
.setCreateTime(new Date())
|
||||||
|
.setSysOrgCode("default");
|
||||||
|
|
||||||
|
cetGroupService.save(cetGroup); // 保存组,自动生成 ID
|
||||||
|
String groupId = cetGroup.getId();
|
||||||
|
|
||||||
|
// 设置组ID并更新每位成员
|
||||||
|
for (CetInvigilateData member : group) {
|
||||||
|
member.setGroupId(groupId); // 确保 entity 中有 groupId 字段
|
||||||
|
cetInvigilateDataMapper.updateById(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = groups.size();
|
||||||
|
int total = ids.size() / 2;
|
||||||
|
return Result.ok("共成功组队:" + successCount + " 组,失败:" + (total - successCount) + " 组");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue