|
@@ -3,6 +3,7 @@ package HTtask
|
|
|
import (
|
|
|
"errors"
|
|
|
"eta/eta_bridge/global"
|
|
|
+ "eta/eta_bridge/models/eta"
|
|
|
"eta/eta_bridge/models/ht/oa"
|
|
|
"eta/eta_bridge/models/ht/wx_crm"
|
|
|
"fmt"
|
|
@@ -12,21 +13,18 @@ import (
|
|
|
func StartCronJob() {
|
|
|
// 创建一个新的 cron 实例
|
|
|
c := cron.New(cron.WithSeconds())
|
|
|
- seconds := global.CONFIG.HTFutures.SyncTask.SyncTaskInterval
|
|
|
- if seconds == 0 {
|
|
|
- seconds = 60
|
|
|
- }
|
|
|
- cornStr := fmt.Sprintf("*/%d * * * * *", seconds)
|
|
|
- global.FILE_LOG.Info("cron表达式", cornStr)
|
|
|
+ //constr := "0 17 * * * *"
|
|
|
+ constr := "*/5 * * * * *"
|
|
|
// 添加定时任务
|
|
|
- _, err := c.AddFunc(cornStr, func() {
|
|
|
- syncCrmOAInfo()
|
|
|
+ _, err := c.AddFunc(constr, func() {
|
|
|
+
|
|
|
+ go syncCrmOAInfo()
|
|
|
+ go SyncETA()
|
|
|
})
|
|
|
if err != nil {
|
|
|
fmt.Println("添加定时任务失败:", err)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
// 启动定时任务
|
|
|
c.Start()
|
|
|
|
|
@@ -38,21 +36,104 @@ func StartCronJob() {
|
|
|
}
|
|
|
|
|
|
func SyncETA() {
|
|
|
- //list, err := oa.GetSubCompanyList()
|
|
|
- //if err != nil {
|
|
|
- // return
|
|
|
- //}
|
|
|
- //var SysDepartmentList []eta.SysDepartment
|
|
|
- //for _, item := range list {
|
|
|
- // sysDepartment := eta.SysDepartment{
|
|
|
- // DepartmentName: item.Subcompanyname,
|
|
|
- // OutID: item.Companyid,
|
|
|
- // }
|
|
|
- // SysDepartmentList = append(SysDepartmentList, sysDepartment)
|
|
|
- //}
|
|
|
+ roleId := global.CONFIG.HTFutures.SyncTask.SyncRoleId
|
|
|
+ role, err := eta.GetSysRoleById(roleId)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取角色信息失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //先同步分公司列表
|
|
|
+ subCompanylist, err := oa.GetSubCompanyList()
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取海通OA子公司数据失败:", err.Error())
|
|
|
+ }
|
|
|
+ var sysSubCompanyList []eta.SysDepartment
|
|
|
+ for _, item := range subCompanylist {
|
|
|
+ sysDepartment := eta.SysDepartment{
|
|
|
+ DepartmentId: item.ID,
|
|
|
+ DepartmentName: item.SUBCOMPANYNAME,
|
|
|
+ Sort: item.SHOWORDEROFTREE,
|
|
|
+ }
|
|
|
+ sysSubCompanyList = append(sysSubCompanyList, sysDepartment)
|
|
|
+ }
|
|
|
+ err = eta.BatchInsertOrUpdate(sysSubCompanyList)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("同步海通OA子公司数据失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //同步部门信息
|
|
|
+ DepartmentList, err := oa.GetDepartMentList()
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取海通部门数据失败:", err.Error())
|
|
|
+ }
|
|
|
+ var sysDepartmentList []eta.SysGroup
|
|
|
+ for _, item := range DepartmentList {
|
|
|
+ sysDepartment := eta.SysGroup{
|
|
|
+ GroupId: item.ID,
|
|
|
+ DepartmentId: item.SUBCOMPANYID1,
|
|
|
+ GroupName: item.DEPARTMENTNAME,
|
|
|
+ ParentId: item.SUPDEPID,
|
|
|
+ Sort: item.SHOWORDEROFTREE,
|
|
|
+ }
|
|
|
+ sysDepartmentList = append(sysDepartmentList, sysDepartment)
|
|
|
+ }
|
|
|
+ err = eta.BatchInsertOrUpdateGroup(sysDepartmentList)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("同步海通部门数据数据失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //同步员工信息
|
|
|
+ staffList, err := oa.GetEmployeeList()
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取海通OA员工数据失败:", err.Error())
|
|
|
+ }
|
|
|
+ var Employee []eta.Admin
|
|
|
+ for _, item := range staffList {
|
|
|
+ var department *eta.SysDepartment
|
|
|
+ department, err = eta.GetDepartmentById(item.SUBCOMPANYID1)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取员工子公司信息失败:", err.Error(), "跳过同步员工", item.WORKCODE)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ var group *eta.SysGroup
|
|
|
+ group, err = eta.GetSysGroupByGroupId(item.DEPARTMENTID)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取员工部门组织架信息失败:", err.Error(), "跳过同步员工", item.WORKCODE)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ sysUser := eta.Admin{
|
|
|
+ AdminName: item.LOGINID,
|
|
|
+ RealName: item.LASTNAME,
|
|
|
+ Enabled: 1,
|
|
|
+ Email: item.EMAIL,
|
|
|
+ Role: "63",
|
|
|
+ Mobile: item.MOBILE,
|
|
|
+ RoleType: 0,
|
|
|
+ RoleId: role.RoleId,
|
|
|
+ RoleName: role.RoleName,
|
|
|
+ RoleTypeCode: role.RoleTypeCode,
|
|
|
+ DepartmentId: item.SUBCOMPANYID1,
|
|
|
+ DepartmentName: department.DepartmentName,
|
|
|
+ GroupId: item.DEPARTMENTID,
|
|
|
+ GroupName: group.GroupName,
|
|
|
+ EmployeeId: item.WORKCODE,
|
|
|
+ }
|
|
|
+ Employee = append(Employee, sysUser)
|
|
|
+ }
|
|
|
+ err = eta.BatchInsertOrUpdateAdmin(Employee)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("同步海通OA员工数据失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func syncCrmOAInfo() {
|
|
|
+ roleId := global.CONFIG.HTFutures.SyncTask.SyncRoleId
|
|
|
+ role, err := wx_crm.GetSysRoleById(roleId)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取角色信息失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
//先同步分公司列表
|
|
|
subCompanylist, err := oa.GetSubCompanyList()
|
|
|
if err != nil {
|
|
@@ -97,7 +178,7 @@ func syncCrmOAInfo() {
|
|
|
}
|
|
|
err = wx_crm.BatchInsertOrUpdate(sysDepartmentList)
|
|
|
if err != nil {
|
|
|
- global.FILE_LOG.Error("同步海通OA子公司数据失败:", err.Error())
|
|
|
+ global.FILE_LOG.Error("同步海通部门数据失败:", err.Error())
|
|
|
return
|
|
|
}
|
|
|
//同步员工信息
|
|
@@ -126,8 +207,8 @@ func syncCrmOAInfo() {
|
|
|
Email: item.EMAIL,
|
|
|
Phone: item.MOBILE,
|
|
|
AreaCode: "86",
|
|
|
- SysRoleId: 63,
|
|
|
- SysRoleName: "普通用户",
|
|
|
+ SysRoleId: role.SysRoleId,
|
|
|
+ SysRoleName: role.SysRoleName,
|
|
|
SysDepartmentId: item.DEPARTMENTID,
|
|
|
SysDepartmentId1: departments[3],
|
|
|
SysDepartmentId2: departments[2],
|
|
@@ -162,7 +243,7 @@ func GetEmployeeDepartmentList(departmentId int) (departmentIdList []int, err er
|
|
|
}
|
|
|
if found {
|
|
|
departmentIdList = append(departmentIdList, currentDepartment.OutId)
|
|
|
- subList := DepartmentList(currentDepartment.ParentId, departmentList, currentDepartment.Level-1)
|
|
|
+ subList := TraceDepartmentList(currentDepartment.ParentId, departmentList, currentDepartment.Level-1)
|
|
|
departmentIdList = append(departmentIdList, subList...)
|
|
|
} else {
|
|
|
err = errors.New("当前部门id不存在")
|
|
@@ -170,7 +251,7 @@ func GetEmployeeDepartmentList(departmentId int) (departmentIdList []int, err er
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func DepartmentList(departmentId int, departmentList []wx_crm.SysDepartment, level int) (departmentIdList []int) {
|
|
|
+func TraceDepartmentList(departmentId int, departmentList []wx_crm.SysDepartment, level int) (departmentIdList []int) {
|
|
|
if level == 0 || departmentId == 0 {
|
|
|
return
|
|
|
}
|
|
@@ -183,7 +264,7 @@ func DepartmentList(departmentId int, departmentList []wx_crm.SysDepartment, lev
|
|
|
continue
|
|
|
}
|
|
|
departmentIdList = append(departmentIdList, item.OutId)
|
|
|
- subSubDepartments := DepartmentList(item.ParentId, departmentList, item.Level-1)
|
|
|
+ subSubDepartments := TraceDepartmentList(item.ParentId, departmentList, item.Level-1)
|
|
|
departmentIdList = append(departmentIdList, subSubDepartments...)
|
|
|
|
|
|
}
|