班组管理新增接口

liweidong
pangyang 2 months ago
parent 71b9563240
commit 5cc58c3d9c
  1. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java
  2. 53
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamTime.java
  3. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/TeamSetVO.java
  4. 25
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/TeamTimeVO.java
  5. 12
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/feign/IUserClient.java
  6. 142
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
  7. 65
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamTimeController.java
  8. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/TeamTimeMapper.java
  9. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/TeamTimeMapper.xml
  10. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ITeamTimeService.java
  11. 44
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/TeamTimeServiceImpl.java
  12. 24
      blade-service/blade-system/src/main/java/org/springblade/system/feign/UserClient.java

@ -11,6 +11,7 @@ import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial; import java.io.Serial;
import java.util.List;
/** /**
* [班组] 实体类 * [班组] 实体类
@ -19,7 +20,7 @@ import java.io.Serial;
* @since 2025-12-16 * @since 2025-12-16
*/ */
@Data @Data
@TableName("BA_TEAM_SET") @TableName("BS_TEAM_SET")
@Schema(description = "TeamSet Entity对象") @Schema(description = "TeamSet Entity对象")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class TeamSet extends BaseEntity { public class TeamSet extends BaseEntity {
@ -121,8 +122,8 @@ public class TeamSet extends BaseEntity {
/** /**
* 创建人;外键人员 * 创建人;外键人员
*/ */
@Schema(description = "创建人;外键(人员)") // @Schema(description = "创建人;外键(人员)")
private Long createMan; // private Long createMan;
/** /**
* 作业中心 * 作业中心
*/ */
@ -143,6 +144,9 @@ public class TeamSet extends BaseEntity {
*/ */
@Schema(description = "") @Schema(description = "")
private String teamMember; private String teamMember;
@Schema(description = "")
private String teamMemberId;
/** /**
* 特殊日分派时间 * 特殊日分派时间
*/ */
@ -163,4 +167,11 @@ public class TeamSet extends BaseEntity {
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
@TableField(exist = false)
private List<Long> userIds;
@TableField(exist = false)
private List<TeamTime> teamTimes;
} }

@ -0,0 +1,53 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.util.List;
/**
* [班组时间] 实体类
*
* @author Tom Shuo
* @since 2025-12-16
*/
@Data
@TableName("BS_TEAM_TIME")
@Schema(description = "TeamSet Entity对象")
@EqualsAndHashCode(callSuper = true)
public class TeamTime extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 班组id
*/
@Schema(description = "班组id")
private Long tsId;
/**
* 开始时间
*/
@Schema(description = "开始时间")
private String startTime;
/**
* 结束时间
*/
@Schema(description = "结束时间")
private String endTime;
/**
* 调度员
*/
@Schema(description = "分派时间类型;0、日分派时间,1、特殊分派时间,2、轮换时间")
private Long special;
}

@ -26,10 +26,10 @@ public class TeamSetVO extends TeamSet {
private String teamLeaderRealName; private String teamLeaderRealName;
@Schema(description = "计划员[用户]真名") @Schema(description = "计划员[用户]真名")
private Long plannerRealName; private String plannerRealName;
@Schema(description = "调度员[用户]真名") @Schema(description = "调度员[用户]真名")
private Long dispatcherRealName; private String dispatcherRealName;
@Schema(description = "[班次]名称") @Schema(description = "[班次]名称")
private String shiftsName; private String shiftsName;

@ -0,0 +1,25 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import java.io.Serial;
/**
* [班组时间] 视图实体类
*
* @author Tom Shuo
* @since 2025-12-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TeamTimeVO extends TeamTime {
@Serial
private static final long serialVersionUID = 1L;
}

@ -37,6 +37,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/** /**
* User Feign接口类 * User Feign接口类
* *
@ -60,6 +62,16 @@ public interface IUserClient {
String SAVE_USER = API_PREFIX + "/save-user"; String SAVE_USER = API_PREFIX + "/save-user";
String REGISTER_USER = API_PREFIX + "/register-user"; String REGISTER_USER = API_PREFIX + "/register-user";
String REMOVE_USER = API_PREFIX + "/remove-user"; String REMOVE_USER = API_PREFIX + "/remove-user";
String USER_LIST = API_PREFIX + "/user-list";
String UN_SELECTUSER_LIST = API_PREFIX + "/unuser-list";
@GetMapping(USER_LIST)
List<User> userListByIds(@RequestParam("userIds") String userIds);
@GetMapping(UN_SELECTUSER_LIST)
List<User> userUNListByIds(@RequestParam("userIds") String userIds);
/** /**
* 获取用户信息 * 获取用户信息

@ -29,17 +29,24 @@ import org.springblade.desk.basic.excel.PlatingSmallExcel;
import org.springblade.desk.basic.excel.TeamSetExcel; import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.PlatingSmall; import org.springblade.desk.basic.pojo.entity.PlatingSmall;
import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.vo.TeamSetVO; import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.ITeamTimeService;
import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.TeamSetWrapper; import org.springblade.desk.basic.wrapper.TeamSetWrapper;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* [班组] 控制器 * [班组] 控制器
@ -58,6 +65,11 @@ public class TeamSetController extends BladeController {
@Resource @Resource
private ITeamSetService service; private ITeamSetService service;
@Resource
private IUserClient iUserClient;
@Resource
private ITeamTimeService teamTimeService;
/** /**
* [班组] 详情 * [班组] 详情
@ -72,6 +84,106 @@ public class TeamSetController extends BladeController {
return R.data(detailVO); return R.data(detailVO);
} }
@PostMapping("/getUnSelectUser")
@ApiOperationSupport(order = 31)
@Operation(summary = "获取未选择人员", description = "传入WorkCenter List")
public R<List<User>> getUnSelectUser(@Valid @RequestBody TeamSet teamSet) {
List<User> teams = new ArrayList<>();
QueryWrapper<TeamSet> qw = Condition.getQueryWrapper(teamSet);
TeamSet detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamMemberId();
if(null != teamId && !"".equals(teamId)){
teams = iUserClient.userUNListByIds(teamId);
}else{
teams = iUserClient.userUNListByIds("");
}
}
return R.data(teams);
}
@PostMapping("/getSelectUser")
@ApiOperationSupport(order = 31)
@Operation(summary = "获取已选择人员", description = "传入WorkCenter List")
public R<List<User>> getSelectUser(@Valid @RequestBody TeamSet teamSet) {
List<User> teams = new ArrayList<>();
QueryWrapper<TeamSet> qw = Condition.getQueryWrapper(teamSet);
TeamSet detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamMemberId();
if(null != teamId && !"".equals(teamId)){
teams = iUserClient.userListByIds(teamId);
}
}
return R.data(teams);
}
@PostMapping("/getSelectTime")
@ApiOperationSupport(order = 31)
@Operation(summary = "获取时间", description = "传入WorkCenter List")
public R<List<TeamTime>> getSelectTime(@Valid @RequestBody TeamSet teamSet) {
TeamTime teamTime = new TeamTime();
teamTime.setSpecial(Long.parseLong(teamSet.getSpecial()));
teamTime.setTsId(teamSet.getId());
QueryWrapper<TeamTime> qw = Condition.getQueryWrapper(teamTime);
List<TeamTime> times = teamTimeService.list(qw);
return R.data(times);
}
@PostMapping("/saveBatchTime")
@ApiOperationSupport(order = 31)
@Operation(summary = "保存时间", description = "传入WorkCenter List")
public R saveBatchTime(@Valid @RequestBody TeamSet teamSet) {
TeamTime teamTime = new TeamTime();
teamTime.setSpecial(Long.parseLong(teamSet.getSpecial()));
teamTime.setTsId(teamSet.getId());
QueryWrapper<TeamTime> qw = Condition.getQueryWrapper(teamTime);
teamTimeService.remove(qw);
List<TeamTime> times = teamSet.getTeamTimes();
for(TeamTime time:times){
time.setId(null);
time.setTsId(teamSet.getId());
time.setSpecial(Long.parseLong(teamSet.getSpecial()));
}
teamTimeService.saveBatch(times);
return R.status(true);
}
@PostMapping("/updateUserId")
@ApiOperationSupport(order = 31)
@Operation(summary = "设置人员Id保存", description = "传入WorkCenter List")
@Transactional
public R updateUserId(@Valid @RequestBody TeamSet teamSet) {
QueryWrapper<TeamSet> qw = Condition.getQueryWrapper(teamSet);
TeamSet detail = service.getOne(qw);
List<Long> teamIds = teamSet.getUserIds();
String result = null;
String team = null;
if(null != teamIds){
result = teamIds.stream()
.map(Object::toString) // 或者直接使用String::valueOf,效果相同
.collect(Collectors.joining(","));
List<User> teams = iUserClient.userListByIds(result);
team= teams.stream()
.map(user -> String.valueOf(user.getRealName()))
.collect(Collectors.joining(","));
}
detail.setTeamMemberId(result);
detail.setTeamMember(team);
service.updateById(detail);
return R.status(true);
}
/** /**
* [班组] list分页 * [班组] list分页
*/ */
@ -88,6 +200,21 @@ public class TeamSetController extends BladeController {
// page // page
IPage<TeamSet> pages = service.page(Condition.getPage(query), qw); IPage<TeamSet> pages = service.page(Condition.getPage(query), qw);
IPage<TeamSetVO> pagesVO = TeamSetWrapper.build().pageVO(pages); IPage<TeamSetVO> pagesVO = TeamSetWrapper.build().pageVO(pages);
List<TeamSetVO> records = pagesVO.getRecords();
for(TeamSetVO teamSetVO:records){
R<User> user= iUserClient.userInfoById(teamSetVO.getDispatcher());
if(null != user && null != user.getData()){
teamSetVO.setDispatcherRealName(user.getData().getRealName());
}
R<User> userplan= iUserClient.userInfoById(teamSetVO.getPlanner());
if(null != userplan && null != userplan.getData()){
teamSetVO.setPlannerRealName(userplan.getData().getRealName());
}
R<User> userleader= iUserClient.userInfoById(teamSetVO.getTeamLeader());
if(null != userleader && null != userleader.getData()){
teamSetVO.setTeamLeaderRealName(userleader.getData().getRealName());
}
}
return R.data(pagesVO); return R.data(pagesVO);
} }
@ -102,6 +229,21 @@ public class TeamSetController extends BladeController {
IPage<TeamSetVO> pagesVO = service.selectTeamSetPage( IPage<TeamSetVO> pagesVO = service.selectTeamSetPage(
Condition.getPage(query), teamSet Condition.getPage(query), teamSet
); );
List<TeamSetVO> records = pagesVO.getRecords();
for(TeamSetVO teamSetVO:records){
R<User> user= iUserClient.userInfoById(teamSetVO.getDispatcher());
if(null != user && null != user.getData()){
teamSetVO.setDispatcherRealName(user.getData().getRealName());
}
R<User> userplan= iUserClient.userInfoById(teamSetVO.getPlanner());
if(null != userplan && null != userplan.getData()){
teamSetVO.setPlannerRealName(userplan.getData().getRealName());
}
R<User> userleader= iUserClient.userInfoById(teamSetVO.getTeamLeader());
if(null != userleader && null != userleader.getData()){
teamSetVO.setTeamLeaderRealName(userleader.getData().getRealName());
}
}
return R.data(pagesVO); return R.data(pagesVO);
} }

@ -0,0 +1,65 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.ITeamTimeService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.TeamSetWrapper;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* [班组] 控制器
* mes v1: bs_team_set
*
* @author Tom Shuo
* @since 2025-12-16
*/
@RestController
@RequestMapping(BAModuleConst.CONTROLLER_PREFIX + "/TeamTime")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Tag(name = "[BA][班组]", description = "[班组]接口")
public class TeamTimeController extends BladeController {
@Resource
private ITeamTimeService service;
}

@ -0,0 +1,25 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import java.util.List;
/**
* [班组] Mapper 接口
*
* @author Tom Shuo
* @since 2025-12-16
*/
public interface TeamTimeMapper extends BaseMapper<TeamTime> {
}

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.basic.mapper.TeamTimeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="teamSetResultMap" type="org.springblade.desk.basic.pojo.entity.TeamTime">
<result column="TS_ID" property="tsId"/>
<result column="START_TIME" property="startTime"/>
<result column="END_TIME" property="endTime"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="SPECIAL" property="special"/>
</resultMap>
<select id="selectTeamSetPage" resultMap="teamSetResultMap">
SELECT *
FROM BA_TEAM_TIME
WHERE is_deleted = 0
</select>
<select id="exportTeamSet" resultType="org.springblade.desk.basic.excel.TeamSetExcel">
SELECT *
FROM BA_TEAM_TIME ${ew.customSqlSegment}
</select>
</mapper>

@ -0,0 +1,26 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.system.pojo.entity.User;
import java.util.List;
/**
* [班组] 服务类
*
* @author Tom Shuo
* @since 2025-12-16
*/
public interface ITeamTimeService extends BaseService<TeamTime> {
}

@ -0,0 +1,44 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.mapper.TeamSetMapper;
import org.springblade.desk.basic.mapper.TeamTimeMapper;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.TeamTime;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.ITeamTimeService;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* [班组时间] 服务实现类
*
* @author Tom Shuo
* @since 2025-12-16
*/
@Service
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TeamTimeServiceImpl extends BaseServiceImpl<TeamTimeMapper, TeamTime> implements ITeamTimeService {
}

@ -25,6 +25,7 @@
*/ */
package org.springblade.system.feign; package org.springblade.system.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
@ -41,6 +42,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Hidden;
import java.util.List;
/** /**
* 用户服务Feign实现类 * 用户服务Feign实现类
* *
@ -54,6 +57,27 @@ public class UserClient implements IUserClient {
private final IUserService service; private final IUserService service;
@Override
public List<User> userListByIds(String userIds) {
if(null != userIds && !userIds.isEmpty()){
return service.listByIds(Func.toLongList(userIds));
}
return List.of();
}
@Override
public List<User> userUNListByIds(String userIds) {
if(null != userIds && !userIds.isEmpty()){
List<Long> ids = Func.toLongList(userIds);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("id",ids);
List<User> users = service.list(queryWrapper);
return users;
}else{
return service.list() ;
}
}
@Override @Override
@GetMapping(USER_BY_ID) @GetMapping(USER_BY_ID)
public R<User> userInfoById(Long userId) { public R<User> userInfoById(Long userId) {

Loading…
Cancel
Save