修改:常用参数返回值
This commit is contained in:
parent
0d3a192d49
commit
7a2f5403a2
@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
|
||||
|
||||
@SQLQuery(value = {
|
||||
@SQL(view = "getCommonAndParameters",
|
||||
sql = "SELECT ymcp.*, ymp.parameter_name, ymp.parameter_type, ymp.subsystem_name, ymp.parts_name FROM yfsjglpt_model_common_parameters ymcp LEFT JOIN yfsjglpt_model_parameter ymp ON ymcp.parameter_id = ymp.id WHERE ymcp.common_id IN (#ids)"),
|
||||
sql = "SELECT ymcp.*, ymp.parameter_name as 'parameterName', ymp.parameter_type as 'parameterType', ymp.subsystem_name as 'subsystemName', ymp.parts_name as 'partsName' FROM yfsjglpt_model_common_parameters ymcp LEFT JOIN yfsjglpt_model_parameter ymp ON ymcp.parameter_id = ymp.id WHERE ymcp.common_id IN (#ids)"),
|
||||
@SQL(view = "getCommonById",
|
||||
sql = "SELECT ymcp.*, ymp.parameter_name as 'parameterName', ymp.parameter_type as 'parameterType', ymp.subsystem_name as 'subsystemName' FROM yfsjglpt_model_common_parameters ymcp LEFT JOIN yfsjglpt_model_parameter ymp ON ymcp.parameter_id = ymp.id WHERE ymcp.user_id = #userId")
|
||||
})
|
||||
|
||||
@ -10,6 +10,8 @@ import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
|
||||
@SQLQuery(value = {
|
||||
@SQL(view = "getAllApproval",
|
||||
sql = "SELECT af.id AS \"flowId\", t.id AS \"templateId\", t.template_name AS \"templateName\", t.version AS \"version\", af.flow_status AS \"status\" , af.create_by AS \"createBy\" , xu.username AS \"username\", af.created_time AS \"createdTime\" , CASE WHEN current_node = 'PROOFREAD' THEN proofread_users WHEN current_node = 'REVIEW' THEN review_users WHEN current_node = 'COUNTERSIGN' THEN countersign_users WHEN current_node = 'APPROVE' THEN approve_users END AS current_users FROM yfsjglpt_model_approval_flow af JOIN yfsjglpt_model_template t ON af.template_id = t.id LEFT JOIN xdap_users xu ON xu.id = af.create_by ORDER BY CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC"),
|
||||
@SQL(view = "getApprovalByUserIdAndIds",
|
||||
sql = "SELECT af.id AS \"flowId\", t.id AS \"templateId\", t.template_name AS \"templateName\", t.version AS \"version\", t.status AS \"status\" , af.create_by AS \"createBy\", af.created_time AS \"createdTime\" , CASE WHEN current_node = 'PROOFREAD' THEN proofread_users WHEN current_node = 'REVIEW' THEN review_users WHEN current_node = 'COUNTERSIGN' THEN countersign_users WHEN current_node = 'APPROVE' THEN approve_users END AS current_users FROM yfsjglpt_model_approval_flow af JOIN yfsjglpt_model_template t ON af.template_id = t.id WHERE t.template_name like CONCAT('%',#templateName, '%') and t.status like CONCAT('%',#status, '%') and af.flow_type = 1 and af.id NOT IN (#ids) AND af.create_by = #createBy"),
|
||||
@SQL(view = "getTodoAndTemplate",
|
||||
|
||||
@ -213,7 +213,8 @@ public class CommonParameterServiceImpl implements CommonParameterService {
|
||||
param.getParameterId(),
|
||||
param.getParameterName(),
|
||||
param.getSubsystemName(),
|
||||
null,null
|
||||
param.getSubsystemName(),
|
||||
param.getPartsName()
|
||||
))
|
||||
.collect(Collectors.toList());
|
||||
item.setParameters(parameters);
|
||||
|
||||
@ -14,6 +14,7 @@ import com.xdap.self_development.pojo.view.TemplateChangeView;
|
||||
import com.xdap.self_development.pojo.view.TodoAndTemplateView;
|
||||
import com.xdap.self_development.service.DataEntryEngineModelService;
|
||||
import com.xdap.self_development.service.TemplateApprovalService;
|
||||
import com.xdap.self_development.service.XdapDeptUsersService;
|
||||
import com.xdap.self_development.utils.RedisLockUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@ -44,6 +45,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
private DataEntryEngineModelService dataEntryEngineModelService;
|
||||
@Resource
|
||||
private UserPermissionGetter permissionGetter;
|
||||
@Resource
|
||||
private XdapDeptUsersService xdapDeptUsersService;
|
||||
|
||||
// 待办标志: userId -> flowId集合
|
||||
private static final String TODO_PREFIX = "approval:todo:";
|
||||
@ -55,7 +58,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
private static final int FLOW_LOCK_EXPIRE_SECONDS = 15;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@Transactional(rollbackFor = CommonException.class)
|
||||
public String startApproval(StartApprovalRequest request) {
|
||||
// 验证模板存在
|
||||
Template template = bd.getBusinessDatabase()
|
||||
@ -100,6 +103,27 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
flow.setExplanation(request.getExplanation());
|
||||
bd.getBusinessDatabase().doInsert(flow);
|
||||
|
||||
// 新增待办
|
||||
// List<TodoTaskPojo> list = new ArrayList<>();
|
||||
// for (String person : request.getProofreadUsers()) {
|
||||
// TodoTaskPojo todoTask = new TodoTaskPojo();
|
||||
// todoTask.setCreatedById(permissionGetter.getCurrentUserId());
|
||||
// todoTask.setCreatedBy(xdapDeptUsersService.selectUserByID(permissionGetter.getCurrentUserId()).getUsername());
|
||||
// todoTask.setCurrentNode(getNodeName(flow.getCurrentNode()));
|
||||
// todoTask.setDataType("-");
|
||||
// todoTask.setDocumentNo(flow.getId());
|
||||
// todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||
// todoTask.setIsDelete(0);
|
||||
// todoTask.setModelId(template.getId());
|
||||
// todoTask.setModelName(template.getTemplateName());
|
||||
// todoTask.setProcessTitle("模板审核");
|
||||
// todoTask.setStatusCode(flow.getFlowStatus());
|
||||
// todoTask.setVersionNumber(template.getVersion());
|
||||
// todoTask.setOwnerId(person);
|
||||
// list.add(todoTask);
|
||||
// }
|
||||
// bd.getBusinessDatabase().doBatchInsert(list);
|
||||
|
||||
// 3. 更新模板状态为校对中
|
||||
template.setStatus("APPROVING");
|
||||
bd.getBusinessDatabase()
|
||||
@ -118,6 +142,11 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
@Override
|
||||
@Transactional
|
||||
public List<TodoAndTemplateView> getApprovalList(ApprovalListForm form) {
|
||||
|
||||
// List<TodoAndTemplateView> todoAndTemplateViews = bd.getBusinessDatabase()
|
||||
// .viewQueryMode(true)
|
||||
// .view("getAllApproval")
|
||||
// .doQuery(TodoAndTemplateView.class);
|
||||
List<TodoAndTemplateView> approvalList = new ArrayList<>();
|
||||
Set<String> flowIds = new HashSet<>(Objects.requireNonNull(redisTemplate.opsForSet().members(TODO_PREFIX + permissionGetter.getCurrentUserId())));
|
||||
List<String> ids = new ArrayList<>(flowIds);
|
||||
@ -131,26 +160,26 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
.setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate())
|
||||
.setVar("username",form.getUsername())
|
||||
.doQuery(TodoAndTemplateView.class);
|
||||
setCurrentApprovers(approvalList, todoList);
|
||||
return approvalList;
|
||||
// return todoAndTemplateViews;
|
||||
}
|
||||
|
||||
private void setCurrentApprovers(List<TodoAndTemplateView> approvalList, List<TodoAndTemplateView> todoAndTemplateViews) {
|
||||
todoAndTemplateViews.forEach(item -> {
|
||||
if (item.getCurrentUsers() == null || item.getCurrentUsers().isEmpty()) {
|
||||
item.setCurrentApprovers(null);
|
||||
item.setCurrentUsers(null);
|
||||
} else {
|
||||
List<String> userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class);
|
||||
List<ApprovalXdapUsers> approvalXdapUsers = bd.getBusinessDatabase()
|
||||
.in("id", userIds)
|
||||
.doQuery(ApprovalXdapUsers.class);
|
||||
item.setCurrentApprovers(approvalXdapUsers);
|
||||
item.setCurrentUsers(null);
|
||||
}
|
||||
});
|
||||
approvalList.addAll(todoAndTemplateViews);
|
||||
}
|
||||
// private void setCurrentApprovers(List<TodoAndTemplateView> approvalList, List<TodoAndTemplateView> todoAndTemplateViews) {
|
||||
// todoAndTemplateViews.forEach(item -> {
|
||||
// if (item.getCurrentUsers() == null || item.getCurrentUsers().isEmpty()) {
|
||||
// item.setCurrentApprovers(null);
|
||||
// item.setCurrentUsers(null);
|
||||
// } else {
|
||||
// List<String> userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class);
|
||||
// List<ApprovalXdapUsers> approvalXdapUsers = bd.getBusinessDatabase()
|
||||
// .in("id", userIds)
|
||||
// .doQuery(ApprovalXdapUsers.class);
|
||||
// item.setCurrentApprovers(approvalXdapUsers);
|
||||
// item.setCurrentUsers(null);
|
||||
// }
|
||||
// });
|
||||
// approvalList.addAll(todoAndTemplateViews);
|
||||
// }
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = CommonException.class)
|
||||
@ -169,12 +198,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
throw new CommonException("无权限处理或已被处理");
|
||||
}
|
||||
|
||||
// 会签节点
|
||||
if (!"COUNTERSIGN".equals(currentNode)) {
|
||||
String lockKey = FLOW_LOCK_PREFIX + flow.getId() + ":" + currentNode;
|
||||
String lockValue = UUID.randomUUID().toString();
|
||||
boolean lockAcquired = redisLockUtil
|
||||
.tryLock(lockKey, lockValue, FLOW_LOCK_EXPIRE_SECONDS, TimeUnit.SECONDS);
|
||||
|
||||
// 其他人正在处理
|
||||
if (!lockAcquired) {
|
||||
throw new CommonException("当前节点正在处理,请稍后重试");
|
||||
}
|
||||
@ -183,6 +214,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
String processedKey = NODE_PROCESSED_PREFIX + flow.getId() + ":" + currentNode;
|
||||
long processedCount = Optional.ofNullable(redisTemplate.opsForSet().size(processedKey))
|
||||
.orElse(0L);
|
||||
|
||||
// 已被其他人处理
|
||||
if (processedCount > 0) {
|
||||
throw new CommonException("此节点已被他人处理");
|
||||
}
|
||||
@ -190,7 +223,9 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
} finally {
|
||||
redisLockUtil.unlock(lockKey, lockValue);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
// 抢签节点
|
||||
else {
|
||||
processApprovalLogic(flow, request, currentNode);
|
||||
}
|
||||
}
|
||||
@ -210,8 +245,17 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
redisTemplate.opsForSet().add(NODE_PROCESSED_PREFIX + flow.getId() + ":" + currentNode,
|
||||
request.getUserId());
|
||||
|
||||
// 删除当前节点的已处理待办
|
||||
if ("COUNTERSIGN".equals(flow.getCurrentNode())) {
|
||||
redisTemplate.opsForSet().remove(TODO_PREFIX + request.getUserId(), flow.getId());
|
||||
// bd.getBusinessDatabase()
|
||||
// .eq("document_no", flow.getId())
|
||||
// .eq("owner_id", permissionGetter.getCurrentUserId())
|
||||
// .doDelete(TodoTaskPojo.class);
|
||||
// } else {
|
||||
// bd.getBusinessDatabase()
|
||||
// .eq("document_no", flow.getId())
|
||||
// .doDelete(TodoTaskPojo.class);
|
||||
}
|
||||
|
||||
// 处理驳回逻辑
|
||||
@ -439,6 +483,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
users.forEach(userId -> {
|
||||
redisTemplate.opsForSet().add(TODO_PREFIX+ userId, flow.getId());
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void clearNodeTodo(ApprovalFlow flow, String node) {
|
||||
@ -487,4 +533,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
default: return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
private String getNodeName(String node) {
|
||||
switch (node) {
|
||||
case "PROOFREAD": return "校对";
|
||||
case "REVIEW": return "审核";
|
||||
case "COUNTERSIGN": return "会签";
|
||||
case "APPROVE": return "批准";
|
||||
default: return "-";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user