泛微开发案例
泛微OA集成SAP案例:全面打通数据流、审批流、业务流

泛微OA集成SAP案例:全面打通数据流、审批流、业务流企业各基层部门对业务数据的填写、处理是否都按照规定严格执行?数据重复录入能否保证一致性?业务运营效率如何提高?泛微针对华伦化工上述业务需求,用OA系统收集、整理基础数据,做到与SAP数据实时同步,搭建了以“OA-SAP业务集成”为核心的高效协同办公平台。
(整体项目架构)一、华伦概况江苏华伦化工有限公司致力于健康、环保型溶剂及树脂的生产与开发,是国家重点高新技术企业,中国化工企业500强。
二、OA-SAP业务整合亮点1.物料/供应商主数据管理物料数据在OA流程中填写,部分业务数据可通过SAP实时读取,如物料类型、计量单位等,流程审批归档后,物料数据推送至SAP。
(主数据维护流程)2.销售管理华伦化工将客户分为基础、样品、成交这几个不同状态,销售要根据不同状态进行相对应的信息统计与维护。
1)基础客户通过OA“SAP客户主数据创建”流程,完成数据信息填写及领导审批;审批通过后推送信息至SAP,同时回写SAP客户编码至OA。
无需在SAP中录入、维护,有效提高运维效率,减少使用SAP账号维护带来的成本。
(主数据创建流程)2)样品客户销售与客户沟通后,如果需要进一步了解产品,这时可通过OA“SAP客户主数据变更”流程将客户更换为“样品客户”。
同时,可以在OA中出创建“免费样品寄送申请“流程,审批后,手动在SAP中创建发货单,并回填SAP订单号及发货单号至OA。
(样品寄送申请流程)3)成交客户订单一旦成交,客户状态可通过OA“SAP客户主数据变更”流程来完成,客户信息也会归档至SAP。
3.财务管理费用报销、付款流程在OA中创建与审批。
审批完成后,推送财务凭证信息至SAP,同时在SAP中生成财务凭证。
凭证创建成功后,会计凭证编号同步至OA。
(费用报销流程)4.采购管理-采购订单审批SAP中的采购订单通过OA流程进行审批,各审批节点状态实时同步至SAP,以保证两边系统数据一致。
泛微 公式 java

泛微公式java全文共四篇示例,供读者参考第一篇示例:泛微(FionWee)是国内领先的企业级应用软件开发商,其软件产品覆盖了OA办公自动化、企业移动办公、商务智能等领域,在企业信息化建设中发挥着重要作用。
泛微公式引擎(Formula Engine)是泛微产品中的一个重要组成部分,提供了丰富的计算功能,可以满足企业在业务逻辑、数据分析等方面的需求。
泛微公式引擎采用Java语言开发,具有良好的兼容性和稳定性,适用于企业各类应用场景。
在企业应用系统中,我们经常会遇到诸如计算、校验、逻辑判断等需求,而泛微公式引擎正是为了便捷地处理这些业务逻辑而设计的。
下面,我们将重点介绍泛微公式引擎在Java 开发中的应用。
泛微公式引擎的语法简单明了,易于掌握。
在Java开发中,我们可以通过编写简单的公式表达式来实现复杂的业务逻辑。
我们可以使用简单的加减乘除运算符和逻辑运算符,结合函数库中提供的各种函数,实现各类数据计算和逻辑判断。
而且,泛微公式引擎支持嵌套式公式,可以将多个公式表达式组合成一个更为复杂的公式,以满足不同的计算需求。
泛微公式引擎可以轻松地与数据库、系统API等外部资源进行交互。
在企业应用开发中,我们常常需要从数据库中获取数据、调用外部接口、读取配置文件等,而泛微公式引擎提供了丰富的外部接口,可以轻松实现与外部资源的数据交互。
我们可以在公式中直接调用数据库查询语句、系统API等,实现数据的读取和更新操作,为企业业务的实现提供便利。
泛微公式引擎还提供了丰富的函数库,支持各种常用的数学、逻辑、字符串处理等函数。
在Java开发中,我们可以通过简单的函数调用,实现数据的格式化、转换、计算等操作。
我们可以通过调用日期函数获取当前时间、计算日期间隔等;也可以通过字符串处理函数实现字符串的拼接、分割等操作。
这些函数的丰富性和便捷性,为我们在开发中提供了很大的帮助。
泛微公式引擎还支持自定义函数的扩展,可以根据业务需求自定义各种函数,扩展公式引擎的功能。
泛微表单建模二次开发案例

1.根据建模数据定时创建流程每个月初触发客户回访记录流程package weaver.formmode.apps;import java.util.ArrayList;import java.util.List;import weaver.conn.RecordSet;import weaver.file.Prop;import weaver.general.BaseBean;import weaver.general.Util;import weaver.hrm.resource.ResourceComInfo;import weaver.interfaces.schedule.BaseCronJob;import weaver.soa.workflow.request.MainTableInfo;import weaver.soa.workflow.request.Property;import weaver.soa.workflow.request.RequestInfo;import weaver.soa.workflow.request.RequestService;import com.weaver.formmodel.util.DateHelper;/*** 每个月初定时创建客户回访信息* @author mc*/public class CreateWorkflowJob extends BaseCronJob {private BaseBean beseBean = new BaseBean();public void execute() {//chuaString workflowid = Prop.getPropValue("kh", "workflowid");// 流程创建人String createor = Prop.getPropValue("kh", "createid");RecordSet rs = new RecordSet();rs.executeQuery("select * from uf_khinfo ");while(rs.next()){String gsmc = Util.null2String(rs.getString("gsmc"));String khmc = Util.null2String(rs.getString("khmc"));String khjl = Util.null2String(rs.getString("khjl"));ResourceComInfo rci = null;try {rci = new ResourceComInfo();} catch (Exception e1) {e1.printStackTrace();}String khmcName = rci.getLastname(khmc);String topTitle = gsmc+"-"+khmcName+"("+ DateHelper.getCurrentMonth() +")"; // 创建流程RequestService requestService = new RequestService();RequestInfo requestInfo = new RequestInfo();requestInfo.setWorkflowid(workflowid);//流程类型idrequestInfo.setCreatorid(createor);//创建人requestInfo.setDescription(topTitle);//设置流程标题requestInfo.setRequestlevel("0");//0 正常,1重要,2紧急requestInfo.setIsNextFlow("1");//流转到下一节点0:不自动流程其它:自动流程MainTableInfo mainTableInfo = new MainTableInfo();List<Property> fields = new ArrayList<Property>();Property field = null;/*** 主表* 格式:* {* rwmc: '任务名称-001',* rwfzr: '杨文元',* ksrq: '2019-08-08',* }*/field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("khmc");field.setValue(gsmc);fields.add(field);field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("fzr");field.setValue(khmc);fields.add(field);Property[] fieldarray = (Property[]) fields.toArray(new Property[fields.size()]); mainTableInfo.setProperty(fieldarray);requestInfo.setMainTableInfo(mainTableInfo);int newrequestid = 0;try {newrequestid = Util.getIntValue(requestService.createRequest(requestInfo));} catch (Exception e) {e.printStackTrace();}beseBean.writeLog("创建成功的流程requestid:"+newrequestid);}}}配置文件2.建模中代码创建附件/*** 从网络上抓取文件存入系统中* @param modeid* @param userid* @param fileurl* @param filename* @return*/public int buildFile(int modeid,int userid,String fileurl,String filename) {RecordSet rs = new RecordSet();OutputStream os = null;ZipOutputStream filezipOut = null;InputStream source = null;int retDocid = 0;boolean needzip = false;try {SystemComInfo syscominfo = new SystemComInfo();String createdir = FileUpload.getCreateDir(syscominfo.getFilesystem());if( (syscominfo.getNeedzip()).equals("1") ) needzip = true ;FileManage.createDir(createdir) ;DefaultFileRenamePolicy defpolicy = new DefaultFileRenamePolicy() ;String refilename = weaver.general.Util.getRandom();String filepath = createdir+refilename;if(needzip) filepath+=".zip";java.io.File outfile = new java.io.File(filepath);outfile = defpolicy.rename(outfile);String iszip = "1" ;if(needzip){filezipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outfile)));filezipOut.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法filezipOut.putNextEntry(new ZipEntry(refilename)) ;//正文只能是WORD文档os = filezipOut ;}else{os = new BufferedOutputStream(new FileOutputStream(outfile)) ;iszip = "0";}//通过HTTP方式获取文件URL url = new URL(fileurl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();BufferedInputStream input = new BufferedInputStream(conn.getInputStream());long filesize = 0;byte[] buffer = new byte[1024];int count = 0;while ((count = input.read(buffer)) > 0) {os.write(buffer, 0, count);filesize++;}os.flush();if(os!=null) os.close();if(filezipOut!=null) filezipOut.close();if(input!=null) input.close();//以下将文件放至IMAGEFILE表中int imageid = 0;String imagefileused = "1"String isencrypt = "1" ;String originalfilename = filename;//原始文件名String contenttype = "HTTP";char separator = Util.getSeparator() ;imageid=imageFileIdUpdate.getImageFileNewId();String para = ""+imageid + separator + originalfilename + separator+ contenttype + separator + imagefileused + separator + filepath + separator+ iszip + separator + isencrypt + separator + filesize ;rs.executeProc("ImageFile_Insert",para);//文件FILEID处理DocManagerNoRequest docManagerNoRequest = new DocManagerNoRequest();int maincategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.maincategory"), 0);int subcategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.subcategory"), 0);int seccategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.seccategory"), 0);if(modeid > 0){rs.executeSql("select * from modeinfo where id="+modeid);if(rs.next()){maincategory = Util.getIntValue(rs.getString("maincategory"),0);subcategory = Util.getIntValue(rs.getString("subcategory"),0);seccategory = Util.getIntValue(rs.getString("seccategory"),0);}}//填补文档信息String extname = "";//扩展名String imageFileName = Util.null2String(filename);int tempPos = stIndexOf(".");if (tempPos != -1) {extname = imageFileName.substring(tempPos + 1);}Map dataMap=new HashMap();String docsubject="";if(tempPos==-1) docsubject = originalfilename;else docsubject = originalfilename.substring(0, tempPos);dataMap.put("docsubject",docsubject);dataMap.put("doccreaterid",""+userid);dataMap.put("docCreaterType","1");dataMap.put("maincategory",""+maincategory);dataMap.put("subcategory",""+subcategory);dataMap.put("seccategory",""+seccategory);dataMap.put("fileids",""+imageid);docManagerNoRequest.UploadDocNoRequest(dataMap);retDocid = docManagerNoRequest.getId();//文档IDrs.executeSql("update docdetail setownerid="+userid+",doccreatedate='"+getCurrentDate()+"',doccreatetime='"+getCurrentTime()+"' where id="+retDocid);rs.executeSql("update docdetail set docPublishType='2' where id ="+retDocid);//处理文档共享rs.executeSql("INSERT INTOShareinnerdoc(sourceid,type,content,seclevel,sharelevel,srcfrom,opuser,sharesource)values('"+docManagerNoRequest.getId()+"','1','"+userid+"','10','3','80','"+userid+"','0')");}catch(Exception e) {writeLog(e);} finally {try {if (os != null) os.close();if(filezipOut!=null) filezipOut.close();}catch(Exception e) {writeLog(e);}return retDocid;}}3.甘特图插件<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@include file="./init_wev8.jsp"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>甘特图</title><link rel="stylesheet"type="text/css"href="./core/jquery-ui.css"/><link rel="stylesheet"type="text/css"href="./reset.css"/><link rel="stylesheet"type="text/css"href="./core/jquery-gantt.css"/><script language="javascript"src="/js/datetime_wev8.js"></script><script language="javascript"src="/js/JSDateTime/WdatePicker_wev8.js"></script><script language="javascript"src="/js/ecology8/selectbox/js/jquery.selectbox-0.2_wev8.js"></script> <style type="text/css">body {font-family: tahoma, verdana, helvetica;font-size: 0.8em;padding: 10px;width: 90%;height: 95%;}</style></head><body><div style="padding-bottom:5px;width:400px;">开始日期:<input name="start"id="start"value=""type="hidden"class="wuiDate"_callback="calldate"/> 结束日期:<input name="end"id="end"value=""type="hidden"class="wuiDate" _callback="calldate"/> <input type="button"class="middle e8_btn_top_first"onclick="query()"value="查询"/> </div><div id="ganttChart"></div><br/><br/><div id="eventMessage"></div><script type="text/javascript"src="./core/jquery-1.4.2.js"></script><script type="text/javascript"src="./core/date.js"></script><script type="text/javascript"src="./core/jquery-ui.js"></script><script type="text/javascript"src="./core/jquery-gantt.js"charset="utf-8"></script><script type="text/javascript"src="./data.js"></script><script type="text/javascript">$(function () {//发送ajax 请求数据$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"init"},dataType:"json",success:function(result){for(var i=0;i<result.length ;i++){// 将日期格式转换为毫秒的形式:如“yyyy-MM-dd --> 1221456783545var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}//console.log(result[0].series[1].start.getDate());if(result.length>0){init(result);}}})});function init(ganttData){$("#ganttChart").ganttView({data: ganttData,slideWidth: $(document).width()-400,//右边面板大小behavior: {draggable:false,//禁止拖动// 点击进度条触发事件onClick: function (data) {var msg = "You clicked on an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);window.open("/formmode/view/AddFormMode.jsp?modeId=11&formId=-30&type=0&billid="+data.i d);},onResize: function (data) {var msg = "You resized an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);},onDrag: function (data) {var msg = "You dragged an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);}}});}function query(){//获取到开始日期和结束日期var start = jQuery("#start").val();var end = jQuery("#end").val();if(start=='' && end=='') return;$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"query",start:start,end:end},dataType:"json",success:function(result){jQuery("#ganttChart").empty();for(var i=0;i<result.length ;i++){var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}if(result.length>0){init(result);}}})}function calldate(){ }function stringToDate(dateStr,separator){if(!separator){separator="-";}var dateArr = dateStr.split(separator);var year = parseInt(dateArr[0]);var month;//处理月份为04这样的情况if(dateArr[1].indexOf("0") == 0){month = parseInt(dateArr[1].substring(1));}else{month = parseInt(dateArr[1]);}var day = parseInt(dateArr[2]);var date = new Date(year,month -1,day);return date;}</script></body></html>4.组织架构图插件<html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>组织结构图</title><link rel="stylesheet"href="css/bootstrap.min.css"/><link rel="stylesheet"href="css/jquery.jOrgChart.css"/><link rel="stylesheet"href="css/custom.css"/><link href="css/prettify.css"type="text/css"rel="stylesheet"/><script type="text/javascript"src="prettify.js"></script><script type="text/javascript"src="/formmode/apps/orgchart/css/jquery.min.js"></script> <script type="text/javascript"src="/formmode/apps/orgchart/css/jquery-ui.min.js"></script> <script src="jquery.jOrgChart.js"></script><style>a {text-decoration: none;color: #fff;font-size: 12px;}a:hover {color: red;text-decoration: none;}.jOrgChart.node {width: 120px;height: 50px;line-height: 50px;border-radius: 4px;margin: 0 8px;cursor: pointer;}</style></head><body onload="prettyPrint();"><div id='jOrgChart'style="width: 1900px;height:1000px;overflow-x: auto;margin:0 auto"></div> <script type='text/javascript'>$(function(){//数据返回$.ajax({url: "./data.jsp",//url: "test.json",type: 'GET',dataType: 'JSON',data: {action: 'org_select'},success: function(result){var showlist = $("<ul id='org' style='display:none'></ul>");showall(result.data, showlist);$("#jOrgChart").append(showlist);$("#org").jOrgChart( {chartElement : '#jOrgChart',//指定在某个dom生成jorgchartdragAndDrop : false //设置是否可拖动});}});});function showall(menu_list, parent) {$.each(menu_list, function(index, val) {if(val.childrens.length > 0){var li = $("<li></li>");li.append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").append("<ul></ul>").appendTo(parent);//递归显示showall(val.childrens, $(li).children().eq(1));}else{$("<li></li>").append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").appendTo(parent);}});}</script></body></html>。
泛微表单建模二次开发案例

1.根据建模数据定时创建流程每个月初触发客户回访记录流程package weaver.formmode.apps;import java.util.ArrayList;import java.util.List;import weaver.conn.RecordSet;import weaver.file.Prop;import weaver.general.BaseBean;import weaver.general.Util;import weaver.hrm.resource.ResourceComInfo;import weaver.interfaces.schedule.BaseCronJob;import weaver.soa.workflow.request.MainTableInfo;import weaver.soa.workflow.request.Property;import weaver.soa.workflow.request.RequestInfo;import weaver.soa.workflow.request.RequestService;import com.weaver.formmodel.util.DateHelper;/*** 每个月初定时创建客户回访信息* @author mc*/public class CreateWorkflowJob extends BaseCronJob {private BaseBean beseBean = new BaseBean();public void execute() {//chuaString workflowid = Prop.getPropValue("kh", "workflowid");// 流程创建人String createor = Prop.getPropValue("kh", "createid");RecordSet rs = new RecordSet();rs.executeQuery("select * from uf_khinfo ");while(rs.next()){String gsmc = Util.null2String(rs.getString("gsmc"));String khmc = Util.null2String(rs.getString("khmc"));String khjl = Util.null2String(rs.getString("khjl"));ResourceComInfo rci = null;try {rci = new ResourceComInfo();} catch (Exception e1) {e1.printStackTrace();}String khmcName = rci.getLastname(khmc);String topTitle = gsmc+"-"+khmcName+"("+ DateHelper.getCurrentMonth() +")"; // 创建流程RequestService requestService = new RequestService();RequestInfo requestInfo = new RequestInfo();requestInfo.setWorkflowid(workflowid);//流程类型idrequestInfo.setCreatorid(createor);//创建人requestInfo.setDescription(topTitle);//设置流程标题requestInfo.setRequestlevel("0");//0 正常,1重要,2紧急requestInfo.setIsNextFlow("1");//流转到下一节点0:不自动流程其它:自动流程MainTableInfo mainTableInfo = new MainTableInfo();List<Property> fields = new ArrayList<Property>();Property field = null;/*** 主表* 格式:* {* rwmc: '任务名称-001',* rwfzr: '杨文元',* ksrq: '2019-08-08',* }*/field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("khmc");field.setValue(gsmc);fields.add(field);field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("fzr");field.setValue(khmc);fields.add(field);Property[] fieldarray = (Property[]) fields.toArray(new Property[fields.size()]); mainTableInfo.setProperty(fieldarray);requestInfo.setMainTableInfo(mainTableInfo);int newrequestid = 0;try {newrequestid = Util.getIntValue(requestService.createRequest(requestInfo));} catch (Exception e) {e.printStackTrace();}beseBean.writeLog("创建成功的流程requestid:"+newrequestid);}}}配置文件2.建模中代码创建附件/*** 从网络上抓取文件存入系统中* @param modeid* @param userid* @param fileurl* @param filename* @return*/public int buildFile(int modeid,int userid,String fileurl,String filename) {RecordSet rs = new RecordSet();OutputStream os = null;ZipOutputStream filezipOut = null;InputStream source = null;int retDocid = 0;boolean needzip = false;try {SystemComInfo syscominfo = new SystemComInfo();String createdir = FileUpload.getCreateDir(syscominfo.getFilesystem());if( (syscominfo.getNeedzip()).equals("1") ) needzip = true ;FileManage.createDir(createdir) ;DefaultFileRenamePolicy defpolicy = new DefaultFileRenamePolicy() ;String refilename = weaver.general.Util.getRandom();String filepath = createdir+refilename;if(needzip) filepath+=".zip";java.io.File outfile = new java.io.File(filepath);outfile = defpolicy.rename(outfile);String iszip = "1" ;if(needzip){filezipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outfile)));filezipOut.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法filezipOut.putNextEntry(new ZipEntry(refilename)) ;//正文只能是WORD文档os = filezipOut ;}else{os = new BufferedOutputStream(new FileOutputStream(outfile)) ;iszip = "0";}//通过HTTP方式获取文件URL url = new URL(fileurl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();BufferedInputStream input = new BufferedInputStream(conn.getInputStream());long filesize = 0;byte[] buffer = new byte[1024];int count = 0;while ((count = input.read(buffer)) > 0) {os.write(buffer, 0, count);filesize++;}os.flush();if(os!=null) os.close();if(filezipOut!=null) filezipOut.close();if(input!=null) input.close();//以下将文件放至IMAGEFILE表中int imageid = 0;String imagefileused = "1"String isencrypt = "1" ;String originalfilename = filename;//原始文件名String contenttype = "HTTP";char separator = Util.getSeparator() ;imageid=imageFileIdUpdate.getImageFileNewId();String para = ""+imageid + separator + originalfilename + separator+ contenttype + separator + imagefileused + separator + filepath + separator+ iszip + separator + isencrypt + separator + filesize ;rs.executeProc("ImageFile_Insert",para);//文件FILEID处理DocManagerNoRequest docManagerNoRequest = new DocManagerNoRequest();int maincategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.maincategory"), 0);int subcategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.subcategory"), 0);int seccategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.seccategory"), 0);if(modeid > 0){rs.executeSql("select * from modeinfo where id="+modeid);if(rs.next()){maincategory = Util.getIntValue(rs.getString("maincategory"),0);subcategory = Util.getIntValue(rs.getString("subcategory"),0);seccategory = Util.getIntValue(rs.getString("seccategory"),0);}}//填补文档信息String extname = "";//扩展名String imageFileName = Util.null2String(filename);int tempPos = stIndexOf(".");if (tempPos != -1) {extname = imageFileName.substring(tempPos + 1);}Map dataMap=new HashMap();String docsubject="";if(tempPos==-1) docsubject = originalfilename;else docsubject = originalfilename.substring(0, tempPos);dataMap.put("docsubject",docsubject);dataMap.put("doccreaterid",""+userid);dataMap.put("docCreaterType","1");dataMap.put("maincategory",""+maincategory);dataMap.put("subcategory",""+subcategory);dataMap.put("seccategory",""+seccategory);dataMap.put("fileids",""+imageid);docManagerNoRequest.UploadDocNoRequest(dataMap);retDocid = docManagerNoRequest.getId();//文档IDrs.executeSql("update docdetail setownerid="+userid+",doccreatedate='"+getCurrentDate()+"',doccreatetime='"+getCurrentTime()+"' where id="+retDocid);rs.executeSql("update docdetail set docPublishType='2' where id ="+retDocid);//处理文档共享rs.executeSql("INSERT INTOShareinnerdoc(sourceid,type,content,seclevel,sharelevel,srcfrom,opuser,sharesource)values('"+docManagerNoRequest.getId()+"','1','"+userid+"','10','3','80','"+userid+"','0')");}catch(Exception e) {writeLog(e);} finally {try {if (os != null) os.close();if(filezipOut!=null) filezipOut.close();}catch(Exception e) {writeLog(e);}return retDocid;}}3.甘特图插件<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@include file="./init_wev8.jsp"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>甘特图</title><link rel="stylesheet"type="text/css"href="./core/jquery-ui.css"/><link rel="stylesheet"type="text/css"href="./reset.css"/><link rel="stylesheet"type="text/css"href="./core/jquery-gantt.css"/><script language="javascript"src="/js/datetime_wev8.js"></script><script language="javascript"src="/js/JSDateTime/WdatePicker_wev8.js"></script><script language="javascript"src="/js/ecology8/selectbox/js/jquery.selectbox-0.2_wev8.js"></script> <style type="text/css">body {font-family: tahoma, verdana, helvetica;font-size: 0.8em;padding: 10px;width: 90%;height: 95%;}</style></head><body><div style="padding-bottom:5px;width:400px;">开始日期:<input name="start"id="start"value=""type="hidden"class="wuiDate"_callback="calldate"/> 结束日期:<input name="end"id="end"value=""type="hidden"class="wuiDate" _callback="calldate"/> <input type="button"class="middle e8_btn_top_first"onclick="query()"value="查询"/> </div><div id="ganttChart"></div><br/><br/><div id="eventMessage"></div><script type="text/javascript"src="./core/jquery-1.4.2.js"></script><script type="text/javascript"src="./core/date.js"></script><script type="text/javascript"src="./core/jquery-ui.js"></script><script type="text/javascript"src="./core/jquery-gantt.js"charset="utf-8"></script><script type="text/javascript"src="./data.js"></script><script type="text/javascript">$(function () {//发送ajax 请求数据$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"init"},dataType:"json",success:function(result){for(var i=0;i<result.length ;i++){// 将日期格式转换为毫秒的形式:如“yyyy-MM-dd --> 1221456783545var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}//console.log(result[0].series[1].start.getDate());if(result.length>0){init(result);}}})});function init(ganttData){$("#ganttChart").ganttView({data: ganttData,slideWidth: $(document).width()-400,//右边面板大小behavior: {draggable:false,//禁止拖动// 点击进度条触发事件onClick: function (data) {var msg = "You clicked on an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);window.open("/formmode/view/AddFormMode.jsp?modeId=11&formId=-30&type=0&billid="+data.i d);},onResize: function (data) {var msg = "You resized an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);},onDrag: function (data) {var msg = "You dragged an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);}}});}function query(){//获取到开始日期和结束日期var start = jQuery("#start").val();var end = jQuery("#end").val();if(start=='' && end=='') return;$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"query",start:start,end:end},dataType:"json",success:function(result){jQuery("#ganttChart").empty();for(var i=0;i<result.length ;i++){var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}if(result.length>0){init(result);}}})}function calldate(){ }function stringToDate(dateStr,separator){if(!separator){separator="-";}var dateArr = dateStr.split(separator);var year = parseInt(dateArr[0]);var month;//处理月份为04这样的情况if(dateArr[1].indexOf("0") == 0){month = parseInt(dateArr[1].substring(1));}else{month = parseInt(dateArr[1]);}var day = parseInt(dateArr[2]);var date = new Date(year,month -1,day);return date;}</script></body></html>4.组织架构图插件<html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>组织结构图</title><link rel="stylesheet"href="css/bootstrap.min.css"/><link rel="stylesheet"href="css/jquery.jOrgChart.css"/><link rel="stylesheet"href="css/custom.css"/><link href="css/prettify.css"type="text/css"rel="stylesheet"/><script type="text/javascript"src="prettify.js"></script><script type="text/javascript"src="/formmode/apps/orgchart/css/jquery.min.js"></script> <script type="text/javascript"src="/formmode/apps/orgchart/css/jquery-ui.min.js"></script> <script src="jquery.jOrgChart.js"></script><style>a {text-decoration: none;color: #fff;font-size: 12px;}a:hover {color: red;text-decoration: none;}.jOrgChart.node {width: 120px;height: 50px;line-height: 50px;border-radius: 4px;margin: 0 8px;cursor: pointer;}</style></head><body onload="prettyPrint();"><div id='jOrgChart'style="width: 1900px;height:1000px;overflow-x: auto;margin:0 auto"></div> <script type='text/javascript'>$(function(){//数据返回$.ajax({url: "./data.jsp",//url: "test.json",type: 'GET',dataType: 'JSON',data: {action: 'org_select'},success: function(result){var showlist = $("<ul id='org' style='display:none'></ul>");showall(result.data, showlist);$("#jOrgChart").append(showlist);$("#org").jOrgChart( {chartElement : '#jOrgChart',//指定在某个dom生成jorgchartdragAndDrop : false //设置是否可拖动});}});});function showall(menu_list, parent) {$.each(menu_list, function(index, val) {if(val.childrens.length > 0){var li = $("<li></li>");li.append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").append("<ul></ul>").appendTo(parent);//递归显示showall(val.childrens, $(li).children().eq(1));}else{$("<li></li>").append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").appendTo(parent);}});}</script></body></html>。
泛微OA ecology 二次开发实例 开发完整说明

二次启垦训练文档之阳早格格创做一、ECOLOGY系统框架结构1、主要的步调结构EcologyClassbean 存搁编译后的CLASS文献 js 系统中使用的JAVASCRIPT战VBSCRIPT足本Css 系统中JSP页里使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存搁目录CrmWorkflow 该功能分文献夹存搁每个功能的文献WEB-INFProp 系统摆设文献存搁Service 系统的交心摆设文献的存搁二、证明一个JSP页里,一个JAVA步调的基础组成,怎么样阅读JSP页里1、一个jsp页里常常需要包罗什么真质2、怎么样阅读一个JSP页里由于ECOLOGY系统收援多谈话,果此正在JSP页里上普遍不出现华文,局部使用标签的形式去隐现华文:比圆:正在IE上隐现“姓名”那么正在JSP页里中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>那样的形式去表示,其中的数字413便是表示姓名,共时不妨通过“select labelname fromhtmllabelinfo where indexid=413 and languageid=7”去获与到“姓名”那个隐现称呼,其中languageid=7表示华文隐现称呼,languageid=8表示英文隐现称呼.delete from HtmlLabelIndex where id=81249delete from HtmlLabelInfo where indexid=81249INSERT INTO HtmlLabelIndex values(81249,'采用范畴')INSERT INTO HtmlLabelInfo VALUES(81249,'采用范畴',7)INSERT INTO HtmlLabelInfoVALUES(81249,'Range of choice',8)INSERT INTO HtmlLabelInfo VALUES(81249,'選擇範圍',9)3、JAVA步调的基础组成正在ECOLOGY中启垦JAVA步调修议继启.BaseBean,正在BaseBean中主要启拆了二个要领:写日志文献,获与摆设文献中的参数值.public String getPropValue(String fname , String key)public void writeLog(Object obj)三、页里权力统造的证明,何如正在页里中引用权力,怎么样新删一个权力,怎么样正在新启垦的模块上引进权力统造正在那一部分将形貌:新删的页里怎么样脆持战ECOLOGY的风格脆持普遍;新删的页里上引用ECOLOGY中的权力;新删的页里上引用新的ECOLOGY中还不的权力;1、不妨根据<泛微协共商务系统(Ecology)_JSP式样编写指北>包管新启垦的页里正在风格上战本有系统脆持普遍2、引用系统中的权力最先从系统的权力树坐中找到需要引用的权力称呼,如下如找到“天面典型维护”那个权力,其ID为41,而后通过“select rightdetailfrom systemrightdetail where rightid=41”得到其rightdetail=“AddAddressType:Add”,那么正在JSP页里中通过如下语句,便不妨使得惟有的“天面典型维护”那个权力用的用户不妨查看该页里<% if(!HrmUserVarify.checkUserRight("AddAddressType:Add ", user) ) {response.sendRedirect("/notice/noright.jsp");return;}%>3、新删新的权力统造新功能的查看四、系统的人员构造结构的介绍1、主要数据结构2、怎么样从慢存中获与人员疑息(对付三个慢存的简朴介绍)五、对付过程,文档数据的存搁证明(主数据,明细数据,普遍疑息等正在数据库中怎么样存搁,主要为了思量报表的问题)1、文档的主要数据结构文档疑息的主要保存表DOCDETAIL:文档疑息保存表,主要存搁文档的基础疑息DOCDETAILCONTENT: 文档真质存搁表(如果是ORACLE数据库,如果文档的典型是HTML文档,那么文档真质存搁正在该表中,SQLSERVER数据库不必该表)DOCIMAGEFILE:文档,附件闭联表,此表记录文档战附件(WORD,EXCEL要领文档正在数据库中依照附件要领存搁)的闭系(即一个文档闭联了几个附件)IMAGEFILE:附件路径存搁表,此表记录了文档的附件(大概者WORD,EXCE)存搁正在文献服务器上的位子DOCSHARE:文档共享表SHARINNERDOC:文档共享明细表,此表存搁了该表简直共享给那些用户了2、过程的主要数据结构那里主要介绍过程的数据存搁结构及如果通过过程典型获与到过程的字段疑息,过程的载体分为表单战票据二类,表单战票据的辨别正在于:所有使用表单的过程数据存搁正在共一个表中,而票据每个票据对付应着一弛独力的数据表1、表单一、对付于表单而止过程的数据疑息存搁正在三个数据表中Workflow_requestbase:该表存搁了过程的基础疑息:题目,创修人,创修时间,过程典型等等Workflow_form:该表保存了过程的简直疑息通过REQUESTID字段战Workflow_requestbase表闭联Workflow_formdetail:该表存搁了过程的明细疑息,共样通过REQUESTID字段战Workflow_requestbase表闭联二、通过过程的典型怎么样获与该过程使用了Workflow_form战Workflow_formdetail表中哪些字段正在Workflow_form战Workflow_formdetail 表中存搁了洪量字段,所有使用表单的过程的字段皆正在那二个表中,怎么样获与每个过程使用了那些字段呢?A、找到过程的典型ID,假定为wfidB、找到过程用了哪个表单select formidfromworkflow_base where id=wfid andisbill=’0’C、赢得该表单用到了哪些主字段:select(select fieldlablefrom workflow_fieldlable where workflow_fieldlable.fieldid=workflow_formfield.fieldidandlangurageid=7and workflow_fieldlable.formid=workflow_formfield.formid)asname,(select fieldnamefrom workflow_formdict whereid=fieldid)from workflow_formfield where formid=上头获与的FORMID and (isdetail is null orisdetail=’’)哪些明细字段:select(select fieldnamefrom workflow_formdictdetail whereid=fieldid)from workflow_formfield where formid=上头获与的FORMID and isdetail=’1’2、票据对付于表单而止过程的数据疑息存搁正在三个数据表中Workflow_requestbase:该表存搁了过程的基础疑息:题目,创修人,创修时间,过程典型等等Workflow_form:该表只存搁Workflow_requestbase战票据表之间的闭系疑息各票据主表:该表保存了过程的简直疑息通过REQUESTID字段战Workflow_requestbase表闭联,怎么样获与该表呢:A、找到过程的典型ID,假定为wfidB、找到过程用了哪个票据select formidform workflow_base where id=wfid andisbill=’1’C、通过票据ID不妨获与到该票据使用的字段Select * from workflow_billfield wherebillid=formidD、通过票据ID找到其用了那个表保存过程主疑息,那个表保存过程明细疑息select tablename from workflow_bill whereid=formidselect tablenamefrom workflow_billdetailtable whereid=formid各票据主明细表:该表存搁了过程的明细疑息,共样通过REQUESTID字段战Workflow_requestbase表闭联3、过程的其余疑息表结构过程处理人情况表Workflow_currentoperator:此表保存了过程目前已收配者,已收配者等疑息workflow_requestlog 过程处理意睹表:此表保存了过程处理人处理过的审批意睹六、系统已经有可启垦的交心的训练1、短疑交心不妨通过该交心真止其余短疑网闭大概者硬件短疑设备举止正在OA中收收短疑的收配2、单面登录交心ECOLOGY提供了通过用户映射战模拟其余系统登录窗体的办法真止多系统之间的单面登录交心3、过程节面前后附加收配action交心4、自定义欣赏按钮5、过程webservice交心6、人力资材webservices交心7、文档webservice交心七、Html模式的过程应用八、几个时常使用的下层类的证明最基础的下层类,数据库收配类,上传下载文献,怎么样构修慢存,基础的工具类。
泛微OA-ecology-二次开发实例-开发完整说明.doc

二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JA V ASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录CrmWorkflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JA V A程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.delete from HtmlLabelIndex where id=81249delete from HtmlLabelInfo where indexid=81249INSERT INTO HtmlLabelIndex values(81249,'选择范围')INSERT INTO HtmlLabelInfo VALUES(81249,'选择范围',7)INSERT INTO HtmlLabelInfo VALUES(81249,'Range of choice',8)INSERT INTO HtmlLabelInfo VALUES(81249,'選擇範圍',9)3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
泛微OA与用友NC集成案例——万达集团

泛微OA与用友NC集成案例——万达集团
概述
大连万达集团创立于1988年,已形成商业地产、高级酒店、文化产业、连锁百货、旅游度假五大产业,企业资产1400亿元,年销售额800亿元,年纳税95亿元。
万达集团已在全国开业33个万达广场、15家五星级酒店、600块电影银幕、26家连锁百货店、30家量贩KTV。
计划到2012年,企业资产2000亿元,年销售额1200亿元,年纳税200亿元,成为世界级的企业。
万达集团04年开始着手进行系统化的信息化建设规划,当时万达在全国各地的分支机构已经进入高速扩张时期,由于总部和分支机构信息之间的不能共享,信息不透明、信息不对称、信息沟通不及时等信息孤岛问题开始滋生,同时信息沟通、流程审批上的不规范性使得总部往往在事情发生后才意识到存在的一些问题,高管们俨然成了“救火”超人……如何实现无障碍的沟通和精细化管理,如何借助信息化打破信息孤岛、促进组织协同成为万达信息化规划的一项重要内容。
集成应用介绍
HR数据同步:实现公司档案、部门档案、人员档案、岗位档案、职务档案等相关数据的同步
集成登录:通过泛微协同OA自动登录NC ERP系统中
流程数据驱动:通过协同OA流程驱动,自动获取NC中的数据在协同OA系统内进行审批、审批后传递到NC中。
泛微系统与SAP系统集成方案实例

泛微系统与SAP系统集成方案实例
案例分析—金田集团
集成前存在的问题
1. 企业已经上了SAP三年,但发现大量的流程还需要手工 填写流转,大大影响了SAP的使用效率
2. 虽然采用SAP来管理公司财务,但是费用报销类事务无 法实现电子化
3. 虽然采用SAP来管理人力资源,但是限于SAP的功能各 项人事流程依然采用手工流转
集成实例展示:电子出厂单流程
成品出厂单由出库操作员发起并填写车牌号号; OA系统根据车牌号从SAP中带出业务类型,出厂公司、客户名称、装车数量信息; 流程审批通过后在归档之前需要修改SAP中的状态;
泛微系统与SAP系统集成方案实例
案例分析—金田集团
集成实例展示:成品销售订单转换审批流程
销售人员提交销售订单号转换需求, OA审批之后调用SAP接口,执行SAP中的命令修改订单号;
流程集成 集成代理
协同 知识管理
业务流程管理
应用平台集成
J2EE
.net
DB 和 OS
ABAP
企业集成总线
… 泛微协同OA流程引擎
泛微系统与SAP系统集成方案实例
典型案例分析—金田集团
宁波金田新材料有限公司成立于1995年,是宁波金田铜业(集团)股份 有限公司控股下独立经营的专业漆包线生产商,拥有自营进出口经营权, 2006年漆包线年产量达到20000吨。宁波金田铜业(集团)股份有限公司是 一家以铜冶炼加工为主的全国大型企业,集团公司创建于1986年,经过短短 20年的发展,形成了铜加工制造、金属贸易、房地产三大产业并进及资本运 营与实业经营良性互动的产业格局,以其七十万平方米的占地面积,5000余 人的生产规模,46亿元的资产总额、220亿元的年产销量,昂首迈入中国企 业500强之列,当之无愧地成为中国最大规模地铜加工产业基地和全球最具 竞争力和挑战力地铜加工企业之一。同时也是中国再生铜利用量最大、利用 水平最高的企业,年再生铜利用量超过40万吨,成为中国铜加工行业循环经 济的引领者。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
泛微开发案例
泛微开发案例:
1. 企业内部流程管理系统
在企业内部,存在着大量的流程,包括请假、报销、采购等。
泛微开发可以帮助企业建立一个流程管理系统,实现流程的自动化、标准化和监控。
员工可以通过系统提交请假、报销等申请,并在系统中跟踪处理进度。
管理人员可以通过系统进行审批、调整和统计分析。
这样可以提高企业流程的效率和透明度。
2. 客户关系管理系统
泛微开发可以帮助企业搭建客户关系管理系统,实现对客户信息的统一管理和跟踪。
系统可以记录客户的基本信息、联系记录、购买历史等,帮助销售人员更好地了解客户需求,提供个性化的服务。
同时,系统还可以通过数据分析,帮助企业发现潜在客户和市场机会。
3. 人事管理系统
泛微开发可以实现一个人事管理系统,帮助企业管理员工的基本信息、薪资福利、考勤等。
员工可以通过系统查询自己的薪资、假期等信息,申请加班、调休等。
管理人员可以通过系统进行员工考勤、薪资发放等操作。
这样可以提高人事管理的效率和准确性。
4. 项目管理系统
在企业的项目管理过程中,存在着大量的文档、任务和进度需要协调和管理。
泛微开发可以帮助企业搭建一个项目管理系统,实现对项目的计划、任务、文档等的集中管理。
团队成员可以通过系统查看任务分配、上传文档、汇报进度等。
项目经理可以通过系统进行任务分配、跟踪进度等操作,提高项目管理的效率和可控性。
5. 内部知识管理系统
在企业内部存在着大量的知识和经验需要传承和共享。
泛微开发可以帮助企业建立一个内部知识管理系统,实现对知识的收集、整理、存储和分享。
员工可以通过系统搜索和浏览相关知识,避免重复劳动和错误。
同时,系统还可以通过数据分析,帮助企业发现知识的价值和利用方式。
6. 供应链管理系统
在企业的供应链中,存在着大量的物流、仓储、订单等环节需要协调和管理。
泛微开发可以帮助企业搭建一个供应链管理系统,实现对供应链的全流程跟踪和协同。
供应商、仓库、物流公司等各方可以通过系统实时交换信息,提高供应链的效率和可靠性。
企业可以通过系统进行供应链的数据分析和优化,提升整体运营水平。
7. 审计管理系统
在企业的审计过程中,存在着大量的数据分析、报告撰写和审查等工作。
泛微开发可以帮助企业搭建一个审计管理系统,实现对审计
过程的规范和监控。
审计人员可以通过系统进行数据分析、报告撰写和审查等操作,提高审计的效率和准确性。
管理人员可以通过系统监控审计进度和结果,提升审计的可控性和价值。
8. 质量管理系统
在企业的质量管理过程中,存在着大量的质检、异常处理和改进措施等环节需要协调和管理。
泛微开发可以帮助企业搭建一个质量管理系统,实现对质量过程的控制和改进。
员工可以通过系统提交质检记录、异常处理申请等,管理人员可以通过系统进行审批和跟踪。
同时,系统还可以通过数据分析,帮助企业发现质量问题的根源和改进方向。
9. 销售管理系统
在企业的销售过程中,存在着大量的销售机会、合同和销售数据需要协调和管理。
泛微开发可以帮助企业搭建一个销售管理系统,实现对销售过程的跟踪和分析。
销售人员可以通过系统记录销售机会、合同和销售数据,管理人员可以通过系统进行销售计划和业绩分析。
这样可以提高销售管理的效率和精准度。
10. 知识产权管理系统
在企业的知识产权保护过程中,存在着大量的知识产权申请、维权和管理工作。
泛微开发可以帮助企业搭建一个知识产权管理系统,实现对知识产权的全流程管理。
员工可以通过系统提交知识产权申
请、维权请求等,管理人员可以通过系统进行审批和监控。
同时,系统还可以通过数据分析,帮助企业发现知识产权的价值和保护策略。
以上是泛微开发案例的一些示例,涵盖了企业内部流程管理、客户关系管理、人事管理、项目管理、内部知识管理、供应链管理、审计管理、质量管理、销售管理和知识产权管理等方面。
这些案例都可以根据企业的具体需求进行定制开发,帮助企业提高管理效率和竞争力。