Эх сурвалжийг харах

Merge branch 'crm1.0' into debug

Roc 3 жил өмнө
parent
commit
eb05380969

+ 29 - 2
controllers/seal_approval.go

@@ -314,7 +314,7 @@ func (this *SealApprovalCommon) detailByApprovalRecordId(approvalRecordId int) {
 
 // @Title 驳回审批
 // @Description 驳回审批接口
-// @Param	request	body contract.RejectReq true "type json string"
+// @Param	request	body seal.RejectReq true "type json string"
 // @Success Ret=200 驳回成功
 // @router /reject [post]
 func (this *SealApprovalCommon) Reject() {
@@ -347,7 +347,7 @@ func (this *SealApprovalCommon) Reject() {
 
 // @Title 处理审批单
 // @Description 处理审批单
-// @Param	request	body contract.ApprovedReq true "type json string"
+// @Param	request	body seal.ApprovedReq true "type json string"
 // @Success Ret=200 申请成功
 // @router /approved [post]
 func (this *SealApprovalCommon) Approved() {
@@ -377,3 +377,30 @@ func (this *SealApprovalCommon) Approved() {
 	}
 	this.OkWithMessage("审核通过")
 }
+
+// @Title 撤回审批申请
+// @Description 撤回审批申请接口
+// @Param   SealId   query   int  true       "用印id编号"
+// @Success Ret=200 撤回申请成功
+// @router /cancelApply [get]
+func (this *SealApprovalCommon) CancelApply() {
+	//用印id编号
+	sealId, err := this.GetInt("SealId")
+	if err != nil {
+		this.FailWithMessage("获取审批流编号失败", "获取审批流编号失败,err:"+err.Error())
+		return
+	}
+
+	//获取用印信息
+	sealInfo, err := seal.GetSealInfoById(sealId)
+	if err != nil {
+		this.FailWithMessage("获取审批流信息失败", "获取审批流信息失败,err:"+err.Error())
+		return
+	}
+	err = sealService.CancelApply(sealInfo, this.AdminWx.AdminId)
+	if err != nil {
+		this.FailWithMessage("撤回申请失败!", "撤回申请失败,Err:"+err.Error())
+		return
+	}
+	this.OkWithMessage("撤回申请成功")
+}

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

@@ -209,7 +209,7 @@ func (ContractApproval) Cancel(contractApprovalInfo *ContractApproval, contractA
 	//变更审批单记录
 	contractApprovalInfo.Status = "已撤回"
 	contractApprovalInfo.ModifyTime = time.Now()
-	_, err = o.Update(contractApprovalInfo)
+	_, err = o.Update(contractApprovalInfo, "Status", "ModifyTime")
 	if err != nil {
 		return
 	}
@@ -218,7 +218,7 @@ func (ContractApproval) Cancel(contractApprovalInfo *ContractApproval, contractA
 	for _, contractApprovalRecord := range contractApprovalRecordList {
 		contractApprovalRecord.Status = "已撤回"
 		contractApprovalRecord.ModifyTime = time.Now()
-		_, tmpErr := o.Update(contractApprovalRecord)
+		_, tmpErr := o.Update(contractApprovalRecord, "Status", "ModifyTime")
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 72 - 0
services/seal/approval.go

@@ -7,11 +7,13 @@ import (
 	"hongze/hongze_mobile_admin/models/custom"
 	"hongze/hongze_mobile_admin/models/tables/admin"
 	"hongze/hongze_mobile_admin/models/tables/approval_flow_node"
+	"hongze/hongze_mobile_admin/models/tables/company_approval_message"
 	"hongze/hongze_mobile_admin/models/tables/contract_approval"
 	"hongze/hongze_mobile_admin/models/tables/contract_approval_record"
 	"hongze/hongze_mobile_admin/models/tables/seal"
 	"hongze/hongze_mobile_admin/services"
 	"hongze/hongze_mobile_admin/services/flow"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -116,6 +118,76 @@ func Apply(sealInfo *seal.Seal) (err error) {
 	return
 }
 
+//撤销合同
+func CancelApply(sealInfo *seal.Seal, opUserId int) (err error) {
+	if sealInfo == nil {
+		err = errors.New("审批流异常,没有审批流信息")
+		return
+	}
+
+	//用印状态判断
+	if sealInfo.Status != "待审批" {
+		err = errors.New("用印状态异常,不允许撤回申请,当前用印状态:" + sealInfo.Status)
+		return
+	}
+
+	//校验操作人与合同申请人是否同一人
+	if sealInfo.UserId != opUserId {
+		err = errors.New("操作人异常,不允许撤回非本人提交的申请:" + strconv.Itoa(sealInfo.UserId))
+		return
+	}
+
+	//获取最近一次待审批的审批单信息
+	approvalInfo, err := contract_approval.GetLastContractApprovalByContractId(sealInfo.SealId, "seal")
+	if err != nil {
+		return
+	}
+	if approvalInfo.Status != "待审批" {
+		err = errors.New("审批单状态异常,审批单状态:" + sealInfo.Status)
+		return
+	}
+	//获取当前审批单的审批流信息
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(approvalInfo.ContractApprovalId, approvalInfo.CurrNodeId)
+	if err != nil {
+		err = errors.New("获取审批失败,Err:" + err.Error())
+		return
+	}
+	if len(approvalRecordList) <= 0 {
+		err = errors.New("找不到对应的审批流")
+	}
+	for _, tmpApprovalRecord := range approvalRecordList {
+		//判断当前节点是否存在上级节点,如果存在,那么说明
+		if tmpApprovalRecord.PrevNodeId > 0 {
+			err = errors.New("合同已存在审批操作,不允许撤回申请")
+			return
+		}
+
+	}
+
+	//获取当前审批单中所有待审批的流程流
+	contractApprovalRecordList, err := contract_approval_record.GetPendingContractApprovalRecordListByContractId(approvalInfo.ContractApprovalId, approvalInfo.CurrNodeId)
+	if err != nil {
+		return
+	}
+
+	//撤回审批流
+	err = approvalInfo.Cancel(approvalInfo, contractApprovalRecordList)
+	if err != nil {
+		return
+	}
+
+	////添加操作日志
+	//remark := "撤回申请"
+	//_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, contractInfo.SellerId, contractApprovalRecord.ContractApprovalRecordId, "cancel_apply", contractInfo.SellerName, remark)
+
+	//作废原有消息
+	for _, contractApprovalRecord := range contractApprovalRecordList {
+		go company_approval_message.CancelCompanyApprovalMessage(contractApprovalRecord.ContractApprovalRecordId, 2)
+	}
+
+	return
+}
+
 //校验审批操作权限
 func CheckApproveAuth(sealId int, opUser *custom.AdminWx) (sealInfo *seal.Seal, approvalInfo *contract_approval.ContractApproval, approvalRecord *contract_approval_record.ContractApprovalRecord, err error) {
 	//用印详情