package service import ( "errors" "fmt" "gas-cylinder-api/app/admin/model" "gas-cylinder-api/app/admin/service/dto" "gas-cylinder-api/common/actions" cDto "gas-cylinder-api/common/dto" "gas-cylinder-api/common/global" "gogs.baozhida.cn/zoie/OAuth-core/service" "gorm.io/gorm" "strconv" "strings" ) type InspectExpand struct { service.Service } // GetPage 获取InspectExpand列表 func (e *InspectExpand) GetPage(c *dto.InspectExpandGetPageReq, list *[]model.InspectExpand, count *int64, p *actions.DataPermission) error { var err error var data model.InspectExpand err = e.Orm.Model(&data). Scopes( cDto.MakeCondition(c.GetNeedSearch()), cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), actions.Permission(data.TableName(), p), ). Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } return nil } // Insert 创建InspectExpand对象 func (e *InspectExpand) Insert(c *dto.InspectExpandInsertReq, p *actions.DataPermission) error { var err error var data model.InspectExpand tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() err = tx.Where("dept_id = ? and inspect_explain = ?", p.DeptId).First(&data).Error if err == nil { c.Id = data.Id return nil } var inspectItem string err = tx.Where("dept_id = ?", p.DeptId).Last(&data).Error if err != nil { e.Log.Errorf("db error: %s", err) if errors.Is(err, gorm.ErrRecordNotFound) { inspectItem = "ITEM_1" } else { return global.CreateFailedErr } } else { item, _ := strconv.Atoi(strings.Split(data.InspectItem, "_")[1]) inspectItem = fmt.Sprintf("ITEM_%d", item+1) } data.Id = 0 data.InspectItem = inspectItem c.Generate(&data) err = tx.Create(&data).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.CreateFailedErr } c.Id = data.Id return nil } // Update 修改InspectExpand对象 func (e *InspectExpand) Update(c *dto.InspectExpandInsertReq) error { var err error tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() var InspectExpandModel = model.InspectExpand{} // 查询入户安全检查项是否存在 err = e.Orm.First(&InspectExpandModel, c.GetId()).Error if err != nil { e.Log.Errorf("db error: %s", err) if errors.Is(err, gorm.ErrRecordNotFound) { return global.UpdateNotFoundOrNoPermissionErr } return global.UpdateFailedErr } c.UpdateGenerate(&InspectExpandModel) err = tx.Save(&InspectExpandModel).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.UpdateFailedErr } c.Id = InspectExpandModel.Id return nil } // Init 初始化 func (e *InspectExpand) Init(userId, deptId int) error { var err error tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() inspectionItems := []model.InspectExpand{ {InspectItem: "ITEM_1", InspectExplain: "检查是否违规在地下室、卫生间或密闭的房间内存放使用瓶装液化气。"}, {InspectItem: "ITEM_2", InspectExplain: "检查液化气瓶、炉具使用或气瓶存放的房间内是否违反规定安床住人。"}, {InspectItem: "ITEM_3", InspectExplain: "检查液化气瓶、炉具使用或存放的房间上方是否搭建阁楼。"}, {InspectItem: "ITEM_4", InspectExplain: "检查液化气瓶、炉具使用或存放的房间内通风是否良好及加装换气装置。"}, {InspectItem: "ITEM_5", InspectExplain: "检查液化气瓶、炉具使用或存放的场所是否配备灭火器。"}, {InspectItem: "ITEM_6", InspectExplain: "检查液化气瓶存放间内是否按照国家规范安装燃气浓度报警仪装置。"}, {InspectItem: "ITEM_7", InspectExplain: "检查液化气瓶、炉具使用或存放处是否堆放易燃物及其它杂物。"}, {InspectItem: "ITEM_8", InspectExplain: "检查液化气瓶、炉具、软管是否放在不易碰撞且易操作检查的地方。"}, {InspectItem: "ITEM_9", InspectExplain: "检查液化气瓶是否摆放在密闭狭小的橱柜内使用。"}, {InspectItem: "ITEM_10", InspectExplain: "检查液化气炉具下方是否密闭及不具备通风条件。"}, {InspectItem: "ITEM_11", InspectExplain: "检查液化气瓶是否完好有效、开关是否正常无泄漏。"}, {InspectItem: "ITEM_12", InspectExplain: "检查燃气炉具工作性能正常,无破损、无泄漏,且开关完好正常。"}, {InspectItem: "ITEM_13", InspectExplain: "检查减压阀是否功能完好无破损,且安装到位无松动、无异常、无泄漏。"}, {InspectItem: "ITEM_14", InspectExplain: "检查连接软管是否完好无老化、龟裂、鼓包、破损、泄漏等现象。"}, {InspectItem: "ITEM_15", InspectExplain: "检查软管与炉具、减压阀连接处是否安装到位且卡子紧固无松动、无泄漏。"}, {InspectItem: "ITEM_16", InspectExplain: "检查连接软管有无加装三通、套管、穿墙或铺设顶棚、埋地等不易检查处。"}, {InspectItem: "ITEM_17", InspectExplain: "检查连接软管是否放置炉具底部靠近明火、高温或电源线路及电器处。"}, {InspectItem: "ITEM_18", InspectExplain: "检查气瓶护罩及气瓶周围是否堆放或悬挂杂物。"}, {InspectItem: "ITEM_19", InspectExplain: "检查气瓶是否与炉具、高温物体保持一定的安全间距。"}, {InspectItem: "ITEM_20", InspectExplain: "检查燃气热水器是否放置在卫生间或其它密闭不通风的房间内使用。"}, {InspectItem: "ITEM_21", InspectExplain: "检查燃气热水器或汤锅桶是否安装排烟管将废气引出室外。"}, {InspectItem: "ITEM_22", InspectExplain: "检查是否明确专人负责具体操作及日常安全巡查管理。"}, } for i := 0; i < len(inspectionItems); i++ { inspectionItems[i].CreateBy = userId inspectionItems[i].DeptId = deptId } err = tx.Create(&inspectionItems).Error if err != nil { e.Log.Errorf("db error: %s", err) return errors.New("初始化安全检查项失败") } return nil } // Init 初始化 func (e *InspectExpand) DeleteByDeptId(deptId int) error { var err error tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() inspectExpand := model.InspectExpand{} err = tx.Where("dept_id = ?", deptId).Delete(&inspectExpand).Error if err != nil { e.Log.Errorf("db error: %s", err) return errors.New("删除安全检查项失败") } return nil } // Remove 删除GasCylinderStatus func (e *InspectExpand) Remove(c *dto.InspectExpandDeleteReq, p *actions.DataPermission) error { var err error tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() var inspectExpandModel model.InspectExpand // 查询钢瓶是否存在 err = e.Orm.Scopes(actions.Permission(inspectExpandModel.TableName(), p)). First(&inspectExpandModel, c.GetId()).Error if err != nil { e.Log.Errorf("db error: %s", err) if errors.Is(err, gorm.ErrRecordNotFound) { return global.DeleteNotFoundOrNoPermissionErr } return global.DeleteFailedErr } db := tx.Delete(&inspectExpandModel) if err = db.Error; err != nil { e.Log.Errorf("db error: %s", err) return global.DeleteFailedErr } if db.RowsAffected == 0 { return global.DeleteNotFoundOrNoPermissionErr } return nil } func (e *InspectExpand) SyncStore(c *dto.InspectExpandSyncStoreReq, p *actions.DataPermission) error { var err error var data model.InspectExpand var list []model.InspectExpand tx := e.Orm.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() err = e.Orm.Model(&data). Scopes( actions.Permission(data.TableName(), p), ). Find(&list).Error if err != nil { e.Log.Errorf("db error: %s", err) return errors.New("获取安全检查项失败") } if len(list) == 0 { return errors.New("暂无安全检查项可同步") } for _, storeId := range c.StoreIds { if storeId == p.DeptId { continue } inspectExpand := model.InspectExpand{} err = tx.Where("dept_id = ?", storeId).Delete(&inspectExpand).Error if err != nil { e.Log.Errorf("db error: %s", err) return errors.New("删除安全检查项失败") } inspectExpandList := []model.InspectExpand{} for _, v := range list { v.Id = 0 v.DeptId = storeId v.CreateBy = p.UserId inspectExpandList = append(inspectExpandList, v) } err = tx.Create(&inspectExpandList).Error if err != nil { e.Log.Errorf("db error: %s", err) return errors.New("同步安全检查项失败") } } return nil }