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 params){ // request(params, KingdeeParamsEnum.Employee.SAVE); } /*** * 员工禁用接口 * @param params * 参数说明对照关系: key-value * Numbers-员工编码 (多个使用,分割, 即: 001,002,003) */ public static void employeeDisabled(Map 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 params){ // request(params, KingdeeParamsEnum.JobInfo.UPDATE); } private static void request(Map params, BaseEnum paramEnum){ log.error("{}====> 接口调用, 参数为:{} ", paramEnum.getDes(), JSON.toJSONString(params)); List keyList = params.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList()); Map 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 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); } }