| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- package suppliercert
- import (
- "dashoo.cn/backend/api/business/auditsetting"
- "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
- "dashoo.cn/backend/api/business/oilsupplier/supplier"
- "dashoo.cn/backend/api/business/oilsupplier/supplierfile"
- "dashoo.cn/backend/api/business/oilsupplier/supplierscenefile"
- "dashoo.cn/backend/api/business/workflow"
- baseparameter "dashoo.cn/business2/parameter"
- "dashoo.cn/business2/userRole"
- "dashoo.cn/utils"
- "fmt"
- "strconv"
- "strings"
- "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
- . "dashoo.cn/backend/api/mydb"
- "github.com/go-xorm/xorm"
- )
- type OilSupplierCertService struct {
- MyServiceBase
- }
- func GetOilSupplierCertService(xormEngine *xorm.Engine) *OilSupplierCertService {
- s := new(OilSupplierCertService)
- s.DBE = xormEngine
- return s
- }
- //通用多部门多实例审核方法
- func (s *OilSupplierCertService) SubmitOrgAudit(certId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string, status string, step string) (processInstanceId, res string) {
- //取出审批列表
- var supplierCert OilSupplierCert
- s.GetEntityById(certId, &supplierCert)
- //取出准入分类列表
- var subList []suppliercertsub.OilSupplierCertSub
- certSubSrv := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
- subWhere := " 1=1 "
- subWhere += " and SupplierCertId='" + certId + "'"
- 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(s.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 = '" + wfNodeCode + "'"
- classorgSrv.GetEntitysByWhere(OilClassOrgSettingName, where, &list)
- if len(list) <= 0 {
- panic("未配置准入分类审批部门")
- }
- subClassIdsCheck := subClassIds + ","
- //拼接工作流的需要审批的部门及部门相关的审核人员信息
- var orgAudits []workflow.MultiOrgAuditVM
- userSvc := userRole.GetUserService(s.DBE)
- auditSrv := auditsetting.GetOilAuditSettingService(s.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 = '" + wfNodeCode + "'"
- 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("未找到审核部门")
- }
- //多实例工作流
- svcActiviti := workflow.GetActivitiService(s.DBE)
- if supplierCert.WorkflowId == "0" || len(supplierCert.WorkflowId) <= 0 {
- //启动工作流
- processInstanceId = svcActiviti.StartProcess(wfName, certId, userId)
- }
- //多实例提交给下一步
- var ActiComplete workflow.MultiActiCompleteVM
- ActiComplete.ProcessKey = wfName
- ActiComplete.BusinessKey = certId
- ActiComplete.UserNames = ""
- ActiComplete.MultiOrgAudits = orgAudits
- ActiComplete.UserId = userId
- ActiComplete.Result = result
- ActiComplete.Remarks = remarks
- if status == "" {
- ActiComplete.CallbackUrl = ""
- } else {
- ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost") + "/api/suppliercert/auditcallback?Id=" + strconv.Itoa(supplierCert.Id) + "&status=" + status + "&step=" + step
- }
- res = svcActiviti.MultiTaskComplete(ActiComplete)
- return processInstanceId, res
- }
- //查询已经申请的准入记录
- func (s *OilSupplierCertService) IsCanApplyByExtOrganizeUser(applyType, commercialNo, userId string, isCompanyUser int) bool {
- /*parameterSvc := baseparameter.GetBaseparameterService(s.DBE) //取出外部门ID
- extOrganizeId := parameterSvc.GetBaseparameterMessage("GFGL", "paramset", "ExtOrganizeId")
- if extOrganizeId == departmentId {*/
- if isCompanyUser == 1 {
- var tempMap []map[string]string
- sql := "select 1 from OilSupplier a left join OilSupplierCert b on a.Id=b.SupplierId where b.SupplierTypeCode = '" + applyType + "' and (b.CreateUserId = '" + userId + "' or a.CommercialNo='" + commercialNo + "')"
- tempMap, _ = s.DBE.QueryString(sql)
- if tempMap != nil && tempMap[0]["1"] != "" {
- return false
- }
- }
- return true
- }
- func (s *OilSupplierCertService) GetAuditUser(organizeId, auditstepcode string, entitiesPtr interface{}) {
- where := "( a.DepartmentId in (" + organizeId + ") OR a.CompanyId in (" + organizeId + ")) and AuditStepCode='" + auditstepcode + "'"
- //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
- sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
- s.DBE.SQL(sql).Find(entitiesPtr)
- return
- }
- func (s *OilSupplierCertService) GetAuditUserInSetting(organizeId, auditstepcode string, entitiesPtr interface{}) {
- where := "u.UnitId=" + organizeId
- //where := "a.DepartmentId=" + organizeId + " and AuditStepCode='" + auditstepcode + "'"
- sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN Base_User a ON o.Id = a.SettingId where " + where
- s.DBE.SQL(sql).Find(entitiesPtr)
- return
- }
- func (s *OilSupplierCertService) GetAuditUserByNoLogin(organizeId string, entitiesPtr interface{}) {
- where := "( a.DepartmentId=" + organizeId + " OR a.CompanyId=" + organizeId + ")"
- sql := "SELECT a.UserId Id, a.UserName RealName FROM Base_OilAuditSetting o LEFT JOIN OilAuditUser a ON o.Id = a.SettingId where " + where
- s.DBE.SQL(sql).Find(entitiesPtr)
- return
- }
- func (s *OilSupplierCertService) IsSupplierCertCanSubmit(supplierId, supplierCertId string) bool {
- //获取主表信息
- var supplierEntity supplier.OilSupplier
- supplierService := supplier.GetOilSupplierService(s.DBE)
- supplierService.GetEntityById(supplierId, &supplierEntity)
- //获取准入信息表
- var supplierCertEntity OilSupplierCert
- s.GetEntityById(supplierCertId, &supplierCertEntity)
- //对准入范围的判断
- var certSubList []suppliercertsub.OilSupplierCertSub
- certsubService := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
- certsubService.GetListByCertId(supplierCertId, &certSubList)
- if len(certSubList) <= 0 {
- panic("准入范围不能为空!")
- }
- if supplierEntity.Grade == supplier.GRADE_2 {
- for _, certSubItem := range certSubList {
- if certSubItem.GoodsLevel == supplier.GOODS_LEVEL_1 {
- panic("二级供应商不能准入一级物资!")
- }
- }
- }
- //请上传现场考察报告
- paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
- isInvestigate := paramSvc.GetBaseparameterMessage("GFGL1", "paramset", "isInvestigate")
- if isInvestigate == "true" &&
- supplierCertEntity.Type == supplier.SUPPLIER_TYPE_GOODS && //当前只有物资类才可上传现场考察报告
- supplierEntity.OperType == "代理商" &&
- supplierCertEntity.InStyle != supplier.IN_STYPE_GOODS_LEVEL_1 {
- scenefileService := supplierscenefile.GetSupplierScenefileService(utils.DBE)
- scenefileEntity := scenefileService.GetSceneFileList(strconv.Itoa(supplierEntity.Id))
- if len(scenefileEntity.FileUrl) <= 0 {
- panic("请上传现场考察报告!")
- }
- }
- //对准入资质的判断
- fmt.Println("资质文件查询,主表id:" + strconv.Itoa(supplierEntity.Id))
- supplierFileService := supplierfile.GetSupplierfileService(utils.DBE)
- supplierFiles := supplierFileService.GetListBySupplierId(strconv.Itoa(supplierEntity.Id))
- fmt.Println("资质文件查询,主表id:" + strconv.Itoa(supplierEntity.Id))
- needBiddingBook := false
- hasBiddingBook := false
- if supplierCertEntity.InStyle == supplier.IN_STYPE_BIDDING {
- needBiddingBook = true // 招标准入需提供中标通知书
- }
- for _, fileItem := range supplierFiles {
- fmt.Println("资质文件: " + fileItem.NeedFileType + " , 匹配名称: " + supplier.BIDDING_BOOK_NAME)
- /* if fileItem.FileType == "1" { // 1:必须上传的文件, 0:非必须上传
- } */
- if fileItem.NeedFileType == supplier.BIDDING_BOOK_NAME {
- hasBiddingBook = true
- }
- if len(fileItem.FileUrl) <= 0 {
- panic("请上传文件 [" + fileItem.NeedFileType + "] !")
- }
- }
- //其它判断
- if needBiddingBook && !hasBiddingBook {
- panic("招标准入需提供中标通知书 !")
- }
- return true
- }
|