用友时空B/S表单外挂(接口)程序

一、B/S表单接口需求

众所周知,用友时空KSOA支持B/S架构。且移动商务、在线门店,都是完全基于B/S架构的。

B/S架构的优越性在于没有本地客户端和本地数据,实施部署简单且后续维护简单。而劣势则在于与第三方接口很麻烦,特别是需要在本地进行对接时。

例如,POS收款软件,往往需要与医保系统对接,与银联系统对接,这些本地接口,都要求数据实时与第三方系统进行交互,如果是需要中转到远程的总部的服务器才能对接,则往往容易出现网络错误或者数据不及时等。

我们把这种需求总结为:从B/S表单截取数据保存到本地,或者向B/S表单插入数据。

只要外挂程序能解决以上2个需求,那么就可以根据各接口的需要,随心所欲进行数据的对接或转换。

原型:

1、由于时空KSOA提交订单商品数据的页面,是由数据库内置的JS模板进行解析的,也就是说每次打开该页面,都会由数据库重新生成,那么就需要在该数据库的JS模板内嵌入一个拦截器。

拦截器很简单,只是在数据提交处设置一个__bc(a,b), a是订单号,b是点击提交后包含商品数据的SQL插入语句。

2、在设置完拦截器之后,需要在一个全局位置对这个拦截器进行定义,目前项目中利用到的一个全局JS文档是位于“域名/bill/js/toolbar.js”,然后在这个toolbar.js里植入一段JS代码,这段代码起到对拦截器的定义的作用,并使之生效。当然还需要植入一个完成的Tajax,

3、接口“http://127.0.0.1:8877/a”的说明:

在线门店只用到了这一个接口,由于是需要利用本机环境,所以在外挂启动后,开始监听127.0.0.1:8877的请求,当有a接口有请求过来时马上处理,这个接口也只有两个参数,一个是g一个是h,g是一串包含订单商品数据的SQL插入语句,h是订单号,接口在外挂中定义,会自动处理这个接口的请求。

二、外挂程序应用实例:

某广州医药连锁公司在使用用友时空KSOA版本的管理软件,需要与广州市医保对接(苏州创智的医保接口程序)。

需要按医保接口的规范在POS销售时提示v_his_medi与V_HIS_FYMX_TEMP_MZ 两个视图(一个是检索所有商品资料,一个是检索本次收款的商品明细)。该医药连锁公司在KSOA系统中启用了两套POS收款方式,一种是可离线操作的MTPOS收款,一种是在线门店的POS收款。为此,对应不同的收款方式医保接口需要做不同的调整:

A:MTPOS收款系统:在前台门店的电脑是有数据库的,与安装的医保接口程序是同一台电脑,只需要在MTPOS的数据库中建立对应的两个视图,再配置医保接口程序进行读取就可以实现。

B:在线门店的POS收款系统:是B/S架构,在本地没有数据库。需要开发一个外挂程序,来从B/S收款表单中截取到本次的收款数据并保存到本地,同时从总部服务器获取所有商品资料保存到本地,再提供给医保接口检索。因此,需要安装一个POS明细数据提取软件,软件需要安装SQL SERVER 数据库,并能同步生成商品资料与当前POS销售的商品明细,生成医保接口程序需要的两个视图。医保接口程序配置在这个数据库上就可以实现数据读取。

三、外挂程序工作原理:

1、程序包括一个数据库,分别有spkfk 与 tmp_pos_mxls两张表,并建立医保接口视图。

2、程序需要手动更新SPKFK表,更新的内容根据C盘根目录下的【pz2.txt】文档中的时间进行更新,商品更新时间大于该文档内时间的商品才会进行更新,如果要重新下载所有商品,则将该文档内的时间进行清空即可。

3、在线门店POS销售时(用类IE浏览器),点F12结算时,能触发外挂的事件,将当前界面上的商品明细,插入到tmp_pos_mxls表。

四、操作说明:

1、创建数据库:

执行《数据库建表程序.sql》

     2、在总部服务器IIS搭建webservice供门店远程连接

Webservice搭建说明:

(1)、将webserive文件搭建在服务器的IIS上

(2)、设置此webservice的端口

(3)、将此端口对外进行开放(4)、打开web.config进行数据库连接配置,保存即可。

3、将程序中备注文件夹内的三个文件按说明放到C盘的根目录下:

     4、界面说明

打开目录下的xm.exe,显示以上窗口

界面①:

填写本地连接的数据库连接

界面②:

填写远程访问的webservice地址

界面③:

点击【开始更新】则会将webservice链接的商品表进行下载到本地的商品表中。

5、使用步骤说明

(1)、打开外挂程序

(2)、打开在线门店的POS收款界面

(3)、进行零售商品录入

(4)、按F12进行收款

(5)、去创智软件处进行医保商品处理

用友时空B/S表单外挂(接口)程序操作说明文档的更多相关文章

  1. jmeter处理带表单的接口请求

    如何用jmeter处理带选项的表单接口请求 下面是用到了F12 抓包的处理方法 下图是直接手动在页面上请求的结果 下面就是采用F12抓包抓到url 和FormData 分别把上面获取的url和Form ...

  2. js 在表单提交前进行操作

    最近在写页面的时候,需要手动写一些在表单进行提交前的验证操作,正好看到了2种阻止表单提交的方法,可以进行一些逻辑处理 方法一:使用return false 原生js写法: <form id=&q ...

  3. Jquery表单序列化和json操作

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. node-express处理表单的接口

    写一个小接口,用postman测试接口是否可行

  5. 齐博x1如何调试查找全站的表单提交接口参数

    H5.PC.WAP端的所有提交POST表单操作都是可以当作接口来用的. 比如我们通过PC或WAP浏览器打开相应要修改的界面,然后浏览器进入开发者模式,就可以追踪到所提交的变量参数.你在APP里边只要指 ...

  6. Angular2 表单

    1. 说明 表单是Web程序中的重要组成部分,构建良好以及实用的表单必须解决如下几个问题: (1). 如何跟踪及更新表单的数据状态 (2). 如何进行表单验证 (3). 如何显示表单验证信息 Angu ...

  7. 进一步丰富和简化表单管理的组件:form.js

    上文<简洁易用的表单数据设置和收集管理组件>介绍了我自己的表单管理的核心内容,本文在上文的基础上继续介绍自己关于表单初始值获取和设置以及表单数据提交等内容方面的做法,上文的组件粒度很小,都 ...

  8. P​D​F​二​次​开​发​_​i​S​t​y​l​e​P​D​F​表​单​域​的​填​充

    wo讲到PDF表单,我们首先需要认识Adobe定义的PDF表单有哪些.以下是我从网上搜索到的简单介绍: PDF 表单简介 PDF 是可移植文档格式(Portable Document Format)的 ...

  9. HTML 表单和输入<form><input>

    HTML <form> 标签 定义和用法: <form> 标签用于为用户输入创建 HTML 表单. 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. ...

随机推荐

  1. CSS快速入门-鼠标悬浮(hover伪类)

    一.概述 hover伪类:在鼠标移到元素上时向此元素添加特殊的样式.比较普通的就是一个url,当你鼠标放上去后,会变颜色. 在现实的应用场景也非常之多.最常见的是网站的悬浮导航,当鼠标放到导航条上时, ...

  2. springmvc框架开发常用的注解总结

    1.@Controller使用:表示表现层中的JavaBean被spring容器管理.   2.@requestMapping使用: a) 在方法上: 标记url到请求方法的映射, 就相当于从一个ur ...

  3. BLACKPYTHON学习(一)

    C/S结构了解 所谓的C/S就是客户端(client)和服务器端(server)的简称,也就是在基于这个的基础上编写相关的代码:一个就是客户端一个就是服务端. TCP(client) 客户端编写 #因 ...

  4. 【RabbitMQ】三种Exchange模式——订阅、路由、通配符模式

    https://blog.csdn.net/ww130929/article/details/72842234

  5. linux(模糊批量删除文件)删除指定文件夹中某个文件除外的其他文件

    # shopt -s extglob# rm -fr !(file1)如果是多个要排除的,可以这样:# rm -rf !(file1|file2)首先科普下shopt -s extglobBash S ...

  6. UNITY_委托和事件

    UNITY_委托和事件 参考资料: Unity3D脚本编程-使用C#语言开发跨平台游戏-陈嘉栋 观察者模式 主题(Subject)管理某些数据,当主题的数据发生改变时,会通知已经注册(Register ...

  7. if _ else if _ else,case,程序逻辑判断- java基础

    //单个判端 if(){ } //双判端 if(){ }else{ } //多重判端 if(){ }else if(){ }else if(){ }else{ } package test1; // ...

  8. undefined和“undefined”

    说实话,它们之间的区别挺明显的,我们一般认为undefined是JavaScript提供的一个“关键字”,而“undefined”却是一个字符串,只是引号的内容和undefined一样. undefi ...

  9. Swing的概述

    Swing在Java中是一个包,下面就是它的基本概述:简介: Java为了方便图形界面的实现, 专门设计了类库来满足各种各样的图形元素和用户交互事件, 该类库即为抽象窗口工具箱(Abstract Wi ...

  10. JAVA之运算符优先级

    Java运算符优先级从高到低 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 < ...