123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package contract
- import (
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- //合同审批单
- type ContractApprovalRecord struct {
- ContractApprovalRecordId int `orm:"column(contract_approval_record_id);pk"`
- ContractApprovalId int `orm:"column(contract_approval_id)" description:"审批单id"`
- Status string `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
- ApproveRemark string `description:"审批人备注,可以是驳回理由,长度128位"`
- ApproveRoleTypeCode string `description:"审批人角色类型,长度36位"`
- ApproveUserId int `description:"审批人id"`
- ApproveUserName string `description:"审批人名称"`
- NodeId int `description:"当前审批节点id"`
- NodeType string `description:"节点类型,审批人:check;抄送人:cc(Carbon Copy)"`
- PrevNodeId int `description:"上级节点id"`
- NextNodeId int `description:"下级节点id"`
- AuditType int `description:"多人审批时,1:或签(一名审批人同意即可),2:会签(需所有审批人同意)"`
- ApproveTime time.Time `description:"审批时间"`
- ModifyTime time.Time `description:"发起申请时间"`
- CreateTime time.Time `description:"最近一次审批单修改时间"`
- }
- //根据合同审批记录id获取合同流程记录信息
- func GetContractApprovalRecordById(contractApprovalRecordId int) (contractApprovalRecordInfo *ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select * from contract_approval_record where contract_approval_record_id = ? `
- err = o.Raw(sql, contractApprovalRecordId).QueryRow(&contractApprovalRecordInfo)
- return
- }
- //根据审批单id获取当前待审批的合同审批流信息
- func GetCurrContractApprovalRecordByContractId(contractApprovalId int) (contractApprovalRecordInfo *ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select a.* from contract_approval_record a
- left join contract_approval b on a.contract_approval_id=b.contract_approval_id and a.node_id=b.curr_node_id
- where a.status = "待审批"
- AND a.contract_approval_id=? order by a.node_id asc`
- err = o.Raw(sql, contractApprovalId).QueryRow(&contractApprovalRecordInfo)
- return
- }
- //根据审批单id和节点id获取当前待审批的合同审批流信息列表
- func GetPendingContractApprovalRecordListByContractId(contractApprovalId, nodeId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select a.* from contract_approval_record a
- left join contract_approval b on a.contract_approval_id=b.contract_approval_id
- where a.status = "待审批"
- AND a.contract_approval_id=? AND node_id >= ? order by a.node_id asc`
- _, err = o.Raw(sql, contractApprovalId, nodeId).QueryRows(&contractApprovalRecordList)
- return
- }
- //根据审批单id和节点id获取当前节点的合同审批流信息列表
- func GetContractApprovalRecordListByContractIdAndNode(contractApprovalId, nodeId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select a.* from contract_approval_record a
- join contract_approval b on a.contract_approval_id=b.contract_approval_id
- where 1=1
- AND a.contract_approval_id=? AND node_id = ? order by a.node_id asc`
- _, err = o.Raw(sql, contractApprovalId, nodeId).QueryRows(&contractApprovalRecordList)
- return
- }
- //根据审批单id和节点id获取当前节点的合同审批流信息列表
- func GetContractApprovalRecordListByContractApprovalId(contractApprovalId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select a.* from contract_approval_record a
- join contract_approval b on a.contract_approval_id=b.contract_approval_id
- AND a.contract_approval_id=? AND node_type = "cc" order by a.node_id asc`
- _, err = o.Raw(sql, contractApprovalId).QueryRows(&contractApprovalRecordList)
- return
- }
- //根据审批单id获取最近一次待审批的合同审批流信息
- func GetLastPendingContractApprovalRecordByContractId(contractApprovalId int) (contractApprovalRecordInfo *ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select * from contract_approval_record where status = "待审批"
- AND contract_approval_id=? order by contract_approval_record_id desc`
- err = o.Raw(sql, contractApprovalId).QueryRow(&contractApprovalRecordInfo)
- return
- }
- //根据审批单id批量获取最新的审批流列表数据
- func GetContractApprovalRecordListOld(contractApprovalIds string) (list []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.* from contract_approval_record a
- join
- ( SELECT max( contract_approval_record_id ) max_id,contract_approval_id FROM contract_approval_record where contract_approval_id in (` + contractApprovalIds + `) GROUP BY contract_approval_id `
- sql += ` ) b on a.contract_approval_record_id=b.max_id
- WHERE a.contract_approval_id in (` + contractApprovalIds + `) `
- sql += ` order by contract_approval_record_id desc `
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- func GetContractApprovalRecordList(contractApprovalIds string, approveUserId int) (list []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.* from contract_approval_record a
- join contract_approval b on a.contract_approval_id = b.contract_approval_id and a.node_id=b.curr_node_id
- WHERE a.contract_approval_id in (` + contractApprovalIds + `) AND (approve_user_id = ? or approve_user_id=0)`
- sql += ` order by contract_approval_record_id desc `
- _, err = o.Raw(sql, approveUserId).QueryRows(&list)
- return
- }
- // GetContractApprovalRecordListByContractApprovalIds 根据审批单IDs获取审批节点列表
- func GetContractApprovalRecordListByContractApprovalIds(contractApprovalIds string) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM contract_approval_record WHERE contract_approval_id IN (` + contractApprovalIds + `)`
- _, err = o.Raw(sql).QueryRows(&contractApprovalRecordList)
- return
- }
- // GetApprovalRecordListByApprovalId 获取指定ID审批单下的审批节点列表
- func GetApprovalRecordListByApprovalId(contractApprovalId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `select * from contract_approval_record where contract_approval_id=? order by node_id,contract_approval_record_id asc`
- _, err = o.Raw(sql, contractApprovalId).QueryRows(&contractApprovalRecordList)
- return
- }
- // GetSelfContractApprovalRecordList 根据审批单id批量获取自己的审批流列表数据
- func GetSelfContractApprovalRecordList(contractApprovalIds string, approveUserId int) (list []*ContractApprovalRecord, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.* from contract_approval_record a
- join contract_approval b on a.contract_approval_id = b.contract_approval_id
- WHERE a.contract_approval_id in (` + contractApprovalIds + `) AND (approve_user_id = ? or approve_user_id=?)
- and a.node_id<=b.curr_node_id`
- sql += ` order by contract_approval_record_id desc `
- _, err = o.Raw(sql, approveUserId, approveUserId).QueryRows(&list)
- return
- }
|