//package com.zteits.pay.biz; // //import cn.hutool.core.date.DateUtil; //import com.alibaba.fastjson.JSON; //import com.alibaba.fastjson.JSONObject; //import com.clouds.common.cache.pay.AppOrgCacheUtil; //import com.clouds.common.constants.InvoiceServiceTypeEnum; //import com.clouds.common.utils.*; //import com.clouds.common.web.SpringContextUtil; //import com.ejinshui.service.ZKInvoiceService; //import com.github.pagehelper.PageInfo; //import com.xiaoleilu.hutool.util.CollectionUtil; //import com.zteits.clouds.api.apibase.bean.BizResult; //import com.zteits.clouds.api.apibase.bean.PageBean; //import com.zteits.clouds.api.apibase.constants.*; //import com.zteits.clouds.api.apibase.exception.AppException; //import com.zteits.clouds.api.apibase.exception.BizException; //import com.zteits.clouds.api.dto.order.backorder.dto.OrderBackDTO; //import com.zteits.clouds.api.dto.order.backorder.param.BackOrderPageQueryByContidionReq; //import com.zteits.clouds.api.dto.order.backorder.param.UpdateOrderBackByOrderIdRequest; //import com.zteits.clouds.api.dto.order.parkorder.dto.OrderParkQueryDTO; //import com.zteits.clouds.api.dto.order.parkorder.param.OrderParkQueryReq; //import com.zteits.clouds.api.dto.order.parkorder.param.UpdateOrderParkByOrderIdRequest; //import com.zteits.clouds.api.dto.order.payorder.dto.PayOrderForInvoiceDTO; //import com.zteits.clouds.api.dto.order.payorder.param.QueryPayOrderListsReq; //import com.zteits.clouds.api.dto.order.rechargeorder.dto.OrderRechargeDTO; //import com.zteits.clouds.api.dto.order.rechargeorder.param.OrderRechargeQueryReq; //import com.zteits.clouds.api.dto.order.rechargeorder.param.OrderRechargeUpdateRequest; //import com.zteits.clouds.api.dto.order.vipcardorder.dto.OrderVipcardDetailDTO; //import com.zteits.clouds.api.dto.order.vipcardorder.param.QueryInvoiceStateByDetailOrderIdReqest; //import com.zteits.clouds.api.dto.order.vipcardorder.param.QueryVipcardDetailsReq; //import com.zteits.clouds.api.dto.order.vipcardorder.param.UpdateVipcardDetailReq; //import com.zteits.clouds.api.dto.pay.*; //import com.zteits.clouds.api.dto.pay.dto.TdCCustInvoiceMailDTO; //import com.zteits.clouds.api.dto.pay.dto.TdCCustInvoiceSaleDTO; //import com.zteits.clouds.api.dto.pay.param.*; //import com.zteits.clouds.api.dto.pay.param.einvoice.DownloadReturnMsg; //import com.zteits.clouds.api.dto.pay.param.einvoice.InvoInfo; //import com.zteits.clouds.api.dto.pay.param.einvoice.InvoInfo.Items; //import com.zteits.clouds.api.dto.pay.param.einvoice.InvoInfo.Order; //import com.zteits.clouds.api.dto.pay.param.einvoice.InvoInfo.Orders; //import com.zteits.clouds.api.dto.pay.param.einvoice.InvoInfo.item; //import com.zteits.clouds.api.dto.pay.param.einvoice.ReturnMsg; //import com.zteits.clouds.api.dto.pay.param.einvoice.SYFPReturnMsg; //import com.zteits.clouds.api.service.order.backorder.oper.BackParkOrderOperService; //import com.zteits.clouds.api.service.order.backorder.query.BackOrderQueryService; //import com.zteits.clouds.api.service.order.parkorder.oper.RNTParkOrderOperService; //import com.zteits.clouds.api.service.order.parkorder.query.PubParkOrderQueryService; //import com.zteits.clouds.api.service.order.payorder.query.PayOrderQueryService; //import com.zteits.clouds.api.service.order.rechargeorder.oper.RechargeOrderOperService; //import com.zteits.clouds.api.service.order.rechargeorder.query.RechargeOrderQueryService; //import com.zteits.clouds.api.service.order.vipcardorder.oper.VipCardOrderOperService; //import com.zteits.clouds.api.service.order.vipcardorder.query.VipCardOrderQueryService; //import com.zteits.clouds.api.service.pay.AppOrgService; //import com.zteits.clouds.api.service.pay.InvoiceHelperService; //import com.zteits.pay.biz.invoice.handler.InvoiceOpenHandler; //import com.zteits.pay.configuration.mail.MailService; //import com.zteits.pay.dao.*; //import com.zteits.pay.domain.*; //import com.zteits.pay.domain.TdCCustInvoiceHisExample.Criteria; //import com.zteits.pay.pagepager.PageBeanUtil; //import com.zteits.pay.service.query.TdCCustInvoiceHisQueryInnerService; //import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; //import org.springframework.beans.BeanUtils; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.transaction.annotation.Transactional; //import org.springframework.util.CollectionUtils; //import org.springframework.util.StringUtils; // //import javax.xml.bind.JAXBException; //import java.io.UnsupportedEncodingException; //import java.math.BigDecimal; //import java.math.RoundingMode; //import java.rmi.RemoteException; //import java.util.*; //import java.util.stream.Collectors; // ///** // * 发票申领 // * @author hxz // * // */ //public class InvoiceHelperServiceImpl implements InvoiceHelperService { // // private static final Logger logger = LoggerFactory.getLogger(InvoiceHelperServiceImpl.class); // @Autowired // private TdCCustInvoiceSaleParkRelDao tdCCustInvoiceSaleParkRelDao; // // @Autowired // private TdCCustInvoiceinfoDao custInvoiceinfoDao; // // @Autowired // private TdCCustMailingAddressDao custMailingAddressDao; // // @Autowired // private TdCCustInvoiceHisDao custInvoiceHisDao; // // @Autowired // private TdCCustInvoiceHisDetailDao custInvoiceHisDetailDao; // // @Autowired // private TdCCustInvoiceHisItemDao tdCCustInvoiceHisItemDao; // // @Autowired // private VipCardOrderQueryService vipCardOrderQueryService; // // @Autowired // private VipCardOrderOperService vipCardOrderOperService; // // @Autowired // private RNTParkOrderOperService rntParkOrderOperService; // // @Autowired // private BackParkOrderOperService backParkOrderOperService; // // @Autowired // private BackOrderQueryService backOrderQueryService; // // @Autowired // private PubParkOrderQueryService pubParkOrderQueryService; // @Autowired // private PayOrderQueryService payOrderQueryService; // // @Autowired // private RechargeOrderOperService rechargeOrderOperService; // // @Autowired // private RechargeOrderQueryService rechargeOrderQueryService; // // @Autowired // private TdCCustInvoiceSaleDao tdCCustInvoiceSaleDao; // // @Autowired // private MailService mailService; // // @Autowired // private AppOrgService appOrgService; // @Autowired // private TdCCustInvoiceMailDao tdCCustInvoiceMailDao; // //// @Value("${jinshui.wsdl.url}") //// private String jinshuiWsdl; // // @Autowired // private TdCCustInvoiceHisQueryInnerService tdCCustInvoiceHisQueryInnerService; // // // // /** // * 新增一条客户发票抬头信息 // */ // @Override // public BizResult insertCustomerInvoiceInfo(TdCCustInvoiceinfoRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // /**检查当前用户绑定抬头是否超过五个*/ // Long count = custInvoiceinfoDao.checkBindInfoNum(requestObject); // logger.info("checkBindInfoNum:当前用户已绑定了"+count+"个抬头信息。"); // if (count >=5 ) { // throw new AppException(AppErrorEnum.APP_INFOOUTLIMIT_ERROR); // } // TdCCustInvoiceinfo record = new TdCCustInvoiceinfo(); // BeanUtils.copyProperties(requestObject, record); // logger.info("insertCustomerInvoiceInfo TdCCustInvoiceinfo--->: {} ", JSONObject.toJSON(record)); // // Long resultId = custInvoiceinfoDao.insertCustomerInvoiceInfo(record); // if(requestObject.getReturnId() !=null && requestObject.getReturnId()){ // resultId = record.getId(); // } // return new BizResult (resultId); // } // // /** // * 新增一条客户邮寄地址信息 // */ // @Override // public BizResult insertCustomerMailingAddressInfo(TdCCustMailingAddressRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustMailingAddress record = new TdCCustMailingAddress(); // BeanUtils.copyProperties(requestObject, record); // // return new BizResult (custMailingAddressDao.insertCustomerMailingAddressInfo(record)); // } // // /** // * 删除一条客户发票抬头信息 // */ // @Override // public BizResult deleteCustomerInvoiceInfoByID(DeleteCustInvoiceinfoRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // logger.info("deleteCustomerInvoiceInfoByID->id={}", requestObject.getId().toString()); // return new BizResult (custInvoiceinfoDao.deleteCustomerInvoiceInfoByID(requestObject.getId())); // } // // /** // * 删除一条客户邮寄地址信息 // */ // @Override // public BizResult deleteCustomerMailingAddressInfoByID(DeleteCustMailingAddressRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // return new BizResult (custMailingAddressDao.deleteCustomerMailingAddressByID(requestObject.getId())); // } // // /** // * 更新一条客户发票抬头信息 // */ // @Override // public BizResult updateCustomerInvoiceInfo(TdCCustInvoiceinfoRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceinfo record = new TdCCustInvoiceinfo(); // BeanUtils.copyProperties(requestObject, record); // // return new BizResult (custInvoiceinfoDao.updateByPrimaryKeySelective(record)); // } // // /** // * 更新一条客户邮寄地址信息 // */ // @Override // public BizResult updateCustomerMailingAddressInfo(TdCCustMailingAddressRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // TdCCustMailingAddress record = new TdCCustMailingAddress(); // BeanUtils.copyProperties(requestObject, record); // // return new BizResult (custMailingAddressDao.updateByPrimaryKeySelective(record)); // } // // /** // * 查询一条客户发票抬头信息 // */ // @Override // public BizResult queryCustomerInvoiceInfoById(QueryCustInvoiceinfoRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceinfo tdCCustInvoiceinfo = custInvoiceinfoDao.queryCustomerInvoiceInfoById(requestObject.getId()); // TdCCustInvoiceinfoDTO tdCCustInvoiceinfoDTO = new TdCCustInvoiceinfoDTO(); // if (null != tdCCustInvoiceinfo) { // BeanUtils.copyProperties(tdCCustInvoiceinfo, tdCCustInvoiceinfoDTO); // } // // return new BizResult (tdCCustInvoiceinfoDTO); // } // // /** // * 查询客户所有发票抬头信息 // */ // @Override // public BizResult> queryCustInvoiceInfoList( // QueryCustInvoiceInfoListRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceinfoExample example = new TdCCustInvoiceinfoExample(); // example.createCriteria().andCustIdEqualTo(requestObject.getCustId()); // // List tdCCustInvoiceinfoList = custInvoiceinfoDao.queryCustInvoiceInfoList(example); // List tdCCustInvoiceinfoDTOList = null; // if (null != tdCCustInvoiceinfoList) { // tdCCustInvoiceinfoDTOList = JSON.parseArray(JSON.toJSONString(tdCCustInvoiceinfoList, false), TdCCustInvoiceinfoDTO.class); // } // // return new BizResult > (tdCCustInvoiceinfoDTOList); // } // // /** // * 查询一条客户邮寄地址信息 // */ // @Override // public BizResult queryCustomerMailingAddressInfoById( // QueryCustMailingAddressRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustMailingAddressDTO tdCCustMailingAddressDTO = new TdCCustMailingAddressDTO(); // TdCCustMailingAddress tdCCustMailingAddress = custMailingAddressDao.queryCustomerMailingAddressById(requestObject.getId()); // if (null != tdCCustMailingAddress) { // BeanUtils.copyProperties(tdCCustMailingAddress, tdCCustMailingAddressDTO); // } // // return new BizResult (tdCCustMailingAddressDTO); // } // // /** // * 查询客户所有邮寄地址信息 // */ // @Override // public BizResult> queryCustMailingAddressInfoList( // QueryCustMailingAddressInfoListRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustMailingAddressExample example = new TdCCustMailingAddressExample(); // example.createCriteria().andCustIdEqualTo(requestObject.getCustId()); // // List tdCCustMailingAddressList = custMailingAddressDao.queryCustMailingAddressInfoList(example); // List tdCCustMailingAddressDTOList = null; // if (null != tdCCustMailingAddressList) { // tdCCustMailingAddressDTOList = JSON.parseArray(JSON.toJSONString(tdCCustMailingAddressList, false), TdCCustMailingAddressDTO.class); // } // // return new BizResult > (tdCCustMailingAddressDTOList); // } // // /** // * 会员卡开票列表 // */ // @Override // public BizResult > queryVipCardTicketList(QueryVipcardDetailsReq requestObject) { // List queryResult = new ArrayList<>(); // //首先查询未开票的会员卡 // BizResult> bizResult = vipCardOrderQueryService.queryVipCardDetails(requestObject); // logger.info("---queryVipCardTicketList 返回={}", JSONObject.toJSON(bizResult)); // if(bizResult.isSuccess()&&!CollectionUtils.isEmpty(bizResult.getData())){ // for(OrderVipcardDetailDTO dto : bizResult.getData()){ // VipCardTicketInfoDTO item = new VipCardTicketInfoDTO(); // item.setOrderId(dto.getOrderId()); // item.setCardType(dto.getCardType()); // item.setCardTypeName(VipCardTypeEnum.getDesc(item.getCardType().intValue())); // item.setBuyNum(dto.getBuyNum()); // item.setCardAmount(new BigDecimal(dto.getPrice())); // item.setCarNumber(dto.getCarNumber()); // item.setCreateDate(dto.getCreateDate()); // item.setDiscount(dto.getPrice() == 0 ? "0.00" : String.valueOf(10-(new BigDecimal((float)dto.getOrderDicountFee()/(dto.getPrice()*dto.getBuyNum())*10).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()))); // item.setDiscountAmount(new BigDecimal(dto.getOrderDicountFee())); // item.setCardTotalAmount(new BigDecimal(dto.getCardActAmount())); // queryResult.add(item); // } // } // logger.info("---queryVipCardTicketList queryResult 返回={}", JSONObject.toJSON(queryResult)); // return new BizResult > (queryResult); // } // // /** // * 记录客户开发票历史信息 // */ // @Override // @Transactional // public BizResult insertCustInvoiceHistoryInfo(TdCCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO(); // // // 历史开票详情插入 // List orderList = null; // if (null != requestObject.getOrderIds() && requestObject.getOrderIds().size()>0) { // QueryVipcardDetailsReq requestQ = new QueryVipcardDetailsReq(); // requestQ.setOrderIds(requestObject.getOrderIds()); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult> bizResult = vipCardOrderQueryService.queryVipCardDetails(requestQ); // if(bizResult.isSuccess()&&!CollectionUtils.isEmpty(bizResult.getData())) { // orderList = bizResult.getData(); // // // 校验发票金额 // BigDecimal checkTotalInvoiceFee = new BigDecimal(0); // // 校验是否已进行开票申请 // QueryInvoiceStateByDetailOrderIdReqest req = new QueryInvoiceStateByDetailOrderIdReqest (); // req.setSysCode(BasicEnum.SYS_CODE.getValue()); // for (OrderVipcardDetailDTO orderItem: orderList) { // //重复开票校验 // req.setDetailOrderId(orderItem.getDetailOrderId()); // BizResult bizresInvoiceState = vipCardOrderQueryService.queryInvoiceStateByDetailOrderId(req); // if (bizresInvoiceState.isSuccess() && (null != bizresInvoiceState.getData())) { // if (0 < bizresInvoiceState.getData()) { // logger.info("insertCustInvoiceHistoryDetailInfo--不能重复开票 "); // throw new BizException(ErrorType.APP_ERROR, "不能重复开票"); // } // } // // // sum实付金额 // checkTotalInvoiceFee = checkTotalInvoiceFee.add(new BigDecimal(orderItem.getCardActAmount())); // } // if (0 != checkTotalInvoiceFee.compareTo(requestObject.getInvoiceTotalFee())) { // logger.info("insertCustInvoiceHistoryDetailInfo--手机端开票金额计算有误 "); // throw new BizException(ErrorType.APP_ERROR, "开票金额计算有误"); // } // } // } else { // logger.info("insertCustInvoiceHistoryDetailInfo--requestObject.getOrderIds 传入参数订单id列表为空 "); // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // List hisDetailList = new ArrayList(); // if (null != orderList) { // for (OrderVipcardDetailDTO orderItem: orderList) { // // // 更新是否已开发票状态 // UpdateVipcardDetailReq updateVipcardDetailReq = new UpdateVipcardDetailReq(); // updateVipcardDetailReq.setDetailOrderId(orderItem.getDetailOrderId()); // updateVipcardDetailReq.setId(orderItem.getId()); // updateVipcardDetailReq.setInvoiceState(InvoiceStateEnum.YES.getValue()); // updateVipcardDetailReq.setSysCode(BasicEnum.SYS_CODE.getValue()); // vipCardOrderOperService.updateVipCardDetail(updateVipcardDetailReq); // // // 新增已开发票详情 // TdCCustInvoiceHisDetail record = new TdCCustInvoiceHisDetail(); // record.setOrderId(orderItem.getOrderId()); // record.setInvoiceId(requestObject.getInvoiceId()); // record.setOrderType(orderItem.getOrderType()); // record.setOrderActFee(new BigDecimal(orderItem.getCardActAmount())); // record.setOrderPayedFee(new BigDecimal(orderItem.getCardActAmount())); // record.setOrderTotalFee(new BigDecimal(orderItem.getPrice()*orderItem.getBuyNum())); // record.setOrderDate(orderItem.getCreateDate()); // record.setDataState(1); // record.setCreateDate(new Date()); // record.setId(custInvoiceHisDetailDao.insertCustInvoiceHistoryDetailInfo(record)); // // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // BeanUtils.copyProperties(record, tdCCustInvoiceHisDetailDTO); // // hisDetailList.add(tdCCustInvoiceHisDetailDTO); // } // } // // tdCCustInvoiceHisDTO.setCustInvoiceHisDetailDTOList(hisDetailList); // // // // 历史开票插入 // TdCCustInvoiceHis recordo = new TdCCustInvoiceHis(); // BeanUtils.copyProperties(requestObject, recordo); // logger.info("---begin--serviceinsertCustInvoiceHistoryInforecordo记录客户开发票历史信息,入参={}", JSONObject.toJSON(recordo)); // recordo.setId(custInvoiceHisDao.insertCustInvoiceHistoryInfo(recordo)); // BeanUtils.copyProperties(recordo, tdCCustInvoiceHisDTO); // //// //新增开票条目 //// List items = new ArrayList<>(); //// TdCCustInvoiceHisItem item = new TdCCustInvoiceHisItem(); //// BeanUtils.copyProperties(requestObject, item); //// item.setInvoiceId(requestObject.getInvoiceId()); //// item.setItemName(saleInfo.getItemName()); //// item.setItemCode(saleInfo.getItemCode()); //// item.setLineType(InvoiceItemEnum.LINETYPE);//0:正常行1:折扣行2:被折扣行 //// item.setTaxRate(saleInfo.getItemTaxRate()); //// item.setQuantity(1D); //// item.setTaxPrice(requestObject.getInvoiceTotalFee() == null?0:requestObject.getInvoiceTotalFee().doubleValue()); //// item.setTotalAmount(requestObject.getInvoiceTotalFee() == null?0:requestObject.getInvoiceTotalFee().doubleValue()); //// item.setYhzcbs("0");//税收优惠政策标志0:不使用 1:使用 //// items.add(item); //// custInvoiceHisDao.insertCustInvoiceHistorItems(items ); // return new BizResult (tdCCustInvoiceHisDTO); // } // // /** // * 记录客户开发票历史详情信息(由几张vip订单组成一起开发票) // */ // @Transactional // @Override // public BizResult > insertCustInvoiceHistoryDetailInfo(TdCCustInvoiceHisDetailRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // // 历史开票详情插入 // List orderList = null; // if (null != requestObject.getOrderIds() && requestObject.getOrderIds().size()>0) { // QueryVipcardDetailsReq requestQ = new QueryVipcardDetailsReq(); // requestQ.setOrderIds(requestObject.getOrderIds()); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult> bizResult = vipCardOrderQueryService.queryVipCardDetails(requestQ); // if(bizResult.isSuccess()&&!CollectionUtils.isEmpty(bizResult.getData())){ // orderList = bizResult.getData(); // } // } else { // logger.info("insertCustInvoiceHistoryDetailInfo--requestObject.getOrderIds 传入参数订单id列表为空 "); // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // List hisDetailList = new ArrayList(); // if (null != orderList) { // for (OrderVipcardDetailDTO orderItem: orderList) { // // // 更新是否已开发票状态 // UpdateVipcardDetailReq updateVipcardDetailReq = new UpdateVipcardDetailReq(); // updateVipcardDetailReq.setDetailOrderId(orderItem.getDetailOrderId()); // updateVipcardDetailReq.setId(orderItem.getId()); // updateVipcardDetailReq.setInvoiceState(InvoiceStateEnum.YES.getValue()); // vipCardOrderOperService.updateVipCardDetail(updateVipcardDetailReq); // // // 新增已开发票详情 // TdCCustInvoiceHisDetail record = new TdCCustInvoiceHisDetail(); // record.setOrderId(orderItem.getOrderId()); // record.setInvoiceId(requestObject.getInvoiceId()); // record.setOrderType(orderItem.getOrderType()); // record.setOrderActFee(new BigDecimal(orderItem.getCardActAmount())); // record.setOrderPayedFee(new BigDecimal(orderItem.getCardActAmount())); // record.setOrderTotalFee(new BigDecimal(orderItem.getPrice()*orderItem.getBuyNum())); // record.setOrderDate(orderItem.getCreateDate()); // record.setDataState(1); // record.setCreateDate(new Date()); // record.setId(custInvoiceHisDetailDao.insertCustInvoiceHistoryDetailInfo(record)); // // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // BeanUtils.copyProperties(record, tdCCustInvoiceHisDetailDTO); // // hisDetailList.add(tdCCustInvoiceHisDetailDTO); // } // } // // return new BizResult> (hisDetailList); // } // // /** // * 通过客户id(custId)查询开票历史列表 // */ // @Override // public BizResult> queryCustInvoiceHistoryList( // QueryCustInvoiceHistoryListRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceHisExample example = new TdCCustInvoiceHisExample (); // example.createCriteria().andCustIdEqualTo(requestObject.getCustId()) // .andInvoiceStateIn(requestObject.getInvoiceStateList()); // // List tdCCustInvoiceHisList = custInvoiceHisDao.queryCustInvoiceHistoryList(example); // List tdCCustInvoiceHisDTOList = new ArrayList (); // if (null != tdCCustInvoiceHisList) { // for (TdCCustInvoiceHis item: tdCCustInvoiceHisList) { // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO (); // BeanUtils.copyProperties(item, tdCCustInvoiceHisDTO); // //获取客服电话 // String servicePhone = getServicePhone(tdCCustInvoiceHisDTO.getOrgId()); // tdCCustInvoiceHisDTO.setServicePhone(servicePhone); // // 获取历史详情列表 // TdCCustInvoiceHisDetailExample detailExample = new TdCCustInvoiceHisDetailExample(); // detailExample.createCriteria().andInvoiceIdEqualTo(item.getInvoiceId()); // List tdCCustInvoiceHisDetailList = custInvoiceHisDetailDao. // queryCustInvoiceHisDetailList(detailExample); // List tdCCustInvoiceHisDetailDTOList = null; // if (null != tdCCustInvoiceHisDetailList) { // tdCCustInvoiceHisDetailDTOList = JSON.parseArray(JSON.toJSONString(tdCCustInvoiceHisDetailList, false), TdCCustInvoiceHisDetailDTO.class); // tdCCustInvoiceHisDTO.setCustInvoiceHisDetailDTOList(tdCCustInvoiceHisDetailDTOList); // } // // // 赋值给开票历史列表项 // tdCCustInvoiceHisDTOList.add(tdCCustInvoiceHisDTO); // } // //tdCCustInvoiceHisDTOList = JSON.parseArray(JSON.toJSONString(tdCCustInvoiceHisList, false), TdCCustInvoiceHisDTO.class); // } // // return new BizResult > (tdCCustInvoiceHisDTOList); // } // // /** // * 通过Id查询客户开票历史信息 // */ // @Override // public BizResult queryCustInvoiceHistoryInfoById (QueryCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO(); // TdCCustInvoiceHis record = custInvoiceHisDao.queryCustInvoiceHistoryInfo(requestObject.getId()); // List tdCCustInvoiceHisDetailDTOList = null; // if (null != record) { // BeanUtils.copyProperties(record, tdCCustInvoiceHisDTO); // // TdCCustInvoiceHisDetailExample example = new TdCCustInvoiceHisDetailExample(); // example.createCriteria().andInvoiceIdEqualTo(record.getInvoiceId()); // List tdCCustInvoiceHisDetailList = custInvoiceHisDetailDao.queryCustInvoiceHisDetailList(example); // if (null != tdCCustInvoiceHisDetailList) { // tdCCustInvoiceHisDetailDTOList = JSON.parseArray(JSON.toJSONString(tdCCustInvoiceHisDetailList, false), TdCCustInvoiceHisDetailDTO.class); // tdCCustInvoiceHisDTO.setCustInvoiceHisDetailDTOList(tdCCustInvoiceHisDetailDTOList); // } // } // // return new BizResult (tdCCustInvoiceHisDTO); // } // // /** // * 通过Id查询客户开票历史详情 // */ // @Override // public BizResult queryCustInvoiceHistoryDetailInfoById ( // QueryCustInvoiceHisDetailRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // TdCCustInvoiceHisDetail record = custInvoiceHisDetailDao.queryCustInvoiceHistoryDetailInfo(requestObject.getId()); // if (null != record) { // BeanUtils.copyProperties(record, tdCCustInvoiceHisDetailDTO); // } // return new BizResult (tdCCustInvoiceHisDetailDTO); // } // // @Override // public BizResult> queryCustInvoiceHisDetailList (QueryCustInvoiceHisDetailRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // TdCCustInvoiceHisDetailExample detailExample = new TdCCustInvoiceHisDetailExample(); // detailExample.createCriteria().andInvoiceIdEqualTo(requestObject.getInvoiceId()); // List tdCCustInvoiceHisDetails = custInvoiceHisDetailDao.queryCustInvoiceHisDetailList(detailExample); // List dtoList = new ArrayList<>(); // if(!CollectionUtils.isEmpty(tdCCustInvoiceHisDetails)){ // for(TdCCustInvoiceHisDetail detail:tdCCustInvoiceHisDetails){ // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // BeanUtils.copyProperties(detail,tdCCustInvoiceHisDetailDTO); // dtoList.add(tdCCustInvoiceHisDetailDTO); // } // // } // return new BizResult> (dtoList); // } // // @Override // public BizResult> selectListByOrderId(TdCCustInvoiceHisRequest record) { // List tdCCustInvoiceHisDTOS = custInvoiceHisDao.selectListByOrderId(record); // return new BizResult<>(tdCCustInvoiceHisDTOS); // } // // @Override // public BizResult CloudOpenTicketForCustInvoiceHisInfo(TdCCustInvoiceHisRequest request) { // if (null == request) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // List hisDetailList = new ArrayList(); // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO(); // /**对订单进行开票(包括临停,补缴和会员卡)*/ // List orders = request.getOrders(); // // TdCCustInvoiceHis recordo = new TdCCustInvoiceHis(); // BeanUtils.copyProperties(request, recordo); // Long invoiceTotalFee = 0L; // if(CollectionUtil.isNotEmpty(orders)){ // //对订单根据类型进行分类 // Map> aMap = new HashMap<>(); // aMap = orders.stream().collect(Collectors.groupingBy(TdCCustInvoiceByOrdersRequest::getPayOrderType)); // /**1.校验是否开票***/ // for(Integer payOrderType :aMap.keySet()) { // //校验是否已经开过电子发票 // checkInvoiced(aMap, payOrderType); // } // /**2.进行开票***/ // for(Integer payOrderType :aMap.keySet()){ // logger.info("开票更改开票状态: "+JSONObject.toJSONString(aMap.get(payOrderType))); // /**临停费用*/ // if(PayOrderTypeEnum.PARK_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.SHAREBERTH_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.PARKPRE_PAY.value().equals(payOrderType)){ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**临停*/ // invoiceTotalFee = invoiceTotalFee+ordersRequest.getOrderActFee(); // hisDetailList = this.createCustInvoiceHisDetail(request,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.PARK_ORDER.value()); // }else if(PayOrderTypeEnum.PARKBACK_PAY.value().equals(payOrderType)){ // /**欠费补交*/ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**欠费补交*/ // invoiceTotalFee = invoiceTotalFee+ordersRequest.getOrderActFee(); // hisDetailList = this.createCustInvoiceHisDetail(request,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.PARK_ORDER.value()); // // }else if(PayOrderTypeEnum.VIP_CARD_ADDED.value().equals(payOrderType)|| // PayOrderTypeEnum.VIP_CARD_RENEW.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType)) // { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**会员卡*/ // invoiceTotalFee = invoiceTotalFee+ordersRequest.getOrderActFee(); // hisDetailList = this.createCustInvoiceHisDetail(request,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.VIP_ORDER.value()); // // }else if(PayOrderTypeEnum.BALANCE_PAY.value().equals(payOrderType)) { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**账户充值*/ // invoiceTotalFee = invoiceTotalFee+ordersRequest.getOrderActFee(); // hisDetailList = this.createCustInvoiceHisDetail(request,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.RECHARGE_ORDER.value()); // // } // } // } else { // logger.info("openTicketForCustInvoiceHisInfo--requestObject.getOrders 传入参数订单列表为空 "); // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // //查询销方信息 // TdCCustInvoiceSaleQueryRequest saleRequest = new TdCCustInvoiceSaleQueryRequest(); // saleRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // saleRequest.setOrgId(recordo.getOrgId()); // // 根据税号去查询销方信息 // saleRequest.setSaleTaxids(Collections.singletonList(request.getSaleTaxid())); // if (null == recordo.getOrgId()) { // throw new BizException(ErrorType.PARAMM_NULL, "获取销方信息,组织id为空!"); // } // List saleList = tdCCustInvoiceSaleDao.queryTdCCustInvoiceSale(saleRequest); // if(CollectionUtils.isEmpty(saleList)){ // throw new BizException(ErrorType.BIZ_ERROR, "根据当前组织编码["+recordo.getOrgId()+"],未查询到相应的销方信息!"); // } // // tdCCustInvoiceHisDTO.setCustInvoiceHisDetailDTOList(hisDetailList); // TdCCustInvoiceSale saleInfo = saleList.get(0); // // 历史开票插入 // recordo.setInvoiceTaxRate(new BigDecimal(saleInfo.getItemTaxRate())); // //总价除以(1+9%)乘9% // recordo.setInvoiceTaxFee(invoiceTotalFee == null ? new BigDecimal("0") : // (new BigDecimal(invoiceTotalFee).multiply(recordo.getInvoiceTaxRate())) // ); // BigDecimal a = recordo.getInvoiceTaxRate().add(new BigDecimal(1)); // recordo.setInvoiceTaxFee(recordo.getInvoiceTaxFee().divide(a,2, RoundingMode.HALF_UP) // ); // recordo.setInvoiceTotalFee(new BigDecimal(invoiceTotalFee)); // recordo.setInvoiceFee(new BigDecimal(invoiceTotalFee) == null ? new BigDecimal("0") : // (new BigDecimal(invoiceTotalFee)).subtract(recordo.getInvoiceTaxFee())); // //放入销方信息 // recordo.setSaleAddress(saleInfo.getAddress()); // recordo.setSaleBankName(saleInfo.getSaleBankName()); // recordo.setSaleCardNo(saleInfo.getSaleBankNo()); // recordo.setSaleName(saleInfo.getSaleName()); // recordo.setSaleTaxid(saleInfo.getSaleTaxid()); // //放入开票人、复核人、收款人 // recordo.setChecker(saleInfo.getChecker()); // recordo.setPryee(saleInfo.getPryee()); // recordo.setDrawer(saleInfo.getDrawer()); // recordo.setTerminalSource(request.getTerminalSource()); // if(StringUtils.isEmpty(recordo.getTicketContent())){ // recordo.setTicketContent(saleInfo.getItemName()); // } // if(request.getOptState()==1){ // recordo.setId(custInvoiceHisDao.insertCustInvoiceHistoryInfo(recordo)); // } // BeanUtils.copyProperties(recordo, tdCCustInvoiceHisDTO); // // //新增开票条目 // List items = new ArrayList<>(); // TdCCustInvoiceHisItem item = new TdCCustInvoiceHisItem(); // BeanUtils.copyProperties(recordo, item); // item.setInvoiceId(recordo.getInvoiceId()); // item.setItemName(saleInfo.getItemName()); // item.setItemCode(saleInfo.getItemCode()); // item.setLineType(InvoiceItemEnum.LINETYPE);//0:正常行1:折扣行2:被折扣行 // item.setTaxRate(saleInfo.getItemTaxRate()); // item.setUnit(InvoiceItemEnum.UNIT); // item.setSpec(InvoiceItemEnum.SPEC); // item.setQuantity(1D); // item.setTaxPrice(new BigDecimal(invoiceTotalFee) == null?0:(new BigDecimal(invoiceTotalFee).doubleValue())/100); // item.setTotalAmount(new BigDecimal(invoiceTotalFee) == null?0:(new BigDecimal(invoiceTotalFee).doubleValue())/100); // item.setYhzcbs("0");//税收优惠政策标志0:不使用 1:使用 // items.add(item); // if(request.getOptState()==1){ // custInvoiceHisDao.insertCustInvoiceHistorItems(items ); // } // if(!CollectionUtils.isEmpty(items)){ // List custInvoiceHisItemDTOs = new ArrayList<>(); // ListCopyUtil.listCopyProperties(items,custInvoiceHisItemDTOs,TdCCustInvoiceHisItemDTO.class); // tdCCustInvoiceHisDTO.setCustInvoiceHisItemDTOs(custInvoiceHisItemDTOs); // } // tdCCustInvoiceHisDTO.setInvoiceTotalYuanCase(AmountUtils.moneyUpperCase(new BigDecimal(AmountUtils.changeF2Y(invoiceTotalFee)).doubleValue())); // // logger.info("CliudopenTicketForCustInvoiceHisInfo--返回 :"+JSONObject.toJSON(tdCCustInvoiceHisDTO)); // // return new BizResult (tdCCustInvoiceHisDTO); // } // // @Override // public BizResult CloudOpenTicketForUpdateInvoiceStatus(TdCCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO(); // List orders = requestObject.getOrders(); // if(CollectionUtil.isNotEmpty(orders)){ // //对订单根据类型进行分类 // Map> aMap = new HashMap<>(); // aMap = orders.stream().collect(Collectors.groupingBy(TdCCustInvoiceByOrdersRequest::getPayOrderType)); // // /**修改开状态***/ // for(Integer payOrderType :aMap.keySet()){ // logger.info("开票更改开票状态: "+JSONObject.toJSONString(aMap.get(payOrderType))); // /**临停费用*/ // if(PayOrderTypeEnum.PARK_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.SHAREBERTH_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.PARKPRE_PAY.value().equals(payOrderType)){ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**临停*/ // // 更新已开发票状态 // logger.info("临停车,开票更改开票状态: "+JSONObject.toJSONString(ordersRequest)); // UpdateOrderParkByOrderIdRequest orderIdRequest = new UpdateOrderParkByOrderIdRequest(); // orderIdRequest.setOrderId(ordersRequest.getRltOrderId()); // orderIdRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderIdRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // rntParkOrderOperService.updateOrderParkByOrderId(orderIdRequest); // } // }else if(PayOrderTypeEnum.PARKBACK_PAY.value().equals(payOrderType)){ // /**欠费补交*/ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**欠费补交*/ // // 更新已开发票状态 // UpdateOrderBackByOrderIdRequest orderIdRequest = new UpdateOrderBackByOrderIdRequest(); // orderIdRequest.setOrderId(ordersRequest.getRltOrderId()); // orderIdRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderIdRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // backParkOrderOperService.updateBackOrderByOrderId(orderIdRequest); // } // }else if(PayOrderTypeEnum.VIP_CARD_ADDED.value().equals(payOrderType)|| // PayOrderTypeEnum.VIP_CARD_RENEW.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType)) // { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**会员卡*/ // // 更新是否已开发票状态 // UpdateVipcardDetailReq updateVipcardDetailReq = new UpdateVipcardDetailReq(); // updateVipcardDetailReq.setOrderId(ordersRequest.getRltOrderId()); // updateVipcardDetailReq.setInvoiceState(InvoiceStateEnum.YES.getValue()); // updateVipcardDetailReq.setSysCode(BasicEnum.SYS_CODE.getValue()); // vipCardOrderOperService.updateVipCardDetailByOrderId(updateVipcardDetailReq); // } // // }else if(PayOrderTypeEnum.BALANCE_PAY.value().equals(payOrderType)) { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**账户充值*/ // // 更新是否已开发票状态 // OrderRechargeUpdateRequest orderRechargeUpdateRequest = new OrderRechargeUpdateRequest(); // orderRechargeUpdateRequest.setOrderId(ordersRequest.getRltOrderId()); // orderRechargeUpdateRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderRechargeUpdateRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // rechargeOrderOperService.updateOrderRechargeByOrderIdOrId(orderRechargeUpdateRequest); // } // } // } // } else { // logger.info("CloudOpenTicketForUpdateInvoiceStatus--requestObject.getOrders 传入参数订单列表为空 "); // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // return new BizResult (tdCCustInvoiceHisDTO); // } // // /** // * 校验是否已经开票 // * @param aMap // * @param payOrderType // */ // private void checkInvoiced(Map> aMap, Integer payOrderType) { // /**临停费用*/ // if (PayOrderTypeEnum.PARK_PAY.value().equals(payOrderType) || PayOrderTypeEnum.SHAREBERTH_PAY.value().equals(payOrderType) || PayOrderTypeEnum.PARKPRE_PAY.value().equals(payOrderType)) { // List orderIds = aMap.get(payOrderType).stream().map(item -> item.getRltOrderId()).collect(Collectors.toList()); // if (CollectionUtil.isNotEmpty(orderIds)) { // OrderParkQueryReq requestQ = new OrderParkQueryReq(); // requestQ.setOrderIds(orderIds); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult> bizResult = pubParkOrderQueryService.queryParkOrderByCondition(requestQ); // if (bizResult.isSuccess() && CollectionUtil.isNotEmpty(bizResult.getData())) { // for (OrderParkQueryDTO dto : bizResult.getData()) { // if (0 < dto.getInvoiceState()) { // logger.info("insertCustInvoiceHistoryDetailInfo--不能重复开票 "); // throw new BizException(ErrorType.APP_ERROR, "不能重复开票"); // } // } // } // } // } else if (PayOrderTypeEnum.PARKBACK_PAY.value().equals(payOrderType)) { // /**欠费补交*/ // List orderIds = aMap.get(payOrderType).stream().map(item -> item.getRltOrderId()).collect(Collectors.toList()); // BackOrderPageQueryByContidionReq requestQ = new BackOrderPageQueryByContidionReq(); // requestQ.setOrderIds(orderIds); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // requestQ.getBaseRequest().setPageNum(1); // requestQ.getBaseRequest().setPageSize(999); // BizResult> bizResult = backOrderQueryService.pageQueryBackOrderByCondition(requestQ); // if (bizResult.isSuccess() && bizResult.getData() != null && CollectionUtil.isNotEmpty(bizResult.getData().getDataList())) { // for (OrderBackDTO dto : bizResult.getData().getDataList()) { // if (0 < dto.getInvoiceState()) { // logger.info("insertCustInvoiceHistoryDetailInfo--不能重复开票 "); // throw new BizException(ErrorType.APP_ERROR, "不能重复开票"); // } // } // } // // } else if (PayOrderTypeEnum.VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.VIP_CARD_RENEW.value().equals(payOrderType)) { // /**查询会员卡是否已经开票*/ // List orderIds = aMap.get(payOrderType).stream().map(item -> item.getRltOrderId()).collect(Collectors.toList()); // QueryVipcardDetailsReq requestQ = new QueryVipcardDetailsReq(); // requestQ.setOrderIds(orderIds); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult> bizResult = vipCardOrderQueryService.queryVipCardDetails(requestQ); // if (bizResult.isSuccess() && CollectionUtil.isNotEmpty(bizResult.getData())) { // for (OrderVipcardDetailDTO dto : bizResult.getData()) { // if (0 < dto.getInvoiceState()) { // logger.info("insertCustInvoiceHistoryDetailInfo--不能重复开票 "); // throw new BizException(ErrorType.APP_ERROR, "不能重复开票"); // } // } // } // } else if (PayOrderTypeEnum.BALANCE_PAY.value().equals(payOrderType)) { // /**查询账户充值是否已经开票*/ // List orderIds = aMap.get(payOrderType).stream().map(item -> item.getRltOrderId()).collect(Collectors.toList()); // OrderRechargeQueryReq requestQ = new OrderRechargeQueryReq(); // requestQ.setOrderIds(orderIds); // requestQ.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult> bizResult = rechargeOrderQueryService.queryOrderRechargeByCondition(requestQ); // if (bizResult.isSuccess() && CollectionUtil.isNotEmpty(bizResult.getData())) { // for (OrderRechargeDTO dto : bizResult.getData()) { // if (0 < dto.getInvoiceState()) { // logger.info("insertCustInvoiceHistoryDetailInfo--不能重复开票 "); // throw new BizException(ErrorType.APP_ERROR, "不能重复开票"); // } // } // } // } // } // // // @Override // public BizResult> queryCustInvoiceHisList(TdCCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // BeanUtils.copyProperties(requestObject, record); // // PageBean pageBean = new PageBean<>(); // PageInfo pageInfo = custInvoiceHisDao.queryListByVO(requestObject); // if(pageInfo!=null){ // PageBeanUtil.copyProperties(pageInfo, pageBean, TdCCustInvoiceHisDTO.class); // for (TdCCustInvoiceHisDTO dto : pageBean.getDataList()) { // String invoiceBigTypeDesc = ""; // //发票大类名称:100:停车,200-充值,300-会员卡 // if(dto.getInvoiceBigType()==null){ // dto.setInvoiceBigType(300); // } // switch (dto.getInvoiceBigType()) { // case 100: // invoiceBigTypeDesc = "临停开票"; // break; // case 200: // invoiceBigTypeDesc = "充值开票"; // case 300: // invoiceBigTypeDesc = "会员卡开票"; // default: // break; // } // dto.setInvoiceBigTypeDesc(invoiceBigTypeDesc); // } // } // return new BizResult<>(pageBean); // } // // @Override // public BizResult updateInvioceById(TdCCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // BeanUtils.copyProperties(requestObject, record); // // return new BizResult (custInvoiceHisDao.updateInvioceById(record)); // } // // @Override // @Transactional // public BizResult openTicketForCustInvoiceHisInfo(TdCCustInvoiceHisRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // List hisDetailList = new ArrayList(); // TdCCustInvoiceHisDTO tdCCustInvoiceHisDTO = new TdCCustInvoiceHisDTO(); // /**对订单进行开票(包括临停,补缴和会员卡)*/ // List orders = requestObject.getOrders(); // // TdCCustInvoiceHis recordo = new TdCCustInvoiceHis(); // BeanUtils.copyProperties(requestObject, recordo); // // if(CollectionUtil.isNotEmpty(orders)){ // //对订单根据类型进行分类 // Map> aMap = new HashMap<>(); // aMap = orders.stream().collect(Collectors.groupingBy(TdCCustInvoiceByOrdersRequest::getPayOrderType)); // /**1.校验是否开票***/ // Long invoiceTotalFee = 0L; // for(Integer payOrderType :aMap.keySet()){ // //校验是否已经开票 // checkInvoiced(aMap, payOrderType); // } // /**2.比较开票金额*/ // QueryPayOrderListsReq requestQP = new QueryPayOrderListsReq(); // requestQP.setCustId(requestObject.getCustId()); // List orderIds = orders.stream().map(item->item.getRltOrderId()).collect(Collectors.toList()); // requestQP.setOrderIds(orderIds); // requestQP.setSysCode(BasicEnum.SYS_CODE.getValue()); // logger.info("queryRntPayOrderForInvoice 入参对象requestQP:{}", requestQP); // BizResult> responseResult = payOrderQueryService.queryRntPayOrderForInvoice(requestQP); // if(responseResult.isSuccess()&&CollectionUtil.isNotEmpty(responseResult.getData())){ // recordo.setOrgId(Long.valueOf(responseResult.getData().get(0).getOrgId()));//放入组织id // for(PayOrderForInvoiceDTO dto : responseResult.getData()){ // invoiceTotalFee += dto.getOrderActFee(); // } // } // if (0 != new BigDecimal(invoiceTotalFee).compareTo(requestObject.getInvoiceTotalFee())) { // logger.info("insertCustInvoiceHistoryDetailInfo--手机端开票金额计算有误 "); // throw new BizException(ErrorType.APP_ERROR, "开票金额计算有误"); // } // /**3.进行开票***/ // for(Integer payOrderType :aMap.keySet()){ // logger.info("开票更改开票状态: "+JSONObject.toJSONString(aMap.get(payOrderType))); // /**临停费用*/ // if(PayOrderTypeEnum.PARK_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.SHAREBERTH_PAY.value().equals(payOrderType)|| // PayOrderTypeEnum.PARKPRE_PAY.value().equals(payOrderType)){ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**临停*/ // // 更新已开发票状态 // logger.info("临停车,开票更改开票状态: "+JSONObject.toJSONString(ordersRequest)); // UpdateOrderParkByOrderIdRequest orderIdRequest = new UpdateOrderParkByOrderIdRequest(); // orderIdRequest.setOrderId(ordersRequest.getRltOrderId()); // orderIdRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderIdRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // rntParkOrderOperService.updateOrderParkByOrderId(orderIdRequest); // hisDetailList = this.getCustInvoiceHisDetail(requestObject,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.PARK_ORDER.value()); // }else if(PayOrderTypeEnum.PARKBACK_PAY.value().equals(payOrderType)){ // /**欠费补交*/ // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**欠费补交*/ // // 更新已开发票状态 // UpdateOrderBackByOrderIdRequest orderIdRequest = new UpdateOrderBackByOrderIdRequest(); // orderIdRequest.setOrderId(ordersRequest.getRltOrderId()); // orderIdRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderIdRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // backParkOrderOperService.updateBackOrderByOrderId(orderIdRequest); // hisDetailList = this.getCustInvoiceHisDetail(requestObject,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.PARK_ORDER.value()); // // }else if(PayOrderTypeEnum.VIP_CARD_ADDED.value().equals(payOrderType)|| // PayOrderTypeEnum.VIP_CARD_RENEW.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.AREA_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_ADDED.value().equals(payOrderType) || // PayOrderTypeEnum.TIME_VIP_CARD_CHANGE_CARNUM.value().equals(payOrderType)) // { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**会员卡*/ // // 更新是否已开发票状态 // UpdateVipcardDetailReq updateVipcardDetailReq = new UpdateVipcardDetailReq(); // updateVipcardDetailReq.setOrderId(ordersRequest.getRltOrderId()); // updateVipcardDetailReq.setInvoiceState(InvoiceStateEnum.YES.getValue()); // updateVipcardDetailReq.setSysCode(BasicEnum.SYS_CODE.getValue()); // vipCardOrderOperService.updateVipCardDetailByOrderId(updateVipcardDetailReq); // hisDetailList = this.getCustInvoiceHisDetail(requestObject,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.VIP_ORDER.value()); // // }else if(PayOrderTypeEnum.BALANCE_PAY.value().equals(payOrderType)) { // for(TdCCustInvoiceByOrdersRequest ordersRequest :aMap.get(payOrderType)) { // /**账户充值*/ // // 更新是否已开发票状态 // OrderRechargeUpdateRequest orderRechargeUpdateRequest = new OrderRechargeUpdateRequest(); // orderRechargeUpdateRequest.setOrderId(ordersRequest.getRltOrderId()); // orderRechargeUpdateRequest.setInvoiceState(InvoiceStateEnum.YES.getValue()); // orderRechargeUpdateRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // rechargeOrderOperService.updateOrderRechargeByOrderIdOrId(orderRechargeUpdateRequest); // hisDetailList = this.getCustInvoiceHisDetail(requestObject,ordersRequest,hisDetailList); // } // recordo.setInvoiceBigType(OrderBigTypeEnum.RECHARGE_ORDER.value()); // // } // } // } else { // logger.info("openTicketForCustInvoiceHisInfo--requestObject.getOrders 传入参数订单列表为空 "); // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // //查询销方信息 // TdCCustInvoiceSaleQueryRequest saleRequest = new TdCCustInvoiceSaleQueryRequest(); // saleRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // saleRequest.setOrgId(recordo.getOrgId()); // // 新增了税号,根据税号获取对应的销方信息 by zegnqc // saleRequest.setSaleTaxids(Collections.singletonList(requestObject.getSaleTaxid())); // if (null == recordo.getOrgId()) { // throw new BizException(ErrorType.PARAMM_NULL, "获取销方信息,组织id为空!"); // } // List saleList = tdCCustInvoiceSaleDao.queryTdCCustInvoiceSale(saleRequest); // if(CollectionUtils.isEmpty(saleList)){ // throw new BizException(ErrorType.BIZ_ERROR, "根据当前组织编码["+recordo.getOrgId()+"],未查询到相应的销方信息!"); // } // // tdCCustInvoiceHisDTO.setCustInvoiceHisDetailDTOList(hisDetailList); // TdCCustInvoiceSale saleInfo = saleList.get(0); // // 历史开票插入 // recordo.setInvoiceTaxRate(new BigDecimal(saleInfo.getItemTaxRate())); // //总价除以(1+9%)乘9% // recordo.setInvoiceTaxFee(recordo.getInvoiceTotalFee() == null ? new BigDecimal("0") : // ((recordo.getInvoiceTotalFee()).multiply(recordo.getInvoiceTaxRate())) // ); // BigDecimal a = recordo.getInvoiceTaxRate().add(new BigDecimal(1)); // recordo.setInvoiceTaxFee(recordo.getInvoiceTaxFee().divide(a,2, RoundingMode.HALF_UP) // ); // recordo.setInvoiceTotalFee(recordo.getInvoiceTotalFee()); // recordo.setInvoiceFee(recordo.getInvoiceTotalFee() == null ? new BigDecimal("0") : // (recordo.getInvoiceTotalFee()).subtract(recordo.getInvoiceTaxFee())); // //放入销方信息 // recordo.setSaleAddress(saleInfo.getAddress()); // recordo.setSaleBankName(saleInfo.getSaleBankName()); // recordo.setSaleCardNo(saleInfo.getSaleBankNo()); // recordo.setSaleName(saleInfo.getSaleName()); // recordo.setSaleTaxid(saleInfo.getSaleTaxid()); // //放入开票人、复核人、收款人 // recordo.setChecker(saleInfo.getChecker()); // recordo.setPryee(saleInfo.getPryee()); // recordo.setDrawer(saleInfo.getDrawer()); // if(StringUtils.isEmpty(recordo.getTicketContent())){ // recordo.setTicketContent(saleInfo.getItemName()); // } // recordo.setTerminalSource(requestObject.getTerminalSource()); // logger.info("---begin--openTicketForCustInvoiceHisInfo记录客户开发票历史信息,入参={}", JSONObject.toJSON(recordo)); // recordo.setId(custInvoiceHisDao.insertCustInvoiceHistoryInfo(recordo)); // BeanUtils.copyProperties(recordo, tdCCustInvoiceHisDTO); // // //新增开票条目 // List items = new ArrayList<>(); // TdCCustInvoiceHisItem item = new TdCCustInvoiceHisItem(); // BeanUtils.copyProperties(recordo, item); // item.setInvoiceId(recordo.getInvoiceId()); // item.setItemName(saleInfo.getItemName()); // item.setItemCode(saleInfo.getItemCode()); // item.setLineType(InvoiceItemEnum.LINETYPE);//0:正常行1:折扣行2:被折扣行 // item.setTaxRate(saleInfo.getItemTaxRate()); // item.setUnit(InvoiceItemEnum.UNIT); // item.setSpec(InvoiceItemEnum.SPEC); // item.setQuantity(1D); // item.setTaxPrice(recordo.getInvoiceTotalFee() == null?0:(recordo.getInvoiceTotalFee().doubleValue())/100); // item.setTotalAmount(recordo.getInvoiceTotalFee() == null?0:(recordo.getInvoiceTotalFee().doubleValue())/100); // item.setYhzcbs("0");//税收优惠政策标志0:不使用 1:使用 // items.add(item); // custInvoiceHisDao.insertCustInvoiceHistorItems(items ); // return new BizResult (tdCCustInvoiceHisDTO); // } // // private List getCustInvoiceHisDetail(TdCCustInvoiceHisRequest requestObject, // TdCCustInvoiceByOrdersRequest ordersRequest,List hisDetailList){ // // 新增已开发票详情 // TdCCustInvoiceHisDetail record = new TdCCustInvoiceHisDetail(); // record.setOrderId(ordersRequest.getRltOrderId()); // record.setInvoiceId(requestObject.getInvoiceId()); // record.setOrderType(ordersRequest.getPayOrderType()); // record.setOrderActFee(new BigDecimal(ordersRequest.getOrderActFee())); // record.setOrderPayedFee(new BigDecimal(ordersRequest.getOrderActFee())); // record.setOrderTotalFee(new BigDecimal(ordersRequest.getOrderTotalFee())); // record.setOrderDate(ordersRequest.getCreateDate()); // record.setDataState(1); // record.setCreateDate(new Date()); // record.setCarNumber(ordersRequest.getCarNumber()); // record.setPlNo(ordersRequest.getPlNo()); // record.setPlName(ordersRequest.getPlName()); // record.setId(custInvoiceHisDetailDao.insertCustInvoiceHistoryDetailInfo(record)); // // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // BeanUtils.copyProperties(record, tdCCustInvoiceHisDetailDTO); // // hisDetailList.add(tdCCustInvoiceHisDetailDTO); // // return hisDetailList; // } // // private List createCustInvoiceHisDetail(TdCCustInvoiceHisRequest requestObject,TdCCustInvoiceByOrdersRequest ordersRequest,List hisDetailList){ // // 新增已开发票详情 // TdCCustInvoiceHisDetail record = new TdCCustInvoiceHisDetail(); // record.setOrderId(ordersRequest.getRltOrderId()); // record.setInvoiceId(requestObject.getInvoiceId()); // record.setOrderType(ordersRequest.getPayOrderType()); // record.setOrderActFee(new BigDecimal(ordersRequest.getOrderActFee())); // record.setOrderPayedFee(new BigDecimal(ordersRequest.getOrderActFee())); // record.setOrderTotalFee(new BigDecimal(ordersRequest.getOrderTotalFee())); // record.setOrderDate(ordersRequest.getCreateDate()); // record.setDataState(1); // record.setCreateDate(new Date()); // record.setCarNumber(ordersRequest.getCarNumber()); // record.setPlNo(ordersRequest.getPlNo()); // record.setPlName(ordersRequest.getPlName()); // if(requestObject.getOptState()==1){ // record.setId(custInvoiceHisDetailDao.insertCustInvoiceHistoryDetailInfo(record)); // } // TdCCustInvoiceHisDetailDTO tdCCustInvoiceHisDetailDTO = new TdCCustInvoiceHisDetailDTO(); // BeanUtils.copyProperties(record, tdCCustInvoiceHisDetailDTO); // // hisDetailList.add(tdCCustInvoiceHisDetailDTO); // // return hisDetailList; // } // // @Override // public BizResult> queryCustInvoiceHisForPage(TdCCustInvoiceHisQueryRequest request) { // PageBean pageBean = new PageBean<>(); // PageInfo pageInfo = custInvoiceHisDao.queryCustInvoiceHisForPage(request); // if(pageInfo!=null){ // PageBeanUtil.copyProperties(pageInfo, pageBean, TdCCustInvoiceHisDTO.class); // // } // return new BizResult<>(pageBean); // } // // @Override // public BizResult queryCustInvoiceHisById(TdCCustInvoiceHisQueryRequest request) { // TdCCustInvoiceHisDTO dto = custInvoiceHisDao.queryCustInvoiceHisById(request); // return new BizResult<>(dto); // } // // @Override // public BizResult openInvoiceRecordTest(TdCCustInvoiceHisRequest request) throws RemoteException, JAXBException { // InvoInfo invoInfo = new InvoInfo(); // invoInfo.setSwno("911390449563895037952"); // invoInfo.setSaleTax("110101999999446"); // invoInfo.setCustName("中兴-测试"); // Orders orderList = new Orders(); // List orders = new ArrayList(); // Order order = new Order(); // order.setBillNo("B10001"); // Items itemList = new Items(); // List items = new ArrayList<>(); // item item = new item(); // item.setKce(124.3D); // items.add(item); // items.add(item); // itemList.setItem(items); // order.setItems(itemList); // // orders.add(order); // orders.add(order); // // orderList.setOrder(orders); // invoInfo.setOrders(orderList); // String xml = XMLHelper.converTomXml(invoInfo); // logger.info("调用电子发票接口开票入参:{}",invoInfo); // ZKInvoiceService zkInvoiceService = this.getEInvoiceServiceBean("http://218.249.166.20:8113","eisp-zk/ws/zkiService?wsdl"); // String result = zkInvoiceService.submitEInvoiceInfo(xml); // ReturnMsg returnMsg = XMLHelper.converyToJavaBean(result,ReturnMsg.class ); // logger.info("调用电子发票接口开票返回:{}",JSONObject.toJSON(returnMsg)); // return new BizResult<>(true); // } // // @Override // @Transactional // public BizResult openInvoiceRecord(TdCCustInvoiceHisRequest request) { // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // List items = new ArrayList<>(); // BeanUtils.copyProperties(request, record); // record.setInvoiceId(SequenceUtil.getNextId(SequenceTypeEnum.INVOICE_ID)); // record.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); // record.setCustId("CLOUD1001"); // record.setCreateDate(new Date()); // List itemDTOs = request.getCustInvoiceHisItemDTOs(); // ListCopyUtil.listCopyProperties(itemDTOs, items, TdCCustInvoiceHisItem.class); // Long result = custInvoiceHisDao.insertCustInvoiceHistoryInfo(record); // if(result <= 0){ // throw new BizException(ErrorType.BIZ_ERROR,"新增电子发票失败!"); // } // for (TdCCustInvoiceHisItem item : items) { // item.setCreateDate(record.getCreateDate()); // item.setCreateEmpid(record.getCreateEmpid()); // item.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); // item.setInvoiceId(record.getInvoiceId()); // item.setOrgId(record.getOrgId()); // Boolean i = custInvoiceHisDao.insertCustInvoiceHistorItems(items); // if(!i){ // throw new BizException(ErrorType.BIZ_ERROR,"新增电子发票条目失败!"); // } // } // return new BizResult<>(result>0); // } // // /** // * 获取金税发票接口bean // * @return // * 2019年8月12日 wangfei // */ // private ZKInvoiceService getEInvoiceServiceBean(String jinshuiWsdl,String serviceUrl){ // // 接口地址 // //http://218.249.166.20:8113/eisp-zk/ws/zkiService?wsdl // String address = "http://" + jinshuiWsdl + "/"+serviceUrl; // // 代理工厂 // JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean(); // // 设置代理地址 // jaxWsProxyFactoryBean.setAddress(address); // // 设置接口类型 // jaxWsProxyFactoryBean.setServiceClass(ZKInvoiceService.class); // // 创建一个代理接口实现 // ZKInvoiceService zkInvoiceService = (ZKInvoiceService) jaxWsProxyFactoryBean.create(); // return zkInvoiceService; // } // // @Override // public BizResult openInvoiceListByOrderIds(TdCCustInvoiceHisRequest request) throws RemoteException, JAXBException { // TdCCustInvoiceSaleQueryRequest saleRequest = new TdCCustInvoiceSaleQueryRequest(); // saleRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // saleRequest.setOrgId(request.getOrgId()); // // 增加税号,后面根据税号查询对应的销方信息;by zengqc 2022-03-29 // if(!StringUtils.isEmpty(request.getSaleTaxid())){ // saleRequest.setSaleTaxids(Collections.singletonList(request.getSaleTaxid())); // } // // if(CollectionUtils.isEmpty(request.getOrderIds())){ // throw new BizException(ErrorType.PARAMM_NULL,"订单编号"); // } // if(StringUtils.isEmpty(request.getOrgId())){ // throw new BizException(ErrorType.PARAMM_NULL,"组织编号"); // } // List invoices = this.queryCustInvoiceHisListByInvoiceIds(request.getOrderIds()); // if(CollectionUtils.isEmpty(invoices)){ // throw new BizException(ErrorType.BIZ_ERROR,"未查询到待开票订单信息!"); // } // //根据组织查询销方信息 // //查询销方信息 // if(invoices.get(0).getOrgId() != null){ // saleRequest.setOrgId(invoices.get(0).getOrgId()); // } // // List saleList = tdCCustInvoiceSaleDao.queryTdCCustInvoiceSale(saleRequest); // if(CollectionUtils.isEmpty(saleList)){ // throw new BizException(ErrorType.BIZ_ERROR, "根据当前组织编码["+request.getOrgId()+"],未查询到相应的销方信息!"); // } // TdCCustInvoiceSale saleInfo = saleList.get(0); // String jinshuiWsdl = saleInfo.getServerIp()+":"+saleInfo.getServerPort(); // String serviceUrl = saleInfo.getWsdlUrl(); // if(org.apache.commons.lang3.StringUtils.isBlank(serviceUrl)){ // serviceUrl = "eisp-zx/ws/zkiService?wsdl"; // } // for (TdCCustInvoiceHisDTO i : invoices) { // // if(i.getTerminalSource()==4){ // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // record.setCustName(request.getCustName()); // record.setInvoiceType(request.getInvoiceType()); // record.setCustTaxid(request.getCustTaxid()); // record.setCustEmail(request.getCustEmail()); // record.setCustBankName(request.getCustBankName()); // record.setCustPhone(request.getCustPhone()); // record.setCustCardNo(request.getCustCardNo()); // record.setCustAddress(request.getCustAddress()); // record.setRemark(request.getRemark()); // record.setInvoiceId(i.getInvoiceId()); // custInvoiceHisDao.updateInvioceByInvoiceId(record); // } // //开始调用接口循环开票 // // this.invoiceOpenHandle(request, i,jinshuiWsdl,serviceUrl); // InvoiceOpenHandler invoiceOpenHandler = (InvoiceOpenHandler) SpringContextUtil.getBean(InvoiceServiceTypeEnum.InvoiceServiceTypeNameEnum.getValue(saleInfo.getServerType()).getDesc()); // BizResult booleanBizResult = invoiceOpenHandler.downTheInvoice(request, saleInfo); // } // // //更新发票余量 // //this.updateInvoiceSaleSurplus(request.getSaleTaxid(),jinshuiWsdl,serviceUrl); // // return new BizResult<>(true); // } // // /** // * 更新发票余量 // * @param taxId // * 2019年9月2日 wangfei // * @throws RemoteException // * @throws JAXBException // */ // private void updateInvoiceSaleSurplus(String taxId,String jinshuiWsdl,String serviceUrl) { // // if(StringUtils.isEmpty(taxId)){ // return; // } // try{ // InvoInfo invoInfo = new InvoInfo(); // invoInfo.setSaleTax(taxId); // String xml = XMLHelper.converTomXml(invoInfo ); // logger.info("调用电子发票余量查询接口入参:{}",xml); // ZKInvoiceService zkInvoiceService = this.getEInvoiceServiceBean(jinshuiWsdl,serviceUrl); // String result = zkInvoiceService.getKPYL(xml); // logger.info("调用电子发票余量查询接口返回:{}",result); // SYFPReturnMsg returnMsg = XMLHelper.converyToJavaBean(result,SYFPReturnMsg.class); // if("0000".equals(returnMsg.getRETURNCODE())){ // TdCCustInvoiceSale record = new TdCCustInvoiceSale(); // record.setSaleTaxid(taxId); // record.setInvoiceSurplusNum(returnMsg.getSYFPFS()); // tdCCustInvoiceSaleDao.updateInvoiceSaleByTaxId(record ); // }else{ // logger.error("调用电子发票余量查询接口报错:{}",result); // } // }catch (Exception e){ // logger.error("调用电子发票余量查询接口报错Exception:{}",e); // } // // } // // /** // * 开始处理开票 // * @param request // * @param i // * @throws RemoteException // * @throws JAXBException // * 2019年9月2日 wangfei // */ // //@Transactional //// private void invoiceOpenHandle(TdCCustInvoiceHisRequest request, TdCCustInvoiceHisDTO i,String jinshuiWsdl,String serviceUrl) //// throws RemoteException, JAXBException { //// //// ZKInvoiceService zkInvoiceService = this.getEInvoiceServiceBean(jinshuiWsdl,serviceUrl); //// // 开始转换参数 //// InvoInfo invoInfo = new InvoInfo(); //// invoInfo.setSwno(i.getInvoiceId()); //// invoInfo.setSaleTax(i.getSaleTaxid()); ////// invoInfo.setCustName(i.getSaleName()); //// if(("0").equals(i.getInvoiceType())){//个人 //// invoInfo.setCustName(i.getCustName()); //// invoInfo.setCustType("03"); //// }else if(("1").equals(i.getInvoiceType())){//企业 //// invoInfo.setCustTaxNo(i.getCustTaxid()); //// invoInfo.setCustName(i.getCustName()); //// invoInfo.setCustType("01"); //// }else if(("2").equals(i.getInvoiceType())){//表示非企业性质单位 //// invoInfo.setCustTaxNo(i.getCustTaxid()); //// invoInfo.setCustName(i.getCustName()); //// invoInfo.setCustType("02"); //// } //// invoInfo.setCustAddr(i.getCustAddress()); ////// invoInfo.setCustTelephone(i.getCustPhone()); //// invoInfo.setCustPhone(i.getCustPhone()); //// invoInfo.setCustEmail(i.getCustEmail()); //// invoInfo.setCustBankAccount(i.getCustBankName() == null ? "" : i.getCustBankName() //// + (i.getCustCardNo() == null ? "" : i.getCustCardNo())); //// //// invoInfo.setInvType(3); //// invoInfo.setBillDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); //// invoInfo.setBillType(1); //// invoInfo.setSpecialRedFlag("0"); //// invoInfo.setOperationCode("10"); //// //设置收款人、复核人、开票人 //// if(org.apache.commons.lang3.StringUtils.isBlank(i.getDrawer())){ //// invoInfo.setKpy(request.getCreateEmpid()); //// }else{ //// invoInfo.setKpy(i.getDrawer()); //// } //// invoInfo.setFhr(i.getChecker()); //// invoInfo.setSky(i.getPryee()); //// invoInfo.setInvoMemo(i.getRemark()); //// //// Orders orderList = new Orders(); //// List orders = new ArrayList(); //// Order order = new Order(); //// order.setBillNo("B"+i.getInvoiceId()); //// Items itemList = new Items(); //// List items = new ArrayList<>(); //// for (TdCCustInvoiceHisItemDTO m : i.getCustInvoiceHisItemDTOs()) { //// item item = new item(); //// item.setName(m.getItemName()); //// item.setCode(m.getItemCode()); //// item.setLineType(m.getLineType()); //// item.setSpec(m.getSpec()); //// item.setUnit(m.getUnit()); //// item.setTaxRate(m.getTaxRate()); //// item.setQuantity(m.getQuantity()); //// item.setTaxPrice(m.getTaxPrice()); //// item.setTotalAmount(m.getTotalAmount()); //// item.setYhzcbs(m.getYhzcbs()); //// item.setYhzcnr(m.getYhzcnr()); //// items.add(item); //// } //// itemList.setItem(items); //// order.setItems(itemList); //// orders.add(order); //// orderList.setOrder(orders); //// invoInfo.setOrders(orderList); //// String xml = XMLHelper.converTomXml(invoInfo); //// logger.info("调用电子发票接口开票入参:{}",xml); //// String result = zkInvoiceService.submitEInvoiceInfo(xml); //// logger.info("调用电子发票接口开票返回:{}",result); //// ReturnMsg returnMsg = XMLHelper.converyToJavaBean(result,ReturnMsg.class); //// if("0000".equals(returnMsg.getMsgCode())){ //// //开票成功 调用修改接口 //// TdCCustInvoiceHis record = new TdCCustInvoiceHis(); //// record.setInvoiceId(i.getInvoiceId()); //// record.setModfiyEmpid(request.getModfiyEmpid()); //// record.setInvoiceState(InvoiceStateEnum.ALREADY_OPEN_INVOICE.getValue()+""); //// record.setMsg(returnMsg.getMsg()); ////// record.setDrawerId(Long.valueOf(request.getModfiyEmpid())); ////// record.setDrawer(request.getCreateEmpid()); //// record.setInvoiceDate(new Date()); //// custInvoiceHisDao.updateInvioceByInvoiceId(record); ////// //开始查询开票后的信息,下载电子发票 ////// Boolean down = this.downTheInvoice(i); ////// if(!down){ ////// throw new BizException(ErrorType.BIZ_ERROR,"开票下载失败!"); ////// } //// //// }else if("9106".equals(returnMsg.getMsgCode())){ //// //重复开票 //// TdCCustInvoiceHis record = new TdCCustInvoiceHis(); //// record.setInvoiceId(i.getInvoiceId()); //// record.setModfiyEmpid(request.getModfiyEmpid()); //// record.setInvoiceState(InvoiceStateEnum.REPEATED_INVOICING.getValue()+""); //// record.setMsg(returnMsg.getMsg()); ////// record.setDrawerId(Long.valueOf(request.getModfiyEmpid())); ////// record.setDrawer(request.getCreateEmpid()); //// custInvoiceHisDao.updateInvioceByInvoiceId(record); //// }else { //// //开票错误 //// TdCCustInvoiceHis record = new TdCCustInvoiceHis(); //// record.setInvoiceId(i.getInvoiceId()); //// record.setModfiyEmpid(request.getModfiyEmpid()); //// record.setInvoiceState(InvoiceStateEnum.INVOICE_PARAM_NOT_VALID.getValue()+""); //// record.setMsg(returnMsg.getMsg()); ////// record.setDrawerId(Long.valueOf(request.getModfiyEmpid())); ////// record.setDrawer(request.getCreateEmpid()); //// custInvoiceHisDao.updateInvioceByInvoiceId(record); //// //// } //// logger.info("调用电子发票接口开票返回:{}",JSONObject.toJSON(returnMsg)); //// } // // /** // * 下载电子发票(单个的) // * @param // * @throws RemoteException // * @throws JAXBException // * 2019年9月2日 wangfei // */ // public BizResult downTheInvoice(TdCCustInvoiceHisRequest request) throws RemoteException, JAXBException { // //获取销方信息 // TdCCustInvoiceSaleQueryRequest saleRequest = new TdCCustInvoiceSaleQueryRequest(); // saleRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // saleRequest.setOrgId(request.getOrgId()); // // 补充根据税号查询销方信息 // saleRequest.setSaleTaxids(Collections.singletonList(request.getSaleTaxid())); // List saleList = tdCCustInvoiceSaleDao.queryTdCCustInvoiceSale(saleRequest); // if(CollectionUtils.isEmpty(saleList)){ // throw new BizException(ErrorType.BIZ_ERROR, "根据当前组织编码["+request.getOrgId()+"],未查询到相应的销方信息!"); // } // TdCCustInvoiceSale saleInfo = saleList.get(0); // String jinshuiWsdl = saleInfo.getServerIp()+":"+saleInfo.getServerPort(); // String serviceUrl = saleInfo.getWsdlUrl(); // if(org.apache.commons.lang3.StringUtils.isBlank(serviceUrl)){ // serviceUrl = "eisp-zx/ws/zkiService?wsdl"; // } // ZKInvoiceService zkInvoiceService = this.getEInvoiceServiceBean(jinshuiWsdl,serviceUrl); // for (String orderId : request.getOrderIds()) { // InvoInfo info = new InvoInfo(); // info.setSwno(orderId); // info.setSaleTax(request.getSaleTaxid()); // String xml = XMLHelper.converTomXml(info); // logger.info("调用电子发票下载接口入参:{}",xml); // String result = zkInvoiceService.splitDownloadEInvoiceInfo(xml); // logger.info("调用电子发票下载接口返回:{}",result); // DownloadReturnMsg returnMsg = XMLHelper.converyToJavaBean(result,DownloadReturnMsg.class); // logger.info("调用电子发票下载接口返回:{}",JSONObject.toJSON(returnMsg)); // if("0000".equals(returnMsg.getReturnMsg().getMsgCode())){ // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // record.setInvoiceId(orderId); // record.setInvoiceState(InvoiceStateEnum.ALREADY_DOWNLOAD.getValue()+""); // record.setMsg(returnMsg.getReturnMsg().getMsg()); // record.setInvoiceCode(returnMsg.getFpMsgs().getFpMsg().get(0).getFpdm()); // record.setInvoiceNumber(returnMsg.getFpMsgs().getFpMsg().get(0).getFphm()); // record.setHjbhsje(returnMsg.getFpMsgs().getFpMsg().get(0).getHjbhsje()); // record.setKphjse(returnMsg.getFpMsgs().getFpMsg().get(0).getKphjse()); // record.setPdfMd5(returnMsg.getFpMsgs().getFpMsg().get(0).getPdfMd5()); // record.setInvoiceUrl(returnMsg.getFpMsgs().getFpMsg().get(0).getPdf_url()); // record.setModfiyDate(new Date()); // custInvoiceHisDao.updateInvioceByInvoiceId(record); // }else{ // //下载错误 // TdCCustInvoiceHis record = new TdCCustInvoiceHis(); // record.setInvoiceId(orderId); // record.setInvoiceState(InvoiceStateEnum.DOWN_FAILD.getValue()+""); // record.setMsg(returnMsg.getReturnMsg().getMsg()); // custInvoiceHisDao.updateInvioceByInvoiceId(record); // return new BizResult<>(ErrorType.BIZ_ERROR,returnMsg.getReturnMsg().getMsg(),false); // } // } // return new BizResult<>(true); // // } // // @Override // public BizResult queryElectronicInvoiceBillingStatistics(InvoiceStatisticsRequest request) { // TdCCustInvoiceHisStatisticsDTO tdCCustInvoiceHisStatisticsDTO = new TdCCustInvoiceHisStatisticsDTO(); // tdCCustInvoiceHisStatisticsDTO.setCustName(request.getCustName()); // tdCCustInvoiceHisStatisticsDTO.setSaleName(request.getSaleName()); // tdCCustInvoiceHisStatisticsDTO.setReportDate(new Date()); // tdCCustInvoiceHisStatisticsDTO.setExportDate(tdCCustInvoiceHisStatisticsDTO.getReportDate()); // List rateDataDTOS = tdCCustInvoiceHisQueryInnerService.queryRateData(request); // if (!CollectionUtils.isEmpty(rateDataDTOS)) { // tdCCustInvoiceHisStatisticsDTO.setRateData(rateDataDTOS); // } // List statisticsDataDTOS = tdCCustInvoiceHisQueryInnerService.queryStatisticsData(request); // if (!CollectionUtils.isEmpty(statisticsDataDTOS)) { // tdCCustInvoiceHisStatisticsDTO.setCustTaxid(statisticsDataDTOS.get(0).getCustTaxID()); // statisticsDataDTOS.stream().forEach(statisticsDataDTO -> // tdCCustInvoiceHisStatisticsDTO.setTotaldata( // tdCCustInvoiceHisStatisticsDTO.getTotaldata() == null ? 0 : tdCCustInvoiceHisStatisticsDTO.getTotaldata() // + statisticsDataDTO.getAmount())); // tdCCustInvoiceHisStatisticsDTO.setStatisticsData(statisticsDataDTOS); // } // return new BizResult<>(tdCCustInvoiceHisStatisticsDTO); // } // // @Override // public BizResult resendInvoiceMail(TdCCustInvoiceHisRequest request, String mailTemplet) throws UnsupportedEncodingException { // TdCCustInvoiceHisDTO invoice = custInvoiceHisDao.queryCustInvoiceHisByInvoiceId(request.getInvoiceId()); // if(!StringUtils.isEmpty(request.getCustEmail())){ // invoice.setCustEmail(request.getCustEmail()); // } // //查询开票服务器信息 // if(invoice == null || StringUtils.isEmpty(invoice.getInvoiceUrl())){ // logger.error("开票信息错误"); // throw new AppException(AppErrorEnum.APP_INVOICEURLNOTNULL_ERROR); // } // TdCCustInvoiceSaleQueryRequest saleRequest = new TdCCustInvoiceSaleQueryRequest(); // saleRequest.setOrgId(request.getOrgId()); // saleRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // // // 补充根据税号查询销方信息 by zengqc 2022-03-29 // if(!StringUtils.isEmpty(request.getSaleTaxid())){ // saleRequest.setSaleTaxids(Collections.singletonList(request.getSaleTaxid())); // } // List sales = tdCCustInvoiceSaleDao.queryTdCCustInvoiceSale(saleRequest); // if(CollectionUtils.isEmpty(sales)){ // logger.error("根据当前orgId["+request.getOrgId()+"]没有查询到相应的开票服务器信息,请及时添加!saleRequest={}", JSONObject.toJSON(saleRequest)); // throw new AppException(AppErrorEnum.APP_UNGETSERVER_ERROR); // } // TdCCustInvoiceSaleDTO saleDTO = new TdCCustInvoiceSaleDTO(); // BeanUtils.copyProperties(sales.get(0), saleDTO); // //发邮件 // if(saleDTO.getMessagePushSwitch() == null || 0 == (saleDTO.getMessagePushSwitch())){ // logger.error("销方邮箱推送开关未开启,请联系工作人员!"); // throw new AppException(AppErrorEnum.APP_MAILPUSHCLOSE_ERROR); // } // //查询开发件箱 // TdCCustInvoiceMail mail = tdCCustInvoiceMailDao.queryTheLessMailByOrgId(request.getOrgId()); // if(mail == null || mail.getId() == null){ // logger.error("销方邮箱信息未查询到,请联系工作人员!"); // logger.info("销方邮箱信息未查询到,请联系工作人员!"); // } // TdCCustInvoiceMailDTO mailDTO = new TdCCustInvoiceMailDTO(); // BeanUtils.copyProperties(mail,mailDTO); // invoice.setInvoiceTotalYuan(invoice.getInvoiceTotalFee() == null ? "0" : // "" + ((invoice.getInvoiceTotalFee()).divide(new BigDecimal(100)))); // String[] str = mailTemplet.split("&&"); // String subject = str[0]; // String content = MsgTemplateUtil.render(str[1], invoice); // logger.info("开始发送电子邮件!:"+invoice.getCustEmail()+subject+ content); // mailService.sendHtmlMail(invoice.getCustEmail(), subject, content,mailDTO); // return new BizResult<>(true); // } // // /** // * 根据发票id获取发票详情以及条目 // * // * @param invoiceIds // * @return 2019年8月26日 wangfei // */ // private List queryCustInvoiceHisListByInvoiceIds(List invoiceIds) { // List result = new ArrayList<>(); // TdCCustInvoiceHisExample example = new TdCCustInvoiceHisExample(); // Criteria sql = example.createCriteria(); // // sql.andInvoiceIdIn(invoiceIds); // sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); // // List list = custInvoiceHisDao.queryCustInvoiceHistoryList(example); // if (CollectionUtil.isNotEmpty(list)) { // //查询明细 // for (TdCCustInvoiceHis i : list) { // TdCCustInvoiceHisDTO dto = new TdCCustInvoiceHisDTO(); // BeanUtils.copyProperties(i, dto); // TdCCustInvoiceHisItemExample example2 = new TdCCustInvoiceHisItemExample(); // example2.createCriteria().andInvoiceIdEqualTo(i.getInvoiceId()).andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); // List itemDTOs = new ArrayList<>(); // List items = tdCCustInvoiceHisItemDao.queryCustInvoiceHistoryList(example2); // if (!CollectionUtils.isEmpty(items)) { // ListCopyUtil.listCopyProperties(items, itemDTOs, TdCCustInvoiceHisItemDTO.class); // dto.setCustInvoiceHisItemDTOs(itemDTOs); // } // result.add(dto); // // } // } // return result; // } // // /** // * 获取客服电话 // * @param // * @return // * @Author: niueb // * @Date: 2019/12/11 // * // */ // private String getServicePhone(Long orgId){ // //查询缓存 // AppOrgDTO appOrgDTO = AppOrgCacheUtil.getAppOrgInfoByOrgId(orgId + ""); // if (appOrgDTO == null) { // appOrgDTO = new AppOrgDTO(); // appOrgDTO.setIsOpenActivity(0); // AppOrgRequest apporgRequest = new AppOrgRequest(); // apporgRequest.setOrgId(orgId + ""); // apporgRequest.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult appOrgDTOBizResult = appOrgService.queryAppOrgByOrgId(apporgRequest); // logger.info("查询APP组织:" + JSONObject.toJSON(appOrgDTOBizResult)); // if (appOrgDTOBizResult.isSuccess() && appOrgDTOBizResult.getData() != null) { // appOrgDTO = appOrgDTOBizResult.getData(); // } // } // String servicePhone = appOrgDTO == null ? "" : appOrgDTO.getPhone(); // return servicePhone; // } // // // /** // * 查询客户所有发票抬头信息 // */ // @Override // public BizResult> queryCustInvoiceInfoListByName(QueryCustInvoiceInfoListRequest requestObject) { // if (null == requestObject) { // throw new BizException(ErrorType.PARAMM_NULL, "请求对象为空"); // } // // TdCCustInvoiceinfoExample example = new TdCCustInvoiceinfoExample(); // example.createCriteria().andInvoiceTypeEqualTo("1").andNameLike(requestObject.getName()+"%"); // // List tdCCustInvoiceinfoList = custInvoiceinfoDao.queryCustInvoiceInfoList(example); // List tdCCustInvoiceinfoDTOList = null; // if (null != tdCCustInvoiceinfoList) { // tdCCustInvoiceinfoDTOList = JSON.parseArray(JSON.toJSONString(tdCCustInvoiceinfoList, false), TdCCustInvoiceinfoDTO.class); // } // // return new BizResult > (tdCCustInvoiceinfoDTOList); // } // // /** // * APP 传过来的开票请求,一次可以包含多个停车场的记录。 如果不同的停车场绑定不同的销方, // * 则需要根据销方,将订单分开开票, 将一开始的一个请求,分解未多个请求的list // */ // @Override // public BizResult> splitOneToList(InvoiceHisSplitOrderRequest invoiceHisSplitOrderRequest) { // List invoiceHisRequestList = new ArrayList<>(); // TdCCustInvoiceHisRequest baseRequest = invoiceHisSplitOrderRequest.getRequestObject(); // // APP穿过来的待开票的所有订单记录 // List orders = invoiceHisSplitOrderRequest.getOrders(); // // 获取停车场编号去重列表 // List plNos = orders.stream() // .map(TdCCustInvoiceByOrdersRequest::getPlNo) // .distinct() // .collect(Collectors.toList()); // // // 根据停车场编号获取对应的税号 // TdCCustInvoiceSaleQueryRequest request = new TdCCustInvoiceSaleQueryRequest(); // request.setOrgId(baseRequest.getOrgId()); // // 该组织下默认的销方 // TdCCustInvoiceSale defaultInvoiceSale = tdCCustInvoiceSaleDao.queryDefaultInvoiceSale(request); // // 默认的销方税号, 找不到默认的话,设置为 “-1” // String defaultSaleTaxId = Optional.ofNullable(defaultInvoiceSale).map(TdCCustInvoiceSale::getSaleTaxid).orElse("-1"); // // // 根据停车场编号获取 停车场编号-税号 关联关系列表 // List saleParkRelList = tdCCustInvoiceSaleParkRelDao.queryInvoiceSaleParkRelByPlNos(plNos); // // // 如果没有默认的销方,并且没有关联的普通销方,则直接返回空 // if (CollectionUtil.isEmpty(saleParkRelList) // && defaultInvoiceSale == null) { // logger.warn("没有默认的销方,并且没有关联的普通销方!!!"); // return new BizResult<>(invoiceHisRequestList); // } // // 停车场编号-销方税号的map // Map plNoTaxIdMap = saleParkRelList.stream() // .collect(Collectors.toMap(TdCCustInvoiceSaleParkRel::getPlNo, TdCCustInvoiceSaleParkRel::getSaleTaxid, (k1, k2) -> k2)); // // // 订单根据停车场编号填充对应的税号,方便后面的处理 // orders.forEach(order -> { // order.setSaleTaxId(Optional.ofNullable(plNoTaxIdMap.get(order.getPlNo())).orElse(defaultSaleTaxId)); // if(order.getSaleTaxId().equals("-1")){ // logger.warn("订单未找到关联的销方数据orderId=[{}]-carNumber=[{}]-plNo=[{}]", order.getRltOrderId(), order.getCarNumber(), order.getPlNo()); // } // }); // // // // KEY:销方税号 -- VALUE:关联的订单列表 MAP // Map> saleIdOrdersMap = orders.stream() // // 如果一个订单没有找到关联税号,也没有默认的税号,则不去开发票 // .filter(order -> !order.getSaleTaxId().equals("-1")) // .collect( // Collectors.toMap( // TdCCustInvoiceByOrdersRequest::getSaleTaxId, // order -> { // List requestList = new ArrayList<>(); // requestList.add(order); // return requestList; // }, // (List v1, List v2) -> { // v1.addAll(v2); // return v1; // } // ) // ); // // // /* // 每个销方下,单独拼接出来自己的订单开票请求。【invoiceTotalFee】重新根据订单计算了一遍 // APP 穿过来的开票请求,一次可以包含多个停车场的记录。 如果不同的停车场绑定不同的销方, // 则需要根据销方,将订单分开开票。 // 所以前端传递过来的 invoiceTotalFee 总费用,查拆开以后,需要重新计算下 // */ // for(String key : saleIdOrdersMap.keySet()){ // List requestList = saleIdOrdersMap.get(key); // if(CollectionUtil.isEmpty(requestList)){ // continue; // } // // 销方以及关联的订单list // TdCCustInvoiceHisRequest temRequest = new TdCCustInvoiceHisRequest(); // BeanUtils.copyProperties(baseRequest, temRequest); // // // // 重新计算 invoiceTotalFee, 拆分以后,对应的开票订单列表可能变化了,所以重新计算 invoiceTotalFee // long invoiceTotalFee = 0L; // for(TdCCustInvoiceByOrdersRequest order : requestList){ // invoiceTotalFee += order.getOrderActFee(); // } // // temRequest.setOrders(requestList); // temRequest.setSaleTaxid(key); // temRequest.setInvoiceTotalFee(new BigDecimal(invoiceTotalFee)); // temRequest.setInvoiceId(SequenceUtil.getNextId(SequenceTypeEnum.INVOICE_ID)); // invoiceHisRequestList.add(temRequest); // } // // return new BizResult<>(invoiceHisRequestList); // } //}