feature:明细合并

release
gaorl 2 years ago
parent 1ec32c3660
commit 94f51e3011
  1. 21
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java

@ -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,16 +2077,16 @@ 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.multiply(taxAmountNew);
orderItemInfo.setXmje(xmje.add(se).subtract(taxAmountNew).toString());
BigDecimal xmjeNew = taxAndAmount.subtract(taxAmountNew);
orderItemInfo.setXmje(xmjeNew.toString());
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());

Loading…
Cancel
Save