diff --git a/src/main/java/neatlogic/module/process/api/processtask/UpdateProcessTaskFormApi.java b/src/main/java/neatlogic/module/process/api/processtask/UpdateProcessTaskFormApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..886b13b874d899262ea3789fc395dd077ebffdd3
--- /dev/null
+++ b/src/main/java/neatlogic/module/process/api/processtask/UpdateProcessTaskFormApi.java
@@ -0,0 +1,111 @@
+/*
+ * 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;
+
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.asynchronization.threadlocal.UserContext;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.process.auth.PROCESSTASK_MODIFY;
+import neatlogic.framework.process.constvalue.ProcessTaskAuditType;
+import neatlogic.framework.process.constvalue.ProcessTaskStepDataType;
+import neatlogic.framework.process.dto.ProcessTaskStepDataVo;
+import neatlogic.framework.process.dto.ProcessTaskStepVo;
+import neatlogic.framework.process.dto.ProcessTaskVo;
+import neatlogic.framework.restful.annotation.Description;
+import neatlogic.framework.restful.annotation.Input;
+import neatlogic.framework.restful.annotation.OperationType;
+import neatlogic.framework.restful.annotation.Param;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper;
+import neatlogic.module.process.dao.mapper.processtask.ProcessTaskStepDataMapper;
+import neatlogic.module.process.service.IProcessStepHandlerUtil;
+import neatlogic.module.process.service.ProcessTaskService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+@Transactional
+@OperationType(type = OperationTypeEnum.UPDATE)
+@AuthAction(action = PROCESSTASK_MODIFY.class)
+public class UpdateProcessTaskFormApi extends PrivateApiComponentBase {
+
+ @Resource
+ private ProcessTaskMapper processTaskMapper;
+
+ @Resource
+ ProcessTaskStepDataMapper processTaskStepDataMapper;
+
+ @Resource
+ private ProcessTaskService processTaskService;
+
+ @Resource
+ private IProcessStepHandlerUtil processStepHandlerUtil;
+
+ @Override
+ public String getName() {
+ return "nmpap.updateprocesstaskformapi.getname";
+ }
+
+ @Input({
+ @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid"),
+ @Param(name = "source", type = ApiParamType.STRING, defaultValue = "pc", desc = "common.source"),
+ @Param(name = "formAttributeDataList", type = ApiParamType.JSONARRAY, isRequired = true, desc = "term.itsm.formattributedatalist"),
+ @Param(name = "formExtendAttributeDataList", type = ApiParamType.JSONARRAY, desc = "term.itsm.formextendattributedatalist"),
+ @Param(name = "hidecomponentList", type = ApiParamType.JSONARRAY, desc = "term.itsm.hidecomponentlist"),
+ @Param(name = "readcomponentList", type = ApiParamType.JSONARRAY, desc = "term.itsm.readcomponentlist"),
+ })
+ @Description(desc = "nmpap.updateprocesstaskformapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ Long processTaskId = paramObj.getLong("processTaskId");
+ ProcessTaskVo processTaskVo = processTaskService.checkProcessTaskParamsIsLegal(processTaskId);
+ // 锁定当前流程
+ processTaskMapper.getProcessTaskLockById(processTaskId);
+ ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo();
+ processTaskStepVo.setProcessTaskId(processTaskId);
+ processTaskStepVo.setIsAutoGenerateId(false);
+ JSONObject param = processTaskStepVo.getParamObj();
+ param.put("formAttributeDataList", paramObj.getJSONArray("formAttributeDataList"));
+ param.put("formExtendAttributeDataList", paramObj.getJSONArray("formExtendAttributeDataList"));
+ param.put("hidecomponentList", paramObj.getJSONArray("hidecomponentList"));
+ param.put("readcomponentList", paramObj.getJSONArray("readcomponentList"));
+ param.put("source", paramObj.getString("source"));
+ processStepHandlerUtil.saveForm(processTaskStepVo);
+ processStepHandlerUtil.audit(processTaskStepVo, ProcessTaskAuditType.UPDATEFORM);
+
+ ProcessTaskStepDataVo processTaskStepDataVo = new ProcessTaskStepDataVo();
+ processTaskStepDataVo.setProcessTaskId(processTaskId);
+ processTaskStepDataVo.setFcu(UserContext.get().getUserUuid(true));
+ processTaskStepDataVo.setType(ProcessTaskStepDataType.STEPDRAFTSAVE.getValue());
+ List stepDraftSaveDataList = processTaskStepDataMapper.searchProcessTaskStepData(processTaskStepDataVo);
+ for (ProcessTaskStepDataVo stepDraftSaveData : stepDraftSaveDataList) {
+ processTaskStepDataMapper.deleteProcessTaskStepDataById(stepDraftSaveData.getId());
+ }
+ return null;
+ }
+
+ @Override
+ public String getToken() {
+ return "processtask/form/update";
+ }
+}
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.java b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.java
index bc32aab0ca31be69e42f6e5f3b2c1dc11c12fb87..b8a30d3f3b9e8866a8b2f6386ac43d4a56ffe98e 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.java
+++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.java
@@ -28,7 +28,7 @@ public interface ProcessTaskStepDataMapper extends IProcessTaskStepDataCrossover
ProcessTaskStepDataVo getProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo);
-// List searchProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo);
+ List searchProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo);
int replaceProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo);
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.xml b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.xml
index 705df4a035d26716081cc0cbce51f94676fec533..e871f8ebc068ab7b4b8cc92763b20adb9e436457 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.xml
+++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskStepDataMapper.xml
@@ -60,7 +60,7 @@
LIMIT 1
-
+
REPLACE INTO `processtask_step_data` (`id`,
diff --git a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
index d9dbea0898b563787731fed7e7ef79f85c0a4790..25b9574ced6d022142942deff31b7382da49897a 100644
--- a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
+++ b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
@@ -907,7 +907,6 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess
@Override
public void saveForm(ProcessTaskStepVo currentProcessTaskStepVo) {
Long processTaskId = currentProcessTaskStepVo.getProcessTaskId();
- Long processTaskStepId = currentProcessTaskStepVo.getId();
ProcessTaskFormVo processTaskFormVo = processTaskMapper.getProcessTaskFormByProcessTaskId(processTaskId);
if (processTaskFormVo == null) {
// 工单没有表单直接返回
@@ -983,11 +982,17 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess
formVersionVo.setFormUuid(processTaskFormVo.getFormUuid());
formVersionVo.setFormName(processTaskFormVo.getFormName());
formVersionVo.setFormConfig(JSON.parseObject(formContent));
- if (StringUtils.isBlank(currentProcessTaskStepVo.getConfigHash())) {
- ProcessTaskStepVo stepVo = processTaskMapper.getProcessTaskStepBaseInfoById(processTaskStepId);
- currentProcessTaskStepVo.setConfigHash(stepVo.getConfigHash());
+ Long processTaskStepId = currentProcessTaskStepVo.getId();
+ if (currentProcessTaskStepVo.getId() != null) {
+ if (StringUtils.isBlank(currentProcessTaskStepVo.getConfigHash())) {
+ ProcessTaskStepVo stepVo = processTaskMapper.getProcessTaskStepBaseInfoById(processTaskStepId);
+ currentProcessTaskStepVo.setConfigHash(stepVo.getConfigHash());
+ }
+ formVersionVo.setSceneUuid(currentProcessTaskStepVo.getFormSceneUuid());
+ } else {
+ formVersionVo.setSceneUuid(mainSceneUuid);
}
- formVersionVo.setSceneUuid(currentProcessTaskStepVo.getFormSceneUuid());
+
List formAttributeVoList = formVersionVo.getFormAttributeList();
Map attributeLabelMap = new HashMap<>();