diff --git a/evo-admin/pom.xml b/evo-admin/pom.xml
index ae0e554..e967172 100644
--- a/evo-admin/pom.xml
+++ b/evo-admin/pom.xml
@@ -223,6 +223,12 @@
system
${project.basedir}/src/main/resources/lib/k3cloud-webapi-sdk-java11-v8.2.0.jar
+
+
+ com.google.code.gson
+ gson
+ 2.8.9
+
diff --git a/evo-admin/src/main/java/com/evo/kingdeeUtils/KingdeeRequestUtils.java b/evo-admin/src/main/java/com/evo/kingdeeUtils/KingdeeRequestUtils.java
index b5201bb..da6483d 100644
--- a/evo-admin/src/main/java/com/evo/kingdeeUtils/KingdeeRequestUtils.java
+++ b/evo-admin/src/main/java/com/evo/kingdeeUtils/KingdeeRequestUtils.java
@@ -1,6 +1,7 @@
package com.evo.kingdeeUtils;
import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
import com.evo.common.utils.DateUtils;
import com.evo.common.utils.spring.SpringUtils;
import com.evo.kingdeeUtils.exception.KingdeeException;
@@ -10,6 +11,7 @@ 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 org.apache.commons.lang3.StringUtils;
import java.util.Date;
import java.util.List;
@@ -39,17 +41,26 @@ public class KingdeeRequestUtils {
* FPostDept_FNumber_岗位所属部门编号
*/
public static void employeeSave(Map params){
-// request(params, KingdeeParamsEnum.Employee.SAVE);
+ request(params, KingdeeParamsEnum.Employee.SAVE);
}
/***
* 员工禁用接口
* @param params
* 参数说明对照关系: key-value
- * Numbers-员工编码 (多个使用,分割, 即: 001,002,003)
+ * userCode-员工编码 (多个使用,分割, 即: 001,002,003)
*/
public static void employeeDisabled(Map params){
-// request(params, KingdeeParamsEnum.Employee.DISABLED);
+ excuteOperation(params, KingdeeParamsEnum.Employee.DISABLED);
+ }
+ /***
+ * 员工反禁用接口
+ * @param params
+ * 参数说明对照关系: key-value
+ * userCode-员工编码 (多个使用,分割, 即: 001,002,003)
+ */
+ public static void employeeReverseDisabled(Map params){
+ excuteOperation(params, KingdeeParamsEnum.Employee.REVERSE_DISABLED);
}
/***
@@ -58,15 +69,87 @@ public class KingdeeRequestUtils {
* 参数说明对照关系: key-value
* NeedUpDateFields-更新字段 (多个使用,分割, 如:FDept_FNumber,FPosition_FNumber )
* FNumber-员工编号
- * FDept_FNumber-部门编号
- * FPosition_FNumber-岗位编号
+ * deptCode-部门编号
+ * jobCode-岗位编号
+ *
+ *
+
*/
public static void updateJobInfo(Map params){
-// request(params, KingdeeParamsEnum.JobInfo.UPDATE);
+ if(StringUtils.isNotEmpty(params.get("oldJobCode"))){
+ String result = executeBillQuery(params, KingdeeParamsEnum.JobInfo.DOCUMENT_INQUIRY);
+ JSONArray resJS = JSON.parseArray(result);
+ if(resJS.size() > 0){
+ params.put("FSTAFFID", resJS.getJSONArray(0).getString(0));
+ }
+ }
+ request(params, KingdeeParamsEnum.JobInfo.UPDATE);
}
+
+
private static void request(Map params, BaseEnum paramEnum){
log.error("{}====> 接口调用, 参数为:{} ", paramEnum.getDes(), JSON.toJSONString(params));
+ String requestParam = buildParams(params, paramEnum);
+ 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());
+ e.printStackTrace();
+ }finally {
+ //记录日志
+ instLog(paramEnum, params, requestParam, resultJson);
+ }
+
+ }
+
+
+ public static String executeBillQuery(Map params, BaseEnum paramEnum){
+ K3CloudApi client = new K3CloudApi();
+ //请求参数,要求为json字符串
+ String jsonData = buildParams(params, paramEnum);;
+ String resultJson = "";
+ try {
+ //调用接口
+ resultJson = String.valueOf(client.executeBillQuery(jsonData));
+ } catch (Exception e) {
+ resultJson = e.getMessage();
+ log.error("{}====>请求错误: {}", paramEnum.getDes(), e.getMessage());
+ }finally {
+ //记录日志
+ instLog(paramEnum, params, jsonData, resultJson);
+ }
+
+ return resultJson;
+ }
+
+ public static void excuteOperation(Map params, BaseEnum paramEnum){
+ K3CloudApi client = new K3CloudApi();
+ //请求参数,要求为json字符串
+ String jsonData = buildParams(params, paramEnum);;
+ String resultJson = "";
+ try {
+ //调用接口
+ resultJson = client.excuteOperation(paramEnum.getFromId(),paramEnum.getOperateNumber(),jsonData);
+ } catch (Exception e) {
+ resultJson = e.getMessage();
+ log.error("{}====>请求错误: {}", paramEnum.getDes(), e.getMessage());
+ }finally {
+ //记录日志
+ instLog(paramEnum, params, jsonData, resultJson);
+ }
+
+ }
+
+
+
+
+ private static String buildParams(Map params, BaseEnum paramEnum){
List keyList = params.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
Map requiredParams = paramEnum.getRequiredParams();
for (String key : requiredParams.keySet()){
@@ -80,19 +163,8 @@ public class KingdeeRequestUtils {
}
//更新时间
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);
- }
+ return requestParam;
}
diff --git a/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/BaseEnum.java b/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/BaseEnum.java
index ff2dd55..57968fd 100644
--- a/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/BaseEnum.java
+++ b/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/BaseEnum.java
@@ -21,4 +21,6 @@ public interface BaseEnum {
abstract String getFromId();
abstract String getDes();
+
+ abstract String getOperateNumber();
}
diff --git a/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/KingdeeParamsEnum.java b/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/KingdeeParamsEnum.java
index 1335b0d..0476a2a 100644
--- a/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/KingdeeParamsEnum.java
+++ b/evo-admin/src/main/java/com/evo/kingdeeUtils/kenum/KingdeeParamsEnum.java
@@ -30,7 +30,8 @@ public enum KingdeeParamsEnum {
public static final String REQUEST_PARAM_SUFFIX="_param";
public enum JobInfo implements BaseEnum{
- UPDATE("岗位信息修改", "BD_NEWSTAFF", Collections.asMap("FNumber","员工编号不能为空","FDept_FNumber","部门编号不能为空","FPosition_FNumber","岗位编号不能为空"),"{\"NeedUpDateFields\":[NeedUpDateFields"+REQUEST_PARAM_SUFFIX+"],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"true\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"true\",\"ValidateFlag\":\"true\",\"NumberSearch\":\"true\",\"IsAutoAdjustField\":\"true\",\"InterationFlags\":\"\",\"IgnoreInterationFlag\":\"\",\"IsControlPrecision\":\"false\",\"ValidateRepeatJson\":\"false\",\"Model\":{\"FSTAFFID\":0,\"FNumber\":\"FNumber"+REQUEST_PARAM_SUFFIX+"\",\"FPerson\":{\"FNumber\":\"FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FDept\":{\"FNumber\":\"FDept_FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FPosition\":{\"FNumber\":\"FPosition_FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FStartDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FEmpInfoId\":{\"FNumber\":\"FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FPOSTBILLEntity\":{\"FIsFirstPost\":false},\"FOtherEntity\":{},\"FSHRMapEntity\":{}}}"),
+ UPDATE("岗位信息修改", "BD_NEWSTAFF", Collections.asMap("userCode","员工编号不能为空","deptCode","部门编号不能为空","jobCode","岗位编号不能为空", "FSTAFFID","修改的业务单据DI不能为空"),"{\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"true\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"true\",\"ValidateFlag\":\"true\",\"NumberSearch\":\"true\",\"IsAutoAdjustField\":\"true\",\"InterationFlags\":\"\",\"IgnoreInterationFlag\":\"\",\"IsControlPrecision\":\"false\",\"ValidateRepeatJson\":\"false\",\"Model\":{\"FSTAFFID\":FSTAFFID"+REQUEST_PARAM_SUFFIX+",\"FNumber\":\"userCode"+REQUEST_PARAM_SUFFIX+"\",\"FPerson\":{\"FNumber\":\"userCode"+REQUEST_PARAM_SUFFIX+"\"},\"FDept\":{\"FNumber\":\"deptCode"+REQUEST_PARAM_SUFFIX+"\"},\"FPosition\":{\"FNumber\":\"jobCode"+REQUEST_PARAM_SUFFIX+"\"},\"FStartDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FEmpInfoId\":{\"FNumber\":\"userCode"+REQUEST_PARAM_SUFFIX+"\"},\"FPOSTBILLEntity\":{\"FIsFirstPost\":false},\"FOtherEntity\":{},\"FSHRMapEntity\":{}}}"),
+ DOCUMENT_INQUIRY("单据查询", "BD_NEWSTAFF", Collections.asMap("userCode","员工编号不能为空","oldJobCode","岗位编号不能为空"),"{\"FormId\":\"BD_NEWSTAFF\",\"FieldKeys\":\"FSTAFFID\",\"FilterString\":[{\"Left\":\"\",\"FieldName\":\"FNumber\",\"Compare\":\"17\",\"Value\":\"userCode"+REQUEST_PARAM_SUFFIX+"\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStaffNumber\",\"Compare\":\"17\",\"Value\":\"oldJobCode"+REQUEST_PARAM_SUFFIX+"\",\"Right\":\"\",\"Logic\":0}],\"OrderString\":\"\",\"TopRowCount\":0,\"StartRow\":0,\"Limit\":2000,\"SubSystemId\":\"\"}"),
;
String des;
String fromId;
@@ -58,21 +59,30 @@ public enum KingdeeParamsEnum {
public String getDes() {
return this.des;
}
+ @Override
+ public String getOperateNumber() {return "";}
}
/***
* 金蝶请求参数, 员工
*/
public enum Employee implements BaseEnum {
- SAVE("员工保存", "BD_Empinfo", Collections.asMap("FName","员工姓名不能为空","FStaffNumber","员工编号不能为空","FNumber","岗位编号不能为空"),"{\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"true\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"true\",\"ValidateFlag\":\"true\",\"NumberSearch\":\"true\",\"IsAutoAdjustField\":\"true\",\"InterationFlags\":\"\",\"IgnoreInterationFlag\":\"\",\"IsControlPrecision\":\"false\",\"ValidateRepeatJson\":\"false\",\"Model\":{\"FID\":0,\"FName\":\"FName"+REQUEST_PARAM_SUFFIX+"\",\"FStaffNumber\":\"FStaffNumber"+REQUEST_PARAM_SUFFIX+"\",\"FCreateSaler\":false,\"FCreateUser\":false,\"FCreateCashier\":false,\"FJoinDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FSHRMapEntity\":{},\"FPostEntity\":[{\"FPostDept\":{\"FNumber\":\"FPostDept_FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FPost\":{\"FNumber\":\"FNumber"+REQUEST_PARAM_SUFFIX+"\"},\"FStaffStartDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FIsFirstPost\":true,\"FStaffDetails\":0}]}}"),
- DISABLED("员工禁用","BD_Empinfo", Collections.asMap("Numbers","员工编码不能为空"),"{\"Numbers\":[Numbers"+REQUEST_PARAM_SUFFIX+"],\"Ids\":\"\",\"PkEntryIds\":[],\"UseOrgId\":0,\"NetworkCtrl\":\"\",\"IgnoreInterationFlag\":\"\"}")
+ SAVE("员工保存", "BD_Empinfo", "",Collections.asMap("userName","员工姓名不能为空","userCode","员工编号不能为空","jobCode","岗位编号不能为空"),"{\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"true\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"true\",\"ValidateFlag\":\"true\",\"NumberSearch\":\"true\",\"IsAutoSubmitAndAudit\":\"true\",\"IsAutoAdjustField\":\"true\",\"InterationFlags\":\"\",\"IgnoreInterationFlag\":\"\",\"IsControlPrecision\":\"false\",\"ValidateRepeatJson\":\"false\",\"Model\":{\"FID\":0,\"FName\":\"userName"+REQUEST_PARAM_SUFFIX+"\",\"FStaffNumber\":\"userCode"+REQUEST_PARAM_SUFFIX+"\",\"FCreateSaler\":false,\"FCreateUser\":false,\"FCreateCashier\":false,\"FJoinDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FSHRMapEntity\":{},\"FPostEntity\":[{\"FPostDept\":{\"FNumber\":\"deptCode"+REQUEST_PARAM_SUFFIX+"\"},\"FPost\":{\"FNumber\":\"jobCode"+REQUEST_PARAM_SUFFIX+"\"},\"FStaffStartDate\":\"date"+REQUEST_PARAM_SUFFIX+"\",\"FIsFirstPost\":true,\"FStaffDetails\":0}]}}"),
+ DISABLED("员工禁用","BD_Empinfo", "Forbid", Collections.asMap("userCode","员工编码不能为空"),"{\"Numbers\":[userCode"+REQUEST_PARAM_SUFFIX+"],\"Ids\":\"\",\"PkEntryIds\":[],\"UseOrgId\":0,\"NetworkCtrl\":\"\",\"IgnoreInterationFlag\":\"\"}"),
+ REVERSE_DISABLED("员工反禁用","BD_Empinfo", "Enable", Collections.asMap("userCode","员工编码不能为空"),"{\"Numbers\":[userCode"+REQUEST_PARAM_SUFFIX+"],\"Ids\":\"\",\"PkEntryIds\":[],\"UseOrgId\":0,\"NetworkCtrl\":\"\",\"IgnoreInterationFlag\":\"\"}"),
;
String des;
String fromId;
+
+ String operateNumber;
+
Map requiredParams;
String paramJson;
- Employee(String des, String fromId, Map requiredParams, String paramJson) {
+
+
+ Employee(String des, String fromId, String operateNumber, Map requiredParams, String paramJson) {
this.des = des;
this.fromId = fromId;
+ this.operateNumber = operateNumber;
this.requiredParams = requiredParams;
this.paramJson = paramJson;
}
@@ -92,6 +102,8 @@ public enum KingdeeParamsEnum {
public String getDes() {
return this.des;
}
+ @Override
+ public String getOperateNumber() {return this.operateNumber;}
}
}
diff --git a/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java b/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java
index b0c21f2..c1d494a 100644
--- a/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java
+++ b/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java
@@ -161,7 +161,7 @@ public class SysStaffServiceImpl extends ServiceImpl i
initCheckDevice(sysStaff);
//新增员工信息到金蝶
if(StringUtils.isNotEmpty(sysStaff.getJobCode())){
- KingdeeRequestUtils.employeeSave(Collections.asMap("FName", sysStaff.getName(), "FStaffNumber", sysStaff.getCode(), "FNumber", sysStaff.getJobCode().split("_")[0]));
+ KingdeeRequestUtils.employeeSave(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode(), "jobCode", sysStaff.getJobCode().split("_")[0],"deptCode", sysStaff.getJobCode().split("_")[1]));
}
return AjaxResult.success();
}
@@ -190,7 +190,7 @@ public class SysStaffServiceImpl extends ServiceImpl i
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); //公共
dkj_list.add(sysStaff.getTimeClock());
//下发照片
- eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName())));
+ //eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName())));
}
}
@@ -235,8 +235,8 @@ public class SysStaffServiceImpl extends ServiceImpl i
return AjaxResult.error();
}
//如果是离职, 推送金蝶禁用
- if(StringUtils.isNotEmpty(sysStaff.getJobCode())){
- KingdeeRequestUtils.employeeDisabled(Collections.asMap("Numbers",sysStaff.getJobCode().split("_")[0]));
+ if(StringUtils.isNotEmpty(sysStaff.getCode())){
+ KingdeeRequestUtils.employeeDisabled(Collections.asMap("userCode","\""+sysStaff.getCode()+"\""));
}
return AjaxResult.success();
@@ -263,7 +263,11 @@ public class SysStaffServiceImpl extends ServiceImpl i
deptNum = sysStaff.getJobCode().split("_")[1];
positionNum = sysStaff.getJobCode().split("_")[0];
}
- KingdeeRequestUtils.updateJobInfo(Collections.asMap("NeedUpDateFields","FDept,FPosition", "FNumber", sysStaff.getCode(), "FDept_FNumber", deptNum, "FPosition_FNumber", positionNum));
+ String oldPositionNum = "";
+ if(StringUtils.isNotEmpty(old_staff.getJobCode())){
+ oldPositionNum = old_staff.getJobCode().split("_")[0];
+ }
+ KingdeeRequestUtils.updateJobInfo(Collections.asMap( "userCode", sysStaff.getCode(), "deptCode", deptNum, "jobCode", positionNum, "oldJobCode", oldPositionNum));
}
//判断员工更换公司
if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())) {
@@ -741,6 +745,11 @@ public class SysStaffServiceImpl extends ServiceImpl i
try {
update(new UpdateWrapper().set("status", Constants.JOB_STATIS_1).set("quit_date", null).eq("user_id", userId));
SysStaff sysStaff = getBaseMapper().selectById(userId);
+ //恢复金蝶
+ if(StringUtils.isNotEmpty(sysStaff.getCode())){
+ KingdeeRequestUtils.employeeReverseDisabled(Collections.asMap("userCode","\""+sysStaff.getCode()+"\""));
+ }
+
//打卡统计,打卡详情
rzAttendanceStatisticalService.createRzAttendance(sysStaff, Collections.emptyList(), null);
//处理餐饮信息
diff --git a/evo-admin/src/main/resources/kdwebapi.properties b/evo-admin/src/main/resources/kdwebapi.properties
new file mode 100644
index 0000000..cea9c28
--- /dev/null
+++ b/evo-admin/src/main/resources/kdwebapi.properties
@@ -0,0 +1,13 @@
+#??ID-PROD
+X-KDApi-AcctID = 670768a85463de
+#X-KDApi-AcctID = 6723465a38c722
+X-KDApi-UserName = Administrator
+#??IDID
+X-KDApi-AppID = 288012_Rc0C0zCG2lga0/Vs2Y4pzYSL6hQcWOko
+# ??
+X-KDApi-AppSec = 8a76cd746fa24636b2c65ef9f313c640
+X-KDApi-ServerUrl =http://192.168.5.8/K3Cloud/
+X-KDApi-LCID = 2052
+X-KDApi-OrgNum = 100
+X-KDApi-ConnectTimeout = 120
+X-KDApi-RequestTimeout = 120
diff --git a/evo-admin/src/main/resources/mapper/system/SysStaffMapper.xml b/evo-admin/src/main/resources/mapper/system/SysStaffMapper.xml
index 7521f1f..980851d 100644
--- a/evo-admin/src/main/resources/mapper/system/SysStaffMapper.xml
+++ b/evo-admin/src/main/resources/mapper/system/SysStaffMapper.xml
@@ -229,6 +229,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
image_url = #{imageUrl},
time_clock = #{timeClock},
subsidys = #{subsidys},
+ job_Code=#{jobCode},
where user_id = #{userId}