From 40def8bdcf0bfd39113a399a643cae8f7ca036f2 Mon Sep 17 00:00:00 2001 From: jiyufei <67400194@qq.com> Date: Mon, 5 Aug 2024 15:13:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(front):=E5=B2=97=E4=BD=8D=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ScheduleTaskHandler.java | 138 ++++++ .../jnpf-web/src/views/yys/yyspost/Detail.vue | 121 +++++ .../src/views/yys/yyspost/columnList.js | 2 + .../jnpf-web/src/views/yys/yyspost/form.vue | 459 ++++++++++++++++++ .../jnpf-web/src/views/yys/yyspost/index.vue | 457 +++++++++++++++++ 5 files changed, 1177 insertions(+) create mode 100644 jnpf-java-boot/jnpf-scheduletask/jnpf-scheduletask-biz/src/main/java/jnpf/scheduletask/task/ScheduleTaskHandler.java create mode 100644 jnpf-java-boot/jnpf-web/src/views/yys/yyspost/Detail.vue create mode 100644 jnpf-java-boot/jnpf-web/src/views/yys/yyspost/columnList.js create mode 100644 jnpf-java-boot/jnpf-web/src/views/yys/yyspost/form.vue create mode 100644 jnpf-java-boot/jnpf-web/src/views/yys/yyspost/index.vue diff --git a/jnpf-java-boot/jnpf-scheduletask/jnpf-scheduletask-biz/src/main/java/jnpf/scheduletask/task/ScheduleTaskHandler.java b/jnpf-java-boot/jnpf-scheduletask/jnpf-scheduletask-biz/src/main/java/jnpf/scheduletask/task/ScheduleTaskHandler.java new file mode 100644 index 0000000..d17668a --- /dev/null +++ b/jnpf-java-boot/jnpf-scheduletask/jnpf-scheduletask-biz/src/main/java/jnpf/scheduletask/task/ScheduleTaskHandler.java @@ -0,0 +1,138 @@ +package jnpf.scheduletask.task; + +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import jnpf.base.UserInfo; +import jnpf.base.entity.DataInterfaceEntity; +import jnpf.base.service.DataInterfaceService; +import jnpf.base.service.DbLinkService; +import jnpf.scheduletask.entity.TimeTaskEntity; +import jnpf.scheduletask.model.ContentNewModel; +import jnpf.scheduletask.model.TaskParameterModel; +import jnpf.util.JsonUtil; +import jnpf.util.StringUtil; +import jnpf.util.data.DataSourceContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * Api和数据接口使用 + * + * @author :JNPF开发平台组 + * @version: V3.1.0 + * @copyright 引迈信息技术有限公司 + * @date :2022/3/23 9:25 + */ +@Component +public class ScheduleTaskHandler { + + @Autowired + private DataInterfaceService dataInterfaceService; + @Autowired + private DbLinkService dbLinkService; + + @XxlJob("defaultHandler") + public void defaultHandler() { + // 获取参数 + String param = XxlJobHelper.getJobParam(); + // 转换成模型 + TimeTaskEntity entity = JsonUtil.getJsonToBean(param, TimeTaskEntity.class); + ContentNewModel model = JsonUtil.getJsonToBean(param, ContentNewModel.class); + // 如果是http + if ("1".equals(entity.getExecuteType())) { + Boolean callHttp = callHttp(model); +// if (callHttp) { +// XxlJobHelper.handleResult(ReturnT.SUCCESS_CODE, "调用成功"); +// } else { +// XxlJobHelper.handleResult(ReturnT.FAIL_CODE, "调用失败"); +// } + } else if ("2".equals(entity.getExecuteType())) { + boolean callSql = callSql(model); +// if ( callSql) { +// XxlJobHelper.handleResult(ReturnT.SUCCESS_CODE, "调用成功"); +// } else { +// XxlJobHelper.handleResult(ReturnT.FAIL_CODE, "调用失败"); +// } + } + } + + // ---------------START callSQL + + /** + * 调用SQL + * + * @param model 系统调度参数 + */ + private boolean callSql(ContentNewModel model) { + try { + UserInfo userInfo = model.getUserInfo(); + // 切换数据源 + if (userInfo != null && StringUtil.isNotEmpty(userInfo.getTenantId())) { + DataSourceContextHolder.setDatasource(userInfo.getTenantId(), userInfo.getTenantDbConnectionString(), userInfo.isAssignDataSource()); + } + // 得到数据接口信息 + String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "0"; + DataInterfaceEntity entity = dataInterfaceService.getInfo(model.getInterfaceId()); + if (entity != null) { + Map map = null; + if (model.getParameter() != null && model.getParameter().size() > 0) { + map = new HashMap<>(16); + for (TaskParameterModel parameterModel : model.getParameter()) { + if (StringUtil.isNotEmpty(parameterModel.getValue())) { + map.put(parameterModel.getField(), parameterModel.getValue()); + } else { + map.put(parameterModel.getField(), parameterModel.getDefaultValue()); + } + } + } + dataInterfaceService.infoToId(entity.getId(), tenantId, map, userInfo.getToken(), null, null, null, null); + } + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + // ---------------START callHttp + + /** + * HTTP调用 + * + * @param model 系统调度参数 + * @return + */ + private Boolean callHttp(ContentNewModel model) { + try { + UserInfo userInfo = model.getUserInfo(); + // 切换数据源 + if (userInfo != null && StringUtil.isNotEmpty(userInfo.getTenantId())) { + DataSourceContextHolder.setDatasource(userInfo.getTenantId(), userInfo.getTenantDbConnectionString(), userInfo.isAssignDataSource()); + } + // 得到数据接口信息 + String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "0"; + DataInterfaceEntity entity = dataInterfaceService.getInfo(model.getInterfaceId()); + if (entity != null) { + Map map = null; + if (model.getParameter() != null && model.getParameter().size() > 0) { + map = new HashMap<>(16); + for (TaskParameterModel parameterModel : model.getParameter()) { + if (StringUtil.isNotEmpty(parameterModel.getValue())) { + map.put(parameterModel.getField(), parameterModel.getValue()); + } else { + map.put(parameterModel.getField(), parameterModel.getDefaultValue()); + } + } + } + dataInterfaceService.infoToId(entity.getId(), tenantId, map, userInfo.getToken(), null, null, null, null); + } + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + +} diff --git a/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/Detail.vue b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/Detail.vue new file mode 100644 index 0000000..88e781a --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/Detail.vue @@ -0,0 +1,121 @@ + + diff --git a/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/columnList.js b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/columnList.js new file mode 100644 index 0000000..3c5d765 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/columnList.js @@ -0,0 +1,2 @@ +const columnList = [{"clearable":true,"maxlength":null,"jnpfKey":"input","suffixIcon":"","fullName":"岗位名称","label":"岗位名称","sortable":false,"align":"left","addonAfter":"","__config__":{"formId":101,"visibility":["pc","app"],"jnpfKey":"input","noShow":false,"tipLabel":"","dragDisabled":false,"className":[],"label":"岗位名称","trigger":"blur","showLabel":true,"required":true,"tableName":"yys_post","renderKey":1722837183559,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-input","unique":false,"tag":"JnpfInput","regList":[],"span":8},"readonly":false,"prop":"postName","showWordLimit":false,"width":0,"__vModel__":"postName","showPassword":false,"fixed":"none","style":{"width":"100%"},"disabled":false,"id":"postName","placeholder":"请输入","prefixIcon":"","addonBefore":"","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}","blur":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}},{"clearable":true,"maxlength":null,"jnpfKey":"input","suffixIcon":"","fullName":"岗位编码","label":"岗位编码","sortable":false,"align":"left","addonAfter":"","__config__":{"formId":102,"visibility":["pc","app"],"jnpfKey":"input","noShow":false,"tipLabel":"","dragDisabled":false,"className":[],"label":"岗位编码","trigger":"blur","showLabel":true,"required":true,"tableName":"yys_post","renderKey":1722837353100,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-input","unique":false,"tag":"JnpfInput","regList":[],"span":8},"readonly":false,"prop":"postCode","showWordLimit":false,"width":0,"__vModel__":"postCode","showPassword":false,"fixed":"none","style":{"width":"100%"},"disabled":false,"id":"postCode","placeholder":"请输入","prefixIcon":"","addonBefore":"","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}","blur":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}},{"clearable":true,"maxlength":null,"jnpfKey":"input","suffixIcon":"","fullName":"岗位顺序","label":"岗位顺序","sortable":false,"align":"left","addonAfter":"","__config__":{"formId":104,"visibility":["pc","app"],"jnpfKey":"input","noShow":false,"tipLabel":"","dragDisabled":false,"className":[],"label":"岗位顺序","trigger":"blur","showLabel":true,"required":false,"tableName":"yys_post","renderKey":1722837451727,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-input","unique":false,"tag":"JnpfInput","regList":[{"pattern":"/^\\d+$/","message":"请输入正确的数字"}],"span":8},"readonly":false,"prop":"postSort","showWordLimit":false,"width":0,"__vModel__":"postSort","showPassword":false,"fixed":"none","style":{"width":"100%"},"disabled":false,"id":"postSort","placeholder":"请输入","prefixIcon":"","addonBefore":"","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}","blur":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}},{"maxlength":null,"jnpfKey":"textarea","fullName":"岗位备注","label":"岗位备注","sortable":false,"align":"left","type":"textarea","autoSize":{"minRows":4,"maxRows":4},"__config__":{"formId":105,"visibility":["pc","app"],"jnpfKey":"textarea","noShow":false,"tipLabel":"","dragDisabled":false,"className":[],"label":"岗位备注","trigger":"blur","showLabel":true,"required":false,"tableName":"yys_post","renderKey":1722837540972,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-textarea","tag":"JnpfTextarea","regList":[],"span":24},"readonly":false,"prop":"reamrk","showWordLimit":true,"width":0,"__vModel__":"reamrk","fixed":"none","style":{"width":"100%"},"disabled":false,"id":"reamrk","placeholder":"请输入","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}","blur":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}},{"filterable":false,"clearable":true,"jnpfKey":"select","multiple":false,"fullName":"岗位状态","label":"岗位状态","sortable":false,"align":"left","props":{"label":"fullName","value":"id"},"__config__":{"formId":103,"visibility":["pc","app"],"jnpfKey":"select","defaultValue":"","noShow":false,"dataType":"static","dictionaryType":"","tipLabel":"","dragDisabled":false,"className":[],"label":"岗位状态","trigger":"change","propsUrl":"","templateJson":[],"showLabel":true,"required":true,"tableName":"yys_post","renderKey":1722837372783,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-select","propsName":"","tag":"JnpfSelect","regList":[],"span":8},"prop":"postStatus","width":0,"options":[{"fullName":"启用","id":"1"},{"fullName":"不启用","id":"2"}],"__vModel__":"postStatus","fixed":"none","style":{"width":"100%"},"disabled":false,"interfaceHasPage":false,"id":"postStatus","placeholder":"请选择","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}}] +export default columnList \ No newline at end of file diff --git a/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/form.vue b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/form.vue new file mode 100644 index 0000000..b2e40f7 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/form.vue @@ -0,0 +1,459 @@ + + + + + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/index.vue b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/index.vue new file mode 100644 index 0000000..41d74a2 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/yys/yyspost/index.vue @@ -0,0 +1,457 @@ + + +