Browse Source

20200930_1.0

master
zy_Java 5 years ago
parent
commit
00fc4fe346
  1. 14
      mt/src/main/java/com/ccsens/mt/api/CompeteController.java
  2. 51
      mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java
  3. 9
      mt/src/main/java/com/ccsens/mt/api/DepartmentController.java
  4. 1
      mt/src/main/java/com/ccsens/mt/api/ScoreController.java
  5. 4
      mt/src/main/java/com/ccsens/mt/api/VideoController.java
  6. 5
      mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java
  7. 2
      mt/src/main/java/com/ccsens/mt/bean/dto/VideoDto.java
  8. 13
      mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java
  9. 6
      mt/src/main/java/com/ccsens/mt/bean/vo/VideoVo.java
  10. 2
      mt/src/main/java/com/ccsens/mt/service/CompeteService.java
  11. 222
      mt/src/main/java/com/ccsens/mt/service/DepartmentService.java
  12. 7
      mt/src/main/java/com/ccsens/mt/service/IDepartmentService.java
  13. 4
      mt/src/main/java/com/ccsens/mt/service/LevelUpService.java
  14. 87
      mt/src/main/java/com/ccsens/mt/service/ScoreService.java
  15. 8
      mt/src/main/java/com/ccsens/mt/service/VideoService.java
  16. 4
      mt/src/main/resources/application.yml
  17. 81
      mt/src/main/resources/mapper_dao/CompeteTeamDao.xml
  18. 19
      tall/src/main/java/com/ccsens/tall/bean/dto/PluginDto.java
  19. 11
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  20. 3
      tall/src/main/java/com/ccsens/tall/bean/dto/UserDto.java
  21. 11
      tall/src/main/java/com/ccsens/tall/bean/po/ProRole.java
  22. 60
      tall/src/main/java/com/ccsens/tall/bean/po/ProRoleExample.java
  23. 11
      tall/src/main/java/com/ccsens/tall/bean/po/ProTaskDetail.java
  24. 60
      tall/src/main/java/com/ccsens/tall/bean/po/ProTaskDetailExample.java
  25. 2
      tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java
  26. 46
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  27. 3
      tall/src/main/java/com/ccsens/tall/persist/dao/SysPluginDao.java
  28. 13
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java
  29. 3
      tall/src/main/java/com/ccsens/tall/persist/mapper/ProRoleMapper.java
  30. 33
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  31. 9
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  32. 6
      tall/src/main/java/com/ccsens/tall/service/ITaskPluginService.java
  33. 3
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  34. 123
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  35. 67
      tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java
  36. 20
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  37. 22
      tall/src/main/java/com/ccsens/tall/service/UserInfoService.java
  38. 10
      tall/src/main/java/com/ccsens/tall/web/PluginController.java
  39. 2
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  40. 8
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  41. 4
      tall/src/main/resources/application.yml
  42. 6
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  43. 14
      tall/src/main/resources/mapper_dao/SysPluginDao.xml
  44. 62
      tall/src/main/resources/mapper_dao/TaskDetailDao.xml
  45. 30
      tall/src/main/resources/mapper_raw/ProRoleMapper.xml
  46. 29
      tall/src/main/resources/mapper_raw/ProTaskDetailMapper.xml
  47. 9
      util/src/main/java/com/ccsens/util/PoiUtil.java
  48. 3
      util/src/main/java/com/ccsens/util/WebConstant.java
  49. 8
      util/src/main/java/com/ccsens/util/cron/CronConstant.java
  50. 24
      util/src/test/java/com/ccsens/util/Base64Test.java
  51. 6
      util/src/test/java/com/ccsens/util/TestQrCord.java

14
mt/src/main/java/com/ccsens/mt/api/CompeteController.java

@ -132,21 +132,13 @@ public class CompeteController {
return JsonResponse.newInstance().ok(competeTeamProject);
}
@MustLogin
@ApiOperation(value = "查询比赛项目上的参赛选手列表", notes = "")
@RequestMapping(value = "/get/players", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.QueryPlayerList> queryPlayerList(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProjectId> params) {
log.info("查询比赛项目上的参赛选手列表:{}",params);
CompeteVo.QueryPlayerList playerList = competeService.queryPlayerList(params);
return JsonResponse.newInstance().ok(playerList);
}
// @MustLogin
// @ApiOperation(value = "查询比赛项目上的参赛选手列表", notes = "")
// @RequestMapping(value = "/get/players", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
// public JsonResponse<CompeteVo.QueryPlayerList> getPlayerList(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteTimeAndType> params) {
// log.info("扫码加入团队:{}",params);
// public JsonResponse<CompeteVo.QueryPlayerList> queryPlayerList(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProjectId> params) {
// log.info("查询比赛项目上的参赛选手列表:{}",params);
// CompeteVo.QueryPlayerList playerList = competeService.queryPlayerList(params);
// return JsonResponse.newInstance().ok(playerList);
// }
}

51
mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java

@ -0,0 +1,51 @@
package com.ccsens.mt.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.service.ICompeteService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author
*/
@Slf4j
@Api(tags = "线上体育竞技比赛", description = "")
@RestController
@RequestMapping("/compete")
public class CompeteScoreController {
@Resource
private ICompeteService competeService;
@MustLogin
@ApiOperation(value = "查询比赛项目上的参赛选手列表", notes = "")
@RequestMapping(value = "/get/playerList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.QueryPlayerList> queryPlayerList(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProjectId> params) {
log.info("查询比赛项目上的参赛选手列表:{}",params);
CompeteVo.QueryPlayerList playerList = competeService.queryPlayerList(params);
return JsonResponse.newInstance().ok(playerList);
}
// @MustLogin
// @ApiOperation(value = "查看单个选手的信息和分数", notes = "")
// @RequestMapping(value = "/get/player", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
// public JsonResponse<CompeteVo.QueryPlayerList> getPlayerInfo(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProjectId> params) {
// log.info("查询比赛项目上的参赛选手列表:{}",params);
// CompeteVo.QueryPlayerList playerList = competeService.queryPlayerList(params);
// return JsonResponse.newInstance().ok(playerList);
// }
}

9
mt/src/main/java/com/ccsens/mt/api/DepartmentController.java

@ -65,4 +65,13 @@ public class DepartmentController {
CompeteVo.DepartmentInfo department = departmentService.getDepartment(params);
return JsonResponse.newInstance().ok(department);
}
@ApiOperation(value = "导出excel表格", notes = "")
@RequestMapping(value = "/export/excel", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.DepartmentInfo> exportExcel(@ApiParam @Validated @RequestBody CompeteDto.CompeteType params) {
log.info("导出excel表格:{}",params);
String excelPath = departmentService.exportExcel(params);
return JsonResponse.newInstance().ok(excelPath);
}
}

1
mt/src/main/java/com/ccsens/mt/api/ScoreController.java

@ -33,7 +33,6 @@ public class ScoreController {
})
@RequestMapping(value = "/score", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<ScoreVo.ScoreInfo>> getScoreLog(HttpServletRequest request,
@RequestParam Long roleId,
@RequestParam(required = true) Long taskId) throws Exception {
//获取userId
Long userId = userService.getUserIdByToken(request);

4
mt/src/main/java/com/ccsens/mt/api/VideoController.java

@ -44,10 +44,10 @@ public class VideoController {
}
@MustLogin
@ApiOperation(value = "上传视频信息", notes = "")
@ApiOperation(value = "上传视频信息", notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "/get", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<VideoVo.GetVideoInfo>> uploadVideo(@RequestBody @ApiParam @Validated QueryDto<VideoDto.UploadVideo> params) {
log.info("查看选手上传的视频信息:{}",params.toString());
List<VideoVo.GetVideoInfo> getVideoInfoList = videoService.uploadVideo(params);

5
mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java

@ -39,6 +39,8 @@ public class CompeteDto {
@ApiModelProperty("比赛项目id(二级的)")
private Long competeProjectId;
}
@Data
@ApiModel
public static class CompeteProjectPlayer{
@ -162,9 +164,6 @@ public class CompeteDto {
@Data
@ApiModel("获取院系提交的报名信息")
public static class GetDepartmentInfo{
// @NotNull(message="请选择院系信息")
// @ApiModelProperty("院系id")
// private Long id;
@NotNull
@ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛")
private int type;

2
mt/src/main/java/com/ccsens/mt/bean/dto/VideoDto.java

@ -36,5 +36,7 @@ public class VideoDto {
private Long playerId;
@ApiModelProperty("视频文件id")
private Long videoFileId;
@ApiModelProperty("视频文件浏览路径")
private String videoFileUrl;
}
}

13
mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
@ -324,9 +325,13 @@ public class CompeteVo {
private String companyName;
@ApiModelProperty("是否通级 0否 1是")
private byte certificate;
@ApiModelProperty("录播视频信息")
private List<VideoVo.GetVideoInfo> videoInfoList;
@ApiModelProperty("分数")
private BigDecimal score;
}
@Data
@ApiModel("比赛项目下的个人信息")
@ApiModel("比赛项目下团队信息")
public static class TeamInfoByProject{
@ApiModelProperty("团队表Id")
private Long teamId;
@ -340,5 +345,11 @@ public class CompeteVo {
private int memberNums;
@ApiModelProperty("团队内的成员")
private List<CompeteTeamProjectMember> members;
@ApiModelProperty("录播视频信息")
private List<VideoVo.GetVideoInfo> videoInfoList;
@ApiModelProperty("分数")
private BigDecimal score;
}
}

6
mt/src/main/java/com/ccsens/mt/bean/vo/VideoVo.java

@ -16,9 +16,11 @@ public class VideoVo {
private Long videoId;
@ApiModelProperty("文件id")
private Long fileId;
// @ApiModelProperty("视频地址")
// private String videoUrl;
@ApiModelProperty("视频地址")
private String videoUrl;
@ApiModelProperty("上传时间")
private Long uploadTime;
}
}

2
mt/src/main/java/com/ccsens/mt/service/CompeteService.java

@ -292,7 +292,7 @@ public class CompeteService implements ICompeteService{
*/
@Override
public String getQrCodeByTeamId(QueryDto<CompeteDto.CompeteProjectPlayer> params) {
return competeTeamDao.getQrCodeByTeamId(params.getParam().getProjectPlayerId());
return PropUtil.imgDomain + competeTeamDao.getQrCodeByTeamId(params.getParam().getProjectPlayerId());
}
/**

222
mt/src/main/java/com/ccsens/mt/service/DepartmentService.java

@ -1,8 +1,10 @@
package com.ccsens.mt.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.po.*;
import com.ccsens.mt.bean.vo.CompeteVo;
@ -10,16 +12,20 @@ import com.ccsens.mt.persist.dao.CompetePlayerDao;
import com.ccsens.mt.persist.dao.CompeteTeamDao;
import com.ccsens.mt.persist.dao.CompeteTimeDao;
import com.ccsens.mt.persist.mapper.*;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.StringUtil;
import com.ccsens.util.*;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@ -220,12 +226,12 @@ public class DepartmentService implements IDepartmentService{
project.getSecondProjects().forEach(secondProject -> {
if (secondProject.getTeam() == 0) {
//不是团队比赛
secondProject.setManName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setWomanName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setManName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setWomanName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setMixedName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 2));
} else {
secondProject.setManName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setWomanName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setManName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setWomanName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setMixedName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 2));
}
});
@ -236,4 +242,208 @@ public class DepartmentService implements IDepartmentService{
}
return departmentInfo;
}
/**
* 导出报名信息表
*/
@Override
public String exportExcel(CompeteDto.CompeteType competeType) {
// CompeteDto.CompeteType competeType = params.getParam();
Workbook wb = new XSSFWorkbook();
String path = null;
//查找所有院系信息
CompeteCompanyExample companyExample = new CompeteCompanyExample();
companyExample.createCriteria().andTypeEqualTo((byte) competeType.getType());
List<CompeteCompany> companyList = competeCompanyMapper.selectByExample(companyExample);
log.info("查询所有院系:{}",companyList);
if(CollectionUtil.isNotEmpty(companyList)){
for(CompeteCompany company : companyList) {
CompeteVo.DepartmentInfo departmentInfo = getDepartmentInfo(company.getId(), competeType.getType());
log.info("查询院系的报名详细信息:{}", departmentInfo);
if (ObjectUtil.isNotNull(departmentInfo)) {
//生成写入的数据
List<List<PoiUtil.PoiUtilCell>> list = generatePoiUtilCell(departmentInfo);
//写入excel
try {
path = writeExcel(wb, departmentInfo.getName(), list);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return path;
}
private List<List<PoiUtil.PoiUtilCell>> generatePoiUtilCell(CompeteVo.DepartmentInfo departmentInfo) {
List<List<PoiUtil.PoiUtilCell>> list = new ArrayList<>();
//标题
List<PoiUtil.PoiUtilCell> title = new ArrayList<>();
title.add(new PoiUtil.PoiUtilCell(departmentInfo.getName(),3,1));
list.add(title);
//表头
List<PoiUtil.PoiUtilCell> header = new ArrayList<>();
header.add(new PoiUtil.PoiUtilCell("比赛项目"));
header.add(new PoiUtil.PoiUtilCell("分组"));
header.add(new PoiUtil.PoiUtilCell("参赛人员"));
list.add(header);
if(CollectionUtil.isNotEmpty(departmentInfo.getDepartmentProjects())){
departmentInfo.getDepartmentProjects().forEach(departmentProject -> {
if(CollectionUtil.isNotEmpty(departmentProject.getSecondProjects())){
for (int i = 0; i < departmentProject.getSecondProjects().size(); i++) {
int secondRows = 0;
CompeteVo.DepartmentSecondProject secondProject = departmentProject.getSecondProjects().get(i);
List<PoiUtil.PoiUtilCell> project = new ArrayList<>();
project.add(new PoiUtil.PoiUtilCell(departmentProject.getParentProjectName()+":"+secondProject.getCompeteProjectName()));
list.add(project);
if(secondProject.getTeam() == 0){
if(ObjectUtil.isNotNull(secondProject.getManName())) {
secondRows++;
project.add(new PoiUtil.PoiUtilCell("男子组"));
project.add(new PoiUtil.PoiUtilCell(secondProject.getManName()));
if(ObjectUtil.isNotNull(secondProject.getWomanName())) {
secondRows++;
List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
group.add(new PoiUtil.PoiUtilCell());
group.add(new PoiUtil.PoiUtilCell("女子组"));
group.add(new PoiUtil.PoiUtilCell(secondProject.getWomanName()));
list.add(group);
}
if(ObjectUtil.isNotNull(secondProject.getMixedName())) {
secondRows++;
List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
group.add(new PoiUtil.PoiUtilCell());
group.add(new PoiUtil.PoiUtilCell("男女混合组"));
group.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
list.add(group);
}
}else if(ObjectUtil.isNotNull(secondProject.getWomanName())){
secondRows++;
project.add(new PoiUtil.PoiUtilCell("女子组"));
project.add(new PoiUtil.PoiUtilCell(secondProject.getWomanName()));
if(ObjectUtil.isNotNull(secondProject.getMixedName())) {
secondRows++;
List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
group.add(new PoiUtil.PoiUtilCell());
group.add(new PoiUtil.PoiUtilCell("男女混合组"));
group.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
list.add(group);
}
}else if(ObjectUtil.isNotNull(secondProject.getMixedName())){
secondRows++;
project.add(new PoiUtil.PoiUtilCell("男女混合组"));
project.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
}
}else {
secondRows++;
project.add(new PoiUtil.PoiUtilCell());
String playerNames = secondProject.getManName() == null ? "" : secondProject.getManName();
if(StrUtil.isNotEmpty(playerNames) && StrUtil.isNotEmpty(secondProject.getWomanName())){
playerNames += "、" + secondProject.getWomanName();
}else {
playerNames += secondProject.getWomanName() == null ? "" : secondProject.getWomanName();
}
if(StrUtil.isNotEmpty(playerNames) && StrUtil.isNotEmpty(secondProject.getMixedName())){
playerNames += "、" + secondProject.getMixedName();
}else {
playerNames += secondProject.getMixedName() == null ? "" : secondProject.getMixedName();
}
project.add(new PoiUtil.PoiUtilCell(playerNames));
}
// if(ObjectUtil.isNotNull(secondProject.getManName())) {
// secondRows++;
// project.add(new PoiUtil.PoiUtilCell("男子组"));
// project.add(new PoiUtil.PoiUtilCell(secondProject.getManName()));
// if(ObjectUtil.isNotNull(secondProject.getWomanName())) {
// secondRows++;
// List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
// group.add(new PoiUtil.PoiUtilCell());
// group.add(new PoiUtil.PoiUtilCell("女子组"));
// group.add(new PoiUtil.PoiUtilCell(secondProject.getWomanName()));
// list.add(group);
// }
// if(ObjectUtil.isNotNull(secondProject.getMixedName())) {
// secondRows++;
// List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
// group.add(new PoiUtil.PoiUtilCell());
// group.add(new PoiUtil.PoiUtilCell("男女混合组"));
// group.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
// list.add(group);
// }
// }else if(ObjectUtil.isNotNull(secondProject.getWomanName())){
// secondRows++;
// project.add(new PoiUtil.PoiUtilCell("女子组"));
// project.add(new PoiUtil.PoiUtilCell(secondProject.getWomanName()));
// if(ObjectUtil.isNotNull(secondProject.getMixedName())) {
// secondRows++;
// List<PoiUtil.PoiUtilCell> group = new ArrayList<>();
// group.add(new PoiUtil.PoiUtilCell());
// group.add(new PoiUtil.PoiUtilCell("男女混合组"));
// group.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
// list.add(group);
// }
// }else if(ObjectUtil.isNotNull(secondProject.getMixedName())){
// secondRows++;
// project.add(new PoiUtil.PoiUtilCell("男女混合组"));
// project.add(new PoiUtil.PoiUtilCell(secondProject.getMixedName()));
// }
PoiUtil.PoiUtilCell poiUtilCell = project.get(0);
poiUtilCell.setRowspan(secondRows);
}
}
});
}
List<PoiUtil.PoiUtilCell> blank = new ArrayList<>();
blank.add(new PoiUtil.PoiUtilCell("",3,1));
list.add(blank);
//领队裁判等信息
if(CollectionUtil.isNotEmpty(departmentInfo.getDepartmentRoles())){
List<PoiUtil.PoiUtilCell> role1 = new ArrayList<>();
List<PoiUtil.PoiUtilCell> role2 = new ArrayList<>();
List<PoiUtil.PoiUtilCell> role3 = new ArrayList<>();
departmentInfo.getDepartmentRoles().forEach(departmentRole -> {
if(departmentRole.getRole() == 0){
role1.add(new PoiUtil.PoiUtilCell("领队",1,1,666,28));
role1.add(new PoiUtil.PoiUtilCell("姓名:" + departmentRole.getName()));
role1.add(new PoiUtil.PoiUtilCell("手机号:" + departmentRole.getPhone(),1,1,666,42));
}
if(departmentRole.getRole() == 1){
role2.add(new PoiUtil.PoiUtilCell("裁判",1,1,666,28));
role2.add(new PoiUtil.PoiUtilCell("姓名:" + departmentRole.getName()));
role2.add(new PoiUtil.PoiUtilCell("手机号:" + departmentRole.getPhone(),1,1,666,42));
}
if(departmentRole.getRole() == 2){
role3.add(new PoiUtil.PoiUtilCell("填表人",1,1,666,28));
role3.add(new PoiUtil.PoiUtilCell("姓名:" + departmentRole.getName()));
role3.add(new PoiUtil.PoiUtilCell("手机号:" + departmentRole.getPhone(),1,1,666,42));
}
});
list.add(role1);
list.add(role2);
list.add(role3);
}
return list;
}
private String writeExcel(Workbook wb,String sheetName, List<List<PoiUtil.PoiUtilCell>> list) throws Exception {
PoiUtil.exportWB(sheetName, list, wb);
//生成文件
String fileName = "department/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx";
String path = PropUtil.path + File.separator + fileName;
File tmpFile = new File(path);
if (!tmpFile.getParentFile().exists()) {
boolean mkdirs = tmpFile.getParentFile().mkdirs();
}
OutputStream stream = new FileOutputStream(tmpFile);
wb.write(stream);
stream.close();
return PropUtil.imgDomain + fileName;
}
}

7
mt/src/main/java/com/ccsens/mt/service/IDepartmentService.java

@ -38,4 +38,11 @@ public interface IDepartmentService {
* @return 返回报名信息
*/
CompeteVo.DepartmentInfo getDepartment(QueryDto<CompeteDto.GetDepartmentInfo> params);
/**
* 导出报名信息表
* @param params
* @return
*/
String exportExcel(CompeteDto.CompeteType params);
}

4
mt/src/main/java/com/ccsens/mt/service/LevelUpService.java

@ -3,6 +3,7 @@ package com.ccsens.mt.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.mt.bean.dto.LevelDto;
import com.ccsens.mt.bean.po.*;
import com.ccsens.mt.bean.vo.LevelVo;
@ -73,6 +74,7 @@ public class LevelUpService implements ILevelUpService{
log.info("查找到的用户的选手信息:{}",levelUserList);
levelUser = levelUserList.get(0);
}
if(ObjectUtil.isNotNull(levelUser)) {
//添加晋级表
LevelUpExample levelUpExample = new LevelUpExample();
levelUpExample.createCriteria().andLevelUserIdEqualTo(levelUser.getId()).andCompeteCodeEqualTo(levelUpDto.getCompeteCode());
@ -86,7 +88,7 @@ public class LevelUpService implements ILevelUpService{
String key = Constant.Redis.COMPETE_LEVEL + levelUpDto.getCompeteTimeId() + "_" + levelUpDto.getCompeteCode();
redisUtil.zsSet(key, levelUser, 0, 3600 * 24 * 300);
}
}
}
/**

87
mt/src/main/java/com/ccsens/mt/service/ScoreService.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.SecureUtil;
import com.ccsens.cloudutil.bean.tall.vo.MemberVo;
@ -22,7 +23,6 @@ import com.ccsens.util.ExcelUtil;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant;
import com.ccsens.util.exception.BaseException;
import lombok.Data;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -33,34 +33,37 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
import static java.math.BigDecimal.ROUND_HALF_UP;
/**
* @author
*/
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ScoreService implements IScoreService {
@Autowired
@Resource
private TallFeignClient tallFeignClient;
@Autowired
@Resource
private MtScoreDao scoreDao;
@Autowired
@Resource
private MtScoreLogDao scoreLogDao;
@Autowired
@Resource
private MtJudgeDao judgeDao;
@Autowired
@Resource
private IMessageService messageService;
@Autowired
@Resource
private Snowflake snowflake;
/**
* 获取评分项
*
* @param userId
* @param playerId
* @return
* @param userId 用户id
* @param playerId 被评分的任务或人
* @return 返回评分信息
*/
@Override
public List<ScoreVo.ScoreInfo> getScoreLog(Long userId, Long playerId) {
@ -85,7 +88,7 @@ public class ScoreService implements IScoreService {
scoreLogExample.createCriteria().andProjectIdEqualTo(taskInfo.getProjectId());
List<MtScoreLog> scoreLogList = scoreLogDao.selectByExample(scoreLogExample);
if (CollectionUtil.isNotEmpty(scoreLogList)) {
ScoreVo.ScoreInfo scoreInfo = null;
ScoreVo.ScoreInfo scoreInfo;
for (MtScoreLog mtScoreLog : scoreLogList) {
scoreInfo = new ScoreVo.ScoreInfo();
scoreInfo.setId(mtScoreLog.getId());
@ -112,8 +115,8 @@ public class ScoreService implements IScoreService {
/**
* 提交评分
*
* @param userId
* @param submitScore
* @param userId 用户id
* @param submitScore 提交的评分信息
*/
@Override
public void submitScore(Long userId, ScoreDto.SubmitScore submitScore) {
@ -171,8 +174,8 @@ public class ScoreService implements IScoreService {
/**
* 提交单项评分
*
* @param userId
* @param submitOnlyOneScore
* @param userId 用户id
* @param submitOnlyOneScore 提交的单项评分信息
*/
@Override
public void submitOnlyOneScore(Long userId, ScoreDto.SubmitOnlyOneScore submitOnlyOneScore) {
@ -216,16 +219,16 @@ public class ScoreService implements IScoreService {
/**
* 查看评分
*
* @param userId
* @param roleId
* @param playerId
* @return
* @param userId 用户id
* @param roleId 角色id
* @param playerId 查看的任务或人
* @return 返回评分信息
*/
@Override
public ScoreVo.AdminScore adminScore(Long userId, Long roleId, Long playerId) {
ScoreVo.AdminScore adminScore = new ScoreVo.AdminScore();
List<ScoreVo._adminScoreList> judgeScoreList = new ArrayList<>();
ScoreVo._adminScoreList judgeScore = new ScoreVo._adminScoreList();
ScoreVo._adminScoreList judgeScore;
// Score scoreMax = scoreDao.maxScore(playerId);//最高分
// Score scoreMin = scoreDao.minScore(playerId);//最低分
TaskVo.TaskInfoWithFeign taskInfo = tallFeignClient.getProjectId(playerId);
@ -291,7 +294,7 @@ public class ScoreService implements IScoreService {
}
//查找每个任务的分数
List<ScoreVo.RankingScore> rankingScoreList = new ArrayList<>();
ScoreVo.RankingScore rankingScore = null;
ScoreVo.RankingScore rankingScore;
if (CollectionUtil.isNotEmpty(taskIdList)) {
for (Long taskId : taskIdList) {
rankingScore = new ScoreVo.RankingScore();
@ -340,7 +343,7 @@ public class ScoreService implements IScoreService {
*/
private List<ScoreVo.JudgeScore> findJudgeScore(Long projectId, Long taskId) {
List<ScoreVo.JudgeScore> judgeScoreList = new ArrayList<>();
ScoreVo.JudgeScore judgeScore = null;
ScoreVo.JudgeScore judgeScore;
//查找项目下所有评委
MtJudgeExample judgeExample = new MtJudgeExample();
judgeExample.createCriteria().andProjectIdEqualTo(projectId);
@ -368,7 +371,7 @@ public class ScoreService implements IScoreService {
public void showScore(Long projectId, Long taskId) throws Exception {
SyncMessageWithShowDto scoreShow = new SyncMessageWithShowDto();
SyncMessageWithShowDto.Data data = new SyncMessageWithShowDto.Data();
SyncMessageWithShowDto.Data.Judge judge = null;
SyncMessageWithShowDto.Data.Judge judge;
List<SyncMessageWithShowDto.Data.Judge> judgeList = new ArrayList<>();
//项目
@ -462,14 +465,12 @@ public class ScoreService implements IScoreService {
/**
* 导出签字表
*
* @param projectId
* @param taskId
* @return
* @param projectId 项目id
* @param taskId 任务id
* @return 返回签字表路径
*/
@Override
public String exportExcel(Long projectId, Long taskId) throws Exception {
//返回excel地址
String excelPath = "";
//获取模板
ResourceLoader resourceLoader = new DefaultResourceLoader();
InputStream is = resourceLoader.getResource("classpath:template/judgeTemplate.xlsx").getInputStream();
@ -504,19 +505,17 @@ public class ScoreService implements IScoreService {
excel.write(stream);
//关闭流
stream.close();
String rePath = WebConstant.TEST_URL_BASE_MT + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE + File.separator + extraPath + File.separator + path + ".xlsx";
return rePath;
return WebConstant.TEST_URL_BASE_MT + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE + File.separator + extraPath + File.separator + path + ".xlsx";
}
/**
* 写入excel
*
* @param taskInfo
* @param judge
* @throws Exception
* @param taskInfo 任务和项目信息
* @param judge 评委信息
*/
public void writeExcel(TaskVo.TaskInfoWithFeign taskInfo, MtJudge judge, XSSFSheet judgeSheet) throws Exception {
XSSFCell industry = judgeSheet.getRow(5).getCell(3);
public void writeExcel(TaskVo.TaskInfoWithFeign taskInfo, MtJudge judge, XSSFSheet judgeSheet){
// XSSFCell industry = judgeSheet.getRow(5).getCell(3);
//项目名
XSSFCell projectName = judgeSheet.getRow(5).getCell(5);
projectName.setCellValue(taskInfo.getProjectName());
@ -547,9 +546,8 @@ public class ScoreService implements IScoreService {
/**
* 导出排名表
* @param projectId
* @return
* @throws Exception
* @param projectId 项目id
* @return 返回排名表信息
*/
@Override
public String rankingExcel(Long projectId) throws Exception {
@ -572,7 +570,7 @@ public class ScoreService implements IScoreService {
}
}
//保存地址
String filePath = SecureUtil.simpleUUID();
String filePath = IdUtil.simpleUUID();
String dir = WebConstant.UPLOAD_PATH_BASE + File.separator + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE;
String extraPath = DateUtil.format(new Date(), "yyyyMMdd");
String ePath = dir + File.separator + extraPath + File.separator + filePath + ".xlsx";
@ -593,8 +591,8 @@ public class ScoreService implements IScoreService {
/**
* 获取总评分表
* @param projectId
* @return
* @param projectId 项目id
* @return 返回路径
*/
@Override
public String rankingAllExcel(Long projectId) throws Exception{
@ -644,7 +642,7 @@ public class ScoreService implements IScoreService {
}
//保存地址
String filePath = SecureUtil.simpleUUID();
String filePath = IdUtil.simpleUUID();
String dir = WebConstant.UPLOAD_PATH_BASE + File.separator + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE;
String extraPath = DateUtil.format(new Date(), "yyyyMMdd");
String ePath = dir + File.separator + extraPath + File.separator + filePath + ".xlsx";
@ -659,8 +657,7 @@ public class ScoreService implements IScoreService {
excel.write(stream);
//关闭流
stream.close();
String path = WebConstant.TEST_URL_BASE_MT + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE + File.separator + extraPath + File.separator + filePath + ".xlsx";
return path;
return WebConstant.TEST_URL_BASE_MT + WebConstant.UPLOAD_PATH_BASE_MT_JUDGE + File.separator + extraPath + File.separator + filePath + ".xlsx";
}
/*=====================================================*/

8
mt/src/main/java/com/ccsens/mt/service/VideoService.java

@ -9,6 +9,10 @@ import com.ccsens.mt.bean.po.CompeteVideoExample;
import com.ccsens.mt.bean.vo.VideoVo;
import com.ccsens.mt.persist.mapper.CompeteVideoMapper;
import com.ccsens.util.bean.dto.QueryDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
@ -17,6 +21,9 @@ import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class VideoService implements IVideoService{
@Resource
private Snowflake snowflake;
@ -64,6 +71,7 @@ public class VideoService implements IVideoService{
competeVideo.setTeam(uploadVideo.getTeam());
competeVideo.setPlayerId(uploadVideo.getPlayerId());
competeVideo.setFileId(uploadVideo.getVideoFileId());
competeVideo.setVideoUrl(uploadVideo.getVideoFileUrl());
competeVideo.setUploadUserId(params.getUserId());
competeVideo.setTime(System.currentTimeMillis());
competeVideoMapper.insertSelective(competeVideo);

4
mt/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

81
mt/src/main/resources/mapper_dao/CompeteTeamDao.xml

@ -16,18 +16,41 @@
</resultMap>
<resultMap id="getTeamByProjectId" type="com.ccsens.mt.bean.vo.CompeteVo$TeamInfoByProject">
<id column="teamId" jdbcType="BIGINT" property="teamId" />
<result column="creatorId" jdbcType="BIGINT" property="creatorId" />
<result column="creatorName" jdbcType="VARCHAR" property="creatorName" />
<result column="certificate" jdbcType="TINYINT" property="certificate" />
<result column="memberNums" jdbcType="INT" property="memberNums" />
<id column="teamId" property="teamId" />
<result column="creatorId" property="creatorId" />
<result column="creatorName" property="creatorName" />
<result column="certificate" property="certificate" />
<result column="memberNums" property="memberNums" />
<result column="score" property="score" />
<collection property="members" ofType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTeamProjectMember">
<id column="memberId" property="memberId"/>
<result column="memberName" property="memberName"/>
<result column="captain" property="captain"/>
</collection>
<collection property="videoInfoList" ofType="com.ccsens.mt.bean.vo.VideoVo$GetVideoInfo">
<id column="videoId" property="videoId"/>
<result column="fileId" property="fileId"/>
<result column="videoUrl" property="videoUrl"/>
<result column="uploadTime" property="uploadTime"/>
</collection>
</resultMap>
<resultMap id="getPlayerByProjectId" type="com.ccsens.mt.bean.vo.CompeteVo$PlayerInfoByProject">
<id column="playerId" property="playerId" />
<result column="name" property="name" />
<result column="gender" property="gender" />
<result column="phone" property="phone" />
<result column="groupId" property="groupId" />
<result column="groupName" property="groupName" />
<result column="companyName" property="companyName" />
<result column="certificate" property="certificate" />
<result column="score" property="score" />
<collection property="videoInfoList" ofType="com.ccsens.mt.bean.vo.VideoVo$GetVideoInfo">
<id column="videoId" property="videoId"/>
<result column="fileId" property="fileId"/>
<result column="videoUrl" property="videoUrl"/>
<result column="uploadTime" property="uploadTime"/>
</collection>
</resultMap>
<select id="countJoinTeam" resultType="java.lang.Long">
SELECT
@ -161,10 +184,28 @@
(SELECT count(id) FROM t_compete_team_member WHERE compete_team_id = t.id) as memberNums,
m.id as memberId,
p.`name` as memberName,
if(t.creator = p.id , true,false) as captain
if(t.creator = p.id , true,false) as captain,
t.score,
v.id as videoId,
v.file_id as fileId,
v.video_url as videoUrl,
v.time as uploadTime
FROM
t_compete_team t left join t_compete_team_member m on t.id = m.compete_team_id
LEFT JOIN t_compete_player p on m.player_id = p.id
LEFT JOIN t_compete_video v on v.player_id = t.id and v.rec_status = 0
LEFT JOIN
(
SELECT
s.task_id as teamId,
sum(s.score) as score
FROM
t_mt_score_log l LEFT JOIN t_mt_score s on l.id = s.score_log_id
WHERE
l.project_id = #{competeProjectId}
and l.rec_status = 0
and s.rec_status = 0
) t on t.teamId = t.id
WHERE
t.project_id = #{competeProjectId}
and t.compete_time_id = #{competeTimeId}
@ -172,7 +213,7 @@
and m.rec_status = 0
and p.rec_status = 0
</select>
<select id="getPlayerByProjectId" resultType="com.ccsens.mt.bean.vo.CompeteVo$PlayerInfoByProject">
<select id="getPlayerByProjectId" resultMap="getPlayerByProjectId">
SELECT
p.id as playerId,
p.`name`,
@ -181,12 +222,30 @@
p.compete_group_id as groupId,
(SELECT `group_name` FROM t_compete_group WHERE id = p.compete_group_id) as groupName,
(SELECT `name` FROM t_compete_company WHERE id = p.company_id) as companyName,
pp.certificate
pp.certificate,
t.score,
v.id as videoId,
v.file_id as fileId,
v.video_url as videoUrl,
v.time as uploadTime
FROM
t_compete_project_player pp left join t_compete_player p on pp.player_id = p.id
LEFT JOIN t_compete_video v on v.player_id = pp.id and v.rec_status = 0
LEFT JOIN
(
SELECT
s.task_id as playerId,
sum(s.score) as score
FROM
t_mt_score_log l LEFT JOIN t_mt_score s on l.id = s.score_log_id
WHERE
l.project_id = #{competeProjectId}
and l.rec_status = 0
and s.rec_status = 0
) t on t.playerId = pp.id
WHERE
pp.project_id = 9
and pp.compete_time_id = 1
pp.project_id = #{competeProjectId}
and pp.compete_time_id = #{competeTimeId}
and pp.rec_status = 0
and p.rec_status = 0
</select>

19
tall/src/main/java/com/ccsens/tall/bean/dto/PluginDto.java

@ -3,6 +3,7 @@ package com.ccsens.tall.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NonNull;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@ -75,4 +76,22 @@ public class PluginDto {
private byte type;
}
@Data
@ApiModel("修改插件配置")
public static class UpdatePluginConfig {
@NonNull
@ApiModelProperty("任务id")
private Long taskId;
@ApiModelProperty("任务插件id")
private Long taskPluginId;
@ApiModelProperty("页面接口路径")
private String webPath;
@ApiModelProperty("入参")
private String importParam;
@ApiModelProperty("放置位置 默认0 ,0任务名 1详情页 2任务下")
private Byte placeLocation;
@ApiModelProperty("程序位置 0:tall内部,1外部")
private Byte routineLocation;
}
}

11
tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java

@ -174,6 +174,8 @@ public class TaskDto {
private Long delayTime;
@ApiModelProperty("优先级 3,紧急重要 2,紧急不重要 1,重要不紧急 0,不重要不紧急 默认0")
private Byte priority;
@ApiModelProperty("是否是里程碑 0否 1是")
private Byte milestone;
@ApiModelProperty("交付物id和修改后的名字")
private List<UpdateTaskDeliverName> deliverList;
@ApiModelProperty("需要修改的插件Id")
@ -376,4 +378,13 @@ public class TaskDto {
private Integer pageSize = 10;
}
@Data
@ApiModel
public static class QueryAllTaskByProjectId {
@ApiModelProperty("项目Id")
private Long projectId;
@ApiModelProperty("角色id")
private Long roleId;
}
}

3
tall/src/main/java/com/ccsens/tall/bean/dto/UserDto.java

@ -175,6 +175,9 @@ public class UserDto {
@ApiModelProperty("账号")
@NotEmpty(message = "新账号不能为空.")
private String account;
@ApiModelProperty("密码,有账号登录信息则验证密码,没有则设为新密码")
@NotEmpty(message = "密码不能为空")
private String password;
}
@Data

11
tall/src/main/java/com/ccsens/tall/bean/po/ProRole.java

@ -22,6 +22,8 @@ public class ProRole implements Serializable {
private Byte recStatus;
private Long relevanceProjectId;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -96,6 +98,14 @@ public class ProRole implements Serializable {
this.recStatus = recStatus;
}
public Long getRelevanceProjectId() {
return relevanceProjectId;
}
public void setRelevanceProjectId(Long relevanceProjectId) {
this.relevanceProjectId = relevanceProjectId;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -111,6 +121,7 @@ public class ProRole implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", relevanceProjectId=").append(relevanceProjectId);
sb.append("]");
return sb.toString();
}

60
tall/src/main/java/com/ccsens/tall/bean/po/ProRoleExample.java

@ -664,6 +664,66 @@ public class ProRoleExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdIsNull() {
addCriterion("relevance_project_id is null");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdIsNotNull() {
addCriterion("relevance_project_id is not null");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdEqualTo(Long value) {
addCriterion("relevance_project_id =", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdNotEqualTo(Long value) {
addCriterion("relevance_project_id <>", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdGreaterThan(Long value) {
addCriterion("relevance_project_id >", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdGreaterThanOrEqualTo(Long value) {
addCriterion("relevance_project_id >=", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdLessThan(Long value) {
addCriterion("relevance_project_id <", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdLessThanOrEqualTo(Long value) {
addCriterion("relevance_project_id <=", value, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdIn(List<Long> values) {
addCriterion("relevance_project_id in", values, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdNotIn(List<Long> values) {
addCriterion("relevance_project_id not in", values, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdBetween(Long value1, Long value2) {
addCriterion("relevance_project_id between", value1, value2, "relevanceProjectId");
return (Criteria) this;
}
public Criteria andRelevanceProjectIdNotBetween(Long value1, Long value2) {
addCriterion("relevance_project_id not between", value1, value2, "relevanceProjectId");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

11
tall/src/main/java/com/ccsens/tall/bean/po/ProTaskDetail.java

@ -58,6 +58,8 @@ public class ProTaskDetail implements Serializable {
private Byte priority;
private Byte milestone;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -276,6 +278,14 @@ public class ProTaskDetail implements Serializable {
this.priority = priority;
}
public Byte getMilestone() {
return milestone;
}
public void setMilestone(Byte milestone) {
this.milestone = milestone;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -309,6 +319,7 @@ public class ProTaskDetail implements Serializable {
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", priority=").append(priority);
sb.append(", milestone=").append(milestone);
sb.append("]");
return sb.toString();
}

60
tall/src/main/java/com/ccsens/tall/bean/po/ProTaskDetailExample.java

@ -1774,6 +1774,66 @@ public class ProTaskDetailExample {
addCriterion("priority not between", value1, value2, "priority");
return (Criteria) this;
}
public Criteria andMilestoneIsNull() {
addCriterion("milestone is null");
return (Criteria) this;
}
public Criteria andMilestoneIsNotNull() {
addCriterion("milestone is not null");
return (Criteria) this;
}
public Criteria andMilestoneEqualTo(Byte value) {
addCriterion("milestone =", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneNotEqualTo(Byte value) {
addCriterion("milestone <>", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneGreaterThan(Byte value) {
addCriterion("milestone >", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneGreaterThanOrEqualTo(Byte value) {
addCriterion("milestone >=", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneLessThan(Byte value) {
addCriterion("milestone <", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneLessThanOrEqualTo(Byte value) {
addCriterion("milestone <=", value, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneIn(List<Byte> values) {
addCriterion("milestone in", values, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneNotIn(List<Byte> values) {
addCriterion("milestone not in", values, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneBetween(Byte value1, Byte value2) {
addCriterion("milestone between", value1, value2, "milestone");
return (Criteria) this;
}
public Criteria andMilestoneNotBetween(Byte value1, Byte value2) {
addCriterion("milestone not between", value1, value2, "milestone");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

2
tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java

@ -166,6 +166,8 @@ public class ProjectVo {
private boolean stakeholder;
@ApiModelProperty("该角色是否显示")
private Boolean isShow = true;
@ApiModelProperty("是否是项目虚拟的角色 0否 1是")
private byte projectRole = 0;
@ApiModelProperty("成员信息")
private List<ProMemberVo> members;
@JsonIgnore

46
tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java

@ -148,6 +148,8 @@ public class TaskVo {
private String importParam;
@ApiModelProperty("优先级 默认0 3,紧急重要 2,紧急不重要 1,重要不紧急 0,不重要不紧急")
private Byte priority;
@ApiModelProperty("是否是里程碑 0否 1是")
private Byte milestone;
@ApiModelProperty("提醒的信息")
private List<RemindInfo> remindInfoList;
public Long getDuration(){
@ -221,6 +223,12 @@ public class TaskVo {
private String description;
@ApiModelProperty("显示分类")
private String showType;
@ApiModelProperty("页面/接口路径")
private String webPath;
@ApiModelProperty("程序位置 0:tall内部,1外部")
private Byte routineLocation;
@ApiModelProperty("入参")
private String importParam;
@JsonIgnore
private Long roleId;
}
@ -434,4 +442,42 @@ public class TaskVo {
private String deliverPath;
}
}
@Data
@ApiModel("根据项目id查询所有任务信息")
public static class TaskListByProjectId{
@ApiModelProperty("任务详细信息id")
private Long detailId;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("详细描述")
private String description;
@ApiModelProperty("所属项目id")
private Long projectId;
@ApiModelProperty("所属项目名称")
private String projectName;
@ApiModelProperty("负责人Id")
private Long executorRole;
@ApiModelProperty("负责人名称")
private String executorRoleName;
@ApiModelProperty("交付物id")
private Long deliverId;
@ApiModelProperty("交付物名称")
private String deliverName;
@ApiModelProperty("开始时间")
private Long beginTime;
@ApiModelProperty("结束时间")
private Long endTime;
@ApiModelProperty("循环周期")
private String cycle;
@ApiModelProperty("奖惩")
private BigDecimal money;
@ApiModelProperty("优先级 默认0 3,紧急重要 2,紧急不重要 1,重要不紧急 0,不重要不紧急")
private Byte priority;
@ApiModelProperty("是否是里程碑 0否 1是")
private Byte milestone;
@ApiModelProperty("二级任务")
private List<TaskListByProjectId> secondTasks;
}
}

3
tall/src/main/java/com/ccsens/tall/persist/dao/SysPluginDao.java

@ -1,5 +1,6 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.bean.po.ProPluginConfig;
import com.ccsens.tall.bean.vo.PluginVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.bean.vo.WbsVo;
@ -20,4 +21,6 @@ public interface SysPluginDao extends SysPluginMapper{
void deleteByTaskId(@Param("taskId")Long taskId);
List<WbsVo.PluginInfo> getPluginNameAndTaskName(@Param("projectId")Long projectId);
ProPluginConfig getPluginConfigByTaskPluginId(@Param("taskPluginId")String taskPluginId);
}

13
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java

@ -40,4 +40,17 @@ public interface TaskDetailDao extends ProTaskDetailMapper {
List<ProTaskDetail> selectAllByProject(@Param("projectId")Long projectId);
List<WbsVo.ChecklistByProjectId> getChecklistsByProjectId(@Param("projectId")Long projectId,@Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId,@Param("startTime")Long startTime,@Param("endTime")Long endTime);
/**
* 通过任务id查看任务信息查看项目下所有任务时
* @param detailTaskId
* @return
*/
TaskVo.TaskListByProjectId getTaskById(@Param("detailTaskId")Long detailTaskId);
/**
* 通过任务id查看任务信息查看项目下所有任务时
* @param parentTaskId
* @return
*/
List<TaskVo.TaskListByProjectId> getTaskByParentId(@Param("parentTaskId")Long parentTaskId);
}

3
tall/src/main/java/com/ccsens/tall/persist/mapper/ProRoleMapper.java

@ -2,9 +2,8 @@ package com.ccsens.tall.persist.mapper;
import com.ccsens.tall.bean.po.ProRole;
import com.ccsens.tall.bean.po.ProRoleExample;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface ProRoleMapper {
long countByExample(ProRoleExample example);

33
tall/src/main/java/com/ccsens/tall/service/ExcelService.java

@ -17,9 +17,14 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import javax.annotation.Resource;
import java.io.FileInputStream;
@ -145,7 +150,6 @@ public class ExcelService implements IExcelService {
readProject(wbsSheet, projectInfoStart, projectInfoEnd, currentUserId, sysProject);
readMember(wbsSheet, memberSheet, memberStart, memberEnd, sysProject, proRoles, proMembers);
readTask(xssfWorkbook, wbsSheet, taskStart, taskEnd, currentUserId, sysProject, taskDetails, proRoles, proMembers, hasGroupMap);
saveProTaskSubTime(taskDetails);
//读取插件表
readPlugin(xssfWorkbook, taskDetails, proRoles, hasGroupMap);
//读取插件配置表
@ -156,6 +160,8 @@ public class ExcelService implements IExcelService {
wbsSubSheetService.getRoBotSheet(sysProject.getId(),xssfWorkbook);
//读取关联项目表
wbsSubSheetService.readRelevanceProject(sysProject.getId(),xssfWorkbook);
saveProTaskSubTime(taskDetails);
return sysProject;
}
@ -283,6 +289,7 @@ public class ExcelService implements IExcelService {
String proRoleCell = ExcelUtil.getCellValue(row.getCell(1));
String secondRoleCell = ExcelUtil.getCellValue(row.getCell(2));
String memberCell = ExcelUtil.getCellValue(row.getCell(3));
String roleRelevanceProjectId = ExcelUtil.getCellValue(row.getCell(3));
//添加一级角色
if (StrUtil.isNotEmpty(proRoleCell)) {
ProRole role = new ProRole();
@ -311,6 +318,9 @@ public class ExcelService implements IExcelService {
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)) {
role.setName(WebConstant.ROLE_NAME.Attention.value);
role.setDescription(WebConstant.ROLE_NAME.Attention.phase);
}else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ProjectVirtualRole.phase)) {
role.setName(WebConstant.ROLE_NAME.ProjectVirtualRole.value);
role.setDescription(WebConstant.ROLE_NAME.ProjectVirtualRole.phase);
} else {
throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName() + i));
}
@ -339,6 +349,19 @@ public class ExcelService implements IExcelService {
proRole.setParentId(firstRoleId);
proRole.setProjectId(sysProject.getId());
proRole.setId(snowflake.nextId());
//为虚拟项目角色添加关联的项目id
if (StrUtil.isEmpty(memberCell) && StrUtil.isNotEmpty(roleRelevanceProjectId)){
//查找关联的项目
try {
SysProject project = sysProjectDao.selectByPrimaryKey(Long.parseLong(roleRelevanceProjectId));
if(ObjectUtil.isNull(project)){
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName() + i));
}
proRole.setRelevanceProjectId(project.getId());
}catch (NumberFormatException e){
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName() + i));
}
}
proRoleService.saveProRole(proRole);
proRoles.add(proRole);
secondRoleId = proRole.getId();
@ -349,7 +372,7 @@ public class ExcelService implements IExcelService {
if (ObjectUtil.isNull(secondRoleId)) {
throw new BaseException("找不到二级角色[" + i + "]");
}
//添加角色成员关联信息
if (StrUtil.isNotEmpty(memberCell)) {
ProMemberRole memberRole = null;
for (ProMember member : proMembers) {
@ -364,7 +387,11 @@ public class ExcelService implements IExcelService {
if (ObjectUtil.isNull(memberRole)) {
throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName() + i));
}
}else if (StrUtil.isNotEmpty(roleRelevanceProjectId)) {
}
}
//角色对谁不可见
String[] excludeRoleCells;
@ -994,11 +1021,13 @@ public class ExcelService implements IExcelService {
return;
}
for (CronConstant.TaskDate taskDate : taskDateList) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
proTaskSubTime.setTaskDetailId(taskDetail.getId());
proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime());
proTaskSubTime.setEndTime(taskDate.getEndDate().getTime());
taskSubTimeService.saveProTaskSubTask(proTaskSubTime);
}
}

9
tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java

@ -1,5 +1,6 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.po.ProSubTimeMember;
import com.ccsens.tall.bean.po.ProTaskDetail;
@ -46,4 +47,12 @@ public interface IProTaskDetailService {
* @throws Exception 异常
*/
TaskVo.NormalTask updateTaskConfig(Long userId,TaskDto.UpdateTaskConfig updateTaskConfig) throws Exception;
/**
* 通过项目id查找所有任务
* @param currentUserId userId
* @param projectId 项目Id
* @return 返回所有任务
*/
List<TaskVo.TaskListByProjectId> queryAllTaskByProjectId(Long currentUserId, TaskDto.QueryAllTaskByProjectId projectId) throws Exception;
}

6
tall/src/main/java/com/ccsens/tall/service/ITaskPluginService.java

@ -61,4 +61,10 @@ public interface ITaskPluginService {
* @return 返回wps里的文件的路径
*/
List<PluginVo.MinutesInfo> updateMinutesProject(Long currentUserId, PluginDto.UpdateMinutes updateMinutes, String token) throws Exception;
/**
* 修改插件配置
* @param updatePluginConfig 插件配置
*/
void updatePluginConfig(PluginDto.UpdatePluginConfig updatePluginConfig);
}

3
tall/src/main/java/com/ccsens/tall/service/ProMemberService.java

@ -72,6 +72,9 @@ public class ProMemberService implements IProMemberService {
boolean flag = false;
//如果该角色是全体成员返回true
ProRole role = proRoleDao.selectByPrimaryKey(roleId);
if(ObjectUtil.isNull(role)){
return false;
}
if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)){
flag = true;
}

123
tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java

@ -6,6 +6,7 @@ import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.cloudutil.feign.MtFeignClient;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.MemberVo;
@ -106,7 +107,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
// obj = getTaskInfoByMvp(projectId, page, pageSize);
// } else
if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, taskInfoByRoleId.getRoleId(),
obj = getTaskInfoByProjectIdAndPm(currentUserId, projectId, taskInfoByRoleId.getRoleId(),
taskInfoByRoleId.getStartTime(), taskInfoByRoleId.getEndTime(), taskInfoByRoleId.getProcess(),
taskInfoByRoleId.getPage(), taskInfoByRoleId.getPageSize(),taskInfoByRoleId.getPriority(),taskInfoByRoleId.getImitation());
} else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) {
@ -142,7 +143,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
/**
* 查看任务 项目经理
*/
private TaskVo.ProTaskInfo getTaskInfoByProjectIdAndPM(Long currentUserId, Long projectId,Long roleId, Long startTime, Long endTime,
private TaskVo.ProTaskInfo getTaskInfoByProjectIdAndPm(Long currentUserId, Long projectId, Long roleId, Long startTime, Long endTime,
Integer process, Integer page, Integer pageSize, Integer priority, Integer imitation) throws Exception {
TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo();
@ -460,13 +461,19 @@ public class ProTaskDetailService implements IProTaskDetailService {
plugin.setName(pluginNames[i]);
plugin.setDescription(pluginDescription[i]);
plugin.setShowType(pluginShowType[i]);
//查找插件的配置信息
ProPluginConfig proPluginConfig = sysPluginDao.getPluginConfigByTaskPluginId(pluginIds[i]);
if(ObjectUtil.isNotNull(proPluginConfig)) {
plugin.setWebPath(proPluginConfig.getWebPath());
plugin.setRoutineLocation(proPluginConfig.getRoutineLocation());
plugin.setImportParam(proPluginConfig.getImportParam());
}
pluginVoList.add(plugin);
}
}
normalTask.setPlugins(pluginVoList);
}
}
}
/**
@ -566,7 +573,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
taskDetail.setProTaskConfig(getProTaskShow(taskDetail.getDetailId()));
//添加项目信息
normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail);
normalTaskAddPlugin(subTime.getTaskDetailId(), taskDetail);
List<TaskVo.NormalTask> groupTaskList = new ArrayList<>();
//提醒信息
@ -597,7 +604,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
//添加项目信息和插件信息
normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask);
normalTaskAddPlugin(groupTask.getDetailId(), groupTask);
//修改返回时子任务的名字(“任务名+(xx和XX)”)
if (detail.getAllMember() == 0) {
groupTask.setName(updateSubTaskName(groupTask.getDetailId(), groupTask.getName()));
@ -615,7 +622,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
return taskDetail;
}
private void normalTaskAddPlugin(Long userId, Long taskId, TaskVo.NormalTask normalTask) throws Exception {
private void normalTaskAddPlugin( Long taskId, TaskVo.NormalTask normalTask) {
ProTaskDetail task = taskDetailDao.selectByPrimaryKey(taskId);
//添加项目信息
SysProject project = sysProjectDao.selectByPrimaryKey(task.getProjectId());
@ -627,17 +634,13 @@ public class ProTaskDetailService implements IProTaskDetailService {
if (ObjectUtil.isNotNull(role)) {
normalTask.setExecutorRoleName(role.getName());
}
//添加插件
// List<TaskVo.PluginVo> pluginVoList = pluginService.getPluginByTask(task.getId(), userId);
// normalTask.setPlugins(new ArrayList<>());
// normalTask.getPlugins().addAll(pluginVoList);
}
/**
* 修改返回时子任务的名字 格式任务名+xx和XX
*/
private String updateSubTaskName(Long taskId, String taskName) {
String name = taskName + "(";
StringBuilder name = new StringBuilder(taskName + "(");
ProTaskMemberExample taskMemberExample = new ProTaskMemberExample();
taskMemberExample.createCriteria().andTaskDetailIdEqualTo(taskId);
List<ProTaskMember> taskMemberList = taskMemberDao.selectByExample(taskMemberExample);
@ -645,15 +648,15 @@ public class ProTaskDetailService implements IProTaskDetailService {
for (int i = 0; i < taskMemberList.size(); i++) {
ProMember member = proMemberDao.selectByPrimaryKey(taskMemberList.get(i).getMemberId());
if (ObjectUtil.isNotNull(member)) {
name += member.getNickname();
name.append(member.getNickname());
if (i != taskMemberList.size() - 1) {
name += "和";
name.append("和");
}
}
}
}
name = name + ")";
return name;
name.append(")");
return name.toString();
}
@ -719,13 +722,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
//关键词模糊搜索
if (StrUtil.isNotEmpty(key)) {
if (CollectionUtil.isNotEmpty(normalTaskList)) {
Iterator<TaskVo.NormalTask> it = normalTaskList.iterator();
while (it.hasNext()) {
TaskVo.NormalTask normalTask = it.next();
if (!normalTask.getName().contains(key)) {
it.remove();
}
}
normalTaskList.removeIf(normalTask -> !normalTask.getName().contains(key));
}
}
@ -1151,6 +1148,9 @@ public class ProTaskDetailService implements IProTaskDetailService {
(taskDetail.getDelay() == WebConstant.TASK_DELAY.DelayManual.value)){
taskDetail.setDelayTime(updateTaskInfo.getDelayTime());
}
if(ObjectUtil.isNotNull(updateTaskInfo.getMilestone())){
taskDetail.setMilestone(updateTaskInfo.getMilestone());
}
//时间
if(ObjectUtil.isNotNull(updateTaskInfo.getBeginTime()) ||
ObjectUtil.isNotNull(updateTaskInfo.getEndTime()) ||
@ -1422,4 +1422,83 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
return getTaskInfoByTaskId(userId,taskDetail.getProjectId(),updateTaskConfig.getTaskId(),null);
}
@Override
public List<TaskVo.TaskListByProjectId> queryAllTaskByProjectId(Long currentUserId, TaskDto.QueryAllTaskByProjectId projectIdDto) throws Exception {
List<TaskVo.TaskListByProjectId> taskList = new ArrayList<>();
// TaskVo.TaskListByProjectId firstTask;
//1、查找一级任务
SysProject project = sysProjectDao.selectByPrimaryKey(projectIdDto.getProjectId());
if (ObjectUtil.isNull(project)) {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample();
proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectIdDto.getProjectId()).andLevelEqualTo((byte) 1);
List<ProTaskDetail> firstTaskDetailList = taskDetailDao.selectByExample(proTaskDetailExample);
if (CollectionUtil.isNotEmpty(firstTaskDetailList)) {
firstTaskDetailList.forEach(firstTaskDetail -> {
TaskVo.TaskListByProjectId firstTask = taskDetailDao.getTaskById(firstTaskDetail.getId());
List<TaskVo.TaskListByProjectId> secondTaskList = taskDetailDao.getTaskByParentId(firstTaskDetail.getId());
firstTask.setSecondTasks(secondTaskList);
taskList.add(firstTask);
});
}
// int sequence = 1;
// for (ProTaskDetail firstTaskDetail : firstTaskDetailList) {
// TaskVo.TaskListByProjectId firstTask = new TaskVo.TaskListByProjectId();
// BeanUtil.copyProperties(firstTaskDetail, firstTask);
// normalTask.setDetailId(firstTaskDetail.getId());
// normalTask.setId(taskDeliverService.isTaskOrSubTime(firstTaskDetail.getId()));
// normalTask.setSequence(sequence);
// // 查询任务对应的配置
// ProPluginConfigExample configExample = new ProPluginConfigExample();
// configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte)0);
// List<ProPluginConfig> proPluginConfigs = proPluginConfigMapper.selectByExample(configExample);
// if (CollectionUtil.isNotEmpty(proPluginConfigs)) {
// ProPluginConfig config = proPluginConfigs.get(0);
// normalTask.setImportParam(config.getImportParam());
// normalTask.setRoutineLocation(config.getRoutineLocation());
// normalTask.setWebPath(config.getWebPath());
// }
// //一级任务配置
// normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId()));
//
// //一级任务完成状态
// ProSubTimeMember firstSubTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId());
// if (ObjectUtil.isNotNull(firstSubTimeMember)) {
// normalTask.setRealEndTime(firstSubTimeMember.getRealFinishTime());
// normalTask.setProcess(firstSubTimeMember.getComplatedStatus());
// }
// //查找一级任务下的二级任务
// List<TaskVo.NormalTask> secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectIdDto.getProjectId(), firstTaskDetail.getId(), project.getBeginTime(), project.getEndTime(),projectIdDto.getRoleId());
// if (CollectionUtil.isNotEmpty(secondNormalTaskList)) {
// for (TaskVo.NormalTask task : secondNormalTaskList) {
// //处理插件
// managePlugin(currentUserId,projectIdDto.getRoleId(),task,null);
// //二级任务完成状态
// if(task.getProcess() != 2) {
// ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId());
// if (ObjectUtil.isNotNull(subTimeMember)) {
// task.setRealEndTime(subTimeMember.getRealFinishTime());
// task.setProcess(subTimeMember.getComplatedStatus());
// }else if(task.getProcess() > 2){
// task.setRealEndTime((long) 0);
// task.setProcess(0);
// }
// }
// //二级任务配置
// task.setProTaskConfig(getProTaskShow(task.getDetailId()));
// //提醒信息
// task.setRemindInfoList(proRemindDao.queryRemindByTask(normalTask.getId()));
// }
// }
// normalTask.setSecondTasks(secondNormalTaskList);
// normalTaskList.add(normalTask);
// sequence++;
// }
// }
// return normalTaskList;
return taskList;
}
}

67
tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java

@ -19,6 +19,7 @@ import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.eclipse.jetty.util.log.Log;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@ -38,6 +39,8 @@ public class TaskPluginService implements ITaskPluginService{
@Resource
private TaskPluginDao taskPluginDao;
@Resource
private ProPluginConfigDao proPluginConfigDao;
@Resource
private TaskDetailDao taskDetailDao;
@Resource
private TaskSubTimeDao taskSubTimeDao;
@ -728,4 +731,68 @@ public class TaskPluginService implements ITaskPluginService{
});
}
}
/**
* 修改插件配置
* @param updatePluginConfig 插件配置
*/
@Override
public void updatePluginConfig(PluginDto.UpdatePluginConfig updatePluginConfig) {
//获取任务详情id
Long taskDetailId = updatePluginConfig.getTaskId();
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updatePluginConfig.getTaskId());
if(ObjectUtil.isNotNull(taskSubTime)){
taskDetailId = taskSubTime.getTaskDetailId();
}
//获取插件id
Long sysPluginId = 0L;
ProTaskPlugin taskPlugin = taskPluginDao.selectByPrimaryKey(updatePluginConfig.getTaskPluginId());
if(ObjectUtil.isNotNull(taskPlugin)){
sysPluginId = taskPlugin.getPluginId();
}
//查找原来的插件配置
ProPluginConfigExample proPluginConfigExample = new ProPluginConfigExample();
proPluginConfigExample.createCriteria().andTaskIdEqualTo(taskDetailId).andPluginIdEqualTo(sysPluginId);
List<ProPluginConfig> proPluginConfigList = proPluginConfigDao.selectByExample(proPluginConfigExample);
if(CollectionUtil.isNotEmpty(proPluginConfigList)){
ProPluginConfig pluginConfig = proPluginConfigList.get(0);
//有则修改
if(ObjectUtil.isNotNull(pluginConfig)){
if(StrUtil.isNotEmpty(updatePluginConfig.getWebPath())) {
pluginConfig.setWebPath(updatePluginConfig.getWebPath());
}
if(StrUtil.isNotEmpty(updatePluginConfig.getImportParam())) {
pluginConfig.setImportParam(updatePluginConfig.getImportParam());
}
if(ObjectUtil.isNotNull(updatePluginConfig.getPlaceLocation())) {
pluginConfig.setPlaceLocation(updatePluginConfig.getPlaceLocation());
}
if(ObjectUtil.isNotNull(updatePluginConfig.getRoutineLocation())) {
pluginConfig.setRoutineLocation(updatePluginConfig.getRoutineLocation());
}
proPluginConfigDao.updateByPrimaryKeySelective(pluginConfig);
}
} else {
//没有则添加
ProPluginConfig proPluginConfig = new ProPluginConfig();
proPluginConfig.setId(snowflake.nextId());
proPluginConfig.setTaskId(taskDetailId);
proPluginConfig.setPluginId(sysPluginId);
if(StrUtil.isNotEmpty(updatePluginConfig.getWebPath())) {
proPluginConfig.setWebPath(updatePluginConfig.getWebPath());
}
if(StrUtil.isNotEmpty(updatePluginConfig.getImportParam())) {
proPluginConfig.setImportParam(updatePluginConfig.getImportParam());
}
if(ObjectUtil.isNotNull(updatePluginConfig.getPlaceLocation())) {
proPluginConfig.setPlaceLocation(updatePluginConfig.getPlaceLocation());
}
if(ObjectUtil.isNotNull(updatePluginConfig.getRoutineLocation())) {
proPluginConfig.setRoutineLocation(updatePluginConfig.getRoutineLocation());
}
proPluginConfigDao.insertSelective(proPluginConfig);
}
}
}

20
tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java

@ -28,8 +28,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import javax.annotation.Resource;
import java.util.*;
@ -75,10 +79,26 @@ public class TaskSubTimeService implements ITaskSubTimeService {
private ProRemindDao proRemindDao;
@Autowired
private AmqpTemplate rabbitTemplate;
//定义事务对象
@Resource
private PlatformTransactionManager transactionManager;
@Override
public void saveProTaskSubTask(ProTaskSubTime proTaskSubTime) {
//开启手动事务
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// 事务隔离级别,开启新事务
def.setPropagationBehavior( TransactionDefinition.PROPAGATION_REQUIRES_NEW );
//获取事务状态,并开启事务,相当于transation.begin();
TransactionStatus status = transactionManager.getTransaction( def );
try{
// method();//执行方法
taskSubTimeDao.insertSelective(proTaskSubTime);
transactionManager.commit( status ); //提交事务
} catch(Exception e){
transactionManager.rollback(status);
}
}
/**

22
tall/src/main/java/com/ccsens/tall/service/UserInfoService.java

@ -27,6 +27,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.Part;
import java.io.File;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Date;
import java.util.List;
@ -76,9 +78,29 @@ public class UserInfoService implements IUserInfoService{
List<SysAuth> authList = sysAuthDao.selectByExample(authAccountExample);
if(CollectionUtil.isNotEmpty(authList)){
authList.forEach(sysAuth -> {
//验证密码
try {
if (!ShiroKit.authenticate(changeAccount.getPassword(), sysAuth.getCredential(), sysAuth.getSalt())) {
throw new BaseException(CodeEnum.PASSWORD_ERROR);
}
sysAuth.setIdentifier(changeAccount.getAccount());
sysAuthDao.updateByPrimaryKeySelective(sysAuth);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
});
}else {
//不存在则添加账号
SysAuth sysAuth = new SysAuth();
sysAuth.setId(snowflake.nextId());
sysAuth.setUserId(userId);
sysAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Account.value);
sysAuth.setIdentifier(changeAccount.getAccount());
sysAuth.setSalt(ShiroKit.getRandomSalt(6));
sysAuth.setCredential(ShiroKit.md5(changeAccount.getPassword(), sysAuth.getSalt()));
sysAuthDao.insertSelective(sysAuth);
}
//修改完删除redis
redisUtil.del(accountKey);

10
tall/src/main/java/com/ccsens/tall/web/PluginController.java

@ -181,4 +181,14 @@ public class PluginController {
List<PluginVo.MinutesInfo> wpsPath = taskPluginService.updateMinutesProject(currentUserId,updateMinutes,token);
return JsonResponse.newInstance().ok(wpsPath);
}
@ApiOperation(value = "修改插件配置信息", notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "/config", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updatePluginConfig(@ApiParam @Validated @RequestBody PluginDto.UpdatePluginConfig updatePluginConfig) throws Exception {
taskPluginService.updatePluginConfig(updatePluginConfig);
return JsonResponse.newInstance().ok();
}
}

2
tall/src/main/java/com/ccsens/tall/web/ProjectController.java

@ -146,7 +146,7 @@ public class ProjectController {
@ApiImplicitParam(name = "page", value = "页数", required = true, paramType = "query"),
@ApiImplicitParam(name = "priority", value = "优先级排序 0无 1倒叙(优先级高的在前) 2正序", required = true, paramType = "query")
})
@RequestMapping(value = "/{id}/tasks", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
@RequestMapping(value = "/{id}/tasks", method = {RequestMethod.POST}, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.ProTaskInfo> getTasksByRoleId(HttpServletRequest request,
@PathVariable("id") Long projectId,
@RequestBody TaskDto.QueryTaskInfoByRoleId taskInfoByRoleId) throws Exception{

8
tall/src/main/java/com/ccsens/tall/web/TaskController.java

@ -255,6 +255,14 @@ public class TaskController {
return JsonResponse.newInstance().ok(taskInfo);
}
@ApiOperation(value = "查找项目下的所有任务",notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.TaskListByProjectId>> queryAllTaskByProjectId(HttpServletRequest request,
@Validated @RequestBody TaskDto.QueryAllTaskByProjectId projectIdDto) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<TaskVo.TaskListByProjectId> taskInfoList = taskDetailService.queryAllTaskByProjectId(currentUserId,projectIdDto);
return JsonResponse.newInstance().ok(taskInfoList);
}
/**
* 通过任务id查询项目id

4
tall/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: test
include: util-test,common
active: dev
include: util-dev,common

6
tall/src/main/resources/mapper_dao/ProRoleDao.xml

@ -13,6 +13,7 @@
<id column="rId" property="id"/>
<result column="rName" property="name"/>
<result column="parentId" property="parentId"/>
<result column="projectRole" property="projectRole"/>
<collection property="members" ofType="com.ccsens.tall.bean.vo.ProjectVo$ProMemberVo">
<id column="mId" property="mId"/>
<result column="mName" property="mName"/>
@ -63,14 +64,15 @@
m.nickname as mName,
m.phone as mPhone,
m.user_id as mUserId,
m.stakeholder_id as stakeholderId
m.stakeholder_id as stakeholderId,
if((SELECT `name` FROM t_pro_role WHERE id = pr.parent_id) = 'ProjectVirtualRole',1,0) as projectRole
from
t_pro_role pr LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id
LEFT JOIN t_pro_member m ON mr.member_id = m.id
where
pr.project_id = #{projectId}
and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member')
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole')
AND
pr.name not IN ('全体成员','观众','MVP')
AND

14
tall/src/main/resources/mapper_dao/SysPluginDao.xml

@ -95,4 +95,18 @@
)t
GROUP BY t.taskId,t.roleId
</select>
<select id="getPluginConfigByTaskPluginId" parameterType="java.util.Map" resultType="com.ccsens.tall.bean.po.ProPluginConfig">
SELECT
pc.web_path as webPath,
pc.routine_location as routineLocation,
pc.import_param as importParam
FROM
t_pro_plugin_config pc LEFT JOIN t_pro_task_plugin tp on pc.plugin_id = tp.plugin_id
WHERE
tp.id = #{taskPluginId}
and pc.rec_status = 0
and tp.rec_status = 0
LIMIT 1
</select>
</mapper>

62
tall/src/main/resources/mapper_dao/TaskDetailDao.xml

@ -21,6 +21,7 @@
<result column="tProjectId" property="projectId" />
<result column="tDescription" property="description" />
<result column="tExecutorRole" property="executorRole" />
<result column="tExecutorRoleName" property="executorRoleName" />
<result column="tBeginTime" property="beginTime" />
<result column="tEndTime" property="endTime" />
<result column="tCycle" property="cycle" />
@ -37,6 +38,7 @@
<result column="routineLocation" property="routineLocation" />
<result column="importParam" property="importParam" />
<result column="priority" property="priority" />
<result column="milestone" property="milestone" />
<collection property="plugins" ofType="com.ccsens.tall.bean.vo.TaskVo$PluginVo">
<id column="pId" property="id"/>
<result column="pName" property="name"/>
@ -91,7 +93,8 @@
sp.description as spDescription,
sp.id as spid,
sp.show_type as spShowType,
d.priority as priority
d.priority as priority,
d.milestone as milestone
FROM
t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id
LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id
@ -175,7 +178,8 @@
p.id as p_id,
sp.description as spDescription,
sp.id as spid,
sp.show_type as spShowType
sp.show_type as spShowType,
d.milestone as milestone
FROM
t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id
LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id
@ -246,7 +250,8 @@
p.id as p_id,
sp.description as spDescription,
sp.id as spid,
sp.show_type as spShowType
sp.show_type as spShowType,
d.milestone as milestone
FROM
t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id
LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id
@ -301,7 +306,8 @@
p.id as p_id,
sp.description as spDescription,
sp.id as spid,
sp.show_type as spShowType
sp.show_type as spShowType,
d.milestone as milestone
FROM
t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id
LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id
@ -383,7 +389,8 @@
p.id as p_id,
sp.description as spDescription,
sp.id as spid,
sp.show_type as spShowType
sp.show_type as spShowType,
d.milestone as milestone
FROM
t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id
LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id
@ -511,5 +518,50 @@
s.end_time &gt; #{startTime}
</if>
</select>
<select id="getTaskById" resultType="com.ccsens.tall.bean.vo.TaskVo$TaskListByProjectId">
SELECT
t.id as detailId,
t.`name`,
t.description,
t.begin_time as beginTime,
t.end_time as endTime,
t.cycle as cycle,
t.money as money,
t.project_id as projectId,
(SELECT `name` FROM t_sys_project WHERE id = t.project_id) as projectName,
t.executor_role as executorRole,
(SELECT `name` FROM t_pro_role WHERE id = t.executor_role) as executorRoleName,
d.id as deliverId,
d.`name` as deliverName
FROM
t_pro_task_detail t
LEFT JOIN t_pro_task_deliver d on t.id = d.task_detail_id
WHERE
t.id = #{detailTaskId}
and t.rec_status = 0
limit 1
</select>
<select id="getTaskByParentId" resultType="com.ccsens.tall.bean.vo.TaskVo$TaskListByProjectId">
SELECT
t.id as detailId,
t.`name`,
t.description,
t.begin_time as beginTime,
t.end_time as endTime,
t.cycle as cycle,
t.money as money,
t.project_id as projectId,
(SELECT `name` FROM t_sys_project WHERE id = t.project_id) as projectName,
t.executor_role as executorRole,
(SELECT `name` FROM t_pro_role WHERE id = t.executor_role) as executorRoleName,
d.id as deliverId,
d.`name` as deliverName
FROM
t_pro_task_detail t
LEFT JOIN t_pro_task_deliver d on t.id = d.task_detail_id
WHERE
t.parent_id = #{parentTaskId}
and t.rec_status = 0
</select>
</mapper>

30
tall/src/main/resources/mapper_raw/ProRoleMapper.xml

@ -11,6 +11,7 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="relevance_project_id" jdbcType="BIGINT" property="relevanceProjectId" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -71,7 +72,8 @@
</where>
</sql>
<sql id="Base_Column_List">
id, project_id, parent_id, name, description, sequence, created_at, updated_at, rec_status
id, project_id, parent_id, name, description, sequence, created_at, updated_at, rec_status,
relevance_project_id
</sql>
<select id="selectByExample" parameterType="com.ccsens.tall.bean.po.ProRoleExample" resultMap="BaseResultMap">
select
@ -106,12 +108,12 @@
<insert id="insert" parameterType="com.ccsens.tall.bean.po.ProRole">
insert into t_pro_role (id, project_id, parent_id,
name, description, sequence,
created_at, updated_at, rec_status
)
created_at, updated_at, rec_status,
relevance_project_id)
values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT},
#{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{sequence,jdbcType=INTEGER},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT},
#{relevanceProjectId,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tall.bean.po.ProRole">
insert into t_pro_role
@ -143,6 +145,9 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="relevanceProjectId != null">
relevance_project_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -172,6 +177,9 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="relevanceProjectId != null">
#{relevanceProjectId,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.tall.bean.po.ProRoleExample" resultType="java.lang.Long">
@ -210,6 +218,9 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.relevanceProjectId != null">
relevance_project_id = #{record.relevanceProjectId,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -225,7 +236,8 @@
sequence = #{record.sequence,jdbcType=INTEGER},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
relevance_project_id = #{record.relevanceProjectId,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -257,6 +269,9 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="relevanceProjectId != null">
relevance_project_id = #{relevanceProjectId,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -269,7 +284,8 @@
sequence = #{sequence,jdbcType=INTEGER},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
relevance_project_id = #{relevanceProjectId,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

29
tall/src/main/resources/mapper_raw/ProTaskDetailMapper.xml

@ -29,6 +29,7 @@
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="priority" jdbcType="TINYINT" property="priority" />
<result column="milestone" jdbcType="TINYINT" property="milestone" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -92,7 +93,7 @@
id, project_id, name, description, begin_time, end_time, cycle, parent_id, sub_task,
sub_project_id, sub_project, executor_role, checker_role, money, delay, delay_time,
loop_to, loop_times, virtual, level, has_group, finish_need_all, all_member, created_at,
updated_at, rec_status, priority
updated_at, rec_status, priority, milestone
</sql>
<select id="selectByExample" parameterType="com.ccsens.tall.bean.po.ProTaskDetailExample" resultMap="BaseResultMap">
select
@ -133,8 +134,8 @@
delay_time, loop_to, loop_times,
virtual, level, has_group,
finish_need_all, all_member, created_at,
updated_at, rec_status, priority
)
updated_at, rec_status, priority,
milestone)
values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{description,jdbcType=VARCHAR}, #{beginTime,jdbcType=BIGINT}, #{endTime,jdbcType=BIGINT},
#{cycle,jdbcType=VARCHAR}, #{parentId,jdbcType=BIGINT}, #{subTask,jdbcType=VARCHAR},
@ -143,8 +144,8 @@
#{delayTime,jdbcType=BIGINT}, #{loopTo,jdbcType=BIGINT}, #{loopTimes,jdbcType=INTEGER},
#{virtual,jdbcType=TINYINT}, #{level,jdbcType=TINYINT}, #{hasGroup,jdbcType=TINYINT},
#{finishNeedAll,jdbcType=TINYINT}, #{allMember,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP},
#{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}, #{priority,jdbcType=TINYINT}
)
#{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}, #{priority,jdbcType=TINYINT},
#{milestone,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tall.bean.po.ProTaskDetail">
insert into t_pro_task_detail
@ -230,6 +231,9 @@
<if test="priority != null">
priority,
</if>
<if test="milestone != null">
milestone,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -313,6 +317,9 @@
<if test="priority != null">
#{priority,jdbcType=TINYINT},
</if>
<if test="milestone != null">
#{milestone,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.tall.bean.po.ProTaskDetailExample" resultType="java.lang.Long">
@ -405,6 +412,9 @@
<if test="record.priority != null">
priority = #{record.priority,jdbcType=TINYINT},
</if>
<if test="record.milestone != null">
milestone = #{record.milestone,jdbcType=TINYINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -438,7 +448,8 @@
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT},
priority = #{record.priority,jdbcType=TINYINT}
priority = #{record.priority,jdbcType=TINYINT},
milestone = #{record.milestone,jdbcType=TINYINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -524,6 +535,9 @@
<if test="priority != null">
priority = #{priority,jdbcType=TINYINT},
</if>
<if test="milestone != null">
milestone = #{milestone,jdbcType=TINYINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -554,7 +568,8 @@
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT},
priority = #{priority,jdbcType=TINYINT}
priority = #{priority,jdbcType=TINYINT},
milestone = #{milestone,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

9
util/src/main/java/com/ccsens/util/PoiUtil.java

@ -175,7 +175,8 @@ public class PoiUtil {
if(StrUtil.isNotEmpty(cell.getFunction())) {
newCell.setCellFormula(cell.getFunction());
}
style.setFillForegroundColor(IndexedColors.RED.getIndex());
//设置自动换行
style.setWrapText(true);
newCell.setCellStyle(style);
}
}
@ -451,12 +452,6 @@ public class PoiUtil {
/**
* 插入图片
*/
private static void insertImage(){
}
/**
*
* @param row1起始行
* @param row2终止行
* @param col1起始列

3
util/src/main/java/com/ccsens/util/WebConstant.java

@ -241,7 +241,8 @@ public class WebConstant {
God("God","上帝"),ManageRepresent("ManageRepresent","管代"),Stakeholder("Stakeholder","干系人"),
PM("PM","项目经理"),Member("Member","项目成员"),MVP("MVP","MVP")
,Attention("Attention","关注者"),Creator("Creator","创建者")
,MoneyStakeholder("MoneyStakeholder","奖惩干系人"),AllMember("AllMember","全体成员");
,MoneyStakeholder("MoneyStakeholder","奖惩干系人"),AllMember("AllMember","全体成员")
,ProjectVirtualRole("ProjectVirtualRole","角色项目");
public String value;
public String phase;

8
util/src/main/java/com/ccsens/util/cron/CronConstant.java

@ -54,11 +54,13 @@ public class CronConstant {
// TaskCron week = getCronDay("每周7");
// System.out.println("周1:" + week);
// System.out.println("周一:" + getDate(week,start, end));
//
TaskCron workday = getCronDay("每周一-周五 18点");
////
// TaskCron workday = getCronDay("每周一-周五 18点");
// System.out.println("工作日:" + workday);
// System.out.println("工作日:" + getDate(workday,start, end));
TaskCron workday = getCronDay("每周一-周五 15点30分-15点45分");
System.out.println("工作日:" + workday);
System.out.println("工作日:" + getDate(workday,start, end));
// System.out.println(generateDates("每天9点,10点", start, end));
}

24
util/src/test/java/com/ccsens/util/Base64Test.java

@ -1,6 +1,8 @@
package com.ccsens.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@ -33,7 +35,27 @@ public class Base64Test {
@Test
public void test02() throws Exception {
// String a = "abcdefg";
// byte[] bytes = a.getBytes();
// byte[] bytes1 = new byte[bytes.length];
// byte[] bytes2 = new byte[bytes.length];
// for (int i = 0; i < bytes.length; i++) {
// bytes1[i] = (byte) (bytes[i]^ 0xff);
// }
// for (int i = 0; i < bytes1.length; i++) {
// bytes2[i] = (byte) (bytes1[i]^ 0xff);
// System.out.print(bytes2[i]+" ");
// }
// String c = new String(bytes1);
// String b = new String(bytes2);
// System.out.println(b);
// System.out.println(c);
try {
String a = "ax15";
System.out.println(Long.parseLong(a));
}catch (NumberFormatException e){
throw new BaseException("ssss");
}
}

6
util/src/test/java/com/ccsens/util/TestQrCord.java

@ -28,9 +28,9 @@ public class TestQrCord {
// String fileName = "zzz/" + DateUtil.today() + "/" + i+"组" + ".png";
// String text = "https://www.tall.wiki/pt-dev/respond?groupId="+i+"&groupName="+i+"组";
String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://www.tall.wiki/pt-dev/vote&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
// String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://test.tall.wiki/compete&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
String fileName = "zzz/" + "远程比赛(生产).png";
// String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://www.tall.wiki/pt-dev/vote&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=https://www.tall.wiki/compete-province&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
String fileName = "zzz/" + "远程比赛-省赛(生产).png";
QRCodeWriter qrCodeWriter = new QRCodeWriter();

Loading…
Cancel
Save