Browse Source

金蝶 付款单

zhanglei
yxt_djz 3 years ago
parent
commit
6099bd4985
  1. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java
  2. 6
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java
  3. 6
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java
  4. 123
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/appaybill/ApPayBill.java
  5. 34
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  6. 157
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignService.java
  7. 62
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeService.java
  8. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/KingDeeSaveSKD.java
  9. 80
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/ApPayBillService.java
  10. 1
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/webapi测试的数据.txt
  11. 74
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/entrybill/EntryBillService.java
  12. 76
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/receivablebill/ReceivableBillService.java
  13. 9
      anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/baseoutsourcingapplicationAdd.vue
  14. 18
      anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/workflow/baseoutsourcingapplicationAdd.vue

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java

@ -1,6 +1,7 @@
package com.yxt.anrui.fin.api.kingdee;
import com.yxt.anrui.fin.api.kingdee.appayable.APPayable;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
@ -37,4 +38,8 @@ public interface FinKingDeeFeign {
@PostMapping("/draftReceivableBill")
@ResponseBody
ResultBean draftReceivableBill(@RequestBody ARReceivable aRReceivable);
@ApiOperation("保存付款单的接口")
@PostMapping("/draftApPayBill")
@ResponseBody
public ResultBean draftApPayBill(ApPayBill apPayBill) ;
}

6
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java

@ -1,6 +1,7 @@
package com.yxt.anrui.fin.api.kingdee;
import com.yxt.anrui.fin.api.kingdee.appayable.APPayable;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.common.core.result.ResultBean;
@ -15,4 +16,9 @@ implements FinKingDeeFeign{
public ResultBean draftReceivableBill(ARReceivable aRReceivable) {
return null;
}
@Override
public ResultBean draftApPayBill(ApPayBill apPayBill) {
return null;
}
}

6
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java

@ -2,7 +2,11 @@ package com.yxt.anrui.fin.api.kingdee;
public enum KingDeeBillId {
AP_PAYABLE("AP_Payable","应付单"),
AR_RECEIVABLE("AR_receivable","应收单"),;
AR_RECEIVABLE("AR_receivable","应收单"),
AP_PAYBILL("AP_PAYBILL","收款单"),
STK_INSTOCK("STK_InStock","入库单"),
PUR_MRB("PUR_MRB","采购退料单"),
SAL_OUTSTOCK("SAL_OUTSTOCK","销售出库单");
private String ID;
private String NAME;

123
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/appaybill/ApPayBill.java

@ -0,0 +1,123 @@
package com.yxt.anrui.fin.api.kingdee.appaybill;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
public class ApPayBill {
@NotBlank
//登账日期:FPOSTDATE (必填项)
private String FPOSTDATE;
@NotBlank
//业务日期:FDATE (必填项)
private String FDATE;
@NotBlank
//往来单位类型:FCONTACTUNITTYPE (必填项)
private String FCONTACTUNITTYPE="BD_Supplier";
@NotBlank
//往来单位:FCONTACTUNIT (必填项)
private String FCONTACTUNIT="010001";
@NotBlank
//收款单位类型:FRECTUNITTYPE (必填项)
private String FRECTUNITTYPE="BD_Supplier";
@NotBlank
//收款单位:FRECTUNIT (必填项)
private String FRECTUNIT="010001";
@NotBlank
//结算组织:FSETTLEORGID (必填项)
private String FSETTLEORGID="101";
@NotBlank
//采购组织:FPURCHASEORGID
private String FPURCHASEORGID="101";
@NotBlank
//采购部门:FPURCHASEDEPTID(必填项)
private String FPURCHASEDEPTID="05.04";
@NotBlank
//付款组织:FPAYORGID (必填项)
private String FPAYORGID="101";
@NotBlank
private List<FPAYBILLENTRY> FPAYBILLENTRY=new ArrayList<>();
@Data
public static class FPAYBILLENTRY{
/**
* 结算方式:FSETTLETYPEID (必填项)
*/
@NotBlank
private String FSETTLETYPEID="02";
//付款用途:FPURPOSEID (必填项)
@NotBlank
private String FPURPOSEID="SFKYT08_SYS";
@NotBlank
//表体-应付金额:FPAYTOTALAMOUNTFOR
private double FPAYTOTALAMOUNTFOR=1000.0;
@NotBlank
//付款金额:FPAYAMOUNTFOR_E
private double FPAYAMOUNTFOR_E=1000.0;
@NotBlank
//折后金额:FSETTLEPAYAMOUNTFOR
private double FSETTLEPAYAMOUNTFOR=1000.0;
@NotBlank
//表体-实付金额:FREALPAYAMOUNTFOR_D
private double FREALPAYAMOUNTFOR_D=1000.0;
@NotBlank
//付款金额本位币:FPAYAMOUNT_E
private double FPAYAMOUNT_E=1000.0;
@NotBlank
//我方银行账号:FACCOUNTID 第1行分录,银行业务的结算方式,我方银行相关信息必录
private String FACCOUNTID;
@NotBlank
//登账日期:FPOSTDATE (必填项)
private String FPOSTDATE;
@NotBlank
//入账类型:FRuZhangType (必填项)
private String FRuZhangType="1";
@NotBlank
//支付类型:FPayType (必填项)
private String FPayType="A";
}
private final static ApPayBill apPayBill = new ApPayBill();
static {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
apPayBill.setFPOSTDATE(sdf.format(date));
apPayBill.setFDATE(sdf.format(date));
apPayBill.setFCONTACTUNITTYPE("BD_Supplier");
apPayBill.setFCONTACTUNIT("010001");
apPayBill.setFRECTUNITTYPE("BD_Supplier");
apPayBill.setFRECTUNIT("010001");
apPayBill.setFSETTLEORGID("101");
apPayBill.setFPURCHASEORGID("101");
apPayBill.setFPURCHASEDEPTID("05.04");
apPayBill.setFPAYORGID("101");
List<FPAYBILLENTRY> FPAYBILLENTRYs=new ArrayList<>();
FPAYBILLENTRY fpaybillentry=new FPAYBILLENTRY();
fpaybillentry.setFSETTLETYPEID("02");
//付款用途:FPURPOSEID (必填项)
fpaybillentry.setFPURPOSEID("SFKYT08_SYS");
fpaybillentry.setFPAYTOTALAMOUNTFOR(1000.0);
fpaybillentry.setFPAYAMOUNTFOR_E(1000.0);
fpaybillentry.setFSETTLEPAYAMOUNTFOR(1000.0);
fpaybillentry.setFREALPAYAMOUNTFOR_D(1000.0);
fpaybillentry.setFPAYAMOUNT_E(1000.0);
fpaybillentry.setFPOSTDATE(sdf.format(date));
fpaybillentry.setFRuZhangType("1");
fpaybillentry.setFACCOUNTID("100473861600010002");
fpaybillentry.setFPayType("A");
FPAYBILLENTRYs.add(fpaybillentry);
apPayBill.setFPAYBILLENTRY(FPAYBILLENTRYs);
}
public static ApPayBill createApPayBill() {
return apPayBill;
}
}

34
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java

@ -2,7 +2,11 @@ package com.yxt.anrui.fin.biz.kingdee;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.appayable.APPayable;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService;
import com.yxt.anrui.fin.biz.kingdee.entrybill.EntryBillService;
import com.yxt.anrui.fin.biz.kingdee.receivablebill.ReceivableBillService;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -16,21 +20,41 @@ import org.springframework.web.bind.annotation.RestController;
@RestController("com.yxt.anrui.fin.biz.kingdee.FinKingDeeFeignRest")
@RequestMapping("/finKingDee")
public class FinKingDeeFeignRest implements FinKingDeeFeign {
/**
* 应付单service
*/
@Autowired
private EntryBillService entryBillService;
/**
* 收款单service
*/
@Autowired
private FinKingDeeFeignService finKingDeeFeignService;
private ReceivableBillService receivableBillService;
/**
* 收款单service
*/
@Autowired
private ApPayBillService apPayBillService;
@ApiOperation("入账保存应付单的接口")
@PostMapping("/draftEntryBill")
@ResponseBody
@Override
public ResultBean draftEntryBill(APPayable APPayable) {
return finKingDeeFeignService.draftEntryBill(APPayable);
return entryBillService.draftEntryBill(APPayable);
}
@ApiOperation("入账保存应收单的接口")
@ApiOperation("保存应收单的接口")
@PostMapping("/draftReceivableBill")
@ResponseBody
@Override
public ResultBean draftReceivableBill(ARReceivable aRReceivable) {
return finKingDeeFeignService.draftReceivableBill(aRReceivable);
return receivableBillService.draftReceivableBill(aRReceivable);
}
@ApiOperation("保存付款单的接口")
@PostMapping("/draftApPayBill")
@ResponseBody
@Override
public ResultBean draftApPayBill(ApPayBill apPayBill) {
return apPayBillService.draftApPayBill(apPayBill);
}
}

157
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignService.java

@ -1,157 +0,0 @@
package com.yxt.anrui.fin.biz.kingdee;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId;
import com.yxt.anrui.fin.api.kingdee.appayable.APPayable;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.anrui.fin.api.kingdee.kingdeedata.Data;
import com.yxt.anrui.fin.biz.kingdee.entrybill.EntryBillCastToKingDeeBillFields;
import com.yxt.anrui.fin.biz.kingdee.receivablebill.ReceivableBillCastToKingDeeBillFields;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 转换业务数据到金蝶的接口上
*/
@Service
public class FinKingDeeFeignService {
private static final Logger log = LoggerFactory.getLogger(FinKingDeeFeignService.class);
/**
* 保存入账申请接口生成的应付单的数据推送到金蝶的平台中
* @param aPPayable
* @return
*/
public ResultBean draftEntryBill(APPayable aPPayable) {
ResultBean rb=ResultBean.fireFail();
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
//物料的数组集合
List<Map<String,String>> vehicleListMap=new ArrayList<>();
if(aPPayable.getApplicationDate()==null){
return rb.setMsg("业务日期 不能为空");
}
//业务日期
map_fEntityModel_.put("FDATE",aPPayable.getApplicationDate());
//供应商:FSUPPLIERID (必填项)
if(aPPayable.getApplicationDate()==null){
return rb.setMsg("供应商 不能为空");
}
map_fEntityModel_.put("FSUPPLIERID","010001");
List<APPayable.ScmApplyInboundVehicleDto> vehicleList = aPPayable.getVehicleList()==null?new ArrayList<>(): aPPayable.getVehicleList();
for(int i=0;i<vehicleList.size();i++){
APPayable.ScmApplyInboundVehicleDto f=vehicleList.get(i);
Map<String,String> m=new HashMap<>();
if(StringUtils.isBlank(f.getVinNo())){
return rb.setMsg("物料编码 不能为空");
}
if(StringUtils.isBlank(f.getRemarks())){
return rb.setMsg("物料名称 不能为空");
}
m.put("FMATERIALID",f.getVinNo());
m.put("FMaterialDesc",f.getRemarks());
vehicleListMap.add(m);
}
String kingDeeData = EntryBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap);
try {
return saveBill(KingDeeBillId.AP_PAYABLE.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
/**
* 生成的应收单的数据推送到金蝶的平台中
* @param aRReceivable
* @return
*/
public ResultBean draftReceivableBill(ARReceivable aRReceivable) {
ResultBean rb=ResultBean.fireFail();
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
//物料的数组集合
List<Map<String,String>> vehicleListMap=new ArrayList<>();
if(aRReceivable.getApplicationDate()==null){
return rb.setMsg("业务日期 不能为空");
}
//业务日期
map_fEntityModel_.put("FDATE",aRReceivable.getApplicationDate());
map_fEntityModel_.put("FCUSTOMERID",aRReceivable.getFcustomerid()==null?" JXYXB":aRReceivable.getFcustomerid());
//供应商:FSUPPLIERID (必填项)
if(aRReceivable.getApplicationDate()==null){
return rb.setMsg("供应商 不能为空");
}
// map_fEntityModel_.put("FSUPPLIERID","010001");
List<ARReceivable.ScmApplyInboundVehicleDto> vehicleList = aRReceivable.getVehicleList()==null?new ArrayList<>(): aRReceivable.getVehicleList();
for(int i=0;i<vehicleList.size();i++){
ARReceivable.ScmApplyInboundVehicleDto f=vehicleList.get(i);
Map<String,String> m=new HashMap<>();
if(StringUtils.isBlank(f.getVinNo())){
return rb.setMsg("物料编码 不能为空");
}
if(StringUtils.isBlank(f.getRemarks())){
return rb.setMsg("物料名称 不能为空");
}
m.put("FMATERIALID",f.getVinNo());
m.put("FMaterialDesc",f.getRemarks());
m.put("FPRICEUNITID","liang");
vehicleListMap.add(m);
}
String kingDeeData = ReceivableBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap);
try {
return saveBill(KingDeeBillId.AP_PAYABLE.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
/**
* 调用金蝶的接口
* @param data
* @return
*/
private ResultBean saveBill(String formId,String data) throws Exception {
KingDeeParams kdp=new KingDeeParams();
kdp.setData(data);
kdp.setFormId(formId);
return KingDeeSaveSKD.SavePurRKD(kdp);
}
/**
* 调用金蝶接口的数据格式
*/
class KingDeeParams{
private String formId;
private String data;
public void setFormId(String formId) {
this.formId = formId;
}
public void setData(String data) {
this.data = data;
}
public String getFormId() {
return formId;
}
public String getData() {
return data;
}
}
}

62
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeService.java

@ -0,0 +1,62 @@
package com.yxt.anrui.fin.biz.kingdee;
import com.alibaba.fastjson.JSONObject;
import com.yxt.anrui.fin.api.kingdee.KingDeeResult;
import com.yxt.common.core.result.ResultBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 转换业务数据到金蝶的接口上
*/
@Service
public class FinKingDeeService {
public static final Logger log = LoggerFactory.getLogger(FinKingDeeService.class);
/**
* 调用金蝶的接口
* @param data
* @return
*/
public ResultBean saveBill(String formId,String data) throws Exception {
KingDeeParams kdp=new KingDeeParams();
kdp.setData(data);
kdp.setFormId(formId);
log.info("kdp:{}",JSONObject.toJSONString(kdp));
ResultBean<List<KingDeeResult>> listResultBean = KingDeeSaveSKD.SavePurRKD(kdp);
log.info("listResultBean:{}",JSONObject.toJSONString(listResultBean));
return listResultBean;
}
/**
* 调用金蝶接口的数据格式
*/
class KingDeeParams{
/**
* 表单名称
*/
private String formId;
/**
* 接口的主要业务参数
*/
private String data;
public void setFormId(String formId) {
this.formId = formId;
}
public void setData(String data) {
this.data = data;
}
public String getFormId() {
return formId;
}
public String getData() {
return data;
}
}
}

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/KingDeeSaveSKD.java

@ -61,7 +61,7 @@ public class KingDeeSaveSKD {
* @throws Exception
*/
@SuppressWarnings({"resource", "deprecation"})
public static ResultBean<List<KingDeeResult> > SavePurRKD(FinKingDeeFeignService.KingDeeParams jsonParam ) throws Exception {
public static ResultBean<List<KingDeeResult> > SavePurRKD(FinKingDeeService.KingDeeParams jsonParam ) throws Exception {
// 定义httpClient的实例
HttpClient httpclient = new DefaultHttpClient();
/********** 用户登录Begin ************************/
@ -79,7 +79,7 @@ public class KingDeeSaveSKD {
* @param httpclient
* @return
*/
public static ResultBean<List<KingDeeResult>> saveKingDeeBillData(FinKingDeeFeignService.KingDeeParams jsonParam,HttpClient httpclient) {
public static ResultBean<List<KingDeeResult>> saveKingDeeBillData(FinKingDeeService.KingDeeParams jsonParam, HttpClient httpclient) {
ResultBean<List<KingDeeResult> > rb= ResultBean.fireFail();
try {
URI save_uri = new URI(Save_URL);
@ -88,6 +88,8 @@ public class KingDeeSaveSKD {
log.info(jsonParam.getData());
/*String ss="{\"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-08-02 00:00:00\\\",\\\"FISINIT\\\":false,\\\"FENDDATE_H\\\":\\\"2022-08-02 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-08-02 00:00:00\\\",\\\"FMAINBOOKSTDCURRID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FEXCHANGETYPE\\\":{\\\"FNumber\\\":\\\"HLTX01_SYS\\\"},\\\"FExchangeRate\\\":1.0,\\\"FTaxAmountFor\\\":121.01,\\\"FNoTaxAmountFor\\\":12100.99},\\\"FEntityDetail\\\":[{\\\"FMATERIALID\\\":{\\\"FNumber\\\":\\\" JX091054\\\"},\\\"FMaterialDesc\\\":\\\"X牵引6*4-550超\\\",\\\"FPRICEUNITID\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FPriceQty\\\":1.0,\\\"FTaxPrice\\\":12222.0,\\\"FPrice\\\":12100.99,\\\"FEntryTaxRate\\\":1.0,\\\"FNoTaxAmountFor_D\\\":12100.99,\\\"FTAXAMOUNTFOR_D\\\":121.01,\\\"FALLAMOUNTFOR_D\\\":12222.0,\\\"FDeliveryControl\\\":false,\\\"FStockUnitId\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FStockQty\\\":1.0,\\\"FIsFree\\\":false,\\\"FStockBaseQty\\\":1.0,\\\"FSalUnitId\\\":{\\\"FNumber\\\":\\\"liang\\\"},\\\"FSalQty\\\":1.0,\\\"FSalBaseQty\\\":1.0,\\\"FPriceBaseDen\\\":1.0,\\\"FSalBaseNum\\\":1.0,\\\"FStockBaseNum\\\":1.0}],\\\"FEntityPlan\\\":[{\\\"FENDDATE\\\":\\\"2022-08-02 00:00:00\\\",\\\"FPAYRATE\\\":100.0,\\\"FPAYAMOUNTFOR\\\":12222.0}]}}\"}";
log.info("ss-:{}",ss);*/
/* String ss="{\"formId\":\"AP_PAYBILL\",\"data\":\"{\\\"Creator\\\":\\\"\\\",\\\"NeedUpDateFields\\\":[],\\\"NeedReturnFields\\\":[],\\\"IsDeleteEntry\\\":\\\"True\\\",\\\"SubSystemId\\\":\\\"\\\",\\\"IsVerifyBaseDataField\\\":\\\"false\\\",\\\"IsEntryBatchFill\\\":\\\"True\\\",\\\"ValidateFlag\\\":\\\"True\\\",\\\"NumberSearch\\\":\\\"True\\\",\\\"InterationFlags\\\":\\\"\\\",\\\"Model\\\":{\\\"FID\\\":0,\\\"FBillTypeID\\\":{\\\"FNUMBER\\\":\\\"FKDLX01_SYS\\\"},\\\"FDATE\\\":\\\"2022-08-10 00:00:00\\\",\\\"FCONTACTUNITTYPE\\\":\\\"BD_Supplier\\\",\\\"FCONTACTUNIT\\\":{\\\"FNumber\\\":\\\"010001\\\"},\\\"FRECTUNITTYPE\\\":\\\"BD_Supplier\\\",\\\"FRECTUNIT\\\":{\\\"FNumber\\\":\\\"010001\\\"},\\\"FISINIT\\\":false,\\\"FCURRENCYID\\\":{\\\"FNumber\\\":\\\"PRE001\\\"},\\\"FEXCHANGERATE\\\":1.0,\\\"FSETTLERATE\\\":1.0,\\\"FSETTLEORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FPURCHASEORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FPURCHASEDEPTID\\\":{\\\"FNumber\\\":\\\"05.04\\\"},\\\"FDOCUMENTSTATUS\\\":\\\"Z\\\",\\\"FCancelStatus\\\":\\\"A\\\",\\\"FPAYORGID\\\":{\\\"FNumber\\\":\\\"101\\\"},\\\"FISSAMEORG\\\":true,\\\"FIsCredit\\\":false,\\\"FSETTLECUR\\\":{\\\"FNUMBER\\\":\\\"PRE001\\\"},\\\"FIsWriteOff\\\":false,\\\"FREALPAY\\\":false,\\\"F_PAEZ_Assistant\\\":{\\\"FNumber\\\":\\\"001\\\"},\\\"FPAYBILLENTRY\\\":[{\\\"FSETTLETYPEID\\\":{\\\"FNumber\\\":\\\"02\\\"},\\\"FPURPOSEID\\\":{\\\"FNumber\\\":\\\"SFKYT08_SYS\\\"},\\\"FPAYTOTALAMOUNTFOR\\\":1000.0,\\\"FPAYAMOUNTFOR_E\\\":1000.0,\\\"FSETTLEPAYAMOUNTFOR\\\":1000.0,\\\"FREALPAYAMOUNTFOR_D\\\":1000.0,\\\"FPAYAMOUNT_E\\\":1000.0,\\\"FACCOUNTID\\\":{\\\"FNumber\\\":\\\"100473861600010002\\\"},\\\"FPOSTDATE\\\":\\\"2022-08-10 00:00:00\\\",\\\"FRuZhangType\\\":\\\"1\\\",\\\"FPayType\\\":\\\"A\\\"}]}}\"}";
log.info("ss-:{}",ss);*/
StringEntity entity = new StringEntity(jsonParam.getData(), "utf-8");
log.info(JSON.toJSONString(entity));
entity.setContentEncoding("UTF-8");

80
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/ApPayBillService.java

@ -0,0 +1,80 @@
package com.yxt.anrui.fin.biz.kingdee.appaybill;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.anrui.fin.biz.kingdee.entrybill.EntryBillCastToKingDeeBillFields;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ApPayBillService extends FinKingDeeService {
/**
* 保存收款单
* @param apPayBill
* @return
*/
public ResultBean draftApPayBill(ApPayBill apPayBill) {
apPayBill=ApPayBill.createApPayBill();
ResultBean rb=ResultBean.fireFail();
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
//业务日期
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(apPayBill);
List<ApPayBill.FPAYBILLENTRY> fpaybillentrYs = apPayBill.getFPAYBILLENTRY();
for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
if (entry.getValue() instanceof String) {
map_fEntityModel_.put(entry.getKey(), (String) entry.getValue());
}else if(entry.getValue() instanceof Double){
map_fEntityModel_.put(entry.getKey(), entry.getValue().toString());
}
}
//准备 物料列表的数据 ForEntryBill
ResultBean<List<Map<String, String>>> vehicleListMap = createVehicleListsForApPayBill(fpaybillentrYs);
if(!vehicleListMap.getSuccess()){
return rb.setMsg(vehicleListMap.getMsg());
}
String kingDeeData = ApPayBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap.getData());
try {
return saveBill(KingDeeBillId.AP_PAYBILL.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
/**
* 准备 物料列表的数据 ApPayBill
*/
private ResultBean<List<Map<String, String>>>
createVehicleListsForApPayBill(List<ApPayBill.FPAYBILLENTRY> vehicleList) {
ResultBean<List<Map<String, String>>> rb=ResultBean.fireFail();
//物料的数组集合
List<Map<String,String>> vehicleListMap=new ArrayList<>();
for(int i = 0; i< vehicleList.size(); i++){
ApPayBill.FPAYBILLENTRY f= vehicleList.get(i);
Map<String,String> m=new HashMap<>();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
if (entry.getValue() instanceof String) {
log.info("String key:{},value:{}",entry.getKey(),(String) entry.getValue());
m.put(entry.getKey(), (String) entry.getValue());
}else if(entry.getValue() instanceof Double){
log.info("Double key:{},value:{}",entry.getKey(),entry.getValue());
m.put(entry.getKey(), entry.getValue().toString());
}
}
vehicleListMap.add(m);
}
return rb.success().setData(vehicleListMap);
}
}

1
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/webapi测试的数据.txt

@ -0,0 +1 @@
{"formId":"AP_PAYBILL","data":"{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":0,\"FBillTypeID\":{\"FNUMBER\":\"FKDLX01_SYS\"},\"FDATE\":\"2022-08-10 00:00:00\",\"FCONTACTUNITTYPE\":\"BD_Supplier\",\"FCONTACTUNIT\":{\"FNumber\":\"010001\"},\"FRECTUNITTYPE\":\"BD_Supplier\",\"FRECTUNIT\":{\"FNumber\":\"010001\"},\"FISINIT\":false,\"FCURRENCYID\":{\"FNumber\":\"PRE001\"},\"FEXCHANGERATE\":1.0,\"FSETTLERATE\":1.0,\"FSETTLEORGID\":{\"FNumber\":\"101\"},\"FPURCHASEORGID\":{\"FNumber\":\"101\"},\"FPURCHASEDEPTID\":{\"FNumber\":\"05.04\"},\"FDOCUMENTSTATUS\":\"Z\",\"FCancelStatus\":\"A\",\"FPAYORGID\":{\"FNumber\":\"101\"},\"FISSAMEORG\":true,\"FIsCredit\":false,\"FSETTLECUR\":{\"FNUMBER\":\"PRE001\"},\"FIsWriteOff\":false,\"FREALPAY\":false,\"F_PAEZ_Assistant\":{\"FNumber\":\"001\"},\"FPAYBILLENTRY\":[{\"FSETTLETYPEID\":{\"FNumber\":\"02\"},\"FPURPOSEID\":{\"FNumber\":\"SFKYT08_SYS\"},\"FPAYTOTALAMOUNTFOR\":1000.0,\"FPAYAMOUNTFOR_E\":1000.0,\"FSETTLEPAYAMOUNTFOR\":1000.0,\"FREALPAYAMOUNTFOR_D\":1000.0,\"FPAYAMOUNT_E\":1000.0,\"FACCOUNTID\":{\"FNumber\":\"100473861600010002\"},\"FPOSTDATE\":\"2022-08-10 00:00:00\",\"FRuZhangType\":\"1\",\"FPayType\":\"A\"}]}}"}

74
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/entrybill/EntryBillService.java

@ -0,0 +1,74 @@
package com.yxt.anrui.fin.biz.kingdee.entrybill;
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId;
import com.yxt.anrui.fin.api.kingdee.appayable.APPayable;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class EntryBillService extends FinKingDeeService {
/**
* 保存入账申请接口生成的应付单的数据推送到金蝶的平台中
* @param aPPayable
* @return
*/
public ResultBean draftEntryBill(APPayable aPPayable) {
ResultBean rb=ResultBean.fireFail();
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
if(aPPayable.getApplicationDate()==null){
return rb.setMsg("业务日期 不能为空");
}
//业务日期
map_fEntityModel_.put("FDATE",aPPayable.getApplicationDate());
//供应商:FSUPPLIERID (必填项)
if(aPPayable.getApplicationDate()==null){
return rb.setMsg("供应商 不能为空");
}
map_fEntityModel_.put("FSUPPLIERID","010001");
List<APPayable.ScmApplyInboundVehicleDto> vehicleList = aPPayable.getVehicleList()==null?new ArrayList<>(): aPPayable.getVehicleList();
//准备 物料列表的数据 ForEntryBill
ResultBean<List<Map<String, String>>> vehicleListMap = createVehicleListsForEntryBill(vehicleList);
if(!vehicleListMap.getSuccess()){
return rb.setMsg(vehicleListMap.getMsg());
}
String kingDeeData = EntryBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap.getData());
try {
return saveBill(KingDeeBillId.AP_PAYABLE.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
/**
* 准备 物料列表的数据 ForEntryBill
*/
public ResultBean<List<Map<String, String>>> createVehicleListsForEntryBill(List<APPayable.ScmApplyInboundVehicleDto> vehicleList) {
ResultBean<List<Map<String, String>>> rb=ResultBean.fireFail();
//物料的数组集合
List<Map<String,String>> vehicleListMap=new ArrayList<>();
for(int i = 0; i< vehicleList.size(); i++){
APPayable.ScmApplyInboundVehicleDto f= vehicleList.get(i);
Map<String,String> m=new HashMap<>();
if(StringUtils.isBlank(f.getVinNo())){
return rb.setMsg("物料编码 不能为空");
}
if(StringUtils.isBlank(f.getRemarks())){
return rb.setMsg("物料名称 不能为空");
}
m.put("FMATERIALID",f.getVinNo());
m.put("FMaterialDesc",f.getRemarks());
vehicleListMap.add(m);
}
return rb.success().setData(vehicleListMap);
}
}

76
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/receivablebill/ReceivableBillService.java

@ -0,0 +1,76 @@
package com.yxt.anrui.fin.biz.kingdee.receivablebill;
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ReceivableBillService extends FinKingDeeService {
/**
* 生成的应收单的数据推送到金蝶的平台中
* @param aRReceivable
* @return
*/
public ResultBean draftReceivableBill(ARReceivable aRReceivable) {
ResultBean rb=ResultBean.fireFail();
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
//物料的数组集合
if(aRReceivable.getApplicationDate()==null){
return rb.setMsg("业务日期 不能为空");
}
//业务日期
map_fEntityModel_.put("FDATE",aRReceivable.getApplicationDate());
map_fEntityModel_.put("FCUSTOMERID",aRReceivable.getFcustomerid()==null?" JXYXB":aRReceivable.getFcustomerid());
//供应商:FSUPPLIERID (必填项)
if(aRReceivable.getApplicationDate()==null){
return rb.setMsg("供应商 不能为空");
}
// map_fEntityModel_.put("FSUPPLIERID","010001");
List<ARReceivable.ScmApplyInboundVehicleDto> vehicleList = aRReceivable.getVehicleList()==null?new ArrayList<>(): aRReceivable.getVehicleList();
//准备 物料列表的数据
ResultBean<List<Map<String, String>>> vehicleListMap = createVehicleListsForReceivableBill(vehicleList);
if(!vehicleListMap.getSuccess()){
return rb.setMsg(vehicleListMap.getMsg());
}
String kingDeeData = ReceivableBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap.getData());
try {
return saveBill(KingDeeBillId.AP_PAYABLE.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
/**
* 准备 物料列表的数据 ForReceivableBill
*/
public ResultBean<List<Map<String, String>>> createVehicleListsForReceivableBill(List<ARReceivable.ScmApplyInboundVehicleDto> vehicleList) {
ResultBean<List<Map<String, String>>> rb=ResultBean.fireFail();
List<Map<String,String>> vehicleListMap=new ArrayList<>();
for(int i = 0; i< vehicleList.size(); i++){
ARReceivable.ScmApplyInboundVehicleDto f= vehicleList.get(i);
Map<String,String> m=new HashMap<>();
if(StringUtils.isBlank(f.getVinNo())){
return rb.setMsg("物料编码 不能为空");
}
if(StringUtils.isBlank(f.getRemarks())){
return rb.setMsg("物料名称 不能为空");
}
m.put("FMATERIALID",f.getVinNo());
m.put("FMaterialDesc",f.getRemarks());
m.put("FPRICEUNITID","liang");
vehicleListMap.add(m);
}
return rb.success().setData(vehicleListMap);
}
}

9
anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/baseoutsourcingapplicationAdd.vue

@ -633,13 +633,18 @@ export default {
this.nodeUserDialogVisible = false
},*/
doSubmit(row) {
var contract=this.formobj.contract;
if(!contract.fileName){
alert('合同附件不能为空!');
return false;
}
//
this.submitdisabled = true
//this.submitdisabled = true
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.orgSid = this.$store.getters.orgSid
//id
this.agree()
this.agree()
/*req.getNextNodesForSubmit(this.formobj).then(resp=>{
if (resp.success) {
//

18
anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/workflow/baseoutsourcingapplicationAdd.vue

@ -360,8 +360,7 @@ export default {
manufactorSettlementPrice: [{ required: true, message: '厂家合同价不能为空', trigger: 'blur' }], //
num: [{ required: true, message: '台数不能为空', trigger: 'blur' }], //
deposit: [{ required: true, message: '订金不能为空', trigger: 'blur' }], //
expenseName: [{ required: true, message: '费用名称不能为空', trigger: 'blur' }], //
totalExpenseAmount: [{ required: true, message: '费用金额合计不能为空', trigger: 'blur' }], //
/* expenseName: [{ required: true, message: '费用名称不能为空', trigger: 'blur' }], // 费用名称*/
orgSid: [{ required: true, message: '部门sid不能为空', trigger: 'blur' }] // sid
}
}
@ -399,12 +398,14 @@ export default {
methods: {
//
handleRemoveAttachment (file, files) {
this.formobj.fileList =
this.formobj.fileList.filter(item => item.uid !== file.uid)
this.fileList=this.fileList.filter(item => item.uid !== file.uid)
this.formobj.contract={}
},
//
handleDown(row) {
console.log(row);
var xhr=new XMLHttpRequest();
xhr.open('GET', process.env.VUE_APP_BASE_API+"/base/file/download?filePath="+ row.url+"&outFileName="+row.name,true);
xhr.setRequestHeader("token", getStorage());
@ -443,6 +444,12 @@ export default {
this.formobj.manufactorSettlementPrice = info.manufactorSettlementPrice//
},
handleSubmit() {
var contract=this.formobj.contract;
if(!contract.fileName){
alert('合同附件不能为空!');
return false;
}
//
this.submitdisabled = true
this.formobj.userSid = window.sessionStorage.getItem('userSid');
@ -579,6 +586,7 @@ export default {
url: vdata.contract.filePath
})
}
this.formobj.contract= vdata.contract
/* _this.fileList[0] = vdata.contract*/
_this.formobj.taskId = vdata.taskId
_this.formobj.insideCode = vdata.insideCode

Loading…
Cancel
Save