| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- package annualaudit
- 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"
- "dashoo.cn/utils"
- "github.com/go-xorm/xorm"
- "strconv"
- "strings"
- )
- type OilAnnualAuditService struct {
- MyServiceBase
- }
- func GetOilAnnualAuditService(xormEngine *xorm.Engine) *OilAnnualAuditService {
- s := new(OilAnnualAuditService)
- s.DBE = xormEngine
- return s
- }
- func (s *OilAnnualAuditService) GetSupplierList(supname, auditname string) []Suppliername {
- var sql string
- //sql = `select * from `+ supname +` where Id not in ( select SupplierId from `+ auditname +` where YEAR(CreateOn)=YEAR(NOW()))`
- sql = `select * from `+ supname
- //sql = `select c.id,c.value from ( select a.*, b.SupplierId as tempcolum from `+ supname +` a left join `+ auditname +` b on a.Id = b.SupplierId where YEAR(b.CreateOn)=YEAR(NOW())) as c where c.tempcolum is null`
- List := make([]Suppliername, 0)
- utils.DBE.Sql(sql).Find(&List)
- return List
- }
- //通用多部门多实例审核方法
- func (s *OilAnnualAuditService) SubmitOrgAudit(status, workflowid, certId, annualId, wfName, wfNodeCode, userId, result, remarks, OilSupplierCertSubName, OilClassOrgSettingName string) (processInstanceId, res 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 = utils.Cfg.MustValue("workflow", "callbackHost")+"/api/annualaudit/auditcallback?status="+ status +"&annualId="+ annualId
- res = svcActiviti.MultiTaskComplete(ActiComplete)
- return processInstanceId, res
- }
- func (s *OilAnnualAuditService) GetMyPagingEntitiesWithOrderBytbl(supplierTableName, AnnualAuditName string, pageIndex, itemsPerPage int64, orderby string, asc bool, entitiesPtr interface{}, where string) (total int64) {
- var resultsSlice []map[string][]byte
- //获取总记录数
- sqlCount := `select count(*) from ` + supplierTableName + ` a `
- sqlCount += ` left join ` + AnnualAuditName + " b on b.SupplierId = a.Id"
- sqlCount += ` where ` + where
- var sql string
- sql = `select a.SupplierName, b.* `
- sql += ` from ` + supplierTableName + ` a `
- sql += ` left join ` + AnnualAuditName + " b on b.SupplierId = a.Id"
- sql += ` where ` + where
- if asc {
- sql += ` order by ` + orderby + ` ASC `
- } else {
- sql += ` order by ` + orderby + ` DESC `
- }
- if (pageIndex != 0 && itemsPerPage !=0) {
- sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
- }
- s.DBE.SQL(sql).Find(entitiesPtr)
- resultsSlice, _ = s.DBE.Query(sqlCount)
- if len(resultsSlice) > 0 {
- results := resultsSlice[0]
- for _, value := range results {
- total, _ = strconv.ParseInt(string(value), 10, 64)
- break
- }
- }
- return total
- }
- func (s *OilAnnualAuditService) GetProcessInfoWithOrderBytbl(oilAnnualAuditName string, pageIndex, itemsPerPage int64, orderby string, asc bool, entitiesPtr interface{}, where string) (total int64) {
- var resultsSlice []map[string][]byte
- //获取总记录数
- sqlCount := `select count(*) from ` + oilAnnualAuditName
- sqlCount += ` where ` + where
- var sql string
- sql = `select a.SupplierName, a.Id, `
- sql += ` a.Status, a.SupplierTypeName SupplierTypeCode, `
- sql += ` a.WorkflowId, '3' as Type, a.CreateOn, a.AccessCardNo, a.ModifiedOn as AddinTime, u.Realname AS ContactName, u.Telephone AS Mobile,`
- sql += ` CASE WHEN uu.IsCompanyUser = 1 THEN c.CheckUnitName
- WHEN uu.IsCompanyUser = 0 THEN uu.Unit
- ELSE ''
- END AS RecUnitName`
- sql += ` from ` + oilAnnualAuditName + ` a `
- sql += ` LEFT JOIN Base_User u ON a.CreateUserId = u.Id`
- sql += ` Left join OilSupplier s on a.SupplierId = s.Id
- left join Base_User uu on s.CreateUserId = uu.Id
- left join OilCorporateInfo c on s.CreateUserId = c.UserId`
- sql += ` where ` + where
- if asc {
- sql += ` order by ` + orderby + ` ASC `
- } else {
- sql += ` order by ` + orderby + ` DESC `
- }
- if (pageIndex != 0 && itemsPerPage !=0) {
- sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
- }
- s.DBE.SQL(sql).Find(entitiesPtr)
- resultsSlice, _ = s.DBE.Query(sqlCount)
- if len(resultsSlice) > 0 {
- results := resultsSlice[0]
- for _, value := range results {
- total, _ = strconv.ParseInt(string(value), 10, 64)
- break
- }
- }
- return total
- }
|