MQ 分拆Json数据包然后上传
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数据包然后上传的更多相关文章
- Burp Post、Get数据包转为上传multipart/form-data格式数据包
方法一: 新建一个网页进行上传,代码代码如下: <html> <head></head> <body> <form method="po ...
- SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传
1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...
- 01- ajax, 登录验证,json数据,文件上传
1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...
- c# 生成json数据包
json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...
- 使用Ajax方式POST JSON数据包(转)
add by zhj: 用ajax发送json数据时注意两点, 第一,使用JSON.stringify()函数将data转为json格式的字符串,如下 data: JSON.stringify({ ...
- 前端学习——使用Ajax方式POST JSON数据包
0.前言 本文解释怎样使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好 ...
- Django使用cropbox包来上传裁剪图片
1.使用cropbox包来上传裁剪图片,可见介绍:https://www.jianshu.com/p/6c269f0b48c0I ImgCrop包包括:css--style.css,js--cropb ...
- 从零开始写一个npm包及上传
最近刚好自己需要写公有npm包及上传,虽然百度上资料都能找到,但是都是比较零零碎碎的,个人就来整理下,如何从零开始写一个npm包及上传. 该篇文件只记录一个大概的流程,一些细节没有记录. tips: ...
- 使用FormData数据做图片上传: new FormData() canvas实现图片压缩
使用FormData数据做图片上传: new FormData() canvas实现图片压缩 ps: 千万要使用append不要用set 苹果ios有兼容问题导致数据获取不到,需要后台 ...
随机推荐
- stm32的systick原理与应用
/* SysTick滴答定时器 一.功能 SysTick定时器是一个简单的定时器,CM3\CM4内核芯片都具备此定时器.SysTick定时器常用来做延时,采用实时系统时则用来做系统时钟.无论用作延时还 ...
- Linux安全层详解
1 bastion(安全堡垒系统)通常配置两个服务: 1 服务定义系统的功能: 2 服务支持远程访问: 原则: 1 不需要某个软件卸载掉: 2 需要某个软件但不使用就不要激活: 为各个bastion系 ...
- 51nod_1445 变色DNA 最短路模板 奇妙思维
这是一道最短路模板题,但是在理解题意和提出模型的阶段比较考验思维,很容易想到并且深深进入暴力拆解题目的无底洞当中. 题意是说:给出一个邻接矩阵,在每个点时,走且仅走向,合法路径中编号最小的点.问题是是 ...
- Python基础闯关失败总结
对列表进行创建切片增删改查 对列表进行创建 L1 = [] # 定义L1 为一个空列表 List() #创建List 空列表 对列表进行查询 L2 = ['a','b','c','d','a','e ...
- codeforce830A. Office Keys
A. Office Keys time limit per test: 2 seconds memory limit per test: 256 megabytes input standard: i ...
- 使用JavaConfig方式-Spring 基础学习
在Spring的使用中,大量采用xml方式配置类之间的关系太过于繁琐(个人这么认为),而在学习了Spring4后发下使用JavaConfig方式来配置这些关系会更加的简单明了. 测试环境 1. Apa ...
- 创建 PSO
TechNet 库 Windows Server Windows Server 2008 R2 und Windows Server 2008 浏览 Windows Server 技术 Active ...
- 程序集链接器(AL.exe)
AL.exe使用程序可以生成一个EXE文件或者DLL PE文件(其中只包含对其他模块中的类型进行描述的一个清单). 不要在普通的命令行窗口中编译,请先打开C:\ProgramData\Microsof ...
- 使用anaconda
Please run $ source /opt/anaconda/bin/activate root $ source /opt/anaconda/bin/deactivate root to ...
- idea中将项目与github关联
© 版权声明:本文为博主原创文章,转载请注明出处 1.在github中创建一个账号:https://github.com/join?source=header-home 2.下载并安装git:http ...