pos机系统维护a1

 新闻资讯2  |   2023-07-15 12:04  |  投稿人:pos机之家

网上有很多关于pos机系统维护a1,SQL Server 根据文件名称在ERP系统里面获取门店名称的知识,也有很多人为大家解答关于pos机系统维护a1的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、pos机系统维护a1

pos机系统维护a1

程序代码园发文地址:SQL Server 根据文件名称在ERP系统里面获取门店名称-程序代码园

在工作中遇到,门店的POS数据需要根据ERP的门店名称导入到系统里面,之前写的导入方法不是很好,复制粘贴的工作量太大了(将回传回来的POS数据文件加上正确的门店名称,中间用特殊标志字段“byq”隔开,虽然已经用批处理的办法批量去修改文件名称,但是复制粘贴的工作量还是很大);还好回传回来的POS数据文件名称上已经有门店名称的关键信息;

问题描述:

之前的导入程序,需要提前处理文件上的门店名称,但是工作量太大了(复制,粘贴)

解决思路:

利用SQL Server 工具处理,把文件名称批量读取出来后导入数据库里面,结合ERP系统里面的门店信息表,取最相似的门店名称。

技术要点:

1、批量获取文件名称

2、获取相似度最高的方法

3、文件名称中会有一些多余的数据干扰判断的处理方法

4、通过文件名称获取相似度最高的方法

5、循环通过文件名称获取相似度最高的门店名称

6、批量更新文件名称

第一步:1、批量获取文件名称

用批处理的命令,获取文件名称在一个Excel表格里面,代码如下:

执行批处理的文件:readFileName.bat;处理后的结果放到Excel文件中:readFileName.xls

dir /b>readFileName.xls第二步:获取相似度最高的方法

在数据库里面新建一个方法“FN_Resemble”,用于比较2个字符串的相似度(这里就简认为:字符串1中的字符在字符串2出现的次数,出现的越多越相似,网上参考写法),该方法返回相似度,代码如下:

---两个字段简单相似ALTER FUNCTION [dbo].[FN_Resemble] (@Cloumna NVARCHAR(MAX), @Cloumnb NVARCHAR(MAX) )RETURNS FLOATASBEGIN DECLARE @num FLOAT,@len int SET @Cloumna=ISNULL(@Cloumna,0) SET @Cloumnb=ISNULL(@Cloumnb,0) SET @len=1 SET @num=0 WHILE(LEN(@Cloumna)<>0 AND LEN(@CloumnB)<>0) BEGIN WHILE(@len<=LEN(@Cloumna)) BEGIN DECLARE @a NVARCHAR(4) SET @a='' SET @a=SUBSTRING(@Cloumna,@len,1) IF(CHARINDEX(@a,@CloumnB)>0) BEGIN SET @num=@num+1 END SET @len=@len+1 END SET @num=@num*1.0/LEN(@Cloumna) BREAK END RETURN @numEND第三步:文件名称中会有一些多余的数据干扰判断的处理方法

在数据库里面新建一个方法“fn_getSimpleFilename”,将文件名称里面干扰获取最高相似度的信息全部处理掉,这里用到的是替换,代码如下:

ALTER FUNCTION [dbo].[fn_getSimpleFilename](@FileName varchar(200))RETURNS varchar(200)ASBEGIN set @FileName = REPLACE(@FileName, '1', '')set @FileName = REPLACE(@FileName, '2', '')set @FileName = REPLACE(@FileName, '3', '')set @FileName = REPLACE(@FileName, '4', '')set @FileName = REPLACE(@FileName, '5', '')set @FileName = REPLACE(@FileName, '6', '')set @FileName = REPLACE(@FileName, '7', '')set @FileName = REPLACE(@FileName, '8', '')set @FileName = REPLACE(@FileName, '9', '')set @FileName = REPLACE(@FileName, '0', '')set @FileName = REPLACE(@FileName, '年', '')set @FileName = REPLACE(@FileName, '月', '')set @FileName = REPLACE(@FileName, '日', '')set @FileName = REPLACE(@FileName, '份', '')set @FileName = REPLACE(@FileName, '销量', '')set @FileName = REPLACE(@FileName, '集鑫隆', '')set @FileName = REPLACE(@FileName, '纸业', '')set @FileName = REPLACE(@FileName, '店', '')set @FileName = REPLACE(@FileName, '一', '')set @FileName = REPLACE(@FileName, '二', '')set @FileName = REPLACE(@FileName, '三', '')set @FileName = REPLACE(@FileName, '线', '')set @FileName = REPLACE(@FileName, '商品', '')set @FileName = REPLACE(@FileName, '销售', '')set @FileName = REPLACE(@FileName, '汇总', '')set @FileName = REPLACE(@FileName, '报表', '')set @FileName = REPLACE(@FileName, '毛利', '')set @FileName = REPLACE(@FileName, '明细', '')set @FileName = REPLACE(@FileName, '超市', '')set @FileName = REPLACE(@FileName, '集', '')set @FileName = REPLACE(@FileName, '类', '')set @FileName = REPLACE(@FileName, '家清', '')set @FileName = REPLACE(@FileName, '纸品', '')set @FileName = REPLACE(@FileName, '统计', '')set @FileName = REPLACE(@FileName, '数据', '')set @FileName = REPLACE(@FileName, 'POS', '')set @FileName = REPLACE(@FileName, '化妆品', '')set @FileName = REPLACE(@FileName, '(', '')set @FileName = REPLACE(@FileName, ')', '')set @FileName = REPLACE(@FileName, '-', '')set @FileName = REPLACE(@FileName, '_', '')set @FileName = REPLACE(@FileName, ' ', '')set @FileName = REPLACE(@FileName, '.xls', '')set @FileName = REPLACE(@FileName, '.', '') RETURN @FileNameEND第四步:通过文件名称获取相似度最高的方法

在写一个方法“fn_getSimilarity”,通过该方法循环上一步方法将文件名称和ERP门店名称比较,最终获取相似度的门店名称,返回门店名称,代码如下:

-- 获取文件名称和门店名称匹配度最高的ALTER FUNCTION [dbo].[fn_getSimilarity](@FileName varchar(200),@FDeptName varchar(200))RETURNS varchar(200)ASBEGIN declare @FCustomerName VARCHAR(200)-- 根据分公司取门店名称 declare @c_tbd_Customer table(id int IDENTITY,FCustomerName VARCHAR(200),Similarity float(10))insert into @c_tbd_Customer(FCustomerName)select FCustomerName from c_tbd_Customer_ERP where FDeptName = @FDeptNameDECLARE @count intselect @count = (select count(*) from @c_tbd_Customer)-- 获取相似度最高的门店名称declare @i int,@FCustName VARCHAR(200),@Similarity float(10)set @i = 1while @i< @count + 1-- 拼接sqlbeginset @FCustName = (select FCustomerName from @c_tbd_Customer where id = @i)set @Similarity = (SELECT dbo.FN_Resemble(@FileName,@FCustName))update @c_tbd_Customer set Similarity = @Similarity where id = @iset @i = @i + 1endset @FCustomerName = (select top 1 FCustomerName from @c_tbd_Customer order by Similarity desc) RETURN @FCustomerNameEND第五步:循环通过文件名称获取相似度最高的门店名称

新建一个存储过程,将前面通过批处理获取到的文件导入数据库中,循环执行上一步的方法获取文件名称对应的最高相似度的门店名称,返回每个文件名称对应的最高相似度的门店名称,代码如下:

ALTER PROCEDURE [dbo].[a_jxl_getSimilarity]@FDeptName varchar(200)ASBEGINset nocount on-- 删除无效数据delete a_jxl_FileName_FCustomerName where FileName is nullcreate table #message(id int IDENTITY, message NVARCHAR (255), flag varchar(255))create table #a_jxl_FileName_FCustomerName(id int IDENTITY, FileName NVARCHAR (255), SimpleFilename NVARCHAR (255), FCustomerName NVARCHAR (255))insert into #a_jxl_FileName_FCustomerName(FileName)select FileName from a_jxl_FileName_FCustomerNameDECLARE @count int,@i int,@FileName VARCHAR(200)select @count = (select count(*) from a_jxl_FileName_FCustomerName)-- 获取处理过的文件名称declare @SimpleFilename VARCHAR(200)set @i = 1while @i< @count + 1-- 拼接sqlbeginset @FileName = (select FileName from #a_jxl_FileName_FCustomerName where id = @i)set @SimpleFilename = (SELECT dbo.fn_getSimpleFilename (@FileName))update #a_jxl_FileName_FCustomerName set SimpleFilename = @SimpleFilename where id = @iset @i = @i + 1end-- 获取相似度最高的客户名称declare @FCustomerName VARCHAR(200)set @i = 1while @i< @count + 1-- 拼接sqlbeginset @SimpleFilename = (select SimpleFilename from #a_jxl_FileName_FCustomerName where id = @i)set @FCustomerName = (SELECT dbo.fn_getSimilarity (@SimpleFilename,@FDeptName))update #a_jxl_FileName_FCustomerName set FCustomerName = @FCustomerName where id = @iset @i = @i + 1endselect id,FileName,FCustomerName,SimpleFilename from #a_jxl_FileName_FCustomerNamedelete a_jxl_FileName_FCustomerNamedrop table #messagedrop table #a_jxl_FileName_FCustomerNameset nocount offEND第六步:批量更新文件名称

将上一步的结果,文件名称和门店名称,复制粘贴到第一步新建的Excel文件中,写Excel公式形成批处理命令,公式如下:

="ren "&A1&" "&B1&"byq"&A1

将形成批处理命令,复制粘贴到批处理文件“WrightNewFileName.bat”中,保存,双击执行批处理就可以批量更新文件名称

程序代码园发文地址:SQL Server 根据文件名称在ERP系统里面获取门店名称-程序代码园

以上就是关于pos机系统维护a1,SQL Server 根据文件名称在ERP系统里面获取门店名称的知识,后面我们会继续为大家整理关于pos机系统维护a1的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/newsone/84870.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。