Browse Source

合并数据BUG修复

anderx 6 years ago
parent
commit
c78d123d69

+ 12 - 4
src/main/java/com/goafanti/order/service/impl/OrderReceivablesServiceImpl.java

@@ -157,16 +157,24 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 			//计算收款结果
 			BigDecimal bd = bill.add(tr.getAmount().abs());
 			
+			//判断表中数据
+			BigDecimal count = new BigDecimal(0).add(bd);
+			for (TOrderBillNew tBill : listBull) {
+				if (tBill.getOrderNo().equals(tr.getOrderNo())) {
+					count=count.add(tBill.getTransactionAmount());
+					continue;
+				}
+			}
 			TOrderBonus bonus = new TOrderBonus();
 			bonus.setId(UUID.randomUUID().toString());
 			bonus.setOrderNo(tr.getOrderNo());
 			bonus.setGrantBy(TokenManager.getAdminId());
 			int lstaus = 0;//如果订单流水小于首付 lstaus 0
-			if(bd.compareTo(t.getTotalAmount()) == 1){//如果订单流水总额大于总金额 return -1
+			if(count.compareTo(t.getTotalAmount()) == 1){//如果订单流水总额大于总金额 return -1
 				tr.setStatus(2);
 				temporaryReceivablesMapper.updateByPrimaryKeySelective(tr);
 				continue;
-			}else if (bd.compareTo(t.getTotalAmount()) == 0) {//等于总额
+			}else if (count.compareTo(t.getTotalAmount()) == 0) {//等于总额
 				//付完款//如果订单流水等于于总金额 lstaus 2
 				lstaus = 2;
 				bonus.setBonusSubject(BonusSubject.WK.getCode());//12
@@ -191,7 +199,7 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 					temporaryReceivablesMapper.updateByPrimaryKeySelective(tr);
 				}
 				addOrderLog(tr.getOrderNo(), OrderLogProcess.CWQK.getCode());	
-			}else if (bd.compareTo(t.getTotalAmount()) == -1) {//小于总额
+			}else if (count.compareTo(t.getTotalAmount()) == -1) {//小于总额
 				//如果订单流水小于总金额
 				if(bd.compareTo(t.getFirstAmount()) == 0 || bd.compareTo(t.getFirstAmount()) == 1){//首付完成
 					//查看首付奖是否存在
@@ -235,7 +243,7 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 			TOrderNew orderNew = new TOrderNew();
 			orderNew.setOrderNo(tr.getOrderNo());
 			//这里的已收金额是以前收的所有金额加上本次收的金额
-			orderNew.setSettlementAmount(bd);
+			orderNew.setSettlementAmount(count);
 			orderNew.setLiquidationStatus(lstaus);
 			if((lstaus == LiquidationNewState.WAIT_PAY_LAST_BALANCE.getCode() 
 					|| lstaus == LiquidationNewState.ALREADY_PAY.getCode())