package com.highdatas.mdm.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.highdatas.mdm.entity.Flows;
|
import com.highdatas.mdm.entity.MaintainField;
|
import com.highdatas.mdm.mapper.FlowsMapper;
|
import com.highdatas.mdm.mapper.SysFieldMapper;
|
import com.highdatas.mdm.pojo.ActivitiBusinessType;
|
import com.highdatas.mdm.pojo.ActivitiStatus;
|
import com.highdatas.mdm.pojo.NextTaskUserInfo;
|
import com.highdatas.mdm.service.*;
|
import com.highdatas.mdm.service.act.IdentityService;
|
import com.highdatas.mdm.service.act.TaskService;
|
import com.highdatas.mdm.util.DbUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author kimi
|
* @since 2019-12-19
|
*/
|
@Service
|
@Slf4j
|
public class FlowsServiceImpl extends ServiceImpl<FlowsMapper, Flows> implements IFlowsService {
|
@Autowired
|
IMaintainFieldService maintainFieldService;
|
@Autowired
|
TaskService taskService;
|
@Autowired
|
SysFieldMapper fieldMapper;
|
@Autowired
|
IMasterModifiedService masterModifiedService;
|
@Autowired
|
IMaintainService maintainService;
|
@Autowired
|
IdentityService identityService;
|
@Autowired
|
ISysViewService viewService;
|
@Autowired
|
IMasterAuthorSubscribeService subscribeService;
|
@Autowired
|
ISysMenuService menuService;
|
|
/**
|
*
|
* @description: 创建新字段版本
|
* @param userId 用户id
|
* @param maintainId 数据版本id
|
* @param tableName 表名
|
*
|
* @return: maintainfielid 字段版本对象
|
*
|
*/
|
@Override
|
public MaintainField createNowVerion(String tableName, String maintainId, String userId) {
|
MaintainField nowMaintain = maintainFieldService.getNextMaintain(tableName, userId);
|
// 搬运新版本字段
|
String maintainParams;
|
if (StringUtils.isEmpty(maintainId)) {
|
maintainParams = "maintain_field_id is null and table_name = " + DbUtils.quotedStr(tableName);
|
}else {
|
maintainParams = "maintain_field_id = " + DbUtils.quotedStr(maintainId);
|
}
|
|
if (nowMaintain != null) {
|
String maintainFieldId = DbUtils.quotedStr(nowMaintain.getId());
|
fieldMapper.tansNewVersion(maintainFieldId, maintainParams);
|
}
|
|
return nowMaintain;
|
}
|
/**
|
*
|
* @description: 通过业务id获取审批状态
|
* @param businessId 业务id
|
* @return: status
|
*
|
*/
|
@Override
|
public ActivitiStatus getStatusByBusinessId(String businessId) {
|
Flows flows = selectOne(new EntityWrapper<Flows>().eq("business_id", businessId).orderBy("create_time desc"));
|
if (flows == null){
|
return null;
|
}
|
return flows.getStatus();
|
}
|
/**
|
*
|
* @description: 判断是否为下一节点审批人
|
* @param flows 流程
|
* @param userId 用户id
|
* @return: status
|
*
|
*/
|
@Override
|
public boolean isNextAudit(Flows flows, String userId) {
|
NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId());
|
if (nestTaskAssignee == null){
|
return false;
|
}
|
List<String> userIdList = nestTaskAssignee.getUserIdList();
|
if (userIdList.contains(userId)) {
|
return true;
|
}
|
|
List<String> roleIdList = nestTaskAssignee.getRoleIdList();
|
if (roleIdList == null || roleIdList.isEmpty()) {
|
return false;
|
}
|
|
List<String> roleByUser = identityService.getRoleByUser(userId);
|
if (roleByUser == null || roleByUser.isEmpty()) {
|
return false;
|
}
|
long count = roleByUser.stream().filter(roleId -> roleIdList.contains(roleId)).count();
|
if (count == 0) {
|
return false;
|
}else {
|
return true;
|
}
|
}
|
|
/**
|
*
|
* @description: 流程完成后的操作
|
* @param flows 流程实例
|
*
|
*/
|
|
@Override
|
public void aduitFinish(Flows flows) {
|
// 新增线程
|
new Thread(() -> {
|
log.info("处理 生成版本后的操作");
|
if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){
|
String maintainId = flows.getBusinessId();
|
log.info("flow-maintain:" + maintainId);
|
//masterModifiedService.dealFlow(maintainId, flows.getStatus());
|
//log.info("flow-masterModifiedService end");
|
maintainService.dealFlow(maintainId, flows.getStatus());
|
log.info("flow-maintainService end");
|
viewService.dealFlow(maintainId, flows.getStatus());
|
log.info("flow-viewService end");
|
subscribeService.dealFlow(maintainId, flows.getStatus());
|
log.info("flow-subscribeService end");
|
menuService.dealFlow(maintainId, flows.getStatus(), flows.getUserId());
|
log.info("flow-menuService end");
|
}
|
if (flows.getBusinessType().equals(ActivitiBusinessType.field)){
|
String maintainId = flows.getBusinessId();
|
maintainFieldService.dealFlow(maintainId, flows.getStatus());
|
|
}
|
}).start();
|
}
|
}
|