|
|
|
@ -11,6 +11,8 @@ import com.dxhy.order.baseservice.config.BaseServiceConfig; |
|
|
|
|
import com.dxhy.order.baseservice.module.base.model.DrawerInfoEntity; |
|
|
|
|
import com.dxhy.order.baseservice.module.base.service.BaseService; |
|
|
|
|
import com.dxhy.order.baseservice.module.base.service.DrawerInfoService; |
|
|
|
|
import com.dxhy.order.baseservice.module.buyer.model.BuyerEntity; |
|
|
|
|
import com.dxhy.order.baseservice.module.buyer.service.BuyerService; |
|
|
|
|
import com.dxhy.order.baseservice.module.thirdservice.redis.service.RedisService; |
|
|
|
|
import com.dxhy.order.baseservice.module.thirdservice.simsback.service.SimsBackService; |
|
|
|
|
import com.dxhy.order.baseservice.module.thirdservice.user.service.UserInfoService; |
|
|
|
@ -113,43 +115,58 @@ public class InvoiceServiceImpl implements InvoiceService { |
|
|
|
|
@Resource |
|
|
|
|
private TaxSpecialPolicyUtil taxSpecialPolicyUtil; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private BuyerService buyerService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R preInvoice(PageInvoiceReq pageInvoiceReq) { |
|
|
|
|
List<PageInvoiceItem> pageInvoiceItemList = pageInvoiceReq.getPageInvoiceItemList(); |
|
|
|
|
//查询数据列表
|
|
|
|
|
List<CommonOrderInfo> commonOrderInfos = orderInfoService.batchQueryOrderInfoByOrderIdsAndNsrsbh(pageInvoiceItemList); |
|
|
|
|
StringBuffer errorMsg = new StringBuffer(); |
|
|
|
|
commonOrderInfos.stream().forEach(f -> { |
|
|
|
|
String terminalCode = simsBackService.getTerminalCode(f.getOrderInfo().getXhfNsrsbh(), f.getOrderInfo().getEntId()); |
|
|
|
|
List<CommonOrderInfo> originalCommonOrderInfo = new ArrayList<>(); |
|
|
|
|
originalCommonOrderInfo.add(f); |
|
|
|
|
List<CommonOrderInfo> orderSplit = new ArrayList<>(); |
|
|
|
|
// 订单超限额拆分
|
|
|
|
|
try { |
|
|
|
|
orderSplit = generateReadyOpenOrderService.orderSplit(originalCommonOrderInfo, terminalCode, pageInvoiceReq.getUserId()); |
|
|
|
|
log.info("{},{}生成预制发票拆分结果:{}",LOGGER_MSG,f.getOrderInfo().getDdh(),JsonUtils.getInstance().toJsonString(orderSplit)); |
|
|
|
|
} catch (OrderSplitException e) { |
|
|
|
|
log.error("{}生成预制发票拆分异常:",LOGGER_MSG,e); |
|
|
|
|
BuyerEntity buyerEntity = buyerService.queryBuyerInfoByxhfNsrsbhAndBuyerCode(f.getOrderInfo().getXhfNsrsbh(), f.getOrderInfo().getGhfId()); |
|
|
|
|
if(ConfigureConstant.STRING_0.equals(buyerEntity.getStatus())){ |
|
|
|
|
errorMsg.append("【结算单号】:").append(f.getOrderInfo().getDdh()).append(",【客户】:").append(f.getOrderInfo().getGhfMc()).append(";\r"); |
|
|
|
|
} |
|
|
|
|
if(orderSplit.size() == 1){ |
|
|
|
|
OrderProcessInfo processInfo = f.getProcessInfo(); |
|
|
|
|
processInfo.setYzfp(ConfigureConstant.STRING_1); |
|
|
|
|
orderProcessService.updateOrderProcessInfoByProcessId(processInfo,null); |
|
|
|
|
}else if(orderSplit.size() > 1){ |
|
|
|
|
List<CommonOrderInfo> commonOrderInfoSaveResults = new ArrayList<>(); |
|
|
|
|
}); |
|
|
|
|
if(errorMsg.length()>0){ |
|
|
|
|
errorMsg.append("被冻结,不允许开票!"); |
|
|
|
|
return R.error(errorMsg.toString()); |
|
|
|
|
}else { |
|
|
|
|
commonOrderInfos.stream().forEach(f -> { |
|
|
|
|
String terminalCode = simsBackService.getTerminalCode(f.getOrderInfo().getXhfNsrsbh(), f.getOrderInfo().getEntId()); |
|
|
|
|
List<CommonOrderInfo> originalCommonOrderInfo = new ArrayList<>(); |
|
|
|
|
originalCommonOrderInfo.add(f); |
|
|
|
|
List<CommonOrderInfo> orderSplit = new ArrayList<>(); |
|
|
|
|
// 订单超限额拆分
|
|
|
|
|
try { |
|
|
|
|
commonOrderInfoSaveResults = generateReadyOpenOrderService.saveOrderSplitInfo(orderSplit); |
|
|
|
|
} catch (OrderReceiveException e) { |
|
|
|
|
log.error("{}生成预制发票拆分后保存异常:",LOGGER_MSG,e); |
|
|
|
|
orderSplit = generateReadyOpenOrderService.orderSplit(originalCommonOrderInfo, terminalCode, pageInvoiceReq.getUserId()); |
|
|
|
|
log.info("{},{}生成预制发票拆分结果:{}",LOGGER_MSG,f.getOrderInfo().getDdh(),JsonUtils.getInstance().toJsonString(orderSplit)); |
|
|
|
|
} catch (OrderSplitException e) { |
|
|
|
|
log.error("{}生成预制发票拆分异常:",LOGGER_MSG,e); |
|
|
|
|
} |
|
|
|
|
commonOrderInfoSaveResults.stream().forEach(s -> { |
|
|
|
|
OrderProcessInfo processInfo = s.getProcessInfo(); |
|
|
|
|
if(orderSplit.size() == 1){ |
|
|
|
|
OrderProcessInfo processInfo = f.getProcessInfo(); |
|
|
|
|
processInfo.setYzfp(ConfigureConstant.STRING_1); |
|
|
|
|
orderProcessService.updateOrderProcessInfoByProcessId(processInfo,null); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
return R.ok("生成预制发票成功,请到发票处理页面查看"); |
|
|
|
|
}else if(orderSplit.size() > 1){ |
|
|
|
|
List<CommonOrderInfo> commonOrderInfoSaveResults = new ArrayList<>(); |
|
|
|
|
try { |
|
|
|
|
commonOrderInfoSaveResults = generateReadyOpenOrderService.saveOrderSplitInfo(orderSplit); |
|
|
|
|
} catch (OrderReceiveException e) { |
|
|
|
|
log.error("{}生成预制发票拆分后保存异常:",LOGGER_MSG,e); |
|
|
|
|
} |
|
|
|
|
commonOrderInfoSaveResults.stream().forEach(s -> { |
|
|
|
|
OrderProcessInfo processInfo = s.getProcessInfo(); |
|
|
|
|
processInfo.setYzfp(ConfigureConstant.STRING_1); |
|
|
|
|
orderProcessService.updateOrderProcessInfoByProcessId(processInfo,null); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
return R.ok("生成预制发票成功,请到发票处理页面查看"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|