From cfa9abb3cbc0e409f85aa83358af02f4294c2cd8 Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Thu, 26 Dec 2019 11:33:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloudutil/bean/tall/vo/MemberVo.java | 21 + .../ccsens/cloudutil/bean/tall/vo/TaskVo.java | 14 + .../cloudutil/feign/TallFeignClient.java | 28 + .../com/ccsens/game/api/ScreenController.java | 16 +- .../com/ccsens/game/bean/dto/ScreenDto.java | 4 +- .../com/ccsens/game/bean/po/GameType.java | 30 +- .../ccsens/game/bean/po/GameTypeExample.java | 166 ++- .../com/ccsens/game/bean/vo/ScreenVo.java | 81 ++ .../ccsens/game/config/SwaggerConfigure.java | 2 +- .../game/persist/dao/GameActivityRuleDao.java | 8 + .../game/persist/dao/GameMemberDao.java | 8 + .../game/persist/dao/GameRecordDao.java | 8 + .../ccsens/game/persist/dao/GameTypeDao.java | 8 + .../game/persist/dao/GameTypeMemberDao.java | 9 + .../ccsens/game/service/IScreenService.java | 8 + .../ccsens/game/service/ScreenService.java | 110 ++ .../resources/mapper_raw/GameTypeMapper.xml | 55 +- game/src/main/resources/mbg.xml | 16 +- .../com/ccsens/game/GameApplicationTests.java | 15 - mt/.mvn/wrapper/MavenWrapperDownloader.java | 117 ++ mt/.mvn/wrapper/maven-wrapper.properties | 2 + mt/pom.xml | 75 ++ .../java/com/ccsens/mt/MtApplication.java | 24 + .../com/ccsens/mt/api/DebugController.java | 28 + .../com/ccsens/mt/api/ScoreController.java | 124 ++ .../com/ccsens/mt/api/SigninController.java | 56 + .../java/com/ccsens/mt/bean/dto/ScoreDto.java | 83 ++ .../com/ccsens/mt/bean/dto/SigninDto.java | 19 + .../mt/bean/dto/message/BaseMessageDto.java | 35 + .../dto/message/SyncMessageWithShowDto.java | 39 + .../java/com/ccsens/mt/bean/po/MtJudge.java | 117 ++ .../com/ccsens/mt/bean/po/MtJudgeExample.java | 771 ++++++++++++ .../java/com/ccsens/mt/bean/po/MtScore.java | 129 ++ .../com/ccsens/mt/bean/po/MtScoreExample.java | 812 ++++++++++++ .../com/ccsens/mt/bean/po/MtScoreLog.java | 118 ++ .../ccsens/mt/bean/po/MtScoreLogExample.java | 752 +++++++++++ .../java/com/ccsens/mt/bean/po/MtSignin.java | 139 +++ .../ccsens/mt/bean/po/MtSigninExample.java | 891 +++++++++++++ .../java/com/ccsens/mt/bean/vo/ScoreVo.java | 172 +++ .../java/com/ccsens/mt/bean/vo/SigninVo.java | 21 + .../java/com/ccsens/mt/config/BeanConfig.java | 31 + .../com/ccsens/mt/config/SpringConfig.java | 164 +++ .../ccsens/mt/config/SwaggerConfigure.java | 56 + .../mt/intercept/MybatisInterceptor.java | 154 +++ .../com/ccsens/mt/persist/dao/MtJudgeDao.java | 8 + .../com/ccsens/mt/persist/dao/MtScoreDao.java | 12 + .../ccsens/mt/persist/dao/MtScoreLogDao.java | 8 + .../ccsens/mt/persist/dao/MtSigninDao.java | 8 + .../mt/persist/mapper/MtJudgeMapper.java | 30 + .../mt/persist/mapper/MtScoreLogMapper.java | 30 + .../mt/persist/mapper/MtScoreMapper.java | 30 + .../mt/persist/mapper/MtSigninMapper.java | 30 + .../ccsens/mt/service/IMessageService.java | 9 + .../com/ccsens/mt/service/IScoreService.java | 18 + .../com/ccsens/mt/service/ISigninService.java | 10 + .../com/ccsens/mt/service/IUserService.java | 8 + .../ccsens/mt/service/MessageServicer.java | 22 + .../com/ccsens/mt/service/ScoreService.java | 324 +++++ .../com/ccsens/mt/service/SigninService.java | 75 ++ .../com/ccsens/mt/service/UserService.java | 41 + mt/src/main/resources/application-common.yml | 30 + mt/src/main/resources/application-dev.yml | 29 + mt/src/main/resources/application-test.yml | 28 + mt/src/main/resources/application.yml | 4 + mt/src/main/resources/druid-dev.yml | 33 + mt/src/main/resources/druid-prod.yml | 33 + mt/src/main/resources/druid-test.yml | 33 + mt/src/main/resources/logback-spring.xml | 196 +++ mt/src/main/resources/mapper_dao/ScoreDao.xml | 50 + .../resources/mapper_raw/MtJudgeMapper.xml | 275 ++++ .../resources/mapper_raw/MtScoreLogMapper.xml | 275 ++++ .../resources/mapper_raw/MtScoreMapper.xml | 291 +++++ .../resources/mapper_raw/MtSigninMapper.xml | 306 +++++ .../main/resources/mybatis/mybatis-config.xml | 61 + pom.xml | 1 + .../com/ccsens/tall/bean/vo/MemberVo.java | 4 +- .../java/com/ccsens/tall/bean/vo/TaskVo.java | 9 +- .../com/ccsens/tall/config/SpringConfig.java | 2 + .../tall/persist/dao/TaskDetailDao.java | 3 +- .../ccsens/tall/service/ExcelMtService.java | 1106 ----------------- .../com/ccsens/tall/service/ExcelService.java | 326 +++-- .../ccsens/tall/service/IExcelMtService.java | 8 - .../tall/service/IProMemberService.java | 1 + .../tall/service/IProTaskDetailService.java | 2 + .../ccsens/tall/service/ProMemberService.java | 14 + .../tall/service/ProTaskDetailService.java | 59 +- .../ccsens/tall/web/MemberRoleController.java | 3 + .../com/ccsens/tall/web/TaskController.java | 14 + .../com/ccsens/tall/web/UserController.java | 17 + .../resources/mapper_dao/TaskDetailDao.xml | 38 +- .../main/java/com/ccsens/util/CodeEnum.java | 5 + .../java/com/ccsens/util/WebConstant.java | 11 +- .../ccsens/util/config/RabbitMQConfig.java | 7 +- 93 files changed, 8159 insertions(+), 1314 deletions(-) create mode 100644 cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/MemberVo.java create mode 100644 cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/TaskVo.java create mode 100644 game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java create mode 100644 game/src/main/java/com/ccsens/game/persist/dao/GameActivityRuleDao.java create mode 100644 game/src/main/java/com/ccsens/game/persist/dao/GameMemberDao.java create mode 100644 game/src/main/java/com/ccsens/game/persist/dao/GameRecordDao.java create mode 100644 game/src/main/java/com/ccsens/game/persist/dao/GameTypeDao.java create mode 100644 game/src/main/java/com/ccsens/game/persist/dao/GameTypeMemberDao.java create mode 100644 game/src/main/java/com/ccsens/game/service/IScreenService.java create mode 100644 game/src/main/java/com/ccsens/game/service/ScreenService.java delete mode 100644 game/src/test/java/com/ccsens/game/GameApplicationTests.java create mode 100644 mt/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 mt/.mvn/wrapper/maven-wrapper.properties create mode 100644 mt/pom.xml create mode 100644 mt/src/main/java/com/ccsens/mt/MtApplication.java create mode 100644 mt/src/main/java/com/ccsens/mt/api/DebugController.java create mode 100644 mt/src/main/java/com/ccsens/mt/api/ScoreController.java create mode 100644 mt/src/main/java/com/ccsens/mt/api/SigninController.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/dto/ScoreDto.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/dto/SigninDto.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/dto/message/BaseMessageDto.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/dto/message/SyncMessageWithShowDto.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtJudge.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtJudgeExample.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtScore.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtScoreExample.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtScoreLog.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtScoreLogExample.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtSignin.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/MtSigninExample.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/vo/ScoreVo.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java create mode 100644 mt/src/main/java/com/ccsens/mt/config/BeanConfig.java create mode 100644 mt/src/main/java/com/ccsens/mt/config/SpringConfig.java create mode 100644 mt/src/main/java/com/ccsens/mt/config/SwaggerConfigure.java create mode 100644 mt/src/main/java/com/ccsens/mt/intercept/MybatisInterceptor.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/dao/MtJudgeDao.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/dao/MtScoreDao.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/dao/MtScoreLogDao.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninDao.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/mapper/MtJudgeMapper.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/mapper/MtScoreLogMapper.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/mapper/MtScoreMapper.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/mapper/MtSigninMapper.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/IMessageService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/IScoreService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/ISigninService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/IUserService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/MessageServicer.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/ScoreService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/SigninService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/UserService.java create mode 100644 mt/src/main/resources/application-common.yml create mode 100644 mt/src/main/resources/application-dev.yml create mode 100644 mt/src/main/resources/application-test.yml create mode 100644 mt/src/main/resources/application.yml create mode 100644 mt/src/main/resources/druid-dev.yml create mode 100644 mt/src/main/resources/druid-prod.yml create mode 100644 mt/src/main/resources/druid-test.yml create mode 100644 mt/src/main/resources/logback-spring.xml create mode 100644 mt/src/main/resources/mapper_dao/ScoreDao.xml create mode 100644 mt/src/main/resources/mapper_raw/MtJudgeMapper.xml create mode 100644 mt/src/main/resources/mapper_raw/MtScoreLogMapper.xml create mode 100644 mt/src/main/resources/mapper_raw/MtScoreMapper.xml create mode 100644 mt/src/main/resources/mapper_raw/MtSigninMapper.xml create mode 100644 mt/src/main/resources/mybatis/mybatis-config.xml delete mode 100644 tall/src/main/java/com/ccsens/tall/service/ExcelMtService.java delete mode 100644 tall/src/main/java/com/ccsens/tall/service/IExcelMtService.java diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/MemberVo.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/MemberVo.java new file mode 100644 index 00000000..3abf2bda --- /dev/null +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/MemberVo.java @@ -0,0 +1,21 @@ +package com.ccsens.cloudutil.bean.tall.vo; + +import lombok.Data; + +@Data +public class MemberVo { + + @Data + public static class MemberInfo{ + private Long id; + private Long userId; + private Long projectId; + private String nickname; + private String avatarUrl; + private Integer no; + private String phone; + private String description; + private Long joinTime; + private Long stakeholderId; + } +} diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/TaskVo.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/TaskVo.java new file mode 100644 index 00000000..bc5f3205 --- /dev/null +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/TaskVo.java @@ -0,0 +1,14 @@ +package com.ccsens.cloudutil.bean.tall.vo; + +import lombok.Data; + +@Data +public class TaskVo { + @Data + public static class TaskInfoWithFeign{ + private Long id; + private String name; + private Long projectId; + private String projectName; + } +} diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java index 882c8d86..c06d0e17 100644 --- a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java @@ -4,8 +4,11 @@ import com.ccsens.cloudutil.bean.QueryParam; import com.ccsens.cloudutil.bean.tall.dto.LogDto; import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto; import com.ccsens.cloudutil.bean.tall.dto.UserDto; +import com.ccsens.cloudutil.bean.tall.vo.MemberVo; +import com.ccsens.cloudutil.bean.tall.vo.TaskVo; import com.ccsens.cloudutil.bean.tall.vo.UserVo; import com.ccsens.util.JsonResponse; +import feign.Param; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.configurationprocessor.json.JSONObject; @@ -72,6 +75,21 @@ public interface TallFeignClient { */ @RequestMapping("/log/operation") JsonResponse log(LogDto logDto); + + /** + * 通过任务id获得项目id + * @param taskId + * @return + */ + @GetMapping("/tasks/projectId") + TaskVo.TaskInfoWithFeign getProjectId(@RequestParam( name = "taskId")Long taskId); + + /** + * 查询该用户在项目中的member信息 + * @return + */ + @GetMapping("/users/member") + JsonResponse getMemberByUserId(@RequestParam( name = "userId") Long userId,@RequestParam( name = "projectId") Long projectId); } @Slf4j @@ -114,6 +132,16 @@ class TallFeignClientFallBack implements FallbackFactory { public JsonResponse log(LogDto logDto) { return JsonResponse.newInstance().fail(); } + + @Override + public TaskVo.TaskInfoWithFeign getProjectId(Long taskId) { + return null; + } + + @Override + public JsonResponse getMemberByUserId(Long userId,Long projectId) { + return JsonResponse.newInstance().fail(); + } }; } diff --git a/game/src/main/java/com/ccsens/game/api/ScreenController.java b/game/src/main/java/com/ccsens/game/api/ScreenController.java index c498fea9..09ba91a9 100644 --- a/game/src/main/java/com/ccsens/game/api/ScreenController.java +++ b/game/src/main/java/com/ccsens/game/api/ScreenController.java @@ -1,12 +1,12 @@ package com.ccsens.game.api; import com.ccsens.game.bean.dto.ScreenDto; +import com.ccsens.game.bean.vo.ScreenVo; +import com.ccsens.game.service.IScreenService; import com.ccsens.util.JsonResponse; -import com.ccsens.util.WebConstant; -import io.jsonwebtoken.Claims; import io.swagger.annotations.*; -import lombok.extern.log4j.Log4j; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,23 +14,23 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; @Slf4j @Api(tags = "大屏相关api" , description = "ScreenController") @RestController @RequestMapping("/screen") public class ScreenController { - + @Autowired + private IScreenService screenService; @ApiOperation(value = "获取大屏路径", notes = "") @ApiImplicitParams({ }) @RequestMapping(value = "url", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse getScreenUrl(HttpServletRequest request, + public JsonResponse getScreenUrl(HttpServletRequest request, @ApiParam @Validated @RequestBody ScreenDto.MemberGame memberGame) throws Exception { log.info("获取大屏路径:{}",memberGame); - + ScreenVo.UrlVo urlVo = screenService.getScreenUrl(memberGame); return JsonResponse.newInstance().ok(); } @@ -38,7 +38,7 @@ public class ScreenController { @ApiImplicitParams({ }) @RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse getGameInfo(HttpServletRequest request, + public JsonResponse getGameInfo(HttpServletRequest request, @ApiParam @Validated @RequestBody ScreenDto.MemberRecord memberRecord) throws Exception { log.info("获取游戏基本信息:{}",memberRecord); diff --git a/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java b/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java index 99d8aa8d..fa490be0 100644 --- a/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java +++ b/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java @@ -9,7 +9,9 @@ public class ScreenDto { @Data @ApiModel public static class MemberGame{ - @ApiModelProperty("是否关注") + @ApiModelProperty("要创建的小游戏的类型 例如:SQ 代表数钱小游戏") + private String gameType; + @ApiModelProperty("是否关注了公众号") private Byte subscribe; @ApiModelProperty("用户的标识,对当前公众号唯一") private String openid; diff --git a/game/src/main/java/com/ccsens/game/bean/po/GameType.java b/game/src/main/java/com/ccsens/game/bean/po/GameType.java index 6897272b..fb7e0b3c 100644 --- a/game/src/main/java/com/ccsens/game/bean/po/GameType.java +++ b/game/src/main/java/com/ccsens/game/bean/po/GameType.java @@ -12,7 +12,11 @@ public class GameType implements Serializable { private String description; - private String payType; + private Byte payType; + + private String screenUrl; + + private String clientUrl; private Date createdAt; @@ -54,12 +58,28 @@ public class GameType implements Serializable { this.description = description == null ? null : description.trim(); } - public String getPayType() { + public Byte getPayType() { return payType; } - public void setPayType(String payType) { - this.payType = payType == null ? null : payType.trim(); + public void setPayType(Byte payType) { + this.payType = payType; + } + + public String getScreenUrl() { + return screenUrl; + } + + public void setScreenUrl(String screenUrl) { + this.screenUrl = screenUrl == null ? null : screenUrl.trim(); + } + + public String getClientUrl() { + return clientUrl; + } + + public void setClientUrl(String clientUrl) { + this.clientUrl = clientUrl == null ? null : clientUrl.trim(); } public Date getCreatedAt() { @@ -97,6 +117,8 @@ public class GameType implements Serializable { sb.append(", name=").append(name); sb.append(", description=").append(description); sb.append(", payType=").append(payType); + sb.append(", screenUrl=").append(screenUrl); + sb.append(", clientUrl=").append(clientUrl); sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); diff --git a/game/src/main/java/com/ccsens/game/bean/po/GameTypeExample.java b/game/src/main/java/com/ccsens/game/bean/po/GameTypeExample.java index 88a84651..4e4012da 100644 --- a/game/src/main/java/com/ccsens/game/bean/po/GameTypeExample.java +++ b/game/src/main/java/com/ccsens/game/bean/po/GameTypeExample.java @@ -385,63 +385,193 @@ public class GameTypeExample { return (Criteria) this; } - public Criteria andPayTypeEqualTo(String value) { + public Criteria andPayTypeEqualTo(Byte value) { addCriterion("pay_type =", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeNotEqualTo(String value) { + public Criteria andPayTypeNotEqualTo(Byte value) { addCriterion("pay_type <>", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeGreaterThan(String value) { + public Criteria andPayTypeGreaterThan(Byte value) { addCriterion("pay_type >", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeGreaterThanOrEqualTo(String value) { + public Criteria andPayTypeGreaterThanOrEqualTo(Byte value) { addCriterion("pay_type >=", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeLessThan(String value) { + public Criteria andPayTypeLessThan(Byte value) { addCriterion("pay_type <", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeLessThanOrEqualTo(String value) { + public Criteria andPayTypeLessThanOrEqualTo(Byte value) { addCriterion("pay_type <=", value, "payType"); return (Criteria) this; } - public Criteria andPayTypeLike(String value) { - addCriterion("pay_type like", value, "payType"); + public Criteria andPayTypeIn(List values) { + addCriterion("pay_type in", values, "payType"); return (Criteria) this; } - public Criteria andPayTypeNotLike(String value) { - addCriterion("pay_type not like", value, "payType"); + public Criteria andPayTypeNotIn(List values) { + addCriterion("pay_type not in", values, "payType"); return (Criteria) this; } - public Criteria andPayTypeIn(List values) { - addCriterion("pay_type in", values, "payType"); + public Criteria andPayTypeBetween(Byte value1, Byte value2) { + addCriterion("pay_type between", value1, value2, "payType"); return (Criteria) this; } - public Criteria andPayTypeNotIn(List values) { - addCriterion("pay_type not in", values, "payType"); + public Criteria andPayTypeNotBetween(Byte value1, Byte value2) { + addCriterion("pay_type not between", value1, value2, "payType"); return (Criteria) this; } - public Criteria andPayTypeBetween(String value1, String value2) { - addCriterion("pay_type between", value1, value2, "payType"); + public Criteria andScreenUrlIsNull() { + addCriterion("screen_url is null"); return (Criteria) this; } - public Criteria andPayTypeNotBetween(String value1, String value2) { - addCriterion("pay_type not between", value1, value2, "payType"); + public Criteria andScreenUrlIsNotNull() { + addCriterion("screen_url is not null"); + return (Criteria) this; + } + + public Criteria andScreenUrlEqualTo(String value) { + addCriterion("screen_url =", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlNotEqualTo(String value) { + addCriterion("screen_url <>", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlGreaterThan(String value) { + addCriterion("screen_url >", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlGreaterThanOrEqualTo(String value) { + addCriterion("screen_url >=", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlLessThan(String value) { + addCriterion("screen_url <", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlLessThanOrEqualTo(String value) { + addCriterion("screen_url <=", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlLike(String value) { + addCriterion("screen_url like", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlNotLike(String value) { + addCriterion("screen_url not like", value, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlIn(List values) { + addCriterion("screen_url in", values, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlNotIn(List values) { + addCriterion("screen_url not in", values, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlBetween(String value1, String value2) { + addCriterion("screen_url between", value1, value2, "screenUrl"); + return (Criteria) this; + } + + public Criteria andScreenUrlNotBetween(String value1, String value2) { + addCriterion("screen_url not between", value1, value2, "screenUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlIsNull() { + addCriterion("client_url is null"); + return (Criteria) this; + } + + public Criteria andClientUrlIsNotNull() { + addCriterion("client_url is not null"); + return (Criteria) this; + } + + public Criteria andClientUrlEqualTo(String value) { + addCriterion("client_url =", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlNotEqualTo(String value) { + addCriterion("client_url <>", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlGreaterThan(String value) { + addCriterion("client_url >", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlGreaterThanOrEqualTo(String value) { + addCriterion("client_url >=", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlLessThan(String value) { + addCriterion("client_url <", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlLessThanOrEqualTo(String value) { + addCriterion("client_url <=", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlLike(String value) { + addCriterion("client_url like", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlNotLike(String value) { + addCriterion("client_url not like", value, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlIn(List values) { + addCriterion("client_url in", values, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlNotIn(List values) { + addCriterion("client_url not in", values, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlBetween(String value1, String value2) { + addCriterion("client_url between", value1, value2, "clientUrl"); + return (Criteria) this; + } + + public Criteria andClientUrlNotBetween(String value1, String value2) { + addCriterion("client_url not between", value1, value2, "clientUrl"); return (Criteria) this; } diff --git a/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java b/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java new file mode 100644 index 00000000..c22cb195 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java @@ -0,0 +1,81 @@ +package com.ccsens.game.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class ScreenVo { + @Data + @ApiModel + public static class UrlVo{ + @ApiModelProperty("大屏的路径") + private String url; + @ApiModelProperty("游戏路径") + private List ruleList; + } + + @Data + @ApiModel + public static class GameInfoVo{ + @ApiModelProperty("二维码路径") + private String QRCodeUrl; + @ApiModelProperty("游戏状态") + private Byte gameStatus; + @ApiModelProperty("可玩总次数") + private int totalCount; + @ApiModelProperty("已用次数") + private int usedCount ; + @ApiModelProperty("总人数") + private int totalMembers ; + + @ApiModelProperty("未开始") + private PendingData pendingData; + @ApiModelProperty("未开始") + private PreparingData preparingData; + @ApiModelProperty("未开始") + private ProcessingData processingData; + @ApiModelProperty("未开始") + private CompletedData completedData; + + } + + @Data + @ApiModel("未开始") + public static class PendingData{ + @ApiModelProperty("活动规则") + private List activityRule; + @ApiModelProperty("活动奖品") + private List activityPrize; + @ApiModelProperty("奖券使用说明") + private List instructions; + } + + @Data + @ApiModel("准备中") + public static class PreparingData{ + @ApiModelProperty("本地开始时间") + private Long startLocalTime ; + } + + @Data + @ApiModel("进行中") + public static class ProcessingData{ + + } + + @Data + @ApiModel("已结束") + public static class CompletedData{ + @ApiModelProperty("总次数") + private int totalTimes; + @ApiModelProperty("总分数") + private int totalScore; + @ApiModelProperty("平均每人多少分") + private int averageTimes; + @ApiModelProperty("平均次数超过百分之多少人") + private int over; + } +} diff --git a/game/src/main/java/com/ccsens/game/config/SwaggerConfigure.java b/game/src/main/java/com/ccsens/game/config/SwaggerConfigure.java index 88d9d999..379c0666 100644 --- a/game/src/main/java/com/ccsens/game/config/SwaggerConfigure.java +++ b/game/src/main/java/com/ccsens/game/config/SwaggerConfigure.java @@ -28,7 +28,7 @@ public class SwaggerConfigure /*implements WebMvcConfigurer*/ { .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors - .basePackage("com.ccsens.game.web")) + .basePackage("com.ccsens.game.api")) .build() .globalOperationParameters(setHeaderToken()); } diff --git a/game/src/main/java/com/ccsens/game/persist/dao/GameActivityRuleDao.java b/game/src/main/java/com/ccsens/game/persist/dao/GameActivityRuleDao.java new file mode 100644 index 00000000..9fa14055 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/persist/dao/GameActivityRuleDao.java @@ -0,0 +1,8 @@ +package com.ccsens.game.persist.dao; + +import com.ccsens.game.persist.mapper.GameActivityRuleMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface GameActivityRuleDao extends GameActivityRuleMapper{ +} diff --git a/game/src/main/java/com/ccsens/game/persist/dao/GameMemberDao.java b/game/src/main/java/com/ccsens/game/persist/dao/GameMemberDao.java new file mode 100644 index 00000000..1432758a --- /dev/null +++ b/game/src/main/java/com/ccsens/game/persist/dao/GameMemberDao.java @@ -0,0 +1,8 @@ +package com.ccsens.game.persist.dao; + +import com.ccsens.game.persist.mapper.GameMemberMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface GameMemberDao extends GameMemberMapper{ +} diff --git a/game/src/main/java/com/ccsens/game/persist/dao/GameRecordDao.java b/game/src/main/java/com/ccsens/game/persist/dao/GameRecordDao.java new file mode 100644 index 00000000..03b7f107 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/persist/dao/GameRecordDao.java @@ -0,0 +1,8 @@ +package com.ccsens.game.persist.dao; + +import com.ccsens.game.persist.mapper.GameRecordMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface GameRecordDao extends GameRecordMapper{ +} diff --git a/game/src/main/java/com/ccsens/game/persist/dao/GameTypeDao.java b/game/src/main/java/com/ccsens/game/persist/dao/GameTypeDao.java new file mode 100644 index 00000000..07a5e733 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/persist/dao/GameTypeDao.java @@ -0,0 +1,8 @@ +package com.ccsens.game.persist.dao; + +import com.ccsens.game.persist.mapper.GameTypeMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface GameTypeDao extends GameTypeMapper{ +} diff --git a/game/src/main/java/com/ccsens/game/persist/dao/GameTypeMemberDao.java b/game/src/main/java/com/ccsens/game/persist/dao/GameTypeMemberDao.java new file mode 100644 index 00000000..44bd8c75 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/persist/dao/GameTypeMemberDao.java @@ -0,0 +1,9 @@ +package com.ccsens.game.persist.dao; + +import com.ccsens.game.persist.mapper.GameTypeMemberMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface GameTypeMemberDao extends GameTypeMemberMapper{ + +} diff --git a/game/src/main/java/com/ccsens/game/service/IScreenService.java b/game/src/main/java/com/ccsens/game/service/IScreenService.java new file mode 100644 index 00000000..834f265e --- /dev/null +++ b/game/src/main/java/com/ccsens/game/service/IScreenService.java @@ -0,0 +1,8 @@ +package com.ccsens.game.service; + +import com.ccsens.game.bean.dto.ScreenDto; +import com.ccsens.game.bean.vo.ScreenVo; + +public interface IScreenService { + ScreenVo.UrlVo getScreenUrl(ScreenDto.MemberGame memberGame); +} diff --git a/game/src/main/java/com/ccsens/game/service/ScreenService.java b/game/src/main/java/com/ccsens/game/service/ScreenService.java new file mode 100644 index 00000000..dde69d95 --- /dev/null +++ b/game/src/main/java/com/ccsens/game/service/ScreenService.java @@ -0,0 +1,110 @@ +package com.ccsens.game.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.game.bean.dto.ScreenDto; +import com.ccsens.game.bean.po.*; +import com.ccsens.game.bean.vo.ScreenVo; +import com.ccsens.game.persist.dao.*; +import com.ccsens.util.CodeEnum; +import com.ccsens.util.WebConstant; +import com.ccsens.util.exception.BaseException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +public class ScreenService implements IScreenService{ + @Autowired + private GameMemberDao memberDao; + @Autowired + private GameTypeMemberDao typeMemberDao; + @Autowired + private GameTypeDao gameTypeDao; + @Autowired + private GameRecordDao gameRecordDao; + @Autowired + private GameActivityRuleDao activityRuleDao; + @Autowired + private Snowflake snowflake; + + @Override + public ScreenVo.UrlVo getScreenUrl(ScreenDto.MemberGame memberGame) { + //1、查询此用户,若没有则保存用户信息 + GameMember member = null; + GameMemberExample memberExample = new GameMemberExample(); + memberExample.createCriteria().andOpenidEqualTo(memberGame.getOpenid()); + List memberList = memberDao.selectByExample(memberExample); + if(CollectionUtil.isNotEmpty(memberList)){ + member = memberList.get(0); + }else { + member = new GameMember(); + BeanUtil.copyProperties(memberGame,member); + member.setId(snowflake.nextId()); + memberDao.insertSelective(member); + } + //查找游戏 + GameType gameType = null; + GameTypeExample gameTypeExample = new GameTypeExample(); + gameTypeExample.createCriteria().andCodeEqualTo(memberGame.getGameType()); + List gameTypeList = gameTypeDao.selectByExample(gameTypeExample); + if(CollectionUtil.isNotEmpty(gameTypeList)){ + gameType = gameTypeList.get(0); + } + if(ObjectUtil.isNull(gameType)){ + throw new BaseException(CodeEnum.NOT_GAME_TYPE); + } + //2、查找此用户购买的此游戏的信息,若没有则添加一条记录,默认已付款,结束时间为添加后的一个月,默认次数为10次 + GameTypeMember gameTypeMember = null; + GameTypeMemberExample typeMemberExample = new GameTypeMemberExample(); + typeMemberExample.createCriteria().andMemberIdEqualTo(member.getId()).andGameTypeIdEqualTo(gameType.getId()); + List gameTypeMemberList = typeMemberDao.selectByExample(typeMemberExample); + if(CollectionUtil.isNotEmpty(gameTypeMemberList)){ + gameTypeMember = gameTypeMemberList.get(0); + }else { + gameTypeMember = new GameTypeMember(); + gameTypeMember.setId(snowflake.nextId()); + gameTypeMember.setMemberId(member.getId()); + gameTypeMember.setGameTypeId(gameType.getId()); + gameTypeMember.setTotalCount(10); + gameTypeMember.setUsedCount(0); + gameTypeMember.setCreatedTime(System.currentTimeMillis()); + gameTypeMember.setDueTime(gameTypeMember.getCreatedTime() + (3600*24*30)); + typeMemberDao.insertSelective(gameTypeMember); + } + + //3、根据用户购买的记录,添加一场新的游戏记录 + GameRecord gameRecord = new GameRecord(); + gameRecord.setId(snowflake.nextId()); + gameRecord.setTypeMemberId(gameTypeMember.getId()); + gameRecord.setUrl(WebConstant.TEST_URL_GAME + gameRecord.getId() + File.separator + gameType.getScreenUrl()); + gameRecord.setQrCodeUrl(WebConstant.TEST_URL_GAME + gameRecord.getId() + File.separator + gameType.getClientUrl()); + gameRecordDao.insertSelective(gameRecord); + //5、查询该游戏的规则 + List ruleList = null; + GameActivityRuleExample activityRuleExample = new GameActivityRuleExample(); + activityRuleExample.createCriteria().andGameIdEqualTo(gameType.getId()); + List gameActivityRuleList = activityRuleDao.selectByExample(activityRuleExample); + if(CollectionUtil.isNotEmpty(gameActivityRuleList)){ + ruleList = new ArrayList<>(); + for(GameActivityRule activityRule : gameActivityRuleList){ + ruleList.add(activityRule.getDescription()); + } + } + //6、返回 + ScreenVo.UrlVo urlVo = new ScreenVo.UrlVo(); + urlVo.setUrl(gameRecord.getUrl()); + urlVo.setRuleList(ruleList); + return urlVo; + } +} diff --git a/game/src/main/resources/mapper_raw/GameTypeMapper.xml b/game/src/main/resources/mapper_raw/GameTypeMapper.xml index db08eb0e..d9241b8d 100644 --- a/game/src/main/resources/mapper_raw/GameTypeMapper.xml +++ b/game/src/main/resources/mapper_raw/GameTypeMapper.xml @@ -6,7 +6,9 @@ - + + + @@ -70,7 +72,8 @@ - id, code, name, description, pay_type, created_at, updated_at, rec_status + id, code, name, description, pay_type, screen_url, client_url, created_at, updated_at, + rec_status + SELECT + SUM(score) + FROM + `t_score` + WHERE + player_id=#{playerId} + AND + role_id = #{judgeId} + + + + + + + + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/MtJudgeMapper.xml b/mt/src/main/resources/mapper_raw/MtJudgeMapper.xml new file mode 100644 index 00000000..d7d3afce --- /dev/null +++ b/mt/src/main/resources/mapper_raw/MtJudgeMapper.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, project_id, user_id, nickname, avatar_url, phone, created_at, updated_at, rec_status + + + + + delete from t_mt_judge + where id = #{id,jdbcType=BIGINT} + + + delete from t_mt_judge + + + + + + insert into t_mt_judge (id, project_id, user_id, + nickname, avatar_url, phone, + created_at, updated_at, rec_status + ) + values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, + #{nickname,jdbcType=VARCHAR}, #{avatarUrl,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, + #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT} + ) + + + insert into t_mt_judge + + + id, + + + project_id, + + + user_id, + + + nickname, + + + avatar_url, + + + phone, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{projectId,jdbcType=BIGINT}, + + + #{userId,jdbcType=BIGINT}, + + + #{nickname,jdbcType=VARCHAR}, + + + #{avatarUrl,jdbcType=VARCHAR}, + + + #{phone,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_mt_judge + + + id = #{record.id,jdbcType=BIGINT}, + + + project_id = #{record.projectId,jdbcType=BIGINT}, + + + user_id = #{record.userId,jdbcType=BIGINT}, + + + nickname = #{record.nickname,jdbcType=VARCHAR}, + + + avatar_url = #{record.avatarUrl,jdbcType=VARCHAR}, + + + phone = #{record.phone,jdbcType=VARCHAR}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_mt_judge + set id = #{record.id,jdbcType=BIGINT}, + project_id = #{record.projectId,jdbcType=BIGINT}, + user_id = #{record.userId,jdbcType=BIGINT}, + nickname = #{record.nickname,jdbcType=VARCHAR}, + avatar_url = #{record.avatarUrl,jdbcType=VARCHAR}, + phone = #{record.phone,jdbcType=VARCHAR}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_mt_judge + + + project_id = #{projectId,jdbcType=BIGINT}, + + + user_id = #{userId,jdbcType=BIGINT}, + + + nickname = #{nickname,jdbcType=VARCHAR}, + + + avatar_url = #{avatarUrl,jdbcType=VARCHAR}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_mt_judge + set project_id = #{projectId,jdbcType=BIGINT}, + user_id = #{userId,jdbcType=BIGINT}, + nickname = #{nickname,jdbcType=VARCHAR}, + avatar_url = #{avatarUrl,jdbcType=VARCHAR}, + phone = #{phone,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/MtScoreLogMapper.xml b/mt/src/main/resources/mapper_raw/MtScoreLogMapper.xml new file mode 100644 index 00000000..97efadd3 --- /dev/null +++ b/mt/src/main/resources/mapper_raw/MtScoreLogMapper.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, max_score, min_score, project_id, sequence, created_at, updated_at, rec_status + + + + + delete from t_mt_score_log + where id = #{id,jdbcType=BIGINT} + + + delete from t_mt_score_log + + + + + + insert into t_mt_score_log (id, name, max_score, + min_score, project_id, sequence, + created_at, updated_at, rec_status + ) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{maxScore,jdbcType=DECIMAL}, + #{minScore,jdbcType=DECIMAL}, #{projectId,jdbcType=BIGINT}, #{sequence,jdbcType=INTEGER}, + #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT} + ) + + + insert into t_mt_score_log + + + id, + + + name, + + + max_score, + + + min_score, + + + project_id, + + + sequence, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{maxScore,jdbcType=DECIMAL}, + + + #{minScore,jdbcType=DECIMAL}, + + + #{projectId,jdbcType=BIGINT}, + + + #{sequence,jdbcType=INTEGER}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_mt_score_log + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + max_score = #{record.maxScore,jdbcType=DECIMAL}, + + + min_score = #{record.minScore,jdbcType=DECIMAL}, + + + project_id = #{record.projectId,jdbcType=BIGINT}, + + + sequence = #{record.sequence,jdbcType=INTEGER}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_mt_score_log + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + max_score = #{record.maxScore,jdbcType=DECIMAL}, + min_score = #{record.minScore,jdbcType=DECIMAL}, + project_id = #{record.projectId,jdbcType=BIGINT}, + sequence = #{record.sequence,jdbcType=INTEGER}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_mt_score_log + + + name = #{name,jdbcType=VARCHAR}, + + + max_score = #{maxScore,jdbcType=DECIMAL}, + + + min_score = #{minScore,jdbcType=DECIMAL}, + + + project_id = #{projectId,jdbcType=BIGINT}, + + + sequence = #{sequence,jdbcType=INTEGER}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_mt_score_log + set name = #{name,jdbcType=VARCHAR}, + max_score = #{maxScore,jdbcType=DECIMAL}, + min_score = #{minScore,jdbcType=DECIMAL}, + project_id = #{projectId,jdbcType=BIGINT}, + sequence = #{sequence,jdbcType=INTEGER}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/MtScoreMapper.xml b/mt/src/main/resources/mapper_raw/MtScoreMapper.xml new file mode 100644 index 00000000..d7e81d43 --- /dev/null +++ b/mt/src/main/resources/mapper_raw/MtScoreMapper.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, judge_user_id, score_log_id, task_id, task_name, score, is_score, created_at, + updated_at, rec_status + + + + + delete from t_mt_score + where id = #{id,jdbcType=BIGINT} + + + delete from t_mt_score + + + + + + insert into t_mt_score (id, judge_user_id, score_log_id, + task_id, task_name, score, + is_score, created_at, updated_at, + rec_status) + values (#{id,jdbcType=BIGINT}, #{judgeUserId,jdbcType=BIGINT}, #{scoreLogId,jdbcType=BIGINT}, + #{taskId,jdbcType=BIGINT}, #{taskName,jdbcType=VARCHAR}, #{score,jdbcType=DECIMAL}, + #{isScore,jdbcType=INTEGER}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, + #{recStatus,jdbcType=TINYINT}) + + + insert into t_mt_score + + + id, + + + judge_user_id, + + + score_log_id, + + + task_id, + + + task_name, + + + score, + + + is_score, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{judgeUserId,jdbcType=BIGINT}, + + + #{scoreLogId,jdbcType=BIGINT}, + + + #{taskId,jdbcType=BIGINT}, + + + #{taskName,jdbcType=VARCHAR}, + + + #{score,jdbcType=DECIMAL}, + + + #{isScore,jdbcType=INTEGER}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_mt_score + + + id = #{record.id,jdbcType=BIGINT}, + + + judge_user_id = #{record.judgeUserId,jdbcType=BIGINT}, + + + score_log_id = #{record.scoreLogId,jdbcType=BIGINT}, + + + task_id = #{record.taskId,jdbcType=BIGINT}, + + + task_name = #{record.taskName,jdbcType=VARCHAR}, + + + score = #{record.score,jdbcType=DECIMAL}, + + + is_score = #{record.isScore,jdbcType=INTEGER}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_mt_score + set id = #{record.id,jdbcType=BIGINT}, + judge_user_id = #{record.judgeUserId,jdbcType=BIGINT}, + score_log_id = #{record.scoreLogId,jdbcType=BIGINT}, + task_id = #{record.taskId,jdbcType=BIGINT}, + task_name = #{record.taskName,jdbcType=VARCHAR}, + score = #{record.score,jdbcType=DECIMAL}, + is_score = #{record.isScore,jdbcType=INTEGER}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_mt_score + + + judge_user_id = #{judgeUserId,jdbcType=BIGINT}, + + + score_log_id = #{scoreLogId,jdbcType=BIGINT}, + + + task_id = #{taskId,jdbcType=BIGINT}, + + + task_name = #{taskName,jdbcType=VARCHAR}, + + + score = #{score,jdbcType=DECIMAL}, + + + is_score = #{isScore,jdbcType=INTEGER}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_mt_score + set judge_user_id = #{judgeUserId,jdbcType=BIGINT}, + score_log_id = #{scoreLogId,jdbcType=BIGINT}, + task_id = #{taskId,jdbcType=BIGINT}, + task_name = #{taskName,jdbcType=VARCHAR}, + score = #{score,jdbcType=DECIMAL}, + is_score = #{isScore,jdbcType=INTEGER}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/MtSigninMapper.xml b/mt/src/main/resources/mapper_raw/MtSigninMapper.xml new file mode 100644 index 00000000..a867c753 --- /dev/null +++ b/mt/src/main/resources/mapper_raw/MtSigninMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, user_id, task_id, name, phone, company, signin_time, sequence, created_at, updated_at, + rec_status + + + + + delete from t_mt_signin + where id = #{id,jdbcType=BIGINT} + + + delete from t_mt_signin + + + + + + insert into t_mt_signin (id, user_id, task_id, + name, phone, company, + signin_time, sequence, created_at, + updated_at, rec_status) + values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{taskId,jdbcType=BIGINT}, + #{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{company,jdbcType=VARCHAR}, + #{signinTime,jdbcType=BIGINT}, #{sequence,jdbcType=INTEGER}, #{createdAt,jdbcType=TIMESTAMP}, + #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}) + + + insert into t_mt_signin + + + id, + + + user_id, + + + task_id, + + + name, + + + phone, + + + company, + + + signin_time, + + + sequence, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{userId,jdbcType=BIGINT}, + + + #{taskId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{phone,jdbcType=VARCHAR}, + + + #{company,jdbcType=VARCHAR}, + + + #{signinTime,jdbcType=BIGINT}, + + + #{sequence,jdbcType=INTEGER}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_mt_signin + + + id = #{record.id,jdbcType=BIGINT}, + + + user_id = #{record.userId,jdbcType=BIGINT}, + + + task_id = #{record.taskId,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + phone = #{record.phone,jdbcType=VARCHAR}, + + + company = #{record.company,jdbcType=VARCHAR}, + + + signin_time = #{record.signinTime,jdbcType=BIGINT}, + + + sequence = #{record.sequence,jdbcType=INTEGER}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_mt_signin + set id = #{record.id,jdbcType=BIGINT}, + user_id = #{record.userId,jdbcType=BIGINT}, + task_id = #{record.taskId,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + phone = #{record.phone,jdbcType=VARCHAR}, + company = #{record.company,jdbcType=VARCHAR}, + signin_time = #{record.signinTime,jdbcType=BIGINT}, + sequence = #{record.sequence,jdbcType=INTEGER}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_mt_signin + + + user_id = #{userId,jdbcType=BIGINT}, + + + task_id = #{taskId,jdbcType=BIGINT}, + + + name = #{name,jdbcType=VARCHAR}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + company = #{company,jdbcType=VARCHAR}, + + + signin_time = #{signinTime,jdbcType=BIGINT}, + + + sequence = #{sequence,jdbcType=INTEGER}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_mt_signin + set user_id = #{userId,jdbcType=BIGINT}, + task_id = #{taskId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + phone = #{phone,jdbcType=VARCHAR}, + company = #{company,jdbcType=VARCHAR}, + signin_time = #{signinTime,jdbcType=BIGINT}, + sequence = #{sequence,jdbcType=INTEGER}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/mt/src/main/resources/mybatis/mybatis-config.xml b/mt/src/main/resources/mybatis/mybatis-config.xml new file mode 100644 index 00000000..06ec6488 --- /dev/null +++ b/mt/src/main/resources/mybatis/mybatis-config.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 46ce8837..c9d15fa3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ tall util game + mt com.ccsens diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java index 420a7c81..bca4fc8d 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java @@ -5,16 +5,18 @@ import lombok.Getter; import lombok.Setter; @Data public class MemberVo { + @Data public static class MemberInfo{ private Long id; private Long userId; -// private Long memberRoleId; + private Long projectId; private String nickname; private String avatarUrl; private Integer no; private String phone; private String description; private Long joinTime; + private Long stakeholderId; } } diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java index dd0663d6..aa9ad857 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java @@ -140,7 +140,7 @@ public class TaskVo { @Data public static class PluginVo{ @ApiModelProperty("插件id") - private Long id; + private String id; @ApiModelProperty("插件名") private String name; @JsonIgnore @@ -240,4 +240,11 @@ public class TaskVo { private Long subTimeId; } + @Data + public static class TaskInfoWithFeign{ + private Long id; + private String name; + private Long projectId; + private String projectName; + } } diff --git a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java b/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java index 01b57640..72055bd7 100644 --- a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java +++ b/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java @@ -134,9 +134,11 @@ public class SpringConfig implements WebMvcConfigurer { .excludePathPatterns("/users/account") .excludePathPatterns("/users/token") .excludePathPatterns("/users/claims") + .excludePathPatterns("/users/member") .addPathPatterns("/plugins/**") .addPathPatterns("/delivers/**") .addPathPatterns("/tasks/**") + .excludePathPatterns("/tasks/projectId") .addPathPatterns("/members/**") .addPathPatterns("/templates/**") .addPathPatterns("/hardware/**"); diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java index 83e77360..fefb5a92 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java @@ -11,7 +11,8 @@ import java.util.List; @Repository public interface TaskDetailDao extends ProTaskDetailMapper { - List selectNormalTaskListByPM(@Param("projectId") Long projectId, @Param("parentId") Long parentId, @Param("startTime") Long startTime, @Param("endTime") Long endTime); + List selectNormalTaskListByPM(@Param("projectId") Long projectId, @Param("parentId") Long parentId, + @Param("startTime") Long startTime, @Param("endTime") Long endTime,@Param("roleId") Long roleId); List selectTaskByRoleAndAllMembers(@Param("projectId") Long projectId, @Param("roleId") Long roleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime); diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcelMtService.java b/tall/src/main/java/com/ccsens/tall/service/ExcelMtService.java deleted file mode 100644 index 57759c8e..00000000 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelMtService.java +++ /dev/null @@ -1,1106 +0,0 @@ -package com.ccsens.tall.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 cn.hutool.core.util.StrUtil; -import com.ccsens.tall.bean.po.*; -import com.ccsens.tall.bean.vo.ProjectVo; -import com.ccsens.tall.persist.dao.SysPluginDao; -import com.ccsens.util.*; -import com.ccsens.util.cron.CronConstant; -import com.ccsens.util.cron.NatureToDate; -import com.ccsens.util.exception.BaseException; -import lombok.extern.slf4j.Slf4j; -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.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import java.io.FileInputStream; -import java.io.InputStream; -import java.util.*; - -@Slf4j -@Service -@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) -public class ExcelMtService implements IExcelMtService { - @Autowired - private SysPluginDao sysPluginDao; - @Autowired - private IProjectService projectService; - @Autowired - private IProShowService proShowService; - @Autowired - private Snowflake snowflake; - @Autowired - private IProRoleService proRoleService; - @Autowired - private IProMemberRoleService proMemberRoleService; - @Autowired - private IExcludeRoleService excludeRoleService; - @Autowired - private IProMemberService proMemberService; - @Autowired - private IProTaskDetailService proTaskDetailService; - @Autowired - private ITaskSubTimeService taskSubTimeService; - @Autowired - private ITaskMemberService taskMemberService; - @Autowired - private ITaskDeliverService taskDeliverService; - @Autowired - private ITaskPluginService taskPluginService; - @Autowired - private IUserService userService; - @Autowired - private IUserAttentionService userAttentionService; - - - @Override - public ProjectVo.ProjectInfo readXls(String path, Long currentUserId) throws Exception { - InputStream is = new FileInputStream(path); - XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); - //读取WBS表 - SysProject sysProject = readWbs(xssfWorkbook, currentUserId); - ProjectVo.ProjectInfo projectInfo = selectByProjectId(currentUserId, sysProject); - return projectInfo; - } - - /** - * 读取Wbs - */ - public SysProject readWbs(XSSFWorkbook xssfWorkbook, Long currentUserId) throws Exception { - //项目 - SysProject sysProject = new SysProject(); - //角色 - List proRoles = new ArrayList<>(); - //成员 - List proMembers = new ArrayList<>(); - //任务 - List taskDetails = new ArrayList<>(); - - XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表"); - XSSFSheet wbsSheet = xssfWorkbook.getSheetAt(0);//wbs - - int projectInfoStart = 0; - int projectInfoEnd = 0; - int memberStart = 0; - int memberEnd = 0; - int taskStart = 0; - int taskEnd = 0; - - taskEnd = wbsSheet.getLastRowNum(); - for (int i = 0; i <= wbsSheet.getLastRowNum(); i++) { - XSSFRow xssfRow = wbsSheet.getRow(i); - - if (xssfRow == null) { - continue; - } - XSSFCell xssfCell = xssfRow.getCell(0); - if (xssfCell == null) { - continue; - } - String s = ExcelUtil.getCellValue(xssfCell); - - if (s.indexOf("项目信息") == 0) { - projectInfoStart = i + 1; - } - if (s.indexOf("项目成员") == 0) { - projectInfoEnd = i - 1; - memberStart = i + 1; - } - if (s.indexOf("项目任务分解") == 0) { - memberEnd = i - 1; - taskStart = i + 1; - } - } - if (projectInfoStart == 0) { - throw new BaseException(CodeEnum.WSB_NOT_PROJECT_HEADER); - } - if (projectInfoStart == 0) { - throw new BaseException(CodeEnum.WSB_NOT_MEMBER_HEADER); - } - if (projectInfoStart == 0) { - throw new BaseException(CodeEnum.WSB_NOT_TASK_HEADER); - } - readProject(wbsSheet, projectInfoStart, projectInfoEnd, currentUserId, sysProject); - readMember(xssfWorkbook, wbsSheet, memberSheet, memberStart, memberEnd, sysProject, proRoles, proMembers); - readTask(xssfWorkbook, wbsSheet, taskStart, taskEnd, currentUserId, sysProject, taskDetails, proRoles, proMembers); - saveProTaskSubTime(taskDetails); - //读取插件表 - readPlugin(xssfWorkbook, taskDetails, proRoles); - return sysProject; - } - - /** - * 添加项目 - */ - private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId, SysProject sysProject) { - XSSFRow row = wbsSheet.getRow(projectInfoStart + 1); - String projectName = ExcelUtil.getCellValue(row.getCell(0)); - if (StrUtil.isNotEmpty(projectName)) { - String begin = ExcelUtil.getCellValue(row.getCell(3)); - String end = ExcelUtil.getCellValue(row.getCell(4)); - if (StrUtil.isNotEmpty(begin) && StrUtil.isNotEmpty(end)) { - Long beginTime = null; - Long endTime = null; - try { - beginTime = Long.parseLong(begin); - endTime = Long.parseLong(end); - } catch (Exception e) { - //日期格式错误 - throw new BaseException(CodeEnum.WBS_PROJECT_TIME_ERROR); - } - sysProject.setId(snowflake.nextId()); - sysProject.setName(projectName); - sysProject.setDescription(ExcelUtil.getCellValue(row.getCell(1))); - sysProject.setAddress(ExcelUtil.getCellValue(row.getCell(2))); - sysProject.setBeginTime(beginTime); - sysProject.setEndTime(endTime); - sysProject.setCreatorId(currentUserId); - //是否发布,默认是1发布的 - sysProject.setPublished((byte) 1); - //是否是模板,新加的不是模板 0 - sysProject.setTemplate((byte) 0); - projectService.saveProject(sysProject); - System.out.println(sysProject); - //TODO 添加项目的展示配置 暂时全是默认 - ProShow proShow = new ProShow(); - proShow.setId(snowflake.nextId()); - proShow.setProjectId(sysProject.getId()); - proShowService.saveProShow(proShow); - } else { - //没有开始结束时间 - throw new BaseException(CodeEnum.WBS_NOT_PROJECT_TIME); - } - } else { - //没有项目名 - throw new BaseException(CodeEnum.WBS_NOT_PROJECT_NAME); - } - } - - /** - * 读取成员相关 - */ - private void readMember(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, XSSFSheet memberSheet, int memberStart, int memberEnd, - SysProject sysProject, List proRoles, List proMembers) throws Exception { - - //添加奖惩干系人角色(一级角色) - ProRole stakeholderRole = new ProRole(); - stakeholderRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.value); - stakeholderRole.setDescription(WebConstant.ROLE_NAME.MoneyStakeholder.phase); - stakeholderRole.setProjectId(sysProject.getId()); - stakeholderRole.setId(snowflake.nextId()); - proRoleService.saveProRole(stakeholderRole); - proRoles.add(stakeholderRole); - //添加奖惩干系人角色(二级角色) - ProRole stakeholderProRole = new ProRole(); - stakeholderProRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.value); - stakeholderProRole.setDescription(WebConstant.ROLE_NAME.MoneyStakeholder.phase); - stakeholderProRole.setParentId(stakeholderRole.getId()); - stakeholderProRole.setProjectId(sysProject.getId()); - stakeholderProRole.setId(snowflake.nextId()); - proRoleService.saveProRole(stakeholderProRole); - proRoles.add(stakeholderProRole); - - //添加创建者一级角色 - ProRole creator = new ProRole(); - creator.setName(WebConstant.ROLE_NAME.Creator.value); - creator.setDescription(WebConstant.ROLE_NAME.Creator.phase); - creator.setProjectId(sysProject.getId()); - creator.setId(snowflake.nextId()); - proRoleService.saveProRole(creator); - proRoles.add(creator); - //添加创建者角色(二级角色) - ProRole creatorRole = new ProRole(); - creatorRole.setName(WebConstant.ROLE_NAME.Creator.value); - creatorRole.setDescription(WebConstant.ROLE_NAME.Creator.phase); - creatorRole.setParentId(creator.getId()); - creatorRole.setProjectId(sysProject.getId()); - creatorRole.setId(snowflake.nextId()); - proRoleService.saveProRole(creatorRole); - proRoles.add(creatorRole); - - //添加关注者一级角色 - ProRole attention = new ProRole(); - attention.setName(WebConstant.ROLE_NAME.Attention.value); - attention.setDescription(WebConstant.ROLE_NAME.Attention.phase); - attention.setProjectId(sysProject.getId()); - attention.setId(snowflake.nextId()); - proRoleService.saveProRole(attention); - proRoles.add(attention); - //添加关注者角色(二级角色) - ProRole attentionRole = new ProRole(); - attentionRole.setName(WebConstant.ROLE_NAME.Attention.phase); - attentionRole.setDescription(WebConstant.ROLE_NAME.Attention.value); - attentionRole.setParentId(attention.getId()); - attentionRole.setProjectId(sysProject.getId()); - attentionRole.setId(snowflake.nextId()); - proRoleService.saveProRole(attentionRole); - proRoles.add(attentionRole); - - //添加成员和奖惩干系人 - memberWhitStakeholder(xssfWorkbook, memberSheet, stakeholderProRole.getId(), sysProject, proMembers); - - Long firstRoleId = null; - Long secondRoleId = null; - for (int i = memberStart + 1; i <= memberEnd; i++) { - XSSFRow row = wbsSheet.getRow(i); - String proRoleCell = ExcelUtil.getCellValue(row.getCell(1)); - String secondRoleCell = ExcelUtil.getCellValue(row.getCell(2)); - String memberCell = ExcelUtil.getCellValue(row.getCell(3)); - //添加一级角色 - if (StrUtil.isNotEmpty(proRoleCell)) { - ProRole role = new ProRole(); - role.setId(snowflake.nextId()); - role.setProjectId(sysProject.getId()); - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.God.phase)) { - role.setName(WebConstant.ROLE_NAME.God.value); - role.setDescription(WebConstant.ROLE_NAME.God.phase); - } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ManageRepresent.phase)) { - role.setName(WebConstant.ROLE_NAME.ManageRepresent.value); - role.setDescription(WebConstant.ROLE_NAME.ManageRepresent.phase); - } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Stakeholder.phase)) { - role.setName(WebConstant.ROLE_NAME.Stakeholder.value); - role.setDescription(WebConstant.ROLE_NAME.Stakeholder.phase); - } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.PM.phase)) { - role.setName(WebConstant.ROLE_NAME.PM.value); - role.setDescription(WebConstant.ROLE_NAME.PM.phase); - } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Member.phase)) { - role.setName(WebConstant.ROLE_NAME.Member.value); - role.setDescription(WebConstant.ROLE_NAME.Member.phase); - } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)) { - role.setName(WebConstant.ROLE_NAME.Attention.value); - role.setDescription(WebConstant.ROLE_NAME.Attention.phase); - } else { - throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName() + i)); - } - proRoleService.saveProRole(role); - proRoles.add(role); - firstRoleId = role.getId(); - - } - if (ObjectUtil.isNull(firstRoleId)) { - throw new BaseException("找不到系统角色[" + i + "]"); - } - //二级角色 - if (StrUtil.isNotEmpty(secondRoleCell)) { - if (!proMemberRoleExist(secondRoleCell, proRoles)) { - ProRole proRole = new ProRole(); - proRole.setName(secondRoleCell); - proRole.setParentId(firstRoleId); - proRole.setProjectId(sysProject.getId()); - proRole.setId(snowflake.nextId()); - proRoleService.saveProRole(proRole); - proRoles.add(proRole); - secondRoleId = proRole.getId(); - } else { - throw new BaseException(CodeEnum.WBS_REPEAT_ROLE_NAME.addMsg(wbsSheet.getSheetName() + i)); - } - } - if (ObjectUtil.isNull(secondRoleId)) { - throw new BaseException("找不到二级角色[" + i + "]"); - } - - if (StrUtil.isNotEmpty(memberCell)) { - ProMemberRole memberRole = null; - for (ProMember member : proMembers) { - if (memberCell.equalsIgnoreCase(member.getNickname())) { - memberRole = new ProMemberRole(); - memberRole.setId(snowflake.nextId()); - memberRole.setMemberId(member.getId()); - memberRole.setRoleId(secondRoleId); - proMemberRoleService.saveMemberRole(memberRole); - } - } - if (ObjectUtil.isNull(memberRole)) { - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName() + i)); - } - } - } - //角色对谁不可见 - String[] excludeRoleCells; - for (int i = memberStart + 1; i <= memberEnd; i++) { - XSSFRow row = wbsSheet.getRow(i); - String secondRoleCell = ExcelUtil.getCellValue(row.getCell(2)); - String excludeRoleCell = StringUtil.replaceComma(ExcelUtil.getCellValue(row.getCell(4))); - //获取角色对谁不可见 - if (StrUtil.isNotEmpty(excludeRoleCell)) { - excludeRoleCells = excludeRoleCell.split(","); - - Long proRoleId = null; - if (StrUtil.isNotEmpty(secondRoleCell)) { - for (ProRole role : proRoles) { - if (secondRoleCell.equalsIgnoreCase(role.getName())) { - proRoleId = role.getId(); - break; - } - } - } - - if (ObjectUtil.isNotNull(excludeRoleCells)) { - for (int a = 0; a < excludeRoleCells.length; a++) { - ProRoleExclude excludeRole = new ProRoleExclude(); - excludeRole.setId(snowflake.nextId()); - excludeRole.setRoleId(proRoleId); - if (CollectionUtil.isNotEmpty(proRoles)) { - Long roleId = null; - for (ProRole memberRole : proRoles) { - if (excludeRoleCells[a].equals(memberRole.getName())) { - roleId = memberRole.getId(); - excludeRole.setOtherRoleId(roleId); - break; - } - } - if (ObjectUtil.isNull(roleId)) { - throw new BaseException(CodeEnum.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName() + i)); - } - } - excludeRoleService.saveExcludeRole(excludeRole); - } - } - } - } - - //TODO 添加mvp角色 - ProRole proMemberRole = new ProRole(); - proMemberRole.setName(WebConstant.ROLE_NAME.MVP.phase); - proMemberRole.setParentId(firstRoleId); - proMemberRole.setProjectId(sysProject.getId()); - proMemberRole.setId(snowflake.nextId()); - proRoleService.saveProRole(proMemberRole); - proRoles.add(proMemberRole); - } - - /** - * 判断集合是否为空,有没有相同内容 - */ - private boolean proMemberRoleExist(String memberRoleName, List proRoles) { - if (CollectionUtil.isNotEmpty(proRoles)) { - for (ProRole proMemberRole : proRoles) { - if (proMemberRole.getName().equals(memberRoleName)) { - return true; - } - } - } - return false; - } - - /** - * 添加成员与奖惩干系人 - */ - private void memberWhitStakeholder(XSSFWorkbook xssfWorkbook, XSSFSheet memberSheet, Long stakeholderId, SysProject sysProject, List proMembers) throws Exception { - List stakeholderList = new ArrayList<>(); - if (ObjectUtil.isNotNull(memberSheet)) { - Set userIdSet = new HashSet<>(); - - for (int i = 1; i <= memberSheet.getLastRowNum(); i++) { - String memberCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(1)); - String phoneCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(2)); - String stakeholderCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(3)); - String stakeholderPhoneCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(4)); - ProMember stakeholder = null; - ProMember member = null; - //手机号不能为空 - if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) { - XSSFSheet sheet = xssfWorkbook.getSheet(memberCell); - if (ObjectUtil.isNull(sheet)) { - throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName() + i)); - }else { - if("评委表".equalsIgnoreCase(sheet.getSheetName())){ - judgeSheet(sheet,sysProject,proMembers); - }else if("选手信息表".equalsIgnoreCase(sheet.getSheetName())){ - companySheet(sheet,sysProject,proMembers); - } - } - - } - - if ((StrUtil.isNotEmpty(stakeholderCell) && StrUtil.isEmpty(stakeholderPhoneCell))) { - throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName() + i)); - } - //TODO 判断手机号格式 - - //添加奖惩干系人 - if (StrUtil.isNotEmpty(stakeholderCell)) { - if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) { - Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell); - if (ObjectUtil.isNotNull(userId)) { - userIdSet.add(userId); - } - stakeholder = new ProMember(); - stakeholder.setId(snowflake.nextId()); - stakeholder.setProjectId(sysProject.getId()); - stakeholder.setUserId(userId); - stakeholder.setNickname(stakeholderCell); - stakeholder.setPhone(stakeholderPhoneCell); - proMemberService.saveMember(stakeholder); - stakeholderList.add(stakeholder); - - ProMemberRole proMemberRole = new ProMemberRole(); - proMemberRole.setId(snowflake.nextId()); - proMemberRole.setMemberId(stakeholder.getId()); - proMemberRole.setRoleId(stakeholderId); - proMemberRoleService.saveMemberRole(proMemberRole); - } else { - throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName() + i)); - } - } - //成员 - if (StrUtil.isNotEmpty(memberCell)) { - if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) { - Long userId = userService.selectUserIdByPhone(phoneCell); - if (ObjectUtil.isNotNull(userId)) { - userIdSet.add(userId); - } - member = new ProMember(); - member.setId(snowflake.nextId()); - member.setProjectId(sysProject.getId()); - member.setUserId(userId); - member.setNickname(memberCell); - member.setPhone(phoneCell); - if (ObjectUtil.isNotNull(stakeholder)) { - member.setStakeholderId(stakeholder.getId()); - } - proMemberService.saveMember(member); - proMembers.add(member); -// //创建者依据project的creatorId判断,不需要添加成员 - } else { - throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName() + i)); - } - } - } - //TODO 每个成员都关注此项目(暂时) - addUserAttention(userIdSet, sysProject); - } else { - throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET); - } - } - /** - * 导入评委表 - */ - private void judgeSheet(XSSFSheet judgeSheet, SysProject sysProject, List proMembers) throws Exception { - Set userIdSet = new HashSet<>(); - for (int i = 3; i <= judgeSheet.getLastRowNum(); i++) { - ProMember member = null; - String memberCell = ExcelUtil.getCellValue(judgeSheet.getRow(i).getCell(1)); - String phoneCell = ExcelUtil.getCellValue(judgeSheet.getRow(i).getCell(2)); - if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) { - throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(judgeSheet.getSheetName() + i)); - } - //成员 - if (StrUtil.isNotEmpty(memberCell)) { - if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) { - Long userId = userService.selectUserIdByPhone(phoneCell); - if (ObjectUtil.isNotNull(userId)) { - userIdSet.add(userId); - } - member = new ProMember(); - member.setId(snowflake.nextId()); - member.setProjectId(sysProject.getId()); - member.setUserId(userId); - member.setNickname(memberCell); - member.setPhone(phoneCell); - proMemberService.saveMember(member); - proMembers.add(member); -// //创建者依据project的creatorId判断,不需要添加成员 - } else { - throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(judgeSheet.getSheetName() + i)); - } - } - } - //TODO 每个成员都关注此项目(暂时) - addUserAttention(userIdSet, sysProject); - } - private void companySheet(XSSFSheet companySheet, SysProject sysProject, List proMembers) throws Exception { - Set userIdSet = new HashSet<>(); - for (int i = 3; i <= companySheet.getLastRowNum(); i++) { - ProMember member = null; - String memberCell = ExcelUtil.getCellValue(companySheet.getRow(i).getCell(1)); - String phoneCell = ExcelUtil.getCellValue(companySheet.getRow(i).getCell(2)); - if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) { - throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(companySheet.getSheetName() + i)); - } - //成员 - if (StrUtil.isNotEmpty(memberCell)) { - if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) { - Long userId = userService.selectUserIdByPhone(phoneCell); - if (ObjectUtil.isNotNull(userId)) { - userIdSet.add(userId); - } - member = new ProMember(); - member.setId(snowflake.nextId()); - member.setProjectId(sysProject.getId()); - member.setUserId(userId); - member.setNickname(memberCell); - member.setPhone(phoneCell); - proMemberService.saveMember(member); - proMembers.add(member); -// //创建者依据project的creatorId判断,不需要添加成员 - } else { - throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(companySheet.getSheetName() + i)); - } - } - } - //TODO 每个成员都关注此项目(暂时) - addUserAttention(userIdSet, sysProject); - } - - - /** - * 项目成员表内的每个人都关注此项目(暂时,当前版本) - */ - private void addUserAttention(Set userIdList, SysProject sysProject) { - if (CollectionUtil.isNotEmpty(userIdList)) { - for (Long userId : userIdList) { - UserAttention userAttention = new UserAttention(); - userAttention.setId(snowflake.nextId()); - userAttention.setUserId(userId); - userAttention.setProjectId(sysProject.getId()); - userAttentionService.saveAttention(userAttention); - } - } - } - - /** - * 判断奖惩干系人与手机号对应是否正确 - * 奖惩干系人可以重复,一个人只能对应一个手机号 - */ - private boolean stakeholderWithPhone(List stakeholderList, String stakeholderName, String phone) { - if (CollectionUtil.isNotEmpty(stakeholderList)) { - for (ProMember proMember : stakeholderList) { - if (stakeholderName.equalsIgnoreCase(proMember.getNickname())) { - if (!proMember.getPhone().equalsIgnoreCase(phone)) { - return true; - } - } else { - if (proMember.getPhone().equalsIgnoreCase(phone)) { - return true; - } - } - } - } - return false; - } - - /** - * 判断成员和手机号是否重复 - */ - private boolean memberAndPhoneRepeat(List proMembers, String memberName, String phone) { - if (CollectionUtil.isNotEmpty(proMembers)) { - for (ProMember proMember : proMembers) { - if (proMember.getNickname().equalsIgnoreCase(memberName)) { - return true; - } - if (proMember.getPhone().equalsIgnoreCase(phone)) { - return true; - } - } - } - return false; - } - - /** - * 读取任务 - */ - private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd, - Long currentUserId, SysProject sysProject, List taskDetails, - List proRoles, List proMembers) throws Exception { - Long pmRoleId = null; - //获取项目经理的id(一级角色) - for (ProRole role : proRoles) { - if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) { - pmRoleId = role.getId(); - break; - } - } - //获取项目经理的id(二级角色) - if (ObjectUtil.isNotNull(pmRoleId)) { - for (ProRole secondRole : proRoles) { - if (ObjectUtil.isNotNull(secondRole.getParentId()) && - secondRole.getParentId().longValue() == pmRoleId.longValue()) { - pmRoleId = secondRole.getId(); - break; - } - } - } - //TODO 添加一个开始虚拟节点 - ProTaskDetail beginTask = new ProTaskDetail(); - beginTask.setId(snowflake.nextId()); - beginTask.setProjectId(sysProject.getId()); - beginTask.setName("开始"); - beginTask.setVirtual((byte) WebConstant.TASK_VIRTUAL.Virtual.value); - beginTask.setLevel((byte) WebConstant.TASK_LEVEL.Virtual.value); - beginTask.setExecutorRole(pmRoleId); - proTaskDetailService.saveTaskDetail(beginTask); - taskDetails.add(beginTask); - //一级任务id - Long firstTaskDetailId = null; - - for (int i = taskStart + 1; i <= taskEnd; i++) { - XSSFRow row = wbsSheet.getRow(i); - //一级任务名称 - String task1 = ExcelUtil.getCellValue(row.getCell(1)); - //二级任务名称 - String task2 = ExcelUtil.getCellValue(row.getCell(2)); - String description = ExcelUtil.getCellValue(row.getCell(3)); - String beginTime = ExcelUtil.getCellValue(row.getCell(4)); - String endTime = ExcelUtil.getCellValue(row.getCell(5)); - String repeat = ExcelUtil.getCellValue(row.getCell(7)); - String subTaskCell = ExcelUtil.getCellValue(row.getCell(8)); - String subProject = ExcelUtil.getCellValue(row.getCell(9)); - String deliver = ExcelUtil.getCellValue(row.getCell(10)); - String executorRole = ExcelUtil.getCellValue(row.getCell(11)); - String checkerRole = ExcelUtil.getCellValue(row.getCell(12)); - String money = ExcelUtil.getCellValue(row.getCell(13)); - String delay = ExcelUtil.getCellValue(row.getCell(14)); - String delayTime = ExcelUtil.getCellValue(row.getCell(15)); - String loopTo = ExcelUtil.getCellValue(row.getCell(16)); - String loopTimes = ExcelUtil.getCellValue(row.getCell(17)); - String input = ExcelUtil.getCellValue(row.getCell(18)); - //二级任务名不能为空 -// if(StrUtil.isEmpty(task2)){ -// throw new BaseException(CodeEnum.WBS_NOT_TASK_NAME.addMsg(wbsSheet.getSheetName()+i)); -// } - //TODO 一级任务(时间暂时为空) - if (StrUtil.isNotEmpty(task1)) { - ProTaskDetail firstTaskDetail = new ProTaskDetail(); - firstTaskDetail.setId(snowflake.nextId()); - firstTaskDetail.setName(task1); - firstTaskDetail.setProjectId(sysProject.getId()); - firstTaskDetail.setDelay((byte) WebConstant.TASK_DELAY.SelfMotion.value); - firstTaskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); - firstTaskDetail.setLevel((byte) WebConstant.TASK_LEVEL.FirstTask.value); - firstTaskDetail.setExecutorRole(pmRoleId); - proTaskDetailService.saveTaskDetail(firstTaskDetail); - taskDetails.add(firstTaskDetail); - - firstTaskDetailId = firstTaskDetail.getId(); - - } - if (ObjectUtil.isNull(firstTaskDetailId)) { - throw new BaseException("找不到任务[" + i + "]"); - } - - //二级任务 - if (StrUtil.isNotEmpty(task2)) { - ProTaskDetail taskDetail = new ProTaskDetail(); - taskDetail.setId(snowflake.nextId()); - taskDetail.setProjectId(sysProject.getId()); - taskDetail.setParentId(firstTaskDetailId); - taskDetail.setName(task2); - taskDetail.setDescription(description); - taskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); - taskDetail.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value); - taskDetail.setHasGroup((byte) 0); - taskDetail.setAllMember((byte) 1); - //子项目 - if (StrUtil.isNotEmpty(subProject)) { - SysProject project = projectService.selectByNameAndUserId(subProject, currentUserId); - if (ObjectUtil.isNotNull(project)) { - taskDetail.setSubProjectId(project.getId()); - taskDetail.setSubProject(subProject); - project.setParentTaskId(taskDetail.getId()); - projectService.updateProject(project); - } - } - //负责人 - if (CollectionUtil.isNotEmpty(proRoles)) { - Long executorRoleId = null; - for (ProRole proRole : proRoles) { - if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(executorRole)) { - executorRoleId = proRole.getId(); - taskDetail.setExecutorRole(executorRoleId); - break; - } - } - if (ObjectUtil.isNull(executorRoleId)) { - throw new BaseException(CodeEnum.WBS_NOT_FIND_EXECUTOR_ROLE.addMsg(wbsSheet.getSheetName() + i)); - } - } - //检查人 - if (CollectionUtil.isNotEmpty(proRoles)) { - Long checkerRoleId = null; - for (ProRole proRole : proRoles) { - if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(checkerRole)) { - checkerRoleId = proRole.getId(); - taskDetail.setCheckerRole(checkerRoleId); - break; - } - } - if (ObjectUtil.isNull(checkerRoleId)) { - throw new BaseException(CodeEnum.WBS_NOT_FIND_CHECKER_ROLE.addMsg(wbsSheet.getSheetName() + i)); - } - } - //奖惩金额 - if (StrUtil.isNotEmpty(money)) { - taskDetail.setMoney(Long.parseLong(money) * 100); - } - //切换模式 - if (delay.equals(WebConstant.TASK_DELAY.SelfMotion.phase)) { - taskDetail.setDelay((byte) WebConstant.TASK_DELAY.SelfMotion.value); - } else if (delay.equals(WebConstant.TASK_DELAY.DelayManual.phase)) { - taskDetail.setDelay((byte) WebConstant.TASK_DELAY.DelayManual.value); - } else if (delay.equals(WebConstant.TASK_DELAY.Manual.phase)) { - taskDetail.setDelay((byte) WebConstant.TASK_DELAY.Manual.value); - } else { - throw new BaseException(CodeEnum.WBS_DELAY_ERROR.addMsg(wbsSheet.getSheetName() + i)); - } - //延迟时间 - if (StrUtil.isNotEmpty(delayTime)) { - taskDetail.setDelayTime(DateUtil.str2MillSeconds(delayTime)); - } - //TODO 跳转任务(应该在循环外处理) - - //跳转次数 - - //输入文档 - if (StrUtil.isNotEmpty(input)) { - ProTaskDeliver taskDeliver = new ProTaskDeliver(); - taskDeliver.setId(snowflake.nextId()); - taskDeliver.setTaskDetailId(taskDetail.getId()); - taskDeliver.setName(input); - taskDeliver.setIsInput(1); - taskDeliver.setIsFinal(0); - taskDeliverService.saveDeliver(taskDeliver); - } - //TODO 设备挂载暂不处理 - - //没有开始时间默认项目开始时间 - if (StrUtil.isNotEmpty(beginTime)) { - taskDetail.setBeginTime(Long.valueOf(beginTime)); - } else { - taskDetail.setBeginTime(sysProject.getBeginTime()); - } - //没有结束时间默认项目结束时间 - if (StrUtil.isNotEmpty(endTime)) { - taskDetail.setEndTime(Long.valueOf(endTime)); - } else { - taskDetail.setEndTime(sysProject.getEndTime()); - } - //重复频率 - if (StrUtil.isNotEmpty(repeat)) { - taskDetail.setCycle(repeat); - } - //子任务 - if (StrUtil.isNotEmpty(subTaskCell)) { - taskDetail.setHasGroup((byte) 1); - switch (subTaskCell) { - case "值日表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "运动计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "前端学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "后台学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "硬件学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "方圆学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - case "全体学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver); - break; - default: - throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName() + i)); - } - } else { - //不是分组任务,直接添加交付物 - readDeliverSheet(deliver, xssfWorkbook, taskDetail.getId()); - } - //添加任务 - proTaskDetailService.saveTaskDetail(taskDetail); - taskDetails.add(taskDetail); - } - } - //添加一个结束虚拟节点 - ProTaskDetail endTask = new ProTaskDetail(); - endTask.setId(snowflake.nextId()); - endTask.setProjectId(sysProject.getId()); - endTask.setName("结束"); - endTask.setVirtual((byte) WebConstant.TASK_VIRTUAL.Virtual.value); - endTask.setLevel((byte) WebConstant.TASK_LEVEL.Virtual.value); - endTask.setExecutorRole(pmRoleId); - proTaskDetailService.saveTaskDetail(endTask); - taskDetails.add(endTask); - } - - /** - * 读取子任务表 - */ - public void getSubTask(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, - List taskDetails, List proMembers, String deliverCell) { - XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); - Long startTime = parentTaskDetail.getBeginTime(); - if (ObjectUtil.isNotNull(subTaskSheet)) { - String str = ExcelUtil.getCellValue(subTaskSheet.getRow(1).getCell(4)); - for (int a = 2; a < subTaskSheet.getLastRowNum(); a++) { - String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1)); - String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2)); - String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3)); - //重复时间、相对时间 - String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4)); - String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6))); - //备注 - String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8)); - if (StrUtil.isNotEmpty(nameCell)) { - ProTaskDetail subTask = new ProTaskDetail(); - BeanUtil.copyProperties(parentTaskDetail, subTask); - subTask.setId(snowflake.nextId()); - subTask.setName(nameCell); - subTask.setDescription(descriptionCell); - subTask.setLevel((byte) 3); - subTask.setHasGroup((byte) 0); - subTask.setParentId(parentTaskDetail.getId()); - if (StrUtil.isNotEmpty(memberCell)) { - if (memberCell.equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)) { - parentTaskDetail.setAllMember((byte) 1); - subTask.setAllMember((byte) 1); - } else { - parentTaskDetail.setAllMember((byte) 0); - subTask.setAllMember((byte) 0); - List memberList = StringUtil.extractMessage(memberCell); - if (CollectionUtil.isNotEmpty(memberList)) { - for (String memberName : memberList) { - if (CollectionUtil.isNotEmpty(proMembers)) { - Long proMemberId = null; - for (ProMember proMember : proMembers) { - if (memberName.equalsIgnoreCase(proMember.getNickname())) { - proMemberId = proMember.getId(); - ProTaskMember proTaskMember = new ProTaskMember(); - proTaskMember.setId(snowflake.nextId()); - proTaskMember.setTaskDetailId(subTask.getId()); - proTaskMember.setMemberId(proMemberId); - taskMemberService.saveTaskMember(proTaskMember); - break; - } - } - if (ObjectUtil.isNull(proMemberId)) { - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); - } - } - } - } else { - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); - } - } - } - - if (StrUtil.isNotEmpty(repeatCell)) { - if ("重复时间".equals(str)) { - subTask.setCycle(repeatCell); - } - if ("相对时间".equals(str)) { - subTask.setBeginTime(startTime); - Long relative = StringUtil.severalDay(repeatCell); - if (ObjectUtil.isNotNull(relative)) { - subTask.setEndTime(startTime + relative); - } - } - } else { - if (ObjectUtil.isNotNull(beginCell)) { - subTask.setBeginTime(Long.valueOf(beginCell)); - } - if (ObjectUtil.isNotNull(endCell)) { - subTask.setEndTime(Long.valueOf(endCell)); - } - parentTaskDetail.setBeginTime(subTask.getBeginTime()); - } - startTime = subTask.getEndTime(); - //给每个子任务添加交付物 - readDeliverSheet(deliverCell, xssfWorkbook, subTask.getId()); - - proTaskDetailService.saveTaskDetail(subTask); - taskDetails.add(subTask); - } - } - } else { - throw new BaseException(CodeEnum.WBS_NOT_SUB_TASK); - } - parentTaskDetail.setEndTime(startTime); - } - - /** - * 分解任务时间 - * - * @param taskDetails - * @throws Exception - */ - public void saveProTaskSubTime(List taskDetails) throws Exception { - if (CollectionUtil.isNotEmpty(taskDetails)) { - for (ProTaskDetail taskDetail : taskDetails) { - //虚拟任务或一级任务不拆分 - if (taskDetail.getVirtual() == WebConstant.TASK_VIRTUAL.Virtual.value || taskDetail.getLevel() == 1) { - continue; - } - //cycle为空或者组任务,只加一条数据 - if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) { - ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); - proTaskSubTime.setId(snowflake.nextId()); - proTaskSubTime.setTaskDetailId(taskDetail.getId()); - proTaskSubTime.setBeginTime(taskDetail.getBeginTime()); - proTaskSubTime.setEndTime(taskDetail.getEndTime()); - taskSubTimeService.saveProTaskSubTask(proTaskSubTime); - } else { - Date startDate = new Date(taskDetail.getBeginTime()); - Date endDate = new Date(taskDetail.getEndTime()); - List taskDateList = - NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate); - if (CollectionUtil.isEmpty(taskDateList)) { - 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); - } - } - } - } - } - - /** - * 读取交付物表 - */ - private void readDeliverSheet(String deliverCell, XSSFWorkbook xssfWorkbook, Long taskId) { - if (StrUtil.isNotEmpty(deliverCell)) { - String str = ""; - if (deliverCell.length() > 4) { - str = deliverCell.substring(0, 3); - } - if ("关联表".equals(str)) { - String subStr = deliverCell.substring(4); - XSSFSheet subSheet = xssfWorkbook.getSheet(subStr); - for (int i = 2; i <= subSheet.getLastRowNum(); i++) { - String deliver = ExcelUtil.getCellValue(subSheet.getRow(i).getCell(1)); - if (StrUtil.isNotEmpty(deliver)) { - ProTaskDeliver taskDeliver = new ProTaskDeliver(); - taskDeliver.setId(snowflake.nextId()); - taskDeliver.setName(deliver); - taskDeliver.setTaskDetailId(taskId); - taskDeliver.setIsInput(0); - taskDeliver.setIsFinal(0); - if (i == subSheet.getLastRowNum()) { - taskDeliver.setIsFinal(1); - } - taskDeliverService.saveDeliver(taskDeliver); - } - } - } else { - ProTaskDeliver taskDeliver = new ProTaskDeliver(); - taskDeliver.setId(snowflake.nextId()); - taskDeliver.setTaskDetailId(taskId); - taskDeliver.setName(deliverCell); - taskDeliver.setIsInput(0); - taskDeliver.setIsFinal(1); - taskDeliverService.saveDeliver(taskDeliver); - } - } - } - - /** - * 读取插件 - * - * @param xssfWorkbook - * @param taskDetails - * @param proRoles - */ - private void readPlugin(XSSFWorkbook xssfWorkbook, List taskDetails, List proRoles) { - SysPluginExample pluginExample = new SysPluginExample(); - pluginExample.clear(); - List sysPluginList = sysPluginDao.selectByExample(pluginExample); - if (CollectionUtil.isNotEmpty(sysPluginList)) { - XSSFSheet sheet = xssfWorkbook.getSheet("插件"); - if (ObjectUtil.isNotNull(sheet)) { - Long taskId = null; - Long memberRoleId = null; - XSSFRow roleRow = sheet.getRow(2); - - for (int i = 3; i < sheet.getLastRowNum(); i++) { - XSSFRow pluginRow = sheet.getRow(i); - String task = ExcelUtil.getCellValue(pluginRow.getCell(1)); - //获取任务Id - if (StrUtil.isNotEmpty(task)) { - for (ProTaskDetail proTask : taskDetails) { - if (task.equals(proTask.getName())) { - taskId = proTask.getId(); - break; - } - } - } - - for (int a = 2; a < roleRow.getLastCellNum(); a++) { - //获取memberRoleId - String roleCell = ExcelUtil.getCellValue(roleRow.getCell(a)); - if (StrUtil.isNotEmpty(roleCell) && CollectionUtil.isNotEmpty(proRoles)) { - for (ProRole role : proRoles) { - if (roleCell.equals(role.getName())) { - memberRoleId = role.getId(); - break; - } - } - } - String plugin = ExcelUtil.getCellValue(pluginRow.getCell(a)); - if (StrUtil.isNotEmpty(plugin)) { - Long sysPluginId = null; - for (SysPlugin sysPlugin : sysPluginList) { - if (plugin.equalsIgnoreCase(sysPlugin.getName())) { - sysPluginId = sysPlugin.getId(); - } - } - if (ObjectUtil.isNull(sysPluginId)) { - throw new BaseException(CodeEnum.WBS_NOT_PLUGIN.addMsg(sheet.getSheetName() + i)); - } - ProTaskPlugin taskPlugin = new ProTaskPlugin(); - taskPlugin.setId(snowflake.nextId()); - taskPlugin.setTaskDetailId(taskId); - taskPlugin.setPluginId(sysPluginId); - taskPlugin.setMemberRoleId(memberRoleId); - taskPluginService.savePlugin(taskPlugin); - } - } - } - } else { - throw new BaseException(CodeEnum.WBS_NOT_PLUGIN_SHEET); - } - } - } - - /** - * 返回信息 - * - * @param currentUserId - * @param sysProject - * @return - * @throws Exception - */ - public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) throws Exception { - //返回参数 - ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); - projectInfo.setId(sysProject.getId()); - projectInfo.setName(sysProject.getName()); - projectInfo.setAddress(sysProject.getAddress()); - projectInfo.setBeginTime(sysProject.getBeginTime()); - projectInfo.setEndTime(sysProject.getEndTime()); - projectInfo.setTotalDuration(sysProject.getEndTime() - sysProject.getBeginTime()); - if (ObjectUtil.isNotNull(projectInfo)) { - projectInfo.setCreator(true); - } - return projectInfo; - } -} diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java index 3292dc93..8470d90a 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java @@ -28,7 +28,7 @@ import java.util.*; @Slf4j @Service -@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public class ExcelService implements IExcelService { @Autowired private SysPluginDao sysPluginDao; @@ -68,7 +68,7 @@ public class ExcelService implements IExcelService { XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); //读取WBS表 SysProject sysProject = readWbs(xssfWorkbook, currentUserId); - ProjectVo.ProjectInfo projectInfo = selectByProjectId(currentUserId,sysProject); + ProjectVo.ProjectInfo projectInfo = selectByProjectId(currentUserId, sysProject); return projectInfo; } @@ -76,6 +76,7 @@ public class ExcelService implements IExcelService { * 读取Wbs */ public SysProject readWbs(XSSFWorkbook xssfWorkbook, Long currentUserId) throws Exception { + Map> hasGroupMap = new HashMap<>(); //项目 SysProject sysProject = new SysProject(); //角色 @@ -120,39 +121,40 @@ public class ExcelService implements IExcelService { taskStart = i + 1; } } - if(projectInfoStart==0){ + if (projectInfoStart == 0) { throw new BaseException(CodeEnum.WSB_NOT_PROJECT_HEADER); } - if(projectInfoStart==0){ + if (projectInfoStart == 0) { throw new BaseException(CodeEnum.WSB_NOT_MEMBER_HEADER); } - if(projectInfoStart==0){ + if (projectInfoStart == 0) { throw new BaseException(CodeEnum.WSB_NOT_TASK_HEADER); } - readProject(wbsSheet, projectInfoStart, projectInfoEnd, currentUserId,sysProject); - readMember(wbsSheet, memberSheet,memberStart, memberEnd,sysProject, proRoles,proMembers); - readTask(xssfWorkbook, wbsSheet, taskStart, taskEnd, currentUserId,sysProject,taskDetails,proRoles,proMembers); + 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); + readPlugin(xssfWorkbook, taskDetails, proRoles, hasGroupMap); return sysProject; } + /** * 添加项目 */ - private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId,SysProject sysProject) { + private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId, SysProject sysProject) { XSSFRow row = wbsSheet.getRow(projectInfoStart + 1); String projectName = ExcelUtil.getCellValue(row.getCell(0)); - if(StrUtil.isNotEmpty(projectName)){ + if (StrUtil.isNotEmpty(projectName)) { String begin = ExcelUtil.getCellValue(row.getCell(3)); String end = ExcelUtil.getCellValue(row.getCell(4)); - if(StrUtil.isNotEmpty(begin)&&StrUtil.isNotEmpty(end)){ + if (StrUtil.isNotEmpty(begin) && StrUtil.isNotEmpty(end)) { Long beginTime = null; Long endTime = null; try { beginTime = Long.parseLong(begin); endTime = Long.parseLong(end); - }catch (Exception e){ + } catch (Exception e) { //日期格式错误 throw new BaseException(CodeEnum.WBS_PROJECT_TIME_ERROR); } @@ -174,11 +176,11 @@ public class ExcelService implements IExcelService { proShow.setId(snowflake.nextId()); proShow.setProjectId(sysProject.getId()); proShowService.saveProShow(proShow); - }else { + } else { //没有开始结束时间 throw new BaseException(CodeEnum.WBS_NOT_PROJECT_TIME); } - }else { + } else { //没有项目名 throw new BaseException(CodeEnum.WBS_NOT_PROJECT_NAME); } @@ -245,7 +247,7 @@ public class ExcelService implements IExcelService { proRoles.add(attentionRole); //添加成员和奖惩干系人 - memberWhitStakeholder(memberSheet, stakeholderProRole.getId(),sysProject,proMembers); + memberWhitStakeholder(memberSheet, stakeholderProRole.getId(), sysProject, proMembers); Long firstRoleId = null; Long secondRoleId = null; @@ -267,28 +269,23 @@ public class ExcelService implements IExcelService { if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.God.phase)) { role.setName(WebConstant.ROLE_NAME.God.value); role.setDescription(WebConstant.ROLE_NAME.God.phase); - }else - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ManageRepresent.phase)) { + } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ManageRepresent.phase)) { role.setName(WebConstant.ROLE_NAME.ManageRepresent.value); role.setDescription(WebConstant.ROLE_NAME.ManageRepresent.phase); - }else - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Stakeholder.phase)) { + } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Stakeholder.phase)) { role.setName(WebConstant.ROLE_NAME.Stakeholder.value); role.setDescription(WebConstant.ROLE_NAME.Stakeholder.phase); - }else - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.PM.phase)) { + } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.PM.phase)) { role.setName(WebConstant.ROLE_NAME.PM.value); role.setDescription(WebConstant.ROLE_NAME.PM.phase); - }else - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Member.phase)) { + } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Member.phase)) { role.setName(WebConstant.ROLE_NAME.Member.value); role.setDescription(WebConstant.ROLE_NAME.Member.phase); - }else - if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)) { + } else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)) { role.setName(WebConstant.ROLE_NAME.Attention.value); role.setDescription(WebConstant.ROLE_NAME.Attention.phase); - }else{ - throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName()+i)); + } else { + throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName() + i)); } proRoleService.saveProRole(role); proRoles.add(role); @@ -309,7 +306,7 @@ public class ExcelService implements IExcelService { } //二级角色 if (StrUtil.isNotEmpty(secondRoleCell)) { - if (!proMemberRoleExist(secondRoleCell,proRoles)) { + if (!proMemberRoleExist(secondRoleCell, proRoles)) { ProRole proRole = new ProRole(); proRole.setName(secondRoleCell); proRole.setParentId(firstRoleId); @@ -318,8 +315,8 @@ public class ExcelService implements IExcelService { proRoleService.saveProRole(proRole); proRoles.add(proRole); secondRoleId = proRole.getId(); - }else { - throw new BaseException(CodeEnum.WBS_REPEAT_ROLE_NAME.addMsg(wbsSheet.getSheetName()+i)); + } else { + throw new BaseException(CodeEnum.WBS_REPEAT_ROLE_NAME.addMsg(wbsSheet.getSheetName() + i)); } } if (ObjectUtil.isNull(secondRoleId)) { @@ -337,8 +334,8 @@ public class ExcelService implements IExcelService { proMemberRoleService.saveMemberRole(memberRole); } } - if(ObjectUtil.isNull(memberRole)){ - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName()+i)); + if (ObjectUtil.isNull(memberRole)) { + throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName() + i)); } } } @@ -376,8 +373,8 @@ public class ExcelService implements IExcelService { break; } } - if(ObjectUtil.isNull(roleId)){ - throw new BaseException(CodeEnum.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName()+i)); + if (ObjectUtil.isNull(roleId)) { + throw new BaseException(CodeEnum.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName() + i)); } } excludeRoleService.saveExcludeRole(excludeRole); @@ -399,7 +396,7 @@ public class ExcelService implements IExcelService { /** * 判断集合是否为空,有没有相同内容 */ - private boolean proMemberRoleExist(String memberRoleName,List proRoles) { + private boolean proMemberRoleExist(String memberRoleName, List proRoles) { if (CollectionUtil.isNotEmpty(proRoles)) { for (ProRole proMemberRole : proRoles) { if (proMemberRole.getName().equals(memberRoleName)) { @@ -426,17 +423,17 @@ public class ExcelService implements IExcelService { ProMember stakeholder = null; ProMember member = null; //手机号不能为空 - if((StrUtil.isNotEmpty(memberCell)&&StrUtil.isEmpty(phoneCell)) || - (StrUtil.isNotEmpty(stakeholderCell)&&StrUtil.isEmpty(stakeholderPhoneCell))){ - throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName()+i)); + if ((StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) || + (StrUtil.isNotEmpty(stakeholderCell) && StrUtil.isEmpty(stakeholderPhoneCell))) { + throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName() + i)); } //TODO 判断手机号格式 //添加奖惩干系人 if (StrUtil.isNotEmpty(stakeholderCell)) { - if(!stakeholderWithPhone(stakeholderList,stakeholderCell,stakeholderPhoneCell)) { + if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) { Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell); - if(ObjectUtil.isNotNull(userId)){ + if (ObjectUtil.isNotNull(userId)) { userIdSet.add(userId); } stakeholder = new ProMember(); @@ -453,15 +450,15 @@ public class ExcelService implements IExcelService { proMemberRole.setMemberId(stakeholder.getId()); proMemberRole.setRoleId(stakeholderId); proMemberRoleService.saveMemberRole(proMemberRole); - }else { - throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName()+i)); + } else { + throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName() + i)); } } //成员 if (StrUtil.isNotEmpty(memberCell)) { if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) { Long userId = userService.selectUserIdByPhone(phoneCell); - if(ObjectUtil.isNotNull(userId)){ + if (ObjectUtil.isNotNull(userId)) { userIdSet.add(userId); } member = new ProMember(); @@ -476,23 +473,24 @@ public class ExcelService implements IExcelService { proMemberService.saveMember(member); proMembers.add(member); // //创建者依据project的creatorId判断,不需要添加成员 - }else { - throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName()+i)); + } else { + throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName() + i)); } } } //TODO 每个成员都关注此项目(暂时) - addUserAttention(userIdSet,sysProject); + addUserAttention(userIdSet, sysProject); } else { throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET); } } + /** * 项目成员表内的每个人都关注此项目(暂时,当前版本) */ - private void addUserAttention(Set userIdList,SysProject sysProject){ - if(CollectionUtil.isNotEmpty(userIdList)){ - for(Long userId:userIdList){ + private void addUserAttention(Set userIdList, SysProject sysProject) { + if (CollectionUtil.isNotEmpty(userIdList)) { + for (Long userId : userIdList) { UserAttention userAttention = new UserAttention(); userAttention.setId(snowflake.nextId()); userAttention.setUserId(userId); @@ -501,19 +499,20 @@ public class ExcelService implements IExcelService { } } } + /** * 判断奖惩干系人与手机号对应是否正确 * 奖惩干系人可以重复,一个人只能对应一个手机号 */ - private boolean stakeholderWithPhone(List stakeholderList, String stakeholderName, String phone){ - if(CollectionUtil.isNotEmpty(stakeholderList)){ - for(ProMember proMember:stakeholderList){ - if(stakeholderName.equalsIgnoreCase(proMember.getNickname())){ - if(!proMember.getPhone().equalsIgnoreCase(phone)){ + private boolean stakeholderWithPhone(List stakeholderList, String stakeholderName, String phone) { + if (CollectionUtil.isNotEmpty(stakeholderList)) { + for (ProMember proMember : stakeholderList) { + if (stakeholderName.equalsIgnoreCase(proMember.getNickname())) { + if (!proMember.getPhone().equalsIgnoreCase(phone)) { return true; } - }else { - if(proMember.getPhone().equalsIgnoreCase(phone)){ + } else { + if (proMember.getPhone().equalsIgnoreCase(phone)) { return true; } } @@ -521,16 +520,17 @@ public class ExcelService implements IExcelService { } return false; } + /** - *判断成员和手机号是否重复 + * 判断成员和手机号是否重复 */ - private boolean memberAndPhoneRepeat(List proMembers, String memberName, String phone){ - if(CollectionUtil.isNotEmpty(proMembers)){ - for(ProMember proMember:proMembers){ - if(proMember.getNickname().equalsIgnoreCase(memberName)){ + private boolean memberAndPhoneRepeat(List proMembers, String memberName, String phone) { + if (CollectionUtil.isNotEmpty(proMembers)) { + for (ProMember proMember : proMembers) { + if (proMember.getNickname().equalsIgnoreCase(memberName)) { return true; } - if(proMember.getPhone().equalsIgnoreCase(phone)){ + if (proMember.getPhone().equalsIgnoreCase(phone)) { return true; } } @@ -543,7 +543,7 @@ public class ExcelService implements IExcelService { */ private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd, Long currentUserId, SysProject sysProject, List taskDetails, - List proRoles, List proMembers) throws Exception { + List proRoles, List proMembers, Map> hasGroupMap) throws Exception { Long pmRoleId = null; //获取项目经理的id(一级角色) for (ProRole role : proRoles) { @@ -659,8 +659,8 @@ public class ExcelService implements IExcelService { break; } } - if(ObjectUtil.isNull(executorRoleId)){ - throw new BaseException(CodeEnum.WBS_NOT_FIND_EXECUTOR_ROLE.addMsg(wbsSheet.getSheetName()+i)); + if (ObjectUtil.isNull(executorRoleId)) { + throw new BaseException(CodeEnum.WBS_NOT_FIND_EXECUTOR_ROLE.addMsg(wbsSheet.getSheetName() + i)); } } //检查人 @@ -673,8 +673,8 @@ public class ExcelService implements IExcelService { break; } } - if(ObjectUtil.isNull(checkerRoleId)){ - throw new BaseException(CodeEnum.WBS_NOT_FIND_CHECKER_ROLE.addMsg(wbsSheet.getSheetName()+i)); + if (ObjectUtil.isNull(checkerRoleId)) { + throw new BaseException(CodeEnum.WBS_NOT_FIND_CHECKER_ROLE.addMsg(wbsSheet.getSheetName() + i)); } } //奖惩金额 @@ -688,8 +688,8 @@ public class ExcelService implements IExcelService { taskDetail.setDelay((byte) WebConstant.TASK_DELAY.DelayManual.value); } else if (delay.equals(WebConstant.TASK_DELAY.Manual.phase)) { taskDetail.setDelay((byte) WebConstant.TASK_DELAY.Manual.value); - }else { - throw new BaseException(CodeEnum.WBS_DELAY_ERROR.addMsg(wbsSheet.getSheetName()+i)); + } else { + throw new BaseException(CodeEnum.WBS_DELAY_ERROR.addMsg(wbsSheet.getSheetName() + i)); } //延迟时间 if (StrUtil.isNotEmpty(delayTime)) { @@ -730,34 +730,37 @@ public class ExcelService implements IExcelService { //子任务 if (StrUtil.isNotEmpty(subTaskCell)) { taskDetail.setHasGroup((byte) 1); - switch (subTaskCell){ + switch (subTaskCell) { case "值日表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "运动计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "前端学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "后台学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "硬件学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "方圆学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; case "全体学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); + getSubTask(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); + break; + case "年终总结": + getSubTaskMt(xssfWorkbook, subTaskCell, taskDetail, taskDetails, proMembers, deliver, hasGroupMap); break; default: - throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName()+i)); + throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName() + i)); } - }else{ + } else { //不是分组任务,直接添加交付物 - readDeliverSheet(deliver,xssfWorkbook,taskDetail.getId()); + readDeliverSheet(deliver, xssfWorkbook, taskDetail.getId()); } //添加任务 proTaskDetailService.saveTaskDetail(taskDetail); @@ -776,11 +779,84 @@ public class ExcelService implements IExcelService { taskDetails.add(endTask); } + /** + * 读取年终总结子表 + */ + public void getSubTaskMt(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, + List taskDetails, List proMembers, String deliverCell, Map> hasGroupMap) { + List taskNameList = new ArrayList<>(); + + XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); + if (ObjectUtil.isNotNull(subTaskSheet)) { + for (int a = 2; a < subTaskSheet.getLastRowNum(); a++) { + String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1)); + String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2)); + String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3)); + //重复时间、相对时间 + String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4)); + String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6))); + //备注 + String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8)); + if (StrUtil.isNotEmpty(nameCell)) { + ProTaskDetail subTask = new ProTaskDetail(); + BeanUtil.copyProperties(parentTaskDetail, subTask); + subTask.setId(snowflake.nextId()); + subTask.setName(nameCell); + subTask.setDescription(descriptionCell); + if (StrUtil.isNotEmpty(beginCell)) { + subTask.setBeginTime(Long.valueOf(beginCell)); + } + if (StrUtil.isNotEmpty(endCell)) { + subTask.setEndTime(Long.valueOf(endCell)); + } + subTask.setLevel((byte) 2); + subTask.setHasGroup((byte) 0); + if (StrUtil.isNotEmpty(memberCell)) { + if (memberCell.equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)) { + subTask.setAllMember((byte) 1); + } else { + subTask.setAllMember((byte) 0); + if (CollectionUtil.isNotEmpty(proMembers)) { + Long proMemberId = null; + for (ProMember proMember : proMembers) { + if (memberCell.equalsIgnoreCase(proMember.getNickname())) { + proMemberId = proMember.getId(); + ProTaskMember proTaskMember = new ProTaskMember(); + proTaskMember.setId(snowflake.nextId()); + proTaskMember.setMemberId(proMemberId); + proTaskMember.setTaskDetailId(subTask.getId()); + taskMemberService.saveTaskMember(proTaskMember); + break; + } + } + if (ObjectUtil.isNull(proMemberId)) { + throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); + } + } + } + } else { + throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); + } + + //给每个子任务添加交付物 + readDeliverSheet(deliverCell, xssfWorkbook, subTask.getId()); + + proTaskDetailService.saveTaskDetail(subTask); + taskDetails.add(subTask); + taskNameList.add(subTask); + } + } + hasGroupMap.put(parentTaskDetail.getName(), taskNameList); + } else { + throw new BaseException(CodeEnum.WBS_NOT_SUB_TASK); + } + } + /** * 读取子任务表 */ public void getSubTask(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, - List taskDetails, List proMembers,String deliverCell) { + List taskDetails, List proMembers, String deliverCell, Map> hasGroupMap) { XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); Long startTime = parentTaskDetail.getBeginTime(); if (ObjectUtil.isNotNull(subTaskSheet)) { @@ -826,13 +902,13 @@ public class ExcelService implements IExcelService { break; } } - if(ObjectUtil.isNull(proMemberId)){ - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName()+a)); + if (ObjectUtil.isNull(proMemberId)) { + throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); } } } - }else { - throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName()+a)); + } else { + throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(subTaskSheet.getSheetName() + a)); } } } @@ -859,7 +935,7 @@ public class ExcelService implements IExcelService { } startTime = subTask.getEndTime(); //给每个子任务添加交付物 - readDeliverSheet(deliverCell,xssfWorkbook,subTask.getId()); + readDeliverSheet(deliverCell, xssfWorkbook, subTask.getId()); proTaskDetailService.saveTaskDetail(subTask); taskDetails.add(subTask); @@ -868,11 +944,12 @@ public class ExcelService implements IExcelService { } else { throw new BaseException(CodeEnum.WBS_NOT_SUB_TASK); } - parentTaskDetail.setEndTime(startTime); + parentTaskDetail.setRecStatus((byte) 2); } /** * 分解任务时间 + * * @param taskDetails * @throws Exception */ @@ -915,7 +992,7 @@ public class ExcelService implements IExcelService { /** * 读取交付物表 */ - private void readDeliverSheet(String deliverCell,XSSFWorkbook xssfWorkbook, Long taskId) { + private void readDeliverSheet(String deliverCell, XSSFWorkbook xssfWorkbook, Long taskId) { if (StrUtil.isNotEmpty(deliverCell)) { String str = ""; if (deliverCell.length() > 4) { @@ -953,15 +1030,16 @@ public class ExcelService implements IExcelService { /** * 读取插件 + * * @param xssfWorkbook * @param taskDetails * @param proRoles */ - private void readPlugin(XSSFWorkbook xssfWorkbook, List taskDetails, List proRoles) { + private void readPlugin(XSSFWorkbook xssfWorkbook, List taskDetails, List proRoles, Map> hasGroupMap) { SysPluginExample pluginExample = new SysPluginExample(); pluginExample.clear(); List sysPluginList = sysPluginDao.selectByExample(pluginExample); - if(CollectionUtil.isNotEmpty(sysPluginList)) { + if (CollectionUtil.isNotEmpty(sysPluginList)) { XSSFSheet sheet = xssfWorkbook.getSheet("插件"); if (ObjectUtil.isNotNull(sheet)) { Long taskId = null; @@ -969,50 +1047,69 @@ public class ExcelService implements IExcelService { XSSFRow roleRow = sheet.getRow(2); for (int i = 3; i < sheet.getLastRowNum(); i++) { + List taskNameList = null; XSSFRow pluginRow = sheet.getRow(i); String task = ExcelUtil.getCellValue(pluginRow.getCell(1)); //获取任务Id if (StrUtil.isNotEmpty(task)) { for (ProTaskDetail proTask : taskDetails) { if (task.equals(proTask.getName())) { - taskId = proTask.getId(); - break; + if (proTask.getHasGroup() == 1) { + taskNameList = hasGroupMap.get(proTask.getName()); + break; + } else { + taskId = proTask.getId(); + break; + } } } } for (int a = 2; a < roleRow.getLastCellNum(); a++) { - //获取memberRoleId - String roleCell = ExcelUtil.getCellValue(roleRow.getCell(a)); - if (StrUtil.isNotEmpty(roleCell) && CollectionUtil.isNotEmpty(proRoles)) { - for (ProRole role : proRoles) { - if (roleCell.equals(role.getName())) { - memberRoleId = role.getId(); - break; - } - } - } String plugin = ExcelUtil.getCellValue(pluginRow.getCell(a)); if (StrUtil.isNotEmpty(plugin)) { + //获取memberRoleId + String roleCell = ExcelUtil.getCellValue(roleRow.getCell(a)); + if (StrUtil.isNotEmpty(roleCell) && CollectionUtil.isNotEmpty(proRoles)) { + for (ProRole role : proRoles) { + if (roleCell.equals(role.getName())) { + memberRoleId = role.getId(); + break; + } + } + } + Long sysPluginId = null; - for(SysPlugin sysPlugin:sysPluginList){ - if(plugin.equalsIgnoreCase(sysPlugin.getName())){ + for (SysPlugin sysPlugin : sysPluginList) { + if (plugin.equalsIgnoreCase(sysPlugin.getName())) { sysPluginId = sysPlugin.getId(); + break; } } - if(ObjectUtil.isNull(sysPluginId)){ - throw new BaseException(CodeEnum.WBS_NOT_PLUGIN.addMsg(sheet.getSheetName()+i)); + if (ObjectUtil.isNull(sysPluginId)) { + throw new BaseException(CodeEnum.WBS_NOT_PLUGIN.addMsg(sheet.getSheetName() + i)); + } + if (CollectionUtil.isNotEmpty(taskNameList)) { + for (ProTaskDetail taskName : taskNameList) { + ProTaskPlugin taskPlugin = new ProTaskPlugin(); + taskPlugin.setId(snowflake.nextId()); + taskPlugin.setTaskDetailId(taskName.getId()); + taskPlugin.setPluginId(sysPluginId); + taskPlugin.setMemberRoleId(memberRoleId); + taskPluginService.savePlugin(taskPlugin); + } + } else { + ProTaskPlugin taskPlugin = new ProTaskPlugin(); + taskPlugin.setId(snowflake.nextId()); + taskPlugin.setTaskDetailId(taskId); + taskPlugin.setPluginId(sysPluginId); + taskPlugin.setMemberRoleId(memberRoleId); + taskPluginService.savePlugin(taskPlugin); } - ProTaskPlugin taskPlugin = new ProTaskPlugin(); - taskPlugin.setId(snowflake.nextId()); - taskPlugin.setTaskDetailId(taskId); - taskPlugin.setPluginId(sysPluginId); - taskPlugin.setMemberRoleId(memberRoleId); - taskPluginService.savePlugin(taskPlugin); } } } - }else{ + } else { throw new BaseException(CodeEnum.WBS_NOT_PLUGIN_SHEET); } } @@ -1020,6 +1117,7 @@ public class ExcelService implements IExcelService { /** * 返回信息 + * * @param currentUserId * @param sysProject * @return diff --git a/tall/src/main/java/com/ccsens/tall/service/IExcelMtService.java b/tall/src/main/java/com/ccsens/tall/service/IExcelMtService.java deleted file mode 100644 index 788b12dc..00000000 --- a/tall/src/main/java/com/ccsens/tall/service/IExcelMtService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.ccsens.tall.service; - -import com.ccsens.tall.bean.vo.ProjectVo; - -public interface IExcelMtService { - ProjectVo.ProjectInfo readXls(String path, Long currentUserId) throws Exception; - -} diff --git a/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java index f13cfe05..749b8e77 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java @@ -24,4 +24,5 @@ public interface IProMemberService { List selectByRole(Long roleId)throws Exception; + MemberVo.MemberInfo getMemberByUserIdAndProjectId(Long userId, Long projectId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java index b4d1b106..fd9ecec6 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java @@ -29,4 +29,6 @@ public interface IProTaskDetailService { void deleteTaskByRoleId(Long taskId) throws Exception; TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception; + + TaskVo.TaskInfoWithFeign getProjectIdByTaskId(Long taskId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java index 69b654a7..6b79dea7 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java @@ -1,5 +1,6 @@ package com.ccsens.tall.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.tall.bean.po.*; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.lang.reflect.Member; import java.util.ArrayList; import java.util.List; @@ -194,4 +196,16 @@ public class ProMemberService implements IProMemberService { return memberList; } + @Override + public MemberVo.MemberInfo getMemberByUserIdAndProjectId(Long userId, Long projectId) { + MemberVo.MemberInfo memberInfo = null; + ProMemberExample memberExample = new ProMemberExample(); + memberExample.createCriteria().andProjectIdEqualTo(projectId).andUserIdEqualTo(userId); + List proMemberList = proMemberDao.selectByExample(memberExample); + if(CollectionUtil.isNotEmpty(proMemberList)){ + memberInfo = new MemberVo.MemberInfo(); + BeanUtil.copyProperties(proMemberList.get(0),memberInfo); + } + return memberInfo; + } } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 7cdbfeea..906bfc68 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -93,7 +93,7 @@ public class ProTaskDetailService implements IProTaskDetailService { if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.value)) { obj = getTaskInfoByMvp(projectId, page, pageSize); } else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) { - obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, startTime, endTime, process, page, pageSize); + obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize); } else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) { obj = getTaskInfoByProjectIdAndRoleId(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize); } @@ -106,7 +106,7 @@ public class ProTaskDetailService implements IProTaskDetailService { /** * 查看任务 项目经理 */ - private TaskVo.ProTaskInfo getTaskInfoByProjectIdAndPM(Long currentUserId, Long projectId, Long startTime, Long endTime, Integer process, Integer page, Integer pageSize) throws Exception { + private TaskVo.ProTaskInfo getTaskInfoByProjectIdAndPM(Long currentUserId, Long projectId,Long roleId, Long startTime, Long endTime, Integer process, Integer page, Integer pageSize) throws Exception { ProShow proShow = proShowService.selectByProjectId(projectId); TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); @@ -131,9 +131,12 @@ public class ProTaskDetailService implements IProTaskDetailService { normalTask.setId(null); normalTask.setSequence(sequence); //查找一级任务下的二级任务 - List secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId, firstTaskDetail.getId(), startTime, endTime); + List secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId, firstTaskDetail.getId(), startTime, endTime,roleId); if (CollectionUtil.isNotEmpty(secondNormalTaskList)) { for (TaskVo.NormalTask task : secondNormalTaskList) { + //处理插件 + managePlugin(currentUserId,roleId,task); + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); if (ObjectUtil.isNotNull(subTimeMember)) { task.setRealEndTime(subTimeMember.getRealFinishTime()); @@ -197,8 +200,11 @@ public class ProTaskDetailService implements IProTaskDetailService { List secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, startTime, endTime); List secondTaskVoList2 = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, allMemberId, startTime, endTime); secondTaskVoList.addAll(secondTaskVoList2); + if (CollectionUtil.isNotEmpty(secondTaskVoList)) { for (TaskVo.NormalTask normalTask : secondTaskVoList) { + //处理插件 + managePlugin(currentUserId,roleId,normalTask); ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); if (ObjectUtil.isNotNull(subTimeMember)) { normalTask.setProcess(subTimeMember.getComplatedStatus()); @@ -351,6 +357,34 @@ public class ProTaskDetailService implements IProTaskDetailService { return normalTaskList; } + /** + * 处理任务的插件 + */ + private void managePlugin(Long userId,Long roleId,TaskVo.NormalTask normalTask) throws Exception { + Boolean isMain = proMemberService.userIsBelongRole(userId,roleId); + if(!isMain){ + normalTask.setPlugins(null); + }else { + if(CollectionUtil.isNotEmpty(normalTask.getPlugins())){ + List pluginVoList = new ArrayList<>(); + for(TaskVo.PluginVo pluginVo : normalTask.getPlugins()){ + String[] pluginIds = pluginVo.getId().split(","); + String[] pluginNames = pluginVo.getName().split(","); + + TaskVo.PluginVo plugin = null; + for(int i = 0;i getMemberByUserIdAndProjectId( Long userId,Long projectId) throws Exception { + + MemberVo.MemberInfo memberInfo = proMemberService.getMemberByUserIdAndProjectId(userId,projectId); + return JsonResponse.newInstance().ok(memberInfo); + } } diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index 0f25b165..d2f6b7fa 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -61,11 +61,17 @@ d.virtual as tVirtual, d.delay as tDelay, d.has_group as tHasGroup, - p.id as pId, - sp.name as pName + GROUP_CONCAT(p.id) as pId, + GROUP_CONCAT(sp.name) as pName 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 + AND + ( + p.member_role_id = #{roleId} + OR + p.id IS NULL + ) LEFT JOIN t_sys_plugin sp ON sp.id = p.plugin_id WHERE d.rec_status = 0 @@ -81,8 +87,11 @@ AND s.end_time >= #{startTime} + AND - Level = 2 + d.Level in (2,3) + AND + d.has_group = 0 group by s.task_detail_id @@ -105,11 +114,17 @@ d.virtual as tVirtual, d.delay as tDelay, d.has_group as tHasGroup, - p.id as pId, - sp.name as pName + GROUP_CONCAT(p.id) as pId, + GROUP_CONCAT(sp.name) as pName 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 + AND + ( + p.member_role_id = #{roleId} + OR + p.id IS NULL + ) LEFT JOIN t_sys_plugin sp ON sp.id = p.plugin_id WHERE d.rec_status = 0 @@ -121,8 +136,11 @@ s.begin_time < #{endTime} AND s.end_time >= #{startTime} + + AND + d.Level in (2,3) AND - level = 2 + d.has_group = 0 group by s.task_detail_id @@ -173,8 +191,8 @@ d.virtual as tVirtual, d.delay as tDelay, d.has_group as tHasGroup, - p.id as pId, - sp.name as pName + GROUP_CONCAT(p.id) as pId, + GROUP_CONCAT(sp.name) as pName 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 @@ -239,8 +257,8 @@ d.virtual as tVirtual, d.delay as tDelay, d.has_group as tHasGroup, - p.id as pId, - sp.name as pName + GROUP_CONCAT(p.id) as pId, + GROUP_CONCAT(sp.name) as pName 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 diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index 0bd8fd2e..c49c6770 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -70,6 +70,11 @@ public enum CodeEnum { DOCTOR_NOT_SUBMIT(55,"尚未进行资格认证",true), REPORT_NOT_FOUND(56,"对不起,没有找到您查询的报告单,请确认报告单是否存在。",true), PATIENT_NOT_CHOICE(57,"没有选择病人,不进行保存答案。", true), + + NOT_GAME_TYPE(58,"对不起,未找到对应的游戏",true), + SIGNIN_REPEAT(59,"请勿重复签到",true), + SCORE_REPEAT(60,"您已经评分,请勿重复提交",true), + NOT_MEMBER(61,"对不起,找不到对应的成员信息",true) ; public CodeEnum addMsg(String msg){ diff --git a/util/src/main/java/com/ccsens/util/WebConstant.java b/util/src/main/java/com/ccsens/util/WebConstant.java index 931aad87..b98c27cf 100644 --- a/util/src/main/java/com/ccsens/util/WebConstant.java +++ b/util/src/main/java/com/ccsens/util/WebConstant.java @@ -69,10 +69,11 @@ public class WebConstant { public static final String UPLOAD_PATH_BASE = "/home/cloud/tall/uploads"; public static final String UPLOAD_PATH_DELIVER = UPLOAD_PATH_BASE + File.separator + "delivers"; public static final String UPLOAD_PATH_DELIVER1 ="delivers"; - public static final String UPLOAD_PATH_PREVIEW ="preview"; public static final String UPLOAD_PROJECT_WBS = UPLOAD_PATH_BASE + File.separator + "project"; public static final String URL_BASE = "https://api.ccsens.com/ptpro/uploads/"; - public static final String TEST_URL_BASE = "https://test.tall.wiki/gateway/tall/v1.0/uploads/"; + public static final String TEST_URL = "https://test.tall.wiki/"; + public static final String TEST_URL_GAME = TEST_URL + "game/"; + public static final String TEST_URL_BASE = TEST_URL + "gateway/tall/v1.0/uploads/"; public static final Integer Expired_Verify_Code_In_Seconds = 120; public static final Integer Exist_Verify_Code_In_Seconds = 60; @@ -452,7 +453,7 @@ public class WebConstant { public enum Message_Sync_Event{ ChangeDuration(0,"ChangeDuration"),Move(1,"Move"), - Remove(2,"Remove"),Add(3,"Add"),Start(4,"Start"),ChangeBeginTime(5,"ChangeBeginTime"); + Remove(2,"Remove"),Add(3,"Add"),Start(4,"Start"),ChangeBeginTime(5,"ChangeBeginTime"),Show(6,"Show"); public int value; public String phase; Message_Sync_Event(int value,String thePhase){ @@ -467,6 +468,7 @@ public class WebConstant { case 3: return Add; case 4: return Start; case 5: return ChangeBeginTime; + case 6: return Show; default: return null; } } @@ -488,6 +490,9 @@ public class WebConstant { } if(phase.equalsIgnoreCase("ChangeBeginTime")) { return ChangeBeginTime; + } + if(phase.equalsIgnoreCase("Show")) { + return Show; } else { return null; } diff --git a/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java b/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java index 7234f8e1..d79c315f 100644 --- a/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java +++ b/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java @@ -8,6 +8,8 @@ import org.springframework.context.annotation.Configuration; public class RabbitMQConfig { public static final String TALL_MESSAGE_1 = "tall_message_1"; public static final String TALL_MESSAGE_2 = "tall_message_2"; + public static final String RabbitMQ_QUEUE_NAME = "Queue_Anyring"; + @Bean public Queue queue(){ return new Queue(TALL_MESSAGE_1); @@ -16,6 +18,9 @@ public class RabbitMQConfig { public Queue queue1(){ return new Queue(TALL_MESSAGE_2); } - + @Bean + public Queue queue2(){ + return new Queue(RabbitMQ_QUEUE_NAME); + } }