修改冲突
commit
044b1bf0eb
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,493 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/fonchain_enterprise/fonchain-approval/api/approval"
|
||||
m2 "github.com/fonchain_enterprise/fonchain-approval/pkg/m"
|
||||
"github.com/jinzhu/copier"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ApprovalOA struct {
|
||||
ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID
|
||||
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间
|
||||
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间
|
||||
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间
|
||||
ApprovalID uint64 `gorm:"column:approval_id" json:"approvalID"` // 申请的id
|
||||
LeaveApply *LeaveApply `json:"leaveApply" gorm:"column:leave_apply;type:json;comment:假期余额申请"`
|
||||
OutWork *OutWorkApply `json:"outWork" gorm:"column:out_work;type:json;comment:外勤"`
|
||||
MakeUp *MakeUpApply `json:"makeUp" gorm:"column:make_up;type:json;comment:加班"`
|
||||
Turnover *TurnoverApply `json:"turnover" gorm:"column:turnover;type:json;comment:离职"`
|
||||
OverTime *OverTimeApply `json:"overTime" gorm:"column:over_time;type:json;comment:加班"`
|
||||
Leave *Leave `json:"leave" gorm:"column:leave;type:json;comment:请假"`
|
||||
}
|
||||
|
||||
// LeaveApply
|
||||
// 假期额度申请
|
||||
type LeaveApply struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
LeaveBalance float32 `json:"leaveBalance" gorm:"column:leave_balance;type:int;comment:假期余额"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
VerifyFile VerifyFiles `json:"verifyFile" gorm:"column:verify_file;type:json;comment:证明文件(图片|pdf)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (la *LeaveApply) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), la)
|
||||
}
|
||||
|
||||
func (la LeaveApply) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(la)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
// OutWorkApply
|
||||
// 外勤申请
|
||||
type OutWorkApply struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
ApplyTimes ApplyTimes `json:"applyTimes" gorm:"column:apply_times;type:json;comment:时间"`
|
||||
Hours float32 `json:"hours" gorm:"column:hours;type:decimal(10,2);comment:时长(小时)"`
|
||||
OutWorkAddress string `json:"outWorkAddress" gorm:"column:out_work_address;type:varchar(255);comment:外勤地址"`
|
||||
Vehicle string `json:"vehicle" gorm:"column:vehicle;type:varchar(255);comment:交通工具"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (owa *OutWorkApply) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), owa)
|
||||
}
|
||||
|
||||
func (owa OutWorkApply) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(owa)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
// MakeUpApply
|
||||
// 补卡申请
|
||||
type MakeUpApply struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
ApplyTimes ApplyTimes `json:"applyTimes" gorm:"column:apply_times;type:json;comment:时间"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (mua *MakeUpApply) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), mua)
|
||||
}
|
||||
|
||||
func (mua MakeUpApply) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(mua)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
// TurnoverApply
|
||||
// 离职申请
|
||||
type TurnoverApply struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
HandoverUID uint64 `json:"handoverUID" gorm:"column:handover_uid;type:int;comment:交接人"`
|
||||
HandoverName string `json:"handoverName" gorm:"column:handover_name;type:varchar(255);comment:交接人姓名"`
|
||||
ApplyTimes ApplyTimes `json:"applyTimes" gorm:"column:apply_times;type:json;comment:时间"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (ta *TurnoverApply) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), ta)
|
||||
}
|
||||
|
||||
func (ta TurnoverApply) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(ta)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
// OverTimeApply
|
||||
// 加班申请
|
||||
type OverTimeApply struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
ApplyTimes ApplyTimes `json:"applyTimes" gorm:"column:apply_times;type:json;comment:时间"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
Hours float32 `json:"hours" gorm:"column:hours;type:decimal(10,2);comment:时长(小时)"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (ota *OverTimeApply) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), ota)
|
||||
}
|
||||
|
||||
func (ota OverTimeApply) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(ota)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
// Leave
|
||||
// 请假
|
||||
type Leave struct {
|
||||
UUID string `json:"UUID" gorm:"column:uuid,type:varchar(255),primaryKey"`
|
||||
StaffUID uint64 `json:"staffUID" gorm:"column:staff_uid;type:int;comment:员工UID"` // 员工UID
|
||||
StaffNum string `json:"staffNum" gorm:"column:staff_num;type:varchar(255);comment:员工编号"` // 员工编号
|
||||
StaffName string `json:"staffName" gorm:"column:staff_name;type:varchar(255);comment:员工姓名"` // 员工姓名
|
||||
DepartmentUID string `json:"departmentUID" gorm:"column:department_uid;type:text;comment:部门UID"` // 部门UID
|
||||
ApplyType string `json:"applyType" gorm:"column:apply_type;type:varchar(255);comment:审批|请假类型"`
|
||||
ActionTime string `json:"actionTime" gorm:"column:action_time;type:varchar(255);comment:操作|申请时间"`
|
||||
ApprovalID string `json:"approvalID" gorm:"column:approval_id;type:varchar(255);comment:审批系统中的approvalID"`
|
||||
ApplyTimes ApplyTimes `json:"applyTimes" gorm:"column:apply_times;type:json;comment:时间"`
|
||||
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:理由"`
|
||||
Hours float32 `json:"hours" gorm:"column:hours;type:decimal(10,2);comment:时长(小时)"`
|
||||
Days float32 `json:"days" gorm:"column:days;type:decimal(10,2);comment:时长(天)"`
|
||||
Status int32 `json:"status" gorm:"column:status;type:int;comment:状态(目前和审批系统状态同步)"`
|
||||
ApprovalUsers ApprovalUsers `json:"approvalUsers" gorm:"column:approval_users;type:json;comment:审批人"`
|
||||
CopyUsers CopyUsers `json:"copyUsers" gorm:"column:copy_users;type:json;comment:抄送人"`
|
||||
}
|
||||
|
||||
func (l *Leave) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), l)
|
||||
}
|
||||
|
||||
func (l Leave) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(l)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
type VerifyFiles []string
|
||||
|
||||
//type ApplyTime struct {
|
||||
// Date string `json:"date"` // 日期 2023-05-08
|
||||
// Hour string `json:"hour"` // 时间 09:00
|
||||
// M string `json:"m"` // 上午|下午
|
||||
//}
|
||||
|
||||
type ApplyTime struct {
|
||||
Date string // 日期 2023-05-08
|
||||
Hour string // 时间 09:00
|
||||
M string // 上午|下午
|
||||
}
|
||||
|
||||
type ApplyTimes []ApplyTime
|
||||
|
||||
func (at *ApplyTimes) Scan(src interface{}) error {
|
||||
return json.Unmarshal(src.([]byte), at)
|
||||
}
|
||||
|
||||
func (at ApplyTimes) Value() (driver.Value, error) {
|
||||
|
||||
v, err := json.Marshal(at)
|
||||
|
||||
return string(v), err
|
||||
}
|
||||
|
||||
var sonMap = map[string]string{
|
||||
"leave": "leave", // 事假
|
||||
"sick": "leave", // 病假
|
||||
"annualLeave": "leave", // 年假
|
||||
"dayOff": "leave", // 调休
|
||||
"maritalLeave": "leave", // 婚假
|
||||
"matingCheckLeave": "leave", // 孕检假
|
||||
"maternityLeave": "leave", // 产假
|
||||
"paternityLeave": "leave", // 陪产假
|
||||
"parentalLeave": "leave", // 育儿假
|
||||
"nursingLeave": "leave", // 独生子女护理假
|
||||
"funeralLeave": "leave", // 丧假
|
||||
|
||||
"makeUp": "makeUp", // 补卡
|
||||
"overTime": "overTime", // 加班
|
||||
"outWork": "outWork", // 外勤
|
||||
"turnover": "turnover", // 离职
|
||||
|
||||
"annualLeaveApply": "leaveApply", // 年假申请
|
||||
"maritalLeaveApply": "leaveApply", // 婚假申请
|
||||
"matingCheckLeaveApply": "leaveApply", // 孕检假申请
|
||||
"maternityLeaveApply": "leaveApply", // 产假申请
|
||||
"paternityLeaveApply": "leaveApply", // 陪产假申请
|
||||
"parentalLeaveApply": "leaveApply", // 育儿假申请
|
||||
"nursingLeaveApply": "leaveApply", // 独生子女护理假申请
|
||||
}
|
||||
|
||||
var OnceAYear = "onceAYear"
|
||||
var Once = "once"
|
||||
var More = "more"
|
||||
|
||||
var LeaveBalanceUsefulTime = map[string]string{
|
||||
"annualLeaveApply": "onceAYear", // 年假申请
|
||||
"parentalLeaveApply": "onceAYear", // 育儿假申请
|
||||
"nursingLeaveApply": "onceAYear", // 独生子女护理假申请
|
||||
|
||||
"matingCheckLeaveApply": "more", // 孕检假申请
|
||||
"maternityLeaveApply": "more", // 产假申请
|
||||
"paternityLeaveApply": "more", // 陪产假申请
|
||||
"funeralLeaveApply": "more", // 丧假申请
|
||||
|
||||
"maritalLeaveApply": "once", // 婚假申请
|
||||
}
|
||||
|
||||
func GetSonMapValue(k string) string {
|
||||
return sonMap[k]
|
||||
}
|
||||
|
||||
// TableName get sql table name.获取数据库表名
|
||||
func (oa *ApprovalOA) TableName() string {
|
||||
return "approval_oa"
|
||||
}
|
||||
|
||||
func (oa *ApprovalOA) GetApproval(id uint64) (*Approval, error) {
|
||||
|
||||
var entity *Approval
|
||||
if err := DB.
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("ApprovalType").
|
||||
Preload("ApprovalOA").
|
||||
First(&entity, id).Error; err != nil {
|
||||
return entity, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (oa *ApprovalOA) SaveApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
||||
fmt.Println("保存 approval_oa 信息 ")
|
||||
|
||||
fmt.Println("approval info :", a.CopyUsers)
|
||||
fmt.Println("approval info :", a.ApprovalUsers)
|
||||
|
||||
approvalOA, err := copyOAToModel(in, a)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Println("存入 数据库 approval_oa 信息 ")
|
||||
|
||||
return DB.Create(&approvalOA).Error
|
||||
}
|
||||
|
||||
func copyOAToModel(in *approval.CreateRequest, a *Approval) (approvalOA *ApprovalOA, err error) {
|
||||
approvalOA = new(ApprovalOA)
|
||||
copier.CopyWithOption(&approvalOA, in.ApprovalOA, copier.Option{DeepCopy: true})
|
||||
approvalOA.ApprovalID = a.ID
|
||||
|
||||
fmt.Println("============== 打印 审批内容 1.0 ========== 开始 =========")
|
||||
fmt.Printf("approval_oa info is : %+v\n", approvalOA)
|
||||
fmt.Printf("approval_oa info is : %+v\n", approvalOA.Leave)
|
||||
fmt.Printf("a info is : %+v\n", a)
|
||||
fmt.Println("a CopyUsers info is : ", a.CopyUsers)
|
||||
fmt.Println("a ApprovalUsers info is : ", a.ApprovalUsers)
|
||||
fmt.Println("============== 打印 审批内容 ========== 结束 =========")
|
||||
|
||||
if err := addOtherInfoToModel(a, approvalOA); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return approvalOA, nil
|
||||
}
|
||||
|
||||
func addOtherInfoToModel(a *Approval, approvalOA *ApprovalOA) error {
|
||||
|
||||
v := GetSonMapValue(a.Type)
|
||||
switch v {
|
||||
case "leave":
|
||||
copier.CopyWithOption(&approvalOA.Leave.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.Leave.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.Leave.ApplyType = a.Type
|
||||
approvalOA.Leave.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.Leave.Status = int32(a.Status)
|
||||
approvalOA.Leave.StaffUID = a.SubmitterID
|
||||
approvalOA.Leave.StaffName = a.SubmitterName
|
||||
approvalOA.Leave.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
case "makeUp":
|
||||
copier.CopyWithOption(&approvalOA.MakeUp.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.MakeUp.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.MakeUp.ApplyType = a.Type
|
||||
approvalOA.MakeUp.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.MakeUp.Status = int32(a.Status)
|
||||
approvalOA.MakeUp.StaffUID = a.SubmitterID
|
||||
approvalOA.MakeUp.StaffName = a.SubmitterName
|
||||
approvalOA.MakeUp.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
case "overTime":
|
||||
copier.CopyWithOption(&approvalOA.OverTime.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.OverTime.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.OverTime.ApplyType = a.Type
|
||||
approvalOA.OverTime.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.OverTime.Status = int32(a.Status)
|
||||
approvalOA.OverTime.StaffUID = a.SubmitterID
|
||||
approvalOA.OverTime.StaffName = a.SubmitterName
|
||||
approvalOA.OverTime.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
case "outWork":
|
||||
copier.CopyWithOption(&approvalOA.OutWork.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.OutWork.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.OutWork.ApplyType = a.Type
|
||||
approvalOA.OutWork.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.OutWork.Status = int32(a.Status)
|
||||
approvalOA.OutWork.StaffUID = a.SubmitterID
|
||||
approvalOA.OutWork.StaffName = a.SubmitterName
|
||||
approvalOA.OutWork.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
case "turnover":
|
||||
copier.CopyWithOption(&approvalOA.Turnover.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.Turnover.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.Turnover.ApplyType = a.Type
|
||||
approvalOA.Turnover.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.Turnover.Status = int32(a.Status)
|
||||
approvalOA.Turnover.StaffUID = a.SubmitterID
|
||||
approvalOA.Turnover.StaffName = a.SubmitterName
|
||||
approvalOA.Turnover.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
case "leaveApply":
|
||||
copier.CopyWithOption(&approvalOA.LeaveApply.ApprovalUsers, a.ApprovalUsers, copier.Option{DeepCopy: true})
|
||||
copier.CopyWithOption(&approvalOA.LeaveApply.CopyUsers, a.CopyUsers, copier.Option{DeepCopy: true})
|
||||
|
||||
approvalOA.LeaveApply.ApplyType = a.Type
|
||||
approvalOA.LeaveApply.ApprovalID = strconv.FormatUint(a.ID, 10)
|
||||
approvalOA.LeaveApply.Status = int32(a.Status)
|
||||
approvalOA.LeaveApply.StaffUID = a.SubmitterID
|
||||
approvalOA.LeaveApply.StaffName = a.SubmitterName
|
||||
approvalOA.LeaveApply.ActionTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
||||
default:
|
||||
return errors.New("未找到相关审批类型")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (oa *ApprovalOA) UpdateApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
||||
|
||||
var entity *ApprovalOA
|
||||
|
||||
if err := DB.Where(&ApprovalOA{ApprovalID: a.ID}).First(&entity).Error; err != nil {
|
||||
return errors.New(m2.ErrorNotFound)
|
||||
}
|
||||
|
||||
oa.ID = entity.ID
|
||||
copier.CopyWithOption(&oa, in.ApprovalOA, copier.Option{DeepCopy: true})
|
||||
|
||||
err := addOtherInfoToModel(a, oa)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Println("============== 更新 审批内容 1.0 ========== 开始 =========")
|
||||
fmt.Printf("in.approvalOA info is : %+v\n", in.ApprovalOA)
|
||||
fmt.Printf("a info is : %+v\n", a)
|
||||
fmt.Printf("oa info is : %+v\n", oa)
|
||||
fmt.Println("oa CopyUsers info is : ", a.CopyUsers)
|
||||
fmt.Println("oa ApprovalUsers info is : ", a.ApprovalUsers)
|
||||
fmt.Println("============== 更新 审批内容 ========== 结束 =========")
|
||||
|
||||
return DB.Model(&oa).Updates(oa).Error
|
||||
}
|
||||
|
||||
func (oa *ApprovalOA) BuildResContent(a *Approval, request *approval.CreateRequest) {
|
||||
if err := oa.copyOAToRpc(a, request); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func (oa *ApprovalOA) copyOAToRpc(a *Approval, request *approval.CreateRequest) error {
|
||||
approvalOA := new(approval.ApprovalOA)
|
||||
copier.CopyWithOption(&approvalOA, a.ApprovalOA, copier.Option{DeepCopy: true})
|
||||
request.ApprovalOA = approvalOA
|
||||
fmt.Println("============== 查询 审批内容 1.0 ========== 开始 =========")
|
||||
fmt.Printf("approval_oa info is : %+v\n", a)
|
||||
fmt.Printf("approvalOA info is : %+v\n", approvalOA)
|
||||
fmt.Printf("request.ApprovalOA info is : %+v\n", request.ApprovalOA)
|
||||
fmt.Println("============== 查询 审批内容 ========== 结束 =========")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
/*func (oa *ApprovalOA) addOtherInfoToRpc(a *Approval, in *approval.CreateRequest) error {
|
||||
if oa.Leave != nil {
|
||||
copier.CopyWithOption(&a.ApprovalOA.Leave.ApplyTimes, in.ApprovalOA.Leave.ApplyTimes, copier.Option{DeepCopy: true})
|
||||
}
|
||||
|
||||
if oa.MakeUp != nil {
|
||||
copier.CopyWithOption(&a.ApprovalOA.MakeUp.ApplyTimes, in.ApprovalOA.MakeUp.ApplyTimes, copier.Option{DeepCopy: true})
|
||||
}
|
||||
|
||||
if oa.Turnover != nil {
|
||||
copier.CopyWithOption(&a.ApprovalOA.Turnover.ApplyTimes, in.ApprovalOA.Turnover.ApplyTimes, copier.Option{DeepCopy: true})
|
||||
}
|
||||
|
||||
if oa.OverTime != nil {
|
||||
copier.CopyWithOption(&a.ApprovalOA.OverTime.ApplyTimes, in.ApprovalOA.OverTime.ApplyTimes, copier.Option{DeepCopy: true})
|
||||
}
|
||||
|
||||
if oa.OutWork != nil {
|
||||
copier.CopyWithOption(&a.ApprovalOA.OutWork.ApplyTimes, in.ApprovalOA.OutWork.ApplyTimes, copier.Option{DeepCopy: true})
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
*/
|
||||
func (oa *ApprovalOA) DeleteApproval(p *Approval) error {
|
||||
return DB.Where(&ApprovalOA{ApprovalID: p.ID}).Delete(&ApprovalOA{}).Error
|
||||
}
|
@ -0,0 +1,555 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/fonchain_enterprise/fonchain-approval/api/approval"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestApprovalOA_BuildResContent(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
a *Approval
|
||||
request *approval.CreateRequest
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
oa.BuildResContent(tt.args.a, tt.args.request)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_DeleteApproval(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
p *Approval
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.DeleteApproval(tt.args.p); (err != nil) != tt.wantErr {
|
||||
t.Errorf("DeleteApproval() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_GetApproval(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
id uint64
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
want *Approval
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
got, err := oa.GetApproval(tt.args.id)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("GetApproval() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("GetApproval() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_SaveApprovalContent(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
in *approval.CreateRequest
|
||||
a *Approval
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
args: args{
|
||||
in: &approval.CreateRequest{
|
||||
ID: 0,
|
||||
Domain: "",
|
||||
Status: 0,
|
||||
Type: "",
|
||||
SubmitterID: 40,
|
||||
SubmitterName: "超级管理员",
|
||||
CopyUsers: nil,
|
||||
Content: "",
|
||||
Reply: "",
|
||||
CanView: false,
|
||||
ApprovalUsers: nil,
|
||||
CanApproval: false,
|
||||
WorkFlows: nil,
|
||||
AllStatus: 0,
|
||||
NowUserId: 0,
|
||||
NowUserName: "",
|
||||
Level: 0,
|
||||
NowLevel: 0,
|
||||
CreatedAt: "",
|
||||
CustomizeInfo: nil,
|
||||
IsCustom: 0,
|
||||
TypeName: "",
|
||||
GroupName: "",
|
||||
BundlePayPrice: nil,
|
||||
ApprovalOA: nil,
|
||||
FinancialForm: nil,
|
||||
},
|
||||
a: &Approval{
|
||||
SubmitterID: 40,
|
||||
Status: 0,
|
||||
SubmitterName: "",
|
||||
CopyUsers: nil,
|
||||
ApprovalUsers: nil,
|
||||
Type: "",
|
||||
Level: 0,
|
||||
NowLevel: 0,
|
||||
NowUserId: 0,
|
||||
NowUserName: "",
|
||||
Content: "",
|
||||
ValueJson: nil,
|
||||
Reply: "",
|
||||
Domain: nil,
|
||||
Show: nil,
|
||||
ApprovalType: nil,
|
||||
Work: nil,
|
||||
Bundle: nil,
|
||||
Exhibition: nil,
|
||||
BundlePayPrice: nil,
|
||||
ExhibitionReward: nil,
|
||||
ApprovalWorkFlows: nil,
|
||||
ApprovalOA: nil,
|
||||
FinancialForm: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.SaveApprovalContent(tt.args.in, tt.args.a); (err != nil) != tt.wantErr {
|
||||
t.Errorf("SaveApprovalContent() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_TableName(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
want string
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if got := oa.TableName(); got != tt.want {
|
||||
t.Errorf("TableName() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_UpdateApprovalContent(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
in *approval.CreateRequest
|
||||
a *Approval
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.UpdateApprovalContent(tt.args.in, tt.args.a); (err != nil) != tt.wantErr {
|
||||
t.Errorf("UpdateApprovalContent() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_addOtherInfoToModel(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
in *approval.CreateRequest
|
||||
a *Approval
|
||||
approvalOA *ApprovalOA
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.addOtherInfoToModel(tt.args.in, tt.args.a, tt.args.approvalOA); (err != nil) != tt.wantErr {
|
||||
t.Errorf("addOtherInfoToModel() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_addOtherInfoToRpc(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
a *Approval
|
||||
in *approval.CreateRequest
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.addOtherInfoToRpc(tt.args.a, tt.args.in); (err != nil) != tt.wantErr {
|
||||
t.Errorf("addOtherInfoToRpc() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_copyOAToModel(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
in *approval.CreateRequest
|
||||
a *Approval
|
||||
}
|
||||
|
||||
arg := args{}
|
||||
leave := Leave{}
|
||||
leave.ActionTime := make([])
|
||||
arg.in.ApprovalOA.Leave =
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantApprovalOA *ApprovalOA
|
||||
wantErr bool
|
||||
}{
|
||||
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
gotApprovalOA, err := oa.copyOAToModel(tt.args.in, tt.args.a)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("copyOAToModel() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(gotApprovalOA, tt.wantApprovalOA) {
|
||||
t.Errorf("copyOAToModel() gotApprovalOA = %v, want %v", gotApprovalOA, tt.wantApprovalOA)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApprovalOA_copyOAToRpc(t *testing.T) {
|
||||
type fields struct {
|
||||
ID uint64
|
||||
DeletedAt soft_delete.DeletedAt
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ApprovalID uint64
|
||||
LeaveApply *LeaveApply
|
||||
OutWork *OutWorkApply
|
||||
MakeUp *MakeUpApply
|
||||
Turnover *TurnoverApply
|
||||
OverTime *OverTimeApply
|
||||
Leave *Leave
|
||||
}
|
||||
type args struct {
|
||||
a *Approval
|
||||
in *approval.CreateRequest
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
fields fields
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
oa := &ApprovalOA{
|
||||
ID: tt.fields.ID,
|
||||
DeletedAt: tt.fields.DeletedAt,
|
||||
CreatedAt: tt.fields.CreatedAt,
|
||||
UpdatedAt: tt.fields.UpdatedAt,
|
||||
ApprovalID: tt.fields.ApprovalID,
|
||||
LeaveApply: tt.fields.LeaveApply,
|
||||
OutWork: tt.fields.OutWork,
|
||||
MakeUp: tt.fields.MakeUp,
|
||||
Turnover: tt.fields.Turnover,
|
||||
OverTime: tt.fields.OverTime,
|
||||
Leave: tt.fields.Leave,
|
||||
}
|
||||
if err := oa.copyOAToRpc(tt.args.a, tt.args.in); (err != nil) != tt.wantErr {
|
||||
t.Errorf("copyOAToRpc() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/fonchain_enterprise/fonchain-approval/api/approval"
|
||||
"github.com/fonchain_enterprise/fonchain-approval/pkg/e"
|
||||
"github.com/fonchain_enterprise/fonchain-approval/pkg/model"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func (a *ApprovalProvider) UpdateApprovalOAUUID(_ context.Context, in *approval.UpdateApprovalOAUUIDReq) (*approval.UpdateApprovalOAUUIDResponse, error) {
|
||||
|
||||
response := &approval.UpdateApprovalOAUUIDResponse{}
|
||||
approvalOA := new(model.ApprovalOA)
|
||||
result := model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Find(&approvalOA)
|
||||
if result.Error != nil {
|
||||
if result.Error != gorm.ErrRecordNotFound {
|
||||
return response, errors.New(e.GetMsg(e.ApprovalIsNotExist))
|
||||
}
|
||||
return response, result.Error
|
||||
}
|
||||
|
||||
if model.GetOaType(in.ApplyType) == "leave" {
|
||||
approvalOA.Leave.UUID = in.UUID
|
||||
fmt.Println("oa apply UUID is :", in.UUID)
|
||||
fmt.Println("approvalOA UUID is :", approvalOA.Leave.UUID)
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("leave", approvalOA.Leave)
|
||||
} else if model.GetOaType(in.ApplyType) == "outWork" {
|
||||
approvalOA.OutWork.UUID = in.UUID
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("out_work", approvalOA.OutWork)
|
||||
} else if model.GetOaType(in.ApplyType) == "makeUp" {
|
||||
approvalOA.MakeUp.UUID = in.UUID
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("make_up", approvalOA.MakeUp)
|
||||
} else if model.GetOaType(in.ApplyType) == "turnover" {
|
||||
approvalOA.Turnover.UUID = in.UUID
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("turnover", approvalOA.Turnover)
|
||||
} else if model.GetOaType(in.ApplyType) == "overTime" {
|
||||
approvalOA.OverTime.UUID = in.UUID
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("over_time", approvalOA.OverTime)
|
||||
} else if model.GetOaType(in.ApplyType) == "leaveApply" {
|
||||
approvalOA.LeaveApply.UUID = in.UUID
|
||||
model.DB.Model(&model.ApprovalOA{}).Where(&model.ApprovalOA{ApprovalID: in.ApprovalID}).Update("leave_apply", approvalOA.LeaveApply)
|
||||
}
|
||||
return response, nil
|
||||
}
|
Loading…
Reference in New Issue