53 changed files with 1130 additions and 174 deletions
@ -0,0 +1,36 @@ |
|||
package com.yxt.anrui.fin.api.kingdee.bddepartment; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
|
|||
/** |
|||
* 部门 |
|||
*/ |
|||
@Data |
|||
public class BdDepartment { |
|||
/* 使用组织:FUseOrgId (必填项)*/ |
|||
@JsonProperty("FUseOrgId") |
|||
@NotBlank(message = "FUseOrgId不能为空") |
|||
public String FUseOrgId; |
|||
/* 创建组织:FCreateOrgId (必填项) */ |
|||
@JsonProperty("FCreateOrgId") |
|||
@NotBlank(message = "FCreateOrgId不能为空") |
|||
public String FCreateOrgId; |
|||
/* 编码:FNumber*/ |
|||
@JsonProperty("FNumber") |
|||
public String FNumber=""; |
|||
/* 名称:FName (必填项)*/ |
|||
@JsonProperty("FName") |
|||
@NotBlank(message = "FName不能为空") |
|||
public String FName; |
|||
/* 名称:FGroup (必填项)*/ |
|||
@JsonProperty("FGroup") |
|||
@NotBlank(message = "FGroup不能为空") |
|||
public String FGroup=""; |
|||
/* 名称:FParentID */ |
|||
@JsonProperty("FParentID") |
|||
@NotBlank(message = "FParentID不能为空") |
|||
public String FParentID=""; |
|||
} |
@ -0,0 +1,50 @@ |
|||
package com.yxt.anrui.fin.api.kingdee.bdempinfo; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
|
|||
@Data |
|||
public class BDEmpinfo { |
|||
/*工作组织:FWorkOrgId (必填项) |
|||
所属部门:FPostDept (必填项) |
|||
就任岗位:FPost (必填项) |
|||
*/ |
|||
/* 员工姓名:FName (必填项)*/ |
|||
@JsonProperty("FName") |
|||
@NotBlank(message = "FName不能为空") |
|||
public String FName; |
|||
/** |
|||
* 使用组织:FUseOrgId (必填项) |
|||
*/ |
|||
@JsonProperty("FUseOrgId") |
|||
@NotBlank(message = "FUseOrgId不能为空") |
|||
public String FUseOrgId; |
|||
/** |
|||
* 创建组织:FCreateOrgId (必填项) |
|||
*/ |
|||
@JsonProperty("FCreateOrgId") |
|||
@NotBlank(message = "FCreateOrgId不能为空") |
|||
public String FCreateOrgId; |
|||
/** |
|||
* 描述:FDescription |
|||
*/ |
|||
@JsonProperty("FDescription") |
|||
public String FDescription=""; |
|||
/** |
|||
* 编码:FNumber |
|||
*/ |
|||
@JsonProperty("FNumber") |
|||
public String FNumber; |
|||
/** |
|||
* 移动电话:FMobile |
|||
*/ |
|||
@JsonProperty("FMobile") |
|||
public String FMobile; |
|||
/** |
|||
* 联系地址:FAddress |
|||
*/ |
|||
@JsonProperty("FAddress") |
|||
public String FAddress; |
|||
} |
@ -1,58 +1,56 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee; |
|||
|
|||
import org.springframework.beans.factory.annotation.Value; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
/** |
|||
* 金蝶的系统的链接账号 url等信息 |
|||
*/ |
|||
@Configuration |
|||
public class KingDeeConfig { |
|||
public static String sessionkey = "kdservice-sessionid"; |
|||
public static String aspnetsessionkey = "ASP.NET_SessionId"; |
|||
public static String sessionValue = ""; |
|||
public static String aspnetsessionValue = ""; |
|||
/** |
|||
* 登录金蝶的账户信息 20211011 |
|||
*/ |
|||
// public static String acctID = "61654d8e138fe6";
|
|||
/** |
|||
* 登录金蝶的账户信息 2022010测试 |
|||
*/ |
|||
// public static String acctID = "61dce6601125a0";
|
|||
/** |
|||
* 登录金蝶的账户信息 正式系统 正式系统 正式系统 正式系统 正式系统 正式系统 正式系统 正式系统 正式系统 正式系统 |
|||
*/ |
|||
public static String acctID = "5e84c526016ed7"; |
|||
/** |
|||
* 登录金蝶的账户信息 2022010测试的 |
|||
*/ |
|||
// public static String userName = "信息部2";
|
|||
/** |
|||
* 登录金蝶的账户信息 |
|||
*/ |
|||
//public static String password = "123321";
|
|||
/** |
|||
* 登录金蝶的账户信息 2022010测试 |
|||
*/ |
|||
// public static String userName_administrator = "administrator";
|
|||
/** |
|||
* 登录金蝶的账户信息 2022010测试 |
|||
*/ |
|||
// public static String password_administrator = "ANrui123456.";
|
|||
|
|||
/** |
|||
* 登录金蝶的账户信息 正式系统正式系统正式系统正式系统正式系统 正式系统 正式系统 正式系统 正式系统 |
|||
*/ |
|||
public static String userName = "信息部"; |
|||
/** |
|||
* 登录金蝶的账户信息 正式系统正式系统正式系统正式系统正式系统 正式系统 正式系统 正式系统 正式系统 |
|||
*/ |
|||
public static String password = "ywzx0750"; |
|||
/** |
|||
* 登录金蝶的账户信息 正式系统 正式系统 正式系统 正式系统 |
|||
*/ |
|||
public static String userName_administrator = "Administrator"; |
|||
/** |
|||
* 登录金蝶的账户信息 正式系统 正式系统 正式系统 正式系统 |
|||
*/ |
|||
public static String password_administrator = "hebei@anrui202108."; |
|||
/** |
|||
* 登录金蝶的账户信息 |
|||
*/ |
|||
public static String lcid = "2052"; |
|||
public static String url="http://121.36.43.55" ; |
|||
@Value("${kingdee.acctID}") |
|||
private String acctID; |
|||
@Value("${kingdee.userName}") |
|||
private String userName; |
|||
@Value("${kingdee.password}") |
|||
private String password; |
|||
@Value("${kingdee.userName_administrator}") |
|||
private String userName_administrator; |
|||
@Value("${kingdee.password_administrator}") |
|||
private String password_administrator; |
|||
@Value("${kingdee.lcid}") |
|||
private String lcid; |
|||
@Value("${kingdee.url}") |
|||
public String url; |
|||
public String getAcctID(){ |
|||
return acctID; |
|||
} |
|||
|
|||
public String getUrl() { |
|||
return url; |
|||
} |
|||
|
|||
public String getUserName() { |
|||
return userName; |
|||
} |
|||
|
|||
public String getPassword() { |
|||
return password; |
|||
} |
|||
|
|||
public String getUserName_administrator() { |
|||
return userName_administrator; |
|||
} |
|||
|
|||
public String getPassword_administrator() { |
|||
return password_administrator; |
|||
} |
|||
|
|||
public String getLcid() { |
|||
return lcid; |
|||
} |
|||
} |
|||
|
@ -0,0 +1,44 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.bddepartment; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.alibaba.fastjson.parser.Feature; |
|||
import com.yxt.anrui.fin.biz.kingdee.KingDeeUtils; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 封装转换的类 |
|||
*/ |
|||
public class BdDepartmentCastToKingDeeBillFields { |
|||
private static Logger log=LoggerFactory.getLogger(BdDepartmentCastToKingDeeBillFields.class); |
|||
/** |
|||
* 构造金蝶需要的数据结构 并对字段赋值 |
|||
* |
|||
* @param map_fEntityModel_ |
|||
* @return |
|||
*/ |
|||
public static String getKingDeeData(Map<String,String> map_fEntityModel_ ){ |
|||
/** |
|||
* 取模板 |
|||
*/ |
|||
String readJsonFile = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bddepartment/data.json"); |
|||
String fEntityData_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bddepartment/data_data.json"); |
|||
String fEntityModel_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bddepartment/data_model.json"); |
|||
log.info("readJsonFile:{}",readJsonFile); |
|||
log.info("fEntityData_:{}",fEntityData_); |
|||
log.info("fEntityModel_:{}",fEntityModel_); |
|||
|
|||
//模板字符创转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); |
|||
|
|||
jsonFEntityData_.put("Model",JSONObject.parseObject(JSON.toJSONString(jsonFEntityModel_),Feature.OrderedField)); |
|||
jsonObj.put("data",jsonFEntityData_.toJSONString()); |
|||
return jsonObj.toJSONString(); |
|||
} |
|||
} |
@ -0,0 +1,144 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.bddepartment; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId; |
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillUrl; |
|||
import com.yxt.anrui.fin.api.kingdee.bddepartment.BdDepartment; |
|||
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService; |
|||
import com.yxt.anrui.fin.biz.kingdee.KingDeeConfig; |
|||
import com.yxt.common.base.utils.StringUtils; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Service |
|||
public class BdDepartmentService extends FinKingDeeService { |
|||
@Autowired |
|||
private KingDeeConfig kingDeeConfig; |
|||
/** |
|||
* 保存部门 |
|||
* @param bdDepartment |
|||
* @return |
|||
*/ |
|||
public ResultBean saveBdDepartment(BdDepartment bdDepartment) { |
|||
//BdDepartments=BdDepartments.createBdDepartments();
|
|||
ResultBean rb=ResultBean.fireFail(); |
|||
try { |
|||
//业务表的主表数据集合
|
|||
Map<String,String> map_fEntityModel_= object2Map(bdDepartment); |
|||
map_fEntityModel_.put("FDEPTID","0"); |
|||
map_fEntityModel_.put("IsDeleteEntry", "True"); |
|||
String kingDeeData = BdDepartmentCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
return addBdDepartment(kingDeeData,bdDepartment.getFNumber()); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
/** |
|||
* 批量修改 部门 |
|||
* @param BdDepartments |
|||
* @return |
|||
*/ |
|||
public ResultBean<String> updateBdDepartments(List<BdDepartment> BdDepartments) { |
|||
ResultBean rb=ResultBean.fireFail(); |
|||
List<String> list=new ArrayList<>(); |
|||
BdDepartments.forEach(o->{ |
|||
ResultBean<String> r = updateBdDepartment(o); |
|||
if(r.getSuccess()){ |
|||
list.add(r.getData()); |
|||
} |
|||
}); |
|||
return rb.success().setData(JSONObject.toJSONString(list)); |
|||
} |
|||
|
|||
/** |
|||
* 修改部门 |
|||
* @param bdDepartment |
|||
* @return |
|||
*/ |
|||
public ResultBean<String> updateBdDepartment( BdDepartment bdDepartment) { |
|||
//BdDepartments=BdDepartments.createBdDepartments();
|
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try { |
|||
Map<String,String> map_fEntityModel_= object2Map(bdDepartment); |
|||
map_fEntityModel_.put("FDEPTID","0"); |
|||
map_fEntityModel_.put("IsDeleteEntry", "True"); |
|||
String kingDeeData = BdDepartmentCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
ResultBean<String> stringResultBean = viewGetId(KingDeeBillId.BD_Department.getID(), bdDepartment.getFNumber() |
|||
); |
|||
String id = stringResultBean.getData(); |
|||
if(!stringResultBean.getSuccess()&&"0".equals(id)){ |
|||
return addBdDepartment(kingDeeData,bdDepartment.getFNumber()); |
|||
} |
|||
//反审核
|
|||
boolean c = isAudit(KingDeeBillId.BD_Department.getID(), "C", id); |
|||
//修改
|
|||
map_fEntityModel_.put("FDEPTID",id); |
|||
map_fEntityModel_.put("IsDeleteEntry", "False"); |
|||
kingDeeData = BdDepartmentCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
rb= accessKingDeeInterface(KingDeeBillId.BD_Department.getID(), kingDeeData, KingDeeBillUrl.SAVE_URL.getURL()); |
|||
//提交审核
|
|||
ResultBean<String> resultBean2 = submitAndAudit(id); |
|||
return resultBean2; |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
/** |
|||
* 新增 |
|||
* @param kingDeeData |
|||
* @return |
|||
*/ |
|||
private ResultBean<String> addBdDepartment(String kingDeeData,String FNumber){ |
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try{ |
|||
rb= accessKingDeeInterface(KingDeeBillId.BD_Department.getID(), kingDeeData, KingDeeBillUrl.SAVE_URL.getURL()); |
|||
String s = draftResultGetId(rb.getData()); |
|||
return submitAndAudit(s); |
|||
}catch (Exception e){ |
|||
e.printStackTrace(); |
|||
return rb.setMsg("部门新增失败"); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 提交审核部门 |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
private ResultBean<String> submitAndAudit( String id){ |
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try{ |
|||
String submitKDTempJson = getSubmitKDTempJson(KingDeeBillId.BD_Department.getID(),id ); |
|||
ResultBean<String> resultBean1 = accessKingDeeInterface(KingDeeBillId.BD_Department.getID(), submitKDTempJson, |
|||
KingDeeBillUrl.SUBMIT_URL.getURL()); |
|||
if(!resultBean1.getSuccess()){ |
|||
log.info("部门提交失败!"); |
|||
return rb.setMsg("部门提交失败!"); |
|||
} |
|||
log.info("部门提交成功!"); |
|||
String auditKDTempJson = getAuditKDTempJson(KingDeeBillId.BD_Department.getID(), id); |
|||
ResultBean<String> resultBean2 = |
|||
accessKingDeeInterface(KingDeeBillId.BD_Department.getID(), auditKDTempJson, |
|||
KingDeeBillUrl.AUDIT_URL.getURL()); |
|||
if(!resultBean2.getSuccess()){ |
|||
log.info("部门审核失败!"); |
|||
return rb.setMsg("部门审核失败!"); |
|||
} |
|||
log.info("部门审核成功!"); |
|||
return resultBean2; |
|||
} catch (Exception e){ |
|||
e.printStackTrace(); |
|||
return rb.setMsg("部门提交审核失败"); |
|||
} |
|||
} |
|||
} |
|||
|
@ -0,0 +1,4 @@ |
|||
{ |
|||
"formId": "BD_Department", |
|||
"data": "@KD_data" |
|||
} |
@ -0,0 +1,13 @@ |
|||
{ |
|||
"Creator": "", |
|||
"NeedUpDateFields": [], |
|||
"NeedReturnFields": [], |
|||
"IsDeleteEntry": "True", |
|||
"SubSystemId": "", |
|||
"IsVerifyBaseDataField": "false", |
|||
"IsEntryBatchFill": "True", |
|||
"ValidateFlag": "True", |
|||
"NumberSearch": "True", |
|||
"InterationFlags": "", |
|||
"Model": {} |
|||
} |
@ -0,0 +1,24 @@ |
|||
{ |
|||
"FDEPTID": @KD_FDEPTID, |
|||
"FCreateOrgId": { |
|||
"FNumber": "@KD_FCreateOrgId" |
|||
}, |
|||
"FNumber": "@KD_FNumber", |
|||
"FUseOrgId": { |
|||
"FNumber": "@KD_FUseOrgId" |
|||
}, |
|||
"FName": "@KD_FName", |
|||
"FParentID": { |
|||
"FNumber": "@KD_FParentID" |
|||
}, |
|||
"FEffectDate": "@KD_FParentID", |
|||
"FLapseDate": "9999-12-31 00:00:00", |
|||
"FDeptProperty": { |
|||
"FNumber": "DP02_SYS" |
|||
}, |
|||
"FGroup": { |
|||
"FNumber": "@KD_FGroup" |
|||
}, |
|||
"FIsCopyFlush": false, |
|||
"FSHRMapEntity": {} |
|||
} |
@ -0,0 +1,71 @@ |
|||
一、请求参数说明: |
|||
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类型(必录) |
|||
|
|||
二、Json格式数据: |
|||
{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FDEPTID\":\"0\",\"FCreateOrgId\":{\"FNumber\":\"\"},\"FNumber\":\"\",\"FUseOrgId\":{\"FNumber\":\"\"},\"FName\":\"\",\"FHelpCode\":\"\",\"FParentID\":{\"FNumber\":\"\"},\"FFullName\":\"\",\"FEffectDate\":\"1900-01-01\",\"FLapseDate\":\"1900-01-01\",\"FDeptProperty\":{\"FNumber\":\"\"},\"FDescription\":\"\",\"FGroup\":{\"FNumber\":\"\"},\"FIsCopyFlush\":\"false\",\"FSHRMapEntity\":{\"FMAPID\":\"0\"}}} |
|||
|
|||
三、返回参数: |
|||
{\"Result\":{\"ResponseStatus\":{\"ErrorCode\":\"\",\"IsSuccess\":\"false\",\"Errors\":[{\"FieldName\":\"\",\"Message\":\"\",\"DIndex\":0}],\"SuccessEntitys\":[{\"Id\":\"\",\"Number\":\"\",\"DIndex\":0}],\"SuccessMessages\":[{\"FieldName\":\"\",\"Message\":\"\",\"DIndex\":0}]},\"Id\":\"\",\"NeedReturnData\":[{}]}} |
|||
|
|||
四、代码示例: |
|||
// 使用webapi引用组件Kingdee.BOS.WebApi.Client.dll |
|||
K3CloudApiClient client = new K3CloudApiClient("http://121.36.43.55/k3cloud/"); |
|||
var ret = client.ValidateLogin("61dce6601125a0","Administrator","888888",2052); |
|||
var result = JObject.Parse(ret)["LoginResultType"].Value<int>(); |
|||
// 登陆成功 |
|||
if (result == 1) |
|||
{ |
|||
client.Draft("BD_Department","{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FDEPTID\":\"0\",\"FCreateOrgId\":{\"FNumber\":\"\"},\"FNumber\":\"\",\"FUseOrgId\":{\"FNumber\":\"\"},\"FName\":\"\",\"FHelpCode\":\"\",\"FParentID\":{\"FNumber\":\"\"},\"FFullName\":\"\",\"FEffectDate\":\"1900-01-01\",\"FLapseDate\":\"1900-01-01\",\"FDeptProperty\":{\"FNumber\":\"\"},\"FDescription\":\"\",\"FGroup\":{\"FNumber\":\"\"},\"FIsCopyFlush\":\"false\",\"FSHRMapEntity\":{\"FMAPID\":\"0\"}}}"); |
|||
} |
|||
|
|||
五、字段说明: |
|||
WIP仓位:FWIPLocationID |
|||
WIP仓库:FWIPStockID |
|||
深度:FDepth |
|||
层级码:FLevelCode |
|||
车间:FIsStock |
|||
HR部门:FIsHRDept |
|||
禁用日期:FForbidDate |
|||
业务组织本部:FIsOrg |
|||
对应业务组织:FOrg |
|||
是否根节点:FIsRoot |
|||
名称:FSHRName |
|||
编码:FSHRNumber |
|||
所属ERP组织:FErpCode |
|||
状态:FSHRStatus |
|||
SHR内码:FShrId |
|||
部门分组:FGroup |
|||
部门属性:FDeptProperty |
|||
副产品倒冲:FIsCopyFlush |
|||
来源于s-HR:FIsSHR |
|||
使用组织:FUseOrgId (必填项) |
|||
创建组织:FCreateOrgId (必填项) |
|||
修改人:FModifierId |
|||
创建人:FCreatorId |
|||
描述:FDescription |
|||
禁用状态:FForbidStatus |
|||
数据状态:FDocumentStatus |
|||
编码:FNumber |
|||
名称:FName (必填项) |
|||
创建日期:FCreateDate |
|||
审核日期:FAuditDate |
|||
审核人:FAuditorID |
|||
禁用人:FForbidderID |
|||
上级部门:FParentID |
|||
失效日期:FLapseDate |
|||
助记码:FHelpCode |
|||
修改日期:FModifyDate |
|||
生效日期:FEffectDate |
|||
部门全称:FFullName |
@ -0,0 +1 @@ |
|||
{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FDEPTID\":0,\"FCreateOrgId\":{\"FNumber\":\"101\"},\"FUseOrgId\":{\"FNumber\":\"101\"},\"FName\":\"1212211212211212\",\"FParentID\":{\"FNumber\":\"05.01\"},\"FEffectDate\":\"2022-10-28 00:00:00\",\"FLapseDate\":\"9999-12-31 00:00:00\",\"FDeptProperty\":{\"FNumber\":\"DP02_SYS\"},\"FGroup\":{\"FNumber\":\"01\"},\"FIsCopyFlush\":false,\"FSHRMapEntity\":{}}} |
Binary file not shown.
@ -0,0 +1,44 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.bdempinfo; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.alibaba.fastjson.parser.Feature; |
|||
import com.yxt.anrui.fin.biz.kingdee.KingDeeUtils; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 封装转换的类 |
|||
*/ |
|||
public class BDEmpinfoCastToKingDeeBillFields { |
|||
private static Logger log=LoggerFactory.getLogger(BDEmpinfoCastToKingDeeBillFields.class); |
|||
/** |
|||
* 构造金蝶需要的数据结构 并对字段赋值 |
|||
* |
|||
* @param map_fEntityModel_ |
|||
* @return |
|||
*/ |
|||
public static String getKingDeeData(Map<String,String> map_fEntityModel_ ){ |
|||
/** |
|||
* 取模板 |
|||
*/ |
|||
String readJsonFile = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bdempinfo/data.json"); |
|||
String fEntityData_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bdempinfo/data_data.json"); |
|||
String fEntityModel_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/bdempinfo/data_model.json"); |
|||
log.info("readJsonFile:{}",readJsonFile); |
|||
log.info("fEntityData_:{}",fEntityData_); |
|||
log.info("fEntityModel_:{}",fEntityModel_); |
|||
|
|||
//模板字符创转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); |
|||
|
|||
jsonFEntityData_.put("Model",JSONObject.parseObject(JSON.toJSONString(jsonFEntityModel_),Feature.OrderedField)); |
|||
jsonObj.put("data",jsonFEntityData_.toJSONString()); |
|||
return jsonObj.toJSONString(); |
|||
} |
|||
} |
@ -0,0 +1,143 @@ |
|||
package com.yxt.anrui.fin.biz.kingdee.bdempinfo; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId; |
|||
import com.yxt.anrui.fin.api.kingdee.KingDeeBillUrl; |
|||
import com.yxt.anrui.fin.api.kingdee.bdempinfo.BDEmpinfo; |
|||
import com.yxt.anrui.fin.api.kingdee.bdempinfo.BDEmpinfo; |
|||
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService; |
|||
import com.yxt.anrui.fin.biz.kingdee.KingDeeConfig; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Service |
|||
public class BDEmpinfoService extends FinKingDeeService { |
|||
@Autowired |
|||
private KingDeeConfig kingDeeConfig; |
|||
/** |
|||
* 保存员工 |
|||
* @param BDEmpinfo |
|||
* @return |
|||
*/ |
|||
public ResultBean saveBDEmpinfo(BDEmpinfo BDEmpinfo) { |
|||
//BDEmpinfos=BDEmpinfos.createBDEmpinfos();
|
|||
ResultBean rb=ResultBean.fireFail(); |
|||
try { |
|||
//业务表的主表数据集合
|
|||
Map<String,String> map_fEntityModel_= object2Map(BDEmpinfo); |
|||
map_fEntityModel_.put("FID","0"); |
|||
map_fEntityModel_.put("IsDeleteEntry", "True"); |
|||
String kingDeeData = BDEmpinfoCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
return addBDEmpinfo(kingDeeData,BDEmpinfo.getFNumber()); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
/** |
|||
* 批量修改 员工 |
|||
* @param BDEmpinfos |
|||
* @return |
|||
*/ |
|||
public ResultBean<String> updateBDEmpinfos(List<BDEmpinfo> BDEmpinfos) { |
|||
ResultBean rb=ResultBean.fireFail(); |
|||
List<String> list=new ArrayList<>(); |
|||
BDEmpinfos.forEach(o->{ |
|||
ResultBean<String> r = updateBDEmpinfo(o); |
|||
if(r.getSuccess()){ |
|||
list.add(r.getData()); |
|||
} |
|||
}); |
|||
return rb.success().setData(JSONObject.toJSONString(list)); |
|||
} |
|||
|
|||
/** |
|||
* 修改员工 |
|||
* @param BDEmpinfo |
|||
* @return |
|||
*/ |
|||
public ResultBean<String> updateBDEmpinfo( BDEmpinfo BDEmpinfo) { |
|||
//BDEmpinfos=BDEmpinfos.createBDEmpinfos();
|
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try { |
|||
Map<String,String> map_fEntityModel_= object2Map(BDEmpinfo); |
|||
map_fEntityModel_.put("FID","0"); |
|||
map_fEntityModel_.put("IsDeleteEntry", "True"); |
|||
String kingDeeData = BDEmpinfoCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
ResultBean<String> stringResultBean = viewGetId(KingDeeBillId.BD_Empinfo.getID(), BDEmpinfo.getFNumber()); |
|||
String id = stringResultBean.getData(); |
|||
if(!stringResultBean.getSuccess()&&"0".equals(id)){ |
|||
return addBDEmpinfo(kingDeeData,BDEmpinfo.getFNumber()); |
|||
} |
|||
//反审核
|
|||
boolean c = isAudit(KingDeeBillId.BD_Empinfo.getID(), "C", id); |
|||
//修改
|
|||
map_fEntityModel_.put("FID",id); |
|||
map_fEntityModel_.put("IsDeleteEntry", "False"); |
|||
kingDeeData = BDEmpinfoCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_); |
|||
rb= accessKingDeeInterface(KingDeeBillId.BD_Empinfo.getID(), kingDeeData,KingDeeBillUrl.SAVE_URL.getURL()); |
|||
//提交审核
|
|||
ResultBean<String> resultBean2 = submitAndAudit(id); |
|||
return resultBean2; |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return rb; |
|||
} |
|||
|
|||
/** |
|||
* 新增 |
|||
* @param kingDeeData |
|||
* @return |
|||
*/ |
|||
private ResultBean<String> addBDEmpinfo(String kingDeeData,String FNumber){ |
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try{ |
|||
rb= accessKingDeeInterface(KingDeeBillId.BD_Empinfo.getID(), kingDeeData,KingDeeBillUrl.SAVE_URL.getURL()); |
|||
String s = draftResultGetId(rb.getData()); |
|||
return submitAndAudit(s); |
|||
}catch (Exception e){ |
|||
e.printStackTrace(); |
|||
return rb.setMsg("员工新增失败"); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 提交审核员工 |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
private ResultBean<String> submitAndAudit( String id){ |
|||
ResultBean<String> rb=ResultBean.fireFail(); |
|||
try{ |
|||
String submitKDTempJson = getSubmitKDTempJson(KingDeeBillId.BD_Empinfo.getID(),id ); |
|||
ResultBean<String> resultBean1 = accessKingDeeInterface(KingDeeBillId.BD_Empinfo.getID(), submitKDTempJson, |
|||
KingDeeBillUrl.SUBMIT_URL.getURL()); |
|||
if(!resultBean1.getSuccess()){ |
|||
log.info("员工提交失败!"); |
|||
return rb.setMsg("员工提交失败!"); |
|||
} |
|||
log.info("员工提交成功!"); |
|||
String auditKDTempJson = getAuditKDTempJson(KingDeeBillId.BD_Empinfo.getID(), id); |
|||
ResultBean<String> resultBean2 = |
|||
accessKingDeeInterface(KingDeeBillId.BD_Empinfo.getID(), auditKDTempJson, |
|||
KingDeeBillUrl.AUDIT_URL.getURL()); |
|||
if(!resultBean2.getSuccess()){ |
|||
log.info("员工审核失败!"); |
|||
return rb.setMsg("员工审核失败!"); |
|||
} |
|||
log.info("员工审核成功!"); |
|||
return resultBean2; |
|||
} catch (Exception e){ |
|||
e.printStackTrace(); |
|||
return rb.setMsg("员工提交审核失败"); |
|||
} |
|||
} |
|||
} |
|||
|
@ -0,0 +1,4 @@ |
|||
{ |
|||
"formId": "BD_Empinfo", |
|||
"data": "@KD_data" |
|||
} |
@ -0,0 +1,13 @@ |
|||
{ |
|||
"Creator": "", |
|||
"NeedUpDateFields": [], |
|||
"NeedReturnFields": [], |
|||
"IsDeleteEntry": "True", |
|||
"SubSystemId": "", |
|||
"IsVerifyBaseDataField": "false", |
|||
"IsEntryBatchFill": "True", |
|||
"ValidateFlag": "True", |
|||
"NumberSearch": "True", |
|||
"InterationFlags": "", |
|||
"Model": {} |
|||
} |
@ -0,0 +1,13 @@ |
|||
{ |
|||
"FID": @KD_FID, |
|||
"FName": "@KD_FNAME", |
|||
"FMobile": "@KD_FMobile", |
|||
"FAddress": "@KD_FAddress", |
|||
"FUseOrgId": { |
|||
"FNumber": "@KD_FUseOrgId" |
|||
}, |
|||
"FCreateOrgId": { |
|||
"FNumber": "@KD_FCreateOrgId" |
|||
}, |
|||
"FSHRMapEntity": {} |
|||
} |
@ -0,0 +1,87 @@ |
|||
一、请求参数说明: |
|||
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类型(必录) |
|||
|
|||
二、Json格式数据: |
|||
{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":\"0\",\"FName\":\"\",\"FStaffNumber\":\"\",\"FMobile\":\"\",\"FTel\":\"\",\"FEmail\":\"\",\"FDescription\":\"\",\"FAddress\":\"\",\"FUseOrgId\":{\"FNumber\":\"\"},\"FCreateOrgId\":{\"FNumber\":\"\"},\"FSHRMapEntity\":{\"FMAPID\":\"0\"},\"FPostEntity\":[{\"FENTRYID\":\"0\",\"FWorkOrgId\":{\"FNumber\":\"\"},\"FPostDept\":{\"FNumber\":\"\"},\"FPost\":{\"FNumber\":\"\"},\"FStaffStartDate\":\"1900-01-01\",\"FIsFirstPost\":\"false\"}],\"FBankInfo\":[{\"FBankId\":\"0\",\"FBankCountry\":{\"FNumber\":\"\"},\"FOpenBankName\":\"\",\"FBankCode\":\"\",\"FBankHolder\":\"\",\"FBankTypeRec\":{\"FNUMBER\":\"\"},\"FTextBankDetail\":\"\",\"FOpenAddressRec\":\"\",\"FCNAPS\":\"\",\"FBankCurrencyId\":{\"FNUMBER\":\"\"},\"FBankIsDefault\":\"false\",\"FBankDesc\":\"\"}]}} |
|||
|
|||
三、返回参数: |
|||
{\"Result\":{\"ResponseStatus\":{\"ErrorCode\":\"\",\"IsSuccess\":\"false\",\"Errors\":[{\"FieldName\":\"\",\"Message\":\"\",\"DIndex\":0}],\"SuccessEntitys\":[{\"Id\":\"\",\"Number\":\"\",\"DIndex\":0}],\"SuccessMessages\":[{\"FieldName\":\"\",\"Message\":\"\",\"DIndex\":0}]},\"Id\":\"\",\"NeedReturnData\":[{}]}} |
|||
|
|||
四、代码示例: |
|||
// 使用webapi引用组件Kingdee.BOS.WebApi.Client.dll |
|||
K3CloudApiClient client = new K3CloudApiClient("http://121.36.43.55/k3cloud/"); |
|||
var ret = client.ValidateLogin("61dce6601125a0","Administrator","888888",2052); |
|||
var result = JObject.Parse(ret)["LoginResultType"].Value<int>(); |
|||
// 登陆成功 |
|||
if (result == 1) |
|||
{ |
|||
client.Draft("BD_Empinfo","{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":\"0\",\"FName\":\"\",\"FStaffNumber\":\"\",\"FMobile\":\"\",\"FTel\":\"\",\"FEmail\":\"\",\"FDescription\":\"\",\"FAddress\":\"\",\"FUseOrgId\":{\"FNumber\":\"\"},\"FCreateOrgId\":{\"FNumber\":\"\"},\"FSHRMapEntity\":{\"FMAPID\":\"0\"},\"FPostEntity\":[{\"FENTRYID\":\"0\",\"FWorkOrgId\":{\"FNumber\":\"\"},\"FPostDept\":{\"FNumber\":\"\"},\"FPost\":{\"FNumber\":\"\"},\"FStaffStartDate\":\"1900-01-01\",\"FIsFirstPost\":\"false\"}],\"FBankInfo\":[{\"FBankId\":\"0\",\"FBankCountry\":{\"FNumber\":\"\"},\"FOpenBankName\":\"\",\"FBankCode\":\"\",\"FBankHolder\":\"\",\"FBankTypeRec\":{\"FNUMBER\":\"\"},\"FTextBankDetail\":\"\",\"FOpenAddressRec\":\"\",\"FCNAPS\":\"\",\"FBankCurrencyId\":{\"FNUMBER\":\"\"},\"FBankIsDefault\":\"false\",\"FBankDesc\":\"\"}]}}"); |
|||
} |
|||
|
|||
五、字段说明: |
|||
员工任岗ID:FStaffDetails |
|||
部门全称:FBaseProperty3 |
|||
禁用状态:FStaffForbidStatus |
|||
编码:FSHRNumber |
|||
工作组织:FWorkOrgId (必填项) |
|||
是否主任岗:FIsFirstPost |
|||
数据状态:FStaffDocumentStatus |
|||
来源于s-HR:FIsSHR |
|||
任岗状态:FBaseProperty9 |
|||
主任岗开始日期:FBaseProperty1 |
|||
所属部门:FPostDept (必填项) |
|||
任岗开始日期:FStaffStartDate |
|||
就任岗位:FPost (必填项) |
|||
SHR内码:FShrId |
|||
开户行地址:FOpenAddressRec |
|||
描述:FBankDesc |
|||
默认:FBankIsDefault |
|||
选择银行网点:FTextBankDetail |
|||
收款银行:FBankTypeRec |
|||
联行号:FCNAPS |
|||
币别:FBankCurrencyId |
|||
国家:FBankCountry |
|||
状态:FSHRStatus |
|||
名称:FSHRName |
|||
账户名称:FBankHolder |
|||
银行账号:FBankCode |
|||
开户银行:FOpenBankName |
|||
创建日期:FCreateDate |
|||
修改人:FModifierId |
|||
创建人:FCreatorId |
|||
禁用人:FForbidderId |
|||
禁用日期:FForbidDate |
|||
修改日期:FModifyDate |
|||
使用组织:FUseOrgId (必填项) |
|||
员工姓名:FName (必填项) |
|||
禁用状态:FForbidStatus |
|||
数据状态:FDocumentStatus |
|||
创建组织:FCreateOrgId (必填项) |
|||
描述:FDescription |
|||
编码:FNumber |
|||
员工编号:FStaffNumber |
|||
人员:FPersonID |
|||
主任职职员信息:FStaffId |
|||
固定电话:FTel |
|||
主任岗岗位:FBaseProperty |
|||
主证件内码:FFirstCardID |
|||
员工姓名:FBaseProperty8 |
|||
电子邮箱:FEmail |
|||
审核日期:FAuditDate |
|||
审核人:FAuditorID |
|||
照片:FPhoto |
|||
移动电话:FMobile |
|||
联系地址:FAddress |
|||
HR员工:FIsHR |
@ -0,0 +1 @@ |
|||
{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":0,\"FName\":\"员工姓名1\",\"FMobile\":\"15097329653\",\"FAddress\":\"联系地址联系地址联系地址联系地址\",\"FUseOrgId\":{\"FNumber\":\"101\"},\"FCreateOrgId\":{\"FNumber\":\"101\"},\"FSHRMapEntity\":{}}} |
Binary file not shown.
Loading…
Reference in new issue