|
@@ -0,0 +1,158 @@
|
|
|
+package com.qunzhixinxi.hnqz.admin.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmTeam;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.base.BaseEntity;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.PackageUserScopeEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTeamService;
|
|
|
+import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.PathVariable;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.PutMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 团队管理控制层
|
|
|
+ *
|
|
|
+ * @author lixuesong
|
|
|
+ * @date 2021年12月08日 13:57
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/team")
|
|
|
+@AllArgsConstructor
|
|
|
+public class WmTeamController {
|
|
|
+
|
|
|
+ private final WmTeamService wmTeamService;
|
|
|
+
|
|
|
+ private final WmScorePackageService wmScorePackageService;
|
|
|
+
|
|
|
+ private final SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存
|
|
|
+ *
|
|
|
+ * @param wmTeam
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping
|
|
|
+ public R<?> save(@RequestBody @Validated({BaseEntity.Create.class}) WmTeam wmTeam) {
|
|
|
+ if (StrUtil.containsBlank(wmTeam.getName())) {
|
|
|
+ return R.failed("团队名称不能包含空格");
|
|
|
+ }
|
|
|
+ int count = wmTeamService.count(Wrappers.<WmTeam>lambdaQuery()
|
|
|
+ .eq(WmTeam::getDelFlag, DelEnum.NOT_DEL.val())
|
|
|
+ .eq(WmTeam::getName, wmTeam.getName()));
|
|
|
+ if (count > 0) {
|
|
|
+ return R.failed("团队名称已存在");
|
|
|
+ }
|
|
|
+ wmTeam.setDeptId(SecurityUtils.getUser().getDeptId());
|
|
|
+ wmTeam.setCreateTime(LocalDateTime.now());
|
|
|
+ wmTeam.setCreateUser(SecurityUtils.getUser().getId());
|
|
|
+ if (wmTeam.getLeader() != null) {
|
|
|
+ wmTeam.setEnableFlag(EnableEnum.ENABLE.val());
|
|
|
+ }
|
|
|
+ wmTeam.setDelFlag(DelEnum.NOT_DEL.val());
|
|
|
+ wmTeamService.save(wmTeam);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新
|
|
|
+ *
|
|
|
+ * @param wmTeam
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PutMapping
|
|
|
+ public R<?> update(@RequestBody @Validated({BaseEntity.Update.class}) WmTeam wmTeam) {
|
|
|
+ if (StrUtil.isNotBlank(wmTeam.getName()) && StrUtil.containsBlank(wmTeam.getName())) {
|
|
|
+ return R.failed("团队名称不能包含空格");
|
|
|
+ }
|
|
|
+ int count = wmTeamService.count(Wrappers.<WmTeam>lambdaQuery()
|
|
|
+ .ne(WmTeam::getId, wmTeam.getId())
|
|
|
+ .eq(WmTeam::getDelFlag, DelEnum.NOT_DEL.val())
|
|
|
+ .eq(WmTeam::getName, wmTeam.getName()));
|
|
|
+ if (count > 0) {
|
|
|
+ return R.failed("团队名称已存在");
|
|
|
+ }
|
|
|
+ if (wmTeam.getLeader() != null) {
|
|
|
+ wmTeam.setEnableFlag(EnableEnum.ENABLE.val());
|
|
|
+ }
|
|
|
+ wmTeam.setUpdateTime(LocalDateTime.now());
|
|
|
+ wmTeam.setUpdateUser(SecurityUtils.getUser().getId());
|
|
|
+ wmTeamService.updateById(wmTeam);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解散团队
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/{id}")
|
|
|
+ public R<?> dissolve(@PathVariable("id") Integer id) {
|
|
|
+ // 查询团队是否还有任务在进行
|
|
|
+ int packageCount = wmScorePackageService.count(Wrappers.<WmScorePackage>lambdaQuery()
|
|
|
+ .eq(WmScorePackage::getPackageUserScope, PackageUserScopeEnum.TEAM.getVal())
|
|
|
+ .eq(WmScorePackage::getTeamId, id)
|
|
|
+ .gt(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.IN_PROGRESS.val()));
|
|
|
+ if (packageCount > 0) {
|
|
|
+ return R.failed("该团队还有任务在进行,不能解散");
|
|
|
+ }
|
|
|
+ // 设置为禁用
|
|
|
+ wmTeamService.update(Wrappers.<WmTeam>lambdaUpdate()
|
|
|
+ .eq(WmTeam::getId, id)
|
|
|
+ .set(WmTeam::getDelFlag, DelEnum.DELETED.val()));
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询团队列表
|
|
|
+ *
|
|
|
+ * @param page
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/list")
|
|
|
+ public R<IPage<WmTeam>> list(Page<WmTeam> page) {
|
|
|
+ Page<WmTeam> teamManagePage = wmTeamService.page(page, Wrappers.<WmTeam>lambdaQuery()
|
|
|
+ .eq(WmTeam::getDeptId, SecurityUtils.getUser().getDeptId())
|
|
|
+ .eq(WmTeam::getDelFlag, DelEnum.NOT_DEL.val()));
|
|
|
+ teamManagePage.getRecords().forEach(wmTeamManage -> {
|
|
|
+ List<SysUser> userList = sysUserMapper.selectBatchIds(CollectionUtil.toList(wmTeamManage.getMember()));
|
|
|
+ wmTeamManage.setMemberName(userList.stream().toArray(String[]::new));
|
|
|
+ });
|
|
|
+ return R.ok(teamManagePage);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * TODO
|
|
|
+ * @param teamId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/list-selectable-user")
|
|
|
+ public R<?> listSelectableUser(Integer teamId) {
|
|
|
+ Map<String, Object> map = wmTeamService.listSelectableUser(teamId);
|
|
|
+ return R.ok(map);
|
|
|
+ }
|
|
|
+}
|