Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

recovery
hyy-alt 4 years ago
parent
commit
7edadb8087
  1. 3
      cloudutil/src/main/resources/application-util-greenvalley.yml
  2. 10
      pom.xml
  3. 2
      tall/src/main/java/com/ccsens/tall/bean/dto/ChartDto.java
  4. 15
      tall/src/main/java/com/ccsens/tall/bean/dto/LwbsDto.java
  5. 2
      tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java
  6. 21
      tall/src/main/java/com/ccsens/tall/bean/dto/ProjectMessageDto.java
  7. 40
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  8. 2
      tall/src/main/java/com/ccsens/tall/bean/vo/InputDocVo.java
  9. 96
      tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java
  10. 4
      tall/src/main/java/com/ccsens/tall/bean/vo/ProjectMessageVo.java
  11. 16
      tall/src/main/java/com/ccsens/tall/bean/vo/RoleVo.java
  12. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
  13. 2
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  14. 11
      tall/src/main/java/com/ccsens/tall/persist/dao/SysOperationDao.java
  15. 21
      tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java
  16. 2
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java
  17. 6
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java
  18. 94
      tall/src/main/java/com/ccsens/tall/service/ChartService.java
  19. 4
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  20. 43
      tall/src/main/java/com/ccsens/tall/service/IInputDocService.java
  21. 2
      tall/src/main/java/com/ccsens/tall/service/IProMemberService.java
  22. 8
      tall/src/main/java/com/ccsens/tall/service/IProRoleService.java
  23. 2
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  24. 136
      tall/src/main/java/com/ccsens/tall/service/IRobotService.java
  25. 2
      tall/src/main/java/com/ccsens/tall/service/ITaskDeliverService.java
  26. 3
      tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java
  27. 456
      tall/src/main/java/com/ccsens/tall/service/InputDocService.java
  28. 1
      tall/src/main/java/com/ccsens/tall/service/LwbsService.java
  29. 15
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  30. 163
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  31. 20
      tall/src/main/java/com/ccsens/tall/service/ProjectMessageService.java
  32. 12
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  33. 341
      tall/src/main/java/com/ccsens/tall/service/RobotService.java
  34. 52
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  35. 51
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  36. 28
      tall/src/main/java/com/ccsens/tall/service/UserService.java
  37. 126
      tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java
  38. 3
      tall/src/main/java/com/ccsens/tall/web/DeliverController.java
  39. 2
      tall/src/main/java/com/ccsens/tall/web/ExcelController.java
  40. 3
      tall/src/main/java/com/ccsens/tall/web/InputDocController.java
  41. 4
      tall/src/main/java/com/ccsens/tall/web/LwbsController.java
  42. 5
      tall/src/main/java/com/ccsens/tall/web/MemberController.java
  43. 3
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  44. 8
      tall/src/main/java/com/ccsens/tall/web/RoleController.java
  45. 54
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  46. 23
      tall/src/main/resources/application-greenvalley.yml
  47. 56
      tall/src/main/resources/banner.txt
  48. 21
      tall/src/main/resources/banner2.txt
  49. 7
      tall/src/main/resources/druid-greenvalley.yml
  50. 6
      tall/src/main/resources/mapper_dao/ProDeliverHistoryRecordDao.xml
  51. 12
      tall/src/main/resources/mapper_dao/ProMemberDao.xml
  52. 16
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  53. 18
      tall/src/main/resources/mapper_dao/SysOperationDao.xml
  54. 62
      tall/src/main/resources/mapper_dao/SysProjectDao.xml
  55. 3
      tall/src/main/resources/mapper_dao/TaskDetailDao.xml
  56. 95
      tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml
  57. 16
      tcm/src/main/java/com/ccsens/tcm/api/ImportController.java
  58. 15
      tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java
  59. 15
      tcm/src/main/java/com/ccsens/tcm/bean/dto/QuestionDto.java
  60. 22
      tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformation.java
  61. 130
      tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformationExample.java
  62. 11
      tcm/src/main/java/com/ccsens/tcm/bean/po/Question.java
  63. 60
      tcm/src/main/java/com/ccsens/tcm/bean/po/QuestionExample.java
  64. 6
      tcm/src/main/java/com/ccsens/tcm/bean/vo/QuestionVo.java
  65. 16
      tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionDao.java
  66. 13
      tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionHospitalDao.java
  67. 7
      tcm/src/main/java/com/ccsens/tcm/persist/dao/ReportCodeDao.java
  68. 2
      tcm/src/main/java/com/ccsens/tcm/service/IImportService.java
  69. 124
      tcm/src/main/java/com/ccsens/tcm/service/ImportService.java
  70. 6
      tcm/src/main/java/com/ccsens/tcm/service/OcrService.java
  71. 24
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  72. 7
      tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java
  73. 71
      tcm/src/main/resources/mapper_dao/QuestionDao.xml
  74. 18
      tcm/src/main/resources/mapper_dao/QuestionHospitalDao.xml
  75. 2
      tcm/src/main/resources/mapper_dao/QuestionOcrDao.xml
  76. 28
      tcm/src/main/resources/mapper_dao/ReportCodeDao.xml
  77. 50
      tcm/src/main/resources/mapper_raw/PatientInformationMapper.xml
  78. 35
      tcm/src/main/resources/mapper_raw/QuestionMapper.xml
  79. 2
      util/src/main/java/com/ccsens/util/WebConstant.java
  80. 51
      util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java

3
cloudutil/src/main/resources/application-util-greenvalley.yml

@ -19,7 +19,8 @@ eureka:
client: client:
service-url: service-url:
# 指定eureka server通信地址,注意/eureka/小尾巴不能少 # 指定eureka server通信地址,注意/eureka/小尾巴不能少
defaultZone: http://admin:admin@82.156.116.247:7010/eureka/ # defaultZone: http://admin:admin@82.156.116.247:7010/eureka/
defaultZone: http://admin:admin@49.232.6.143:7010/eureka/
instance: instance:
# 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server # 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server
prefer-ip-address: true prefer-ip-address: true

10
pom.xml

@ -9,10 +9,10 @@
<module>cloudutil</module> <module>cloudutil</module>
<module>util</module> <module>util</module>
<module>tall</module> <module>tall</module>
<module>ht</module> <!-- <module>ht</module>-->
<module>game</module> <!-- <module>game</module>-->
<module>mt</module> <!-- <module>mt</module>-->
<module>wisdomcar</module> <!-- <module>wisdomcar</module>-->
<module>beneficiation</module> <module>beneficiation</module>
<!-- <module>form</module>--> <!-- <module>form</module>-->
<!-- <module>signin</module>--> <!-- <module>signin</module>-->
@ -20,7 +20,7 @@
<!-- <module>health</module>--> <!-- <module>health</module>-->
<!-- <module>ct</module>--> <!-- <module>ct</module>-->
<module>tcm</module> <module>tcm</module>
<module>ocr</module> <!-- <module>ocr</module>-->
</modules> </modules>

2
tall/src/main/java/com/ccsens/tall/bean/dto/ChartDto.java

@ -16,10 +16,8 @@ public class ChartDto {
@NotNull @NotNull
@ApiModelProperty("项目id") @ApiModelProperty("项目id")
private Long projectId; private Long projectId;
@NotEmpty
@ApiModelProperty("开始日期") @ApiModelProperty("开始日期")
private String start; private String start;
@NotEmpty
@ApiModelProperty("结束日期") @ApiModelProperty("结束日期")
private String end; private String end;
@ApiModelProperty("角色id") @ApiModelProperty("角色id")

15
tall/src/main/java/com/ccsens/tall/bean/dto/LwbsDto.java

@ -14,12 +14,23 @@ public class LwbsDto {
@Data @Data
@ApiModel("查询lwbs的任务") @ApiModel("查询lwbs的任务")
public static class SelByUserIdToComProject{ public static class SelByUserIdToComProject{
@NotNull
@ApiModelProperty("开始时间") @ApiModelProperty("开始时间")
private Long startTime; private Long startTime;
@NotNull
@ApiModelProperty("结束时间") @ApiModelProperty("结束时间")
private Long endTime; private Long endTime;
public Long getStartTime() {
if(startTime == null){
return DateUtil.beginOfWeek(new Date()).getTime();
}
return startTime;
}
public Long getEndTime() {
if(startTime == null){
return DateUtil.endOfWeek(new Date()).getTime();
}
return endTime;
}
} }
@Data @Data
@ApiModel("查询lwbs的任务") @ApiModel("查询lwbs的任务")

2
tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java

@ -103,6 +103,8 @@ public class ProjectDto {
private String detailPath; private String detailPath;
@ApiModelProperty("项目关联pims域内的导航栏信息 0无关联 1例会系统 2财务系统 3课程") @ApiModelProperty("项目关联pims域内的导航栏信息 0无关联 1例会系统 2财务系统 3课程")
private Integer pimsNavType; private Integer pimsNavType;
@ApiModelProperty("项目样式 0 胶囊 1列表")
private Byte style;
public Integer getSelectTaskType(){ public Integer getSelectTaskType(){
if(ObjectUtil.isNull(selectType)) { if(ObjectUtil.isNull(selectType)) {

21
tall/src/main/java/com/ccsens/tall/bean/dto/ProjectMessageDto.java

@ -1,5 +1,6 @@
package com.ccsens.tall.bean.dto; package com.ccsens.tall.bean.dto;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -7,6 +8,7 @@ import lombok.Data;
import javax.validation.constraints.Max; import javax.validation.constraints.Max;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Date;
/** /**
* @description: * @description:
@ -45,6 +47,10 @@ public class ProjectMessageDto {
@NotNull @NotNull
@ApiModelProperty("项目ID") @ApiModelProperty("项目ID")
private Long projectId; private Long projectId;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
@ApiModelProperty("第几页") @ApiModelProperty("第几页")
@Min(value = 1) @Min(value = 1)
private int pageNum = 1; private int pageNum = 1;
@ -52,6 +58,21 @@ public class ProjectMessageDto {
@Min(value = 1) @Min(value = 1)
@Max(value=100) @Max(value=100)
private int pageSize = 10; private int pageSize = 10;
public Long getStartTime() {
if(startTime == null){
return DateUtil.beginOfWeek(new Date()).getTime();
}
return startTime;
}
public Long getEndTime() {
if(startTime == null){
return DateUtil.endOfWeek(new Date()).getTime();
}
return endTime;
}
} }
@Data @Data

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

@ -1,5 +1,6 @@
package com.ccsens.tall.bean.dto; package com.ccsens.tall.bean.dto;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -286,6 +287,45 @@ public class TaskDto {
private Integer type; private Integer type;
} }
@ApiModel("查看看板信息")
@Data
public static class QueryKanbanTask {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("角色id 不传则查找全部")
private Long roleId;
@ApiModelProperty("任务状态 0未开始 1进行中 2已完成")
private Integer type;
@ApiModelProperty("页数")
private Integer page = 1;
@ApiModelProperty("每页数量")
private Integer pageSize = 10;
@ApiModelProperty("排序方式 0时间排序 1优先级排序 没有则默认时间排序")
private Integer orderType = 0;
@ApiModelProperty("排序方式 0倒序 1正序 默认倒序")
private Integer order = 0;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
public Long getStartTime() {
if(startTime == null){
return DateUtil.beginOfWeek(new Date()).getTime();
}
return startTime;
}
public Long getEndTime() {
if(startTime == null){
return DateUtil.endOfWeek(new Date()).getTime();
}
return endTime;
}
}
@Data @Data
@ApiModel("修改任务配置") @ApiModel("修改任务配置")
public static class UpdateTaskConfig{ public static class UpdateTaskConfig{

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

@ -93,6 +93,8 @@ public class InputDocVo {
public static class DeliverHistory{ public static class DeliverHistory{
@ApiModelProperty("交付物历史记录的id") @ApiModelProperty("交付物历史记录的id")
private Long id; private Long id;
@ApiModelProperty("输入输出文档名")
private String deliverName;
@ApiModelProperty("成员id") @ApiModelProperty("成员id")
private Long memberId; private Long memberId;
@ApiModelProperty("成员名称") @ApiModelProperty("成员名称")

96
tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java

@ -281,4 +281,100 @@ public class MessageVo {
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,deliverName)); .appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,deliverName));
return inform; return inform;
} }
/**
* 添加角色
*/
public static Inform addRoleComment(Long userId,String userName,Long projectId,String projectName,String roleName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName));
return inform;
}
/**
* 修改角色
*/
public static Inform updateRoleComment(Long userId,String userName,Long projectId,String projectName,String roleName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName));
return inform;
}
/**
* 删除角色
*/
public static Inform delRoleComment(Long userId,String userName,Long projectId,String projectName,String roleName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName));
return inform;
}
/**
* 添加成员
*/
public static Inform saveMember(Long userId,String userName,Long projectId,String projectName,String memberName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName));
return inform;
}
/**
* 删除成员
*/
public static Inform delMember(Long userId,String userName,Long projectId,String projectName,String memberName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName));
return inform;
}
/**
* 修改成员
*/
public static Inform updateMember(Long userId,String userName,Long projectId,String projectName,String memberName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName));
return inform;
}
/**
* 添加项目
*/
public static Inform saveWbs(Long userId,String userName,Long projectId,String projectName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)));
return inform;
}
/**
* 修改项目
*/
public static Inform updateProject(Long userId,String userName,Long projectId,String projectName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)));
return inform;
}
/**
* 删除项目
*/
public static Inform delProject(Long userId,String userName,Long projectId,String projectName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)));
return inform;
}
} }

4
tall/src/main/java/com/ccsens/tall/bean/vo/ProjectMessageVo.java

@ -39,7 +39,7 @@ public class ProjectMessageVo {
private Byte readStatus; private Byte readStatus;
@ApiModelProperty("消息内容") @ApiModelProperty("消息内容")
List<MessageVo.Message> messages; List<MessageVo.Message> messages;
@JsonFormat(pattern="yyyy-MM-dd HH:mm") @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone="GMT+8")
@ApiModelProperty("发送时间") @ApiModelProperty("发送时间")
private Date createTime; private Date createTime;
} }
@ -53,7 +53,7 @@ public class ProjectMessageVo {
private Long operationId; private Long operationId;
@ApiModelProperty("消息内容") @ApiModelProperty("消息内容")
List<MessageVo.Message> messages; List<MessageVo.Message> messages;
@JsonFormat(pattern="yyyy-MM-dd HH:mm") @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone="GMT+8")
@ApiModelProperty("发送时间") @ApiModelProperty("发送时间")
private Date createTime; private Date createTime;
} }

16
tall/src/main/java/com/ccsens/tall/bean/vo/RoleVo.java

@ -36,8 +36,22 @@ public class RoleVo {
private String name; private String name;
@ApiModelProperty("角色排序") @ApiModelProperty("角色排序")
private Integer sequence; private Integer sequence;
@ApiModelProperty("是否是pm 是pm;true 不是pm; false ") @ApiModelProperty("是否是pm 是pm;true 不是pm; false")
private Boolean isPM; private Boolean isPM;
@ApiModelProperty("是否是变身后 0否 1是")
private Integer imitation=0;
@ApiModelProperty("该角色是否显示")
private Boolean isShow = true;
@ApiModelProperty("当前用户是否属于该角色")
private Boolean mine;
@ApiModelProperty("是否是项目虚拟的角色 0否 1是")
private Integer projectRole=0;
@ApiModelProperty("关联项目的id")
private Integer relevanceProjectId;
@ApiModelProperty("关联项目的名称")
private Integer relevanceProjectName;
@ApiModelProperty("是否是当前角色的奖惩干系人")
private Boolean stakeholder = false;
} }
@Data @Data
@ApiModel("添加时返回成员信息") @ApiModel("添加时返回成员信息")

8
tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java

@ -52,4 +52,12 @@ public interface ProMemberDao extends ProMemberMapper{
* @return * @return
*/ */
List<ProjectVo.MemberList> queryMembersByProjectId(@Param("projectId")Long projectId); List<ProjectVo.MemberList> queryMembersByProjectId(@Param("projectId")Long projectId);
/**
* 通过userId和项目id查询memberId
* @param projectIdList 全部的项目id
* @param currentUserId userId
* @return 返回所有的成员id
*/
List<Long> getIdByUserIdAndProjectId(@Param("projectIdList")List<Long> projectIdList, @Param("currentUserId")Long currentUserId);
} }

2
tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java

@ -91,7 +91,7 @@ public interface ProRoleDao extends ProRoleMapper{
* @param projectId * @param projectId
* @return * @return
*/ */
List<ProjectVo.RoleInfo> selectSecondRolesShowByRoleId(@Param("projectId") Long projectId,@Param("roleIdList") List<Long> roleIdList); List<ProjectVo.RoleInfo> selectSecondRolesShowByRoleId(@Param("projectId") Long projectId,@Param("memberId") Long memberId);
// /** // /**
// * 查找项目下的所有成员的名字用“,”分隔 // * 查找项目下的所有成员的名字用“,”分隔

11
tall/src/main/java/com/ccsens/tall/persist/dao/SysOperationDao.java

@ -35,12 +35,19 @@ public interface SysOperationDao extends SysOperationMapper {
*/ */
List<MessageVo.Message> queryContent(@Param("operationId") Long operationId); List<MessageVo.Message> queryContent(@Param("operationId") Long operationId);
// /**
// * 查询项目动态
// * @param param
// * @return
// */
// List<ProjectMessageVo.ProjectMsg> queryProjectMsg(ProjectMessageDto.ProjectMsg param);
/** /**
* 查询项目动态 * 查询项目动态
* @param param * @param projectIdList
* @return * @return
*/ */
List<ProjectMessageVo.ProjectMsg> queryProjectMsg(ProjectMessageDto.ProjectMsg param); List<ProjectMessageVo.ProjectMsg> queryProjectMsg(@Param("projectIdList") List<Long> projectIdList);
/** /**
* 查询任务下的输入输入文档消息id * 查询任务下的输入输入文档消息id

21
tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java

@ -28,24 +28,24 @@ public interface SysProjectDao extends SysProjectMapper{
List<ProjectVo.RelevanceProject> selectRelevanceProject(@Param("projectId")Long projectId); List<ProjectVo.RelevanceProject> selectRelevanceProject(@Param("projectId")Long projectId);
List<ChartVo.__ExecutorChart> getExecutorChart(@Param("projectId")Long projectId,@Param("type")Integer type,@Param("process")Integer process, List<ChartVo.__ExecutorChart> getExecutorChart(@Param("projectIdList")List<Long> projectIdList,@Param("type")Integer type,@Param("process")Integer process,
@Param("roleIdList")List<Long> roleIdList,@Param("beginTime")Long beginTime,@Param("endTime")Long endTime); @Param("roleIdList")List<Long> roleIdList,@Param("beginTime")Long beginTime,@Param("endTime")Long endTime);
List<ChartVo.CompleteTaskNum> getCompleteTaskByTime(@Param("projectId")Long projectId,@Param("roleIdList")List<Long> roleIdList, List<ChartVo.CompleteTaskNum> getCompleteTaskByTime(@Param("projectIdList")List<Long> projectIdList,@Param("roleIdList")List<Long> roleIdList,
@Param("beginTime")Long beginTime,@Param("endTime")Long endTime); @Param("beginTime")Long beginTime,@Param("endTime")Long endTime);
List<ChartVo.ProjectTrendVo> getProjectTrend(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, List<ChartVo.ProjectTrendVo> getProjectTrend(@Param("projectIdList")List<Long> projectIdList, @Param("start")Long start, @Param("end")Long end,
@Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId); @Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId);
ChartVo.ProjectOverview getOverview(@Param("projectId")Long projectId, @Param("beginTime")Long beginTime,@Param("endTime")Long endTime,@Param("roleIdList")List<Long> roleIdList); ChartVo.ProjectOverview getOverview(@Param("projectIdList")List<Long> projectIdList, @Param("beginTime")Long beginTime,@Param("endTime")Long endTime,@Param("roleIdList")List<Long> roleIdList);
List<ChartVo.BurnoutFigure> getBurnoutFigure(@Param("projectId")Long projectId, List<ChartVo.BurnoutFigure> getBurnoutFigure(@Param("projectIdList")List<Long> projectIdList,
@Param("start")Long start, @Param("end")Long end, @Param("start")Long start, @Param("end")Long end,
@Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId,@Param("type") Integer type); @Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId,@Param("type") Integer type);
// Integer getTaskTotalByProjectId(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, @Param("roleId")Long roleId); // Integer getTaskTotalByProjectId(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, @Param("roleId")Long roleId);
ChartVo.ProjectOverview getOverviewByToDay(@Param("projectId")Long projectId, @Param("startTime")Long startTime, @Param("endTime")Long endTime,@Param("roleIdList")List<Long> roleIdList); ChartVo.ProjectOverview getOverviewByToDay(@Param("projectIdList")List<Long> projectIdList, @Param("startTime")Long startTime, @Param("endTime")Long endTime,@Param("roleIdList")List<Long> roleIdList);
/** /**
* 根据父项目id查找项目不包含当前项目 * 根据父项目id查找项目不包含当前项目
@ -63,4 +63,13 @@ public interface SysProjectDao extends SysProjectMapper{
* @return * @return
*/ */
List<LwbsVo.SelByUserIdToComProjectVo> queryByUserId(@Param("startTime")Long startTime,@Param("endTime")Long endTime, @Param("userId")Long userId); List<LwbsVo.SelByUserIdToComProjectVo> queryByUserId(@Param("startTime")Long startTime,@Param("endTime")Long endTime, @Param("userId")Long userId);
/**
*
* @param startTime 开始时间
* @param endTime 结束时间
* @param userId userId
* @return
*/
List<Long> queryProjectIdByUserId(@Param("startTime")Long startTime,@Param("endTime") Long endTime, @Param("userId")Long userId);
} }

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

@ -53,7 +53,7 @@ public interface TaskDetailDao extends ProTaskDetailMapper {
* @param parentTaskId * @param parentTaskId
* @return * @return
*/ */
List<TaskVo.TaskListByProjectId> getTaskByParentId(@Param("parentTaskId")Long parentTaskId,@Param("milestone")Integer milestone,@Param("beginTime")Long beginTime,@Param("endTime")Long endTime); List<TaskVo.TaskListByProjectId> getTaskByParentId(@Param("parentTaskId")Long parentTaskId,@Param("milestone")String milestone,@Param("beginTime")Long beginTime,@Param("endTime")Long endTime);
/** /**
* LWBS 查询其他任务 * LWBS 查询其他任务

6
tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java

@ -14,10 +14,10 @@ public interface TaskSubTimeDao extends ProTaskSubTimeMapper{
void clearTaskRealTime(@Param("projectId")Long projectId); void clearTaskRealTime(@Param("projectId")Long projectId);
List<TaskVo.KanBanTask> getKanbanTake(@Param("userId")Long userId,@Param("projectId")Long projectId, @Param("roleId")Long roleId, List<TaskVo.KanBanTask> getKanbanTake(@Param("userId")Long userId,@Param("projectIdList")List<Long> projectIdList, @Param("roleId")Long roleId,
@Param("type") Integer type,@Param("memberId")Long memberId,@Param("orderType")Integer orderType,@Param("order")Integer order); @Param("type") Integer type,@Param("memberIdList")List<Long> memberIdList,@Param("orderType")Integer orderType,@Param("order")Integer order);
List<TaskVo.KanBanTask> getKanbanTakeByType(@Param("userId")Long userId,@Param("projectId")Long projectId, @Param("roleId")Long roleId, List<TaskVo.KanBanTask> getKanbanTakeByType(@Param("userId")Long userId,@Param("projectIdList")List<Long> projectIdList, @Param("roleId")Long roleId,
@Param("type")Integer type,@Param("orderType")Integer orderType,@Param("order")Integer order); @Param("type")Integer type,@Param("orderType")Integer orderType,@Param("order")Integer order);
List<TaskVo.TaskMinutesWps> queryMinutesTaskByTime(@Param("projectId")Long projectId, @Param("startTime")Long startTime, @Param("endTime")Long endTime); List<TaskVo.TaskMinutesWps> queryMinutesTaskByTime(@Param("projectId")Long projectId, @Param("startTime")Long startTime, @Param("endTime")Long endTime);

94
tall/src/main/java/com/ccsens/tall/service/ChartService.java

@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -34,11 +35,25 @@ public class ChartService implements IChartService{
*/ */
@Override @Override
public ChartVo.ExecutorChart getExecutorChart(Long currentUserId,ChartDto.ChartsExecutorDto executor) { public ChartVo.ExecutorChart getExecutorChart(Long currentUserId,ChartDto.ChartsExecutorDto executor) {
SysProject sysProject = sysProjectDao.selectByPrimaryKey(executor.getProjectId());
if(ObjectUtil.isNull(sysProject)){ //验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
throw new BaseException(CodeEnum.NOT_PROJECT); List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(executor.getProjectId())){
Long startTime = executor.getBeginTime() == null ? DateUtil.beginOfWeek(new Date()).getTime() : executor.getBeginTime();
Long endTime = executor.getEndTime() == null ? DateUtil.endOfWeek(new Date()).getTime() : executor.getEndTime();
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(startTime,endTime,currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(executor.getProjectId());
} }
List<ChartVo.__ExecutorChart> executorChartList = sysProjectDao.getExecutorChart(executor.getProjectId(),executor.getType(), executor.getProcess(),
// SysProject sysProject = sysProjectDao.selectByPrimaryKey(executor.getProjectId());
// if(ObjectUtil.isNull(sysProject)){
// throw new BaseException(CodeEnum.NOT_PROJECT);
// }
List<ChartVo.__ExecutorChart> executorChartList = sysProjectDao.getExecutorChart(projectIdList,executor.getType(), executor.getProcess(),
executor.getRoleList(),executor.getBeginTime(),executor.getEndTime()); executor.getRoleList(),executor.getBeginTime(),executor.getEndTime());
ChartVo.ExecutorChart executorChart = new ChartVo.ExecutorChart(); ChartVo.ExecutorChart executorChart = new ChartVo.ExecutorChart();
executorChart.setType(executor.getType()); executorChart.setType(executor.getType());
@ -54,8 +69,21 @@ public class ChartService implements IChartService{
*/ */
@Override @Override
public List<ChartVo.CompleteTaskNum> getCompleteTaskByTime(Long currentUserId, ChartDto.ChartsCompleteDto completeDto) { public List<ChartVo.CompleteTaskNum> getCompleteTaskByTime(Long currentUserId, ChartDto.ChartsCompleteDto completeDto) {
//验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(completeDto.getProjectId())){
Long startTime = completeDto.getBeginTime() == null ? DateUtil.beginOfWeek(new Date()).getTime() : completeDto.getBeginTime();
Long endTime = completeDto.getEndTime() == null ? DateUtil.endOfWeek(new Date()).getTime() : completeDto.getEndTime();
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(startTime,endTime,currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(completeDto.getProjectId());
}
//查找所有角色及任务数量 //查找所有角色及任务数量
List<ChartVo.CompleteTaskNum> completeTaskNumList = sysProjectDao.getCompleteTaskByTime(completeDto.getProjectId(),completeDto.getRoleList(), List<ChartVo.CompleteTaskNum> completeTaskNumList = sysProjectDao.getCompleteTaskByTime(projectIdList,completeDto.getRoleList(),
completeDto.getBeginTime(),completeDto.getEndTime()); completeDto.getBeginTime(),completeDto.getEndTime());
return completeTaskNumList; return completeTaskNumList;
} }
@ -68,15 +96,26 @@ public class ChartService implements IChartService{
*/ */
@Override @Override
public List<ChartVo.ProjectTrendVo> getProjectTrend(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) { public List<ChartVo.ProjectTrendVo> getProjectTrend(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) {
Long start = DateUtil.parse(projectTrendDto.getStart()).getTime(); Long start = projectTrendDto.getStart() != null ? DateUtil.parse(projectTrendDto.getStart()).getTime() : DateUtil.beginOfWeek(new Date()).getTime();
Long end = DateUtil.parse(projectTrendDto.getEnd()).getTime(); Long end = projectTrendDto.getEnd() != null ? DateUtil.parse(projectTrendDto.getEnd()).getTime() : DateUtil.endOfWeek(new Date()).getTime();
//验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(projectTrendDto.getProjectId())){
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(start,end,currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(projectTrendDto.getProjectId());
}
//获取“全体成员”角色 //获取“全体成员”角色
ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId()); ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId());
Long allMemberId = null; Long allMemberId = null;
if (ObjectUtil.isNotNull(allMember)) { if (ObjectUtil.isNotNull(allMember)) {
allMemberId = allMember.getId(); allMemberId = allMember.getId();
} }
List<ChartVo.ProjectTrendVo> projectTrendVoList = sysProjectDao.getProjectTrend(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId); List<ChartVo.ProjectTrendVo> projectTrendVoList = sysProjectDao.getProjectTrend(projectIdList,start,end,projectTrendDto.getRoleId(),allMemberId);
return projectTrendVoList; return projectTrendVoList;
} }
@ -88,13 +127,26 @@ public class ChartService implements IChartService{
*/ */
@Override @Override
public ChartVo.ProjectOverview getOverview(Long currentUserId, ChartDto.ChartsOverviewDto overview) throws Exception { public ChartVo.ProjectOverview getOverview(Long currentUserId, ChartDto.ChartsOverviewDto overview) throws Exception {
//验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(overview.getProjectId())){
Long startTime = overview.getBeginTime() == null ? DateUtil.beginOfWeek(new Date()).getTime() : overview.getBeginTime();
Long endTime = overview.getEndTime() == null ? DateUtil.endOfWeek(new Date()).getTime() : overview.getEndTime();
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(startTime,endTime,currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(overview.getProjectId());
}
//获取全部的数据 //获取全部的数据
ChartVo.ProjectOverview projectOverview = sysProjectDao.getOverview(overview.getProjectId(),overview.getBeginTime(),overview.getEndTime(),overview.getRoleList()); ChartVo.ProjectOverview projectOverview = sysProjectDao.getOverview(projectIdList,overview.getBeginTime(),overview.getEndTime(),overview.getRoleList());
//获取当天零点和二十四点的时间 //获取当天零点和二十四点的时间
Long startTime = DateUtil.beginOfDay(new Date()).getTime(); Long startTime = DateUtil.beginOfDay(new Date()).getTime();
Long endTime = DateUtil.endOfDay(new Date()).getTime(); Long endTime = DateUtil.endOfDay(new Date()).getTime();
//获取当天的数据 //获取当天的数据
ChartVo.ProjectOverview projectOverview1 = sysProjectDao.getOverviewByToDay(overview.getProjectId(),startTime,endTime,overview.getRoleList()); ChartVo.ProjectOverview projectOverview1 = sysProjectDao.getOverviewByToDay(projectIdList,startTime,endTime,overview.getRoleList());
//将数据整合在一起 //将数据整合在一起
projectOverview.setTodayCompleted(projectOverview1.getTodayCompleted() == null ? 0 : projectOverview1.getTodayCompleted()); projectOverview.setTodayCompleted(projectOverview1.getTodayCompleted() == null ? 0 : projectOverview1.getTodayCompleted());
projectOverview.setToday(projectOverview1.getToday()); projectOverview.setToday(projectOverview1.getToday());
@ -109,8 +161,22 @@ public class ChartService implements IChartService{
*/ */
@Override @Override
public List<ChartVo.BurnoutFigure> getBurnoutFigure(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) { public List<ChartVo.BurnoutFigure> getBurnoutFigure(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) {
Long start = DateUtil.parse(projectTrendDto.getStart()).getTime(); // Long start = DateUtil.parse(projectTrendDto.getStart()).getTime();
Long end = DateUtil.parse(projectTrendDto.getEnd()).getTime(); // Long end = DateUtil.parse(projectTrendDto.getEnd()).getTime();
Long start = projectTrendDto.getStart() != null ? DateUtil.parse(projectTrendDto.getStart()).getTime() : DateUtil.beginOfWeek(new Date()).getTime();
Long end = projectTrendDto.getEnd() != null ? DateUtil.parse(projectTrendDto.getEnd()).getTime() : DateUtil.endOfWeek(new Date()).getTime();
//验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(projectTrendDto.getProjectId())){
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(start,end,currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(projectTrendDto.getProjectId());
}
//获取“全体成员”角色 //获取“全体成员”角色
ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId()); ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId());
Long allMemberId = null; Long allMemberId = null;
@ -118,7 +184,7 @@ public class ChartService implements IChartService{
allMemberId = allMember.getId(); allMemberId = allMember.getId();
} }
//获取任务总数(如果type传1 查询规定条件内的任务总数,若传null,则按天分组查找) //获取任务总数(如果type传1 查询规定条件内的任务总数,若传null,则按天分组查找)
List<ChartVo.BurnoutFigure> totalList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId,1); List<ChartVo.BurnoutFigure> totalList = sysProjectDao.getBurnoutFigure(projectIdList,start,end,projectTrendDto.getRoleId(),allMemberId,1);
//理想 //理想
AtomicReference<BigDecimal> idealTotal = new AtomicReference<>(); AtomicReference<BigDecimal> idealTotal = new AtomicReference<>();
BigDecimal idealTotalInt = new BigDecimal(0); BigDecimal idealTotalInt = new BigDecimal(0);
@ -133,7 +199,7 @@ public class ChartService implements IChartService{
realTotal.set(totalList.get(0).getTotalDay()); realTotal.set(totalList.get(0).getTotalDay());
} }
//按天获取信息 //按天获取信息
List<ChartVo.BurnoutFigure> burnoutFigureList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId,null); List<ChartVo.BurnoutFigure> burnoutFigureList = sysProjectDao.getBurnoutFigure(projectIdList,start,end,projectTrendDto.getRoleId(),allMemberId,null);
if(CollectionUtil.isNotEmpty(burnoutFigureList)){ if(CollectionUtil.isNotEmpty(burnoutFigureList)){
//每天理想完成数,总数/天数=每天理想完成数 //每天理想完成数,总数/天数=每天理想完成数
BigDecimal idealFinish = idealTotalInt.divide(BigDecimal.valueOf(burnoutFigureList.size()),1,BigDecimal.ROUND_HALF_UP); BigDecimal idealFinish = idealTotalInt.divide(BigDecimal.valueOf(burnoutFigureList.size()),1,BigDecimal.ROUND_HALF_UP);

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

@ -87,6 +87,8 @@ public class ExcelService implements IExcelService {
private ProPluginConfigDao proPluginConfigDao; private ProPluginConfigDao proPluginConfigDao;
@Resource @Resource
private ProTaskDeliverMapper proTaskDeliverMapper; private ProTaskDeliverMapper proTaskDeliverMapper;
@Resource
private RobotService robotService;
@Override @Override
@ -106,6 +108,8 @@ public class ExcelService implements IExcelService {
userAttention.setUserId(currentUserId); userAttention.setUserId(currentUserId);
userAttentionDao.insertSelective(userAttention); userAttentionDao.insertSelective(userAttention);
} }
//发送消息
robotService.saveWbsRobotSend(currentUserId,sysProject);
return selectByProjectId(currentUserId, sysProject); return selectByProjectId(currentUserId, sysProject);
} }

43
tall/src/main/java/com/ccsens/tall/service/IInputDocService.java

@ -3,42 +3,39 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.dto.InputDocDto; import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LwbsDto; import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.vo.InputDocVo; import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LwbsVo;
import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import java.util.List; import java.util.List;
public interface IInputDocService { public interface IInputDocService {
/** // /**
* 查询 该人参加得所有的项目 // * 查询 该人参加得所有的项目
* @param param // * @param param
* @param userId // * @param userId
* @return // * @return
*/ // */
List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId); // List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId);
//
/** // /**
* 查询 该人参加的项目把项目当成一级任务及项目下的二级任务 // * 查询 该人参加的项目(把项目当成一级任务)及项目下的二级任务
* @param param // * @param param
* @param userId // * @param userId
* @return // * @return
*/ // */
TaskVo.ProTaskInfo selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId); // TaskVo.ProTaskInfo selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId);
/** /**
* 查询二级任务下的所有的子任务 * 查询二级任务下的所有的子任务
* @param param * @param param 查询条件
* @param userId * @param userId userId
* @return * @return 返回任务列表
*/ */
List<TaskVo.NormalTask> selByTwoTaskId(LwbsDto.SelByProjectIdToTaskDto param, Long userId,Long taskId); List<TaskVo.NormalTask> selByTwoTaskId(LwbsDto.SelByProjectIdToTaskDto param, Long userId,Long taskId);
/** /**
* 根据任务id查询输入文档 * 根据任务id查询输入文档
* @param params 任务id * @param params 任务id
* @return * @return 返回输入文档
*/ */
List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask params); List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask params);
@ -97,7 +94,7 @@ public interface IInputDocService {
* 删除输入文档下所有的文件 * 删除输入文档下所有的文件
* @param param 输入文档id * @param param 输入文档id
*/ */
void delAllRecordOfTask(InputDocDto.DelAllRecordOfTask param,Long userId); void delAllRecordOfTask(InputDocDto.DelAllRecordOfTask param,Long userId) throws Exception;
/** /**
* 查看交付物的历史记录 * 查看交付物的历史记录

2
tall/src/main/java/com/ccsens/tall/service/IProMemberService.java

@ -46,7 +46,7 @@ public interface IProMemberService {
* @param currentUserId userId * @param currentUserId userId
* @param deleteMember 被删除的成员的id * @param deleteMember 被删除的成员的id
*/ */
void deleteMember(Long currentUserId, MemberDto.DeleteMember deleteMember); void deleteMember(Long currentUserId, MemberDto.DeleteMember deleteMember) throws Exception;
/** /**
* 修改成员的信息 * 修改成员的信息

8
tall/src/main/java/com/ccsens/tall/service/IProRoleService.java

@ -40,9 +40,9 @@ public interface IProRoleService {
void deleteRoleByProjectId(Long projectId) throws Exception; void deleteRoleByProjectId(Long projectId) throws Exception;
RoleVo.RoleByProjectId saveRole(Long currentUserId, RoleDto.SaveRole saveRole); RoleVo.RoleByProjectId saveRole(Long currentUserId, RoleDto.SaveRole saveRole) throws Exception;
ProjectVo.RoleInfo updateRole(Long currentUserId, RoleDto.UpdateRole updateRole); ProjectVo.RoleInfo updateRole(Long currentUserId, RoleDto.UpdateRole updateRole) throws Exception;
ProjectVo.RoleInfo saveMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember); ProjectVo.RoleInfo saveMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember);
@ -53,7 +53,7 @@ public interface IProRoleService {
* @param projectId 项目id * @param projectId 项目id
* @return 返回一级任务和里程碑 * @return 返回一级任务和里程碑
*/ */
List<TaskVo.NormalTask> queryByProjectVirtualRole(RoleDto.ProjectId projectId); List<TaskVo.NormalTask> queryByProjectVirtualRole(RoleDto.ProjectId projectId);
/** /**
* 修改该用户关注的角色是否展示 * 修改该用户关注的角色是否展示
@ -74,7 +74,7 @@ public interface IProRoleService {
* @param param * @param param
* @return * @return
*/ */
RoleVo.JueSeByProIdLists queryRoleShows(QueryDto<RoleDto.QueryRoleShows> param); RoleVo.JueSeByProIdLists queryRoleShows(QueryDto<RoleDto.QueryRoleShows> param) throws Exception;
void queryRoleIsShows(QueryDto<RoleDto.QueryRoleIsShows> param); void queryRoleIsShows(QueryDto<RoleDto.QueryRoleIsShows> param);

2
tall/src/main/java/com/ccsens/tall/service/IProjectService.java

@ -31,7 +31,7 @@ public interface IProjectService {
ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto,String token); ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto,String token);
ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token); ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token) throws Exception;
ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize,Integer page,String token); ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize,Integer page,String token);

136
tall/src/main/java/com/ccsens/tall/service/IRobotService.java

@ -18,85 +18,113 @@ public interface IRobotService {
/** /**
* 添加任务消息 * 添加任务消息
* @param currentUserId * @param currentUserId 登录用户id
* @param project * @param project 项目
* @param taskName * @param taskName 任务名称
* @param executorId * @param executorId 负责人
*/ */
void addTaskRobotSend(Long currentUserId, SysProject project, String taskName, Long executorId) throws Exception; void addTaskRobotSend(Long currentUserId, SysProject project, String taskName, Long executorId) throws Exception;
/** /**
* 删除任务消息 * 删除任务消息
* @param currentUserId * @param currentUserId 登录用户id
* @param taskDetail * @param taskDetail 任务详情
*/ */
void deleteTaskRobotSend(Long currentUserId, ProTaskDetail taskDetail) throws Exception; void deleteTaskRobotSend(Long currentUserId, ProTaskDetail taskDetail) throws Exception;
/** /**
* 修改任务信息 * 修改任务信息
* @param currentUserId * @param currentUserId 登录用户id
* @param normalTask * @param normalTask 任务
*/ */
void changeTaskRobotSend(Long currentUserId, TaskVo.NormalTask normalTask) throws Exception; void changeTaskRobotSend(Long currentUserId, TaskVo.NormalTask normalTask) throws Exception;
/** /**
* 上传交付物信息 * 上传交付物信息
* @param currentUserId * @param currentUserId 登录用户id
* @param subTimeId * @param subTimeId 分解任务id
*/ */
void addDeliverRobotSend(Long currentUserId,String deliverName, Long subTimeId,SysProject project) throws Exception; void addDeliverRobotSend(Long currentUserId,String deliverName, Long subTimeId,SysProject project) throws Exception;
/** /**
* 删除交付物信息 * 删除交付物信息
* @param currentUserId * @param currentUserId 登录用户id
* @param name * @param name 交付物名称
* @param subTimeId * @param subTimeId 分解任务id
*/ */
void deleteDeliverRobotSend(Long currentUserId, String name, Long subTimeId) throws Exception; void deleteDeliverRobotSend(Long currentUserId, String name, Long subTimeId) throws Exception;
/** /**
* 检查交付物信息 * 检查交付物信息
* @param currentUserId * @param currentUserId 当前登录用户id
* @param task * @param task 任务
* @param userIdSet * @param userIdSet 上传用户id
* @param name * @param name 交付物名称
*/ */
void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long userIdSet, String name,Boolean flag) throws Exception; void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long userIdSet, String name,Boolean flag) throws Exception;
/** /**
* 评论任务信息 * 评论任务信息
* @param userId * @param userId 用户id
* @param proTaskDetail * @param proTaskDetail 项目详情
*/ */
void addCommentRobotSend(Long userId, ProTaskDetail proTaskDetail) throws Exception; void addCommentRobotSend(Long userId, ProTaskDetail proTaskDetail) throws Exception;
/** /**
* 上传输入文档的文件消息记录 * 上传输入文档的文件消息记录
* @param currentUserId * @param currentUserId 登录用户id
* @param task * @param task 任务详情
* @param deliverable * @param deliverable 交付物
* @throws Exception * @throws Exception 异常
*/ */
void uploadForDocRobotSend(Long currentUserId,ProTaskDetail task,String deliverable) throws Exception; void uploadForDocRobotSend(Long currentUserId,ProTaskDetail task,String deliverable) throws Exception;
/** /**
* 删除输入文档中的文件消息记录 * 删除输入文档中的文件消息记录
* @param userId * @param userId 登录用户id
* @param taskDetail * @param taskDetail 任务详情
* @param name * @param name 交付物名称
* @throws Exception * @throws Exception
*/ */
void delDocRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception; void delDocRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/** /**
* 修改输入文档中的备注 消息记录 * 修改输入文档中的备注 消息记录
* @param userId * @param userId 登录用户id
* @param taskDetail * @param taskDetail 任务详情
* @param name * @param name 交付物名称
* @throws Exception * @throws Exception 异常
*/ */
void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception; void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/**
* 添加角色 消息记录
* @param currentUserId 当前用户id
* @param projectId 项目id
* @param roleName 角色名称
*/
void addRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception;
/**
* 修改角色 消息记录
* @param currentUserId 当前用户id
* @param projectId 项目id
* @param roleName 角色名称
* @param roleId 角色id
* @throws Exception 异常
*/
void updateRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception;
/**
* 删除角色
* @param userId 用户id
* @param projectId 项目id
* @param name 角色名称
* @param id 角色id
* @throws Exception 异常
*/
void delRoleRobotSend(Long userId, Long projectId, String name, Long id) throws Exception;
/** /**
* 查询模板 * 查询模板
* @param code * @param code
@ -110,5 +138,53 @@ public interface IRobotService {
*/ */
void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception; void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception;
/**
* 增加成员 消息
* @param userId 当前用户id
* @param projectId 项目id
* @param memberName 成员名称
* @param id 成员id
*/
void saveMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception;
/**
* 删除成员
* @param userId 当前用户id
* @param projectId 项目id
* @param memberName 成员名称
* @param id 成员id
*/
void delMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception;
/**
* 修改成员
* @param userId 当前用户id
* @param projectId 项目id
* @param memberName 成员名称
* @param id 成员id
*/
void updateMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception;
/**
* 添加项目
* @param currentUserId 当前登录用户
* @param sysProject 项目信息
* @throws Exception 异常
*/
void saveWbsRobotSend(Long currentUserId,SysProject sysProject) throws Exception;
/**
* 修改i项目
* @param currentUserId 当前登录用户id
* @param sysProject 项目信息
* @throws Exception 异常
*/
void updateProjectRobotSend(Long currentUserId,SysProject sysProject) throws Exception;
/**
* 删除项目
* @param currentUserId 当前登录用户id
* @param projectId 项目id
*/
void delProjectRobotSend(Long currentUserId,Long projectId) throws Exception;
} }

2
tall/src/main/java/com/ccsens/tall/service/ITaskDeliverService.java

@ -45,7 +45,7 @@ public interface ITaskDeliverService {
* 删除输出文档下所有的文件 * 删除输出文档下所有的文件
* @param param * @param param
*/ */
void delAllFileOfDeliver(DeliverDto.DelAllFileOfDeliver param,Long userId); void delAllFileOfDeliver(DeliverDto.DelAllFileOfDeliver param,Long userId) throws Exception;
/** /**
* 修改输出文档下的备注信息 * 修改输出文档下的备注信息

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

@ -19,8 +19,7 @@ public interface ITaskSubTimeService {
void clearTaskRealTime(Long projectId); void clearTaskRealTime(Long projectId);
List<TaskVo.KanBan> getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, List<TaskVo.KanBan> getKanbanTake(Long currentUserId, TaskDto.QueryKanbanTask queryKanbanTask) throws Exception;
Integer page, Integer pageSize, Integer orderType, Integer order) throws Exception;
void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception; void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception;

456
tall/src/main/java/com/ccsens/tall/service/InputDocService.java

@ -1,7 +1,6 @@
package com.ccsens.tall.service; package com.ccsens.tall.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
@ -10,21 +9,16 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ccsens.tall.bean.dto.InputDocDto; import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LwbsDto; import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.*; import com.ccsens.tall.bean.vo.*;
import com.ccsens.tall.persist.dao.*; import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.persist.mapper.*; import com.ccsens.tall.persist.mapper.*;
import com.ccsens.tall.util.TaskUtil;
import com.ccsens.util.CodeEnum; import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.PropUtil; import com.ccsens.util.PropUtil;
import com.ccsens.util.RestTemplateUtil; import com.ccsens.util.RestTemplateUtil;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -39,8 +33,6 @@ import java.util.*;
@Service @Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class InputDocService implements IInputDocService { public class InputDocService implements IInputDocService {
@Resource
public ProMemberMapper proMemberMapper;
@Resource @Resource
public SysProjectDao sysProjectDao; public SysProjectDao sysProjectDao;
@Resource @Resource
@ -67,164 +59,158 @@ public class InputDocService implements IInputDocService {
private ProDeliverHistoryRecordDao deliverHistoryRecordDao; private ProDeliverHistoryRecordDao deliverHistoryRecordDao;
@Resource @Resource
private IProMemberService iProMemberService; private IProMemberService iProMemberService;
@Resource
private ProPluginConfigDao pluginConfigDao;
@Override
public List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId) {
List<LwbsVo.SelByUserIdToComProjectVo> selByUserIdToComProjectVos =new ArrayList<LwbsVo.SelByUserIdToComProjectVo>();
//手动添加一个我的
LwbsVo.SelByUserIdToComProjectVo mine =new LwbsVo.SelByUserIdToComProjectVo();
mine.setName("我的");
mine.setType(0);
mine.setId(userId);
selByUserIdToComProjectVos.add(mine);
// //查询普通项目
// List<LwbsVo.SelByUserIdToComProjectVo> projectVoList = sysProjectDao.queryByUserId(param.getStartTime(),param.getEndTime(),userId);
// selByUserIdToComProjectVos.addAll(projectVoList);
//查询中间的项目
ProMemberExample proMemberExample=new ProMemberExample();
proMemberExample.createCriteria().andRecStatusEqualTo((byte) 0).andUserIdEqualTo(userId);
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample);
List<Long> longList=new ArrayList<Long>();
proMembers.forEach(proMember -> {
longList.add(proMember.getProjectId());
});
SysProjectExample sysProjectExample=new SysProjectExample();
sysProjectExample.createCriteria().andRecStatusEqualTo((byte)0).andIdIn(longList).andBeginTimeLessThanOrEqualTo(param.getEndTime()).andEndTimeGreaterThanOrEqualTo(param.getStartTime());
List<SysProject> sysProjects = sysProjectDao.selectByExample(sysProjectExample);
sysProjects.forEach(sysProject -> {
LwbsVo.SelByUserIdToComProjectVo selByUserIdToComProjectVo_zhongjian =new LwbsVo.SelByUserIdToComProjectVo();
selByUserIdToComProjectVo_zhongjian.setName(sysProject.getName());
selByUserIdToComProjectVo_zhongjian.setId(sysProject.getId());
selByUserIdToComProjectVo_zhongjian.setType(1);
selByUserIdToComProjectVos.add(selByUserIdToComProjectVo_zhongjian);
});
//手动添加一个其他
LwbsVo.SelByUserIdToComProjectVo other =new LwbsVo.SelByUserIdToComProjectVo();
other.setName("其他");
other.setType(2);
selByUserIdToComProjectVos.add(other);
return selByUserIdToComProjectVos;
}
@Override
public TaskVo.ProTaskInfo selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId) {
TaskVo.ProTaskInfo taskInfo=new TaskVo.ProTaskInfo();
// //查询其他
// if (param.getQueryType() == 2){
// List<TaskVo.NormalTask> taskList = taskDetailDao.selectOtherTask(userId);
// //区分全局任务和普通任务
// TaskUtil.Task task = TaskUtil.splitTask(taskList, param.getStartTime(), param.getEndTime(), param.getProcess());
// List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>();
// //如果全局任务不为空
// if(CollectionUtil.isNotEmpty(task.getGlobalTask())){
// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask();
// for (TaskVo.NormalTask normalTask : task.getGlobalTask()) {
// BeanUtil.copyProperties(normalTask,globalTask);
// globalTaskList.add(globalTask);
// }
// taskInfo.setGlobalTaskList(globalTaskList);
// }
// //如果普通任务不为空
// if (CollectionUtil.isNotEmpty(task.getCommonTask())){
// taskInfo.setNormalTaskList(task.getCommonTask());
// }
// return taskInfo;
// }
// //
// if (param.getQueryType() == 0){ // @Override
// param.setId(null); // public List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId) {
// } // List<LwbsVo.SelByUserIdToComProjectVo> selByUserIdToComProjectVos =new ArrayList<LwbsVo.SelByUserIdToComProjectVo>();
// //手动添加一个我的
// LwbsVo.SelByUserIdToComProjectVo mine =new LwbsVo.SelByUserIdToComProjectVo();
// mine.setName("我的");
// mine.setType(0);
// mine.setId(userId);
// selByUserIdToComProjectVos.add(mine);
//// //查询普通项目
//// List<LwbsVo.SelByUserIdToComProjectVo> projectVoList = sysProjectDao.queryByUserId(param.getStartTime(),param.getEndTime(),userId);
//// selByUserIdToComProjectVos.addAll(projectVoList);
// //查询中间的项目
// ProMemberExample proMemberExample=new ProMemberExample();
// proMemberExample.createCriteria().andRecStatusEqualTo((byte) 0).andUserIdEqualTo(userId);
// List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample);
// List<Long> longList=new ArrayList<Long>();
// proMembers.forEach(proMember -> {
// longList.add(proMember.getProjectId());
// });
// SysProjectExample sysProjectExample=new SysProjectExample();
// sysProjectExample.createCriteria().andRecStatusEqualTo((byte)0).andIdIn(longList).andBeginTimeLessThanOrEqualTo(param.getEndTime()).andEndTimeGreaterThanOrEqualTo(param.getStartTime());
// List<SysProject> sysProjects = sysProjectDao.selectByExample(sysProjectExample);
// sysProjects.forEach(sysProject -> {
// LwbsVo.SelByUserIdToComProjectVo selByUserIdToComProjectVo_zhongjian =new LwbsVo.SelByUserIdToComProjectVo();
// selByUserIdToComProjectVo_zhongjian.setName(sysProject.getName());
// selByUserIdToComProjectVo_zhongjian.setId(sysProject.getId());
// selByUserIdToComProjectVo_zhongjian.setType(1);
// selByUserIdToComProjectVos.add(selByUserIdToComProjectVo_zhongjian);
// });
// //手动添加一个其他
// LwbsVo.SelByUserIdToComProjectVo other =new LwbsVo.SelByUserIdToComProjectVo();
// other.setName("其他");
// other.setType(2);
// selByUserIdToComProjectVos.add(other);
// //
// //普通的任务和全局的 // return selByUserIdToComProjectVos;
// List<TaskVo.NormalTask> normalTaskList1= iInputDocDao.selectByCompany(param,userId); // }
// //
// //给二级任务下添加子任务 // @Override
// //遍历项目 // public TaskVo.ProTaskInfo selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId) {
// if(param.getId()!=null){ // TaskVo.ProTaskInfo taskInfo=new TaskVo.ProTaskInfo();
// for (int i = 0; i < normalTaskList1.size(); i++) { //// //查询其他
// //遍历任务 //// if (param.getQueryType() == 2){
// for (int i1 = 0; i1 < normalTaskList1.get(i).getSecondTasks().size(); i1++) { //// List<TaskVo.NormalTask> taskList = taskDetailDao.selectOtherTask(userId);
// Long taskId= normalTaskList1.get(i).getSecondTasks().get(i1).getDetailId(); //// //区分全局任务和普通任务
// //查询该任务下的子任务 //// TaskUtil.Task task = TaskUtil.splitTask(taskList, param.getStartTime(), param.getEndTime(), param.getProcess());
// List<TaskVo.NormalTask> list = selByTwoTaskId(param, userId, taskId); //// List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>();
// //给二级任务添加子任务 //// //如果全局任务不为空
// if(CollectionUtil.isNotEmpty(list)){ //// if(CollectionUtil.isNotEmpty(task.getGlobalTask())){
// // 第i个项目 i1个二级任务 添加二级任务的子任务 //// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask();
// normalTaskList1.get(i).getSecondTasks().get(i1).getSecondTasks().addAll(list); //// for (TaskVo.NormalTask normalTask : task.getGlobalTask()) {
// } //// BeanUtil.copyProperties(normalTask,globalTask);
// } //// globalTaskList.add(globalTask);
// } //// }
// } //// taskInfo.setGlobalTaskList(globalTaskList);
// //拆分后得全局任务和普通任务 //// }
// List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>(); //// //如果普通任务不为空
// List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); //// if (CollectionUtil.isNotEmpty(task.getCommonTask())){
// for (int i = 0; i < normalTaskList1.size(); i++) { //// taskInfo.setNormalTaskList(task.getCommonTask());
// //拆分项目下得普通任务和全局任务 //// }
// List<TaskVo.NormalTask> list= normalTaskList1.get(i).getSecondTasks(); //// return taskInfo;
// //判断全局还是普通任务 //// }
// TaskUtil.Task task = TaskUtil.splitTask(list, param.getStartTime(), param.getEndTime(), param.getProcess()); ////
// if(CollectionUtil.isNotEmpty(task.getGlobalTask())){ //// if (param.getQueryType() == 0){
// if(param.getId()==null) { //// param.setId(null);
// //给全局任务下先存项目名称 //// }
// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask(); ////
// BeanUtil.copyProperties(normalTaskList1.get(i), globalTask); //// //普通的任务和全局的
// globalTask.setNormalTaskList(task.getGlobalTask()); //// List<TaskVo.NormalTask> normalTaskList1= iInputDocDao.selectByCompany(param,userId);
// globalTaskList.add(globalTask); ////
// }else { //// //给二级任务下添加子任务
// //直接存二级任务信息 //// //遍历项目
// task.getGlobalTask().forEach(ac->{ //// if(param.getId()!=null){
// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask(); //// for (int i = 0; i < normalTaskList1.size(); i++) {
// BeanUtil.copyProperties(ac,globalTask); //// //遍历任务
// globalTask.setNormalTaskList(ac.getSecondTasks()); //// for (int i1 = 0; i1 < normalTaskList1.get(i).getSecondTasks().size(); i1++) {
// globalTaskList.add(globalTask); //// Long taskId= normalTaskList1.get(i).getSecondTasks().get(i1).getDetailId();
// }); //// //查询该任务下的子任务
// } //// List<TaskVo.NormalTask> list = selByTwoTaskId(param, userId, taskId);
// } //// //给二级任务添加子任务
// if(CollectionUtil.isNotEmpty(task.getCommonTask())){ //// if(CollectionUtil.isNotEmpty(list)){
// if(param.getId()==null) { //// // 第i个项目 i1个二级任务 添加二级任务的子任务
// //给普通任务下先存项目 //// normalTaskList1.get(i).getSecondTasks().get(i1).getSecondTasks().addAll(list);
// TaskVo.NormalTask normalTask = new TaskVo.NormalTask(); //// }
// BeanUtil.copyProperties(normalTaskList1.get(i), normalTask); //// }
// normalTask.setSecondTasks(task.getCommonTask()); //// }
// normalTaskList.add(normalTask); //// }
// }else { //// //拆分后得全局任务和普通任务
// //自查项目不要项目信息 //// List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>();
// task.getCommonTask().forEach(ac1->{ //// List<TaskVo.NormalTask> normalTaskList = new ArrayList<>();
// normalTaskList.add(ac1); //// for (int i = 0; i < normalTaskList1.size(); i++) {
// }); //// //拆分项目下得普通任务和全局任务
// } //// List<TaskVo.NormalTask> list= normalTaskList1.get(i).getSecondTasks();
// } //// //判断全局还是普通任务
// } //// TaskUtil.Task task = TaskUtil.splitTask(list, param.getStartTime(), param.getEndTime(), param.getProcess());
// taskInfo.setGlobalTaskList(globalTaskList); //// if(CollectionUtil.isNotEmpty(task.getGlobalTask())){
// taskInfo.setNormalTaskList(normalTaskList); //// if(param.getId()==null) {
// for (TaskVo.NormalTask normalTask : taskInfo.getNormalTaskList()) { //// //给全局任务下先存项目名称
// if (null != normalTask.getDetailId()){ //// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask();
// ProPluginConfigExample configExample = new ProPluginConfigExample(); //// BeanUtil.copyProperties(normalTaskList1.get(i), globalTask);
// configExample.createCriteria().andTaskIdEqualTo(normalTask.getDetailId()).andPlaceLocationEqualTo((byte) 0); //// globalTask.setNormalTaskList(task.getGlobalTask());
// List<ProPluginConfig> proPluginConfigs = pluginConfigDao.selectByExample(configExample); //// globalTaskList.add(globalTask);
// if (CollectionUtil.isNotEmpty(proPluginConfigs)){ //// }else {
// ProPluginConfig config = proPluginConfigs.get(0); //// //直接存二级任务信息
// normalTask.setImportParam(config.getImportParam()); //// task.getGlobalTask().forEach(ac->{
// normalTask.setRoutineLocation(config.getRoutineLocation()); //// TaskVo.GlobalTask globalTask = new TaskVo.GlobalTask();
// normalTask.setWebPath(config.getWebPath()); //// BeanUtil.copyProperties(ac,globalTask);
// } //// globalTask.setNormalTaskList(ac.getSecondTasks());
// } //// globalTaskList.add(globalTask);
// } //// });
//// }
return taskInfo; //// }
} //// if(CollectionUtil.isNotEmpty(task.getCommonTask())){
//// if(param.getId()==null) {
//// //给普通任务下先存项目
//// TaskVo.NormalTask normalTask = new TaskVo.NormalTask();
//// BeanUtil.copyProperties(normalTaskList1.get(i), normalTask);
//// normalTask.setSecondTasks(task.getCommonTask());
//// normalTaskList.add(normalTask);
//// }else {
//// //自查项目不要项目信息
//// task.getCommonTask().forEach(ac1->{
//// normalTaskList.add(ac1);
//// });
//// }
//// }
//// }
//// taskInfo.setGlobalTaskList(globalTaskList);
//// taskInfo.setNormalTaskList(normalTaskList);
//// for (TaskVo.NormalTask normalTask : taskInfo.getNormalTaskList()) {
//// if (null != normalTask.getDetailId()){
//// ProPluginConfigExample configExample = new ProPluginConfigExample();
//// configExample.createCriteria().andTaskIdEqualTo(normalTask.getDetailId()).andPlaceLocationEqualTo((byte) 0);
//// List<ProPluginConfig> proPluginConfigs = pluginConfigDao.selectByExample(configExample);
//// if (CollectionUtil.isNotEmpty(proPluginConfigs)){
//// ProPluginConfig config = proPluginConfigs.get(0);
//// normalTask.setImportParam(config.getImportParam());
//// normalTask.setRoutineLocation(config.getRoutineLocation());
//// normalTask.setWebPath(config.getWebPath());
//// }
//// }
//// }
//
// return taskInfo;
// }
/** /**
* 查询二级任务下的所有的子任务 * 查询二级任务下的所有的子任务
*
* @param param
* @param userId
* @return
*/ */
@Override @Override
public List<TaskVo.NormalTask> selByTwoTaskId(LwbsDto.SelByProjectIdToTaskDto param, Long userId,Long taskId) { public List<TaskVo.NormalTask> selByTwoTaskId(LwbsDto.SelByProjectIdToTaskDto param, Long userId,Long taskId) {
@ -233,8 +219,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 根据任务id查找输入文档 * 根据任务id查找输入文档
* @param param 任务id
* @return
*/ */
@Override @Override
public List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask param) { public List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask param) {
@ -253,20 +237,8 @@ public class InputDocService implements IInputDocService {
for (InputDocVo.Record record:docs.getRecords()){ for (InputDocVo.Record record:docs.getRecords()){
if(ObjectUtil.isNotNull(record.getFileIds())) { if(ObjectUtil.isNotNull(record.getFileIds())) {
try { try {
//拆分文件id List<FileVo.FilePosition> fileByFileIds = getFileByFileIds(record.getFileIds());
String[] split = record.getFileIds().split(","); record.setFileList(fileByFileIds);
List<String> splits =new ArrayList<>(Arrays.asList(split));
if(split.length != 0){
//获取文件项目的路径
String requestUrl = PropUtil.filedeal;
//通过文件id查询文件信息
String c = RestTemplateUtil.postBody1(requestUrl,splits);
JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c,JsonResponse.class);
if(ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())){
List<FileVo.FilePosition> fileList = a.getData();
record.setFileList(fileList);
}
}
}catch (Exception e){ }catch (Exception e){
log.info("查询文件信息失败:{}", e); log.info("查询文件信息失败:{}", e);
} }
@ -278,6 +250,24 @@ public class InputDocService implements IInputDocService {
return docByTasks; return docByTasks;
} }
private List<FileVo.FilePosition> getFileByFileIds(String fileIds) {
List<FileVo.FilePosition> filePositions = new ArrayList<>();
//拆分文件id
String[] split = fileIds.split(",");
List<String> splits =new ArrayList<>(Arrays.asList(split));
if(split.length != 0){
//获取文件项目的路径
String requestUrl = PropUtil.filedeal;
//通过文件id查询文件信息
String c = RestTemplateUtil.postBody1(requestUrl,splits);
JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c,JsonResponse.class);
if(ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())){
filePositions = a.getData();
}
}
return filePositions;
}
/** /**
* 给输入文档上传文件 * 给输入文档上传文件
* @param param docId 文档id * @param param docId 文档id
@ -298,17 +288,17 @@ public class InputDocService implements IInputDocService {
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord(); ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord();
//多文件添加 //多文件添加
if (!ArrayUtil.isEmpty(param.getFileIds())){ if (!ArrayUtil.isEmpty(param.getFileIds())){
String fileIds = ""; StringBuilder fileIds = new StringBuilder();
for (int i = 0; i < param.getFileIds().length; i++) { for (int i = 0; i < param.getFileIds().length; i++) {
fileIds = fileIds + param.getFileIds()[i]+","; fileIds.append(param.getFileIds()[i]).append(",");
} }
fileIds = fileIds.substring(0,fileIds.length()-1); fileIds = new StringBuilder(fileIds.substring(0, fileIds.length() - 1));
proTaskInputRecord.setFileId(fileIds); proTaskInputRecord.setFileId(fileIds.toString());
proTaskInputRecord.setInputDocId(param.getDocId()); proTaskInputRecord.setInputDocId(param.getDocId());
proTaskInputRecord.setStatus((byte)1); proTaskInputRecord.setStatus((byte)1);
proTaskInputRecord.setId(snowflake.nextId());
proTaskInputRecord.setUserId(userId); proTaskInputRecord.setUserId(userId);
proTaskInputRecord.setId(snowflake.nextId());
proTaskInputRecord.setRemark(param.getRemark()); proTaskInputRecord.setRemark(param.getRemark());
proTaskInputRecordMapper.insertSelective(proTaskInputRecord); proTaskInputRecordMapper.insertSelective(proTaskInputRecord);
historyRecord.setHistoryRemark(param.getRemark()); historyRecord.setHistoryRemark(param.getRemark());
@ -334,8 +324,8 @@ public class InputDocService implements IInputDocService {
//通过输入文档id将输入文档表中的状态更改为已上传 //通过输入文档id将输入文档表中的状态更改为已上传
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc(); ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc();
proTaskInputDoc.setId(param.getDocId());
proTaskInputDoc.setIsUpload(1); proTaskInputDoc.setIsUpload(1);
proTaskInputDoc.setId(param.getDocId());
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc); proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
} }
//查找项目id //查找项目id
@ -366,8 +356,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 查看文档上传文件历史记录 * 查看文档上传文件历史记录
* @param param docId 文档id
* @return
*/ */
@Override @Override
public List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param) { public List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param) {
@ -409,7 +397,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 添加输入文档 * 添加输入文档
* @param param
*/ */
@Override @Override
public void addDoc(InputDocDto.AddDoc param) { public void addDoc(InputDocDto.AddDoc param) {
@ -441,7 +428,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 修改输入文档 * 修改输入文档
* @param param
*/ */
@Override @Override
public void updateDoc(InputDocDto.UpdateDoc param) { public void updateDoc(InputDocDto.UpdateDoc param) {
@ -473,7 +459,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 删除输入文档 * 删除输入文档
* @param param
*/ */
@Override @Override
public void delDoc(InputDocDto.DeleteDoc param) { public void delDoc(InputDocDto.DeleteDoc param) {
@ -500,7 +485,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 删除输入文档中的文件 * 删除输入文档中的文件
* @param param
*/ */
@Override @Override
public void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception{ public void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception{
@ -556,7 +540,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 修改上传文件的备注信息 * 修改上传文件的备注信息
* @param param
*/ */
@Override @Override
public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param,Long userId) throws Exception{ public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param,Long userId) throws Exception{
@ -596,8 +579,6 @@ public class InputDocService implements IInputDocService {
/** /**
* 查询历史记录(根据任务id) * 查询历史记录(根据任务id)
* @param param
* @return
*/ */
@Override @Override
public PageInfo<InputDocVo.DocRecordOfTask> findDocRecordByTask(InputDocDto.FindDocRecordByTask param) { public PageInfo<InputDocVo.DocRecordOfTask> findDocRecordByTask(InputDocDto.FindDocRecordByTask param) {
@ -617,7 +598,7 @@ public class InputDocService implements IInputDocService {
* @param param 输入文档id * @param param 输入文档id
*/ */
@Override @Override
public void delAllRecordOfTask(InputDocDto.DelAllRecordOfTask param,Long userId) { public void delAllRecordOfTask(InputDocDto.DelAllRecordOfTask param,Long userId) throws Exception {
ProTaskInputRecordExample example = new ProTaskInputRecordExample(); ProTaskInputRecordExample example = new ProTaskInputRecordExample();
example.createCriteria().andInputDocIdEqualTo(param.getDocId()).andRecStatusEqualTo((byte)0); example.createCriteria().andInputDocIdEqualTo(param.getDocId()).andRecStatusEqualTo((byte)0);
List<ProTaskInputRecord> records = proTaskInputRecordMapper.selectByExample(example); List<ProTaskInputRecord> records = proTaskInputRecordMapper.selectByExample(example);
@ -626,7 +607,7 @@ public class InputDocService implements IInputDocService {
example2.createCriteria().andInputDocIdEqualTo(param.getDocId()); example2.createCriteria().andInputDocIdEqualTo(param.getDocId());
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord(); ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord();
proTaskInputRecord.setRecStatus((byte)2); proTaskInputRecord.setRecStatus((byte)2);
proTaskInputRecordMapper.updateByExampleSelective(proTaskInputRecord,example2);
//文档 改回未上传状态 //文档 改回未上传状态
ProTaskInputDoc doc = new ProTaskInputDoc(); ProTaskInputDoc doc = new ProTaskInputDoc();
@ -636,37 +617,43 @@ public class InputDocService implements IInputDocService {
//将操作保存到历史信息记录表 //将操作保存到历史信息记录表
//查找项目id //查找项目id
try { ProTaskInputDoc inputDoc = proTaskInputDocMapper.selectByPrimaryKey(doc.getId());
ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(doc.getTaskDetailId()); ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(inputDoc.getTaskDetailId());
ProMember proMember = iProMemberService.selectByUserId(userId, taskDetail.getProjectId());
ProMember proMember = iProMemberService.selectByUserId(userId, taskDetail.getProjectId());
//将操作记录添加到历史记录表中 //将操作记录添加到历史记录表中
ProDeliverHistoryRecord historyRecord = new ProDeliverHistoryRecord(); ProDeliverHistoryRecord historyRecord = new ProDeliverHistoryRecord();
historyRecord.setId(snowflake.nextId()); historyRecord.setId(snowflake.nextId());
historyRecord.setDeliverId(doc.getId()); historyRecord.setDeliverId(doc.getId());
historyRecord.setDeliverType((byte)0); historyRecord.setDeliverType((byte)0);
historyRecord.setDoType((byte)6);
historyRecord.setDoType((byte)6); historyRecord.setMemberId(proMember.getId());
historyRecord.setMemberId(proMember.getId()); deliverHistoryRecordDao.insertSelective(historyRecord);
deliverHistoryRecordDao.insertSelective(historyRecord);
}catch (Exception e){ //发送消息
log.info("删除输入文档下所有文件记录",e); if (ObjectUtil.isNotNull(taskDetail)){
robotService.delDocRobotSend(userId,taskDetail,inputDoc.getName());
} }
proTaskInputRecordMapper.updateByExampleSelective(proTaskInputRecord,example2);
} }
} }
/** /**
* 查看交付物的历史记录 * 查看交付物的历史记录
* @param param
* @return
*/ */
@Override @Override
public PageInfo<InputDocVo.DeliverHistory> viewDeliverHistory(InputDocDto.DeliverHistory param) { public PageInfo<InputDocVo.DeliverHistory> viewDeliverHistory(InputDocDto.DeliverHistory param) {
//0为输出文档 //0为输出文档
if (0 == param.getDeliverType()) { if (0 == param.getDeliverType()) {
PageHelper.startPage(param.getPageNum(), param.getPageSize()); PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<InputDocVo.DeliverHistory> historyList = deliverHistoryRecordDao.findInputHistory(param.getDeliverId()); List<InputDocVo.DeliverHistory> historyList = deliverHistoryRecordDao.findInputHistory(param.getDeliverId());
// ProTaskInputDoc proTaskInputDoc = proTaskInputDocMapper.selectByPrimaryKey(param.getDeliverId());
// if(ObjectUtil.isNotNull(proTaskInputDoc)){
// historyList
// }
for (InputDocVo.DeliverHistory deliverHistory : historyList) { for (InputDocVo.DeliverHistory deliverHistory : historyList) {
if (StrUtil.isNotBlank(deliverHistory.getFileIds())){ if (StrUtil.isNotBlank(deliverHistory.getFileIds())){
if (deliverHistory.getFileIds().contains(",")) { if (deliverHistory.getFileIds().contains(",")) {
@ -683,19 +670,19 @@ public class InputDocService implements IInputDocService {
deliverHistory.setFileList(fileList); deliverHistory.setFileList(fileList);
} }
} }
} }else{
}else{ if (StrUtil.isNotBlank(deliverHistory.getFileIds())){
if (StrUtil.isNotBlank(deliverHistory.getFileIds())){ List<String> idList = new ArrayList<>();
List<String> idList = new ArrayList<>(); idList.add(deliverHistory.getFileIds());
idList.add(deliverHistory.getFileIds()); //获取文件项目的路径
//获取文件项目的路径 String requestUrl = PropUtil.filedeal;
String requestUrl = PropUtil.filedeal; //通过文件id查询文件信息
//通过文件id查询文件信息 String c = RestTemplateUtil.postBody1(requestUrl, idList);
String c = RestTemplateUtil.postBody1(requestUrl, idList); JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c, JsonResponse.class);
JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c, JsonResponse.class); if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())) {
if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())) { List<FileVo.FilePosition> fileList = a.getData();
List<FileVo.FilePosition> fileList = a.getData(); deliverHistory.setFileList(fileList);
deliverHistory.setFileList(fileList); }
} }
} }
} }
@ -723,19 +710,20 @@ public class InputDocService implements IInputDocService {
deliverHistory.setFileList(fileList); deliverHistory.setFileList(fileList);
} }
} }
} }else {
}else{ if (StrUtil.isNotBlank(deliverHistory.getFileIds())){
if (StrUtil.isNotBlank(deliverHistory.getFileIds())){ //获取文件项目的路径
List<String> idList = new ArrayList<>(); String requestUrl = PropUtil.filedeal;
idList.add(deliverHistory.getFileIds()); List<String> idList = new ArrayList<>();
//获取文件项目的路径 idList.add(deliverHistory.getFileIds());
String requestUrl = PropUtil.filedeal;
//通过文件id查询文件信息 //通过文件id查询文件信息
String c = RestTemplateUtil.postBody1(requestUrl, idList); String c = RestTemplateUtil.postBody1(requestUrl, idList);
JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c, JsonResponse.class); JsonResponse<List<FileVo.FilePosition>> a = JSONObject.parseObject(c, JsonResponse.class);
if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())) { if (ObjectUtil.isNotNull(a) && ObjectUtil.isNotNull(a.getData())) {
List<FileVo.FilePosition> fileList = a.getData(); List<FileVo.FilePosition> fileList = a.getData();
deliverHistory.setFileList(fileList); deliverHistory.setFileList(fileList);
}
} }
} }
} }

1
tall/src/main/java/com/ccsens/tall/service/LwbsService.java

@ -135,5 +135,4 @@ public class LwbsService implements ILwbsService{
} }
return proTaskInfo; return proTaskInfo;
} }
} }

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

@ -54,6 +54,8 @@ public class ProMemberService implements IProMemberService {
private UserAttentionDao userAttentionDao; private UserAttentionDao userAttentionDao;
@Resource @Resource
private SysImitationMapper imitationMapper; private SysImitationMapper imitationMapper;
@Resource
private RobotService robotService;
@Override @Override
@ -339,6 +341,10 @@ public class ProMemberService implements IProMemberService {
userAttentionDao.insertSelective(userAttention); userAttentionDao.insertSelective(userAttention);
} }
} }
//发送系统消息
robotService.saveMemberRobotSend(currentUserId,saveMember.getProjectId(),saveMember.getMemberName(),proMember.getId());
} else { } else {
throw new BaseException(CodeEnum.NOT_POWER); throw new BaseException(CodeEnum.NOT_POWER);
} }
@ -346,7 +352,7 @@ public class ProMemberService implements IProMemberService {
} }
@Override @Override
public void deleteMember(Long currentUserId, MemberDto.DeleteMember deleteMember) { public void deleteMember(Long currentUserId, MemberDto.DeleteMember deleteMember) throws Exception {
//查找要删除的成员 //查找要删除的成员
ProMember proMember = proMemberDao.selectByPrimaryKey(deleteMember.getMemberId()); ProMember proMember = proMemberDao.selectByPrimaryKey(deleteMember.getMemberId());
if (ObjectUtil.isNull(proMember)) { if (ObjectUtil.isNull(proMember)) {
@ -357,6 +363,10 @@ public class ProMemberService implements IProMemberService {
if (power < 2) { if (power < 2) {
throw new BaseException(CodeEnum.NOT_POWER); throw new BaseException(CodeEnum.NOT_POWER);
} }
//发送系统消息
robotService.delMemberRobotSend(currentUserId,proMember.getProjectId(),proMember.getNickname(),proMember.getId());
//修改成员状态来删除 //修改成员状态来删除
proMember.setRecStatus((byte) 2); proMember.setRecStatus((byte) 2);
proMemberDao.updateByPrimaryKeySelective(proMember); proMemberDao.updateByPrimaryKeySelective(proMember);
@ -442,6 +452,9 @@ public class ProMemberService implements IProMemberService {
proMember.setStakeholderId(stakeholderId); proMember.setStakeholderId(stakeholderId);
// } // }
proMemberDao.updateByPrimaryKeySelective(proMember); proMemberDao.updateByPrimaryKeySelective(proMember);
//发送系统消息
robotService.updateMemberRobotSend(currentUserId,proMember.getProjectId(),proMember.getNickname(),proMember.getId());
//查找被修改的成员的信息并返回 //查找被修改的成员的信息并返回
return proMemberDao.getMemberInfoByMemberId(updateMemberInfo.getMemberId()); return proMemberDao.getMemberInfoByMemberId(updateMemberInfo.getMemberId());
} }

163
tall/src/main/java/com/ccsens/tall/service/ProRoleService.java

@ -74,6 +74,8 @@ public class ProRoleService implements IProRoleService {
private ProRoleMapper proRoleMapper; private ProRoleMapper proRoleMapper;
@Resource @Resource
private ProRoleExcludeMapper proRoleExcludeMapper; private ProRoleExcludeMapper proRoleExcludeMapper;
@Resource
private RobotService robotService;
@Override @Override
public void saveProRole(ProRole proRole) { public void saveProRole(ProRole proRole) {
proRoleDao.insertSelective(proRole); proRoleDao.insertSelective(proRole);
@ -194,10 +196,12 @@ public class ProRoleService implements IProRoleService {
//是否PM //是否PM
for (ProjectVo.RoleInfo memberRole : memberRoleList) { for (ProjectVo.RoleInfo memberRole : memberRoleList) {
ProRole parentRole = proRoleDao.selectByPrimaryKey(memberRole.getParentId()); ProRole parentRole = proRoleDao.selectByPrimaryKey(memberRole.getParentId());
if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) { if(ObjectUtil.isNotNull(parentRole)) {
memberRole.setPm(true); if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
} else { memberRole.setPm(true);
memberRole.setPm(false); } else {
memberRole.setPm(false);
}
} }
} }
//奖惩干系人信息 //奖惩干系人信息
@ -369,6 +373,7 @@ public class ProRoleService implements IProRoleService {
//查看角色展示列表中是否有数据 //查看角色展示列表中是否有数据
ProMemberRoleShowExample proMemberRoleShowExampleNew=new ProMemberRoleShowExample(); ProMemberRoleShowExample proMemberRoleShowExampleNew=new ProMemberRoleShowExample();
proMemberRoleShowExampleNew.createCriteria().andMemberIdEqualTo(memberId); proMemberRoleShowExampleNew.createCriteria().andMemberIdEqualTo(memberId);
proMemberRoleShowExampleNew.setOrderByClause("sequence");
List<ProMemberRoleShow> proMemberRoleShowsNew = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExampleNew); List<ProMemberRoleShow> proMemberRoleShowsNew = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExampleNew);
List<Long> roleIds = new ArrayList<>(); List<Long> roleIds = new ArrayList<>();
@ -376,9 +381,26 @@ public class ProRoleService implements IProRoleService {
roleIds.add(roleShow.getRoleId()); roleIds.add(roleShow.getRoleId());
} }
//查询二级角色 //查询二级角色
memberRoleList = proRoleDao.selectSecondRolesShowByRoleId(projectId,roleIds); memberRoleList = proRoleDao.selectSecondRolesShowByRoleId(projectId,memberId);
//在show表查找可见的角色 //在show表查找可见的角色
// TODO 查找此项目的子项目
SysProjectExample projectExample = new SysProjectExample();
projectExample.createCriteria().andParentIdEqualTo(projectId);
List<SysProject> sysProjectList = sysProjectDao.selectByExample(projectExample);
if(CollectionUtil.isNotEmpty(sysProjectList)){
sysProjectList.forEach(project -> {
ProjectVo.RoleInfo roleInfo = new ProjectVo.RoleInfo();
roleInfo.setId(project.getId());
roleInfo.setName(project.getName());
roleInfo.setProjectRole((byte) 1);
roleInfo.setRelevanceProjectId(project.getId());
roleInfo.setRelevanceProjectName(project.getName());
memberRoleList.add(roleInfo);
});
}
return memberRoleList; return memberRoleList;
} }
@ -469,7 +491,7 @@ public class ProRoleService implements IProRoleService {
* 删除角色 * 删除角色
*/ */
@Override @Override
public void deleteRole(Long userId, Long roleId) { public void deleteRole(Long userId, Long roleId) throws Exception {
ProRole role = proRoleDao.selectByPrimaryKey(roleId); ProRole role = proRoleDao.selectByPrimaryKey(roleId);
//TODO 项目经理不能被删除 //TODO 项目经理不能被删除
Integer i = proRoleDao.isPmByRoleId(roleId); Integer i = proRoleDao.isPmByRoleId(roleId);
@ -482,6 +504,9 @@ public class ProRoleService implements IProRoleService {
if (ObjectUtil.isNotNull(role)) { if (ObjectUtil.isNotNull(role)) {
int power = selectPowerByRoleName(userId, role.getProjectId()); int power = selectPowerByRoleName(userId, role.getProjectId());
if (power > 1) { if (power > 1) {
//发送系统消息
robotService.delRoleRobotSend(userId,role.getProjectId(),role.getName(),role.getId());
//修改删除状态 //修改删除状态
role.setRecStatus(WebConstant.REC_STATUS.Deleted.value); role.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
proRoleDao.updateByPrimaryKeySelective(role); proRoleDao.updateByPrimaryKeySelective(role);
@ -555,7 +580,7 @@ public class ProRoleService implements IProRoleService {
@Override @Override
public RoleVo.RoleByProjectId saveRole(Long currentUserId, RoleDto.SaveRole saveRole) { public RoleVo.RoleByProjectId saveRole(Long currentUserId, RoleDto.SaveRole saveRole) throws Exception {
//检查操作者的权限 //检查操作者的权限
int power = selectPowerByRoleName(currentUserId, saveRole.getProjectId()); int power = selectPowerByRoleName(currentUserId, saveRole.getProjectId());
if (power < 2) { if (power < 2) {
@ -579,11 +604,14 @@ public class ProRoleService implements IProRoleService {
RoleVo.RoleByProjectId roleInfo = new RoleVo.RoleByProjectId(); RoleVo.RoleByProjectId roleInfo = new RoleVo.RoleByProjectId();
roleInfo.setRoleId(role.getId()); roleInfo.setRoleId(role.getId());
roleInfo.setRoleName(role.getName()); roleInfo.setRoleName(role.getName());
//发送系统消息
robotService.addRoleRobotSend(currentUserId,saveRole.getProjectId(),saveRole.getRoleName(),roleInfo.getRoleId());
return roleInfo; return roleInfo;
} }
@Override @Override
public ProjectVo.RoleInfo updateRole(Long currentUserId, RoleDto.UpdateRole updateRole) { public ProjectVo.RoleInfo updateRole(Long currentUserId, RoleDto.UpdateRole updateRole) throws Exception {
//查找角色 //查找角色
ProRole proRole = proRoleDao.selectByPrimaryKey(updateRole.getRoleId()); ProRole proRole = proRoleDao.selectByPrimaryKey(updateRole.getRoleId());
if (ObjectUtil.isNull(proRole)) { if (ObjectUtil.isNull(proRole)) {
@ -611,6 +639,9 @@ public class ProRoleService implements IProRoleService {
} }
} }
proRoleDao.updateByPrimaryKeySelective(proRole); proRoleDao.updateByPrimaryKeySelective(proRole);
//发送系统消息
robotService.updateRoleRobotSend(currentUserId,proRole.getProjectId(),updateRole.getRoleName(),updateRole.getRoleId());
return getRoleInfoByRoleId(proRole.getId()); return getRoleInfoByRoleId(proRole.getId());
} }
@ -665,7 +696,9 @@ public class ProRoleService implements IProRoleService {
} }
@Override @Override
// public TaskVo.ProTaskInfo queryByProjectVirtualRole(RoleDto.ProjectId projectId) {
public List<TaskVo.NormalTask> queryByProjectVirtualRole(RoleDto.ProjectId projectId) { public List<TaskVo.NormalTask> queryByProjectVirtualRole(RoleDto.ProjectId projectId) {
TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo();
List<TaskVo.NormalTask> taskList = new ArrayList<>(); List<TaskVo.NormalTask> taskList = new ArrayList<>();
//查找项目 //查找项目
SysProject project = sysProjectDao.selectByPrimaryKey(projectId.getProjectId()); SysProject project = sysProjectDao.selectByPrimaryKey(projectId.getProjectId());
@ -689,7 +722,7 @@ public class ProRoleService implements IProRoleService {
normalTask.setDetailId(firstTaskDetail.getId()); normalTask.setDetailId(firstTaskDetail.getId());
normalTask.setSequence(sequence); normalTask.setSequence(sequence);
List<TaskVo.TaskListByProjectId> secondTaskList = taskDetailDao.getTaskByParentId(firstTaskDetail.getId(), 1,beginTime,endTime); List<TaskVo.TaskListByProjectId> secondTaskList = taskDetailDao.getTaskByParentId(firstTaskDetail.getId(), "里程碑",beginTime,endTime);
List<TaskVo.NormalTask> secondList = new ArrayList<>(); List<TaskVo.NormalTask> secondList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(secondTaskList)) { if (CollectionUtil.isNotEmpty(secondTaskList)) {
secondTaskList.forEach(secondTask -> { secondTaskList.forEach(secondTask -> {
@ -704,6 +737,7 @@ public class ProRoleService implements IProRoleService {
taskList.add(normalTask); taskList.add(normalTask);
}); });
} }
proTaskInfo.setNormalTaskList(taskList);
return taskList; return taskList;
} }
@ -743,7 +777,7 @@ public class ProRoleService implements IProRoleService {
} }
@Override @Override
public RoleVo.JueSeByProIdLists queryRoleShows(QueryDto<RoleDto.QueryRoleShows> param) { public RoleVo.JueSeByProIdLists queryRoleShows(QueryDto<RoleDto.QueryRoleShows> param) throws Exception {
RoleVo.JueSeByProIdLists jueSeByProIdLists=new RoleVo.JueSeByProIdLists(); RoleVo.JueSeByProIdLists jueSeByProIdLists=new RoleVo.JueSeByProIdLists();
//获取成员id //获取成员id
Long memberId = queryMemberId(param.getParam().getProjectId(), param.getUserId()); Long memberId = queryMemberId(param.getParam().getProjectId(), param.getUserId());
@ -758,18 +792,46 @@ public class ProRoleService implements IProRoleService {
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1);
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList());
//获取用户在项目中的角色
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(param.getUserId(), param.getParam().getProjectId(), 0);
//查询已经添加的角色 //查询已经添加的角色
List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(memberId); List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(memberId);
List<Long> listBeforeId= listBefor.stream().map(action ->{return action.getId();}).collect(Collectors.toList()); List<Long> listBeforeId= listBefor.stream().map(action ->{return action.getId();}).collect(Collectors.toList());
for (int i = 0; i < listBefor.size(); i++) { for (int i = 0; i < listBefor.size(); i++) {
//是否项目经理
if(jili1.contains(listBefor.get(i).getId())){ if(jili1.contains(listBefor.get(i).getId())){
listBefor.get(i).setIsPM(true); listBefor.get(i).setIsPM(true);
}else { }else {
listBefor.get(i).setIsPM(false); listBefor.get(i).setIsPM(false);
} }
//当前用户是否属于该角色
for (ProRole proRole : roleList) {
if (listBefor.get(i).getId().equals(proRole.getId())){
listBefor.get(i).setMine(true);
}else{
listBefor.get(i).setMine(false);
}
}
} }
//查询未添加的角色 //查询未添加的角色
List<RoleVo.JueSeByProId> listAfter=proRoleDao.queryRoleShowslistBefore(param.getParam().getProjectId(),listBeforeId); List<RoleVo.JueSeByProId> listAfter=proRoleDao.queryRoleShowslistBefore(param.getParam().getProjectId(),listBeforeId);
for (int i = 0; i < listAfter.size(); i++) {
//是否项目经理
if(jili1.contains(listAfter.get(i).getId())){
listAfter.get(i).setIsPM(true);
}else {
listAfter.get(i).setIsPM(false);
}
//当前用户是否属于该角色
for (ProRole proRole : roleList) {
if (listAfter.get(i).getId().equals(proRole.getId())){
listAfter.get(i).setMine(true);
}else{
listAfter.get(i).setMine(false);
}
}
}
jueSeByProIdLists.setListAfter(listAfter); jueSeByProIdLists.setListAfter(listAfter);
jueSeByProIdLists.setListBefore(listBefor); jueSeByProIdLists.setListBefore(listBefor);
return jueSeByProIdLists; return jueSeByProIdLists;
@ -852,36 +914,65 @@ public class ProRoleService implements IProRoleService {
*/ */
@Override @Override
public void upRoleShowsOrder(QueryDto<RoleDto.UpRoleShowsOrder> param) { public void upRoleShowsOrder(QueryDto<RoleDto.UpRoleShowsOrder> param) {
if(param.getParam().getRoleIds().size()<=1){ if(ObjectUtil.isNull(param.getParam().getRoleIds()) || param.getParam().getRoleIds().size()<=1){
throw new BaseException(CodeEnum.ZUISHAOCHUANLIANGE); throw new BaseException(CodeEnum.ZUISHAOCHUANLIANGE);
} }
//查找当前用户在项目内的成员信息
Long memberId=queryMemberId(param.getParam().getProjectId(),param.getUserId()); Long memberId=queryMemberId(param.getParam().getProjectId(),param.getUserId());
ProRoleExample proRoleExample=new ProRoleExample(); //根据memberID查找,改成员以前可以看见的所有角色。。。删除
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId()); ProMemberRoleShowExample roleShowExample = new ProMemberRoleShowExample();
//一级角色项目经理 roleShowExample.createCriteria().andMemberIdEqualTo(memberId);
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); List<ProMemberRoleShow> roleShowList = proMemberRoleShowMapper.selectByExample(roleShowExample);
//二级角色项目经理 if(CollectionUtil.isNotEmpty(roleShowList)){
ProRoleExample proRoleExample1=new ProRoleExample(); roleShowList.forEach(roleShow -> {
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); roleShow.setRecStatus((byte) 2);
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); proMemberRoleShowMapper.updateByPrimaryKeySelective(roleShow);
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); });
for (int i = param.getParam().getRoleIds().size() - 1; i >= 0; i--) {
if(jili1.get(0).equals(param.getParam().getRoleIds().get(i))){
param.getParam().getRoleIds().remove(i);
}
} }
//先查出来在数据库中这几个数据中最大的序号是多少,然后再最大的上面进行加加操作 //根据前端传的数据,循环放入,并排序
ProMemberRoleShowExample proMemberRoleShowExample=new ProMemberRoleShowExample(); for (int i = 0; i < param.getParam().getRoleIds().size(); i++) {
proMemberRoleShowExample.createCriteria().andRoleIdIn(param.getParam().getRoleIds()).andRecStatusEqualTo((byte)0); Long roleId = param.getParam().getRoleIds().get(i);
List<ProMemberRoleShow> proMemberRoleShows = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample); ProMemberRoleShow proMemberRoleShow = new ProMemberRoleShow();
Integer[] seq=new Integer[]{ proMemberRoleShows.stream().mapToInt(action->action.getSequence()).max().getAsInt()}; proMemberRoleShow.setId(snowflake.nextId());
param.getParam().getRoleIds().forEach(action->{ proMemberRoleShow.setMemberId(memberId);
ProMemberRoleShowExample proMemberRoleShowExample1=new ProMemberRoleShowExample(); proMemberRoleShow.setRoleId(roleId);
proMemberRoleShowExample1.createCriteria().andRecStatusEqualTo((byte)0).andMemberIdEqualTo(memberId).andRoleIdEqualTo(action); proMemberRoleShow.setSequence(i);
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); proMemberRoleShowMapper.insertSelective(proMemberRoleShow);
proMemberRoleShow.setSequence(++seq[0]); }
proMemberRoleShowMapper.updateByExampleSelective(proMemberRoleShow,proMemberRoleShowExample1);
});
//
// if(param.getParam().getRoleIds().size()<=1){
// throw new BaseException(CodeEnum.ZUISHAOCHUANLIANGE);
// }
// Long memberId=queryMemberId(param.getParam().getProjectId(),param.getUserId());
// ProRoleExample proRoleExample=new ProRoleExample();
// proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId());
// //一级角色项目经理
// List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList());
// //二级角色项目经理
// ProRoleExample proRoleExample1=new ProRoleExample();
// proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili);
// List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1);
// List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList());
// for (int i = param.getParam().getRoleIds().size() - 1; i >= 0; i--) {
// if(jili1.get(0).equals(param.getParam().getRoleIds().get(i))){
// param.getParam().getRoleIds().remove(i);
// }
// }
// //先查出来在数据库中这几个数据中最大的序号是多少,然后再最大的上面进行加加操作
// ProMemberRoleShowExample proMemberRoleShowExample=new ProMemberRoleShowExample();
// proMemberRoleShowExample.createCriteria().andRoleIdIn(param.getParam().getRoleIds()).andRecStatusEqualTo((byte)0);
// List<ProMemberRoleShow> proMemberRoleShows = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample);
// Integer[] seq=new Integer[]{ proMemberRoleShows.stream().mapToInt(action->action.getSequence()).max().getAsInt()};
// param.getParam().getRoleIds().forEach(action->{
// ProMemberRoleShowExample proMemberRoleShowExample1=new ProMemberRoleShowExample();
// proMemberRoleShowExample1.createCriteria().andRecStatusEqualTo((byte)0).andMemberIdEqualTo(memberId).andRoleIdEqualTo(action);
// ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow();
// proMemberRoleShow.setSequence(++seq[0]);
// proMemberRoleShowMapper.updateByExampleSelective(proMemberRoleShow,proMemberRoleShowExample1);
// });
} }
/** /**

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

@ -15,10 +15,7 @@ import com.ccsens.tall.bean.vo.MessageVo;
import com.ccsens.tall.bean.vo.ProjectMessageVo; import com.ccsens.tall.bean.vo.ProjectMessageVo;
import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.bean.vo.UserVo; import com.ccsens.tall.bean.vo.UserVo;
import com.ccsens.tall.persist.dao.ProMemberDao; import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.persist.dao.SysAuthDao;
import com.ccsens.tall.persist.dao.SysMessageSendDao;
import com.ccsens.tall.persist.dao.SysOperationDao;
import com.ccsens.tall.persist.mapper.SysOperationMessageMapper; import com.ccsens.tall.persist.mapper.SysOperationMessageMapper;
import com.ccsens.tall.util.RobotUtil; import com.ccsens.tall.util.RobotUtil;
import com.ccsens.tall.util.WxTemplateUtil; import com.ccsens.tall.util.WxTemplateUtil;
@ -71,6 +68,8 @@ public class ProjectMessageService implements IProjectMessageService {
private SysAuthDao sysAuthDao; private SysAuthDao sysAuthDao;
@Resource @Resource
private IUserService userService; private IUserService userService;
@Resource
private SysProjectDao sysProjectDao;
@Resource @Resource
private AmqpTemplate rabbitTemplate; private AmqpTemplate rabbitTemplate;
@ -367,8 +366,19 @@ public class ProjectMessageService implements IProjectMessageService {
@Override @Override
public PageInfo<ProjectMessageVo.ProjectMsg> queryProjectMsg(ProjectMessageDto.ProjectMsg param, Long userId) { public PageInfo<ProjectMessageVo.ProjectMsg> queryProjectMsg(ProjectMessageDto.ProjectMsg param, Long userId) {
//验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(userId.equals(param.getProjectId())){
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(param.getStartTime(),param.getEndTime(),userId);
}else {
//不是lwbs正常查询
projectIdList.add(param.getProjectId());
}
PageHelper.startPage(param.getPageNum(), param.getPageSize()); PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<ProjectMessageVo.ProjectMsg> list = sysOperationDao.queryProjectMsg(param); // List<ProjectMessageVo.ProjectMsg> list = sysOperationDao.queryProjectMsg(param);
List<ProjectMessageVo.ProjectMsg> list = sysOperationDao.queryProjectMsg(projectIdList);
return new PageInfo<>(list); return new PageInfo<>(list);
} }

12
tall/src/main/java/com/ccsens/tall/service/ProjectService.java

@ -80,6 +80,8 @@ public class ProjectService implements IProjectService {
private SysAuthDao sysAuthDao; private SysAuthDao sysAuthDao;
@Resource @Resource
private SysProjectLabelDao sysProjectLabelDao; private SysProjectLabelDao sysProjectLabelDao;
@Resource
private RobotService robotService;
@Override @Override
@ -576,11 +578,14 @@ public class ProjectService implements IProjectService {
proRoleDao.updateByPrimaryKeySelective(role); proRoleDao.updateByPrimaryKeySelective(role);
}); });
} }
//发送消息
robotService.delProjectRobotSend(currentUserId,projectId);
//修改项目状态 //修改项目状态
project.setRecStatus(WebConstant.REC_STATUS.Deleted.value); project.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
sysProjectDao.updateByPrimaryKeySelective(project); sysProjectDao.updateByPrimaryKeySelective(project);
} else { } else {
throw new BaseException(CodeEnum.NOT_POWER); throw new BaseException(CodeEnum.NOT_POWER);
} }
@ -624,6 +629,7 @@ public class ProjectService implements IProjectService {
BeanUtil.copyProperties(oldProject, newProject); BeanUtil.copyProperties(oldProject, newProject);
newProject.setId(snowflake.nextId()); newProject.setId(snowflake.nextId());
newProject.setCreatorId(userId); newProject.setCreatorId(userId);
newProject.setName(oldProject.getName() + "-副本");
newProject.setTemplate((byte) 0); newProject.setTemplate((byte) 0);
saveProject(newProject); saveProject(newProject);
//该用户关注新项目 //该用户关注新项目
@ -892,7 +898,7 @@ public class ProjectService implements IProjectService {
* 修改项目信息 * 修改项目信息
*/ */
@Override @Override
public ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token) { public ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token) throws Exception {
//查找项目 //查找项目
SysProject project = sysProjectDao.selectByPrimaryKey(projectInfoDto.getId()); SysProject project = sysProjectDao.selectByPrimaryKey(projectInfoDto.getId());
if (ObjectUtil.isNotNull(project)) { if (ObjectUtil.isNotNull(project)) {
@ -935,6 +941,8 @@ public class ProjectService implements IProjectService {
project.setHighlight(projectInfoDto.getHighlight()); project.setHighlight(projectInfoDto.getHighlight());
} }
sysProjectDao.updateByPrimaryKeySelective(project); sysProjectDao.updateByPrimaryKeySelective(project);
//发送消息
robotService.updateProjectRobotSend(currentUserId,project);
} else { } else {
throw new BaseException(CodeEnum.NOT_POWER); throw new BaseException(CodeEnum.NOT_POWER);

341
tall/src/main/java/com/ccsens/tall/service/RobotService.java

@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.MessageVo; import com.ccsens.tall.bean.vo.MessageVo;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.persist.dao.*; import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.util.RobotUtil; import com.ccsens.tall.util.RobotUtil;
@ -59,7 +60,7 @@ public class RobotService implements IRobotService{
public void robotMessage(OperateType operateType,RobotUtil.Message message){ public void robotMessage(OperateType operateType,RobotUtil.Message message){
//获取机器人信息 //获取机器人信息
SysProjectRobotExample sysProjectRobotExample = new SysProjectRobotExample(); SysProjectRobotExample sysProjectRobotExample = new SysProjectRobotExample();
sysProjectRobotExample.createCriteria().andProjectIdEqualTo( message.getProjectId()); sysProjectRobotExample.createCriteria().andProjectIdEqualTo(message.getProjectId());
List<SysProjectRobot> sysProjectRobotList = sysProjectRobotDao.selectByExample(sysProjectRobotExample); List<SysProjectRobot> sysProjectRobotList = sysProjectRobotDao.selectByExample(sysProjectRobotExample);
if(CollectionUtil.isNotEmpty(sysProjectRobotList)){ if(CollectionUtil.isNotEmpty(sysProjectRobotList)){
sysProjectRobotList.forEach(sysProjectRobot -> { sysProjectRobotList.forEach(sysProjectRobot -> {
@ -141,6 +142,23 @@ public class RobotService implements IRobotService{
return memberPhone; return memberPhone;
} }
private String[] getMemberPhonesByProject(Long projectId) throws Exception {
String[] memberPhone = new String[]{};
List<ProjectVo.MembersByProject> memberList = proMemberService.selectMembersByProjectId(projectId);
if(CollectionUtil.isNotEmpty(memberList)){
String[] phones = new String[memberList.size()];
AtomicInteger i = new AtomicInteger(0);
memberList.forEach(proMember -> {
if(StrUtil.isNotEmpty(proMember.getPhone())) {
phones[i.get()] = proMember.getPhone();
i.set(i.get() + 1);
}
});
memberPhone = phones;
}
return memberPhone;
}
@Override @Override
public void finishTaskRobotSend(Long currentUserId,Long projectId, String projectName, String taskName,Long executorRoleId , int completedStatus) throws Exception { public void finishTaskRobotSend(Long currentUserId,Long projectId, String projectName, String taskName,Long executorRoleId , int completedStatus) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId); String userName = userService.getUserNameByUserId(currentUserId);
@ -253,11 +271,11 @@ public class RobotService implements IRobotService{
/** /**
* 上传交付物信息 消息 * 上传交付物信息 消息
* @param currentUserId * @param currentUserId 当前用户id
* @param deliverName * @param deliverName 交付物名称
* @param subTimeId * @param subTimeId 分解任务id
* @param project * @param project 项目
* @throws Exception * @throws Exception 异常
*/ */
@Override @Override
public void addDeliverRobotSend(Long currentUserId, String deliverName, Long subTimeId,SysProject project) throws Exception { public void addDeliverRobotSend(Long currentUserId, String deliverName, Long subTimeId,SysProject project) throws Exception {
@ -300,11 +318,15 @@ public class RobotService implements IRobotService{
public void deleteDeliverRobotSend(Long currentUserId, String deliverName, Long subTimeId) throws Exception { public void deleteDeliverRobotSend(Long currentUserId, String deliverName, Long subTimeId) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId); String userName = userService.getUserNameByUserId(currentUserId);
String projectName = ""; String projectName = "";
ProTaskDetail taskDetail = null;
ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(subTimeId); ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(subTimeId);
if(ObjectUtil.isNull(proTaskSubTime)){ if(ObjectUtil.isNull(proTaskSubTime)){
throw new BaseException(CodeEnum.NOT_TASK); // throw new BaseException(CodeEnum.NOT_TASK);
taskDetail = taskDetailDao.selectByPrimaryKey(subTimeId);
}else {
taskDetail = taskDetailDao.selectByPrimaryKey(proTaskSubTime.getTaskDetailId());
} }
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(proTaskSubTime.getTaskDetailId());
if(ObjectUtil.isNull(taskDetail)){ if(ObjectUtil.isNull(taskDetail)){
throw new BaseException(CodeEnum.NOT_TASK); throw new BaseException(CodeEnum.NOT_TASK);
} }
@ -334,11 +356,11 @@ public class RobotService implements IRobotService{
/** /**
* 检查交付物 消息 * 检查交付物 消息
* @param currentUserId * @param currentUserId 当前登录用户id
* @param task * @param task 任务详情
* @param uploadUserId * @param uploadUserId 上传用户id
* @param deliverName * @param deliverName 交付物名称
* @throws Exception * @throws Exception 异常
*/ */
@Override @Override
public void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long uploadUserId, String deliverName,Boolean flag) throws Exception { public void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long uploadUserId, String deliverName,Boolean flag) throws Exception {
@ -436,7 +458,6 @@ public class RobotService implements IRobotService{
RobotUtil.setInform(inform); RobotUtil.setInform(inform);
// 添加wx消息通知 // 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.uploadFileForDoc(project.getId(), userName,project.getName(),task.getName(),deliverable)); RobotUtil.setWxTemplate(WxTemplateUtil.uploadFileForDoc(project.getId(), userName,project.getName(),task.getName(),deliverable));
} }
/** /**
@ -477,10 +498,10 @@ public class RobotService implements IRobotService{
/** /**
* 修改输入文档备注 消息记录 * 修改输入文档备注 消息记录
* @param userId * @param userId 当前用户id
* @param taskDetail * @param taskDetail 任务详情
* @param name * @param name 交付物名称
* @throws Exception * @throws Exception 异常
*/ */
@Override @Override
public void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception { public void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception {
@ -548,4 +569,288 @@ public class RobotService implements IRobotService{
/**
*新增角色 系统消息
*/
@Override
public void addRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(roleId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.addRoleComment(currentUserId, userName, project.getId(), project.getName(),roleName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.addRole(project.getId(), userName,project.getName(),roleName));
}
/**
*修改角色 系统消息
*/
@Override
public void updateRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(roleId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.updateRoleComment(currentUserId, userName, project.getId(), project.getName(),roleName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.updateRole(project.getId(), userName,project.getName(),roleName));
}
/**
*删除角色 系统消息
*/
@Override
public void delRoleRobotSend(Long userId, Long projectId, String name, Long id) throws Exception {
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,name)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(id);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.delRoleComment(userId, userName, project.getId(), project.getName(),name);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.delRole(project.getId(), userName,project.getName(),name));
}
/**
*添加成员 系统消息
*/
@Override
public void saveMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception {
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName)
);
//获取角色内成员的手机号(给项目中所有成员发送消息)
String[] memberPhone = getMemberPhonesByProject(projectId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.saveMember(userId, userName, project.getId(), project.getName(),memberName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.saveMember(project.getId(), userName,project.getName(),memberName));
}
/**
*删除成员 系统消息
*/
@Override
public void delMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception {
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByProject(projectId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.delMember(userId, userName, project.getId(), project.getName(),memberName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.delMember(project.getId(), userName,project.getName(),memberName));
}
/**
*修改成员 系统消息
*/
@Override
public void updateMemberRobotSend(Long userId, Long projectId, String memberName, Long id) throws Exception {
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.MemberName.value,memberName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByProject(projectId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.updateMember(userId, userName, project.getId(), project.getName(),memberName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.updateMember(project.getId(), userName,project.getName(),memberName));
}
/**
*添加项目 系统消息
*/
@Override
public void saveWbsRobotSend(Long currentUserId,SysProject sysProject) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(sysProject.getId());
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByProject(project.getId());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.saveWbs(currentUserId,userName, project.getId(), project.getName());
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.saveWbs(project.getId(),userName,project.getName()));
}
/**
*修改项目 系统消息
*/
@Override
public void updateProjectRobotSend(Long currentUserId,SysProject sysProject) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(sysProject.getId());
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByProject(project.getId());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.updateProject(currentUserId,userName, project.getId(), project.getName());
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.updateProject(project.getId(),userName,project.getName()));
}
/**
*删除项目 系统消息
*/
@Override
public void delProjectRobotSend(Long currentUserId,Long projectId) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByProject(project.getId());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.delProject(currentUserId,userName, project.getId(), project.getName());
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.delProject(project.getId(),userName,project.getName()));
}
} }

52
tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java

@ -130,8 +130,10 @@ public class TaskDeliverService implements ITaskDeliverService {
if (CollectionUtil.isNotEmpty(postLogList)) { if (CollectionUtil.isNotEmpty(postLogList)) {
ProTaskDeliverPostLog postLog = postLogList.get(0); ProTaskDeliverPostLog postLog = postLogList.get(0);
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(postLog.getFileId()); SysCommitedFile file = commitedFileDao.selectByPrimaryKey(postLog.getFileId());
// deliverInfoByMvp.setUrl(WebConstant.TEST_URL_BASE + file.getPath()); if(ObjectUtil.isNotNull(file)){
deliverInfoByMvp.setUrl(PropUtil.imgDomain + "/" + file.getPath()); deliverInfoByMvp.setUrl(PropUtil.imgDomain + "/" + file.getPath());
// deliverInfoByMvp.setUrl(WebConstant.TEST_URL_BASE + file.getPath())
};
ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample(); ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample();
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId()); checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId());
@ -263,7 +265,12 @@ public class TaskDeliverService implements ITaskDeliverService {
historyRecord.setDeliverId(uploadDeliver.getDeliverId()); historyRecord.setDeliverId(uploadDeliver.getDeliverId());
historyRecord.setDeliverType((byte)1); historyRecord.setDeliverType((byte)1);
historyRecord.setDeliverRecordId(deliverPostLog.getId()); historyRecord.setDeliverRecordId(deliverPostLog.getId());
historyRecord.setDoType((byte)0); if(CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())){
historyRecord.setDoType((byte)0);
}else {
historyRecord.setDoType((byte)5);
}
historyRecord.setMemberId(proMember.getId()); historyRecord.setMemberId(proMember.getId());
deliverHistoryRecordDao.insertSelective(historyRecord); deliverHistoryRecordDao.insertSelective(historyRecord);
} }
@ -1144,7 +1151,7 @@ public class TaskDeliverService implements ITaskDeliverService {
* @param param * @param param
*/ */
@Override @Override
public void delAllFileOfDeliver(DeliverDto.DelAllFileOfDeliver param,Long userId) { public void delAllFileOfDeliver(DeliverDto.DelAllFileOfDeliver param,Long userId) throws Exception {
ProTaskDeliverPostLogExample example = new ProTaskDeliverPostLogExample(); ProTaskDeliverPostLogExample example = new ProTaskDeliverPostLogExample();
example.createCriteria().andDeliverIdEqualTo(param.getDeliverId()); example.createCriteria().andDeliverIdEqualTo(param.getDeliverId());
List<ProTaskDeliverPostLog> proTaskDeliverPostLogs = deliverPostLogDao.selectByExample(example); List<ProTaskDeliverPostLog> proTaskDeliverPostLogs = deliverPostLogDao.selectByExample(example);
@ -1159,24 +1166,25 @@ public class TaskDeliverService implements ITaskDeliverService {
taskDeliver.setIsUpload(0); taskDeliver.setIsUpload(0);
taskDeliverDao.updateByPrimaryKeySelective(taskDeliver); taskDeliverDao.updateByPrimaryKeySelective(taskDeliver);
try {
//向交付物历史记录表中添加数据 //向交付物历史记录表中添加数据
//查找成员 //查找成员
ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(param.getDeliverId()); ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(param.getDeliverId());
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(deliver.getTaskDetailId()); ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(deliver.getTaskDetailId());
ProMember proMember = iProMemberService.selectByUserId(userId, taskDetail.getProjectId()); ProMember proMember = iProMemberService.selectByUserId(userId, taskDetail.getProjectId());
//将操作记录添加到历史记录表中 //将操作记录添加到历史记录表中
ProDeliverHistoryRecord historyRecord = new ProDeliverHistoryRecord(); ProDeliverHistoryRecord historyRecord = new ProDeliverHistoryRecord();
historyRecord.setId(snowflake.nextId()); historyRecord.setId(snowflake.nextId());
historyRecord.setDeliverId(param.getDeliverId()); historyRecord.setDeliverId(param.getDeliverId());
historyRecord.setDeliverType((byte)1); historyRecord.setDeliverType((byte)1);
historyRecord.setDoType((byte)6); historyRecord.setDoType((byte)6);
historyRecord.setMemberId(proMember.getId()); historyRecord.setMemberId(proMember.getId());
deliverHistoryRecordDao.insertSelective(historyRecord); deliverHistoryRecordDao.insertSelective(historyRecord);
}catch (Exception e){
log.info("删除交付下所有文件",e);
} //用智能助手发送消息
robotService.deleteDeliverRobotSend(userId,deliver.getName(),taskDetail.getId());
} }
} }

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

@ -673,23 +673,32 @@ public class TaskSubTimeService implements ITaskSubTimeService {
* 看板上查找任务信息 * 看板上查找任务信息
* *
* @param currentUserId userId * @param currentUserId userId
* @param projectId 项目id * @param queryKanbanTask 查找条件
* @param roleId 角色id
* @param type 任务状态 0未开始 1进行中 2已完成
* @param page 页数
* @param pageSize 每页数量
* @return 任务列表 * @return 任务列表
*/ */
@Override @Override
public List<TaskVo.KanBan> getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, public List<TaskVo.KanBan> getKanbanTake(Long currentUserId, TaskDto.QueryKanbanTask queryKanbanTask) throws Exception {
Integer page, Integer pageSize, Integer orderType, Integer order) throws Exception { //验证当前是否是lwbs在调用接口,项目id和当前用户id一致时认为是lwbs
List<Long> projectIdList = new ArrayList<>();
if(currentUserId.equals(queryKanbanTask.getProjectId())){
//查找此用户所有的项目id
projectIdList = sysProjectDao.queryProjectIdByUserId(queryKanbanTask.getStartTime(),queryKanbanTask.getEndTime(),currentUserId);
}else {
//不是lwbs正常查询
projectIdList.add(queryKanbanTask.getProjectId());
}
//查询该用户在每个项目下的member
List<Long> memberIdList = proMemberDao.getIdByUserIdAndProjectId(projectIdList,currentUserId);
//返回的list //返回的list
List<TaskVo.KanBan> kanBans = new ArrayList<>(); List<TaskVo.KanBan> kanBans = new ArrayList<>();
//查找此用户在任务下的成员 // //查找此用户在项目下的成员
ProMember member = proMemberService.selectByUserId(currentUserId, projectId); // ProMember member = proMemberService.selectByUserId(currentUserId, queryKanbanTask.getProjectId());
if (ObjectUtil.isNull(member)) { // if (ObjectUtil.isNull(member)) {
throw new BaseException(CodeEnum.NOT_MEMBER); // throw new BaseException(CodeEnum.NOT_MEMBER);
} // }
//TODO 暂时确定三个状态 //TODO 暂时确定三个状态
Map<Integer, String> typeMap = new HashMap<>(0); Map<Integer, String> typeMap = new HashMap<>(0);
@ -697,32 +706,32 @@ public class TaskSubTimeService implements ITaskSubTimeService {
typeMap.put(1, "进行中"); typeMap.put(1, "进行中");
typeMap.put(2, "已完成"); typeMap.put(2, "已完成");
if (ObjectUtil.isNull(type)) { if (ObjectUtil.isNull(queryKanbanTask.getType())) {
for (Map.Entry<Integer, String> entry : typeMap.entrySet()) { for (Map.Entry<Integer, String> entry : typeMap.entrySet()) {
log.info("key= " + entry.getKey() + " and value= " + entry.getValue()); log.info("key= " + entry.getKey() + " and value= " + entry.getValue());
TaskVo.KanBan kanBan = new TaskVo.KanBan(); TaskVo.KanBan kanBan = new TaskVo.KanBan();
kanBan.setCode(entry.getKey()); kanBan.setCode(entry.getKey());
kanBan.setTypeName(entry.getValue()); kanBan.setTypeName(entry.getValue());
PageHelper.startPage(page, pageSize); PageHelper.startPage(queryKanbanTask.getPage(), queryKanbanTask.getPageSize());
if (kanBan.getCode() <= 2) { if (kanBan.getCode() <= 2) {
List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTake(currentUserId,projectId, roleId, kanBan.getCode(), member.getId(),orderType,order); List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTake(currentUserId,projectIdList, queryKanbanTask.getRoleId(), kanBan.getCode(), memberIdList,queryKanbanTask.getOrderType(),queryKanbanTask.getOrder());
kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); kanBan.setTaskList(new PageInfo<>(kanBanTaskList));
} else { } else {
List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(currentUserId,projectId, roleId, kanBan.getCode(),orderType,order); List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(currentUserId,projectIdList, queryKanbanTask.getRoleId(), kanBan.getCode(),queryKanbanTask.getOrderType(),queryKanbanTask.getOrder());
kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); kanBan.setTaskList(new PageInfo<>(kanBanTaskList));
} }
kanBans.add(kanBan); kanBans.add(kanBan);
} }
} else { } else {
TaskVo.KanBan kanBan = new TaskVo.KanBan(); TaskVo.KanBan kanBan = new TaskVo.KanBan();
kanBan.setCode(type); kanBan.setCode(queryKanbanTask.getType());
kanBan.setTypeName(typeMap.get(type)); kanBan.setTypeName(typeMap.get(queryKanbanTask.getType()));
PageHelper.startPage(page, pageSize); PageHelper.startPage(queryKanbanTask.getPage(), queryKanbanTask.getPageSize());
if (kanBan.getCode() <= 2) { if (kanBan.getCode() <= 2) {
List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTake(currentUserId,projectId, roleId, type, member.getId(),orderType,order); List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTake(currentUserId,projectIdList, queryKanbanTask.getRoleId(), queryKanbanTask.getType(), memberIdList,queryKanbanTask.getOrderType(),queryKanbanTask.getOrder());
kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); kanBan.setTaskList(new PageInfo<>(kanBanTaskList));
} else { } else {
List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(currentUserId,projectId, roleId, type,orderType,order); List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(currentUserId,projectIdList, queryKanbanTask.getRoleId(), queryKanbanTask.getType(),queryKanbanTask.getOrderType(),queryKanbanTask.getOrder());
kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); kanBan.setTaskList(new PageInfo<>(kanBanTaskList));
} }
kanBans.add(kanBan); kanBans.add(kanBan);

28
tall/src/main/java/com/ccsens/tall/service/UserService.java

@ -536,16 +536,16 @@ public class UserService implements IUserService {
auth.setIdentifier(identifier); auth.setIdentifier(identifier);
auth.setCredential(credential); auth.setCredential(credential);
authDao.insertSelective(auth); authDao.insertSelective(auth);
// //自动添加账号密码 //自动添加账号密码
// String accountName = RandomStringUtils.random(8, WebConstant.RANDOM_STR); String accountName = RandomStringUtils.random(8, WebConstant.RANDOM_STR);
// SysAuth accountAuth = new SysAuth(); SysAuth accountAuth = new SysAuth();
// accountAuth.setId(snowflake.nextId()); accountAuth.setId(snowflake.nextId());
// accountAuth.setUserId(user.getId()); accountAuth.setUserId(user.getId());
// accountAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Account.value); accountAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Account.value);
// accountAuth.setIdentifier("USER_" + accountName); accountAuth.setIdentifier("USER_" + accountName);
// accountAuth.setSalt(ShiroKit.getRandomSalt(6)); accountAuth.setSalt(ShiroKit.getRandomSalt(6));
// accountAuth.setCredential(ShiroKit.md5("123456", accountAuth.getSalt())); accountAuth.setCredential(ShiroKit.md5("123456", accountAuth.getSalt()));
// authDao.insertSelective(accountAuth); authDao.insertSelective(accountAuth);
return auth; return auth;
} }
@ -763,8 +763,14 @@ public class UserService implements IUserService {
//将用户的昵称和头像复制到成员信息内 //将用户的昵称和头像复制到成员信息内
member.setAvatarUrl(user.getAvatarUrl()); member.setAvatarUrl(user.getAvatarUrl());
member.setNickname(user.getNickname()); member.setNickname(user.getNickname());
memberDao.updateByPrimaryKeySelective(member); memberDao.updateByPrimaryKeySelective(member);
//用户关注这个项目
UserAttention attention = new UserAttention();
attention.setId(snowflake.nextId());
attention.setUserId(userId);
attention.setProjectId(member.getProjectId());
userAttentionDao.insertSelective(attention);
} }
} }
} }

126
tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java

@ -221,4 +221,130 @@ public class WxTemplateUtil {
message.setData(data); message.setData(data);
return message; return message;
} }
/**
* 添加角色
*/
public static WxTemplateMessage addRole(Long projectId, String userName,String projectName,String roleName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的新增了角色" + roleName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("新增角色"));
message.setData(data);
return message;
}
/**
* 修改角色
*/
public static WxTemplateMessage updateRole(Long projectId, String userName,String projectName,String roleName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的修改了角色" + roleName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("修改角色"));
message.setData(data);
return message;
}
/**
* 删除角色
*/
public static WxTemplateMessage delRole(Long projectId, String userName,String projectName,String roleName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的删除了角色" + roleName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("删除角色"));
message.setData(data);
return message;
}
/**
* 添加成员
*/
public static WxTemplateMessage saveMember(Long projectId, String userName,String projectName,String memberName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的添加了成员" + memberName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("添加成员"));
message.setData(data);
return message;
}
/**
* 删除成员
*/
public static WxTemplateMessage delMember(Long projectId, String userName,String projectName,String memberName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的删除了成员" + memberName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("删除成员"));
message.setData(data);
return message;
}
/**
* 修改成员
*/
public static WxTemplateMessage updateMember(Long projectId, String userName,String projectName,String memberName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的修改了成员" + memberName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("修改成员"));
message.setData(data);
return message;
}
/**
* 添加项目
*/
public static WxTemplateMessage saveWbs(Long projectId, String userName,String projectName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "添加了项目《"+projectName+"》"));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("添加项目"));
message.setData(data);
return message;
}
/**
* 修改项目
*/
public static WxTemplateMessage updateProject(Long projectId, String userName,String projectName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "修改了项目《"+projectName+"》"));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("修改项目"));
message.setData(data);
return message;
}
/**
* 删除项目
*/
public static WxTemplateMessage delProject(Long projectId, String userName,String projectName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "删除了项目《"+projectName+"》"));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("删除项目"));
message.setData(data);
return message;
}
} }

3
tall/src/main/java/com/ccsens/tall/web/DeliverController.java

@ -188,10 +188,11 @@ public class DeliverController {
return JsonResponse.newInstance().ok(queryDeliverByTaskIds); return JsonResponse.newInstance().ok(queryDeliverByTaskIds);
} }
@OperateType(value = 8)
@MustLoginTall @MustLoginTall
@ApiOperation(value = "删除输出文档下所有的文件", notes = "m:删除输出文档下所有的文件") @ApiOperation(value = "删除输出文档下所有的文件", notes = "m:删除输出文档下所有的文件")
@RequestMapping(value = "/delAllFileOfDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/delAllFileOfDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delAllFileOfDeliver(@ApiParam @Validated @RequestBody QueryDto<DeliverDto.DelAllFileOfDeliver> params) { public JsonResponse delAllFileOfDeliver(@ApiParam @Validated @RequestBody QueryDto<DeliverDto.DelAllFileOfDeliver> params) throws Exception {
log.info("删除输出文档下所有的文件:{}",params); log.info("删除输出文档下所有的文件:{}",params);
deliverService.delAllFileOfDeliver(params.getParam(),params.getUserId()); deliverService.delAllFileOfDeliver(params.getParam(),params.getUserId());
log.info("删除输出文档下所有的文件"); log.info("删除输出文档下所有的文件");

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

@ -7,6 +7,7 @@ import com.ccsens.tall.service.IExportWbsService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.UploadFileUtil_Servlet3; import com.ccsens.util.UploadFileUtil_Servlet3;
import com.ccsens.util.WebConstant; import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -31,6 +32,7 @@ public class ExcelController {
@Resource @Resource
private IExportWbsService exportWbsService; private IExportWbsService exportWbsService;
@OperateType(value = 1)
@ApiOperation(value = "导入WBS",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx") @ApiOperation(value = "导入WBS",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file") @ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file")

3
tall/src/main/java/com/ccsens/tall/web/InputDocController.java

@ -140,10 +140,11 @@ public class InputDocController {
return JsonResponse.newInstance().ok(docRecordByTask); return JsonResponse.newInstance().ok(docRecordByTask);
} }
@OperateType(value = 16)
@MustLoginTall @MustLoginTall
@ApiOperation(value = "删除输入文档下所有的文件", notes = "1007:删除输入文档下所有的文件") @ApiOperation(value = "删除输入文档下所有的文件", notes = "1007:删除输入文档下所有的文件")
@RequestMapping(value = "/delAllRecordOfTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/delAllRecordOfTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delAllRecordOfTask(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DelAllRecordOfTask> params) { public JsonResponse delAllRecordOfTask(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DelAllRecordOfTask> params) throws Exception {
log.info("删除输入文档下所有的文件:{}",params); log.info("删除输入文档下所有的文件:{}",params);
iInputDocService.delAllRecordOfTask(params.getParam(),params.getUserId()); iInputDocService.delAllRecordOfTask(params.getParam(),params.getUserId());
log.info("删除输入文档下所有的文件"); log.info("删除输入文档下所有的文件");

4
tall/src/main/java/com/ccsens/tall/web/LwbsController.java

@ -33,7 +33,7 @@ public class LwbsController {
private ILwbsService lwbsService; private ILwbsService lwbsService;
@MustLoginTall @MustLoginTall
@ApiOperation(value = "查询当前用户参加的所有的项目", notes = "1007:输出") @ApiOperation(value = "查询当前用户参加的所有的项目", notes = "zy 重写")
@RequestMapping(value = "/selByUserIdToComProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/selByUserIdToComProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<LwbsVo.SelByUserIdToComProjectVo>> selByUserIdToComProject(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByUserIdToComProject> params) { public JsonResponse<List<LwbsVo.SelByUserIdToComProjectVo>> selByUserIdToComProject(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByUserIdToComProject> params) {
log.info("输出某人下的所有的项目:{}",params); log.info("输出某人下的所有的项目:{}",params);
@ -43,7 +43,7 @@ public class LwbsController {
return JsonResponse.newInstance().ok(selBylwbs); return JsonResponse.newInstance().ok(selBylwbs);
} }
@MustLoginTall @MustLoginTall
@ApiOperation(value = "查询当前用户参加的项目的所有的任务", notes = "1007:输出") @ApiOperation(value = "查询当前用户参加的项目的所有的任务", notes = "zy 重写")
@RequestMapping(value = "/selByProjectIdToTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/selByProjectIdToTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.ProTaskInfo> selByProjectIdToTask(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByProjectIdToTaskDto> params) { public JsonResponse<TaskVo.ProTaskInfo> selByProjectIdToTask(@ApiParam @Validated @RequestBody QueryDto<LwbsDto.SelByProjectIdToTaskDto> params) {
log.info("查询某人下参加的项目的所有的任务:{}",params); log.info("查询某人下参加的项目的所有的任务:{}",params);

5
tall/src/main/java/com/ccsens/tall/web/MemberController.java

@ -7,6 +7,7 @@ import com.ccsens.tall.bean.vo.RoleVo;
import com.ccsens.tall.service.IProMemberService; import com.ccsens.tall.service.IProMemberService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant; import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
@ -34,7 +35,7 @@ public class MemberController {
@Resource @Resource
private IProMemberService proMemberService; private IProMemberService proMemberService;
@OperateType(value = 20)
@ApiOperation(value = "添加成员",notes = "") @ApiOperation(value = "添加成员",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@ -47,6 +48,7 @@ public class MemberController {
return JsonResponse.newInstance().ok(memberInfo); return JsonResponse.newInstance().ok(memberInfo);
} }
@OperateType(value = 21)
@ApiOperation(value = "删除成员",notes = "") @ApiOperation(value = "删除成员",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@ -58,6 +60,7 @@ public class MemberController {
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@OperateType(value = 22)
@ApiOperation(value = "修改成员信息",notes = "") @ApiOperation(value = "修改成员信息",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })

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

@ -10,6 +10,7 @@ import com.ccsens.tall.service.IProTaskDetailService;
import com.ccsens.tall.service.IProjectService; import com.ccsens.tall.service.IProjectService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant; import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -230,6 +231,7 @@ public class ProjectController {
//============================================================== //==============================================================
@OperateType(value = 23)
@ApiOperation(value = "删除项目(修改状态)", notes = "") @ApiOperation(value = "删除项目(修改状态)", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id", required = true, paramType = "query") @ApiImplicitParam(name = "projectId", value = "项目id", required = true, paramType = "query")
@ -255,6 +257,7 @@ public class ProjectController {
return JsonResponse.newInstance().ok(projectInfo); return JsonResponse.newInstance().ok(projectInfo);
} }
@OperateType(value = 2)
@ApiOperation(value = "修改项目信息", notes = "") @ApiOperation(value = "修改项目信息", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })

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

@ -12,6 +12,7 @@ import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.service.IProRoleService; import com.ccsens.tall.service.IProRoleService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant; import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.bean.dto.QueryDto;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.swagger.annotations.*; import io.swagger.annotations.*;
@ -35,6 +36,7 @@ public class RoleController {
@Resource @Resource
private IProRoleService proRoleService; private IProRoleService proRoleService;
@OperateType(value = 18)
@ApiOperation(value = "删除角色",notes = "") @ApiOperation(value = "删除角色",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@ -46,6 +48,7 @@ public class RoleController {
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@OperateType(value = 17)
@ApiOperation(value = "添加角色",notes = "") @ApiOperation(value = "添加角色",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@ -57,6 +60,7 @@ public class RoleController {
return JsonResponse.newInstance().ok(roleInfo); return JsonResponse.newInstance().ok(roleInfo);
} }
@OperateType(value = 19)
@ApiOperation(value = "修改角色信息",notes = "") @ApiOperation(value = "修改角色信息",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@ -97,7 +101,7 @@ public class RoleController {
public JsonResponse<List<TaskVo.NormalTask>> queryByProjectVirtualRole(HttpServletRequest request, public JsonResponse<List<TaskVo.NormalTask>> queryByProjectVirtualRole(HttpServletRequest request,
@ApiParam @Validated @RequestBody RoleDto.ProjectId projectId) throws Exception { @ApiParam @Validated @RequestBody RoleDto.ProjectId projectId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<TaskVo.NormalTask> taskListByProjectIdList = proRoleService.queryByProjectVirtualRole(projectId); List<TaskVo.NormalTask> taskListByProjectIdList = proRoleService.queryByProjectVirtualRole(projectId);
return JsonResponse.newInstance().ok(taskListByProjectIdList); return JsonResponse.newInstance().ok(taskListByProjectIdList);
} }
@ -123,7 +127,7 @@ public class RoleController {
@MustLoginTall @MustLoginTall
@ApiOperation(value = "获取该成员的角色信息和未添加的角色信息",notes = "") @ApiOperation(value = "获取该成员的角色信息和未添加的角色信息",notes = "")
@RequestMapping(value = "/queryRoleShows", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/queryRoleShows", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<RoleVo.JueSeByProIdLists> queryRoleShows(@ApiParam @Validated @RequestBody QueryDto<RoleDto.QueryRoleShows> param){ public JsonResponse<RoleVo.JueSeByProIdLists> queryRoleShows(@ApiParam @Validated @RequestBody QueryDto<RoleDto.QueryRoleShows> param) throws Exception {
log.info("传入参数:{}", param); log.info("传入参数:{}", param);
RoleVo.JueSeByProIdLists jueSeByProIdLists=proRoleService.queryRoleShows(param); RoleVo.JueSeByProIdLists jueSeByProIdLists=proRoleService.queryRoleShows(param);
return JsonResponse.newInstance().ok(jueSeByProIdLists); return JsonResponse.newInstance().ok(jueSeByProIdLists);

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

@ -1,5 +1,6 @@
package com.ccsens.tall.web; package com.ccsens.tall.web;
import cn.hutool.core.date.DateUtil;
import com.ccsens.tall.bean.dto.ProjectDto; import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.dto.TaskDto; import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.TaskVo;
@ -16,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@ -149,29 +151,45 @@ public class TaskController {
@ApiOperation(value = "看板上查找任务信息", notes = "") @ApiOperation(value = "看板上查找任务信息", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id 必填", required = true, paramType = "query"),
@ApiImplicitParam(name = "type", value = "任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"),
@ApiImplicitParam(name = "roleId", value = "角色id 不传则查找全部", required = true, paramType = "query"),
@ApiImplicitParam(name = "orderType", value = "排序方式 0时间排序 1优先级排序 没有则默认时间排序",paramType = "query",dataType = "string"),
@ApiImplicitParam(name = "order", value = "排序方式 0倒序 1正序 默认倒序",paramType = "query")
}) })
@RequestMapping(value = "kanban", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "kanban", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.KanBan>> getKanbanTake(HttpServletRequest request, public JsonResponse<List<TaskVo.KanBan>> getKanbanTake(HttpServletRequest request,
@RequestParam(required = true)Long projectId, @ApiParam @Validated @RequestBody TaskDto.QueryKanbanTask queryKanbanTask) throws Exception {
@RequestParam(required = false)Long roleId,
@RequestParam(required = false)Integer type,
@RequestParam(required = false)Integer page,
@RequestParam(required = false)Integer pageSize,
@RequestParam(required = false)Integer orderType,
@RequestParam(required = false)Integer order) throws Exception {
page = page == null ? 1 : page;
pageSize = pageSize == null ? 10 : pageSize;
orderType = orderType == null ? 0 : orderType;
order = order == null ? 0 : order;
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<TaskVo.KanBan> kanbanList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize,orderType,order); List<TaskVo.KanBan> kanbanList = subTimeService.getKanbanTake(currentUserId,queryKanbanTask);
return JsonResponse.newInstance().ok(kanbanList); return JsonResponse.newInstance().ok(kanbanList);
} }
// @ApiOperation(value = "看板上查找任务信息", notes = "")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "projectId", value = "项目id 必填", required = true, paramType = "query"),
// @ApiImplicitParam(name = "type", value = "任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"),
// @ApiImplicitParam(name = "roleId", value = "角色id 不传则查找全部", required = true, paramType = "query"),
// @ApiImplicitParam(name = "orderType", value = "排序方式 0时间排序 1优先级排序 没有则默认时间排序",paramType = "query",dataType = "string"),
// @ApiImplicitParam(name = "order", value = "排序方式 0倒序 1正序 默认倒序",paramType = "query")
// })
// @RequestMapping(value = "kanban", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
// public JsonResponse<List<TaskVo.KanBan>> getKanbanTake(HttpServletRequest request,
// @RequestParam(required = true)Long projectId,
// @RequestParam(required = false)Long roleId,
// @RequestParam(required = false)Integer type,
// @RequestParam(required = false)Integer page,
// @RequestParam(required = false)Integer pageSize,
// @RequestParam(required = false)Integer orderType,
// @RequestParam(required = false)Integer order,
// @RequestParam(required = false)Long startTime,
// @RequestParam(required = false)Long endTime) throws Exception {
// page = page == null ? 1 : page;
// pageSize = pageSize == null ? 10 : pageSize;
// orderType = orderType == null ? 0 : orderType;
// order = order == null ? 0 : order;
// startTime = startTime == null ? DateUtil.beginOfWeek(new Date()).getTime() : startTime;
// endTime = endTime == null ? DateUtil.endOfWeek(new Date()).getTime() : endTime;
//
// Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
// List<TaskVo.KanBan> kanbanList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize,orderType,order);
// return JsonResponse.newInstance().ok(kanbanList);
// }
@ApiOperation(value = "看板上修改任务信息", notes = "") @ApiOperation(value = "看板上修改任务信息", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({

23
tall/src/main/resources/application-greenvalley.yml

@ -12,9 +12,9 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
rabbitmq: rabbitmq:
host: 127.0.0.1 host: 127.0.0.1
password: 111111 password: sd12345
port: 5672 port: 5672
username: admin username: yu
redis: redis:
database: 0 database: 0
host: 127.0.0.1 host: 127.0.0.1
@ -31,10 +31,17 @@ swagger:
enable: true enable: true
eureka: eureka:
instance: instance:
ip-address: 82.156.116.247 # ip-address: 82.156.116.247
gatewayUrl: http://82.156.116.247 /gateway/ ip-address: 49.232.6.143
notGatewayUrl: http://82.156.116.247 /
smsCode: 1
# 平台信息 0绿谷 1创时代
platforms: 1
file: file:
domain: http://82.156.116.247 /gateway/tall/v1.0/ path: /home/wikiwiki/uploads/
imgDomain: http://82.156.116.247 /gateway/tall/v1.0/uploads domain: https://www.sxwikionline.com/gateway/wiki/
imgDomain: https://www.sxwikionline.com/gateway/wiki/uploads/upload/
#gatewayUrl: http://82.156.116.247 /gateway/
#notGatewayUrl: http://82.156.116.247 /
smsCode: 1

56
tall/src/main/resources/banner.txt

@ -1,21 +1,35 @@
// _ooOoo_ ++++++++ ++++++++++
// o8888888o ++++++ ++++++++++++++ ++++++++++++++ ++++++++++
// 88" . "88 ++ ++++++++++++++++++++++ ++++
// (| -_- |) ++++++ ++++ ++++++ ++++++
// O\ = /O ++++++++ ++++ ++++ ++++++++++
// ____/`---'\____ ++++++++++ ++ ++++ ++++++++++
// . ' \\| |// `. ++++++++++++ ++ ++ ++++++++++++
// / \\||| : |||// \ ++++++++++++++ ++ ++ ++++++++++++++
// / _||||| -:- |||||- \ ++++++++++++++++ ++ ++ ++++++++++++++++
// | | \\\ - /// | | ++++++++++++++++++ ++++++++++++++ ++++++++++++++ ++++++++++++++++++
// | \_| ''\---/'' | | ++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
// \ .-\__ `-` ___/-. / ++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++
// ___`. .' /--.--\ `. . __ ++++++++++++++++++++++++ ++++++++++ ++++++++++++ ++++++++++++++++++++++++
// ."" '< `.___\_<|>_/___.' >'"". ++++++++++++++++++ ++++++++ ++++++++++ ++++++++++++++++++
// | | : `- \`.;`\ _ /`;.`/ - ` : | | ++++++++++++++++ ++++++++ ++++++++++ ++++++++++++++++
// \ \ `-. \_ __\ /__ _/ .-` / / ++++++++++++++++ ++++++++ ++++++++ ++++++++++++++
// ======`-.____`-.___\_____/___.-`____.-'====== ++++++++++++++ ++++++++ ++++++ ++++++++++++++
// `=---=' ++++++++++++++ ++++++++ ++++++++ ++++++++++++++
// ++++++++++++++ ++++++++ ++++++++ ++++++++++++
// ............................................. ++ ++++++++ ++++++++ ++++++++ ++++++++ ++
// 佛祖保佑 永无BUG ++ ++++++++ ++++++ ++++++ ++++++++ ++
++ ++++++++ ++++++++ ++++++++ ++++++++ ++
++ ++++++++ ++++++++ ++++++++ ++++++++ ++
++ ++++++++ ++++++++ ++++++++ ++++++++ ++
++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++
++ ++++++++++++++++++++++++++ ++++++++++++++++++++++++++ ++
++ ++++++++++++++++++ ++++++++++++++++++ ++
++ ++++++++++ ++++++++++++++ ++++++++++++ ++
++ ++++++++++ ++
++++ ++++++ ++++
++++ ++ ++++
++++++++ ++++++++
++++++++++++++++++++++++++

21
tall/src/main/resources/banner2.txt

@ -0,0 +1,21 @@
// _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// . ' \\| |// `.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
//
// .............................................
// 佛祖保佑 永无BUG

7
tall/src/main/resources/druid-greenvalley.yml

@ -15,7 +15,8 @@ spring:
maxWait: 60000 maxWait: 60000
minEvictableIdleTimeMillis: 300000 minEvictableIdleTimeMillis: 300000
minIdle: 5 minIdle: 5
password: 6ba13d9930a6ad888a3704376c920a75 password:
# password: 6ba13d9930a6ad888a3704376c920a75
poolPreparedStatements: true poolPreparedStatements: true
servletLogSlowSql: true servletLogSlowSql: true
servletLoginPassword: 111111 servletLoginPassword: 111111
@ -27,7 +28,7 @@ spring:
testOnReturn: false testOnReturn: false
testWhileIdle: true testWhileIdle: true
timeBetweenEvictionRunsMillis: 60000 timeBetweenEvictionRunsMillis: 60000
url: jdbc:mysql://49.232.6.143:3306/tall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true url: jdbc:mysql://127.0.0.1/tall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true
username: root username: root
validationQuery: SELECT 1 FROM DUAL validationQuery: SELECT 1 FROM DUAL
env: CCSENS_GREENVALLEY env: CCSENS_ENTERPRISE

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

@ -18,11 +18,12 @@
FROM FROM
t_pro_deliver_history_record AS pdhr t_pro_deliver_history_record AS pdhr
LEFT JOIN t_pro_role AS pr ON pdhr.role_id = pr.id and pr.rec_status = 0 LEFT JOIN t_pro_role AS pr ON pdhr.role_id = pr.id and pr.rec_status = 0
LEFT JOIN t_pro_task_input_record AS ptir ON ptir.id = pdhr.deliver_record_id and ptir.rec_status = 0 LEFT JOIN t_pro_task_input_record AS ptir ON ptir.id = pdhr.deliver_record_id
LEFT JOIN t_pro_member AS pm ON pm.id = pdhr.member_id and pm.rec_status = 0 LEFT JOIN t_pro_member AS pm ON pm.id = pdhr.member_id and pm.rec_status = 0
WHERE WHERE
pdhr.deliver_id = #{deliverId} pdhr.deliver_id = #{deliverId}
and pdhr.rec_status = 0 and pdhr.rec_status = 0
ORDER BY pdhr.created_at DESC
</select> </select>
<select id="finOutPutHistory" resultType="com.ccsens.tall.bean.vo.InputDocVo$DeliverHistory"> <select id="finOutPutHistory" resultType="com.ccsens.tall.bean.vo.InputDocVo$DeliverHistory">
@ -40,11 +41,12 @@
FROM FROM
t_pro_deliver_history_record AS pdhr t_pro_deliver_history_record AS pdhr
LEFT JOIN t_pro_role AS pr ON pdhr.role_id = pr.id and pr.rec_status = 0 LEFT JOIN t_pro_role AS pr ON pdhr.role_id = pr.id and pr.rec_status = 0
LEFT JOIN t_pro_task_deliver_post_log AS ptdpl ON ptdpl.id = pdhr.deliver_record_id and ptdpl.rec_status = 0 LEFT JOIN t_pro_task_deliver_post_log AS ptdpl ON ptdpl.id = pdhr.deliver_record_id
LEFT JOIN t_pro_member AS pm ON pm.id = pdhr.member_id and pm.rec_status = 0 LEFT JOIN t_pro_member AS pm ON pm.id = pdhr.member_id and pm.rec_status = 0
WHERE WHERE
pdhr.deliver_id = #{deliverId} pdhr.deliver_id = #{deliverId}
and pdhr.rec_status = 0 and pdhr.rec_status = 0
ORDER BY pdhr.created_at DESC
</select> </select>
</mapper> </mapper>

12
tall/src/main/resources/mapper_dao/ProMemberDao.xml

@ -333,4 +333,16 @@
m.rec_status = 0 m.rec_status = 0
GROUP BY m.id GROUP BY m.id
</select> </select>
<select id="getIdByUserIdAndProjectId" resultType="java.lang.Long">
select
*
from
t_pro_member
where
user_id = #{currentUserId}
and project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select>
</mapper> </mapper>

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

@ -141,13 +141,15 @@
from from
t_pro_role pr LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id t_pro_role pr LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id
LEFT JOIN t_pro_member m ON mr.member_id = m.id LEFT JOIN t_pro_member m ON mr.member_id = m.id
LEFT JOIN t_pro_member_role_show AS rs ON rs.role_id = pr.id and rs.rec_status =0
where where
pr.project_id = #{projectId} pr.project_id = #{projectId}
AND AND
pr.id in rs.member_id = #{memberId}
<foreach collection="roleIdList" item="role" separator="," open="(" close=")"> <!-- pr.id in-->
#{role} <!-- <foreach collection="roleIdList" item="role" separator="," open="(" close=")">-->
</foreach> <!-- #{role}-->
<!-- </foreach>-->
and and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole') (SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole')
AND AND
@ -156,6 +158,7 @@
pr.rec_status = 0 pr.rec_status = 0
AND (mr.rec_status = 0 or mr.rec_status is null) AND (mr.rec_status = 0 or mr.rec_status is null)
AND (m.rec_status = 0 or m.rec_status is null) AND (m.rec_status = 0 or m.rec_status is null)
ORDER BY rs.sequence
</select> </select>
<select id="selectCareLessRoleByProjectIdAndUserId" parameterType="java.util.Map" <select id="selectCareLessRoleByProjectIdAndUserId" parameterType="java.util.Map"
@ -352,11 +355,14 @@
order by tpmrs.sequence order by tpmrs.sequence
</select> </select>
<select id="queryRoleShowslistBefore" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId"> <select id="queryRoleShowslistBefore" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId">
select id,name,sequence select
id,name,sequence
from t_pro_role tpr from t_pro_role tpr
where tpr.rec_status=0 where tpr.rec_status=0
and tpr.project_id=#{param1} and tpr.project_id=#{param1}
and tpr.parent_id !=0 and tpr.parent_id !=0
and (SELECT name FROM t_pro_role pr WHERE tpr.parent_id = pr.id) in ('PM','Member')
and tpr.name not IN('观众', 'MVP')
<if test="param2!=null and param2.size>0"> <if test="param2!=null and param2.size>0">
and tpr.id not in and tpr.id not in
<foreach collection="param2" item="id" separator="," open="(" close=")"> <foreach collection="param2" item="id" separator="," open="(" close=")">

18
tall/src/main/resources/mapper_dao/SysOperationDao.xml

@ -66,6 +66,17 @@
ORDER BY ORDER BY
sort sort
</select> </select>
<!-- <select id="queryProjectMsg" resultMap="ProjectMsg">-->
<!-- SELECT-->
<!-- o.id,-->
<!-- o.created_at-->
<!-- FROM-->
<!-- t_sys_operation o-->
<!-- WHERE-->
<!-- o.project_id = #{projectId}-->
<!-- AND o.rec_status = 0-->
<!-- </select>-->
<select id="queryProjectMsg" resultMap="ProjectMsg"> <select id="queryProjectMsg" resultMap="ProjectMsg">
SELECT SELECT
o.id, o.id,
@ -73,8 +84,11 @@
FROM FROM
t_sys_operation o t_sys_operation o
WHERE WHERE
o.project_id = #{projectId} o.rec_status = 0
AND o.rec_status = 0 and o.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select> </select>
<select id="findMessageByOperate" resultType="com.ccsens.tall.bean.vo.InputDocVo$DocRecordOfTask"> <select id="findMessageByOperate" resultType="com.ccsens.tall.bean.vo.InputDocVo$DocRecordOfTask">

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

@ -308,11 +308,14 @@
</if> </if>
</if> </if>
WHERE WHERE
r.project_id = #{projectId} r.name not IN ('观众','MVP')
and and
(SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member') (SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member')
AND and
r.name not IN ('观众','MVP') r.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
<if test="roleIdList != null and roleIdList.size() > 0"> <if test="roleIdList != null and roleIdList.size() > 0">
and and
r.id in r.id in
@ -320,7 +323,6 @@
#{roleId} #{roleId}
</foreach> </foreach>
</if> </if>
AND AND
d.`level` in (1,2,3) d.`level` in (1,2,3)
GROUP BY r.`name` GROUP BY r.`name`
@ -376,10 +378,13 @@
</if> </if>
</if> </if>
WHERE WHERE
r.project_id = #{projectId}
and
d.`level` in (2,3) d.`level` in (2,3)
and and
r.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
and
(SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member') (SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member')
<if test="roleIdList != null and roleIdList.size() > 0"> <if test="roleIdList != null and roleIdList.size() > 0">
and and
@ -426,7 +431,10 @@
d.executor_role in (#{roleId},#{allMemberId}) d.executor_role in (#{roleId},#{allMemberId})
</if> </if>
and and
d.project_id = #{projectId} d.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
group by FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d') group by FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d')
</select> </select>
@ -454,9 +462,13 @@
GROUP BY st.task_detail_id GROUP BY st.task_detail_id
) t on t.sTaskId = td.id ) t on t.sTaskId = td.id
WHERE WHERE
td.project_id = #{projectId}
and
td.`level` in (1,2,3) td.`level` in (1,2,3)
and
td.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
<if test="beginTime != null and beginTime != 0"> <if test="beginTime != null and beginTime != 0">
<if test="endTime != null and endTime != 0"> <if test="endTime != null and endTime != 0">
AND td.end_time > #{beginTime} AND td.end_time > #{beginTime}
@ -495,10 +507,13 @@
GROUP BY st.task_detail_id GROUP BY st.task_detail_id
) t on t.sTaskId = td.id ) t on t.sTaskId = td.id
WHERE WHERE
td.project_id = #{projectId}
and
td.`level` in (2,3) td.`level` in (2,3)
and and
td.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
and
td.begin_time &lt; #{endTime} td.begin_time &lt; #{endTime}
and and
td.end_time &gt; #{startTime} td.end_time &gt; #{startTime}
@ -540,7 +555,10 @@
d.executor_role = #{roleId} d.executor_role = #{roleId}
</if> </if>
and and
d.project_id = #{projectId} d.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
group by FROM_UNIXTIME(m.real_finish_time/1000,'%Y-%m-%d') group by FROM_UNIXTIME(m.real_finish_time/1000,'%Y-%m-%d')
) t on t.finishTime = FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d') ) t on t.finishTime = FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d')
WHERE WHERE
@ -552,7 +570,10 @@
d.executor_role = #{roleId} d.executor_role = #{roleId}
</if> </if>
and and
d.project_id = #{projectId} d.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
<if test="type == null"> <if test="type == null">
group by FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d') group by FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d')
</if> </if>
@ -587,4 +608,19 @@
and p.begin_time &lt; #{endTime} and p.begin_time &lt; #{endTime}
GROUP BY p.id GROUP BY p.id
</select> </select>
<select id="queryProjectIdByUserId" resultType="java.lang.Long">
SELECT
p.id
FROM
t_sys_project p
LEFT JOIN t_sys_user_attention a on p.id = a.project_id and a.rec_status = 0
LEFT JOIN t_pro_member m on m.project_id = p.id and m.rec_status = 0
WHERE
a.user_id = #{userId}
and m.user_id = #{userId}
and p.rec_status = 0
and p.end_time &gt; #{startTime}
and p.begin_time &lt; #{endTime}
GROUP BY p.id
</select>
</mapper> </mapper>

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

@ -657,6 +657,7 @@
s.rec_status = 0 s.rec_status = 0
and d.executor_role = #{userId} and d.executor_role = #{userId}
AND d.project_id = 0 AND d.project_id = 0
order by s.begin_time
)t )t
LEFT JOIN LEFT JOIN
t_pro_task_show ts on t.tDetailId = ts.task_detail_id and ts.rec_status = 0 t_pro_task_show ts on t.tDetailId = ts.task_detail_id and ts.rec_status = 0
@ -717,9 +718,11 @@
AND s.end_time &gt;= #{startTime} AND s.end_time &gt;= #{startTime}
</if> </if>
AND d.Level = 2 AND d.Level = 2
order by s.begin_time
)t )t
LEFT JOIN LEFT JOIN
t_pro_task_show ts on t.tDetailId = ts.task_detail_id and ts.rec_status = 0 t_pro_task_show ts on t.tDetailId = ts.task_detail_id and ts.rec_status = 0
</select> </select>
</mapper> </mapper>

95
tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml

@ -65,61 +65,54 @@
s.end_time as taskEndTime, s.end_time as taskEndTime,
if(a.rId is not null or r.`name` = '全体成员',1,0) as mine if(a.rId is not null or r.`name` = '全体成员',1,0) as mine
FROM FROM
t_pro_task_detail d LEFT JOIN t_pro_task_sub_time s on d.id = s.task_detail_id t_pro_task_detail d
LEFT JOIN t_pro_task_sub_time s on d.id = s.task_detail_id
LEFT JOIN t_pro_role r on r.id = d.executor_role LEFT JOIN t_pro_role r on r.id = d.executor_role
LEFT JOIN LEFT JOIN
( (
SELECT SELECT
count(m.id) as mid, count(m.id) as mid,
s.id as sId s.id as sId
FROM FROM
t_pro_sub_time_member m LEFT JOIN t_pro_task_sub_time s on m.task_sub_time_id = s.id t_pro_sub_time_member m LEFT JOIN t_pro_task_sub_time s on m.task_sub_time_id = s.id
WHERE WHERE
m.member_id = #{memberId} m.rec_status = 0
and and m.member_id in
m.rec_status = 0 <foreach collection="memberIdList" item="id" separator="," open="(" close=")">
)t on t.sId = s.id #{id}
</foreach>
)t on t.sId = s.id
LEFT JOIN LEFT JOIN
( (
SELECT SELECT
r.id as rId r.id as rId
FROM FROM
t_pro_role r Left join t_pro_member_role mr on r.id = mr.role_id t_pro_role r Left join t_pro_member_role mr on r.id = mr.role_id
LEFT JOIN t_pro_member m on mr.member_id = m.id LEFT JOIN t_pro_member m on mr.member_id = m.id
WHERE WHERE
m.user_id = #{userId} m.user_id = #{userId}
and m.rec_status = 0 and m.rec_status = 0
and r.rec_status = 0 and r.rec_status = 0
) a on a.rId = r.id ) a on a.rId = r.id
WHERE WHERE
d.project_id = #{projectId}
and
d.rec_status = 0 d.rec_status = 0
and and d.project_id in
d.level != 0 <foreach collection="projectIdList" item="id" separator="," open="(" close=")">
and #{id}
d.level != 1 </foreach>
and d.level != 0
and d.level != 1
<if test="roleId != null"> <if test="roleId != null">
and and r.id = #{roleId}
r.id = #{roleId}
</if> </if>
and s.complated_status = #{type}
and FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d %H:%m:%s') &lt; NOW()
and and
s.complated_status = #{type} (
and ( d.finish_need_all = 0 )
FROM_UNIXTIME(s.begin_time/1000,'%Y-%m-%d %H:%m:%s') &lt; NOW() or
and ( d.finish_need_all = 1 and t.mid > 0 )
( )
(
d.finish_need_all = 0
)
or
(
d.finish_need_all = 1
and
t.mid > 0
)
)
ORDER BY ORDER BY
<if test="orderType == 0"> <if test="orderType == 0">
s.begin_time DESC s.begin_time DESC
@ -128,7 +121,6 @@
d.priority DESC d.priority DESC
,s.begin_time DESC ,s.begin_time DESC
</if> </if>
</select> </select>
<select id="getKanbanTakeByType" parameterType="java.util.Map" resultType="com.ccsens.tall.bean.vo.TaskVo$KanBanTask"> <select id="getKanbanTakeByType" parameterType="java.util.Map" resultType="com.ccsens.tall.bean.vo.TaskVo$KanBanTask">
@ -157,10 +149,13 @@
and r.rec_status = 0 and r.rec_status = 0
) t on t.rId = r.id ) t on t.rId = r.id
WHERE WHERE
d.project_id = #{projectId}
and
d.rec_status = 0 d.rec_status = 0
and and
d.project_id in
<foreach collection="projectIdList" item="id" separator="," open="(" close=")">
#{id}
</foreach>
and
d.level != 0 d.level != 0
and and
d.level != 1 d.level != 1

16
tcm/src/main/java/com/ccsens/tcm/api/ImportController.java

@ -1,22 +1,14 @@
package com.ccsens.tcm.api; package com.ccsens.tcm.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.tcm.bean.po.CommonFile;
import com.ccsens.tcm.bean.vo.FileVo;
import com.ccsens.tcm.service.IImportService; import com.ccsens.tcm.service.IImportService;
import com.ccsens.tcm.uitl.Constant;
import com.ccsens.util.*; import com.ccsens.util.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part; import javax.servlet.http.Part;
import java.io.File; import java.io.File;
import java.util.List;
/** /**
* @author * @author
@ -48,8 +40,8 @@ public class ImportController {
@ApiOperation(value = "导入病史相关",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx") @ApiOperation(value = "导入病史相关",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({}) @ApiImplicitParams({})
@RequestMapping(value = "/BSXG", method = RequestMethod.POST) @RequestMapping(value = "/specialCode", method = RequestMethod.POST)
public JsonResponse importBsxg(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importCode(@RequestParam(required = true) Part file, String code) throws Exception{
//1.上传文件 //1.上传文件
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
@ -57,13 +49,13 @@ public class ImportController {
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File excelFile = new File(dir+path); File excelFile = new File(dir+path);
importService.importBsxg(excelFile, Constant.Report.CODE_BSXG); importService.importQuestion(excelFile, code);
log.info("导入病史相关成功"); log.info("导入病史相关成功");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@ApiOperation(value = "导入病史相关",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx") @ApiOperation(value = "导入全部试题",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({}) @ApiImplicitParams({})
@RequestMapping(value = "/all", method = RequestMethod.POST) @RequestMapping(value = "/all", method = RequestMethod.POST)
public JsonResponse importAll(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importAll(@RequestParam(required = true) Part file) throws Exception{

15
tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java

@ -5,10 +5,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Max; import javax.validation.constraints.*;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -20,14 +17,16 @@ public class PatientDto {
@Data @Data
@ApiModel("保存患者基本信息") @ApiModel("保存患者基本信息")
public static class SavePatient { public static class SavePatient {
// @ApiModelProperty("住院号") @NotBlank(message = "请输入住院号")
// private String hospitalization; @ApiModelProperty("住院号")
private String hospitalization;
@NotNull(message = "请选择对照组")
@ApiModelProperty("对照组id") @ApiModelProperty("对照组id")
private Long inpatientId; private Long inpatientId;
@ApiModelProperty("录入状态:0:新建 1:数据搜集中 2数据搜集完成 3数据搜集超时 4:废弃") @ApiModelProperty("录入状态:0:新建 1:数据搜集中 2数据搜集完成 3数据搜集超时 4:废弃")
private Byte inputStatus=0; private Byte inputStatus=0;
@ApiModelProperty("医院id") // @ApiModelProperty("医院id")
private Long hospitalId; // private Long hospitalId;
} }
@Data @Data
@ApiModel("查询患者基本信息") @ApiModel("查询患者基本信息")

15
tcm/src/main/java/com/ccsens/tcm/bean/dto/QuestionDto.java

@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* @author * @author
@ -22,4 +23,18 @@ public class QuestionDto {
@ApiModelProperty("第几次录入信息,默认为0查询第一次") @ApiModelProperty("第几次录入信息,默认为0查询第一次")
private Integer nums = 0; private Integer nums = 0;
} }
@Data
public static class QuestionHospitalDel{
private Long questionId;
private List<Long> hospitalIds;
public QuestionHospitalDel(){}
public QuestionHospitalDel(Long questionId, List<Long> hospitalIds) {
this.questionId = questionId;
this.hospitalIds = hospitalIds;
}
}
} }

22
tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformation.java

@ -8,8 +8,12 @@ public class PatientInformation implements Serializable {
private String hospitalization; private String hospitalization;
private String code;
private Long inpatientId; private Long inpatientId;
private Integer age;
private Byte inputStatus; private Byte inputStatus;
private Long hospitalId; private Long hospitalId;
@ -40,6 +44,14 @@ public class PatientInformation implements Serializable {
this.hospitalization = hospitalization == null ? null : hospitalization.trim(); this.hospitalization = hospitalization == null ? null : hospitalization.trim();
} }
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code == null ? null : code.trim();
}
public Long getInpatientId() { public Long getInpatientId() {
return inpatientId; return inpatientId;
} }
@ -48,6 +60,14 @@ public class PatientInformation implements Serializable {
this.inpatientId = inpatientId; this.inpatientId = inpatientId;
} }
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Byte getInputStatus() { public Byte getInputStatus() {
return inputStatus; return inputStatus;
} }
@ -104,7 +124,9 @@ public class PatientInformation implements Serializable {
sb.append("Hash = ").append(hashCode()); sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id); sb.append(", id=").append(id);
sb.append(", hospitalization=").append(hospitalization); sb.append(", hospitalization=").append(hospitalization);
sb.append(", code=").append(code);
sb.append(", inpatientId=").append(inpatientId); sb.append(", inpatientId=").append(inpatientId);
sb.append(", age=").append(age);
sb.append(", inputStatus=").append(inputStatus); sb.append(", inputStatus=").append(inputStatus);
sb.append(", hospitalId=").append(hospitalId); sb.append(", hospitalId=").append(hospitalId);
sb.append(", userId=").append(userId); sb.append(", userId=").append(userId);

130
tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformationExample.java

@ -235,6 +235,76 @@ public class PatientInformationExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andCodeIsNull() {
addCriterion("code is null");
return (Criteria) this;
}
public Criteria andCodeIsNotNull() {
addCriterion("code is not null");
return (Criteria) this;
}
public Criteria andCodeEqualTo(String value) {
addCriterion("code =", value, "code");
return (Criteria) this;
}
public Criteria andCodeNotEqualTo(String value) {
addCriterion("code <>", value, "code");
return (Criteria) this;
}
public Criteria andCodeGreaterThan(String value) {
addCriterion("code >", value, "code");
return (Criteria) this;
}
public Criteria andCodeGreaterThanOrEqualTo(String value) {
addCriterion("code >=", value, "code");
return (Criteria) this;
}
public Criteria andCodeLessThan(String value) {
addCriterion("code <", value, "code");
return (Criteria) this;
}
public Criteria andCodeLessThanOrEqualTo(String value) {
addCriterion("code <=", value, "code");
return (Criteria) this;
}
public Criteria andCodeLike(String value) {
addCriterion("code like", value, "code");
return (Criteria) this;
}
public Criteria andCodeNotLike(String value) {
addCriterion("code not like", value, "code");
return (Criteria) this;
}
public Criteria andCodeIn(List<String> values) {
addCriterion("code in", values, "code");
return (Criteria) this;
}
public Criteria andCodeNotIn(List<String> values) {
addCriterion("code not in", values, "code");
return (Criteria) this;
}
public Criteria andCodeBetween(String value1, String value2) {
addCriterion("code between", value1, value2, "code");
return (Criteria) this;
}
public Criteria andCodeNotBetween(String value1, String value2) {
addCriterion("code not between", value1, value2, "code");
return (Criteria) this;
}
public Criteria andInpatientIdIsNull() { public Criteria andInpatientIdIsNull() {
addCriterion("inpatient_id is null"); addCriterion("inpatient_id is null");
return (Criteria) this; return (Criteria) this;
@ -295,6 +365,66 @@ public class PatientInformationExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andAgeIsNull() {
addCriterion("age is null");
return (Criteria) this;
}
public Criteria andAgeIsNotNull() {
addCriterion("age is not null");
return (Criteria) this;
}
public Criteria andAgeEqualTo(Integer value) {
addCriterion("age =", value, "age");
return (Criteria) this;
}
public Criteria andAgeNotEqualTo(Integer value) {
addCriterion("age <>", value, "age");
return (Criteria) this;
}
public Criteria andAgeGreaterThan(Integer value) {
addCriterion("age >", value, "age");
return (Criteria) this;
}
public Criteria andAgeGreaterThanOrEqualTo(Integer value) {
addCriterion("age >=", value, "age");
return (Criteria) this;
}
public Criteria andAgeLessThan(Integer value) {
addCriterion("age <", value, "age");
return (Criteria) this;
}
public Criteria andAgeLessThanOrEqualTo(Integer value) {
addCriterion("age <=", value, "age");
return (Criteria) this;
}
public Criteria andAgeIn(List<Integer> values) {
addCriterion("age in", values, "age");
return (Criteria) this;
}
public Criteria andAgeNotIn(List<Integer> values) {
addCriterion("age not in", values, "age");
return (Criteria) this;
}
public Criteria andAgeBetween(Integer value1, Integer value2) {
addCriterion("age between", value1, value2, "age");
return (Criteria) this;
}
public Criteria andAgeNotBetween(Integer value1, Integer value2) {
addCriterion("age not between", value1, value2, "age");
return (Criteria) this;
}
public Criteria andInputStatusIsNull() { public Criteria andInputStatusIsNull() {
addCriterion("input_status is null"); addCriterion("input_status is null");
return (Criteria) this; return (Criteria) this;

11
tcm/src/main/java/com/ccsens/tcm/bean/po/Question.java

@ -17,6 +17,8 @@ public class Question implements Serializable {
private Byte type; private Byte type;
private Byte fillStatus;
private BigDecimal referenceLower; private BigDecimal referenceLower;
private BigDecimal referenceUpper; private BigDecimal referenceUpper;
@ -85,6 +87,14 @@ public class Question implements Serializable {
this.type = type; this.type = type;
} }
public Byte getFillStatus() {
return fillStatus;
}
public void setFillStatus(Byte fillStatus) {
this.fillStatus = fillStatus;
}
public BigDecimal getReferenceLower() { public BigDecimal getReferenceLower() {
return referenceLower; return referenceLower;
} }
@ -169,6 +179,7 @@ public class Question implements Serializable {
sb.append(", sort=").append(sort); sb.append(", sort=").append(sort);
sb.append(", units=").append(units); sb.append(", units=").append(units);
sb.append(", type=").append(type); sb.append(", type=").append(type);
sb.append(", fillStatus=").append(fillStatus);
sb.append(", referenceLower=").append(referenceLower); sb.append(", referenceLower=").append(referenceLower);
sb.append(", referenceUpper=").append(referenceUpper); sb.append(", referenceUpper=").append(referenceUpper);
sb.append(", relevanceOptionId=").append(relevanceOptionId); sb.append(", relevanceOptionId=").append(relevanceOptionId);

60
tcm/src/main/java/com/ccsens/tcm/bean/po/QuestionExample.java

@ -496,6 +496,66 @@ public class QuestionExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andFillStatusIsNull() {
addCriterion("fill_status is null");
return (Criteria) this;
}
public Criteria andFillStatusIsNotNull() {
addCriterion("fill_status is not null");
return (Criteria) this;
}
public Criteria andFillStatusEqualTo(Byte value) {
addCriterion("fill_status =", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotEqualTo(Byte value) {
addCriterion("fill_status <>", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusGreaterThan(Byte value) {
addCriterion("fill_status >", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("fill_status >=", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusLessThan(Byte value) {
addCriterion("fill_status <", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusLessThanOrEqualTo(Byte value) {
addCriterion("fill_status <=", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusIn(List<Byte> values) {
addCriterion("fill_status in", values, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotIn(List<Byte> values) {
addCriterion("fill_status not in", values, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusBetween(Byte value1, Byte value2) {
addCriterion("fill_status between", value1, value2, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotBetween(Byte value1, Byte value2) {
addCriterion("fill_status not between", value1, value2, "fillStatus");
return (Criteria) this;
}
public Criteria andReferenceLowerIsNull() { public Criteria andReferenceLowerIsNull() {
addCriterion("reference_lower is null"); addCriterion("reference_lower is null");
return (Criteria) this; return (Criteria) this;

6
tcm/src/main/java/com/ccsens/tcm/bean/vo/QuestionVo.java

@ -117,8 +117,10 @@ public class QuestionVo {
private int sort; private int sort;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
@ApiModelProperty("记录类型 0:只记录1次数据,1:记录3次,分别为0,14,90天 ,2:记录两次,分别是180,365") // @ApiModelProperty("记录类型 0:只记录1次数据,1:记录3次,分别为0,14,90天 ,2:记录两次,分别是180,365")
private byte reportType; // private byte reportType;
@ApiModelProperty("记录天数列表")
private List<Byte> reportTypes;
@ApiModelProperty("题目信息") @ApiModelProperty("题目信息")
private List<PatientQuestion> questionVos; private List<PatientQuestion> questionVos;
@ApiModelProperty("子类型") @ApiModelProperty("子类型")

16
tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionDao.java

@ -59,4 +59,20 @@ public interface QuestionDao extends QuestionMapper {
List<QuestionVo.SubjectLists> queryQuestion(); List<QuestionVo.SubjectLists> queryQuestion();
List<QuestionVo.SubjectLists> queryQuestion1(); List<QuestionVo.SubjectLists> queryQuestion1();
/**
* 根据code和医院查询试题
* @param code 试题编码
* @param sort 排序
* @param hospitalIds 医院ID
* @return 试题
*/
Question getByCodeAndHospitals(@Param("code") String code, @Param("sort") int sort, @Param("hospitalIds") List<Long> hospitalIds);
/**
* 查询记录时间
* @param code code
* @return 记录时间
*/
List<Byte> queryTimesByCode(@Param("code") String code);
} }

13
tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionHospitalDao.java

@ -1,5 +1,6 @@
package com.ccsens.tcm.persist.dao; package com.ccsens.tcm.persist.dao;
import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.QuestionHospital; import com.ccsens.tcm.bean.po.QuestionHospital;
import com.ccsens.tcm.persist.mapper.QuestionHospitalMapper; import com.ccsens.tcm.persist.mapper.QuestionHospitalMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -14,4 +15,16 @@ public interface QuestionHospitalDao extends QuestionHospitalMapper {
* @return 医院ID * @return 医院ID
*/ */
List<QuestionHospital> queryAll(@Param("type") Byte type); List<QuestionHospital> queryAll(@Param("type") Byte type);
/**
* 批量删除
* @param questionHospitalDelList 试题ID 和医院ID
*/
void deleteBatch(@Param("list") List<QuestionDto.QuestionHospitalDel> questionHospitalDelList);
/**
* 批量添加
* @param questionHospitals 试题ID和医院ID
*/
void insertBatch(@Param("list") List<QuestionHospital> questionHospitals);
} }

7
tcm/src/main/java/com/ccsens/tcm/persist/dao/ReportCodeDao.java

@ -1,5 +1,6 @@
package com.ccsens.tcm.persist.dao; package com.ccsens.tcm.persist.dao;
import com.ccsens.tcm.bean.po.QuestionRecordTime;
import com.ccsens.tcm.bean.po.ReportCode; import com.ccsens.tcm.bean.po.ReportCode;
import com.ccsens.tcm.bean.vo.QuestionVo; import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.mapper.ReportCodeMapper; import com.ccsens.tcm.persist.mapper.ReportCodeMapper;
@ -37,4 +38,10 @@ public interface ReportCodeDao extends ReportCodeMapper {
* @return * @return
*/ */
List<String> queryCodeAll(); List<String> queryCodeAll();
/**
* 存储关联关系
* @param recordTimes 题目记录时间表
*/
void insertTimesBatch(@Param("list") List<QuestionRecordTime> recordTimes);
} }

2
tcm/src/main/java/com/ccsens/tcm/service/IImportService.java

@ -21,7 +21,7 @@ public interface IImportService {
* @param excelFile excel文件 * @param excelFile excel文件
* @param codeBsxg sheet名 * @param codeBsxg sheet名
*/ */
void importBsxg(File excelFile, String codeBsxg) throws Exception; void importQuestion(File excelFile, String codeBsxg) throws Exception;
/** /**
* 更新redis内的试题 * 更新redis内的试题

124
tcm/src/main/java/com/ccsens/tcm/service/ImportService.java

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ccsens.tcm.bean.dto.CodeVo; import com.ccsens.tcm.bean.dto.CodeVo;
import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.*; import com.ccsens.tcm.bean.po.*;
import com.ccsens.tcm.bean.vo.QuestionVo; import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.dao.QuestionDao; import com.ccsens.tcm.persist.dao.QuestionDao;
@ -15,6 +16,7 @@ import com.ccsens.tcm.persist.mapper.QuestionRecordTimeMapper;
import com.ccsens.tcm.uitl.Constant; import com.ccsens.tcm.uitl.Constant;
import com.ccsens.util.*; import com.ccsens.util.*;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@ -58,27 +60,31 @@ public class ImportService implements IImportService {
List<Object[]> reports = PoiUtil.readExce(excelFile, 0, null,1, false); List<Object[]> reports = PoiUtil.readExce(excelFile, 0, null,1, false);
log.info("读取数据完成"); log.info("读取数据完成");
List<ReportCode> reportList = new ArrayList<>(); List<ReportCode> reportList = new ArrayList<>();
List<QuestionRecordTime> recordTimes = new ArrayList<>();
for (Object[] objs: reports) { for (Object[] objs: reports) {
if (!(objs != null && objs.length >= 2 && !StringUtils.isEmpty(objs[0]) && !StringUtils.isEmpty(objs[1]))) { if (!(objs != null && objs.length >= 2 && !StringUtils.isEmpty(objs[0]) && !StringUtils.isEmpty(objs[1]))) {
log.info("测评报告单数据不足,跳转下一行"); log.info("测评报告单数据不足,跳转下一行");
continue; continue;
} }
ReportCode report = initReport(objs); ReportCode report = initReport(objs, recordTimes);
reportList.add(report); reportList.add(report);
} }
if (!reportList.isEmpty()) { if (!reportList.isEmpty()) {
reportCodeDao.insertBatch(reportList); reportCodeDao.insertBatch(reportList);
} }
if (CollectionUtil.isNotEmpty(recordTimes)) {
reportCodeDao.insertTimesBatch(recordTimes);
}
} }
@Override @Override
public void importBsxg(File excelFile, String codeBsxg) throws Exception { public void importQuestion(File excelFile, String code) throws Exception {
log.info("导入试题参数:{}, {}", excelFile, codeBsxg); log.info("导入试题参数:{}, {}", excelFile, code);
List<String> types = new ArrayList<>(); List<String> types = new ArrayList<>();
if (Constant.Question.ALL.equalsIgnoreCase(codeBsxg)) { if (Constant.Question.ALL.equalsIgnoreCase(code)) {
types.addAll(Constant.Question.QUESTION_TYPE); types.addAll(Constant.Question.QUESTION_TYPE);
} else { } else {
types.add(codeBsxg); types.add(code);
} }
log.info("导入试题类型:{}", types); log.info("导入试题类型:{}", types);
for (String sheetName: types) { for (String sheetName: types) {
@ -106,10 +112,9 @@ public class ImportService implements IImportService {
} }
// 医院 // 医院
Map<String, Long> hospitalMap = new HashMap<>(); Map<String, Long> hospitalMap = new HashMap<>();
hospitals.forEach(hospital -> { hospitals.forEach(hospital -> hospitalMap.put(hospital.getCode(), hospital.getId()));
hospitalMap.put(hospital.getCode(), hospital.getId()); List<QuestionHospital> questionHospitals = new ArrayList<>();
}); List<QuestionDto.QuestionHospitalDel> questionHospitalDelList = new ArrayList<>();
for(Object[] objs : questions) { for(Object[] objs : questions) {
if (objs == null || objs.length < 4 || StringUtils.isEmpty(objs[2])) { if (objs == null || objs.length < 4 || StringUtils.isEmpty(objs[2])) {
@ -121,7 +126,7 @@ public class ImportService implements IImportService {
String type = String.valueOf(objs[0]); String type = String.valueOf(objs[0]);
switch (type) { switch (type) {
case "题目" : case "题目" :
Question question = initQuestion(objs, code, sort,null, hospitalMap); Question question = initQuestion(objs, code, sort,null, hospitalMap, questionHospitals, questionHospitalDelList);
questionId = question.getId(); questionId = question.getId();
questionList.add(question); questionList.add(question);
break; break;
@ -137,7 +142,7 @@ public class ImportService implements IImportService {
if (optionList.isEmpty()) { if (optionList.isEmpty()) {
break; break;
} }
Question relevanceQuestion = initQuestion(objs, code, sort, optionId, hospitalMap); Question relevanceQuestion = initQuestion(objs, code, sort, optionId, hospitalMap, questionHospitals, questionHospitalDelList);
questionList.add(relevanceQuestion); questionList.add(relevanceQuestion);
optionQuestionId = relevanceQuestion.getId(); optionQuestionId = relevanceQuestion.getId();
break; break;
@ -159,6 +164,14 @@ public class ImportService implements IImportService {
if (!optionList.isEmpty()) { if (!optionList.isEmpty()) {
questionOptionDao.insertBatch(optionList); questionOptionDao.insertBatch(optionList);
} }
if (CollectionUtil.isNotEmpty(questionHospitalDelList)) {
questionHospitalDao.deleteBatch(questionHospitalDelList);
log.info("删除试题和医院的旧关联");
}
if (CollectionUtil.isNotEmpty(questionHospitals)) {
questionHospitalDao.insertBatch(questionHospitals);
log.info("批量添加试题和医院的关联");
}
} }
/** /**
@ -195,9 +208,10 @@ public class ImportService implements IImportService {
/** /**
* 初始化报告单对象若该对象已存在则返回null * 初始化报告单对象若该对象已存在则返回null
* @param objs 表格内读取的数据 * @param objs 表格内读取的数据
* @param recordTimes
* @return 返回测试类型 * @return 返回测试类型
*/ */
private ReportCode initReport(Object[] objs) { private ReportCode initReport(Object[] objs, List<QuestionRecordTime> recordTimes) {
ReportCodeExample example = new ReportCodeExample(); ReportCodeExample example = new ReportCodeExample();
example.createCriteria().andCodeEqualTo((String) objs[0]); example.createCriteria().andCodeEqualTo((String) objs[0]);
List<ReportCode> list = reportCodeDao.selectByExample(example); List<ReportCode> list = reportCodeDao.selectByExample(example);
@ -216,9 +230,9 @@ public class ImportService implements IImportService {
report.setCode((String) objs[0]); report.setCode((String) objs[0]);
report.setName((String) objs[1]); report.setName((String) objs[1]);
report.setParentCode(objs.length > 2 && !StringUtils.isEmpty(objs[2]) ? (String) objs[2] : Constant.STRING_DEFAULT); report.setParentCode(objs.length > 2 && !StringUtils.isEmpty(objs[2]) ? (String) objs[2] : Constant.STRING_DEFAULT);
if (objs.length > 3 && objs[3] != null && ((String)objs[3]).length() > 0) { int typeIndex = 3;
// report.setReportType(objs.length > 3 && StringUtil.checkNum(String.valueOf(objs[3]),false)? Byte.parseByte((String) objs[3]) : Constant.NUMBER_DEFAULT); if (objs.length > typeIndex && objs[typeIndex] != null && ((String)objs[typeIndex]).length() > 0) {
String types = (String)objs[3]; String types = (String)objs[typeIndex];
String[] split = types.split("[,,]"); String[] split = types.split("[,,]");
for (String type: split) { for (String type: split) {
@ -228,7 +242,7 @@ public class ImportService implements IImportService {
time.setId(snowflake.nextId()); time.setId(snowflake.nextId());
time.setCode(report.getCode()); time.setCode(report.getCode());
time.setRecodeTime(Integer.parseInt(type)); time.setRecodeTime(Integer.parseInt(type));
questionRecordTimeMapper.insertSelective(time); recordTimes.add(time);
} }
} }
@ -242,25 +256,42 @@ public class ImportService implements IImportService {
return report; return report;
} }
/** /**
* 初始化试题 * 初始化试题
* @param objs 表格内读取的数据 * @param objs 表格内读取的数据
* @param evaluationCode 试题类型 * @param code 试题类型
* @param sort 排序 * @param sort 排序
* @param hospitalMap * @param hospitalMap 医院code和ID
* @param questionHospitals 试题医院关联
* @param QuestionHospitalDelList 要删除的条件
* @return 返回试题 * @return 返回试题
*/ */
private Question initQuestion(Object[] objs, String evaluationCode, int sort, Long optionId, Map<String, Long> hospitalMap) { private Question initQuestion(Object[] objs, String code, int sort, Long optionId, Map<String, Long> hospitalMap, List<QuestionHospital> questionHospitals, List<QuestionDto.QuestionHospitalDel> QuestionHospitalDelList) {
// 查询关联医院
List<Long> hospitalIds = new ArrayList<>();
int hospitalIndex = 10;
if (objs.length > hospitalIndex && !StringUtils.isEmpty(objs[hospitalIndex])) {
String[] hospitalCodes = ((String) objs[hospitalIndex]).split("[,,]");
for (String hospitalCode:hospitalCodes) {
hospitalIds.add(hospitalMap.get(hospitalCode));
}
} else {
hospitalMap.forEach((key, value)->hospitalIds.add(value));
}
// 查询试题是否已经存在
QuestionExample example = new QuestionExample(); QuestionExample example = new QuestionExample();
example.createCriteria().andCodeEqualTo(evaluationCode).andSortEqualTo(sort); example.createCriteria().andCodeEqualTo(code).andSortEqualTo(sort);
List<Question> questions = questionDao.selectByExample(example); Question question = questionDao.getByCodeAndHospitals(code, sort, hospitalIds);
Question question; if (question == null) {
if (CollectionUtils.isEmpty(questions)) {
question = new Question(); question = new Question();
question.setId(snowflake.nextId()); question.setId(snowflake.nextId());
} else { } else {
question = questions.get(0); // 题存在 -->删除原有关联关系
QuestionHospitalDelList.add(new QuestionDto.QuestionHospitalDel(question.getId(), hospitalIds));
} }
question.setCode(StringUtils.isEmpty(objs[1]) ? Constant.STRING_DEFAULT : String.valueOf(objs[1])); question.setCode(StringUtils.isEmpty(objs[1]) ? Constant.STRING_DEFAULT : String.valueOf(objs[1]));
question.setQuestion(StringUtils.isEmpty(objs[2]) ? Constant.STRING_DEFAULT : String.valueOf(objs[2])); question.setQuestion(StringUtils.isEmpty(objs[2]) ? Constant.STRING_DEFAULT : String.valueOf(objs[2]));
question.setSort(sort); question.setSort(sort);
@ -282,28 +313,20 @@ public class ImportService implements IImportService {
} }
} }
question.setRelevanceOptionId(optionId == null ? 0 : optionId); question.setRelevanceOptionId(optionId == null ? 0 : optionId);
// 设置是否必填
int fillStatusIndex = 11;
boolean hasFillStatus = objs.length > fillStatusIndex && objs[fillStatusIndex] != null
&& StringUtil.isMatch((String)objs[fillStatusIndex], StringUtil.NUMBER_DOUBLE);
byte fillType = hasFillStatus ? Byte.parseByte((String)objs[fillStatusIndex]) : 1;
// 设置关联那个医院 // 设置关联那个医院
List<Long> hospitalIds = new ArrayList<>(); for (Long id: hospitalIds) {
int hospitalIndex = 10;
if (objs.length > hospitalIndex && !StringUtils.isEmpty(objs[hospitalIndex])) {
String[] codes = ((String) objs[hospitalIndex]).split("[,,]");
for (String code:codes) {
hospitalIds.add(hospitalMap.get(code));
}
} else {
hospitalMap.forEach((key, value)->{
hospitalIds.add(value);
});
}
hospitalIds.forEach(id->{
QuestionHospital questionHospital = new QuestionHospital(); QuestionHospital questionHospital = new QuestionHospital();
questionHospital.setId(snowflake.nextId()); questionHospital.setId(snowflake.nextId());
questionHospital.setQuestionId(question.getId()); questionHospital.setQuestionId(question.getId());
questionHospital.setHospitalId(id); questionHospital.setHospitalId(id);
questionHospitalDao.insertSelective(questionHospital); questionHospital.setFillType(fillType);
}); questionHospitals.add(questionHospital);
}
log.info("导入试题:{}", question); log.info("导入试题:{}", question);
return question; return question;
} }
@ -341,6 +364,10 @@ public class ImportService implements IImportService {
*/ */
private List<QuestionVo.CodeQuestionVo> getQuestionByCode(String code) { private List<QuestionVo.CodeQuestionVo> getQuestionByCode(String code) {
List<QuestionVo.CodeQuestionVo> subCodeQuestionVos = questionDao.queryQuestionByCode(code); List<QuestionVo.CodeQuestionVo> subCodeQuestionVos = questionDao.queryQuestionByCode(code);
return getCodeQuestionVos(subCodeQuestionVos);
}
private List<QuestionVo.CodeQuestionVo> getCodeQuestionVos(List<QuestionVo.CodeQuestionVo> subCodeQuestionVos) {
if(CollectionUtil.isNotEmpty(subCodeQuestionVos)){ if(CollectionUtil.isNotEmpty(subCodeQuestionVos)){
subCodeQuestionVos.forEach(question -> { subCodeQuestionVos.forEach(question -> {
if(CollectionUtil.isNotEmpty(question.getOptionVos())){ if(CollectionUtil.isNotEmpty(question.getOptionVos())){
@ -360,24 +387,13 @@ public class ImportService implements IImportService {
*/ */
private List<QuestionVo.CodeQuestionVo> queryOptionQuestion(Long optionId){ private List<QuestionVo.CodeQuestionVo> queryOptionQuestion(Long optionId){
List<QuestionVo.CodeQuestionVo> questionVos = questionDao.queryQuestionByOption(optionId); List<QuestionVo.CodeQuestionVo> questionVos = questionDao.queryQuestionByOption(optionId);
if(CollectionUtil.isNotEmpty(questionVos)){ return getCodeQuestionVos(questionVos);
questionVos.forEach(question -> {
if(CollectionUtil.isNotEmpty(question.getOptionVos())){
question.getOptionVos().forEach(option -> {
if(option.getAfterOperation() == Constant.AFTER_OPERATION){
option.setQuestionVos(queryOptionQuestion(option.getId()));
}
});
}
});
}
return questionVos;
} }
/** /**
* 查看类型下的试题信息 * 查看类型下的试题信息
* @param param * @param param 试题类型
*/ */
@Override @Override
public List<QuestionVo.ReportCodeVo> getQuestion(CodeVo.QuestionCode param) { public List<QuestionVo.ReportCodeVo> getQuestion(CodeVo.QuestionCode param) {

6
tcm/src/main/java/com/ccsens/tcm/service/OcrService.java

@ -4,8 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ccsens.tcm.bean.dto.QuestionOcrDto; import com.ccsens.tcm.bean.dto.QuestionOcrDto;
import com.ccsens.tcm.bean.po.QuestionOcr;
import com.ccsens.tcm.bean.po.QuestionOcrExample;
import com.ccsens.tcm.bean.vo.QuestionOcrVo; import com.ccsens.tcm.bean.vo.QuestionOcrVo;
import com.ccsens.tcm.persist.dao.QuestionOcrDao; import com.ccsens.tcm.persist.dao.QuestionOcrDao;
import com.ccsens.tcm.uitl.Constant; import com.ccsens.tcm.uitl.Constant;
@ -41,7 +39,7 @@ public class OcrService implements IOcrService {
List<QuestionOcrVo.GeneralBasic> vos = new ArrayList<>(); List<QuestionOcrVo.GeneralBasic> vos = new ArrayList<>();
BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic(); BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic();
basic.setUrl(generalBasic.getUrl()); basic.setUrl(generalBasic.getUrl());
BaiDuVo.GeneralBasic words = BaiDuUtil.generalBasic(Constant.BaiDu.APP_KEY, Constant.BaiDu.SECRET_KEY, basic); BaiDuVo.GeneralBasic words = BaiDuUtil.accurateBasic(Constant.BaiDu.APP_KEY, Constant.BaiDu.SECRET_KEY, basic);
log.info("文字识别:{}", words); log.info("文字识别:{}", words);
if (words == null || words.getWordsResultNum() <= 0) { if (words == null || words.getWordsResultNum() <= 0) {
return vos; return vos;
@ -70,7 +68,7 @@ public class OcrService implements IOcrService {
vo.setQuestionId(rule.getQuestionId()); vo.setQuestionId(rule.getQuestionId());
vo.setCode(rule.getCode()); vo.setCode(rule.getCode());
vo.setSort(rule.getSort()); vo.setSort(rule.getSort());
vo.setContent(builder == null ? "" : builder.toString()); vo.setContent(builder.toString());
vos.add(vo); vos.add(vo);
}); });

24
tcm/src/main/java/com/ccsens/tcm/service/PatientService.java

@ -74,28 +74,31 @@ public class PatientService implements IPatientService {
@Override @Override
public void savePatient(PatientDto.SavePatient param, Long userId) { public void savePatient(PatientDto.SavePatient param, Long userId) {
// PatientInformationExample patientInformationExample=new PatientInformationExample();
// patientInformationExample.createCriteria().andHospitalizationEqualTo(param.getHospitalization()).andRecStatusEqualTo((byte)0);
// long l = patientInformationMapper.countByExample(patientInformationExample);
// if(l>0){
// throw new BaseException(CodeEnum.ZHUYUANIDCHONGFU);
// }
Hospital hospital = selUserIdToHosId(userId); Hospital hospital = selUserIdToHosId(userId);
// 判断住院号是否存在
PatientInformationExample patientInformationExample=new PatientInformationExample();
patientInformationExample.createCriteria().andHospitalizationEqualTo(param.getHospitalization())
.andHospitalIdEqualTo(hospital.getId()).andRecStatusEqualTo((byte)0);
long l = patientInformationMapper.countByExample(patientInformationExample);
if(l>0){
throw new BaseException(CodeEnum.ZHUYUANIDCHONGFU);
}
Inpatient inpatient = inpatientMapper.selectByPrimaryKey(param.getInpatientId()); Inpatient inpatient = inpatientMapper.selectByPrimaryKey(param.getInpatientId());
if (inpatient == null) { if (inpatient == null) {
throw new BaseException(CodeEnum.PARAM_ERROR); throw new BaseException(CodeEnum.PARAM_ERROR);
} }
log.info("医院:{},对照组:{}", hospital, inpatient); log.info("医院:{},对照组:{}", hospital, inpatient);
param.setHospitalId(hospital.getId());
PatientInformation patientInformation=new PatientInformation(); PatientInformation patientInformation=new PatientInformation();
BeanUtils.copyProperties(param,patientInformation); BeanUtils.copyProperties(param,patientInformation);
patientInformation.setId(snowflake.nextId()); patientInformation.setId(snowflake.nextId());
patientInformation.setHospitalId(hospital.getId());
// 生成编号 // 生成编号
long incr = redisUtil.incr(Constant.Redis.HOSPITAL_NUM + hospital.getCode(), 1) + 1; long incr = redisUtil.incr(Constant.Redis.HOSPITAL_NUM + hospital.getCode(), 1) + 1;
DecimalFormat df=new DecimalFormat("000"); DecimalFormat df=new DecimalFormat("000");
String num = hospital.getCode() + "" + inpatient.getCode() + df.format(incr); String num = hospital.getCode() + inpatient.getCode() + df.format(incr);
log.info("编号:{}", num); log.info("编号:{}", num);
patientInformation.setHospitalization(num); patientInformation.setCode(num);
patientInformationMapper.insertSelective(patientInformation); patientInformationMapper.insertSelective(patientInformation);
} }
@ -107,14 +110,13 @@ public class PatientService implements IPatientService {
*/ */
@Override @Override
public Hospital selUserIdToHosId(Long userId) { public Hospital selUserIdToHosId(Long userId) {
Doctor doctor=null;
DoctorExample doctorExample=new DoctorExample(); DoctorExample doctorExample=new DoctorExample();
doctorExample.createCriteria().andUserIdEqualTo(userId).andRecStatusEqualTo((byte)0); doctorExample.createCriteria().andUserIdEqualTo(userId).andRecStatusEqualTo((byte)0);
List<Doctor> doctors = doctorMapper.selectByExample(doctorExample); List<Doctor> doctors = doctorMapper.selectByExample(doctorExample);
if(doctors.size()!=1){ if(doctors.size()!=1){
throw new BaseException(CodeEnum.MEIYOUGAIYISHENG); throw new BaseException(CodeEnum.MEIYOUGAIYISHENG);
} }
doctor=doctors.get(0); Doctor doctor=doctors.get(0);
return hospitalMapper.selectByPrimaryKey(doctor.getHospitalId()); return hospitalMapper.selectByPrimaryKey(doctor.getHospitalId());
} }

7
tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java

@ -1,12 +1,14 @@
package com.ccsens.tcm.service; package com.ccsens.tcm.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tcm.bean.dto.QuestionDto; import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.PatientInformation; import com.ccsens.tcm.bean.po.PatientInformation;
import com.ccsens.tcm.bean.vo.QuestionVo; import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.dao.QuestionDao; import com.ccsens.tcm.persist.dao.QuestionDao;
import com.ccsens.tcm.persist.dao.ReportCodeDao; import com.ccsens.tcm.persist.dao.ReportCodeDao;
import com.ccsens.tcm.persist.mapper.PatientInformationMapper; import com.ccsens.tcm.persist.mapper.PatientInformationMapper;
import com.ccsens.tcm.persist.mapper.QuestionRecordTimeMapper;
import com.ccsens.util.CodeEnum; import com.ccsens.util.CodeEnum;
import com.ccsens.util.RedisUtil; import com.ccsens.util.RedisUtil;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
@ -48,6 +50,11 @@ public class QuestionService implements IQuestionService{
// if(patientCode.getReportType() == 0){ // if(patientCode.getReportType() == 0){
// param.setNums(0); // param.setNums(0);
// } // }
if (StrUtil.isNotEmpty(param.getCode())) {
// 当查询某一code的题目时,查询该code共有多少天的测评
patientCode.setReportTypes(questionDao.queryTimesByCode(param.getCode()));
}
//根据一级code查询试题及答案 //根据一级code查询试题及答案
List<QuestionVo.PatientQuestion> patientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(patientCode.getCode(),param.getId(),param.getNums(), patient.getHospitalId()); List<QuestionVo.PatientQuestion> patientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(patientCode.getCode(),param.getId(),param.getNums(), patient.getHospitalId());
//查询选项关联的试题及答案 //查询选项关联的试题及答案

71
tcm/src/main/resources/mapper_dao/QuestionDao.xml

@ -1,21 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.tcm.persist.dao.QuestionDao"> <mapper namespace="com.ccsens.tcm.persist.dao.QuestionDao">
<resultMap id="BaseResultMap" type="com.ccsens.tcm.bean.po.Question">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="question" jdbcType="VARCHAR" property="question" />
<result column="code" jdbcType="VARCHAR" property="code" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="units" jdbcType="VARCHAR" property="units" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="relevance_option_id" jdbcType="BIGINT" property="relevanceOptionId" />
<result column="search_criteria" jdbcType="TINYINT" property="searchCriteria" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="operator" jdbcType="BIGINT" property="operator" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
</resultMap>
<insert id="insertBatch"> <insert id="insertBatch">
replace into t_question (id, question, code, replace into t_question (id, question, code,
sort, units, type, sort, units, type,
@ -310,20 +296,45 @@
<result column="question" property="name"/> <result column="question" property="name"/>
</collection> </collection>
</resultMap> </resultMap>
<select id="queryQuestion1" resultMap="queryQuestion1Map"> <select id="queryQuestion1" resultMap="queryQuestion1Map">
select trc.id, select
trc.`code`, trc.id,
trc.`name`, trc.`code`,
tq.id AS id2, trc.`name`,
tq.question tq.id AS id2,
FROM tq.question
t_report_code trc, t_question tq FROM
WHERE t_report_code trc, t_question tq
trc.LEVEL = 1 WHERE
AND trc.rec_status =0 trc.LEVEL = 1
and tq.CODE = trc.CODE AND trc.rec_status =0
AND tq.rec_status = 0 and tq.CODE = trc.CODE
order by trc.sort,tq.sort AND tq.rec_status = 0
</select> order by trc.sort,tq.sort
</select>
<select id="getByCodeAndHospitals" resultMap="com.ccsens.tcm.persist.mapper.QuestionMapper.BaseResultMap">
SELECT DISTINCT
q.*
FROM
t_question q,
t_question_hospital h
WHERE
q.id = h.question_id
AND q.CODE = #{code}
AND q.sort = #{sort}
<if test="hospitalIds != null and hospitalIds.size() > 0">
AND h.hospital_id IN
<foreach collection="hospitalIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
ORDER BY
created_at DESC
LIMIT 1
</select>
<select id="queryTimesByCode" resultType="java.lang.Byte">
select distinct recode_time from t_question_record_time
where code = #{code} and rec_status = 0;
</select>
</mapper> </mapper>

18
tcm/src/main/resources/mapper_dao/QuestionHospitalDao.xml

@ -1,6 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.tcm.persist.dao.QuestionHospitalDao"> <mapper namespace="com.ccsens.tcm.persist.dao.QuestionHospitalDao">
<insert id="insertBatch">
insert into t_question_hospital(id, question_id, hospital_id, fill_type) values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.questionId}, #{item.hospitalId}, #{item.fillType})
</foreach>
</insert>
<delete id="deleteBatch">
update t_question_hospital set rec_status = 2
where
<foreach collection="list" item="delItem" separator="or">
(question_id = #{delItem.questionId} and hospital_id in
<foreach collection="delItem.hospitalIds" item="item" separator="," open="(" close=")" >
#{item}
</foreach>
and rec_status = 0
)
</foreach>
</delete>
<select id="queryAll" resultType="com.ccsens.tcm.bean.po.QuestionHospital"> <select id="queryAll" resultType="com.ccsens.tcm.bean.po.QuestionHospital">
select id from t_hospital where rec_status = 0 select id from t_hospital where rec_status = 0
<if test="type != null and type != ''"> <if test="type != null and type != ''">

2
tcm/src/main/resources/mapper_dao/QuestionOcrDao.xml

@ -8,7 +8,7 @@
o.id, o.id,
o.CODE, o.CODE,
o.sort, o.sort,
o.hospital, o.hospital_id as hospital,
o.START, o.START,
o.END o.END
FROM FROM

28
tcm/src/main/resources/mapper_dao/ReportCodeDao.xml

@ -27,9 +27,15 @@
#{report.sort,jdbcType=INTEGER}, #{report.remark,jdbcType=VARCHAR}, #{report.reportType,jdbcType=TINYINT}) #{report.sort,jdbcType=INTEGER}, #{report.remark,jdbcType=VARCHAR}, #{report.reportType,jdbcType=TINYINT})
</foreach> </foreach>
</insert> </insert>
<insert id="insertTimesBatch">
insert into t_question_record_time(id, code, recode_time) values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.code}, #{item.recodeTime})
</foreach>
</insert>
<resultMap id="selectCodeAll" type="com.ccsens.tcm.bean.vo.QuestionVo$ReportCodeVo"> <resultMap id="selectCodeAll" type="com.ccsens.tcm.bean.vo.QuestionVo$ReportCodeVo">
<id column="fId" jdbcType="BIGINT" property="id" /> <id column="fId" jdbcType="BIGINT" property="id" />
<result column="fCode" jdbcType="VARCHAR" property="code" /> <result column="fCode" jdbcType="VARCHAR" property="code" />
<result column="fName" jdbcType="VARCHAR" property="name" /> <result column="fName" jdbcType="VARCHAR" property="name" />
@ -105,7 +111,7 @@
<result column="sSort" jdbcType="INTEGER" property="sort" /> <result column="sSort" jdbcType="INTEGER" property="sort" />
<result column="sRecordType" jdbcType="TINYINT" property="recordType" /> <result column="sRecordType" jdbcType="TINYINT" property="recordType" />
<result column="sRemark" jdbcType="VARCHAR" property="remark" /> <result column="sRemark" jdbcType="VARCHAR" property="remark" />
<result column="sReportType" jdbcType="TINYINT" property="reportType" /> <!--<result column="sReportType" jdbcType="TINYINT" property="reportType" />-->
</collection> </collection>
</resultMap> </resultMap>
@ -153,23 +159,7 @@
and t.rec_status = 0 and t.rec_status = 0
) c2 on c1.`code` = c2.parent_code ) c2 on c1.`code` = c2.parent_code
<if test="code==null or code==''">
<if test="nums == 0">
and (c1.`report_type`in (0,1))
</if>
<if test="nums == 14">
and (c1.`report_type`in (1))
</if>
<if test="nums == 90">
and (c1.`report_type`in (1))
</if>
<if test="nums == 180">
and (c1.`report_type`in (2))
</if>
<if test="nums == 365">
and (c1.`report_type`in (2))
</if>
</if>
</select> </select>
<select id="queryCodeAll" resultType="java.lang.String"> <select id="queryCodeAll" resultType="java.lang.String">

50
tcm/src/main/resources/mapper_raw/PatientInformationMapper.xml

@ -4,7 +4,9 @@
<resultMap id="BaseResultMap" type="com.ccsens.tcm.bean.po.PatientInformation"> <resultMap id="BaseResultMap" type="com.ccsens.tcm.bean.po.PatientInformation">
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id" />
<result column="hospitalization" jdbcType="VARCHAR" property="hospitalization" /> <result column="hospitalization" jdbcType="VARCHAR" property="hospitalization" />
<result column="code" jdbcType="VARCHAR" property="code" />
<result column="inpatient_id" jdbcType="BIGINT" property="inpatientId" /> <result column="inpatient_id" jdbcType="BIGINT" property="inpatientId" />
<result column="age" jdbcType="INTEGER" property="age" />
<result column="input_status" jdbcType="TINYINT" property="inputStatus" /> <result column="input_status" jdbcType="TINYINT" property="inputStatus" />
<result column="hospital_id" jdbcType="BIGINT" property="hospitalId" /> <result column="hospital_id" jdbcType="BIGINT" property="hospitalId" />
<result column="user_id" jdbcType="BIGINT" property="userId" /> <result column="user_id" jdbcType="BIGINT" property="userId" />
@ -71,8 +73,8 @@
</where> </where>
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, hospitalization, inpatient_id, input_status, hospital_id, user_id, created_at, id, hospitalization, code, inpatient_id, age, input_status, hospital_id, user_id,
update_at, rec_status created_at, update_at, rec_status
</sql> </sql>
<select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.PatientInformationExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.PatientInformationExample" resultMap="BaseResultMap">
select select
@ -105,14 +107,14 @@
</if> </if>
</delete> </delete>
<insert id="insert" parameterType="com.ccsens.tcm.bean.po.PatientInformation"> <insert id="insert" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
insert into t_patient_information (id, hospitalization, inpatient_id, insert into t_patient_information (id, hospitalization, code,
input_status, hospital_id, user_id, inpatient_id, age, input_status,
created_at, update_at, rec_status hospital_id, user_id, created_at,
) update_at, rec_status)
values (#{id,jdbcType=BIGINT}, #{hospitalization,jdbcType=VARCHAR}, #{inpatientId,jdbcType=BIGINT}, values (#{id,jdbcType=BIGINT}, #{hospitalization,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
#{inputStatus,jdbcType=TINYINT}, #{hospitalId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{inpatientId,jdbcType=BIGINT}, #{age,jdbcType=INTEGER}, #{inputStatus,jdbcType=TINYINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updateAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT} #{hospitalId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP},
) #{updateAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT})
</insert> </insert>
<insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.PatientInformation"> <insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
insert into t_patient_information insert into t_patient_information
@ -123,9 +125,15 @@
<if test="hospitalization != null"> <if test="hospitalization != null">
hospitalization, hospitalization,
</if> </if>
<if test="code != null">
code,
</if>
<if test="inpatientId != null"> <if test="inpatientId != null">
inpatient_id, inpatient_id,
</if> </if>
<if test="age != null">
age,
</if>
<if test="inputStatus != null"> <if test="inputStatus != null">
input_status, input_status,
</if> </if>
@ -152,9 +160,15 @@
<if test="hospitalization != null"> <if test="hospitalization != null">
#{hospitalization,jdbcType=VARCHAR}, #{hospitalization,jdbcType=VARCHAR},
</if> </if>
<if test="code != null">
#{code,jdbcType=VARCHAR},
</if>
<if test="inpatientId != null"> <if test="inpatientId != null">
#{inpatientId,jdbcType=BIGINT}, #{inpatientId,jdbcType=BIGINT},
</if> </if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
<if test="inputStatus != null"> <if test="inputStatus != null">
#{inputStatus,jdbcType=TINYINT}, #{inputStatus,jdbcType=TINYINT},
</if> </if>
@ -190,9 +204,15 @@
<if test="record.hospitalization != null"> <if test="record.hospitalization != null">
hospitalization = #{record.hospitalization,jdbcType=VARCHAR}, hospitalization = #{record.hospitalization,jdbcType=VARCHAR},
</if> </if>
<if test="record.code != null">
code = #{record.code,jdbcType=VARCHAR},
</if>
<if test="record.inpatientId != null"> <if test="record.inpatientId != null">
inpatient_id = #{record.inpatientId,jdbcType=BIGINT}, inpatient_id = #{record.inpatientId,jdbcType=BIGINT},
</if> </if>
<if test="record.age != null">
age = #{record.age,jdbcType=INTEGER},
</if>
<if test="record.inputStatus != null"> <if test="record.inputStatus != null">
input_status = #{record.inputStatus,jdbcType=TINYINT}, input_status = #{record.inputStatus,jdbcType=TINYINT},
</if> </if>
@ -220,7 +240,9 @@
update t_patient_information update t_patient_information
set id = #{record.id,jdbcType=BIGINT}, set id = #{record.id,jdbcType=BIGINT},
hospitalization = #{record.hospitalization,jdbcType=VARCHAR}, hospitalization = #{record.hospitalization,jdbcType=VARCHAR},
code = #{record.code,jdbcType=VARCHAR},
inpatient_id = #{record.inpatientId,jdbcType=BIGINT}, inpatient_id = #{record.inpatientId,jdbcType=BIGINT},
age = #{record.age,jdbcType=INTEGER},
input_status = #{record.inputStatus,jdbcType=TINYINT}, input_status = #{record.inputStatus,jdbcType=TINYINT},
hospital_id = #{record.hospitalId,jdbcType=BIGINT}, hospital_id = #{record.hospitalId,jdbcType=BIGINT},
user_id = #{record.userId,jdbcType=BIGINT}, user_id = #{record.userId,jdbcType=BIGINT},
@ -237,9 +259,15 @@
<if test="hospitalization != null"> <if test="hospitalization != null">
hospitalization = #{hospitalization,jdbcType=VARCHAR}, hospitalization = #{hospitalization,jdbcType=VARCHAR},
</if> </if>
<if test="code != null">
code = #{code,jdbcType=VARCHAR},
</if>
<if test="inpatientId != null"> <if test="inpatientId != null">
inpatient_id = #{inpatientId,jdbcType=BIGINT}, inpatient_id = #{inpatientId,jdbcType=BIGINT},
</if> </if>
<if test="age != null">
age = #{age,jdbcType=INTEGER},
</if>
<if test="inputStatus != null"> <if test="inputStatus != null">
input_status = #{inputStatus,jdbcType=TINYINT}, input_status = #{inputStatus,jdbcType=TINYINT},
</if> </if>
@ -264,7 +292,9 @@
<update id="updateByPrimaryKey" parameterType="com.ccsens.tcm.bean.po.PatientInformation"> <update id="updateByPrimaryKey" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
update t_patient_information update t_patient_information
set hospitalization = #{hospitalization,jdbcType=VARCHAR}, set hospitalization = #{hospitalization,jdbcType=VARCHAR},
code = #{code,jdbcType=VARCHAR},
inpatient_id = #{inpatientId,jdbcType=BIGINT}, inpatient_id = #{inpatientId,jdbcType=BIGINT},
age = #{age,jdbcType=INTEGER},
input_status = #{inputStatus,jdbcType=TINYINT}, input_status = #{inputStatus,jdbcType=TINYINT},
hospital_id = #{hospitalId,jdbcType=BIGINT}, hospital_id = #{hospitalId,jdbcType=BIGINT},
user_id = #{userId,jdbcType=BIGINT}, user_id = #{userId,jdbcType=BIGINT},

35
tcm/src/main/resources/mapper_raw/QuestionMapper.xml

@ -8,6 +8,7 @@
<result column="sort" jdbcType="INTEGER" property="sort" /> <result column="sort" jdbcType="INTEGER" property="sort" />
<result column="units" jdbcType="VARCHAR" property="units" /> <result column="units" jdbcType="VARCHAR" property="units" />
<result column="type" jdbcType="TINYINT" property="type" /> <result column="type" jdbcType="TINYINT" property="type" />
<result column="fill_status" jdbcType="TINYINT" property="fillStatus" />
<result column="reference_lower" jdbcType="DECIMAL" property="referenceLower" /> <result column="reference_lower" jdbcType="DECIMAL" property="referenceLower" />
<result column="reference_upper" jdbcType="DECIMAL" property="referenceUpper" /> <result column="reference_upper" jdbcType="DECIMAL" property="referenceUpper" />
<result column="relevance_option_id" jdbcType="BIGINT" property="relevanceOptionId" /> <result column="relevance_option_id" jdbcType="BIGINT" property="relevanceOptionId" />
@ -77,8 +78,8 @@
</where> </where>
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, question, code, sort, units, type, reference_lower, reference_upper, relevance_option_id, id, question, code, sort, units, type, fill_status, reference_lower, reference_upper,
search_criteria, remark, operator, created_at, updated_at, rec_status relevance_option_id, search_criteria, remark, operator, created_at, updated_at, rec_status
</sql> </sql>
<select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.QuestionExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.QuestionExample" resultMap="BaseResultMap">
select select
@ -113,16 +114,16 @@
<insert id="insert" parameterType="com.ccsens.tcm.bean.po.Question"> <insert id="insert" parameterType="com.ccsens.tcm.bean.po.Question">
insert into t_question (id, question, code, insert into t_question (id, question, code,
sort, units, type, sort, units, type,
reference_lower, reference_upper, relevance_option_id, fill_status, reference_lower, reference_upper,
search_criteria, remark, operator, relevance_option_id, search_criteria, remark,
created_at, updated_at, rec_status operator, created_at, updated_at,
) rec_status)
values (#{id,jdbcType=BIGINT}, #{question,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, values (#{id,jdbcType=BIGINT}, #{question,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
#{sort,jdbcType=INTEGER}, #{units,jdbcType=VARCHAR}, #{type,jdbcType=TINYINT}, #{sort,jdbcType=INTEGER}, #{units,jdbcType=VARCHAR}, #{type,jdbcType=TINYINT},
#{referenceLower,jdbcType=DECIMAL}, #{referenceUpper,jdbcType=DECIMAL}, #{relevanceOptionId,jdbcType=BIGINT}, #{fillStatus,jdbcType=TINYINT}, #{referenceLower,jdbcType=DECIMAL}, #{referenceUpper,jdbcType=DECIMAL},
#{searchCriteria,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{relevanceOptionId,jdbcType=BIGINT}, #{searchCriteria,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT} #{operator,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
) #{recStatus,jdbcType=TINYINT})
</insert> </insert>
<insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.Question"> <insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.Question">
insert into t_question insert into t_question
@ -145,6 +146,9 @@
<if test="type != null"> <if test="type != null">
type, type,
</if> </if>
<if test="fillStatus != null">
fill_status,
</if>
<if test="referenceLower != null"> <if test="referenceLower != null">
reference_lower, reference_lower,
</if> </if>
@ -192,6 +196,9 @@
<if test="type != null"> <if test="type != null">
#{type,jdbcType=TINYINT}, #{type,jdbcType=TINYINT},
</if> </if>
<if test="fillStatus != null">
#{fillStatus,jdbcType=TINYINT},
</if>
<if test="referenceLower != null"> <if test="referenceLower != null">
#{referenceLower,jdbcType=DECIMAL}, #{referenceLower,jdbcType=DECIMAL},
</if> </if>
@ -248,6 +255,9 @@
<if test="record.type != null"> <if test="record.type != null">
type = #{record.type,jdbcType=TINYINT}, type = #{record.type,jdbcType=TINYINT},
</if> </if>
<if test="record.fillStatus != null">
fill_status = #{record.fillStatus,jdbcType=TINYINT},
</if>
<if test="record.referenceLower != null"> <if test="record.referenceLower != null">
reference_lower = #{record.referenceLower,jdbcType=DECIMAL}, reference_lower = #{record.referenceLower,jdbcType=DECIMAL},
</if> </if>
@ -288,6 +298,7 @@
sort = #{record.sort,jdbcType=INTEGER}, sort = #{record.sort,jdbcType=INTEGER},
units = #{record.units,jdbcType=VARCHAR}, units = #{record.units,jdbcType=VARCHAR},
type = #{record.type,jdbcType=TINYINT}, type = #{record.type,jdbcType=TINYINT},
fill_status = #{record.fillStatus,jdbcType=TINYINT},
reference_lower = #{record.referenceLower,jdbcType=DECIMAL}, reference_lower = #{record.referenceLower,jdbcType=DECIMAL},
reference_upper = #{record.referenceUpper,jdbcType=DECIMAL}, reference_upper = #{record.referenceUpper,jdbcType=DECIMAL},
relevance_option_id = #{record.relevanceOptionId,jdbcType=BIGINT}, relevance_option_id = #{record.relevanceOptionId,jdbcType=BIGINT},
@ -319,6 +330,9 @@
<if test="type != null"> <if test="type != null">
type = #{type,jdbcType=TINYINT}, type = #{type,jdbcType=TINYINT},
</if> </if>
<if test="fillStatus != null">
fill_status = #{fillStatus,jdbcType=TINYINT},
</if>
<if test="referenceLower != null"> <if test="referenceLower != null">
reference_lower = #{referenceLower,jdbcType=DECIMAL}, reference_lower = #{referenceLower,jdbcType=DECIMAL},
</if> </if>
@ -356,6 +370,7 @@
sort = #{sort,jdbcType=INTEGER}, sort = #{sort,jdbcType=INTEGER},
units = #{units,jdbcType=VARCHAR}, units = #{units,jdbcType=VARCHAR},
type = #{type,jdbcType=TINYINT}, type = #{type,jdbcType=TINYINT},
fill_status = #{fillStatus,jdbcType=TINYINT},
reference_lower = #{referenceLower,jdbcType=DECIMAL}, reference_lower = #{referenceLower,jdbcType=DECIMAL},
reference_upper = #{referenceUpper,jdbcType=DECIMAL}, reference_upper = #{referenceUpper,jdbcType=DECIMAL},
relevance_option_id = #{relevanceOptionId,jdbcType=BIGINT}, relevance_option_id = #{relevanceOptionId,jdbcType=BIGINT},

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

@ -71,6 +71,8 @@ public class WebConstant {
Deliverable("{{deliverable}}", "交付物"), Deliverable("{{deliverable}}", "交付物"),
Operate("{{operate}}", "操作"), Operate("{{operate}}", "操作"),
Principal("{{principal}}", "负责人"), Principal("{{principal}}", "负责人"),
RoleName("{{roleName}}", "角色名"),
MemberName("{{memberName}}", "成员名"),
; ;
public String value; public String value;

51
util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java

@ -25,10 +25,12 @@ public class BaiDuUtil {
private RedisUtil redisUtil; private RedisUtil redisUtil;
private static BaiDuUtil util; private static BaiDuUtil util;
/**token_appKey*/ /**token_appKey*/
private static final String tokenKey = "baidu_token_"; private static final String TOKEN_KEY = "baidu_token_";
private static final String authUrl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}"; private static final String AUTH_URL = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}";
private static final String generalBasicUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token={}"; private static final String GENERAL_BASIC_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token={}";
/**通用文字识别(高精度版)*/
private static final String ACCURATE_BASIC_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token={}";
@PostConstruct @PostConstruct
public void init(){ public void init(){
@ -44,13 +46,13 @@ public class BaiDuUtil {
*/ */
public static String getToken(String appKey, String secretKey){ public static String getToken(String appKey, String secretKey){
log.info("获取百度认证:{},{}", appKey, secretKey); log.info("获取百度认证:{},{}", appKey, secretKey);
String key = tokenKey + appKey; String key = TOKEN_KEY + appKey;
String token = (String) util.redisUtil.get(key); String token = (String) util.redisUtil.get(key);
log.info("缓存token:{}", token); log.info("缓存token:{}", token);
if (StrUtil.isNotEmpty(token)) { if (StrUtil.isNotEmpty(token)) {
return token; return token;
} }
String url = StrUtil.format(authUrl, appKey, secretKey); String url = StrUtil.format(AUTH_URL, appKey, secretKey);
String result = RestTemplateUtil.postUrlEncode(url, null); String result = RestTemplateUtil.postUrlEncode(url, null);
log.info("获取百度认证:{}", result); log.info("获取百度认证:{}", result);
JSONObject json = JSONObject.parseObject(result); JSONObject json = JSONObject.parseObject(result);
@ -67,20 +69,47 @@ public class BaiDuUtil {
return token; return token;
} }
/**
* 调用百度通用文字识别高精度版
* @param appKey appKey
* @param secretKey secretKey
* @param basic 图像
* @return 识别结果
*/
public static BaiDuVo.GeneralBasic accurateBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) {
return getGeneralBasic(appKey, secretKey, basic, ACCURATE_BASIC_URL);
}
public static BaiDuVo.GeneralBasic generalBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) { /**
* 调用百度通用文字识别
* @param appKey appKey
* @param secretKey secretKey
* @param basic 图像
* @param accurateBasicUrl 路径
* @return 识别结果
*/
private static BaiDuVo.GeneralBasic getGeneralBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic, String accurateBasicUrl) {
String token = getToken(appKey, secretKey); String token = getToken(appKey, secretKey);
String url = StrUtil.format(generalBasicUrl, token); String url = StrUtil.format(accurateBasicUrl, token);
// String result = RestTemplateUtil.postBody(url, basic);
String result = RestTemplateUtil.postUrlEncode(url, basic); String result = RestTemplateUtil.postUrlEncode(url, basic);
log.info("调用通用文字识别(标准版)结果:{}", result); log.info("百度orc调用{}的结果是:{}", url, result);
if (result.contains(Code.GENERAL_BASIC_ERROR)) { if (result.contains(Code.GENERAL_BASIC_ERROR)) {
CodeEnum thirdError = CodeEnum.THIRD_ERROR; CodeEnum thirdError = CodeEnum.THIRD_ERROR;
thirdError.setMsg(result); thirdError.setMsg(result);
throw new BaseException(thirdError); throw new BaseException(thirdError);
} }
BaiDuVo.GeneralBasic basicVo = JSONObject.parseObject(result, BaiDuVo.GeneralBasic.class); return JSONObject.parseObject(result, BaiDuVo.GeneralBasic.class);
return basicVo; }
/**
* 调用百度通用文字识别标准版
* @param appKey appKey
* @param secretKey secretKey
* @param basic 图像
* @return 识别结果
*/
public static BaiDuVo.GeneralBasic generalBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) {
return getGeneralBasic(appKey, secretKey, basic, GENERAL_BASIC_URL);
} }
private static class Code{ private static class Code{

Loading…
Cancel
Save