123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /*
- * @description: 安全巡检数据库操作相关
- * @Author: LanJianRong
- * @Date: 2020-11-20
- * @FilePath: \construction_management\dao\quality_dao.go
- */
- package dao
- import (
- "errors"
- "fmt"
- "time"
- "github.com/go-xorm/xorm"
- "go.mod/models"
- "go.mod/web/viewmodels"
- )
- //数据库操作引擎
- type QualityDao struct {
- engine *xorm.Engine
- }
- //获得一个DAO对象
- func NewQualityDao(engine *xorm.Engine) *QualityDao {
- return &QualityDao{
- engine: engine,
- }
- }
- func (d *QualityDao) GetInIdJoinAccount(ids []int) []viewmodels.QualityList {
- datalist := make([]viewmodels.QualityList, 0)
- err := d.engine.
- Table("`cm_quality` as cs").
- Select("cs.id, cs.`create_time`, cs.`inspection_detail`, cs.`inspection`,cs.code, cs.status, pa.`name` as `audit_name`, pa.`position`,cs.`bidsection_id`").
- In("cs.id", ids).
- // Where("cs.id in ( "+ids+" ) ").
- Join("left", "cm_project_account as pa", "pa.id = cs.uid").
- Desc("id").
- Find(&datalist)
- if err != nil {
- return datalist
- } else {
- return datalist
- }
- // datalist := make([]models.CmQuality, 0)
- // err := d.engine.
- // Where("id in ( " + ids + " ) ").
- // Desc("id").
- // Find(&datalist)
- // if err != nil {
- // return datalist
- // } else {
- // return datalist
- // }
- }
- func (d *QualityDao) FindById(id int) *models.CmQuality {
- data := &models.CmQuality{Id: id}
- ok, err := d.engine.Get(data)
- if ok && err == nil {
- return data
- } else {
- data.Id = 0
- return data
- }
- }
- // id获得数据
- func (d *QualityDao) GetListByBid(id int, pageNo int, pageSize int) ([]models.CmQuality, int64) {
- dataList := make([]models.CmQuality, 0)
- start := (pageNo - 1) * pageSize
- total, err := d.engine.
- Where("bidsection_id=?", id).
- Asc("id").
- Limit(pageSize, start).
- FindAndCount(&dataList)
- if err != nil {
- return dataList, 0
- }
- return dataList, total
- }
- // 插入单条记录
- func (d *QualityDao) InsertRecord(data models.CmQuality) (bool, error) {
- affected, err := d.engine.InsertOne(data)
- return affected > 0, err
- }
- // 删除记录
- func (d *QualityDao) DeleteRecord(id int) error {
- session := d.engine.NewSession()
- defer session.Close()
- err := session.Begin()
- if err != nil {
- session.Rollback()
- return err
- }
- quality := &models.CmQuality{Id: id}
- _, err = session.Get(quality)
- if err != nil {
- session.Rollback()
- return err
- }
- bidsectionId := quality.BidsectionId
- _, err = session.ID(id).Delete(quality)
- if err != nil {
- session.Rollback()
- return err
- }
- // 计算当前安全巡检总数
- _, err = session.Exec("update `cm_tree` set `quality_total` = if(`quality_total` >= 1, `quality_total` - 1, 0), `quality_rectification` = if(`quality_rectification` >= 1, `quality_rectification` - 1, 0) where `bidsection_id` = ?", bidsectionId)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- return err
- }
- // 根据code获取记录
- func (d *QualityDao) FindByCode(code string) bool {
- data := &models.CmQuality{Code: code}
- has, _ := d.engine.Get(data)
- return has
- }
- // 筛选出应用了当前规则的条数
- func (d *QualityDao) CountRuleCode(bid int) (int64, error) {
- data := &models.CmQuality{}
- total, err := d.engine.Where("`bidsection_id` = ?", bid).Count(data)
- if err != nil {
- total = 0
- }
- return total, err
- }
- // 更改status
- func (d *QualityDao) ChangeStatus(id int, status int, inspection string, inspectionDetail string, demand string, createTime time.Time) error {
- data := &models.CmQuality{Status: status, Inspection: inspection, InspectionDetail: inspectionDetail, Demand: demand, CreateTime: createTime}
- _, err := d.engine.ID(id).Cols("status", " inspection", "inspection_detail", "demand", "create_time").Update(data)
- return err
- }
- // 获得某状态下的安全
- func (d *QualityDao) GetStatus(bidsectionId int, status int) []models.CmQuality {
- datalist := make([]models.CmQuality, 0)
- _ = d.engine.
- Where("bidsection_id = ? and status=? ", bidsectionId, status).
- Desc("id").
- Find(&datalist)
- return datalist
- }
- // 获得某年份下的安全
- func (d *QualityDao) GetTypeYear(bidsectionId int, year int) []viewmodels.QualitySurveyList {
- startYear := fmt.Sprintf("%d-01-01:00.00.00", year)
- endYear := fmt.Sprintf("%d-12-31:23.59.59", year)
- datalist := make([]viewmodels.QualitySurveyList, 0)
- _ = d.engine.Table("`cm_quality` as cs").
- // Select("cs.data_id as id, cs.`update_time`, s.`inspection_detail`, cs.status, pa.`name` as `audit_name`").
- // Where("cs.bidsection_id = ? and status=1 and progress=1 and data_type=2 and cs.update_time>='"+startYear+"' and cs.update_time<='"+endYear+"' ", bidsectionId).
- // Join("left", "cm_quality as s", "s.id = cs.data_id").
- // Join("left", "cm_project_account as pa", "pa.id = cs.uid").
- // , s.`update_time` , pa.`name` as `audit_name`
- Select("cs.id , cs.`create_time`, cs.`inspection_detail`, cs.status").
- Where("cs.bidsection_id = ? and cs.create_time>='"+startYear+"' and cs.create_time<='"+endYear+"' ", bidsectionId).
- // Join("left", "cm_approver as s", "cs.id = s.data_id and s.data_id=2").
- // Join("left", "cm_project_account as pa", "pa.id = s.audit_id").
- Desc("id").
- Find(&datalist)
- // _ = d.engine.
- // Where("bidsection_id = ? and create_time>='"+startYear+"' and create_time<='"+endYear+"' ", bidsectionId).
- // Desc("id").
- // Find(&datalist)
- return datalist
- }
- // 获得某状态下的安全
- func (d *QualityDao) GetStatusByProjectAndAccount(projectId int, projectAccountId int, status int) []models.CmQuality {
- datalist := make([]models.CmQuality, 0)
- _ = d.engine.
- Where("project_id = ? and audit_id= ? and status=? ", projectId, projectAccountId, status).
- Desc("id").
- Find(&datalist)
- return datalist
- }
- // 事务-创建新的安全巡检记录
- func (d *QualityDao) CreateQuality(data models.CmQuality) error {
- session := d.engine.NewSession()
- defer session.Close()
- err := session.Begin()
- if err != nil {
- session.Rollback()
- return err
- }
- quality := models.CmQuality{}
- has, err := session.Where("code = ? and bidsection_id = ?", data.Code, data.BidsectionId).Get(&quality)
- // err或者code存在都回滚
- if err != nil {
- session.Rollback()
- return err
- }
- if has == true {
- session.Rollback()
- return errors.New("该编号已存在!")
- }
- _, err = session.Insert(data)
- if err != nil {
- session.Rollback()
- return err
- }
- // 更新cm_tree中的quality_total、quality_rectification
- _, err = session.Exec("update `cm_tree` set `quality_total` = `quality_total` + 1 , `quality_rectification` = `quality_rectification` + 1 where `bidsection_id` = ?", data.BidsectionId)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return nil
- }
|