package oilsupplier import ( "dashoo.cn/backend/api/business/auditsetting" "dashoo.cn/backend/api/business/oilsupplier/classorgsetting" "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub" "dashoo.cn/backend/api/business/workflow" "encoding/json" "strconv" "strings" "time" "dashoo.cn/backend/api/business/baseUser" "dashoo.cn/backend/api/business/oilsupplier/suppliercert" . "dashoo.cn/backend/api/controllers" "dashoo.cn/business2/userRole" "dashoo.cn/utils" ) type OilSupplierCertController struct { BaseController } // @Title 获取列表 // @Description get user by token // @Success 200 {object} []suppliercert.OilSupplierCert // @router /list [get] func (this *OilSupplierCertController) 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 } } Id := this.GetString("Id") SupplierId := this.GetString("SupplierId") AccessCardNo := this.GetString("AccessCardNo") SupplierTypeCode := this.GetString("SupplierTypeCode") SupplierTypeName := this.GetString("SupplierTypeName") RecUnitReason := this.GetString("RecUnitReason") RecUnitPerson := this.GetString("RecUnitPerson") RecDate := this.GetString("RecDate") RecUnitId := this.GetString("RecUnitId") RecUnitName := this.GetString("RecUnitName") StatusA := this.GetString("StatusA") BackReason := this.GetString("BackReason") InFlag := this.GetString("InFlag") EffectStartTime := this.GetString("EffectStartTime") EffectEndTime := this.GetString("EffectEndTime") AuditProcessNote := this.GetString("AuditProcessNote") AuditDate := this.GetString("AuditDate") PayNotice := this.GetString("PayNotice") SupplierStatus := this.GetString("SupplierStatus") MgrType := this.GetString("MgrType") Type := this.GetString("Type") MgrUnit := this.GetString("MgrUnit") AddinTime := this.GetString("AddinTime") EffectTime := this.GetString("EffectTime") ApplyTime := this.GetString("ApplyTime") SupplierNo := this.GetString("SupplierNo") MDMFlag := this.GetString("MDMFlag") InternalFlag := this.GetString("InternalFlag") ImportFlag := this.GetString("ImportFlag") OutsideFlog := this.GetString("OutsideFlog") Remark := this.GetString("Remark") IsDelete := this.GetString("IsDelete") CreateOn := this.GetString("CreateOn") CreateUserId := this.GetString("CreateUserId") CreateBy := this.GetString("CreateBy") ModifiedOn := this.GetString("ModifiedOn") ModifiedUserId := this.GetString("ModifiedUserId") ModifiedBy := this.GetString("ModifiedBy") if Id != "" { where = where + " and Id like '%" + Id + "%'" } if SupplierId != "" { where = where + " and SupplierId like '%" + SupplierId + "%'" } if AccessCardNo != "" { where = where + " and AccessCardNo like '%" + AccessCardNo + "%'" } if SupplierTypeCode != "" { where = where + " and SupplierTypeCode like '%" + SupplierTypeCode + "%'" } if SupplierTypeName != "" { where = where + " and SupplierTypeName like '%" + SupplierTypeName + "%'" } if RecUnitReason != "" { where = where + " and RecUnitReason like '%" + RecUnitReason + "%'" } if RecUnitPerson != "" { where = where + " and RecUnitPerson like '%" + RecUnitPerson + "%'" } if RecDate != "" { where = where + " and RecDate like '%" + RecDate + "%'" } if RecUnitId != "" { where = where + " and RecUnitId like '%" + RecUnitId + "%'" } if RecUnitName != "" { where = where + " and RecUnitName like '%" + RecUnitName + "%'" } if StatusA != "" { where = where + " and StatusA like '%" + StatusA + "%'" } if BackReason != "" { where = where + " and BackReason like '%" + BackReason + "%'" } if InFlag != "" { where = where + " and InFlag like '%" + InFlag + "%'" } if EffectStartTime != "" { where = where + " and EffectStartTime like '%" + EffectStartTime + "%'" } if EffectEndTime != "" { where = where + " and EffectEndTime like '%" + EffectEndTime + "%'" } if AuditProcessNote != "" { where = where + " and AuditProcessNote like '%" + AuditProcessNote + "%'" } if AuditDate != "" { where = where + " and AuditDate like '%" + AuditDate + "%'" } if PayNotice != "" { where = where + " and PayNotice like '%" + PayNotice + "%'" } if SupplierStatus != "" { where = where + " and SupplierStatus like '%" + SupplierStatus + "%'" } if MgrType != "" { where = where + " and MgrType like '%" + MgrType + "%'" } if Type != "" { where = where + " and Type like '%" + Type + "%'" } if MgrUnit != "" { where = where + " and MgrUnit like '%" + MgrUnit + "%'" } if AddinTime != "" { where = where + " and AddinTime like '%" + AddinTime + "%'" } if EffectTime != "" { where = where + " and EffectTime like '%" + EffectTime + "%'" } if ApplyTime != "" { where = where + " and ApplyTime like '%" + ApplyTime + "%'" } if SupplierNo != "" { where = where + " and SupplierNo like '%" + SupplierNo + "%'" } if MDMFlag != "" { where = where + " and MDMFlag like '%" + MDMFlag + "%'" } if InternalFlag != "" { where = where + " and InternalFlag like '%" + InternalFlag + "%'" } if ImportFlag != "" { where = where + " and ImportFlag like '%" + ImportFlag + "%'" } if OutsideFlog != "" { where = where + " and OutsideFlog like '%" + OutsideFlog + "%'" } if Remark != "" { where = where + " and Remark like '%" + Remark + "%'" } if IsDelete != "" { where = where + " and IsDelete like '%" + IsDelete + "%'" } if CreateOn != "" { where = where + " and CreateOn like '%" + CreateOn + "%'" } if CreateUserId != "" { where = where + " and CreateUserId like '%" + CreateUserId + "%'" } if CreateBy != "" { where = where + " and CreateBy like '%" + CreateBy + "%'" } if ModifiedOn != "" { where = where + " and ModifiedOn like '%" + ModifiedOn + "%'" } if ModifiedUserId != "" { where = where + " and ModifiedUserId like '%" + ModifiedUserId + "%'" } if ModifiedBy != "" { where = where + " and ModifiedBy like '%" + ModifiedBy + "%'" } 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 := suppliercert.GetOilSupplierCertService(utils.DBE) var list []suppliercert.OilSupplierCert total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, 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} map[string]interface{} // @router /dictlist [get] func (this *OilSupplierCertController) 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", this.User.AccCode) var userEntity userRole.Base_User userSvc.GetEntityById(this.User.Id, &userEntity) dictList["Supervisers"] = userSvc.GetUserListByDepartmentId(this.User.AccCode, userEntity.Departmentid) //var dictCustomer []svccustomer.Customer //customerSvc.GetEntitysByWhere(this.User.AccCode + CustomerName, "", &dictCustomer) //dictList["EntrustCorp"] = &dictCustomer var datainfo DataInfo datainfo.Items = dictList this.Data["json"] = &datainfo this.ServeJSON() } // @Title 获取实体 // @Description 获取实体 // @Success 200 {object} suppliercert.OilSupplierCert // @router /get/:id [get] func (this *OilSupplierCertController) GetEntity() { Id := this.Ctx.Input.Param(":id") var model suppliercert.OilSupplierCert svc := suppliercert.GetOilSupplierCertService(utils.DBE) svc.GetEntityByIdBytbl(OilSupplierCertName, Id, &model) this.Data["json"] = &model this.ServeJSON() } // @Title 添加 // @Description 新增 // @Param body body suppliercert.OilSupplierCert // @Success 200 {object} controllers.Request // @router /add [post] func (this *OilSupplierCertController) AddEntity() { var model suppliercert.OilSupplierCert var jsonBlob = this.Ctx.Input.RequestBody svc := suppliercert.GetOilSupplierCertService(utils.DBE) json.Unmarshal(jsonBlob, &model) 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(OilSupplierCertName, &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 修改实体 // @Param body body suppliercert.OilSupplierCert // @Success 200 {object} controllers.Request // @router /update/:id [post] func (this *OilSupplierCertController) 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 suppliercert.OilSupplierCert svc := suppliercert.GetOilSupplierCertService(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", "SupplierId", "AccessCardNo", "SupplierTypeCode", "SupplierTypeName", "RecUnitReason", "RecUnitPerson", "RecDate", "RecUnitId", "RecUnitName", "Status", "BackReason", "InFlag", "EffectStartTime", "EffectEndTime", "AuditProcessNote", "AuditDate", "PayNotice", "SupplierStatus", "MgrType", "Type", "MgrUnit", "AddinTime", "EffectTime", "ApplyTime", "SupplierNo", "MDMFlag", "InternalFlag", "ImportFlag", "OutsideFlog", "Remark", "IsDelete", "CreateOn", "CreateUserId", "CreateBy", "ModifiedOn", "ModifiedUserId", "ModifiedBy", } err := svc.UpdateEntityBytbl(OilSupplierCertName, 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 *OilSupplierCertController) 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 suppliercert.OilSupplierCert var entityempty suppliercert.OilSupplierCert svc := suppliercert.GetOilSupplierCertService(utils.DBE) opdesc := "删除-" + Id err := svc.DeleteOperationAndWriteLogBytbl(OilSupplierCertName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "钻井日报") 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 body body suppliercert.OilSupplierCert // @Success 200 {object} controllers.Request // @router /audit/:id [post] func (this *OilSupplierCertController) AuditEntity() { Id := this.Ctx.Input.Param(":id") var errinfo ErrorDataInfo defer func() { //finally处理失败的异常 if err := recover(); err != nil { errinfo.Message = "提交失败," + err.(string) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } }() //取出审批列表 var supplierCert suppliercert.OilSupplierCert certSrv := suppliercert.GetOilSupplierCertService(utils.DBE) certSrv.GetEntityById(Id, &supplierCert) //取出准入分类列表 var subList []suppliercertsub.OilSupplierCertSub certSubSrv := suppliercertsub.GetOilSupplierCertSubService(utils.DBE) subWhere := " 1=1 " subWhere += " and SupplierCertId='"+ Id +"'" certSubSrv.GetEntitysByWhere(OilSupplierCertSubName, subWhere, &subList) var subClassIds string for _, certSub := range subList { subClassIds += strconv.Itoa(certSub.SubclassId) + "," } subClassIds = strings.Trim(subClassIds, ",") if len(subClassIds) <= 0 { panic("没有选择准入分类") } //取出审核部门 classorgSrv := classorgsetting.GetOilClassOrgSettingService(utils.DBE) var list []classorgsetting.OilClassOrgSetting var orgListStr string var where string where += " 1=1 " subWhere += " and SupplierTypeCode='"+ supplierCert.SupplierTypeCode +"'" where += " and ClassId in (" + subClassIds + ")" where += " and AuditStepCode = '" + workflow.FIRST_TRIAL + "'" classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list) if len(list) <= 0 { panic("未配置准入分类审批部门") } subClassIdsCheck := subClassIds + "," //拼接工作流的需要审批的部门及部门相关的审核人员信息 var orgAudits []workflow.MultiOrgAuditVM userSvc := userRole.GetUserService(utils.DBE) auditSrv := auditsetting.GetOilAuditSettingService(utils.DBE) for _, certsetting := range list { var auditSetting auditsetting.Base_OilAuditSetting var orgAudit workflow.MultiOrgAuditVM orgAudit.OrgId = strconv.Itoa(certsetting.OrganizeId) orgAudit.OrgName = certsetting.OrganizeName auditWhere := " 1=1 " auditWhere += " and OrganizeId = '" + strconv.Itoa(certsetting.OrganizeId) + "'" auditWhere += " and AuditStepCode = '" + workflow.FIRST_TRIAL + "'" auditSrv.GetEntity(&auditSetting, auditWhere) userIds := userSvc.GetUserIdsByRoleId(strconv.Itoa(auditSetting.RoleId)) tempstr := strings.Join(userIds, ",") orgAudit.UserIds = strings.Replace(tempstr, "uid_", "", -1) orgAudits = append(orgAudits, orgAudit) orgListStr += "org_"+strconv.Itoa(certsetting.OrganizeId) + "," //排除未设置部门的分类 subClassIdsCheck = strings.Replace(subClassIdsCheck, strconv.Itoa(certsetting.ClassId)+",", "", 1) } orgListStr = strings.Trim(orgListStr, ",") if len(subClassIdsCheck) > 0 { panic("存在准入分类 " + subClassIdsCheck + " 未设置审核部门") } if len(orgListStr) <= 0 { panic("未找到审核部门") } //多实例工作流 svcFlow := suppliercert.GetOilSupplierCertService(utils.DBE) svcFlow.StartAudit(Id, "", orgAudits, this.User.Id, "1", "提交给二级部门初审") //返回正确结果 errinfo.Message = "审核提交成功" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() }