contractService.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package contract
  2. import (
  3. . "dashoo.cn/backend/api/mydb"
  4. "github.com/go-xorm/xorm"
  5. "strconv"
  6. )
  7. type OilContractService struct {
  8. MyServiceBase
  9. }
  10. func GetOilContractService(xormEngine *xorm.Engine) *OilContractService {
  11. s := new(OilContractService)
  12. s.DBE = xormEngine
  13. return s
  14. }
  15. func (s *OilContractService) GetHandOnStatisticsList (queryParam HandOnStatisticsQuery, entitiesPtr interface{}) (total int64) {
  16. if queryParam.PageIndex < 1 { queryParam.PageIndex = 1 }
  17. if queryParam.ItemsPerPage < 1 { queryParam.ItemsPerPage = 10 }
  18. // var resultsSlice []map[string][]byte
  19. /*sqlCount := "SELECT COUNT(*) " +
  20. " FROM OilContract a " +
  21. " LEFT JOIN OilContractReview b ON b.ContractId=a.Id " +
  22. " GROUP BY a.SecondUnit "*/
  23. sql := "SELECT c.FullName as SecondUnit, COUNT(DISTINCT a.Id) AS ContractNum, COUNT(DISTINCT b.ContractId) AS HasNum " +
  24. " FROM OilContract a " +
  25. " LEFT JOIN OilContractReview b ON a.Id = b.ContractId " +
  26. " LEFT JOIN Base_Organize c on SecondUnit = c.Id"
  27. sql += " WHERE a.ImportStatus > 0 and a.Status < 3 "
  28. if queryParam.YearNum > 0 {
  29. sql += " AND " + strconv.Itoa(queryParam.YearNum) + " BETWEEN YEAR(a.StartDate) AND YEAR(a.EndDate)"
  30. }
  31. if queryParam.SupplierType != "" {
  32. sql += " AND a.ContractClass='" + queryParam.SupplierType + "'"
  33. }
  34. sql += " GROUP BY a.SecondUnit "
  35. if queryParam.SecondUnit != "" {
  36. sql += " HAVING c.FullName like '%" + queryParam.SecondUnit + "%'"
  37. }
  38. if queryParam.Order != "" {
  39. sql += " ORDER BY " + queryParam.Order + " " + queryParam.Asc
  40. }
  41. startLimit := int((queryParam.PageIndex-1) * queryParam.ItemsPerPage)
  42. endLimit := int((queryParam.PageIndex) * queryParam.ItemsPerPage)
  43. var totalCnt int64
  44. totalCnt, _ = s.DBE.SQL(sql).Limit(startLimit, endLimit).FindAndCount(entitiesPtr)
  45. return totalCnt
  46. }
  47. func (s *OilContractService) GetSum(entitiesPtr interface{}, where string) {
  48. sql := ` select sum(Money) as Money from OilContractMoney`
  49. sql += ` where ` + where
  50. s.DBE.SQL(sql).Get(entitiesPtr)
  51. }