feature:订单接口逻辑删除包括订单拆分后订单、发票开具报错redis锁释放、发票开具调用税控前校验订单的有效性

release
gaorl 2 years ago
parent 7f33282633
commit 367e0d9a3e
  1. 2
      order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java
  2. 6
      order-management-consumer/src/main/java/com/dxhy/order/consumer/model/page/PageRequestVO.java
  3. 34
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java
  4. 1
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java
  5. 5
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java
  6. 56
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java
  7. 7
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/PollInvoiceServiceImpl.java
  8. 18
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java

@ -56,6 +56,8 @@ public enum OrderInfoContentEnum {
RECEIVE_FAILD("9999", "订单处理失败"),
INVALID_ORDER_STATUS("9644", "无效订单"),
MORE_NSRSBH_ERROR("9999", "请选择明确的销方信息进行操作"),
COMMON_ERROR("9999", "企业未配置税控设备"),
QD_FW_ERROR("9999", "未开通全电业务,请联系运维人员"),

@ -21,7 +21,11 @@ public class PageRequestVO implements Serializable {
* 订单处理表id
*/
private String orderProcessId;
/**
*
*/
private String orderInfoId;
/**
* 发票请求流水号
*/

@ -620,38 +620,16 @@ public class InvoiceServiceImpl implements InvoiceService {
}
/**
* 根据税号发票种类代码分组
*/
List<CommonOrderInfo> commonOrderInfos = new ArrayList<>();
/**
* 数据补全 拆分 合并 开票数据校验
*/
try {
commonOrderInfos = completeOrderInvoiceInfo(commonList, userId);
} catch (OrderSplitException e) {
return R.error().put(OrderManagementConstant.CODE, e.getCode())
.put(OrderManagementConstant.MESSAGE, e.getMessage());
} finally {
//业务完成后删除redis中的key值
for (CommonOrderInfo common : commonList) {
String cacheFpqqlsh = String.format(RedisConstant.REDIS_ORDER_LOCK_INVOICE_KEY, common.getOrderInfo().getFpqqlsh());
if (uuid.equals(redisService.get(cacheFpqqlsh))) {
redisService.del(cacheFpqqlsh);
}
}
}
/**
* 调用发票开具接口
*/
/** 数据补全 拆分 合并 开票数据校验*/
List<CommonOrderInfo> commonOrderInfos = completeOrderInvoiceInfo(commonList, userId);
/**调用发票开具接口*/
r = makeOutAnInvoiceService.makeOutAnInovice(commonOrderInfos, map);
} catch (OrderSplitException e) {
r = R.error().put(OrderManagementConstant.CODE, e.getCode()).put(OrderManagementConstant.MESSAGE, e.getMessage());
} catch (Exception e) {
log.error("{}发票开具异常,异常信息为:{}", LOGGER_MSG, e);
return R.error().put(OrderManagementConstant.MESSAGE, "发票开具异常");
r = R.error().put(OrderManagementConstant.MESSAGE, "发票开具异常");
} finally {
//业务完成后删除redis中的key值
for (CommonOrderInfo common : commonList) {

@ -447,6 +447,7 @@ public class OrderInvoiceController {
orderProcessInfo1.setOrderStatus(ConfigureConstant.STRING_1);
if("back".equals(ly)){
orderProcessInfo1.setBhzt(ConfigureConstant.STRING_1);
orderProcessInfo1.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh" );
}
int success = orderProcessService.updateOrderProcessInfoByProcessId(orderProcessInfo1, shList);
if (success < 0) {

@ -1,5 +1,6 @@
package com.dxhy.order.consumer.modules.order.service;
import com.dxhy.order.consumer.model.page.PageRequestVO;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.*;
import com.dxhy.base.constant.OrderSeparationException;
@ -8,6 +9,7 @@ import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem;
import com.dxhy.order.consumer.modules.order.model.PageKySlReq;
import com.dxhy.order.consumer.modules.order.model.PageKySlRsp;
import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -209,4 +211,7 @@ public interface OrderInfoService {
R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit);
int updateBillNumber(String bzdh,String orderInfoId);
@Transactional
R logicalDeleteByOrderInfoId(List<PageRequestVO> pageRequestList);
}

@ -18,9 +18,11 @@ import com.dxhy.order.constant.ConfigureConstant;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.constant.OrderInfoEnum;
import com.dxhy.order.constant.OrderManagementConstant;
import com.dxhy.order.consumer.dao.OrderBatchRequestMapper;
import com.dxhy.order.consumer.dao.OrderProcessInfoMapper;
import com.dxhy.order.consumer.model.OderDetailInfo;
import com.dxhy.order.consumer.model.PageOrderExt;
import com.dxhy.order.consumer.model.page.PageRequestVO;
import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem;
import com.dxhy.order.consumer.modules.order.model.PageKySlReq;
import com.dxhy.order.consumer.modules.order.model.PageKySlRsp;
@ -48,6 +50,7 @@ import com.dxhy.order.model.newsk.taxpayerinfo.TaxpayerInfoResponse;
import com.dxhy.order.model.qd.OrderInfoQd;
import com.dxhy.order.model.qdsk.taxpayerinfo.Kysl;
import com.dxhy.order.model.qdsk.taxpayerinfo.Qdjcxx;
import com.dxhy.order.model.sk.kp.CommonInvoiceStatus;
import com.dxhy.order.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -151,6 +154,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Resource
private SpecialInvoiceReversalMapper specialInvoiceReversalMapper;
@Resource
private OrderBatchRequestMapper orderBatchRequestMapper;
@Override
public PageUtils selectOrderInfo(Map<String, Object> map, List<String> shList, List<String> entList) {
return orderProcessService.selectOrderInfo(map, shList, entList);
@ -1695,6 +1701,56 @@ public class OrderInfoServiceImpl implements OrderInfoService {
orderProcessInfo.setOrderInfoId(orderInfoId);
return orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo,null);
}
@Override
public R logicalDeleteByOrderInfoId(List<PageRequestVO> pageRequestList){
StringBuilder errorMsgList = new StringBuilder();
for (int i = 0; i < pageRequestList.size(); i++) {
String preStr = "";
try {
PageRequestVO pageRequest = pageRequestList.get(i);
if (pageRequestList.size() > 1) {
preStr = "第" + (i + 1) + "行:";
}
String orderInfoId = pageRequest.getOrderInfoId();
List<String> shList = Arrays.asList(pageRequest.getXhfNsrsbh());
int i1 = new Random().nextInt(100);
OrderProcessInfo orderProcessInfo = new OrderProcessInfo();
orderProcessInfo.setOrderInfoId(orderInfoId);
orderProcessInfo.setOrderStatus(ConfigureConstant.STRING_1);
orderProcessInfo.setBhzt(ConfigureConstant.STRING_1);
orderProcessInfo.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh" + i1);
orderProcessInfo.setDdqqpch(pageRequest.getFpqqlsh() + "-bh" + i1);
orderProcessInfo.setUpdateTime(new Date());
int success = orderProcessService.updateOrderProcessInfoByProcessId(orderProcessInfo, shList);
OrderInfo orderInfo = new OrderInfo();
orderInfo.setId(orderInfoId);
orderInfo.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh"+ i1);
orderInfo.setUpdateTime(new Date());
orderMapper.updateOrderInfoByOrderId(orderInfo,shList);
//orderBatchRequestMapper.updateByPrimaryKeySelective();
if (success < 0) {
errorMsgList.append(preStr).append("数据删除失败").append("\r\n");
continue;
}
} catch (Exception e) {
log.error("{}数据删除失败:{}", LOGGER_MSG, e);
errorMsgList.append(preStr).append("数据删除失败").append("\r\n");
continue;
}
}
if (ObjectUtil.isNotEmpty(errorMsgList)) {
return R.error(errorMsgList.toString());
}
return R.ok();
}
@Override
public R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit){
//校验是否为同一税号 校验开票情况

@ -184,7 +184,12 @@ public class PollInvoiceServiceImpl implements PollInvoiceService {
log.error("{}发票开具轮训查询订单信息为空!", LOGGER_MSG);
throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_AUTO_ERROR);
}
/**避免并发开票和逻辑删除的使用*/
OrderProcessInfo orderProcessInfo = orderProcessInfoMapper.selectOrderProcessInfoByDdqqlsh(fpkjMqData.getFpqqlsh(), shList);
if("1".equals(orderProcessInfo.getOrderStatus())){
log.error("{}当前订单无效,请检查", LOGGER_MSG);
throw new OrderReceiveException(OrderInfoContentEnum.INVALID_ORDER_STATUS);
}
//暂停开票功能,如果企业暂停开票,并且暂停开票的原因为不需要继续请求开票code,数据不请求底层开票
TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(fpkjMqData.getNsrsbh(), fpkjMqData.getEntId());
log.debug("{}查询销项后台销方开票状态,返回结果:{}",LOGGER_MSG, JsonUtils.getInstance().toJsonString(taxEquipmentInfo));

@ -11,6 +11,7 @@ import com.dxhy.order.consumer.dao.InterfaceRequestDataMapper;
import com.dxhy.order.consumer.dao.OrderProcessInfoMapper;
import com.dxhy.order.consumer.model.page.PageRequestVO;
import com.dxhy.order.consumer.modules.order.controller.OrderInvoiceController;
import com.dxhy.order.consumer.modules.order.service.OrderInfoService;
import com.dxhy.order.consumer.modules.order.service.OrderProcessService;
import com.dxhy.order.consumer.openapi.protocol.po.EsOutput;
import com.dxhy.order.consumer.openapi.protocol.po.IsInput;
@ -74,7 +75,7 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 {
@Resource
private OrderProcessInfoMapper orderProcessInfoMapper;
@Resource
private OrderInvoiceController orderInvoiceController;
private OrderInfoService orderInfoService;
@Override
public DdpcxxRspV5 generateQdInvoiceV6(DdpcxxReqBO ddpcxxReq, String secretId, String kpjh) {
@ -156,20 +157,27 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 {
poCommonResponseParam.setES_OUTPUT(esOutput);
return poCommonResponseParam;
}
List<PageRequestVO> pageRequestList = collect.stream().filter(t -> "0".contains(t.getDdzt())).map(t->{
List<OrderProcessInfo> collect1 = collect.stream().filter(t -> "3".equals(t.getDdly())).collect(Collectors.toList());
if(collect.isEmpty()){
esOutput.setZMESSAGE("此账单为非接口数据,不允许驳回");
poCommonResponseParam.setES_OUTPUT(esOutput);
return poCommonResponseParam;
}
List<PageRequestVO> pageRequestList = collect1.stream().filter(t -> "0,1,3".contains(t.getDdzt())).map(t->{
PageRequestVO pageRequestVO = new PageRequestVO();
pageRequestVO.setOrderProcessId(t.getId());
pageRequestVO.setOrderInfoId(t.getOrderInfoId());
pageRequestVO.setXhfNsrsbh(t.getXhfNsrsbh());
pageRequestVO.setFpqqlsh(t.getFpqqlsh());
return pageRequestVO;
}).collect(Collectors.toList());
if(pageRequestList.size() != collect.size()){
if(pageRequestList.size() != collect1.size()){
esOutput.setZMESSAGE("账单号已在发票系统处理,不允许驳回");
poCommonResponseParam.setES_OUTPUT(esOutput);
return poCommonResponseParam;
}
R back = orderInvoiceController.updateOrderStatus(pageRequestList, "back");
R back = orderInfoService.logicalDeleteByOrderInfoId(pageRequestList);
//R back = orderInvoiceController.updateOrderStatus(pageRequestList, "back");
if(!"0000".equals(back.get(OrderManagementConstant.CODE))){
esOutput.setZMESSAGE(back.get(OrderManagementConstant.MESSAGE).toString());
poCommonResponseParam.setES_OUTPUT(esOutput);

Loading…
Cancel
Save