From f5bb8b3bf762ab71ec511d42e8ae0bc0d75003f6 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Fri, 24 Nov 2023 12:25:40 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=9C=BA=E6=99=AF-=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=85=A8=E5=B1=80=E5=8F=AA=E8=AF=BB=E5=BC=80?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031713214398464]后端-表单场景-增加一个全局只读开关 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031713214398464 --- .../form/SaveFormVersionSceneReadOnlyApi.java | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/main/java/neatlogic/module/tenant/api/form/SaveFormVersionSceneReadOnlyApi.java diff --git a/src/main/java/neatlogic/module/tenant/api/form/SaveFormVersionSceneReadOnlyApi.java b/src/main/java/neatlogic/module/tenant/api/form/SaveFormVersionSceneReadOnlyApi.java new file mode 100644 index 00000000..2435d41f --- /dev/null +++ b/src/main/java/neatlogic/module/tenant/api/form/SaveFormVersionSceneReadOnlyApi.java @@ -0,0 +1,102 @@ +package neatlogic.module.tenant.api.form; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.auth.core.AuthAction; +import neatlogic.framework.auth.label.FORM_MODIFY; +import neatlogic.framework.common.constvalue.ApiParamType; +import neatlogic.framework.form.dao.mapper.FormMapper; +import neatlogic.framework.form.dto.FormVersionVo; +import neatlogic.framework.form.dto.FormVo; +import neatlogic.framework.form.exception.FormNotFoundException; +import neatlogic.framework.form.exception.FormVersionNotFoundException; +import neatlogic.framework.form.exception.FormVersionSceneNotFoundException; +import neatlogic.framework.restful.annotation.*; +import neatlogic.framework.restful.constvalue.OperationTypeEnum; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +@Service +@AuthAction(action = FORM_MODIFY.class) +@OperationType(type = OperationTypeEnum.UPDATE) +public class SaveFormVersionSceneReadOnlyApi extends PrivateApiComponentBase { + + @Resource + private FormMapper formMapper; + + @Override + public String getName() { + return "nmtaf.saveformversionscenereadonlyapi.getname"; + } + + @Input({ + @Param(name = "versionUuid", type = ApiParamType.STRING, desc = "common.versionuuid", isRequired = true), + @Param(name = "sceneUuid", type = ApiParamType.STRING, desc = "common.sceneuuid", isRequired = true), + @Param(name = "readOnly", type = ApiParamType.BOOLEAN, desc = "common.readonly", isRequired = true) + }) + @Output({}) + @Description(desc = "nmtaf.saveformversionscenereadonlyapi.getname") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { + String versionUuid = paramObj.getString("versionUuid"); + FormVersionVo formVersionVo = formMapper.getFormVersionByUuid(versionUuid); + if (formVersionVo == null) { + throw new FormVersionNotFoundException(versionUuid); + } + JSONObject config = formVersionVo.getFormConfig(); + if (MapUtils.isEmpty(config)) { + return null; + } + boolean flag = false; + String sceneUuid = paramObj.getString("sceneUuid"); + Boolean readOnly = paramObj.getBoolean("readOnly"); + String mainSceneUuid = config.getString("uuid"); + if (Objects.equals(mainSceneUuid, sceneUuid)) { + flag = true; + Boolean oldReadOnly = config.getBoolean("readOnly"); + if (Objects.equals(oldReadOnly, readOnly)) { + return null; + } else { + config.put("readOnly", readOnly); + } + } else { + JSONArray sceneList = config.getJSONArray("sceneList"); + if (CollectionUtils.isNotEmpty(sceneList)) { + for (int i = 0; i < sceneList.size(); i++) { + JSONObject sceneObj = sceneList.getJSONObject(i); + String uuid = sceneObj.getString("uuid"); + if (Objects.equals(uuid, sceneUuid)) { + flag = true; + Boolean oldReadOnly = sceneObj.getBoolean("readOnly"); + if (Objects.equals(oldReadOnly, readOnly)) { + return null; + } else { + sceneObj.put("readOnly", readOnly); + } + break; + } + } + } + } + if (!flag) { + FormVo formVo = formMapper.getFormByUuid(formVersionVo.getFormUuid()); + if (formVo == null) { + throw new FormNotFoundException(formVersionVo.getFormUuid()); + } + throw new FormVersionSceneNotFoundException(formVo.getName(), String.valueOf(formVersionVo.getVersion()), sceneUuid); + } + formVersionVo.setFormConfig(config); + formMapper.updateFormVersionConfigByUuid(formVersionVo); + return null; + } + + @Override + public String getToken() { + return "form/version/scene/readonly"; + } +} -- Gitee