|
|
@@ -47,120 +47,126 @@ public class ERPServiceImpl implements ERPService {
|
|
|
@Override
|
|
|
public Map<String, Object> pushInvoiceOrder(String master, int id) {
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
- Object[] obs = baseDao.getFieldsDataByCondition("DATACENTER.dock_invoice_config", new String[]{"appKey", "appSecret", "token", "taxnum"}, "username='" + master + "'");
|
|
|
- String url = donlimConfig.getRoute();
|
|
|
- System.out.println(url);
|
|
|
- String appKey = donlimConfig.getAppKey();
|
|
|
- String appSecret = donlimConfig.getAppSecret();
|
|
|
- String token = donlimConfig.getToken();
|
|
|
- String taxnum = donlimConfig.getTaxnum();
|
|
|
- if (donlimConfig.isProd()) {
|
|
|
- appKey = obs[0].toString();
|
|
|
- appSecret = obs[1].toString();
|
|
|
- token = obs[2].toString();// 访问令牌
|
|
|
- taxnum = obs[3].toString();// 授权企业税号
|
|
|
- }
|
|
|
- logger.info("pushInvoiceOrder begin: master {} ,id {} ", master, id);
|
|
|
- SpObserver.putSp(master);
|
|
|
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code " +
|
|
|
- " left join custinvoicemsg on ci_cucode = cu_code " +
|
|
|
- " where io_id=" + id);
|
|
|
- if (rs_main.next()) {
|
|
|
- //String autoInvoiceFlag= baseDao.isDBSetting("InvoiceOrder", "autoInvoice")?"true":"false";
|
|
|
- //数据组装
|
|
|
- InvoiceOrderDTO invoiceOrderDTO = new InvoiceOrderDTO();
|
|
|
- invoiceOrderDTO.setOrderType(rs_main.getGeneralString("IO_ORDERTYPE"));
|
|
|
- invoiceOrderDTO.setAutoInvoiceFlag(rs_main.getGeneralString("io_autoinvoice"));//自动开票
|
|
|
- invoiceOrderDTO.setRepeatCall("0");
|
|
|
+ try{
|
|
|
+ Object[] obs = baseDao.getFieldsDataByCondition("DATACENTER.dock_invoice_config", new String[]{"appKey", "appSecret", "token", "taxnum"}, "username='" + master + "'");
|
|
|
+ String url = donlimConfig.getRoute();
|
|
|
+ System.out.println(url);
|
|
|
+ String appKey = donlimConfig.getAppKey();
|
|
|
+ String appSecret = donlimConfig.getAppSecret();
|
|
|
+ String token = donlimConfig.getToken();
|
|
|
+ String taxnum = donlimConfig.getTaxnum();
|
|
|
+ if (donlimConfig.isProd()) {
|
|
|
+ appKey = obs[0].toString();
|
|
|
+ appSecret = obs[1].toString();
|
|
|
+ token = obs[2].toString();// 访问令牌
|
|
|
+ taxnum = obs[3].toString();// 授权企业税号
|
|
|
+ }
|
|
|
+ logger.info("pushInvoiceOrder begin: master {} ,id {} ", master, id);
|
|
|
+ SpObserver.putSp(master);
|
|
|
+ SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code " +
|
|
|
+ " left join custinvoicemsg on ci_cucode = cu_code " +
|
|
|
+ " where io_id=" + id);
|
|
|
+ if (rs_main.next()) {
|
|
|
+ //String autoInvoiceFlag= baseDao.isDBSetting("InvoiceOrder", "autoInvoice")?"true":"false";
|
|
|
+ //数据组装
|
|
|
+ InvoiceOrderDTO invoiceOrderDTO = new InvoiceOrderDTO();
|
|
|
+ invoiceOrderDTO.setOrderType(rs_main.getGeneralString("IO_ORDERTYPE"));
|
|
|
+ invoiceOrderDTO.setAutoInvoiceFlag(rs_main.getGeneralString("io_autoinvoice"));//自动开票
|
|
|
+ invoiceOrderDTO.setRepeatCall("0");
|
|
|
|
|
|
- OrderDTO orderDTO = new OrderDTO();
|
|
|
- orderDTO.setOriginalOrderNo(rs_main.getGeneralString("io_code"));
|
|
|
- orderDTO.setAddDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(rs_main.getDate("io_date")));
|
|
|
- orderDTO.setInvoiceLine(rs_main.getGeneralString("io_invoiceline"));
|
|
|
- orderDTO.setSpecificFactor("0");
|
|
|
- orderDTO.setSaleTaxNum(taxnum);//
|
|
|
- orderDTO.setBuyerName(rs_main.getGeneralString("cu_name"));//客户名称
|
|
|
- orderDTO.setTaxNum(rs_main.getGeneralString("ci_taxnum").trim());//购方税号
|
|
|
- orderDTO.setAccount(rs_main.getGeneralString("ci_account"));
|
|
|
- orderDTO.setAddress(rs_main.getGeneralString("ci_address"));
|
|
|
- orderDTO.setTelephone(rs_main.getGeneralString("ci_telephone"));
|
|
|
- orderDTO.setRemark(rs_main.getGeneralString("io_remark"));
|
|
|
- orderDTO.setPayee(rs_main.getGeneralString("IO_PAYEE"));
|
|
|
- orderDTO.setChecker(rs_main.getGeneralString("IO_CHECKER"));
|
|
|
- orderDTO.setClerk(rs_main.getGeneralString("IO_clerk"));
|
|
|
- orderDTO.setPhone(rs_main.getGeneralString("ci_jf_phone"));
|
|
|
- orderDTO.setEmail(rs_main.getGeneralString("ci_jf_email"));
|
|
|
- //原销售订单编号relateSaleOrderNo
|
|
|
- orderDTO.setRelateSaleOrderNo(rs_main.getGeneralString("io_RelateSaleOrderNo"));
|
|
|
- //原发票号码yfphm
|
|
|
- orderDTO.setYfphm(rs_main.getGeneralString("io_Yfphm"));
|
|
|
- invoiceOrderDTO.setOrderInfo(orderDTO);
|
|
|
+ OrderDTO orderDTO = new OrderDTO();
|
|
|
+ orderDTO.setOriginalOrderNo(rs_main.getGeneralString("io_code"));
|
|
|
+ orderDTO.setAddDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(rs_main.getDate("io_date")));
|
|
|
+ orderDTO.setInvoiceLine(rs_main.getGeneralString("io_invoiceline"));
|
|
|
+ orderDTO.setSpecificFactor("0");
|
|
|
+ orderDTO.setSaleTaxNum(taxnum);//
|
|
|
+ orderDTO.setBuyerName(rs_main.getGeneralString("cu_name"));//客户名称
|
|
|
+ orderDTO.setTaxNum(rs_main.getGeneralString("ci_taxnum").trim());//购方税号
|
|
|
+ orderDTO.setAccount(rs_main.getGeneralString("ci_account"));
|
|
|
+ orderDTO.setAddress(rs_main.getGeneralString("ci_address"));
|
|
|
+ orderDTO.setTelephone(rs_main.getGeneralString("ci_telephone"));
|
|
|
+ orderDTO.setRemark(rs_main.getGeneralString("io_remark"));
|
|
|
+ orderDTO.setPayee(rs_main.getGeneralString("IO_PAYEE"));
|
|
|
+ orderDTO.setChecker(rs_main.getGeneralString("IO_CHECKER"));
|
|
|
+ orderDTO.setClerk(rs_main.getGeneralString("IO_clerk"));
|
|
|
+ orderDTO.setPhone(rs_main.getGeneralString("ci_jf_phone"));
|
|
|
+ orderDTO.setEmail(rs_main.getGeneralString("ci_jf_email"));
|
|
|
+ //原销售订单编号relateSaleOrderNo
|
|
|
+ orderDTO.setRelateSaleOrderNo(rs_main.getGeneralString("io_RelateSaleOrderNo"));
|
|
|
+ //原发票号码yfphm
|
|
|
+ orderDTO.setYfphm(rs_main.getGeneralString("io_Yfphm"));
|
|
|
+ invoiceOrderDTO.setOrderInfo(orderDTO);
|
|
|
|
|
|
- SqlRowList rs_det = baseDao.queryForRowSet("select * from invoiceOrderdet_view where id_ioid=" + id + " order by id_detno");
|
|
|
- List<OrderDetDTO> dets = new ArrayList<>();//商品列表
|
|
|
- while (rs_det.next()) {
|
|
|
- OrderDetDTO orderDetDTO = new OrderDetDTO();
|
|
|
- orderDetDTO.setRowNo(rs_det.getGeneralString("id_id"));//唯一值
|
|
|
- orderDetDTO.setGoodsName(rs_det.getGeneralString("pr_detail"));
|
|
|
- orderDetDTO.setSpec(rs_det.getGeneralString("pr_spec"));
|
|
|
- orderDetDTO.setUnit(rs_det.getGeneralString("pr_unit"));
|
|
|
- orderDetDTO.setNum(rs_det.getGeneralString("id_qty"));
|
|
|
- //orderDetDTO.setPrice(rs_det.getGeneralString("id_price"));//平台算法问题 传单价会有差异,校验可能不通过,所有传金额和数量,不传单价
|
|
|
- orderDetDTO.setTaxRate(rs_det.getGeneralString("taxrate"));//0.13
|
|
|
- orderDetDTO.setTax(rs_det.getGeneralString("TAXTOTAL"));
|
|
|
+ SqlRowList rs_det = baseDao.queryForRowSet("select * from invoiceOrderdet_view where id_ioid=" + id + " order by id_detno");
|
|
|
+ List<OrderDetDTO> dets = new ArrayList<>();//商品列表
|
|
|
+ while (rs_det.next()) {
|
|
|
+ OrderDetDTO orderDetDTO = new OrderDetDTO();
|
|
|
+ orderDetDTO.setRowNo(rs_det.getGeneralString("id_id"));//唯一值
|
|
|
+ orderDetDTO.setGoodsName(rs_det.getGeneralString("pr_detail"));
|
|
|
+ orderDetDTO.setSpec(rs_det.getGeneralString("pr_spec"));
|
|
|
+ orderDetDTO.setUnit(rs_det.getGeneralString("pr_unit"));
|
|
|
+ orderDetDTO.setNum(rs_det.getGeneralString("id_qty"));
|
|
|
+ //orderDetDTO.setPrice(rs_det.getGeneralString("id_price"));//平台算法问题 传单价会有差异,校验可能不通过,所有传金额和数量,不传单价
|
|
|
+ orderDetDTO.setTaxRate(rs_det.getGeneralString("taxrate"));//0.13
|
|
|
+ orderDetDTO.setTax(rs_det.getGeneralString("TAXTOTAL"));
|
|
|
|
|
|
/*传含税
|
|
|
orderDetDTO.setTaxAmount(rs_det.getGeneralString("id_amount"));
|
|
|
orderDetDTO.setHsbz(rs_det.getGeneralString("hsbz"));*/
|
|
|
- /*传不含税*/
|
|
|
- orderDetDTO.setTaxAmount(rs_det.getGeneralString("NETTOTAL"));
|
|
|
- orderDetDTO.setHsbz("0");
|
|
|
+ /*传不含税*/
|
|
|
+ orderDetDTO.setTaxAmount(rs_det.getGeneralString("NETTOTAL"));
|
|
|
+ orderDetDTO.setHsbz("0");
|
|
|
|
|
|
- orderDetDTO.setSpbm(rs_det.getGeneralString("spbm"));
|
|
|
- orderDetDTO.setZke(rs_det.getGeneralString("ZKE"));
|
|
|
- dets.add(orderDetDTO);
|
|
|
- }
|
|
|
- invoiceOrderDTO.setOrderOriginalDetails(dets);
|
|
|
- invoiceOrderDTO.setInvoiceGoodsTransports(new ArrayList<>());
|
|
|
- System.out.println(JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
- logger.info("pushInvoiceOrder master {} , id {} , content {}", master, id,JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
- //调用对接
|
|
|
- NNOpenSDK sdk = NNOpenSDK.getIntance();
|
|
|
- String method = "nuonuo.OpeMplatform.saveOrder"; // API方法名
|
|
|
- String content = sdk.convertToUtf8(JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
|
|
|
- System.out.println("appKey:"+appKey);
|
|
|
- System.out.println("appSecret:"+appSecret);
|
|
|
- System.out.println("token:"+token);
|
|
|
- System.out.println("taxnum:"+taxnum);
|
|
|
- System.out.println("content:"+content);
|
|
|
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
|
|
|
- logger.info("pushInvoiceOrder resultString {}, token {}", result, token);
|
|
|
- Map<Object, Object> res = JSONUtil.toMap(result);
|
|
|
- System.out.println(result);
|
|
|
- Object status = res.get("status");
|
|
|
- Object message = res.get("message");
|
|
|
- if (status != null && "0000".equals(status.toString())) {//调用成功
|
|
|
- baseDao.execute("update invoiceOrder set io_dockstatus='对接成功',IO_INVOICESTATUS=0 where io_id=" + id);
|
|
|
- commonService.logSRecord("开票订单对接", id);
|
|
|
- } else if (status != null && "9999".equals(status.toString()) && message != null && message.toString().contains("已存在原始订单")) {
|
|
|
- baseDao.execute("update invoiceOrder set io_dockstatus='对接成功',IO_INVOICESTATUS=0 where io_id=" + id);
|
|
|
- commonService.logFRecord("开票订单对接", "(" + status + ")" + message, id);
|
|
|
- } else {
|
|
|
- baseDao.execute("update invoiceOrder set io_dockstatus='对接失败' where io_id=" + id);
|
|
|
- commonService.logFRecord("开票订单对接", "(" + status + ")" + message, id);
|
|
|
+ orderDetDTO.setSpbm(rs_det.getGeneralString("spbm"));
|
|
|
+ orderDetDTO.setZke(rs_det.getGeneralString("ZKE"));
|
|
|
+ dets.add(orderDetDTO);
|
|
|
+ }
|
|
|
+ invoiceOrderDTO.setOrderOriginalDetails(dets);
|
|
|
+ invoiceOrderDTO.setInvoiceGoodsTransports(new ArrayList<>());
|
|
|
+ System.out.println(JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
+ logger.info("pushInvoiceOrder master {} , id {} , content {}", master, id,JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
+ //调用对接
|
|
|
+ NNOpenSDK sdk = NNOpenSDK.getIntance();
|
|
|
+ String method = "nuonuo.OpeMplatform.saveOrder"; // API方法名
|
|
|
+ String content = sdk.convertToUtf8(JSONArray.toJSONString(invoiceOrderDTO));
|
|
|
+ String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
|
|
|
+ System.out.println("appKey:"+appKey);
|
|
|
+ System.out.println("appSecret:"+appSecret);
|
|
|
+ System.out.println("token:"+token);
|
|
|
+ System.out.println("taxnum:"+taxnum);
|
|
|
+ System.out.println("content:"+content);
|
|
|
+ String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
|
|
|
+ logger.info("pushInvoiceOrder resultString {}, token {}", result, token);
|
|
|
+ Map<Object, Object> res = JSONUtil.toMap(result);
|
|
|
+ System.out.println(result);
|
|
|
+ Object status = res.get("status");
|
|
|
+ Object message = res.get("message");
|
|
|
+ if (status != null && "0000".equals(status.toString())) {//调用成功
|
|
|
+ baseDao.execute("update invoiceOrder set io_dockstatus='对接成功',IO_INVOICESTATUS=0 where io_id=" + id);
|
|
|
+ commonService.logSRecord("开票订单对接", id);
|
|
|
+ } else if (status != null && "9999".equals(status.toString()) && message != null && message.toString().contains("已存在原始订单")) {
|
|
|
+ baseDao.execute("update invoiceOrder set io_dockstatus='对接成功',IO_INVOICESTATUS=0 where io_id=" + id);
|
|
|
+ commonService.logFRecord("开票订单对接", "(" + status + ")" + message, id);
|
|
|
+ } else {
|
|
|
+ baseDao.execute("update invoiceOrder set io_dockstatus='对接失败' where io_id=" + id);
|
|
|
+ commonService.logFRecord("开票订单对接", "(" + status + ")" + message, id);
|
|
|
+ }
|
|
|
+ logger.info("pushInvoiceOrder master {} ,id {} status {} message {}", master, id, status, message);
|
|
|
+ map.put("success", true);
|
|
|
+ map.put("status", status);
|
|
|
+ map.put("message", message);
|
|
|
+ return map;
|
|
|
+ } else {//数据无效
|
|
|
+ logger.info("pushInvoiceOrder err {对接源信息无效} ,master {} , id {} status {} message {}", master, id);
|
|
|
+ map.put("success", false);
|
|
|
+ map.put("message", "对接源信息无效");
|
|
|
+ return map;
|
|
|
}
|
|
|
- logger.info("pushInvoiceOrder master {} ,id {} status {} message {}", master, id, status, message);
|
|
|
- map.put("success", true);
|
|
|
- map.put("status", status);
|
|
|
- map.put("message", message);
|
|
|
- return map;
|
|
|
- } else {//数据无效
|
|
|
- logger.info("pushInvoiceOrder err {对接源信息无效} ,master {} , id {} status {} message {}", master, id);
|
|
|
- map.put("success", false);
|
|
|
- map.put("message", "对接源信息无效");
|
|
|
- return map;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ commonService.logFRecord("开票订单对接", e.getMessage(), id);
|
|
|
}
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
@Override
|