Explorar o código

合同日常评审工作流;项目配置一级接口返回子级

baichengfei %!s(int64=5) %!d(string=hai) anos
pai
achega
e988aca2c4

+ 7 - 0
src/dashoo.cn/backend/api/business/oilcontract/contractReview/contractReview.go

@@ -5,10 +5,17 @@ import (
 type OilContractReview struct {
 	Id             int       `json:"Id" xorm:"not null pk INT(11) 'Id'"`
 	ContractId     int       `json:"ContractId" xorm:"not null comment('合同表Id') INT(11) 'ContractId'"`
+	Status         string    `xorm:"not null default '0' VARCHAR(10)"`
 	WorkflowId     string    `json:"WorkflowId" xorm:"default '0' comment('工作流的ID') VARCHAR(50) 'WorkflowId'"`
 	BusinessKey    string    `json:"BusinessKey" xorm:"comment('流程序号') VARCHAR(255) 'BusinessKey'"`
 	ProcessKey     string    `json:"ProcessKey" xorm:"comment('工作流名称') VARCHAR(255) 'ProcessKey'"`
 	BackRemark     string    `json:"BackRemark" xorm:"comment('退回原因') VARCHAR(255) 'BackRemark'"`
+	FirstAudit        int       `xorm:"default 0 comment('初审') INT(10)"`
+	SecondAudit       int       `xorm:"default 0 comment('复审') INT(10)"`
+	ThirdAudit        int       `xorm:"default 0 comment('专业科室审批') INT(10)"`
+	ProfessionalAudit int       `xorm:"default 0 comment('业务处室专业审批') INT(10)"`
+	FourthAudit       int       `xorm:"default 0 comment('集中审批') INT(10)"`
+	AuditIndex        int       `xorm:"default 0 comment('审批次数') INT(11)"`
 	CreateOn       time.Time `json:"CreateOn" xorm:"DATETIME 'CreateOn'"`
 	CreateUserId   int       `json:"CreateUserId" xorm:"INT(11) 'CreateUserId'"`
 	CreateBy       string    `json:"CreateBy" xorm:"VARCHAR(50) 'CreateBy'"`

+ 19 - 0
src/dashoo.cn/backend/api/business/oilcontract/evaluationItems/evaluationItems.go

@@ -21,3 +21,22 @@ type OilEvaluationItems struct {
 	ModifiedUserId int       `json:"ModifiedUserId" xorm:"INT(11) 'ModifiedUserId'"`
 	ModifiedBy     string    `json:"ModifiedBy" xorm:"VARCHAR(50) 'ModifiedBy'"`
 }
+
+type DailyItems struct {
+	Id             int       `json:"Id"`
+	ParentId       int       `json:"ParentId"`
+	Type           string    `json:"Type"`
+	SequenceNo     string    `json:"SequenceNo"`
+	Content        string    `json:"content"`
+	NormalScore    string    `json:"NormalScore"`
+	LevelCode      int       `json:"LevelCode"`
+	Remark         string    `json:"Remark"`
+	IsDelete       int       `json:"IsDelete"`
+	CreateOn       time.Time `json:"CreateOn"`
+	CreateUserId   int       `json:"CreateUserId"`
+	CreateBy       string    `json:"CreateBy"`
+	ModifiedOn     time.Time `json:"ModifiedOn"`
+	ModifiedUserId int       `json:"ModifiedUserId"`
+	ModifiedBy     string    `json:"ModifiedBy"`
+	Son			   []DailyItems
+}

+ 4 - 0
src/dashoo.cn/backend/api/business/workflow/workflow.go

@@ -106,6 +106,10 @@ const (
 	OIL_INFO_CHANGE string = "oil_info_change"
 	//年审流程
 	OIL_AUDIT_APPLY string = "oil_audit_apply"
+	//合同日常评审流程
+	OIL_DAILY_CONTRACT_EVALUATION string = "oil_daily_contract_evaluation"
+	//合同年度评审流程
+	OIL_ANNUAL_CONTRACT_EVALUATION string = "oil_annual_contract_evaluation"
 
 	// 企业注册
 	OIL_REGISTER_APPLY string = "oil_register_apply"

+ 246 - 0
src/dashoo.cn/backend/api/controllers/oilcontract/contractReview.go

@@ -1,8 +1,12 @@
 package oilcontract
 
 import (
+	"dashoo.cn/backend/api/business/oilcontract/contract"
 	"dashoo.cn/backend/api/business/oilcontract/contractReview"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercert"
+	"dashoo.cn/backend/api/business/workflow"
 	"encoding/json"
+	"strconv"
 	"strings"
 	"time"
 
@@ -274,3 +278,245 @@ func (this *OilContractReviewController) DeleteEntity() {
 }
 
 
+
+// @Title 二级单位提交审批 --启动工作流
+// @Description 二级单位提交审批
+// @Success	200	{object} controllers.Request
+// @router /unit-audit/:id [post]
+func (this *OilContractReviewController) UnitAuditEntity() {
+	Id := this.Ctx.Input.Param(":id")
+	firstAudit := this.GetString("FirstAudit")
+	secondAudit := this.GetString("SecondAudit")
+	thirdAudit := this.GetString("ThirdAudit")
+	AuditRemark := this.GetString("AuditRemark")
+	userId := this.User.Id
+	var baseUserInfo userRole.Base_User
+	userService := userRole.GetUserService(utils.DBE)
+	userService.GetEntityById(userId, &baseUserInfo)
+	//unitId := baseUserInfo.UnitId
+
+	var errinfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errinfo.Message = err.(string)
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "审核提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出日常评审主表信息
+	conRev := contractReview.GetOilContractReviewService(utils.DBE)
+	var contractReviewEntity contractReview.OilContractReview
+	conRev.GetEntityById(Id, &contractReviewEntity)
+	//检查是否可提交
+	//conRev.IsSupplierCertCanSubmit(strconv.Itoa(supplierCertEntity.SupplierId), certId)
+	//取出合同表
+	contractSvc := contract.GetOilContractService(utils.DBE)
+	var contractEntity contract.OilContract
+	contractSvc.GetEntityById(contractReviewEntity.ContractId, &contractEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	//启动工作流
+	businessKey := contractReviewEntity.BusinessKey
+	processInstanceId := contractReviewEntity.WorkflowId
+	// 如果被驳回,不再新启工作流
+	if processInstanceId == "" {
+		//启动工作流
+		businessKey = Id + "-" + strconv.Itoa(contractReviewEntity.AuditIndex)
+		processInstanceId = svcActiviti.StartProcess2(workflow.OIL_DAILY_CONTRACT_EVALUATION, businessKey, this.User.Id, "1", contractEntity.ContractClass, contractEntity.SupplierName)
+		if len(processInstanceId) <= 0 {
+			panic("工作流启动失败!")
+		}
+		contractReviewEntity.AuditIndex += 1
+	}
+	// 将启动和工作流,选择的初审和复审人员保存下来
+	cols := []string{
+		"Id",
+		"FirstAudit",
+		"SecondAudit",
+		"thirdAudit",
+		"WorkflowId",
+		"BusinessKey",
+		"ProcessKey",
+		//"CommitComId",
+		"AuditIndex",
+	}
+	contractReviewEntity.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
+	contractReviewEntity.BusinessKey = businessKey
+	contractReviewEntity.WorkflowId = processInstanceId
+	contractReviewEntity.FirstAudit, _ = strconv.Atoi(firstAudit)
+	contractReviewEntity.SecondAudit, _ = strconv.Atoi(secondAudit)
+	contractReviewEntity.ThirdAudit, _ = strconv.Atoi(thirdAudit)
+	//contractReviewEntity.CommitComId = strconv.Itoa(unitId)
+	conRev.UpdateEntityByIdCols(Id, contractReviewEntity, cols)
+
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
+	ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id // 当前审批操作人员
+	//ActiComplete.UserNames = secondAudit // 当前审批操作人员
+	ActiComplete.Result = "2" //分办提交给二级单位初审
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+}
+
+// @Title 分办之后的各级审批  --审批 包含:二级单位初审、复审, 业务处室专业审核, 集中评审
+// @Description 分办之后的各级审批
+// @Success	200	{object} controllers.Request
+// @router /common-audit/:id [post]
+func (this *OilContractReviewController) CommonAuditEntity() {
+	Id := this.Ctx.Input.Param(":id")
+	result := this.GetString("result")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errinfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errinfo.Message = err.(string)
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "审核提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出日常评审主表信息
+	conRev := contractReview.GetOilContractReviewService(utils.DBE)
+	var contractReviewEntity contractReview.OilContractReview
+	conRev.GetEntityById(Id, &contractReviewEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
+	ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = result       //前台审批[同意、不同意]
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+}
+
+// @Title 业务处室接收分办 专业审批
+// @Description 业务处室接收分办 专业审批
+// @Success 200 {object} controllers.Request
+// @router /business-separate-audit/:id [post]
+func (this *OilContractReviewController) BusinessOfficeSeparateAuditEntity() {
+	Id := this.Ctx.Input.Param(":id")
+	ProfessionalAudit := this.GetString("ProfessionalAudit")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errInfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errInfo.Message = err.(string)
+			errInfo.Code = -1
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errInfo.Message = "审核提交成功"
+			errInfo.Code = 0
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出日常评审主表信息
+	conRev := contractReview.GetOilContractReviewService(utils.DBE)
+	var contractReviewEntity contractReview.OilContractReview
+	conRev.GetEntityById(Id, &contractReviewEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
+	ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = "1"          //前台审批[同意、不同意]
+	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)
+}
+
+// @Title 集中审批
+// @Description 集中审批
+// @Success 200 {object} controllers.Request
+// @router /concentrate-audit/:id [post]
+func (this *OilContractReviewController) ConcentrateAuditEntity() {
+	Id := this.Ctx.Input.Param(":id")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errInfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errInfo.Message = err.(string)
+			errInfo.Code = -1
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errInfo.Message = "审核提交成功"
+			errInfo.Code = 0
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出日常评审主表信息
+	conRev := contractReview.GetOilContractReviewService(utils.DBE)
+	var contractReviewEntity contractReview.OilContractReview
+	conRev.GetEntityById(Id, &contractReviewEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
+	ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = "1"          //前台审批[同意、不同意]
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+	//cols := []string{
+	//	"Id",
+	//	"Status",
+	//}
+	//supplierCertId := strings.Split(supplierCertEntity.BusinessKey, "-")[0]
+	//supplierCertEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
+	//certSrv.UpdateEntityByIdCols(supplierCertId, supplierCertEntity, cols)
+}
+
+

+ 34 - 1
src/dashoo.cn/backend/api/controllers/oilcontract/evaluationItems.go

@@ -171,9 +171,42 @@ func (this *OilEvaluationItemsController) GetOneEntityList() {
 
 	svc := evaluationItems.GetOilEvaluationItemsService(utils.DBE)
 	var list []evaluationItems.OilEvaluationItems
+	var result []evaluationItems.DailyItems
 	total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, true, &list, where)
+
+	for _, value := range list {
+		var firstTmp evaluationItems.DailyItems
+		firstTmp.Content = value.Content
+		firstTmp.ParentId = value.ParentId
+		firstTmp.Id = value.Id
+		firstTmp.Type = value.Type
+		firstTmp.SequenceNo = value.SequenceNo
+		firstTmp.NormalScore = value.NormalScore
+		firstTmp.Remark = value.Remark
+		firstTmp.LevelCode = value.LevelCode
+
+		var list1 []evaluationItems.OilEvaluationItems
+		where1 := " ParentId = " + strconv.Itoa(value.Id)
+		svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, true, &list1, where1)
+		for _, v := range list1 {
+			var secTmp evaluationItems.DailyItems
+			secTmp.Content = v.Content
+			secTmp.Content = v.Content
+			secTmp.ParentId = v.ParentId
+			secTmp.Id = v.Id
+			secTmp.Type = v.Type
+			secTmp.SequenceNo = v.SequenceNo
+			secTmp.NormalScore = v.NormalScore
+			secTmp.Remark = v.Remark
+			secTmp.LevelCode = v.LevelCode
+
+			firstTmp.Son = append(firstTmp.Son, secTmp)
+		}
+
+		result = append(result, firstTmp)
+	}
 	var datainfo DataInfo
-	datainfo.Items = list
+	datainfo.Items = result
 	datainfo.CurrentItemCount = total
 	//datainfo.PageIndex = page.CurrentPage
 	//datainfo.ItemsPerPage = page.Size