修改预制发票自动拆分成品油和非成品油

release
wangrangrang 2 years ago
parent 2771b60ca8
commit 6a4ddb94fb
  1. 72
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java

@ -46,11 +46,14 @@ import com.dxhy.order.utils.JsonUtils;
import com.dxhy.order.utils.NsrsbhUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -132,6 +135,9 @@ public class InvoiceServiceImpl implements InvoiceService {
@Resource
private TaxClassCodeMapper taxClassCodeMapper;
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#0000");
private static final String CF = "cf";
@Override
@Transactional
@ -139,41 +145,85 @@ public class InvoiceServiceImpl implements InvoiceService {
List<PageInvoiceItem> pageInvoiceItemList = pageInvoiceReq.getPageInvoiceItemList();
//查询数据列表
List<CommonOrderInfo> commonOrderInfos = orderInfoService.batchQueryOrderInfoByOrderIdsAndNsrsbh(pageInvoiceItemList);
List<CommonOrderInfo> commonOrderInfoList=new ArrayList<CommonOrderInfo>();
//购方是否为空、税编是否为空校验、成品油校验
for(CommonOrderInfo commonOrderInfo:commonOrderInfos){
if(StrUtil.isBlank(commonOrderInfo.getOrderInfo().getGhfNsrsbh()) || StrUtil.isBlank(commonOrderInfo.getOrderInfo().getGhfMc()) ){
return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"购方信息为空,请补全!");
}
String cpy = "";
// String cpy = "";
String kcp = baseServiceConfig.getKcp();
boolean kcpMark = kcp.contains(commonOrderInfo.getOrderItemInfo().get(0).getSpbm());
List<OrderItemInfo> cpyOrderItems = new ArrayList<OrderItemInfo>();
List<OrderItemInfo> nocpyOrderItems = new ArrayList<OrderItemInfo>();
for(OrderItemInfo orderItemInfo: commonOrderInfo.getOrderItemInfo()){
if(StrUtil.isBlank(orderItemInfo.getSpbm())){
return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"第"+orderItemInfo.getSphxh()+"行商品税编为空,请补全!");
}else {
TaxClassCodeEntity taxClassCodeEntity = taxClassCodeMapper.selectTaxClassCodeBySpbm(orderItemInfo.getSpbm());
if(StrUtil.isNotBlank(cpy)){
if(!cpy.equals(taxClassCodeEntity.getCpy())){
return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"成品油和非成品油税编不能混开,请做手动拆分处理!");
}
// if(StrUtil.isNotBlank(cpy)){
// if(!cpy.equals(taxClassCodeEntity.getCpy())){
// return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"成品油和非成品油税编不能混开,请做手动拆分处理!");
// }
// }else {
// cpy = taxClassCodeEntity.getCpy();
// }
//
if(ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())){
//成品油明细
cpyOrderItems.add(orderItemInfo);
}else {
cpy = taxClassCodeEntity.getCpy();
//非成品油明细
nocpyOrderItems.add(orderItemInfo);
}
if(kcp.contains(orderItemInfo.getSpbm()) != kcpMark){
return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"矿产品与非矿产品税编不能混开,请做手动拆分处理!");
}
}
}
if(ConfigureConstant.STRING_Y.equals(cpy) && commonOrderInfo.getOrderItemInfo().size()>ConfigureConstant.INT_8){
if(CollectionUtils.isEmpty(cpyOrderItems)||CollectionUtils.isEmpty(nocpyOrderItems)){
commonOrderInfo.setOrderItemInfo(CollectionUtils.isEmpty(cpyOrderItems)?nocpyOrderItems:nocpyOrderItems);
commonOrderInfoList.add(commonOrderInfo);
}else {
//成品油和非成品油混合
OrderInfo cpyOrderInfo = new OrderInfo();
BeanUtils.copyProperties(commonOrderInfo.getOrderInfo(),cpyOrderInfo);
cpyOrderInfo.setKphjje(cpyOrderItems.stream().map(m->new BigDecimal(m.getJshj())).reduce(BigDecimal.ZERO, BigDecimal::add).toString());
cpyOrderInfo.setHjse(cpyOrderItems.stream().map(m->new BigDecimal(m.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add).toString());
cpyOrderInfo.setDdh(commonOrderInfo.getOrderInfo().getDdh() + CF + DECIMAL_FORMAT.format(1));
CommonOrderInfo cpyCommonOrderInfo = new CommonOrderInfo();
BeanUtils.copyProperties(commonOrderInfo,cpyCommonOrderInfo);
cpyCommonOrderInfo.setOrderItemInfo(cpyOrderItems);
cpyCommonOrderInfo.setOrderInfo(cpyOrderInfo);
commonOrderInfoList.add(cpyCommonOrderInfo);
OrderInfo nocpyOrderInfo = new OrderInfo();
BeanUtils.copyProperties(commonOrderInfo.getOrderInfo(),nocpyOrderInfo);
nocpyOrderInfo.setKphjje(nocpyOrderItems.stream().map(m->new BigDecimal(m.getJshj())).reduce(BigDecimal.ZERO, BigDecimal::add).toString());
nocpyOrderInfo.setHjse(nocpyOrderItems.stream().map(m->new BigDecimal(m.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add).toString());
nocpyOrderInfo.setDdh(commonOrderInfo.getOrderInfo().getDdh() + CF + DECIMAL_FORMAT.format(2));
CommonOrderInfo nocpyCommonOrderInfo = new CommonOrderInfo();
BeanUtils.copyProperties(commonOrderInfo,nocpyCommonOrderInfo);
nocpyCommonOrderInfo.setOrderItemInfo(nocpyOrderItems);
nocpyCommonOrderInfo.setOrderInfo(nocpyOrderInfo);
commonOrderInfoList.add(nocpyCommonOrderInfo);
}
if(cpyOrderItems.size()>ConfigureConstant.INT_8){
return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"是成品油发票,明细行数不能超过8行,请先进行手动拆分!");
}
// if(ConfigureConstant.STRING_Y.equals(cpy) && commonOrderInfo.getOrderItemInfo().size()>ConfigureConstant.INT_8){
// return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"是成品油发票,明细行数不能超过8行,请先进行手动拆分!");
// }
}
//客户冻结状态校验、确认智能赋码、单价误差校验
List<Map<String,String>> consumerList = new ArrayList<>();
List<Map<String,String>> confirmList = new ArrayList<>();
List<Map<String,String>> djOverflowList = new ArrayList<>();
for (CommonOrderInfo commonOrderInfo : commonOrderInfos) {
for (CommonOrderInfo commonOrderInfo : commonOrderInfoList) {
OrderInfo orderInfo = commonOrderInfo.getOrderInfo();
List<OrderItemInfo> orderItemInfoList = commonOrderInfo.getOrderItemInfo();
BuyerEntity buyerEntity = null;
@ -203,6 +253,7 @@ public class InvoiceServiceImpl implements InvoiceService {
confirmList.add(map);
}
});
// 订单超限额拆分
String terminalCode = simsBackService.getTerminalCode(commonOrderInfo.getOrderInfo().getXhfNsrsbh(), commonOrderInfo.getOrderInfo().getEntId());
List<CommonOrderInfo> originalCommonOrderInfo = new ArrayList<>();
@ -252,7 +303,7 @@ public class InvoiceServiceImpl implements InvoiceService {
}else if(djOverflowList.size() > 0){
return R.error(ConfigureConstant.STRING_9003, "以下订单自动拆分时单价超过设定范围,请手动拆分",djOverflowList);
}else {
for (CommonOrderInfo f : commonOrderInfos) {
for (CommonOrderInfo f : commonOrderInfoList) {
TaxClassCodeEntity taxClassCodeEntity = taxClassCodeMapper.selectTaxClassCodeBySpbm(f.getOrderItemInfo().get(0).getSpbm());
if(ObjectUtil.isNotNull(taxClassCodeEntity) && ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())){
f.getOrderInfo().setQdBz(OrderInfoEnum.QDBZ_CODE_4.getKey());
@ -286,10 +337,7 @@ public class InvoiceServiceImpl implements InvoiceService {
OrderProcessInfo processInfo = orderProcessService.selectOrderProcessInfoByProcessId(s.getOrderInfo().getProcessId(),null);
processInfo.setYzfp(ConfigureConstant.STRING_1);
orderProcessService.updateOrderProcessInfoByProcessId(processInfo, null);
//
});
} else {
continue;
}
}
return R.ok("生成预制发票成功,请到【发票处理中心】页面查看");

Loading…
Cancel
Save