diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/EdocInspectionPluginApi.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/EdocInspectionPluginApi.java new file mode 100644 index 0000000..90f29a0 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/EdocInspectionPluginApi.java @@ -0,0 +1,46 @@ +package com.seeyon.apps.src_edocInspection; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.ydctu8c.constants.U8cConstants; + + +public class EdocInspectionPluginApi extends APluginInfoApi { + public EdocInspectionPluginApi() { + } + + public String getPluginId() { + System.out.println(U8cConstants.getPluginId()); + return U8cConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "公文督办管理"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + U8cConstants[] var2 = U8cConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + U8cConstants value = var2[var4]; + if (value != U8cConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } + +// public void registerCustomEvent(Map eventAndNodes) { +// eventAndNodes.put("propertyDispose", "资产管理待办推送"); +// } +} + diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/constants/EdocInspectionConstants.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/constants/EdocInspectionConstants.java new file mode 100644 index 0000000..4c3d700 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/constants/EdocInspectionConstants.java @@ -0,0 +1,30 @@ +package com.seeyon.apps.src_edocInspection.constants; + +public enum EdocInspectionConstants { + + + plugin("src_edocInspection","插件ID"), + loginName("","流程创建人名称"), + formCode("","流程模板编号") + ; + EdocInspectionConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + private String defaultValue; + private String description; + + public String getDefaultValue() { + return defaultValue; + } + + public String getDescription() { + return description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/event/EdocInspectionEvent.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/event/EdocInspectionEvent.java new file mode 100644 index 0000000..136467a --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/event/EdocInspectionEvent.java @@ -0,0 +1,126 @@ +package com.seeyon.apps.src_edocInspection.event; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.event.ACommonWorkflowEvent; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.WorkflowEventContext; +import com.seeyon.apps.src_edocInspection.constants.EdocInspectionConstants; +import com.seeyon.apps.src_edocInspection.util.FormExportUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.services.ServiceException; +import com.seeyon.ctp.util.annotation.Inject; +import com.seeyon.v3x.services.form.FormFactory; +import com.seeyon.v3x.services.form.bean.FormExport; +import com.seeyon.v3x.services.form.bean.SubordinateFormExport; +import com.seeyon.v3x.services.form.bean.ValueExport; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class EdocInspectionEvent extends ACommonWorkflowEvent { + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + public ConfigVo getHxinvoiceConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public String getId() { + return "edocInspectionEvent"; + } + + @Override + public String getLabel() { + return "公文督办流程创建提交前监听"; + } + + @Override + public String getPluginId() { + return EdocInspectionConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] { WorkFlowType.onBeforeFinishWorkItem }; + } + + @Inject + private FormFactory formFactory; + + @Override + protected WorkflowEventContext proceed(String request, FormDataVo formDataVo, WorkFlowType workFlowType, FormDataMasterBean formDataMasterBean) { + WorkflowEventContext context = new WorkflowEventContext(); + ConfigVo configVo = getHxinvoiceConfig(); + FormExportUtil formExportUtil = new FormExportUtil(); +// 获取参数信息,解读枚举字段是否为推送流程 + JSONObject req = JSONObject.parseObject(request); + String isPust = req.getString("isPust"); + if("0".equals(isPust)){ + context.setSuccess(true); + context.setErrMsg("不推送公文督办流程,跳过流程。"); + return context; + } +// 解读data数据,json数据转流程数据 + Map map = new HashMap<>(); + List>> allSubMapsList = new ArrayList<>(); +// 解析JSON数据,区分主表字段和明细表字段 + for (String key : req.keySet()) { + if ("ispust".equals(key)) { + continue; + } + Object value = req.get(key); + if (value instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) value; + List> subMaps = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject item = jsonArray.getJSONObject(i); + Map subMap = new HashMap<>(); + for (String subKey : item.keySet()) { + subMap.put(subKey, item.get(subKey)); + } + subMaps.add(subMap); + } + allSubMapsList.add(subMaps); + } else { + map.put(key, value); + } + } +// 调用流程推送方法推送流程 + FormExport formExport = new FormExport(); + List valueExports = formExportUtil.setFormValue(map); + List subordinateFormExports = new ArrayList<>(); + for (List> subMaps : allSubMapsList) { + subordinateFormExports.addAll(formExportUtil.setSubordinateFormValue(subMaps)); + } + formExport.setValues(valueExports); + formExport.setSubordinateForms(subordinateFormExports); + String loginName = configVo.getParamVal(EdocInspectionConstants.loginName.name()); + String formCode = configVo.getParamVal(EdocInspectionConstants.formCode.name()); + // 流程推送成功返回成功状态推送公文 + try{ + formFactory.importBusinessFormData(loginName, formCode,formExport, new String[] {}); + context.setSuccess(true); + context.setErrMsg("公文督办流程创建成功"); + } catch (ServiceException e) { + context.setSuccess(false); + context.setErrMsg("督办流程创建失败,请检查数据"+e); + throw new RuntimeException(e); + } + + return context; + } + +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/util/FormExportUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/util/FormExportUtil.java new file mode 100644 index 0000000..13e5e90 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_edocInspection/util/FormExportUtil.java @@ -0,0 +1,65 @@ +package com.seeyon.apps.src_edocInspection.util; + +import com.seeyon.v3x.services.form.bean.RecordExport; +import com.seeyon.v3x.services.form.bean.SubordinateFormExport; +import com.seeyon.v3x.services.form.bean.ValueExport; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +//创建无流程表单数据处理工具类 +public class FormExportUtil { + + /** + * 设置主表信息 + * @param map 设置主表字段。Map<主表显示名称,主表数据> + * @return + */ + public List setFormValue(Map map ){ +// 创建返回值对象 + List valueExports = new ArrayList(); + ValueExport valueExport ; +// 获取参数信息(显示名称) + Set keys = map.keySet(); + if(keys.size()>0) { +// 对控件赋值 + for (String key : keys) { + if(map.get(key) != null ){ + valueExport = new ValueExport(); + valueExport.setDisplayName(key); + valueExport.setValue(map.get(key).toString()); + valueExports.add(valueExport); + } +// System.out.println(key+":"+map.get(key)); + } + } + return valueExports; + } + + /** + * 设置从表信息 + * @param lists 设置主表字段。List> + */ + public List setSubordinateFormValue(List> lists){ + List subordinateFormExports = new ArrayList(); + SubordinateFormExport subordinateFormExport = new SubordinateFormExport(); + List recordExports = new ArrayList(); + List valueExports; + RecordExport recordExport; + for(int i = 0 ; i < lists.size() ; i++) { + recordExport = new RecordExport(); + valueExports = setFormValue(lists.get(i)); + recordExport.setRecord(valueExports); + recordExports.add(recordExport); + } + subordinateFormExport.setValues(recordExports); + subordinateFormExports.add(subordinateFormExport); + + return subordinateFormExports; + } + + + +}