
14 changed files with 542 additions and 9 deletions
@ -0,0 +1,40 @@ |
|||
package com.yxt.anrui.fin.api.kingdee.costadjustmentsbill; |
|||
|
|||
import com.yxt.common.core.dto.Dto; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author Administrator |
|||
* @description |
|||
* @date 2023/9/12 18:13 |
|||
*/ |
|||
@Data |
|||
public class CostAdjustmentsBill { |
|||
|
|||
|
|||
@ApiModelProperty("往来单位/供应商编码") |
|||
public String commUnit; |
|||
@ApiModelProperty("核算组织/分公司编码") |
|||
public String useOrgCode; |
|||
@ApiModelProperty("业务日期") |
|||
public String bussDate; |
|||
@ApiModelProperty("单据明细") |
|||
public List<CostAdjustmentsBillDetailDto> resultDetails; |
|||
|
|||
@Data |
|||
public static class CostAdjustmentsBillDetailDto implements Dto { |
|||
|
|||
|
|||
@ApiModelProperty("分公司编码") |
|||
public String companyCode; |
|||
@ApiModelProperty("物料编码") |
|||
public String materialID; |
|||
@ApiModelProperty("调整金额") |
|||
public String amount; |
|||
@ApiModelProperty("部门编码") |
|||
public String deptCode; |
|||
} |
|||
} |
@ -0,0 +1,59 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.costadjustmentsbill; |
|||
|
|||
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.biz.kingdee.KingDeeUtils; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 封装转换的类 |
|||
*/ |
|||
public class CostAdjustmentsBillCastToKingDeeBillFields { |
|||
/** |
|||
* 构造金蝶需要的数据结构 并对字段赋值 |
|||
* |
|||
* @param map_fEntityModel_ |
|||
* @param vehicleList |
|||
* @return |
|||
*/ |
|||
public static String getKingDeeData(Map<String, String> map_fEntityModel_, List<Map<String, String>> vehicleList) { |
|||
/** |
|||
* 取模板 |
|||
*/ |
|||
String readJsonFile = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/costadjustmentsbill/data.json"); |
|||
String fEntityData_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/costadjustmentsbill/data_data.json"); |
|||
String fEntityModel_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/costadjustmentsbill/data_model.json"); |
|||
|
|||
//模板字符创转json
|
|||
JSONObject jsonObj = JSONObject.parseObject(readJsonFile, Feature.OrderedField); |
|||
JSONObject jsonFEntityData_ = JSONObject.parseObject(fEntityData_, Feature.OrderedField); |
|||
fEntityModel_ = KingDeeUtils.replaceTemplateParams(fEntityModel_, map_fEntityModel_); |
|||
JSONObject jsonFEntityModel_ = JSONObject.parseObject(fEntityModel_, Feature.OrderedField); |
|||
|
|||
List<JSONObject> list_fEntity_ = new ArrayList<>(); |
|||
|
|||
//对模板字段赋值 根据传递进来的map数据的集合进行赋值
|
|||
for (int i = 0; i < vehicleList.size(); i++) { |
|||
String fEntity_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/costadjustmentsbill/data_FEntity.json"); |
|||
Map<String, String> params = vehicleList.get(i); |
|||
Map<String, String> map_fEntity_ = new HashMap<>(); |
|||
for (Map.Entry<String, String> entry : params.entrySet()) { |
|||
map_fEntity_.put(entry.getKey(), entry.getValue()); |
|||
} |
|||
fEntity_ = KingDeeUtils.replaceTemplateParams(fEntity_, map_fEntity_); |
|||
list_fEntity_.add(JSONObject.parseObject(fEntity_, Feature.OrderedField)); |
|||
} |
|||
|
|||
jsonFEntityModel_.put("FEntity", JSONArray.parseArray(JSON.toJSONString(list_fEntity_))); |
|||
jsonFEntityData_.put("Model", JSONObject.parseObject(JSON.toJSONString(jsonFEntityModel_), Feature.OrderedField)); |
|||
jsonObj.put("data", jsonFEntityData_.toJSONString()); |
|||
|
|||
return jsonObj.toJSONString(); |
|||
} |
|||
} |
@ -0,0 +1,87 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.costadjustmentsbill; |
|||
|
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId; |
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillUrl; |
|||
import com.yxt.anrui.fin.api.kingdee.costadjustmentsbill.CostAdjustmentsBill; |
|||
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 CostAdjustmentsBillService extends FinKingDeeService { |
|||
|
|||
/** |
|||
* 生成的成本调整单的数据,推送到金蝶的平台中 |
|||
* |
|||
* @param costAdjustmentsBill |
|||
* @return |
|||
*/ |
|||
public ResultBean costAdjustmentsBillService(CostAdjustmentsBill costAdjustmentsBill) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
//业务表的主表数据集合
|
|||
Map<String, String> map_fEntityModel_ = new HashMap<>(); |
|||
|
|||
//往来单位
|
|||
if (StringUtils.isBlank(costAdjustmentsBill.getCommUnit())) { |
|||
return rb.setMsg("往来单位不能为空"); |
|||
} |
|||
map_fEntityModel_.put("FSUPPLIERID", costAdjustmentsBill.getCommUnit()); |
|||
//业务日期
|
|||
if (StringUtils.isBlank(costAdjustmentsBill.getBussDate())) { |
|||
return rb.setMsg("业务日期不能为空"); |
|||
} |
|||
map_fEntityModel_.put("FDate", costAdjustmentsBill.getBussDate()); |
|||
//核算组织
|
|||
if (StringUtils.isBlank(costAdjustmentsBill.getUseOrgCode())) { |
|||
return rb.setMsg("核算组织不能为空"); |
|||
} |
|||
map_fEntityModel_.put("FAcctOrgID", costAdjustmentsBill.getUseOrgCode()); |
|||
|
|||
List<CostAdjustmentsBill.CostAdjustmentsBillDetailDto> costAdjustmentsBillDetailDtos = costAdjustmentsBill.getResultDetails() == null ? new ArrayList<>() : costAdjustmentsBill.getResultDetails(); |
|||
//准备 物料列表的数据
|
|||
ResultBean<List<Map<String, String>>> vehicleListMap = createVehicleListsForReceivableBill(costAdjustmentsBillDetailDtos); |
|||
if (!vehicleListMap.getSuccess()) { |
|||
return rb.setMsg(vehicleListMap.getMsg()); |
|||
} |
|||
String kingDeeData = CostAdjustmentsBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_, vehicleListMap.getData()); |
|||
try { |
|||
ResultBean<String> resultBean1 = accessKingDeeInterface(KingDeeBillId.HS_AdjustmentBill.getID(), kingDeeData, KingDeeBillUrl.SAVE_URL.getURL()); |
|||
if (!resultBean1.getSuccess()) { |
|||
log.info("成本调整单保存失败!"); |
|||
return rb.setMsg("成本调整单保存失败!"); |
|||
} |
|||
log.info("成本调整单保存成功!"); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
public ResultBean<List<Map<String, String>>> createVehicleListsForReceivableBill(List<CostAdjustmentsBill.CostAdjustmentsBillDetailDto> collectionDetails) { |
|||
ResultBean<List<Map<String, String>>> rb = ResultBean.fireFail(); |
|||
List<Map<String, String>> collectionDetailMap = new ArrayList<>(); |
|||
for (int i = 0; i < collectionDetails.size(); i++) { |
|||
CostAdjustmentsBill.CostAdjustmentsBillDetailDto c = collectionDetails.get(i); |
|||
Map<String, String> m = new HashMap<>(); |
|||
if (StringUtils.isBlank(c.getCompanyCode())) { |
|||
return rb.setMsg("库存组织不能为空"); |
|||
} |
|||
if (StringUtils.isBlank(c.getMaterialID())) { |
|||
return rb.setMsg("物料编码不能为空"); |
|||
} |
|||
m.put("FStockOrgID", c.getCompanyCode()); |
|||
m.put("FOwnerID", c.getCompanyCode()); |
|||
m.put("FMaterialID", c.getMaterialID()); |
|||
m.put("FDepartmentId", c.getDeptCode()); |
|||
m.put("FAdjustmentAMOUNT", c.getAmount()); |
|||
collectionDetailMap.add(m); |
|||
} |
|||
return rb.success().setData(collectionDetailMap); |
|||
} |
|||
} |
@ -0,0 +1,4 @@ |
|||
{ |
|||
"formId": "HS_AdjustmentBill", |
|||
"data": "@KD_data" |
|||
} |
@ -0,0 +1,116 @@ |
|||
{ |
|||
"FEntryID": "0", |
|||
"FStockOrgID": { |
|||
"FNumber": "@KD_FStockOrgID" |
|||
}, |
|||
"FMaterialID": { |
|||
"FNumber": "@KD_FMaterialID" |
|||
}, |
|||
"FAuxPropId": { |
|||
"FAUXPROPID__FF100001": { |
|||
"FNumber": "" |
|||
}, |
|||
"FAUXPROPID__FF100005": { |
|||
"FNumber": "" |
|||
}, |
|||
"FAUXPROPID__FF100002": { |
|||
"FNumber": "" |
|||
}, |
|||
"FAUXPROPID__FF100004": { |
|||
"FNumber": "" |
|||
}, |
|||
"FAUXPROPID__FF100006": { |
|||
"FNumber": "" |
|||
} |
|||
}, |
|||
"FLOT": { |
|||
"FNumber": "" |
|||
}, |
|||
"FBOMId": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKSTATUSID": { |
|||
"FNumber": "KCZT01_SYS" |
|||
}, |
|||
"FAdjustmentAMOUNT": "@KD_FAdjustmentAMOUNT", |
|||
"FAdjustmentAMOUNTFor": "0", |
|||
"FStockID": { |
|||
"FNumber": "ARZSCK" |
|||
}, |
|||
"FOwnerID": { |
|||
"FNumber": "@KD_FOwnerID" |
|||
}, |
|||
"FSTOCKLOCID": { |
|||
"FSTOCKLOCID__FF100001": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100002": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100003": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100004": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100005": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100006": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100007": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100008": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100009": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSTOCKLOCID__FF100010": { |
|||
"FNumber": "" |
|||
} |
|||
}, |
|||
"FAcctgRangeID": { |
|||
"FNumber": "" |
|||
}, |
|||
"FMtoNo": "", |
|||
"FSeqId": "", |
|||
"FPROJECTNO": "", |
|||
"FOwnerTypeId": "", |
|||
"FPrice": "0", |
|||
"FSeqEntryId": "0", |
|||
"FInvoiceRateType": { |
|||
"FNumber": "" |
|||
}, |
|||
"FStockRateType": { |
|||
"FNumber": "" |
|||
}, |
|||
"FOriginalCurrencyId": { |
|||
"FNumber": "" |
|||
}, |
|||
"FStockRate": "0", |
|||
"FInvoiceRate": "0", |
|||
"FRateDiff": "0", |
|||
"FPriceDiff": "0", |
|||
"FQty": "0", |
|||
"FCostCenterID": { |
|||
"FNumber": "" |
|||
}, |
|||
"FSRCSEQ": "0", |
|||
"FSRCBILLNO": "", |
|||
"FSRCBILLTYPEID": { |
|||
"FNumber": "" |
|||
}, |
|||
"FDepartmentId": { |
|||
"FNUMBER": "@KD_FDepartmentId" |
|||
}, |
|||
"FExpense": [{ |
|||
"FExpenseEntryID": "0", |
|||
"FExpenseID": { |
|||
"FNumber": "" |
|||
}, |
|||
"FExpenseAmount": "0" |
|||
}] |
|||
} |
@ -0,0 +1,13 @@ |
|||
{ |
|||
"Creator": "", |
|||
"NeedUpDateFields": [], |
|||
"NeedReturnFields": [], |
|||
"IsDeleteEntry": "True", |
|||
"SubSystemId": "", |
|||
"IsVerifyBaseDataField": "false", |
|||
"IsEntryBatchFill": "True", |
|||
"ValidateFlag": "True", |
|||
"NumberSearch": "True", |
|||
"InterationFlags": "", |
|||
"Model": {} |
|||
} |
@ -0,0 +1,38 @@ |
|||
{ |
|||
"FID": "0", |
|||
"FBillTypeID": { |
|||
"FNUMBER": "CGRKTZD01_SYS" |
|||
}, |
|||
"FBillNo": "", |
|||
"FBusinessType": "1", |
|||
"FSUPPLIERID": { |
|||
"FNumber": "@KD_FSUPPLIERID" |
|||
}, |
|||
"FDate": "@KD_FDATE", |
|||
"FACCTGSYSTEMID": { |
|||
"FNumber": "01" |
|||
}, |
|||
"FAcctOrgID": { |
|||
"FNumber": "@KD_FAcctOrgID" |
|||
}, |
|||
"FACCTPOLICYID": { |
|||
"FNumber": "KJZC01_SYS" |
|||
}, |
|||
"FCurrencyID": { |
|||
"FNumber": "" |
|||
}, |
|||
"FAdjustmentReason": "", |
|||
"FAcctgId": "0", |
|||
"FDocumentStatus": "", |
|||
"FCreateOrgId": { |
|||
"FNumber": "" |
|||
}, |
|||
"FCreatorId": { |
|||
"FUserID": "" |
|||
}, |
|||
"FInOutIndex": "", |
|||
"F_PAEZ_Assistant": { |
|||
"FNumber": "01" |
|||
}, |
|||
"FEntity": [] |
|||
} |
@ -0,0 +1,97 @@ |
|||
一、请求参数说明: |
|||
1.formid:业务对象表单Id,字符串类型(必录) |
|||
2.data:Json格式数据(详情参考Json格式数据)(必录) |
|||
2.1.Creator:创建者内码(非必录) |
|||
2.2.NeedUpDateFields:需要更新的字段,数组类型,格式:[key1,key2,...](非必录),注(更新单据体字段得加上单据体key) |
|||
2.3.NeedReturnFields:需返回结果的字段集合,数组类型,格式:[key,entitykey.key,...](非必录),注(返回单据体字段格式:entitykey.key) |
|||
2.4.IsDeleteEntry:是否删除已存在的分录,布尔类型,默认true(非必录) |
|||
2.5.SubSystemId:表单所在的子系统内码,字符串类型(非必录) |
|||
2.6.IsVerifyBaseDataField:是否验证所有的基础资料有效性,布尔类,默认false(非必录) |
|||
2.7.IsEntryBatchFill:是否批量填充分录,默认true(非必录) |
|||
2.8.ValidateFlag:是否验证标志,布尔类型,默认true(非必录) |
|||
2.9.NumberSearch:是否用编码搜索基础资料,布尔类型,默认true(非必录) |
|||
2.10.InterationFlags:交互标志集合,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录),例如(允许负库存标识:STK_InvCheckResult) |
|||
2.11.Model:表单数据包,Json类型(必录) |
|||
|
|||
字段说明: |
|||
来源单据号:FSRCBILLNO |
|||
原单分录内码:FSRCEntryID |
|||
来源单据行号:FSRCSEQ |
|||
原单内码:FSRCBILLID |
|||
成本中心:FCostCenterID |
|||
数量:FQty |
|||
来源单据类别:FSRCBILLTYPEID |
|||
汇率差异:FRateDiff |
|||
入库单汇率类型:FStockRateType |
|||
发票汇率类型:FInvoiceRateType |
|||
价格差异:FPriceDiff |
|||
原币币别:FOriginalCurrencyId |
|||
采购入库单汇率:FStockRate |
|||
应付单汇率:FInvoiceRate |
|||
存货类别:FMaterialType |
|||
出入库序列:FInOutIndex (必填项) |
|||
来源类型:FFROMTYPE |
|||
成本调整类型:F_PAEZ_Assistant |
|||
期初类型:FINITTYPE |
|||
物料编码:FMaterialID (必填项) |
|||
物料名称:FMaterialName |
|||
规格型号:FMaterialModel |
|||
仓库名称:FStockName |
|||
核算范围编码:FAcctgRangeID |
|||
核算范围:FAcctgRangeName |
|||
仓库:FStockID (必填项) |
|||
核算维度Id:FAcctgDimeEntryId |
|||
FSeqEntryId:FSeqEntryId |
|||
应付单编号:FInvoiceBillNo |
|||
维度ID:FDimeentryId |
|||
库存状态:FSTOCKSTATUSID (必填项) |
|||
单价:FPrice |
|||
跨期调整:FCrossPeriodAdjust |
|||
费用项目:FExpenseID |
|||
费用项目名称:FExpenseName |
|||
金额:FExpenseAmount |
|||
部门:FDepartmentId |
|||
应付单行号:FInvoiceSeq |
|||
应付单单据类型:FInvoiceBillTypeId |
|||
钩稽序号:FHookLogID |
|||
批号:FLOT |
|||
货主名称:FOwnerName |
|||
调整金额(原币):FAdjustmentAMOUNTFor |
|||
BOM版本:FBOMId |
|||
调整金额:FAdjustmentAMOUNT |
|||
货主:FOwnerID (必填项) |
|||
库存组织:FStockOrgID (必填项) |
|||
库存组织名称:FStockOrgName |
|||
仓位:FSTOCKLOCID |
|||
货主类型:FOwnerTypeId |
|||
辅助属性:FAuxPropId |
|||
基本单位:FBASICUNITID |
|||
计划跟踪号:FMtoNo |
|||
项目编号:FPROJECTNO |
|||
序列号:FSeqId |
|||
修改日期:FModifyDate |
|||
创建人:FCreatorId |
|||
审核人:FAuditorID |
|||
审核日期:FAuditDate |
|||
创建日期:FCreateDate |
|||
创建组织:FCreateOrgId (必填项) |
|||
单据状态:FDocumentStatus (必填项) |
|||
币别:FCurrencyID |
|||
业务日期:FDate |
|||
单据编号:FBillNo |
|||
核算体系名称:FACCTGSYSTEMNAME |
|||
核算体系编码:FACCTGSYSTEMID (必填项) |
|||
往来单位:FSUPPLIERID |
|||
会计政策名称:FACCTPOLICYNAME |
|||
是否为出库核算生成:FIsAcctgGenerate |
|||
核算内码:FAcctgId |
|||
会计政策编码:FACCTPOLICYID (必填项) |
|||
调整原因:FAdjustmentReason |
|||
修改人:FModifierId |
|||
作废人:FForbidderID |
|||
作废状态:FForbidStatus |
|||
作废日期:FForbidDate |
|||
核算组织名称:FAcctOrgName |
|||
核算组织编码:FAcctOrgID (必填项) |
|||
业务类型:FBusinessType |
|||
单据类型:FBillTypeID |
Loading…
Reference in new issue