From 76a84d89d63041232c646ca28c59239dd00f7fc5 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期二, 30 四月 2024 09:58:46 +0800 Subject: [PATCH] 薪资计算 --- controllers/salary_plan_controller.go | 70 ++++++++++++++++++++++++++++++---- 1 files changed, 61 insertions(+), 9 deletions(-) diff --git a/controllers/salary_plan_controller.go b/controllers/salary_plan_controller.go index fb8d9aa..02109c9 100644 --- a/controllers/salary_plan_controller.go +++ b/controllers/salary_plan_controller.go @@ -127,23 +127,75 @@ util.ResponseFormat(c, code.RequestParamError, "绫诲瀷涓嶈兘涓虹┖") return } - types := make([]*models.MiniDict, 0) - for _, value := range params.Values { + miniDicts, err := models.NewMiniDictSearch().SetType(params.Type).FindNotTotal() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, err) + return + } + dicts := params.Values + add := make([]*models.MiniDict, 0) + del := make([]uint, 0) + update := make([]*models.MiniDict, 0) + for _, mini := range miniDicts { + flag := true + for i, value := range dicts { + var dict models.MiniDict + dict.Name = value.Name + dict.IsDefault = value.IsDefault + dict.Type = params.Type + if value.Id == 0 { + add = append(add, &dict) + flag = false + if i < len(dicts)-1 { + dicts = append(dicts[:i], dicts[i+1:]...) + } else { + dicts = dicts[:i] + } + break + } else if value.Id == mini.ID { + update = append(update, &dict) + flag = false + if i < len(dicts)-1 { + dicts = append(dicts[:i], dicts[i+1:]...) + } else { + dicts = dicts[:i] + } + break + } + } + if flag { + del = append(del, mini.ID) + } + } + //鏂板鐨� + for _, value := range dicts { var dict models.MiniDict dict.Name = value.Name dict.IsDefault = value.IsDefault dict.Type = params.Type - types = append(types, &dict) + add = append(add, &dict) } + err = models.WithTransaction(func(db *gorm.DB) error { - err = models.NewMiniDictSearch().SetOrm(db).SetType(params.Type).Delete() - if err != nil { - return err + if len(del) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).SetIds(del).Delete() + if err != nil { + return err + } } - err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(types) - if err != nil { - return err + if len(update) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).SaveBatch(update) + if err != nil { + return err + } } + if len(add) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(add) + if err != nil { + return err + } + } + return nil }) if err != nil { -- Gitblit v1.8.0