1.概要
.直接从vss抽取生成文件.数据不需要保存在本地数据库中.
.实现方案见"HRWJ-EDI接口方案及实现"文档
.程序位置:
\\192.168.1.22\临时存储\hrwj_edi\server
.关于数据环境
基于MSCM环境,需要做以下更新(oracle):
alter table tb_0044 add f022b_0044 blob;
alter table tb_0044 add f023n_0044 int default 1;
alter table tb_1126 add f013n_1126 int default 1;
alter table tb_5606 add f023n_5606 int default 1;
edi_oracle.sql是Oracle脚本,包括新建的tb_2851,tb_2853及v_log需要的表及Trigger和Sequence
edi_mysql.sql是对应的MySQL脚本.
SQL脚本位于SVN的“workdb\document\设计文档\EDIZone\hrwj”目录下.
.调试数据
-- 增加过滤条件
insert into tb_2853(buid,mis_id,f001n_2853,f002d_2853) values('18','V00001',10501,TO_DATE('2013-10-10','yyyy-MM-dd'));
insert into tb_2853(buid,mis_id,f001n_2853,f002d_2853) values('18','V00001',10502,TO_DATE('2013-10-10','yyyy-MM-dd'));
-- 增加供应商GLN
insert into tb_2851(buid,mis_id,gln,f001v_2851) values('18','V00011','1234567890123','测试供应商1');
insert into tb_2851(buid,mis_id,gln,f001v_2851) values('18','BC0534','3134567890123','测试供应商2');
.部署时从192.168.3.104的环境导出
.特别注意事项:
---如果单据不需要本地保存(如没有相应表,则单据类型属性设置为"不自动保存"--f013n_0044)
---抽取规则的供应商字段必须配置成:buid,venderid (有顺序要求) ---在平台模式下,每个机构的供应商ID是单一项可以唯一确定的,对于分区情况用二者的组合表示
2.配置
2.1 hotfox.conf
<!-- 调试使用的连接 -->
<database encrypted_password="false">
<conn constr="Provider=MSDASQL.1;Password=???;Persist Security Info=True;User ID=mscm_app;Data Source=edi_app" count="20" name="laton" db_ext="oracle_ext.dll"/>
<conn constr="Provider=MSDASQL.1;Password=???;Persist Security Info=True;User ID=vss;Data Source=edi_app" count="20" name="vss_db" db_ext="oracle_ext.dll"/>
</database>
<!--需要加载的插件 -->
<plugin>
<dll path="ivap.dll"/>
<dll path="bbox.dll"/>
<dll path="lm.dll"/>
<dll path="svrm.dll"/>
<dll path="dd.dll"/>
<dll path="dxi_hrwj_task.dll"/>
<dll path="v_log.dll"/>
</plugin>
2.2 bbox.conf
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<config>
<dbc>laton</dbc>
<enable_semq>false</enable_semq> <!-- 是否启用SEMQ-->
</config>
2.3 dd.conf
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<config>
<src_dbc>
<default>vss_db</default>
<!--默认数据库连接名,未指定数据库连接名的规则用此连接-->
</src_dbc>
<dbc>laton</dbc>
<dxi_mode>2</dxi_mode> <!-- dxi模式 1-平台模式 2-企业模式 -->
<check_rule>false</check_rule> <!--是否校验规则 -->
</config>
2.4 lm.conf
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<config>
<dbc>laton</dbc>
<dxi_mode>2</dxi_mode> <!--dxi模式 1-平台模式 2-企业模式 -->
</config>
2.5 dxi_hrwj_task.conf
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<config>
<dbc>laton</dbc>
<vss_db><!-- VSS源数据库,支持多个数据源-->
<item>
<name>vss_db</name>
<buid>18</buid>
</item>
</vss_db>
<tmp_vss_db>vss_db</tmp_vss_db> <!-- 中间库或者仅用于提供模式信息的任一vss_db-->
<schema_name></schema_name>
<!-- 任务表名称 -->
<task_table_name>EDITASKLIST</task_table_name>
<!-- 任务键值表名称 -->
<task_key_table_name>EDITASKKEY</task_key_table_name>
<task_scan_interval>20</task_scan_interval> <!-- 任务记录表扫描间隔(单位:秒) 默认:30-->
<task_schedule>
<mode>2</mode>
<task_handler>
<item>21</item>
</task_handler>
</task_schedule>
<output_path>D:\EDIZone\server\data</output_path> <!--接口文件输出目录 -->
<!--单据类型对照-->
<bill_type_code_map>
<item>
<id>60001050</id> <!-- 单据类型 -->
<code>PO</code> <!-- 标准编码 -->
</item>
</bill_type_code_map>
<task_data_map> <!-- 任务类型和单据类型映射配置-->
<item>
<taskid>21</taskid> <!--订单-->
<use_tmp_db>false</use_tmp_db> <!--是否使用中间临时库,默认:false -->
<dd_mode>2</dd_mode> <!-- 抽取方式 1-通过tb_change_log 2-直接调用dd -->
<dd_rule_id>10501</dd_rule_id> <!--抽取规则ID,仅当dd_mode=2时 -->
<script>
1;60001050;60001051;10501;10502 <!-- 订单是特殊处理的,1是处理方式编码 -->
</script>
<filter>
<enable>true</enable> <!--是否启用过滤,默认:false -->
</filter>
<task_define> <!-- 每个任务的定义-->
<tables>
<table>
<name>purchase0</name>
<field>*</field> <!--select字段名 *表示全部 -->
</table>
<table>
<name>purchase</name>
<field>*</field> <!--select字段名 *表示全部 -->
</table>
<table>
<name>purchaseitem</name>
<field>*</field> <!--select字段名 *表示全部 -->
</table>
</tables>
<relations> <!-- 关系描述-->
<relation>purchase0.SHEETID=purchase.REFSHEETID</relation>
<relation>purchase.SHEETID=purchaseitem.SHEETID</relation>
</relations>
</task_define>
</item>
</task_data_map>
</config>
其中:
<dd_rule_id>10501</dd_rule_id>
<script>
1;60001050;60001051;10501;10502
</script>
假设在MSCM中的顺序是直送(配送),直通订单。
<script>是针对订单的特殊处理,示例中用分号(;)分隔的各项含义:
1-处理方式编码,固定
60001050-直送(配送)订单对应的本地单据类型
60001051-直通订单对应的本地单据类型
105101-直送(配送)订单对应的抽取规则
10502-直通订单对应的抽取规则
在指定<script>时,不需要抽取规则配置,因为通过tb_chagne_log是根据单据类型映射抽取规则的.
<dd_rule_id>仅在<dd_mode>为2且没有<script>时才需要配置.
2.6 10501抽取规则
从MSCM修改而来.
.单据类型设置为:不自动发送。(SEMQ未启用)
---是否要buid的名称
---中间库有bu_info,但vss并没有
以下是修改前后的差异对比.
(1) 原来的配置(通过中间库)
---主表抽取语句
select a.sheetid||'_'||a.logistics,a.buid,b.buname,a.logistics,(case a. logistics when 1 then '?±?í??μê' when 3 then '?±?íDC' end )
Logistics_name , a.buid||'_'||a.destshopid,c.shopname,a.venderid,d.vendername, a. orderdate,a.orderdate + a.validdays - 1,
a. EDITOR,a. EDITDATE,a. CHECKER,a. CHECKDATE,sysdate,a. NOTE, a.buid||'_'||a.sgroupid,a.buid||'_'||a.venderid,a.sheetid from
Purchase a left join bu_info b on a.buid=b.buid left join shop c on (a.buid=c.buid and a.destshopid=c.shopid) left join
vender d on (a.buid=d.buid and a.venderid=d.venderid) where a.logistics<>2
---明细表抽取语句
Select a.buid||'_'||a.goodsid,a.barcode,b.goodsname,b.spec,'1??='||a.pkgvolume||'('||b.unitname||')' as transport_format,a.QTY,
trunc(a.qty/a.pkgvolume) as pkqty,
a.COST,round(a.qty*a.cost,2),b.unitname,
a.qty||'('|| b.unitname||')'
from purchaseitem a left join goods b on (a.goodsid=b.goodsid
and a.buid=b.buid) left join purchase c on (a.sheetid=c.sheetid
and a.buid=c.buid)
where a.sheetid='%s' and a.buid='%s' and c.logistics=%s
---主键字段
SHEETID,BUID,LOGISTICS
---供应商字段
BUID,VENDERID
(2)修改后的配置
---主表抽取语句
select a.sheetid||'_'||a.logistics,@buid as buid,'' as buname,a.logistics,(case a. logistics when 1 then '?±?í??μê' when 3 then '?±?íDC' end ) Logistics_name ,
@buid||'_'||a.destshopid,c.shopname,a.venderid,d.vendername, a. orderdate,a.orderdate + a.validdays - 1, a. EDITOR,a. EDITDATE,a. CHECKER,a. CHECKDATE,sysdate,a. NOTE, @buid||'_'||a.sgroupid,@buid||'_'||a.venderid,a.sheetid
from Purchase a
left join shop c on (a.destshopid=c.shopid)
left join vender d on (a.venderid=d.venderid)
---明细抽取语句
Select @buid||'_'||a.goodsid,a.barcode,b.goodsname,b.spec,'1??='||a.pkgvolume||'('||b.unitname||')' as transport_format,a.QTY,
trunc(a.qty/a.pkgvolume) as pkqty,
a.COST,round(a.qty*a.cost,2),b.unitname,
a.qty||'('|| b.unitname||')'
from purchaseitem a left join goods b on (a.goodsid=b.goodsid
) left join purchase c on (a.sheetid=c.sheetid
)
where a.sheetid='%s'
---主键字段
SHEETID,BUID,LOGISTICS
---供应商字段
BUID,VENDERID
3.生成的文件样例
文件名称:3134567890123_PO_20131012022239171.txt
内容:
HEAD A0HG201309270001_1 18 1 直送门店 18_A0HG 盛世名门便利店 BC0534 深圳市鑫欣威食品有限公司 2013-09-27 2013-09-28 张月 2013-09-27 张月 2013-09-27 2013-10-12 02:22:36 订单进价仅做参考,实际进价以验收时的进价为准 18_5 18_BC0534 A0HG201309270001
DETAIL 18_434345 2143434500000 豆沙包60g 60g 1??=12(包) 1 0 9.96 9.96 包 1(包)
DETAIL 18_434348 2143434800001 紫薯包60g 60g 1??=12(包) 1 0 11.52 11.52 包 1(包)
DETAIL 18_440732 2144073200009 四海高级川辣鱼蛋128粒 128粒 1??=1(包) 1 1 80.77 80.77 包 1(包)
DETAIL 18_528024 2152802400002 豆腐串1*1*1 1*1*1 1??=1(包) 2 2 19.6 39.2 包 2(包)
DETAIL 18_551480 2155148000004 五丰猪红(盒装)500g 500g 1??=1(盒) 3 3 3 9 盒 3(盒)
DETAIL 18_718014 2171801400004 墨鱼烧400g(1包*22粒) (1包*22粒) 1??=1(包) 2 2 11.5 23 包 2(包)
DETAIL 18_1129315 6936167200943 鑫欣威烤鱼棒2.5kg 2.5kg 1??=4(包) 1 0 66.6 66.6 包 1(包)
DETAIL 18_1292075 6932397920125 安井撒尿肉丸(114粒)2500g 2500g 1??=4(袋) 1 0 65.46 65.46 袋 1(袋)
DETAIL 18_1292077 6936167200547 福祺墨鱼棒(58条)2500g 2500g 1??=4(袋) 1 0 69.31 69.31 袋 1(袋)
4.关于软件包
服务器程序文件包含: (有部分保留和不确定的模块未被完全清理)
aced.dll
bbox.conf
bbox.dll
bbox.pr
BillInterface.conf
BillInterface.exe
boost_date_time-vc80-mt-gd-1_48.dll
boost_system-vc80-mt-gd-1_48.dll
borlndmm.dll
bugreport.dll
bugreport.exe
cc3260mt.dll
componentinfo.conf
cximagecrtd.dll
dataclear.conf
data_model.dll
dbcplugin.conf
dbcplugin.dll
dbghelp.dll
dd.conf
dd.dll
dxi_change_log.conf
dxi_change_log.dll
dxi_hrwj_task.conf
dxi_hrwj_task.dll
File.dll
ForFa.dll
hotfox.conf
hotfoxd.bat
hotfoxd.exe
informix_ext.dll
ivap.conf
ivap.dll
libbz2.dll
libdb47.dll
libdb47d.dll
libeay32.dll
lm.conf
lm.dll
lssdk.dll
lua.dll
manifest.xml
midas.dll
MSVCRTD.DLL
mtp.conf
mtp.dll
mysql_ext.dll
nframework.dll
oracle_ext.dll
rudp.dll
sheetdicts.xml
sheet_event.conf
sqlserver_ext.dll
ssleay32.dll
stlpmt45.dll
stlportd.5.2.dll
svrm.conf
svrm.dll
sybase_ext.dll
Uninstall.exe
unzdll.dll
update.conf
update.dll
v_log.conf
v_log.dll
Xalan-C_1_10D.dll
XalanMessages_1_10D.dll
xerces-c_2_8D.dll
zlibd.dll
microsoft.vc80.debugcrt
平台模式下的工具适应性如下:
backuptools.exe
---备份工具,无法使用
datacleattool.exe
---数据清理配置工具.
---无法支持oralce,不使用.(以后扩展)
pmanagedlog.exe
---日志工具.不需要,用新的日志机制代替
scimanager.exe
---组件安装程序,不使用
servermanager.exe
---服务管理程序.过于冗余,不使用
vsprocedure.exe
---托管服务器存储过程导入工具,不需要
cm.exe
---组件管理器.不需要
config.exe
---配置工具.不使用