|
@@ -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) {
|
|
|
//用印详情
|