Compare commits

...

92 Commits

Author SHA1 Message Date
ccsens_zhengzhichuan 0cae408ca8 修改bug 4 weeks ago
ccsens_zhengzhichuan 81c916200f 修改任务 4 weeks ago
ccsens_zhengzhichuan 0c4d039295 任务添加交付物描述字段 4 weeks ago
ccsens_zhengzhichuan f5a668de86 课题组列表添加研究内容 4 weeks ago
zhangye e8a6832346 修改bug 2 months ago
zhangye bb71f4591c 修改bug 2 months ago
lzp 436fe5dd4a 成员类型改为单选,课题详情-研究内容,预期结果改为竖向 2 months ago
lzp 241aa741c3 前台我的任务数量错误,后端项目文书添加权限按钮 2 months ago
lzp 76a76ffc45 1.0.0.3 2 months ago
lzp 614c0659eb 合并后端 2 months ago
lzp 8e2cdfcf59 处理截止日期默认为当前时间,我的-任务type传参错误1 2 months ago
zhangye 5163fbce59 不查询管理员的消息 2 months ago
liuzhipeng 30bca20890 默认头像太大,压缩 2 months ago
lzp 471a642fc5 合并后端 2 months ago
lzp 3b972c0a14 onLaunched 2 months ago
lzp 42473449e6 群聊最少两个人 2 months ago
lzp 61e72df22c 消息列表数据更新 2 months ago
lzp adaf38510f 消息列表未读没有更新 2 months ago
zhangye b9a77e17f7 修改头像相关 2 months ago
zhangye 96fd344cbb 导出经费。取消:query权限 2 months ago
zhangye 85ec34adec 注册发送邮件,修改发送短信验证码 2 months ago
zhangye f686c5485e Merge remote-tracking branch 'origin/master' 2 months ago
zhangye 67015eae7e 修改小程序调用external 2 months ago
liuzhipeng 31ff261cdf 合并后端 2 months ago
zhangye e0ac5b176e 修改bug 2 months ago
liuzhipeng 7533ba755b 短信登录 2 months ago
liuzhipeng 25b7a3fceb 成果列表处理 2 months ago
liuzhipeng 9157033253 高层次详情显示处理 2 months ago
liuzhipeng 2ce4a9fe5e 科研成果 2 months ago
liuzhipeng 060234e421 会议记录 2 months ago
liuzhipeng 1562f03036 实验方法 2 months ago
liuzhipeng 298da7e827 仪器信息列表 2 months ago
liuzhipeng 2ac7e38168 上传文件校验函数,添加大小校验 2 months ago
liuzhipeng c0f8f92ade 经费收支导入 2 months ago
liuzhipeng 64213f7a8e 经费收支 2 months ago
liuzhipeng 70351b2426 审核列表字段核对 2 months ago
liuzhipeng dca849b4c8 项目配置,课题组相关修改 2 months ago
liuzhipeng 62a3faf704 修改密码页面调整 2 months ago
liuzhipeng bbc423a9c5 仪器负责人传参错误 2 months ago
liuzhipeng 0181523a93 文献详情JSONp报错,先判断有没有值 2 months ago
liuzhipeng 42f4c651cd 任务触底加载 2 months ago
liuzhipeng a0ef2af990 我的-任务 2 months ago
liuzhipeng fd9ce7c95f 首页跳转任务,默认选择我的任务 2 months ago
liuzhipeng 4e552b8475 聊天界面适配 2 months ago
zhangye 936b8f0a4f 我的查询任务 2 months ago
zhangye 2587576138 修改退出登录接口,添加根据userId查询会话id接口 2 months ago
liuzhipeng 374fafe6bf 全部分类可以选上级 2 months ago
zhangye 4d9925d6e6 修改登录bug 2 months ago
liuzhipeng a4c20c70d3 会话未读数量轮询查询优化 2 months ago
liuzhipeng a5be53cd52 消息页面,处理文件名称没有溢出省略 2 months ago
liuzhipeng cadff2d84f 底部导航未读消息显示不出来问题 2 months ago
liuzhipeng 8e68204920 定时查看消息数量 2 months ago
liuzhipeng 37eb7a4eff 会话页面消息处理 2 months ago
liuzhipeng 34017ef8ae 注册下拉 2 months ago
liuzhipeng 848ad417af 注册下拉 2 months ago
liuzhipeng 45ebc28f09 下拉选择 2 months ago
liuzhipeng 3423650542 列表显示优化 2 months ago
zhangye f4b1eaa53c 修改会话接口 2 months ago
zhangye 862a619f8a Merge remote-tracking branch 'origin/master' 2 months ago
zhangye 38780e2070 修改会话列表 2 months ago
zhangye 527bb68021 修改会话列表 2 months ago
lzp 96f6ae2635 合并 2 months ago
lzp bcdf7d71e8 合并 2 months ago
zhangye 55b5c945d4 审核后发送短信,模板需要修改。 2 months ago
zhangye 64bc5e3f17 部署测试 2 months ago
lzp 1a826543d9 修改微信登录code传参方式 2 months ago
lzp bb44201b86 小程序迁移 2 months ago
lzp c39a45b573 前台注册 2 months ago
zhangye a9c0ed8bec 修改登录和手机号登录 2 months ago
zhangye 458c49f3f0 修改消息 2 months ago
lzp 8d55017e46 首页任务,任务列表onshow获取数据 2 months ago
lzp ec1a86f606 列表审核 2 months ago
lzp 41f577e6e9 新增任务,任务列表 2 months ago
zhangye 7fa215bf35 更新appId 2 months ago
zhangye cd6152df5e 修改注册和审核 2 months ago
zhangye 5c8563e3ac 添加微信小程序登录,未测试 2 months ago
lzp 1b809fd969 交付物审核 2 months ago
lzp 4b3bc225c6 任务列表 2 months ago
zhangye 6943f3ebb0 修改任务应交付物的参数名 2 months ago
zhangye 2f357d792a 任务添加应交付物,交付物添加审核功能。 2 months ago
zhangye 074e6932fb 修改查询课题组下成员接口 2 months ago
zhangye 3897f6061d 修改任务相关接口 2 months ago
lzp 50470898ac 去掉成员类型中的合作单位 2 months ago
lzp a05c947590 文件大小显示修改为50m 2 months ago
zhangye 93631f8702 生成任务相关代码,未测试 2 months ago
zhangye bf9a510a89 修改bug,修改添加课题组成员 2 months ago
zhangye 230769ab2a 审核成功添加用户后发送邮件 2 months ago
zhangye 11c265b175 修改注册和审核 2 months ago
lzp cbb367418e 审核列表显示处理 2 months ago
lzp 54ad1628ee 注册去掉课题组,密码信息,成员类型修改 2 months ago
zhangye f1998a445f 修改申请和审核 2 months ago
zhangye 3753f76777 新建仓库,更新前端文件 2 months ago
  1. 0
      research-admin/src/main/java/com/research/ResearchApplication.java
  2. 4
      research-admin/src/main/java/com/research/web/controller/client/flow/SysExpressionController.java
  3. 2
      research-admin/src/main/java/com/research/web/controller/client/flow/SysFormController.java
  4. 4
      research-admin/src/main/java/com/research/web/controller/client/flow/SysListenerController.java
  5. 27
      research-admin/src/main/java/com/research/web/controller/client/funding/FundingController.java
  6. 8
      research-admin/src/main/java/com/research/web/controller/client/session/SessionController.java
  7. 180
      research-admin/src/main/java/com/research/web/controller/client/task/TaskController.java
  8. 4
      research-admin/src/main/java/com/research/web/controller/system/SysConfigController.java
  9. 4
      research-admin/src/main/java/com/research/web/controller/system/SysDeptController.java
  10. 4
      research-admin/src/main/java/com/research/web/controller/system/SysDictDataController.java
  11. 4
      research-admin/src/main/java/com/research/web/controller/system/SysDictTypeController.java
  12. 32
      research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java
  13. 4
      research-admin/src/main/java/com/research/web/controller/system/SysMenuController.java
  14. 4
      research-admin/src/main/java/com/research/web/controller/system/SysNoticeController.java
  15. 4
      research-admin/src/main/java/com/research/web/controller/system/SysPostController.java
  16. 12
      research-admin/src/main/java/com/research/web/controller/system/SysRoleController.java
  17. 4
      research-admin/src/main/java/com/research/web/controller/system/SysUserController.java
  18. 270
      research-admin/src/main/java/com/research/web/controller/tenant/TmsLoginController.java
  19. 33
      research-admin/src/main/resources/application-dev.yml
  20. 35
      research-admin/src/main/resources/application-prod.yml
  21. 5
      research-admin/src/main/resources/application.yml
  22. 21
      research-common/src/main/java/com/research/common/core/domain/entity/SysUser.java
  23. 10
      research-common/src/main/java/com/research/common/core/domain/model/LoginBody.java
  24. 26
      research-common/src/main/java/com/research/common/core/domain/model/LoginUser.java
  25. 162
      research-common/src/main/java/com/research/common/wechat/ExternalService.java
  26. 123
      research-common/src/main/java/com/research/common/wechat/WxConstant.java
  27. 140
      research-common/src/main/java/com/research/common/wechat/bean/MiniMessageTemplate.java
  28. 14
      research-common/src/main/java/com/research/common/wechat/bean/MiniProgramUser.java
  29. 67
      research-common/src/main/java/com/research/common/wechat/bean/WechatCode.java
  30. 21
      research-common/src/main/java/com/research/common/wechat/bean/WxAccessToken.java
  31. 12
      research-common/src/main/java/com/research/common/wechat/bean/WxBaseEntity.java
  32. 15
      research-common/src/main/java/com/research/common/wechat/bean/WxGetIp.java
  33. 8
      research-framework/src/main/java/com/research/framework/config/SecurityConfig.java
  34. 27
      research-framework/src/main/java/com/research/framework/security/handle/LogoutSuccessHandlerImpl.java
  35. 42
      research-framework/src/main/java/com/research/framework/security/provider/WxmpAuthenticationProvider.java
  36. 62
      research-framework/src/main/java/com/research/framework/security/token/WxmpAuthenticationToken.java
  37. 62
      research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java
  38. 1
      research-framework/src/main/java/com/research/framework/web/service/TokenService.java
  39. 36
      research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java
  40. 25
      research-framework/src/main/java/com/research/framework/web/service/WebTmsLoginService.java
  41. 2
      research-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
  42. 8
      research-generator/src/main/resources/mbg.xml
  43. 2
      research-quartz/src/main/java/com/research/quartz/controller/SysJobController.java
  44. 2
      research-quartz/src/main/java/com/research/quartz/controller/SysJobLogController.java
  45. 23
      research-system/src/main/java/com/research/system/domain/WxUser.java
  46. 17
      research-system/src/main/java/com/research/system/domain/dto/GroupDto.java
  47. 128
      research-system/src/main/java/com/research/system/domain/dto/MemberAduitDto.java
  48. 2
      research-system/src/main/java/com/research/system/domain/dto/ProProgressDto.java
  49. 2
      research-system/src/main/java/com/research/system/domain/dto/SessionDto.java
  50. 10
      research-system/src/main/java/com/research/system/domain/dto/ShsCkwxDto.java
  51. 5
      research-system/src/main/java/com/research/system/domain/dto/ShsResDeviceDto.java
  52. 10
      research-system/src/main/java/com/research/system/domain/dto/ShsSyffCategoryDto.java
  53. 229
      research-system/src/main/java/com/research/system/domain/dto/TaskDto.java
  54. 150
      research-system/src/main/java/com/research/system/domain/po/ComFile.java
  55. 981
      research-system/src/main/java/com/research/system/domain/po/ComFileExample.java
  56. 22
      research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMember.java
  57. 44
      research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberAduit.java
  58. 250
      research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberAduitExample.java
  59. 120
      research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberExample.java
  60. 161
      research-system/src/main/java/com/research/system/domain/po/TasDeliverable.java
  61. 1021
      research-system/src/main/java/com/research/system/domain/po/TasDeliverableExample.java
  62. 216
      research-system/src/main/java/com/research/system/domain/po/TasTask.java
  63. 1271
      research-system/src/main/java/com/research/system/domain/po/TasTaskExample.java
  64. 150
      research-system/src/main/java/com/research/system/domain/po/TasTaskMember.java
  65. 961
      research-system/src/main/java/com/research/system/domain/po/TasTaskMemberExample.java
  66. 48
      research-system/src/main/java/com/research/system/domain/vo/FundingVo.java
  67. 32
      research-system/src/main/java/com/research/system/domain/vo/GroupVO.java
  68. 3
      research-system/src/main/java/com/research/system/domain/vo/HomeVo.java
  69. 27
      research-system/src/main/java/com/research/system/domain/vo/MemberAduitVo.java
  70. 2
      research-system/src/main/java/com/research/system/domain/vo/ResPlatformVo.java
  71. 4
      research-system/src/main/java/com/research/system/domain/vo/SessionVo.java
  72. 3
      research-system/src/main/java/com/research/system/domain/vo/ShsResDeviceVo.java
  73. 228
      research-system/src/main/java/com/research/system/domain/vo/TaskVo.java
  74. 3
      research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java
  75. 25
      research-system/src/main/java/com/research/system/domain/vo/UserVo.java
  76. 16
      research-system/src/main/java/com/research/system/mapper/SysUserMapper.java
  77. 9
      research-system/src/main/java/com/research/system/persist/dao/MemberAduitDao.java
  78. 3
      research-system/src/main/java/com/research/system/persist/dao/SessionDao.java
  79. 66
      research-system/src/main/java/com/research/system/persist/dao/TaskDao.java
  80. 28
      research-system/src/main/java/com/research/system/persist/mapper/ComFileMapper.java
  81. 28
      research-system/src/main/java/com/research/system/persist/mapper/TasDeliverableMapper.java
  82. 34
      research-system/src/main/java/com/research/system/persist/mapper/TasTaskMapper.java
  83. 28
      research-system/src/main/java/com/research/system/persist/mapper/TasTaskMemberMapper.java
  84. 12
      research-system/src/main/java/com/research/system/service/ISysUserService.java
  85. 66
      research-system/src/main/java/com/research/system/service/ITaskService.java
  86. 3
      research-system/src/main/java/com/research/system/service/SessionService.java
  87. 4
      research-system/src/main/java/com/research/system/service/ShsCkwxService.java
  88. 46
      research-system/src/main/java/com/research/system/service/TaskService.java
  89. 20
      research-system/src/main/java/com/research/system/service/impl/CooperatorServiceImpl.java
  90. 1
      research-system/src/main/java/com/research/system/service/impl/HomeServiceImpl.java
  91. 265
      research-system/src/main/java/com/research/system/service/impl/KtsGroupServiceImpl.java
  92. 13
      research-system/src/main/java/com/research/system/service/impl/MeetingServiceImpl.java
  93. 401
      research-system/src/main/java/com/research/system/service/impl/MemberAduitServiceImpl.java
  94. 12
      research-system/src/main/java/com/research/system/service/impl/OutcomeServiceImpl.java
  95. 2
      research-system/src/main/java/com/research/system/service/impl/ProgressServiceImpl.java
  96. 118
      research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java
  97. 20
      research-system/src/main/java/com/research/system/service/impl/ShsCkwxServiceImpl.java
  98. 8
      research-system/src/main/java/com/research/system/service/impl/ShsSyffCategoryServiceImpl.java
  99. 46
      research-system/src/main/java/com/research/system/service/impl/SysUserServiceImpl.java
  100. 786
      research-system/src/main/java/com/research/system/service/impl/TaskServiceImpl.java

0
research-admin/src/main/java/com/research/researchApplication.java → research-admin/src/main/java/com/research/ResearchApplication.java

4
research-admin/src/main/java/com/research/web/controller/client/flow/SysExpressionController.java

@ -37,7 +37,7 @@ public class SysExpressionController extends BaseController
/**
* 查询流程达式列表
*/
@PreAuthorize("@ss.hasPermi('system:expression:list')")
// @PreAuthorize("@ss.hasPermi('system:expression:list')")
@GetMapping("/list")
public TableDataInfo list(SysExpression sysExpression)
{
@ -62,7 +62,7 @@ public class SysExpressionController extends BaseController
/**
* 获取流程达式详细信息
*/
@PreAuthorize("@ss.hasPermi('system:expression:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{

2
research-admin/src/main/java/com/research/web/controller/client/flow/SysFormController.java

@ -69,7 +69,7 @@ public class SysFormController extends BaseController {
/**
* 获取流程表单详细信息
*/
@PreAuthorize("@ss.hasPermi('flowable:form:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{formId}")
public AjaxResult getInfo(@PathVariable("formId") Long formId) {
return AjaxResult.success(SysFormService.selectSysFormById(formId));

4
research-admin/src/main/java/com/research/web/controller/client/flow/SysListenerController.java

@ -37,7 +37,7 @@ public class SysListenerController extends BaseController
/**
* 查询流程监听列表
*/
@PreAuthorize("@ss.hasPermi('system:listener:list')")
// @PreAuthorize("@ss.hasPermi('system:listener:list')")
@GetMapping("/list")
public TableDataInfo list(SysListener sysListener)
{
@ -62,7 +62,7 @@ public class SysListenerController extends BaseController
/**
* 获取流程监听详细信息
*/
@PreAuthorize("@ss.hasPermi('system:listener:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{

27
research-admin/src/main/java/com/research/web/controller/client/funding/FundingController.java

@ -4,11 +4,14 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.research.common.core.domain.BaseDto;
import com.research.common.core.domain.JsonResponse;
import com.research.common.utils.StringUtils;
import com.research.common.utils.poi.ExcelUtil;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.FundingDto;
import com.research.system.domain.vo.FundingVo;
import com.research.system.service.FundingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
@ -17,7 +20,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author zzc
@ -53,4 +58,26 @@ public class FundingController {
fundingService.del(dto);
return JsonResponse.ok();
}
@PostMapping("/export")
@ApiOperation("导出经费收支数据")
public void exportFunding(@RequestBody @Validated FundingDto.Query query, HttpServletResponse response) {
List<FundingVo.Result> list = fundingService.queryList(query);
String baseUrl = "https://kygx.sxyfrs.com/research/";
list.forEach(result -> {
if (StringUtils.hasText(result.getPzhUrl())) {
String fullUrl = result.getPzhUrl();
if (!fullUrl.startsWith("http")) {
fullUrl = baseUrl + fullUrl;
}
result.setPzhUrl(fullUrl);
}
});
// 使用自定义Excel导出,支持超链接
ExcelUtil<FundingVo.Result> util = new ExcelUtil<>(FundingVo.Result.class);
util.exportExcel(response, list, "经费收支数据");
}
}

8
research-admin/src/main/java/com/research/web/controller/client/session/SessionController.java

@ -53,7 +53,7 @@ public class SessionController {
@ApiOperation(value = "发送消息")
@RequestMapping(value = "/send", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> send(@ApiParam @Validated @RequestBody SessionDto.SendMessage dto) {
public JsonResponse<Long> send(@ApiParam @Validated @RequestBody SessionDto.SendMessage dto) {
return JsonResponse.ok(sessionService.send(dto));
}
@ -92,4 +92,10 @@ public class SessionController {
public JsonResponse<Integer> delSessionMember(@ApiParam @Validated @RequestBody SessionDto.AddSessionMember dto){
return JsonResponse.ok(sessionService.delSessionMember(dto));
}
@ApiOperation(value = "根据userId查找会话id")
@RequestMapping(value = "/getSessionByUserId", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Long> getSessionByUserId(@ApiParam @Validated @RequestBody SessionDto.Query dto){
return JsonResponse.ok(sessionService.getSessionByUserId(dto));
}
}

180
research-admin/src/main/java/com/research/web/controller/client/task/TaskController.java

@ -1,128 +1,158 @@
package com.research.web.controller.client.task;
import cn.hutool.core.collection.CollUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.research.common.core.domain.BaseDto;
import com.research.common.core.domain.JsonResponse;
import com.research.system.domain.dto.CommonDto;
import com.research.common.core.domain.entity.SysRole;
import com.research.common.core.domain.model.LoginUser;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.vo.TaskVo;
import com.research.system.service.TaskService;
import com.research.system.service.ITaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import liquibase.pro.packaged.J;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import static com.research.common.utils.PageUtils.startPage;
import static com.research.common.utils.SecurityUtils.getLoginUser;
/**
* @Author zzc
* @Package com.research.web.controller.client
* @Date 2025/8/17 15:49
* @description:
* @author zy
* @date 2026/04/15
*/
@Slf4j
@Api(tags = "任务相关")
@RestController
@RequestMapping("/task")
@Api(tags = "任务相关")
@Slf4j
public class TaskController {
@Resource
private TaskService taskService;
private ITaskService taskService;
@ApiOperation(value = "查询任务")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<TaskVo.TaskResult>> queryList(@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryTask> query) {
if (query.getPageNum() > 0) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
}
return JsonResponse.ok(new PageInfo<>(taskService.queryList(query.getParam())));
@ApiOperation(value = "获取当前用户关联的课题组列表")
@PostMapping("/getMyGroupList")
public JsonResponse<List<TaskVo.KtGroupInfo>> getMyGroupList() {
log.info("获取当前用户关联的课题组列表开始");
//检查当前用户的角色是否是合作单位管理员,如果是,查询合作单位下所有的课题组,如果不是查看自己关联的课题组
List<TaskVo.KtGroupInfo> result = taskService.getMyGroupList();
log.info("获取当前用户关联的课题组列表结束, 共{}个", result.size());
return JsonResponse.ok(result);
}
@ApiOperation(value = "查询任务")
@RequestMapping(value = "/queryListClient", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.ClientList>> queryListClient(@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryTask> query){
return JsonResponse.ok(taskService.queryListClient(query.getParam()));
@ApiOperation(value = "获取课题组成员列表")
@PostMapping("/getGroupMembers")
public JsonResponse<List<TaskVo.GroupMemberInfo>> getGroupMembers(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.GetGroupMembers> params) {
log.info("获取课题组成员列表开始{}", params);
List<TaskVo.GroupMemberInfo> result = taskService.getGroupMembers(params.getParam());
log.info("获取课题组成员列表结束, 共{}个", result.size());
return JsonResponse.ok(result);
}
@ApiOperation(value = "查询任务")
@RequestMapping(value = "/detail", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.TaskResult> detail(@ApiParam @Validated @RequestBody TaskDto.QueryDetail dto){
return JsonResponse.ok(taskService.detail(dto.getId()));
@ApiOperation(value = "创建任务")
@PostMapping("/create")
public JsonResponse<TaskVo.CreateTaskResult> create(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.CreateTask> params) {
Long userId = SecurityUtils.getUserId();
log.info("创建任务开始{}, userId:{}", params, userId);
TaskVo.CreateTaskResult result = taskService.createTask(params.getParam(), userId);
log.info("创建任务结束{}", result);
return JsonResponse.ok(result);
}
@ApiOperation(value = "新增任务")
@RequestMapping(value = "/add", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> add(@ApiParam @Validated @RequestBody TaskDto.AddTask dto) {
taskService.add(dto);
@ApiOperation(value = "修改任务")
@PostMapping("/update")
public JsonResponse<Integer> update(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.UpdateTask> params) throws Exception {
log.info("修改任务开始{}", params);
taskService.updateTask(params.getParam());
log.info("修改任务结束");
return JsonResponse.ok();
}
@ApiOperation(value = "删除任务")
@RequestMapping(value = "/del", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> del(@ApiParam @Validated @RequestBody CommonDto.DelDto dto) {
taskService.del(dto);
@ApiOperation(value = "批量删除任务")
@PostMapping("/batchDelete")
public JsonResponse<Integer> batchDelete(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.BatchDeleteTask> params) {
log.info("批量删除任务开始{}", params);
taskService.batchDeleteTask(params.getParam());
log.info("批量删除任务结束");
return JsonResponse.ok();
}
@ApiOperation(value = "查询应交付物")
@RequestMapping(value = "/queryExecutorList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<TaskVo.ExecutorResult>> queryExecutorList(@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryExecutor> query) {
if (query.getPageNum() > 0) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
@ApiOperation(value = "查询任务列表")
@PostMapping("/list")
public JsonResponse<PageInfo<TaskVo.TaskInfo>> list(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryTaskList> params) {
Long userId = SecurityUtils.getUserId();
log.info("查询任务列表开始{}, userId:{}", params, userId);
if (params.getPageNum() > 0) {
PageHelper.startPage(params.getPageNum(), params.getPageSize());
}
return JsonResponse.ok(new PageInfo<>(taskService.queryExecutorList(query.getParam())));
}
@ApiOperation(value = "新增应交付物")
@RequestMapping(value = "/addExecutor", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> addExecutor(@ApiParam @Validated @RequestBody TaskDto.AddExecutor dto) {
taskService.addExecutor(dto);
return JsonResponse.ok();
List<TaskVo.TaskInfo> result = taskService.queryTaskList(params.getParam(), userId);
log.info("查询任务列表结束,共查询到{}条记录", result.size());
return JsonResponse.ok(new PageInfo<>(result));
}
@ApiOperation(value = "删除应交付物")
@RequestMapping(value = "/delExecutor", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> delExecutor(@ApiParam @Validated @RequestBody CommonDto.DelDto dto) {
taskService.delExecutor(dto);
return JsonResponse.ok();
@ApiOperation(value = "导出任务列表")
@PostMapping("/export")
public void exportTask(HttpServletResponse response, @ApiParam @Validated @RequestBody TaskDto.QueryTaskList params) {
taskService.exportTask(response, params, SecurityUtils.getUserId());
}
@ApiOperation(value = "查询交付物")
@RequestMapping(value = "/queryDeliverableList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<TaskVo.DeliverableResult>> queryDeliverableList(@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryDeliverable> query) {
if (query.getPageNum() > 0) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
@ApiOperation(value = "查询交付物列表")
@PostMapping("/getDeliverableList")
public JsonResponse<PageInfo<TaskVo.DeliverableInfo>> getDeliverableList(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.QueryDeliverableList> params) {
log.info("查询交付物列表开始{}", params);
if (params.getPageNum() > 0) {
PageHelper.startPage(params.getPageNum(), params.getPageSize());
}
return JsonResponse.ok(new PageInfo<>(taskService.queryDeliverableList(query.getParam())));
List<TaskVo.DeliverableInfo> result = taskService.getDeliverableList(params.getParam());
log.info("查询交付物列表结束,共查询到{}条记录", result.size());
return JsonResponse.ok(new PageInfo<>(result));
}
@ApiOperation(value = "新增交付物")
@RequestMapping(value = "/addDeliverable", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> addDeliverable(@ApiParam @Validated @RequestBody TaskDto.AddDeliverable dto) {
taskService.addDeliverable(dto);
@ApiOperation(value = "提交交付物")
@PostMapping("/submitDeliverable")
public JsonResponse<Integer> submitDeliverable(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.SubmitDeliverable> params) {
Long userId = SecurityUtils.getUserId();
log.info("提交交付物开始{}, userId:{}", params, userId);
taskService.submitDeliverable(params.getParam(), userId);
log.info("提交交付物结束");
return JsonResponse.ok();
}
@ApiOperation(value = "删除交付物")
@RequestMapping(value = "/delDeliverable", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> delDeliverable(@ApiParam @Validated @RequestBody CommonDto.DelDto dto) {
taskService.delDeliverable(dto);
@ApiOperation(value = "审核任务")
@PostMapping("/audit")
public JsonResponse<Integer> audit(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.AuditTask> params) {
Long userId = SecurityUtils.getUserId();
log.info("审核任务开始{}, userId:{}", params, userId);
taskService.auditTask(params.getParam(), userId);
log.info("审核任务结束");
return JsonResponse.ok();
}
@ApiOperation(value = "交付物审核")
@RequestMapping(value = "/aduitDeliverable", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> aduit(@ApiParam @Validated @RequestBody TaskDto.AduitDeliverable dto){
taskService.aduit(dto.getTaskId(), dto.getDeliverableId(), dto.getStatus());
@ApiOperation(value = "审核交付物")
@PostMapping("/auditDeliverable")
public JsonResponse<Integer> auditDeliverable(
@ApiParam @Validated @RequestBody BaseDto<TaskDto.AuditDeliverable> params) {
Long userId = SecurityUtils.getUserId();
log.info("审核交付物开始{}, userId:{}", params, userId);
taskService.auditDeliverable(params.getParam(), userId);
log.info("审核交付物结束");
return JsonResponse.ok();
}
}
}

4
research-admin/src/main/java/com/research/web/controller/system/SysConfigController.java

@ -37,7 +37,7 @@ public class SysConfigController extends BaseController
/**
* 获取参数配置列表
*/
@PreAuthorize("@ss.hasPermi('system:config:list')")
// @PreAuthorize("@ss.hasPermi('system:config:list')")
@GetMapping("/list")
public TableDataInfo list(SysConfig config)
{
@ -59,7 +59,7 @@ public class SysConfigController extends BaseController
/**
* 根据参数编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:config:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{configId}")
public AjaxResult getInfo(@PathVariable Long configId)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysDeptController.java

@ -51,7 +51,7 @@ public class SysDeptController extends BaseController
/**
* 查询部门列表排除节点
*/
@PreAuthorize("@ss.hasPermi('system:dept:list')")
// @PreAuthorize("@ss.hasPermi('system:dept:list')")
@GetMapping("/list/exclude/{deptId}")
public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
{
@ -73,7 +73,7 @@ public class SysDeptController extends BaseController
/**
* 根据部门编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:dept:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{deptId}")
public AjaxResult getInfo(@PathVariable Long deptId)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysDictDataController.java

@ -42,7 +42,7 @@ public class SysDictDataController extends BaseController
@Autowired
private ISysDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
// @PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictData dictData)
{
@ -64,7 +64,7 @@ public class SysDictDataController extends BaseController
/**
* 查询字典数据详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{dictCode}")
public AjaxResult getInfo(@PathVariable Long dictCode)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysDictTypeController.java

@ -34,7 +34,7 @@ public class SysDictTypeController extends BaseController
@Autowired
private ISysDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
// @PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictType dictType)
{
@ -56,7 +56,7 @@ public class SysDictTypeController extends BaseController
/**
* 查询字典类型详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{dictId}")
public AjaxResult getInfo(@PathVariable Long dictId)
{

32
research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java

@ -4,11 +4,17 @@ import java.util.List;
import java.util.Set;
import com.research.common.annotation.Anonymous;
import com.research.common.core.domain.BaseDto;
import com.research.common.core.domain.JsonResponse;
import com.research.framework.web.service.WebTmsLoginService;
import com.research.system.domain.WxUser;
import com.research.system.domain.dto.SmsDto;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.vo.SmsVo;
import com.research.system.domain.vo.TaskVo;
import com.research.system.domain.vo.TmsLoginUserVo;
import com.research.system.domain.vo.UserVo;
import com.research.system.service.ISysUserService;
import com.research.system.service.SessionService;
import com.research.system.service.TmsLoginService;
import io.swagger.annotations.ApiOperation;
@ -54,7 +60,7 @@ public class SysLoginController
@Autowired
private TokenService tokenService;
@Resource
private SessionService sessionService;
private ISysUserService userService;
@Resource
private WebTmsLoginService tmsTenantUserService;
@Resource
@ -71,7 +77,7 @@ public class SysLoginController
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
loginBody.getUuid(), loginBody.getWxCode());
ajax.put(Constants.TOKEN, token);
return ajax;
}
@ -119,6 +125,16 @@ public class SysLoginController
return ajax;
}
@ApiOperation(value = "获取“我的”信息")
@PostMapping("/myself")
public JsonResponse<UserVo.MyselfVo> getMyself() {
Long userId = SecurityUtils.getUserId();
UserVo.MyselfVo result = userService.getMyself();
return JsonResponse.ok(result);
}
/**
* 获取路由信息
*
@ -146,8 +162,18 @@ public class SysLoginController
public AjaxResult loginByPhone(@ApiParam @Validated @RequestBody TmsLoginUserVo.PhoneLogin dto) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = tmsTenantUserService.loginByPhone(dto.getPhone(), dto.getSmsCode()).getToken();
String token = tmsTenantUserService.loginByPhone(dto.getPhone(), dto.getSmsCode(), dto.getWxCode()).getToken();
ajax.put(Constants.TOKEN, token);
return ajax;
}
@ApiOperation("小程序登录")
@PostMapping("/wxmpLogin")
@Anonymous
public JsonResponse<WxUser.LoginResult> loginByWxmp(@RequestBody String wxCode) {
// 生成令牌
WxUser.LoginResult loginByWxmp = loginService.loginByWxmp(wxCode);
return JsonResponse.ok(loginByWxmp);
}
}

4
research-admin/src/main/java/com/research/web/controller/system/SysMenuController.java

@ -36,7 +36,7 @@ public class SysMenuController extends BaseController
/**
* 获取菜单列表
*/
@PreAuthorize("@ss.hasPermi('system:menu:list')")
// @PreAuthorize("@ss.hasPermi('system:menu:list')")
@GetMapping("/list")
public AjaxResult list(SysMenu menu)
{
@ -47,7 +47,7 @@ public class SysMenuController extends BaseController
/**
* 根据菜单编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:menu:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{menuId}")
public AjaxResult getInfo(@PathVariable Long menuId)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysNoticeController.java

@ -35,7 +35,7 @@ public class SysNoticeController extends BaseController
/**
* 获取通知公告列表
*/
@PreAuthorize("@ss.hasPermi('system:notice:list')")
// @PreAuthorize("@ss.hasPermi('system:notice:list')")
@GetMapping("/list")
public TableDataInfo list(SysNotice notice)
{
@ -47,7 +47,7 @@ public class SysNoticeController extends BaseController
/**
* 根据通知公告编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:notice:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{noticeId}")
public AjaxResult getInfo(@PathVariable Long noticeId)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysPostController.java

@ -37,7 +37,7 @@ public class SysPostController extends BaseController
/**
* 获取岗位列表
*/
@PreAuthorize("@ss.hasPermi('system:post:list')")
// @PreAuthorize("@ss.hasPermi('system:post:list')")
@GetMapping("/list")
public TableDataInfo list(SysPost post)
{
@ -59,7 +59,7 @@ public class SysPostController extends BaseController
/**
* 根据岗位编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:post:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{postId}")
public AjaxResult getInfo(@PathVariable Long postId)
{

12
research-admin/src/main/java/com/research/web/controller/system/SysRoleController.java

@ -57,7 +57,7 @@ public class SysRoleController extends BaseController
@Autowired
private ISysDeptService deptService;
@PreAuthorize("@ss.hasPermi('system:role:list')")
// @PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/list")
public TableDataInfo list(SysRole role)
{
@ -79,7 +79,7 @@ public class SysRoleController extends BaseController
/**
* 根据角色编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{roleId}")
public AjaxResult getInfo(@PathVariable Long roleId)
{
@ -185,7 +185,7 @@ public class SysRoleController extends BaseController
* 获取角色选择框列表
*/
@Anonymous
// @PreAuthorize("@ss.hasPermi('system:role:query')")
// //@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
@ -195,7 +195,7 @@ public class SysRoleController extends BaseController
/**
* 查询已分配用户角色列表
*/
@PreAuthorize("@ss.hasPermi('system:role:list')")
// @PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/authUser/allocatedList")
public TableDataInfo allocatedList(SysUser user)
{
@ -207,7 +207,7 @@ public class SysRoleController extends BaseController
/**
* 查询未分配用户角色列表
*/
@PreAuthorize("@ss.hasPermi('system:role:list')")
// @PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/authUser/unallocatedList")
public TableDataInfo unallocatedList(SysUser user)
{
@ -253,7 +253,7 @@ public class SysRoleController extends BaseController
/**
* 获取对应角色部门树列表
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/deptTree/{roleId}")
public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
{

4
research-admin/src/main/java/com/research/web/controller/system/SysUserController.java

@ -108,7 +108,7 @@ public class SysUserController extends BaseController
/**
* 根据用户编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:user:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = { "/", "/{userId}" })
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
{
@ -247,7 +247,7 @@ public class SysUserController extends BaseController
/**
* 根据用户编号获取授权角色
*/
@PreAuthorize("@ss.hasPermi('system:user:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping("/authRole/{userId}")
public AjaxResult authRole(@PathVariable("userId") Long userId)
{

270
research-admin/src/main/java/com/research/web/controller/tenant/TmsLoginController.java

@ -45,139 +45,139 @@ import java.util.Map;
@RequestMapping("/web")
public class TmsLoginController {
@Resource
private WebTmsLoginService tmsTenantUserService;
@Resource
private TokenService tokenService;
@Resource
private TmsLoginService dmsLoginService;
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@Anonymous
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = tmsTenantUserService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@Anonymous
@DataSource(DataSourceType.MASTER)
@PostMapping("/loginSimple")
public AjaxResult loginSimple(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = tmsTenantUserService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*
* 重置密码
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
@DataSource(DataSourceType.MASTER)
public AjaxResult updatePwd(@RequestBody Map<String, String> params)
{
String oldPassword = params.get("oldPassword");
String newPassword = params.get("newPassword");
LoginUser loginUser = SecurityUtils.getLoginUser();
Long userId = loginUser.getUserId();
String userName = loginUser.getUsername();
String password = loginUser.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password))
{
return AjaxResult.error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password))
{
return AjaxResult.error("新密码不能与旧密码相同");
}
newPassword = SecurityUtils.encryptPassword(newPassword);
if (dmsLoginService.resetPwd(userId, userName, newPassword) > 0)
{
// 更新缓存用户密码
loginUser.getUser().setPassword(newPassword);
tokenService.setLoginUser(loginUser);
return AjaxResult.success("操作成功");
}
return AjaxResult.error("修改密码异常,请联系管理员");
}
/**
* 获取用户信息暂时先从主库获取
* @return 用户信息
*/
@ApiOperation("用户信息")
@GetMapping("/getInfo")
@DataSource(DataSourceType.MASTER)
public AjaxResult getInfo() {
LoginUser loginUser = SecurityUtils.getLoginUser();
//获取用户从库信息
TmsLoginUserVo.DmsUserVo tenantUser = dmsLoginService.selectTenantUserById(loginUser.getUserId());
SysUser user = new SysUser();
user.setUserId(tenantUser.getId());
user.setUserName(tenantUser.getUserName());
user.setNickName(tenantUser.getNickName());
//刷新token
tokenService.refreshToken(loginUser);
AjaxResult ajax = AjaxResult.success();
ajax.put("user", user);
ajax.put("forceUpdPwdFlag" , tenantUser.getForceUpdPwdFlag());
return ajax;
}
/**
* 筛查接口此接口已添加白名单所以不需要@annomous
* @param dto
* @return
*/
@Anonymous
@PostMapping("/queryTenantById")
@DataSource(DataSourceType.MASTER)
public JsonResponse<TmsTenant> queryTenantById(@RequestBody TmsLoginUserVo.Query dto){
return JsonResponse.ok(dmsLoginService.queryById(dto.getId()));
}
@Anonymous
@PostMapping("/query")
public JsonResponse<List<TmsTenant>> query(){
return JsonResponse.ok(dmsLoginService.query());
}
@ApiOperation("获取手机验证码")
@GetMapping("/getSmsCode")
@Anonymous
public JsonResponse<SmsVo.GetSmsCodeVo> getSmsCode(@ApiParam @Validated SmsDto.GetSmsCode dto) {
return JsonResponse.ok(dmsLoginService.sendSmsCode(dto.getPhone()));
}
@ApiOperation("手机号登录")
@PostMapping("/phoneLogin")
@Anonymous
public JsonResponse<TmsLoginUserVo.Result> loginByPhone(@ApiParam @Validated @RequestBody TmsLoginUserVo.PhoneLogin dto) {
// 生成令牌
return JsonResponse.ok(tmsTenantUserService.loginByPhone(dto.getPhone(), dto.getSmsCode()));
}
// @Resource
// private WebTmsLoginService tmsTenantUserService;
// @Resource
// private TokenService tokenService;
// @Resource
// private TmsLoginService dmsLoginService;
//
//
//
// /**
// * 登录方法
// *
// * @param loginBody 登录信息
// * @return 结果
// */
// @Anonymous
// @PostMapping("/login")
// public AjaxResult login(@RequestBody LoginBody loginBody) {
// AjaxResult ajax = AjaxResult.success();
// // 生成令牌
// String token = tmsTenantUserService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
// loginBody.getUuid());
// ajax.put(Constants.TOKEN, token);
// return ajax;
// }
//
// /**
// * 登录方法
// *
// * @param loginBody 登录信息
// * @return 结果
// */
// @Anonymous
// @DataSource(DataSourceType.MASTER)
// @PostMapping("/loginSimple")
// public AjaxResult loginSimple(@RequestBody LoginBody loginBody) {
// AjaxResult ajax = AjaxResult.success();
// // 生成令牌
// String token = tmsTenantUserService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
// loginBody.getUuid());
// ajax.put(Constants.TOKEN, token);
// return ajax;
// }
//
//
// /**
// * 获取用户信息
// *
// * 重置密码
// */
// @Log(title = "个人信息", businessType = BusinessType.UPDATE)
// @PutMapping("/updatePwd")
// @DataSource(DataSourceType.MASTER)
// public AjaxResult updatePwd(@RequestBody Map<String, String> params)
// {
// String oldPassword = params.get("oldPassword");
// String newPassword = params.get("newPassword");
// LoginUser loginUser = SecurityUtils.getLoginUser();
// Long userId = loginUser.getUserId();
// String userName = loginUser.getUsername();
// String password = loginUser.getPassword();
// if (!SecurityUtils.matchesPassword(oldPassword, password))
// {
// return AjaxResult.error("修改密码失败,旧密码错误");
// }
// if (SecurityUtils.matchesPassword(newPassword, password))
// {
// return AjaxResult.error("新密码不能与旧密码相同");
// }
// newPassword = SecurityUtils.encryptPassword(newPassword);
// if (dmsLoginService.resetPwd(userId, userName, newPassword) > 0)
// {
// // 更新缓存用户密码
// loginUser.getUser().setPassword(newPassword);
// tokenService.setLoginUser(loginUser);
// return AjaxResult.success("操作成功");
// }
// return AjaxResult.error("修改密码异常,请联系管理员");
// }
//
// /**
// * 获取用户信息,暂时先从主库获取
// * @return 用户信息
// */
// @ApiOperation("用户信息")
// @GetMapping("/getInfo")
// @DataSource(DataSourceType.MASTER)
// public AjaxResult getInfo() {
// LoginUser loginUser = SecurityUtils.getLoginUser();
// //获取用户从库信息
// TmsLoginUserVo.DmsUserVo tenantUser = dmsLoginService.selectTenantUserById(loginUser.getUserId());
// SysUser user = new SysUser();
// user.setUserId(tenantUser.getId());
// user.setUserName(tenantUser.getUserName());
// user.setNickName(tenantUser.getNickName());
// //刷新token
// tokenService.refreshToken(loginUser);
// AjaxResult ajax = AjaxResult.success();
// ajax.put("user", user);
// ajax.put("forceUpdPwdFlag" , tenantUser.getForceUpdPwdFlag());
// return ajax;
// }
//
// /**
// * 筛查接口,此接口已添加白名单,所以不需要@annomous
// * @param dto
// * @return
// */
// @Anonymous
// @PostMapping("/queryTenantById")
// @DataSource(DataSourceType.MASTER)
// public JsonResponse<TmsTenant> queryTenantById(@RequestBody TmsLoginUserVo.Query dto){
// return JsonResponse.ok(dmsLoginService.queryById(dto.getId()));
// }
//
// @Anonymous
// @PostMapping("/query")
// public JsonResponse<List<TmsTenant>> query(){
// return JsonResponse.ok(dmsLoginService.query());
// }
//
// @ApiOperation("获取手机验证码")
// @GetMapping("/getSmsCode")
// @Anonymous
// public JsonResponse<SmsVo.GetSmsCodeVo> getSmsCode(@ApiParam @Validated SmsDto.GetSmsCode dto) {
// return JsonResponse.ok(dmsLoginService.sendSmsCode(dto.getPhone()));
// }
//
// @ApiOperation("手机号登录")
// @PostMapping("/phoneLogin")
// @Anonymous
// public JsonResponse<TmsLoginUserVo.Result> loginByPhone(@ApiParam @Validated @RequestBody TmsLoginUserVo.PhoneLogin dto) {
// // 生成令牌
// return JsonResponse.ok(tmsTenantUserService.loginByPhone(dto.getPhone(), dto.getSmsCode()));
// }
}

33
research-admin/src/main/resources/application-dev.yml

@ -64,4 +64,35 @@ server:
port: 8080
research:
reportTemplate: C:\Users\zzc16\Desktop\report_template.docx
reportGrTemplate: C:\Users\zzc16\Desktop\reportGrTemplate.docx
reportGrTemplate: C:\Users\zzc16\Desktop\reportGrTemplate.docx
wxmp:
appId: wx591b1c8fd6de7ed8
secret: 83027b0e34443b2f60a13f23451d37ca
# 邮件模块
mail:
default-encoding: UTF-8
protocol: smtp
host: smtp.163.com
port: 465
username: kygx_sxyfrs@163.com
password: YTiSp39w27JzTxUC
sender: kygx_sxyfrs@163.com
test-connection: false
properties:
mail:
smtp:
auth: true
ssl:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
debug: false
mime:
splitlongparameters: false
servicePhone: 010-444000
version: v1.0.0
externalUrl: https://kygx.sxyfrs.com/external/

35
research-admin/src/main/resources/application-prod.yml

@ -8,6 +8,7 @@ spring:
master:
url: jdbc:mysql://127.0.0.1:3306/open_research?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
# password: sdey18aA!
password: csylcx18aA!
# 从库数据源
slave:
@ -63,5 +64,35 @@ server:
# 服务器的HTTP端口,默认为8080
port: 38081
research:
reportTemplate: D:\Projects\research\server\profile\reportTemplate.docx
reportGrTemplate: D:\Projects\research\server\profile\reportGrTemplate.docx
reportTemplate: D:\Projects\research\server\profile\report_template.docx
reportGrTemplate: D:\Projects\research\server\profile\reportGrTemplate.docx
wxmp:
appId: wx591b1c8fd6de7ed8
secret: 83027b0e34443b2f60a13f23451d37ca
# 邮件模块
mail:
default-encoding: UTF-8
protocol: smtp
host: smtp.163.com
port: 465
username: kygx_sxyfrs@163.com
password: YTiSp39w27JzTxUC
sender: kygx_sxyfrs@163.com
test-connection: false
properties:
mail:
smtp:
auth: true
ssl:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
debug: false
mime:
splitlongparameters: false
servicePhone: 010-444000
version: v1.0.0
externalUrl: https://kygx.sxyfrs.com/external/

5
research-admin/src/main/resources/application.yml

@ -135,6 +135,9 @@ xss:
# flowable相关表
flowable:
# true 会对数据库中所有表进行更新操作。如果表不存在,则自动创建(建议开发时使用)
database-schema-update: true
database-schema-update: false
# 关闭定时任务JOB
async-executor-activate: false
# ========== 新增:禁用 Content 模块 ==========
content:
enabled: false

21
research-common/src/main/java/com/research/common/core/domain/entity/SysUser.java

@ -77,6 +77,10 @@ public class SysUser extends BaseEntity
})
private SysDept dept;
private Long orgId;
private String openId;
/** 角色对象 */
private List<SysRole> roles;
@ -297,6 +301,23 @@ public class SysUser extends BaseEntity
this.roleId = roleId;
}
public Long getOrgId() {
return orgId;
}
public void setOrgId(Long orgId) {
this.orgId = orgId;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

10
research-common/src/main/java/com/research/common/core/domain/model/LoginBody.java

@ -27,6 +27,8 @@ public class LoginBody
*/
private String uuid;
private String wxCode;
public String getUsername()
{
return username;
@ -66,4 +68,12 @@ public class LoginBody
{
this.uuid = uuid;
}
public String getWxCode() {
return wxCode;
}
public void setWxCode(String wxCode) {
this.wxCode = wxCode;
}
}

26
research-common/src/main/java/com/research/common/core/domain/model/LoginUser.java

@ -73,6 +73,8 @@ public class LoginUser implements UserDetails
private Long tenantId;
private String openId;
public LoginUser()
{
}
@ -85,6 +87,12 @@ public class LoginUser implements UserDetails
this.tenantId = tenantId;
}
public LoginUser(String openId, Long tenantId)
{
this.openId = openId;
this.tenantId = tenantId;
}
public LoginUser(SysUser user, Set<String> permissions)
{
this.user = user;
@ -108,6 +116,16 @@ public class LoginUser implements UserDetails
this.tenantId = tenantId;
}
public LoginUser(String openId, Long userId, Long deptId, SysUser user, Set<String> permissions,Long tenantId)
{
this.openId = openId;
this.userId = userId;
this.deptId = deptId;
this.user = user;
this.permissions = permissions;
this.tenantId = tenantId;
}
public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions, Long tenantId, Long scoreId)
{
this.userId = userId;
@ -286,6 +304,14 @@ public class LoginUser implements UserDetails
this.user = user;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities()
{

162
research-common/src/main/java/com/research/common/wechat/ExternalService.java

@ -0,0 +1,162 @@
package com.research.common.wechat;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.research.common.exception.ServiceException;
import com.research.common.exception.base.BaseException;
import com.research.common.wechat.bean.MiniProgramUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zhangsan
* @date 2022-09-01 17:34
* @description TODO
*/
@Service
@Slf4j
public class ExternalService {
private static String miniAppId;
private static String miniSecret;
private static String externalUrl;
private static String sender;
private static String host;
private static Integer port;
private static String username;
private static String password;
@Value("${mail.sender:}")
public void setSender(String sender) {
ExternalService.sender = sender;
}
@Value("${mail.host:}")
public void setHost(String host) {
ExternalService.host = host;
}
@Value("${mail.port:465}")
public void setPort(Integer port) {
ExternalService.port = port;
}
@Value("${mail.username:}")
public void setUsername(String username) {
ExternalService.username = username;
}
@Value("${mail.password:}")
public void setPassword(String password) {
ExternalService.password = password;
}
@Value("${wxmp.appId:}")
public void setMiniAppId(String miniAppId) {
ExternalService.miniAppId = miniAppId;
}
@Value("${wxmp.secret:}")
public void setMiniSecret(String miniSecret) {
ExternalService.miniSecret = miniSecret;
}
@Value("${externalUrl:}")
public void setExternalUrl(String externalUrl) {
ExternalService.externalUrl = externalUrl;
}
private static final Integer EXTERNAL_HTTP_TIMEOUT = 5000;
public MiniProgramUser sendWxmpLoginRequest(String wxmpCode){
String url = externalUrl + "external/wxLoginAppId";
Map<String, Object> params = new HashMap<>();
params.put("appId", miniAppId);
params.put("secret", miniSecret);
params.put("wxmpCode", wxmpCode);
MiniProgramUser miniProgramUser = null;
try {
HttpResponse execute = HttpRequest.post(url)
.timeout(EXTERNAL_HTTP_TIMEOUT)
.header("Content-Type", "application/json;charset=UTF-8")
.body(JSONUtil.toJsonStr(params))
.execute();
log.info("请求小程序登录接口{},{}", url, execute.body());
if (execute.getStatus() == 200) {
String body = execute.body();
JSONObject jsonObject = JSONObject.parseObject(body);
if (jsonObject.getBoolean("success")) {
JSONArray dataArray = jsonObject.getJSONArray("data");
if (dataArray != null && !dataArray.isEmpty()) {
miniProgramUser = dataArray.getObject(0, MiniProgramUser.class);
}
}
}
} catch (Exception e) {
log.error("微信小程序登录失败", e);
}
return miniProgramUser;
}
public Object sendSmsCode(String phone, String smsCode, long expireTime){
String url = externalUrl + "external/sendBaiDuSms";
Map<String, Object> params = new HashMap<>();
params.put("to", phone);
params.put("text", smsCode);
params.put("validSeconds", expireTime);
Object result = null;
try {
result = HttpRequest.post(url)
.timeout(EXTERNAL_HTTP_TIMEOUT)
.header("Content-Type", "application/json;charset=UTF-8")
.body(JSONUtil.toJsonStr(params))
.execute()
.body();
log.info("发送短信结果{}", result);
} catch (Exception e) {
log.error("发送短信失败", e);
}
return result;
}
public Object sendMail(String to, String subject, String text) {
String url = externalUrl + "external/sendSimpleMailSender";
Map<String, Object> params = new HashMap<>();
params.put("to", to);
params.put("subject", subject);
params.put("text", text);
params.put("sender", sender);
params.put("host", host);
params.put("port", port);
params.put("username", username);
params.put("password", password);
Object result = null;
try {
HttpResponse execute = HttpRequest.post(url)
.timeout(EXTERNAL_HTTP_TIMEOUT)
.header("Content-Type", "application/json;charset=UTF-8")
.body(JSONUtil.toJsonStr(params))
.execute();
result = execute.body();
log.info("发送邮件结果{}", result);
} catch (Exception e) {
log.error("发送邮件失败", e);
}
return result;
}
}

123
research-common/src/main/java/com/research/common/wechat/WxConstant.java

@ -0,0 +1,123 @@
package com.research.common.wechat;
import java.util.HashMap;
import java.util.Map;
/**
* @author
*/
public class WxConstant {
/*** 默认小程序 */
public static final String ANYRING = "anyring";
/*** 获取微信服务器IP地址 */
public static final String URL_GET_WX_IP = "https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=%1$s";
/*** 公众号获取accessToken */
public static final String URL_GET_OAUTH2_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%1$s&secret=%2$s&code=%3$s&grant_type=authorization_code";
/*** 公众号通过模板发送订阅消息 */
public static final String MESSAGE_TEMPLATE_SEND = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%1$s";
/*** 公众号发送订阅消息 */
public static final String OFFICIAL_MESSAGE_SEND = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%1$s";
/** 创建二维码 */
public static final String QR_CODE_CREATE = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={}";
/**根据openId获取用户信息*/
public static final String USER_INFO = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=%1$s&openid=%2$s&lang=zh_CN";
/*** 获取临时票据api_ticket */
public static final String URL_GET_API_TICKET = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%1$s&type=jsapi";
/*** 小程序登录路径 */
public static final String MINI_PROGRAM_LOGIN = "https://api.weixin.qq.com/sns/jscode2session?appid=%1$s&secret=%2$s&js_code=%3$s&grant_type=%4$s";
/*** 通过网页授权和openId获取用户信息 */
public static final String URL_GET_OAUTH2_USER_INFO = "https://api.weixin.qq.com/sns/userinfo?access_token=%1$s&openid=%2$s";
/*** 获取小程序码A */
public static final String URL_GET_WX_CODE_A = "https://api.weixin.qq.com/wxa/getwxacode?access_token=%1$s";
/*** 获取小程序码B */
public static final String URL_GET_WX_CODE_B = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%1$s";
/*** 获取小程序码C */
public static final String URL_GET_WX_CODE_C = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%1$s";
/*** 小程序获取accessToken */
public static final String URL_GET_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%1$s&secret=%2$s";
/*** 小程序发送订阅消息 */
public static final String URL_SEND_SUBSCRIBE_MESSAGE = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%1$s";
/*** 小程序消息模板--审核结果通知 */
public static String MINI_MSG_AUDIT = "KCjeY59SAB77fBco0_TWPn52tJd43PJIsuQm-VOwVb4";
/*** 小程序消息模板--订单倒计时通知 */
public static String MINI_MSG_COUNT_DOWN = "L4kn558ytvmdBpLq6wTU-WY5RsfQUzVPQ8aH9sDMBjA";
/*** 小程序消息模板--订单结算通知 */
public static String MINI_MSG_SETTLEMENT = "q9JrGcjvoSXy5MqSPm00lOKlGyss-jjG920nw-U6JSI";
/*** 小程序消息模板--审核管理员接收审核通知 */
public static String MINI_MSG_ADMIN_AUDIT = "q0JOvt6PnovniJEB2Iv-dRu3KomVaIlMMCN5jPDJttE";
/*** 小程序登录路径内的type */
public static final String GRANT_TYPE = "authorization_code";
/*** redis内存储AccessToken的Key */
public static final String ACCESS_TOKEN = "tall_wx_access_token_";
/*** 机器人消息类型--文本 */
public static final String TEXT = "text";
/*** 机器人消息类型--markdown */
public static final String MARKDOWN = "markdown";
/*** 小程序appId */
public static final Map<String, String> APP_ID = new HashMap<>();
static {
//默认小程序
APP_ID.put("anyring", "wx356e01c7eb01d55d");
//tall3小程序
APP_ID.put("tall", "wxf72a76c2ea24a472");
//赛跑小程序
APP_ID.put("SP", "wx2ebb5cf926fe1ddb");
//数钱小程序
APP_ID.put("SQ", "wx55fa235267ca11e6");
//拔河小程序
APP_ID.put("BH", "wxd06d18fe7c75b498");
//健康码小程序
APP_ID.put("health", "wx2f9ef33e08053bbf");
//企业微信
APP_ID.put("enterprise", "wx808fa75921bd8f22");
}
/*** 小程序secret */
public static final Map<String, String> SECRET = new HashMap<>();
static {
//默认小程序
SECRET.put("anyring", "353033db85d4b5a35f05d1c0176a0cc6");
//tall3小程序
SECRET.put("tall", "5aa3fc421a149ec1e59a4a4f472e1223");
//赛跑小程序
SECRET.put("SP", "38e4425b8e3647015b439c6d38172b49");
//数钱小程序
SECRET.put("SQ", "d75a5a7538ff9c72f781738850817081");
//拔河小程序
SECRET.put("BH", "202ad7f3d95b0532948c667c468c9a56");
//健康码小程序
SECRET.put("health", "af90801c26bc177681b2c39a603605b9");
//企业微信
SECRET.put("enterprise", "8d2e95462bfeab363ee84776bc807859");
}
/**
* 小程序订阅消息类型
*/
public enum MiniMessageType {
/**
* 消息类型
*/
Audit(1, "审核结果通知"),
CountDown(2, "倒计时提醒通知"),
Settlement(3, "订单结算提醒"),
AdminAudit(4, "管理员收到的审核通知");
public int value;
public String phase;
MiniMessageType(int value, String thePhase) {
this.value = value;
this.phase = thePhase;
}
}
}

140
research-common/src/main/java/com/research/common/wechat/bean/MiniMessageTemplate.java

@ -0,0 +1,140 @@
package com.research.common.wechat.bean;
import cn.hutool.core.collection.CollectionUtil;
import lombok.Data;
import java.util.List;
/**
* @author
*/
@Data
public class MiniMessageTemplate {
@Data
public static class SubscribeEntity<T> {
private String touser;
private String template_id;
private String page;
private T data;
}
@Data
private static class CommonEntity {
private String value;
}
@Data
public static class AuditData {
public AuditData(List<String> params) {
if (CollectionUtil.isNotEmpty(params) && params.size() >= 2) {
thing7 = new CommonEntity();
character_string8 = new CommonEntity();
phrase2 = new CommonEntity();
thing9 = new CommonEntity();
thing7.setValue(params.get(0));
character_string8.setValue(params.get(1));
phrase2.setValue(params.get(2));
thing9.setValue(params.get(3));
}
}
//商品名称
private CommonEntity thing7;
//订单编号
private CommonEntity character_string8;
//审核结果
private CommonEntity phrase2;
//温馨提示
private CommonEntity thing9;
}
@Data
public static class CountDownData {
public CountDownData(List<String> params) {
if (CollectionUtil.isNotEmpty(params) && params.size() >= 2) {
thing1 = new CommonEntity();
character_string2 = new CommonEntity();
thing3 = new CommonEntity();
thing1.setValue(params.get(0));
character_string2.setValue(params.get(1));
thing3.setValue(params.get(2));
}
}
//商品名称
private CommonEntity thing1;
//订单编号
private CommonEntity character_string2;
//温馨提示
private CommonEntity thing3;
}
@Data
public static class SettlementData {
public SettlementData(List<String> params) {
if (CollectionUtil.isNotEmpty(params) && params.size() >= 2) {
thing1 = new CommonEntity();
character_string2 = new CommonEntity();
amount3 = new CommonEntity();
thing4 = new CommonEntity();
thing5 = new CommonEntity();
thing1.setValue(params.get(0));
character_string2.setValue(params.get(1));
amount3.setValue(params.get(2));
thing4.setValue(params.get(3));
thing5.setValue(params.get(4));
}
}
//商品名称
private CommonEntity thing1;
//订单编号
private CommonEntity character_string2;
//结算金额
private CommonEntity amount3;
//备注信息
private CommonEntity thing4;
//操作人员
private CommonEntity thing5;
}
@Data
public static class AdminAudit {
public AdminAudit(List<String> params) {
if (CollectionUtil.isNotEmpty(params) && params.size() >= 2) {
thing1 = new CommonEntity();
thing4 = new CommonEntity();
// time3 = new CommonEntity();
// thing6 = new CommonEntity();
thing1.setValue(params.get(0));
thing4.setValue(params.get(1));
// time3.setValue(params.get(2));
// thing6.setValue(params.get(3));
}
}
//申请类型
private CommonEntity thing1;
//申请人
private CommonEntity thing4;
// //申请类型
// private CommonEntity thing5;
// //申请人
// private CommonEntity thing2;
// //申请时间
// private CommonEntity time3;
// //备注
// private CommonEntity thing6;
}
}

14
research-common/src/main/java/com/research/common/wechat/bean/MiniProgramUser.java

@ -0,0 +1,14 @@
package com.research.common.wechat.bean;
import lombok.Data;
/**
* @author
*/
@Data
public class MiniProgramUser extends WxBaseEntity {
public String openid;
public String session_key;
public String unionid;
}

67
research-common/src/main/java/com/research/common/wechat/bean/WechatCode.java

@ -0,0 +1,67 @@
package com.research.common.wechat.bean;
import lombok.Data;
/**
* @author
*/
@Data
public class WechatCode {
/**
* 获取小程序码--方案A
*/
@Data
public static class WechatCodeA{
// 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;
public String path;
//二维码的宽度,单位 px,最小 280px,最大 1280px 默认430
public Integer width;
//默认false 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
public Boolean auto_color;
//auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
public LineColor line_color;
//默认false 是否需要透明底色,为 true 时,生成透明底色的小程序
public Boolean is_hyaline;
}
/**
* 获取小程序码--方案B
*/
@Data
public static class WechatCodeB{
//参数 --最大32个可见字符
public String scene;
//小程序地址
public String page;
//二维码的宽度,单位 px,最小 280px,最大 1280px 默认430
public Integer width;
//默认false 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
public Boolean auto_color;
//auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
public LineColor line_color;
//默认false 是否需要透明底色,为 true 时,生成透明底色的小程序
public Boolean is_hyaline;
}
/**
* rgb颜色
*/
@Data
public static class LineColor{
public String r;
public String g;
public String b;
}
/**
* 获取小程序码--方案C
*/
@Data
public static class WechatCodeC{
// 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;
public String path;
//二维码的宽度,单位 px,最小 280px,最大 1280px 默认430
public Integer width;
}
}

21
research-common/src/main/java/com/research/common/wechat/bean/WxAccessToken.java

@ -0,0 +1,21 @@
package com.research.common.wechat.bean;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author __zHangSan
*/
@Data
public class WxAccessToken extends WxBaseEntity {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private Long expiresIn;
/**
* 查询到token时添加单位
*/
@JsonIgnore
private Long createdAt;
}

12
research-common/src/main/java/com/research/common/wechat/bean/WxBaseEntity.java

@ -0,0 +1,12 @@
package com.research.common.wechat.bean;
import lombok.Data;
/**
* @author __zHangSan
*/
@Data
public class WxBaseEntity {
private Integer errcode;
private String errmsg;
}

15
research-common/src/main/java/com/research/common/wechat/bean/WxGetIp.java

@ -0,0 +1,15 @@
package com.research.common.wechat.bean;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* @author __zHangSan
*/
@Data
public class WxGetIp extends WxBaseEntity{
@JsonProperty("ipList")
private List<String> ip_list;
}

8
research-framework/src/main/java/com/research/framework/config/SecurityConfig.java

@ -2,6 +2,7 @@ package com.research.framework.config;
import com.research.framework.security.provider.AdminPhoneAuthenticationProvider;
import com.research.framework.security.provider.DmsUserAuthenticationProvider;
import com.research.framework.security.provider.WxmpAuthenticationProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -77,7 +78,7 @@ public class SecurityConfig
DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
daoAuthenticationProvider.setUserDetailsService(userDetailsService);
daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
return new ProviderManager(daoAuthenticationProvider, dmsUserAuthenticationProvider(), adminPhoneAuthenticationProvider());
return new ProviderManager(daoAuthenticationProvider, dmsUserAuthenticationProvider(), adminPhoneAuthenticationProvider(), wxmpAuthenticationProvider());
}
/**
@ -149,6 +150,11 @@ public class SecurityConfig
return new AdminPhoneAuthenticationProvider();
}
@Bean
public WxmpAuthenticationProvider wxmpAuthenticationProvider(){
return new WxmpAuthenticationProvider();
}
// @Override
// protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// //填报端认证

27
research-framework/src/main/java/com/research/framework/security/handle/LogoutSuccessHandlerImpl.java

@ -1,9 +1,20 @@
package com.research.framework.security.handle;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import com.research.common.constant.UserConstants;
import com.research.common.exception.base.BaseException;
import com.research.framework.datasource.DynamicDataSourceContextHolder;
import com.research.system.domain.po.SrvDataSource;
import com.research.system.mapper.SysUserMapper;
import com.research.system.service.ISysUserService;
import com.research.system.service.TmsTenantUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
@ -29,6 +40,10 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler
{
@Autowired
private TokenService tokenService;
@Autowired
private SysUserMapper userMapper;
@Resource
private TmsTenantUserService dmsLoginService;
/**
* 退出处理
@ -47,6 +62,18 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler
tokenService.delLoginUser(loginUser.getToken());
// 记录用户退出日志
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success")));
//清空该用户的openId
try {
String header = request.getHeader("clientType");
if(StrUtil.isNotEmpty(header) && header.equals("1")){
//根据组织ID切换数据源
SrvDataSource dataSource = dmsLoginService.getDataSourceByTenantId(loginUser.getTenantId());
DynamicDataSourceContextHolder.setDataSourceType(dataSource.getDataSourceKey());
userMapper.delUserOpenId(loginUser.getUserId());
}
}catch (Exception e){
}
}
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success(MessageUtils.message("user.logout.success"))));
}

42
research-framework/src/main/java/com/research/framework/security/provider/WxmpAuthenticationProvider.java

@ -0,0 +1,42 @@
package com.research.framework.security.provider;
import com.research.framework.security.token.DmsUserAuthenticationToken;
import com.research.framework.security.token.WxmpAuthenticationToken;
import com.research.framework.web.service.UserDetailsServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import javax.annotation.Resource;
import java.util.Collections;
@Slf4j
public class WxmpAuthenticationProvider implements AuthenticationProvider {
/**
* 用户输入用户名密码匹配主库dms_user租户用户表根据dms_user表中tenant_id租户ID字段匹配dms_tenant租户表中的id
* 如租户用户正常且租户正常数据源正常,则创建返回tokentoken中存用户信息组织信息数据源信息 数据源找不到或错误则异常
*/
@Resource
private UserDetailsServiceImpl userDetailsService;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
WxmpAuthenticationToken authenticationToken = (WxmpAuthenticationToken) authentication;
String exmpCode = (String) authenticationToken.getPrincipal();
//通过openId获取用户
log.info("通过code获取用户和openId:{}", exmpCode);
UserDetails userDetails = userDetailsService.loadUserByWxmpOpenId(exmpCode);
//返回用户信息
WxmpAuthenticationToken result = new WxmpAuthenticationToken(userDetails, Collections.emptyList());
result.setDetails(authentication.getDetails());
return result;
}
@Override
public boolean supports(Class<?> authentication) {
return (WxmpAuthenticationToken.class.isAssignableFrom(authentication));
}
}

62
research-framework/src/main/java/com/research/framework/security/token/WxmpAuthenticationToken.java

@ -0,0 +1,62 @@
package com.research.framework.security.token;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.SpringSecurityCoreVersion;
import java.util.Collection;
public class WxmpAuthenticationToken extends AbstractAuthenticationToken {
private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
private final Object principal;
private String credentials;
/**
* 准备登录时调用
* 此构造函数用来初始化未授信凭据.
*/
public WxmpAuthenticationToken(Object principal, String credentials) {
super(null);
this.principal = principal;
this.credentials = credentials;
setAuthenticated(false);
}
/**
* 登录成功时调用
* 此构函数用来初始化已授信凭据.
*/
public WxmpAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities) {
super(null);
this.principal = principal;
this.credentials = null;
super.setAuthenticated(true);
}
@Override
public Object getPrincipal() {
return principal;
}
@Override
public Object getCredentials() {
return credentials;
}
@Override
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
if (isAuthenticated) {
throw new IllegalArgumentException(
"Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead");
}
super.setAuthenticated(false);
}
@Override
public void eraseCredentials() {
super.eraseCredentials();
credentials = null;
}
}

62
research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java

@ -2,7 +2,12 @@ package com.research.framework.web.service;
import javax.annotation.Resource;
import cn.hutool.core.util.StrUtil;
import com.research.common.utils.SecurityUtils;
import com.research.common.wechat.ExternalService;
import com.research.common.wechat.bean.MiniProgramUser;
import com.research.framework.security.token.WxmpAuthenticationToken;
import com.research.system.domain.WxUser;
import com.research.system.service.SessionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@ -56,6 +61,8 @@ public class SysLoginService
private ISysConfigService configService;
@Resource
private SessionService sessionService;
@Resource
private ExternalService externalService;
/**
* 登录验证
*
@ -65,7 +72,7 @@ public class SysLoginService
* @param uuid 唯一标识
* @return 结果
*/
public String login(String username, String password, String code, String uuid)
public String login(String username, String password, String code, String uuid, String wxCode)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
@ -101,13 +108,27 @@ public class SysLoginService
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
//
try {
sessionService.queryNoSessionUser(loginUser.getUserId());
}catch (Exception e) {
e.printStackTrace();
// //添加会话
// try {
// sessionService.queryNoSessionUser(loginUser.getUserId());
// }catch (Exception e) {
// e.printStackTrace();
//
// }
//绑定微信
if(StrUtil.isNotEmpty(wxCode)){
try {
//通过code获取openId
MiniProgramUser wxmpUser = externalService.sendWxmpLoginRequest(wxCode);
if (StringUtils.isNotNull(wxmpUser)) {
//处理openId
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId());
}
} catch (Exception e) {
throw new ServiceException("绑定openId失败");
}
}
// 生成token
return tokenService.createToken(loginUser);
}
@ -239,4 +260,31 @@ public class SysLoginService
sysUser.setLoginDate(DateUtils.getNowDate());
userService.updateUserProfile(sysUser);
}
public WxUser.LoginResult loginByWxmp(String code) {
// 用户验证
Authentication authentication;
try {
WxmpAuthenticationToken authenticationToken = new WxmpAuthenticationToken(code, code);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用 loadUserByWxmpOpenId
authentication = authenticationManager.authenticate(authenticationToken);
} catch (Exception e) {
throw new ServiceException("小程序登录异常");
} finally {
AuthenticationContextHolder.clearContext();
}
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
if(loginUser == null){
throw new ServiceException("小程序登录异常");
}
WxUser.LoginResult result = new WxUser.LoginResult();
if(loginUser.getUser() != null){
recordLoginInfo(loginUser.getUserId());
String token = tokenService.createToken(loginUser);
result.setToken(token);
}
result.setOpenId(loginUser.getOpenId());
return result;
}
}

1
research-framework/src/main/java/com/research/framework/web/service/TokenService.java

@ -229,4 +229,5 @@ public class TokenService
{
return CacheConstants.LOGIN_TOKEN_KEY + uuid;
}
}

36
research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java

@ -1,7 +1,12 @@
package com.research.framework.web.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import com.research.common.core.domain.entity.SysRole;
import com.research.common.exception.base.BaseException;
import com.research.common.wechat.ExternalService;
import com.research.common.wechat.bean.MiniProgramUser;
import com.research.framework.datasource.DataSourceManager;
import com.research.framework.datasource.DynamicDataSourceContextHolder;
import com.research.system.domain.po.PrjProjInfo;
@ -27,6 +32,7 @@ import com.research.common.utils.StringUtils;
import com.research.system.service.ISysUserService;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Set;
@ -48,7 +54,8 @@ public class UserDetailsServiceImpl implements UserDetailsService
@Autowired
private SysPermissionService permissionService;
@Resource
private ExternalService externalService;
@Resource
private TmsLoginService dmsLoginService;
@Resource
@ -176,4 +183,31 @@ public class UserDetailsServiceImpl implements UserDetailsService
return createLoginUser(user, tenantId);
}
public UserDetails loadUserByWxmpOpenId(String wxmpCode) throws UsernameNotFoundException {
//通过code获取openId
MiniProgramUser wxmpUser = externalService.sendWxmpLoginRequest(wxmpCode);
if (StringUtils.isNull(wxmpUser)) {
throw new ServiceException("通过code获取openId失败");
}
log.info("通过code获取openId:{}", wxmpUser.getOpenid());
//2.根据openId查询用户信息
SysUser user = getUserByOpenId(wxmpUser.getOpenid());
//查询项目,获取租户id
List<PrjProjInfo> prjProjInfos = prjProjInfoMapper.selectByExample(new PrjProjInfoExample());
Long tenantId = 0L;
if (CollUtil.isNotEmpty(prjProjInfos)) {
tenantId = prjProjInfos.get(0).getTenantId();
}
if (StringUtils.isNull(user)) {
return new LoginUser(wxmpUser.getOpenid(),tenantId);
}else {
return new LoginUser(wxmpUser.getOpenid(),user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user),tenantId);
}
}
private SysUser getUserByOpenId(String openId) {
return userService.getUserByOpenId(openId);
}
}

25
research-framework/src/main/java/com/research/framework/web/service/WebTmsLoginService.java

@ -1,5 +1,6 @@
package com.research.framework.web.service;
import cn.hutool.core.util.StrUtil;
import com.research.common.constant.CacheConstants;
import com.research.common.constant.Constants;
import com.research.common.constant.UserConstants;
@ -14,6 +15,8 @@ import com.research.common.utils.DateUtils;
import com.research.common.utils.MessageUtils;
import com.research.common.utils.StringUtils;
import com.research.common.utils.ip.IpUtils;
import com.research.common.wechat.ExternalService;
import com.research.common.wechat.bean.MiniProgramUser;
import com.research.framework.manager.AsyncManager;
import com.research.framework.manager.factory.AsyncFactory;
import com.research.framework.security.context.AuthenticationContextHolder;
@ -23,7 +26,6 @@ import com.research.system.domain.vo.TmsLoginUserVo;
import com.research.system.service.ISysConfigService;
import com.research.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.constant.ErrorConstant;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@ -56,6 +58,9 @@ public class WebTmsLoginService
@Resource
private ISysConfigService configService;
@Resource
private ExternalService externalService;
/**
* 登录验证
*
@ -277,7 +282,7 @@ public class WebTmsLoginService
* @param phone
* @return
*/
public TmsLoginUserVo.Result loginByPhone(String phone, String smsCode) {
public TmsLoginUserVo.Result loginByPhone(String phone, String smsCode, String wxCode) {
log.info("phone:{}, {}", phone, smsCode);
//手机验证码是否正确
@ -321,13 +326,27 @@ public class WebTmsLoginService
AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
//绑定微信
if(StrUtil.isNotEmpty(wxCode)){
try {
//通过code获取openId
MiniProgramUser wxmpUser = externalService.sendWxmpLoginRequest(wxCode);
if (StringUtils.isNotNull(wxmpUser)) {
//处理openId
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId());
}
} catch (Exception e) {
throw new ServiceException("绑定openId失败");
}
}
TmsLoginUserVo.Result result = new TmsLoginUserVo.Result();
// 生成token
result.setToken(tokenService.createToken(loginUser));
result.setId(loginUser.getUserId());
if (loginUser.getUser() != null) {
result.setPhone(loginUser.getUser().getPhonenumber());
// result.setTemp(sysUser.getTemp());
}
return result;
}

2
research-generator/src/main/java/com/ruoyi/generator/controller/GenController.java

@ -66,7 +66,7 @@ public class GenController extends BaseController
/**
* 获取代码生成信息
*/
@PreAuthorize("@ss.hasPermi('tool:gen:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{tableId}")
public AjaxResult getInfo(@PathVariable Long tableId)
{

8
research-generator/src/main/resources/mbg.xml

@ -68,13 +68,13 @@
<!-- <table tableName="ach_achievement_category" domainObjectName="AchAchievementCategory" enableDeleteByExample="false"/>-->
<!-- <table tableName="fud_fund_record" domainObjectName="FudFundRecord" enableDeleteByExample="false"/>-->
<!-- <table tableName="kts_kt_group" domainObjectName="KtsKtGroup" enableDeleteByExample="false"/>-->
<table tableName="kts_kt_group_member" domainObjectName="KtsKtGroupMember" enableDeleteByExample="false"/>
<!-- <table tableName="kts_kt_group_member" domainObjectName="KtsKtGroupMember" enableDeleteByExample="false"/>-->
<!-- <table tableName="met_meeting_participant" domainObjectName="MetMeetingParticipant" enableDeleteByExample="false"/>-->
<!-- <table tableName="met_meeting_record" domainObjectName="MetMeetingRecord" enableDeleteByExample="false"/>-->
<!-- <table tableName="prj_proj_document" domainObjectName="PrjProjDocument" enableDeleteByExample="false"/>-->
<!-- <table tableName="prj_proj_info" domainObjectName="PrjProjInfo" enableDeleteByExample="false"/>-->
<!-- <table tableName="prj_proj_org" domainObjectName="PrjProjOrg" enableDeleteByExample="false"/>-->
<!-- <table tableName="kts_kt_group_member_aduit" domainObjectName="KtsKtGroupMemberAduit" enableDeleteByExample="false"/>-->
<table tableName="kts_kt_group_member_aduit" domainObjectName="KtsKtGroupMemberAduit" enableDeleteByExample="false"/>
<!-- <table tableName="srv_message" domainObjectName="SrvMessage" enableDeleteByExample="false"/>-->
<!-- <table tableName="shs_ckwx_category" domainObjectName="ShsCkwxCategory" enableDeleteByExample="false"/>-->
<!-- <table tableName="shs_ckwx_info" domainObjectName="ShsCkwxInfo" enableDeleteByExample="false"/>-->
@ -99,6 +99,10 @@
<!-- <table tableName="kt_research_content" domainObjectName="KtResearchContent" enableDeleteByExample="false"/>-->
<!-- <table tableName="kt_expected_outcomes" domainObjectName="KtExpectedOutcomes" enableDeleteByExample="false"/>-->
<!-- <table tableName="kt_config" domainObjectName="KtConfig" enableDeleteByExample="false"/>-->
<table tableName="tas_task" domainObjectName="TasTask" enableDeleteByExample="false"/>
<!-- <table tableName="tas_task_member" domainObjectName="TasTaskMember" enableDeleteByExample="false"/>-->
<!-- <table tableName="tas_deliverable" domainObjectName="TasDeliverable" enableDeleteByExample="false"/>-->
<!-- <table tableName="com_file" domainObjectName="ComFile" enableDeleteByExample="false"/>-->
<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />

2
research-quartz/src/main/java/com/research/quartz/controller/SysJobController.java

@ -67,7 +67,7 @@ public class SysJobController extends BaseController
/**
* 获取定时任务详细信息
*/
@PreAuthorize("@ss.hasPermi('monitor:job:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{jobId}")
public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
{

2
research-quartz/src/main/java/com/research/quartz/controller/SysJobLogController.java

@ -59,7 +59,7 @@ public class SysJobLogController extends BaseController
/**
* 根据调度编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('monitor:job:query')")
//@PreAuthorize("@ss.hasPermi('[^']*:query')")
@GetMapping(value = "/{jobLogId}")
public AjaxResult getInfo(@PathVariable Long jobLogId)
{

23
research-system/src/main/java/com/research/system/domain/WxUser.java

@ -0,0 +1,23 @@
package com.research.system.domain;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zy
* @date 2026/4/17 9:44
*/
@Data
public class WxUser {
@Data
@ApiModel("微信登录返回结果")
public static class LoginResult{
@ApiModelProperty("openId")
private String openId;
@ApiModelProperty("token")
private String token;
}
}

17
research-system/src/main/java/com/research/system/domain/dto/GroupDto.java

@ -121,7 +121,7 @@ public class GroupDto {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date memberBirth;
private List<String> type;
private String type;
private Byte category;
@ -143,6 +143,8 @@ public class GroupDto {
private Long projOrgId;
private Long orgId;
private Long parentKtId;
private String ktGroupName;
@ -166,12 +168,12 @@ public class GroupDto {
@ApiModelProperty("在读状态(0在读硕士、1在读博士、2在读博士后)")
private Byte readingStatus;
public String getType() {
if (CollUtil.isNotEmpty(type)) {
return type.stream().collect(Collectors.joining(","));
}
return null;
}
// public String getType() {
// if (CollUtil.isNotEmpty(type)) {
// return type.stream().collect(Collectors.joining(","));
// }
// return null;
// }
}
@Data
@ -219,6 +221,7 @@ public class GroupDto {
private Long id;
private Long groupId;
private String outcomes;
private String content;
private Byte status;
}
}

128
research-system/src/main/java/com/research/system/domain/dto/MemberAduitDto.java

@ -19,78 +19,110 @@ public class MemberAduitDto {
@Data
public static class Register {
private Long id;
private Long userId;
//确定没有用的
// @ApiModelProperty(value = "用户ID(关联系统用户表)", example = "1001")
// private Long userId;
// @ApiModelProperty(value = "部门ID", example = "101")
// private Long deptId;
// @ApiModelProperty(value = "角色ID列表", example = "[2,3]")
// private List<Long> roleIdList;
// @ApiModelProperty(value = "排序号", example = "1")
// private Integer sort;
// @ApiModelProperty(value = "审核状态", notes = "0-待审核,1-审核通过,2-审核拒绝", example = "0")
// private Byte auditStatus;
// @ApiModelProperty(value = "成员状态", notes = "0-禁用,1-正常", example = "1")
// private Byte memberStatus;
// //前端没传,后端也没处理
// @ApiModelProperty(value = "是否确认添加", notes = "0-不确认(如用户表已有该手机号则报错),1-确认添加", example = "1")
// private Byte confirm;
// @ApiModelProperty(value = "课题组排序", example = "1")
// private Integer ktGroupSort;
// @ApiModelProperty(value = "负责人手机号", example = "13800138000")
// private String phone;
// @ApiModelProperty(value = "负责人姓名", example = "李四")
// private String name;
//可能没有用的,前端没传
@ApiModelProperty(value = "父级成员ID(上级导师/负责人)", example = "1001")
private String parentMemberId;
@ApiModelProperty(value = "成员出生日期", example = "1990-01-01")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date memberBirth;
//有用的
@ApiModelProperty(value = "用户名", example = "zhangsan")
private String username;
@ApiModelProperty(value = "密码", notes = "8-20位,需包含数字、字母、特殊字符")
private String password;
private Long deptId;
private List<Long> roleIdList;
@ApiModelProperty(value = "成员类别", notes = "0-工作人员,1-学生", example = "0")
private Byte category;
@ApiModelProperty(value = "是否是合作单位负责人", notes = "0否 1是")
private String type;
@ApiModelProperty(value = "项目ID", example = "1001")
private Long projId;
@ApiModelProperty(value = "所属单位ID", required = true, example = "1001")
private Long projOrgId;
@ApiModelProperty(value = "课题组ID(非必填)", example = "1001")
private Long ktGroupId;
private String parentMemberId;
@ApiModelProperty(value = "成员姓名", required = true, example = "张三")
private String memberName;
@ApiModelProperty(value = "成员手机号", required = true, example = "13800138000")
private String memberPhone;
@ApiModelProperty(value = "成员邮箱", required = true, example = "zhangsan@example.com")
private String memberEmail;
@ApiModelProperty(value = "成员性别", notes = "0-女,1-男,2-未知", example = "1")
private Byte memberGender;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date memberBirth;
@ApiModelProperty("成员类型 0负责人 1参与者 2指导老师 3导师")
private List<String> type;
private Byte category;
@ApiModelProperty(value = "学历 5硕士 6博士 7博士后", notes = "工作人员时必填", example = "1")
private Integer qualification;
@ApiModelProperty(value = "职称", notes = "多个用逗号分隔", example = "1,2")
private String title;
private Integer sort;
@ApiModelProperty(value = "个人简介/研究内容")
private String intro;
private Byte auditStatus;
private Byte memberStatus;
@ApiModelProperty("0不确认,如用户表已有该手机号信息,则报错提示 1确认添加")
private Byte confirm;
private Long projId;
private Long projOrgId;
private Long parentKtId;
//保存,审核时需要,添加课题组
@ApiModelProperty(value = "课题组名称", notes = "新增课题组时必填", example = "人工智能课题组")
private String ktGroupName;
private Integer ktGroupSort;
@ApiModelProperty(value = "课题组简介/研究内容", example = "本课题组主要研究方向...")
private String ktGroupIntro;
@ApiModelProperty(value = "上级课题组ID", example = "1001")
private Long parentKtId;
@ApiModelProperty("负责人手机号")
private String phone;
@ApiModelProperty("负责人")
private String name;
public String getType() {
if (CollUtil.isNotEmpty(type)) {
return type.stream().collect(Collectors.joining(","));
}
return null;
}
@ApiModelProperty(value = "入学时间", example = "2020-01-01")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date enrollmentTime;
@ApiModelProperty(value = "毕业时间", example = "2024-01-01")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date graduationTime;
@ApiModelProperty("在读状态 0在读硕士 1在读博士 2在读博士后 ")
private Byte readingStatus;
// @ApiModelProperty(value = "微信小程序的openId", example = "1001")
// private String openId;
// /**
// * 获取成员类型字符串(多个类型用逗号拼接)
// *
// * @return 逗号分隔的类型字符串,如 "0,1,2"
// */
// public String getType() {
// if (CollUtil.isNotEmpty(type)) {
// return type.stream().collect(Collectors.joining(","));
// }
// return null;
// }
}
@Data
public static class Aduit{
@ApiModelProperty(value = "成员ID", example = "1001")
private Long id;
@ApiModelProperty(value = "审核状态", notes = "0未审核 1审核通过 2审核拒绝", example = "0")
private Byte status;
@ApiModelProperty(value = "审核结果信息,没用到")
private String message;
}

2
research-system/src/main/java/com/research/system/domain/dto/ProProgressDto.java

@ -18,6 +18,8 @@ public class ProProgressDto {
@Data
public static class Query {
private Long projId;
private String orgName;
}
@Data

2
research-system/src/main/java/com/research/system/domain/dto/SessionDto.java

@ -34,6 +34,8 @@ public class SessionDto {
public static class SendMessage{
@ApiModelProperty("会话id")
private Long sessionId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("消息内容类型 0文本 1文件 2图片 10X成果(论文专利等) 20X共享(仪器、参考文献、试验方法等")

10
research-system/src/main/java/com/research/system/domain/dto/ShsCkwxDto.java

@ -3,6 +3,7 @@ package com.research.system.domain.dto;
import cn.hutool.core.collection.CollUtil;
import com.research.system.domain.po.ShsCkwxCategory;
import com.research.system.domain.po.ShsCkwxInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ -18,10 +19,15 @@ public class ShsCkwxDto {
@Data
public static class Query {
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "所属单位")
private Long uploaderOrg;
@ApiModelProperty(value = "")
private Long categoryId;
private String keyword;
@ApiModelProperty(value = "关键词")
private String keywords;
}
@Data

5
research-system/src/main/java/com/research/system/domain/dto/ShsResDeviceDto.java

@ -1,5 +1,6 @@
package com.research.system.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -24,7 +25,8 @@ public class ShsResDeviceDto {
private Long platformId;
private Long projOrgId;
@ApiModelProperty("仪器名")
private String deviceName;
private String productName;
}
@Data
@ -39,6 +41,7 @@ public class ShsResDeviceDto {
private String deviceSn;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date purchaseDate;
private Date networkingDate;

10
research-system/src/main/java/com/research/system/domain/dto/ShsSyffCategoryDto.java

@ -5,6 +5,7 @@ import com.research.system.domain.po.ShsCkwxCategory;
import com.research.system.domain.po.ShsSyffCategory;
import com.research.system.domain.po.ShsSyffInfo;
import com.research.system.domain.po.ShsSyffInfoWithBLOBs;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@ -19,10 +20,11 @@ public class ShsSyffCategoryDto {
@Data
public static class Query{
private String categoryCode;
private String categoryName;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "code")
private String code;
@ApiModelProperty(value = "分类id")
private Long categoryId;
}

229
research-system/src/main/java/com/research/system/domain/dto/TaskDto.java

@ -1,162 +1,191 @@
package com.research.system.domain.dto;
import cn.hutool.core.collection.CollectionUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.po.TaskDeliverable;
import com.research.system.domain.po.TaskExecutor;
import com.research.system.domain.po.TaskList;
import com.research.system.domain.vo.TaskVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Author zzc
* @Package com.research.system.domain.dto
* @Date 2025/8/17 15:49
* @description:
*/
@Data
public class TaskDto {
@Data
public static class QueryTask{
private String taskName;
@ApiModelProperty("日期查询 0全部 1今日 2本周 3本月")
private Integer dateType;
@ApiModelProperty("任务状态 0全部 1未完成 2已完成 3待审核")
private Integer completedStatus;
private Long groupId;
private Date startTime;
private Date endTime;
@ApiModelProperty("是否我的任务 0全部 1我的")
private Byte isMine;
private Long userId;
// private Long getUserId(){
// return SecurityUtils.getUserId();
// }
private String getUserName(){
return SecurityUtils.getUsername();
}
}
@Data
public static class QueryDetail{
private Long id;
}
@ApiModel("创建任务")
public static class CreateTask {
@ApiModelProperty("课题ID")
@NotNull(message = "课题ID不能为空")
private Long ktGroupId;
@Data
public static class AddTask{
private Long id;
@ApiModelProperty("合作单位ID")
private Long projOrgId;
@ApiModelProperty("项目ID")
private Long projId;
private Long projOrgId;
@ApiModelProperty("任务名称")
@NotBlank(message = "任务名称不能为空")
private String taskName;
private Long ktGroupId;
@ApiModelProperty("任务说明")
@NotBlank(message = "任务说明不能为空")
private String taskDescription;
private String taskName;
@ApiModelProperty("优先级:1-低 2-中 3-高")
@NotNull(message = "优先级不能为空")
private Byte priority;
private String taskType;
@ApiModelProperty("任务类型:1-单人任务 2-多人协作任务")
@NotNull(message = "任务类型不能为空")
private Byte taskType;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date cycleStart;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date cycleEnd;
@ApiModelProperty("应交付物描述")
private String description;
private String cyclePeriod;
@ApiModelProperty("负责人ID列表")
@NotNull(message = "负责人不能为空")
private List<Long> memberIds;
private String generationCycle;
@ApiModelProperty("截止时间")
private String endTime;
private Integer batchSize;
@ApiModelProperty("应交付物")
private List<String> requiredDeliverable;
}
private Integer parentId;
@Data
@ApiModel("修改任务")
public static class UpdateTask {
@ApiModelProperty("任务ID")
@NotNull(message = "任务ID不能为空")
private Long taskMemberId;
private String relatedProject;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endTime;
@ApiModelProperty("任务名称")
private String taskName;
private String initiator;
@ApiModelProperty("任务说明")
private String taskDescription;
@ApiModelProperty("优先级:1-低 2-中 3-高")
private Integer priority;
private Byte status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@ApiModelProperty("截止时间")
private String endTime;
@ApiModelProperty("应交付物描述")
private String description;
private List<AddExecutor> executorList;
@ApiModelProperty("应交付物")
private List<String> deliverableList;
public String getDeliverableList() {
if (CollectionUtil.isNotEmpty(deliverableList)) {
StringBuilder sb = new StringBuilder();
for (String deliverable : deliverableList) {
sb.append(deliverable).append(",");
}
return sb.toString();
}
return null;
}
private List<String> requiredDeliverable;
}
@Data
public static class QueryExecutor{
@ApiModel("批量删除任务")
public static class BatchDeleteTask {
@ApiModelProperty("任务ID列表")
@NotNull(message = "任务ID列表不能为空")
private List<Long> taskMemberIds;
}
@Data
public static class AddExecutor{
private Long id;
@ApiModel("查询任务列表")
public static class QueryTaskList {
@ApiModelProperty("课题组ID")
private Long ktGroupId;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务负责人ID")
private Long memberId;
private Long taskId;
@ApiModelProperty("优先级:1-低 2-中 3-高")
private Integer priority;
@ApiModelProperty("截止时间开始")
private String startEndTime;
@ApiModelProperty("截止时间结束")
private String endEndTime;
@ApiModelProperty("完成状态:0-未开始 1-进行中 2-已完成")
private Integer taskStatus;
private Long executorId;
@ApiModelProperty("审核状态:0-待审核 1-审核通过 2-审核驳回")
private Integer auditStatus;
@ApiModelProperty("任务类型:0-我创建的 1-分配给我的")
@NotNull(message = "任务类型不能为空")
private Integer taskType;
}
@Data
public static class QueryDeliverable{
private Long taskId;
@ApiModel("查询交付物列表")
public static class QueryDeliverableList {
@ApiModelProperty("任务ID")
@NotNull(message = "任务ID不能为空")
private Long taskMemberId;
}
@Data
public static class AddDeliverable{
private Long id;
@ApiModel("提交交付物")
public static class SubmitDeliverable {
@ApiModelProperty("任务ID")
@NotNull(message = "任务ID不能为空")
private Long taskMemberId;
private String taskId;
@ApiModelProperty("交付物说明")
private String description;
private String deliverableName;
@ApiModelProperty("文件ID列表")
private List<String> fileUrls;
}
private String deliverableUrl;
@Data
@ApiModel("审核任务")
public static class AuditTask {
@ApiModelProperty("任务ID")
@NotNull(message = "任务ID不能为空")
private Long taskMemberId;
private String deliveryInstructions;
private Byte deliveryStatus;
@ApiModelProperty("审核状态:1-审核通过 2-审核驳回")
@NotNull(message = "审核状态不能为空")
private Integer auditStatus;
@ApiModelProperty("驳回原因")
private String rejectReason;
}
@Data
@ApiModel("获取课题组成员")
public static class GetGroupMembers {
@ApiModelProperty("课题组ID")
private Long ktGroupId;
private String submitterAccount;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date submissionTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String reviewerAccount;
private List<Long> ktGroupIds = new ArrayList<>();
private Date reviewTime;
@ApiModelProperty("成员姓名")
private String memberName;
}
@Data
public static class AduitDeliverable{
@ApiModelProperty("任务ID")
@NotNull(message = "任务ID不能为空")
private Long taskId;
@NotNull(message = "交付物ID不能为空")
@ApiModel("审核交付物")
public static class AuditDeliverable {
@ApiModelProperty("交付物ID")
@NotNull(message = "交付物ID不能为空")
private Long deliverableId;
@ApiModelProperty("审核状态:1-审核通过 2-审核驳回")
@NotNull(message = "审核状态不能为空")
@ApiModelProperty("审核状态 0未审核 1通过 2未通过")
private Byte status;
private Integer auditStatus;
@ApiModelProperty("驳回原因")
private String rejectReason;
}
}

150
research-system/src/main/java/com/research/system/domain/po/ComFile.java

@ -0,0 +1,150 @@
package com.research.system.domain.po;
import java.io.Serializable;
import java.util.Date;
public class ComFile implements Serializable {
private Long id;
private String fileName;
private String filePath;
private Long fileSize;
private String fileType;
private Long relateId;
private String relateType;
private Byte delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName == null ? null : fileName.trim();
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath == null ? null : filePath.trim();
}
public Long getFileSize() {
return fileSize;
}
public void setFileSize(Long fileSize) {
this.fileSize = fileSize;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType == null ? null : fileType.trim();
}
public Long getRelateId() {
return relateId;
}
public void setRelateId(Long relateId) {
this.relateId = relateId;
}
public String getRelateType() {
return relateType;
}
public void setRelateType(String relateType) {
this.relateType = relateType == null ? null : relateType.trim();
}
public Byte getDelFlag() {
return delFlag;
}
public void setDelFlag(Byte delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy == null ? null : createBy.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy == null ? null : updateBy.trim();
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", fileName=").append(fileName);
sb.append(", filePath=").append(filePath);
sb.append(", fileSize=").append(fileSize);
sb.append(", fileType=").append(fileType);
sb.append(", relateId=").append(relateId);
sb.append(", relateType=").append(relateType);
sb.append(", delFlag=").append(delFlag);
sb.append(", createBy=").append(createBy);
sb.append(", createTime=").append(createTime);
sb.append(", updateBy=").append(updateBy);
sb.append(", updateTime=").append(updateTime);
sb.append("]");
return sb.toString();
}
}

981
research-system/src/main/java/com/research/system/domain/po/ComFileExample.java

@ -0,0 +1,981 @@
package com.research.system.domain.po;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ComFileExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public ComFileExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andFileNameIsNull() {
addCriterion("file_name is null");
return (Criteria) this;
}
public Criteria andFileNameIsNotNull() {
addCriterion("file_name is not null");
return (Criteria) this;
}
public Criteria andFileNameEqualTo(String value) {
addCriterion("file_name =", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameNotEqualTo(String value) {
addCriterion("file_name <>", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameGreaterThan(String value) {
addCriterion("file_name >", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameGreaterThanOrEqualTo(String value) {
addCriterion("file_name >=", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameLessThan(String value) {
addCriterion("file_name <", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameLessThanOrEqualTo(String value) {
addCriterion("file_name <=", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameLike(String value) {
addCriterion("file_name like", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameNotLike(String value) {
addCriterion("file_name not like", value, "fileName");
return (Criteria) this;
}
public Criteria andFileNameIn(List<String> values) {
addCriterion("file_name in", values, "fileName");
return (Criteria) this;
}
public Criteria andFileNameNotIn(List<String> values) {
addCriterion("file_name not in", values, "fileName");
return (Criteria) this;
}
public Criteria andFileNameBetween(String value1, String value2) {
addCriterion("file_name between", value1, value2, "fileName");
return (Criteria) this;
}
public Criteria andFileNameNotBetween(String value1, String value2) {
addCriterion("file_name not between", value1, value2, "fileName");
return (Criteria) this;
}
public Criteria andFilePathIsNull() {
addCriterion("file_path is null");
return (Criteria) this;
}
public Criteria andFilePathIsNotNull() {
addCriterion("file_path is not null");
return (Criteria) this;
}
public Criteria andFilePathEqualTo(String value) {
addCriterion("file_path =", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathNotEqualTo(String value) {
addCriterion("file_path <>", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathGreaterThan(String value) {
addCriterion("file_path >", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathGreaterThanOrEqualTo(String value) {
addCriterion("file_path >=", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathLessThan(String value) {
addCriterion("file_path <", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathLessThanOrEqualTo(String value) {
addCriterion("file_path <=", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathLike(String value) {
addCriterion("file_path like", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathNotLike(String value) {
addCriterion("file_path not like", value, "filePath");
return (Criteria) this;
}
public Criteria andFilePathIn(List<String> values) {
addCriterion("file_path in", values, "filePath");
return (Criteria) this;
}
public Criteria andFilePathNotIn(List<String> values) {
addCriterion("file_path not in", values, "filePath");
return (Criteria) this;
}
public Criteria andFilePathBetween(String value1, String value2) {
addCriterion("file_path between", value1, value2, "filePath");
return (Criteria) this;
}
public Criteria andFilePathNotBetween(String value1, String value2) {
addCriterion("file_path not between", value1, value2, "filePath");
return (Criteria) this;
}
public Criteria andFileSizeIsNull() {
addCriterion("file_size is null");
return (Criteria) this;
}
public Criteria andFileSizeIsNotNull() {
addCriterion("file_size is not null");
return (Criteria) this;
}
public Criteria andFileSizeEqualTo(Long value) {
addCriterion("file_size =", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeNotEqualTo(Long value) {
addCriterion("file_size <>", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeGreaterThan(Long value) {
addCriterion("file_size >", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeGreaterThanOrEqualTo(Long value) {
addCriterion("file_size >=", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeLessThan(Long value) {
addCriterion("file_size <", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeLessThanOrEqualTo(Long value) {
addCriterion("file_size <=", value, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeIn(List<Long> values) {
addCriterion("file_size in", values, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeNotIn(List<Long> values) {
addCriterion("file_size not in", values, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeBetween(Long value1, Long value2) {
addCriterion("file_size between", value1, value2, "fileSize");
return (Criteria) this;
}
public Criteria andFileSizeNotBetween(Long value1, Long value2) {
addCriterion("file_size not between", value1, value2, "fileSize");
return (Criteria) this;
}
public Criteria andFileTypeIsNull() {
addCriterion("file_type is null");
return (Criteria) this;
}
public Criteria andFileTypeIsNotNull() {
addCriterion("file_type is not null");
return (Criteria) this;
}
public Criteria andFileTypeEqualTo(String value) {
addCriterion("file_type =", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeNotEqualTo(String value) {
addCriterion("file_type <>", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeGreaterThan(String value) {
addCriterion("file_type >", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeGreaterThanOrEqualTo(String value) {
addCriterion("file_type >=", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeLessThan(String value) {
addCriterion("file_type <", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeLessThanOrEqualTo(String value) {
addCriterion("file_type <=", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeLike(String value) {
addCriterion("file_type like", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeNotLike(String value) {
addCriterion("file_type not like", value, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeIn(List<String> values) {
addCriterion("file_type in", values, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeNotIn(List<String> values) {
addCriterion("file_type not in", values, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeBetween(String value1, String value2) {
addCriterion("file_type between", value1, value2, "fileType");
return (Criteria) this;
}
public Criteria andFileTypeNotBetween(String value1, String value2) {
addCriterion("file_type not between", value1, value2, "fileType");
return (Criteria) this;
}
public Criteria andRelateIdIsNull() {
addCriterion("relate_id is null");
return (Criteria) this;
}
public Criteria andRelateIdIsNotNull() {
addCriterion("relate_id is not null");
return (Criteria) this;
}
public Criteria andRelateIdEqualTo(Long value) {
addCriterion("relate_id =", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdNotEqualTo(Long value) {
addCriterion("relate_id <>", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdGreaterThan(Long value) {
addCriterion("relate_id >", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdGreaterThanOrEqualTo(Long value) {
addCriterion("relate_id >=", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdLessThan(Long value) {
addCriterion("relate_id <", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdLessThanOrEqualTo(Long value) {
addCriterion("relate_id <=", value, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdIn(List<Long> values) {
addCriterion("relate_id in", values, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdNotIn(List<Long> values) {
addCriterion("relate_id not in", values, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdBetween(Long value1, Long value2) {
addCriterion("relate_id between", value1, value2, "relateId");
return (Criteria) this;
}
public Criteria andRelateIdNotBetween(Long value1, Long value2) {
addCriterion("relate_id not between", value1, value2, "relateId");
return (Criteria) this;
}
public Criteria andRelateTypeIsNull() {
addCriterion("relate_type is null");
return (Criteria) this;
}
public Criteria andRelateTypeIsNotNull() {
addCriterion("relate_type is not null");
return (Criteria) this;
}
public Criteria andRelateTypeEqualTo(String value) {
addCriterion("relate_type =", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeNotEqualTo(String value) {
addCriterion("relate_type <>", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeGreaterThan(String value) {
addCriterion("relate_type >", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeGreaterThanOrEqualTo(String value) {
addCriterion("relate_type >=", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeLessThan(String value) {
addCriterion("relate_type <", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeLessThanOrEqualTo(String value) {
addCriterion("relate_type <=", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeLike(String value) {
addCriterion("relate_type like", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeNotLike(String value) {
addCriterion("relate_type not like", value, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeIn(List<String> values) {
addCriterion("relate_type in", values, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeNotIn(List<String> values) {
addCriterion("relate_type not in", values, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeBetween(String value1, String value2) {
addCriterion("relate_type between", value1, value2, "relateType");
return (Criteria) this;
}
public Criteria andRelateTypeNotBetween(String value1, String value2) {
addCriterion("relate_type not between", value1, value2, "relateType");
return (Criteria) this;
}
public Criteria andDelFlagIsNull() {
addCriterion("del_flag is null");
return (Criteria) this;
}
public Criteria andDelFlagIsNotNull() {
addCriterion("del_flag is not null");
return (Criteria) this;
}
public Criteria andDelFlagEqualTo(Byte value) {
addCriterion("del_flag =", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotEqualTo(Byte value) {
addCriterion("del_flag <>", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagGreaterThan(Byte value) {
addCriterion("del_flag >", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
addCriterion("del_flag >=", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagLessThan(Byte value) {
addCriterion("del_flag <", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
addCriterion("del_flag <=", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagIn(List<Byte> values) {
addCriterion("del_flag in", values, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotIn(List<Byte> values) {
addCriterion("del_flag not in", values, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagBetween(Byte value1, Byte value2) {
addCriterion("del_flag between", value1, value2, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
addCriterion("del_flag not between", value1, value2, "delFlag");
return (Criteria) this;
}
public Criteria andCreateByIsNull() {
addCriterion("create_by is null");
return (Criteria) this;
}
public Criteria andCreateByIsNotNull() {
addCriterion("create_by is not null");
return (Criteria) this;
}
public Criteria andCreateByEqualTo(String value) {
addCriterion("create_by =", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotEqualTo(String value) {
addCriterion("create_by <>", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThan(String value) {
addCriterion("create_by >", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThanOrEqualTo(String value) {
addCriterion("create_by >=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThan(String value) {
addCriterion("create_by <", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThanOrEqualTo(String value) {
addCriterion("create_by <=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLike(String value) {
addCriterion("create_by like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotLike(String value) {
addCriterion("create_by not like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByIn(List<String> values) {
addCriterion("create_by in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotIn(List<String> values) {
addCriterion("create_by not in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByBetween(String value1, String value2) {
addCriterion("create_by between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotBetween(String value1, String value2) {
addCriterion("create_by not between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andCreateTimeIsNull() {
addCriterion("create_time is null");
return (Criteria) this;
}
public Criteria andCreateTimeIsNotNull() {
addCriterion("create_time is not null");
return (Criteria) this;
}
public Criteria andCreateTimeEqualTo(Date value) {
addCriterion("create_time =", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotEqualTo(Date value) {
addCriterion("create_time <>", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThan(Date value) {
addCriterion("create_time >", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
addCriterion("create_time >=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThan(Date value) {
addCriterion("create_time <", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
addCriterion("create_time <=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeIn(List<Date> values) {
addCriterion("create_time in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotIn(List<Date> values) {
addCriterion("create_time not in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeBetween(Date value1, Date value2) {
addCriterion("create_time between", value1, value2, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
addCriterion("create_time not between", value1, value2, "createTime");
return (Criteria) this;
}
public Criteria andUpdateByIsNull() {
addCriterion("update_by is null");
return (Criteria) this;
}
public Criteria andUpdateByIsNotNull() {
addCriterion("update_by is not null");
return (Criteria) this;
}
public Criteria andUpdateByEqualTo(String value) {
addCriterion("update_by =", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotEqualTo(String value) {
addCriterion("update_by <>", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByGreaterThan(String value) {
addCriterion("update_by >", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
addCriterion("update_by >=", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLessThan(String value) {
addCriterion("update_by <", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLessThanOrEqualTo(String value) {
addCriterion("update_by <=", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLike(String value) {
addCriterion("update_by like", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotLike(String value) {
addCriterion("update_by not like", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByIn(List<String> values) {
addCriterion("update_by in", values, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotIn(List<String> values) {
addCriterion("update_by not in", values, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByBetween(String value1, String value2) {
addCriterion("update_by between", value1, value2, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotBetween(String value1, String value2) {
addCriterion("update_by not between", value1, value2, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNull() {
addCriterion("update_time is null");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNotNull() {
addCriterion("update_time is not null");
return (Criteria) this;
}
public Criteria andUpdateTimeEqualTo(Date value) {
addCriterion("update_time =", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotEqualTo(Date value) {
addCriterion("update_time <>", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThan(Date value) {
addCriterion("update_time >", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
addCriterion("update_time >=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThan(Date value) {
addCriterion("update_time <", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
addCriterion("update_time <=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeIn(List<Date> values) {
addCriterion("update_time in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotIn(List<Date> values) {
addCriterion("update_time not in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeBetween(Date value1, Date value2) {
addCriterion("update_time between", value1, value2, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
addCriterion("update_time not between", value1, value2, "updateTime");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

22
research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMember.java

@ -8,8 +8,6 @@ public class KtsKtGroupMember implements Serializable {
private Long userId;
private Long projOrgId;
private Long ktGroupId;
private String parentMemberId;
@ -58,6 +56,8 @@ public class KtsKtGroupMember implements Serializable {
private Byte readingStatus;
private Long projOrgId;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -76,14 +76,6 @@ public class KtsKtGroupMember implements Serializable {
this.userId = userId;
}
public Long getProjOrgId() {
return projOrgId;
}
public void setProjOrgId(Long projOrgId) {
this.projOrgId = projOrgId;
}
public Long getKtGroupId() {
return ktGroupId;
}
@ -276,6 +268,14 @@ public class KtsKtGroupMember implements Serializable {
this.readingStatus = readingStatus;
}
public Long getProjOrgId() {
return projOrgId;
}
public void setProjOrgId(Long projOrgId) {
this.projOrgId = projOrgId;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -284,7 +284,6 @@ public class KtsKtGroupMember implements Serializable {
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", userId=").append(userId);
sb.append(", projOrgId=").append(projOrgId);
sb.append(", ktGroupId=").append(ktGroupId);
sb.append(", parentMemberId=").append(parentMemberId);
sb.append(", memberName=").append(memberName);
@ -309,6 +308,7 @@ public class KtsKtGroupMember implements Serializable {
sb.append(", enrollTime=").append(enrollTime);
sb.append(", graduationTime=").append(graduationTime);
sb.append(", readingStatus=").append(readingStatus);
sb.append(", projOrgId=").append(projOrgId);
sb.append("]");
return sb.toString();
}

44
research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberAduit.java

@ -6,6 +6,8 @@ import java.util.Date;
public class KtsKtGroupMemberAduit implements Serializable {
private Long id;
private String openId;
private Byte category;
private Long deptId;
@ -68,6 +70,12 @@ public class KtsKtGroupMemberAduit implements Serializable {
private String ktGroupName;
private Date enrollTime;
private Date graduationTime;
private Byte readingStatus;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -78,6 +86,14 @@ public class KtsKtGroupMemberAduit implements Serializable {
this.id = id;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId == null ? null : openId.trim();
}
public Byte getCategory() {
return category;
}
@ -326,6 +342,30 @@ public class KtsKtGroupMemberAduit implements Serializable {
this.ktGroupName = ktGroupName == null ? null : ktGroupName.trim();
}
public Date getEnrollTime() {
return enrollTime;
}
public void setEnrollTime(Date enrollTime) {
this.enrollTime = enrollTime;
}
public Date getGraduationTime() {
return graduationTime;
}
public void setGraduationTime(Date graduationTime) {
this.graduationTime = graduationTime;
}
public Byte getReadingStatus() {
return readingStatus;
}
public void setReadingStatus(Byte readingStatus) {
this.readingStatus = readingStatus;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -333,6 +373,7 @@ public class KtsKtGroupMemberAduit implements Serializable {
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", openId=").append(openId);
sb.append(", category=").append(category);
sb.append(", deptId=").append(deptId);
sb.append(", ktGroupId=").append(ktGroupId);
@ -364,6 +405,9 @@ public class KtsKtGroupMemberAduit implements Serializable {
sb.append(", reviewedTime=").append(reviewedTime);
sb.append(", parentKtId=").append(parentKtId);
sb.append(", ktGroupName=").append(ktGroupName);
sb.append(", enrollTime=").append(enrollTime);
sb.append(", graduationTime=").append(graduationTime);
sb.append(", readingStatus=").append(readingStatus);
sb.append("]");
return sb.toString();
}

250
research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberAduitExample.java

@ -165,6 +165,76 @@ public class KtsKtGroupMemberAduitExample {
return (Criteria) this;
}
public Criteria andOpenIdIsNull() {
addCriterion("open_id is null");
return (Criteria) this;
}
public Criteria andOpenIdIsNotNull() {
addCriterion("open_id is not null");
return (Criteria) this;
}
public Criteria andOpenIdEqualTo(String value) {
addCriterion("open_id =", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdNotEqualTo(String value) {
addCriterion("open_id <>", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdGreaterThan(String value) {
addCriterion("open_id >", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdGreaterThanOrEqualTo(String value) {
addCriterion("open_id >=", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdLessThan(String value) {
addCriterion("open_id <", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdLessThanOrEqualTo(String value) {
addCriterion("open_id <=", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdLike(String value) {
addCriterion("open_id like", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdNotLike(String value) {
addCriterion("open_id not like", value, "openId");
return (Criteria) this;
}
public Criteria andOpenIdIn(List<String> values) {
addCriterion("open_id in", values, "openId");
return (Criteria) this;
}
public Criteria andOpenIdNotIn(List<String> values) {
addCriterion("open_id not in", values, "openId");
return (Criteria) this;
}
public Criteria andOpenIdBetween(String value1, String value2) {
addCriterion("open_id between", value1, value2, "openId");
return (Criteria) this;
}
public Criteria andOpenIdNotBetween(String value1, String value2) {
addCriterion("open_id not between", value1, value2, "openId");
return (Criteria) this;
}
public Criteria andCategoryIsNull() {
addCriterion("category is null");
return (Criteria) this;
@ -2164,6 +2234,186 @@ public class KtsKtGroupMemberAduitExample {
addCriterion("kt_group_name not between", value1, value2, "ktGroupName");
return (Criteria) this;
}
public Criteria andEnrollTimeIsNull() {
addCriterion("enroll_time is null");
return (Criteria) this;
}
public Criteria andEnrollTimeIsNotNull() {
addCriterion("enroll_time is not null");
return (Criteria) this;
}
public Criteria andEnrollTimeEqualTo(Date value) {
addCriterion("enroll_time =", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeNotEqualTo(Date value) {
addCriterion("enroll_time <>", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeGreaterThan(Date value) {
addCriterion("enroll_time >", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeGreaterThanOrEqualTo(Date value) {
addCriterion("enroll_time >=", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeLessThan(Date value) {
addCriterion("enroll_time <", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeLessThanOrEqualTo(Date value) {
addCriterion("enroll_time <=", value, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeIn(List<Date> values) {
addCriterion("enroll_time in", values, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeNotIn(List<Date> values) {
addCriterion("enroll_time not in", values, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeBetween(Date value1, Date value2) {
addCriterion("enroll_time between", value1, value2, "enrollTime");
return (Criteria) this;
}
public Criteria andEnrollTimeNotBetween(Date value1, Date value2) {
addCriterion("enroll_time not between", value1, value2, "enrollTime");
return (Criteria) this;
}
public Criteria andGraduationTimeIsNull() {
addCriterion("graduation_time is null");
return (Criteria) this;
}
public Criteria andGraduationTimeIsNotNull() {
addCriterion("graduation_time is not null");
return (Criteria) this;
}
public Criteria andGraduationTimeEqualTo(Date value) {
addCriterion("graduation_time =", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeNotEqualTo(Date value) {
addCriterion("graduation_time <>", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeGreaterThan(Date value) {
addCriterion("graduation_time >", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeGreaterThanOrEqualTo(Date value) {
addCriterion("graduation_time >=", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeLessThan(Date value) {
addCriterion("graduation_time <", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeLessThanOrEqualTo(Date value) {
addCriterion("graduation_time <=", value, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeIn(List<Date> values) {
addCriterion("graduation_time in", values, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeNotIn(List<Date> values) {
addCriterion("graduation_time not in", values, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeBetween(Date value1, Date value2) {
addCriterion("graduation_time between", value1, value2, "graduationTime");
return (Criteria) this;
}
public Criteria andGraduationTimeNotBetween(Date value1, Date value2) {
addCriterion("graduation_time not between", value1, value2, "graduationTime");
return (Criteria) this;
}
public Criteria andReadingStatusIsNull() {
addCriterion("reading_status is null");
return (Criteria) this;
}
public Criteria andReadingStatusIsNotNull() {
addCriterion("reading_status is not null");
return (Criteria) this;
}
public Criteria andReadingStatusEqualTo(Byte value) {
addCriterion("reading_status =", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusNotEqualTo(Byte value) {
addCriterion("reading_status <>", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusGreaterThan(Byte value) {
addCriterion("reading_status >", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("reading_status >=", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusLessThan(Byte value) {
addCriterion("reading_status <", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusLessThanOrEqualTo(Byte value) {
addCriterion("reading_status <=", value, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusIn(List<Byte> values) {
addCriterion("reading_status in", values, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusNotIn(List<Byte> values) {
addCriterion("reading_status not in", values, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusBetween(Byte value1, Byte value2) {
addCriterion("reading_status between", value1, value2, "readingStatus");
return (Criteria) this;
}
public Criteria andReadingStatusNotBetween(Byte value1, Byte value2) {
addCriterion("reading_status not between", value1, value2, "readingStatus");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

120
research-system/src/main/java/com/research/system/domain/po/KtsKtGroupMemberExample.java

@ -252,66 +252,6 @@ public class KtsKtGroupMemberExample {
return (Criteria) this;
}
public Criteria andProjOrgIdIsNull() {
addCriterion("proj_org_id is null");
return (Criteria) this;
}
public Criteria andProjOrgIdIsNotNull() {
addCriterion("proj_org_id is not null");
return (Criteria) this;
}
public Criteria andProjOrgIdEqualTo(Long value) {
addCriterion("proj_org_id =", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotEqualTo(Long value) {
addCriterion("proj_org_id <>", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdGreaterThan(Long value) {
addCriterion("proj_org_id >", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdGreaterThanOrEqualTo(Long value) {
addCriterion("proj_org_id >=", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdLessThan(Long value) {
addCriterion("proj_org_id <", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdLessThanOrEqualTo(Long value) {
addCriterion("proj_org_id <=", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdIn(List<Long> values) {
addCriterion("proj_org_id in", values, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotIn(List<Long> values) {
addCriterion("proj_org_id not in", values, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdBetween(Long value1, Long value2) {
addCriterion("proj_org_id between", value1, value2, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotBetween(Long value1, Long value2) {
addCriterion("proj_org_id not between", value1, value2, "projOrgId");
return (Criteria) this;
}
public Criteria andKtGroupIdIsNull() {
addCriterion("kt_group_id is null");
return (Criteria) this;
@ -1851,6 +1791,66 @@ public class KtsKtGroupMemberExample {
addCriterion("reading_status not between", value1, value2, "readingStatus");
return (Criteria) this;
}
public Criteria andProjOrgIdIsNull() {
addCriterion("proj_org_id is null");
return (Criteria) this;
}
public Criteria andProjOrgIdIsNotNull() {
addCriterion("proj_org_id is not null");
return (Criteria) this;
}
public Criteria andProjOrgIdEqualTo(Long value) {
addCriterion("proj_org_id =", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotEqualTo(Long value) {
addCriterion("proj_org_id <>", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdGreaterThan(Long value) {
addCriterion("proj_org_id >", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdGreaterThanOrEqualTo(Long value) {
addCriterion("proj_org_id >=", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdLessThan(Long value) {
addCriterion("proj_org_id <", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdLessThanOrEqualTo(Long value) {
addCriterion("proj_org_id <=", value, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdIn(List<Long> values) {
addCriterion("proj_org_id in", values, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotIn(List<Long> values) {
addCriterion("proj_org_id not in", values, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdBetween(Long value1, Long value2) {
addCriterion("proj_org_id between", value1, value2, "projOrgId");
return (Criteria) this;
}
public Criteria andProjOrgIdNotBetween(Long value1, Long value2) {
addCriterion("proj_org_id not between", value1, value2, "projOrgId");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

161
research-system/src/main/java/com/research/system/domain/po/TasDeliverable.java

@ -0,0 +1,161 @@
package com.research.system.domain.po;
import java.io.Serializable;
import java.util.Date;
public class TasDeliverable implements Serializable {
private Long id;
private Long taskMemberId;
private Long userId;
private Date submitTime;
private String description;
private Byte auditStatus;
private String rejectReason;
private Date auditTime;
private Byte delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getTaskMemberId() {
return taskMemberId;
}
public void setTaskMemberId(Long taskMemberId) {
this.taskMemberId = taskMemberId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Date getSubmitTime() {
return submitTime;
}
public void setSubmitTime(Date submitTime) {
this.submitTime = submitTime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description == null ? null : description.trim();
}
public Byte getAuditStatus() {
return auditStatus;
}
public void setAuditStatus(Byte auditStatus) {
this.auditStatus = auditStatus;
}
public String getRejectReason() {
return rejectReason;
}
public void setRejectReason(String rejectReason) {
this.rejectReason = rejectReason == null ? null : rejectReason.trim();
}
public Date getAuditTime() {
return auditTime;
}
public void setAuditTime(Date auditTime) {
this.auditTime = auditTime;
}
public Byte getDelFlag() {
return delFlag;
}
public void setDelFlag(Byte delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy == null ? null : createBy.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy == null ? null : updateBy.trim();
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", taskMemberId=").append(taskMemberId);
sb.append(", userId=").append(userId);
sb.append(", submitTime=").append(submitTime);
sb.append(", description=").append(description);
sb.append(", auditStatus=").append(auditStatus);
sb.append(", rejectReason=").append(rejectReason);
sb.append(", auditTime=").append(auditTime);
sb.append(", delFlag=").append(delFlag);
sb.append(", createBy=").append(createBy);
sb.append(", createTime=").append(createTime);
sb.append(", updateBy=").append(updateBy);
sb.append(", updateTime=").append(updateTime);
sb.append("]");
return sb.toString();
}
}

1021
research-system/src/main/java/com/research/system/domain/po/TasDeliverableExample.java

File diff suppressed because it is too large

216
research-system/src/main/java/com/research/system/domain/po/TasTask.java

@ -0,0 +1,216 @@
package com.research.system.domain.po;
import java.io.Serializable;
import java.util.Date;
public class TasTask implements Serializable {
private Long id;
private Long ktGroupId;
private Long projOrgId;
private Long projId;
private String taskName;
private Byte priority;
private Byte taskType;
private Date startTime;
private Date endTime;
private Long taskCreatorId;
private Byte delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private String remark;
private String description;
private String taskDescription;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getKtGroupId() {
return ktGroupId;
}
public void setKtGroupId(Long ktGroupId) {
this.ktGroupId = ktGroupId;
}
public Long getProjOrgId() {
return projOrgId;
}
public void setProjOrgId(Long projOrgId) {
this.projOrgId = projOrgId;
}
public Long getProjId() {
return projId;
}
public void setProjId(Long projId) {
this.projId = projId;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName == null ? null : taskName.trim();
}
public Byte getPriority() {
return priority;
}
public void setPriority(Byte priority) {
this.priority = priority;
}
public Byte getTaskType() {
return taskType;
}
public void setTaskType(Byte taskType) {
this.taskType = taskType;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Long getTaskCreatorId() {
return taskCreatorId;
}
public void setTaskCreatorId(Long taskCreatorId) {
this.taskCreatorId = taskCreatorId;
}
public Byte getDelFlag() {
return delFlag;
}
public void setDelFlag(Byte delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy == null ? null : createBy.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy == null ? null : updateBy.trim();
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark == null ? null : remark.trim();
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description == null ? null : description.trim();
}
public String getTaskDescription() {
return taskDescription;
}
public void setTaskDescription(String taskDescription) {
this.taskDescription = taskDescription == null ? null : taskDescription.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", ktGroupId=").append(ktGroupId);
sb.append(", projOrgId=").append(projOrgId);
sb.append(", projId=").append(projId);
sb.append(", taskName=").append(taskName);
sb.append(", priority=").append(priority);
sb.append(", taskType=").append(taskType);
sb.append(", startTime=").append(startTime);
sb.append(", endTime=").append(endTime);
sb.append(", taskCreatorId=").append(taskCreatorId);
sb.append(", delFlag=").append(delFlag);
sb.append(", createBy=").append(createBy);
sb.append(", createTime=").append(createTime);
sb.append(", updateBy=").append(updateBy);
sb.append(", updateTime=").append(updateTime);
sb.append(", remark=").append(remark);
sb.append(", description=").append(description);
sb.append(", taskDescription=").append(taskDescription);
sb.append("]");
return sb.toString();
}
}

1271
research-system/src/main/java/com/research/system/domain/po/TasTaskExample.java

File diff suppressed because it is too large

150
research-system/src/main/java/com/research/system/domain/po/TasTaskMember.java

@ -0,0 +1,150 @@
package com.research.system.domain.po;
import java.io.Serializable;
import java.util.Date;
public class TasTaskMember implements Serializable {
private Long id;
private Long taskId;
private String memberIds;
private Byte taskStatus;
private Byte auditStatus;
private String rejectReason;
private Date auditTime;
private Byte delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public String getMemberIds() {
return memberIds;
}
public void setMemberIds(String memberIds) {
this.memberIds = memberIds == null ? null : memberIds.trim();
}
public Byte getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(Byte taskStatus) {
this.taskStatus = taskStatus;
}
public Byte getAuditStatus() {
return auditStatus;
}
public void setAuditStatus(Byte auditStatus) {
this.auditStatus = auditStatus;
}
public String getRejectReason() {
return rejectReason;
}
public void setRejectReason(String rejectReason) {
this.rejectReason = rejectReason == null ? null : rejectReason.trim();
}
public Date getAuditTime() {
return auditTime;
}
public void setAuditTime(Date auditTime) {
this.auditTime = auditTime;
}
public Byte getDelFlag() {
return delFlag;
}
public void setDelFlag(Byte delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy == null ? null : createBy.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy == null ? null : updateBy.trim();
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", taskId=").append(taskId);
sb.append(", memberIds=").append(memberIds);
sb.append(", taskStatus=").append(taskStatus);
sb.append(", auditStatus=").append(auditStatus);
sb.append(", rejectReason=").append(rejectReason);
sb.append(", auditTime=").append(auditTime);
sb.append(", delFlag=").append(delFlag);
sb.append(", createBy=").append(createBy);
sb.append(", createTime=").append(createTime);
sb.append(", updateBy=").append(updateBy);
sb.append(", updateTime=").append(updateTime);
sb.append("]");
return sb.toString();
}
}

961
research-system/src/main/java/com/research/system/domain/po/TasTaskMemberExample.java

@ -0,0 +1,961 @@
package com.research.system.domain.po;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TasTaskMemberExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public TasTaskMemberExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andTaskIdIsNull() {
addCriterion("task_id is null");
return (Criteria) this;
}
public Criteria andTaskIdIsNotNull() {
addCriterion("task_id is not null");
return (Criteria) this;
}
public Criteria andTaskIdEqualTo(Long value) {
addCriterion("task_id =", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotEqualTo(Long value) {
addCriterion("task_id <>", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdGreaterThan(Long value) {
addCriterion("task_id >", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdGreaterThanOrEqualTo(Long value) {
addCriterion("task_id >=", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdLessThan(Long value) {
addCriterion("task_id <", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdLessThanOrEqualTo(Long value) {
addCriterion("task_id <=", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdIn(List<Long> values) {
addCriterion("task_id in", values, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotIn(List<Long> values) {
addCriterion("task_id not in", values, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdBetween(Long value1, Long value2) {
addCriterion("task_id between", value1, value2, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotBetween(Long value1, Long value2) {
addCriterion("task_id not between", value1, value2, "taskId");
return (Criteria) this;
}
public Criteria andMemberIdsIsNull() {
addCriterion("member_ids is null");
return (Criteria) this;
}
public Criteria andMemberIdsIsNotNull() {
addCriterion("member_ids is not null");
return (Criteria) this;
}
public Criteria andMemberIdsEqualTo(String value) {
addCriterion("member_ids =", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsNotEqualTo(String value) {
addCriterion("member_ids <>", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsGreaterThan(String value) {
addCriterion("member_ids >", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsGreaterThanOrEqualTo(String value) {
addCriterion("member_ids >=", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsLessThan(String value) {
addCriterion("member_ids <", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsLessThanOrEqualTo(String value) {
addCriterion("member_ids <=", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsLike(String value) {
addCriterion("member_ids like", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsNotLike(String value) {
addCriterion("member_ids not like", value, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsIn(List<String> values) {
addCriterion("member_ids in", values, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsNotIn(List<String> values) {
addCriterion("member_ids not in", values, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsBetween(String value1, String value2) {
addCriterion("member_ids between", value1, value2, "memberIds");
return (Criteria) this;
}
public Criteria andMemberIdsNotBetween(String value1, String value2) {
addCriterion("member_ids not between", value1, value2, "memberIds");
return (Criteria) this;
}
public Criteria andTaskStatusIsNull() {
addCriterion("task_status is null");
return (Criteria) this;
}
public Criteria andTaskStatusIsNotNull() {
addCriterion("task_status is not null");
return (Criteria) this;
}
public Criteria andTaskStatusEqualTo(Byte value) {
addCriterion("task_status =", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusNotEqualTo(Byte value) {
addCriterion("task_status <>", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusGreaterThan(Byte value) {
addCriterion("task_status >", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("task_status >=", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusLessThan(Byte value) {
addCriterion("task_status <", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusLessThanOrEqualTo(Byte value) {
addCriterion("task_status <=", value, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusIn(List<Byte> values) {
addCriterion("task_status in", values, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusNotIn(List<Byte> values) {
addCriterion("task_status not in", values, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusBetween(Byte value1, Byte value2) {
addCriterion("task_status between", value1, value2, "taskStatus");
return (Criteria) this;
}
public Criteria andTaskStatusNotBetween(Byte value1, Byte value2) {
addCriterion("task_status not between", value1, value2, "taskStatus");
return (Criteria) this;
}
public Criteria andAuditStatusIsNull() {
addCriterion("audit_status is null");
return (Criteria) this;
}
public Criteria andAuditStatusIsNotNull() {
addCriterion("audit_status is not null");
return (Criteria) this;
}
public Criteria andAuditStatusEqualTo(Byte value) {
addCriterion("audit_status =", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusNotEqualTo(Byte value) {
addCriterion("audit_status <>", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusGreaterThan(Byte value) {
addCriterion("audit_status >", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("audit_status >=", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusLessThan(Byte value) {
addCriterion("audit_status <", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusLessThanOrEqualTo(Byte value) {
addCriterion("audit_status <=", value, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusIn(List<Byte> values) {
addCriterion("audit_status in", values, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusNotIn(List<Byte> values) {
addCriterion("audit_status not in", values, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusBetween(Byte value1, Byte value2) {
addCriterion("audit_status between", value1, value2, "auditStatus");
return (Criteria) this;
}
public Criteria andAuditStatusNotBetween(Byte value1, Byte value2) {
addCriterion("audit_status not between", value1, value2, "auditStatus");
return (Criteria) this;
}
public Criteria andRejectReasonIsNull() {
addCriterion("reject_reason is null");
return (Criteria) this;
}
public Criteria andRejectReasonIsNotNull() {
addCriterion("reject_reason is not null");
return (Criteria) this;
}
public Criteria andRejectReasonEqualTo(String value) {
addCriterion("reject_reason =", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonNotEqualTo(String value) {
addCriterion("reject_reason <>", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonGreaterThan(String value) {
addCriterion("reject_reason >", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonGreaterThanOrEqualTo(String value) {
addCriterion("reject_reason >=", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonLessThan(String value) {
addCriterion("reject_reason <", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonLessThanOrEqualTo(String value) {
addCriterion("reject_reason <=", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonLike(String value) {
addCriterion("reject_reason like", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonNotLike(String value) {
addCriterion("reject_reason not like", value, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonIn(List<String> values) {
addCriterion("reject_reason in", values, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonNotIn(List<String> values) {
addCriterion("reject_reason not in", values, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonBetween(String value1, String value2) {
addCriterion("reject_reason between", value1, value2, "rejectReason");
return (Criteria) this;
}
public Criteria andRejectReasonNotBetween(String value1, String value2) {
addCriterion("reject_reason not between", value1, value2, "rejectReason");
return (Criteria) this;
}
public Criteria andAuditTimeIsNull() {
addCriterion("audit_time is null");
return (Criteria) this;
}
public Criteria andAuditTimeIsNotNull() {
addCriterion("audit_time is not null");
return (Criteria) this;
}
public Criteria andAuditTimeEqualTo(Date value) {
addCriterion("audit_time =", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeNotEqualTo(Date value) {
addCriterion("audit_time <>", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeGreaterThan(Date value) {
addCriterion("audit_time >", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeGreaterThanOrEqualTo(Date value) {
addCriterion("audit_time >=", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeLessThan(Date value) {
addCriterion("audit_time <", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeLessThanOrEqualTo(Date value) {
addCriterion("audit_time <=", value, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeIn(List<Date> values) {
addCriterion("audit_time in", values, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeNotIn(List<Date> values) {
addCriterion("audit_time not in", values, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeBetween(Date value1, Date value2) {
addCriterion("audit_time between", value1, value2, "auditTime");
return (Criteria) this;
}
public Criteria andAuditTimeNotBetween(Date value1, Date value2) {
addCriterion("audit_time not between", value1, value2, "auditTime");
return (Criteria) this;
}
public Criteria andDelFlagIsNull() {
addCriterion("del_flag is null");
return (Criteria) this;
}
public Criteria andDelFlagIsNotNull() {
addCriterion("del_flag is not null");
return (Criteria) this;
}
public Criteria andDelFlagEqualTo(Byte value) {
addCriterion("del_flag =", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotEqualTo(Byte value) {
addCriterion("del_flag <>", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagGreaterThan(Byte value) {
addCriterion("del_flag >", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
addCriterion("del_flag >=", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagLessThan(Byte value) {
addCriterion("del_flag <", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
addCriterion("del_flag <=", value, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagIn(List<Byte> values) {
addCriterion("del_flag in", values, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotIn(List<Byte> values) {
addCriterion("del_flag not in", values, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagBetween(Byte value1, Byte value2) {
addCriterion("del_flag between", value1, value2, "delFlag");
return (Criteria) this;
}
public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
addCriterion("del_flag not between", value1, value2, "delFlag");
return (Criteria) this;
}
public Criteria andCreateByIsNull() {
addCriterion("create_by is null");
return (Criteria) this;
}
public Criteria andCreateByIsNotNull() {
addCriterion("create_by is not null");
return (Criteria) this;
}
public Criteria andCreateByEqualTo(String value) {
addCriterion("create_by =", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotEqualTo(String value) {
addCriterion("create_by <>", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThan(String value) {
addCriterion("create_by >", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByGreaterThanOrEqualTo(String value) {
addCriterion("create_by >=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThan(String value) {
addCriterion("create_by <", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLessThanOrEqualTo(String value) {
addCriterion("create_by <=", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByLike(String value) {
addCriterion("create_by like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotLike(String value) {
addCriterion("create_by not like", value, "createBy");
return (Criteria) this;
}
public Criteria andCreateByIn(List<String> values) {
addCriterion("create_by in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotIn(List<String> values) {
addCriterion("create_by not in", values, "createBy");
return (Criteria) this;
}
public Criteria andCreateByBetween(String value1, String value2) {
addCriterion("create_by between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andCreateByNotBetween(String value1, String value2) {
addCriterion("create_by not between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andCreateTimeIsNull() {
addCriterion("create_time is null");
return (Criteria) this;
}
public Criteria andCreateTimeIsNotNull() {
addCriterion("create_time is not null");
return (Criteria) this;
}
public Criteria andCreateTimeEqualTo(Date value) {
addCriterion("create_time =", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotEqualTo(Date value) {
addCriterion("create_time <>", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThan(Date value) {
addCriterion("create_time >", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
addCriterion("create_time >=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThan(Date value) {
addCriterion("create_time <", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
addCriterion("create_time <=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeIn(List<Date> values) {
addCriterion("create_time in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotIn(List<Date> values) {
addCriterion("create_time not in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeBetween(Date value1, Date value2) {
addCriterion("create_time between", value1, value2, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
addCriterion("create_time not between", value1, value2, "createTime");
return (Criteria) this;
}
public Criteria andUpdateByIsNull() {
addCriterion("update_by is null");
return (Criteria) this;
}
public Criteria andUpdateByIsNotNull() {
addCriterion("update_by is not null");
return (Criteria) this;
}
public Criteria andUpdateByEqualTo(String value) {
addCriterion("update_by =", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotEqualTo(String value) {
addCriterion("update_by <>", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByGreaterThan(String value) {
addCriterion("update_by >", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
addCriterion("update_by >=", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLessThan(String value) {
addCriterion("update_by <", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLessThanOrEqualTo(String value) {
addCriterion("update_by <=", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByLike(String value) {
addCriterion("update_by like", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotLike(String value) {
addCriterion("update_by not like", value, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByIn(List<String> values) {
addCriterion("update_by in", values, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotIn(List<String> values) {
addCriterion("update_by not in", values, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByBetween(String value1, String value2) {
addCriterion("update_by between", value1, value2, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateByNotBetween(String value1, String value2) {
addCriterion("update_by not between", value1, value2, "updateBy");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNull() {
addCriterion("update_time is null");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNotNull() {
addCriterion("update_time is not null");
return (Criteria) this;
}
public Criteria andUpdateTimeEqualTo(Date value) {
addCriterion("update_time =", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotEqualTo(Date value) {
addCriterion("update_time <>", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThan(Date value) {
addCriterion("update_time >", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
addCriterion("update_time >=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThan(Date value) {
addCriterion("update_time <", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
addCriterion("update_time <=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeIn(List<Date> values) {
addCriterion("update_time in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotIn(List<Date> values) {
addCriterion("update_time not in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeBetween(Date value1, Date value2) {
addCriterion("update_time between", value1, value2, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
addCriterion("update_time not between", value1, value2, "updateTime");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

48
research-system/src/main/java/com/research/system/domain/vo/FundingVo.java

@ -1,6 +1,8 @@
package com.research.system.domain.vo;
import com.research.common.annotation.Excel;
import com.research.system.domain.po.FudFundRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@ -16,43 +18,85 @@ public class FundingVo {
@Data
public static class Result {
@ApiModelProperty("表ID")
private Long id;
@ApiModelProperty("项目id")
private Long projId;
@Excel(name = "项目名称")
@ApiModelProperty("项目名称")
private String projName;
@ApiModelProperty("合作单位id")
private Long projOrgId;
@Excel(name = "合作单位名称")
@ApiModelProperty("合作单位名称")
private String projOrgName;
@ApiModelProperty("课题组id")
private Long ktGroupId;
@Excel(name = "课题组名称")
@ApiModelProperty("课题组名称")
private String ktGroupName;
@Excel(name = "经费类型", readConverterExp = "0=收入,1=支出")
@ApiModelProperty("经费类型:0-收入,1-支出")
private Byte payType;
@Excel(name = "收入来源/支出用途")
@ApiModelProperty("收入来源/支出用途")
private String paySource;
@Excel(name = "收支科目")
@ApiModelProperty("收支科目,eg:科研项目经费,设备购置费,材料费,差旅费")
private String paySubject;
@Excel(name = "用途/摘要/说明")
@ApiModelProperty("用途/摘要/说明")
private String payAbstract;
@Excel(name = "收支时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("收支时间")
private Date payTime;
@Excel(name = "收入金额", cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty("收入金额")
private BigDecimal incomeAmount;
@Excel(name = "支出金额", cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty("支出金额")
private BigDecimal payAmount;
@Excel(name = "经手人")
@ApiModelProperty("经手人")
private String jsr;
@Excel(name = "审批人")
@ApiModelProperty("审批人")
private String spr;
@Excel(name = "凭证号/发票号码/转账记录号")
@ApiModelProperty("凭证号/发票号码/转账记录号")
private String pzh;
@Excel(name = "发票/转账凭证")
@ApiModelProperty("发票/转账凭证")
private String pzhUrl;
@Excel(name = "备注")
@ApiModelProperty("备注")
private String remark;
@Excel(name = "创建者")
@ApiModelProperty("创建者")
private String createBy;
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
private String projOrgName;
private String ktGroupName;
}
}

32
research-system/src/main/java/com/research/system/domain/vo/GroupVO.java

@ -85,7 +85,8 @@ public class GroupVO {
private long cgIng;
private Byte type;
@ApiModelProperty("研究内容")
private List<Detail.Nr> nrList;
}
@Data
@ -140,6 +141,7 @@ public class GroupVO {
public static class Yqcg {
private Long id;
private String outcomes;
private String content;
private Integer sort;
private Byte status;
}
@ -251,6 +253,7 @@ public class GroupVO {
private String userName;
private String nickName;
@ApiModelProperty("入学时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date enrollmentTime;
@ApiModelProperty("毕业时间")
private Date graduationTime;
@ -276,26 +279,31 @@ public class GroupVO {
return 0;
}
public List<String> getType() {
public String getType() {
if (StrUtil.isNotEmpty(type)) {
return Arrays.stream(type.split(",")).collect(Collectors.toList());
if(type.contains("0")){
return "0";
}else if(type.contains("1")){
return "1";
}else{
return "2";
}
}
return null;
}
public String getTypeName() {
if (StrUtil.isNotEmpty(type)) {
List<String> type1 = getType();
return type1.stream().map(title -> {
if (title.equals("1")) {
return "学生";
} else if (title.equals("2")) {
return "教师";
} else if (title.equals("3")) {
return "其他";
String type1 = "";
if (type.contains("1")) {
type1 = "课题负责人";
} else if (type.contains("2")) {
type1 = "学生";
} else if (type.contains("3")) {
type1 = "其他";
}
return "";
}).collect(Collectors.joining(","));
}
return type;
}

3
research-system/src/main/java/com/research/system/domain/vo/HomeVo.java

@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.research.system.domain.dto.GroupDto;
import com.research.system.domain.po.PrjProjInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@ -51,6 +52,8 @@ public class HomeVo {
private Long orgId;
private String completionPercentage = "0";
private List<GroupVO.Result> groupList;
@ApiModelProperty("课题组数量")
private Integer groupNum;
}
@Data

27
research-system/src/main/java/com/research/system/domain/vo/MemberAduitVo.java

@ -1,7 +1,9 @@
package com.research.system.domain.vo;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Arrays;
@ -46,6 +48,12 @@ public class MemberAduitVo {
private Long projOrgId;
@ApiModelProperty(" 0申报单位 1合作单位")
private Byte projOrgType;
@ApiModelProperty("在读状态 0在读硕士 1在读博士 2在读博士后")
private Byte readingStatus;
private String roleIdList;
private String title;
@ -76,12 +84,19 @@ public class MemberAduitVo {
private Date reviewedTime;
public List<String> getType() {
if (StrUtil.isNotEmpty(type)) {
return Arrays.stream(type.split(",")).collect(Collectors.toList());
}
return null;
}
@ApiModelProperty(value = "入学时间", example = "2020-01-01")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date enrollmentTime;
@ApiModelProperty(value = "毕业时间", example = "2024-01-01")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date graduationTime;
// public List<Integer> getType() {
// if (StrUtil.isNotEmpty(type)) {
// return JSON.parseArray(type, Integer.class);
// }
// return null;
// }
public String getKtGroupName() {
if (StrUtil.isNotEmpty(ktGroupName1)) {

2
research-system/src/main/java/com/research/system/domain/vo/ResPlatformVo.java

@ -28,6 +28,8 @@ public class ResPlatformVo {
private Integer deviceNum;
private Long projId;
private Long projOrgId;
@ApiModelProperty("合作单位名称")
private String projOrgName;
}
}

4
research-system/src/main/java/com/research/system/domain/vo/SessionVo.java

@ -31,8 +31,12 @@ public class SessionVo {
private String lastMessage;
@ApiModelProperty("最后消息时间")
private Date lastMessageTime;
@ApiModelProperty("消息类型")
private Byte contentType;
@ApiModelProperty("合作单位名称")
private String orgName;
@ApiModelProperty("userId")
private Long userId;
private Long senderId;
}

3
research-system/src/main/java/com/research/system/domain/vo/ShsResDeviceVo.java

@ -57,6 +57,9 @@ public class ShsResDeviceVo {
@ApiModelProperty("")
private Date createTime;
private String platformName;
@ApiModelProperty("实验室名称")
private String libraryName;
@ApiModelProperty("图片列表")
private List<String> picList = new ArrayList<>();
}

228
research-system/src/main/java/com/research/system/domain/vo/TaskVo.java

@ -1,148 +1,168 @@
package com.research.system.domain.vo;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.research.system.domain.po.TaskList;
import com.research.system.domain.po.TaskListWithBLOBs;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.poi.hssf.record.WSBoolRecord;
import java.util.Date;
import java.util.List;
/**
* @Author zzc
* @Package com.research.system.domain.dto
* @Date 2025/8/17 15:49
* @description:
*/
@Data
public class TaskVo {
@Data
public static class TaskResult{
@ApiModel("课题组信息")
public static class KtGroupInfo {
@ApiModelProperty("课题组ID")
private Long id;
private Long projId;
private Long projOrgId;
private String taskName;
private Integer taskType;
private Integer parentId;
private Long ktGroupId;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT")
private Date endTime;
@ApiModelProperty("课题组名称")
private String ktGroupName;
}
private String initiator;
@Data
@ApiModel("课题组成员信息")
public static class GroupMemberInfo {
@ApiModelProperty("成员表ID")
private Long id;
private Integer priority;
@ApiModelProperty("用户ID")
private Long userId;
private Byte status;
private String description;
@ApiModelProperty("成员姓名")
private String memberName;
}
@Data
@ApiModel("任务成员信息")
public static class TaskMemberInfo {
@ApiModelProperty("成员ID")
private Long memberId;
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT")
private Date createTime;
//实际完成时间
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT")
private Date actualEndTime;
private List<ExecutorResult> executorList;
private List<DeliverableResult> deliverableShouldList;
private String deliverables;
private Byte complateStatus;
public Byte getComplateStatus() {
if (CollectionUtil.isNotEmpty(deliverableShouldList) && getDeliverableList().size() > deliverableShouldList.size()) {
return 1;
}
return 0;
}
public List<String> getDeliverableList() {
if (StrUtil.isNotEmpty(deliverables)) {
return ListUtil.toList(deliverables.split(","));
}
return CollectionUtil.newArrayList();
}
public String getMonth(){
if (startTime != null) {
return DateUtil.format(startTime, "yyyy-MM");
}
return null;
}
public String getDay(){
if (startTime != null) {
return DateUtil.format(startTime, "yyyy-MM-dd");
}
return null;
}
@ApiModelProperty("成员姓名")
private String memberName;
@ApiModelProperty("用户ID")
private Long userId;
}
@Data
public static class ClientList{
private String time;
private List<DateResult> clientList;
@Data
public static class DateResult{
private String date;
private List<TaskResult> taskResultList;
}
@ApiModel("任务列表信息(以member为主)")
public static class TaskInfo {
@ApiModelProperty("任务ID")
private Long taskId;
@ApiModelProperty("任务成员表ID")
private Long taskMemberId;
@ApiModelProperty("课题组ID")
private Long ktGroupId;
@ApiModelProperty("课题组名称")
private String ktGroupName;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务说明")
private String taskDescription;
@ApiModelProperty("负责人(多个用逗号分隔)")
private String memberNames;
@ApiModelProperty("负责人ID列表")
private String memberIds;
@ApiModelProperty("创建人ID")
private Long createBy;
@ApiModelProperty("创建人姓名")
private String createName;
@ApiModelProperty("优先级")
private Integer priority;
@ApiModelProperty("优先级名称")
private String priorityName;
@ApiModelProperty("任务类型")
private Integer taskType;
@ApiModelProperty("任务类型名称")
private String taskTypeName;
@ApiModelProperty("开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date startTime;
@ApiModelProperty("截止时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date endTime;
@ApiModelProperty("任务状态")
private Integer taskStatus;
@ApiModelProperty("任务状态名称")
private String taskStatusName;
@ApiModelProperty("审核状态")
private Integer auditStatus;
@ApiModelProperty("审核状态名称")
private String auditStatusName;
@ApiModelProperty("审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date auditTime;
@ApiModelProperty("驳回原因")
private String rejectReason;
@ApiModelProperty("应交付物描述")
private String description;
@ApiModelProperty("应交付物")
private List<FileInfo> requiredDeliverable;
}
@Data
public static class ExecutorResult{
private Long id;
@ApiModel("文件信息")
public static class FileInfo {
@ApiModelProperty("文件ID")
private Long fileId;
private Long taskId;
@ApiModelProperty("文件名称")
private String fileName;
private Long executorId;
@ApiModelProperty("文件路径")
private String filePath;
private String memberName;
@ApiModelProperty("业务id")
private Long relateId;
}
@Data
public static class DeliverableResult{
private Long id;
@ApiModel("交付物信息")
public static class DeliverableInfo {
@ApiModelProperty("交付物ID")
private Long deliverableId;
private String taskId;
@ApiModelProperty("任务成员表ID")
private Long taskMemberId;
private String deliverableName;
@ApiModelProperty("提交时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date submitTime;
private String deliverableUrl;
@ApiModelProperty("提交人ID")
private Long userId;
private String deliveryInstructions;
private String referenceMaterials;
@ApiModelProperty("提交人姓名")
private String submitUserName;
private Byte deliveryStatus;
@ApiModelProperty("交付物说明")
private String description;
private Byte aduitStatus;
@ApiModelProperty("审核状态:0-待审核,1-审核通过,2-审核驳回")
private Integer auditStatus;
private String submitterAccount;
@ApiModelProperty("审核状态名称")
private String auditStatusName;
private Date submissionTime;
@ApiModelProperty("驳回原因")
private String rejectReason;
private String reviewerAccount;
@ApiModelProperty("审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date auditTime;
private Date reviewTime;
private String createBy;
private Date createTime;
@ApiModelProperty("文件列表")
private List<FileInfo> fileList;
}
@Data
@ApiModel("创建任务返回结果")
public static class CreateTaskResult {
@ApiModelProperty("任务ID")
private Long taskId;
}
}

3
research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java

@ -29,6 +29,9 @@ public class TmsLoginUserVo {
@ApiModelProperty("验证码")
private String smsCode;
@ApiModelProperty("wxCode")
private String wxCode;
}
@Data

25
research-system/src/main/java/com/research/system/domain/vo/UserVo.java

@ -0,0 +1,25 @@
package com.research.system.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zy
* @date 2026/4/18 15:57
*/
@Data
public class UserVo {
@Data
public static class MyselfVo {
@ApiModelProperty("任务总数")
private Integer taskCount;
@ApiModelProperty("任务完成数")
private Integer taskFinishedCount;
@ApiModelProperty("成果数")
private Integer resultCount;
@ApiModelProperty("客服电话")
private String servicePhone;
@ApiModelProperty("版本号")
private String version;
}
}

16
research-system/src/main/java/com/research/system/mapper/SysUserMapper.java

@ -1,6 +1,8 @@
package com.research.system.mapper;
import java.util.List;
import com.research.common.annotation.DataSource;
import org.apache.ibatis.annotations.Param;
import com.research.common.core.domain.entity.SysUser;
@ -125,11 +127,13 @@ public interface SysUserMapper
*/
public SysUser checkEmailUnique(String email);
/**
* 通过用户名查询用户
*
* @param userName 用户名
* @return 用户对象信息
*/
public SysUser selectUserByPhone(String phone);
SysUser getUserByOpenId(String openId);
void deleteOpenId(String openId);
void relevanceUserAndOpenId(@Param("openId") String openId, @Param("userId")Long userId);
void delUserOpenId(Long userId);
}

9
research-system/src/main/java/com/research/system/persist/dao/MemberAduitDao.java

@ -17,4 +17,13 @@ public interface MemberAduitDao {
List<Long> queryMemberIdList(@Param("projOrgId") Long projOrgId, @Param("roleId") Long roleId);
List<MemberAduitVo.Result> query(@Param("dto") MemberAduitDto.Query dto, @Param("userId") Long userId);
/**
* 查找审核人id
* @param projOrgId 合作单位id
* @param roleType 角色类型 0项目负责人 1合作单位负责人
*/
List<Long> queryReviewerUserIdList(@Param("projOrgId") Long projOrgId, @Param("roleType") Integer roleType);
Long getRoleByRoleKey(@Param("roleKey")String roleKey);
}

3
research-system/src/main/java/com/research/system/persist/dao/SessionDao.java

@ -2,6 +2,7 @@ package com.research.system.persist.dao;
import com.research.system.domain.dto.SessionDto;
import com.research.system.domain.vo.SessionVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -24,4 +25,6 @@ public interface SessionDao {
List<SessionVo.UnRead.UnReadItem> queryUnReadList(Long userId);
List<Long> queryMineSessionList(Long userId);
Long getSessionByUserId(@Param("userId") Long userId, @Param("selfUserId") Long selfUserId);
}

66
research-system/src/main/java/com/research/system/persist/dao/TaskDao.java

@ -1,25 +1,71 @@
package com.research.system.persist.dao;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.po.TasTaskMember;
import com.research.system.domain.vo.TaskVo;
import com.research.system.domain.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author zzc
* @Package com.research.system.persist.dao
* @Date 2025/8/18 16:04
* @description:
* @author zy
* @date 2026/04/15
*/
public interface TaskDao {
List<TaskVo.TaskResult> queryList(@Param("dto") TaskDto.QueryTask dto);
/**
* 批量插入任务成员
*/
void batchInsertTaskMembers(@Param("list") List<TasTaskMember> members);
/**
* 根据任务ID删除任务成员
*/
void deleteTaskMembersByTaskId(@Param("taskId") Long taskId);
/**
* 查询任务列表以member为主一个任务多个负责人返回多条
*/
List<TaskVo.TaskInfo> queryTaskList(@Param("param") TaskDto.QueryTaskList param, @Param("userId") Long userId, @Param("memberIdList") List<Long> memberIdList);
/**
* 根据任务ID列表查询任务成员
*/
List<TaskVo.TaskMemberInfo> queryTaskMembersByTaskIds(@Param("taskIds") List<Long> taskIds);
/**
* 根据任务ID查询任务成员
*/
List<TaskVo.TaskMemberInfo> queryTaskMembersByTaskId(@Param("taskId") Long taskId);
/**
* 查询交付物列表
*/
List<TaskVo.DeliverableInfo> queryDeliverableList(@Param("taskMemberId") Long taskMemberId);
/**
* 根据类型和业务ID列表查询文件
*/
List<TaskVo.FileInfo> queryFilesByDeliverableIds(@Param("relateIds") List<Long> relateIds, @Param("relateType") String relateType);
/**
* 获取当前用户关联的课题组列表
*/
List<TaskVo.KtGroupInfo> getMyGroupList(@Param("userId") Long userId,
@Param("orgId")Long orgId,
@Param("userType")Integer userType);
/**
* 获取课题组下的成员信息
*/
List<TaskVo.GroupMemberInfo> getGroupMembers(@Param("ktGroupIds") List<Long> ktGroupIds, @Param("memberName") String memberName);
void deleteFileByType(@Param("relateId")Long relateId, @Param("relateType") String relateType);
TaskVo.TaskResult detail(@Param("id") Long id);
List<TaskVo.ExecutorResult> queryExecutorList(@Param("dto") TaskDto.QueryExecutor dto);
List<TaskVo.DeliverableResult> queryDeliverableList(@Param("id") Long id);
UserVo.MyselfVo getTaskNumByUserId(String phone);
}
Integer getResultCount(@Param("userId")Long userId);
}

28
research-system/src/main/java/com/research/system/persist/mapper/ComFileMapper.java

@ -0,0 +1,28 @@
package com.research.system.persist.mapper;
import com.research.system.domain.po.ComFile;
import com.research.system.domain.po.ComFileExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface ComFileMapper {
long countByExample(ComFileExample example);
int deleteByPrimaryKey(Long id);
int insert(ComFile record);
int insertSelective(ComFile record);
List<ComFile> selectByExample(ComFileExample example);
ComFile selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") ComFile record, @Param("example") ComFileExample example);
int updateByExample(@Param("record") ComFile record, @Param("example") ComFileExample example);
int updateByPrimaryKeySelective(ComFile record);
int updateByPrimaryKey(ComFile record);
}

28
research-system/src/main/java/com/research/system/persist/mapper/TasDeliverableMapper.java

@ -0,0 +1,28 @@
package com.research.system.persist.mapper;
import com.research.system.domain.po.TasDeliverable;
import com.research.system.domain.po.TasDeliverableExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface TasDeliverableMapper {
long countByExample(TasDeliverableExample example);
int deleteByPrimaryKey(Long id);
int insert(TasDeliverable record);
int insertSelective(TasDeliverable record);
List<TasDeliverable> selectByExample(TasDeliverableExample example);
TasDeliverable selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") TasDeliverable record, @Param("example") TasDeliverableExample example);
int updateByExample(@Param("record") TasDeliverable record, @Param("example") TasDeliverableExample example);
int updateByPrimaryKeySelective(TasDeliverable record);
int updateByPrimaryKey(TasDeliverable record);
}

34
research-system/src/main/java/com/research/system/persist/mapper/TasTaskMapper.java

@ -0,0 +1,34 @@
package com.research.system.persist.mapper;
import com.research.system.domain.po.TasTask;
import com.research.system.domain.po.TasTaskExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface TasTaskMapper {
long countByExample(TasTaskExample example);
int deleteByPrimaryKey(Long id);
int insert(TasTask record);
int insertSelective(TasTask record);
List<TasTask> selectByExampleWithBLOBs(TasTaskExample example);
List<TasTask> selectByExample(TasTaskExample example);
TasTask selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") TasTask record, @Param("example") TasTaskExample example);
int updateByExampleWithBLOBs(@Param("record") TasTask record, @Param("example") TasTaskExample example);
int updateByExample(@Param("record") TasTask record, @Param("example") TasTaskExample example);
int updateByPrimaryKeySelective(TasTask record);
int updateByPrimaryKeyWithBLOBs(TasTask record);
int updateByPrimaryKey(TasTask record);
}

28
research-system/src/main/java/com/research/system/persist/mapper/TasTaskMemberMapper.java

@ -0,0 +1,28 @@
package com.research.system.persist.mapper;
import com.research.system.domain.po.TasTaskMember;
import com.research.system.domain.po.TasTaskMemberExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface TasTaskMemberMapper {
long countByExample(TasTaskMemberExample example);
int deleteByPrimaryKey(Long id);
int insert(TasTaskMember record);
int insertSelective(TasTaskMember record);
List<TasTaskMember> selectByExample(TasTaskMemberExample example);
TasTaskMember selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") TasTaskMember record, @Param("example") TasTaskMemberExample example);
int updateByExample(@Param("record") TasTaskMember record, @Param("example") TasTaskMemberExample example);
int updateByPrimaryKeySelective(TasTaskMember record);
int updateByPrimaryKey(TasTaskMember record);
}

12
research-system/src/main/java/com/research/system/service/ISysUserService.java

@ -2,6 +2,7 @@ package com.research.system.service;
import java.util.List;
import com.research.common.core.domain.entity.SysUser;
import com.research.system.domain.vo.UserVo;
/**
* 用户 业务层
@ -203,11 +204,14 @@ public interface ISysUserService
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
/**
* 通过用户ID查询用户
*
* @param userId 用户ID
* @return 用户对象信息
*/
public SysUser selectUserByPhone(String phone);
SysUser getUserByOpenId(String openId);
void disposeUserByOpenId(String openId, Long userId);
UserVo.MyselfVo getMyself();
}

66
research-system/src/main/java/com/research/system/service/ITaskService.java

@ -0,0 +1,66 @@
package com.research.system.service;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.vo.TaskVo;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author zy
* @date 2026/04/15
*/
public interface ITaskService {
/**
* 获取当前用户关联的课题组列表
*/
List<TaskVo.KtGroupInfo> getMyGroupList();
/**
* 获取课题组下的成员信息
*/
List<TaskVo.GroupMemberInfo> getGroupMembers(TaskDto.GetGroupMembers param);
/**
* 创建任务
*/
TaskVo.CreateTaskResult createTask(TaskDto.CreateTask param, Long userId);
/**
* 修改任务
*/
void updateTask(TaskDto.UpdateTask param);
/**
* 批量删除任务
*/
void batchDeleteTask(TaskDto.BatchDeleteTask param);
/**
* 查询任务列表
*/
List<TaskVo.TaskInfo> queryTaskList(TaskDto.QueryTaskList param, Long userId);
void exportTask(HttpServletResponse response, TaskDto.QueryTaskList param, Long userId);
/**
* 查询交付物列表
*/
List<TaskVo.DeliverableInfo> getDeliverableList(TaskDto.QueryDeliverableList param);
/**
* 提交交付物
*/
void submitDeliverable(TaskDto.SubmitDeliverable param, Long userId);
/**
* 审核任务
*/
void auditTask(TaskDto.AuditTask param, Long userId);
/**
* 审核交付物
*/
void auditDeliverable(TaskDto.AuditDeliverable param, Long userId);
}

3
research-system/src/main/java/com/research/system/service/SessionService.java

@ -22,7 +22,7 @@ public interface SessionService {
SessionVo.MessageLogResult queryLog(BaseDto<SessionDto.SessionId> dto);
Integer send(SessionDto.SendMessage dto);
Long send(SessionDto.SendMessage dto);
Long addSession(SessionDto.CreateSession dto);
@ -36,4 +36,5 @@ public interface SessionService {
Integer delSessionMember(SessionDto.AddSessionMember dto);
Long getSessionByUserId(SessionDto.Query dto);
}

4
research-system/src/main/java/com/research/system/service/ShsCkwxService.java

@ -4,6 +4,7 @@ import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.ShsCkwxDto;
import com.research.system.domain.vo.ShsCkwxVo;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -16,6 +17,9 @@ public interface ShsCkwxService {
List<ShsCkwxVo.Result> queryList(ShsCkwxDto.Query query, Integer pageNum, Integer pageSize);
//下载参考文献
void download(HttpServletResponse response, Long id);
Integer add(ShsCkwxDto.Add dto);
Integer del(CommonDto.DelDto dto);

46
research-system/src/main/java/com/research/system/service/TaskService.java

@ -1,46 +0,0 @@
package com.research.system.service;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.vo.TaskVo;
import java.util.List;
/**
* @Author zzc
* @Package com.research.system.service
* @Date 2025/8/17 15:52
* @description:
*/
public interface TaskService {
List<TaskVo.TaskResult> queryList(TaskDto.QueryTask query);
List<TaskVo.ClientList> queryListClient(TaskDto.QueryTask query);
TaskVo.TaskResult detail(Long id);
void add(TaskDto.AddTask dto);
void del(CommonDto.DelDto dto);
List<TaskVo.ExecutorResult> queryExecutorList(TaskDto.QueryExecutor query);
void addExecutor(TaskDto.AddExecutor dto);
void delExecutor(CommonDto.DelDto dto);
List<TaskVo.DeliverableResult> queryDeliverableList(TaskDto.QueryDeliverable query);
void addDeliverable(TaskDto.AddDeliverable dto);
void delDeliverable(CommonDto.DelDto dto);
/**
* 交付物审核
* @param taskId 任务ID
* @param deliverableId 交付物ID
* @param status 审核状态0未审核1已通过2不通过
*/
void aduit(Long taskId, Long deliverableId, Byte status);
}

20
research-system/src/main/java/com/research/system/service/impl/CooperatorServiceImpl.java

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.BigExcelWriter;
import cn.hutool.poi.excel.ExcelUtil;
@ -56,7 +57,14 @@ public class CooperatorServiceImpl implements CooperatorService {
@Override
public List<ClientPrjProjInfoVo.OrgVo> query(ClientPrjProOrgDto.Query dto) {
return prjProOrgDao.query(dto, SecurityUtils.getLoginUserOrNull() == null ? null :SecurityUtils.isAdmin(SecurityUtils.getLoginUserOrNull() == null? 0L : SecurityUtils .getUserId()) ? null : SecurityUtils.getTenantId());
return prjProOrgDao.query(dto,
SecurityUtils.getLoginUserOrNull() == null ?
null :
SecurityUtils.isAdmin(
SecurityUtils.getLoginUserOrNull() == null ? 0L : SecurityUtils .getUserId()
) ?
null :
SecurityUtils.getTenantId());
}
@Override
@ -201,10 +209,12 @@ public class CooperatorServiceImpl implements CooperatorService {
@Override
public ClientPrjProjInfoVo.Statistics statistics() {
ClientPrjProjInfoVo.Statistics statistics = prjProOrgDao.statistics();
statistics.setLwList(prjProOrgDao.lwStatistics1());
statistics.setZlList(prjProOrgDao.zjStatistics2());
statistics.setGccList(prjProOrgDao.zjStatistics3());
statistics.setRcpyList(prjProOrgDao.zjStatistics4());
if(ObjectUtil.isNotNull(statistics)){
statistics.setLwList(prjProOrgDao.lwStatistics1());
statistics.setZlList(prjProOrgDao.zjStatistics2());
statistics.setGccList(prjProOrgDao.zjStatistics3());
statistics.setRcpyList(prjProOrgDao.zjStatistics4());
}
return statistics;
}

1
research-system/src/main/java/com/research/system/service/impl/HomeServiceImpl.java

@ -85,6 +85,7 @@ public class HomeServiceImpl implements HomeService {
}
if (CollUtil.isNotEmpty(results)) {
groupResult.setGroupList(results.stream().sorted(Comparator.comparing(GroupVO.Result::getSort)).collect(Collectors.toList()));
groupResult.setGroupNum(results.size());
}
}
}

265
research-system/src/main/java/com/research/system/service/impl/KtsGroupServiceImpl.java

@ -3,10 +3,12 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.research.common.constant.UserConstants;
import com.research.common.core.domain.JsonResponse;
import com.research.common.core.domain.entity.SysUser;
import com.research.common.core.domain.model.LoginUser;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.CommonDto;
@ -69,7 +71,10 @@ public class KtsGroupServiceImpl implements KtsGroupService {
List<KtResearchContent> ktResearchContents = ktResearchContentMapper.selectByExample(ktResearchContentExample);
if (CollUtil.isNotEmpty(ktResearchContents)) {
result.setPlanTotal(ktResearchContents.size());
result.setPlanIng(ktResearchContents.stream().filter(ktResearchContent -> ktResearchContent.getStatus() == 1).count());
// if(CollUtil.isNotEmpty(result.getChildrenList())){
result.setPlanIng(ktResearchContents.stream().filter(ktResearchContent -> ktResearchContent.getStatus() == 1).count());
// }
result.setNrList(BeanUtil.copyToList(ktResearchContents, GroupVO.Detail.Nr.class));
}
//查询成果
KtExpectedOutcomesExample ktExpectedOutcomesExample = new KtExpectedOutcomesExample();
@ -152,7 +157,17 @@ public class KtsGroupServiceImpl implements KtsGroupService {
ktExpectedOutcomesExample.createCriteria().andKtGroupIdEqualTo(id).andDelFlagEqualTo((byte) 0);
List<KtExpectedOutcomes> ktExpectedOutcomes = ktExpectedOutcomesMapper.selectByExampleWithBLOBs(ktExpectedOutcomesExample);
if (CollUtil.isNotEmpty(ktExpectedOutcomes)) {
detail.setYqcgList(BeanUtil.copyToList(ktExpectedOutcomes, GroupVO.Detail.Yqcg.class));
List<GroupVO.Detail.Yqcg> yqcgList = new ArrayList<>();
ktExpectedOutcomes.forEach(ktExpectedOutcome -> {
GroupVO.Detail.Yqcg yqcg = new GroupVO.Detail.Yqcg();
yqcg.setId(ktExpectedOutcome.getId());
yqcg.setContent(ktExpectedOutcome.getOutcomes());
yqcg.setOutcomes(ktExpectedOutcome.getOutcomes());
yqcg.setSort(ktExpectedOutcome.getSort());
yqcg.setStatus(ktExpectedOutcome.getStatus());
yqcgList.add(yqcg);
});
detail.setYqcgList(yqcgList);
}
KtResearchContentExample ktResearchContentExample = new KtResearchContentExample();
@ -199,11 +214,16 @@ public class KtsGroupServiceImpl implements KtsGroupService {
@Override
public KtsKtGroup add(GroupDto.Add dto) {
LoginUser loginUser = SecurityUtils.getLoginUser();
//根据登录账号查询项目
PrjProjInfo proInfoByTenantId = clientPrjProjInfoService.getProInfoByTenantId(SecurityUtils.getTenantId());
PrjProjInfo proInfoByTenantId = clientPrjProjInfoService.getProInfoByTenantId(loginUser.getTenantId());
if (proInfoByTenantId == null) {
throw new BaseException("未查询到项目");
}
//检查添加的成员是否是当前用户所属的合作单位
if(!Objects.equals(dto.getProjOrgId(), loginUser.getUser().getOrgId())){
throw new BaseException("您无法在其他合作单位下添加或修改课题组");
}
KtsKtGroupWithBLOBs ktsKtGroup = BeanUtil.copyProperties(dto, KtsKtGroupWithBLOBs.class);
if (dto.getId() == null) {
ktsKtGroup.setId(IdUtil.getSnowflakeNextId());
@ -212,6 +232,11 @@ public class KtsGroupServiceImpl implements KtsGroupService {
ktsKtGroup.setCreateTime(new Date());
ktsKtGroup.setDelFlag((byte) 0);
ktsKtGroup.setProjId(proInfoByTenantId.getId());
if(ObjectUtil.isNotNull(ktsKtGroup.getParentKtId())){
ktsKtGroup.setType((byte) 2);
}else{
ktsKtGroup.setType((byte) 0);
}
ktsKtGroupMapper.insertSelective(ktsKtGroup);
} else {
@ -224,11 +249,27 @@ public class KtsGroupServiceImpl implements KtsGroupService {
@Override
public void del(CommonDto.DelDto dto) {
if(CollUtil.isNotEmpty(dto.getIdList())){
LoginUser loginUser = SecurityUtils.getLoginUser();
for (Long l : dto.getIdList()) {
KtsKtGroupWithBLOBs ktsKtGroup = ktsKtGroupMapper.selectByPrimaryKey(l);
if(ObjectUtil.isNotNull(ktsKtGroup) && !ktsKtGroup.getProjOrgId().equals(loginUser.getUser().getOrgId())){
throw new BaseException("您无法删除其他合作单位的课题组");
}
}
}
KtsKtGroupExample ktsKtGroupExample = new KtsKtGroupExample();
ktsKtGroupExample.createCriteria().andIdIn(dto.getIdList());
KtsKtGroupWithBLOBs ktsKtGroup = new KtsKtGroupWithBLOBs();
ktsKtGroup.setDelFlag((byte) 1);
ktsKtGroupMapper.updateByExampleSelective(ktsKtGroup, ktsKtGroupExample);
//删除子级课题组
KtsKtGroupExample ktsKtGroupExample1 = new KtsKtGroupExample();
ktsKtGroupExample1.createCriteria().andParentKtIdIn(dto.getIdList());
ktsKtGroupMapper.updateByExampleSelective(ktsKtGroup, ktsKtGroupExample1);
}
@Override
@ -305,55 +346,70 @@ public class KtsGroupServiceImpl implements KtsGroupService {
@Override
public KtsKtGroupMember addMember(GroupDto.AddMember dto) {
//是否传了课题组ID,没传且课题组名称不为空,则添加课题组
if (dto.getKtGroupId() == null && StrUtil.isNotEmpty(dto.getKtGroupName())) {
GroupDto.Add add = new GroupDto.Add();
add.setKtGroupName(dto.getKtGroupName());
add.setProjId(dto.getProjId());
add.setProjOrgId(dto.getProjOrgId());
add.setIntro(dto.getKtGroupIntro());
add.setName(dto.getMemberName());
add.setPhone(dto.getMemberPhone());
add.setParentKtId(dto.getParentKtId());
KtsKtGroup add1 = add(add);
dto.setKtGroupId(add1.getId());
LoginUser loginUser = SecurityUtils.getLoginUser();
//检查添加的成员是否是当前用户所属的合作单位
Long projOrgId = ObjectUtil.isNull(dto.getProjOrgId()) ? dto.getOrgId() : dto.getProjOrgId();
if(Objects.isNull(projOrgId)){
projOrgId = loginUser.getUser().getOrgId();
}else if(!projOrgId.equals(loginUser.getUser().getOrgId())){
throw new BaseException("您无法在其他合作单位下添加或修改课题组成员");
}
//添加课题组成员
KtsKtGroupMember ktsKtGroupMember = BeanUtil.copyProperties(dto, KtsKtGroupMember.class);
ktsKtGroupMember.setEnrollTime(dto.getEnrollmentTime());
//是否传了用户ID 没传用户id且传了用户名 添加用户
if (dto.getUserId() == null && StrUtil.isNotEmpty(dto.getMemberName())) {
//查询手机号是否已有用户
SysUser sysUser = sysUserService.selectUserByUserName(dto.getUsername());
if (sysUser != null && "0".equals(sysUser.getDelFlag()) && dto.getConfirm() == 0) {
throw new BaseException(dto.getUsername() + " 用户名已存在,请确认是否添加该用户!");
ktsKtGroupMember.setEnrollTime(dto.getEnrollmentTime());
if(dto.getType().contains("1")){
ktsKtGroupMember.setType("1");
}else {
ktsKtGroupMember.setType("2");
}
//id不为空则修改
if(ObjectUtil.isNotNull(dto.getId())){
//根据手机号查询课题组成员
KtsKtGroupMemberExample ktsKtGroupMemberExample = new KtsKtGroupMemberExample();
ktsKtGroupMemberExample.createCriteria()
.andMemberPhoneEqualTo(dto.getMemberPhone())
.andKtGroupIdEqualTo(dto.getKtGroupId())
.andIdNotEqualTo(dto.getId())
.andDelFlagEqualTo((byte) 0);
if(ktsKtGroupMemberMapper.countByExample(ktsKtGroupMemberExample) > 0){
throw new BaseException("该手机号已存在");
}
sysUser = new SysUser();
sysUser.setUserId(dto.getUserId());
sysUser.setNickName(ktsKtGroupMember.getMemberName());
sysUser.setUserName(dto.getMemberPhone());
sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
sysUser.setStatus(UserConstants.NORMAL);
sysUser.setDeptId(dto.getDeptId());
sysUser.setCreateBy(SecurityUtils.getUsername());
sysUser.setEmail(ktsKtGroupMember.getMemberEmail());
sysUser.setPhonenumber(ktsKtGroupMember.getMemberPhone());
sysUser.setCreateTime(new Date());
if (CollUtil.isNotEmpty(dto.getRoleIdList())) {
sysUser.setRoleIds(dto.getRoleIdList().toArray(new Long[0]));
} else {
if (dto.getType().contains("0")) {
sysUser.setRoleIds(new Long[]{100L});
} else {
sysUser.setRoleIds(new Long[]{2L});
}
//根据手机号查询用户
SysUser sysUser = sysUserService.selectUserByPhone(dto.getMemberPhone());
if (sysUser != null && "0".equals(sysUser.getDelFlag())) {
//如果用户已存在,直接关联该用户
ktsKtGroupMember.setUserId(sysUser.getUserId());
}
ktsKtGroupMemberMapper.updateByPrimaryKeySelective(ktsKtGroupMember);
}else {
//检查课题组id,没有且课题组名称不为空,则创建课题组信息
if (dto.getKtGroupId() == null && StrUtil.isNotEmpty(dto.getKtGroupName())) {
GroupDto.Add add = new GroupDto.Add();
add.setKtGroupName(dto.getKtGroupName());
add.setProjId(dto.getProjId());
add.setProjOrgId(projOrgId);
add.setIntro(dto.getKtGroupIntro());
add.setName(dto.getMemberName());
add.setPhone(dto.getMemberPhone());
add.setParentKtId(dto.getParentKtId());
KtsKtGroup add1 = add(add);
ktsKtGroupMember.setKtGroupId(add1.getId());
}
//根据手机号查询课题组成员
KtsKtGroupMemberExample ktsKtGroupMemberExample = new KtsKtGroupMemberExample();
ktsKtGroupMemberExample.createCriteria().andMemberPhoneEqualTo(ktsKtGroupMember.getMemberPhone()).andKtGroupIdEqualTo(ktsKtGroupMember.getKtGroupId()).andDelFlagEqualTo((byte) 0);
List<KtsKtGroupMember> ktsKtGroupMembers = ktsKtGroupMemberMapper.selectByExample(ktsKtGroupMemberExample);
if (CollUtil.isNotEmpty(ktsKtGroupMembers)) {
throw new BaseException("该手机号已存在");
}
//根据手机号查询用户
SysUser sysUser = sysUserService.selectUserByPhone(ktsKtGroupMember.getMemberPhone());
if (sysUser != null && "0".equals(sysUser.getDelFlag())) {
//如果用户已存在,直接关联该用户
ktsKtGroupMember.setUserId(sysUser.getUserId());
}
sysUserService.insertUser(sysUser);
ktsKtGroupMember.setUserId(sysUser.getUserId());
} else {
ktsKtGroupMember.setUserId(dto.getUserId());
}
if (dto.getId() == null) {
ktsKtGroupMember.setId(IdUtil.getSnowflakeNextId());
ktsKtGroupMember.setCreateBy(SecurityUtils.getUsername());
ktsKtGroupMember.setMemberStatus((byte) 0);
@ -362,19 +418,92 @@ public class KtsGroupServiceImpl implements KtsGroupService {
ktsKtGroupMember.setProjOrgId(dto.getProjOrgId());
ktsKtGroupMember.setDelFlag((byte) 0);
ktsKtGroupMemberMapper.insertSelective(ktsKtGroupMember);
return ktsKtGroupMember;
} else {
ktsKtGroupMember.setUpdateBy(SecurityUtils.getUsername());
ktsKtGroupMember.setUpdateTime(new Date());
ktsKtGroupMember.setDelFlag((byte) 0);
ktsKtGroupMemberMapper.updateByPrimaryKey(ktsKtGroupMember);
return ktsKtGroupMember;
}
return ktsKtGroupMember;
// //是否传了课题组ID,没传且课题组名称不为空,则添加课题组
// if (dto.getKtGroupId() == null && StrUtil.isNotEmpty(dto.getKtGroupName())) {
// GroupDto.Add add = new GroupDto.Add();
// add.setKtGroupName(dto.getKtGroupName());
// add.setProjId(dto.getProjId());
// add.setProjOrgId(dto.getProjOrgId());
// add.setIntro(dto.getKtGroupIntro());
// add.setName(dto.getMemberName());
// add.setPhone(dto.getMemberPhone());
// add.setParentKtId(dto.getParentKtId());
// KtsKtGroup add1 = add(add);
// dto.setKtGroupId(add1.getId());
// }
//
// KtsKtGroupMember ktsKtGroupMember = BeanUtil.copyProperties(dto, KtsKtGroupMember.class);
// ktsKtGroupMember.setEnrollTime(dto.getEnrollmentTime());
// //是否传了用户ID 没传用户id且传了用户名 添加用户
// if (dto.getUserId() == null && StrUtil.isNotEmpty(dto.getMemberName())) {
// //查询手机号是否已有用户
// SysUser sysUser = sysUserService.selectUserByUserName(dto.getUsername());
// if (sysUser != null && "0".equals(sysUser.getDelFlag()) && dto.getConfirm() == 0) {
// throw new BaseException(dto.getUsername() + " 用户名已存在,请确认是否添加该用户!");
// }
// sysUser = new SysUser();
// sysUser.setUserId(dto.getUserId());
// sysUser.setNickName(ktsKtGroupMember.getMemberName());
// sysUser.setUserName(dto.getMemberPhone());
// sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
// sysUser.setStatus(UserConstants.NORMAL);
// sysUser.setDeptId(dto.getDeptId());
// sysUser.setCreateBy(SecurityUtils.getUsername());
// sysUser.setEmail(ktsKtGroupMember.getMemberEmail());
// sysUser.setPhonenumber(ktsKtGroupMember.getMemberPhone());
// sysUser.setCreateTime(new Date());
// if (CollUtil.isNotEmpty(dto.getRoleIdList())) {
// sysUser.setRoleIds(dto.getRoleIdList().toArray(new Long[0]));
// } else {
// if (dto.getType().contains("0")) {
// sysUser.setRoleIds(new Long[]{100L});
// } else {
// sysUser.setRoleIds(new Long[]{2L});
// }
// }
// sysUserService.insertUser(sysUser);
// ktsKtGroupMember.setUserId(sysUser.getUserId());
// } else {
// ktsKtGroupMember.setUserId(dto.getUserId());
// }
// if (dto.getId() == null) {
// ktsKtGroupMember.setId(IdUtil.getSnowflakeNextId());
// ktsKtGroupMember.setCreateBy(SecurityUtils.getUsername());
// ktsKtGroupMember.setMemberStatus((byte) 0);
// ktsKtGroupMember.setAuditStatus((byte) 0);
// ktsKtGroupMember.setCreateTime(new Date());
// ktsKtGroupMember.setProjOrgId(dto.getProjOrgId());
// ktsKtGroupMember.setDelFlag((byte) 0);
// ktsKtGroupMemberMapper.insertSelective(ktsKtGroupMember);
// return ktsKtGroupMember;
// } else {
// ktsKtGroupMember.setUpdateBy(SecurityUtils.getUsername());
// ktsKtGroupMember.setUpdateTime(new Date());
// ktsKtGroupMember.setDelFlag((byte) 0);
// ktsKtGroupMemberMapper.updateByPrimaryKey(ktsKtGroupMember);
// return ktsKtGroupMember;
// }
}
@Override
public void delMember(CommonDto.DelDto dto) {
if(CollUtil.isNotEmpty(dto.getIdList())){
LoginUser loginUser = SecurityUtils.getLoginUser();
for (Long l : dto.getIdList()) {
KtsKtGroupMember ktsKtGroupMember = ktsKtGroupMemberMapper.selectByPrimaryKey(l);
if(ObjectUtil.isNotNull(ktsKtGroupMember)){
KtsKtGroupWithBLOBs ktsKtGroup = ktsKtGroupMapper.selectByPrimaryKey(ktsKtGroupMember.getKtGroupId());
if(ObjectUtil.isNotNull(ktsKtGroup) && !ktsKtGroup.getProjOrgId().equals(loginUser.getUser().getOrgId())){
throw new BaseException("您无法删除其他合作单位下的成员");
}
}
}
}
KtsKtGroupMemberExample ktsKtGroupMemberExample = new KtsKtGroupMemberExample();
ktsKtGroupMemberExample.createCriteria().andIdIn(dto.getIdList());
KtsKtGroupMember ktsKtGroupMember = new KtsKtGroupMember();
@ -399,6 +528,7 @@ public class KtsGroupServiceImpl implements KtsGroupService {
}
sysUser = new SysUser();
sysUser.setUserId(IdUtil.getSnowflakeNextId());
sysUser.setOrgId(ktsKtGroupMember.getProjOrgId());
sysUser.setNickName(ktsKtGroupMember.getMemberName());
sysUser.setUserName(ktsKtGroupMember.getMemberPhone());
sysUser.setPassword(SecurityUtils.encryptPassword(UserConstants.DEFALT_PASSWORD));
@ -437,7 +567,15 @@ public class KtsGroupServiceImpl implements KtsGroupService {
@Override
public Integer configAdd(GroupDto.ConfigAdd dto) {
KtConfig ktConfig = BeanUtil.copyProperties(dto, KtConfig.class);
return ktConfigMapper.updateByPrimaryKeySelective(ktConfig);
if(ObjectUtil.isNull(dto.getId())){
ktConfig.setId(IdUtil.getSnowflakeNextId());
ktConfig.setCreateBy(SecurityUtils.getUsername());
return ktConfigMapper.insertSelective(ktConfig);
}else {
ktConfig.setId(Long.parseLong(dto.getId()));
ktConfig.setUpdateBy(SecurityUtils.getUsername());
return ktConfigMapper.updateByPrimaryKeySelective(ktConfig);
}
}
@Override
@ -508,15 +646,26 @@ public class KtsGroupServiceImpl implements KtsGroupService {
});
}
if (CollUtil.isNotEmpty(dto.getYqcgList())) {
List<KtExpectedOutcomes> ktExpectedOutcomes = BeanUtil.copyToList(dto.getYqcgList(), KtExpectedOutcomes.class);
ktExpectedOutcomes.forEach(outcomes1 -> {
for (GroupDto.AddOutcomes addOutcomes : dto.getYqcgList()) {
KtExpectedOutcomes outcomes1 = new KtExpectedOutcomes();
BeanUtil.copyProperties(addOutcomes, outcomes1);
outcomes1.setOutcomes(addOutcomes.getContent());
outcomes1.setCreateBy(SecurityUtils.getUsername());
outcomes1.setCreateTime(new Date());
outcomes1.setDelFlag((byte) 0);
outcomes1.setKtGroupId(dto.getGroupId());
outcomes1.setId(IdUtil.getSnowflakeNextId());
ktExpectedOutcomesMapper.insertSelective(outcomes1);
});
}
// List<KtExpectedOutcomes> ktExpectedOutcomes = BeanUtil.copyToList(dto.getYqcgList(), KtExpectedOutcomes.class);
// ktExpectedOutcomes.forEach(outcomes1 -> {
// outcomes1.setCreateBy(SecurityUtils.getUsername());
// outcomes1.setCreateTime(new Date());
// outcomes1.setDelFlag((byte) 0);
// outcomes1.setKtGroupId(dto.getGroupId());
// outcomes1.setId(IdUtil.getSnowflakeNextId());
// ktExpectedOutcomesMapper.insertSelective(outcomes1);
// });
}
return null;
}

13
research-system/src/main/java/com/research/system/service/impl/MeetingServiceImpl.java

@ -7,10 +7,7 @@ import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.MeetingDto;
import com.research.system.domain.po.MetMeetingParticipant;
import com.research.system.domain.po.MetMeetingParticipantExample;
import com.research.system.domain.po.MetMeetingRecord;
import com.research.system.domain.po.PrjProjInfo;
import com.research.system.domain.po.*;
import com.research.system.domain.vo.MeetingVo;
import com.research.system.persist.dao.MeetingDao;
import com.research.system.persist.mapper.MetMeetingParticipantMapper;
@ -98,10 +95,10 @@ public class MeetingServiceImpl implements MeetingService {
@Override
public void del(CommonDto.DelDto dto) {
MetMeetingParticipantExample metMeetingParticipantExample = new MetMeetingParticipantExample();
metMeetingParticipantExample.createCriteria().andMeetingIdIn(dto.getIdList());
MetMeetingParticipant metMeetingParticipant = new MetMeetingParticipant();
MetMeetingRecordExample metMeetingRecordExample = new MetMeetingRecordExample();
metMeetingRecordExample.createCriteria().andIdIn(dto.getIdList());
MetMeetingRecord metMeetingParticipant = new MetMeetingRecord();
metMeetingParticipant.setDelFlag((byte) 1);
metMeetingParticipantMapper.updateByExampleSelective(metMeetingParticipant, metMeetingParticipantExample);
metMeetingRecordMapper.updateByExampleSelective(metMeetingParticipant, metMeetingRecordExample);
}
}

401
research-system/src/main/java/com/research/system/service/impl/MemberAduitServiceImpl.java

@ -2,41 +2,45 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.research.common.constant.UserConstants;
import com.research.common.core.domain.entity.SysUser;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.GroupDto;
import com.research.common.wechat.ExternalService;
import com.research.system.domain.dto.MemberAduitDto;
import com.research.system.domain.po.KtsKtGroupMemberAduit;
import com.research.system.domain.po.KtsKtGroupMemberAduitExample;
import com.research.system.domain.po.SrvMessage;
import com.research.system.domain.po.TmsTenantUser;
import com.research.system.domain.po.*;
import com.research.system.domain.vo.MemberAduitVo;
import com.research.system.persist.dao.MemberAduitDao;
import com.research.system.persist.mapper.KtsKtGroupMapper;
import com.research.system.persist.mapper.KtsKtGroupMemberAduitMapper;
import com.research.system.persist.mapper.KtsKtGroupMemberMapper;
import com.research.system.persist.mapper.SrvMessageMapper;
import com.research.system.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author zzc
* @Package com.research.system.service.impl
* @Date 2025/9/16 9:40
* @description:
*/
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Slf4j
public class MemberAduitServiceImpl implements MemberAduitService {
@Resource
@ -48,18 +52,20 @@ public class MemberAduitServiceImpl implements MemberAduitService {
@Resource
private SrvMessageMapper srvMessageMapper;
@Resource
private KtsGroupService ktsGroupService;
private KtsKtGroupMapper ktsKtGroupMapper;
@Resource
private TmsTenantUserService tmsTenantUserService;
private ExternalService externalService;
@Resource
private ISysDictDataService sysDictDataService;
private KtsKtGroupMemberMapper ktsKtGroupMemberMapper;
@Value(value = "${research.smsUrl}")
private String smsUrl;
@Override
public void register(MemberAduitDto.Register dto) {
//1.添加申请记录 (审核人) 待审核
// 判定用户是否存在, 存在就提示登录 判定是否有申请记录, 有提示已申请
KtsKtGroupMemberAduitExample ktsKtGroupMemberAduitExample = new KtsKtGroupMemberAduitExample();
ktsKtGroupMemberAduitExample.createCriteria().andMemberPhoneEqualTo(dto.getMemberPhone()).andStatusEqualTo((byte) 0);
ktsKtGroupMemberAduitExample.createCriteria().andMemberPhoneEqualTo(dto.getMemberPhone()).andStatusEqualTo((byte) 0).andDelFlagEqualTo((byte) 0);
if (ktsKtGroupMemberAduitMapper.countByExample(ktsKtGroupMemberAduitExample) > 0) {
//提示已申请
throw new RuntimeException("账号审核中,请耐心等待");
@ -70,29 +76,43 @@ public class MemberAduitServiceImpl implements MemberAduitService {
throw new RuntimeException("账号已存在,请登录");
}
}
List<Long> reviewerList = new ArrayList<>();
//2.查询该合作单位负责人角色的人 发送审核消息
if (dto.getKtGroupId() != null || dto.getParentKtId() != null) {
//101 合作单位负责人
//102 项目负责人
reviewerList = memberAduitDao.queryMemberIdList(dto.getProjOrgId(), 101L);
}
// //验证微信小程序是否已经提交注册
// KtsKtGroupMemberAduitExample wxAduitExample = new KtsKtGroupMemberAduitExample();
// wxAduitExample.createCriteria().andOpenIdEqualTo(dto.getOpenId()).andStatusEqualTo((byte) 0).andDelFlagEqualTo((byte) 0);
// if (ktsKtGroupMemberAduitMapper.countByExample(wxAduitExample) > 0) {
// //提示已申请
// throw new RuntimeException("此微信已提交注册,正在审核中,请耐心等待");
// }
//新加审核记录
KtsKtGroupMemberAduit ktsKtGroupMemberAduit = BeanUtil.copyProperties(dto, KtsKtGroupMemberAduit.class);
ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
ktsKtGroupMemberAduit.setEnrollTime(dto.getEnrollmentTime());
ktsKtGroupMemberAduit.setStatus((byte) 0);
if (CollUtil.isEmpty(dto.getRoleIdList())) {
if (dto.getType().contains("0")) {
ktsKtGroupMemberAduit.setRoleIdList("100");
}else {
ktsKtGroupMemberAduit.setRoleIdList("2");
//密码如果是空,给个默认密码
if (StrUtil.isEmpty(dto.getPassword())) {
// ktsKtGroupMemberAduit.setPassword(RandomUtil.randomString(10));
ktsKtGroupMemberAduit.setPassword("yxky_123#");
}
//根据提交的类型判断,判断审核类型
List<Long> reviewerList;
if (dto.getType().equals("1")) {
//0表示负责人,查找项目负责人,审核类型step为0一级审核
reviewerList = memberAduitDao.queryReviewerUserIdList(null, 0);
if(CollUtil.isEmpty(reviewerList)){
throw new BaseException("未找到项目的负责人信息");
}
}else {
ktsKtGroupMemberAduit.setRoleIdList(dto.getRoleIdList().stream().map(String::valueOf).collect(Collectors.joining(",")));
ktsKtGroupMemberAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
}else{
//否则是参与人,查找当前合作单位的负责人信息,审核类型step为1,单位负责人审核
reviewerList = memberAduitDao.queryReviewerUserIdList(dto.getProjOrgId(), 1);
if(CollUtil.isEmpty(reviewerList)){
throw new BaseException("未找到该合作单位的负责人信息");
}
ktsKtGroupMemberAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
}
ktsKtGroupMemberAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
//发送消息
if (CollUtil.isNotEmpty(reviewerList)) {
//添加消息
SrvMessage srvMessage = new SrvMessage();
@ -103,6 +123,40 @@ public class MemberAduitServiceImpl implements MemberAduitService {
srvMessage.setReceiver(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
srvMessageMapper.insertSelective(srvMessage);
}
// List<Long> reviewerList = new ArrayList<>();
// //2.查询该合作单位负责人角色的人 发送审核消息
// if (dto.getKtGroupId() != null || dto.getParentKtId() != null) {
// //101 合作单位负责人
// //102 项目负责人
// reviewerList = memberAduitDao.queryMemberIdList(dto.getProjOrgId(), 101L);
// }
// KtsKtGroupMemberAduit ktsKtGroupMemberAduit = BeanUtil.copyProperties(dto, KtsKtGroupMemberAduit.class);
// ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
// ktsKtGroupMemberAduit.setStatus((byte) 0);
// if (CollUtil.isEmpty(dto.getRoleIdList())) {
// if (dto.getType().contains("0")) {
// ktsKtGroupMemberAduit.setRoleIdList("100");
// }else {
// ktsKtGroupMemberAduit.setRoleIdList("2");
// }
// }else {
// ktsKtGroupMemberAduit.setRoleIdList(dto.getRoleIdList().stream().map(String::valueOf).collect(Collectors.joining(",")));
// }
// ktsKtGroupMemberAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
// ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
// if (CollUtil.isNotEmpty(reviewerList)) {
// //添加消息
// SrvMessage srvMessage = new SrvMessage();
// srvMessage.setId(IdUtil.getSnowflakeNextId());
// srvMessage.setContent("成员申请审核");
// srvMessage.setBusinessId(ktsKtGroupMemberAduit.getId());
// srvMessage.setStatus((byte) 0);
// srvMessage.setReceiver(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
// srvMessageMapper.insertSelective(srvMessage);
// }
//3. 审核完成之后, 由项目负责人审核 项目负责人审核完之后,审核通过。
}
@ -112,61 +166,254 @@ public class MemberAduitServiceImpl implements MemberAduitService {
if (ktsKtGroupMemberAduit == null) {
return ;
}
//验证当前用户是否是审核人
if(SecurityUtils.getUserId() != 1L){
//超级管理员都可以审核
boolean isReviewer = false;
String[] split = ktsKtGroupMemberAduit.getReviewer().split(",");
for (String s : split) {
if (s.equals(SecurityUtils.getUserId().toString())) {
isReviewer = true;
break;
}
}
if (!isReviewer) {
throw new BaseException("您不是当前记录的审核人");
}
}
//判断当前审核级别
boolean isAudit = false;
if (ktsKtGroupMemberAduit.getStep() == 0) {
//一级审核需要判断,申请的类型,来确定是审核通过还是进入下一步
if(ktsKtGroupMemberAduit.getType().equals("1")){
//如果申请的是负责人,需要项目负责人审核,审核通过后及通过
isAudit = status == 1;
}else {
//如果是参与人,需要合作单位负责人审核,审核后进入下一环节(项目负责人)
if(status == 1) {
List<Long> reviewerList = memberAduitDao.queryReviewerUserIdList(null, 0);
if (CollUtil.isEmpty(reviewerList)) {
throw new BaseException("未找到项目的负责人信息");
}
//如果当前用户和二次审核人一样,则直接审核通过
for (Long l : reviewerList) {
if(SecurityUtils.getUserId().equals(l)){
isAudit = true;
}
}
if(!isAudit){
KtsKtGroupMemberAduit newAduit = new KtsKtGroupMemberAduit();
BeanUtil.copyProperties(ktsKtGroupMemberAduit, newAduit);
newAduit.setId(IdUtil.getSnowflakeNextId());
newAduit.setStep((byte) 1);
newAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
ktsKtGroupMemberAduitMapper.insertSelective(newAduit);
//添加消息
SrvMessage srvMessage = new SrvMessage();
srvMessage.setId(IdUtil.getSnowflakeNextId());
srvMessage.setContent("成员申请审核");
srvMessage.setBusinessId(newAduit.getId());
srvMessage.setStatus((byte) 0);
srvMessage.setReceiver(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
srvMessageMapper.insertSelective(srvMessage);
}
}
}
}else{
//二级审核时,审核通过即通过
isAudit = status == 1;
}
//审核成功
if (isAudit) {
//先添加用户
Long userId = saveSysUser(ktsKtGroupMemberAduit);
//判断是否有课题组id
if(ObjectUtil.isNotNull(ktsKtGroupMemberAduit.getKtGroupId())){
//有则添加课题组成员
saveKtGroupMember(userId, ktsKtGroupMemberAduit);
}else if(StrUtil.isNotEmpty(ktsKtGroupMemberAduit.getKtGroupName())){
//没有id但有课题组名称。添加一个课题组,且添加一个课题组成员
//根据登录账号查询项目
KtsKtGroupWithBLOBs ktsKtGroup = new KtsKtGroupWithBLOBs();
ktsKtGroup.setId(IdUtil.getSnowflakeNextId());
ktsKtGroup.setKtGroupName(ktsKtGroupMemberAduit.getKtGroupName());
ktsKtGroup.setProjOrgId(ktsKtGroupMemberAduit.getProjOrgId());
ktsKtGroup.setIntro(ktsKtGroupMemberAduit.getKtGroupIntro());
ktsKtGroup.setName(ktsKtGroupMemberAduit.getKtGroupName());
ktsKtGroup.setPhone(ktsKtGroupMemberAduit.getMemberPhone());
ktsKtGroupMapper.insertSelective(ktsKtGroup);
ktsKtGroupMemberAduit.setKtGroupId(ktsKtGroup.getId());
//有则添加课题组成员
ktsKtGroupMemberAduit.setType("1");
saveKtGroupMember(userId, ktsKtGroupMemberAduit);
}else{
//根据手机号查找所有课题组下的成员,
KtsKtGroupMemberExample example = new KtsKtGroupMemberExample();
example.createCriteria().andMemberPhoneEqualTo(ktsKtGroupMemberAduit.getMemberPhone())
.andUserIdIsNull().andDelFlagEqualTo((byte) 0);
List<KtsKtGroupMember> list = ktsKtGroupMemberMapper.selectByExample(example);
if (CollUtil.isNotEmpty(list)) {
//关联user
for (KtsKtGroupMember ktsKtGroupMember : list) {
ktsKtGroupMember.setUserId(userId);
ktsKtGroupMemberMapper.updateByPrimaryKeySelective(ktsKtGroupMember);
}
}
}
}
//修改审核信息的状态
ktsKtGroupMemberAduit.setStatus(status);
ktsKtGroupMemberAduit.setReviewedTime(new Date());
ktsKtGroupMemberAduit.setReviewedPersion(SecurityUtils.getUserId());
ktsKtGroupMemberAduitMapper.updateByPrimaryKeySelective(ktsKtGroupMemberAduit);
//通过的话判断当前审核级别, step = 0 ,需要查询项目负责人,添加项目负责人审核,发送通知
Byte step = ktsKtGroupMemberAduit.getStep();
//山西医科大学只审核一次
if (step == 0 && ktsKtGroupMemberAduit.getProjOrgId() != 1L) {
ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
ktsKtGroupMemberAduit.setStep((byte) 1);
List<Long> list = memberAduitDao.queryMemberIdList(null, 102L);
if (CollUtil.isEmpty(list)) {
throw new BaseException("未查询到项目负责人信息");
}
ktsKtGroupMemberAduit.setReviewedPersion(null);
ktsKtGroupMemberAduit.setReviewedTime(null);
ktsKtGroupMemberAduit.setStatus((byte) 0);
ktsKtGroupMemberAduit.setReviewer(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
//添加消息
SrvMessage srvMessage = new SrvMessage();
srvMessage.setId(IdUtil.getSnowflakeNextId());
srvMessage.setContent("成员申请审核");
srvMessage.setBusinessId(ktsKtGroupMemberAduit.getId());
srvMessage.setStatus((byte) 0);
srvMessage.setReceiver(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
srvMessageMapper.insertSelective(srvMessage);
// //通过的话判断当前审核级别, step = 0 ,需要查询项目负责人,添加项目负责人审核,发送通知
// Byte step = ktsKtGroupMemberAduit.getStep();
// //山西医科大学只审核一次
// if (step == 0 && ktsKtGroupMemberAduit.getProjOrgId() != 1L) {
// ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
// ktsKtGroupMemberAduit.setStep((byte) 1);
// List<Long> list = memberAduitDao.queryMemberIdList(null, 102L);
// if (CollUtil.isEmpty(list)) {
// throw new BaseException("未查询到项目负责人信息");
// }
// ktsKtGroupMemberAduit.setReviewedPersion(null);
// ktsKtGroupMemberAduit.setReviewedTime(null);
// ktsKtGroupMemberAduit.setStatus((byte) 0);
// ktsKtGroupMemberAduit.setReviewer(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
// ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
// //添加消息
// SrvMessage srvMessage = new SrvMessage();
// srvMessage.setId(IdUtil.getSnowflakeNextId());
// srvMessage.setContent("成员申请审核");
// srvMessage.setBusinessId(ktsKtGroupMemberAduit.getId());
// srvMessage.setStatus((byte) 0);
// srvMessage.setReceiver(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
// srvMessageMapper.insertSelective(srvMessage);
//
// } else {
// //审核成功, 添加成员
// GroupDto.AddMember addMember = new GroupDto.AddMember();
// if (StrUtil.isNotEmpty(ktsKtGroupMemberAduit.getRoleIdList())) {
// String[] split = ktsKtGroupMemberAduit.getRoleIdList().split(",");
// addMember.setRoleIdList(Arrays.stream(split).map(Long::parseLong).collect(Collectors.toList()));
// }
// BeanUtil.copyProperties(ktsKtGroupMemberAduit, addMember);
// addMember.setId(null);
// ktsGroupService.addMember(addMember);
//
//// //添加主库租户用户
//// TmsTenantUser tmsTenantUser = new TmsTenantUser();
//// tmsTenantUser.setCreateBy(SecurityUtils.getUsername());
//// tmsTenantUser.setCreateTime(new Date());
//// tmsTenantUser.setDelFlag((byte) 0);
//// tmsTenantUser.setPhonenumber(ktsKtGroupMemberAduit.getMemberPhone());
//// tmsTenantUser.setUserName(ktsKtGroupMemberAduit.getUsername());
//// tmsTenantUserService.insert(tmsTenantUser);
// }
}
} else {
//审核成功, 添加成员
GroupDto.AddMember addMember = new GroupDto.AddMember();
if (StrUtil.isNotEmpty(ktsKtGroupMemberAduit.getRoleIdList())) {
String[] split = ktsKtGroupMemberAduit.getRoleIdList().split(",");
addMember.setRoleIdList(Arrays.stream(split).map(Long::parseLong).collect(Collectors.toList()));
}
BeanUtil.copyProperties(ktsKtGroupMemberAduit, addMember);
addMember.setId(null);
ktsGroupService.addMember(addMember);
// //添加主库租户用户
// TmsTenantUser tmsTenantUser = new TmsTenantUser();
// tmsTenantUser.setCreateBy(SecurityUtils.getUsername());
// tmsTenantUser.setCreateTime(new Date());
// tmsTenantUser.setDelFlag((byte) 0);
// tmsTenantUser.setPhonenumber(ktsKtGroupMemberAduit.getMemberPhone());
// tmsTenantUser.setUserName(ktsKtGroupMemberAduit.getUsername());
// tmsTenantUserService.insert(tmsTenantUser);
private void saveKtGroupMember(Long userId, KtsKtGroupMemberAduit ktsKtGroupMemberAduit) {
//根据手机号查找当前的课题组成员
KtsKtGroupMemberExample example = new KtsKtGroupMemberExample();
example.createCriteria().andMemberPhoneEqualTo(ktsKtGroupMemberAduit.getMemberPhone())
.andKtGroupIdEqualTo(ktsKtGroupMemberAduit.getKtGroupId())
.andUserIdIsNull().andDelFlagEqualTo((byte) 0);
List<KtsKtGroupMember> list = ktsKtGroupMemberMapper.selectByExample(example);
if (CollUtil.isNotEmpty(list)) {
KtsKtGroupMember ktsKtGroupMember = list.get(0);
ktsKtGroupMember.setUserId(userId);
ktsKtGroupMemberMapper.updateByPrimaryKeySelective(ktsKtGroupMember);
}else {
KtsKtGroupMember ktsKtGroupMember = new KtsKtGroupMember();
ktsKtGroupMember.setId(IdUtil.getSnowflakeNextId());
ktsKtGroupMember.setUserId(userId);
ktsKtGroupMember.setProjOrgId(ktsKtGroupMemberAduit.getProjOrgId());
ktsKtGroupMember.setKtGroupId(ktsKtGroupMemberAduit.getKtGroupId());
ktsKtGroupMember.setMemberName(ktsKtGroupMemberAduit.getMemberName());
ktsKtGroupMember.setMemberPhone(ktsKtGroupMemberAduit.getMemberPhone());
ktsKtGroupMember.setMemberEmail(ktsKtGroupMemberAduit.getMemberEmail());
ktsKtGroupMember.setMemberGender(ktsKtGroupMemberAduit.getMemberGender());
ktsKtGroupMember.setMemberBirth(ktsKtGroupMemberAduit.getMemberBirth());
ktsKtGroupMember.setType(ktsKtGroupMemberAduit.getType());
ktsKtGroupMember.setCategory(ktsKtGroupMemberAduit.getCategory());
ktsKtGroupMember.setQualification(ktsKtGroupMemberAduit.getQualification());
ktsKtGroupMember.setTitle(ktsKtGroupMemberAduit.getTitle());
ktsKtGroupMemberMapper.insertSelective(ktsKtGroupMember);
}
return;
}
private Long saveSysUser(KtsKtGroupMemberAduit ktsKtGroupMemberAduit) {
//查询手机号是否已有用户
SysUser sysUser = sysUserService.selectUserByUserName(ktsKtGroupMemberAduit.getUsername());
if (sysUser != null && "0".equals(sysUser.getDelFlag())) {
throw new BaseException("该用户{}已存在,请勿重复添加", ktsKtGroupMemberAduit.getUsername());
}
sysUser = new SysUser();
sysUser.setUserId(IdUtil.getSnowflakeNextId());
sysUser.setOpenId(ktsKtGroupMemberAduit.getOpenId());
sysUser.setOrgId(ktsKtGroupMemberAduit.getProjOrgId());
sysUser.setNickName(ktsKtGroupMemberAduit.getMemberName());
sysUser.setUserName(ktsKtGroupMemberAduit.getUsername());
//默认头像
sysUser.setAvatar("/profile/avatar.png");
sysUser.setPassword(SecurityUtils.encryptPassword(ktsKtGroupMemberAduit.getPassword()));
sysUser.setStatus(UserConstants.NORMAL);
//部门id写死
sysUser.setDeptId(100L);
sysUser.setCreateBy(SecurityUtils.getUsername());
sysUser.setEmail(ktsKtGroupMemberAduit.getMemberEmail());
sysUser.setPhonenumber(ktsKtGroupMemberAduit.getMemberPhone());
sysUser.setCreateTime(new Date());
//角色通过申请类型和成员身份判断
String roleKey;
if(ktsKtGroupMemberAduit.getType().equals("1")){
//查找合作单位负责人角色id
roleKey = "org_admin";
}else {
roleKey = ktsKtGroupMemberAduit.getCategory() == 0 ? "role_staff" : "role_student";
}
//根据角色key查找角色id
Long roleId = memberAduitDao.getRoleByRoleKey(roleKey);
sysUser.setRoleIds(new Long[]{roleId});
sysUserService.insertUser(sysUser);
//添加成功发送邮件,调用发送邮件的接口
try {
externalService.sendMail(ktsKtGroupMemberAduit.getMemberEmail(),
"账号审核通过通知",
"您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit.getPassword() + "。请尽快登录并修改密码。");
// Map<String, Object> body = new HashMap<>();
// body.put("to", ktsKtGroupMemberAduit.getMemberEmail());
// body.put("subject", "账号审核通过通知");
// body.put("text", "您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit.getPassword() + "。请尽快登录并修改密码。");
// String jsonBody = JSONUtil.toJsonStr(body);
// String url = "http://127.0.0.1:7363/external/sendSimpleMail";
// HttpUtil.post(url, jsonBody);
}catch (Exception e){
log.error("发送邮件失败:{}", e.getMessage());
}
// //发送短信
// try {
// String body = HttpRequest.post(smsUrl).body(JSON.toJSONString(
// MapBuilder.create(new HashMap<String, Object>(3))
// .put("to", sysUser.getPhonenumber())
// .put("text", "您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit.getPassword() + "。请尽快登录并修改密码。")
// .build())
// ).timeout(5000).execute().body();
// System.out.println(body);
// }catch (Exception e){
// log.error("发送短信失败:{}", e.getMessage());
// }
return sysUser.getUserId();
}
@Override
public List<MemberAduitVo.Result> query(MemberAduitDto.Query dto) {
List<MemberAduitVo.Result> query = memberAduitDao.query(dto, SecurityUtils.getUserId());
return query;
return memberAduitDao.query(dto, SecurityUtils.getUserId());
}
}

12
research-system/src/main/java/com/research/system/service/impl/OutcomeServiceImpl.java

@ -3,6 +3,7 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.OutcomeDto;
@ -61,10 +62,19 @@ public class OutcomeServiceImpl implements OutcomeService {
achAchievement.setId(IdUtil.getSnowflakeNextId());
achAchievement.setCreateBy(SecurityUtils.getUsername());
achAchievement.setCreateTime(new Date());
achAchievement.setProjOrgId(SecurityUtils.getTenantId());
// achAchievement.setProjOrgId(SecurityUtils.getTenantId());
achAchievement.setDelFlag((byte) 0);
achAchievementMapper.insertSelective(achAchievement);
}else {
//创建者才可修改
if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
AchAchievement achAchievement1 = achAchievementMapper.selectByPrimaryKey(dto.getId());
if (!achAchievement1.getCreateBy().equals(SecurityUtils.getUsername())) {
throw new BaseException("您只能修改自己创建的信息");
}
}
achAchievement.setUpdateBy(SecurityUtils.getUsername());
achAchievement.setUpdateTime(new Date());
achAchievementMapper.updateByPrimaryKeySelective(achAchievement);

2
research-system/src/main/java/com/research/system/service/impl/ProgressServiceImpl.java

@ -44,7 +44,7 @@ public class ProgressServiceImpl implements ProgressService {
@Override
public List<ProProgressVo.OrgResult> queryProgressOrgList(ProProgressDto.Query query) {
return progressDao.queryProgressOrgList( query);
return progressDao.queryProgressOrgList(query);
}
@Override

118
research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java

@ -2,10 +2,12 @@ package com.research.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.research.common.core.domain.BaseDto;
import com.research.common.core.domain.entity.SysUser;
import com.research.common.exception.ServiceException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.SessionDto;
import com.research.system.domain.po.*;
@ -51,7 +53,9 @@ public class SessionServiceImpl implements SessionService {
@Override
public List queryNoSessionUser(Long userId) {
List<ChatContactList> chatContactLists = chatContactListMapper.selectByExample(new ChatContactListExample());
ChatContactListExample chatContactListExample = new ChatContactListExample();
chatContactListExample.createCriteria().andUserIdNotEqualTo(userId);
List<ChatContactList> chatContactLists = chatContactListMapper.selectByExample(chatContactListExample);
//查询有会话的人员
List<Long> collect = new ArrayList<>();
List<Long> list = sessionDao.queryMineSessionList(userId);
@ -77,40 +81,38 @@ public class SessionServiceImpl implements SessionService {
addSession(createSession);
}
}
return null;
}
@Override
public List<SessionVo.TxlResult> queryTxl(SessionDto.Query dto) {
List<SessionVo.TxlResult> txlResults = sessionDao.queryTxl(dto);
if (CollUtil.isNotEmpty(txlResults)) {
for (SessionVo.TxlResult txlResult : txlResults) {
if (txlResult.getSessionId() != null && txlResult.getSessionId() > 0) {
//如果是个人聊天,需要修改会话名称,查询合作单位名称
if (txlResult.getSessionType() == 0) {
if ( txlResult.getSenderId() != null && !Objects.equals(SecurityUtils.getUserId(), txlResult.getSenderId())) {
txlResult.setSessionName(sysUserService.selectUserById(txlResult.getSenderId()).getUserName());
ChatContactListExample chatContactListExample = new ChatContactListExample();
chatContactListExample.createCriteria().andUserIdEqualTo(txlResult.getSenderId());
List<ChatContactList> chatContactLists = chatContactListMapper.selectByExample(chatContactListExample);
if (CollUtil.isNotEmpty(chatContactLists)) {
txlResult.setOrgName(chatContactLists.get(0).getOrgName());
}
}
}
continue;
}
//查询会话接收人
SessionDto.CreateSession createSession = new SessionDto.CreateSession();
createSession.setSessionName(txlResult.getSessionName());
createSession.setType(txlResult.getSessionType());
createSession.setMemberList(CollUtil.newArrayList(txlResult.getSenderId(), SecurityUtils.getUserId()));
Long addSession = addSession(createSession);
txlResult.setSessionId(addSession);
}
}
// if (CollUtil.isNotEmpty(txlResults)) {
// for (SessionVo.TxlResult txlResult : txlResults) {
// if (txlResult.getSessionId() != null && txlResult.getSessionId() > 0) {
// //如果是个人聊天,需要修改会话名称,查询合作单位名称
// if (txlResult.getSessionType() == 0) {
// if ( txlResult.getSenderId() != null && !Objects.equals(SecurityUtils.getUserId(), txlResult.getSenderId())) {
// txlResult.setSessionName(sysUserService.selectUserById(txlResult.getSenderId()).getNickName());
// ChatContactListExample chatContactListExample = new ChatContactListExample();
// chatContactListExample.createCriteria().andUserIdEqualTo(txlResult.getSenderId());
// List<ChatContactList> chatContactLists = chatContactListMapper.selectByExample(chatContactListExample);
// if (CollUtil.isNotEmpty(chatContactLists)) {
// txlResult.setOrgName(chatContactLists.get(0).getOrgName());
// }
// }
// }
// continue;
// }
// //查询会话接收人
// SessionDto.CreateSession createSession = new SessionDto.CreateSession();
// createSession.setSessionName(txlResult.getSessionName());
// createSession.setType(txlResult.getSessionType());
// createSession.setMemberList(CollUtil.newArrayList(txlResult.getSenderId(), SecurityUtils.getUserId()));
// Long addSession = addSession(createSession);
// txlResult.setSessionId(addSession);
// }
// }
return txlResults;
}
@ -147,11 +149,24 @@ public class SessionServiceImpl implements SessionService {
}
@Override
public Integer send(SessionDto.SendMessage dto) {
public Long send(SessionDto.SendMessage dto) {
Long loginUserId = SecurityUtils.getUserId();
//检查会话id是否为空
Long sessionId = dto.getSessionId();
if (ObjectUtil.isNull(sessionId)) {
//新建会话
SessionDto.CreateSession createSession = new SessionDto.CreateSession();
createSession.setSessionName(dto.getUserId().toString());
createSession.setType(0);
createSession.setMemberList(CollUtil.newArrayList(dto.getUserId(), loginUserId));
createSession.setLoginUserId(loginUserId);
sessionId = addSession(createSession);
}
ChatSessionMessages chatSessionMessages = new ChatSessionMessages();
chatSessionMessages.setId(IdUtil.getSnowflakeNextId());
chatSessionMessages.setSessionId(dto.getSessionId());
chatSessionMessages.setSenderId(SecurityUtils.getUserId());
chatSessionMessages.setSessionId(sessionId);
chatSessionMessages.setSenderId(loginUserId);
chatSessionMessages.setContentType(dto.getContentType());
chatSessionMessages.setContent(dto.getContent());
chatSessionMessages.setReferencedMessageId(dto.getReferencedMessageId());
@ -162,13 +177,13 @@ public class SessionServiceImpl implements SessionService {
//查询会话的人员
ChatSessionMembersExample chatSessionMembersExample = new ChatSessionMembersExample();
chatSessionMembersExample.createCriteria().andSessionIdEqualTo(dto.getSessionId()).andDelFlagEqualTo((byte) 0);
chatSessionMembersExample.createCriteria().andSessionIdEqualTo(sessionId).andDelFlagEqualTo((byte) 0);
List<ChatSessionMembers> chatSessionMembers = chatSessionMembersMapper.selectByExample(chatSessionMembersExample);
if (CollUtil.isNotEmpty(chatSessionMembers)) {
for (ChatSessionMembers chatSessionMember : chatSessionMembers) {
ChatMessageReadStatus chatMessageReadStatus = new ChatMessageReadStatus();
chatMessageReadStatus.setId(IdUtil.getSnowflakeNextId());
chatMessageReadStatus.setSessionId(dto.getSessionId());
chatMessageReadStatus.setSessionId(sessionId);
chatMessageReadStatus.setSessionMemberId(chatSessionMember.getSessionMemberId());
chatMessageReadStatus.setSessionMessageId(chatSessionMessages.getId());
if (Objects.equals(chatSessionMember.getSessionMemberId(), SecurityUtils.getUserId())) {
@ -180,11 +195,14 @@ public class SessionServiceImpl implements SessionService {
chatMessageReadStatusMapper.insertSelective(chatMessageReadStatus);
}
}
return 1;
return sessionId;
}
@Override
public Long addSession(SessionDto.CreateSession dto) {
if(CollUtil.isEmpty(dto.getMemberList())){
throw new ServiceException("请选择会话成员");
}
String createBy = "admin";
try {
createBy = SecurityUtils.getUsername();
@ -251,18 +269,21 @@ public class SessionServiceImpl implements SessionService {
SessionVo.UnRead unRead = new SessionVo.UnRead();
//根据登录人查询未读消息
List<SessionVo.UnRead.UnReadItem> unReadItems = sessionDao.queryUnReadList(SecurityUtils.getUserId());
unRead.setUnreadList(unReadItems);
if (CollUtil.isNotEmpty(unReadItems)) {
List<Integer> collect = unReadItems.stream().map(SessionVo.UnRead.UnReadItem::getNum).collect(Collectors.toList());
if (CollUtil.isNotEmpty(collect)) {
Integer total = 0;
for (Integer integer : collect) {
if (integer != null && integer > 0) {
total += integer;
}
}
unRead.setTotal(total);
}
Integer total = unReadItems.stream().mapToInt(SessionVo.UnRead.UnReadItem::getNum).sum();
unRead.setTotal(total);
unRead.setUnreadList(unReadItems);
// List<Integer> collect = unReadItems.stream().map(SessionVo.UnRead.UnReadItem::getNum).collect(Collectors.toList());
// if (CollUtil.isNotEmpty(collect)) {
// Integer total = 0;
// for (Integer integer : collect) {
// if (integer != null && integer > 0) {
// total += integer;
// }
// }
// unRead.setTotal(total);
// }
}
return unRead;
}
@ -305,4 +326,9 @@ public class SessionServiceImpl implements SessionService {
return chatSessionMembersMapper.updateByExampleSelective(chatSessionMembers, chatSessionMembersExample);
}
@Override
public Long getSessionByUserId(SessionDto.Query dto) {
return sessionDao.getSessionByUserId(dto.getUserId(), SecurityUtils.getUserId());
}
}

20
research-system/src/main/java/com/research/system/service/impl/ShsCkwxServiceImpl.java

@ -2,6 +2,7 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.poi.excel.BigExcelWriter;
import com.github.pagehelper.PageHelper;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
@ -17,6 +18,7 @@ import com.research.system.service.ShsCkwxService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
@ -50,6 +52,17 @@ public class ShsCkwxServiceImpl implements ShsCkwxService {
return shsCkwxDao.queryList(query, proInfoByTenantId.getId());
}
@Override
public void download(HttpServletResponse response, Long id) {
ShsCkwxInfo shsCkwxInfo = shsCkwxInfoMapper.selectByPrimaryKey(id);
if (shsCkwxInfo == null) {
return;
}
BigExcelWriter writer = new BigExcelWriter();
}
@Override
public Integer add(ShsCkwxDto.Add dto) {
ShsCkwxInfo shsCkwxInfo = BeanUtil.copyProperties(dto, ShsCkwxInfo.class);
@ -65,6 +78,13 @@ public class ShsCkwxServiceImpl implements ShsCkwxService {
shsCkwxInfo.setDelFlag((byte) 0);
return shsCkwxInfoMapper.insertSelective(shsCkwxInfo);
} else {
//创建者才可修改
if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
ShsCkwxInfo shsCkwxInfo1 = shsCkwxInfoMapper.selectByPrimaryKey(dto.getId());
if (!shsCkwxInfo1.getCreateBy().equals(SecurityUtils.getUsername())) {
throw new BaseException("您只能修改自己创建的信息");
}
}
shsCkwxInfo.setUpdateBy(SecurityUtils.getUsername());
shsCkwxInfo.setUpdateTime(new Date());
return shsCkwxInfoMapper.updateByPrimaryKeySelective(shsCkwxInfo);

8
research-system/src/main/java/com/research/system/service/impl/ShsSyffCategoryServiceImpl.java

@ -2,6 +2,7 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.ShsSyffCategoryDto;
@ -55,6 +56,13 @@ public class ShsSyffCategoryServiceImpl implements ShsSyffCategoryService {
shsSyffInfo.setCreateTime(new Date());
return shsSyffInfoMapper.insertSelective(shsSyffInfo);
} else {
//创建者才可修改
if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
ShsSyffInfo shsSyffInfo1 = shsSyffInfoMapper.selectByPrimaryKey(add.getId());
if (!shsSyffInfo1.getCreateBy().equals(SecurityUtils.getUsername())) {
throw new BaseException("您只能修改自己创建的信息");
}
}
shsSyffInfo.setUpdateBy(SecurityUtils.getUsername());
shsSyffInfo.setDelFlag((byte) 0);
shsSyffInfo.setUpdateTime(new Date());

46
research-system/src/main/java/com/research/system/service/impl/SysUserServiceImpl.java

@ -3,10 +3,15 @@ package com.research.system.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.Validator;
import com.research.system.domain.vo.UserVo;
import com.research.system.persist.dao.TaskDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -65,6 +70,14 @@ public class SysUserServiceImpl implements ISysUserService
@Autowired
protected Validator validator;
@Resource
private TaskDao taskDao;
@Value("${servicePhone}")
private String servicePhone;
@Value("${version}")
private String version;
/**
* 根据条件分页查询用户列表
*
@ -262,8 +275,8 @@ public class SysUserServiceImpl implements ISysUserService
{
// 新增用户信息
int rows = userMapper.insertUser(user);
// 新增用户岗位关联
insertUserPost(user);
// // 新增用户岗位关联
// insertUserPost(user);
// 新增用户与角色管理
insertUserRole(user);
return rows;
@ -552,4 +565,33 @@ public class SysUserServiceImpl implements ISysUserService
public SysUser selectUserByPhone(String phone) {
return userMapper.selectUserByPhone(phone);
}
@Override
public SysUser getUserByOpenId(String openId) {
return userMapper.getUserByOpenId(openId);
}
@Override
public void disposeUserByOpenId(String openId, Long userId) {
//删除openId和用户的关联
userMapper.deleteOpenId(openId);
//关联当前用户
userMapper.relevanceUserAndOpenId(openId, userId);
}
@Override
public UserVo.MyselfVo getMyself() {
//查找任务信息
UserVo.MyselfVo myselfVo = taskDao.getTaskNumByUserId(SecurityUtils.getLoginUser().getUser().getPhonenumber());
//查找成果数量
Integer resultCount = taskDao.getResultCount(SecurityUtils.getLoginUser().getUserId());
myselfVo.setResultCount(resultCount);
//查找客服电话
myselfVo.setServicePhone(servicePhone);
//版本号
myselfVo.setVersion(version);
return myselfVo;
}
}

786
research-system/src/main/java/com/research/system/service/impl/TaskServiceImpl.java

@ -1,284 +1,662 @@
package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.BigExcelWriter;
import com.research.common.core.domain.entity.SysRole;
import com.research.common.core.domain.model.LoginUser;
import com.research.common.exception.ServiceException;
import com.research.common.exception.base.BaseException;
import com.research.common.utils.SecurityUtils;
import com.research.system.domain.dto.CommonDto;
import com.research.system.domain.dto.TaskDto;
import com.research.system.domain.po.*;
import com.research.system.domain.vo.ClientPrjProjInfoVo;
import com.research.system.domain.vo.TaskVo;
import com.research.system.persist.dao.TaskDao;
import com.research.system.persist.mapper.KtsKtGroupMemberMapper;
import com.research.system.persist.mapper.TaskDeliverableMapper;
import com.research.system.persist.mapper.TaskExecutorMapper;
import com.research.system.persist.mapper.TaskListMapper;
import com.research.system.service.ClientPrjProjInfoService;
import com.research.system.service.TaskService;
import com.research.system.persist.mapper.*;
import com.research.system.service.ITaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import static com.research.common.utils.SecurityUtils.getLoginUser;
/**
* @Author zzc
* @Package com.research.system.service.impl
* @Date 2025/8/17 15:53
* @description:
* @author zy
* @date 2026/04/15
*/
@Slf4j
@Service
public class TaskServiceImpl implements TaskService {
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class TaskServiceImpl implements ITaskService {
@Resource
private TaskListMapper taskListMapper;
@Resource
private TaskExecutorMapper taskExecutorMapper;
private TasTaskMapper taskMapper;
@Resource
private TaskDeliverableMapper taskDeliverableMapper;
private TasTaskMemberMapper taskMemberMapper;
@Resource
private ClientPrjProjInfoService clientPrjProjInfoService;
private TasDeliverableMapper deliverableMapper;
@Resource
private KtsKtGroupMemberMapper ktsKtGroupMemberMapper;
private ComFileMapper fileMapper;
@Resource
private TaskDao taskDao;
@Resource
private KtsKtGroupMapper ktsKtGroupMapper;
@Resource
private KtsKtGroupMemberMapper ktsKtGroupMemberMapper;
@Override
public List<TaskVo.TaskResult> queryList(TaskDto.QueryTask query) {
if (query.getDateType() != null) {
//日期查询 0全部 1今日 2本周 3本月
switch (query.getDateType()){
case 0:
query.setStartTime(null);
query.setEndTime(null);
public List<TaskVo.KtGroupInfo> getMyGroupList() {
Long userId = null;
Long orgId = null;
//0:普通用户 1:合作单位管理员 2:项目管理或超管
int userType = 0;
LoginUser loginUser = getLoginUser();
if(CollUtil.isNotEmpty(loginUser.getUser().getRoles())){
List<SysRole> roles = loginUser.getUser().getRoles();
for (SysRole role : roles){
if(role.getRoleKey().equals("pro_admin") || role.getRoleKey().equals("admin")){
userType = 2;
userId = loginUser.getUser().getUserId();
break;
case 1:
query.setStartTime(DateUtil.beginOfDay(new Date()));
query.setEndTime(DateUtil.endOfDay(new Date()));
} else if (role.getRoleKey().equals("org_admin")) {
userType = 3;
userId = loginUser.getUser().getUserId();
orgId = loginUser.getUser().getOrgId();
break;
case 2:
query.setStartTime(DateUtil.beginOfWeek(new Date()));
query.setEndTime(DateUtil.endOfWeek(new Date()));
}else {
userType = 0;
userId = loginUser.getUser().getUserId();
break;
case 3:
query.setStartTime(DateUtil.beginOfMonth(new Date()));
query.setEndTime(DateUtil.endOfMonth(new Date()));
}
}
}
return taskDao.getMyGroupList(userId, orgId, userType);
}
@Override
public List<TaskVo.GroupMemberInfo> getGroupMembers(TaskDto.GetGroupMembers param) {
List<Long> groupIds = param.getKtGroupIds();
if(ObjectUtil.isNull(param.getKtGroupId())){
Long userId = null;
Long orgId = null;
//0:普通用户 1:合作单位管理员 2:项目管理或超管
int userType = 0;
return taskDao.queryList(query);
LoginUser loginUser = getLoginUser();
if(CollUtil.isNotEmpty(loginUser.getUser().getRoles())){
List<SysRole> roles = loginUser.getUser().getRoles();
for (SysRole role : roles){
if(role.getRoleKey().equals("pro_admin") || role.getRoleKey().equals("admin")){
userType = 2;
userId = loginUser.getUser().getUserId();
break;
} else if (role.getRoleKey().equals("org_admin")) {
userType = 3;
userId = loginUser.getUser().getUserId();
orgId = loginUser.getUser().getOrgId();
break;
}else {
userType = 0;
userId = loginUser.getUser().getUserId();
break;
}
}
}
List<TaskVo.KtGroupInfo> myGroupList = taskDao.getMyGroupList(userId, orgId, userType);
groupIds = myGroupList.stream().map(TaskVo.KtGroupInfo::getId).collect(Collectors.toList());
}else {
groupIds.add(param.getKtGroupId());
}
if(CollUtil.isNotEmpty(groupIds)){
return taskDao.getGroupMembers(groupIds, param.getMemberName());
}else {
return new ArrayList<>();
}
}
@Override
public List<TaskVo.ClientList> queryListClient(TaskDto.QueryTask query) {
List<TaskVo.ClientList> result = new ArrayList<>();
if (query.getDateType() != null) {
//日期查询 0全部 1今日 2本周 3本月
switch (query.getDateType()){
case 0:
query.setStartTime(null);
query.setEndTime(null);
break;
case 1:
query.setStartTime(DateUtil.beginOfDay(new Date()));
query.setEndTime(DateUtil.endOfDay(new Date()));
break;
case 2:
query.setStartTime(DateUtil.beginOfWeek(new Date()));
query.setEndTime(DateUtil.endOfWeek(new Date()));
break;
case 3:
query.setStartTime(DateUtil.beginOfMonth(new Date()));
query.setEndTime(DateUtil.endOfMonth(new Date()));
public TaskVo.CreateTaskResult createTask(TaskDto.CreateTask param, Long userId) {
// 1. 检查课题是否存在
KtsKtGroup ktGroup = ktsKtGroupMapper.selectByPrimaryKey(param.getKtGroupId());
if(ObjectUtil.isNull(ktGroup)){
throw new ServiceException("课题不存在");
}
//根据课题查询合作单位id
param.setProjOrgId(ktGroup.getProjOrgId());
// 3. 校验截止时间是否大于当前时间
if (param.getEndTime() != null && DateUtil.parse(param.getEndTime()).before(new Date())) {
throw new ServiceException("截止时间必须大于当前时间");
}
// 4. 新增任务记录到 tas_task 表
TasTask task = new TasTask();
BeanUtils.copyProperties(param, task);
Long taskId = IdUtil.getSnowflakeNextId();
task.setId(taskId);
task.setTaskCreatorId(userId);
task.setStartTime(new Date());
task.setEndTime(DateUtil.parse(param.getEndTime()));
task.setCreateBy(SecurityUtils.getUsername());
taskMapper.insertSelective(task);
//添加应交付物文件
// 添加文件信息
if (CollUtil.isNotEmpty(param.getRequiredDeliverable())) {
for (String url : param.getRequiredDeliverable()) {
ComFile file = new ComFile();
file.setId(IdUtil.getSnowflakeNextId());
file.setRelateId(taskId);
file.setRelateType("required_deliverable");
file.setFilePath(url);
file.setCreateBy(SecurityUtils.getUsername());
fileMapper.insertSelective(file);
}
}
//获取课题组ID
Long userId = SecurityUtils.getUserId();
KtsKtGroupMemberExample ktsKtGroupMemberExample = new KtsKtGroupMemberExample();
ktsKtGroupMemberExample.createCriteria().andUserIdEqualTo(userId);
List<KtsKtGroupMember> ktsKtGroupMembers = ktsKtGroupMemberMapper.selectByExample(ktsKtGroupMemberExample);
if (CollectionUtil.isNotEmpty(ktsKtGroupMembers)) {
query.setUserId(ktsKtGroupMembers.get(0).getId());
}
List<TaskVo.TaskResult> taskResults = taskDao.queryList(query);
if (CollectionUtil.isNotEmpty(taskResults)) {
Map<String, List<TaskVo.TaskResult>> collect = taskResults.stream().collect(Collectors.groupingBy(TaskVo.TaskResult::getMonth));
for (Map.Entry<String, List<TaskVo.TaskResult>> entry : collect.entrySet()) {
TaskVo.ClientList clientList = new TaskVo.ClientList();
clientList.setTime(entry.getKey());
List<TaskVo.ClientList.DateResult> dateResultList = new ArrayList<>();
List<TaskVo.TaskResult> value = entry.getValue();
if (CollectionUtil.isNotEmpty( value)){
Map<String, List<TaskVo.TaskResult>> collect1 = value.stream().collect(Collectors.groupingBy(TaskVo.TaskResult::getDay));
for (Map.Entry<String, List<TaskVo.TaskResult>> entry1 : collect1.entrySet()) {
TaskVo.ClientList.DateResult dateResult = new TaskVo.ClientList.DateResult();
dateResult.setTaskResultList(entry1.getValue());
dateResult.setDate(entry1.getKey());
dateResultList.add(dateResult);
}
dateResultList.stream().sorted(Comparator.comparing(TaskVo.ClientList.DateResult::getDate)).collect(Collectors.toList());
clientList.setClientList(dateResultList);
}
result.add(clientList);
// 5. 根据任务类型创建任务成员关联
List<TasTaskMember> members = new ArrayList<>();
if (param.getTaskType() == 1) {
// 单人任务:根据负责人创建多条任务成员关联表
for (Long memberId : param.getMemberIds()) {
TasTaskMember member = createTaskMember(taskId, String.valueOf(memberId));
members.add(member);
}
} else if (param.getTaskType() == 2) {
// 多人协作任务:创建一条任务成员关联表,多个成员ID逗号分隔
String memberIdsStr = param.getMemberIds().stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
TasTaskMember member = createTaskMember(taskId, memberIdsStr);
members.add(member);
}
if (CollUtil.isNotEmpty(members)) {
taskDao.batchInsertTaskMembers(members);
}
TaskVo.CreateTaskResult result = new TaskVo.CreateTaskResult();
result.setTaskId(taskId);
return result;
}
private TasTaskMember createTaskMember(Long taskId, String memberIds) {
TasTaskMember member = new TasTaskMember();
member.setId(IdUtil.getSnowflakeNextId());
member.setTaskId(taskId);
member.setMemberIds(memberIds);
member.setTaskStatus((byte) 0);
member.setAuditStatus((byte) 0);
member.setCreateBy(SecurityUtils.getUsername());
return member;
}
@Override
public TaskVo.TaskResult detail(Long id) {
return taskDao.detail(id);
public void updateTask(TaskDto.UpdateTask param) {
// 1. 判断任务是否存在
TasTaskMember tasTaskMember = taskMemberMapper.selectByPrimaryKey(param.getTaskMemberId());
if (tasTaskMember == null || tasTaskMember.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
TasTask task = taskMapper.selectByPrimaryKey(tasTaskMember.getTaskId());
if (task == null || task.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
// 2. 只能修改任务的名称、说明、优先级、截止时间
TasTask updateTask = new TasTask();
updateTask.setId(task.getId());
if (StrUtil.isNotBlank(param.getTaskName())) {
updateTask.setTaskName(param.getTaskName());
}
if (StrUtil.isNotBlank(param.getTaskDescription())) {
updateTask.setTaskDescription(param.getTaskDescription());
}
if (param.getPriority() != null) {
updateTask.setPriority(param.getPriority().byteValue());
}
if (param.getEndTime() != null) {
updateTask.setEndTime(DateUtil.parse(param.getEndTime()));
}
if (StrUtil.isNotBlank(param.getDescription())) {
updateTask.setDescription(param.getDescription());
}
updateTask.setUpdateBy(SecurityUtils.getUsername());
updateTask.setUpdateTime(new Date());
taskMapper.updateByPrimaryKeySelective(updateTask);
//修改应交付物,先删除,在添加
taskDao.deleteFileByType(task.getId(), "required_deliverable");
// 添加文件信息
if (CollUtil.isNotEmpty(param.getRequiredDeliverable())) {
for (String url : param.getRequiredDeliverable()) {
ComFile file = new ComFile();
file.setId(IdUtil.getSnowflakeNextId());
file.setRelateId(task.getId());
file.setRelateType("required_deliverable");
file.setFilePath(url);
file.setCreateBy(SecurityUtils.getUsername());
fileMapper.insertSelective(file);
}
}
}
@Override
public void add(TaskDto.AddTask dto) {
TaskListWithBLOBs taskList = BeanUtil.copyProperties(dto, TaskListWithBLOBs.class);
if (dto.getId() == null) {
PrjProjInfo proInfoByTenantId = clientPrjProjInfoService.getProInfoByTenantId(SecurityUtils.getTenantId());
if (proInfoByTenantId == null) {
throw new BaseException("未查询到项目");
public void batchDeleteTask(TaskDto.BatchDeleteTask param) {
for (Long taskMemberId : param.getTaskMemberIds()) {
// 1. 判断任务是否存在
TasTaskMember tasTaskMember = taskMemberMapper.selectByPrimaryKey(taskMemberId);
if (tasTaskMember == null || tasTaskMember.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
taskList.setCreateBy(SecurityUtils.getUsername());
taskList.setCreateTime(new Date());
taskList.setProjId(proInfoByTenantId.getId());
taskList.setDelFlag((byte) 0);
taskList.setInitiator(SecurityUtils.getUsername());
taskList.setId(IdUtil.getSnowflake().nextId());
taskList.setDeliverables(dto.getDeliverableList());
taskListMapper.insertSelective(taskList);
if (dto.getExecutorList() != null) {
for (TaskDto.AddExecutor addExecutor : dto.getExecutorList()) {
TaskExecutor taskExecutor = new TaskExecutor();
taskExecutor.setTaskId(taskList.getId());
taskExecutor.setExecutorId(addExecutor.getExecutorId());
taskExecutor.setCreateBy(SecurityUtils.getUsername());
taskExecutor.setCreateTime(new Date());
taskExecutor.setId(IdUtil.getSnowflake().nextId());
taskExecutor.setDelFlag((byte) 0);
taskExecutorMapper.insertSelective(taskExecutor);
}
TasTask task = taskMapper.selectByPrimaryKey(tasTaskMember.getTaskId());
if (task == null || task.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
} else {
taskList.setUpdateBy(SecurityUtils.getUsername());
taskList.setUpdateTime(new Date());
taskList.setDelFlag((byte) 0);
taskList.setDeliverables(dto.getDeliverableList());
taskListMapper.updateByPrimaryKeyWithBLOBs(taskList);
TaskExecutor taskExecutor1 = new TaskExecutor();
taskExecutor1.setDelFlag((byte) 1);
TaskExecutorExample taskExecutorExample = new TaskExecutorExample();
taskExecutorExample.createCriteria().andTaskIdEqualTo(taskList.getId());
taskExecutorMapper.updateByExampleSelective(taskExecutor1, taskExecutorExample);
if (dto.getExecutorList() != null) {
for (TaskDto.AddExecutor addExecutor : dto.getExecutorList()) {
TaskExecutor taskExecutor = new TaskExecutor();
taskExecutor.setTaskId(taskList.getId());
taskExecutor.setExecutorId(addExecutor.getExecutorId());
taskExecutor.setCreateBy(SecurityUtils.getUsername());
taskExecutor.setId(IdUtil.getSnowflake().nextId());
taskExecutor.setCreateTime(new Date());
taskExecutor.setDelFlag((byte) 0);
taskExecutorMapper.insertSelective(taskExecutor);
}
// 2. 校验任务状态是否已完成(已完成的任务不可删除)
if (tasTaskMember.getTaskStatus() == 2) {
throw new ServiceException("任务[" + tasTaskMember + "]已完成,不可删除");
}
//删除
TasTaskMember updateTask = new TasTaskMember();
updateTask.setId(taskMemberId);
updateTask.setDelFlag((byte) 1);
updateTask.setUpdateBy(SecurityUtils.getUsername());
updateTask.setUpdateTime(new Date());
taskMemberMapper.updateByPrimaryKeySelective(updateTask);
//检查主任务下是否有分任务,没有的话删除主任务
TasTaskMemberExample taskMemberExample = new TasTaskMemberExample();
taskMemberExample.createCriteria().andTaskIdEqualTo(task.getId()).andDelFlagEqualTo((byte) 0);
if (taskMemberMapper.countByExample(taskMemberExample) < 1) {
// 软删除任务记录
TasTask uTask = new TasTask();
uTask.setId(task.getId());
uTask.setDelFlag((byte) 1);
uTask.setUpdateBy(SecurityUtils.getUsername());
uTask.setUpdateTime(new Date());
taskMapper.updateByPrimaryKeySelective(uTask);
}
}
}
@Override
public void del(CommonDto.DelDto dto) {
TaskListExample taskListExample = new TaskListExample();
taskListExample.createCriteria().andIdIn(dto.getIdList());
TaskListWithBLOBs taskListWithBLOBs = new TaskListWithBLOBs();
taskListWithBLOBs.setDelFlag(Byte.valueOf("1"));
taskListMapper.updateByExampleSelective(taskListWithBLOBs, taskListExample);
public List<TaskVo.TaskInfo> queryTaskList(TaskDto.QueryTaskList param, Long userId) {
//如果类型是分配给我的任务,先查询当前用户关联的课题组成员
List<Long> memberIdList = new ArrayList<>();
if(param.getTaskType() == 1){
KtsKtGroupMemberExample groupMemberExample = new KtsKtGroupMemberExample();
groupMemberExample.createCriteria().andMemberPhoneEqualTo(SecurityUtils.getLoginUser().getUser().getPhonenumber()).andDelFlagEqualTo((byte) 0);
List<KtsKtGroupMember> groupMembers = ktsKtGroupMemberMapper.selectByExample(groupMemberExample);
if (CollUtil.isNotEmpty(groupMembers)) {
memberIdList = groupMembers.stream()
.map(KtsKtGroupMember::getId)
.collect(Collectors.toList());
}else {
return new ArrayList<>();
}
}
//查找任务
List<TaskVo.TaskInfo> taskList = taskDao.queryTaskList(param, userId, memberIdList);
if (CollUtil.isNotEmpty(taskList)) {
//查找应交付物文件
List<Long> taskIds = taskList.stream()
.map(TaskVo.TaskInfo::getTaskId)
.collect(Collectors.toList());
List<TaskVo.FileInfo> allFiles = taskDao.queryFilesByDeliverableIds(taskIds, "required_deliverable");
Map<Long, List<TaskVo.FileInfo>> fileMap = allFiles.stream()
.collect(Collectors.groupingBy(TaskVo.FileInfo::getRelateId));
for (TaskVo.TaskInfo task : taskList) {
task.setRequiredDeliverable(fileMap.get(task.getTaskId()));
setPriorityName(task);
setTaskStatusName(task);
task.setAuditStatusName(setAuditStatusName(task.getAuditStatus()));
setTaskTypeName(task);
}
}
return taskList;
}
@Override
public List<TaskVo.ExecutorResult> queryExecutorList(TaskDto.QueryExecutor query) {
return taskDao.queryExecutorList(query);
public void exportTask(HttpServletResponse response, TaskDto.QueryTaskList param, Long userId) {
List<TaskVo.TaskInfo> taskInfos = queryTaskList(param, userId);
if (CollUtil.isEmpty(taskInfos)) {
throw new BaseException("暂无数据");
}
BigExcelWriter writer = new BigExcelWriter();
List<String> header = new ArrayList<>();
header.add("序号");
header.add("课题组");
header.add("任务名称");
header.add("任务说明");
header.add("负责人");
header.add("优先级");
header.add("任务类型");
header.add("应交付物说明");
header.add("开始时间");
header.add("截止时间");
header.add("任务状态");
header.add("审核状态");
header.add("审核时间");
header.add("驳回原因");
header.add("创建人");
writer.writeHeadRow(header);
int row = 0;
for (int i = 0; i < taskInfos.size(); i++) {
row += 1;
writer.writeCellValue(0, row, row);
writer.writeCellValue(1, row, taskInfos.get(i).getKtGroupName());
writer.writeCellValue(2, row, taskInfos.get(i).getTaskName());
writer.writeCellValue(3, row, taskInfos.get(i).getTaskDescription());
writer.writeCellValue(4, row, taskInfos.get(i).getMemberNames());
writer.writeCellValue(5, row, taskInfos.get(i).getPriority() == null ? null : taskInfos.get(i).getPriority() == 1 ? "低" : taskInfos.get(i).getPriority() == 2 ? "中" : "高");
writer.writeCellValue(6, row, taskInfos.get(i).getTaskTypeName());
writer.writeCellValue(7, row, taskInfos.get(i).getDescription());
writer.writeCellValue(8, row, DateUtil.format(taskInfos.get(i).getStartTime(), "yyyy-MM-dd HH:mm"));
writer.writeCellValue(9, row, DateUtil.format(taskInfos.get(i).getEndTime(), "yyyy-MM-dd HH:mm"));
writer.writeCellValue(10, row, taskInfos.get(i).getTaskStatusName());
writer.writeCellValue(11, row, taskInfos.get(i).getAuditStatusName());
writer.writeCellValue(12, row, DateUtil.format(taskInfos.get(i).getAuditTime(), "yyyy-MM-dd HH:mm"));
writer.writeCellValue(13, row, taskInfos.get(i).getRejectReason());
writer.writeCellValue(14, row, taskInfos.get(i).getCreateBy());
}
String filename = StrUtil.format("任务管理-{}.xlsx", DateUtil.date().toString("yyyyMMdd"));
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
writer.flush(out);
} catch (
IOException e) {
e.printStackTrace();
} finally {
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
}
@Override
public void addExecutor(TaskDto.AddExecutor dto) {
TaskExecutor taskExecutor = BeanUtil.copyProperties(dto, TaskExecutor.class);
if (taskExecutor.getId() == null) {
taskExecutor.setDelFlag(Byte.valueOf("0"));
taskExecutor.setId(IdUtil.getSnowflake().nextId());
taskExecutor.setCreateBy(SecurityUtils.getUsername());
taskExecutor.setCreateTime(new Date());
taskExecutorMapper.insertSelective(taskExecutor);
} else {
taskExecutor.setUpdateBy(SecurityUtils.getUsername());
taskExecutor.setUpdateTime(new Date());
taskExecutorMapper.updateByPrimaryKeySelective(taskExecutor);
private void setPriorityName(TaskVo.TaskInfo task) {
if (task.getPriority() == null) return;
switch (task.getPriority()) {
case 1:
task.setPriorityName("低");
break;
case 2:
task.setPriorityName("中");
break;
case 3:
task.setPriorityName("高");
break;
default:
task.setPriorityName("未知");
}
}
@Override
public void delExecutor(CommonDto.DelDto dto) {
TaskExecutor taskExecutor1 = new TaskExecutor();
taskExecutor1.setDelFlag((byte) 1);
TaskExecutorExample taskExecutorExample = new TaskExecutorExample();
taskExecutorExample.createCriteria().andIdIn(dto.getIdList());
taskExecutorMapper.updateByExampleSelective(taskExecutor1, taskExecutorExample);
private void setTaskStatusName(TaskVo.TaskInfo task) {
if (task.getTaskStatus() == null) return;
switch (task.getTaskStatus()) {
case 0:
task.setTaskStatusName("未开始");
break;
case 1:
task.setTaskStatusName("进行中");
break;
case 2:
task.setTaskStatusName("已完成");
break;
default:
task.setTaskStatusName("未知");
}
}
private String setAuditStatusName(Integer auditStatus) {
String auditStatusName = null;
if (auditStatus == null) return auditStatusName;
switch (auditStatus) {
case 0:
auditStatusName = "待审核";
break;
case 1:
auditStatusName = "审核通过";
break;
case 2:
auditStatusName = "审核驳回";
break;
default:
auditStatusName = "未知";
}
return auditStatusName;
}
private void setTaskTypeName(TaskVo.TaskInfo task) {
if (task.getTaskType() == null) return;
switch (task.getTaskType()) {
case 1:
task.setTaskTypeName("单人任务");
break;
case 2:
task.setTaskTypeName("多人协作任务");
break;
default:
task.setTaskTypeName("未知");
}
}
@Override
public List<TaskVo.DeliverableResult> queryDeliverableList(TaskDto.QueryDeliverable query) {
return taskDao.queryDeliverableList(query.getTaskId());
public List<TaskVo.DeliverableInfo> getDeliverableList(TaskDto.QueryDeliverableList param) {
List<TaskVo.DeliverableInfo> deliverableList = taskDao.queryDeliverableList(param.getTaskMemberId());
if (CollUtil.isNotEmpty(deliverableList)) {
List<Long> deliverableIds = deliverableList.stream()
.map(TaskVo.DeliverableInfo::getDeliverableId)
.collect(Collectors.toList());
List<TaskVo.FileInfo> allFiles = taskDao.queryFilesByDeliverableIds(deliverableIds, "deliverable");
Map<Long, List<TaskVo.FileInfo>> fileMap = allFiles.stream()
.collect(Collectors.groupingBy(TaskVo.FileInfo::getRelateId));
for (TaskVo.DeliverableInfo deliverable : deliverableList) {
deliverable.setFileList(fileMap.get(deliverable.getDeliverableId()));
deliverable.setAuditStatusName(setAuditStatusName(deliverable.getAuditStatus()));
}
}
return deliverableList;
}
@Override
public void addDeliverable(TaskDto.AddDeliverable dto) {
TaskDeliverableWithBLOBs taskDeliverable = BeanUtil.copyProperties(dto, TaskDeliverableWithBLOBs.class);
if (taskDeliverable.getId() == null) {
taskDeliverable.setDelFlag(Byte.valueOf("0"));
taskDeliverable.setCreateBy(SecurityUtils.getUsername());
taskDeliverable.setId(IdUtil.getSnowflake().nextId());
taskDeliverable.setSubmitterAccount(SecurityUtils.getUsername());
taskDeliverable.setCreateTime(new Date());
taskDeliverableMapper.insertSelective(taskDeliverable);
} else {
taskDeliverable.setUpdateBy(SecurityUtils.getUsername());
taskDeliverable.setUpdateTime(new Date());
taskDeliverableMapper.updateByPrimaryKeySelective(taskDeliverable);
public void submitDeliverable(TaskDto.SubmitDeliverable param, Long userId) {
// 1. 判断任务是否存在
TasTaskMember tasTaskMember = taskMemberMapper.selectByPrimaryKey(param.getTaskMemberId());
if (tasTaskMember == null || tasTaskMember.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
TasTask task = taskMapper.selectByPrimaryKey(tasTaskMember.getTaskId());
if (task == null || task.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
//先查找当前用户在此课题下的成员id
KtsKtGroupMemberExample groupMemberExample = new KtsKtGroupMemberExample();
groupMemberExample.createCriteria().andMemberPhoneEqualTo(SecurityUtils.getLoginUser().getUser().getPhonenumber())
.andKtGroupIdEqualTo(task.getKtGroupId())
.andDelFlagEqualTo((byte) 0);
List<KtsKtGroupMember> groupMembers = ktsKtGroupMemberMapper.selectByExample(groupMemberExample);
// 判断当前用户是否是任务负责人
boolean isMember = false;
if (StrUtil.isNotBlank(tasTaskMember.getMemberIds()) && CollUtil.isNotEmpty(groupMembers)) {
Set<String> memberIdStrSet = groupMembers.stream()
.map(m -> String.valueOf(m.getId()))
.collect(Collectors.toSet());
String[] taskMemberIdArray = tasTaskMember.getMemberIds().split(",");
for (String taskMemberId : taskMemberIdArray) {
if (memberIdStrSet.contains(taskMemberId)) {
isMember = true;
break;
}
}
}
if (!isMember) {
throw new ServiceException("您不是该任务的负责人,无权提交交付物");
}
// 3. 判断任务状态是否已完成
if (tasTaskMember.getTaskStatus() == 2) {
throw new ServiceException("任务已完成,不可再提交交付物");
}
// 4. 保存交付物信息
TasDeliverable deliverable = new TasDeliverable();
deliverable.setId(IdUtil.getSnowflakeNextId());
deliverable.setTaskMemberId(param.getTaskMemberId());
deliverable.setUserId(userId);
deliverable.setSubmitTime(new Date());
deliverable.setDescription(param.getDescription());
deliverable.setDelFlag((byte) 0);
deliverable.setCreateBy(SecurityUtils.getUsername());
deliverableMapper.insertSelective(deliverable);
// 添加文件信息
if (CollUtil.isNotEmpty(param.getFileUrls())) {
for (String url : param.getFileUrls()) {
ComFile file = new ComFile();
file.setId(IdUtil.getSnowflakeNextId());
file.setRelateId(deliverable.getId());
file.setRelateType("deliverable");
file.setFilePath(url);
file.setCreateBy(SecurityUtils.getUsername());
fileMapper.insertSelective(file);
}
}
// 5. 如果任务是未开始,改成进行中
if (tasTaskMember.getTaskStatus() == 0) {
TasTaskMember updateMember = new TasTaskMember();
updateMember.setId(tasTaskMember.getId());
updateMember.setTaskStatus((byte) 1);
updateMember.setUpdateBy(SecurityUtils.getUsername());
updateMember.setUpdateTime(new Date());
taskMemberMapper.updateByPrimaryKeySelective(updateMember);
}
}
@Override
public void delDeliverable(CommonDto.DelDto dto) {
TaskDeliverableWithBLOBs taskDeliverableWithBLOBs = new TaskDeliverableWithBLOBs();
taskDeliverableWithBLOBs.setDelFlag((byte) 0);
TaskDeliverableExample taskDeliverableExample = new TaskDeliverableExample();
taskDeliverableExample.createCriteria().andIdIn(dto.getIdList());
taskDeliverableMapper.updateByExampleSelective(taskDeliverableWithBLOBs, taskDeliverableExample);
public void auditTask(TaskDto.AuditTask param, Long userId) {
// 1. 判断任务是否存在
TasTaskMember tasTaskMember = taskMemberMapper.selectByPrimaryKey(param.getTaskMemberId());
if (tasTaskMember == null || tasTaskMember.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
TasTask task = taskMapper.selectByPrimaryKey(tasTaskMember.getTaskId());
if (task == null || task.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
// 2. 检查当前用户是否是任务的创建者
if (!task.getTaskCreatorId().equals(userId)) {
throw new ServiceException("您不是该任务的创建者,无权审核");
}
// 4. 检查任务状态是否已完成
if (tasTaskMember.getTaskStatus() == 2) {
throw new ServiceException("任务已完成,不可审核");
}
// 5. 如果是驳回需要检查驳回原因
if (param.getAuditStatus() == 2 && StrUtil.isBlank(param.getRejectReason())) {
throw new ServiceException("驳回时必须填写驳回原因");
}
// 6. 修改任务的审核状态
TasTaskMember updateMember = new TasTaskMember();
updateMember.setId(tasTaskMember.getId());
updateMember.setAuditStatus(param.getAuditStatus().byteValue());
updateMember.setAuditTime(new Date());
if (param.getAuditStatus() == 2) {
updateMember.setRejectReason(param.getRejectReason());
}
// 7. 如果审核通过,修改任务状态为已完成
if (param.getAuditStatus() == 1) {
updateMember.setTaskStatus((byte) 2);
}
updateMember.setUpdateBy(SecurityUtils.getUsername());
updateMember.setUpdateTime(new Date());
taskMemberMapper.updateByPrimaryKeySelective(updateMember);
}
@Override
public void aduit(Long taskId, Long deliverableId, Byte status) {
TaskList taskList = taskListMapper.selectByPrimaryKey(taskId);
if (taskList == null) {
throw new RuntimeException("任务不存在或任务已结束");
}
TaskDeliverableWithBLOBs taskDeliverableWithBLOBs = taskDeliverableMapper.selectByPrimaryKey(deliverableId);
if (taskDeliverableWithBLOBs == null) {
throw new RuntimeException("交付物不存在或已交付");
}
taskDeliverableWithBLOBs.setAduitStatus(status);
taskDeliverableWithBLOBs.setReviewTime(new Date());
//状态为通过,则交付完成
if (status == 1) {
taskDeliverableWithBLOBs.setDeliveryStatus((byte) 1);
}
taskDeliverableMapper.updateByPrimaryKeySelective(taskDeliverableWithBLOBs);
public void auditDeliverable(TaskDto.AuditDeliverable param, Long userId) {
// 1. 检查交付物是否存在
TasDeliverable deliverable = deliverableMapper.selectByPrimaryKey(param.getDeliverableId());
if (deliverable == null || deliverable.getDelFlag() == 1) {
throw new ServiceException("交付物不存在");
}
// 2. 查询任务成员信息
TasTaskMember taskMember = taskMemberMapper.selectByPrimaryKey(deliverable.getTaskMemberId());
if (taskMember == null || taskMember.getDelFlag() == 1) {
throw new ServiceException("任务信息不存在");
}
// 3. 查询任务信息
TasTask task = taskMapper.selectByPrimaryKey(taskMember.getTaskId());
if (task == null || task.getDelFlag() == 1) {
throw new ServiceException("任务不存在");
}
// 4. 检查当前用户是否是任务的创建者
if (!task.getTaskCreatorId().equals(userId)) {
throw new ServiceException("您不是该任务的创建者,无权审核");
}
// 5. 如果是驳回需要检查驳回原因
if (param.getAuditStatus() == 2 && StrUtil.isBlank(param.getRejectReason())) {
throw new ServiceException("驳回时必须填写驳回原因");
}
// 6. 修改交付物的审核状态
TasDeliverable updateDeliverable = new TasDeliverable();
updateDeliverable.setId(param.getDeliverableId());
updateDeliverable.setAuditStatus(param.getAuditStatus().byteValue());
updateDeliverable.setAuditTime(new Date());
if (param.getAuditStatus() == 2) {
updateDeliverable.setRejectReason(param.getRejectReason());
}
updateDeliverable.setUpdateBy(SecurityUtils.getUsername());
deliverableMapper.updateByPrimaryKeySelective(updateDeliverable);
}
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save