public void UploadInsurHistory()
{
using (IDbConnection connection = ConnConfig.DmsConnection)
{
IDbTransaction trans = connection.BeginTransaction();
try
{
InsuranceBuyAccess gateway = new InsuranceBuyAccess(trans);
CommonDataGateway commonDataGateway = new CommonDataGateway(trans); //1、检测系统参数UploadFlag != '0',就不上传
string uploadFlag = commonDataGateway.GetSettingValue("Repair", "UploadFlag");
if (uploadFlag != "")
{
return;
} //2、修正数据,将交强险、商业险到期日为 "0001-01-01"的数据到期日置为 NULL
gateway.ModifyDueDate(); //3、保险历史数据上传,每500条作为一个Json
DataSet dcsDS = gateway.GetAllInsuranceData(); JsonDCS mainJson = new JsonDCS();
mainJson.ver = ;
mainJson.bl = "S.I.INSURANCEBUY";
mainJson.sbl = new ArrayList(); DCSHeader dcsHeader = new DCSHeader();
dcsHeader.bl = "S.I.INSURANCEBUY";
dcsHeader.ver = ; //一次性将历史数据写入一个Json之中
if (dcsDS.Tables[].Rows.Count > )
{
JsonDCS insuranceBuyJson = new JsonDCS();
insuranceBuyJson.ver = ;
insuranceBuyJson.bl = "S.I.INSURANCEBUY.INSURANCEBUY_I0";
insuranceBuyJson.cols = new string[]{"FrameNo","BuyDate","InsurerCode","InsuranceType","InsuranceBuyDate","InsuranceMaturityDate","SalesType","Remark","BizNo","TrafficNo",
"CommercialNo","CustomerNo","CoverageType","SaleChannel","IsChange","HandlePerson","NextPerson","CustOrigin","CommercialStartDate","CommercialEndDate",
"Insured","Tel","TrafficFee","TrafficDiscount","CommercialFee","CommercialDiscount","TotalFee","Deleted","InputPerson","InputTime","OpFlag"}; insuranceBuyJson.data = new object[dcsDS.Tables[].Rows.Count][];
for (int i = ; i < dcsDS.Tables[].Rows.Count; i++)
{
insuranceBuyJson.data[i] = new object[] { dcsDS.Tables[].Rows[i]["FRAMENO"], CanHelper.ToDate(dcsDS.Tables[].Rows[i]["BUYDATE"]), dcsDS.Tables[].Rows[i]["INSURERCODE"],
dcsDS.Tables[].Rows[i]["INSURANCETYPE"], CanHelper.ToDate(dcsDS.Tables[].Rows[i]["INSURANCEBUYDATE"]), CanHelper.ToDate(dcsDS.Tables[].Rows[i]["INSURANCEMATURITYDATE"]),
dcsDS.Tables[].Rows[i]["SALESTYPE"], dcsDS.Tables[].Rows[i]["REMARK"], dcsDS.Tables[].Rows[i]["BIZNO"],
dcsDS.Tables[].Rows[i]["TRAFFICNO"], dcsDS.Tables[].Rows[i]["COMMERCIALNO"], dcsDS.Tables[].Rows[i]["CUSTOMERNO"],
dcsDS.Tables[].Rows[i]["COVERAGETYPE"], dcsDS.Tables[].Rows[i]["SALECHANNEL"], dcsDS.Tables[].Rows[i]["ISCHANGE"],
dcsDS.Tables[].Rows[i]["HANDLEPERSON"], dcsDS.Tables[].Rows[i]["NEXTPERSON"], dcsDS.Tables[].Rows[i]["CUSTORIGIN"],
CanHelper.ToDate(dcsDS.Tables[].Rows[i]["COMMERCIALSTARTDATE"]), CanHelper.ToDate(dcsDS.Tables[].Rows[i]["COMMERCIALENDDATE"]), dcsDS.Tables[].Rows[i]["INSURED"],
dcsDS.Tables[].Rows[i]["TEL"], dcsDS.Tables[].Rows[i]["TRAFFICFEE"], dcsDS.Tables[].Rows[i]["TRAFFICDISCOUNT"],
dcsDS.Tables[].Rows[i]["COMMERCIALFEE"], dcsDS.Tables[].Rows[i]["COMMERCIALDISCOUNT"], dcsDS.Tables[].Rows[i]["TOTALFEE"],
dcsDS.Tables[].Rows[i]["DELETED"], dcsDS.Tables[].Rows[i]["INPUTPERSON"], dcsDS.Tables[].Rows[i]["INPUTTIME"],"U"};
} mainJson.sbl.Add(insuranceBuyJson);
} //分解Json传送数据
if (mainJson.sbl.Count > )
{
int rowCount = ((JsonDCS) mainJson.sbl[]).data.Length;
if (mainJson.sbl != null && mainJson.sbl[] != null && rowCount > ) //大于500行的分包发送
{
//childCount 分解的后需要传送的Json数目
int childCount = rowCount / ;
if (rowCount % != )
{
childCount++;
}
JsonDCS subJson = (JsonDCS) mainJson.sbl[];
for (int i = ; i < childCount + ; i++)
{
JsonDCS childMainJson = new JsonDCS();
childMainJson.bl = "S.I.INSURANCEBUY";
childMainJson.ver = ;
childMainJson.sbl = new ArrayList(); JsonDCS childJson = new JsonDCS();
childJson.bl = "S.I.INSURANCEBUY.INSURANCEBUY_I0";
childJson.ver = ;
childJson.cols = new string[]{"FrameNo","BuyDate","InsurerCode","InsuranceType","InsuranceBuyDate","InsuranceMaturityDate","SalesType","Remark","BizNo","TrafficNo",
"CommercialNo","CustomerNo","CoverageType","SaleChannel","IsChange","HandlePerson","NextPerson","CustOrigin","CommercialStartDate","CommercialEndDate",
"Insured","Tel","TrafficFee","TrafficDiscount","CommercialFee","CommercialDiscount","TotalFee","Deleted","InputPerson","InputTime","OpFlag"}; childJson.data = new object[][];
if (i == childCount)
{
childJson.data = new object[rowCount - ((i - ) * )][];
}
for (int j = ; j < ; j++)
{
if (j + (i - ) * == rowCount)
{
break;
}
else
{
childJson.data[j] = subJson.data[j + (i - ) * ];
}
}
childMainJson.sbl.Add(childJson);
gateway.CacheData(mainJson, dcsHeader);
}
}
else
{
gateway.CacheData(mainJson, dcsHeader);
} //4、设置系统参数UploadFlag = '1'
commonDataGateway.UpdateStringValue("", "Repair", "UploadFlag"); trans.Commit();
}
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
}

MQ 分拆Json数据包然后上传的更多相关文章

  1. Burp Post、Get数据包转为上传multipart/form-data格式数据包

    方法一: 新建一个网页进行上传,代码代码如下: <html> <head></head> <body> <form method="po ...

  2. SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传

    1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...

  3. 01- ajax, 登录验证,json数据,文件上传

    1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...

  4. c# 生成json数据包

    json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...

  5. 使用Ajax方式POST JSON数据包(转)

    add by zhj: 用ajax发送json数据时注意两点, 第一,使用JSON.stringify()函数将data转为json格式的字符串,如下 data: JSON.stringify({   ...

  6. 前端学习——使用Ajax方式POST JSON数据包

    0.前言     本文解释怎样使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好 ...

  7. Django使用cropbox包来上传裁剪图片

    1.使用cropbox包来上传裁剪图片,可见介绍:https://www.jianshu.com/p/6c269f0b48c0I ImgCrop包包括:css--style.css,js--cropb ...

  8. 从零开始写一个npm包及上传

    最近刚好自己需要写公有npm包及上传,虽然百度上资料都能找到,但是都是比较零零碎碎的,个人就来整理下,如何从零开始写一个npm包及上传. 该篇文件只记录一个大概的流程,一些细节没有记录. tips:  ...

  9. 使用FormData数据做图片上传: new FormData() canvas实现图片压缩

    使用FormData数据做图片上传: new FormData()       canvas实现图片压缩 ps: 千万要使用append不要用set   苹果ios有兼容问题导致数据获取不到,需要后台 ...

随机推荐

  1. 20190102(多线程,守护线程,线程互斥锁,信号量,JoinableQueue)

    多线程 多进程: 核心是多道技术,本质上就是切换加保存技术. 当进程IO操作较多,可以提高程序效率. 每个进程都默认有一条主线程. 多线程: 程序的执行线路,相当于一条流水线,其包含了程序的具体执行步 ...

  2. hihocoder1015 kmp算法

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  3. 【Directory】文件操作(初识文件操作二)

    上篇我们说了关于文件的创建删除更改可以通过File这个类来完成.对于目录的操作其实File类也可以完成创建删除等相关的操作.用法跟文件的方法大致相同. 那么下面就一起来看一下关于目录相关的用法. 一, ...

  4. windows下的命令

    1.cd 现在默认只能在当前盘符中改变目录,如果要改变盘符则需要多加一个/d命令. cd /d d:/git/springTest 2.chdir 显示当前目录名或改变当前目录. CHDIR [/D] ...

  5. 2 Model层 -定义模型

    1  ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射” ...

  6. 常用Style

    有些输入框什么的,字数限制什么的style,ceb为我们写好了.我感觉,每个app的style都是很有用的一个东西. <?xml version="1.0" encoding ...

  7. [转载]在Robotium中使用ID

    原文地址:在Robotium中使用ID作者:逍遥云翳 在Robotium的API中不提供使用ID的方式. 如果我们想在Robotium中使用ID就需要自己通过ID来找到控件的实例,然后通过Roboti ...

  8. Http请求连接池-HttpClient的AbstractConnPool源码分析

    在做服务化拆分的时候,若不是性能要求特别高的场景,我们一般对外暴露Http服务.Spring里提供了一个模板类RestTemplate,通过配置RestTemplate,我们可以快速地访问外部的Htt ...

  9. 【转】手动写一个Behavior Designer任务节点

    http://blog.csdn.net/qq_33747722/article/details/53539532 自己手写一个类似于CanSeeObject.Seek等任务节点并不是一件难事 下面我 ...

  10. Jquery鼠标悬停按钮图标动态变化效果

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