From 5515c4eedb3fb316835d70bf8f5ec89dcc9dc7ba Mon Sep 17 00:00:00 2001 From: CMM <2198256324@qq.com> Date: Wed, 15 Feb 2023 10:49:14 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ningdatech/pmapi/todocenter/manage/TodoCenterManage.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 7cc25d6..9edf7d4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -38,6 +38,7 @@ import com.ningdatech.pmapi.todocenter.zwdd.model.MessageContent; import com.ningdatech.pmapi.todocenter.zwdd.model.MessageText; import com.ningdatech.pmapi.user.entity.UserInfo; import com.ningdatech.pmapi.user.service.IUserInfoService; +import com.ningdatech.zwdd.client.ZwddClient; import com.wflow.bean.do_.UserDo; import com.wflow.bean.entity.WflowCcTasks; import com.wflow.bean.entity.WflowModelHistorys; @@ -118,8 +119,8 @@ public class TodoCenterManage { private final IUserInfoService userInfoService; private final IProjectService projectService; private final StateMachineUtils stateMachineUtils; -// @Resource(name = "executableClient") -// private ExecutableClient client; + + private final ZwddClient zwddClient; /** * 待办中心待我处理项目列表查询 @@ -491,10 +492,13 @@ public class TodoCenterManage { Task currentTask = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult(); // 获取审核人信息,向审核人发送工作通知 String currentUserId = currentTask.getAssignee(); - // UserInfo auditUserInfo = userInfoService.getById(Long.valueOf(currentUserId)); + UserInfo auditUserInfo = userInfoService.getById(Long.valueOf(currentUserId)); // TODO 获取浙政钉用户dingKey,向其发送浙政钉工作通知 String msg = String.format(PASS_MSG_TEMPLATE, null, projectName); - // sendWorkNotice(auditUserInfo,msg); + // 构建唯一的消息ID + String bizMsgId = "ZB_URGE_NOTICE_" + "_" + auditUserInfo.getDeptId() + "_" + auditUserInfo.getUserId(); + String dingKey = "123"; + zwddClient.sendWorkNotice(dingKey,bizMsgId,msg); return; } // 获取bpm对象 From f1dc6492682599a6b07572539c07554ed4b4cb18 Mon Sep 17 00:00:00 2001 From: liuxinxin Date: Wed, 15 Feb 2023 16:08:34 +0800 Subject: [PATCH 2/7] =?UTF-8?q?adjust=20=E8=B0=83=E6=95=B4=20=E5=86=97?= =?UTF-8?q?=E4=BD=99=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/common/constant/DingConstant.java | 4 +- .../bean/vo/ProcessProgressDetailVo.java | 1 - .../bean/vo/ProgressNodeAuditInfoVo.java | 1 - .../pmapi/todocenter/manage/TodoCenterManage.java | 6 -- .../model/dto/res/ResToBeProcessedDTO.java | 10 +- .../pmapi/user/controller/UserInfoController.java | 3 +- .../ningdatech/pmapi/user/entity/NdUserAuth.java | 99 ------------------- .../ningdatech/pmapi/user/entity/NdUserInfo.java | 109 --------------------- .../com/ningdatech/pmapi/user/entity/UserAuth.java | 14 +-- .../com/ningdatech/pmapi/user/entity/UserInfo.java | 49 +-------- .../pmapi/user/manage/UserInfoManage.java | 3 - .../pmapi/user/mapper/NdUserAuthMapper.java | 16 --- .../pmapi/user/mapper/NdUserAuthMapper.xml | 5 - .../pmapi/user/mapper/NdUserInfoMapper.java | 4 +- .../pmapi/user/mapper/UserAuthMapper.java | 8 +- .../pmapi/user/mapper/UserInfoMapper.java | 16 --- .../pmapi/user/mapper/UserInfoMapper.xml | 5 - .../pmapi/user/service/INdUserAuthService.java | 16 --- .../pmapi/user/service/INdUserInfoService.java | 16 --- .../pmapi/user/service/IUserAuthService.java | 13 ++- .../pmapi/user/service/IUserInfoService.java | 10 +- .../user/service/impl/NdUserAuthServiceImpl.java | 20 ---- .../user/service/impl/NdUserInfoServiceImpl.java | 20 ---- .../user/service/impl/UserAuthServiceImpl.java | 24 ++++- .../user/service/impl/UserInfoServiceImpl.java | 27 ++--- 25 files changed, 63 insertions(+), 436 deletions(-) delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserAuth.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserInfo.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.xml delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.xml delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserAuthService.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserInfoService.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserAuthServiceImpl.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserInfoServiceImpl.java diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/DingConstant.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/DingConstant.java index ebe14a2..9590c8b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/DingConstant.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/DingConstant.java @@ -1,6 +1,8 @@ package com.ningdatech.pmapi.common.constant; + /** * 浙政钉常量 + * * @author CMM * @since 2023/02/01 14:49 */ @@ -9,4 +11,4 @@ public interface DingConstant { * 工作通知 */ String WORKING_NOTICE = "/message/workNotification"; -} +} \ No newline at end of file diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java index 4fb8d53..35e2b35 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java @@ -1,7 +1,6 @@ package com.ningdatech.pmapi.todocenter.bean.vo; -import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.todocenter.bean.entity.ProgressNode; import com.ningdatech.pmapi.user.entity.UserInfo; import com.wflow.workflow.bean.process.OrgUser; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java index b1ced2d..b5d4400 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java @@ -2,7 +2,6 @@ package com.ningdatech.pmapi.todocenter.bean.vo; import com.ningdatech.pmapi.todocenter.bean.entity.ProcessComment; import com.ningdatech.pmapi.user.entity.UserInfo; -import com.wflow.workflow.bean.process.OrgUser; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 7cc25d6..9e5d402 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -2,17 +2,14 @@ package com.ningdatech.pmapi.todocenter.manage; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.basic.enumeration.Status; import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.NdDateUtils; -import com.ningdatech.pmapi.common.constant.DingConstant; import com.ningdatech.pmapi.common.enumeration.ExportOptionEnum; import com.ningdatech.pmapi.common.model.entity.ExcelExportWriter; import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; @@ -34,8 +31,6 @@ import com.ningdatech.pmapi.todocenter.model.dto.req.ReqProcessHandlerDTO; import com.ningdatech.pmapi.todocenter.model.dto.req.ReqToBeProcessedDTO; import com.ningdatech.pmapi.todocenter.model.dto.req.ReqToBeProcessedExportDTO; import com.ningdatech.pmapi.todocenter.model.dto.res.ResToBeProcessedDTO; -import com.ningdatech.pmapi.todocenter.zwdd.model.MessageContent; -import com.ningdatech.pmapi.todocenter.zwdd.model.MessageText; import com.ningdatech.pmapi.user.entity.UserInfo; import com.ningdatech.pmapi.user.service.IUserInfoService; import com.wflow.bean.do_.UserDo; @@ -83,7 +78,6 @@ import org.flowable.variable.api.history.HistoricVariableInstance; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java index f03e734..3f3f778 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/res/ResToBeProcessedDTO.java @@ -1,10 +1,5 @@ package com.ningdatech.pmapi.todocenter.model.dto.res; -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; import com.ningdatech.pmapi.user.entity.UserInfo; @@ -14,7 +9,10 @@ import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; /** * 待办中心-待我处理返回实体信息 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java index 9c80c1e..fad8006 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; @@ -26,7 +27,7 @@ import javax.validation.Valid; * @author Liuxinxin * @since 2023-01-04 */ -@Controller +@RestController @RequestMapping("/api/v1/user-info") @RequiredArgsConstructor @Api(value = "UserInfoController", tags = "用户管理") diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserAuth.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserAuth.java deleted file mode 100644 index 13d0acf..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserAuth.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ningdatech.pmapi.user.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - *

- * - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -@TableName("nd_user_auth") -@ApiModel(value = "NdUserAuth对象", description = "") -public class NdUserAuth implements Serializable { - - private static final long serialVersionUID = 1L; - - private Long id; - - private LocalDateTime createOn; - - private LocalDateTime updateOn; - - private Long userId; - - private String authType; - - private String identifier; - - private String credential; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - public LocalDateTime getCreateOn() { - return createOn; - } - - public void setCreateOn(LocalDateTime createOn) { - this.createOn = createOn; - } - public LocalDateTime getUpdateOn() { - return updateOn; - } - - public void setUpdateOn(LocalDateTime updateOn) { - this.updateOn = updateOn; - } - public Long getUserId() { - return userId; - } - - public void setUserId(Long userId) { - this.userId = userId; - } - public String getAuthType() { - return authType; - } - - public void setAuthType(String authType) { - this.authType = authType; - } - public String getIdentifier() { - return identifier; - } - - public void setIdentifier(String identifier) { - this.identifier = identifier; - } - public String getCredential() { - return credential; - } - - public void setCredential(String credential) { - this.credential = credential; - } - - @Override - public String toString() { - return "NdUserAuth{" + - "id=" + id + - ", createOn=" + createOn + - ", updateOn=" + updateOn + - ", userId=" + userId + - ", authType=" + authType + - ", identifier=" + identifier + - ", credential=" + credential + - "}"; - } -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserInfo.java deleted file mode 100644 index ac8be23..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/NdUserInfo.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.ningdatech.pmapi.user.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - *

- * - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -@TableName("nd_user_info") -@ApiModel(value = "NdUserInfo对象", description = "") -public class NdUserInfo implements Serializable { - - private static final long serialVersionUID = 1L; - - private Long id; - - private LocalDateTime createOn; - - private LocalDateTime updateOn; - - private Long createBy; - - private Long updateBy; - - private String username; - - private String mobile; - - private String realName; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - public LocalDateTime getCreateOn() { - return createOn; - } - - public void setCreateOn(LocalDateTime createOn) { - this.createOn = createOn; - } - public LocalDateTime getUpdateOn() { - return updateOn; - } - - public void setUpdateOn(LocalDateTime updateOn) { - this.updateOn = updateOn; - } - public Long getCreateBy() { - return createBy; - } - - public void setCreateBy(Long createBy) { - this.createBy = createBy; - } - public Long getUpdateBy() { - return updateBy; - } - - public void setUpdateBy(Long updateBy) { - this.updateBy = updateBy; - } - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - public String getRealName() { - return realName; - } - - public void setRealName(String realName) { - this.realName = realName; - } - - @Override - public String toString() { - return "NdUserInfo{" + - "id=" + id + - ", createOn=" + createOn + - ", updateOn=" + updateOn + - ", createBy=" + createBy + - ", updateBy=" + updateBy + - ", username=" + username + - ", mobile=" + mobile + - ", realName=" + realName + - "}"; - } -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserAuth.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserAuth.java index 587dc45..5af0f52 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserAuth.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserAuth.java @@ -1,7 +1,5 @@ package com.ningdatech.pmapi.user.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import lombok.Data; @@ -11,20 +9,19 @@ import java.time.LocalDateTime; /** *

- * 用户鉴权表 + * *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ -@Data @TableName("nd_user_auth") -@ApiModel(value = "UserAuth对象", description = "用户鉴权表") +@Data +@ApiModel(value = "NdUserAuth对象", description = "") public class UserAuth implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.AUTO) private Long id; private LocalDateTime createOn; @@ -38,5 +35,4 @@ public class UserAuth implements Serializable { private String identifier; private String credential; - } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java index 21c009d..03ced2e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java @@ -1,10 +1,7 @@ package com.ningdatech.pmapi.user.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; @@ -13,70 +10,34 @@ import java.time.LocalDateTime; /** *

- * 用户信息表 + * *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ -@Data @TableName("nd_user_info") -@ApiModel(value = "UserInfo对象", description = "用户信息表") @Builder +@Data +@ApiModel(value = "NdUserInfo对象", description = "") public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty("主键") - @TableId(value = "id", type = IdType.AUTO) private Long id; - @ApiModelProperty("创建时间") private LocalDateTime createOn; - @ApiModelProperty("最后修改时间") private LocalDateTime updateOn; - @ApiModelProperty("创建人") private Long createBy; - @ApiModelProperty("最后修改人") private Long updateBy; - @ApiModelProperty("用户名(登陆账号)") private String username; - @ApiModelProperty("手机") private String mobile; - @ApiModelProperty("用户真实姓名") private String realName; - @ApiModelProperty("所属公司id") - private Long companyId; - - @ApiModelProperty("所属公司名称") - private String companyName; - - @ApiModelProperty("用户角色") - private String role; - - @ApiModelProperty("区域id") - private Long regionCode; - - @ApiModelProperty("头像文件id") - private Long avatarFileId; - - @ApiModelProperty("所负责的公司id列表") - private String manageCompanyIds; - - @ApiModelProperty("是否删除") - private Boolean deleted; - - @ApiModelProperty("身份证号") - private String idCard; - - @ApiModelProperty("浙政钉accountId") - private Long accountId; - } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java index ffcf71a..b8a66e9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java @@ -1,7 +1,6 @@ package com.ningdatech.pmapi.user.manage; import com.ningdatech.basic.model.PageVo; -import com.ningdatech.pmapi.user.mapper.UserInfoMapper; import com.ningdatech.pmapi.user.model.po.ReqUserDetailEditPO; import com.ningdatech.pmapi.user.model.po.ReqUserDisablePO; import com.ningdatech.pmapi.user.model.po.ReqUserInfoListPO; @@ -17,8 +16,6 @@ import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor public class UserInfoManage { - private final UserInfoMapper userInfoMapper; - public PageVo list(ReqUserInfoListPO reqUserInfoListPO) { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.java deleted file mode 100644 index 0e9c14b..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ningdatech.pmapi.user.mapper; - -import com.ningdatech.pmapi.user.entity.NdUserAuth; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -public interface NdUserAuthMapper extends BaseMapper { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.xml deleted file mode 100644 index 618d2cf..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserAuthMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserInfoMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserInfoMapper.java index 6b98902..41cab02 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserInfoMapper.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/NdUserInfoMapper.java @@ -1,6 +1,6 @@ package com.ningdatech.pmapi.user.mapper; -import com.ningdatech.pmapi.user.entity.NdUserInfo; +import com.ningdatech.pmapi.user.entity.UserInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author Lierbao * @since 2023-02-01 */ -public interface NdUserInfoMapper extends BaseMapper { +public interface NdUserInfoMapper extends BaseMapper { } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserAuthMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserAuthMapper.java index 84a85d9..5660e77 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserAuthMapper.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserAuthMapper.java @@ -1,15 +1,15 @@ package com.ningdatech.pmapi.user.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ningdatech.pmapi.user.entity.UserAuth; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** *

- * 用户鉴权表 Mapper 接口 + * Mapper 接口 *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ public interface UserAuthMapper extends BaseMapper { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.java deleted file mode 100644 index be92ee4..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ningdatech.pmapi.user.mapper; - -import com.ningdatech.pmapi.user.entity.UserInfo; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 用户信息表 Mapper 接口 - *

- * - * @author Liuxinxin - * @since 2023-01-04 - */ -public interface UserInfoMapper extends BaseMapper { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.xml deleted file mode 100644 index acb1729..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/mapper/UserInfoMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserAuthService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserAuthService.java deleted file mode 100644 index 5b2b4c0..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserAuthService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ningdatech.pmapi.user.service; - -import com.ningdatech.pmapi.user.entity.NdUserAuth; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -public interface INdUserAuthService extends IService { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserInfoService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserInfoService.java deleted file mode 100644 index e33e2b8..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/INdUserInfoService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ningdatech.pmapi.user.service; - -import com.ningdatech.pmapi.user.entity.NdUserInfo; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -public interface INdUserInfoService extends IService { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserAuthService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserAuthService.java index 6de3e0a..16590f3 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserAuthService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserAuthService.java @@ -1,16 +1,21 @@ package com.ningdatech.pmapi.user.service; -import com.ningdatech.pmapi.user.entity.UserAuth; import com.baomidou.mybatisplus.extension.service.IService; +import com.ningdatech.pmapi.user.entity.UserAuth; +import com.ningdatech.pmapi.user.entity.UserInfo; + +import java.util.Map; +import java.util.Set; /** *

- * 用户鉴权表 服务类 + * 服务类 *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ public interface IUserAuthService extends IService { + Map getUserMapByIds(Set staterUsers); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java index f93880c..49c7459 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java @@ -3,18 +3,14 @@ package com.ningdatech.pmapi.user.service; import com.ningdatech.pmapi.user.entity.UserInfo; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.Map; -import java.util.Set; - /** *

- * 用户信息表 服务类 + * 服务类 *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ public interface IUserInfoService extends IService { - Map getUserMapByIds(Set staterUsers); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserAuthServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserAuthServiceImpl.java deleted file mode 100644 index d445598..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserAuthServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ningdatech.pmapi.user.service.impl; - -import com.ningdatech.pmapi.user.entity.NdUserAuth; -import com.ningdatech.pmapi.user.mapper.NdUserAuthMapper; -import com.ningdatech.pmapi.user.service.INdUserAuthService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -@Service -public class NdUserAuthServiceImpl extends ServiceImpl implements INdUserAuthService { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserInfoServiceImpl.java deleted file mode 100644 index 60b69e5..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/NdUserInfoServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ningdatech.pmapi.user.service.impl; - -import com.ningdatech.pmapi.user.entity.NdUserInfo; -import com.ningdatech.pmapi.user.mapper.NdUserInfoMapper; -import com.ningdatech.pmapi.user.service.INdUserInfoService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author Lierbao - * @since 2023-02-01 - */ -@Service -public class NdUserInfoServiceImpl extends ServiceImpl implements INdUserInfoService { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserAuthServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserAuthServiceImpl.java index aacda5b..9d49fca 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserAuthServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserAuthServiceImpl.java @@ -1,20 +1,36 @@ package com.ningdatech.pmapi.user.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ningdatech.pmapi.user.entity.UserAuth; +import com.ningdatech.pmapi.user.entity.UserInfo; import com.ningdatech.pmapi.user.mapper.UserAuthMapper; +import com.ningdatech.pmapi.user.mapper.NdUserInfoMapper; import com.ningdatech.pmapi.user.service.IUserAuthService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + /** *

- * 用户鉴权表 服务实现类 + * 服务实现类 *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ @Service +@RequiredArgsConstructor public class UserAuthServiceImpl extends ServiceImpl implements IUserAuthService { + private final NdUserInfoMapper userInfoMapper; + + @Override + public Map getUserMapByIds(Set staterUsers) { + List userInfos = userInfoMapper.selectBatchIds(staterUsers); + return userInfos.stream().collect(Collectors.toMap(UserInfo::getId, u -> u)); + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java index 19ae598..1cd8ccc 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java @@ -1,35 +1,20 @@ package com.ningdatech.pmapi.user.service.impl; import com.ningdatech.pmapi.user.entity.UserInfo; -import com.ningdatech.pmapi.user.mapper.UserInfoMapper; +import com.ningdatech.pmapi.user.mapper.NdUserInfoMapper; import com.ningdatech.pmapi.user.service.IUserInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.apache.catalina.User; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - /** *

- * 用户信息表 服务实现类 + * 服务实现类 *

* - * @author Liuxinxin - * @since 2023-01-04 + * @author Lierbao + * @since 2023-02-01 */ @Service -@RequiredArgsConstructor -public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { - private final UserInfoMapper userInfoMapper; - @Override - public Map getUserMapByIds(Set staterUsers) { - List userInfos = userInfoMapper.selectBatchIds(staterUsers); - return userInfos.stream().collect(Collectors.toMap(UserInfo::getId,u -> u )); - } +public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { + } From 546e8ff16606656d00ac51589fec30297999cdcf Mon Sep 17 00:00:00 2001 From: CMM <2198256324@qq.com> Date: Wed, 15 Feb 2023 16:09:41 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/todocenter/bean/entity/ProgressNode.java | 2 +- .../pmapi/todocenter/bean/entity/UserInfoVO.java | 35 +++ .../todocenter/bean/entity/WorkNoticeInfo.java | 22 ++ .../bean/vo/ProcessProgressDetailVo.java | 11 +- .../bean/vo/ProgressNodeAuditInfoVo.java | 10 +- .../pmapi/todocenter/constant/WorkNotice.java | 3 +- .../pmapi/todocenter/manage/TodoCenterManage.java | 325 ++++++++++----------- .../todocenter/zwdd/model/MessageContent.java | 13 - .../pmapi/todocenter/zwdd/model/MessageText.java | 17 -- .../pmapi/user/service/IUserInfoService.java | 3 +- .../user/service/impl/UserInfoServiceImpl.java | 41 ++- 11 files changed, 265 insertions(+), 217 deletions(-) create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/UserInfoVO.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/WorkNoticeInfo.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageContent.java delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageText.java diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java index 8af91ed..2a58ad6 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/ProgressNode.java @@ -47,7 +47,7 @@ public class ProgressNode { /** * 节点相关人员 */ - private OrgUser user; + private UserInfoVO user; /** * 该节点动作操作类型 */ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/UserInfoVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/UserInfoVO.java new file mode 100644 index 0000000..758a220 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/UserInfoVO.java @@ -0,0 +1,35 @@ +package com.ningdatech.pmapi.todocenter.bean.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 节点用户相关信息 + * + * @author CMM + * @since 2023/02/15 14:28 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UserInfoVO { + + @ApiModelProperty("用户ID") + private Long userId; + + @ApiModelProperty("用户真实姓名") + private String realName; + + @ApiModelProperty("浙政钉accountId") + private Long accountId; + + @ApiModelProperty("用户部门编号") + private String organizationCode; + + @ApiModelProperty("用户部门名称") + private String organizationName; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/WorkNoticeInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/WorkNoticeInfo.java new file mode 100644 index 0000000..af2498e --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/entity/WorkNoticeInfo.java @@ -0,0 +1,22 @@ +package com.ningdatech.pmapi.todocenter.bean.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 发送工作通知所需信息 + * + * @author CMM + * @since 2023/02/15 13:57 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class WorkNoticeInfo { + private Long accountId; + private String organizationCode; + private String organizationName; + private String bizMsgId; + private String receiverUserId; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java index 4fb8d53..b393858 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProcessProgressDetailVo.java @@ -3,6 +3,7 @@ package com.ningdatech.pmapi.todocenter.bean.vo; import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.todocenter.bean.entity.ProgressNode; +import com.ningdatech.pmapi.todocenter.bean.entity.UserInfoVO; import com.ningdatech.pmapi.user.entity.UserInfo; import com.wflow.workflow.bean.process.OrgUser; import com.wflow.workflow.bean.process.form.Form; @@ -62,15 +63,7 @@ public class ProcessProgressDetailVo { /** * 发起人 */ - private OrgUser startTempUser; - /** - * 发起人 - */ - private UserInfo startUser; - /** - * 发起人部门 - */ - private String startDept; + private UserInfoVO startUser; /** * 发起时间 */ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java index b1ced2d..c57d5b3 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/bean/vo/ProgressNodeAuditInfoVo.java @@ -1,8 +1,10 @@ package com.ningdatech.pmapi.todocenter.bean.vo; import com.ningdatech.pmapi.todocenter.bean.entity.ProcessComment; +import com.ningdatech.pmapi.todocenter.bean.entity.UserInfoVO; import com.ningdatech.pmapi.user.entity.UserInfo; import com.wflow.workflow.bean.process.OrgUser; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,15 +23,21 @@ import java.util.Date; @AllArgsConstructor @Builder public class ProgressNodeAuditInfoVo extends ProcessComment { + @ApiModelProperty("评论ID") private String id; + @ApiModelProperty("评论") private String type; + @ApiModelProperty("任务ID") private String taskId; + @ApiModelProperty("评论类型") private String commentType; - private UserInfo user; + @ApiModelProperty("评论用户信息") + private UserInfoVO user; + @ApiModelProperty("评论时间") private Date createTime; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/constant/WorkNotice.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/constant/WorkNotice.java index 5b60ea6..3e63563 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/constant/WorkNotice.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/constant/WorkNotice.java @@ -7,7 +7,8 @@ package com.ningdatech.pmapi.todocenter.constant; public interface WorkNotice { public final String PASS_MSG_TEMPLATE = "标题:审核任务 内容:【%s】的【%s】需要您审核。"; public final String PASS_MSG_TEMPLATE2 = "【%s】已通过【%s】,请及时开始下一步操作。"; - public final String PASS_MSG_TEMPLATE3 = "【%s】的【%s】被退回,请及时处理。"; + public final String BACK_MSG_TEMPLATE = "【%s】的【%s】被退回,请及时处理。"; + public final String REJECT_MSG_TEMPLATE = "【%s】的【%s】被驳回,请及时处理。"; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 9edf7d4..1aa9cf8 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -2,27 +2,30 @@ package com.ningdatech.pmapi.todocenter.manage; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.basic.enumeration.Status; import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.NdDateUtils; -import com.ningdatech.pmapi.common.constant.DingConstant; import com.ningdatech.pmapi.common.enumeration.ExportOptionEnum; import com.ningdatech.pmapi.common.model.entity.ExcelExportWriter; import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.util.ExcelDownUtil; +import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; +import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService; +import com.ningdatech.pmapi.organization.service.IDingOrganizationService; import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.projectlib.service.IProjectService; import com.ningdatech.pmapi.todocenter.bean.entity.ProcessComment; import com.ningdatech.pmapi.todocenter.bean.entity.ProgressNode; +import com.ningdatech.pmapi.todocenter.bean.entity.UserInfoVO; +import com.ningdatech.pmapi.todocenter.bean.entity.WorkNoticeInfo; import com.ningdatech.pmapi.todocenter.bean.vo.ProcessProgressDetailVo; import com.ningdatech.pmapi.todocenter.bean.vo.ProgressNodeAuditInfoVo; import com.ningdatech.pmapi.todocenter.constant.HisProInsEndActId; @@ -34,11 +37,12 @@ import com.ningdatech.pmapi.todocenter.model.dto.req.ReqProcessHandlerDTO; import com.ningdatech.pmapi.todocenter.model.dto.req.ReqToBeProcessedDTO; import com.ningdatech.pmapi.todocenter.model.dto.req.ReqToBeProcessedExportDTO; import com.ningdatech.pmapi.todocenter.model.dto.res.ResToBeProcessedDTO; -import com.ningdatech.pmapi.todocenter.zwdd.model.MessageContent; -import com.ningdatech.pmapi.todocenter.zwdd.model.MessageText; +import com.ningdatech.pmapi.user.entity.NdUserInfo; import com.ningdatech.pmapi.user.entity.UserInfo; +import com.ningdatech.pmapi.user.service.INdUserInfoService; import com.ningdatech.pmapi.user.service.IUserInfoService; import com.ningdatech.zwdd.client.ZwddClient; +import com.sun.org.apache.bcel.internal.generic.NEW; import com.wflow.bean.do_.UserDo; import com.wflow.bean.entity.WflowCcTasks; import com.wflow.bean.entity.WflowModelHistorys; @@ -83,8 +87,6 @@ import org.flowable.task.service.history.NativeHistoricTaskInstanceQuery; import org.flowable.variable.api.history.HistoricVariableInstance; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; - -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -116,11 +118,12 @@ public class TodoCenterManage { private final OrgRepositoryService orgRepositoryService; private final WflowCcTasksMapper ccTasksMapper; private final ProcessModelService processModelService; - private final IUserInfoService userInfoService; + private final INdUserInfoService userInfoService; private final IProjectService projectService; private final StateMachineUtils stateMachineUtils; - private final ZwddClient zwddClient; + private final IDingEmployeeInfoService dingEmployeeInfoService; + private final IDingOrganizationService dingOrganizationService; /** * 待办中心待我处理项目列表查询 @@ -366,24 +369,26 @@ public class TodoCenterManage { Map var = new HashMap<>(16); var.put("approve_" + task.getId(), param.getAction()); - // 保存审核意见 if (hasComment(param.getAuditInfo())) { // 执行自定义的保存评论的功能 managementService.executeCommand(new SaveCommentCmd(param.getTaskId(), param.getInstanceId(), String.valueOf(userId), JSONObject.toJSONString(param.getAuditInfo()))); } - - // TODO 中止流程并使项目进入对应状态,给项目创建人、流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被驳回,请及时处理。 - // 获取bpm对象 BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); // 获取根节点即流程发起节点 FlowNode rootNode = (FlowNode) bpmnModel.getFlowElement("root"); - - // TODO 中止流程并使项目进入对应状态,给项目创建人、流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被驳回,请及时处理。 - // sendWorkNoticeToStartUser(task, projectName, rootNode); - + // TODO 中止流程并使项目进入对应状态,给项目创建人、 + // 流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被驳回,请及时处理。 + String startUserId = getRootUserId(rootNode, task.getProcessInstanceId()); + // 获取浙政钉用户ID + NdUserInfo auditUserInfo = userInfoService.getById(Long.valueOf(startUserId)); + WorkNoticeInfo sendWorkNoticeInfo = getSendWorkNoticeInfo(auditUserInfo); + WflowModels wflowModels = getLastWflowModels(task); + String formName = wflowModels.getFormName(); + String msg = String.format(REJECT_MSG_TEMPLATE, projectName, formName); + zwddClient.sendWorkNotice(sendWorkNoticeInfo.getReceiverUserId(),sendWorkNoticeInfo.getBizMsgId(),msg); // 更新项目状态和流程状态 updateRejectProjectStatus(userId, declaredProject); taskService.complete(param.getTaskId(), var); @@ -459,7 +464,6 @@ public class TodoCenterManage { /** * 审批任务:通过 - * * @param task 当前任务 * @param userId * @param param 参数 @@ -492,29 +496,25 @@ public class TodoCenterManage { Task currentTask = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult(); // 获取审核人信息,向审核人发送工作通知 String currentUserId = currentTask.getAssignee(); - UserInfo auditUserInfo = userInfoService.getById(Long.valueOf(currentUserId)); - // TODO 获取浙政钉用户dingKey,向其发送浙政钉工作通知 + NdUserInfo auditUserInfo = userInfoService.getById(Long.valueOf(currentUserId)); + // 获取发送浙政钉工作通知必要信息 + WorkNoticeInfo sendWorkNoticeInfo = getSendWorkNoticeInfo(auditUserInfo); String msg = String.format(PASS_MSG_TEMPLATE, null, projectName); - // 构建唯一的消息ID - String bizMsgId = "ZB_URGE_NOTICE_" + "_" + auditUserInfo.getDeptId() + "_" + auditUserInfo.getUserId(); - String dingKey = "123"; - zwddClient.sendWorkNotice(dingKey,bizMsgId,msg); + zwddClient.sendWorkNotice(sendWorkNoticeInfo.getReceiverUserId(),sendWorkNoticeInfo.getBizMsgId(),msg); return; } // 获取bpm对象 BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); // 若不是被退回项目,传节点定义key 获取当前节点 FlowNode currentNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey()); - // TODO 若当前流程是预审流程,需要在提交预审申报的时候,调用状态机判断申报后的项目状态, // 若是省级部门联审中,要对接外部接口,获取省级部门联审的结果,更新项目状态(预审申报提交的时候处理) - // 需要先通过后才能有下一个节点的信息 taskService.complete(param.getTaskId(), var); - String nextUserId = getNextUserId(currentNode, processInstanceId); // 获取当前项目状态 Integer status = declaredProject.getStatus(); // 若当前登录用户是最后一个审批人,需更新流程状态为审核完成,项目状态到下个状态 + // 并向流程发起人发送浙政钉工作通知:【项目名称】已通过【流程名称】,请及时开始下一步操作。 HistoricProcessInstance instance = historyService .createHistoricProcessInstanceQuery() .processInstanceId(processInstanceId) @@ -537,22 +537,63 @@ public class TodoCenterManage { throw new IllegalStateException("Unexpected value: " + status); } } - // 若有下一个审核人(当前节点的用户),向其发送浙政钉工作通知:标题:审核任务 内容:【单位名称】的【项目名称】需要您审核。 + // 若有下一个审核人(当前节点的用户), + // 向其发送浙政钉工作通知:标题:审核任务 内容:【单位名称】的【项目名称】需要您审核。 + String nextUserId = getNextUserId(currentNode, processInstanceId); if (Objects.nonNull(nextUserId)) { - // UserInfo auditUserInfo = userInfoService.getById(Long.valueOf(nextUserId)); - // TODO 获取浙政钉用户dingKey,向其发送浙政钉工作通知 + // 获取浙政钉用户ID + NdUserInfo auditUserInfo = userInfoService.getById(Long.valueOf(nextUserId)); + WorkNoticeInfo sendWorkNoticeInfo = getSendWorkNoticeInfo(auditUserInfo); String msg = String.format(PASS_MSG_TEMPLATE, null, projectName); - // sendWorkNotice(auditUserInfo,msg); + zwddClient.sendWorkNotice(sendWorkNoticeInfo.getReceiverUserId(),sendWorkNoticeInfo.getBizMsgId(),msg); } else { // 若没有,向发起人发送浙政钉工作通知:【项目名称】已通过【流程名称】,请及时开始下一步操作。 // TODO 向其发送浙政钉工作通知 获取根节点的孩子节点(即发起人节点),向其发送浙政钉工作通知 // 获取根节点即流程发起节点 - // FlowNode rootNode = (FlowNode) bpmnModel.getFlowElement("root"); - // sendPassWorkNoticeToStartUser(task, projectName, rootNode); + FlowNode rootNode = (FlowNode) bpmnModel.getFlowElement("root"); + String startUserId = getRootUserId(rootNode, task.getProcessInstanceId()); + // 获取浙政钉用户ID + NdUserInfo auditUserInfo = userInfoService.getById(Long.valueOf(startUserId)); + WorkNoticeInfo sendWorkNoticeInfo = getSendWorkNoticeInfo(auditUserInfo); + WflowModels wflowModels = getLastWflowModels(task); + String formName = wflowModels.getFormName(); + String msg = String.format(PASS_MSG_TEMPLATE2, projectName, formName); + zwddClient.sendWorkNotice(sendWorkNoticeInfo.getReceiverUserId(),sendWorkNoticeInfo.getBizMsgId(),msg); } } /** + * 获取发送浙政钉工作通知的信息 + * @param auditUserInfo + * @return com.ningdatech.pmapi.todocenter.bean.entity.WorkNoticeInfo + * @author CMM + * @since 2023/02/15 14:04 + */ + private WorkNoticeInfo getSendWorkNoticeInfo(NdUserInfo auditUserInfo) { + WorkNoticeInfo workNoticeInfo = new WorkNoticeInfo(); + Long accountId = auditUserInfo.getAccountId(); + if (Objects.isNull(accountId)){ + throw new BizException("该用户没有录入浙政钉信息!"); + } + workNoticeInfo.setAccountId(accountId); + // 根据浙政钉用户ID获取部门code + DingEmployeeInfo employeeInfo = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) + .eq(DingEmployeeInfo::getId, accountId)); + String organizationCode = employeeInfo.getOrganizationCode(); + workNoticeInfo.setOrganizationCode(organizationCode); + // 根据部门code获取部门名称 + DingOrganization dingOrganization = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) + .eq(DingOrganization::getOrganizationCode, organizationCode)); + String organizationName = dingOrganization.getOrganizationName(); + workNoticeInfo.setOrganizationName(organizationName); + // 构建唯一的消息ID + String bizMsgId = "ZD_WORK_NOTICE_" + "_" + organizationCode + "_" + organizationName + accountId; + workNoticeInfo.setBizMsgId(bizMsgId); + String receiverUserId = String.valueOf(accountId); + workNoticeInfo.setReceiverUserId(receiverUserId); + return workNoticeInfo; + } + /** * 当为通过操作时,更新项目表中项目状态 * * @param userId @@ -581,26 +622,6 @@ public class TodoCenterManage { } /** - * 给流程发起人发送工作通知 - * - * @param task 当前任务 - * @param projectName 项目名称 - * @param rootNode 流程发起节点 - * @return void - * @author CMM - * @since 2023/02/03 - */ - private void sendPassWorkNoticeToStartUser(Task task, String projectName, FlowNode rootNode) { - String startUserId = getRootUserId(rootNode, task.getProcessInstanceId()); - UserInfo startUserInfo = userInfoService.getById(Long.valueOf(startUserId)); - // 从历史表获取最新版本的流程 - WflowModels wflowModels = getLastWflowModels(task); - String formName = wflowModels.getFormName(); - String msg = String.format(PASS_MSG_TEMPLATE2, projectName, formName); - sendWorkNotice(startUserInfo, msg); - } - - /** * 获取流程发起节点的用户ID * * @param rootNode 根节点 @@ -631,7 +652,6 @@ public class TodoCenterManage { return rootUserId; } - /** * 获取当前节点的下一个节点的审核用户ID * @@ -681,44 +701,6 @@ public class TodoCenterManage { } /** - * 发送浙政钉工作通知 - * - * @param auditUserInfo 审核人信息 - * @param msg 要发送的工作通知 - * @return void - * @author CMM - * @since 2023/02/01 - */ - private void sendWorkNotice(UserInfo auditUserInfo, String msg) { - // TODO 获取浙政钉唯一标识 -// String dingKey = null; -// IntelligentGetClient intelligentGetClient = client.newIntelligentGetClient(DingConstant.WORKING_NOTICE); -// OapiMessageWorkNotificationRequest request = new OapiMessageWorkNotificationRequest(); -// // 消息体(参考下文示例消息格式) -// MessageText messageText = new MessageText(); -// messageText.setMsgType("text"); -// MessageContent messageContent = new MessageContent(); -// -// messageContent.setContent(msg); -// messageText.setText(messageContent); -// request.setMsg(JSONUtil.toJsonStr(messageText)); -// // 构建唯一的消息ID -// // String bizMsgId = "ZB_URGE_NOTICE_" + "_" + auditUserInfo.getDeptId() + "_" + auditUserInfo.getUserId(); -// // request.setBizMsgId(bizMsgId); -// request.setBizMsgId(null); -// // 租户id -// // request.setTenantId(GovDingProperties.tenantId.toString()); -// request.setReceiverIds(dingKey); -// // 获取结果 -// OapiMessageWorkNotificationResponse apiResult = intelligentGetClient.get(request); -// if (!apiResult.getSuccess() || !JSONUtil.parseObj(apiResult.getContent()).getBool("success")) { -// log.warn("发送工作通知失败: {}", apiResult.getContent()); -// throw new BizException(Status.BAD_REQUEST.toString()); -// } - - } - - /** * 撤销流程处理 * * @param handledTaskInstance 已处理的历史任务实例 @@ -823,8 +805,6 @@ public class TodoCenterManage { } } - - /** * 当为撤回操作时,更新项目表中的项目状态为前一个状态 * @@ -865,20 +845,18 @@ public class TodoCenterManage { Project declaredProject = projectService .getOne(Wrappers.lambdaQuery(Project.class).eq(Project::getInstCode, task.getProcessInstanceId())); String projectName = declaredProject.getProjectName(); - // 保存审核意见 if (hasComment(param.getAuditInfo())) { // 执行自定义的保存评论的功能 managementService.executeCommand(new SaveCommentCmd(param.getTaskId(), param.getInstanceId(), String.valueOf(userId), JSONObject.toJSONString(param.getAuditInfo()))); } - // 获取bpm对象 BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); // 传节点定义key 获取根节点即流程发起节点 FlowNode rootNode = (FlowNode) bpmnModel.getFlowElement("root"); - // TODO 流程变成【被退回】状态,待我处理中,为流程发起人增加一条待办记录, + // 流程变成【被退回】状态,待我处理中,为流程发起人增加一条待办记录, // 执行自定义回退逻辑,回退到流程发起人 // 注意:因为审核人有执行退回的权限,且是退回到流程发起人,说明是在同一个流程实例中,所以项目状态不需要更新 managementService.executeCommand(new BackToHisApprovalNodeCmd(runtimeService, bpmnModel, param.getTaskId(), rootNode.getId())); @@ -893,40 +871,26 @@ public class TodoCenterManage { declaredProject.setUpdateBy(userId); projectService.updateById(declaredProject); // TODO 给项目创建人、流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被退回,请及时处理。 - // sendBackWorkNoticeToStartUser(task, projectName, rootNode); - - } - - /** - * 给流程发起人发送流程退回工作通知 - * - * @param task - * @param projectName - * @param rootNode - * @return void - * @author CMM - * @since 2023/02/14 15:32 - */ - private void sendBackWorkNoticeToStartUser(Task task, String projectName, FlowNode rootNode) { String startUserId = getRootUserId(rootNode, task.getProcessInstanceId()); - UserInfo startUserInfo = userInfoService.getById(Long.valueOf(startUserId)); - // 从历史表获取最新版本的流程 + NdUserInfo auditUserInfo = userInfoService.getById(Long.valueOf(startUserId)); + WorkNoticeInfo sendWorkNoticeInfo = getSendWorkNoticeInfo(auditUserInfo); WflowModels wflowModels = getLastWflowModels(task); String formName = wflowModels.getFormName(); - String msg = String.format(PASS_MSG_TEMPLATE3, projectName, formName); - sendWorkNotice(startUserInfo, msg); + String msg = String.format(BACK_MSG_TEMPLATE, projectName, formName); + zwddClient.sendWorkNotice(sendWorkNoticeInfo.getReceiverUserId(),sendWorkNoticeInfo.getBizMsgId(),msg); + } /** * 查询流程表单数据及审批的进度步骤 - * * @param nodeId 当前获取流程人员关联的流程节点ID * @param instanceId 流程实例ID * @return 流程进度及表单详情 */ public ProcessProgressDetailVo getProcessDetail(String nodeId, String instanceId) { HistoricProcessInstance instance = historyService.createHistoricProcessInstanceQuery() - .processInstanceId(instanceId).singleResult(); + .processInstanceId(instanceId) + .singleResult(); // 取表单及表单数据 HistoricVariableInstance forms = historyService.createHistoricVariableInstanceQuery() .processInstanceId(instanceId) @@ -937,7 +901,9 @@ public class TodoCenterManage { List historicTaskInstances = historyService.createHistoricTaskInstanceQuery().processInstanceId(instanceId).list(); formDatas = historyService .createHistoricVariableInstanceQuery() - .executionIds(historicTaskInstances.stream().map(HistoricTaskInstance::getExecutionId).collect(Collectors.toSet())) + .executionIds(historicTaskInstances.stream() + .map(HistoricTaskInstance::getExecutionId) + .collect(Collectors.toSet())) .processInstanceId(instanceId) .list(); } else { @@ -953,15 +919,17 @@ public class TodoCenterManage { ProcessNode currentNode = null; if (StrUtil.isNotBlank(nodeId)) { // 搜索当前版本流程的配置 - WflowModelHistorys modelHistory = modelHistorysMapper.selectOne( - new QueryWrapper<>(WflowModelHistorys.builder().processDefId(instance.getProcessDefinitionId()) - .version(instance.getProcessDefinitionVersion()).build())); + WflowModelHistorys modelHistory = modelHistorysMapper.selectOne(new QueryWrapper<>(WflowModelHistorys.builder() + .processDefId(instance.getProcessDefinitionId()) + .version(instance.getProcessDefinitionVersion()) + .build())); currentNode = nodeCatchService.reloadProcessByStr(modelHistory.getProcess()).get(nodeId); } - UserDo users = orgRepositoryService.getUserById(instance.getStartUserId()); - OrgUser startUser = - OrgUser.builder().id(users.getUserId()).name(users.getUserName()).avatar(users.getAvatar()).build(); - + NdUserInfo userInfo = userInfoService.getById(Long.valueOf(instance.getStartUserId())); + HashSet userSet = new HashSet<>(); + userSet.add(String.valueOf(userInfo.getId())); + Map userMap = userInfoService.getUserMapByIds(userSet); + UserInfoVO userInfoVO = userMap.get(userInfo.getId()); List taskRecords = getHisTaskRecords(instanceId, nodePropsValue); // 获取添加抄送任务 taskRecords.addAll(getCcTaskRecords(instanceId)); @@ -969,27 +937,32 @@ public class TodoCenterManage { // TODO 下版实现 获取等待中且还未开始的任务,如果存在条件则需要直接解析条件 taskRecords.addAll(getFutureTask(instanceId)); } - taskRecords = - taskRecords.stream().sorted(Comparator.comparing(ProgressNode::getStartTime)).collect(Collectors.toList()); - taskRecords.add(0, - ProgressNode.builder().nodeId("root").name("提交申请").user(startUser).nodeType(NodeTypeEnum.ROOT) - .startTime(instance.getStartTime()).finishTime(instance.getStartTime()).taskId("root") - .result(ProcessHandlerEnum.PASS).build()); + taskRecords = taskRecords.stream() + .sorted(Comparator.comparing(ProgressNode::getStartTime)) + .collect(Collectors.toList()); + taskRecords.add(0, ProgressNode.builder() + .nodeId("root") + .name("提交申请") + .user(userInfoVO) + .nodeType(NodeTypeEnum.ROOT) + .startTime(instance.getStartTime()) + .finishTime(instance.getStartTime()) + .taskId("root") + .result(ProcessHandlerEnum.PASS).build()); // 提取全量表单数据 - Map formData = - formDatas.stream().filter(CodeUtil.distinctByKey(HistoricVariableInstance::getVariableName)).collect( - Collectors.toMap(HistoricVariableInstance::getVariableName, HistoricVariableInstance::getValue)); - HistoricVariableInstance variableInstance = historyService.createHistoricVariableInstanceQuery() - .processInstanceId(instanceId).variableName("owner").singleResult(); - ProcessInstanceUserDto owner = (ProcessInstanceUserDto) variableInstance.getValue(); - ProcessProgressDetailVo res = ProcessProgressDetailVo.builder().instanceId(instanceId) + Map formData = formDatas.stream() + .filter(CodeUtil.distinctByKey(HistoricVariableInstance::getVariableName)) + .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, HistoricVariableInstance::getValue)); + ProcessProgressDetailVo res = ProcessProgressDetailVo.builder() + .instanceId(instanceId) .version(instance.getProcessDefinitionVersion()) .formItems(formService.filterFormAndDataByPermConfig((List
) forms.getValue(), formData, currentNode)) - .formData(formData).processDefName(instance.getProcessDefinitionName()).startTempUser(startUser) - .startDept(null == owner ? null : owner.getOrgName()).result(instance.getEndActivityId()) - .startTime(instance.getStartTime()).progress(taskRecords).build(); - // UserInfo userInfo = userInfoService.getById(Long.valueOf(instance.getStartUserId())); - // res.setStartUser(userInfo); + .formData(formData).processDefName(instance.getProcessDefinitionName()) + .result(instance.getEndActivityId()) + .startTime(instance.getStartTime()) + .progress(taskRecords) + .build(); + res.setStartUser(userInfoVO); if (Objects.isNull(instance.getEndActivityId())) { res.setStatus(ProcessStatusEnum.UNDER_REVIEW.name()); } else if (HisProInsEndActId.BACK.equals(instance.getEndActivityId())) { @@ -1011,16 +984,21 @@ public class TodoCenterManage { */ private List getCcTaskRecords(String instanceId) { Set ccUsers = new HashSet<>(); - List ccList = ccTasksMapper - .selectList(new QueryWrapper().eq("instance_id", instanceId)).stream().map(task -> { + List ccList = ccTasksMapper.selectList(new QueryWrapper() + .eq("instance_id", instanceId)) + .stream() + .map(task -> { ccUsers.add(task.getUserId()); return ProgressNode.builder().nodeId(task.getNodeId()).nodeType(NodeTypeEnum.CC) - .name(task.getNodeName()).user(OrgUser.builder().id(task.getUserId()).build()) - .startTime(task.getCreateTime()).finishTime(task.getCreateTime()).build(); + .name(task.getNodeName()) + .user(UserInfoVO.builder().userId(Long.valueOf(task.getUserId())).build()) + .startTime(task.getCreateTime()) + .finishTime(task.getCreateTime()) + .build(); }).collect(Collectors.toList()); if (isNotEmpty(ccUsers)) { - Map userMap = userDeptOrLeaderService.getUserMapByIds(ccUsers); - ccList.stream().peek(v -> v.setUser(userMap.get(v.getUser().getId()))).collect(Collectors.toList()); + Map userMap = userInfoService.getUserMapByIds(ccUsers); + ccList.stream().peek(v -> v.setUser(userMap.get(v.getUser().getUserId()))).collect(Collectors.toList()); } return ccList; } @@ -1037,20 +1015,25 @@ public class TodoCenterManage { .processInstanceId(instanceId).orderByHistoricActivityInstanceStartTime().asc().list(); Set userSet = new HashSet<>(); // 获取节点处理结果 - Map varMap = historyService.createHistoricVariableInstanceQuery() - .processInstanceId(instanceId).variableNameLike("approve_%").list().stream().collect( - Collectors.toMap(HistoricVariableInstance::getVariableName, v -> (ProcessHandlerEnum) v.getValue())); + Map varMap = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(instanceId) + .variableNameLike("approve_%") + .list().stream() + .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, v -> (ProcessHandlerEnum) v.getValue())); Map> commentMap = new HashMap<>(); // 统一处理所有评论数据,省的多次查询 - List cmvos = - taskService.getProcessInstanceComments(instanceId).stream().map(comment -> { + List cmvos = taskService.getProcessInstanceComments(instanceId).stream() + .map(comment -> { userSet.add(comment.getUserId()); - ProgressNodeAuditInfoVo progressNodeAuditInfoVo = - ProgressNodeAuditInfoVo.builder().id(comment.getId()).taskId(comment.getTaskId()) - .commentType(comment.getType()).type("COMMENT").createTime(comment.getTime()) - .user(UserInfo.builder().id(Long.valueOf(comment.getUserId())).build()).build(); + ProgressNodeAuditInfoVo progressNodeAuditInfoVo = ProgressNodeAuditInfoVo.builder() + .id(comment.getId()) + .taskId(comment.getTaskId()) + .commentType(comment.getType()) + .type("COMMENT") + .createTime(comment.getTime()) + .user(UserInfoVO.builder().userId(Long.valueOf(comment.getUserId())).build()) + .build(); ProcessComment processComment = JSONObject.parseObject(comment.getFullMessage(), ProcessComment.class); progressNodeAuditInfoVo.setText(processComment.getText()); progressNodeAuditInfoVo.setAttachments(processComment.getAttachments()); @@ -1065,23 +1048,29 @@ public class TodoCenterManage { // 再将评论按照任务一次构建,方便取出 Map commentsMap = cmvos.stream().collect(Collectors.toMap(ProgressNodeAuditInfoVo::getTaskId, c -> c)); - List progressNodes = - list.stream().filter(his -> ObjectUtil.isNotNull(his.getTaskId())).map(his -> { + List progressNodes = list.stream().filter(his -> ObjectUtil.isNotNull(his.getTaskId())) + .map(his -> { Object props = nodeProps.get(his.getActivityId()); ApprovalModeEnum approvalMode = null; if (props instanceof ApprovalProps) { approvalMode = ((ApprovalProps) props).getMode(); } userSet.add(his.getAssignee()); - return ProgressNode.builder().nodeId(his.getActivityId()).name(his.getActivityName()) - .nodeType(NodeTypeEnum.APPROVAL).user(OrgUser.builder().id(his.getAssignee()).build()) - .startTime(his.getStartTime()).finishTime(his.getEndTime()).taskId(his.getTaskId()) - .approvalMode(approvalMode).auditInfo(commentsMap.get(his.getTaskId())) + return ProgressNode.builder() + .nodeId(his.getActivityId()) + .name(his.getActivityName()) + .nodeType(NodeTypeEnum.APPROVAL) + .user(UserInfoVO.builder().userId(Long.valueOf(his.getAssignee())).build()) + .startTime(his.getStartTime()) + .finishTime(his.getEndTime()) + .taskId(his.getTaskId()) + .approvalMode(approvalMode) + .auditInfo(commentsMap.get(his.getTaskId())) .result(varMap.get("approve_" + his.getTaskId())).build(); }).collect(Collectors.toList()); if (isNotEmpty(userSet)) { - Map map = userDeptOrLeaderService.getUserMapByIds(userSet); - progressNodes.forEach(n -> n.setUser(map.get(n.getUser().getId()))); + Map userMap = userInfoService.getUserMapByIds(userSet); + progressNodes.stream().peek(v -> v.setUser(userMap.get(v.getUser().getUserId()))).collect(Collectors.toList()); } return progressNodes; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageContent.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageContent.java deleted file mode 100644 index 167ae02..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageContent.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ningdatech.pmapi.todocenter.zwdd.model; - -import lombok.Data; - -/** - * 消息内容 - * @author CMM - * @since 2023/02/01 14:54 - */ -@Data -public class MessageContent { - private String content; -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageText.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageText.java deleted file mode 100644 index 4c84252..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/zwdd/model/MessageText.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ningdatech.pmapi.todocenter.zwdd.model; - -import lombok.Data; - -/** - * 文本消息 - * @author CMM - * @since 2023/02/01 14:53 - */ -@Data -public class MessageText { - - private String msgType; - - private MessageContent text; - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java index f93880c..e8515ba 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/IUserInfoService.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.user.service; +import com.ningdatech.pmapi.todocenter.bean.entity.UserInfoVO; import com.ningdatech.pmapi.user.entity.UserInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -16,5 +17,5 @@ import java.util.Set; */ public interface IUserInfoService extends IService { - Map getUserMapByIds(Set staterUsers); + Map getUserMapByIds(Set staterUsers); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java index 19ae598..e65976e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/service/impl/UserInfoServiceImpl.java @@ -1,5 +1,12 @@ package com.ningdatech.pmapi.user.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ningdatech.basic.exception.BizException; +import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; +import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService; +import com.ningdatech.pmapi.organization.service.IDingOrganizationService; +import com.ningdatech.pmapi.todocenter.bean.entity.UserInfoVO; import com.ningdatech.pmapi.user.entity.UserInfo; import com.ningdatech.pmapi.user.mapper.UserInfoMapper; import com.ningdatech.pmapi.user.service.IUserInfoService; @@ -9,10 +16,7 @@ import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -27,9 +31,34 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { private final UserInfoMapper userInfoMapper; + + private final IDingEmployeeInfoService dingEmployeeInfoService; + + private final IDingOrganizationService dingOrganizationService; @Override - public Map getUserMapByIds(Set staterUsers) { + public Map getUserMapByIds(Set staterUsers) { List userInfos = userInfoMapper.selectBatchIds(staterUsers); - return userInfos.stream().collect(Collectors.toMap(UserInfo::getId,u -> u )); + List resVos = userInfos.stream().map(u -> { + UserInfoVO userInfoVO = new UserInfoVO(); + userInfoVO.setUserId(u.getId()); + userInfoVO.setRealName(u.getRealName()); + userInfoVO.setAccountId(u.getAccountId()); + Long accountId = u.getAccountId(); + if (Objects.isNull(accountId)){ + throw new BizException("该用户没有录入浙政钉用户信息!"); + } + // 根据浙政钉用户ID获取部门code + DingEmployeeInfo employeeInfo = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) + .eq(DingEmployeeInfo::getId, accountId)); + String organizationCode = employeeInfo.getOrganizationCode(); + // 根据部门code获取部门名称 + DingOrganization dingOrganization = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) + .eq(DingOrganization::getOrganizationCode, organizationCode)); + String organizationName = dingOrganization.getOrganizationName(); + userInfoVO.setOrganizationCode(organizationCode); + userInfoVO.setOrganizationName(organizationName); + return userInfoVO; + }).collect(Collectors.toList()); + return resVos.stream().collect(Collectors.toMap(UserInfoVO::getUserId, v -> v)); } } From f0eb4272cc0090065696d86efc141c28c93b8cc4 Mon Sep 17 00:00:00 2001 From: liuxinxin Date: Wed, 15 Feb 2023 17:02:25 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E7=94=A8=E5=88=97=E8=A1=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=A1=A5=E5=85=85=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/user/controller/UserInfoController.java | 13 ++---- .../com/ningdatech/pmapi/user/entity/UserInfo.java | 1 + .../pmapi/user/manage/UserInfoManage.java | 50 +++++++++++++++++++++- .../pmapi/user/model/po/ReqUserDisablePO.java | 11 ++++- .../pmapi/user/model/vo/ResUserInfoListVO.java | 9 ++-- 5 files changed, 68 insertions(+), 16 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java index fad8006..4943f54 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java @@ -11,7 +11,6 @@ import com.ningdatech.pmapi.user.model.vo.ResUserInfoListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,10 +19,6 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; /** - *

- * 用户信息表 前端控制器 - *

- * * @author Liuxinxin * @since 2023-01-04 */ @@ -41,10 +36,10 @@ public class UserInfoController { return userInfoManage.list(reqUserInfoListPO); } - @ApiOperation(value = "用户禁用", notes = "用户禁用") - @PostMapping("/disable") - public void disable(@Valid @RequestBody ReqUserDisablePO reqUserDisablePO) { - userInfoManage.disable(reqUserDisablePO); + @ApiOperation(value = "用户禁用/启用", notes = "用户禁用/启用") + @PostMapping("/disable-enable") + public void disableOrEnable(@Valid @RequestBody ReqUserDisablePO reqUserDisablePO) { + userInfoManage.disableOrEnable(reqUserDisablePO); } @ApiOperation(value = "用户详情", notes = "用户详情") diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java index 03ced2e..75d807f 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/entity/UserInfo.java @@ -40,4 +40,5 @@ public class UserInfo implements Serializable { private String realName; + private String available; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java index b8a66e9..de80bb9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java @@ -1,14 +1,25 @@ package com.ningdatech.pmapi.user.manage; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo; +import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService; +import com.ningdatech.pmapi.organization.service.IDingOrganizationService; import com.ningdatech.pmapi.user.model.po.ReqUserDetailEditPO; import com.ningdatech.pmapi.user.model.po.ReqUserDisablePO; import com.ningdatech.pmapi.user.model.po.ReqUserInfoListPO; import com.ningdatech.pmapi.user.model.vo.ResUserDetailVO; import com.ningdatech.pmapi.user.model.vo.ResUserInfoListVO; +import com.ningdatech.pmapi.user.service.IUserInfoService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** * @author liuxinxin * @date 2023/2/13 上午9:09 @@ -17,12 +28,47 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class UserInfoManage { + private final IDingOrganizationService iDingOrganizationService; + private final IDingEmployeeInfoService iDingEmployeeInfoService; + private final IUserInfoService iUserInfoService; + public PageVo list(ReqUserInfoListPO reqUserInfoListPO) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(DingEmployeeInfo.class) + .eq(DingEmployeeInfo::getMainJob, "true"); - return null; + Page page = iDingEmployeeInfoService.page(new Page<>(reqUserInfoListPO.getPageNumber(), reqUserInfoListPO.getPageSize()), wrapper); + List records = page.getRecords(); + long total = page.getTotal(); + List resUserInfoListVOList = new ArrayList<>(); + if (records != null && records.size() > 0) { + resUserInfoListVOList = records.stream() + .map(r -> { + ResUserInfoListVO resListVO = new ResUserInfoListVO(); + resListVO.setName(r.getEmployeeName()); + resListVO.setOrgName(r.getOrganizationCode()); + resListVO.setOrgCode(r.getOrganizationCode()); + // TODO 从用户信息中获取 +// resListVO.setPhoneNo(); + // 从所属组织中获取 +// resListVO.setRegionId(); + resListVO.setStatus(false); + resListVO.setUpdateTime(r.getUpdateOn()); +// 从用户信息中获取 + resListVO.setUserId(1L); + resListVO.setEmployeeCode(r.getEmployeeCode()); + resListVO.setUserRoleList(new ArrayList<>()); + return resListVO; + }).collect(Collectors.toList()); + } + + PageVo pageVo = new PageVo<>(); + pageVo.setTotal(total); + pageVo.setRecords(resUserInfoListVOList); + return pageVo; } - public void disable(ReqUserDisablePO reqUserDisablePO) { + public void disableOrEnable(ReqUserDisablePO reqUserDisablePO) { + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/po/ReqUserDisablePO.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/po/ReqUserDisablePO.java index 2f712df..96196fb 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/po/ReqUserDisablePO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/po/ReqUserDisablePO.java @@ -12,11 +12,18 @@ import javax.validation.constraints.NotBlank; */ @Data -@ApiModel("用户禁用PO") +@ApiModel("用户禁用/启用 PO") public class ReqUserDisablePO { - @NotBlank(message = "用户ID不能为空") @ApiModelProperty("用户id") private Long userId; + @NotBlank(message = "浙政钉 用户编码 不能为空") + @ApiModelProperty("浙政钉 用户编码") + private String employeeCode; + + @NotBlank(message = "浙政钉 用户编码 不能为空") + @ApiModelProperty("操作 true: 启用 / false 禁用") + private Boolean operation; + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserInfoListVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserInfoListVO.java index 3e61983..a16ee03 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserInfoListVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserInfoListVO.java @@ -19,6 +19,9 @@ public class ResUserInfoListVO { @ApiModelProperty("用户id") private Long userId; + @ApiModelProperty("浙政钉 用户编码") + private String employeeCode; + @ApiModelProperty("姓名") private String name; @@ -28,8 +31,8 @@ public class ResUserInfoListVO { @ApiModelProperty("所在单位(主职)") private String orgName; - @ApiModelProperty("所在单位(主职)id") - private Long orgId; + @ApiModelProperty("所在单位(主职)code") + private String orgCode; @ApiModelProperty("所属区域") private Long regionId; @@ -38,7 +41,7 @@ public class ResUserInfoListVO { private List userRoleList; @ApiModelProperty("状态") - private String status; + private Boolean status; @ApiModelProperty("更新时间") private LocalDateTime updateTime; From b26a380fd6bb68480de8cf2dde30cf8f277f70cc Mon Sep 17 00:00:00 2001 From: WendyYang Date: Wed, 15 Feb 2023 17:13:17 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E8=AF=A6=E6=83=85=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/handler/GlobalResponseHandler.java | 1 + .../expert/controller/ExpertReviewController.java | 29 ++++++++++-- .../pmapi/expert/manage/ExpertReviewManage.java | 39 ++++++++++++++- .../expert/model/dto/ReviewTemplateOptionDTO.java | 39 +++++++++++++++ .../pmapi/expert/model/entity/ExpertReview.java | 2 +- .../expert/model/req/ExpertReviewDetailReq.java | 20 +------- .../expert/model/vo/ExpertReviewDetailVO.java | 55 ++++++++++++++++++++++ 7 files changed, 161 insertions(+), 24 deletions(-) create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ReviewTemplateOptionDTO.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertReviewDetailVO.java diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/handler/GlobalResponseHandler.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/handler/GlobalResponseHandler.java index e3f53eb..42b90a1 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/handler/GlobalResponseHandler.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/handler/GlobalResponseHandler.java @@ -24,6 +24,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; "com.ningdatech.pmapi.sys.controller", "com.ningdatech.pmapi.todocenter.controller", "com.ningdatech.pmapi.user.controller", + "com.ningdatech.pmapi.expert.controller" }) public class GlobalResponseHandler implements ResponseBodyAdvice { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertReviewController.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertReviewController.java index 1052bdd..19af5fd 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertReviewController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertReviewController.java @@ -4,15 +4,16 @@ package com.ningdatech.pmapi.expert.controller; import com.ningdatech.log.annotation.WebLog; import com.ningdatech.pmapi.expert.manage.ExpertReviewManage; import com.ningdatech.pmapi.expert.model.req.ExpertReviewDetailReq; +import com.ningdatech.pmapi.expert.model.vo.ExpertReviewDetailVO; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -37,4 +38,24 @@ public class ExpertReviewController { expertReviewManage.expertReview(req); } + @GetMapping("/detail/{projectId}/{userId}") + @ApiOperation("获取专家评审详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "专家ID"), + @ApiImplicitParam(name = "projectId", value = "项目ID") + }) + public ExpertReviewDetailVO getExpertReviewDetail(@PathVariable Long userId, @PathVariable Long projectId) { + return expertReviewManage.getExpertReviewDetail(userId, projectId); + } + + @GetMapping("/listForGroupLeader/{projectId}/{userId}") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "专家ID"), + @ApiImplicitParam(name = "projectId", value = "项目ID") + }) + @ApiOperation("查看组员评审意见") + public List listForGroupLeader(@PathVariable Long userId, @PathVariable Long projectId) { + return expertReviewManage.listForGroupLeader(projectId, userId); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertReviewManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertReviewManage.java index 804916c..ebeed24 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertReviewManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertReviewManage.java @@ -1,10 +1,15 @@ package com.ningdatech.pmapi.expert.manage; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ningdatech.basic.exception.BizException; +import com.ningdatech.basic.util.CollUtils; import com.ningdatech.cache.lock.DistributedLock; +import com.ningdatech.pmapi.expert.model.dto.ReviewTemplateOptionDTO; import com.ningdatech.pmapi.expert.model.entity.ExpertReview; import com.ningdatech.pmapi.expert.model.req.ExpertReviewDetailReq; +import com.ningdatech.pmapi.expert.model.vo.ExpertReviewDetailVO; import com.ningdatech.pmapi.expert.service.IExpertReviewService; import com.ningdatech.pmapi.user.util.LoginUserUtil; import lombok.RequiredArgsConstructor; @@ -33,6 +38,20 @@ public class ExpertReviewManage { return EXPERT_REVIEW_KEY + projectId + ":" + expertId; } + private ExpertReviewDetailVO buildExpertReviewDetail(ExpertReview review) { + return ExpertReviewDetailVO.builder() + .reviewResult(review.getReviewResult()) + .creator(review.getCreator()) + .projectId(review.getProjectId()) + .templateId(review.getTemplateId()) + .otherAdvice(review.getOtherAdvice()) + .isFinal(review.getIsFinal()) + .createOn(review.getCreateOn()) + .attachFileId(review.getAttachFileId()) + .reviewTemplateOptions(JSONUtil.toList(review.getContent(), ReviewTemplateOptionDTO.class)) + .build(); + } + public void expertReview(ExpertReviewDetailReq req) { Long userId = LoginUserUtil.getUserId(); Long projectId = req.getProjectId(); @@ -60,7 +79,7 @@ public class ExpertReviewManage { review.setContent(JSONUtil.toJsonStr(req.getReviewTemplateOptions())); review.setProjectId(req.getProjectId()); review.setTemplateId(req.getTemplateId()); - review.setAdvice(req.getOtherAdvice()); + review.setOtherAdvice(req.getOtherAdvice()); review.setAttachFileId(req.getAttachFileId()); review.setIsFinal(req.getIsFinal()); review.setCreator(LoginUserUtil.getUsername()); @@ -70,4 +89,22 @@ public class ExpertReviewManage { } } + public ExpertReviewDetailVO getExpertReviewDetail(Long projectId, Long userId) { + List reviews = expertReviewService.listByProjectIdAndExpertId(projectId, userId); + reviews.removeIf(ExpertReview::getIsFinal); + if (reviews.isEmpty()) { + throw BizException.wrap("评审记录不存在"); + } + return buildExpertReviewDetail(reviews.get(0)); + } + + public List listForGroupLeader(Long projectId, Long userId) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(ExpertReview.class); + query.eq(ExpertReview::getProjectId, projectId); + query.ne(ExpertReview::getCreateBy, userId); + query.orderByDesc(ExpertReview::getCreateOn); + List reviews = expertReviewService.list(query); + return CollUtils.convert(reviews, this::buildExpertReviewDetail); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ReviewTemplateOptionDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ReviewTemplateOptionDTO.java new file mode 100644 index 0000000..b4637ca --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ReviewTemplateOptionDTO.java @@ -0,0 +1,39 @@ +package com.ningdatech.pmapi.expert.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Tolerate; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * ReviewTemplateOptionVO + *

+ * + * @author WendyYang + * @since 16:12 2023/2/15 + */ +@Data +@Builder +public class ReviewTemplateOptionDTO { + + @Tolerate + public ReviewTemplateOptionDTO() { + } + + @ApiModelProperty("问题序号") + @NotNull(message = "问题序号不能为空") + private Integer questionSerialNo; + + @ApiModelProperty("选项序号") + @NotEmpty(message = "选项序号不能为空") + private List optionSerialNo; + + @ApiModelProperty("其他意见或建议") + private String otherAdvice; + +} \ No newline at end of file diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ExpertReview.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ExpertReview.java index 5ff3dce..c5d79bd 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ExpertReview.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ExpertReview.java @@ -37,7 +37,7 @@ public class ExpertReview implements Serializable { private String content; @ApiModelProperty("意见或建议") - private String advice; + private String otherAdvice; @ApiModelProperty("附件ID") private Long attachFileId; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertReviewDetailReq.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertReviewDetailReq.java index 683f58f..a879e38 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertReviewDetailReq.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertReviewDetailReq.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model.req; +import com.ningdatech.pmapi.expert.model.dto.ReviewTemplateOptionDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -30,7 +31,7 @@ public class ExpertReviewDetailReq { @Valid @ApiModelProperty("配置模版") @NotEmpty(message = "配置不能为空") - private List reviewTemplateOptions; + private List reviewTemplateOptions; @ApiModelProperty("其他意见或建议") @NotEmpty(message = "其他意见或建议不能为空") @@ -47,21 +48,4 @@ public class ExpertReviewDetailReq { @NotNull(message = "是否是最终意见不能为空") private Boolean isFinal; - @Data - public static class ReviewTemplateOptionVO { - - @ApiModelProperty("问题序号") - @NotNull(message = "问题序号不能为空") - private Integer questionSerialNo; - - @ApiModelProperty("选项序号") - @NotEmpty(message = "选项序号不能为空") - private List optionSerialNo; - - @ApiModelProperty("其他意见或建议") - private String otherAdvice; - - } - - } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertReviewDetailVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertReviewDetailVO.java new file mode 100644 index 0000000..7af0cd6 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertReviewDetailVO.java @@ -0,0 +1,55 @@ +package com.ningdatech.pmapi.expert.model.vo; + +import com.ningdatech.pmapi.expert.model.dto.ReviewTemplateOptionDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Tolerate; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * ExpertReviewDetailVO + *

+ * + * @author WendyYang + * @since 14:37 2023/2/15 + */ +@Data +@Builder +public class ExpertReviewDetailVO { + + @Tolerate + public ExpertReviewDetailVO() { + } + + @ApiModelProperty("模版ID") + private Long templateId; + + @ApiModelProperty("项目ID") + private Long projectId; + + @ApiModelProperty("配置模版") + private List reviewTemplateOptions; + + @ApiModelProperty("其他意见或建议") + private String otherAdvice; + + @ApiModelProperty("附件ID") + private Long attachFileId; + + @ApiModelProperty("评审结果:1 通过、2 需复核、3 不通过") + private Integer reviewResult; + + @ApiModelProperty("是否是最终意见") + private Boolean isFinal; + + @ApiModelProperty("评审时间") + private LocalDateTime createOn; + + @ApiModelProperty("专家名称") + private String creator; + +} From 406bcb74e5bbfeb70284bb26c4fb2b2d5041e7e9 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Wed, 15 Feb 2023 17:30:42 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=AF=84=E5=AE=A1=E6=A8=A1=E7=89=88=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expert/controller/ReviewTemplateSettingsController.java | 11 +++++++++-- .../pmapi/expert/manage/ReviewTemplateSettingsManage.java | 8 ++++++++ .../pmapi/expert/model/entity/ReviewTemplateSettings.java | 8 +++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java index 085d7db..0baacbf 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java @@ -12,6 +12,7 @@ import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -42,10 +43,16 @@ public class ReviewTemplateSettingsController { reviewTemplateSettingsManage.saveOrUpdate(req); } - @GetMapping("/template/{templateId}") + @GetMapping("/template") @ApiModelProperty("根据模版ID获取评审模版") - public ReviewTemplateVO getTemplateById(@PathVariable Long templateId) { + public ReviewTemplateVO getTemplateById(@RequestParam Long templateId) { return reviewTemplateSettingsManage.getReviewTemplateSettings(templateId); } + @GetMapping("/templates") + @ApiModelProperty("(批量)根据模版ID获取评审模版") + public List getTemplateById(@RequestParam List templateIds) { + return reviewTemplateSettingsManage.listReviewTemplateSettings(templateIds); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ReviewTemplateSettingsManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ReviewTemplateSettingsManage.java index 493ef1e..c81ca99 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ReviewTemplateSettingsManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ReviewTemplateSettingsManage.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ningdatech.basic.exception.BizException; +import com.ningdatech.basic.util.CollUtils; import com.ningdatech.pmapi.common.constant.BizConst; import com.ningdatech.pmapi.expert.model.dto.ReviewTemplateSettingsDTO; import com.ningdatech.pmapi.expert.model.entity.ReviewTemplateSettings; @@ -16,6 +17,8 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** *

* ReviewTemplateSettingsManage @@ -62,6 +65,11 @@ public class ReviewTemplateSettingsManage { return buildTemplateDetail(settings); } + public List listReviewTemplateSettings(List templateIds) { + List settings = reviewTemplateSettingsService.listByIds(templateIds); + return CollUtils.convert(settings, this::buildTemplateDetail); + } + private ReviewTemplateVO buildTemplateDetail(ReviewTemplateSettings settings) { if (settings == null) { throw BizException.wrap("模版不存在"); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ReviewTemplateSettings.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ReviewTemplateSettings.java index 6709249..f0fea2f 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ReviewTemplateSettings.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/entity/ReviewTemplateSettings.java @@ -1,8 +1,6 @@ package com.ningdatech.pmapi.expert.model.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -41,12 +39,16 @@ public class ReviewTemplateSettings implements Serializable { @ApiModelProperty("区域编码") private String regionCode; + @TableField(fill = FieldFill.INSERT) private Long createBy; + @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateBy; + @TableField(fill = FieldFill.INSERT) private LocalDateTime createOn; + @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateOn; } From 99e4ca20ccb26d8c2395ab72535e8d80acc25227 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Wed, 15 Feb 2023 17:50:48 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/expert/controller/ReviewTemplateSettingsController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java index 0baacbf..dc0dc15 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ReviewTemplateSettingsController.java @@ -6,6 +6,7 @@ import com.ningdatech.pmapi.expert.manage.ReviewTemplateSettingsManage; import com.ningdatech.pmapi.expert.model.req.ReviewTemplateReq; import com.ningdatech.pmapi.expert.model.vo.ReviewTemplateVO; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -45,12 +46,14 @@ public class ReviewTemplateSettingsController { @GetMapping("/template") @ApiModelProperty("根据模版ID获取评审模版") + @ApiImplicitParam(name = "templateId", defaultValue = "模版ID") public ReviewTemplateVO getTemplateById(@RequestParam Long templateId) { return reviewTemplateSettingsManage.getReviewTemplateSettings(templateId); } @GetMapping("/templates") @ApiModelProperty("(批量)根据模版ID获取评审模版") + @ApiImplicitParam(name = "templateIds", defaultValue = "模版ID集合") public List getTemplateById(@RequestParam List templateIds) { return reviewTemplateSettingsManage.listReviewTemplateSettings(templateIds); }