| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- package com.uas.eis.service.Impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.TypeReference;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.google.gson.JsonObject;
- import com.uas.eis.config.DonlimConfig;
- import com.uas.eis.core.config.SpObserver;
- import com.uas.eis.core.support.TokenProperties;
- import com.uas.eis.dao.*;
- import com.uas.eis.entity.*;
- import com.uas.eis.sdk.entity.ApiResult;
- import com.uas.eis.sdk.resp.ApiResponse;
- import com.uas.eis.service.ERPService;
- import com.uas.eis.utils.*;
- import nuonuo.open.sdk.NNOpenSDK;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.stereotype.Service;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * @author koul
- * @email koul@usoftchina.com
- * @date 2021-12-06 18:27
- */
- @Service
- public class ERPServiceImpl implements ERPService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private static Map<String,String> tokenConfig = TokenProperties.getAllProperty();
- @Autowired
- private BaseDao baseDao;
- @Autowired
- private DonlimConfig donlimConfig;
- @Override
- public Map<String, Object> pushInvoiceOrder(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_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);
- //Object tab_ma=baseDao.getFieldDataByCondition("enterprise","EN_WHICHSYSTEM","1=1");
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- //数据组装
- InvoiceOrderDTO invoiceOrderDTO=new InvoiceOrderDTO();
- invoiceOrderDTO.setOrderType("1");
- invoiceOrderDTO.setAutoInvoiceFlag("false");//自动开票
- 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(donlimConfig.getTaxnum());
- orderDTO.setBuyerName(rs_main.getGeneralString("cu_name"));//客户名称
- orderDTO.setTaxNum(rs_main.getGeneralString("cu_taxid").trim());//购方税号
- orderDTO.setAccount(rs_main.getGeneralString("cu_bankaccount"));
- orderDTO.setAddress(rs_main.getGeneralString("cu_add1"));
- orderDTO.setTelephone(rs_main.getGeneralString("cu_tel"));
- orderDTO.setRemark(rs_main.getGeneralString("io_remark"));
- 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.setTaxAmount(rs_det.getGeneralString("id_amount"));
- orderDetDTO.setHsbz(rs_det.getGeneralString("hsbz"));
- orderDetDTO.setSpbm(rs_det.getGeneralString("spbm"));
- dets.add(orderDetDTO);
- }
- invoiceOrderDTO.setOrderOriginalDetails(dets);
- invoiceOrderDTO.setInvoiceGoodsTransports(new ArrayList<>());
- System.out.println(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位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- 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='对接成功' where io_id="+id);
- baseDao.execute("insert into invoicedockLog(id_,code_,date_,result_,err_,keyvalue_)values(invoicedockLog_seq.nextval,'开票订单对接',sysdate,'SUCCEED','',"+id+") ");
- }else{
- baseDao.execute("update invoiceOrder set io_dockstatus='对接失败' where io_id="+id);
- baseDao.execute("insert into invoicedockLog(id_,code_,date_,result_,err_,keyvalue_)values(invoicedockLog_seq.nextval,'开票订单对接',sysdate,'FAILED','("+status+")"+message+"',"+id+") ");
- }
- logger.info("pushInvoiceOrder master {} ,id {} status {} message {}",master,id,status,message);
- map.put("success", true);
- 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;
- }
- }
- @Override
- public Map<String, Object> invoiceOrderSubmitKp(String master, int id) {
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_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();// 授权企业税号
- }
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.submitKp"; // API方法名
- String code= rs_main.getGeneralString("io_code");
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("orderNo",code);
- String content=JSONArray.toJSONString(reqParam);
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- System.out.println(result);
- }else{//数据无效
- logger.info("findOrderState err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- }
- return null;
- }
- @Override
- public Map<String, Object> findOrderState(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- if(obs==null){
- return null;//对接信息为配置
- }
- 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()){
- System.out.println("prod");
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }else{
- System.out.println("dev");
- }
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- System.out.println(taxnum);
- String code= rs_main.getGeneralString("io_code");
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.findOrderState"; // API方法名
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("originalOrderNo",code);
- reqParam.put("saleTaxNum",taxnum);
- String content=JSONArray.toJSONString(reqParam);
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- FindOrderStateResp resp = JSON.parseObject(result , new TypeReference<FindOrderStateResp>() {});
- System.out.println(resp.getCode());
- System.out.println(resp.getMessage());
- System.out.println(resp.getData().getInvoiceStatus());
- System.out.println(resp.getData().getErrorMsg());
- System.out.println(result);//{"status":"0000","message":"调用成功","data":{"invoiceStatus":"0","errorMsg":null}}
- map.put("success", true);
- map.put("result", result);
- return map;
- }else{//数据无效
- logger.info("findOrderState err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- }
- return null;
- }
- }
|