Browse Source

fix:用印作废调整为只允许申请者本人操作
用印作废后需要给审批流中的所有审批者发送用印已作废的消息

Roc 3 years ago
parent
commit
46ad9cb574

+ 1 - 0
controllers/contract.go

@@ -48,6 +48,7 @@ func (c *ContractCommon) UploadCheckBackFile() {
 	c.OkWithMessage("上传成功")
 }
 
+// Detail
 // @Title 获取合同详情
 // @Description 获取合同详情接口
 // @Param   ContractId   query   int  true       "合同id"

+ 2 - 1
models/tables/contract_approval/contract_approval.go

@@ -592,7 +592,7 @@ type SealApprovalList struct {
 	ContractId               int                     `description:"合同id"`
 	ContractApprovalRecordId int                     `description:"审批流id"`
 	ContractCode             string                  `description:"合同编号"`
-	Status                   string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
+	Status                   string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回','已签回',默认待审批"`
 	ApproveStatus            string                  `json:"-" description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
 	ApplyContent             string                  `description:"待审内容"`
 	ApplyUserId              int                     `description:"待审内容"`
@@ -611,6 +611,7 @@ type SealApprovalList struct {
 	ModifyTime               time.Time               `description:"最后一次修改的时间"`
 	ApproveTime              time.Time               `description:"审批时间"`
 	InvalidTime              time.Time               `description:"作废时间"`
+	CheckBackFileTime        time.Time               `description:"签回用印附件时间"`
 	StartDateStr             string                  `description:"合同开始日期(字符串类型)"`
 	EndDateStr               string                  `description:"合同结束日期(字符串类型)"`
 	CreateTimeStr            string                  `description:"发起审批的时间(字符串类型)"`

+ 2 - 2
models/tables/contract_approval_record/contract_approval_record.go

@@ -32,7 +32,7 @@ func GetContractApprovalRecordById(contractApprovalRecordId int) (contractApprov
 	return
 }
 
-//根据审批单id获取所有审批流列表信息
+// GetContractApprovalRecordListByContractApprovalId 根据审批单id获取所有审批流列表信息
 func GetContractApprovalRecordListByContractApprovalId(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`
@@ -40,7 +40,7 @@ func GetContractApprovalRecordListByContractApprovalId(contractApprovalId int) (
 	return
 }
 
-//根据审批单id获取所有审批流列表信息
+// GetContractApprovalRecordListByContractApprovalIdAndNodeId 根据审批单id获取所有审批流列表信息
 func GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, nodeId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
 	o := orm.NewOrm()
 	sql := `select * from contract_approval_record where contract_approval_id=? and node_id=? order by node_id,contract_approval_record_id asc`

+ 35 - 6
services/seal/seal.go

@@ -16,7 +16,7 @@ import (
 	"time"
 )
 
-//添加用印
+// AddSeal 添加用印
 func AddSeal(userId, contractId, fileNum int, userName, use, useCompanyName, companyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
 	useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
 	serviceTypeList := []string{"新签合同", "续约合同", "补充协议"}
@@ -60,7 +60,7 @@ func AddSeal(userId, contractId, fileNum int, userName, use, useCompanyName, com
 	return
 }
 
-//修改用印
+// Edit 修改用印
 func Edit(sealId, userId, contractId, fileNum int, use, companyName, userCompanyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
 	useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
 	serviceTypeList := []string{"新签合同", "续约合同", "补充协议"}
@@ -114,7 +114,7 @@ func Edit(sealId, userId, contractId, fileNum int, use, companyName, userCompany
 	return
 }
 
-//审批者修改用印
+// CheckEdit 审批者修改用印
 func CheckEdit(sealInfo *seal.Seal, approvalInfo *contract_approval.ContractApproval, approvalRecord *contract_approval_record.ContractApprovalRecord, fileNum int, fileUrl, use, sealType, remark string, opUser *custom.AdminWx) (err error) {
 	useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
 	sealTypeList := []string{"合同章", "公章", "法人章"}
@@ -219,7 +219,7 @@ func CheckEdit(sealInfo *seal.Seal, approvalInfo *contract_approval.ContractAppr
 	return
 }
 
-//审批人修改
+// checkEdit 审批人修改
 func checkEdit(sealInfo *seal.Seal, updateCol []string, approvalRecordId int, content string, opUser *custom.AdminWx) {
 	_ = sealInfo.Update(updateCol)
 
@@ -233,7 +233,7 @@ func checkEdit(sealInfo *seal.Seal, updateCol []string, approvalRecordId int, co
 	return
 }
 
-//作废用印
+// Invalid 作废用印
 func Invalid(sealId int, opUser *custom.AdminWx, isInvalidContract bool) (err error) {
 	//查询当前用印信息
 	sealInfo, err := seal.GetSealInfoById(sealId)
@@ -271,6 +271,35 @@ func Invalid(sealId int, opUser *custom.AdminWx, isInvalidContract bool) (err er
 			utils.ApiLog.Println("作废用印时,同步作废合同失败,Err:", err.Error())
 		}
 	}
+
+	//获取最近一次提交的审批单信息
+	contractApproval, err := contract_approval.GetLastContractApprovalByContractId(sealInfo.SealId, "seal")
+	if err != nil {
+		err = nil
+		return
+	}
+	//如果有提测信息,那么需要给对应的审批人发送消息
+	if contractApproval != nil {
+		//作废后需要给审批者发送消息
+		contractApprovalRecordList, tmpErr := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(contractApproval.ContractApprovalId)
+		if tmpErr != nil {
+			return
+		}
+		content := fmt.Sprint("作废", sealInfo.CompanyName, "用印申请")
+		for _, contractApprovalRecord := range contractApprovalRecordList {
+			if contractApprovalRecord.NodeType == "check" { //如果是审批人,那么需要发送消息给对方
+				//操作人信息
+				sysUserMobile := ""
+				sysUser, _ := admin.GetAdminById(contractApprovalRecord.ApproveUserId)
+				if sysUser != nil {
+					sysUserMobile = sysUser.Mobile
+				}
+				go services.AddCompanyApprovalMessage(opUser.AdminId, contractApprovalRecord.ApproveUserId, 0, contractApprovalRecord.ContractApprovalRecordId, 3, sourceType, 2, sealInfo.CompanyName, content, content, sysUserMobile)
+
+			}
+		}
+	}
+
 	//添加操作日志
 	//remark := "作废合同模板"
 	//_ = contract_operation_record.AddContractOperationRecord(nowContract.ContractId, opUser.AdminId, 0, "invalid", opUser.RealName, remark)
@@ -360,7 +389,7 @@ func GetOpButton(sealInfo *seal.Seal, contractApprovalInfo *contract_approval.Co
 	}
 
 	//作废权限
-	if (opUser.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || opUser.AdminId == sealInfo.UserId) && sealInfo.Status == "已审批" {
+	if opUser.AdminId == sealInfo.UserId && sealInfo.Status == "已审批" {
 		sealOpButton.Invalid = true
 	}