- 浏览: 287346 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
业务场景:(系统间还没有接口对调,订单号暂时需要线下处理)
线上订单需要线下第三方票据核对之后才能抽取明细对账开票。
根据第三方提供的票据匹配上双方系统的订单号。
全部指标命中的,默认为相等,部分指标命中的为待筛查数据
线上订单需要线下第三方票据核对之后才能抽取明细对账开票。
根据第三方提供的票据匹配上双方系统的订单号。
class Report::Importcsv # 上传csv文件load数据到数据库临时表 def self.import_csv(file_root,table_name='mapping_datas') # xlsx 保存为csv # 上传到路径:/var/lib/mysql-files/ new_table_name = "cope_#{table_name}_#{Time.now.to_i}" create_table_sql = cope_table_sql(new_table_name,table_name) # 创建表数据 ActiveRecord::Base.connection.execute(create_table_sql) # load 写入csv数据 @sql = %Q(LOAD DATA INFILE '#{file_root}' INTO TABLE #{table_name} FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;) ActiveRecord::Base.connection.execute(@sql) end def self.cope_table_sql(new_table_name,table_name) "create table #{new_table_name} select * from #{table_name} where 1=2;" end ################################################ ## 比对mapping ################################################ require 'matrix' def self.mapping_data_test # 等待匹配的数据库订单数据 sql = "select * from mapping_datas" base_a = ActiveRecord::Base.connection.execute(sql) compale_a = base_a.map{|_| _[1..-1].map{|a| b = (a ? a.to_f : 'null') ; b } } aaa = Matrix.columns(compale_a).to_a # 假设excell导入的临时表数据 excell_sql = "select * from cope_mapping_datas_11232131" base_b = ActiveRecord::Base.connection.execute(excell_sql) compale_b = base_b.map{|_| _[1..-1].map{|a| b = (a ? a.to_f : 'null') ; b } } bbb = Matrix.columns(compale_b).to_a # 完全一致的 #ccc = compale_a & compale_b ddd = [] compale_a.each_with_index do |a,i| eee = [] aaa.each_with_index do |_,j| bbb[j].each_with_index do |b,k| if a[j] == b eee << k end end end re = eee.flatten # 获取最大匹配指标的值 h = Hash.new(0) re.each { | v | h.store(v, h[v]+1) } v = h.values.max ind = h.values.index(v) ddd << [{index:i, mapping:h.keys[ind.to_i], size:v}] end return ddd end end
:index => 原数据库id, :mapping => excell入库id, :size => 匹配指标(users.mobile, od.art_no, od.cas, od.package_count)命中个数 [ [{:index=>70, :mapping=>69, :size=>4}], [{:index=>71, :mapping=>70, :size=>4}], [{:index=>72, :mapping=>71, :size=>4}], [{:index=>73, :mapping=>72, :size=>4}], [{:index=>74, :mapping=>73, :size=>4}], [{:index=>75, :mapping=>74, :size=>4}], [{:index=>76, :mapping=>75, :size=>4}], [{:index=>77, :mapping=>76, :size=>4}], [{:index=>78, :mapping=>0, :size=>2}], [{:index=>79, :mapping=>69, :size=>3}], [{:index=>80, :mapping=>0, :size=>2}], [{:index=>81, :mapping=>24, :size=>2}], [{:index=>82, :mapping=>69, :size=>3}], [{:index=>83, :mapping=>75, :size=>2}], [{:index=>84, :mapping=>75, :size=>2}], [{:index=>85, :mapping=>68, :size=>2}], [{:index=>86, :mapping=>0, :size=>2}], [{:index=>87, :mapping=>42, :size=>3}] ]
全部指标命中的,默认为相等,部分指标命中的为待筛查数据
发表评论
-
git仓库创建
2020-09-04 15:33 646推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 437nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 751class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 530require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 497针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1112<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 867gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 598def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 692sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 879链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 672Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 998tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 936例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 394关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1066def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1039[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1304登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1143pdf&excell&png # rend ... -
基于mini_magick多图片合并/添加水印
2018-07-02 17:44 1656class ImageService requi ...
相关推荐
工作中用到的可以导入任意格式excel文件的工具插件
Delphi中从Excel导入数据的通用方法Delphi中从Excel导入数据的通用方法
可以根据表的id导入和导出excell、xml、txt等格式
(1)WINCC编程处理数据; (2)EXCELL处理数据; (3)报表数据在WINCC与EXCELL之间的传递。
Excell教程数据分析实用技巧PPT课件.pptx
Excell教程数据分析实用技巧PPT学习教案.pptx
excell导入导出,VC++实了现excell导入导出。
方面与初学者学习C#连接EXCELL使用管理数据,可以实现表格中的数据添加删除管理操作
这是一个项目中的Excell导入源代码。很不错的实例
将Excel数据相对应的导入数据库指定数据表内、或者新建表中,省去繁琐的SQL语句操作! 也可在线下载备份数据库数据
jeecg导入excel 想学的速度了
从DATAGRID中导出数据到EXCELL国外代码
先把excel的文件读出来,转化为Json结构。注:第一行标题作为key,其它行作为value,具体参考demo Sheet1 = ( { "\U626b\U63cf\U65e5\U671f" = "2017-06-06 18:40:18"; "\U6536/\U6d3e\U4ef6\U5458" = "\U6c49\U...
在EXCELL表格里添加数据标签 word格式
EXCELL函数EXCELL函数EXCELL函数EXCELL函数EXCELL函数EXCELL函数EXCELL函数
ASP上传Excel文件并导入数据到Access数据库,程序一共分二步操作,第一步是上传文件,上传成功后再点击“导入数据”,Excel数据将被导入到Access的product表中,操作时要注意放置程序的目录必须有足够权限,否则程序...
Excell2007之后版本导入代码
EXCEL 从串口接收数据。单片机AVR从串口发送数据。
多种方法把c#中的数据保存到excel文件中,总有一种适合你的
VC调用Excell 数据库 xp按钮 按钮动画说明