|
|
|
@ -2021,6 +2021,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
|
public R mergeOrderItem(String entId, String orderInfoId,List<String> itemList) throws Exception{ |
|
|
|
|
|
|
|
|
|
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(Arrays.asList(orderInfoId), null); |
|
|
|
|
OrderInfo orderInfo = orderMapper.selectOrderInfoByOrderId(orderInfoId, null); |
|
|
|
|
if(ObjectUtil.isNull(orderItemInfos)){ |
|
|
|
|
return R.error("根据订单号未查询到明细行信息"); |
|
|
|
|
} |
|
|
|
@ -2033,6 +2034,12 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
|
}else{ |
|
|
|
|
collect = orderItemInfos; |
|
|
|
|
} |
|
|
|
|
TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(orderInfo.getNsrsbh(), entId); |
|
|
|
|
if(taxEquipmentInfo == null ||StringUtils.isBlank(taxEquipmentInfo.getSksbCode())){ |
|
|
|
|
return R.error("税控设备查询为空"); |
|
|
|
|
} |
|
|
|
|
String sksbCode = taxEquipmentInfo.getSksbCode(); |
|
|
|
|
boolean termType = OrderInfoEnum.TAX_EQUIPMENT_FGBW.equals(sksbCode) || OrderInfoEnum.TAX_EQUIPMENT_FGUKEY.equals(sksbCode); |
|
|
|
|
Map<String, List<OrderItemInfo>> collect1 = collect.stream().map(t->{ |
|
|
|
|
t.setXmmc(StringUtils.isBlank(t.getXmmc())?"":t.getXmmc()); |
|
|
|
|
t.setXmdw(StringUtils.isBlank(t.getXmdw())?"":t.getXmdw()); |
|
|
|
@ -2070,8 +2077,8 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
|
} |
|
|
|
|
orderItemInfo.setCreateTime(new Date()); |
|
|
|
|
orderItemInfo.setSe(se.toString()); |
|
|
|
|
if(se.subtract(taxAmount).abs().doubleValue() > 0.06){ |
|
|
|
|
log.info("订单id:{}合并明细超过0.06",orderInfoId); |
|
|
|
|
if((termType && se.subtract(taxAmount).abs().doubleValue() > 0.01) || (!termType &&se.subtract(taxAmount).abs().doubleValue() > 0.06)){ |
|
|
|
|
log.info("订单id:{}合并明细误差超过额度",orderInfoId); |
|
|
|
|
BigDecimal taxAndAmount = xmje.add(se); |
|
|
|
|
BigDecimal taxAmountNew = taxAndAmount.divide(new BigDecimal("1").add(taxRate),0).multiply(taxRate).setScale(2,RoundingMode.HALF_UP); |
|
|
|
|
BigDecimal xmjeNew = taxAndAmount.subtract(taxAmountNew); |
|
|
|
@ -2079,7 +2086,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
|
orderItemInfo.setSe(taxAmountNew.toString()); |
|
|
|
|
if(StringUtils.isNotBlank(orderItemInfo.getXmsl())){ |
|
|
|
|
BigDecimal xmdj = xmjeNew.divide(xmsl, 8, RoundingMode.HALF_UP); |
|
|
|
|
if(xmdj.multiply(xmsl).subtract(xmjeNew).longValue() > 0.01){ |
|
|
|
|
if(xmdj.multiply(xmsl).subtract(xmjeNew).doubleValue() > 0.01){ |
|
|
|
|
orderItemInfo.setXmsl(xmjeNew.divide(xmdj,8,RoundingMode.HALF_UP).toString()); |
|
|
|
|
} |
|
|
|
|
orderItemInfo.setXmdj(xmdj.toString()); |
|
|
|
@ -2092,12 +2099,14 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
|
deleteItem.addAll(value.stream().map(t->t.getId()).collect(Collectors.toList())); |
|
|
|
|
} |
|
|
|
|
log.debug("合并明细{}",JSONObject.toJSONString(orderItemInfoList)); |
|
|
|
|
if((termType && diffSe.abs().doubleValue() > 0.06) || (!termType && diffSe.abs().doubleValue() > 1.27)){ |
|
|
|
|
return R.error("合并失败,合并明细后价税合计超过总的误差范围"); |
|
|
|
|
} |
|
|
|
|
if(!orderItemInfoList.isEmpty()){ |
|
|
|
|
orderItemInfoMapper.deleteItemByItemId(deleteItem); |
|
|
|
|
orderItemInfoMapper.insertOrderItemByList(orderItemInfoList); |
|
|
|
|
} |
|
|
|
|
//更新清单标志 重新设置金额
|
|
|
|
|
OrderInfo orderInfo = orderMapper.selectOrderInfoByOrderId(orderInfoId, null); |
|
|
|
|
OrderInfo orderInfoNew = new OrderInfo(); |
|
|
|
|
orderInfoNew.setId(orderInfoId); |
|
|
|
|
orderInfoNew.setUpdateTime(new Date()); |
|
|
|
|