package oilsupplier import ( "dashoo.cn/backend/api/business/baseUser" "dashoo.cn/backend/api/business/oilsupplier/suppliercert" "dashoo.cn/backend/api/business/organize" "dashoo.cn/backend/api/business/paymentinfo" "dashoo.cn/business2/areajson" "dashoo.cn/business2/items" "dashoo.cn/business2/permission" "dashoo.cn/backend/api/business/auditsetting" "encoding/json" "fmt" "strconv" "strings" "time" "dashoo.cn/backend/api/business/oilsupplier/annualaudit" "dashoo.cn/backend/api/business/oilsupplier/supplier" "dashoo.cn/backend/api/business/workflow" "dashoo.cn/business2/userRole" . "dashoo.cn/backend/api/controllers" "dashoo.cn/utils" ) type AnnualAuditController struct { BaseController } type ShenHeModel struct { AnnualId int SuccessStatus int AuditorRemark string } // @Title 获取列表 // @Description get user by token // @Success 200 {object} []annualaudit.OilAnnualAudit // @router /list [get] func (this *AnnualAuditController) GetEntityList() { //获取分页信息 page := this.GetPageInfoForm() where := " 1=1 " orderby := "Id" asc := false Order := this.GetString("Order") Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop if Order == "asc" { asc = true } } SupplierTypeName := this.GetString("SupplierTypeName") RecUnitId := this.GetString("RecUnitId") AccessCardNo := this.GetString("AccessCardNo") SupplierName := this.GetString("SupplierName") CreateOn := this.GetString("CreateOn") if SupplierTypeName != "" { where = where + " and SupplierTypeName like '%" + SupplierTypeName + "%'" } if RecUnitId != "" { where = where + " and RecUnitId like '%" + RecUnitId + "%'" } if AccessCardNo != "" { where = where + " and AccessCardNo like '%" + AccessCardNo + "%'" } if SupplierName != "" { where = where + " and SupplierName like '%" + SupplierName + "%'" } if CreateOn != "" { dates := strings.Split(CreateOn, ",") if len(dates) == 2 { minDate := dates[0] maxDate := dates[1] where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'" } } //企业用户必须加创建人条件 if this.User.IsCompanyUser == 1 { where = where + " and CreateUserId = '" + this.User.Id + "'" } else { //超级管理员和有查看所有数据权限的用户不加条件 svcPerm := permission.GetPermissionService(utils.DBE) isauth := svcPerm.IsAuthorized(this.User.Id, "oil_supplier.marketAccess.AllRecord") if !svcPerm.IsAdmin(this.User.Id) && !isauth { where = where + " and CreateUserId = '" + this.User.Id + "'" } } svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var list []annualaudit.OilAnnualAudit total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where) var datainfo DataInfo datainfo.Items = list datainfo.CurrentItemCount = total datainfo.PageIndex = page.CurrentPage datainfo.ItemsPerPage = page.Size this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取审批列表 // @Description get user by token // @Success 200 {object} []annualaudit.OilAnnualAudit // @router /mytasks [get] func (this *AnnualAuditController) GetMyTaskEntityList() { //获取分页信息 page := this.GetPageInfoForm() where := " 1=1 " orderby := "Id" asc := false Order := this.GetString("Order") Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop if Order == "asc" { asc = true } } SupplierTypeName := this.GetString("SupplierTypeName") RecUnitId := this.GetString("RecUnitId") AccessCardNo := this.GetString("AccessCardNo") SupplierName := this.GetString("SupplierName") CreateOn := this.GetString("CreateOn") if SupplierTypeName != "" { where = where + " and SupplierTypeName like '%" + SupplierTypeName + "%'" } if RecUnitId != "" { where = where + " and RecUnitId like '%" + RecUnitId + "%'" } if AccessCardNo != "" { where = where + " and AccessCardNo like '%" + AccessCardNo + "%'" } if SupplierName != "" { where = where + " and SupplierName like '%" + SupplierName + "%'" } if CreateOn != "" { dates := strings.Split(CreateOn, ",") if len(dates) == 2 { minDate := dates[0] maxDate := dates[1] where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'" } } svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var list []annualaudit.OilAnnualAudit //找出待办任务 actisvc := workflow.GetActivitiService(utils.DBE) certIdList := actisvc.GetMyTasks(workflow.OIL_AUDIT_APPLY, this.User.Id) where += " and Id in (" + certIdList + ")" //根据部门查询待办任务 where += " and Status != 2 " total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where) //total := svc.GetMyPagingEntitiesWithOrderBytbl(OilSupplierName, OilSupplierCertName, page.CurrentPage, page.Size, orderby, asc, &list, where) var datainfo DataInfo datainfo.Items = list datainfo.CurrentItemCount = total datainfo.PageIndex = page.CurrentPage datainfo.ItemsPerPage = page.Size this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取年审企业名称 // @Description 获取实体 // @Success 200 {object} annualaudit.OilAnnualAudit // @router /supplierlist [get] func (this *AnnualAuditController) GetSupplierList() { svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var supplierlist []annualaudit.Suppliername supplierlist = svc.GetSupplierList(""+OilSupplierName, ""+OilAnnualAuditName) var datainfo DataInfo datainfo.Items = supplierlist this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取字典列表 // @Description get user by token // @Success 200 {object} map[string]interface{} // @router /dictlist [get] func (this *AnnualAuditController) GetDictList() { dictList := make(map[string]interface{}) dictSvc := items.GetItemsService(utils.DBE) userSvc := baseUser.GetBaseUserService(utils.DBE) areaJsonSvc := areajson.GetAreaJsonService(utils.DBE) //customerSvc := svccustomer.GetCustomerService(utils.DBE) dictList["UnitRelation"] = dictSvc.GetKeyValueItems("UnitRelation") dictList["CompanyType"] = dictSvc.GetKeyValueItems("CompanyType") var userEntity userRole.Base_User userSvc.GetEntityById(this.User.Id, &userEntity) dictList["Supervisers"] = userSvc.GetUserListByDepartmentId(this.User.AccCode, userEntity.Departmentid) dictList["GaodeMapChinaAreas"] = areaJsonSvc.GetGaodeMapChinaAreas() //获取我创建的所有公司 var list []supplier.OilSupplier if this.User.IsCompanyUser == 1 { svcSupplier := supplier.GetOilSupplierService(utils.DBE) supplierWhere := " CreateUserId = '" + this.User.Id + "'" svcSupplier.GetEntitysByWhere(OilSupplierName, supplierWhere, &list) dictList["CompanyNames"] = list } else { //二级单位不用获取 dictList["CompanyNames"] = list } // 部门 orgsvc := organize.GetOrganizeService(utils.DBE) dictList["Organizes"] = orgsvc.GetCollectionDetailviewlist("'"+this.User.AccCode+"'") //获得有专业审核接收权限的人员 var users1 []userRole.Base_RoleList var auditWorkflow1 auditsetting.Base_OilAuditSetting rsvc := auditsetting.GetOilAuditSettingService(utils.DBE) rsvc.GetAuditStepRoleEntity(OilAuditSettingName, "100000172", workflow.PROF_RECE, &auditWorkflow1) users1 = rsvc.GetUserByRole(strconv.Itoa(auditWorkflow1.RoleId), "") dictList["Receive"] = users1 //获得有专业审核权限的人员 var users []userRole.Base_RoleList var auditWorkflow auditsetting.Base_OilAuditSetting rsvc.GetAuditStepRoleEntity(OilAuditSettingName, "100000172", workflow.PROF_AUDIT, &auditWorkflow) users = rsvc.GetUserByRole(strconv.Itoa(auditWorkflow.RoleId), "") dictList["ProfAudit"] = users var datainfo DataInfo datainfo.Items = dictList this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取实体 // @Description 获取实体 // @Success 200 {object} annualaudit.OilAnnualAudit // @router /get/:id [get] func (this *AnnualAuditController) GetEntity() { Id := this.Ctx.Input.Param(":id") var model annualaudit.OilAnnualAudit svc := annualaudit.GetOilAnnualAuditService(utils.DBE) svc.GetEntityByIdBytbl(""+OilAnnualAuditName, Id, &model) this.Data["json"] = &model this.ServeJSON() } // @Title 添加 // @Description 新增 // @Success 200 {object} controllers.Request // @router /add [post] func (this *AnnualAuditController) AddEntity() { var model annualaudit.OilAnnualAudit var errinfo ErrorDataInfo var jsonBlob = this.Ctx.Input.RequestBody svc := annualaudit.GetOilAnnualAuditService(utils.DBE) firstAudit := this.GetString("firstAudit") json.Unmarshal(jsonBlob, &model) where := "SupplierId = " + utils.ToStr(model.SupplierId) + " and SupplierTypeName = " + model.SupplierTypeName var auditentity []annualaudit.OilAnnualAudit svc.GetEntitysByWhere(""+OilAnnualAuditName, where, &auditentity) if len(auditentity) == 1 { errinfo.Message = "已提交年审,请勿重复提交!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } supwhere := "a.Id = " + utils.ToStr(model.SupplierId) + " and b.SupplierTypeCode = " + model.SupplierTypeName supsvc := supplier.GetOilSupplierService(utils.DBE) var list []supplier.OilSupplierView total := supsvc.GetMyPagingEntitiesWithOrderBytbl(OilSupplierName, OilSupplierCertName, 1, 1, "a.Id", true, &list, supwhere) if total == 0 { errinfo.Message = "请先提交准入申请再提交年审!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } var suppliermodel supplier.OilSupplierView suppliermodel = list[0] model.RecUnitId = suppliermodel.RecUnitId model.CerId, _ = strconv.Atoi(suppliermodel.CertId) model.Status = 0 model.Step = 2 model.BackReason = suppliermodel.BackReason model.CreateOn = time.Now() model.CreateBy = this.User.Realname model.CreateUserId, _ = utils.StrTo(this.User.Id).Int() //添加一条年审记录 _, err := svc.InsertEntityBytbl(""+OilAnnualAuditName, &model) annualId := model.Id svcActiviti := workflow.GetActivitiService(utils.DBE) //启动工作流 processInstanceId := svcActiviti.StartProcess(workflow.OIL_AUDIT_APPLY, utils.ToStr(annualId), this.User.Id) //获得有审核权限的人员 //var users []userRole.Base_RoleList //var userIds string //var auditWorkflow auditsetting.Base_OilAuditSetting //rsvc := auditsetting.GetOilAuditSettingService(utils.DBE) //rsvc.GetAuditStepRoleEntity(OilAuditSettingName, firstAudit, workflow.FIRST_TRIAL, &auditWorkflow) //users = rsvc.GetUserByRole(strconv.Itoa(auditWorkflow.RoleId), "") //for _, tmpUser := range users { // userIds += strconv.FormatInt(tmpUser.Id, 10) + "," //} //userIds = strings.Trim(userIds, ",") var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(annualId) ActiComplete.UserNames = firstAudit ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "提交给二级单位初审" ActiComplete.CallbackUrl = "" //提交给二级单位初审 receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.WorkflowId = processInstanceId cols := []string{ "Id", "WorkflowId", } if receiveVal == "true" { _, err = svc.UpdateEntityByIdCols(annualId, auditmodel, cols) if err == nil { //新增 errinfo.Message = "添加成功!" errinfo.Code = 0 errinfo.Item = model.Id this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } // @Title 删除单条信息 // @Description // @Success 200 {object} ErrorInfo // @Failure 403 :id 为空 // @router /delete/:Id [delete] func (this *AnnualAuditController) DeleteEntity() { Id := this.Ctx.Input.Param(":Id") var errinfo ErrorInfo if Id == "" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } var model annualaudit.OilAnnualAudit var entityempty annualaudit.OilAnnualAudit svc := annualaudit.GetOilAnnualAuditService(utils.DBE) opdesc := "删除-" + Id err := svc.DeleteOperationAndWriteLogBytbl(""+OilAnnualAuditName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, "", "钻井日报") if err == nil { errinfo.Message = "删除成功" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } // @Title 审核 // @Description 审核 // @Success 200 {object} controllers.Request // @router /auditcallback [get] func (this *AnnualAuditController) AuditCallback() { result := this.GetString("ret") bussinsid := this.GetString("busid") status := this.GetString("status") annualId := this.GetString("annualId") svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var entityempty annualaudit.OilAnnualAudit var err error var errinfo ErrorInfo var cols []string = []string{"Status"} entityempty.Status, _ = strconv.Atoi(status) err = svc.UpdateEntityBytbl(OilAnnualAuditName, annualId, &entityempty, cols) if err != nil { errinfo.Message = "审核错误!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } fmt.Println(result, status, annualId, bussinsid) } // @Title 审核 // @Description 审核 // @Success 200 {object} controllers.Request // @router /auditfirst [put] func (this *AnnualAuditController) AnnualAudit() { svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var jsonblob = this.Ctx.Input.RequestBody var dataother ShenHeModel ProfAudit:= this.GetString("ProfAudit") json.Unmarshal(jsonblob, &dataother) var list annualaudit.OilAnnualAudit where := " Id = '" + strconv.Itoa(dataother.AnnualId) + "'" svc.GetEntityByWhere(""+OilAnnualAuditName, where, &list) svcActiviti := workflow.GetActivitiService(utils.DBE) //审核状态判断进行的操作 if dataother.SuccessStatus == 1 { var errinfo ErrorInfo var users []suppliercert.UserList where := "OrganizeId=" + ProfAudit + " and AuditStepCode='" + workflow.PROF_RECE + "'" svc.GetEntitysByWhere(OilAuditSettingName,where, &users) var userIds string for _, tmpUser := range users { userIds += strconv.FormatInt(tmpUser.UserId, 10) + "," } userIds = strings.Trim(userIds, ",") var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(dataother.AnnualId) ActiComplete.UserNames = userIds ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "提交给业务处接收人" ActiComplete.CallbackUrl = "" //提交给二级单位初审 receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.Status = 1 cols := []string{ "Id", "Status", } if receiveVal == "true" { _, err := svc.UpdateEntityByIdCols(dataother.AnnualId, auditmodel, cols) if err == nil { errinfo.Message = "审核通过!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "审核错误!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else if dataother.SuccessStatus == 2 { var errinfo ErrorInfo var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(dataother.AnnualId) ActiComplete.UserNames = "" ActiComplete.UserId = this.User.Id ActiComplete.Result = "0" ActiComplete.Remarks = "初审未通过" ActiComplete.CallbackUrl = "" receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.Status = 2 cols := []string{ "Id", "Status", } if receiveVal == "true" { _, err := svc.UpdateEntityByIdCols(dataother.AnnualId, auditmodel, cols) if err == nil { errinfo.Message = "审核未通过!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "审核错误!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else if dataother.SuccessStatus == 3 { var errinfo ErrorInfo var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(dataother.AnnualId) ActiComplete.UserNames = ProfAudit ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "提交给业务处专业审核人" ActiComplete.CallbackUrl = "" //提交给业务处室专业审核 receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.Status = 3 cols := []string{ "Id", "Status", } if receiveVal == "true" { _, err := svc.UpdateEntityByIdCols(dataother.AnnualId, auditmodel, cols) if err == nil { errinfo.Message = "已分配接收人!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "分配错误!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else if dataother.SuccessStatus == 4 { var errinfo ErrorInfo var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(dataother.AnnualId) ActiComplete.UserNames = "" ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "业务处室审核通过" ActiComplete.CallbackUrl = "" receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.Status = 4 auditmodel.Step = 3 cols := []string{ "Id", "Status", "Step", } if receiveVal == "true" { _, err := svc.UpdateEntityByIdCols(dataother.AnnualId, auditmodel, cols) paysvc := paymentinfo.GetPaymentService(utils.DBE) var Amount float64 if list.SupplierTypeName == "01" { Amount = 6000 }else if list.SupplierTypeName == "02"{ Amount = 7000 }else if list.SupplierTypeName == "03" { Amount = 8000 } err = paysvc.AddPaymentinfo(list.SupplierId, list.CerId, Amount,"2") if err == nil { errinfo.Message = "审核通过!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "审核错误!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } }else if dataother.SuccessStatus == 5 { var errinfo ErrorInfo var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_AUDIT_APPLY ActiComplete.BusinessKey = strconv.Itoa(dataother.AnnualId) ActiComplete.UserNames = "" ActiComplete.UserId = this.User.Id ActiComplete.Result = "0" ActiComplete.Remarks = "业务处室审核未通过" ActiComplete.CallbackUrl = "" receiveVal := svcActiviti.TaskComplete(ActiComplete) var auditmodel annualaudit.OilAnnualAudit auditmodel.Status = 5 cols := []string{ "Id", "Status", } if receiveVal == "true" { _, err := svc.UpdateEntityByIdCols(dataother.AnnualId, auditmodel, cols) if err == nil { errinfo.Message = "审核未通过!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "审核错误!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } }