package limscreatereport import ( "dashoo.cn/backend/api/business/auditsetting" "strings" "dashoo.cn/backend/api/business/limsdataentry" "fmt" "strconv" "dashoo.cn/backend/api/business/workflow" "dashoo.cn/backend/api/business/customer" "dashoo.cn/backend/api/business/testtype" . "dashoo.cn/backend/api/mydb" "dashoo.cn/utils" . "dashoo.cn/utils/db" "github.com/go-xorm/xorm" ) type CreateReportService struct { MyServiceBase } func GetCreateReportService(xormEngine *xorm.Engine) *CreateReportService { s := new(CreateReportService) s.DBE = xormEngine return s } //关联委托方信息获取委托详情 func (s *CreateReportService) GetEntrustInfoWithCustomor(entrustable string, where string) (entity LimsCreateReport) { if where == "" { where = " 1=1 " } var sql string sql = `select * from ` + entrustable + ` where ` + where s.DBE.Sql(sql).Get(&entity) return } //获取报告数 func (s *CreateReportService) GetReportCount(reporttable string, where string) int64 { var err error var total int64 //获取总记录数 if where == "" { where = "1=1" } sqlCount := `select count(*) from ` + reporttable + ` where ` + where 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 } //获取报告列表 func (s *CreateReportService) GetCreateReportList(createReportTable string, where string) (entityList []LimsCreateReport) { if where == "" { where = " 1=1 " } var sql string sql = `select * from ` + createReportTable + ` where ` + where s.DBE.Sql(sql).Get(&entityList) return } //获取前台列表需要的字典集合 func (s *CreateReportService) GetDictList(accCode string, tableNameList map[string]string) map[string]interface{} { dictList := make(map[string]interface{}) whereStr := "" //customer列表 var customerList []customer.CustomerDict s.GetEntitysByWhere(accCode+tableNameList["CustomerName"], whereStr, &customerList) dictList["customerList"] = customerList var testPackageTypesList []testtype.TestPackageTypesDict s.GetEntitysByWhere(accCode+tableNameList["TestPackageTypesName"], "ParentId = 0", &testPackageTypesList) dictList["projectList"] = testPackageTypesList //添加其它列表 return dictList } /** * 获取报告新增列表 */ func (s *CreateReportService) GetDataEntryEntrust(dataentrytable string, taskbalancetable string, entrustable string, pageIndex, itemsPerPage int64, order, where string) (int64, []DataEntryEntrustModel) { var err error var total int64 if order != "" { order = " order by " + order } //获取总记录数 if where == "" { where = "1=1" } sqlCount := `select count(*) from ` + entrustable + ` a left join ` + taskbalancetable + ` b on a.Id=b.EId left join ` + dataentrytable + ` c on c.TaskId=b.Id where ` + where var sql string sql = ` select a.*,c.*,b.EId,c.Id DataEntryId,c.CreateUserId DataEntryUserId,c.CreateBy DataEntryBy from ` + entrustable + ` a left join ` + taskbalancetable + ` b on a.Id=b.EId left join ` + dataentrytable + ` c on c.TaskId=b.Id where ` + where + order + ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage) fmt.Println(sql) List := make([]DataEntryEntrustModel, 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 } /** * 获取报告名称Id */ func (s *CreateReportService) GetTemplate(entrustable string, testpackagetable string, where string) (entity ReportTemplateModel) { //获取总记录数 if where == "" { where = "1=1" } var sql string sql = ` select a.*,b.TemplateId,b.TemplateName,b.FullName from ` + entrustable + ` a left join ` + testpackagetable + ` b on a.ProjectTypeId=b.Id where ` + where fmt.Println(sql) s.DBE.Sql(sql).Get(&entity) return } /** * 获取报告Url */ func (s *CreateReportService) GetReportUrl(reporttable string, historytable string, order string, where string) []ReportModel { //获取总记录数 if where == "" { where = "1=1" } if order != "" { order = " order by " + order } var sql string sql = ` select a.*,b.* from ` + reporttable + ` a left join ` + historytable + ` b on a.Id=b.ParentId where ` + where + order fmt.Println(sql) List := make([]ReportModel, 0) utils.DBE.Sql(sql).Find(&List) return List } func (this *CreateReportService) CreateDataentry(DeptID string,AccCode string, taskbalancename string, entrustname string, dataentryname string,docname string,docdetailname string, reportmodel LimsCreateReport, DataEntryCode string, departartmentId string,RecheckUserId string,ReCheckUser string) (int,int) { var err error //获取TemplateCode svc := limsdataentry.GetLimsDataEntryService(utils.DBE) var templatedata []limsdataentry.LimsDocTemplateModel var balancedata limsdataentry.LimsTaskBalance var entrustmaindata limsdataentry.LimsEntrustMain where := "EId = " + utils.ToStr(reportmodel.EId) enwhere := "Id = " + utils.ToStr(reportmodel.EId) svc.GetEntityByWhere(taskbalancename, where, &balancedata) svc.GetEntityByWhere(entrustname, enwhere, &entrustmaindata) //创建数据录入记录 var dataentryentity limsdataentry.LimsDateEntry orderby := "b.Id desc" where2 := " b.Id= " + utils.ToStr(balancedata.DataDocId) templatedata = svc.GetPagingTemplateSerch(docname, docdetailname, orderby, where2) fileurl := strings.Split(templatedata[0].FileURL, "|") dataentryentity.DataEntryCode = DataEntryCode + "-复检" dataentryentity.TaskId = balancedata.Id dataentryentity.DocId = balancedata.DataDocId dataentryentity.DocType = balancedata.DataDoc dataentryentity.DocAddress = fileurl[0] dataentryentity.EId = entrustmaindata.Id dataentryentity.Recheck = 1 dataentryentity.CustomerId = entrustmaindata.CustomerId dataentryentity.CustomerName = entrustmaindata.CustomerName dataentryentity.PositionCheck = entrustmaindata.AddressName dataentryentity.PositionCheckId = entrustmaindata.AddressId dataentryentity.DocName = fileurl[1] dataentryentity.DocVersion = "v1" dataentryentity.CheckStatus = 0 dataentryentity.CreateBy = ReCheckUser dataentryentity.CreateUserId, _ = utils.StrTo(RecheckUserId).Int() _, err = svc.InsertEntityBytbl(dataentryname, &dataentryentity) //启动数据录入工作流 svcActiviti := workflow.GetActivitiService(utils.DBE) var processInstanceId string var RoleSet auditsetting.BaseOilAuditSetting rsvc := auditsetting.GetOilAuditSettingService(utils.DBE) rsvc.GetAuditStepRoleEntity("Base_OilAuditSetting",DeptID,workflow.DATAAUDIT, &RoleSet) processInstanceId = svcActiviti.StartProcess(RoleSet.WorkFlowCord, strconv.Itoa(dataentryentity.Id), RecheckUserId) //switch departartmentId { //case "100000150": // processInstanceId = svcActiviti.StartProcess(workflow.TJZ_DATA_KEY, strconv.Itoa(dataentryentity.Id), RecheckUserId) //case "100000151": // processInstanceId = svcActiviti.StartProcess(workflow.YX_DATA_KEY, strconv.Itoa(dataentryentity.Id), RecheckUserId) //} dataentryentity.DocKey = processInstanceId err = this.UpdateEntityBytbl(dataentryname, dataentryentity.Id, &dataentryentity, []string{"DocKey"}) fmt.Println(err) return dataentryentity.Id,dataentryentity.TaskId }