解忧在线服务平台
  • 手机版
  • 收藏
  • 我的订单
  • 注册
  • 请登录
当前位置: 新闻动态>正文

正火系统对接交互的方法

来源:开发部 时间:2018/5/14 16:45:00
  适用于正火E9\HOT\2008

解忧对接详情




企业后台登录及配置参数登录:


企业配置参数登录页面:http://ef.fstorch.com/company/


数据对接页面:http://ef.fstorch.com/company/guanli_SetingSys.html


解忧系统状态列表:

01新建单据          02企业接单          03师傅接单          04已经阅读          05抵达现场          06已预报价          07开始处理          08遗留等待          

09处理完成          10正在付款          11完成付款          12用户评价          13企业回访          14平台回访          99用户取消


正火系统上传数据到解忧


本地数据列列名,用|分割:

LocalColumns =serviceid|service_name|yhmc|lxdh|yhdz|brandid|gzxx|ktpp|pgdh|ppnrmc|servicename|ktppmc|ktxh|ppnr|self|fwlx|yyrq1|pgwd


解忧平台列列名,用|分割:

RemoteColumns = serviceID|service_Name|contact_name|contact_phone|address|brandID|service_demand|

brand_contentid|record_number|brand_content_name|servicename|brand_name|equipmentname|

equipmentid|record_isself|service_type|reservationdate|record_pgwd  


如果需要上传工厂单号(转移单号和信息来源),需要在

LocalColumns增加 zydh|xxly

RemoteColumns增加 record_number2|record_source

同时在localsql参数中增加zydh,xxly字段。


如果需要上传预约时间、派工网点,需要在

LocalColumns增加 yyrq1|pgwd

RemoteColumns增加reservationdate|record_pgwd

同时在localsql参数中增加yyrq1|pgwd字段。


解忧遗留获取数据到正火


解忧返回数据及对应返回数据含义:

wait_type:遗留类型             wait_typename:遗留类型名称          wait_reason:遗留说明          info_num:解忧单据号          subid:遗留序号          record_table:正火系统表名(da_wxjl/da_azjl)          record_number:正火系统单号          expect_deal_date:解忧预计完工日期


下载类参数配置实例

localupdatewaitsql=update da_wxjl set wwyy1=(case @wait_type when  ‘01‘ then ‘待件‘ when ‘02‘ then ‘用户改约‘ when ‘03‘ then ‘用户不在家‘ when ‘04‘ then ‘其他‘ when ‘05‘ then ‘无法联系‘  end),yyrq1=(case @expect_deal_date  when ‘0000-00-00 00:00:00‘ then null else @expect_deal_date end ),wxzt=‘G‘,wwyy2=@wait_reason where pgdh=@record_number

localupdatewaitparm=wait_type|expect_deal_date|wait_reason|record_number

G为遗留状态




解忧回传下载消息说明

解忧返回数据及返回数据含义:

service_type:服务大类          record_table_status:正火系统表名状态           record_table:正火表名          id:解忧单据号          contact_name:联系人员姓名          equipmentname:规格型号          contact_phone:联系电话          record_number:正火单据号          payment:收费金额          complete_info1:完工信息1          complete_info2:完工信息2          complete_info3:完工信息3          a.status:解忧状态          to_come_time:抵达时间          service_measure:服务措施          service_result:服务结果          engineerid:工程师ID          engineer_name:工程师名称          send_work_time:派工时间          end_time:完工时间          send_work_operator:派工人员          read_time:阅读时          start_time:开始处理时间




上传正火工程师提成信息到解忧2017-6-1

LocalUpdateMoney_Engineer=select a.*,b.jieyoucode,'da_wxjl' record_table from da_wxjl_wxry a,rsgl_jbda b where a.wxry=b.ygbh and a.hdje<>0 and isnull(b.jieyoucode,'')>'' and isnull(a.jieyoustatus,'')<>'1' 


说明:上传提成的查询语句,前提是da_wxjl_wxry表中需要增加jieyoustatus字段,升级语句为:

alter table da_wxjl_wxry add jieyoustatus varchar(1); --增加上传标志字段

update da_wxjl_wxry set jieyoustatus='1' --更改当前所有结算信息标志为已上传状态

上面红色的部分如果localsql参数中包含record_table,则此处也需要,否则此处不需要;


LocalUpdateMoney_Engineer_Columns=hdje|qtf|xsje|zdf|jlf|hdje1|hdje2|hdje3|hdje4

说明:上传工程师提成金额列列名,最多只能上传10列,依次上传至解忧平台的1-10列,列间用|分割;


LocalUpdateMoney_Engineer_SQL=update da_wxjl_wxry set jieyoustatus='1' where pgdh=@pgdh and  wxry=@wxry 

说明:上传工程师信息后更新本地数据库状态


LocalUpdateMoney_Engineer_Sql_Parm=pgdh|wxry

说明:更新本地数据库状态的参数




上传正火完工信息到解忧平台2017-6-6(手动完工)

localsql_end=select top 10 pgdh,wxjg,wxcs,'da_wxjl' record_table from da_wxjl a,bm_ktlb b,bm_lb_pp c where a.wxzt >='D' and isnull(appstatus_end,'')='0' and a.ktpp=b.code and a.ppnr=c.code

说明:正火系统完工单的查询条件,根据实际情况需要进行修改,其中红色部分如果新单上传是没有record_table,则此处不需要,否则需要;


localupdatesql_end=update da_wxjl set appstatus_end='1' where charindex(pgdh+',',@pgdh)>0

说明:完工单上传的更新标志;


localupdateparm_end=pgdh

说明:完工单上传更新时用到的参数,可以使用|分割;


localcolumns_end=pgdh|wxcs|wxjg

说明:完工单上传是本地数据库对应的列名;


remotecolumns_end=record_number|service_measure|service_result

说明:完工单上传到解忧平台,解忧平台对应的列名,此参数需要和上一参数配合使用;


需要修改以下存储过程:

proc_wxjl_update 

原内容:set @xfry='update da_wxjl set '+@xfry+' where pgdh='''+@pgdh+''''

现内容:set @xfry='update da_wxjl set '+REPLACE(@xfry,'"','''')+' where pgdh='''+@pgdh+''''

proc_exists_wxzt 

原内容:set @sql='update da_wxjl set wxzt='''+@wxzt+''','+@zdgx+' where pgdh='''+@pgdh+''''

现内容:set @sql='update da_wxjl set wxzt='''+@wxzt+''','+REPLACE(@zdgx,'"','''')+' where pgdh='''+@pgdh+''''

同时修改工作状态编码表中的自动更新列,将其中的单引号('')换成双引号("")




2017-6-22

下载服务新增下载OA表单数据的功能,需要手动在下载参数中增加以下参数

localoaparm=表单名称1|表单名称2

localoacolumns_表单名称1=姓名,电话,地址(表单的中文字段名称)

...

localoaupdate_表单名称1=proc_.....(存储过程名称,此存储过程必须包括所有返回数据参数和一个returnparm output参数)

说明:存储过程可以参考后面的下载OA数据的存储过程




2017-7-19

解忧新增数据自动对接到正火系统中(适合于每个企业的公众号报修),需要在下载参数中增加以下参数:

localnewupdatesql=pro_wxgl_web_jieyou|id,contact_name,contact_phone,address,service_demand,

equipmentname,brand_name,brand_content_name

说明:|前面是存储过程名称,后面是解忧数据的字段名称,存储过程可以参考后面的存储过程。




说明:

a、数据上传和对接程序涉及到本地数据库更新的可在后台设置参数的地方,均可以使用如下两种方式(案例):

1、update da_wxjl set **=** where pgdh=@record_number;(直接使用SQL语句)

2、execute proc_exec_app_** @record_table,@pgdh...(使用存储过程)


b、数据对接参数一旦修改,需要重新启动相应服务;

c、修改参数system.ini配置文件的writelogs=false可取消日志功能;

d、如果遇到下载服务不能使用的情况,可以设置system.ini配置中的userRedis=false再试;

e、安装服务的计算机应取消电脑休眠功能;

f、涉及到本地编码需要和解忧编码转换的参数,可以通过以下两种方式设置,如以下案例:localreplacecolumn_engineerid_table=SQLselect  jieyoucode,ygbh from rsgl_jbda where gzzt='1' and ISNULL(jieyoucode,'')>''

localreplacecolumn_engineerid_table=解忧编码:工程师编码|...

g、解忧派工后下载到正火系统

localupdatesql_status_04=update da_wxjl set xfry=@engineerid,xfry1=@engineer_name,pgrq=@send_work_time,wxzt='B' where pgdh=@record_number and wxzt【‘B‘|execute proc_execute_jieyou_download @record_number,@engineerid,@send_work_operator

h、如果要上传派工后的单据到解忧平台,请在localsql参数中,增加如下关联(rsgl_jbda e):

charindex(e.ygbh,a.xfry)>0 and e.jieyoucode>''



解忧对接升级脚本


//基本数据对接 

go

alter table rsgl_jbda add jieyoucode varchar(50)

go

alter table da_wxjl add appstatus varchar(1),appstatus_end varchar(1)

go

//升级时此代码请最后执行

update da_wxjl set appstatus='1',appstatus_end='1'

go

//增加获取维修人员ID

create function [dbo].[gf_wxjl_xfry](@xfry varchar(50)) returns varchar(255)

as

begin

  declare @rn varchar(255)

  declare @ygbh varchar(50)

  set @rn='' 

  set @ygbh=''

  declare cur_tmp cursor for select jieyoucode from rsgl_jbda where charindex(','+ygbh+',',','+@xfry+',')>0

  open cur_tmp

  fetch cur_tmp into @ygbh

  while @@FETCH_STATUS=0

  begin

     set @rn=@rn +@ygbh+ ','

     fetch cur_tmp into @ygbh

  end

  close cur_tmp

  DEALLOCATE cur_tmp

  return @rn 

end 

go

//维修记录表触发器实现改派后重新上传

ALTER                             TRIGGER [dbo].[trig_da_wxjl_update] ON [dbo].[da_wxjl] 

FOR  insert,UPDATE 

AS

begin

declare @xfry varchar(200)

declare @pgdh varchar(20)

if UPDATE(xfry)

begin

   update da_wxjl set da_wxjl.appstatus='' from da_wxjl,inserted a 

       where da_wxjl.pgdh=a.pgdh and a.xfry>'' and isnull(da_wxjl.appstatus,'')='1' 

end

return 

end

go

//解忧下载后自动更新维修记录表状态

CREATE proc [dbo].[proc_execute_jieyou_download](@pgdh varchar(30),@xfry varchar(100),@pgry varchar(30))

as

begin

  if @pgry>''

    update da_wxjl set pgry=@pgry where pgdh=@pgdh

  if @xfry>''

    execute proc_wxjl_update @pgdh,'xfry',@xfry

end

GO

//增加存储过程(可编程性- 存储过程-新建)

create PROCEDURE proc_exec_app_upload(@record_table varchar(10),@pgdh varchar(500))

as

BEGIN

    if @record_table='da_wxjl'

   update da_wxjl set appstatus='1' where charindex(pgdh ',',@pgdh)>0

else

   update da_azjl set appstatus='1' where charindex(pgdh ',',@pgdh)>0

END

GO


//2017-05-17修改遗留和过程反馈数据对接

alter table da_wxjl_ylwt add feedbackstatus varchar(1),replystatus varchar(1)

go

alter table da_wxjl_ylwt add appid varchar(50)

go

create proc proc_exec_app_message_feedback_update(@appid varchar(50),@record_number varchar(50))

as

begin

   update da_wxjl_ylwt set feedbackstatus='1',appid=@appid where pgdh+  convert(varchar,xh)=@record_number

end

GO

create proc proc_exec_app_message_feedback_add (@record_table varchar(10),@record_number varchar(30),

@info_num varchar(30),@subid varchar(10),@feedback_person varchar(30),@feedback_content varchar(300),@feedback_type varchar(20))

as

begin

   declare @xh int

   set @xh=0

   select @xh=isnull(max(xh),0) from da_wxjl_ylwt where pgdh=@record_number

   if @xh=null

      set @xh=1 

   else

      set @xh=@xh +1

   insert into da_wxjl_ylwt(pgdh,xh,ylrq,ylwt,wtlx,clqk,feedbackstatus,replystatus,appid)

      values(@record_number,@xh,getdate(),@feedback_content,@feedback_type,'','1','0',@info_num+@subid)

end

go


create proc proc_exec_app_message_reply_update(@record_number varchar(50))

as

begin

   update da_wxjl_ylwt set replystatus='1' where pgdh + convert(varchar,xh)=@record_number

end

go

create proc proc_exec_app_message_reply_add (@record_table varchar(10),@record_number varchar(30),

@info_num varchar(30),@subid varchar(10),@reply_person varchar(30),@reply_content varchar(300),@reply_node varchar(20))

as

begin

   update da_wxjl_ylwt set clqk=@reply_content,clrq=getdate(),cljg='Y',clry=@reply_person where appid=@info_num+@subid

end

go 


2017-7-19解忧新增数据下载到正火系统存储过程


CREATE                procedure [dbo].[pro_wxgl_web_jieyou](@id varchar(50),@contact_name varchar(50),@contact_phone varchar(50),@address varchar(100),

   @service_demand varchar(100), @equipmentname varchar(50),@brand_name varchar(50),@brand_content_name varchar(50),@returnparm varchar(2048) output)

as

begin

   declare @pgdh varchar(30)

   declare @ktpp varchar(6)

   declare @ppnr varchar(8)

   declare @xtmc varchar(100)

   declare @djh varchar(50)

   set @pgdh=''

   select @pgdh=isnull(pgdh,'') from da_wxjl where zydh=@id

   if @pgdh>''

   begin

      set @returnparm=@id+':'+@pgdh

      return

   end

   set @xtmc=@brand_name +@brand_content_name

     --获取最大派工单号

    

   select @pgdh=isnull(max(pgdh),'') from da_wxjl where left(pgdh,6)=substring(convert(varchar,getdate(),112),3,6)

   if @pgdh=''

   begin

      select @pgdh=substring(convert(varchar,getdate(),112),3,6)+'-0001'

   end

   else

   begin

      select @djh=convert(varchar,convert(int,right(@pgdh,4))+1)

      select @pgdh=left(@pgdh,7)+left('000000',4 - len(@djh))+ @djh

   end

   --查询品牌和品牌内容

   if exists(select * from bm_ktlb a,bm_lb_pp b where a.code=b.sspp and a.sm+b.lbmc=@xtmc)

   begin

      select top 1 @ktpp=a.code,@ppnr=b.code from bm_ktlb a,bm_lb_pp b where a.code=b.sspp and a.sm+b.lbmc=@xtmc

   end

   else

   begin

      select top 1 @ktpp=a.code,@ppnr=b.code from bm_ktlb a,bm_lb_pp b where a.code=b.sspp 

   end

   --插入记录

   begin tran

     

   insert into da_wxjl (pgdh,ktpp,ppnr,yhmc,lxdh,lxsj,yhdz,gzxx,yhlxry,xxbz,jswd,xxly,jdrq,ktxh,jdry,pgdhtop,fwlx,fwfs,hyid,yyrq1,yhlx,wxzt,zydh,appstatus)

 values (@pgdh,@ktpp,@ppnr,@contact_name,'',@contact_phone,@address,@service_demand,@contact_name,'A','001','解忧平台',getdate(),@equipmentname,'manager',@pgdh,'03','10','',null,'A','A',@id,'1')


   if @@error<>0 goto Err

      

   commit transaction

   set @returnparm=@id+':'+@pgdh

   return 

  Err: 

   rollback transaction

   set @returnparm=''

   return 

end

go


OA系统数据下载到正火系统


create function dbo.Get_StrArrayLength

(

  @str varchar(5000),  --要分割的字符串

  @split varchar(10)  --分隔符号

)

returns int

as

begin

  declare @location int

  declare @start int

  declare @length int


  set @str=ltrim(rtrim(@str))

  set @location=charindex(@split,@str)

  set @length=1

  while @location<>0

  begin

    set @start=@location+1

    set @location=charindex(@split,@str,@start)

    set @length=@length+1

  end

  return @length

end

go

create function dbo.Get_StrArrayStrOfIndex

(

  @str varchar(5000),  --要分割的字符串

  @split varchar(10),  --分隔符号

  @index int --取第几个元素

)

returns varchar(5000)

as

begin

  declare @location int

  declare @start int

  declare @next int

  declare @seed int


  set @str=ltrim(rtrim(@str))

  set @start=1

  set @next=1

  set @seed=len(@split)


  set @location=charindex(@split,@str)

  while @location<>0 and @index>@next

  begin

    set @start=@location+@seed

    set @location=charindex(@split,@str,@start)

    set @next=@next+1

  end

  if @location =0 select @location =len(@str)+1 

  return substring(@str,@start,@location-@start)

end

go

create      proc [dbo].[proc_exec_oa_jieyou_bxsq] (

@id varchar(50),@提交人员 varchar(10),

@提交时间 varchar(20),@报销主题 varchar(200),

@附件张数 varchar(10),@情况说明 varchar(200),

@报销合计 varchar(20),@明细信息 varchar(1024),

@returnparm varchar(2048) output)

as

declare @cwdh varchar(20)

declare @ygbh varchar(10)

declare @gzbm varchar(10)

declare @ssgs varchar(10)

begin

 --获取最大财务单号

 exec PROC_GET_DJH '001','CW_SZD','DB',@cwdh output 

 --写入财务收支top表

 SET @ygbh=''

 SET @gzbm=''

 select @ygbh=ygbh,@gzbm=gzbm,@ssgs=bm from rsgl_jbda where ygmc=@提交人员

 

 --写入财务收支top表

 insert into cwgl_qtsz_top (djh, bz, pzh, shry, fsrq, shrq, kdry, kdrq, djzt, zjje, zdje, zffs, szlx, szbh, ssgs, fklx, zph, gszh, pzjzbz, gzbm,djh_oa)

values(@cwdh,isnull(@报销主题,'')+':'+isnull(@情况说明,''),'',null,@提交时间,null,

@ygbh,@提交时间,'0',0,@报销合计,'0','其他收费',null,@ssgs,null,null,null,'0',@gzbm,@ID)

 --

 if @@ERROR=0

 begin

     --写入明细表数据

DECLARE @N INT

DECLARE @I INT

declare @xh int

declare @s varchar(1024)

declare @xmbm varchar(20)

DECLARE @XMMC VARCHAR(20)

DECLARE @XMSL VARCHAR(20)

DECLARE @XMDJ VARCHAR(20)

DECLARE @XMJE VARCHAR(20)

DECLARE @XMSM1 VARCHAR(200)

DECLARE @XMSM2 VARCHAR(200)

set @xh=1

SET @I=1

set @明细信息=REPLACE(@明细信息,'[{','')

set @明细信息=REPLACE(@明细信息,'}]','')

SET @N=DBO.Get_StrArrayLength(@明细信息,'},{')

WHILE @I<=@N

BEGIN

set @s=dbo.Get_StrArrayStrOfIndex(@明细信息,'},{',@i)

SET @XMMC=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',2),'":"',2)

   set @xmbm=''

   select @xmbm=isnull(code,'') from bm_szxm where name=@XMMC

   if @xmbm='' 

      set @xmbm='D1' --默认收支项目

      

SET @XMSL=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',3),'":"',2)

SET @XMDJ=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',4),'":"',2)

SET @XMJE=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',5),'":"',2)

SET @XMSM1=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',6),'":"',2)

SET @XMSM2=dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@s,'","',7),'":"',2)

if @XMDJ='' set @XMDJ=null

if @XMsl='' set @XMsl=null

                if @XMJE='' set @XMJE=0

if @XMJE<>0

begin


insert into cwgl_qtsz (djh,xh,szxm,pzlx,jsr,yhzh,sr,zc,fpje,fph,zy,wldw,pzhx,hxrq,hxry,yxpjh,htbh,dw,sl,dj,ywry)

      values( @cwdh,@xh,@xmbm,'19',@ygbh,null,0,@xmje,0,null,@XMSM1,@ygbh,'0',null,null,null,null,null,@xmsl,@xmdj,@ygbh)

   set @xh=@xh +1

             end

SET @I=@i +1

END

if not exists(select * from cwgl_qtsz where djh=@cwdh)

begin

   delete from cwgl_qtsz_top where djh=@cwdh

   set @returnparm=''

end

else

begin

   set @returnparm=@id

end

  end

  else

  begin

     set @returnparm=''

  end

end

go

正火系统完成上传解决完工和新单同时上传时无法上传完工信息

CREATE TABLE [jieyou_err] (

pgdh varchar(50) not null,

sccs int ,

        type varchar(10) not null,

CONSTRAINT [PK_jieyou_err] PRIMARY KEY  CLUSTERED 

(

[pgdh],

[type]

)  ON [PRIMARY] 

) ON [PRIMARY]

GO

//处理派工后立即完工bug

create proc [dbo].[proc_exec_jieyou_upload_err](@pgdh varchar(100),@type varchar(20),@record_table varchar(50))

as

begin

   if @type='end'

   begin 

       update jieyou_err set sccs=sccs +1 where type=@type and charindex(pgdh,@pgdh)>0  

       insert into jieyou_err(pgdh,type,sccs)

           select pgdh,@type,1 from da_wxjl where charindex(pgdh,@pgdh)>0 and pgdh not in(select pgdh from jieyou_err where type=@type)

       return

   end

   if @type='end_reset'

   begin

      delete from jieyou_err where type='end' and sccs>=3

      update da_wxjl set appstatus_end='0' where pgdh in(select pgdh from jieyou_err where type='end' and sccs<3) 

      return

   end

   if @type='success'

   begin 

      delete from jieyou_err where type='end' and charindex(pgdh,@pgdh)>0  

      return       

   end

end

go


企业端自动派工设置


1、同时需要在工程师表及工程师档案维护中维护以下内容:

service_county 服务区域

service_id 服务类型名称+服务大类

service_brand 服务品牌名称

service_brand_content 品牌内容名称



2、自动派工设置需要在企业端网站中的企业信息中进行维护,主要需要维护:

HASH位数、坐标距离、定位模式、必备条件、排序规则、过滤条件、派工模式

数据库字段名及含义:

lbs_geohash_left GEOHASH精确位置,5位10公里,位数越大越精确

lbs_distince 距离多少公里

lbs_modle 定位方式 Hash / Distinct

lbs_modle_sort 排序规则

lbs_modle_filter 过滤规则

lbs_modle_rule 查询条件

lbs_send_work 派工/抢单/手动


a、lbs_modle_rule必备条件设置规则

默认为:

gps|service_brand_content|service_id(含义为需要以定位、服务品牌内容、服务类别名称+服务大类)

可用模式为:

county 区县 service_id 服务类型+服务大类 service_brand品牌 service_brand_content 品牌内容 gps 定位


b、lbs_modle_filter 过滤规则设置:

过滤规则和排序规则为配套设置,可以使用|分割以设置多种过滤规则和排序,系统在使用抢单模式时,只使用第一种规则,使用派单模式时,若第一种没有找到合适的数据,则依次后延;

例:distance<=3|distance<=10|


c、lbs_modle_sort排序规则设置:

例:distance asc,service_wwgsl2 asc,skill_level desc|distance asc,service_wwgsl2 asc,skill_level desc|service_wwgsl2 asc,skill_level desc


过滤和排序的字段名:

appid,distance,lat,lng,service_pgsl,service_tssl,service_jdsl,service_county,id,name,sex,phone,name,companyid,

company_name,service_wwgsl,service_wwgsl2,service_ylsl,skill_level 

中文含义为:

appid,距离,经度,维度,派工数量,推送数量,接单数量,服务区县,编号,姓名,性别,电话,公司编码,公司名称,未完工数量,未完工数量- 遗留数量,遗留数量�

全国联网

权威厂家、协会质量监督

覆盖市县

合作企业


CopyRight © 2016-2023 解忧在线服务平台版权所有 蜀ICP备17009131号