package service import "XT_New/models" func GetDictionaryConfigList(orgID int64) (dataconfig interface{}, err error) { var configList []*models.DictionaryDataconfig err = readDb.Model(&models.DictionaryDataconfig{}).Where("(org_id in (0,?) and status = 1) or (status = 0 and delete_id_system > 0 and org_id = ?)", orgID, orgID).Order("orders asc, id asc").Find(&configList).Error if err != nil { return nil, err } // configResult := make([]*ConfigViewModel,0) childConfig := make(map[int64][]*models.DictionaryDataconfig) resultConfig := make(map[string][]*models.DictionaryConfigViewModel) deleteSystemChilds := make([]*models.DictionaryDataconfig, 0) editSystemChilds := make([]*models.DictionaryDataconfig, 0) for _, config := range configList { if config.Status == 1 && config.DeleteIdSystem > 0 { editSystemChilds = append(editSystemChilds, config) } if config.Status == 0 && config.DeleteIdSystem > 0 { deleteSystemChilds = append(deleteSystemChilds, config) } } continueFlag := false for _, config := range configList { continueFlag = false if config.ParentId == 0 { newConfig := &models.DictionaryConfigViewModel{ ID: config.ID, ParentId: config.ParentId, Module: config.Module, OrgId: config.OrgId, Name: config.Name, FieldName: config.FieldName, Value: config.Value, CreateUserId: config.CreateUserId, Status: config.Status, Remark: config.Remark, Title: config.Title, Content: config.Content, } // configResult = append(configResult,newConfig) result := resultConfig[config.Module] if result == nil { result = make([]*models.DictionaryConfigViewModel, 0) } for _, vm := range editSystemChilds { if vm.DeleteIdSystem == config.ID { continueFlag = true break } } for _, _vm := range deleteSystemChilds { if _vm.DeleteIdSystem == config.ID { continueFlag = true break } } if config.OrgId != 0 && config.Status == 0 && config.DeleteIdSystem > 0 { continue } if continueFlag { continue } result = append(result, newConfig) resultConfig[config.Module] = result } else { childs := childConfig[config.ParentId] if childs == nil { childs = make([]*models.DictionaryDataconfig, 0) } continueFlag := false for _, vm := range editSystemChilds { if vm.DeleteIdSystem == config.ID { continueFlag = true break } } for _, _vm := range deleteSystemChilds { if _vm.DeleteIdSystem == config.ID { continueFlag = true break } } if config.OrgId != 0 && config.Status == 0 && config.DeleteIdSystem > 0 { continue } if continueFlag { continue } childs = append(childs, config) childConfig[config.ParentId] = childs } } for _, vm := range resultConfig { for _, _vm := range vm { _vm.Childs = childConfig[_vm.ID] } // vm.Childs = childConfig[vm.ID] } return resultConfig, err } func CreateDictionaryConfig(dataconfig *models.DictionaryDataconfig) (err error) { // readDb.Model(&models.Dataconfig{}).Where("module = ? and parent_id = 0 and org_id in (0,?)",dataconfig.Module,dataconfig.OrgId).Count(&total) err = readDb.Create(&dataconfig).Error return } func GetDictionaryChildValue(module string, parent_id int64, org_id int64) (value int) { readDb.Model(&models.DictionaryDataconfig{}).Where("module=? and parent_id=? and org_id in (0,?)", module, parent_id, org_id).Count(&value) return } func FindDictionaryConfigByTitle(module string, title string, org_id int64) (dataconfig models.DictionaryDataconfig, err error) { err = readDb.Model(&models.DictionaryDataconfig{}).Where("module=? and title=? and org_id in (0,?) and status = 1", module, title, org_id).First(&dataconfig).Error return } func UpdateDictionaryTemplate(dataconfig *models.DictionaryDataconfig) (err error) { err = readDb.Model(&models.DictionaryDataconfig{}).Where("id =?", dataconfig.ID).Update(map[string]interface{}{"title": dataconfig.Title, "content": dataconfig.Content, "update_time": dataconfig.UpdatedTime, "remark": dataconfig.Remark}).Error return } func UpdateDictionaryChildConfig(dataconfig *models.DictionaryDataconfig) (err error) { err = readDb.Model(&models.DictionaryDataconfig{}).Where("id =?", dataconfig.ID).Update(map[string]interface{}{"name": dataconfig.Name, "update_time": dataconfig.UpdatedTime, "remark": dataconfig.Remark, "orders": dataconfig.Order}).Error return } func DeleteDictionaryChildConfig(dataconfig *models.DictionaryDataconfig) (err error) { err = readDb.Model(&models.DictionaryDataconfig{}).Where("id =?", dataconfig.ID).Update(map[string]interface{}{"status": dataconfig.Status, "update_time": dataconfig.UpdatedTime}).Error return } func CreateBaseDrugLib(lib *models.BaseDrugLib) (err error) { err = writeDb.Create(&lib).Error return } func UpdateBaseDrugLib(lib *models.BaseDrugLib) (err error) { err = writeDb.Save(lib).Error return } func FindBaseDrugLibRecordCount(lib *models.BaseDrugLib) (count int64) { readDb.Model(&models.BaseDrugLib{}).Where("org_id = ? AND drug_name = ? AND drug_category = ? AND drug_spec=? AND drug_type=? AND status = 1", lib.OrgId, lib.DrugName, lib.DrugCategory, lib.DrugSpec, lib.DrugType).Count(&count) return } func FindAllDrugLibRecordTotal(org_id int64) (count int64) { readDb.Model(&models.BaseDrugLib{}).Where("org_id = ? AND status = 1", org_id).Count(&count) return } func FindBaseDrugLibRecord(org_id int64, id int64) (lib models.BaseDrugLib, err error) { err = readDb.Model(&models.BaseDrugLib{}).Where("org_id = ? AND id = ? AND status = 1", org_id, id).First(&lib).Error return } func GetBaseDrugLibList(org_id int64, keyword string, page int64, limit int64, is_use int64, is_charge int64, is_inject int64) (list []*models.BaseDrugLib, total int64, err error) { db := readDb.Model(&models.BaseDrugLib{}).Where("org_id = ? AND status = 1", org_id) if len(keyword) != 0 { keyword = "%" + keyword + "%" db = db.Where("drug_name Like ?", keyword) } if is_use != 0 { if is_use == 1 { db = db.Where("find_in_set('停用',drug_status) = 0") } else { db = db.Where("find_in_set('停用',drug_status) > 0") } } if is_charge != 0 { //db = db.Where("drug_name Like ?", keyword) if is_charge == 1 { db = db.Where("find_in_set('收费',drug_status) > 0") } else { db = db.Where("find_in_set('收费',drug_status) = 0") } } if is_inject != 0 { //db = db.Where("drug_name Like ?", keyword) if is_inject == 1 { db = db.Where("find_in_set('注射类',drug_status) > 0") } else { db = db.Where("find_in_set('注射类',drug_status) = 0") } } offset := (page - 1) * limit err = db.Count(&total).Offset(offset).Limit(limit).Order("ctime desc").Find(&list).Error return } func CreateMedicineInsurancePercentage(mip *models.MedicineInsurancePercentage) (err error) { err = writeDb.Create(mip).Error return } func CreateUnitSafeguard(dus *models.DrugUnitSafeguard) (err error) { err = writeDb.Create(dus).Error return }