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 != "0")
                    {
                        return;
                    }

                    //2、修正数据,将交强险、商业险到期日为 "0001-01-01"的数据到期日置为 NULL
                    gateway.ModifyDueDate();

                    //3、保险历史数据上传,每500条作为一个Json
                    DataSet dcsDS = gateway.GetAllInsuranceData();

                    JsonDCS mainJson = new JsonDCS();
                    mainJson.ver = 1;
                    mainJson.bl = "S.I.INSURANCEBUY";
                    mainJson.sbl = new ArrayList();

                    DCSHeader dcsHeader = new DCSHeader();
                    dcsHeader.bl = "S.I.INSURANCEBUY";
                    dcsHeader.ver = 1;

                    //一次性将历史数据写入一个Json之中
                    if (dcsDS.Tables[0].Rows.Count > 0)
                    {
                        JsonDCS insuranceBuyJson = new JsonDCS();
                        insuranceBuyJson.ver = 1;
                        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[0].Rows.Count][];
                        for (int i = 0; i < dcsDS.Tables[0].Rows.Count; i++)
                        {
                            insuranceBuyJson.data[i] = new object[] { dcsDS.Tables[0].Rows[i]["FRAMENO"], CanHelper.ToDate(dcsDS.Tables[0].Rows[i]["BUYDATE"]), dcsDS.Tables[0].Rows[i]["INSURERCODE"],
                                dcsDS.Tables[0].Rows[i]["INSURANCETYPE"], CanHelper.ToDate(dcsDS.Tables[0].Rows[i]["INSURANCEBUYDATE"]), CanHelper.ToDate(dcsDS.Tables[0].Rows[i]["INSURANCEMATURITYDATE"]),
                                dcsDS.Tables[0].Rows[i]["SALESTYPE"], dcsDS.Tables[0].Rows[i]["REMARK"], dcsDS.Tables[0].Rows[i]["BIZNO"],
                                dcsDS.Tables[0].Rows[i]["TRAFFICNO"], dcsDS.Tables[0].Rows[i]["COMMERCIALNO"], dcsDS.Tables[0].Rows[i]["CUSTOMERNO"],
                                dcsDS.Tables[0].Rows[i]["COVERAGETYPE"], dcsDS.Tables[0].Rows[i]["SALECHANNEL"], dcsDS.Tables[0].Rows[i]["ISCHANGE"],
                                dcsDS.Tables[0].Rows[i]["HANDLEPERSON"], dcsDS.Tables[0].Rows[i]["NEXTPERSON"], dcsDS.Tables[0].Rows[i]["CUSTORIGIN"],
                                CanHelper.ToDate(dcsDS.Tables[0].Rows[i]["COMMERCIALSTARTDATE"]), CanHelper.ToDate(dcsDS.Tables[0].Rows[i]["COMMERCIALENDDATE"]), dcsDS.Tables[0].Rows[i]["INSURED"],
                                dcsDS.Tables[0].Rows[i]["TEL"], dcsDS.Tables[0].Rows[i]["TRAFFICFEE"], dcsDS.Tables[0].Rows[i]["TRAFFICDISCOUNT"],
                                dcsDS.Tables[0].Rows[i]["COMMERCIALFEE"], dcsDS.Tables[0].Rows[i]["COMMERCIALDISCOUNT"], dcsDS.Tables[0].Rows[i]["TOTALFEE"],
                                dcsDS.Tables[0].Rows[i]["DELETED"], dcsDS.Tables[0].Rows[i]["INPUTPERSON"], dcsDS.Tables[0].Rows[i]["INPUTTIME"],"U"};
                        }

                        mainJson.sbl.Add(insuranceBuyJson);
                    }

                    //分解Json传送数据
                    if (mainJson.sbl.Count > 0)
                    {
                        int rowCount = ((JsonDCS) mainJson.sbl[0]).data.Length;
                        if (mainJson.sbl != null && mainJson.sbl[0] != null && rowCount > 500) //大于500行的分包发送
                        {
                            //childCount 分解的后需要传送的Json数目
                            int childCount = rowCount / 500;
                            if (rowCount % 500 != 0)
                            {
                                childCount++;
                            }
                            JsonDCS subJson = (JsonDCS) mainJson.sbl[0];
                            for (int i = 1; i < childCount + 1; i++)
                            {
                                JsonDCS childMainJson = new JsonDCS();
                                childMainJson.bl = "S.I.INSURANCEBUY";
                                childMainJson.ver = 1;
                                childMainJson.sbl = new ArrayList();

                                JsonDCS childJson = new JsonDCS();
                                childJson.bl = "S.I.INSURANCEBUY.INSURANCEBUY_I0";
                                childJson.ver = 1;
                                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[500][];
                                if (i == childCount)
                                {
                                    childJson.data = new object[rowCount - ((i - 1) * 500)][];
                                }
                                for (int j = 0; j < 500; j++)
                                {
                                    if (j + (i - 1) * 500 == rowCount)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        childJson.data[j] = subJson.data[j + (i - 1) * 500];
                                    }
                                }
                                childMainJson.sbl.Add(childJson);
                                gateway.CacheData(mainJson, dcsHeader);
                            }
                        }
                        else
                        {
                            gateway.CacheData(mainJson, dcsHeader);
                        }

                        //4、设置系统参数UploadFlag = ‘1‘
                        commonDataGateway.UpdateStringValue("1", "Repair", "UploadFlag");

                        trans.Commit();
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw ex;
                }
            }
        }
时间: 2024-09-30 18:53:49

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

SpringMVC返回JSON数据以及文件上传、过滤静态资源

返回JSON数据 在如今前后端分离的趋势下,后端基本不需要再去关心前端页面的事情,只需要把数据处理好并通过相应的接口返回数据给前端即可.在SpringMVC中,我们可以通过@ResponseBody注解来返回JSON数据或者是XML数据. 这个注解的作用是将控制器方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,也就是HTTP响应的内容体,一般我们都是用来返回JSON数据,因为默认是按JSON格式进行转换的. 需要注意的是,在使用此注解之后不会再走视图解

[办公应用]如何将excel合并单元格分拆后每个单元格上仍保留数据?

合并单元格虽然美观,但是无法进行排序.筛选等操作. 只有合并单元格拆分后才可以按常规进行统计.但是普通拆分后,excel仅保留合并单元格数据到区域左上角的单元格. 解决方案:选定多个合并单元格,应用本宏即可每个单元格均保留数据:Sub 拆分() Dim c As Range For Each c In ActiveSheet.UsedRange.Cells If c.MergeCells Then c.Select c.UnMerge Selection.Value = c.Value End

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

0.前言 本文解释如何使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好些,层次结构也更清晰. 为了说明问题,前端和后端较为简单,重点突出AJAX的应用. [前端]--add-post-json.html 图1 add页面 [后端]--add-post-json.php <?php // 返回JSON格式 header('Content-Type:application/jso

c# 生成json数据包

json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", "url":"http://weixin.qq.com/download", "topcolor"

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

网络安全系列之五十五 利用抓包来上传webshell

在Web渗透的过程中,最为麻烦的一个环节就是上传WebShell,之前曾介绍过利用数据库备份来上传,这也属于最为简单和古老的一种方法.本文将介绍另外一种利用抓包来上传WebShell的方法,目标网站采用南方数据5.0,实验平台采用IIS搭建,如何利用IIS搭建ASP网站可参考博文http://yttitan.blog.51cto.com/70821/1579372. 首先登录网站后台,找到上传点. 点击浏览按钮,打开"选择文件"窗口,随意选择一张准备上传的图片. 注意,这里先不要点击&

java~gradle构建公用包并上传到仓库~使用私有仓库的包

在新的项目里使用仓库的包 上一讲中我们说了java~gradle构建公用包并上传到仓库,如何发布公用的非自启动类的包到私有仓库,而这一讲我们将学习如何使用这些包,就像我们使用spring框架里的功能包一样. 参考:http://www.zhyea.com/2018/04/24/gradle-repository-username-password.html?spm=a2c40.rdc_maven_repo.0.0.12fd3054jv5EgP 公司私有的maven仓库在访问时是需要用户名密码的.

Linux内核--网络栈实现分析(六)--应用层获取数据包(上)

本文分析基于内核Linux 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907 更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 上篇博文分析了传输层从网络层获取数据包后将

返回Json数据浏览器带上&lt;pre&gt;&lt;/pre&gt;标签解决方法

问题:  当后台获取到前台传来的文件时(例如上传功能, 导入功能), 返回类型为application/json, 这个时候响应到前端的JSON格式的数据格式可能是: <pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre> 这个是不同浏览器对返回数据处理的问题. 解决方法:      1. 在前端解决