feat(REQ-3300) - 增加 IM 群聊中的重新发起和发起执行两个按钮的逻辑
This commit is contained in:
parent
7a7aae20c0
commit
b2bb2ec3d4
@ -2,7 +2,7 @@ package cn.axzo.nanopart.visa.api.changerecord;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
@ -120,5 +120,20 @@ public interface ChangeRecordApi {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/change/record/forbid")
|
||||
ApiResult<Void> forbidChangeRecord(@Validated @RequestBody ChangeRecordForbidReq req);
|
||||
ApiResult<Void> forbidChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req);
|
||||
|
||||
/**
|
||||
* IM 变洽签群,“重新发起”按钮
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/change/reDecision")
|
||||
ApiResult<Void> reDecisionChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req);
|
||||
|
||||
/**
|
||||
* IM 变洽签全,“发起执行”按钮
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/change/execute")
|
||||
ApiResult<Void> executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req();
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ import javax.validation.constraints.NotNull;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ChangeRecordForbidReq {
|
||||
public class ChangeRecordButtonOperationReq {
|
||||
|
||||
/**
|
||||
* 变洽签主键 ID
|
||||
@ -25,6 +25,12 @@ public class ChangeRecordForbidReq {
|
||||
@NotNull(message = "变洽签 ID 不能为空")
|
||||
private Long visaId;
|
||||
|
||||
/**
|
||||
* IM 群 ID
|
||||
*/
|
||||
@NotNull(message = "IM 群 ID 不能为空")
|
||||
private Long imGroupId;
|
||||
|
||||
/**
|
||||
* 操作人 personId
|
||||
*/
|
||||
@ -5,7 +5,7 @@ import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.framework.domain.web.result.PageData;
|
||||
import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
@ -21,6 +21,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -108,8 +109,20 @@ public class ChangeRecordController implements ChangeRecordApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> forbidChangeRecord(ChangeRecordForbidReq req) {
|
||||
public ApiResult<Void> forbidChangeRecord(ChangeRecordButtonOperationReq req) {
|
||||
changeRecordService.forbid(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> reDecisionChangeRecord(ChangeRecordButtonOperationReq req) {
|
||||
changeRecordService.reDecision(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> executeChangeRecord(ChangeRecordButtonOperationReq req) {
|
||||
changeRecordService.doExecute(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,6 +40,13 @@ public interface ChangeRecordRelationService extends IService<ChangeRecordRelati
|
||||
*/
|
||||
Boolean saveImOperationParticipate(ImGroupOperationReq req);
|
||||
|
||||
/**
|
||||
* IM 群聊中,群主操作重新发起,清空所有人的操作信息
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
Boolean clearImOperationParticipate(ImGroupOperationReq req);
|
||||
|
||||
/**
|
||||
* IM 群聊界面,查询当前人的 tips 横条
|
||||
*
|
||||
|
||||
@ -2,7 +2,7 @@ package cn.axzo.nanopart.visa.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.PageData;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq;
|
||||
@ -104,7 +104,7 @@ public interface ChangeRecordService extends IService<ChangeRecord> {
|
||||
*
|
||||
* @param req
|
||||
*/
|
||||
void forbid(ChangeRecordForbidReq req);
|
||||
void forbid(ChangeRecordButtonOperationReq req);
|
||||
|
||||
/**
|
||||
* IM 群聊中提交审批
|
||||
@ -113,4 +113,8 @@ public interface ChangeRecordService extends IService<ChangeRecord> {
|
||||
* @return
|
||||
*/
|
||||
Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req);
|
||||
|
||||
void reDecision(ChangeRecordButtonOperationReq req);
|
||||
|
||||
void doExecute(ChangeRecordButtonOperationReq req);
|
||||
}
|
||||
|
||||
@ -23,10 +23,10 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
@ -134,9 +134,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean saveImOperationParticipate(ImGroupOperationReq req) {
|
||||
ChangeRecord record = changeRecordService.getById(req.getVisaId());
|
||||
AssertUtil.notNull(record, "未找到变洽签记录");
|
||||
AssertUtil.isTrue(Objects.equals(record.getImGroupId(), req.getImGroupId()), "IM群信息不匹配");
|
||||
|
||||
ChangeRecordRelation relation = new ChangeRecordRelation();
|
||||
relation.setVisaId(req.getVisaId());
|
||||
@ -152,6 +154,17 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean clearImOperationParticipate(ImGroupOperationReq req) {
|
||||
ChangeRecord record = changeRecordService.getById(req.getVisaId());
|
||||
AssertUtil.notNull(record, "未找到变洽签记录");
|
||||
AssertUtil.isTrue(Objects.equals(record.getImGroupId(), req.getImGroupId()), "IM 群信息不匹配");
|
||||
|
||||
deleteByVisaId(req.getVisaId(), Lists.newArrayList(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE));
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImGroupTipsResp queryImGroupTips(ImGroupTipsQueryReq req) {
|
||||
ChangeRecord record = changeRecordService.getById(req.getVisaId());
|
||||
|
||||
@ -28,8 +28,9 @@ import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -1027,9 +1028,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forbid(ChangeRecordForbidReq req) {
|
||||
public void forbid(ChangeRecordButtonOperationReq req) {
|
||||
ChangeRecord record = getById(req.getVisaId());
|
||||
|
||||
//校验操作人
|
||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||
|
||||
ChangeStatusRequest changeStatusRequest = new ChangeStatusRequest();
|
||||
changeStatusRequest.setVisaId(req.getVisaId());
|
||||
changeStatusRequest.setUpdateStatus(VisaStatusEnum.FORBIDED);
|
||||
@ -1056,8 +1060,25 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
}
|
||||
}
|
||||
|
||||
private void validOperationPermission(Long visaId, Long personId, Long ouId, Long workspaceId) {
|
||||
List<ChangeRecordConfirm> confirmUsers = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder()
|
||||
.visaId(visaId)
|
||||
.bizType(VisaConfirmBizTypeEnum.CREATE)
|
||||
.build());
|
||||
|
||||
AssertUtil.isTrue(CollectionUtils.isNotEmpty(confirmUsers) && confirmUsers.size() == 1, "单据发起人信息数据异常");
|
||||
|
||||
ChangeRecordConfirm creator = confirmUsers.get(0);
|
||||
AssertUtil.isTrue(Objects.equals(creator.getPersonId(), personId)
|
||||
&& Objects.equals(creator.getOuId(), ouId)
|
||||
&& Objects.equals(creator.getWorkspaceId(), workspaceId), "不是单据发起人,不能操作");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||
|
||||
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
|
||||
AssertUtil.notNull(createReq, "未找到变洽签单据");
|
||||
createReq.setApprovePersonInfoList(req.getApprovePersonInfoList());
|
||||
@ -1068,6 +1089,26 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
return req.getVisaId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reDecision(ChangeRecordButtonOperationReq req) {
|
||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||
|
||||
changeRecordRelationService.clearImOperationParticipate(ImGroupOperationReq.builder()
|
||||
.visaId(req.getVisaId())
|
||||
.imGroupId(req.getImGroupId())
|
||||
.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doExecute(ChangeRecordButtonOperationReq req) {
|
||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||
|
||||
changeStatus(ChangeStatusRequest.builder()
|
||||
.visaId(req.getVisaId())
|
||||
.updateStatus(VisaStatusEnum.EXECUTING)
|
||||
.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过变更单id构建审批提交对象
|
||||
*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user