// package com.jianshui.invoice.service.impl.api;
//
// import com.jianshui.common.core.domain.AjaxResult;
// import com.jianshui.common.core.domain.entity.Companyservice;
// import com.jianshui.common.exception.jianshui.JianshuiParamErrorException;
// import com.jianshui.invoice.domain.BillInfo;
// import com.jianshui.invoice.domain.Invoice;
// import com.jianshui.invoice.domain.Redinfo;
// import com.jianshui.invoice.domain.dto.SummaryReportQueryDTO;
// import com.jianshui.invoice.mapper.BillInfoMapper;
// import com.jianshui.invoice.service.IInvoiceApiService;
// import com.jianshui.invoice.utils.BillInfoUtils;
// import lombok.extern.slf4j.Slf4j;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Component;
//
// import java.util.List;
//
// /**
//  * @Description 诺诺1.0老版本，和济南航信一个版本
//  * @Author 巩权林
//  * @Date 2022-03-21 16:40
//  **/
// @Component("nuonuo_v1_invoice")
// @Slf4j
// public class NuonuoV1InvoiceApiServiceImpl implements IInvoiceApiService {
//
//     @Autowired
//     private BillInfoMapper billInfoMapper;
//
//     /**
//      * 处理税收分类编码问题
//      */
//     // public void handleSpbm(BillInfo billInfo) {
//     //     List<BillDetail> list = billInfo.getDetail();
//     //     List<BillDetail> details = new ArrayList<>();
//     //     for (BillDetail billDetail : list) {
//     //         // BillDetail billDetail = JSONObject.parseObject(JSONObject.toJSONString(billDetailObj), BillDetail.class);
//     //         //若编码不为空则使用明细内编码
//     //         if (billDetail.getSpbm() != null || StringUtils.equals(billDetail.getSpbm(), "")) {
//     //             List<Productinfo> productinfos = productinfoMapper.getProductinfoBySpmc(billInfo.getOrganId(), billDetail.getGoodsname());
//     //             //若商品内设置了编码则使用该编码
//     //             if (productinfos.size() > 0) {
//     //                 billDetail.setSpbm(productinfos.get(0).getSsflbm());
//     //             } else {
//     //                 //以上都没有则调用智能赋码
//     //             }
//     //         }
//     //         String yhzcbs = billDetail.getYhzcbs();
//     //         if (yhzcbs != null && "".equals(yhzcbs)) {
//     //             billDetail.setYhzcbs(null);
//     //         }
//     //         System.out.println("yhzcbs " + yhzcbs);
//     //
//     //         details.add(billDetail);
//     //     }
//     //     billInfo.setDetail(details);
//     // }
//     @Override
//     public HXResponse addInvoice(BillInfo billInfo, Companyservice companyservice) throws IllegalAccessException, InstantiationException {
//         // 预处理
//         try {
//             billInfo = BillInfoUtils.processBillInfo(billInfo, companyservice);
//         } catch (JianshuiParamErrorException e) {
//             return AjaxResult.error(e.getMessage());
//         } catch (Exception e) {
//             log.error("【销项】【诺诺v1发票】开票接口校验异常", e);
//             return AjaxResult.error("格式校验失败，请检查报文");
//         }
//
//         return AjaxResult.success();
//
//         //
//         //
//         // // 构造诺诺请求参数
//         // HashMap<String, Object> req = new HashMap<String, Object>();
//         // req.put("identity", companyservice.getJnidentity());
//         // req.put("order", billInfo);
//         // JSONObject json = new JSONObject(req); // 像诺诺请求的json
//         // String reqJson = json.toString();
//         //
//         // //String reqJson = "{\"identity\":\"2329CC5F90EDAA82D8BF8841E87DEBEAFE9C519D06F760C5\",\"order\":{\"account\":\"工商银行济南市历下区支行省府分理处\",\"address\":\" 浙江省杭州市万塘路\",\"billinfono\":\"\",\"billno\":\"\",\"buyername\":\"山大地纬软件股份有限公司\",\"checker\":\"测试复核人\",\"clerk\":\"测试开票人\",\"detail\":[{\"goodsname\":\"测试党报1\",\"spec\":\"测试规格\",\"unit\":\"份\",\"num\":1,\"price\":50,\"taxamt\":50,\"taxrate\":\"0.00\",\"tax\":0,\"yhzcbs\":\"0\",\"zzstsgl\":\"\",\"kce\":\"\",\"fphxz\":\"\",\"lslbs\":\"\",\"hsbz\":\"0\",\"taxfreeamt\":\"50\",\"spbm\":\"304080101\",\"zsbm\":\"\"}],\"email\":\"1025081659@qq.com\",\"fpdm\":\"\",\"fphm\":\"\",\"invoicedate\":\"2021-04-27 08:46:48\",\"invoiceline\":\"p\",\"kptype\":\"1\",\"message\":\"测试备注\",\"orderno\":\"1619484408253503\",\"payee\":\"测试收款人\",\"phone\":\"15098948763\",\"saleaccount\":\"\",\"saleaddress\":\"富川瑶族自治县新 永路 138 号\",\"salephone\":\"150989487\",\"saletaxnum\":\"339901999999500\",\"state\":0,\"taxnum\":\"124511234993295177\",\"telephone\":\"15098948763\",\"tsfs\":\"2\"}}";
//         // System.out.println("--------------即将向诺诺发送请求：" + reqJson + "\n");
//         //
//         // String sj = DESDZFP.encrypt(reqJson);
//         // String resp = HttpUtils.creatbill(ServiceUrl.addUrl, sj); // 开票申请
//         // //String resp = "{\"fpqqlsh\":\"21042709471414386825\",\"message\":\"同步成功\",\"status\":\"0000\"}"; // 测试用返回体
//         // ResponseBody responseBody = JSONObject.parseObject(resp, ResponseBody.class); // 获得诺诺返回的请求体
//         // // 处理返回的结果
//         // if (responseBody == null) { // 如果返回的结果为空
//         //     return AjaxResult.error("请求失败！");
//         // }
//         //
//         // if ("0000".equals(responseBody.getStatus())) { // 如果返回成功
//         //     String lsh = responseBody.getFpqqlsh();
//         //     billInfo.setFpqqlsh(lsh);
//         //     billInfo.setOrderno(ordernoorg);
//         //     billInfo.setState(0);
//         //     int re;
//         //     if (billInfo.getBillId() == null) {
//         //         re = billInfoMapper.insertBillInfo(billInfo);
//         //     } else {
//         //         re = billInfoMapper.updateBillInfo(billInfo);
//         //     }
//         //
//         //
//         //     // 插入完成，插入invoice
//         //     /** 开票优化：开票请求成功后，立即查询发票信息并保存  tianenhui add 2021年12月14日  **/
//         //     //兼容诺诺端自动限额拆分开票情况
//         //     //延迟两秒钟
//         //     try {
//         //         Thread.sleep(2000);
//         //     } catch (Exception e) {
//         //     }
//         //
//         //     AjaxResult queryResult = AjaxResult.success();
//         //     String[] fpqqlsharr = lsh.split(",");
//         //     for (int i = 0; i < fpqqlsharr.length; i++) {
//         //         String fpqqlsh = fpqqlsharr[i];
//         //
//         //         if (fpqqlsh == null || "".equalsIgnoreCase(fpqqlsh)) { // 通过订单号查询
//         //             // 根据订单号查询结果
//         //             HashMap reqmess = new HashMap();
//         //             reqmess.put("identity", companyservice.getJnidentity());
//         //             reqmess.put("orderno", billInfo.getOrderno());
//         //             reqmess.put("isOfferInvoiceDetail", "true"); // 加这句话，才会返回发票的详细信息，真坑，文档里没有
//         //             json = new JSONObject(reqmess);
//         //             queryResult = queryToNuonuo(ServiceUrl.queryByOrderNoUrl, json, companyservice.getJnnkey(), ordernoorg, billInfo, reqmess, responseBody, companyservice);
//         //         } else { // 流水号查询
//         //             HashMap reqmess = new HashMap();
//         //             reqmess.put("identity", companyservice.getJnidentity());
//         //             reqmess.put("fpqqlsh", responseBody.getFpqqlsh());
//         //             reqmess.put("isOfferInvoiceDetail", "true");
//         //             json = new JSONObject(reqmess);
//         //             queryResult = queryToNuonuo(ServiceUrl.queryUrl, json, companyservice.getJnnkey(), ordernoorg, billInfo, reqmess, responseBody, companyservice);
//         //         }
//         //     }
//         //
//         //     if (queryResult.get("code").equals(200)) {
//         //         //招金需求：开票完成后发送阿里云短信
//         //         SysConfig myConfig = sysConfigMapper.checkConfigKeyUnique("aliyun");
//         //         if (myConfig != null) {
//         //             String aliyun = myConfig.getConfigValue();
//         //             String[] arr = aliyun.split(",");
//         //             for (int m = 0; m < arr.length; m++) {
//         //                 if (billInfo.getSaletaxnum().equals(arr[m])) {
//         //                     //招金阿里云短信发送
//         //                     try {
//         //                         SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
//         //                         String date = sdf.format(new Date());
//         //                         JSONObject templateParamJson = new JSONObject();
//         //                         templateParamJson.put("date", date);
//         //                         templateParamJson.put("buyerName", billInfo.getBuyername());
//         //                         templateParamJson.put("code", ":8088/pdf?orderno=" + ordernoorg);
//         //                         AjaxResult results = aliyunmsgService.SendBatchSmsResponseno(billInfo.getPhone(), templateParamJson.toJSONString());
//         //                     } catch (Exception e) {
//         //                         e.printStackTrace();
//         //                     }
//         //                 }
//         //             }
//         //         }
//         //     }
//         //
//         //
//         //     /** 增加发票回写到业务系统的操作  tianenhui 2021年8月30日 -----start----- */
//         //     System.out.println("发票回写判断：" + billInfo.getBillinfono() + "：" + (companyservice.getRebackType() != null && 0 != companyservice.getRebackType()));
//         //     if (companyservice.getRebackType() != null && 0 != companyservice.getRebackType()) {
//         //         //插入一条待回写单据
//         //         Reback reback = new Reback();
//         //         reback.setCompanyid(String.valueOf(companyservice.getCompanyid()));
//         //         reback.setOrderno(billInfo.getOrderno());
//         //         reback.setFpqqlsh(billInfo.getFpqqlsh());
//         //         reback.setSellertaxnum(companyservice.getSellertax());
//         //         reback.setUrl(companyservice.getRebackurl());
//         //         reback.setCreateTime(new Date());
//         //         reback.setIspush("0");
//         //         reback.setTscs(0l);
//         //         reback.setC_invoice_line(billInfo.getInvoiceline());
//         //         reback.setC_buyername(billInfo.getBuyername());
//         //         reback.setC_taxnum(billInfo.getTaxnum());
//         //         iRebackService.insertReback(reback);
//         //     }
//         //     /** 增加发票回写到业务系统的操作  tianenhui 2021年8月30日 -----end----- */
//         //
//         //     try {
//         //         //回写购方信息
//         //         customerService.insertAddInvoiceCustomer(billInfo);
//         //     } catch (Exception e) {
//         //         e.printStackTrace();
//         //     }
//         //     return queryResult;
//         // }
//         //
//         // // 如果处理失败了
//         // if ("9999".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("参数错误,修改参数重新传入！");
//         // }
//         // if ("9009".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("系统错误,联系技服排查！");
//         // }
//         // if ("4000".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("检查是否加密！");
//         // }
//         // if ("400".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("检测是否传入参数名为 order，参数值为密文！");
//         // }
//         // if ("9301".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("企业信息备案错误！");
//         // }
//         // if ("9302".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("身份认证与当前企业税号不相符！");
//         // }
//         // if ("9106".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("该订单已生成发票！");
//         // }
//         // if ("9122".equals(responseBody.getStatus())) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error("商品详情为空！");
//         // }
//         // if (responseBody.getMessage().isEmpty() == false) {
//         //     billInfo.setState(2);
//         //     billInfoMapper.updateBillInfo(billInfo);
//         //     return AjaxResult.error(responseBody.getMessage());
//         // }
//         //
//         // return AjaxResult.error("开票失败， 请重试！");
//         //
//         //
//         // return null;
//     }
//
//     @Override
//     public AjaxResult reInvoice(BillInfo billInfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult queryInvoice(BillInfo billInfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult batchQueryInvoices(BillInfo billInfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult uploadRedInfo(Redinfo redinfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult queryRedInfo(Redinfo redinfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult downloadRedInfo(Redinfo redinfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult deprecateInvoice(Invoice invoice, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult printInvoice(Invoice invoice, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult pushData(BillInfo billInfo, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult batchPrint(List<BillInfo> billInfos, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult syncStockInfo(Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult signInvoice(Invoice invoice, Companyservice companyservice) {
//         return null;
//     }
//
//     @Override
//     public AjaxResult SummaryReport(SummaryReportQueryDTO summaryReportQueryDTO, Companyservice companyservice) {
//         return null;
//     }
// }
