|
@@ -3,14 +3,13 @@ package com.platform.service.business;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.platform.activiti.dao.entity.ActApplyInfo;
|
|
|
import com.platform.activiti.dao.entity.ActAuditRecord;
|
|
|
+import com.platform.activiti.dao.entity.ActAuditRequest;
|
|
|
import com.platform.activiti.enums.ActApplyEnum;
|
|
|
import com.platform.common.constant.CommonConstants;
|
|
|
import com.platform.common.enums.ResultCode;
|
|
|
import com.platform.common.exception.BusinessException;
|
|
|
import com.platform.common.model.UserInfo;
|
|
|
import com.platform.common.util.SecurityUtils;
|
|
|
-import com.platform.dao.dto.sb.SbScrapFormDTO;
|
|
|
-import com.platform.dao.dto.sb.SbScrapFormDTO;
|
|
|
import com.platform.dao.entity.activiti.ActivitiUserModel;
|
|
|
import com.platform.dao.entity.upms.SysUser;
|
|
|
import com.platform.service.activiti.ActivitiUserModelService;
|
|
@@ -59,19 +58,13 @@ public class SbScrapActivitiBusinessService {
|
|
|
* 然后在提交审批,保存数据
|
|
|
* 审批设置对象:ActApplyInfo
|
|
|
*
|
|
|
- * @param sbScrapFormDTO
|
|
|
+ * @param actAuditRequest
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public ProcessInstance start(SbScrapFormDTO sbScrapFormDTO) {
|
|
|
+ public void start(ActAuditRequest actAuditRequest) {
|
|
|
UserInfo user = SecurityUtils.getUserInfo();
|
|
|
-
|
|
|
- // 设置各个节点审批人员信息
|
|
|
- Model model = repositoryService.createModelQuery().modelKey(ActApplyEnum.SB_INFO_SCRAP.getKey()).singleResult();
|
|
|
- List<ActivitiUserModel> list = activitiUserModelService.getModelByModelId(model.getId());
|
|
|
- activitiUserModelService.modify(model.getId(), user.getUserId(), list);
|
|
|
-
|
|
|
// 设置发起对象,保存到流程实例中
|
|
|
- ActApplyInfo applyInfo = new ActApplyInfo(sbScrapFormDTO.getId(),
|
|
|
+ ActApplyInfo applyInfo = new ActApplyInfo(actAuditRequest.getId(),
|
|
|
ActApplyEnum.SB_INFO_SCRAP.getName(), ActApplyEnum.SB_INFO_SCRAP.getKey(),
|
|
|
0,
|
|
|
LocalDateTime.now());
|
|
@@ -84,47 +77,57 @@ public class SbScrapActivitiBusinessService {
|
|
|
// 设置流程启动人信息,为了后面查询我的发起列表
|
|
|
identityService.setAuthenticatedUserId(user.getUserId());
|
|
|
ProcessInstance instance = null;
|
|
|
- if (StringUtils.isBlank(sbScrapFormDTO.getProcessInstanceId())) {
|
|
|
- instance = runtimeService.startProcessInstanceByKey(ActApplyEnum.SB_INFO_SCRAP.getKey(), sbScrapFormDTO.getId(), map);
|
|
|
+ if (StringUtils.isBlank(actAuditRequest.getProcessInstanceId())) {
|
|
|
+ instance = runtimeService.startProcessInstanceByKey(ActApplyEnum.SB_INFO_SCRAP.getKey(), actAuditRequest.getId(), map);
|
|
|
} else { // 再次提交审批的,之前被拒绝的
|
|
|
- instance = runtimeService.startProcessInstanceById(sbScrapFormDTO.getProcessInstanceId(), sbScrapFormDTO.getId(), map);
|
|
|
+ instance = runtimeService.startProcessInstanceById(actAuditRequest.getProcessInstanceId(), actAuditRequest.getId(), map);
|
|
|
}
|
|
|
if (instance == null) {
|
|
|
throw new BusinessException(ResultCode.ACTIVITI_PROCESS_NOT_EXIST.getDescription());
|
|
|
}
|
|
|
|
|
|
- // 第一个审批人为发起人,自动审批。
|
|
|
+ // 第一个审批人为发起人,为自动审批。
|
|
|
// 设置审批对象,保存到task实例中,每次审核都要更新追加这个对象
|
|
|
Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).orderByTaskCreateTime().desc().singleResult();
|
|
|
- task.setAssignee(user.getUserId());
|
|
|
- taskService.saveTask(task);
|
|
|
+
|
|
|
List<ActAuditRecord> records = new ArrayList<>();
|
|
|
records.add(new ActAuditRecord(user.getUserId(), user.getRealName(), "提交",
|
|
|
LocalDateTime.now(), true, task.getId(), task.getName()));
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
data.put(CommonConstants.ACT_AUDIT_RECORD, records);
|
|
|
data.put("result", 1);
|
|
|
- taskService.addComment(task.getId(), sbScrapFormDTO.getProcessInstanceId(), "提交");
|
|
|
- taskService.complete(task.getId(), map);
|
|
|
+ task.setAssignee(user.getUserId());
|
|
|
+ taskService.addComment(task.getId(), actAuditRequest.getProcessInstanceId(), "提交");
|
|
|
+ taskService.complete(task.getId(), data);
|
|
|
|
|
|
- sbScrapFormService.updateByActivitiStart(instance.getId(), sbScrapFormDTO.getId());
|
|
|
- return instance;
|
|
|
+ // 分配下一个节点的审批人信息
|
|
|
+ // 设置各个节点审批人员信息
|
|
|
+ Model model = repositoryService.createModelQuery().modelKey(ActApplyEnum.SB_INFO_SCRAP.getKey()).singleResult();
|
|
|
+ List<ActivitiUserModel> list = activitiUserModelService.getModelByModelId(model.getId());
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ throw new BusinessException("审批节点未设置,请先设置");
|
|
|
+ }
|
|
|
+ Task nextTask = taskService.createTaskQuery().processInstanceId(instance.getId()).orderByTaskCreateTime().desc().singleResult();
|
|
|
+ activitiUserModelService.modifyTaskAssign(model.getId(), user.getUserId(),nextTask, list);
|
|
|
+
|
|
|
+ // 更新业务数据
|
|
|
+ sbScrapFormService.updateByActivitiStart(instance.getId(), actAuditRequest.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 审批,第一个审批人为发起人,自动审批。
|
|
|
* 审批设置对象:ActApplyInfo
|
|
|
*
|
|
|
- * @param sbScrapFormDTO
|
|
|
+ * @param actAuditRequest
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean audit(SbScrapFormDTO sbScrapFormDTO) {
|
|
|
+ public void audit(ActAuditRequest actAuditRequest) {
|
|
|
UserInfo user = SecurityUtils.getUserInfo();
|
|
|
// 设置发起对象,保存到流程实例中
|
|
|
- String taskId = sbScrapFormDTO.getTaskId();
|
|
|
+ String taskId = actAuditRequest.getTaskId();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
Integer result = 0;
|
|
|
- if (sbScrapFormDTO.getAuditFlag()) {
|
|
|
+ if (actAuditRequest.getAuditFlag()) {
|
|
|
result = 1;// 同意
|
|
|
} else {
|
|
|
result = 0;// 拒绝
|
|
@@ -137,44 +140,76 @@ public class SbScrapActivitiBusinessService {
|
|
|
if (o != null) {
|
|
|
records = (List<ActAuditRecord>) o;
|
|
|
}
|
|
|
- boolean flag = result == 0 ? false : true;
|
|
|
- records.add(0, new ActAuditRecord(user.getUserId(), user.getRealName(), sbScrapFormDTO.getRefuseReason(),
|
|
|
+
|
|
|
+ records.add(0, new ActAuditRecord(user.getUserId(), user.getRealName(), actAuditRequest.getRefuseReason(),
|
|
|
LocalDateTime.now(), result == 0 ? false : true, taskId, task.getName()));
|
|
|
map.put(CommonConstants.ACT_AUDIT_RECORD, records);
|
|
|
- taskService.addComment(taskId, sbScrapFormDTO.getProcessInstanceId(), sbScrapFormDTO.getRefuseReason());
|
|
|
+ taskService.addComment(taskId, actAuditRequest.getProcessInstanceId(), actAuditRequest.getRefuseReason());
|
|
|
taskService.complete(taskId, map);
|
|
|
|
|
|
- // 更新结果
|
|
|
- sbScrapFormService.updateByActivitiFinish(sbScrapFormDTO.getId(), flag);
|
|
|
- return flag;
|
|
|
+ // 审批拒绝,则不用判断是否结束。审批同意则要判断是否流程结束,结束则更新报废单状态和设备状态
|
|
|
+ boolean flag = result == 0 ? false : true;
|
|
|
+ if(flag){
|
|
|
+ flag = checkFinish(actAuditRequest.getProcessInstanceId());
|
|
|
+ // 审批通过,且不是最后一个节点,分配下一个节点
|
|
|
+ if(!flag){
|
|
|
+ // 分配下一个节点的审批人信息
|
|
|
+ Model model = repositoryService.createModelQuery().modelKey(ActApplyEnum.SB_INFO_SCRAP.getKey()).singleResult();
|
|
|
+ List<ActivitiUserModel> list = activitiUserModelService.getModelByModelId(model.getId());
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ throw new BusinessException("审批节点未设置,请先设置");
|
|
|
+ }
|
|
|
+ Task nextTask = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).orderByTaskCreateTime().desc().singleResult();
|
|
|
+ activitiUserModelService.modifyTaskAssign(model.getId(), user.getUserId(),nextTask, list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新状态
|
|
|
+ sbScrapFormService.updateByActivitiFinish(actAuditRequest.getId(), flag);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 终止审核
|
|
|
* 审批设置对象:ActApplyInfo
|
|
|
*
|
|
|
- * @param sbScrapFormDTO
|
|
|
+ * @param actAuditRequest
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void stop(SbScrapFormDTO sbScrapFormDTO) {
|
|
|
- String processInstanceId = sbScrapFormDTO.getProcessInstanceId();
|
|
|
+ public void stop(ActAuditRequest actAuditRequest) {
|
|
|
+ String processInstanceId = actAuditRequest.getProcessInstanceId();
|
|
|
if (StringUtils.isNotEmpty(processInstanceId)) {
|
|
|
runtimeService.deleteProcessInstance(processInstanceId, "");
|
|
|
historyService.deleteHistoricProcessInstance(processInstanceId);
|
|
|
}
|
|
|
- sbScrapFormService.updateByActivitiStop(processInstanceId, sbScrapFormDTO.getId());
|
|
|
+ sbScrapFormService.updateByActivitiStop(processInstanceId, actAuditRequest.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 签收
|
|
|
+ * 审批设置对象:ActApplyInfo
|
|
|
+ *
|
|
|
+ * @param actAuditRequest
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void claim(ActAuditRequest actAuditRequest) {
|
|
|
+ String taskId = actAuditRequest.getTaskId();
|
|
|
+ String userId = SecurityUtils.getUserInfo().getUserId();
|
|
|
+ if (StringUtils.isEmpty(taskId)) {
|
|
|
+ throw new BusinessException("taskId为空,请选择");
|
|
|
+ }
|
|
|
+ taskService.setAssignee(taskId, userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 转签
|
|
|
* 审批设置对象:ActApplyInfo
|
|
|
*
|
|
|
- * @param sbScrapFormDTO
|
|
|
+ * @param actAuditRequest
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void assign(SbScrapFormDTO sbScrapFormDTO) {
|
|
|
- String taskId = sbScrapFormDTO.getTaskId();
|
|
|
- String userId = sbScrapFormDTO.getChangeUser();
|
|
|
+ public void assign(ActAuditRequest actAuditRequest) {
|
|
|
+ String taskId = actAuditRequest.getTaskId();
|
|
|
+ String userId = actAuditRequest.getChangeUser();
|
|
|
if (StringUtils.isEmpty(taskId)) {
|
|
|
throw new BusinessException("taskId为空,请选择");
|
|
|
}
|