|
|
@ -50,6 +50,7 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam; |
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.BigDecimal; |
|
|
@ -1612,23 +1613,32 @@ public class OrderInfoServiceImpl implements OrderInfoService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh){ |
|
|
|
public R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit){ |
|
|
|
//校验是否为同一税号 校验开票情况
|
|
|
|
//校验是否为同一税号 校验开票情况
|
|
|
|
//根据税号+ orderinfoid查询明细信息
|
|
|
|
//根据税号+ orderinfoid查询明细信息
|
|
|
|
List<OrderProcessInfo> orderProcessInfos = orderProcessInfoMapper.selectByOrderIds(orderInfoIds, Arrays.asList(xhfNsrsbh)); |
|
|
|
List<OrderProcessInfo> orderProcessInfos = orderProcessInfoMapper.selectByOrderIds(orderInfoIds, Arrays.asList(xhfNsrsbh)); |
|
|
|
List<String> collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getDdh()).collect(Collectors.toList()); |
|
|
|
List<String> collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getOrderInfoId()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if(collect == null){ |
|
|
|
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(orderInfoIds, Arrays.asList(xhfNsrsbh)); |
|
|
|
return R.error("订单状态有误,请检查后重试"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(collect, Arrays.asList(xhfNsrsbh)); |
|
|
|
if(orderItemInfos == null ||orderItemInfos.isEmpty()){ |
|
|
|
if(orderItemInfos == null ||orderItemInfos.isEmpty()){ |
|
|
|
return R.error("当前明细为空不允许进行单位换算"); |
|
|
|
return R.error("当前明细为空不允许进行单位换算"); |
|
|
|
} |
|
|
|
} |
|
|
|
orderItemInfos.forEach(t->{ |
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(t.getXmsl())){ |
|
|
|
orderItemInfos = orderItemInfos.stream() |
|
|
|
|
|
|
|
.filter(t->StringUtils.isNotBlank(t.getXmsl()) && originUnit.equals(t.getXmdw())) |
|
|
|
|
|
|
|
.map(t->{ |
|
|
|
t.setXmsl(new BigDecimal(t.getXmsl()).multiply(new BigDecimal(ratio)).setScale(8, RoundingMode.HALF_UP).toString()); |
|
|
|
t.setXmsl(new BigDecimal(t.getXmsl()).multiply(new BigDecimal(ratio)).setScale(8, RoundingMode.HALF_UP).toString()); |
|
|
|
t.setXmdj(new BigDecimal(t.getXmje()).divide(new BigDecimal(t.getXmsl()),8,RoundingMode.HALF_UP).toString()); |
|
|
|
t.setXmdj(new BigDecimal(t.getXmje()).divide(new BigDecimal(t.getXmsl()),8,RoundingMode.HALF_UP).toString()); |
|
|
|
|
|
|
|
t.setXmdw(newUnit); |
|
|
|
|
|
|
|
return t; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
).collect(Collectors.toList()); |
|
|
|
//更新明细表
|
|
|
|
//更新明细表
|
|
|
|
|
|
|
|
if(orderItemInfos == null || orderItemInfos.isEmpty()){ |
|
|
|
|
|
|
|
return R.error("未匹配到正确单位的数据或数量均为空"); |
|
|
|
|
|
|
|
} |
|
|
|
orderItemInfoMapper.updateOrderItemId(orderItemInfos); |
|
|
|
orderItemInfoMapper.updateOrderItemId(orderItemInfos); |
|
|
|
return R.ok(); |
|
|
|
return R.ok(); |
|
|
|
} |
|
|
|
} |
|
|
|