From 141210d74a8805b56022222f8110d342c9d0e3f7 Mon Sep 17 00:00:00 2001 From: devezhao Date: Thu, 29 Oct 2020 23:52:21 +0800 Subject: [PATCH] trans --- @rbv | 2 +- .../general/TransformManager.java | 7 +++- .../general/transform/RecordTransfomer.java | 16 +++++-- .../transform/TransformConfigController.java | 4 ++ .../web/general/FormExtrasController.java | 18 +++++--- src/main/resources/i18n/language.zh_CN.json | 5 +++ .../resources/web/assets/css/view-page.css | 2 + src/main/resources/web/assets/js/rb-view.js | 42 ++++++++++++++++--- .../resources/web/general/record-view.html | 8 ++++ 9 files changed, 87 insertions(+), 17 deletions(-) diff --git a/@rbv b/@rbv index 784288909..283764e86 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit 7842889096513fd0e8a89a23ffdb79f940295365 +Subproject commit 283764e8697a5976981d0d7f1c6041fbab8db28e diff --git a/src/main/java/com/rebuild/core/configuration/general/TransformManager.java b/src/main/java/com/rebuild/core/configuration/general/TransformManager.java index 95603ad58..7895f2b5d 100644 --- a/src/main/java/com/rebuild/core/configuration/general/TransformManager.java +++ b/src/main/java/com/rebuild/core/configuration/general/TransformManager.java @@ -36,6 +36,8 @@ public class TransformManager implements ConfigManager { private TransformManager() { } /** + * 前端使用 + * * @param sourceEntity * @return */ @@ -51,9 +53,10 @@ public class TransformManager implements ConfigManager { continue; } + EasyMeta easyMeta = EasyMeta.valueOf(targetEntity); JSONObject item = JSONUtils.toJSONObject( - new String[] { "targetEntity", "targetEntityLabel", "id" }, - new Object[] { target, EasyMeta.getLabel(targetEntity), c.getID("id") }); + new String[] { "entityIcon", "entityLabel", "transid" }, + new Object[] { easyMeta.getIcon(), easyMeta.getLabel(), c.getID("id") }); data.add(item); } return data; diff --git a/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer.java b/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer.java index 043f015e3..d1dc5c964 100644 --- a/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer.java +++ b/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer.java @@ -10,6 +10,7 @@ package com.rebuild.core.service.general.transform; import cn.devezhao.persist4j.Entity; import cn.devezhao.persist4j.engine.ID; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; /** * TODO @@ -20,20 +21,27 @@ import com.alibaba.fastjson.JSON; public class RecordTransfomer { private Entity targetEntity; + private JSONObject transConfig; /** * @param targetEntity */ - public RecordTransfomer(Entity targetEntity) { + public RecordTransfomer(Entity targetEntity, JSONObject transConfig) { this.targetEntity = targetEntity; } /** - * @param sourceRecord - * @param useMapping * @return */ - public ID transform(ID sourceRecord, JSON useMapping) { + public boolean checkFilter() { + return false; + } + + /** + * @param sourceRecord + * @return + */ + public ID transform(ID sourceRecord) { return null; } } diff --git a/src/main/java/com/rebuild/web/admin/transform/TransformConfigController.java b/src/main/java/com/rebuild/web/admin/transform/TransformConfigController.java index 5928bb1d6..1341da5a7 100644 --- a/src/main/java/com/rebuild/web/admin/transform/TransformConfigController.java +++ b/src/main/java/com/rebuild/web/admin/transform/TransformConfigController.java @@ -117,6 +117,10 @@ public class TransformConfigController extends BaseController { fullType += "." + field.getReferenceEntity().getName(); } else if (DisplayType.STATE.name().equals(fullType)) { fullType += "." + easyMeta.getExtraAttr(FieldExtConfigProps.STATE_STATECLASS); + } else if (DisplayType.CLASSIFICATION.name().equals(fullType)) { + fullType += "." + easyMeta.getExtraAttr(FieldExtConfigProps.CLASSIFICATION_USE); + } else if (DisplayType.ID.name().equals(fullType)) { + fullType = DisplayType.REFERENCE.name() + "." + field.getOwnEntity().getName(); } item.put("type", fullType); return item; diff --git a/src/main/java/com/rebuild/web/general/FormExtrasController.java b/src/main/java/com/rebuild/web/general/FormExtrasController.java index dd47ecb1a..10a8e05f8 100644 --- a/src/main/java/com/rebuild/web/general/FormExtrasController.java +++ b/src/main/java/com/rebuild/web/general/FormExtrasController.java @@ -11,6 +11,8 @@ import cn.devezhao.persist4j.Entity; import cn.devezhao.persist4j.Field; import cn.devezhao.persist4j.engine.ID; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.rebuild.api.RespBody; import com.rebuild.core.configuration.ConfigBean; import com.rebuild.core.configuration.general.AutoFillinManager; import com.rebuild.core.configuration.general.TransformManager; @@ -18,6 +20,7 @@ import com.rebuild.core.metadata.MetadataHelper; import com.rebuild.core.service.general.transform.RecordTransfomer; import com.rebuild.web.BaseController; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @@ -54,14 +57,19 @@ public class FormExtrasController extends BaseController { * @param request */ @RequestMapping("transform") - public ID transform(HttpServletRequest request) { - ID configId = getIdParameterNotNull(request, "id"); + public RespBody transform(HttpServletRequest request) { + ID transid = getIdParameterNotNull(request, "transid"); ID sourceRecord = getIdParameterNotNull(request, "source"); - ConfigBean config = TransformManager.instance.getTransformConfig(configId, null); + ConfigBean config = TransformManager.instance.getTransformConfig(transid, null); Entity targetEntity = MetadataHelper.getEntity(config.getString("target")); - RecordTransfomer transfomer = new RecordTransfomer(targetEntity); - return transfomer.transform(sourceRecord, config.getJSON("mapping")); + RecordTransfomer transfomer = new RecordTransfomer(targetEntity, (JSONObject) config.getJSON("config")); + if (!transfomer.checkFilter()) { + return RespBody.errorl("TransformNotAllow"); + } + + ID newId = transfomer.transform(sourceRecord); + return RespBody.ok(newId); } } diff --git a/src/main/resources/i18n/language.zh_CN.json b/src/main/resources/i18n/language.zh_CN.json index 8a072ebc1..d2f82deff 100644 --- a/src/main/resources/i18n/language.zh_CN.json +++ b/src/main/resources/i18n/language.zh_CN.json @@ -1195,6 +1195,11 @@ "NoUsesEntity": "无可用实体", "NoUsesField": "无可用字段", "To": "至", + "Transform": "转换", + "TransformAs": "转换为", + "TransformAsTips": "确认将当前记录转换为 %s 吗?", + "TransformAsAndOpen": "转换后打开", + "TransformNotAllow": "当前记录不符合转换条件", "s.__": "状态", "s.ApprovalState.DRAFT": "草稿", diff --git a/src/main/resources/web/assets/css/view-page.css b/src/main/resources/web/assets/css/view-page.css index ad4d25b69..d856c72f8 100644 --- a/src/main/resources/web/assets/css/view-page.css +++ b/src/main/resources/web/assets/css/view-page.css @@ -201,6 +201,8 @@ body { .view-action .col-lg-6 .btn { width: 100%; + overflow: hidden; + text-overflow: ellipsis; } .view-action.empty { diff --git a/src/main/resources/web/assets/js/rb-view.js b/src/main/resources/web/assets/js/rb-view.js index 182caf42d..d06ade3a0 100644 --- a/src/main/resources/web/assets/js/rb-view.js +++ b/src/main/resources/web/assets/js/rb-view.js @@ -14,7 +14,7 @@ class RbViewForm extends React.Component { super(props) this.state = { ...props } - this.onViewEditable = wpc.onViewEditable === false ? false : true + this.onViewEditable = wpc.onViewEditable !== false this.__FormData = {} } @@ -446,6 +446,7 @@ const RbViewPage = { ) $('.J_assign').click(() => DlgAssign.create({ entity: entity[0], ids: [id] })) $('.J_share').click(() => DlgShare.create({ entity: entity[0], ids: [id] })) + $('.J_report').click(() => SelectReport.create(entity[0], id)) $('.J_add-detail').click(function () { const iv = { $MAINID$: id } const $this = $(this) @@ -456,7 +457,13 @@ const RbViewPage = { initialValue: iv, }) }) - $('.J_report').click(() => SelectReport.create(entity[0], id)) + + if (wpc.transformTos && wpc.transformTos.length > 0) { + this.initTrans(wpc.transformTos) + $('.J_trans').removeClass('hide') + } else { + $('.J_trans').remove() + } // Privileges if (ep) { @@ -464,8 +471,10 @@ const RbViewPage = { if (ep.U === false) $('.J_edit, .J_add-detail').remove() if (ep.A !== true) $('.J_assign').remove() if (ep.S !== true) $('.J_share').remove() - that.cleanViewActionButton() } + + // Clean + that.cleanViewActionButton() }, // 元数据 @@ -479,7 +488,7 @@ const RbViewPage = { for (let k in res.data) { const v = res.data[k] - if (!v || v === undefined) return + if (!v) return const $el = $('.J_' + k) if ($el.length === 0) return @@ -585,7 +594,29 @@ const RbViewPage = { }) $('.J_adds .dropdown-divider').before($item) }) - this.cleanViewActionButton() + }, + + // 转换 + initTrans(config) { + const that = this + config.forEach((item) => { + const $item = $(`${item.entityLabel}`) + $item.click(() => { + RbAlert.create($L('TransformAsTips').replace('%s', item.entityLabel), { + confirm: function () { + this.disabled(true) + $.post(`/app/entity/extras/transform?transid=${item.transid}&source=${that.__id}`, (res) => { + if (res.error_code === 0) { + RbHighbar.success($L('SomeSuccess,Transform')) + } else { + RbHighbar.error(res.error_msg) + } + }) + }, + }) + }) + $('.J_trans .dropdown-divider').before($item) + }) }, // 通过父级页面打开 @@ -608,6 +639,7 @@ const RbViewPage = { () => { $cleanMenu('.view-action .J_mores') $cleanMenu('.view-action .J_adds') + $cleanMenu('.view-action .J_trans') $('.view-action .col-lg-6').each(function () { if ($(this).children().length === 0) $(this).remove() }) diff --git a/src/main/resources/web/general/record-view.html b/src/main/resources/web/general/record-view.html index 45083fe79..f91b6c23d 100644 --- a/src/main/resources/web/general/record-view.html +++ b/src/main/resources/web/general/record-view.html @@ -59,6 +59,13 @@ [[${bundle.L('ConfSome,ViewNewAddon')}]] +
+ + +
@@ -97,6 +104,7 @@ privileges: _$unthy('[[${entityPrivileges}]]'), viewTabs: _$unthy('[[${ViewTabs}]]'), viewAdds: _$unthy('[[${ViewAdds}]]'), + transformTos: _$unthy('[[${TransformTos}]]'), recordId: '[[${id}]]', }