From ad7cbfd8fd19fcce4345a4907c1f059a34c2869b Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 11 十二月 2025 15:49:15 +0800
Subject: [PATCH] 工作台
---
business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 101 insertions(+), 6 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index c39400e..4cfafc5 100644
--- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -16,6 +16,8 @@
import com.ycl.common.core.domain.entity.SysRole;
import com.ycl.common.core.domain.entity.SysUser;
import com.ycl.common.enums.FlowComment;
+import com.ycl.common.enums.business.AuditHistoryEnum;
+import com.ycl.common.enums.business.AuditTypeEnum;
import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.common.enums.business.TaskStatusEnum;
import com.ycl.common.exception.CustomException;
@@ -29,6 +31,7 @@
import com.ycl.domain.entity.ProcessLog;
import com.ycl.domain.entity.ProjectProcess;
import com.ycl.domain.entity.SysForm;
+import com.ycl.domain.form.AuditHistoryForm;
import com.ycl.domain.form.EditFinishedTaskForm;
import com.ycl.domain.json.RejectData;
import com.ycl.domain.query.ProcessLogQuery;
@@ -111,7 +114,7 @@
private final ProcessLogService processLogService;
private final ApplicationEventPublisher publisher;
private final ProjectProcessMapper projectProcessMapper;
-
+ private final AuditHistoryService auditHistoryService;
@Value("${targetIp}")
private String targetIp;
@@ -136,6 +139,21 @@
taskService.setAssignee(taskVo.getTaskId(), userId.toString());
taskService.complete(taskVo.getTaskId(), taskVo.getVariables());
}
+ ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper)
+ .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId())
+ .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId())
+ .one();
+ AuditHistoryForm auditHistoryForm =
+ buildForm(task.getId(),
+ task.getTaskDefinitionKey(),
+ null,
+ SecurityUtils.getDeptId() + "",
+ AuditTypeEnum.Review.name(),
+ projectProcess.getProjectId(),
+ "t_project_info",
+ task.getName()
+ );
+ auditHistoryService.add(auditHistoryForm);
return AjaxResult.success();
}
@@ -175,6 +193,7 @@
}
}
taskService.addComment(taskId, task.getProcessInstanceId(), FlowComment.SUBMIT.getType(), "瀹屾垚鎻愪氦");
+ //鍒ゆ柇鏄惁鏄娲句换鍔�
if (DelegationState.PENDING.equals(task.getDelegationState())) {
taskService.resolveTask(taskId, newV);
} else {
@@ -194,9 +213,45 @@
ProcessLogEventTypeEnum.FINISHED,
null));
}
+ //淇濆瓨鏃ュ織
+ AuditHistoryForm auditHistoryForm =
+ buildForm(taskId,
+ task.getTaskDefinitionKey(),
+ null,
+ SecurityUtils.getDeptId() + "",
+ AuditTypeEnum.Submit.name(),
+ projectProcess.getProjectId(),
+ "t_project_info",
+ task.getName()
+ );
+ auditHistoryService.add(auditHistoryForm);
+
return AjaxResult.success("鎻愪氦鎴愬姛");
}
+ public AuditHistoryForm buildForm(
+ String taskId,
+ String taskDefinitionKey,
+ String viewer,
+ String commitDept,
+ String auditType,
+ String businessKey,
+ String businessTable,
+ String content) {
+ AuditHistoryForm auditHistoryForm = new AuditHistoryForm();
+ auditHistoryForm.setTaskId(taskId);
+ auditHistoryForm.setTaskDefinitionKey(taskDefinitionKey);
+ auditHistoryForm.setViewer(viewer);
+ auditHistoryForm.setCommitDept(commitDept);
+ auditHistoryForm.setAuditType(auditType);
+ auditHistoryForm.setBusinessKey(businessKey);
+ auditHistoryForm.setBusinessTable(businessTable);
+ auditHistoryForm.setContent(content);
+ // 5. 鐗规畩瀛楁榛樿鍊硷細isRead 榛樿涓� 锛堟湭璇伙級
+ auditHistoryForm.setIsRead(AuditHistoryEnum.UN_READ.name());
+
+ return auditHistoryForm;
+ }
/**
* 瀹圭己琛ヤ氦
@@ -498,6 +553,21 @@
task.getName(),
ProcessLogEventTypeEnum.REJECT,
new RejectData(flowTaskVo.getComment())));
+
+ //淇濆瓨鏃ュ織
+ AuditHistoryForm auditHistoryForm =
+ buildForm(task.getId(),
+ task.getTaskDefinitionKey(),
+ null,
+ SecurityUtils.getDeptId() + "",
+ AuditTypeEnum.Submit.name(),
+ projectProcess.getProjectId(),
+ "t_project_info",
+ task.getName()
+ );
+ auditHistoryService.add(auditHistoryForm);
+
+
}
/**
@@ -687,12 +757,24 @@
@Transactional(rollbackFor = Exception.class)
public void assignTask(FlowTaskVo flowTaskVo) {
// 鐩存帴杞淳灏卞彲浠ヨ鐩栨帀涔嬪墠鐨�
+ log.info("flowTaskVo:{}",flowTaskVo);
taskService.setAssignee(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
// // 鍒犻櫎鎸囨淳浜洪噸鏂版寚娲�
// taskService.deleteCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee());
// taskService.addCandidateUser(flowTaskVo.getTaskId(),flowTaskVo.getAssignee());
// // 濡傛灉瑕佹煡璇㈣浆缁欎粬浜哄鐞嗙殑浠诲姟锛屽彲浠ュ悓鏃跺皢OWNER杩涜璁剧疆锛�
// taskService.setOwner(flowTaskVo.getTaskId(), flowTaskVo.getAssignee());
+
+// AuditHistoryForm auditHistoryForm =
+// buildForm(flowTaskVo.getTaskId(),
+// task.getTaskDefinitionKey(),
+// null,
+// SecurityUtils.getDeptId() + "",
+// AuditTypeEnum.Submit.name(),
+// projectProcess.getProjectId(),
+// "t_project_info",
+// task.getName()
+// );
}
@@ -1513,7 +1595,7 @@
/**
* 娴佺▼鑺傜偣琛ㄥ崟
- *
+ * 鐐瑰嚮鍔炵悊杩涘叆
* @param taskId 娴佺▼浠诲姟缂栧彿
* @return
*/
@@ -1627,7 +1709,9 @@
@Override
public AjaxResult detail(String processInsId, String taskId) {
+ //鏌ヨ杩愯鏃舵祦绋嬪疄渚嬶紙鍚祦绋嬪彉閲忥級
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables().processInstanceId(processInsId).singleResult();
+ log.info("鎵撳嵃杩愯鏃�:{}",processInstance);
// 娴佺▼鍙橀噺
Map<String, Object> parameters = new HashMap<>();
if (Objects.isNull(processInstance)) {
@@ -1637,7 +1721,7 @@
if (Objects.isNull(historicProcessInstance)) {
throw new RuntimeException("娴佺▼涓嶅瓨鍦�");
}
-
+ //娴佺▼鏈粨鏉� 鏌ヨ娴佺▼宸插畬鎴愮殑缁撶偣浠诲姟
List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery()
.taskId(taskId)
.finished()
@@ -1648,7 +1732,9 @@
if (CollectionUtils.isNotEmpty(hisTasks) && Objects.isNull(hisTasks.get(0))) {
throw new RuntimeException("璇ヤ换鍔′笉瀛樺湪");
}
+ //鑾峰緱鏈�鏂扮殑浠诲姟鑺傜偣
HistoricTaskInstance hisTask = hisTasks.get(0);
+ //鑾峰緱鍙傛暟
parameters = historicProcessInstance.getProcessVariables();
List<FormDetailVO> beforeNodes = this.getBeforeNodeForm(parameters,
hisTask.getFormKey(),
@@ -1657,12 +1743,14 @@
hisTask.getTaskDefinitionKey(),
Boolean.TRUE, Boolean.TRUE);
List<FormDetailVO> dataList = new ArrayList<>(2);
+ // 鎸夋墽琛屾祦ID鍒嗙粍鍓嶇疆鑺傜偣
Map<String, List<FormDetailVO>> map = new HashMap<>(2);
beforeNodes.stream().forEach(node -> {
if (node.getCurrent()) {
node.setTaskId(taskId);
dataList.add(node);
} else {
+ //鍓嶇疆鑺傜偣锛氭煡璇㈠搴旂殑鏈�鏂板巻鍙蹭换鍔�
List<HistoricTaskInstance> beforeTasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(hisTask.getProcessInstanceId())
.finished()
@@ -1670,6 +1758,7 @@
.orderByTaskCreateTime()
.desc()
.list();
+
if (CollectionUtils.isNotEmpty(beforeTasks) && Objects.nonNull(beforeTasks.get(0))) {
node.setTaskId(beforeTasks.get(0).getId());
List<FormDetailVO> l = map.get(beforeTasks.get(0));
@@ -1689,7 +1778,9 @@
}
List<DoFormDetailVO> vos = dataList.stream().map(node -> {
if (node.getCurrent()) {
+ // 璋冪敤鏃ュ織鏈嶅姟锛屾煡璇㈣浠诲姟鏄惁澶勪簬鎸傝捣鐘舵�侊紙浼犲叆浠诲姟ID鍜屾祦绋嬪疄渚婭D锛�
if (processLogService.taskIsHangup(taskId, hisTask.getProcessInstanceId())) {
+ //鑻ユ寕璧凤紝缁欒妭鐐硅缃�滄寕璧封�濈姸鎬侊紙鍓嶇浼氬睍绀烘寕璧锋爣璇嗭級
node.setTaskStatus(TaskStatusEnum.HANGUP);
}
}
@@ -1812,16 +1903,19 @@
// 杩欓噷鍙渶瑕佹煡鑷韩浠ュ強涓婁竴涓妭鐐�(濡傛灉骞惰鐨勬湁澶氫釜)鐨勮〃鍗曟暟鎹�
List<FormDetailVO> beforeNodes = taskCommonService.getBeforeNodeDefInfo(processDefId, processDefKey, sysFormService, Boolean.TRUE);
+ // 闈炲綋鍓嶈妭鐐� 鎴� 闇�瑕佸綋鍓嶈妭鐐规暟鎹�
List<String> beforeNodeDefIds = beforeNodes.stream().filter(item -> !item.getCurrent() || currentNeedData).map(FormDetailVO::getBeforeNodeDefId).collect(Collectors.toList());
// 澶勭悊姣忎釜琛ㄥ崟鐨勬暟鎹�
for (FormDetailVO formDetailVO : beforeNodes) {
+ // 璺宠繃鈥滃綋鍓嶈妭鐐逛笖涓嶉渶瑕佸叾鏁版嵁鈥濈殑鍦烘櫙 骞朵笖 currentNeedData涓嶉渶瑕佸綋鍓嶈妭鐐规暟鎹殑鎯呭喌
if (formDetailVO.getCurrent() && !currentNeedData) {
// 褰撳墠鑺傜偣鐨勮〃鍗曚篃瑕佸鐞唅p闂
continue; // 璺宠繃褰撳墠鑺傜偣锛屽洜涓哄綋鍓嶈妭鐐瑰湪鑾峰彇鍓嶇疆鑺傜偣鏃跺凡缁忚缃繃浜�(浣嗚〃鍗曟暟鎹病鏈夌粰)
}
Map<String, Object> newP = new HashMap<>();
+ // 瀛樺偍褰撳墠鑺傜偣鐨勮〃鍗曟暟鎹�
if (CollectionUtils.isNotEmpty(beforeNodeDefIds)) {
for (String key : parameters.keySet()) {
// 杩囨护鎷垮埌鐩爣琛ㄥ崟鏁版嵁锛屽皢鐩爣琛ㄥ崟鏁版嵁鏀惧埌鏂癿ap涓�
@@ -1834,7 +1928,7 @@
}
}
}
-
+ //鑾峰緱鍓嶇疆鑺傜偣瀹氫箟id锛屽嵆浠诲姟key
Object form = newP.get(formDetailVO.getBeforeNodeDefId() + "&" + ProcessConstants.TASK_FORM_KEY);
if (Objects.nonNull(form)) {
JSONObject formJson = JSONObject.parseObject(JSON.toJSONString(form));
@@ -1853,11 +1947,12 @@
options.put("uploadURL", String.format("http://%s:10076/common/upload", this.targetIp));
}
}
-
+ // 鏇存柊琛ㄥ崟缁撴瀯锛堝凡澶勭悊绂佺敤鍜屼笂浼犲湴鍧�锛�
formJson.put(ProcessConstants.WIDGET_LIST, oldFields);
newP.put(ProcessConstants.TASK_FORM_KEY, formJson);
+ // 鍒犻櫎鍘熷鐨勨�滆妭鐐笽D&TASK_FORM_KEY鈥濋敭锛堥伩鍏嶅啑浣欙級
newP.remove(formDetailVO.getBeforeNodeDefId() + "&" + ProcessConstants.TASK_FORM_KEY);
- // 澶勭悊宸茬粡涓婁紶鐨勬枃浠剁殑ip鍦板潃
+ // 宸蹭笂浼犳枃浠剁殑璁块棶IP鍦板潃锛堝墠绔瑙�/涓嬭浇鏃舵寚鍚戞纭湴鍧�锛�
for (String s : newP.keySet()) {
if (ProcessConstants.TASK_FORM_KEY.equals(s)) {
continue;
--
Gitblit v1.8.0