1、java中String类型与Integer类型判断不为空
(1)String类型:
null != handlerDateBegin && !"".equals(handlerDateBegin),使用equals;
或者使用StringUtils.isNoEmpty();用来判断非空;
(2)Integer类型:
null != handlerDateBegin && ""!=(handlerDateBegin),数字类型使用“!=”来判断;
2、营改增问题:含税balancce=不含税balance+保费VAT;
当不含税balance、保费VAT可以进行单个结算时,如何操作,当包含境外且境外需要代扣代缴增值税,即保费VAT不参与计算:
(1)premiumFlag: 0 1,premiumVATFlag: 0 1
当某项结算时标识为1,否则为0
1)可以通过sql中sum函数求和方式进行操作,首先遍历全部计算时,和为多少,然后在数据库中查询合计值,当合计值与全部结算是否相同,是则认为完全结算,重置一个状态,然后在下次查询时过滤掉重置后状态数据,否则继续查询出来。
查询出来数据可能从未结算也可能部分结算,对于部分结算需要展示出已结算项不能勾选。即需要实时查库返回可结付标识premiumSettleFlag、premiumVATSettleFlag,进行判断
2)通过sql关联查询方式过滤
select fsb.premiumFlag,fsb.premiumVATFlag,fsb.* from fj_settle_bill fsb,fj_settle s
where
fsb.premiumFlag='1'
and fsb.accModel='O'
and fsb.paymentId in(select paymentId from fj_settle_bill fsb2,fj_settle fs2
where fsb2.premiumVATFlag='1'
and fsb2.settleNo = fs2.settleNo
and fs2.validFlag='0'
and fsb2.accBillNo='D2017RA01001115500'
and fsb2.serialNo='1'
)
and s.validFlag='0'
and fsb.settleNo = s.settleNo
and fsb.accBillNo='D2017RA01001115500'
and fsb.serialNo='1';
where
fsb.premiumFlag='1'
and fsb.accModel='O'
and fsb.paymentId in(select paymentId from fj_settle_bill fsb2,fj_settle fs2
where fsb2.premiumVATFlag='1'
and fsb2.settleNo = fs2.settleNo
and fs2.validFlag='0'
and fsb2.accBillNo='D2017RA01001115500'
and fsb2.serialNo='1'
)
and s.validFlag='0'
and fsb.settleNo = s.settleNo
and fsb.accBillNo='D2017RA01001115500'
and fsb.serialNo='1';