| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package qualchange
- import (
- "dashoo.cn/backend/api/business/auditsetting"
- "dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
- "dashoo.cn/backend/api/business/oilsupplier/suppliercert"
- "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
- "dashoo.cn/backend/api/business/workflow"
- . "dashoo.cn/backend/api/mydb"
- "dashoo.cn/business2/userRole"
- "strings"
- "strconv"
- "dashoo.cn/utils"
- . "dashoo.cn/utils/db"
- "github.com/go-xorm/xorm"
- )
- type QualChangeService struct {
- MyServiceBase
- }
- func GetQualChangeService(xormEngine *xorm.Engine) *QualChangeService {
- s := new(QualChangeService)
- s.DBE = xormEngine
- return s
- }
- //获取资质列表
- func (s *QualChangeService) GetQualPagingEntitiesWithOrderBytbl(supname, supcername, supfilename, qualmainname, order, where string, pageIndex, itemsPerPage int64) (int64,[]OilSupplierQual) {
- var err error
- var total int64
- if where == "" {
- where = " 1=1 "
- }
- //获取总记录数
- sqlCount := `select count(*) from ` + supname + ` a
- left join ` + supcername + ` b on a.Id=b.SupplierId left join `+ qualmainname + ` c on a.Id = c.SupplierId
- where a.Id in ( select SupplierId from `+ supfilename +`) and `+ where
- var sql string
- sql = `select a.*, b.AccessCardNo, b.Id CertId, c.Id QualId, c.Status Status, c.Step Step, c.WorkFlowId WorkFlowId, c.CreateOn ConmmitTime from ` + supname + ` a
- left join ` + supcername + ` b on a.Id=b.SupplierId left join `+ qualmainname + ` c on a.Id = c.SupplierId
- where a.Id in ( select SupplierId from `+ supfilename +`) and` + where + ` order by ` + order +
- ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
- List := make([]OilSupplierQual, 0)
- utils.DBE.Sql(sql).Find(&List)
- resultsSlice, err := s.DBE.Query(sqlCount)
- LogError(err)
- if len(resultsSlice) > 0 {
- results := resultsSlice[0]
- for _, value := range results {
- total, err = strconv.ParseInt(string(value), 10, 64)
- LogError(err)
- break
- }
- }
- return total, List
- }
- //通用多部门多实例审核方法
- func (s *QualChangeService) SubmitOrgAudit(workflowid, certId, annualId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string) (processInstanceId string) {
- //取出审批列表
- var supplierCert 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 workflowid == "0" || len(workflowid) <= 0 {
- //启动工作流
- processInstanceId = svcActiviti.StartProcess(wfName, annualId, userId)
- }
- //多实例提交给下一步
- var ActiComplete workflow.MultiActiCompleteVM
- ActiComplete.ProcessKey = wfName
- ActiComplete.BusinessKey = annualId
- ActiComplete.UserNames = ""
- ActiComplete.MultiOrgAudits = orgAudits
- ActiComplete.UserId = userId
- ActiComplete.Result = result
- ActiComplete.Remarks = remarks
- ActiComplete.CallbackUrl = ""
- svcActiviti.MultiTaskComplete(ActiComplete)
- return processInstanceId
- }
|