lanjianrong пре 4 година
родитељ
комит
d1296357fc

+ 30 - 29
bootstrap/bootstrap.go

@@ -10,6 +10,7 @@ import (
 	"time"
 
 	"github.com/iris-contrib/middleware/csrf"
+	"github.com/iris-contrib/middleware/jwt"
 	"github.com/kataras/iris/v12"
 	"github.com/kataras/iris/v12/middleware/logger"
 	"github.com/kataras/iris/v12/middleware/recover"
@@ -87,33 +88,33 @@ func (b *Bootstrapper) SetupCsrfHandlers(csrfKey string) {
 }
 
 // 配置jwt
-// func (b *Bootstrapper) SetupJwtHandlers(jwtKey string) {
-
-// j2 := jwt.New(jwt.Config{
-// 	// 注意,新增了一个错误处理函数
-// 	ErrorHandler: func(ctx iris.Context, err error) {
-// 		if err == nil {
-// 			return
-// 		}
-
-// 		ctx.StopExecution()
-// 		ctx.StatusCode(iris.StatusUnauthorized)
-// 		ctx.JSON(ResModel{
-// 			Code: "501",
-// 			Msg:  err.Error(),
-// 		})
-// 	},
-// 	// 设置一个函数返回秘钥,关键在于return []byte("这里设置秘钥")
-// 	ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
-// 		return []byte(jwtKey), nil
-// 	},
-
-// 	// 设置一个加密方法
-// 	SigningMethod: jwt.SigningMethodHS256,
-// })
-
-// 	//b.Party("/", j2.Serve)
-// }
+func (b *Bootstrapper) SetupJwtHandlers(jwtKey string) {
+
+	j2 := jwt.New(jwt.Config{
+		// 注意,新增了一个错误处理函数
+		ErrorHandler: func(ctx iris.Context, err error) {
+			if err == nil {
+				return
+			}
+
+			ctx.StopExecution()
+			ctx.StatusCode(iris.StatusUnauthorized)
+			ctx.JSON(iris.Map{
+				"code": 2,
+				"msg":  "token invalid",
+			})
+		},
+		// 设置一个函数返回秘钥,关键在于return []byte("这里设置秘钥")
+		ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
+			return []byte(jwtKey), nil
+		},
+
+		// 设置一个加密方法
+		SigningMethod: jwt.SigningMethodHS256,
+	})
+
+	b.Party("/", j2.Serve)
+}
 
 // 装配rpcClient
 func (b *Bootstrapper) SetupRpcClient() {
@@ -178,9 +179,9 @@ func (b *Bootstrapper) Bootstrap() *Bootstrapper {
 	// 	[]byte("lot-secret-of-characters-big-too"),
 	// )
 	// 设置csrf
-	b.SetupCsrfHandlers(CsrfKey)
+	// b.SetupCsrfHandlers(CsrfKey)
 	// 设置jwt
-	//b.SetupJwtHandlers(JwtKey)
+	b.SetupJwtHandlers(JwtKey)
 	// 设置rpc
 	//b.SetupRpcClient()
 	//设置异常信息

+ 0 - 989
dao/approver_dao.go

@@ -1,989 +0,0 @@
-/*
- * @description: 审批流程数据库操作相关
- * @Author: LanJianRong
- * @Date: 2021-01-06
- * @FilePath: \construction_management\dao\approver_dao.go
- */
-
-package dao
-
-import (
-	"errors"
-	"fmt"
-	"strconv"
-	"time"
-
-	"github.com/go-xorm/xorm"
-	"go.mod/comm"
-	"go.mod/conf"
-	"go.mod/models"
-	"go.mod/web/viewmodels"
-)
-
-// 数据库操作引擎
-type ApproverDao struct {
-	engine *xorm.Engine
-}
-
-// 获得一个DAO对象
-func NewApproverDao(engine *xorm.Engine) *ApproverDao {
-	return &ApproverDao{
-		engine: engine,
-	}
-}
-
-// 批量插入数据
-func (d *ApproverDao) InsertData(cur_uid int, bid int, pid int, dataType int, dataId int, auditors []int, reAuditors []int) error {
-	data := make([]models.CmApprover, 0)
-	msg := make([]models.CmProjectMessage, 0)
-	var content string
-	var title string
-	if dataType == 1 {
-		safe := &models.CmSafe{Id: dataId}
-		_, err := d.engine.Get(safe)
-		if err != nil {
-			return err
-		}
-		account := &models.CmProjectAccount{Id: safe.Uid}
-		_, err = d.engine.Get(account)
-		title = fmt.Sprintf("%s - %s", account.Name, account.Position)
-		content = fmt.Sprintf("%s|%s|已上报,审批中", safe.Code, safe.InspectionDetail)
-	} else {
-		quality := &models.CmQuality{Id: dataId}
-		_, err := d.engine.Get(quality)
-		if err != nil {
-			return err
-		}
-		account := &models.CmProjectAccount{Id: quality.Uid}
-		_, err = d.engine.Get(account)
-		if err != nil {
-			return err
-		}
-		title = fmt.Sprintf("%s - %s", account.Name, account.Position)
-		content = fmt.Sprintf("%s|%s|已上报,审批中", quality.Code, quality.InspectionDetail)
-	}
-	_, err := d.engine.Exec("delete from project_message where data_type = ? and data_id = ?", dataType, dataId)
-	for i, item := range auditors {
-		approverVM := models.CmApprover{}
-		approverVM.AuditId = item
-		approverVM.AuditOrder = i + 1
-		approverVM.Progress = 0
-		approverVM.BidsectionId = bid
-		approverVM.ProjectId = pid
-		approverVM.DataType = dataType
-		approverVM.DataId = dataId
-		approverVM.Status = 0
-		if i == 0 {
-			approverVM.Status = 1
-		}
-		data = append(data, approverVM)
-
-		// 消息推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = item
-		msgVM.BidsectionId = bid
-		msgVM.ProjectId = pid
-		msgVM.DataId = dataId
-		msgVM.DataType = 1
-		msgVM.Content = content
-		msgVM.Title = title
-		msgVM.CreateTime = time.Now()
-		msg = append(msg, msgVM)
-	}
-	checkVM := models.CmApprover{}
-	checkVM.AuditOrder = len(auditors) + 1
-	checkVM.Progress = 1
-	checkVM.BidsectionId = bid
-	checkVM.ProjectId = pid
-	checkVM.DataType = dataType
-	checkVM.DataId = dataId
-	data = append(data, checkVM)
-	for i, item := range reAuditors {
-		approverVM := models.CmApprover{}
-		approverVM.AuditId = item
-		approverVM.AuditOrder = i + 2 + len(auditors)
-		approverVM.Progress = 2
-		approverVM.BidsectionId = bid
-		approverVM.ProjectId = pid
-		approverVM.DataType = dataType
-		approverVM.DataId = dataId
-		data = append(data, approverVM)
-
-		// 消息推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = item
-		msgVM.BidsectionId = bid
-		msgVM.ProjectId = pid
-		msgVM.DataId = dataId
-		msgVM.DataType = 1
-		msgVM.Content = content
-		msgVM.Title = title
-		msgVM.CreateTime = time.Now()
-		msg = append(msg, msgVM)
-	}
-	// 再推送自己
-	msgVM := models.CmProjectMessage{}
-	msgVM.AccountId = cur_uid
-	msgVM.BidsectionId = bid
-	msgVM.ProjectId = pid
-	msgVM.DataId = dataId
-	msgVM.DataType = 1
-	msgVM.Content = content
-	msgVM.Title = title
-	msgVM.CreateTime = time.Now()
-	msg = append(msg, msgVM)
-	_, err = d.engine.Insert(data)
-	_, err = d.engine.Insert(msg)
-
-	return err
-}
-
-// 更改状态
-func (d *ApproverDao) ChangeStatus(id int, status int) error {
-	data := &models.CmApprover{Status: status}
-	_, err := d.engine.Where("id = ?", id).Cols("status").Update(data)
-	return err
-}
-
-// 更改审批人
-func (d *ApproverDao) ChangeAuditId(bid int, dataType int, dataId int, auditOrder int, uid int) error {
-	data := &models.CmApprover{AuditId: uid}
-	_, err := d.engine.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order = ?", bid, dataType, dataId, auditOrder).Cols("audit_id").Update(data)
-	return err
-}
-
-// 更改下一个审批人的状态
-func (d *ApproverDao) ChangeNextStatus(id int, status int) error {
-	data := &models.CmApprover{Id: id}
-	_, err := d.engine.Get(data)
-	newData := &models.CmApprover{Status: status}
-	_, err = d.engine.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order = ?", data.BidsectionId, data.DataType, data.DataId, data.AuditOrder+1).Cols("status").Update(newData)
-	return err
-}
-
-// 根据当前times,获取审批流程(包括原报)
-func (d *ApproverDao) GetAuditorsWithOwner(bid int, dataType int, dataId int, cur_uid int) []viewmodels.Auditors {
-	auditors := make([]viewmodels.Auditors, 0)
-	auditor := viewmodels.Auditors{Progress: "", Id: "", Status: 2}
-
-	_, err := d.engine.Sql("select name, company, position, mobile, id as `audit_id` 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.`company`, pa.`name`, pa.`account_group`,pa.`mobile`, pa.`position`,ca.`audit_id` as `audit_id`, ca.`id`, ca.`status`, ca.`audit_order`, ca.`progress` from `cm_project_account` as pa, `cm_approver` as ca where ca.`bidsection_id` = ? and ca.`data_type` = ? and ca.`data_id` = ? and ca.audit_id = pa.id order by `audit_order`", bid, dataType, dataId).Find(&auditors)
-	// 原报
-	return auditors
-}
-
-func (d *ApproverDao) FindApproverById(id int) (*models.CmApprover, error) {
-	data := &models.CmApprover{}
-	_, err := d.engine.ID(id).Get(data)
-	return data, err
-}
-
-// 获取最新的审核人
-func (d *ApproverDao) GetLastedAuditor(bid int, dataType int, dataId int) *viewmodels.Approver {
-	data := &models.CmApprover{BidsectionId: bid, DataType: dataType, DataId: dataId, Status: 1}
-	has, _ := d.engine.Get(data)
-	approverVM := &viewmodels.Approver{}
-	if has == true {
-		id, _ := comm.AesEncrypt(strconv.Itoa(data.Id), conf.SignSecret)
-		approverVM.Id = id
-		pid, _ := comm.AesEncrypt(strconv.Itoa(data.ProjectId), conf.SignSecret)
-		approverVM.ProjectId = pid
-		bid, _ := comm.AesEncrypt(strconv.Itoa(data.BidsectionId), conf.SignSecret)
-		approverVM.BidsectionId = bid
-		dataId, _ := comm.AesEncrypt(strconv.Itoa(data.DataId), conf.SignSecret)
-		approverVM.DataId = dataId
-		auditId, _ := comm.AesEncrypt(strconv.Itoa(data.AuditId), conf.SignSecret)
-		approverVM.AuditId = auditId
-		approverVM.AuditOrder = data.AuditOrder
-		approverVM.DataType = data.DataType
-		approverVM.Progress = strconv.Itoa(data.Progress)
-		approverVM.Status = data.Status
-	}
-	return approverVM
-}
-
-// 获取最后一个审批人
-func (d *ApproverDao) GetLastAuditor(bid int, dataType int, dataId int) (*models.CmApprover, error) {
-	data := &models.CmApprover{BidsectionId: bid, DataType: dataType, DataId: dataId}
-	_, err := d.engine.Desc("audit_order").Limit(1).Get(data)
-	return data, err
-}
-
-// 初始化审批流程状态
-func (d *ApproverDao) InitStatus(auditType string, bid int, dataType int, dataId int, auditId int, times int, progress int, opinion string) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	err := session.Begin()
-	if err != nil {
-		return errors.New("操作失败-db")
-	}
-
-	// 消息推送,先删除旧的推送
-	_, err = session.Exec("delete from cm_project_message where data_type = ? and data_id = ?", auditType, dataId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	approvers := make([]models.CmApprover, 0)
-	err = session.Where("data_type = ? and data_id = ? and audit_id != 0", dataType, dataId).Find(&approvers)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	data := &models.CmApprover{Status: 0}
-	_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ?", bid, dataType, dataId).Cols("status").Update(data)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	if auditType == "safe" {
-		safe := &models.CmSafe{}
-		_, err = session.ID(dataId).Get(safe)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: safe.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|审批退回到上报人", safe.Code, safe.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = safe.Uid
-		msgVM.BidsectionId = safe.BidsectionId
-		msgVM.ProjectId = safe.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = safe.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|审批退回到上报人", safe.Code, safe.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		_, err = session.Exec("update cm_safe set status = ?, times = ? where id = ?", 0, times+1, dataId)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 增加审批日志
-		safeAudit := &models.CmSafeAudit{BidsectionId: bid, SafeId: dataId, Times: times, AuditId: auditId, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(safeAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 说明本身除于整改人流程,退回原报,要将整改总数-1,未整改总数+1
-		if progress-1 != 0 {
-			_, err = session.Exec("update cm_tree set safe_rectification = safe_rectification + 1, safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0) where bidsection_id = ?", bid)
-		}
-	} else {
-		quality := &models.CmQuality{}
-		_, err = session.ID(dataId).Get(quality)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: quality.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|审批退回到上报人", quality.Code, quality.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = quality.Uid
-		msgVM.BidsectionId = quality.BidsectionId
-		msgVM.ProjectId = quality.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = quality.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|审批退回到上报人", quality.Code, quality.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		_, err = session.Exec("update cm_quality set status = ?, times = ? where id = ?", 0, times+1, dataId)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 增加审批日志
-		qualityAudit := &models.CmQualityAudit{BidsectionId: bid, QualityId: dataId, Times: times, AuditId: auditId, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(qualityAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		if progress-1 != 0 {
-			_, err = session.Exec("update cm_tree set quality_rectification = quality_rectification + 1, quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidsection_id = ?", bid)
-		}
-	}
-
-	err = session.Commit()
-	return err
-}
-
-// 审批通过
-func (d *ApproverDao) PassHandler(auditType string, id int, uid int, auditId int, opinion string, rectifiedInfo string) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	// add Begin() before any action
-	err := session.Begin()
-	auditor, err := d.FindApproverById(id)
-	if err != nil {
-		return err
-	}
-	if auditor.AuditId != uid {
-		return errors.New("该用户没有审批权限!")
-	}
-
-	var msgContent string
-	switch auditor.Progress {
-	case 0:
-		msgContent = "审批完成,待整改"
-	case 1:
-		msgContent = "整改完成,待复查"
-	case 2:
-		msgContent = "复查完成"
-	}
-	// 消息推送,先删除旧的推送
-	_, err = session.Exec("delete from cm_project_message where data_type = ? and data_id = ?", auditor.DataType, auditor.DataId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	approvers := make([]models.CmApprover, 0)
-	err = session.Where("data_type = ? and data_id = ? and audit_id != 0", auditor.DataType, auditor.DataId).Find(&approvers)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	// 安全巡检
-	if auditType == "safe" {
-		safe := &models.CmSafe{}
-		_, err = session.ID(auditor.DataId).Get(safe)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: safe.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|%s", msgContent, safe.Code, safe.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = safe.Uid
-		msgVM.BidsectionId = safe.BidsectionId
-		msgVM.ProjectId = safe.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = safe.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|%s", msgContent, safe.Code, safe.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 增加审批日志
-		auditReacord := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, AuditId: auditor.AuditId, Times: safe.Times, CreateTime: time.Now(), Status: 0, Progress: auditor.Progress + 1, Opinion: opinion, Rectifiedinfo: rectifiedInfo}
-		_, err = session.Insert(auditReacord)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 改变审批流程中当前审批人以及下一个审批人的审批流程状态
-		curData := &models.CmApprover{Status: 2}
-		_, err = session.ID(id).Cols("status").Update(curData)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		nextData := &models.CmApprover{Status: 1}
-		_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order = ?", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1).Cols("status").Update(nextData)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		if auditId != 0 {
-			// 审批人选择了整改人
-			// 修改cm_safe表的status状态为待整改
-			_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 2, auditor.DataId)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-
-			// 将cm_tree的safe_rectification待整改+1
-			_, err := session.Exec("update cm_tree set safe_rectification_in = safe_rectification_in + 1, safe_rectification = if(safe_rectification >= 1, safe_rectification - 1, 0) where bidsection_id = ?", auditor.BidsectionId)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-			// 改变审批流程中的整改人id
-			_, err = session.Exec("update `cm_approver` set `audit_id` = ? where `bidsection_id` = ? and `data_type` = ? and `data_id` = ? and `audit_order` = ?", auditId, auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-		} else {
-			if auditor.Progress == 1 {
-				// 整改人审批流程
-				// 修改cm_safe表的status状态为待复查
-				_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 3, auditor.DataId)
-				if err != nil {
-					session.Rollback()
-					return err
-				}
-			} else {
-				// 复查流程
-				// 查找最后一个审批人
-				lastAuditor := &models.CmApprover{BidsectionId: auditor.BidsectionId, DataType: auditor.DataType, DataId: auditor.DataId}
-				_, err = session.Desc("audit_order").Limit(1).Get(lastAuditor)
-				if err != nil {
-					session.Rollback()
-					return err
-				}
-				if lastAuditor.AuditId == auditor.AuditId {
-					// 说明审批流程已经走完
-					_, err = session.Exec("update `cm_safe` set status = ? where id = ?", 4, auditor.DataId)
-					if err != nil {
-						session.Rollback()
-						return err
-					}
-					// 将cm_tree的safe_rectification_finish待整改+1
-					_, err := session.Exec("update cm_tree set safe_rectification_finish = safe_rectification_finish + 1,  safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0)where bidsection_id = ?", auditor.BidsectionId)
-					if err != nil {
-						session.Rollback()
-						return err
-					}
-				}
-			}
-		}
-	} else {
-		// 质量巡检
-		quality := &models.CmQuality{}
-		_, err = session.ID(auditor.DataId).Get(quality)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: quality.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|%s", msgContent, quality.Code, quality.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = quality.Uid
-		msgVM.BidsectionId = quality.BidsectionId
-		msgVM.ProjectId = quality.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = quality.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|%s", msgContent, quality.Code, quality.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		// 增加审批日志
-		auditReacord := &models.CmQualityAudit{BidsectionId: auditor.BidsectionId, QualityId: auditor.DataId, AuditId: auditor.AuditId, Times: quality.Times, CreateTime: time.Now(), Status: 0, Progress: auditor.Progress + 1, Opinion: opinion, Rectifiedinfo: rectifiedInfo}
-		_, err = session.Insert(auditReacord)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 改变审批流程中当前审批人以及下一个审批人的审批流程状态
-		curData := &models.CmApprover{Status: 2}
-		_, err = session.ID(id).Cols("status").Update(curData)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		nextData := &models.CmApprover{Status: 1}
-		_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order = ?", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1).Cols("status").Update(nextData)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		if auditId != 0 {
-			// 审批人选择了整改人
-			// 修改cm_quality表的status状态为待整改
-			_, err = session.Exec("update `cm_quality` set status = ? where id = ?", 2, auditor.DataId)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-
-			// 将cm_tree的quality_rectification待整改+1
-			_, err := session.Exec("update cm_tree set quality_rectification_in = quality_rectification_in + 1, quality_rectification = if(quality_rectification >= 1, quality_rectification - 1, 0) where bidsection_id = ?", auditor.BidsectionId)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-			// 改变审批流程中的整改人id
-			_, err = session.Exec("update `cm_approver` set `audit_id` = ? where `bidsection_id` = ? and `data_type` = ? and `data_id` = ? and `audit_order` = ?", auditId, auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder+1)
-			if err != nil {
-				session.Rollback()
-				return err
-			}
-		} else {
-			if auditor.Progress == 1 {
-				// 整改人审批流程
-				// 修改cm_quality表的status状态为待复查
-				_, err = session.Exec("update `cm_quality` set status = ? where id = ?", 3, auditor.DataId)
-				if err != nil {
-					session.Rollback()
-					return err
-				}
-			} else {
-				// 复查流程
-				// 查找最后一个审批人
-				lastAuditor := &models.CmApprover{BidsectionId: auditor.BidsectionId, DataType: auditor.DataType, DataId: auditor.DataId}
-				_, err = session.Desc("audit_order").Limit(1).Get(lastAuditor)
-				if err != nil {
-					session.Rollback()
-					return err
-				}
-				if lastAuditor.AuditId == auditor.AuditId {
-					// 说明审批流程已经走完
-					_, err = session.Exec("update `cm_quality` set status = ? where id = ?", 4, auditor.DataId)
-					if err != nil {
-						session.Rollback()
-						return err
-					}
-					// 将cm_tree的quality_rectification_finish待整改+1
-					_, err := session.Exec("update cm_tree set quality_rectification_finish = quality_rectification_finish + 1, quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidsection_id = ?", auditor.BidsectionId)
-					if err != nil {
-						session.Rollback()
-						return err
-					}
-				}
-			}
-		}
-	}
-
-	err = session.Commit()
-	return err
-}
-
-// 审批流程-退回
-func (d *ApproverDao) BackHandlerWithId(auditType string, id int, uid int, times int, progress int, opinion string) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	err := session.Begin()
-
-	auditor := &models.CmApprover{}
-	_, err = session.ID(id).Get(auditor)
-	data := &models.CmApprover{Status: 0}
-	// 将往后的所有记录的status改为0
-	_, err = session.Where("bidsection_id = ? and data_type = ? and data_id = ? and audit_order > ?", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditOrder).Cols("status").Update(data)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	// 获取改账号的信息
-	account := &models.CmProjectAccount{Id: auditor.AuditId}
-	_, err = session.Get(account)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	// 将当前的记录改为1-待审批
-	data.Status = 1
-	_, err = session.ID(id).Cols("status").Update(data)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	// 消息推送,先删除旧的推送
-	_, err = session.Exec("delete from cm_project_message where data_type = ? and data_id = ?", auditor.DataType, auditor.DataId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	approvers := make([]models.CmApprover, 0)
-	err = session.Where("data_type = ? and data_id = ? and audit_id != 0", auditor.DataType, auditor.DataId).Find(&approvers)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	// 增加审批日志
-	if auditType == "safe" {
-		safe := &models.CmSafe{}
-		_, err = session.ID(auditor.DataId).Get(safe)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: safe.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|审批退回,退回至%s", safe.Code, safe.InspectionDetail, account.Name)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = safe.Uid
-		msgVM.BidsectionId = safe.BidsectionId
-		msgVM.ProjectId = safe.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = safe.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|审批退回,退回至%s", safe.Code, safe.InspectionDetail, account.Name)
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: times, AuditId: uid, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(safeAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-	} else {
-		quality := &models.CmQuality{}
-		_, err = session.ID(auditor.DataId).Get(quality)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: quality.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|审批退回,退回至%s", quality.Code, quality.InspectionDetail, account.Name)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = quality.Uid
-		msgVM.BidsectionId = quality.BidsectionId
-		msgVM.ProjectId = quality.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = quality.Id
-		msgVM.DataType = 2
-		msgVM.Content = fmt.Sprintf("%s|%s|审批退回,退回至%s", quality.Code, quality.InspectionDetail, account.Name)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		qualityAudit := &models.CmQualityAudit{BidsectionId: auditor.BidsectionId, QualityId: auditor.DataId, Times: times, AuditId: uid, Status: 1, Progress: progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(qualityAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-	}
-	curAuditor := &models.CmApprover{}
-	_, err = session.ID(uid).Get(curAuditor)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	// 当前审批人是整改或者复查流程的并且退回的是审批流程的
-	if curAuditor.Progress >= 1 && auditor.Progress == 0 {
-		var sql string
-		if auditType == "safe" {
-			sql = "update cm_tree set safe_rectification = safe_rectification_in + 1 and safe_rectification_in = if(safe_rectification_in >= 1, safe_rectification_in - 1, 0) where bidsection_id = ?"
-		} else {
-			sql = "update cm_tree set quality_rectification = quality_rectification_in + 1 and quality_rectification_in = if(quality_rectification_in >= 1, quality_rectification_in - 1, 0) where bidsection_id = ?"
-		}
-		_, err = session.Exec(sql, auditor.BidsectionId)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-	}
-
-	err = session.Commit()
-	return err
-}
-
-func (d *ApproverDao) CloseHandler(auditType string, id int, opinion string, curUid int, saveId int) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	// add Begin() before any action
-	err := session.Begin()
-	auditor, err := d.FindApproverById(id)
-	if auditor.AuditId != curUid {
-		return errors.New("该用户没有审批权限!")
-	}
-
-	// 消息推送,先删除旧的推送
-	_, err = session.Exec("delete from cm_project_message where data_type = ? and data_id = ?", auditor.DataType, auditor.DataId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	approvers := make([]models.CmApprover, 0)
-	err = session.Where("data_type = ? and data_id = ? and audit_id != 0", auditor.DataType, auditor.DataId).Find(&approvers)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	if auditType == "safe" {
-		safe := &models.CmSafe{}
-		_, err = session.ID(saveId).Get(safe)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: safe.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|已关闭,停止审批流程", safe.Code, safe.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = safe.Uid
-		msgVM.BidsectionId = safe.BidsectionId
-		msgVM.ProjectId = safe.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = safe.Id
-		msgVM.DataType = 1
-		msgVM.Content = fmt.Sprintf("%s|%s|已关闭,停止审批流程", safe.Code, safe.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		// 增加审批日志
-		safeAudit := &models.CmSafeAudit{BidsectionId: auditor.BidsectionId, SafeId: auditor.DataId, Times: safe.Times, AuditId: auditor.AuditId, Status: 2, Progress: auditor.Progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(safeAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 更改cm_safe的记录
-		_, err = session.Exec("update `cm_safe` set status = ? where id = ? ", 5, saveId)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-	} else {
-		quality := &models.CmQuality{}
-		_, err = session.ID(saveId).Get(quality)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-
-		account := &models.CmProjectAccount{Id: quality.Uid}
-		_, err = d.engine.Get(account)
-		title := fmt.Sprintf("%s - %s", account.Name, account.Position)
-
-		msg := make([]models.CmProjectMessage, 0)
-		for _, item := range approvers {
-			msgVM := models.CmProjectMessage{}
-			msgVM.AccountId = item.AuditId
-			msgVM.BidsectionId = item.BidsectionId
-			msgVM.ProjectId = item.ProjectId
-			msgVM.CreateTime = time.Now()
-			msgVM.DataId = item.DataId
-			msgVM.DataType = item.DataType
-			msgVM.Content = fmt.Sprintf("%s|%s|已关闭,停止审批流程", quality.Code, quality.InspectionDetail)
-			msgVM.Title = title
-			msg = append(msg, msgVM)
-		}
-
-		// 添加巡检拥有者的推送
-		msgVM := models.CmProjectMessage{}
-		msgVM.AccountId = quality.Uid
-		msgVM.BidsectionId = quality.BidsectionId
-		msgVM.ProjectId = quality.ProjectId
-		msgVM.CreateTime = time.Now()
-		msgVM.DataId = quality.Id
-		msgVM.DataType = 2
-		msgVM.Content = fmt.Sprintf("%s|%s|已关闭,停止审批流程", quality.Code, quality.InspectionDetail)
-		msgVM.Title = title
-		msg = append(msg, msgVM)
-
-		// 插入消息
-		_, err = session.Insert(msg)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 增加审批日志
-		qualityAudit := &models.CmQualityAudit{BidsectionId: auditor.BidsectionId, QualityId: auditor.DataId, Times: quality.Times, AuditId: auditor.AuditId, Status: 2, Progress: auditor.Progress, CreateTime: time.Now(), Opinion: opinion}
-		_, err = session.Insert(qualityAudit)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-		// 更改cm_quality的记录
-		_, err = session.Exec("update `cm_quality` set status = ? where id = ? ", 5, saveId)
-		if err != nil {
-			session.Rollback()
-			return err
-		}
-	}
-	// 更改cm_approver的记录
-	_, err = session.Exec("update `cm_approver` set status = ? where id = ? ", 3, id)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	err = session.Commit()
-	return err
-}
-
-// 删除旧的审批流程
-func (d *ApproverDao) DeleteOldAuditors(bid int, dataType int, dataId int) error {
-	data := &models.CmApprover{BidsectionId: bid, DataType: dataType, DataId: dataId}
-	_, err := d.engine.Delete(data)
-	return err
-}
-
-func (d *ApproverDao) GetStatusByProjectAndAccount(projectId int, projectAccountId int, status int) []models.CmApprover {
-	datalist := make([]models.CmApprover, 0)
-	_ = d.engine.
-		Where("project_id = ? and audit_id= ? and status=? ", projectId, projectAccountId, status).
-		Desc("id").
-		Find(&datalist)
-	return datalist
-}

+ 0 - 108
dao/quality_audit_dao.go

@@ -1,108 +0,0 @@
-/*
- * @description: 安全巡检数据库操作相关
- * @Author: LanJianRong
- * @Date: 2020-11-20
- * @FilePath: \construction_management\dao\quality_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 QualityAuditDao struct {
-	engine *xorm.Engine
-}
-
-//获得一个DAO对象
-func NewQualityAuditDao(engine *xorm.Engine) *QualityAuditDao {
-	return &QualityAuditDao{
-		engine: engine,
-	}
-}
-
-// 添加审批记录
-func (d *QualityAuditDao) AddAuditRecord(qualityId int, bId int, auditId int, times int, status int, progress int, opinion string, rectifiedInfo string) error {
-	auditor := &models.CmQualityAudit{QualityId: qualityId, BidsectionId: bId, AuditId: auditId, Times: times, CreateTime: time.Now(), Status: status, Progress: progress, Opinion: opinion, Rectifiedinfo: rectifiedInfo}
-	_, err := d.engine.InsertOne(auditor)
-	return err
-}
-
-// 获取最新审批顺序
-func (d *QualityAuditDao) GetNewOrder(qualityId int, times int) int {
-	var max_order int
-	_, err := d.engine.Sql("select Max(`audit_order`) as max_order from cm_quality_audit where quality_id = ? and times = ?", qualityId, times).Get(&max_order)
-	fmt.Println(err)
-	if max_order == 0 {
-		return 1
-	} else {
-		return max_order + 1
-	}
-}
-
-// times从1开始循环,往history里面push
-func (d *QualityAuditDao) GetAuditHistory(id int, times int) map[int][]viewmodels.HistoryQualityAudit {
-	auditorHistory := make(map[int][]viewmodels.HistoryQualityAudit, 0)
-	for i := 1; i <= times; i++ {
-		auditors := make([]viewmodels.HistoryQualityAudit, 0)
-		d.engine.Sql("select ca.`id`, pa.`name`, pa.`position`, ca.`create_time`, ca.progress, ca.opinion, ca.status from `cm_project_account` as pa, `cm_quality_audit` as ca where ca.`quality_id` = ? and ca.`audit_id` = pa.`id` and times = ? order by id desc", id, i).Find(&auditors)
-		auditorsArr := make([]viewmodels.HistoryQualityAudit, 0)
-		for _, auditor := range auditors {
-			auditorVM := viewmodels.HistoryQualityAudit{}
-			id, _ := comm.AesEncrypt(auditor.Id, conf.SignSecret)
-			auditorVM.Id = id
-			auditorVM.CreateTime = auditor.CreateTime
-			auditorVM.Name = auditor.Name
-			auditorVM.Position = auditor.Position
-			auditorVM.Status = auditor.Status
-			auditorVM.Opinion = auditor.Opinion
-			auditorVM.Progress = auditor.Progress
-			auditorsArr = append(auditorsArr, auditorVM)
-		}
-		auditorHistory[i] = auditorsArr
-	}
-	return auditorHistory
-}
-
-// 根据id获取记录
-func (d *QualityAuditDao) FindById(id int) (*models.CmQualityAudit, error) {
-	data := &models.CmQualityAudit{Id: id}
-	_, err := d.engine.Get(data)
-	return data, err
-}
-
-// 查找最新的整改单
-func (d *QualityAuditDao) GetLastedOrder(QualityId int) ([]viewmodels.CheckOrderVM, error) {
-	data := make([]viewmodels.CheckOrderVM, 0)
-	err := d.engine.Sql("select cm.`rectifiedInfo` as opinion, cm.`create_time`, pa.`name` from `cm_quality_audit` as cm left join `cm_project_account` as pa on pa.`id` = cm.`audit_id` where cm.`quality_id` = ? and cm.`progress` = ?", QualityId, 2).Find(&data)
-	return data, err
-}
-
-// 插入审批记录
-func (d *QualityAuditDao) InsertData(data models.CmQualityAudit) error {
-	_, err := d.engine.Insert(&data)
-	return err
-}
-
-// 改变下一条审批记录为待审核状态
-func (d *QualityAuditDao) ChangeNextRecord(times int, audit_order int) error {
-	data := &models.CmQualityAudit{Status: 1, CreateTime: time.Now()}
-	_, err := d.engine.Where("times = ? and audit_order = ?", times, audit_order).Update(data)
-	return err
-}
-
-// 获取最后一个审批人
-func (d *QualityAuditDao) GetLastAuditor(times int, QualityId int) (*models.CmQualityAudit, error) {
-	data := &models.CmQualityAudit{}
-	_, err := d.engine.Where("times = ? and quality_id = ?", times, QualityId).Desc("audit_order").Limit(1).Get(data)
-	return data, err
-}

+ 0 - 224
dao/quality_dao.go

@@ -1,224 +0,0 @@
-/*
- * @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 string) []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.code, cs.status, pa.`name` as `audit_name`, pa.`position`").
-		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.id, cs.`create_time`, cs.`inspection_detail`, cs.status, pa.`name` as `audit_name`").
-		Where("cs.bidsection_id = ? and cs.create_time>='"+startYear+"' and cs.create_time<='"+endYear+"' ", bidsectionId).
-		Join("left", "cm_project_account as pa", "pa.id = cs.uid").
-		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
-}

+ 0 - 58
dao/rule_dao.go

@@ -1,58 +0,0 @@
-/*
- * @description: 编号规则数据库操作相关
- * @Author: LanJianRong
- * @Date: 2020-11-27
- * @FilePath: \construction_management\dao\rule_dao.go
- */
-
-package dao
-
-import (
-	"github.com/go-xorm/xorm"
-	"go.mod/models"
-)
-
-//数据库操作引擎
-type RuleDao struct {
-	engine *xorm.Engine
-}
-
-//获得一个DAO对象
-func NewRuleDao(engine *xorm.Engine) *RuleDao {
-	return &RuleDao{
-		engine: engine,
-	}
-}
-
-// 通过项目id和标段id查找
-func (d *RuleDao) FindByPidWithBid(pid int, bid int) *models.CmRule {
-	data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
-	ok, err := d.engine.Get(data)
-	if ok && err == nil {
-		return data
-	} else {
-		data.Id = 0
-		return data
-	}
-}
-
-// 根据pid和bid更新、不存在则创建
-func (d *RuleDao) UpdateOrCreate(pid int, bid int, key string, value string) error {
-	data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
-	has, err := d.engine.Get(data)
-	if key == "safe_rule" {
-		data.SafeRule = value
-	} else if key == "quality_rule" {
-		data.QualityRule = value
-	} else if key == "contract_return_rule" {
-		data.ContractReturnRule = value
-	} else {
-		data.ContractPaidRule = value
-	}
-	if has && err == nil {
-		_, err = d.engine.Cols(key).Id(data.Id).Update(data)
-	} else if !has && err == nil {
-		_, err = d.engine.Insert(data)
-	}
-	return err
-}

+ 0 - 108
dao/safe_audit_dao.go

@@ -1,108 +0,0 @@
-/*
- * @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) AddAuditRecord(safeId int, bId int, auditId int, times int, status int, progress int, opinion string, rectifiedInfo string) error {
-	auditor := &models.CmSafeAudit{SafeId: safeId, BidsectionId: bId, AuditId: auditId, Times: times, CreateTime: time.Now(), Status: status, Progress: progress, Opinion: opinion, Rectifiedinfo: rectifiedInfo}
-	_, 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从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`, ca.progress, 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 id desc", id, i).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.Name = auditor.Name
-			auditorVM.Position = auditor.Position
-			auditorVM.Status = auditor.Status
-			auditorVM.Opinion = auditor.Opinion
-			auditorVM.Progress = auditor.Progress
-			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) GetLastedOrder(safeId int) ([]viewmodels.CheckOrderVM, error) {
-	data := make([]viewmodels.CheckOrderVM, 0)
-	err := d.engine.Sql("select cm.`rectifiedInfo` as opinion, cm.`create_time`, pa.`name` from `cm_safe_audit` as cm left join `cm_project_account` as pa on pa.`id` = cm.`audit_id` where cm.`safe_id` = ? and cm.`progress` = ?", safeId, 2).Find(&data)
-	return data, err
-}
-
-// 插入审批记录
-func (d *SafeAuditDao) InsertData(data models.CmSafeAudit) error {
-	_, err := d.engine.Insert(&data)
-	return err
-}
-
-// 改变下一条审批记录为待审核状态
-func (d *SafeAuditDao) ChangeNextRecord(times int, audit_order int) error {
-	data := &models.CmSafeAudit{Status: 1, CreateTime: time.Now()}
-	_, err := d.engine.Where("times = ? and audit_order = ?", times, audit_order).Update(data)
-	return err
-}
-
-// 获取最后一个审批人
-func (d *SafeAuditDao) GetLastAuditor(times int, safeId int) (*models.CmSafeAudit, error) {
-	data := &models.CmSafeAudit{}
-	_, err := d.engine.Where("times = ? and safe_id = ?", times, safeId).Desc("audit_order").Limit(1).Get(data)
-	return data, err
-}

+ 0 - 221
dao/safe_dao.go

@@ -1,221 +0,0 @@
-/*
- * @description: 安全巡检数据库操作相关
- * @Author: LanJianRong
- * @Date: 2020-11-20
- * @FilePath: \construction_management\dao\safe_dao.go
- */
-
-package dao
-
-import (
-	"errors"
-	"fmt"
-	"time"
-
-	"github.com/go-xorm/xorm"
-	"go.mod/models"
-	"go.mod/web/viewmodels"
-)
-
-//数据库操作引擎
-type SafeDao struct {
-	engine *xorm.Engine
-}
-
-//获得一个DAO对象
-func NewSafeDao(engine *xorm.Engine) *SafeDao {
-	return &SafeDao{
-		engine: engine,
-	}
-}
-
-func (d *SafeDao) GetInIdJoinAccount(ids string) []viewmodels.SafeList {
-
-	datalist := make([]viewmodels.SafeList, 0)
-	err := d.engine.
-		Table("`cm_safe` as cs").
-		Select("cs.id, cs.`create_time`, cs.`inspection_detail`,cs.code, cs.status, pa.`name` as `audit_name`, pa.`position`").
-		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
-	}
-}
-
-func (d *SafeDao) FindById(id int) *models.CmSafe {
-	data := &models.CmSafe{Id: id}
-	ok, err := d.engine.Get(data)
-	if ok && err == nil {
-		return data
-	} else {
-		data.Id = 0
-		return data
-	}
-}
-
-// id获得数据
-func (d *SafeDao) GetListByBid(id int, pageNo int, pageSize int) ([]models.CmSafe, int64) {
-	dataList := make([]models.CmSafe, 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 *SafeDao) InsertRecord(data models.CmSafe) (bool, error) {
-	affected, err := d.engine.InsertOne(data)
-	return affected > 0, err
-}
-
-// 删除记录
-func (d *SafeDao) DeleteRecord(id int) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	err := session.Begin()
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-
-	safe := &models.CmSafe{Id: id}
-	_, err = session.Get(safe)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	bidsectionId := safe.BidsectionId
-	_, err = session.ID(id).Delete(safe)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	// 计算当前安全巡检总数
-	_, err = session.Exec("update `cm_tree` set `safe_total` = if(`safe_total` >= 1, `safe_total` - 1, 0), `safe_rectification` = if(`safe_rectification` >= 1, `safe_rectification` - 1, 0) where `bidsection_id` = ?", bidsectionId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	err = session.Commit()
-	return err
-}
-
-// 根据code获取记录
-func (d *SafeDao) FindByCode(code string) (bool, error) {
-	data := &models.CmSafe{Code: code}
-	has, err := d.engine.Get(data)
-	return has, err
-}
-
-// 筛选出应用了当前规则的条数
-func (d *SafeDao) CountRuleCode(bid int) (int64, error) {
-	data := &models.CmSafe{}
-	total, err := d.engine.Where("`bidsection_id` = ?", bid).Count(data)
-	if err != nil {
-		total = 0
-	}
-	return total, err
-}
-
-// 更改status
-func (d *SafeDao) ChangeStatus(id int, status int, inspection string, inspectionDetail string, demand string, createTime time.Time) error {
-	data := &models.CmSafe{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 *SafeDao) GetStatus(bidsectionId int, status int) []models.CmSafe {
-	datalist := make([]models.CmSafe, 0)
-	_ = d.engine.
-		Where("bidsection_id = ? and status=? ", bidsectionId, status).
-		Desc("id").
-		Find(&datalist)
-	return datalist
-}
-
-// 获得某状态下的安全
-func (d *SafeDao) GetStatusByProjectAndAccount(projectId int, projectAccountId int, status int) []models.CmSafe {
-	datalist := make([]models.CmSafe, 0)
-	_ = d.engine.
-		Where("project_id = ? and audit_id= ? and status=? ", projectId, projectAccountId, status).
-		Desc("id").
-		Find(&datalist)
-	return datalist
-}
-
-// 获得某年份下的安全
-func (d *SafeDao) GetTypeYear(bidsectionId int, year int) []viewmodels.SafeSurveyList {
-
-	startYear := fmt.Sprintf("%d-01-01:00.00.00", year)
-	endYear := fmt.Sprintf("%d-12-31:23.59.59", year)
-
-	datalist := make([]viewmodels.SafeSurveyList, 0)
-	_ = d.engine.Table("`cm_safe` as cs").
-		Select("cs.id, cs.`create_time`, cs.`inspection_detail`, cs.status, pa.`name` as `audit_name`").
-		Where("cs.bidsection_id = ? and cs.create_time>='"+startYear+"' and cs.create_time<='"+endYear+"' ", bidsectionId).
-		Join("left", "cm_project_account as pa", "pa.id = cs.uid").
-		Desc("id").
-		Find(&datalist)
-	return datalist
-}
-
-// 根据bid
-func (d *SafeDao) GetCountsByBid(bidsectionId int, status int, isAll bool) (int64, error) {
-	data := &models.CmSafe{}
-	if isAll == true {
-		counts, err := d.engine.Where("bidsection_id = ?", bidsectionId).Count(data)
-		return counts, err
-	} else {
-		counts, err := d.engine.Where("bidsection_id = ? and status = ?", bidsectionId, status).Count(data)
-		return counts, err
-	}
-}
-
-// 事务-创建新的安全巡检记录
-func (d *SafeDao) CreateSafe(data models.CmSafe) error {
-	session := d.engine.NewSession()
-	defer session.Close()
-	err := session.Begin()
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	safe := models.CmSafe{}
-	has, err := session.Where("code = ? and bidsection_id = ?", data.Code, data.BidsectionId).Get(&safe)
-	// 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中的safe_total、safe_rectification
-	_, err = session.Exec("update `cm_tree` set `safe_total` = `safe_total` + 1 , `safe_rectification` = `safe_rectification` + 1 where `bidsection_id` = ?", data.BidsectionId)
-	if err != nil {
-		session.Rollback()
-		return err
-	}
-	err = session.Commit()
-	if err != nil {
-		return err
-	}
-	return nil
-}

+ 0 - 150
services/quality_audit.service.go

@@ -1,150 +0,0 @@
-/*
- * @description: 安全巡检审批相关
- * @Author: LanJianRong
- * @Date: 2020-12-18
- * @FilePath: \construction_management\web\api\safe_rpc_api.go
- */
-package services
-
-import (
-	"errors"
-	"log"
-	"time"
-
-	"github.com/kataras/iris/v12"
-	"go.mod/dao"
-	"go.mod/datasource"
-	"go.mod/web/viewmodels"
-)
-
-type QualityAuditService interface {
-	ValidRule(ctx iris.Context) (viewmodels.QualityAudit, error)
-	ValidStart(ctx iris.Context) (viewmodels.QualityAuditStart, error)
-	// AddAuditor(safeId int, bId int, auditId int, times int) error
-	CloseAudit(id int, opinion string, curUid int, saveId int) error
-	BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error
-	PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error
-	StartAudit(safeId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int, inspection string, inspectionDetail string, demand string, createTime time.Time) error
-}
-
-type qualityAuditService struct {
-	validAdd        string
-	validPass       string
-	validClose      string
-	validBack       string
-	daoQualityAudit *dao.QualityAuditDao
-	daoQuality      *dao.QualityDao
-	daoApprover     *dao.ApproverDao
-}
-
-//创建项目用户service
-func NewQualityAuditService() QualityAuditService {
-	return &qualityAuditService{
-		validBack:       "/api/quality_audit/back",
-		validAdd:        "/api/quality_audit/add",
-		validClose:      "/api/quality_audit/close",
-		validPass:       "/api/quality_audit/pass",
-		daoQualityAudit: dao.NewQualityAuditDao(datasource.InstanceDbMaster()),
-		daoQuality:      dao.NewQualityDao(datasource.InstanceDbMaster()),
-		daoApprover:     dao.NewApproverDao(datasource.InstanceDbMaster()),
-	}
-}
-
-// 关闭审批流程
-func (s *qualityAuditService) CloseAudit(id int, opinion string, curUid int, saveId int) error {
-	err := s.daoApprover.CloseHandler("quality", id, opinion, curUid, saveId)
-	return err
-}
-
-// 审批退回
-func (s *qualityAuditService) BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error {
-	auditor, err := s.daoApprover.FindApproverById(id)
-	if auditor.AuditId != curUid {
-		return errors.New("该用户没有审批权限")
-	}
-	safe := s.daoQuality.FindById(saveId)
-
-	// 退回到了检查人
-	if auditId == 0 {
-		// 初始化审批流程
-		err = s.daoApprover.InitStatus("quality", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
-	} else {
-		// 退回到审批流程中的某一个人
-		err = s.daoApprover.BackHandlerWithId("quality", auditId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
-	}
-	return err
-
-}
-
-// 审批通过
-func (s *qualityAuditService) PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error {
-	err := s.daoApprover.PassHandler("quality", id, uid, auditId, opinion, rectifiedInfo)
-	return err
-}
-
-func (s *qualityAuditService) StartAudit(qualityId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int, inspection string, inspectionDetail string, demand string, createTime time.Time) error {
-	quality := s.daoQuality.FindById(qualityId)
-	if quality.Uid != uid {
-		return errors.New("该用户没有操作权限")
-	}
-	// 清除可能有的旧的审批流程
-	err := s.daoApprover.DeleteOldAuditors(bidsectionId, 1, qualityId)
-	if err != nil {
-		return err
-	}
-	// 增加审批日志
-	err = s.daoQualityAudit.AddAuditRecord(qualityId, bidsectionId, uid, quality.Times, 0, 0, "", "")
-	if err != nil {
-		return err
-	}
-	// 改变安全巡检表的状态
-	err = s.daoQuality.ChangeStatus(qualityId, 1, inspection, inspectionDetail, demand, createTime)
-	if err != nil {
-		return err
-	}
-	// 创建审批流程
-	err = s.daoApprover.InsertData(uid, bidsectionId, pid, 1, qualityId, auditors, reAuditors)
-	if err != nil {
-		return err
-	}
-	return err
-}
-
-// 规则校验
-func (s *qualityAuditService) ValidRule(ctx iris.Context) (viewmodels.QualityAudit, error) {
-	qualityAuditVaild := viewmodels.QualityAudit{}
-	if ctx.Method() == "POST" {
-		err := ctx.ReadJSON(&qualityAuditVaild)
-		if err != nil {
-			log.Println("quality-ValidRule-ReadJson转换异常, error=", err)
-			return qualityAuditVaild, err
-		}
-		if ctx.Path() == s.validAdd {
-			err = qualityAuditVaild.ValidateQualityAddAuditor()
-			return qualityAuditVaild, err
-		} else if ctx.Path() == s.validClose {
-			err = qualityAuditVaild.ValidateQualityClose()
-			return qualityAuditVaild, err
-		} else if ctx.Path() == s.validBack {
-			err = qualityAuditVaild.ValidateQualityBack()
-			return qualityAuditVaild, err
-		} else if ctx.Path() == s.validPass {
-			err = qualityAuditVaild.ValidateQualityPass()
-			return qualityAuditVaild, err
-		}
-		return qualityAuditVaild, err
-	}
-	return qualityAuditVaild, nil
-}
-
-// 校验审批开始
-func (s *qualityAuditService) ValidStart(ctx iris.Context) (viewmodels.QualityAuditStart, error) {
-	startAuditValid := viewmodels.QualityAuditStart{}
-	err := ctx.ReadJSON(&startAuditValid)
-	if err != nil {
-		log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-		return startAuditValid, err
-	}
-	err = startAuditValid.ValidateQualityStart()
-	return startAuditValid, err
-}

+ 0 - 374
services/quality_service.go

@@ -1,374 +0,0 @@
-package services
-
-import (
-	"fmt"
-	"log"
-	"strconv"
-	"time"
-
-	"github.com/kataras/iris/v12"
-	"github.com/shopspring/decimal"
-	"go.mod/comm"
-	"go.mod/conf"
-	"go.mod/dao"
-	"go.mod/datasource"
-	"go.mod/models"
-	"go.mod/web/viewmodels"
-)
-
-type QualityService interface {
-	Get(id int, pid int, pageNo int, pageSize int) ([]viewmodels.QualityList, int64)
-	Post(data models.CmQuality) error
-	Del(id int) error
-	GetDetail(id int, pid int) viewmodels.QualityDetail
-	GetSurvey(projectId int, bidsectionId int) map[string]interface{}
-	GetPending(projectId int, projectAccountId int) []viewmodels.Quality
-	ValidRule(ctx iris.Context) (viewmodels.Quality, error)
-}
-
-// //返回service操作类
-type qualityService struct {
-	daoQuality        *dao.QualityDao
-	daoQualityAudit   *dao.QualityAuditDao
-	daoProjectAccount *dao.ProjectAccountDao
-	daoAnnex          *dao.AnnexDao
-	daoRule           *dao.RuleDao
-	daoApprover       *dao.ApproverDao
-	validDetail       string
-}
-
-//创建项目用户service
-func NewQualityService() QualityService {
-	return &qualityService{
-		validDetail:       "/api/quality/detail",
-		daoQuality:        dao.NewQualityDao(datasource.InstanceDbMaster()),
-		daoAnnex:          dao.NewAnnexDao(datasource.InstanceDbMaster()),
-		daoQualityAudit:   dao.NewQualityAuditDao(datasource.InstanceDbMaster()),
-		daoProjectAccount: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
-		daoApprover:       dao.NewApproverDao(datasource.InstanceDbMaster()),
-	}
-}
-func (s *qualityService) Get(id int, pid int, pageNo int, pageSize int) ([]viewmodels.QualityList, int64) {
-	datalist, total := s.daoQuality.GetListByBid(id, pageNo, pageSize)
-	qualityList := make([]viewmodels.QualityList, 0)
-	for _, item := range datalist {
-		qualityVM := viewmodels.QualityList{}
-		qualityVM.Code = item.Code
-		account := s.daoProjectAccount.Get(item.Uid, pid)
-		qualityVM.AuditName = account.Name
-		qualityVM.CreateTime = item.CreateTime.Format(conf.SysTimeform)
-		qualityVM.Demand = item.Demand
-		id, _ := comm.AesEncrypt(strconv.Itoa(item.Id), conf.SignSecret)
-		qualityVM.Id = id
-		qualityVM.Inspection = item.Inspection
-		qualityVM.InspectionDetail = item.InspectionDetail
-		qualityVM.Position = item.Position
-		qualityVM.Status = item.Status
-		counts, _ := s.daoAnnex.GetCount(3, item.Id)
-		qualityVM.FileCounts = counts
-		qualityList = append(qualityList, qualityVM)
-	}
-	return qualityList, total
-}
-
-// post请求,插入单条数据
-func (s *qualityService) Post(data models.CmQuality) error {
-	// has := s.daoQuality.FindByCode(data.Code)
-	// if has {
-	// 	return errors.New("该编号已存在!")
-	// }
-	// Inserted, err := s.daoQuality.InsertRecord(data)
-	// if Inserted == true {
-	// 	return nil
-	// }
-	err := s.daoQuality.CreateQuality(data)
-	return err
-}
-
-// delete请求,删除数据
-func (s *qualityService) Del(id int) error {
-	err := s.daoQuality.DeleteRecord(id)
-	return err
-}
-
-// 详情页数据拼装
-func (s *qualityService) GetDetail(id int, pid int) viewmodels.QualityDetail {
-
-	qualityData := s.daoQuality.FindById(id)
-	qualityId, _ := comm.AesEncrypt(strconv.Itoa(qualityData.Id), conf.SignSecret)
-	bid, _ := comm.AesEncrypt(strconv.Itoa(qualityData.BidsectionId), conf.SignSecret)
-	uid, _ := comm.AesEncrypt(strconv.Itoa(qualityData.Uid), conf.SignSecret)
-	data := viewmodels.QualityDetail{}
-	data.Id = qualityId
-	data.BidsectionId = bid
-	data.Uid = uid
-	data.Code = qualityData.Code
-	data.Inspection = qualityData.Inspection
-	data.InspectionDetail = qualityData.InspectionDetail
-	data.Demand = qualityData.Demand
-	account := s.daoProjectAccount.Get(qualityData.Uid, pid)
-	data.AuditName = account.Name
-	data.CreateTime = qualityData.CreateTime
-	data.Times = qualityData.Times
-	data.Status = qualityData.Status
-	fileList, total := s.daoAnnex.GetList(2, qualityData.Id, 1, conf.PageSize)
-	// 加密id
-	fileArr := make([]viewmodels.AnnexListView, 0)
-	for _, item := range fileList {
-		fileListVM := viewmodels.AnnexListView{}
-		fileId, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-		fileListVM.Id = fileId
-		uid, _ := comm.AesEncrypt(item.AccountId, conf.SignSecret)
-		fileListVM.AccountId = uid
-		fileListVM.AccountName = item.AccountName
-		fileListVM.CreateTime = item.CreateTime
-		fileListVM.FileName = item.FileName
-		fileListVM.FilePath = item.FilePath
-		fileArr = append(fileArr, fileListVM)
-	}
-	fileVM := viewmodels.FileStruct{}
-	fileVM.FileList = fileArr
-	fileVM.Total = total
-	data.File = fileVM
-	auditors := s.daoApprover.GetAuditorsWithOwner(qualityData.BidsectionId, int(1), qualityData.Id, account.Id)
-	encryptAuditors := make([]viewmodels.Auditors, 0)
-	for _, item := range auditors {
-		auditorVM := viewmodels.Auditors{}
-		if item.Id != "" {
-			id, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-			auditorVM.Id = id
-		}
-		auditId, _ := comm.AesEncrypt(item.AuditId, conf.SignSecret)
-		auditorVM.AuditId = auditId
-		auditorVM.Name = item.Name
-		auditorVM.Position = item.Position
-		auditorVM.Mobile = item.Mobile
-		auditorVM.AuditOrder = item.AuditOrder
-		auditorVM.AccountGroup = item.AccountGroup
-		auditorVM.Progress = item.Progress
-		auditorVM.Company = item.Company
-		auditorVM.Status = item.Status
-		encryptAuditors = append(encryptAuditors, auditorVM)
-	}
-	auditHistory := s.daoQualityAudit.GetAuditHistory(qualityData.Id, qualityData.Times)
-	data.AuditHistory = auditHistory
-	// 整改单
-	rectifiedInfo, _ := s.daoQualityAudit.GetLastedOrder(qualityData.Id)
-	data.RectifiedInfo = rectifiedInfo
-
-	// 最新审批人信息
-	latestAuditor := s.daoApprover.GetLastedAuditor(qualityData.BidsectionId, 1, qualityData.Id)
-	data.LatestdAuditor = latestAuditor
-	data.Auditors = encryptAuditors
-
-	return data
-}
-
-// 质量概况
-func (s *qualityService) GetSurvey(projectId int, bidsectionId int) map[string]interface{} {
-	// 1.获得安全巡检
-	year := time.Now().Year()
-	qualityList := s.daoQuality.GetTypeYear(bidsectionId, year)
-	// 2.初始化
-	rectifylist := make([]viewmodels.QualitySurveyList, 0)
-	rectifyTotal := 0
-	approvalTotal := 0
-	rectifyedTotal := 0
-
-	columnarData := make([]map[string]interface{}, 0)
-	lineData := columnarData
-	for i := 1; i <= 12; i++ {
-		item := map[string]interface{}{
-			"name":  "rectifyed",
-			"month": fmt.Sprintf("%d-%02d", year, i),
-			"count": 0,
-		}
-		columnarData = append(columnarData, item)
-		item = map[string]interface{}{
-			"name":  "submit",
-			"month": fmt.Sprintf("%d-%02d", year, i),
-			"count": 0,
-		}
-		columnarData = append(columnarData, item)
-		item = map[string]interface{}{
-			"month":      fmt.Sprintf("%d-%02d", year, i),
-			"percentage": 0,
-		}
-		lineData = append(lineData, item)
-
-	}
-
-	// 3.当年数据初始化
-	submitData := map[string]int{
-		fmt.Sprintf("%d-01", year): 0,
-		fmt.Sprintf("%d-02", year): 0,
-		fmt.Sprintf("%d-03", year): 0,
-		fmt.Sprintf("%d-04", year): 0,
-		fmt.Sprintf("%d-05", year): 0,
-		fmt.Sprintf("%d-06", year): 0,
-		fmt.Sprintf("%d-07", year): 0,
-		fmt.Sprintf("%d-08", year): 0,
-		fmt.Sprintf("%d-09", year): 0,
-		fmt.Sprintf("%d-10", year): 0,
-		fmt.Sprintf("%d-11", year): 0,
-		fmt.Sprintf("%d-12", year): 0,
-	}
-	rectifyedData := map[string]int{
-		fmt.Sprintf("%d-01", year): 0,
-		fmt.Sprintf("%d-02", year): 0,
-		fmt.Sprintf("%d-03", year): 0,
-		fmt.Sprintf("%d-04", year): 0,
-		fmt.Sprintf("%d-05", year): 0,
-		fmt.Sprintf("%d-06", year): 0,
-		fmt.Sprintf("%d-07", year): 0,
-		fmt.Sprintf("%d-08", year): 0,
-		fmt.Sprintf("%d-09", year): 0,
-		fmt.Sprintf("%d-10", year): 0,
-		fmt.Sprintf("%d-11", year): 0,
-		fmt.Sprintf("%d-12", year): 0,
-	}
-	for _, item := range qualityList {
-		if item.Status == 2 {
-			id, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-			item.Id = id
-			rectifylist = append(rectifylist, item)
-			rectifyTotal++
-		}
-
-		approvalTotal++
-		if item.Status == 4 {
-			rectifyedTotal++
-		}
-
-		index := item.CreateTime.Format(conf.SysTimeformMonth)
-		submitData[index] = submitData[index] + 1
-
-		if item.Status == 4 {
-			rectifyedData[index] = rectifyedData[index] + 1
-		}
-
-	}
-
-	for index, columnar := range columnarData {
-
-		if columnar["name"] == "rectifyed" {
-			columnarData[index]["count"] = rectifyedData[columnar["month"].(string)]
-		}
-		if columnar["name"] == "submit" {
-			columnarData[index]["count"] = submitData[columnar["month"].(string)]
-		}
-	}
-
-	for index, line := range lineData {
-		rectifyedCount := 0
-		submitCount := 0
-		for _, columnar := range columnarData {
-			if line["month"] == columnar["month"] {
-				if columnar["name"] == "rectifyed" {
-					rectifyedCount = columnar["count"].(int)
-				}
-				if columnar["name"] == "submit" {
-					submitCount = columnar["count"].(int)
-				}
-			}
-		}
-		lineData[index]["percentage"] = 0.00
-		if rectifyedCount != 0 && submitCount != 0 {
-			decimal.DivisionPrecision = 2
-			percentage, _ := decimal.NewFromFloat(float64(rectifyedCount)).Div(decimal.NewFromFloat(float64(submitCount))).Float64()
-			lineData[index]["percentage"] = percentage * 100
-		}
-	}
-
-	// 整改占总数比例 - 完成整改/提交巡检
-	surveryData := map[string]interface{}{
-		"rectifylist":    rectifylist,
-		"rectifyTotal":   rectifyTotal,
-		"approvalTotal":  approvalTotal,
-		"rectifyedTotal": rectifyedTotal,
-		"columnarData":   columnarData,
-		"lineData":       lineData,
-	}
-
-	return surveryData
-}
-
-// 获得账号下需要审批的巡检
-func (s *qualityService) GetPending(projectId int, projectAccountId int) []viewmodels.Quality {
-
-	data := s.daoQuality.GetStatusByProjectAndAccount(projectId, projectAccountId, 1)
-
-	safeList := make([]viewmodels.Quality, 0)
-	for _, item := range data {
-		safeVM := viewmodels.Quality{}
-
-		Id, _ := comm.AesEncrypt(strconv.Itoa(item.Id), conf.SignSecret)
-		BidsectionId, _ := comm.AesEncrypt(strconv.Itoa(item.BidsectionId), conf.SignSecret)
-		// AuditId, _ := comm.AesEncrypt(item.AuditId, conf.SignSecret)
-		Uid, _ := comm.AesEncrypt(strconv.Itoa(item.Uid), conf.SignSecret)
-		// ProjectId, _ := comm.AesEncrypt(strconv.Itoa(item.ProjectId), conf.SignSecret)
-
-		safeVM.Id = Id
-		safeVM.BidsectionId = BidsectionId
-		safeVM.Uid = Uid
-		safeVM.Code = item.Code
-		safeVM.CreateTime = item.CreateTime.Format(conf.SysTimeform)
-		safeVM.EndTime = item.EndTime.Format(conf.SysTimeform)
-		safeVM.Position = item.Position
-		safeVM.Inspection = item.Inspection
-		safeVM.InspectionDetail = item.InspectionDetail
-		safeVM.Demand = item.Demand
-		safeVM.Status = item.Status
-		safeList = append(safeList, safeVM)
-	}
-
-	return safeList
-}
-
-// 规则校验
-func (s *qualityService) ValidRule(ctx iris.Context) (viewmodels.Quality, error) {
-	qualityVaild := viewmodels.Quality{}
-	// fmt.Println("---------------------------safeVaild", safeVaild)
-	if ctx.Method() == "GET" {
-		err := ctx.ReadForm(&qualityVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
-			return qualityVaild, err
-		}
-		if ctx.Path() == s.validDetail {
-			// 一样要传id,所以用delete的方法判断
-			err = qualityVaild.ValidateQualityDelete()
-		} else {
-			err = qualityVaild.ValidateQualityList()
-		}
-		return qualityVaild, err
-	}
-
-	if ctx.Method() == "POST" {
-		err := ctx.ReadJSON(&qualityVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-			return qualityVaild, err
-		}
-		err = qualityVaild.ValidateQualityCreate()
-		return qualityVaild, err
-		// if ctx.Path() == s.validCreate {
-		// }
-		// if ctx.Path() == s.validFile {
-		// 	err = safeVaild.ValidateFile()
-		// 	return safeVaild, err
-		// }
-	}
-
-	if ctx.Method() == "PUT" {
-		err := ctx.ReadForm(&qualityVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
-			return qualityVaild, err
-		}
-		err = qualityVaild.ValidateQualityDelete()
-		return qualityVaild, err
-	}
-	return qualityVaild, nil
-
-}

+ 0 - 156
services/rule_service.go

@@ -1,156 +0,0 @@
-package services
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-	"log"
-	"strconv"
-
-	"go.mod/web/utils"
-
-	"github.com/kataras/iris/v12"
-	"go.mod/dao"
-	"go.mod/datasource"
-	"go.mod/web/viewmodels"
-)
-
-type RuleService interface {
-	Get(pid int, id int) viewmodels.ViewRule
-	Post(pid int, id int, key string, value string) error
-	AutoCode(bid int, pid int, codeType string) (string, string, error)
-	ValidRule(ctx iris.Context) (viewmodels.ValidField, error)
-}
-
-// //返回service操作类
-type ruleService struct {
-	daoRule         *dao.RuleDao
-	daoSafe         *dao.SafeDao
-	daoQuality      *dao.QualityDao
-	daoContract     *dao.ContractDao
-	daoContractPaid *dao.ContractPaidDao
-	validAutoPath   string
-}
-
-//创建项目用户service
-func NewRuleService() RuleService {
-	return &ruleService{
-		validAutoPath: "/api/rule/auto",
-		daoRule:       dao.NewRuleDao(datasource.InstanceDbMaster()),
-		daoSafe:       dao.NewSafeDao(datasource.InstanceDbMaster()),
-		daoQuality:    dao.NewQualityDao(datasource.InstanceDbMaster()),
-		daoContract:   dao.NewContractDao(datasource.InstanceDbMaster()),
-	}
-}
-
-func (s *ruleService) Get(pid int, id int) viewmodels.ViewRule {
-	data := s.daoRule.FindByPidWithBid(pid, id)
-	viewData := viewmodels.ViewRule{SafeRule: data.SafeRule, QualityRule: data.QualityRule, ContractPaidRule: data.ContractPaidRule, ContractReturnRule: data.ContractReturnRule}
-	return viewData
-}
-
-func (s *ruleService) Post(pid int, id int, key string, value string) error {
-	err := s.daoRule.UpdateOrCreate(pid, id, key, value)
-	return err
-}
-
-// 生成code
-func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, string, error) {
-	// 获取该标段的规则
-	rule := s.daoRule.FindByPidWithBid(pid, bid)
-	if codeType == "safeRule" {
-		if rule.SafeRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.SafeRule), &code)
-		total, err := s.daoSafe.CountRuleCode(bid)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.SafeRule, newCode, err
-
-	} else if codeType == "contractReturnRule" {
-		if rule.ContractReturnRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.ContractReturnRule), &code)
-		total, err := s.daoContract.CountRuleCode(bid, 1)
-		fmt.Printf("-----------------------", total)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.ContractReturnRule, newCode, err
-
-	} else if codeType == "contractPaidRule" {
-		if rule.ContractPaidRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
-		total, err := s.daoContract.CountRuleCode(bid, 2)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.ContractPaidRule, newCode, err
-
-	} else if codeType == "contractPaidRule" {
-		if rule.ContractPaidRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
-		total, err := s.daoContractPaid.CountPaidRuleCode(bid)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.ContractPaidRule, newCode, err
-
-	} else if codeType == "contractPaidRule" {
-		if rule.ContractPaidRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
-		total, err := s.daoContractPaid.CountPaidRuleCode(bid)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.ContractPaidRule, newCode, err
-	} else {
-		if rule.QualityRule == "" {
-			return "", "", errors.New("该标段未设置编号规则")
-		}
-		var code viewmodels.RuleCode
-		err := json.Unmarshal([]byte(rule.QualityRule), &code)
-		total, err := s.daoQuality.CountRuleCode(bid)
-		k, _ := strconv.Atoi(code.Code)
-		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
-		return rule.QualityRule, newCode, err
-	}
-}
-
-func (s *ruleService) ValidRule(ctx iris.Context) (viewmodels.ValidField, error) {
-	safeVaild := viewmodels.ValidField{}
-	if ctx.Method() == "GET" {
-		err := ctx.ReadForm(&safeVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
-			return safeVaild, err
-		}
-		err = safeVaild.Validate()
-		return safeVaild, err
-	}
-
-	if ctx.Method() == "POST" {
-		err := ctx.ReadJSON(&safeVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-			return safeVaild, err
-		}
-		if ctx.Path() == s.validAutoPath {
-			err = safeVaild.ValidateAuto()
-		} else {
-			err = safeVaild.Validate()
-		}
-
-	}
-	return safeVaild, nil
-
-}

+ 0 - 149
services/safe_audit.service.go

@@ -1,149 +0,0 @@
-/*
- * @description: 安全巡检审批相关
- * @Author: LanJianRong
- * @Date: 2020-12-18
- * @FilePath: \construction_management\web\api\safe_rpc_api.go
- */
-package services
-
-import (
-	"errors"
-	"log"
-	"time"
-
-	"github.com/kataras/iris/v12"
-	"go.mod/dao"
-	"go.mod/datasource"
-	"go.mod/web/viewmodels"
-)
-
-type SafeAuditService interface {
-	ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error)
-	ValidStart(ctx iris.Context) (viewmodels.AuditStart, error)
-	// AddAuditor(safeId int, bId int, auditId int, times int) error
-	CloseAudit(id int, opinion string, curUid int, saveId int) error
-	BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error
-	PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error
-	StartAudit(safeId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int, inspection string, inspectionDetail string, demand string, createTime time.Time) error
-}
-
-type safeAuditService struct {
-	validAdd     string
-	validPass    string
-	validClose   string
-	validBack    string
-	daoSafeAudit *dao.SafeAuditDao
-	daoSafe      *dao.SafeDao
-	daoApprover  *dao.ApproverDao
-	daoTree      *dao.TreeDao
-}
-
-//创建项目用户service
-func NewSafeAuditService() SafeAuditService {
-	return &safeAuditService{
-		validBack:    "/api/safe_audit/back",
-		validAdd:     "/api/safe_audit/add",
-		validClose:   "/api/safe_audit/close",
-		validPass:    "/api/safe_audit/pass",
-		daoSafeAudit: dao.NewSafeAuditDao(datasource.InstanceDbMaster()),
-		daoSafe:      dao.NewSafeDao(datasource.InstanceDbMaster()),
-		daoApprover:  dao.NewApproverDao(datasource.InstanceDbMaster()),
-		daoTree:      dao.NewTreeDao(datasource.InstanceDbMaster()),
-	}
-}
-
-// 关闭审批流程
-func (s *safeAuditService) CloseAudit(id int, opinion string, curUid int, saveId int) error {
-	err := s.daoApprover.CloseHandler("safe", id, opinion, curUid, saveId)
-	return err
-}
-
-// 审批退回
-func (s *safeAuditService) BackAudit(id int, opinion string, curUid int, saveId int, auditId int) error {
-	auditor, err := s.daoApprover.FindApproverById(id)
-	if auditor.AuditId != curUid {
-		return errors.New("该用户没有审批权限")
-	}
-	safe := s.daoSafe.FindById(saveId)
-
-	// 退回到了检查人
-	if auditId == 0 {
-		// 初始化审批流程
-		err = s.daoApprover.InitStatus("safe", auditor.BidsectionId, auditor.DataType, auditor.DataId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
-	} else {
-		// 退回到审批流程中的某一个人
-		err = s.daoApprover.BackHandlerWithId("safe", auditId, auditor.AuditId, safe.Times, auditor.Progress+1, opinion)
-	}
-	return err
-
-}
-
-// 审批通过
-func (s *safeAuditService) PassAudit(id int, uid int, auditId int, opinion string, rectifiedInfo string) error {
-	err := s.daoApprover.PassHandler("safe", id, uid, auditId, opinion, rectifiedInfo)
-	return err
-}
-
-func (s *safeAuditService) StartAudit(safeId int, bidsectionId int, auditors []int, reAuditors []int, uid int, pid int, inspection string, inspectionDetail string, demand string, createTime time.Time) error {
-	safe := s.daoSafe.FindById(safeId)
-	if safe.Uid != uid {
-		return errors.New("该用户没有操作权限")
-	}
-	// 清除可能有的旧的审批流程
-	err := s.daoApprover.DeleteOldAuditors(bidsectionId, 1, safeId)
-	if err != nil {
-		return err
-	}
-	// 增加审批日志
-	err = s.daoSafeAudit.AddAuditRecord(safeId, bidsectionId, uid, safe.Times, 0, 0, "", "")
-	if err != nil {
-		return err
-	}
-	// 改变安全巡检表的状态
-	err = s.daoSafe.ChangeStatus(safeId, 1, inspection, inspectionDetail, demand, createTime)
-	if err != nil {
-		return err
-	}
-	// 创建审批流程, 同时添加推送消息
-	err = s.daoApprover.InsertData(uid, bidsectionId, pid, 1, safeId, auditors, reAuditors)
-	return err
-}
-
-// 规则校验
-func (s *safeAuditService) ValidRule(ctx iris.Context) (viewmodels.SafeAudit, error) {
-	safeAuditVaild := viewmodels.SafeAudit{}
-	if ctx.Method() == "POST" {
-		err := ctx.ReadJSON(&safeAuditVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-			return safeAuditVaild, err
-		}
-		if ctx.Path() == s.validAdd {
-			err = safeAuditVaild.ValidateAddAuditor()
-			return safeAuditVaild, err
-		} else if ctx.Path() == s.validClose {
-			err = safeAuditVaild.ValidateClose()
-			return safeAuditVaild, err
-		} else if ctx.Path() == s.validBack {
-			err = safeAuditVaild.ValidateBack()
-			return safeAuditVaild, err
-		} else if ctx.Path() == s.validPass {
-			err = safeAuditVaild.ValidatePass()
-			return safeAuditVaild, err
-		}
-		return safeAuditVaild, err
-	}
-	return safeAuditVaild, nil
-}
-
-// 校验审批开始
-func (s *safeAuditService) ValidStart(ctx iris.Context) (viewmodels.AuditStart, error) {
-	startAuditValid := viewmodels.AuditStart{}
-	err := ctx.ReadJSON(&startAuditValid)
-	if err != nil {
-		log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-		return startAuditValid, err
-	}
-	err = startAuditValid.ValidateStart()
-	return startAuditValid, err
-}

+ 0 - 456
services/safe_service.go

@@ -1,456 +0,0 @@
-package services
-
-import (
-	"fmt"
-	"log"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/kataras/iris/v12"
-	"github.com/shopspring/decimal"
-	"go.mod/comm"
-	"go.mod/conf"
-	"go.mod/dao"
-	"go.mod/datasource"
-	"go.mod/models"
-	"go.mod/web/viewmodels"
-)
-
-type SafeService interface {
-	Get(id int, pid int, pageNo int, pageSize int) ([]viewmodels.SafeList, int64)
-	Post(data models.CmSafe) error
-	Del(id int) error
-	GetDetail(id int, pid int) viewmodels.SafeDetail
-
-	GetSurvey(projectId int, bidsectionId int) map[string]interface{}
-	GetPending(projectId int, projectAccountId int) []viewmodels.ApproverMessage
-	ValidRule(ctx iris.Context) (viewmodels.Safe, error)
-}
-
-// //返回service操作类
-type safeService struct {
-	daoSafe           *dao.SafeDao
-	daoQuality        *dao.QualityDao
-	daoSafeAudit      *dao.SafeAuditDao
-	daoProjectAccount *dao.ProjectAccountDao
-	daoAnnex          *dao.AnnexDao
-	daoRule           *dao.RuleDao
-	daoApprover       *dao.ApproverDao
-	daoTree           *dao.TreeDao
-	validDetail       string
-}
-
-//创建项目用户service
-func NewSafeService() SafeService {
-	return &safeService{
-		validDetail:       "/api/safe/detail",
-		daoSafe:           dao.NewSafeDao(datasource.InstanceDbMaster()),
-		daoQuality:        dao.NewQualityDao(datasource.InstanceDbMaster()),
-		daoAnnex:          dao.NewAnnexDao(datasource.InstanceDbMaster()),
-		daoSafeAudit:      dao.NewSafeAuditDao(datasource.InstanceDbMaster()),
-		daoProjectAccount: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
-		daoApprover:       dao.NewApproverDao(datasource.InstanceDbMaster()),
-		daoTree:           dao.NewTreeDao(datasource.InstanceDbMaster()),
-	}
-}
-func (s *safeService) Get(id int, pid int, pageNo int, pageSize int) ([]viewmodels.SafeList, int64) {
-	datalist, total := s.daoSafe.GetListByBid(id, pageNo, pageSize)
-	safeList := make([]viewmodels.SafeList, 0)
-	for _, item := range datalist {
-		safeVM := viewmodels.SafeList{}
-		safeVM.Code = item.Code
-		account := s.daoProjectAccount.Get(item.Uid, pid)
-		safeVM.AuditName = account.Name
-		safeVM.CreateTime = item.CreateTime.Format(conf.SysTimeform)
-		safeVM.Demand = item.Demand
-		id, _ := comm.AesEncrypt(strconv.Itoa(item.Id), conf.SignSecret)
-		safeVM.Id = id
-		safeVM.Inspection = item.Inspection
-		safeVM.InspectionDetail = item.InspectionDetail
-		safeVM.Position = item.Position
-		safeVM.Status = item.Status
-		counts, _ := s.daoAnnex.GetCount(3, item.Id)
-		safeVM.FileCounts = counts
-		safeList = append(safeList, safeVM)
-	}
-	return safeList, total
-}
-
-// post请求,插入单条数据
-func (s *safeService) Post(data models.CmSafe) error {
-	// has, err := s.daoSafe.FindByCode(data.Code)
-	// if err != nil {
-	// 	return err
-	// }
-	// if has {
-	// 	return errors.New("该编号已存在!")
-	// }
-	// _, err = s.daoSafe.InsertRecord(data)
-	// if err != nil {
-	// 	return err
-	// }
-	// counts, err := s.daoSafe.GetCountsByBid(data.BidsectionId, data.Status, true)
-	// err = s.daoTree.UpdateCounts("safe_total", counts, data.BidsectionId)
-	// if err != nil {
-	// 	return err
-	// }
-	// return nil
-	err := s.daoSafe.CreateSafe(data)
-	return err
-}
-
-// delete请求,删除数据
-func (s *safeService) Del(id int) error {
-	err := s.daoSafe.DeleteRecord(id)
-	return err
-}
-
-// 详情页数据拼装
-func (s *safeService) GetDetail(id int, pid int) viewmodels.SafeDetail {
-
-	safeData := s.daoSafe.FindById(id)
-	// fmt.Println(safeData)
-	safeId, _ := comm.AesEncrypt(strconv.Itoa(safeData.Id), conf.SignSecret)
-	bid, _ := comm.AesEncrypt(strconv.Itoa(safeData.BidsectionId), conf.SignSecret)
-	uid, _ := comm.AesEncrypt(strconv.Itoa(safeData.Uid), conf.SignSecret)
-	data := viewmodels.SafeDetail{}
-	data.Id = safeId
-	data.BidsectionId = bid
-	data.Uid = uid
-	data.Code = safeData.Code
-	data.Inspection = safeData.Inspection
-	data.InspectionDetail = safeData.InspectionDetail
-	data.Demand = safeData.Demand
-	account := s.daoProjectAccount.Get(safeData.Uid, pid)
-	data.AuditName = account.Name
-	data.CreateTime = safeData.CreateTime
-	data.Times = safeData.Times
-	data.Status = safeData.Status
-	fileList, total := s.daoAnnex.GetList(3, safeData.Id, 1, conf.PageSize)
-	// 加密id
-	fileArr := make([]viewmodels.AnnexListView, 0)
-	for _, item := range fileList {
-		fileListVM := viewmodels.AnnexListView{}
-		fileId, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-		fileListVM.Id = fileId
-		uid, _ := comm.AesEncrypt(item.AccountId, conf.SignSecret)
-		fileListVM.AccountId = uid
-		fileListVM.AccountName = item.AccountName
-		fileListVM.CreateTime = item.CreateTime
-		fileListVM.FileName = item.FileName
-		fileListVM.FilePath = item.FilePath
-		fileArr = append(fileArr, fileListVM)
-	}
-	fileVM := viewmodels.FileStruct{}
-	fileVM.FileList = fileArr
-	fileVM.Total = total
-	data.File = fileVM
-	auditors := s.daoApprover.GetAuditorsWithOwner(safeData.BidsectionId, int(1), safeData.Id, account.Id)
-	encryptAuditors := make([]viewmodels.Auditors, 0)
-	for _, item := range auditors {
-		auditorVM := viewmodels.Auditors{}
-		if item.Id != "" {
-			id, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-			auditorVM.Id = id
-		}
-		auditId, _ := comm.AesEncrypt(item.AuditId, conf.SignSecret)
-		auditorVM.AuditId = auditId
-		auditorVM.Name = item.Name
-		auditorVM.Position = item.Position
-		auditorVM.Mobile = item.Mobile
-		auditorVM.AuditOrder = item.AuditOrder
-		auditorVM.AccountGroup = item.AccountGroup
-		auditorVM.Progress = item.Progress
-		auditorVM.Company = item.Company
-		auditorVM.Status = item.Status
-		encryptAuditors = append(encryptAuditors, auditorVM)
-	}
-	auditHistory := s.daoSafeAudit.GetAuditHistory(safeData.Id, safeData.Times)
-	data.AuditHistory = auditHistory
-	// 整改单
-	rectifiedInfo, _ := s.daoSafeAudit.GetLastedOrder(safeData.Id)
-	data.RectifiedInfo = rectifiedInfo
-
-	// 最新审批人信息
-	latestAuditor := s.daoApprover.GetLastedAuditor(safeData.BidsectionId, 1, safeData.Id)
-	data.LatestdAuditor = latestAuditor
-	data.Auditors = encryptAuditors
-
-	return data
-}
-
-// 安全概况
-func (s *safeService) GetSurvey(projectId int, bidsectionId int) map[string]interface{} {
-	// 1.获得安全巡检
-	year := time.Now().Year()
-	safeList := s.daoSafe.GetTypeYear(bidsectionId, year)
-	// 2.初始化
-	rectifylist := make([]viewmodels.SafeSurveyList, 0)
-	rectifyTotal := 0
-	approvalTotal := 0
-	rectifyedTotal := 0
-
-	columnarData := make([]map[string]interface{}, 0)
-	lineData := columnarData
-	for i := 1; i <= 12; i++ {
-		item := map[string]interface{}{
-			"name":  "rectifyed",
-			"month": fmt.Sprintf("%d-%02d", year, i),
-			"count": 0,
-		}
-		columnarData = append(columnarData, item)
-		item = map[string]interface{}{
-			"name":  "submit",
-			"month": fmt.Sprintf("%d-%02d", year, i),
-			"count": 0,
-		}
-		columnarData = append(columnarData, item)
-		item = map[string]interface{}{
-			"month":      fmt.Sprintf("%d-%02d", year, i),
-			"percentage": 0,
-		}
-		lineData = append(lineData, item)
-
-	}
-
-	// 3.当年数据初始化
-	submitData := map[string]int{
-		fmt.Sprintf("%d-01", year): 0,
-		fmt.Sprintf("%d-02", year): 0,
-		fmt.Sprintf("%d-03", year): 0,
-		fmt.Sprintf("%d-04", year): 0,
-		fmt.Sprintf("%d-05", year): 0,
-		fmt.Sprintf("%d-06", year): 0,
-		fmt.Sprintf("%d-07", year): 0,
-		fmt.Sprintf("%d-08", year): 0,
-		fmt.Sprintf("%d-09", year): 0,
-		fmt.Sprintf("%d-10", year): 0,
-		fmt.Sprintf("%d-11", year): 0,
-		fmt.Sprintf("%d-12", year): 0,
-	}
-	rectifyedData := map[string]int{
-		fmt.Sprintf("%d-01", year): 0,
-		fmt.Sprintf("%d-02", year): 0,
-		fmt.Sprintf("%d-03", year): 0,
-		fmt.Sprintf("%d-04", year): 0,
-		fmt.Sprintf("%d-05", year): 0,
-		fmt.Sprintf("%d-06", year): 0,
-		fmt.Sprintf("%d-07", year): 0,
-		fmt.Sprintf("%d-08", year): 0,
-		fmt.Sprintf("%d-09", year): 0,
-		fmt.Sprintf("%d-10", year): 0,
-		fmt.Sprintf("%d-11", year): 0,
-		fmt.Sprintf("%d-12", year): 0,
-	}
-	for _, item := range safeList {
-		if item.Status == 2 {
-			id, _ := comm.AesEncrypt(item.Id, conf.SignSecret)
-			item.Id = id
-			rectifylist = append(rectifylist, item)
-			rectifyTotal++
-		}
-		// if item.Status == 1 {
-		// 	approvalTotal++
-		// }
-		approvalTotal++
-		if item.Status == 4 {
-			rectifyedTotal++
-		}
-
-		// for index, columnar := range columnarData {
-		// 	rectifyedCount := 0
-		// 	if columnar["month"] == item.CreateTime.Format(conf.SysTimeformMonth) {
-		// 		if item.Status == 4 && columnar["name"] == "rectifyed" {
-		// 			rectifyedCount++
-		// 		}
-		// 		columnarData[index]["count"] = columnarData[index]["count"].(int) + 1
-		// 		columnarData[index]["count"] = rectifyedCount
-		// 		// if item.Status == 0 && columnar["name"] == "submit" {
-
-		// 		// }
-		// 	}
-		// }
-		index := item.CreateTime.Format(conf.SysTimeformMonth)
-		submitData[index] = submitData[index] + 1
-		// if item.Status == 0 {
-		// 	submitData[item.CreateTime.Format(conf.SysTimeformMonth)] = submitData[item.CreateTime.Format(conf.SysTimeformMonth)] + 1
-		// }
-		if item.Status == 4 {
-			rectifyedData[index] = rectifyedData[index] + 1
-		}
-
-	}
-
-	for index, columnar := range columnarData {
-
-		if columnar["name"] == "rectifyed" {
-			columnarData[index]["count"] = rectifyedData[columnar["month"].(string)]
-		}
-		if columnar["name"] == "submit" {
-			columnarData[index]["count"] = submitData[columnar["month"].(string)]
-		}
-	}
-
-	for index, line := range lineData {
-		rectifyedCount := 0
-		submitCount := 0
-		for _, columnar := range columnarData {
-			if line["month"] == columnar["month"] {
-				if columnar["name"] == "rectifyed" {
-					rectifyedCount = columnar["count"].(int)
-				}
-				if columnar["name"] == "submit" {
-					submitCount = columnar["count"].(int)
-				}
-			}
-		}
-		lineData[index]["percentage"] = 0.00
-		if rectifyedCount != 0 && submitCount != 0 {
-			decimal.DivisionPrecision = 2
-			percentage, _ := decimal.NewFromFloat(float64(rectifyedCount)).Div(decimal.NewFromFloat(float64(submitCount))).Float64()
-			lineData[index]["percentage"] = percentage * 100
-		}
-	}
-
-	// 整改占总数比例 - 完成整改/提交巡检
-	surveryData := map[string]interface{}{
-		"rectifylist":    rectifylist,
-		"rectifyTotal":   rectifyTotal,
-		"approvalTotal":  approvalTotal,
-		"rectifyedTotal": rectifyedTotal,
-		"columnarData":   columnarData,
-		"lineData":       lineData,
-		// "submitData":     submitData,
-		// "rectifyedData":  rectifyedData,
-	}
-
-	return surveryData
-}
-
-// 获得账号下需要审批的巡检
-func (s *safeService) GetPending(projectId int, projectAccountId int) []viewmodels.ApproverMessage {
-
-	// 1.获得审批列表
-	approverData := s.daoApprover.GetStatusByProjectAndAccount(projectId, projectAccountId, 1)
-	// 2.构建数据ID
-	safeIds := []string{}
-	qualityIds := []string{}
-	for _, item := range approverData {
-		if item.DataType == 1 {
-			safeIds = append(safeIds, strconv.Itoa(item.DataId))
-		} else if item.DataType == 2 {
-			qualityIds = append(qualityIds, strconv.Itoa(item.DataId))
-		}
-	}
-	safeInId := strings.Join(safeIds, ",")
-	qualityInId := strings.Join(qualityIds, ",")
-
-	safeList := make([]viewmodels.SafeList, 0)
-	qualityList := make([]viewmodels.QualityList, 0)
-	if safeInId != "" {
-		safeList = s.daoSafe.GetInIdJoinAccount(safeInId)
-	}
-	if qualityInId != "" {
-		qualityList = s.daoQuality.GetInIdJoinAccount(qualityInId)
-	}
-
-	// data := s.daoSafe.GetStatusByProjectAndAccount(projectId, projectAccountId, 1)
-
-	list := make([]viewmodels.ApproverMessage, 0)
-	for _, item := range approverData {
-		approverVM := viewmodels.ApproverMessage{}
-
-		Id, _ := comm.AesEncrypt(strconv.Itoa(item.Id), conf.SignSecret)
-		// BidsectionId, _ := comm.AesEncrypt(strconv.Itoa(item.BidsectionId), conf.SignSecret)
-		// AuditId, _ := comm.AesEncrypt(item.AuditId, conf.SignSecret)
-		// ProjectId, _ := comm.AesEncrypt(strconv.Itoa(item.ProjectId), conf.SignSecret)
-		DataId, _ := comm.AesEncrypt(strconv.Itoa(item.DataId), conf.SignSecret)
-		// ProjectId, _ := comm.AesEncrypt(strconv.Itoa(item.ProjectId), conf.SignSecret)
-
-		approverVM.Id = Id
-		// approverVM.ProjectId = ProjectId
-		// approverVM.BidsectionId = BidsectionId
-		approverVM.DataType = item.DataType
-		approverVM.DataId = DataId
-		approverVM.Status = item.Status
-
-		dataIdString := strconv.Itoa(item.DataId)
-		// 安全巡检相关
-		if item.DataType == 1 {
-			for _, data := range safeList {
-				if dataIdString == data.Id {
-					approverVM.Code = data.Code
-					approverVM.InspectionDetail = data.InspectionDetail
-					approverVM.Name = data.AuditName
-					approverVM.Position = data.Position
-					approverVM.CreateTime = data.CreateTime
-					break
-				}
-			}
-		} else if item.DataType == 2 { // 质量巡检
-			for _, data := range qualityList {
-				if dataIdString == data.Id {
-					approverVM.Code = data.Code
-					approverVM.InspectionDetail = data.InspectionDetail
-					approverVM.Name = data.AuditName
-					approverVM.Position = data.Position
-					approverVM.CreateTime = data.CreateTime
-					break
-				}
-			}
-		}
-
-		list = append(list, approverVM)
-	}
-
-	return list
-}
-
-// 规则校验
-func (s *safeService) ValidRule(ctx iris.Context) (viewmodels.Safe, error) {
-	safeVaild := viewmodels.Safe{}
-	// fmt.Println("---------------------------safeVaild", safeVaild)
-	if ctx.Method() == "GET" {
-		err := ctx.ReadForm(&safeVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
-			return safeVaild, err
-		}
-		if ctx.Path() == s.validDetail {
-			// 一样要传id,所以用delete的方法判断
-			err = safeVaild.ValidateDelete()
-		} else {
-			err = safeVaild.ValidateList()
-		}
-		return safeVaild, err
-	}
-
-	if ctx.Method() == "POST" {
-		err := ctx.ReadJSON(&safeVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
-			return safeVaild, err
-		}
-		err = safeVaild.ValidateCreate()
-		return safeVaild, err
-		// if ctx.Path() == s.validCreate {
-		// }
-		// if ctx.Path() == s.validFile {
-		// 	err = safeVaild.ValidateFile()
-		// 	return safeVaild, err
-		// }
-	}
-
-	if ctx.Method() == "PUT" {
-		err := ctx.ReadForm(&safeVaild)
-		if err != nil {
-			log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
-			return safeVaild, err
-		}
-		err = safeVaild.ValidateDelete()
-		return safeVaild, err
-	}
-	return safeVaild, nil
-
-}

+ 0 - 152
web/api/rule_api.go

@@ -1,152 +0,0 @@
-/*
- * @description: 编号规则
- * @Author: LanJianRong
- * @Date: 2020-11-27
- * @FilePath: \construction_management\web\api\rule_api.go
- */
-
-package api
-
-import (
-	"fmt"
-
-	"github.com/kataras/iris/v12"
-	"go.mod/services"
-	"go.mod/web/utils"
-)
-
-type RuleApi struct {
-	//框架-web应用上下文环境
-	Ctx iris.Context
-	// 需要用的service
-	RuleService services.RuleService
-}
-
-// @Summary 获取编号规则
-// @Tags 编号规则
-// @Description 获得制定pid、bid的编号规则
-// @Accept  json
-// @Produce  json
-// @Security ApiKeyAuth
-// @Param   bidsectionId     path    string     true        "标段ID"
-// @Param   projectId     path    string     true        "项目ID"
-// @Success 200 {object} viewmodels.ViewRule "{code:0成功,data:viewmodels.Safe,msg:请求成功}"
-// @Failure 400 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
-// @Router /api/rule [get]
-func (c *RuleApi) Get() {
-	// 1.规则验证
-	safeData, err := c.RuleService.ValidRule(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
-		return
-	}
-	pid, err := utils.GetProjectId(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "项目id不存在, 请重新登录"})
-		return
-	}
-	bidsectionId, err := utils.GetDecryptId(safeData.BidsectionId)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "ReadJSON转换异常,请检查参数"})
-		return
-	}
-
-	rule := c.RuleService.Get(pid, bidsectionId)
-
-	c.Ctx.JSON(iris.Map{
-		"code": 0,
-		"msg":  "请求成功",
-		"data": rule,
-	})
-}
-
-// @Summary 提交编号规则
-// @Tags 编号规则
-// @Description 提交规则
-// @Accept  json
-// @Produce  json
-// @Security ApiKeyAuth
-// @Param   bidsectionId     body    string     true        "标段ID"
-// @Param   type 			body     string  true   "规则类型" eg:"safeRule、qualityRule、contractRule"
-// @Param   value 			body     string  true   "编号规则" eg:"'['202011', 'cc3']'"
-// @Success 200 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
-// @Failure 400 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
-// @Router /api/rule [post]
-func (c *RuleApi) Post() {
-	// 1.规则验证
-	safeData, err := c.RuleService.ValidRule(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
-		return
-	}
-	pid, err := utils.GetProjectId(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "项目id不存在, 请重新登录"})
-		return
-	}
-	bidsectionId, err := utils.GetDecryptId(safeData.BidsectionId)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "ReadJSON转换异常,请检查参数"})
-		return
-	}
-
-	err = c.RuleService.Post(pid, bidsectionId, safeData.Type, safeData.Rule)
-	if err == nil {
-		c.Ctx.JSON(iris.Map{
-			"code": 0,
-			"msg":  "请求成功",
-		})
-	} else {
-		c.Ctx.JSON(iris.Map{
-			"code": -1,
-			"msg":  fmt.Sprintf("%s", err),
-		})
-	}
-}
-
-// @Summary 生成编号
-// @Tags 编号规则
-// @Description 提交规则
-// @Accept  json
-// @Produce  json
-// @Security ApiKeyAuth
-// @Param   bidsectionId     body    string     true        "标段ID"
-// @Param   type 			body     string  true   "规则类型" eg:"safeRule、qualityRule、contractRule"
-// @Success 200 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
-// @Failure 400 {string} string	"{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
-// @Router /api/rule/auto [post]
-func (c *RuleApi) PostAuto() {
-	// 1.规则验证
-	safeData, err := c.RuleService.ValidRule(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
-		return
-	}
-	pid, err := utils.GetProjectId(c.Ctx)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "项目id不存在, 请重新登录"})
-		return
-	}
-	bidsectionId, err := utils.GetDecryptId(safeData.BidsectionId)
-	if err != nil {
-		c.Ctx.JSON(iris.Map{"code": -1, "msg": "ReadJSON转换异常,请检查参数"})
-		return
-	}
-	rule, newCode, err := c.RuleService.AutoCode(bidsectionId, pid, safeData.Type)
-	data := map[string]interface{}{
-		"rule":    rule,
-		"newCode": newCode,
-	}
-	if err != nil {
-		c.Ctx.JSON(iris.Map{
-			"code": -1,
-			"msg":  fmt.Sprintf("%s", err),
-		})
-	} else {
-		c.Ctx.JSON(iris.Map{
-			"code": 0,
-			"msg":  "请求成功",
-			"data": data,
-		})
-	}
-}

+ 0 - 122
web/viewmodels/quality.go

@@ -1,122 +0,0 @@
-/*
- * @description: 质量巡检
- * @Author: LanJianRong
- * @Date: 2020-11-18
- * @FilePath: \construction_management\web\viewmodels\quality.go
- */
-package viewmodels
-
-import (
-	"time"
-
-	validation "github.com/go-ozzo/ozzo-validation/v3"
-)
-
-type Quality struct {
-	Id           string `form:"id" json:"id" `
-	BidsectionId string `form:"bidsectionId" json:"bidsectionId"`
-
-	Uid              string `form:"uid" json:"uid" `
-	Code             string `form:"code" json:"code"`
-	CreateTime       string `form:"createTime" json:"createTime"`
-	EndTime          string `form:"endTime" json:"endTime"`
-	Position         string `form:"position" json:"position"`
-	Inspection       string `form:"inspection" json:"inspection"`
-	InspectionDetail string `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string `form:"demand" json:"demand"`
-	Status           int    `form:"status" json:"status"`
-	PageNo           int    `form:"pageNo" json:"pageNo"`
-	PageSize         int    `form:"pageSize" json:"pageSize"`
-}
-type QualityList struct {
-	Id               string `form:"id" json:"id" `
-	Code             string `form:"code" json:"code"`
-	CreateTime       string `form:"createTime" json:"createTime"`
-	Position         string `form:"position" json:"position"`
-	Inspection       string `form:"inspection" json:"inspection"`
-	InspectionDetail string `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string `form:"demand" json:"demand"`
-	Status           int    `form:"status" json:"status"`
-	AuditName        string `form:"auditName" json:"auditName"`
-	FileCounts       int64  `from:"fileCounts" json:"fileCounts"`
-}
-
-type QualitySurveyList struct {
-	Id               string    `form:"id" json:"id" `
-	CreateTime       time.Time `form:"createTime" json:"createTime"`
-	InspectionDetail string    `form:"inspectionDetail" json:"inspectionDetail"`
-	Status           int       `form:"status" json:"status"`
-	AuditName        string    `form:"auditName" json:"auditName"`
-}
-
-type QualityDetail struct {
-	Id           string `form:"id" json:"id" `
-	BidsectionId string `form:"bidsectionId" json:"bidsectionId"`
-
-	Uid              string                        `from:"uid" json:"uid"`
-	Code             string                        `form:"code" json:"code"`
-	CreateTime       time.Time                     `form:"createTime" json:"createTime"`
-	Position         string                        `form:"position" json:"position"`
-	Inspection       string                        `form:"inspection" json:"inspection"`
-	InspectionDetail string                        `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string                        `form:"demand" json:"demand"`
-	Times            int                           `from:"times" json:"times"`
-	Status           int                           `form:"status" json:"status"`
-	AuditName        string                        `form:"auditName" json:"auditName"`
-	File             FileStruct                    `form:"file" json:"file"`
-	Auditors         []Auditors                    `form:"auditors" json:"auditors"`
-	AuditHistory     map[int][]HistoryQualityAudit `from:"auditHistory" json:"auditHistory"`
-	RectifiedInfo    []CheckOrderVM                `from:"rectifiedInfo" json:"rectifiedInfo"`
-	LatestdAuditor   *Approver                     `from:"latestAuditor" json:"latestAuditor"`
-}
-
-// 单独出一个struct方便分页使用
-
-type QualityFile struct {
-	FileName    string    `from:"filename" json:"filename"`
-	FilePath    string    `from:"filepath" json:"filepath"`
-	AccountName string    `from:"account_name" json:"acountName"`
-	AccountId   string    `from:"account_id" json:"acountId"`
-	CreateTime  time.Time `from:"create_time" json:"createTime"`
-}
-
-type QualityListAuditRecord struct {
-	Name       string `form:"name" json:"name"`
-	CreateTime string `form:"create_time" json:"create_time"`
-}
-
-func (l Quality) ValidateQualityList() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.PageNo, validation.Required.Error("页码不能为空")),
-		validation.Field(&l.PageSize, validation.Required.Error("页数不能为空")),
-	)
-}
-
-func (l Quality) ValidateQualityCreate() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.CreateTime, validation.Required.Error("日期不能为空")),
-		validation.Field(&l.Code, validation.Required.Error("编号不能为空")),
-		// validation.Field(&l.Position, validation.Required.Error("检查部位不能为空")),
-		validation.Field(&l.Inspection, validation.Required.Error("检查项目不能为空")),
-	)
-}
-
-func (l Quality) ValidateQualityDelete() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("检查项目不能为空")),
-	)
-}
-
-func (l Quality) ValidateQualityBidsectionId() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-	)
-}
-
-func (l Quality) ValidateBidsectionId() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-	)
-}

+ 0 - 93
web/viewmodels/quality_audit.go

@@ -1,93 +0,0 @@
-/*
- * @description: 安全巡检-审批
- * @Author: LanJianRong
- * @Date: 2020-12-18
- * @FilePath: \construction_management\web\viewmodels\quality_audit.go
- */
-package viewmodels
-
-import (
-	"time"
-
-	validation "github.com/go-ozzo/ozzo-validation/v3"
-)
-
-type QualityAudit struct {
-	Id            string    `form:"id" json:"id"`
-	QualityId     string    `form:"quality_id" json:"quality_id"`
-	BidsectionId  string    `form:"bidsection_id" json:"bidsection_id"`
-	Times         int       `form:"times" json:"times"`
-	AuditId       string    `form:"audit_id" json:"audit_id"`
-	AuditOrder    int       `form:"audit_order" json:"audit_order"`
-	Status        int       `form:"status" json:"status"`
-	CreateTime    time.Time `form:"create_time" json:"create_time"`
-	EndTime       time.Time `form:"end_time" json:"end_time"`
-	Progress      string    `form:"progress" json:"progress"`
-	Opinion       string    `form:"opinion" json:"opinion"`
-	RectifiedInfo string    `form:"rectifiedInfo" json:"rectifiedInfo"`
-}
-
-type HistoryQualityAudit struct {
-	Id         string    `from:"id" json:"id"`
-	Name       string    `from:"name" json:"name"`
-	Position   string    `from:"position" json:"position"`
-	CreateTime time.Time `from:"create_time" json:"create_time"`
-	Opinion    string    `from:"opinion" json:"opinion"`
-	Status     int       `from:"status" json:"status"`
-	Progress   string    `from:"progress" json:"progress"`
-}
-
-func (l QualityAudit) ValidateQualityAddAuditor() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.QualityId, validation.Required.Error("巡检ID不能为空")),
-		validation.Field(&l.Times, validation.Required.Error("times不能为空")),
-		validation.Field(&l.AuditId, validation.Required.Error("审核人不能为空")),
-	)
-}
-
-func (l QualityAudit) ValidateQualityClose() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.QualityId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-
-func (l QualityAudit) ValidateQualityBack() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.QualityId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-func (l QualityAudit) ValidateQualityPass() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.QualityId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-
-type QualityAuditStart struct {
-	QualityId        string    `form:"quality_id" json:"quality_id"`
-	BidsectionId     string    `form:"bidsection_id" json:"bidsection_id"`
-	Times            int       `form:"times" json:"times"`
-	Auditors         []string  `form:"auditors" json:"auditors"`
-	ReAuditors       []string  `form:"reAuditors" json:"reAuditors"`
-	Inspection       string    `from:"inspection" json:"inspection"`
-	InspectionDetail string    `from:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string    `from:"demand" json:"demand"`
-	CreateTime       time.Time `from:"createTime" json:"createTime"`
-}
-
-func (l QualityAuditStart) ValidateQualityStart() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段id不能为空")),
-		validation.Field(&l.QualityId, validation.Required.Error("巡检id不能为空")),
-		validation.Field(&l.Times, validation.Required.Error("审批次数不能为空")),
-		validation.Field(&l.Auditors, validation.Required.Error("审批组不能为空")),
-		validation.Field(&l.ReAuditors, validation.Required.Error("复查组不能为空")),
-		validation.Field(&l.Inspection, validation.Required.Error("检查项目不能为空")),
-		validation.Field(&l.InspectionDetail, validation.Required.Error("现场检查不能为空")),
-		validation.Field(&l.Demand, validation.Required.Error("处理措施不能为空")),
-		validation.Field(&l.CreateTime, validation.Required.Error("检查日期不能为空")),
-	)
-}

+ 0 - 54
web/viewmodels/rule.go

@@ -1,54 +0,0 @@
-/*
- * @description: 编号规则
- * @Author: LanJianRong
- * @Date: 2020-11-27
- * @FilePath: \construction_management\web\viewmodels\rule.go
- */
-package viewmodels
-
-import validation "github.com/go-ozzo/ozzo-validation/v3"
-
-type Rule struct {
-	Id                 string `form:"id" json:"id" `
-	ProjectId          string `form:"projectId" json:"projectId" `
-	BidsectionId       string `form:"bidsectionId" json:"bidsectionId" `
-	SafeRule           string `form:"safeRule" json:"safeRule" `
-	QualityRule        string `form:"qualityRule" json:"qualityRule" `
-	ContractReturnRule string `form:"contractReturnRule" json:"contractReturnRule" `
-	ContractPaidRule   string `form:"contractPaidRule" json:"contractPaidRule" `
-}
-
-// 页面所需字段
-type ViewRule struct {
-	SafeRule           string `form:"safeRule" json:"safeRule" `
-	QualityRule        string `form:"qualityRule" json:"qualityRule" `
-	ContractReturnRule string `form:"contractReturnRule" json:"contractReturnRule" `
-	ContractPaidRule   string `form:"contractPaidRule" json:"contractPaidRule" `
-}
-
-type ValidField struct {
-	BidsectionId string `form:"bidsectionId" json:"bidsectionId" `
-	Type         string `form:"type" json:"type"`
-	Rule         string `form:"rule" json:"rule"`
-}
-
-type RuleCode struct {
-	Eg   string `from:"eg" json:"eg"`
-	Date string `from:"date" json:"date"`
-	Text string `from:"text" json:"text"`
-	Name string `from:"name" json:"name"`
-	Code string `from:"code" json:"code"`
-}
-
-func (l ValidField) Validate() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-	)
-}
-
-func (l ValidField) ValidateAuto() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.Type, validation.Required.Error("类型不能为空")),
-	)
-}

+ 0 - 131
web/viewmodels/safe.go

@@ -1,131 +0,0 @@
-/*
- * @description: 安全巡检
- * @Author: LanJianRong
- * @Date: 2020-11-18
- * @FilePath: \construction_management\web\viewmodels\safe.go
- */
-package viewmodels
-
-import (
-	"time"
-
-	validation "github.com/go-ozzo/ozzo-validation/v3"
-)
-
-type Safe struct {
-	Id           string `form:"id" json:"id" `
-	BidsectionId string `form:"bidsectionId" json:"bidsectionId"`
-
-	Uid              string `form:"uid" json:"uid" `
-	Code             string `form:"code" json:"code"`
-	CreateTime       string `form:"createTime" json:"createTime"`
-	EndTime          string `form:"endTime" json:"endTime"`
-	Position         string `form:"position" json:"position"`
-	Inspection       string `form:"inspection" json:"inspection"`
-	InspectionDetail string `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string `form:"demand" json:"demand"`
-	Status           int    `form:"status" json:"status"`
-	PageNo           int    `form:"pageNo" json:"pageNo"`
-	PageSize         int    `form:"pageSize" json:"pageSize"`
-}
-type SafeList struct {
-	Id               string `form:"id" json:"id" `
-	Code             string `form:"code" json:"code"`
-	CreateTime       string `form:"createTime" json:"createTime"`
-	Position         string `form:"position" json:"position"`
-	Inspection       string `form:"inspection" json:"inspection"`
-	InspectionDetail string `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string `form:"demand" json:"demand"`
-	Status           int    `form:"status" json:"status"`
-	AuditName        string `form:"auditName" json:"auditName"`
-	FileCounts       int64  `from:"fileCounts" json:"fileCounts"`
-}
-
-type SafeSurveyList struct {
-	Id               string    `form:"id" json:"id" `
-	CreateTime       time.Time `form:"createTime" json:"createTime"`
-	InspectionDetail string    `form:"inspectionDetail" json:"inspectionDetail"`
-	Status           int       `form:"status" json:"status"`
-	AuditName        string    `form:"auditName" json:"auditName"`
-}
-
-type SafeDetail struct {
-	Id           string `form:"id" json:"id" `
-	BidsectionId string `form:"bidsectionId" json:"bidsectionId"`
-
-	Uid              string                     `from:"uid" json:"uid"`
-	Code             string                     `form:"code" json:"code"`
-	CreateTime       time.Time                  `form:"createTime" json:"createTime"`
-	Position         string                     `form:"position" json:"position"`
-	Inspection       string                     `form:"inspection" json:"inspection"`
-	InspectionDetail string                     `form:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string                     `form:"demand" json:"demand"`
-	Times            int                        `from:"times" json:"times"`
-	Status           int                        `form:"status" json:"status"`
-	AuditName        string                     `form:"auditName" json:"auditName"`
-	File             FileStruct                 `form:"file" json:"file"`
-	Auditors         []Auditors                 `form:"auditors" json:"auditors"`
-	AuditHistory     map[int][]HistorySafeAudit `from:"auditHistory" json:"auditHistory"`
-	RectifiedInfo    []CheckOrderVM             `from:"rectifiedInfo" json:"rectifiedInfo"`
-	LatestdAuditor   *Approver                  `from:"latestAuditor" json:"latestAuditor"`
-}
-
-// 单独出一个struct方便分页使用
-type FileStruct struct {
-	Total    int64           `form:"total" json:"total"`
-	FileList []AnnexListView `form:"fileList" json:"fileList"`
-}
-type SafeFile struct {
-	FileName    string    `from:"filename" json:"filename"`
-	FilePath    string    `from:"filepath" json:"filepath"`
-	AccountName string    `from:"account_name" json:"acountName"`
-	AccountId   string    `from:"account_id" json:"acountId"`
-	CreateTime  time.Time `from:"create_time" json:"createTime"`
-}
-type Auditors struct {
-	Id           string `from:"id" json:"id"`
-	Name         string `from:"name" json:"name"`
-	Progress     string `from:"progress" json:"progress"`
-	AuditId      string `from:"audit_id" json:"audit_id"`
-	Position     string `from:"position" json:"position"`
-	AuditOrder   int    `from:"audit_order" json:"audit_order"`
-	AccountGroup int    `from:"account_group" json:"account_group"`
-	Company      string `from:"company" json:"company"`
-	Status       int    `from:"status" json:"status"`
-	Mobile       string `from:"mobile" json:"mobile"`
-}
-
-type SafeListAuditRecord struct {
-	Name       string `form:"name" json:"name"`
-	CreateTime string `form:"create_time" json:"create_time"`
-}
-
-func (l Safe) ValidateList() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.PageNo, validation.Required.Error("页码不能为空")),
-		validation.Field(&l.PageSize, validation.Required.Error("页数不能为空")),
-	)
-}
-
-func (l Safe) ValidateCreate() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.CreateTime, validation.Required.Error("日期不能为空")),
-		validation.Field(&l.Code, validation.Required.Error("编号不能为空")),
-		// validation.Field(&l.Position, validation.Required.Error("检查部位不能为空")),
-		validation.Field(&l.Inspection, validation.Required.Error("检查项目不能为空")),
-	)
-}
-
-func (l Safe) ValidateDelete() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("检查项目不能为空")),
-	)
-}
-
-func (l Safe) ValidateBidsectionId() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-	)
-}

+ 0 - 107
web/viewmodels/safe_audit.go

@@ -1,107 +0,0 @@
-/*
- * @description: 质量巡检-审批
- * @Author: LanJianRong
- * @Date: 2020-12-18
- * @FilePath: \construction_management\web\viewmodels\safe_audit.go
- */
-package viewmodels
-
-import (
-	"time"
-
-	validation "github.com/go-ozzo/ozzo-validation/v3"
-)
-
-type SafeAudit struct {
-	Id            string    `form:"id" json:"id"`
-	SafeId        string    `form:"safe_id" json:"safe_id"`
-	BidsectionId  string    `form:"bidsection_id" json:"bidsection_id"`
-	Times         int       `form:"times" json:"times"`
-	AuditId       string    `form:"audit_id" json:"audit_id"`
-	AuditOrder    int       `form:"audit_order" json:"audit_order"`
-	Status        int       `form:"status" json:"status"`
-	CreateTime    time.Time `form:"create_time" json:"create_time"`
-	EndTime       time.Time `form:"end_time" json:"end_time"`
-	Progress      string    `form:"progress" json:"progress"`
-	Opinion       string    `form:"opinion" json:"opinion"`
-	RectifiedInfo string    `form:"rectifiedInfo" json:"rectifiedInfo"`
-}
-
-type HistorySafeAudit struct {
-	Id         string    `from:"id" json:"id"`
-	Name       string    `from:"name" json:"name"`
-	Position   string    `from:"position" json:"position"`
-	CreateTime time.Time `from:"create_time" json:"create_time"`
-	Opinion    string    `from:"opinion" json:"opinion"`
-	Status     int       `from:"status" json:"status"`
-	Progress   string    `from:"progress" json:"progress"`
-}
-
-type LatestAuditorVM struct {
-	Id       string `from:"id" json:"id"`
-	AuditId  string `from:"audit_id" json:"audit_id"`
-	Status   int    `from:"status" json:"status"`
-	Progress string `form:"progress" json:"progress" `
-}
-
-// 整改单
-type CheckOrderVM struct {
-	Name       string    `from:"name" json:"name"`
-	CreateTime time.Time `from:"create_time" json:"create_time"`
-	Opinion    string    `from:"opinion" json:"opinion"`
-}
-
-func (l SafeAudit) ValidateAddAuditor() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
-		validation.Field(&l.SafeId, validation.Required.Error("巡检ID不能为空")),
-		validation.Field(&l.Times, validation.Required.Error("times不能为空")),
-		validation.Field(&l.AuditId, validation.Required.Error("审核人不能为空")),
-	)
-}
-
-func (l SafeAudit) ValidateClose() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.SafeId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-
-func (l SafeAudit) ValidateBack() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.SafeId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-func (l SafeAudit) ValidatePass() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.Id, validation.Required.Error("记录id不能为空")),
-		validation.Field(&l.SafeId, validation.Required.Error("巡检id不能为空")),
-	)
-}
-
-type AuditStart struct {
-	SafeId           string    `form:"safe_id" json:"safe_id"`
-	BidsectionId     string    `form:"bidsection_id" json:"bidsection_id"`
-	Times            int       `form:"times" json:"times"`
-	Auditors         []string  `form:"auditors" json:"auditors"`
-	ReAuditors       []string  `form:"reAuditors" json:"reAuditors"`
-	Inspection       string    `from:"inspection" json:"inspection"`
-	InspectionDetail string    `from:"inspectionDetail" json:"inspectionDetail"`
-	Demand           string    `from:"demand" json:"demand"`
-	CreateTime       time.Time `from:"createTime" json:"createTime"`
-}
-
-func (l AuditStart) ValidateStart() error {
-	return validation.ValidateStruct(&l,
-		validation.Field(&l.BidsectionId, validation.Required.Error("标段id不能为空")),
-		validation.Field(&l.SafeId, validation.Required.Error("巡检id不能为空")),
-		validation.Field(&l.Times, validation.Required.Error("审批次数不能为空")),
-		validation.Field(&l.Auditors, validation.Required.Error("审批组不能为空")),
-		validation.Field(&l.ReAuditors, validation.Required.Error("复查组不能为空")),
-		validation.Field(&l.Inspection, validation.Required.Error("检查项目不能为空")),
-		validation.Field(&l.InspectionDetail, validation.Required.Error("现场检查不能为空")),
-		validation.Field(&l.Demand, validation.Required.Error("处理措施不能为空")),
-		validation.Field(&l.CreateTime, validation.Required.Error("检查日期不能为空")),
-	)
-}