evo-Financial-pc/evo-admin/src/main/java/com/evo/kingdeeUtils/KingdeeRequestUtils.java
2025-07-12 11:57:47 +08:00

110 lines
3.9 KiB
Java

package com.evo.kingdeeUtils;
import com.alibaba.fastjson2.JSON;
import com.evo.common.utils.DateUtils;
import com.evo.common.utils.spring.SpringUtils;
import com.evo.kingdeeUtils.exception.KingdeeException;
import com.evo.kingdeeUtils.kenum.BaseEnum;
import com.evo.kingdeeUtils.kenum.KingdeeParamsEnum;
import com.evo.kingdeeUtils.mapper.LogKingDeeMapper;
import com.evo.kingdeeUtils.vo.LogKingDee;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 类
*
* @ClassName:KingdeeRequestUtils
* @date: 2025年07月11日 9:33
* @author: andy.shi
* @contact: 17330188597
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
*/
@Slf4j
public class KingdeeRequestUtils {
/***
* 员工保存接口
* @param params
* 参数说明对照关系: key-value
* FName-员工姓名
* FStaffNumber-员工编号
* FNumber-岗位编号
* FPostDept_FNumber_岗位所属部门编号
*/
public static void employeeSave(Map<String, String> params){
// request(params, KingdeeParamsEnum.Employee.SAVE);
}
/***
* 员工禁用接口
* @param params
* 参数说明对照关系: key-value
* Numbers-员工编码 (多个使用,分割, 即: 001,002,003)
*/
public static void employeeDisabled(Map<String, String> params){
// request(params, KingdeeParamsEnum.Employee.DISABLED);
}
/***
* 岗位调整
* @param params
* 参数说明对照关系: key-value
* NeedUpDateFields-更新字段 (多个使用,分割, 如:FDept_FNumber,FPosition_FNumber )
* FNumber-员工编号
* FDept_FNumber-部门编号
* FPosition_FNumber-岗位编号
*/
public static void updateJobInfo(Map<String, String> params){
// request(params, KingdeeParamsEnum.JobInfo.UPDATE);
}
private static void request(Map<String, String> params, BaseEnum paramEnum){
log.error("{}====> 接口调用, 参数为:{} ", paramEnum.getDes(), JSON.toJSONString(params));
List<String> keyList = params.entrySet().stream().map(Map.Entry<String, String>::getKey).collect(Collectors.toList());
Map<String,String> requiredParams = paramEnum.getRequiredParams();
for (String key : requiredParams.keySet()){
if(!keyList.contains(key)){
throw new KingdeeException(requiredParams.get(key));
}
}
String requestParam = paramEnum.getParamJson();
for (String key : params.keySet()){
requestParam = requestParam.replaceAll(key+ KingdeeParamsEnum.REQUEST_PARAM_SUFFIX, params.get(key));
}
//更新时间
requestParam = requestParam.replaceAll("date"+KingdeeParamsEnum.REQUEST_PARAM_SUFFIX, DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date()));
String resultJson = "";
try {
K3CloudApi client = new K3CloudApi();
resultJson = client.save(paramEnum.getFromId(), requestParam);
log.info("{}====>接口返回结果: {}", paramEnum.getDes(), resultJson);
} catch (Exception e) {
resultJson = e.getMessage();
log.error("{}====>请求错误: {}", paramEnum.getDes(), e.getMessage());
}finally {
//记录日志
instLog(paramEnum, params, requestParam, resultJson);
}
}
private static void instLog(BaseEnum paramEnum, Map<String, String> params, String requestInfo, String response){
LogKingDee logKingDee = new LogKingDee();
logKingDee.setRequestTime(new Date());
logKingDee.setType(paramEnum.getDes());
logKingDee.setRequestParams(JSON.toJSONString(params));
logKingDee.setRequestInfo(requestInfo);
logKingDee.setResponse(response);
SpringUtils.getBean(LogKingDeeMapper.class).insert(logKingDee);
}
}