diff --git a/src/main/java/neatlogic/module/process/api/processtask/RedoAsyncCreateProcessTaskApi.java b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/RedoAsyncCreateProcessTaskApi.java
similarity index 94%
rename from src/main/java/neatlogic/module/process/api/processtask/RedoAsyncCreateProcessTaskApi.java
rename to src/main/java/neatlogic/module/process/api/processtask/asynccreate/RedoAsyncCreateProcessTaskApi.java
index 4517e6c6344d500ba5c8ef71fb81b4719fd47645..230abcc8527ee0af853e613cfbcba505d14eae93 100644
--- a/src/main/java/neatlogic/module/process/api/processtask/RedoAsyncCreateProcessTaskApi.java
+++ b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/RedoAsyncCreateProcessTaskApi.java
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-package neatlogic.module.process.api.processtask;
+package neatlogic.module.process.api.processtask.asynccreate;
import com.alibaba.fastjson.JSONObject;
import neatlogic.framework.auth.core.AuthAction;
@@ -72,9 +72,12 @@ public class RedoAsyncCreateProcessTaskApi extends PrivateApiComponentBase {
Integer serverId = paramObj.getInteger("serverId");
if (id != null) {
ProcessTaskAsyncCreateVo processTaskAsyncCreateVo = processTaskAsyncCreateMapper.getProcessTaskAsyncCreateById(id);
- if (processTaskAsyncCreateVo != null && Objects.equals(processTaskAsyncCreateVo.getStatus(), "redo")) {
+ if (processTaskAsyncCreateVo != null
+ && (Objects.equals(processTaskAsyncCreateVo.getStatus(), "redo")
+ || Objects.equals(processTaskAsyncCreateVo.getStatus(), "failed"))
+ ) {
Long processTaskId = processTaskAsyncCreateVo.getProcessTaskId();
- if (processTaskMapper.getProcessTaskById(processTaskId) == null) {
+ if (processTaskMapper.getProcessTaskById(processTaskId) != null) {
return resultObj;
}
processTaskIdArray.add(processTaskId);
diff --git a/src/main/java/neatlogic/module/process/api/processtask/asynccreate/SearchAsyncCreateProcessTaskApi.java b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/SearchAsyncCreateProcessTaskApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c39edb15e59c9ee4dad492a24e30a801f364aa8
--- /dev/null
+++ b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/SearchAsyncCreateProcessTaskApi.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package neatlogic.module.process.api.processtask.asynccreate;
+
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.common.dto.BasePageVo;
+import neatlogic.framework.process.auth.PROCESSTASK_MODIFY;
+import neatlogic.framework.process.dto.ProcessTaskAsyncCreateVo;
+import neatlogic.framework.restful.annotation.*;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.framework.util.TableResultUtil;
+import neatlogic.module.process.dao.mapper.processtask.ProcessTaskAsyncCreateMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@AuthAction(action = PROCESSTASK_MODIFY.class)
+@OperationType(type = OperationTypeEnum.SEARCH)
+public class SearchAsyncCreateProcessTaskApi extends PrivateApiComponentBase {
+
+ @Resource
+ private ProcessTaskAsyncCreateMapper processTaskAsyncCreateMapper;
+
+ @Override
+ public String getName() {
+ return "nmpapa.searchasynccreateprocesstaskapi.getname";
+ }
+
+ @Input({
+ @Param(name = "id", type = ApiParamType.LONG, desc = "id"),
+ @Param(name = "keyword", type = ApiParamType.STRING, desc = "common.keyword"),
+ @Param(name = "currentPage", type = ApiParamType.INTEGER, desc = "common.currentpage"),
+ @Param(name = "pageSize", type = ApiParamType.INTEGER, desc = "common.pagesize"),
+ })
+ @Output({
+ @Param(name = "tbodyList", explode = ProcessTaskAsyncCreateVo[].class, desc = "term.itsm.processtaskidlist"),
+ @Param(explode = BasePageVo.class)
+ })
+ @Description(desc = "nmpapa.searchasynccreateprocesstaskapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ List tbodyList = new ArrayList<>();
+ Long id = paramObj.getLong("id");
+ if (id != null) {
+ ProcessTaskAsyncCreateVo processTaskAsyncCreateVo = processTaskAsyncCreateMapper.getProcessTaskAsyncCreateById(id);
+ if (processTaskAsyncCreateVo != null) {
+ tbodyList.add(processTaskAsyncCreateVo);
+ }
+ return TableResultUtil.getResult(tbodyList);
+ }
+ ProcessTaskAsyncCreateVo searchVo = paramObj.toJavaObject(ProcessTaskAsyncCreateVo.class);
+ int rowNum = processTaskAsyncCreateMapper.getProcessTaskAsyncCreateFailedCount(searchVo);
+ if (rowNum > 0) {
+ searchVo.setRowNum(rowNum);
+ tbodyList = processTaskAsyncCreateMapper.getProcessTaskAsyncCreateFailedList(searchVo);
+ return TableResultUtil.getResult(tbodyList, searchVo);
+ }
+ return TableResultUtil.getResult(tbodyList, searchVo);
+ }
+
+ @Override
+ public String getToken() {
+ return "processtask/asynccreate/search";
+ }
+}
diff --git a/src/main/java/neatlogic/module/process/api/processtask/asynccreate/UpdateAsyncCreateProcessTaskApi.java b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/UpdateAsyncCreateProcessTaskApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..21d7f9827f5bc1761f6961830c1e048ec356154c
--- /dev/null
+++ b/src/main/java/neatlogic/module/process/api/processtask/asynccreate/UpdateAsyncCreateProcessTaskApi.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package neatlogic.module.process.api.processtask.asynccreate;
+
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.process.auth.PROCESSTASK_MODIFY;
+import neatlogic.framework.process.dto.ProcessTaskAsyncCreateVo;
+import neatlogic.framework.process.dto.ProcessTaskCreateVo;
+import neatlogic.framework.restful.annotation.*;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.module.process.dao.mapper.processtask.ProcessTaskAsyncCreateMapper;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Objects;
+
+@Service
+@AuthAction(action = PROCESSTASK_MODIFY.class)
+@OperationType(type = OperationTypeEnum.UPDATE)
+public class UpdateAsyncCreateProcessTaskApi extends PrivateApiComponentBase {
+
+ @Resource
+ private ProcessTaskAsyncCreateMapper processTaskAsyncCreateMapper;
+
+ @Override
+ public String getName() {
+ return "nmpapa.updateasynccreateprocesstaskapi.getname";
+ }
+
+ @Input({
+ @Param(name = "id", type = ApiParamType.LONG, isRequired = true, desc = "id"),
+ @Param(name = "processTaskId", type = ApiParamType.LONG, desc = "term.itsm.processtaskid"),
+ @Param(name = "title", type = ApiParamType.STRING, desc = "common.title"),
+ @Param(name = "status", type = ApiParamType.ENUM, rule = "failed,redo", desc = "common.status"),
+ @Param(name = "serverId", type = ApiParamType.INTEGER, desc = "term.framework.serverid"),
+ @Param(name = "config", type = ApiParamType.JSONOBJECT, desc = "common.config"),
+ })
+ @Output({
+ @Param(name = "Return", type = ApiParamType.BOOLEAN)
+ })
+ @Description(desc = "nmpapa.updateasynccreateprocesstaskapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ Long id = paramObj.getLong("id");
+ ProcessTaskAsyncCreateVo oldProcessTaskAsyncCreateVo = processTaskAsyncCreateMapper.getProcessTaskAsyncCreateById(id);
+ if (oldProcessTaskAsyncCreateVo == null) {
+ return false;
+ }
+ if (!Objects.equals(oldProcessTaskAsyncCreateVo.getStatus(), "failed") && !Objects.equals(oldProcessTaskAsyncCreateVo.getStatus(), "redo")) {
+ return false;
+ }
+ boolean flag = false;
+ ProcessTaskAsyncCreateVo processTaskAsyncCreateVo = new ProcessTaskAsyncCreateVo();
+ processTaskAsyncCreateVo.setId(id);
+ Long processTaskId = paramObj.getLong("processTaskId");
+ if (processTaskId != null && !Objects.equals(processTaskId, oldProcessTaskAsyncCreateVo.getProcessTaskId())) {
+ processTaskAsyncCreateVo.setProcessTaskId(processTaskId);
+ flag = true;
+ }
+ String title = paramObj.getString("title");
+ if (StringUtils.isNotBlank(title) && !Objects.equals(title, oldProcessTaskAsyncCreateVo.getTitle())) {
+ processTaskAsyncCreateVo.setTitle(title);
+ flag = true;
+ }
+ String status = paramObj.getString("status");
+ if (StringUtils.isNotBlank(status) && !Objects.equals(status, oldProcessTaskAsyncCreateVo.getStatus())) {
+ processTaskAsyncCreateVo.setStatus(status);
+ flag = true;
+ }
+ Integer serverId = paramObj.getInteger("serverId");
+ if (serverId != null && !Objects.equals(serverId, oldProcessTaskAsyncCreateVo.getServerId())) {
+ processTaskAsyncCreateVo.setServerId(serverId);
+ flag = true;
+ }
+ JSONObject config = paramObj.getJSONObject("config");
+ if (MapUtils.isNotEmpty(config) && !Objects.equals(config.toJSONString(), JSONObject.toJSONString(oldProcessTaskAsyncCreateVo.getConfig()))) {
+ ProcessTaskCreateVo processTaskCreateVo = config.toJavaObject(ProcessTaskCreateVo.class);
+ processTaskAsyncCreateVo.setConfig(processTaskCreateVo);
+ flag = true;
+ }
+ if (flag) {
+ processTaskAsyncCreateMapper.updateProcessTaskAsyncCreateForManualIntervention(processTaskAsyncCreateVo);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getToken() {
+ return "processtask/asynccreate/update";
+ }
+}
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.java b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.java
index f263d9f3e618bdcdb45ab158201cc293d313613f..24e51744bfd048d6d1f1d42292417bd0a39d80bd 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.java
+++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.java
@@ -30,10 +30,18 @@ public interface ProcessTaskAsyncCreateMapper extends IProcessTaskAsyncCreateCro
int getProcessTaskAsyncCreateCount(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
+ List getProcessTaskAsyncCreateFailedList(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
+
+ int getProcessTaskAsyncCreateFailedCount(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
+
int insertProcessTaskAsyncCreate(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
int updateProcessTaskAsyncCreate(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
+ int updateProcessTaskAsyncCreateStatusToDoingById(Long id);
+
+ int updateProcessTaskAsyncCreateForManualIntervention(ProcessTaskAsyncCreateVo processTaskAsyncCreateVo);
+
int deleteProcessTaskAsyncCreateById(Long id);
int deleteProcessTaskAsyncCreateByIdList(List idList);
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.xml b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.xml
index e217b59820403c55abcdc6ff525bfedca6c43b78..f4d2d1241ba123f93747ad0509522435eef235b4 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.xml
+++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskAsyncCreateMapper.xml
@@ -25,7 +25,8 @@
`processtask_id` AS processTaskId,
`title`,
`status`,
- `config` AS configStr
+ `config` AS configStr,
+ `server_id` AS serverId
FROM `processtask_async_create`
WHERE `id` = #{value}
@@ -51,6 +52,38 @@
AND `server_id` = #{serverId}
+
+
+
+
INSERT INTO `processtask_async_create` (
`id`,
@@ -87,6 +120,35 @@
WHERE `id` = #{id}
+
+ UPDATE `processtask_async_create`
+ SET
+ `status` = 'doing'
+ WHERE `id` = #{id}
+
+
+
+ UPDATE `processtask_async_create`
+ SET
+
+ `processtask_id` = #{processTaskId},
+
+
+ `title` = #{title},
+
+
+ `status` = #{status},
+
+
+ `server_id` = #{serverId},
+
+
+ `config` = #{configStr},
+
+ `lcd` = NOW(3)
+ WHERE `id` = #{id}
+
+
DELETE FROM `processtask_async_create` WHERE `id` = #{value}
diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskAsyncCreateServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskAsyncCreateServiceImpl.java
index 8a348767ee35d627c962e58fdf1938ff7deaa2a8..6e36c6e53724a9196e2de4c2ec1e711697c67e4b 100644
--- a/src/main/java/neatlogic/module/process/service/ProcessTaskAsyncCreateServiceImpl.java
+++ b/src/main/java/neatlogic/module/process/service/ProcessTaskAsyncCreateServiceImpl.java
@@ -182,7 +182,7 @@ public class ProcessTaskAsyncCreateServiceImpl implements ProcessTaskAsyncCreate
if (id == null) {
return;
}
-
+ processTaskAsyncCreateMapper.updateProcessTaskAsyncCreateStatusToDoingById(id);
boolean offer = blockingQueue.offer(id);
if (!offer && logger.isDebugEnabled()) {
logger.debug("异步创建工单数据加入队列失败, id: " + id);