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;
}
}
}

最新文章

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

热门文章

  1. B1061 判断题 (15分)
  2. Redis实现之对象(三)
  3. idea 占用内存优化调整
  4. 安装 Windows Server 2012 Active Directory 只读域控制器 (RODC)(级别 200)
  5. 2017腾讯Web前端实习生招聘笔试题总结
  6. jquery的html、text、val的用法
  7. sqlserver把bak备份还原到另一个数据库
  8. 201621123034 《Java程序设计》第2周学习总结
  9. python基础-集合小结
  10. AngularJs MVC 详解