package oilsupplier import ( "dashoo.cn/backend/api/business/oilsupplier/qualchange" "dashoo.cn/backend/api/business/oilsupplier/suppliercert" "dashoo.cn/backend/api/business/oilsupplier/supplierfile" "dashoo.cn/business2/permission" "encoding/json" "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/backend/api/business/baseUser" "dashoo.cn/business/userRole" . "dashoo.cn/backend/api/controllers" "dashoo.cn/utils" ) type QualChangeController struct { BaseController } type QualShenHeModel struct { QualId int SuccessStatus int AuditorRemark string Auditer int SuppId int } // @Title 获取列表 // @Description get user by token // @Success 200 {object} []supplier.OilSupplierView // @router /list [get] func (this *QualChangeController) GetEntityList() { //获取分页信息 page := this.GetPageInfoForm() where := " b.Status >= 1 " //where := " b.Status >= 7 " orderby := "a.CreateOn desc" Order := this.GetString("Order") Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop + " " + Order } CommercialNo := this.GetString("CommercialNo") AccessCardNo := this.GetString("AccessCardNo") SupplierName := this.GetString("SupplierName") CreateOn := this.GetString("CreateOn") if CommercialNo != "" { where = where + " and a.CommercialNo like '%" + CommercialNo + "%'" } if AccessCardNo != "" { where = where + " and b.AccessCardNo like '%" + AccessCardNo + "%'" } if SupplierName != "" { where = where + " and a.SupplierName like '%" + SupplierName + "%'" } if CreateOn != "" { dates := strings.Split(CreateOn, ",") if len(dates) == 2 { minDate := dates[0] maxDate := dates[1] where = where + " and a.CreateOn>='" + minDate + "' and a.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 := qualchange.GetQualChangeService(utils.DBE) var list []qualchange.OilSupplierQual total, list:= svc.GetQualPagingEntitiesWithOrderBytbl(OilSupplierName, OilSupplierCertName, OilSupplierFileName, OilQualChangeMainName, orderby, where, page.CurrentPage, page.Size) 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} []supplier.OilSupplierView // @router /mytasks [get] func (this *QualChangeController) 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 + "'" } } //找出待办任务 actisvc := workflow.GetActivitiService(utils.DBE) certIdList := actisvc.GetMyTasks(workflow.OIL_QUAL_CHANGE, this.User.Id) where += " and Id in (" + certIdList + ")" svc := qualchange.GetQualChangeService(utils.DBE) var list []qualchange.OilQualChangeMain 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} models.Userblood // @router /filelist [get] func (this *QualChangeController) FileList() { page := this.GetPageInfoForm() var list []qualchange.OilQualChangeDetail svc := qualchange.GetQualChangeService(utils.DBE) where := " 1=1" orderby := "a.Id" asc := false Order := this.GetString("Order") Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop if Order == "asc" { asc = true } } SupplierId := this.GetString("SupplierId") if SupplierId != "" { where = where + " and a.SupplierId = '" + SupplierId + "'" } SupplierTypeCode := this.GetString("SupplierTypeCode") if SupplierTypeCode != "" { where = where + " and a.SupplierTypeCode in ( '000', '" + SupplierTypeCode + "')" } total := svc.GetQualPagingEntities(OilSupplierFileName,OilQualChangeDetailName, page.CurrentPage, page.Size, orderby, asc, &list, where) var datainfo DataInfo datainfo.Items = list datainfo.CurrentItemCount = total this.Data["json"] = &datainfo this.ServeJSON() } // @Title 资质文件 // @Description get user by token // @Success 200 {object} models.Userblood // @router /auditfilelist [get] func (this *QualChangeController) AuditFileList() { page := this.GetPageInfoForm() var list []qualchange.OilQualChangeDetail svc := qualchange.GetQualChangeService(utils.DBE) where := " 1=1" orderby := "a.Id" asc := false Order := this.GetString("Order") Prop := this.GetString("Prop") if Order != "" && Prop != "" { orderby = Prop if Order == "asc" { asc = true } } SupplierId := this.GetString("SupplierId") if SupplierId != "" { where = where + " and a.SupplierId = '" + SupplierId + "'" } SupplierTypeCode := this.GetString("SupplierTypeCode") if SupplierTypeCode != "" { where = where + " and a.SupplierTypeCode in ( '000', '" + SupplierTypeCode + "')" } where = where + " and b.FileUrl != ''" total := svc.GetQualPagingEntities(OilSupplierFileName,OilQualChangeDetailName, page.CurrentPage, page.Size, orderby, asc, &list, where) var datainfo DataInfo datainfo.Items = list datainfo.CurrentItemCount = total this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取年审企业名称 // @Description 获取实体 // @Success 200 {object} annualaudit.OilAnnualAudit // @router /supplierlist [get] func (this *QualChangeController) 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 *QualChangeController) GetDictList() { dictList := make(map[string]interface{}) //dictSvc := items.GetItemsService(utils.DBE) userSvc := baseUser.GetBaseUserService(utils.DBE) //customerSvc := svccustomer.GetCustomerService(utils.DBE) //dictList["WellNo"] = dictSvc.GetKeyValueItems("WellNo", "") var userEntity userRole.Base_User userSvc.GetEntityById(this.User.Id, &userEntity) dictList["Supervisers"] = userSvc.GetUserListByDepartmentId("", userEntity.Departmentid) //var dictCustomer []svccustomer.Customer //customerSvc.GetEntitysByWhere("" + CustomerName, "", &dictCustomer) //dictList["EntrustCorp"] = &dictCustomer 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 *QualChangeController) 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 *QualChangeController) AddEntity() { var model annualaudit.OilAnnualAudit var errinfo ErrorDataInfo var jsonBlob = this.Ctx.Input.RequestBody svc := annualaudit.GetOilAnnualAuditService(utils.DBE) 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.BackReason = suppliermodel.BackReason //svc.GetEntitysByWhere(""+OilSupplierName, supwhere, &supplierlist) model.CreateOn = time.Now() model.CreateBy = this.User.Realname model.CreateUserId, _ = utils.StrTo(this.User.Id).Int() //model.OrganizeId, _ = utils.StrTo(this.User.DepartmentId).Int() _, err := svc.InsertEntityBytbl(""+OilAnnualAuditName, &model) annualId := model.Id //工作流开始 processInstanceId,_ := svc.SubmitOrgAudit("", model.WorkflowId, utils.ToStr(model.CerId), utils.ToStr(model.Id), workflow.OIL_AUDIT_APPLY, workflow.FIRST_TRIAL, this.User.Id, "1", "提交给二级单位初审", OilSupplierCertSubName, OilClassOrgSettingName) var auditmodel annualaudit.OilAnnualAudit auditmodel.WorkflowId = processInstanceId cols := []string{ "Id", "WorkflowId", } 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() } } // @Title 修改实体 // @Description 修改实体 // @Success 200 {object} controllers.Request // @router /update/:id [post] func (this *QualChangeController) UpdateEntity() { 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 svc := annualaudit.GetOilAnnualAuditService(utils.DBE) var jsonBlob = this.Ctx.Input.RequestBody json.Unmarshal(jsonBlob, &model) model.ModifiedOn = time.Now() model.ModifiedBy = this.User.Realname model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int() cols := []string{ "Id", "Code", "Name", "F01", "F02", "F03", "F04", "F05", "F06", "F07", "F25", "Remark", "DeletionStateCode", "CreateOn", "CreateUserId", "CreateBy", "ModifiedOn", "ModifiedUserId", "ModifiedBy", } err := svc.UpdateEntityBytbl(""+OilAnnualAuditName, 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 更新文件上传 // @Param id path string true // @Success 200 {object} // @router /editqualchange/:id [put] func (this *QualChangeController) EditQualChange() { 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 qualchange.OilQualChangeDetail var jsonblob = this.Ctx.Input.RequestBody svc := qualchange.GetQualChangeService(utils.DBE) json.Unmarshal(jsonblob, &model) var entity qualchange.OilQualChangeDetail var mainentirt qualchange.OilQualChangeMain var qualmain []qualchange.OilQualChangeMain qmwhere := " SupplierId = " + utils.ToStr(model.SupplierId) svc.GetEntitysByWhere(OilQualChangeMainName, qmwhere, &qualmain) var qualmainId int if len(qualmain) == 0 { mainentirt.SupplierCertId = model.SupplierCertId mainentirt.SupplierId = model.SupplierId mainentirt.Status = "0" mainentirt.Step = 1 svc.InsertEntityBytbl(OilQualChangeMainName,&mainentirt) qualmainId = mainentirt.Id }else { qualmainId = qualmain[0].Id } entity = model entity.Id = 0 entity.ParentId = qualmainId entity.SupplierCertId = model.SupplierCertId entity.FileId, _ = utils.StrTo(id).Int() entity.CreateOn = time.Now() entity.CreateBy = this.User.Realname entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int() _,err := svc.InsertEntityBytbl(OilQualChangeDetailName,&entity) 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 /audit/:id [post] func (this *QualChangeController) AuditEntity() { suppId := this.Ctx.Input.Param(":id") firstAudit := this.GetString("firstAudit") //取出审批列表 svc := qualchange.GetQualChangeService(utils.DBE) var suppentity supplier.OilSupplier //供方信息 svc.GetEntityById(suppId,&suppentity) var qualmain qualchange.OilQualChangeMain where := " SupplierId = " + suppId svc.GetEntity(&qualmain, where) 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 qualmain.WorkFlowId == "0" || len(qualmain.WorkFlowId) <= 0 { //启动工作流 processInstanceId = svcActiviti.StartProcess(workflow.OIL_QUAL_CHANGE, utils.ToStr(qualmain.Id), this.User.Id) } var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_QUAL_CHANGE ActiComplete.BusinessKey = utils.ToStr(qualmain.Id) ActiComplete.UserNames = firstAudit ActiComplete.UserId = this.User.Id ActiComplete.Result = "1" ActiComplete.Remarks = "资质变更二级单位初审" ActiComplete.CallbackUrl = "" receiveVal := svcActiviti.TaskComplete(ActiComplete) if receiveVal == "true" { //记下workflowID(首次提交时才会记录,中间状态请忽略) 及审批状态 var qualmainmodel qualchange.OilQualChangeMain qualmainmodel.WorkFlowId = processInstanceId qualmainmodel.Status = suppliercert.FIRST_TRIAL_STATUS //二级单位初审 qualmainmodel.CreateOn = time.Now() qualmainmodel.CreateBy = this.User.Realname qualmainmodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int() qualmainmodel.SupplierName = suppentity.SupplierName qualmainmodel.CommercialNo = suppentity.CommercialNo cols := []string{ "Id", "WorkflowId", "Status", "Step", "CreateOn", "CreateBy", "CreateUserId", "SupplierName", "CommercialNo", } _,err := svc.UpdateEntityByIdCols(qualmain.Id, qualmainmodel, cols) if err == nil { errinfo.Message = "提交成功!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }else { errinfo.Message = "提交失败!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "工作流异常,请联系管理员!" errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return } } // @Title 审批 // @Description 审批 // @Success 200 {object} controllers.Request // @router /qualaudit [post] func (this *QualChangeController) QualAudit() { svc := qualchange.GetQualChangeService(utils.DBE) var jsonblob = this.Ctx.Input.RequestBody var dataother QualShenHeModel json.Unmarshal(jsonblob, &dataother) //取出审批列表 var qualid = dataother.QualId var qualmodel qualchange.OilQualChangeMain svc.GetEntityById(utils.ToStr(dataother.QualId), &qualmodel) var qualdetail []qualchange.OilQualChangeDetail where := "ParentId = "+ utils.ToStr(qualid) svc.GetEntities(&qualdetail,where) var qualchanentity qualchange.OilQualChangeMain 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 svcActiviti := workflow.GetActivitiService(utils.DBE) var ActiComplete workflow.ActiCompleteVM ActiComplete.ProcessKey = workflow.OIL_QUAL_CHANGE ActiComplete.BusinessKey = utils.ToStr(qualid) ActiComplete.UserNames = utils.ToStr(dataother.Auditer) ActiComplete.UserId = this.User.Id ActiComplete.Remarks = dataother.AuditorRemark ActiComplete.CallbackUrl = "" if dataother.SuccessStatus == 1 { ActiComplete.Result = "1" if qualmodel.Status == "1" { qualchanentity.Status = "2" //二级单位初审 } else if qualmodel.Status == "2" { qualchanentity.Status = "3" //企业法规处审批 step = 3 } receiveVal := svcActiviti.TaskComplete(ActiComplete) if receiveVal == "true" { cols := []string{ "Id", "Status", "Step", } _, err := svc.UpdateEntityByIdCols(qualid, qualchanentity, cols) if err == nil{ //原信息表更新 if qualmodel.Status == "2" { if len(qualdetail) > 0 { for i:= 0; i