
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