package oilsupplier import ( "encoding/json" "strconv" "strings" "time" "dashoo.cn/backend/api/business/oilsupplier/suppliercert" "dashoo.cn/backend/api/business/paymentinfo" "dashoo.cn/backend/api/business/workflow" "dashoo.cn/business2/permission" "dashoo.cn/backend/api/business/oilsupplier/suppliercertappend" "dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub" . "dashoo.cn/backend/api/controllers" "dashoo.cn/utils" "github.com/go-xorm/xorm" ) type OilSupplierCertAppendController struct { BaseController } type AppShenHeModel struct { AnnualId int SuccessStatus int AuditorRemark string Auditer int MajorDept int } // @Title 获取列表 // @Description 获取列表 // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend // @router /list [get] func (this *OilSupplierCertAppendController) GetList() { //获取分页信息 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 } } ApplyDate := this.GetString("ApplyDate") RecUnitId := this.GetString("RecUnitId") RecUnitName := this.GetString("RecUnitName") AppendType := this.GetString("AppendType") DenyReason := this.GetString("DenyReason") AuditDate := this.GetString("AuditDate") Remark := this.GetString("Remark") CreateOn := this.GetString("CreateOn") if ApplyDate != "" { where = where + " and ApplyDate like '%" + ApplyDate + "%'" } if RecUnitId != "" { where = where + " and RecUnitId like '%" + RecUnitId + "%'" } if RecUnitName != "" { where = where + " and RecUnitName like '%" + RecUnitName + "%'" } if AppendType != "" { where = where + " and AppendType like '%" + AppendType + "%'" } if DenyReason != "" { where = where + " and DenyReason like '%" + DenyReason + "%'" } if AuditDate != "" { where = where + " and AuditDate like '%" + AuditDate + "%'" } if Remark != "" { where = where + " and Remark like '%" + Remark + "%'" } 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 a.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 a.CreateUserId = '" + this.User.Id + "'" } } svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) var list []suppliercertappend.OilSupplierCertAppend 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 通过Id获取信息 // @Description get user by token // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend // @router /getEntityById/:id [get] func (this *OilSupplierCertAppendController) GetEntityById() { Id := this.Ctx.Input.Param(":id") var model suppliercertappend.OilSupplierCertAppend svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) svc.GetEntityByIdBytbl(OilSupplierCertAppendName, Id, &model) this.Data["json"] = &model this.ServeJSON() } // @Title 获取公司信息 // @Description 根据创建用户Id和增项类别号获取公司信息 // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend // @router /getsupplier/:id [get] func (this *OilSupplierCertAppendController) GetSupplier() { Id := this.Ctx.Input.Param(":id") svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) sqlStr := "SELECT b.Id AS SupplierId, a.Id AS SupplierCertId, b.SupplierName AS SupplierName FROM OilSupplierCert AS a LEFT JOIN OilSupplier AS b ON a.SupplierId = b.Id " where := "WHERE b.Id is NOT NULL AND a.SupplierTypeCode = " + Id sqlStr = sqlStr + where model, _ := svc.DBE.QueryString(sqlStr) this.Data["json"] = &model this.ServeJSON() } // @Title 添加 // @Description 添加增项信息 // @Success 200 {object} controllers.Request // @router /addappend [post] func (this *OilSupplierCertAppendController) AddAppend() { var model suppliercertappend.OilSupplierCertAppend var jsonblob = this.Ctx.Input.RequestBody json.Unmarshal(jsonblob, &model) model.ApplyDate = time.Now() //申请日期 model.CreateOn = time.Now() model.CreateBy = this.User.Realname model.CreateUserId, _ = utils.StrTo(this.User.Id).Int() svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) _, err := svc.InsertEntityBytbl(OilSupplierCertAppendName, &model) var errinfo ErrorDataInfo 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() } } // @Title 修改实体 // @Description 修改实体 // @Success 200 {object} controllers.Request // @router /update/:id [post] func (this *OilSupplierCertAppendController) UpdateEntity() { var errinfo ErrorInfo var model suppliercertappend.OilSupplierCertAppend id := this.Ctx.Input.Param(":id") if id == "" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) var jsonBlob = this.Ctx.Input.RequestBody json.Unmarshal(jsonBlob, &model) model.ApplyDate = time.Now() //更新申请日期 model.ModifiedOn = time.Now() model.ModifiedBy = this.User.Realname model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int() cols := []string{ "Id", "ApplyDate", "RecUnitFlag", "RecUnitId", "RecUnitName", "WorkRange", "Remark", "ModifiedOn", "ModifiedUserId", "ModifiedBy", } err := svc.UpdateEntityBytbl(OilSupplierCertAppendName, id, &model, 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() } } // @Title 删除 // @Description 级联删除 // @Success 200 {object} ErrorInfo // @Failure 403 :id 为空 // @router /delete/:Id [delete] func (this *OilSupplierCertAppendController) DeleteEntity() { Id := this.Ctx.Input.Param(":Id") var errinfo ErrorInfo if Id == "" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } //定义session var session *xorm.Session session = utils.DBE.NewSession() svc := suppliercertappend.GetOilSupplierCertAppendSession(session) svcSub := suppliercertappendsub.GetOilSupplierCertAppendSubSession(session) //"session开始" 之前,首先定义 "session关闭" defer session.Close() err := session.Begin() //首先删除子表信息 where := "SupplierCertAppendId = " + Id err = svcSub.DeleteEntityBytbl(OilSupplierCertAppendSubName, where) if err != nil { //回滚操作 session.Rollback() } //最后删除主表信息 var model suppliercertappend.OilSupplierCertAppend var entityempty suppliercertappend.OilSupplierCertAppend opdesc := "删除-" + Id err = svc.DeleteOperationAndWriteLogBytbl(OilSupplierCertAppendName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "增项信息") if err != nil { session.Rollback() } //提交操作 err = session.Commit() 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 get user by token // @Success 200 {object} []supplier.OilSupplierView // @router /mytasks [get] func (this *OilSupplierCertAppendController) GetMyTaskEntityList() { //获取分页信息 page := this.GetPageInfoForm() where := " 1=1 " orderby := "Id" asc := false Order := this.GetString("Order") where = where + " and Status>0" Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop if Order == "asc" { asc = true } } ApplyDate := this.GetString("ApplyDate") RecUnitId := this.GetString("RecUnitId") RecUnitName := this.GetString("RecUnitName") AppendType := this.GetString("AppendType") DenyReason := this.GetString("DenyReason") AuditDate := this.GetString("AuditDate") Remark := this.GetString("Remark") CreateOn := this.GetString("CreateOn") if ApplyDate != "" { where = where + " and ApplyDate like '%" + ApplyDate + "%'" } if RecUnitId != "" { where = where + " and RecUnitId like '%" + RecUnitId + "%'" } if RecUnitName != "" { where = where + " and RecUnitName like '%" + RecUnitName + "%'" } if AppendType != "" { where = where + " and AppendType like '" + AppendType + "'" } if DenyReason != "" { where = where + " and DenyReason like '%" + DenyReason + "%'" } if AuditDate != "" { where = where + " and AuditDate like '%" + AuditDate + "%'" } if Remark != "" { where = where + " and Remark like '%" + Remark + "%'" } if CreateOn != "" { dates := strings.Split(CreateOn, ",") if len(dates) == 2 { minDate := dates[0] maxDate := dates[1] where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'" } } //找出待办任务 actisvc := workflow.GetActivitiService(utils.DBE) appendIdList := actisvc.GetMyTasks(workflow.OIL_APPEND_APPLY, this.User.Id) where += " and Id in (" + appendIdList + ")" //根据部门查询待办任务 svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) var list []suppliercertappend.OilSupplierCertAppend 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 提交审批 // @Success 200 {object} controllers.Request // @router /audit/:id [post] func (this *OilSupplierCertAppendController) AuditEntity() { certappendId := this.Ctx.Input.Param(":id") firstAudit := this.GetString("firstAudit") //取出审批列表 certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend certSrv.GetEntityById(certappendId, &supplierCertAppendEntity) 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() } }() svcActiviti := workflow.GetActivitiService(utils.DBE) processInstanceId := "" if supplierCertAppendEntity.WorkFlowId == "0" || len(supplierCertAppendEntity.WorkFlowId) <= 0 { //启动工作流 processInstanceId = svcActiviti.StartProcess(workflow.OIL_APPEND_APPLY, certappendId, this.User.Id) } var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_APPEND_APPLY ActiComplete.BusinessKey = certappendId ActiComplete.UserNames = firstAudit ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "" ActiComplete.CallbackUrl = "" receiveVal := svcActiviti.TaskComplete(ActiComplete) if receiveVal == "true" { errinfo.Message = "提交成功!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } //记下workflowID(首次提交时才会记录,中间状态请忽略) 及审批状态 var model suppliercertappend.OilSupplierCertAppend model.WorkFlowId = processInstanceId model.Status = suppliercert.FIRST_TRIAL_STATUS //二级单位初审 model.FirstAudit, _ = strconv.Atoi(firstAudit) cols := []string{ "Id", "WorkFlowId", "Status", "FirstAudit", } certSrv.UpdateEntityByIdCols(certappendId, model, cols) } // @Title 审批 // @Description 审批 // @Param body body suppliercert.OilSupplierCert // @Success 200 {object} controllers.Request // @router /auditEntityFir/:id [post] func (this *OilSupplierCertAppendController) AuditEntityFir() { appendId := this.Ctx.Input.Param(":id") //取出审批列表 certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE) var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend certSrv.GetEntityById(appendId, &supplierCertAppendEntity) var jsonblob = this.Ctx.Input.RequestBody var dataother AppShenHeModel json.Unmarshal(jsonblob, &dataother) 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() } }() step := 2 status := "" var userIds string if supplierCertAppendEntity.Status == "1" { userIds = utils.ToStr(dataother.Auditer) status = suppliercert.SECOND_TRIAL_STATUS step = 2 supplierCertAppendEntity.ThirdAudit = dataother.MajorDept cols := []string{ "ThirdAudit", } certSrv.UpdateEntityByIdCols(appendId, supplierCertAppendEntity, cols) } else if supplierCertAppendEntity.Status == "2" { status = suppliercert.THIRD_TRIAL_STATUS step = 2 var users []suppliercert.UserList where := "OrganizeId=" + strconv.Itoa(supplierCertAppendEntity.ThirdAudit) + " and AuditStepCode='" + workflow.PROF_RECE + "'" certSrv.GetEntitysByWhere(OilAuditSettingName, where, &users) for _, tmpUser := range users { userIds += strconv.FormatInt(tmpUser.UserId, 10) + "," } userIds = strings.Trim(userIds, ",") } else if supplierCertAppendEntity.Status == "3" { userIds = utils.ToStr(dataother.Auditer) status = suppliercert.PROF_AUDIT_STATUS step = 2 } else if supplierCertAppendEntity.Status == "4" { status = suppliercert.CENT_AUDIT_STATUS step = 2 var users []suppliercert.UserList where := "OrganizeId=100000178 and AuditStepCode='" + workflow.PROF_REGULATION + "'" certSrv.GetEntitysByWhere(OilAuditSettingName, where, &users) for _, tmpUser := range users { userIds += strconv.FormatInt(tmpUser.UserId, 10) + "," } userIds = strings.Trim(userIds, ",") } else if supplierCertAppendEntity.Status == "5" { userIds = utils.ToStr(dataother.Auditer) status = suppliercert.PAYING_AUDIT_STATUS step = 3 } svcActiviti := workflow.GetActivitiService(utils.DBE) var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_APPEND_APPLY ActiComplete.BusinessKey = appendId ActiComplete.UserNames = userIds ActiComplete.UserId = this.User.Id ActiComplete.Remarks = dataother.AuditorRemark ActiComplete.CallbackUrl = "" if dataother.SuccessStatus == 1 { ActiComplete.Result = "1" receiveVal := svcActiviti.TaskComplete(ActiComplete) if receiveVal == "true" { supplierCertAppendEntity.Status = status supplierCertAppendEntity.Step = step cols := []string{ "Status", "Step", } certSrv.UpdateEntityByIdCols(appendId, supplierCertAppendEntity, cols) if supplierCertAppendEntity.Status == "5" { paysvc := paymentinfo.GetPaymentService(utils.DBE) var Amount float64 if supplierCertAppendEntity.AppendType == "01" { Amount = 6000 } else if supplierCertAppendEntity.AppendType == "02" { Amount = 7000 } else if supplierCertAppendEntity.AppendType == "03" { Amount = 8000 } paysvc.AddPaymentinfo(supplierCertAppendEntity.SupplierId, supplierCertAppendEntity.Id, Amount, "3") } errinfo.Message = "提交成功!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } } else { ActiComplete.Result = "0" receiveVal := svcActiviti.TaskComplete(ActiComplete) if receiveVal == "true" { supplierCertAppendEntity.Status = "0" supplierCertAppendEntity.Step = step cols := []string{ "Status", "Step", } certSrv.UpdateEntityByIdCols(appendId, supplierCertAppendEntity, cols) errinfo.Message = "提交成功!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } } }