菜鸟的项目经验总结(二)

两个账套之间的同步问题

听到实施描述这个问题的时候,感觉肯定是数据库中没有记录数据更改的操作,因为当初他判断同步范围的时候用的是ts的一个字段,这个字段记录的是时间,但是排查过后发现并不是这个问题,对数据的update操作ts字段是可以很好的记录的。实际上我们远远低估了公司产品的能力,记录更新这样的常规操作是肯定有的。在这样品台的同步用的并不是我能想到的直接select、insert的操作,而是走了中间交换平台,总的思路是这样的通过select将起始数据库的数据查出来,再通过拼写成xml的文件的形式,写入到交换平台,交换平台会根据xml文件中的信息来进行相应的操作。之所以更新失败是因为交换平台在进行update操作的时候会取日志包中查一下,看看更新的这条数据的code是否存在在xx_idcontrast,如果不存在的话他是不能进行update操作的。要解决这个问题从数据还没录入的时候就在bd_customer上建一个触发器,将insert的数据直接就插入到xx_idcontrast。如果要是部分数据已经存在了,那就通过写sql过程完成将bd_customer中的内容同步到相应的xx_idcontrast中。

drop procedure select2Insert
CREATE  PROCEDURE select2Insert  AS
declare  @file_id     char(40)
declare  @pk_bill     char(20)
declare  @pk_idcontra bigint
declare  cur_data  cursor LOCAL for 
select code,pk_customer from bd_customer where code not in(
select file_id from xx_idcontrast where len(file_id)=8)
set @pk_idcontra = 5764513669205076900
open cur_data
fetch next from cur_data into @file_id,@pk_bill
while(@@fetch_status = 0) 
begin

 set @pk_idcontra = @pk_idcontra+1
 insert into xx_idcontrast(bill_type,file_id,pk_bill,pk_idcontra) values ('customer', @file_id,@pk_bill,convert(varchar(20),@pk_idcontra) )
 
 fetch next from cur_data into @file_id,@pk_bill 
end
close cur_data

EXEC select2Insert

sql查询返回值类型为int返回值是null的异常处理

持久层采用的是Mybatis的框架,当ResultType取值int,根据我们的查询条件返回的值为null即没有查询到数据,这时候我们的程序就会发生这样的错误:

findserialNumberByCondtion attempted to return null from a method with a primitive return type (int)

产生这个问题的原因就是我们int是基本类型,她的值是不存在null这时候我们ResultType的类型使用Integer,这是一个对象的数据类型他对应的值是可以为null的。取到值之后我们在根据是否为null,对为null的情况做一个赋默认值的操作。

Js引起的闭包问题解决

这个供应商信息维护的界面我想要的效果是但我点击相应的按钮他再弹出,但是现在界面加载他就弹出来了,问题是什么呢?

 如果没有将addRows()函数包含进去的话,他的作用域应该是window(描述并不准确),但是大概就是这么个问题:

Java向上向下取整中遇到的问题

在项目上遇到一个发货单打印的问题,要求根据发货量与箱容量来确定需要发货的箱数以及每箱货的数量,在这种情况下之后最后一箱的容量可能不等于箱容量。求值得到返货数量的过程中,发货数量以及箱容量都是int型,用的是Math.ceil(),Math.floor()但是求到的似乎一直都是向下取整的。发生这种原因是我们的这个两个函数只会对其中的数值取整,而在使用的时候我直接是这样使用的Math.ceil(发货数量/箱容量),直接用除的运算符运算两个int的得到的就还是int的,所以我们用这两个函数进行处理毫无意义。正确的处理是在两个int类型的数处理前讲一个装换为浮点型。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值