update:修改转办审核消息推送失败的bug;完善分组管理

This commit is contained in:
sunzheng
2024-08-02 18:52:28 +08:00
parent f9b62ae927
commit 713764790f
6 changed files with 71 additions and 26 deletions
@@ -100,10 +100,7 @@ public class SysGroupController {
@GetMapping("/list") @GetMapping("/list")
@ApiOperation(value = "分组管理-列表查询", notes = "分组管理-列表查询") @ApiOperation(value = "分组管理-列表查询", notes = "分组管理-列表查询")
public Result<Object> list() { public Result<Object> list() {
LambdaQueryWrapper<SysGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>(); List<SysGroup> list = sysGroupService.queryList();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
lambdaQueryWrapper.eq(SysGroup::getCreateBy, loginUser.getUsername());
List<SysGroup> list = sysGroupService.list(lambdaQueryWrapper);
return Result.OK(list); return Result.OK(list);
} }
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.system.entity.SysGroup; import com.jero.modules.system.entity.SysGroup;
import java.util.List;
/** /**
* <p> * <p>
* 用户分组表 Mapper 接口 * 用户分组表 Mapper 接口
@@ -18,4 +20,6 @@ public interface SysGroupMapper extends BaseMapper<SysGroup> {
IPage<SysGroup> queryPageList(Page<SysGroup> page,SysGroup sysGroup); IPage<SysGroup> queryPageList(Page<SysGroup> page,SysGroup sysGroup);
SysGroup queryOne(String id); SysGroup queryOne(String id);
List<SysGroup> queryList(SysGroup sysGroup);
} }
@@ -10,7 +10,11 @@
sg.create_time, sg.create_time,
count(sug.id) as count, count(sug.id) as count,
GROUP_CONCAT(sug.user_id) as ids, GROUP_CONCAT(sug.user_id) as ids,
GROUP_CONCAT(CONCAT(su.realname, '(', su.username, ')') ORDER BY su.realname, su.username) as userNames GROUP_CONCAT(CONCAT(su.realname, '(', su.username, ')') ORDER BY su.realname, su.username) as userNames,
CASE
WHEN sg.create_by = #{sysGroup.currentUserName} THEN 1
ELSE 0
END as is_admin_created
from sys_group sg from sys_group sg
LEFT JOIN sys_user_group sug on sg.id = sug.group_id LEFT JOIN sys_user_group sug on sg.id = sug.group_id
LEFT JOIN sys_user su on sug.user_id = su.id LEFT JOIN sys_user su on sug.user_id = su.id
@@ -33,7 +37,7 @@
</if> </if>
</where> </where>
group by sg.id,sg.group_name group by sg.id,sg.group_name
order by sg.create_time desc order by is_admin_created desc, sg.create_time desc
</select> </select>
<select id="queryOne" resultType="com.jero.modules.system.entity.SysGroup"> <select id="queryOne" resultType="com.jero.modules.system.entity.SysGroup">
@@ -50,4 +54,20 @@
LEFT JOIN sys_user su on sug.user_id = su.id LEFT JOIN sys_user su on sug.user_id = su.id
where sg.id = #{id} where sg.id = #{id}
</select> </select>
<select id="queryList" resultType="com.jero.modules.system.entity.SysGroup">
select
sg.*,
CASE
WHEN sg.create_by = #{currentUserName} THEN 1
ELSE 0
END as is_admin_created
from sys_group sg
<where>
<if test="isAdmin != 1">
sg.create_by = #{currentUserName}
</if>
</where>
order by is_admin_created desc, sg.create_time desc
</select>
</mapper> </mapper>
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.modules.system.entity.SysGroup; import com.jero.modules.system.entity.SysGroup;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* <p> * <p>
@@ -26,4 +27,7 @@ public interface ISysGroupService extends IService<SysGroup> {
IPage<SysGroup> queryPageList(SysGroup sysGroup, Integer pageNo, Integer pageSize, HttpServletRequest req); IPage<SysGroup> queryPageList(SysGroup sysGroup, Integer pageNo, Integer pageSize, HttpServletRequest req);
SysGroup queryOne(String id); SysGroup queryOne(String id);
List<SysGroup> queryList();
} }
@@ -128,4 +128,16 @@ public class SysGroupServiceImpl extends ServiceImpl<SysGroupMapper, SysGroup> i
return Result.OK("操作成功"); return Result.OK("操作成功");
} }
@Override
public List<SysGroup> queryList() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
SysGroup sysGroup = new SysGroup();
if (loginUser.getRoleIds().contains("admin") || loginUser.getRoleIds().contains("superAdmin")){
sysGroup.setIsAdmin("1");
}else {
sysGroup.setIsAdmin("0");
}
sysGroup.setCurrentUserName(loginUser.getUsername());
return sysGroupMapper.queryList(sysGroup);
}
} }
@@ -256,30 +256,25 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
logMessage(JSON.toJSONString(instanceDto), instanceDto.getTitle(), jsonResponse, "/feishu/synchronizeApprovalInstance", Constant.FEISHU_PENDING); logMessage(JSON.toJSONString(instanceDto), instanceDto.getTitle(), jsonResponse, "/feishu/synchronizeApprovalInstance", Constant.FEISHU_PENDING);
// 使用审批机器人推送消息 // 使用审批机器人推送消息
String taskStatus = instanceDto.getTaskStatus(); String taskStatus = instanceDto.getTaskStatus();
String taskIds = instanceDto.getTaskIds();
LambdaQueryWrapper<ProcessApprovalRecord> lambdaQueryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<ProcessApprovalRecord> lambdaQueryWrapper = new LambdaQueryWrapper();
lambdaQueryWrapper.eq(ProcessApprovalRecord::getTaskId,taskIds); lambdaQueryWrapper.eq(ProcessApprovalRecord::getTaskId, instanceDto.getTaskIds()).or()
.eq(ProcessApprovalRecord::getTransferTaskId, instanceDto.getTaskIds());
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(lambdaQueryWrapper, false); ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(lambdaQueryWrapper, false);
String feishuMsgId = processApprovalRecord.getFeishuMsgId(); String feishuMsgId = processApprovalRecord.getFeishuMsgId();
if (StringUtils.isBlank(feishuMsgId)) { if (StringUtils.isBlank(feishuMsgId) || instanceDto.getTaskIds().contains("_")) {
// 如果该条审核记录没有飞书消息id,证明是同步待办 // 飞书消息为空或者是转办的情况下,都需要进行待办消息的推送
BotApprovalMessageDto botApprovalMessageDto = new BotApprovalMessageDto(); if ("PENDING".equals(instanceDto.getTaskStatus())) {
botApprovalMessageDto.setTemplateId("1008"); BotApprovalMessageDto botApprovalMessageDto = buildBotApprovalMessageDto(instanceDto, approvalsInstanceVo);
botApprovalMessageDto.setApprovalName(instanceDto.getTitle()); String msgId = sendApprovalMessageByBot(botApprovalMessageDto);
botApprovalMessageDto.setReceivedUserId(approvalsInstanceVo.getTask_list().get(0).getUser_id()); // 将msgId存入审核记录表
botApprovalMessageDto.setApplicantUserId(approvalsInstanceVo.getUser_id()); LambdaUpdateWrapper<ProcessApprovalRecord> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
botApprovalMessageDto.setTitleUserId(approvalsInstanceVo.getUser_id()); lambdaUpdateWrapper.eq(ProcessApprovalRecord::getTaskId, instanceDto.getTaskIds()).or()
botApprovalMessageDto.setContent1(instanceDto.getTitle()); .eq(ProcessApprovalRecord::getTransferTaskId, instanceDto.getTaskIds());
botApprovalMessageDto.setPcUrl(approvalsInstanceVo.getTask_list().get(0).getLinks().getPc_link()); lambdaUpdateWrapper.set(ProcessApprovalRecord::getFeishuMsgId,msgId);
botApprovalMessageDto.setMobileUrl(approvalsInstanceVo.getTask_list().get(0).getLinks().getMobile_link()); processApprovalRecordService.update(lambdaUpdateWrapper);
String msgId = sendApprovalMessageByBot(botApprovalMessageDto); }
// 将msgId存入审核记录表
LambdaUpdateWrapper<ProcessApprovalRecord> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(ProcessApprovalRecord::getTaskId,instanceDto.getTaskIds());
lambdaUpdateWrapper.set(ProcessApprovalRecord::getFeishuMsgId,msgId);
processApprovalRecordService.update(lambdaUpdateWrapper);
}else { }else {
// 如果该条审核记录有飞书id ,说明是同步已办 // 如果该条审核记录有飞书id ,说明是同步已办,进行审核消息状态的更新
ApprovalsUpdateMessageVo approvalsUpdateMessageVo = new ApprovalsUpdateMessageVo(); ApprovalsUpdateMessageVo approvalsUpdateMessageVo = new ApprovalsUpdateMessageVo();
approvalsUpdateMessageVo.setMessage_id(feishuMsgId); approvalsUpdateMessageVo.setMessage_id(feishuMsgId);
approvalsUpdateMessageVo.setStatus(taskStatus); approvalsUpdateMessageVo.setStatus(taskStatus);
@@ -291,6 +286,19 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
} }
} }
private BotApprovalMessageDto buildBotApprovalMessageDto(InstanceDto instanceDto, ApprovalsInstanceVo approvalsInstanceVo) {
BotApprovalMessageDto botApprovalMessageDto = new BotApprovalMessageDto();
botApprovalMessageDto.setTemplateId("1008");
botApprovalMessageDto.setApprovalName(instanceDto.getTitle());
botApprovalMessageDto.setReceivedUserId(approvalsInstanceVo.getTask_list().get(0).getUser_id());
botApprovalMessageDto.setApplicantUserId(approvalsInstanceVo.getUser_id());
botApprovalMessageDto.setTitleUserId(approvalsInstanceVo.getUser_id());
botApprovalMessageDto.setContent1(instanceDto.getTitle());
botApprovalMessageDto.setPcUrl(approvalsInstanceVo.getTask_list().get(0).getLinks().getPc_link());
botApprovalMessageDto.setMobileUrl(approvalsInstanceVo.getTask_list().get(0).getLinks().getMobile_link());
return botApprovalMessageDto;
}
private ApprovalsInstanceVo buildApprovalsInstanceVo(InstanceDto instanceDto) throws Exception { private ApprovalsInstanceVo buildApprovalsInstanceVo(InstanceDto instanceDto) throws Exception {
// 转换userId为飞书Id // 转换userId为飞书Id
// 发起人的id // 发起人的id