5 changed files with 263 additions and 3 deletions
@ -0,0 +1,60 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.yxt.anrui.fin.api.kingdee.Data; |
|||
import com.yxt.anrui.fin.api.kingdee.entrybill.EntryBillDto; |
|||
import com.yxt.anrui.fin.biz.kingdee.entrybill.EntryBillCastToKingDeeBillFields; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 转换业务数据到金蝶的接口上 |
|||
*/ |
|||
@Service |
|||
public class FinKingDeeFeignService { |
|||
/** |
|||
* 保存入账申请接口生成的应付单的数据,推送到金蝶的平台中 |
|||
* @param entryBillDto |
|||
* @return |
|||
*/ |
|||
public ResultBean draftEntryBill(EntryBillDto entryBillDto) { |
|||
ResultBean rb=ResultBean.fireFail(); |
|||
Data data=new Data(); |
|||
EntryBillCastToKingDeeBillFields.cast(entryBillDto,data); |
|||
try { |
|||
return saveBill("",data); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
/** |
|||
* 调用金蝶的接口 |
|||
* @param data |
|||
* @return |
|||
*/ |
|||
private ResultBean saveBill(String formId,Data data) throws Exception { |
|||
KingDeeParams kdp=new KingDeeParams(); |
|||
kdp.setData(data); |
|||
kdp.setFormId(formId); |
|||
String jsonParam = JSONObject.toJSONString(kdp); |
|||
return KingDeeSaveSKD.SavePurRKD(jsonParam); |
|||
} |
|||
|
|||
/** |
|||
* 调用金蝶接口的数据格式 |
|||
*/ |
|||
private class KingDeeParams{ |
|||
private String formId; |
|||
private Data data; |
|||
|
|||
public void setFormId(String formId) { |
|||
this.formId = formId; |
|||
} |
|||
|
|||
public void setData(Data data) { |
|||
this.data = data; |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,170 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import org.apache.http.Header; |
|||
import org.apache.http.HttpResponse; |
|||
import org.apache.http.client.HttpClient; |
|||
import org.apache.http.client.methods.HttpPost; |
|||
import org.apache.http.entity.StringEntity; |
|||
import org.apache.http.impl.client.DefaultHttpClient; |
|||
import org.apache.http.util.EntityUtils; |
|||
|
|||
import java.net.URI; |
|||
|
|||
public class KingDeeSaveSKD { |
|||
|
|||
private static String sessionkey = "kdservice-sessionid"; |
|||
|
|||
private static String aspnetsessionkey = "ASP.NET_SessionId"; |
|||
|
|||
private static String sessionValue = ""; |
|||
|
|||
private static String aspnetsessionValue = ""; |
|||
|
|||
|
|||
/** |
|||
* 保存采购入库单 |
|||
* |
|||
* @throws Exception |
|||
*/ |
|||
|
|||
@SuppressWarnings({"resource", "deprecation"}) |
|||
public static ResultBean SavePurRKD(String jsonParam ) throws Exception { |
|||
// 定义httpClient的实例
|
|||
|
|||
HttpClient httpclient = new DefaultHttpClient(); |
|||
|
|||
JSONObject jsonResult = null; |
|||
|
|||
/********** 用户登录Begin ************************/ |
|||
|
|||
try { |
|||
//登录,校验用户的API接口地址
|
|||
|
|||
String Login_URL = "http://121.36.43.55/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"; |
|||
|
|||
URI uri = new URI(Login_URL); |
|||
|
|||
HttpPost method = new HttpPost(uri); |
|||
|
|||
//登录请求参数
|
|||
|
|||
String jsonParamdl = "{\"acctID\":\"61654d8e138fe6\"," + |
|||
"\"userName\":\"信息部\",\"password\":\"123321\",\"lcid\":2052}"; |
|||
|
|||
StringEntity entity = new StringEntity(jsonParamdl, "utf-8"); |
|||
|
|||
entity.setContentEncoding("UTF-8"); |
|||
|
|||
entity.setContentType("application/json"); |
|||
|
|||
method.setEntity(entity); |
|||
|
|||
HttpResponse result = httpclient.execute(method); |
|||
|
|||
// 请求发送成功,并得到响应
|
|||
|
|||
if (result.getStatusLine().getStatusCode() == 200) { |
|||
String str = ""; |
|||
|
|||
// 读取服务器返回过来的json字符串数据
|
|||
|
|||
str = EntityUtils.toString(result.getEntity()); |
|||
|
|||
// 把json字符串转换成json对象
|
|||
|
|||
jsonResult = JSONObject.parseObject(str); |
|||
|
|||
//判断登录是否成功
|
|||
|
|||
if (jsonResult.getInteger("LoginResultType") == 1) { |
|||
System.out.println("登录成功!"); |
|||
|
|||
// 获取Cookie
|
|||
|
|||
Header[] headers = result.getHeaders("Set-Cookie"); |
|||
|
|||
for (int i = 1; i < headers.length; i++) { |
|||
Header header = headers[i]; |
|||
|
|||
String headerValue = header.getValue(); |
|||
|
|||
// 登录成功返回的登录session信息,保存下来,下面再调用接口的时候传给服务端
|
|||
|
|||
if (headerValue.trim().startsWith(sessionkey)) { |
|||
int endIndex = headerValue.indexOf(';'); |
|||
|
|||
sessionValue = headerValue.substring(20, endIndex); |
|||
|
|||
} else if (headerValue.trim().startsWith( aspnetsessionkey)) { |
|||
int endIndex = headerValue.indexOf(';'); |
|||
aspnetsessionValue = headerValue.substring(18, endIndex); |
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
// 登录失败,不继续
|
|||
else { |
|||
System.out.println("登录失败!"); |
|||
return null; |
|||
} |
|||
} else { |
|||
System.out.println("登录异常!"); |
|||
} |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
return null; |
|||
} |
|||
|
|||
/********** 用户登录END ************************/ |
|||
|
|||
/********** 保存采购入库单Beigin************************/ |
|||
|
|||
try { |
|||
// 数据保存接口地址
|
|||
String Save_URL = "http://121.36.43.55/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc"; |
|||
URI save_uri = new URI(Save_URL); |
|||
HttpPost method = new HttpPost(save_uri); |
|||
//采购入库单保存参数
|
|||
|
|||
System.out.println(jsonParam); |
|||
String ss = "{\"formid\":\"SAL_OUTSTOCK\", \"data\":\"{\\\"Creator\\\":\\\"\\\",\\\"NeedUpDateFields\\\":[],\\\"NeedReturnFields\\\":[],\\\"IsDeleteEntry\\\":\\\"True\\\",\\\"SubSystemId\\\":\\\"\\\",\\\"IsVerifyBaseDataField\\\":\\\"false\\\",\\\"IsEntryBatchFill\\\":\\\"True\\\",\\\"ValidateFlag\\\":\\\"True\\\",\\\"NumberSearch\\\":\\\"True\\\",\\\"InterationFlags\\\":\\\"\\\",\\\"Model\\\":{\\\"FID\\\":0,\\\"FBillTypeID\\\":{\\\"FNUMBER\\\":\\\"XSCKD01_SYS\\\"},\\\"FDate\\\":\\\"2021-12-31 00:00:00\\\",\\\"FSaleOrgId\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FCustomerID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FSaleDeptID\\\":{\\\"FNumber\\\":\\\"03\\\"},\\\"FStockOrgId\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FReceiverID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FSettleID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FPayerID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FOwnerTypeIdHead\\\":\\\"BD_OwnerOrg\\\",\\\"FIsTotalServiceOrCost\\\":false,\\\"F_PAEZ_Assistant\\\":{\\\"FNumber\\\":\\\"00\\\"},\\\"SubHeadEntity\\\":{\\\"FSettleCurrID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FSettleOrgID\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FIsIncludedTax\\\":true,\\\"FLocalCurrID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FExchangeTypeID\\\":{\\\"FNumber\\\":\\\"HLTX01_SYS\\\"},\\\"FExchangeRate\\\":1.0,\\\"FIsPriceExcludeTax\\\":true},\\\"FEntity\\\":[{\\\"FRowType\\\":\\\"Standard\\\",\\\"FMaterialID\\\":{\\\"FNumber\\\":\\\" JX064673\\\"},\\\"Flot\\\":{\\\"FNumber\\\":\\\"11111djz\\\"},\\\"FUnitID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FRealQty\\\":1.0,\\\"FIsFree\\\":false,\\\"FOwnerTypeID\\\":\\\"BD_OwnerOrg\\\",\\\"FOwnerID\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FStockID\\\":{\\\"FNumber\\\":\\\"CK002\\\"},\\\"FStockStatusID\\\":{\\\"FNumber\\\":\\\"KCZT01_SYS\\\"},\\\"FSalUnitID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FSALUNITQTY\\\":1.0,\\\"FSALBASEQTY\\\":1.0,\\\"FPRICEBASEQTY\\\":1.0,\\\"FOUTCONTROL\\\":false,\\\"FIsOverLegalOrg\\\":false,\\\"FARNOTJOINQTY\\\":1.0}],\\\"FOutStockTrace\\\":[{\\\"FLogComId\\\":{\\\"FCODE\\\":\\\"a2u\\\"},\\\"FDelTime\\\":\\\"2021-12-31 00:00:00\\\",\\\"FCarryBillNo\\\":\\\"2121122112\\\"}]}}\\n\"}"; |
|||
String ff= "{\"formid\":\"AR_receivable\",\"data\":\"{\\\"Creator\\\":\\\"\\\",\\\"NeedUpDateFields\\\":[],\\\"NeedReturnFields\\\":[],\\\"IsDeleteEntry\\\":\\\"True\\\",\\\"SubSystemId\\\":\\\"\\\",\\\"IsVerifyBaseDataField\\\":\\\"false\\\",\\\"IsEntryBatchFill\\\":\\\"True\\\",\\\"ValidateFlag\\\":\\\"True\\\",\\\"NumberSearch\\\":\\\"True\\\",\\\"InterationFlags\\\":\\\"\\\",\\\"Model\\\":{\\\"FID\\\":0,\\\"FBillTypeID\\\":{\\\"FNUMBER\\\":\\\"YSD01_SYS\\\"},\\\"FDATE\\\":\\\"2022-01-07 00:00:00\\\",\\\"FISINIT\\\":false,\\\"FENDDATE_H\\\":\\\"2022-01-07 00:00:00\\\",\\\"FCUSTOMERID\\\":{\\\"FNumber\\\":\\\" JXYXB\\\"},\\\"FCURRENCYID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FISPRICEEXCLUDETAX\\\":true,\\\"FSETTLEORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FPAYORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FSALEORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FISTAX\\\":true,\\\"FCancelStatus\\\":\\\"A\\\",\\\"FBUSINESSTYPE\\\":\\\"BZ\\\",\\\"FSetAccountType\\\":\\\"1\\\",\\\"FISHookMatch\\\":false,\\\"FISINVOICEARLIER\\\":false,\\\"F_PMZC_Assistant2\\\":{\\\"FNumber\\\":\\\"01\\\"},\\\"FsubHeadSuppiler\\\":{\\\"FORDERID\\\":{\\\"fNumber\\\":\\\" JXYXB\\\"},\\\"FTRANSFERID\\\":{\\\"fNumber\\\":\\\" JXYXB\\\"},\\\"FChargeId\\\":{\\\"fNumber\\\":\\\" JXYXB\\\"}},\\\"FsubHeadFinc\\\":{\\\"FACCNTTIMEJUDGETIME\\\":\\\"2022-01-07 00:00:00\\\",\\\"FMAINBOOKSTDCURRID\\\":{\\\"fNumber\\\":\\\"PRE001\\\"},\\\"FEXCHANGETYPE\\\":{\\\"fNumber\\\":\\\"HLTX01_SYS\\\"},\\\"FExchangeRate\\\":1.0},\\\"FEntityDetail\\\":[{\\\"FMATERIALID\\\":{\\\"FNumber\\\":\\\" JX091054\\\"},\\\"FMaterialDesc\\\":\\\"X牵引6*4-550超\\\",\\\"FPRICEUNITID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FDeliveryControl\\\":false,\\\"FStockUnitId\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FIsFree\\\":false,\\\"FSalUnitId\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FPriceBaseDen\\\":1.0,\\\"FSalBaseNum\\\":1.0,\\\"FStockBaseNum\\\":1.0}]}}\"}"; |
|||
// String s = "{\"data\":\"\"{\\\"Creator\\\":\\\"\\\",\\\"InterationFlags\\\":\\\"\\\",\\\"IsDeleteEntry\\\":true,\\\"IsEntryBatchFill\\\":true,\\\"IsVerifyBaseDataField\\\":false,\\\"Model\\\":{\\\"FBillTypeID\\\":{\\\"FNUMBER\\\":\\\"XSCKD01_SYS\\\"},\\\"FDate\\\":\\\"2021-12-30 00:00:00\\\",\\\"FDeliveryDeptID\\\":{\\\"FNumber\\\":\\\"\\\"},\\\"FEntity\\\":[{\\\"FARNOTJOINQTY\\\":1,\\\"FEntrynote\\\":\\\"\\\",\\\"FIsFree\\\":false,\\\"FIsOverLegalOrg\\\":false,\\\"FMaterialID\\\":{\\\"FNumber\\\":\\\" JX064673\\\"},\\\"FOUTCONTROL\\\":false,\\\"FOwnerID\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FOwnerTypeID\\\":\\\"BD_OwnerOrg\\\",\\\"FPRICEBASEQTY\\\":1,\\\"FPrice\\\":0,\\\"FRealQty\\\":1,\\\"FRowType\\\":\\\"Standard\\\",\\\"FSALBASEQTY\\\":1,\\\"FSALUNITQTY\\\":1,\\\"FSalUnitID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FStockID\\\":{\\\"FNumber\\\":\\\"CK002\\\"},\\\"FStockStatusID\\\":{\\\"FNumber\\\":\\\"KCZT01_SYS\\\"},\\\"FTaxPrice\\\":0,\\\"FUnitID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"F_PAEZ_Decimal\\\":0,\\\"F_PAEZ_Decimal3\\\":0,\\\"F_PAEZ_Decimal4\\\":0,\\\"Flot\\\":{\\\"FNumber\\\":\\\"111\\\"}}],\\\"FID\\\":0,\\\"FIsTotalServiceOrCost\\\":false,\\\"FOutStockTrace\\\":[{\\\"FCarryBillNo\\\":\\\"1111111\\\",\\\"FDelTime\\\":1640933876112,\\\"FLogComId\\\":{\\\"FCODE\\\":\\\"a2u\\\"}}],\\\"FOwnerTypeIdHead\\\":\\\"BD_OwnerOrg\\\",\\\"FPayerID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FReceiverID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FSaleOrgId\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"FSettleID\\\":{\\\"FNumber\\\":\\\" 田拥涛\\\"},\\\"FStockOrgId\\\":{\\\"FNumber\\\":\\\"100\\\"},\\\"F_PAEZ_Assistant\\\":{\\\"FNumber\\\":\\\"00\\\"},\\\"F_PAEZ_Base\\\":{},\\\"F_PAEZ_Base1\\\":{},\\\"F_PAEZ_Date\\\":1640933876112,\\\"F_PAEZ_Decimal1\\\":0,\\\"F_PAEZ_Decimal2\\\":1,\\\"F_PAEZ_Text\\\":\\\"\\\",\\\"SubHeadEntity\\\":{\\\"FExchangeRate\\\":1,\\\"FExchangeTypeID\\\":{\\\"FNumber\\\":\\\"HLTX01_SYS\\\"},\\\"FIsIncludedTax\\\":true,\\\"FIsPriceExcludeTax\\\":true,\\\"FLocalCurrID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FSettleCurrID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FSettleOrgID\\\":{\\\"FNumber\\\":\\\"100\\\"}}},\\\"NeedReturnFields\\\":[],\\\"NeedUpDateFields\\\":[],\\\"NumberSearch\\\":true,\\\"SubSystemId\\\":\\\"\\\",\\\"ValidateFlag\\\":true}\"\",\"formid\":\"SAL_OUTSTOCK\"}";
|
|||
System.out.println(ss); |
|||
System.out.println(ff); |
|||
StringEntity entity = new StringEntity(jsonParam, "utf-8"); |
|||
System.out.println(JSON.toJSON(entity)); |
|||
entity.setContentEncoding("UTF-8"); |
|||
entity.setContentType("application/json"); |
|||
//把成功登录的Session信息传进去,获取连接信息
|
|||
method.setHeader(sessionkey, sessionValue); |
|||
method.setHeader(aspnetsessionkey, aspnetsessionValue); |
|||
//方法参数
|
|||
method.setEntity(entity); |
|||
HttpResponse result = httpclient.execute(method); |
|||
// 请求发送成功,并得到响应
|
|||
if (result.getStatusLine().getStatusCode() == 200) { |
|||
System.out.println("请求成功"); |
|||
String str = ""; |
|||
// 读取服务器返回过来的json字符串数据
|
|||
str = EntityUtils.toString(result.getEntity()); |
|||
System.out.println(str); |
|||
// 成功的字符串类似
|
|||
// {"Result":{"ResponseStatus":{"IsSuccess":true},"Id":100040,"Number":"CGRK00016"}}
|
|||
// 失败 的字符串类似
|
|||
// {"Result":{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":"FStockId","Message":"单据体“明细信息”第1行字段“仓库”是必填项"},{"FieldName":"AbstractInteractionResult","Message":"AbstractInteractionResult.InteractionContext is null"}]},"Id":""}}
|
|||
// 把json字符串转换成json对象,方便操作
|
|||
jsonResult = JSONObject.parseObject(str); |
|||
} |
|||
} catch (Exception e) { |
|||
System.out.println("post请求提交失败:" + e); |
|||
} |
|||
|
|||
return null; |
|||
/********** 保存采购入库单End************************/ |
|||
} |
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.entrybill; |
|||
|
|||
import com.yxt.anrui.fin.api.kingdee.Data; |
|||
import com.yxt.anrui.fin.api.kingdee.entrybill.EntryBillDto; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 封装转换的类 |
|||
*/ |
|||
public class EntryBillCastToKingDeeBillFields { |
|||
/** |
|||
* 入账的数据对象转换成金蝶数据对象 |
|||
* @param source |
|||
* @param target |
|||
*/ |
|||
public static void cast(EntryBillDto source, Data target) { |
|||
target.setCreator(source.getUserSid()); |
|||
/** |
|||
* InterationFlags:交互标志集合,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录),例如(允许负库存标识:STK_InvCheckResult) |
|||
*/ |
|||
target.setInterationFlags(" "); |
|||
/** |
|||
* IsDeleteEntry:是否删除已存在的分录,布尔类型,默认true(非必录) |
|||
*/ |
|||
target.setIsDeleteEntry("True "); |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue