MQ 分拆Json数据包然后上传
2024-09-03 03:01:33
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;
}
}
}
最新文章
- 聊下并发和Tomcat线程数(错误更正)
- [转]Struts2数据传输的背后机制:ValueStack(值栈)
- opencart二次开发小记
- (状压) Marriage Ceremonies (lightOJ 1011)
- Android内存泄漏问题(一)
- UVA 10499 (13.08.06)
- JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
- (转载)PHP array_slice() 函数
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
- (原)matlab中使用mex编译多个cpp文件
- Jsp的include指令静态导入和动态导入的区别
- 快速学习springMVC框架原理
- cocos2dx - shader实现任意动画的残影效果
- 树的遍历——c#实现
- AYUI第12个作品-英雄联盟-魔法少女的星光水晶2.0-WPF版本
- Linux之cd、pwd、mkdir、rmdir
- Mac: Alias[设置命令的别名]
- Map集合——双列集合
- 1-MAVEN 仓库
- Jupyter Notebook 工作空间 / 默认路径 的设置方式