123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- /*
- * @description: 安全巡检数据库操作相关
- * @Author: LanJianRong
- * @Date: 2020-11-20
- * @FilePath: \construction_management\dao\safe_dao.go
- */
- package dao
- import (
- "fmt"
- "time"
- "github.com/go-xorm/xorm"
- "go.mod/comm"
- "go.mod/conf"
- "go.mod/models"
- "go.mod/web/viewmodels"
- )
- //数据库操作引擎
- type SafeAuditDao struct {
- engine *xorm.Engine
- }
- //获得一个DAO对象
- func NewSafeAuditDao(engine *xorm.Engine) *SafeAuditDao {
- return &SafeAuditDao{
- engine: engine,
- }
- }
- // 添加审批人
- func (d *SafeAuditDao) AddAuditor(safeId int, bId int, auditId int, times int) error {
- auditOrder := d.GetNewOrder(safeId, times)
- auditor := &models.CmSafeAudit{SafeId: safeId, BidsectionId: bId, AuditId: auditId, Times: times, AuditOrder: auditOrder, CreateTime: time.Now()}
- _, err := d.engine.InsertOne(auditor)
- return err
- }
- // 获取最新审批顺序
- func (d *SafeAuditDao) GetNewOrder(safeId int, times int) int {
- var max_order int
- _, err := d.engine.Sql("select Max(`audit_order`) as max_order from cm_safe_audit where safe_id = ? and times = ?", safeId, times).Get(&max_order)
- fmt.Println(err)
- if max_order == 0 {
- return 1
- } else {
- return max_order + 1
- }
- }
- // 根据当前times,获取审批人
- func (d *SafeAuditDao) GetAuditors(id int, times int) []viewmodels.Auditors {
- auditors := make([]viewmodels.Auditors, 0)
- d.engine.Sql("select pa.`name` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.`times` = ? and ca.audit_id = pa.id order by `audit_order`", id, times).Find(&auditors)
- return auditors
- }
- // 根据当前times,获取审批人(包括原报)
- func (d *SafeAuditDao) GetAuditorsWithOwner(id int, times int, cur_uid int) []viewmodels.Auditors {
- auditors := make([]viewmodels.Auditors, 0)
- // 原报
- auditor := viewmodels.Auditors{}
- _, err := d.engine.Sql("select `name` from `cm_project_account` where id = ?", cur_uid).Get(&auditor)
- if err != nil {
- fmt.Println(err)
- }
- auditors = append(auditors, auditor)
- d.engine.Sql("select pa.`name` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.`times` = ? and ca.audit_id = pa.id order by `audit_order`", id, times).Find(&auditors)
- return auditors
- }
- // times从1开始循环,往history里面push
- func (d *SafeAuditDao) GetAuditHistory(id int, times int) map[int][]viewmodels.HistorySafeAudit {
- auditorHistory := make(map[int][]viewmodels.HistorySafeAudit, 0)
- for i := 1; i <= times; i++ {
- auditors := make([]viewmodels.HistorySafeAudit, 0)
- d.engine.Sql("select ca.`id`, pa.`name`, pa.`position`, ca.`create_time` as createTime, ca.`end_time` as endTime, ca.`opinion`, ca.`status` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.audit_id = pa.id and times = ? order by `audit_order`", id, times).Find(&auditors)
- auditorsArr := make([]viewmodels.HistorySafeAudit, 0)
- for _, auditor := range auditors {
- auditorVM := viewmodels.HistorySafeAudit{}
- id, _ := comm.AesEncrypt(auditor.Id, conf.SignSecret)
- auditorVM.Id = id
- auditorVM.Createtime = auditor.Createtime
- auditorVM.EndTime = auditor.EndTime
- auditorVM.Name = auditor.Name
- auditorVM.Position = auditor.Position
- auditorVM.Status = auditor.Status
- auditorVM.Opinion = auditor.Opinion
- auditorsArr = append(auditorsArr, auditorVM)
- }
- auditorHistory[i] = auditorsArr
- }
- return auditorHistory
- }
- // 根据id获取记录
- func (d *SafeAuditDao) FindById(id int) (*models.CmSafeAudit, error) {
- data := &models.CmSafeAudit{Id: id}
- _, err := d.engine.Get(data)
- return data, err
- }
- // 改变审批记录状态
- func (d *SafeAuditDao) ChangeStatusById(id int, opinion string, status int) error {
- data := &models.CmSafeAudit{EndTime: time.Now(), Opinion: opinion, Status: status}
- _, err := d.engine.ID(id).Cols("end_time", "opinion", "status").Update(data)
- return err
- }
- // 拷贝新的审批流程
- func (d *SafeAuditDao) CopyAuditors(safeId int, times int, auditType string, uid int) error {
- oldAuditors := make([]models.CmSafeAudit, 0)
- err := d.engine.Where("safe_id = ? and times = ?", safeId, times).Find(&oldAuditors)
- if err != nil {
- return err
- }
- var copyStatus = true
- fmt.Println("auditType", auditType)
- newAuditors := make([]models.CmSafeAudit, 0)
- for _, auditor := range oldAuditors {
- auditorVM := models.CmSafeAudit{}
- auditorVM.SafeId = auditor.SafeId
- auditorVM.BidsectionId = auditor.BidsectionId
- auditorVM.Times = auditor.Times + 1
- auditorVM.AuditId = auditor.AuditId
- auditorVM.AuditOrder = auditor.AuditOrder
- auditorVM.Progress = auditor.Progress
- auditorVM.CreateTime = time.Now()
- auditorVM.Status = auditor.Status
- // 上报人
- if auditType == "uncheck" {
- auditorVM.Status = 0
- } else {
- if auditor.AuditId == uid {
- auditorVM.Status = 0
- copyStatus = false
- }
- }
- if !copyStatus {
- auditorVM.Status = 0
- }
- newAuditors = append(newAuditors, auditorVM)
- }
- _, err = d.engine.Insert(&newAuditors)
- return err
- }
- // 增加整改人
- func (d *SafeAuditDao) AddCheckWorker(id int, auditId int, opinion string) error {
- auditor, err := d.FindById(id)
- if err != nil {
- return err
- }
- data := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, AuditOrder: auditor.AuditOrder + 1, Times: auditor.Times, AuditId: auditId, Status: 0, Progress: 1, CreateTime: time.Now(), Opinion: opinion}
- _, err = d.engine.Insert(data)
- if err != nil {
- return err
- }
- return nil
- }
|