Files
service/app/logic/department.go
kanade c5030bf438
Some checks failed
Go / build (push) Failing after 19s
feat(ik3cloud): 新增联系人与工厂模块功能
- 新增联系人保存与删除逻辑处理
- 新增工厂信息保存逻辑,支持银行、财务等详细信息
- 部门与员工模块接口参数调整,统一使用实体对象返回
- 优化部门与员工的增删改查操作,去除冗余代码
- 统一使用 constant 包管理业务类型常量
- 增加性别转换与整型数组转字符串工具函数
- RPC 注册新增工厂与联系人服务路由
- 调整客户端调用参数结构,增强代码可读性与维护性
2025-11-27 11:57:47 +08:00

127 lines
3.4 KiB
Go

package logic
import (
"encoding/json"
"errors"
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/ik3cloud"
"time"
ik3cloud2 "git.kumo.work/shama/service/ik3cloud"
"git.kumo.work/shama/service/ik3cloud/constant"
)
var DepartmentLogic = &departmentLogic{}
type departmentLogic struct {
}
type departmentItem struct {
Id int64 `json:"FDEPTID"`
Number *string `json:"FNumber"`
Name *string `json:"FName"`
ParentNumber *string `json:"FParentID.FNumber"`
ParentName *string `json:"FParentID.FName"`
}
// All @TITLE 全部部门
func (d *departmentLogic) All() (result []ik3cloud2.DepartmentItem, err error) {
raw, err := ik3cloud.Client.BillQuery(map[string]any{
"FormId": constant.ActionDepartment,
"FieldKeys": "FNumber,FName,FParentID.FNumber,FParentID.FName,FDEPTID",
"FilterString": []map[string]any{{
"FieldName": "FUseOrgId.FNumber",
"Compare": "67",
"Value": config.Config.Ik3cloud.OrganizationNumber,
"Left": "",
"Right": "",
"Logic": "",
}},
})
if err != nil {
return
}
var data []departmentItem
if err = json.Unmarshal(raw, &data); err != nil {
return
}
for _, item := range data {
result = append(result, ik3cloud2.DepartmentItem{
Number: item.Number,
Name: item.Name,
ParentNumber: item.ParentNumber,
ParentName: item.ParentName,
Id: item.Id,
})
}
return d.getTree(result), nil
}
// Add @TITLE 添加部门
func (d *departmentLogic) Add(data ik3cloud2.ArgsDepartmentAdd) (entity ik3cloud2.Entity, err error) {
return ik3cloud.Client.Save(constant.ActionDepartment, nil, map[string]any{
"FCreateOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
"FNumber": data.Number,
"FName": data.Name,
"FUseOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
"FEffectDate": time.Now().Format("2006-01-02 15:04:05"),
"FLapseDate": "9999-12-31 00:00:00",
"FGroup": map[string]any{
"FNumber": data.GroupNumber,
},
"FParentID": map[string]any{
"FNumber": data.ParentNumber,
},
"FIsCopyFlush": false,
"FIsDetailDpt": false,
})
}
// Edit @TITLE 编辑部门
func (d *departmentLogic) Edit(departmentId int64, data ik3cloud2.ArgsDepartmentAdd) error {
if departmentId == 0 {
return errors.New("部门错误")
}
if _, err := ik3cloud.Client.Save(constant.ActionDepartment, []string{"FName", "FNumber", "FParentID.FNumber"}, map[string]any{
"FDEPTID": departmentId,
"FNumber": data.Number,
"FName": data.Name,
"FParentID": map[string]any{
"FNumber": data.ParentNumber,
},
}); err != nil {
return errors.New("部门编辑失败")
}
return nil
}
// Delete @TITLE 删除部门
func (d *departmentLogic) Delete(numbers []string, ids []int64) error {
return ik3cloud.Client.Delete(constant.ActionDepartment, numbers, ids)
}
// @Title 获取菜单树
func (d *departmentLogic) getTree(datas []ik3cloud2.DepartmentItem) (result []ik3cloud2.DepartmentItem) {
result = []ik3cloud2.DepartmentItem{}
for i, item := range datas {
if item.ParentNumber != nil {
for index, value := range datas {
if common.PtrCmp(item.ParentNumber, value.Number) {
datas[index].Children = append(datas[index].Children, &datas[i])
break
}
}
}
}
for _, item := range datas {
if item.ParentNumber == nil {
result = append(result, item)
}
}
return
}