20250219 更新

取指定环节可用的用户列表 提取到通用实现类中
master
陈江保 4 days ago
parent 20c8fe60ba
commit dd6d0b9f9c
  1. 9
      src/main/java/digital/laboratory/platform/entrustment/service/CommonFeignService.java
  2. 24
      src/main/java/digital/laboratory/platform/entrustment/service/EntrustmentService.java
  3. 41
      src/main/java/digital/laboratory/platform/entrustment/service/impl/CommonFeignServiceImpl.java
  4. 77
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java
  5. 39
      src/main/java/digital/laboratory/platform/entrustment/service/impl/SynchronizeDataServiceImpl.java

@ -24,6 +24,15 @@ public interface CommonFeignService {
*/
SysOrg remoteGetSysOrg(String orgId);
/**
* 根据权限和机构远程获取用户列表
*
* @param orgId 组织ID
* @param permission 权限列表
* @return 用户列表
*/
List<SysUser> remoteGetUsersByPermission(String orgId, List<String> permission);
/**
* 通过机构ID远程获取机构所在省市信息
*

@ -51,30 +51,6 @@ public interface EntrustmentService extends IService<Entrustment> {
IPage<EntrustmentVO> getEntrustmentVOPage(IPage<Entrustment> page, QueryWrapper<Entrustment> qw);
EntrustmentVO getEntrustmentVOById(String id);
/**
* 取指定环节可用的用户列表
* 当流程进行到某个环节的时候, 需要某个用户对这个环节进行处理(通过或不通过)
* 这里取可用的用户列表
* <p>
* 涉及到的环境有以下几个:
* 1创建委托及提交
* 委托的提交者就是委托的创建者不存在不通过的可能
* 2审核
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审核权限
* 3审批
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审批权限
* 4送检确认
* 送检确认者有几个条件: (1)必须与委托的创建者是同一个机构, 或上级机构的人 (2)必须拥有委托送检确认权限
* 5受理
* 受理者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托受理权限
*
*
* @return
*/
List<SysUser> taskAvailableUserList_Check();
List<SysUser> taskAvailableUserList_Approve();
List<SysUser> taskAvailableUserList_Confirm(String clientOrgId);
List<SysUser> taskAvailableUserList_Accept();
public long countByCaseId(String caseId);
void Entrustment2Word(EntrustmentVO ev) throws IOException;

@ -25,10 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -69,6 +66,42 @@ public class CommonFeignServiceImpl implements CommonFeignService {
return sysOrg;
}
/**
* 取指定环节可用的用户列表
* 当流程进行到某个环节的时候, 需要某个用户对这个环节进行处理(通过或不通过)
* 这里取可用的用户列表
* <p>
* 涉及到的环境有以下几个:
* 1创建委托及提交
* 委托的提交者就是委托的创建者不存在不通过的可能
* 2审核
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审核权限
* 3审批
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审批权限
* 4送检确认
* 送检确认者有几个条件: (1)必须与委托的创建者是同一个机构, 或上级机构的人 (2)必须拥有委托送检确认权限
* 5受理
* 受理者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托受理权限
*
* @return
*/
/**
* 根据权限和机构远程获取用户列表
*
* @param orgId 组织ID
* @param permission 权限列表
* @return 用户列表
*/
@Override
public List<SysUser> remoteGetUsersByPermission(String orgId, List<String> permission) {
R<List<SysUser>> r = remoteUserService.innerGetUsersByPermission(orgId, permission);
if (r != null && r.getCode() == CommonConstants.SUCCESS) {
return r.getData();
} else {
throw new RuntimeException(String.format("根据权限 [%s] 和 机构id [%s] 远程获取用户列表!", permission, orgId));
}
}
/**
* 通过机构ID远程获取机构所在省市信息
*

@ -1,5 +1,6 @@
package digital.laboratory.platform.entrustment.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.io.IoUtil;
@ -50,7 +51,10 @@ import digital.laboratory.platform.sewage.dto.StatisticsDiffStatusJobDTO;
import digital.laboratory.platform.sewage.entity.UpdateInfo;
import digital.laboratory.platform.sewage.feign.RemoteSewageJobService;
import digital.laboratory.platform.sewage.utils.QRCodeUtils;
import digital.laboratory.platform.sys.entity.*;
import digital.laboratory.platform.sys.entity.Deliverer;
import digital.laboratory.platform.sys.entity.DrugLite;
import digital.laboratory.platform.sys.entity.SysOrg;
import digital.laboratory.platform.sys.entity.SysUser;
import digital.laboratory.platform.sys.entity.entrustment.Sample;
import digital.laboratory.platform.sys.feign.*;
import digital.laboratory.platform.sys.vo.entrustment.MarkersVO;
@ -149,6 +153,9 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
@Resource
private EntrustApproveRecordService entrustApproveRecordService;
@Resource
private CommonFeignService commonFeignService;
// /**
// * 审核人员由委托创建者选择。如果 true, 前台在委托提交审核前, 弹出界面让委托人选择审核者; 如果 false, 由系统自动选择审核者。
@ -349,49 +356,6 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
}
/**
* 取指定环节可用的用户列表
* 当流程进行到某个环节的时候, 需要某个用户对这个环节进行处理(通过或不通过)
* 这里取可用的用户列表
* <p>
* 涉及到的环境有以下几个:
* 1创建委托及提交
* 委托的提交者就是委托的创建者不存在不通过的可能
* 2审核
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审核权限
* 3审批
* 审核者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托审批权限
* 4送检确认
* 送检确认者有几个条件: (1)必须与委托的创建者是同一个机构, 或上级机构的人 (2)必须拥有委托送检确认权限
* 5受理
* 受理者有几个条件: (1)必须是鉴定中心的工作人员 (2)必须拥有委托受理权限
*
* @return
*/
@Override
public List<SysUser> taskAvailableUserList_Check() {
R<List<SysUser>> r = remoteUserService.innerGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, Arrays.asList(new String[]{"EntrustmentCheck"}));
return r.getData();
}
@Override
public List<SysUser> taskAvailableUserList_Approve() {
R<List<SysUser>> r = remoteUserService.innerGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, Collections.singletonList("EntrustmentApprove"));
return r.getData();
}
@Override
public List<SysUser> taskAvailableUserList_Confirm(String clientOrgId) {
R<List<SysUser>> r = remoteUserService.innerGetUsersByPermission(clientOrgId, Collections.singletonList("EntrustmentConfirm"));
return r.getData();
}
@Override
public List<SysUser> taskAvailableUserList_Accept() {
R<List<SysUser>> r = remoteUserService.innerGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, Arrays.asList(new String[]{"EntrustmentAccept"}));
return r.getData();
}
@Override
public long countByCaseId(String caseId) {
return baseMapper.selectCount(Wrappers.<Entrustment>query()
@ -1344,7 +1308,8 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
result = saveResult;
} else {// 如果不由客户选择审核候选人, 系统自动把符合条件的员工都作为审核候选人
if (!StrUtil.equalsIgnoreCase("1", AppStartupRunner.getCfg(CommonConstants.DLP_CODE_ENTRUSTMENT_CLIENT_CHOICE_CHECKERS))) {
List<SysUser> users = this.taskAvailableUserList_Check();
// List<SysUser> users = this.taskAvailableUserList_Check();
List<SysUser> users = commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentCheck"));
String candidateUser = "";
for (SysUser u : users) {
if (candidateUser.length() > 0) {
@ -1531,7 +1496,8 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
// 是否由审核人选择审批人, 系统自动把符合条件的员工都作为审批候选人
if (!StrUtil.equalsIgnoreCase("1", AppStartupRunner.getCfg(CommonConstants.DLP_CODE_ENTRUSTMENT_CHECKER_CHOICE_APPROVERS))) {
List<SysUser> users = this.taskAvailableUserList_Approve();
// List<SysUser> users = this.taskAvailableUserList_Approve();
List<SysUser> users = commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentApprove"));
String candidateUser = "";
for (SysUser u : users) {
if (candidateUser.length() > 0) {
@ -2025,10 +1991,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
}
// 送检任务已经提交了, 转到新的环节
int newStatus = -1; // 新的状态(环节)
{
newStatus = ProcessFlowMapper.getNextStatus(entrustment.getStatus(), opCode);
}
int newStatus = ProcessFlowMapper.getNextStatus(entrustment.getStatus(), opCode); // 新的状态(环节)
entrustment.setDeliverTime(LocalDateTime.now());
entrustment.setDeliverSubmitter(dlpUser.getId());
@ -2056,7 +2019,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
updateWrapper.set("deliver_time", entrustment.getDeliverTime());
updateWrapper.set("entrustment_time", LocalDateTime.now());
updateWrapper.set("entrustment_time", entrust.getEntrustmentTime());
updateWrapper.set("deliver_submitter", entrustment.getDeliverSubmitter());
updateWrapper.set("status", entrustment.getStatus());
@ -2952,13 +2915,16 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
if (entrustment.getStatus() == EntrustmentStatusConstants.ENTRUSTMENT_STATUS_CREATED.getStatus()) {
// 在创建人手中: 已创建, 等待提交
return R.ok(this.taskAvailableUserList_Check());
// return R.ok(this.taskAvailableUserList_Check());
return R.ok(commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentCheck")));
} else if (entrustment.getStatus() == EntrustmentStatusConstants.ENTRUSTMENT_STATUS_WAITING_CHECK.getStatus()) {
// 在审核员手中: 已提交, 待审核
return R.ok(this.taskAvailableUserList_Approve());
// return R.ok(this.taskAvailableUserList_Approve());
return R.ok(commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentApprove")));
} else if (entrustment.getStatus() == EntrustmentStatusConstants.ENTRUSTMENT_STATUS_WAITING_APPROVE.getStatus()) {
// 在审批员手中: 已审核, 待审批
return R.ok(this.taskAvailableUserList_Confirm(entrustment.getClientOrgId()));
// return R.ok(this.taskAvailableUserList_Confirm(entrustment.getClientOrgId()));
return R.ok(commonFeignService.remoteGetUsersByPermission(entrustment.getClientOrgId(), CollUtil.newArrayList("EntrustmentConfirm")));
} else if (entrustment.getStatus() == EntrustmentStatusConstants.ENTRUSTMENT_STATUS_WAITING_CONFIRM.getStatus()) {
// 在确认者手中: 已审批, 待确认
List<SysUser> users = new ArrayList<SysUser>();
@ -2967,7 +2933,8 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
return R.ok(users);
} else if (entrustment.getStatus() == EntrustmentStatusConstants.ENTRUSTMENT_STATUS_WAITING_DELIVER.getStatus()) {
// 在送检提交员(创建者)手中: 已确认, 待送检
return R.ok(this.taskAvailableUserList_Accept());
// return R.ok(this.taskAvailableUserList_Accept());
return R.ok(commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentAccept")));
} else {
return R.failed("委托在当前状态下不需要其他用户处理");
}

@ -1,5 +1,6 @@
package digital.laboratory.platform.entrustment.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
@ -64,6 +65,9 @@ public class SynchronizeDataServiceImpl extends ServiceImpl<EntrustDataVoMapper,
@Resource
private EntrustmentService entrustmentService;//委托书服务
@Resource
private CommonFeignService commonFeignService;
//鉴定结果提交
public Boolean submitIdentifyResult(String dataPath, String entrustId) {
SynConnInfoVo synConnInfoVo = getSysSynConnInfo();
@ -490,15 +494,7 @@ public class SynchronizeDataServiceImpl extends ServiceImpl<EntrustDataVoMapper,
}
}
//设置候选人员
List<SysUser> users = entrustmentService.taskAvailableUserList_Check();
String candidateUser = "";
for (SysUser u : users) {
if (candidateUser.length() > 0) {
candidateUser += ",";
}
candidateUser += u.getUserId();
}
entrustment.setCheckCandidateUser(candidateUser);
setEntrustCheckCandidateUser(entrustment);
entrustment.setIdentificationOrgName("国家毒品实验室陕西分中心");//设置鉴定机构
@ -1059,18 +1055,10 @@ public class SynchronizeDataServiceImpl extends ServiceImpl<EntrustDataVoMapper,
entrustment.setThirdSysEntrustNo(entrustDataVo.getEntrustSerialNumber());
//设置审核候选人员
List<SysUser> users = entrustmentService.taskAvailableUserList_Check();
String candidateUser = "";
for (SysUser u : users) {
if (candidateUser.length() > 0) {
candidateUser += ",";
}
candidateUser += u.getUserId();
}
entrustment.setCheckCandidateUser(candidateUser);
setEntrustCheckCandidateUser(entrustment);
//设置审批候选人员, 也就是受理审核的时候,才设置审批候选人
if (entrustDataVo.getStatus().equals("acceptAuditing")) {
List<SysUser> approveUsers = entrustmentService.taskAvailableUserList_Approve();
List<SysUser> approveUsers = commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentApprove"));
String approveCandidateUser = "";
for (SysUser u : approveUsers) {
if (approveCandidateUser.length() > 0) {
@ -1142,6 +1130,19 @@ public class SynchronizeDataServiceImpl extends ServiceImpl<EntrustDataVoMapper,
return entrustment;
}
//设置候选人员
private void setEntrustCheckCandidateUser(Entrustment entrustment) {
List<SysUser> users = commonFeignService.remoteGetUsersByPermission(CommonConstants.ORG_TREE_ROOT_ID, CollUtil.newArrayList("EntrustmentCheck"));
String candidateUser = "";
for (SysUser u : users) {
if (candidateUser.length() > 0) {
candidateUser += ",";
}
candidateUser += u.getUserId();
}
entrustment.setCheckCandidateUser(candidateUser);
}
//设置委托书状态
private List<Integer> getSynEntrustStatus(String statusStr) {
List<Integer> statusList = new ArrayList<>();

Loading…
Cancel
Save