工作日志2011-10-25

 


关于批量数据处理的问题?
1.有这样的一个接口,从另个数据库拿数据,拿到之后添加到我们现在数据库,最开始一种解决方案是一次性(并发)插入,如果有

一条错误,全部回滚。但是这种方案如果出问题很难解决,原因是一旦有一条出问题很难找到问题点。最好是一次性拿2000条,在中

间出问题还让其接着往下执行,把当前的错误信息记录下来,最后可以一次性处理这些错误信息。还有种方案是一次读过来2000跳,

一条一条插入。两种方法都可行。通过这个问题,我彻底的明白了一个道理数据库里面的数据本身就是程序的一部分,现在感触更深


2.预览页面计算市场零售价
function SetViewServer() {
    $("#my_menu").find("tr.F").each(function () {
        if ($(this).find("input[name='hickCheckList']:checked").length > 0) {
         //   debugger;
            var menuid = $(this).attr("id");
            var price = parseFloat($.trim($(this).find("td.marketprice:eq(0)").html())); 得到当前的选择的价格
            $("#my_view").find("tr").each(function () {
               // debugger;
                var viewid = $(this).children("td:eq(0)").html();
                if (viewid == menuid) {
                    $(this).find("td.marketprice:eq(0)").html(price);
                }
            });
        }

    });

}

//得到服务产品零售价
function GetServerSale() {
    //得到页面所有选择的服务产品
    $("#my_menu").find("tr.F").each(function () {
        if ($(this).find("input[name='hickCheckList']:checked").length > 0) {
            var sumprice = 0;
            var listpricerate = parseFloat($(this).find("input[name='hidProductRIILBusPrice']:eq(0)").val());
            var costpricerate = parseFloat($(this).find("input[name='hidProductRIILCostPriceRate']:eq(0)").val());
            var productclassf = $(this).find("input[name='hidProductRIILClassID']:eq(0)").val();
            $("#my_menu").find("tr.CF").each(function () {
                if ($(this).find("input[name='hickCheckList']:checked").length > 0 && $(this).find("td.nums:eq

(0)").html() != "") {
                    var productclasscf = $(this).find("input[name='hidProductRIILClassID']:eq(0)").val();
                    if (productclassf == productclasscf) {
                        var price = parseFloat($.trim($(this).find("td.marketprice:eq(0)").html()));
                        var nums = parseInt($.trim($(this).find("td.nums:eq(0)").html()));
                        sumprice += price * nums;
                    }
                }
            });
            $(this).find("td.marketprice:eq(0)").html((sumprice * listpricerate).toFixed(2));
            $(this).find("input[name='hidProductRIILCostPrice']:eq(0)").val((sumprice * costpricerate).toFixed(2));
        }
    });
}

总结:这两个方法之后,对jq有点感觉了

3.同步数据的问题
这个需求是这样的,我现在数据要同步到ERP里面,现在表里面有两个字段islocked与issuccess,默认值都是false,当前数据同步

成功之后,都是true,2分钟同步一次,2分钟根据当前时间那到这个时间之前的没有同步过去的所有数据,拿到之后进行如下操作。
拿到一个当前DataTable
第一种方案是锁定当前DataTable所有的行,然后再进行一条条同步。
if(islocked==false &&issuccess==false)
{
for(当前datatable)
{
全部锁定
}
}
然后一个循环写到ERP。

第二种方案,一个锁定之后,同步一条数据到ERP。

坏处,这个数据源有可能还在增加,当前同步的数据不确定,因为我数据库链接还在打开,别人操作向这个数据库存数据,导致同步

数据部确定。
if(islocked==false &&issuccess==false)
{
//没有for循环
sygn();
}
//同步一条记录
sygn(){

}

最后同步完之后,所有状态全部是TRUe,如果不是TRUE,则下次会拿到数据接着同步。
总结:这个程序是2分钟同步一次,这个是节奏,如果2分钟我从数据库拿到数据都没有同步过去,有开始一个新的任务,这样会怎么

样?其实我们期望是用户不管在ECP还是ERP里面操作,感觉在一个系统上似的。期望是在这2分钟同步过程中,把数据瞬间同步到

ERP.最值的注意的一点是:数据一直在增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

18妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值