Преглед изворни кода

后端: 一键审批接口添加协成和互斥锁

baichengfei пре 4 година
родитељ
комит
3ea28a19d3
1 измењених фајлова са 32 додато и 18 уклоњено
  1. 32 18
      src/dashoo.cn/backend/api/controllers/oilcontract/contractReview.go

+ 32 - 18
src/dashoo.cn/backend/api/controllers/oilcontract/contractReview.go

@@ -7,6 +7,7 @@ import (
 	"dashoo.cn/backend/api/business/oilsupplier/supplier"
 	"dashoo.cn/backend/api/business/organize"
 	"dashoo.cn/business2/permission"
+	"sync"
 
 	"dashoo.cn/backend/api/business/baseUser"
 	"dashoo.cn/backend/api/business/oilcontract/contractReview"
@@ -792,7 +793,7 @@ func (this *OilContractReviewController) UnitAuditEntity() {
 	}
 }
 
-// @Title 分办之后的各级审批  --审批 包含:二级单位初审、复审, 业务处室专业审核
+// @Title 分办之后的各级审批  --审批 包含:二级单位初审、复审, 业务处室专业审核、企管法规处审核
 // @Description 分办之后的各级审批
 // @Success	200	{object} controllers.Request
 // @router /common-audit/:id [post]
@@ -823,7 +824,9 @@ func (this *OilContractReviewController) CommonAuditEntity() {
 
 	if Id != "" {
 		Ids := strings.Split(Id, ",")
+		var lock sync.Mutex
 		for i := 0; i < len(Ids); i++ {
+			lock.Lock()
 			//取出日常评审主表信息
 			conRev := contractReview.GetOilContractReviewService(utils.DBE)
 			var contractReviewEntity contractReview.OilContractReview
@@ -837,10 +840,14 @@ func (this *OilContractReviewController) CommonAuditEntity() {
 			ActiComplete.Result = result       //前台审批[同意、不同意]
 			ActiComplete.Remarks = AuditRemark
 			ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
-			receiveVal := svcActiviti.TaskComplete(ActiComplete)
-			if receiveVal != "true" {
-				panic("工作流异常,请联系管理员!" + receiveVal)
-			}
+
+			go func() {
+				receiveVal := svcActiviti.TaskComplete(ActiComplete)
+				if receiveVal != "true" {
+					panic("工作流异常,请联系管理员!" + receiveVal)
+				}
+			}()
+			lock.Unlock()
 		}
 	}
 }
@@ -872,7 +879,9 @@ func (this *OilContractReviewController) BusinessOfficeSeparateAuditEntity() {
 
 	if Id != "" {
 		Ids := strings.Split(Id, ",")
+		var lock sync.Mutex
 		for i := 0; i < len(Ids); i++ {
+			lock.Lock()
 			//取出日常评审主表信息
 			conRev := contractReview.GetOilContractReviewService(utils.DBE)
 			var contractReviewEntity contractReview.OilContractReview
@@ -887,19 +896,24 @@ func (this *OilContractReviewController) BusinessOfficeSeparateAuditEntity() {
 			ActiComplete.UserNames = ProfessionalAudit
 			ActiComplete.Remarks = AuditRemark
 			ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
-			receiveVal := svcActiviti.TaskComplete(ActiComplete)
-			if receiveVal != "true" {
-				panic("工作流异常,请联系管理员!" + receiveVal)
-			}
-			cols := []string{
-				"Id",
-				"Status",
-				"ProfessionalAudit",
-			}
-			supplierCertId := strings.Split(contractReviewEntity.BusinessKey, "-")[0]
-			contractReviewEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
-			contractReviewEntity.ProfessionalAudit, _ = strconv.Atoi(ProfessionalAudit)
-			conRev.UpdateEntityByIdCols(supplierCertId, contractReviewEntity, cols)
+
+			go func() {
+				receiveVal := svcActiviti.TaskComplete(ActiComplete)
+				if receiveVal != "true" {
+					panic("工作流异常,请联系管理员!" + receiveVal)
+				}
+				cols := []string{
+					"Id",
+					"Status",
+					"ProfessionalAudit",
+				}
+				supplierCertId := strings.Split(contractReviewEntity.BusinessKey, "-")[0]
+				contractReviewEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
+				contractReviewEntity.ProfessionalAudit, _ = strconv.Atoi(ProfessionalAudit)
+				conRev.UpdateEntityByIdCols(supplierCertId, contractReviewEntity, cols)
+				fmt.Println("业务处室分办协程!" + strconv.Itoa(i))
+			}()
+			lock.Unlock()
 		}
 	}
 }