2
3

oilgoodsaptitudeService.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. package goodsaptitude
  2. import (
  3. "strconv"
  4. . "dashoo.cn/backend/api/mydb"
  5. "dashoo.cn/utils"
  6. . "dashoo.cn/utils/db"
  7. "github.com/go-xorm/xorm"
  8. )
  9. type OilGoodsAptitudeService struct {
  10. MyServiceBase
  11. }
  12. func GetOilGoodsAptitudeService(xormEngine *xorm.Engine) *OilGoodsAptitudeService {
  13. s := new(OilGoodsAptitudeService)
  14. s.DBE = xormEngine
  15. return s
  16. }
  17. type TotalResult struct {
  18. Total int64 `xorm:"INT(11) 'total'"`
  19. }
  20. func (s *OilGoodsAptitudeService) GetMyPagingEntitiesWithOrderBytbl(tableName string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
  21. var err error
  22. var resultsSlice []map[string][]byte
  23. //获取表名
  24. if len(where) == 0 {
  25. if asc {
  26. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  27. } else {
  28. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  29. }
  30. //获取总记录数
  31. sql := "SELECT COUNT(*) AS total FROM " + tableName
  32. resultsSlice, err = s.DBE.Query(sql)
  33. } else {
  34. if asc {
  35. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  36. } else {
  37. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  38. }
  39. sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
  40. resultsSlice, err = s.DBE.Query(sql)
  41. }
  42. //LogError(err)
  43. if len(resultsSlice) > 0 {
  44. results := resultsSlice[0]
  45. for _, value := range results {
  46. total, err = strconv.ParseInt(string(value), 10, 64)
  47. LogError(err)
  48. break
  49. }
  50. }
  51. return total
  52. }
  53. func (s *OilGoodsAptitudeService) GetGoodsList(goodsclass, where string) []GoodsBusiness {
  54. if where == "" {
  55. where = " 1=1 "
  56. }
  57. var sql string
  58. sql = `select Id, Code, Name, concat(Code, ' ', Name) as CodeName, ParentId, Remark, DeletionStateCode
  59. from ` + goodsclass + ` where ` + where + ` order by Code asc `
  60. List := make([]GoodsBusiness, 0)
  61. utils.DBE.Sql(sql).Find(&List)
  62. return List
  63. }
  64. func (s *OilGoodsAptitudeService) GetList_2019(OilGoodsAptitudeName, OilGoodsAptitudeClassName string, pageIndex, itemsPerPage int64, orderby string, asc bool, entitiesPtr interface{}, where string) (total int64) {
  65. var resultsSlice []map[string][]byte
  66. //获取总记录数
  67. sqlCount := `select count(*) from ` + OilGoodsAptitudeName + ` a `
  68. sqlCount += ` left join ` + OilGoodsAptitudeClassName + " b on b.Id = a.ClassId"
  69. sqlCount += ` where ` + where
  70. var sql string
  71. sql = `select a.*, b.Code, b.Name `
  72. sql += ` from ` + OilGoodsAptitudeName + ` a `
  73. sql += ` left join ` + OilGoodsAptitudeClassName + " b on b.Id = a.ClassId"
  74. sql += ` where ` + where
  75. if asc {
  76. sql += ` order by ` + orderby + ` ASC `
  77. } else {
  78. sql += ` order by ` + orderby + ` DESC `
  79. }
  80. if (pageIndex != 0 && itemsPerPage !=0) {
  81. sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  82. }
  83. s.DBE.SQL(sql).Find(entitiesPtr)
  84. resultsSlice, _ = s.DBE.Query(sqlCount)
  85. if len(resultsSlice) > 0 {
  86. results := resultsSlice[0]
  87. for _, value := range results {
  88. total, _ = strconv.ParseInt(string(value), 10, 64)
  89. break
  90. }
  91. }
  92. return total
  93. }
  94. func (s *OilGoodsAptitudeService) GetFCode() string {
  95. sql := "select group_concat(Code ORDER BY SortCode) FCodes from `Base_TableHeader` where CategoryCode= '01'"
  96. results, err :=s.DBE.QueryString(sql)
  97. if err != nil {
  98. return ""
  99. }
  100. return results[0]["FCodes"]
  101. }
  102. func (s *OilGoodsAptitudeService) GetGoodsAptitudeF(entity interface{}, where string) error {
  103. sql := "select F01,F02,F03,F04,F05,F06,F07,F08,F09,F10,"
  104. sql += "F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,"
  105. sql += "F21,F22,F23,F24,F25,F26,F27,F28,F29,F30,"
  106. sql += "F31,F32,F33,F34,F35,F36,F37,F38,F39,F40,"
  107. sql += "F41,F42,F43,F44,F45,F46 from OilGoodsAptitude "
  108. if where != "" {
  109. sql = sql + " where " + where
  110. }
  111. err := s.DBE.Sql(sql).Find(entity)
  112. return err
  113. }
  114. func (s *OilGoodsAptitudeService) DeleteTable(tableName, where string) error {
  115. sql := "DELETE FROM " + tableName
  116. if where != "" {
  117. sql = sql + " Where " + where
  118. }
  119. _,err := s.DBE.Query(sql)
  120. return err
  121. }
  122. func (s *OilGoodsAptitudeService) GetMyPagingDelEntitiesWithOrderBytbl(supplierTableName, supplierCertTableName, OilInfoChangeName, OilCorporateInfoName, OilSupplierCertSubName,
  123. OilSupplierFileName string, pageIndex, itemsPerPage int64, orderby string, asc bool, entitiesPtr interface{}, where,having, liftjoon string) (total int64) {
  124. var sql string
  125. sql = `select SQL_CALC_FOUND_ROWS a.Id,a.SupplierName,b.AccessCardNo,b.SupplierTypeCode,`
  126. sql += `a.LegalPerson,a.RegCapital,a.Mobile,b.AuditDate,b.ApplyTime,b.InFlag,a.ContactName,a.CommercialNo, `
  127. sql += `a.DepositBank,a.HseTraining,a.CompanyType,a.SetupTime,a.Address,a.Province,a.City,a.Street, `
  128. sql += `a.LinkAddress,a.LinkProvince,a.LinkCity,a.LinkStreet,a.BusinessScope, `
  129. sql += `b.InStyle, b.Id CertId, `
  130. sql += `group_concat(distinct e.NeedFileType) NeedFileType `
  131. if liftjoon != "" {
  132. sql += `,group_concat(distinct d.Name) CerSubName `
  133. }
  134. sql += `from ` + supplierTableName + ` a `
  135. sql += `left join ` + supplierCertTableName + ` b on b.SupplierId = a.Id `
  136. sql += liftjoon
  137. sql += `left join ` + OilSupplierFileName + ` e on e.SupplierId = a.Id `
  138. sql += `LEFT JOIN tmp_OilSupplierCertSub t ON t.SupplierCertId = b.Id `
  139. sql += `where ` + where
  140. sql += ` group by a.Id,b.Id ` + having
  141. if asc {
  142. sql += ` order by ` + orderby + ` ASC `
  143. } else {
  144. sql += ` order by ` + orderby + ` DESC `
  145. }
  146. sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  147. sqlCount := "SELECT FOUND_ROWS() as total"
  148. var totalResult TotalResult
  149. session := s.DBE.NewSession()
  150. session.Begin()
  151. session.SQL(sql).Find(entitiesPtr)
  152. session.SQL(sqlCount).Get(&totalResult)
  153. session.Commit()
  154. total = totalResult.Total
  155. return total
  156. }
  157. //查看贸易或制造商准入资质个数
  158. func (s *OilGoodsAptitudeService) GetNumOfPass(ismanf string) (total int64) {
  159. var resultsSlice []map[string][]byte
  160. sqlCount := "SELECT COUNT(Id) FROM Base_TableHeader WHERE IsManuf = '"+ismanf+"' AND CategoryCode = '01'"
  161. resultsSlice, _ = s.DBE.Query(sqlCount)
  162. if len(resultsSlice) > 0 {
  163. results := resultsSlice[0]
  164. for _, value := range results {
  165. total, _ = strconv.ParseInt(string(value), 10, 64)
  166. break
  167. }
  168. }
  169. return total
  170. }
  171. func (s *OilGoodsAptitudeService) TruncateTable(tableName string) error {
  172. sql := "TRUNCATE TABLE " + tableName
  173. _,err := s.DBE.Query(sql)
  174. return err
  175. }
  176. func (s *OilGoodsAptitudeService) InsertGoodsAptitude(fromTableName, toTableName string) error {
  177. sql := "INSERT INTO " + toTableName + " SELECT * FROM " + fromTableName
  178. _,err := s.DBE.Query(sql)
  179. return err
  180. }
  181. func (s *OilGoodsAptitudeService) InsertTmpGoodsAptitude(parentId, fcode, val string) error {
  182. sql := "INSERT INTO `tmp_OilGoodsAptitude` (Edition,ClassId," + fcode + ") "
  183. sql += " VALUES ('1',"+ parentId +"," + val + ")"
  184. _, err := s.DBE.Query(sql)
  185. return err
  186. }
  187. func (s *OilGoodsAptitudeService) GetPagingCheckedEntities(pageIndex, itemsPerPage int64, orderby string,
  188. asc bool, entitiesPtr interface{}, having string) (total int64) {
  189. var sql string
  190. sql = `SELECT
  191. a.Id,a.SupplierName,
  192. b.SupplierTypeCode, b.SupplierTypeName,
  193. b.AccessCardNo, a.DepositBank,a.HseTraining,
  194. a.CompanyType,a.SetupTime,a.Address,a.Province,a.City,a.Street,
  195. a.LegalPerson,a.RegCapital,a.Mobile,b.AuditDate,b.ApplyTime,b.InFlag,
  196. a.ContactName,a.CommercialNo,a.LinkAddress,a.LinkProvince,
  197. a.LinkCity,a.LinkStreet,a.BusinessScope,b.InStyle, b.Id CertId,
  198. COUNT(sub.Id) AS subCnt,
  199. group_concat(DISTINCT header.Code) AS headerCodes,
  200. group_concat(distinct sub.Name) AS subNames,
  201. group_concat(distinct sub.Code) certSubCodes,
  202. group_concat(DISTINCT sub.SubClassId) AS subClassIds,
  203. max(goods.F01) AS F01,
  204. max(goods.F02) AS F02,
  205. max(goods.F03) AS F03,
  206. max(goods.F04) AS F04,
  207. max(goods.F05) AS F05,
  208. max(goods.F06) AS F06,
  209. max(goods.F07) AS F07,
  210. max(goods.F08) AS F08,
  211. max(goods.F09) AS F09,
  212. max(goods.F10) AS F10,
  213. max(goods.F11) AS F11,
  214. max(goods.F12) AS F12,
  215. max(goods.F13) AS F13,
  216. max(goods.F14) AS F14,
  217. max(goods.F15) AS F15,
  218. max(goods.F16) AS F16,
  219. max(goods.F17) AS F17,
  220. max(goods.F18) AS F18,
  221. max(goods.F19) AS F19,
  222. max(goods.F20) AS F20,
  223. max(goods.F21) AS F21,
  224. max(goods.F22) AS F22,
  225. max(goods.F23) AS F23,
  226. max(goods.F24) AS F24,
  227. max(goods.F25) AS F25,
  228. max(goods.F26) AS F26,
  229. max(goods.F27) AS F27,
  230. max(goods.F28) AS F28,
  231. max(goods.F29) AS F29,
  232. max(goods.F30) AS F30,
  233. max(goods.F31) AS F31,
  234. max(goods.F32) AS F32,
  235. max(goods.F33) AS F33,
  236. max(goods.F34) AS F34,
  237. max(goods.F35) AS F35,
  238. max(goods.F36) AS F36,
  239. max(goods.F37) AS F37,
  240. max(goods.F38) AS F38,
  241. max(goods.F39) AS F39,
  242. max(goods.F40) AS F40,
  243. max(goods.F41) AS F41,
  244. max(goods.F42) AS F42,
  245. max(goods.F43) AS F43,
  246. max(goods.F44) AS F44,
  247. max(goods.F45) AS F45,
  248. max(goods.F46) AS F46,
  249. (
  250. if((max(goods.F01)='1' AND LOCATE('F01', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  251. if((max(goods.F02)='1' AND LOCATE('F02', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  252. if((max(goods.F03)='1' AND LOCATE('F03', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  253. if((max(goods.F04)='1' AND LOCATE('F04', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  254. if((max(goods.F05)='1' AND LOCATE('F05', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  255. if((max(goods.F06)='1' AND LOCATE('F06', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  256. if((max(goods.F07)='1' AND LOCATE('F07', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  257. if((max(goods.F08)='1' AND LOCATE('F08', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  258. if((max(goods.F09)='1' AND LOCATE('F09', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  259. if((max(goods.F10)='1' AND LOCATE('F10', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  260. if((max(goods.F11)='1' AND LOCATE('F12', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  261. if((max(goods.F13)='1' AND LOCATE('F13', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  262. if((max(goods.F14)='1' AND LOCATE('F14', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  263. if((max(goods.F15)='1' AND LOCATE('F15', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  264. if((max(goods.F16)='1' AND LOCATE('F16', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  265. if((max(goods.F17)='1' AND LOCATE('F17', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  266. if((max(goods.F18)='1' AND LOCATE('F18', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  267. if((max(goods.F19)='1' AND LOCATE('F19', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  268. if((max(goods.F20)='1' AND LOCATE('F20', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  269. if((max(goods.F21)='1' AND LOCATE('F21', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  270. if((max(goods.F22)='1' AND LOCATE('F22', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  271. if((max(goods.F23)='1' AND LOCATE('F23', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  272. if((max(goods.F24)='1' AND LOCATE('F24', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  273. if((max(goods.F25)='1' AND LOCATE('F25', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  274. if((max(goods.F26)='1' AND LOCATE('F26', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  275. if((max(goods.F27)='1' AND LOCATE('F27', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  276. if((max(goods.F28)='1' AND LOCATE('F28', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  277. if((max(goods.F29)='1' AND LOCATE('F29', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  278. if((max(goods.F30)='1' AND LOCATE('F30', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  279. if((max(goods.F31)='1' AND LOCATE('F31', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  280. if((max(goods.F32)='1' AND LOCATE('F32', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  281. if((max(goods.F33)='1' AND LOCATE('F33', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  282. if((max(goods.F34)='1' AND LOCATE('F34', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  283. if((max(goods.F35)='1' AND LOCATE('F35', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  284. if((max(goods.F36)='1' AND LOCATE('F36', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  285. if((max(goods.F37)='1' AND LOCATE('F37', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  286. if((max(goods.F38)='1' AND LOCATE('F38', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  287. if((max(goods.F39)='1' AND LOCATE('F39', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  288. if((max(goods.F40)='1' AND LOCATE('F40', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  289. if((max(goods.F41)='1' AND LOCATE('F41', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  290. if((max(goods.F42)='1' AND LOCATE('F42', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  291. if((max(goods.F43)='1' AND LOCATE('F43', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  292. if((max(goods.F44)='1' AND LOCATE('F44', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  293. if((max(goods.F45)='1' AND LOCATE('F45', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE) AND
  294. if((max(goods.F46)='1' AND LOCATE('F46', group_concat(DISTINCT header.Code)) > 0), TRUE, FALSE)
  295. ) AS checked
  296. FROM OilSupplier a
  297. LEFT JOIN OilSupplierCert b ON a.Id=b.SupplierId
  298. LEFT JOIN OilSupplierCertSub sub ON b.Id=sub.SupplierCertId
  299. LEFT JOIN OilSupplierFile files ON a.Id=files.SupplierId
  300. LEFT JOIN Base_TableHeader header ON files.NeedFileType=header.Name
  301. LEFT JOIN OilGoodsAptitude goods ON sub.SubClassId=goods.ClassId
  302. WHERE b.SupplierTypeCode='03'
  303. GROUP BY a.Id, b.Id`
  304. sql += having
  305. if asc {
  306. sql += ` order by ` + orderby + ` ASC `
  307. } else {
  308. sql += ` order by ` + orderby + ` DESC `
  309. }
  310. sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  311. sqlCount := "SELECT count(*) as total FROM OilSupplier a LEFT JOIN OilSupplierCert b ON a.Id=b.SupplierId WHERE b.SupplierTypeCode='03'"
  312. var totalResult TotalResult
  313. s.DBE.SQL(sql).Find(entitiesPtr)
  314. s.DBE.SQL(sqlCount).Get(&totalResult)
  315. total = totalResult.Total
  316. return total
  317. }
  318. func (s *OilGoodsAptitudeService) GetPagingTmpCheckedEntities(pageIndex, itemsPerPage int64, orderby string,
  319. asc bool, entitiesPtr interface{}, having string) (total int64) {
  320. var sql string
  321. sql = `SELECT
  322. a.Id,a.SupplierName,
  323. b.SupplierTypeCode, b.SupplierTypeName,
  324. b.AccessCardNo, a.DepositBank,a.HseTraining,
  325. a.CompanyType,a.SetupTime,a.Address,a.Province,a.City,a.Street,
  326. a.LegalPerson,a.RegCapital,a.Mobile,b.AuditDate,b.ApplyTime,b.InFlag,
  327. a.ContactName,a.CommercialNo,a.LinkAddress,a.LinkProvince,
  328. a.LinkCity,a.LinkStreet,a.BusinessScope,b.InStyle, b.Id CertId,
  329. COUNT(sub.Id) AS subCnt,
  330. group_concat(DISTINCT header.Code) AS headerCodes,
  331. group_concat(distinct sub.Name) AS subNames,
  332. group_concat(distinct sub.Code) certSubCodes,
  333. group_concat(DISTINCT sub.SubClassId) AS subClassIds,
  334. max(goods.F01) AS F01,
  335. max(goods.F02) AS F02,
  336. max(goods.F03) AS F03,
  337. max(goods.F04) AS F04,
  338. max(goods.F05) AS F05,
  339. max(goods.F06) AS F06,
  340. max(goods.F07) AS F07,
  341. max(goods.F08) AS F08,
  342. max(goods.F09) AS F09,
  343. max(goods.F10) AS F10,
  344. max(goods.F11) AS F11,
  345. max(goods.F12) AS F12,
  346. max(goods.F13) AS F13,
  347. max(goods.F14) AS F14,
  348. max(goods.F15) AS F15,
  349. max(goods.F16) AS F16,
  350. max(goods.F17) AS F17,
  351. max(goods.F18) AS F18,
  352. max(goods.F19) AS F19,
  353. max(goods.F20) AS F20,
  354. max(goods.F21) AS F21,
  355. max(goods.F22) AS F22,
  356. max(goods.F23) AS F23,
  357. max(goods.F24) AS F24,
  358. max(goods.F25) AS F25,
  359. max(goods.F26) AS F26,
  360. max(goods.F27) AS F27,
  361. max(goods.F28) AS F28,
  362. max(goods.F29) AS F29,
  363. max(goods.F30) AS F30,
  364. max(goods.F31) AS F31,
  365. max(goods.F32) AS F32,
  366. max(goods.F33) AS F33,
  367. max(goods.F34) AS F34,
  368. max(goods.F35) AS F35,
  369. max(goods.F36) AS F36,
  370. max(goods.F37) AS F37,
  371. max(goods.F38) AS F38,
  372. max(goods.F39) AS F39,
  373. max(goods.F40) AS F40,
  374. max(goods.F41) AS F41,
  375. max(goods.F42) AS F42,
  376. max(goods.F43) AS F43,
  377. max(goods.F44) AS F44,
  378. max(goods.F45) AS F45,
  379. max(goods.F46) AS F46,
  380. (
  381. if((max(goods.F01)='1' AND LOCATE('F01', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F01) is null) or (max(goods.F01) = ''), TRUE, FALSE) AND
  382. if((max(goods.F02)='1' AND LOCATE('F02', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F02) is null) or (max(goods.F02) = ''), TRUE, FALSE) AND
  383. if((max(goods.F03)='1' AND LOCATE('F03', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F03) is null) or (max(goods.F03) = ''), TRUE, FALSE) AND
  384. if((max(goods.F04)='1' AND LOCATE('F04', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F04) is null) or (max(goods.F04) = ''), TRUE, FALSE) AND
  385. if((max(goods.F05)='1' AND LOCATE('F05', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F05) is null) or (max(goods.F05) = ''), TRUE, FALSE) AND
  386. if((max(goods.F06)='1' AND LOCATE('F06', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F06) is null) or (max(goods.F06) = ''), TRUE, FALSE) AND
  387. if((max(goods.F07)='1' AND LOCATE('F07', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F07) is null) or (max(goods.F07) = ''), TRUE, FALSE) AND
  388. if((max(goods.F08)='1' AND LOCATE('F08', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F08) is null) or (max(goods.F08) = ''), TRUE, FALSE) AND
  389. if((max(goods.F09)='1' AND LOCATE('F09', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F09) is null) or (max(goods.F09) = ''), TRUE, FALSE) AND
  390. if((max(goods.F10)='1' AND LOCATE('F10', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F10) is null) or (max(goods.F10) = ''), TRUE, FALSE) AND
  391. if((max(goods.F10)='1' AND LOCATE('F11', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F11) is null) or (max(goods.F11) = ''), TRUE, FALSE) AND
  392. if((max(goods.F11)='1' AND LOCATE('F12', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F12) is null) or (max(goods.F12) = ''), TRUE, FALSE) AND
  393. if((max(goods.F13)='1' AND LOCATE('F13', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F13) is null) or (max(goods.F13) = ''), TRUE, FALSE) AND
  394. if((max(goods.F14)='1' AND LOCATE('F14', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F14) is null) or (max(goods.F14) = ''), TRUE, FALSE) AND
  395. if((max(goods.F15)='1' AND LOCATE('F15', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F15) is null) or (max(goods.F15) = ''), TRUE, FALSE) AND
  396. if((max(goods.F16)='1' AND LOCATE('F16', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F16) is null) or (max(goods.F16) = ''), TRUE, FALSE) AND
  397. if((max(goods.F17)='1' AND LOCATE('F17', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F17) is null) or (max(goods.F17) = ''), TRUE, FALSE) AND
  398. if((max(goods.F18)='1' AND LOCATE('F18', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F18) is null) or (max(goods.F18) = ''), TRUE, FALSE) AND
  399. if((max(goods.F19)='1' AND LOCATE('F19', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F19) is null) or (max(goods.F19) = ''), TRUE, FALSE) AND
  400. if((max(goods.F20)='1' AND LOCATE('F20', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F20) is null) or (max(goods.F20) = ''), TRUE, FALSE) AND
  401. if((max(goods.F21)='1' AND LOCATE('F21', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F21) is null) or (max(goods.F21) = ''), TRUE, FALSE) AND
  402. if((max(goods.F22)='1' AND LOCATE('F22', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F22) is null) or (max(goods.F22) = ''), TRUE, FALSE) AND
  403. if((max(goods.F23)='1' AND LOCATE('F23', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F23) is null) or (max(goods.F23) = ''), TRUE, FALSE) AND
  404. if((max(goods.F24)='1' AND LOCATE('F24', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F24) is null) or (max(goods.F24) = ''), TRUE, FALSE) AND
  405. if((max(goods.F25)='1' AND LOCATE('F25', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F25) is null) or (max(goods.F25) = ''), TRUE, FALSE) AND
  406. if((max(goods.F26)='1' AND LOCATE('F26', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F26) is null) or (max(goods.F26) = ''), TRUE, FALSE) AND
  407. if((max(goods.F27)='1' AND LOCATE('F27', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F27) is null) or (max(goods.F27) = ''), TRUE, FALSE) AND
  408. if((max(goods.F28)='1' AND LOCATE('F28', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F28) is null) or (max(goods.F28) = ''), TRUE, FALSE) AND
  409. if((max(goods.F29)='1' AND LOCATE('F29', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F29) is null) or (max(goods.F29) = ''), TRUE, FALSE) AND
  410. if((max(goods.F30)='1' AND LOCATE('F30', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F30) is null) or (max(goods.F30) = ''), TRUE, FALSE) AND
  411. if((max(goods.F31)='1' AND LOCATE('F31', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F31) is null) or (max(goods.F31) = ''), TRUE, FALSE) AND
  412. if((max(goods.F32)='1' AND LOCATE('F32', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F32) is null) or (max(goods.F32) = ''), TRUE, FALSE) AND
  413. if((max(goods.F33)='1' AND LOCATE('F33', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F33) is null) or (max(goods.F33) = ''), TRUE, FALSE) AND
  414. if((max(goods.F34)='1' AND LOCATE('F34', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F34) is null) or (max(goods.F34) = ''), TRUE, FALSE) AND
  415. if((max(goods.F35)='1' AND LOCATE('F35', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F35) is null) or (max(goods.F35) = ''), TRUE, FALSE) AND
  416. if((max(goods.F36)='1' AND LOCATE('F36', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F36) is null) or (max(goods.F36) = ''), TRUE, FALSE) AND
  417. if((max(goods.F37)='1' AND LOCATE('F37', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F37) is null) or (max(goods.F37) = ''), TRUE, FALSE) AND
  418. if((max(goods.F38)='1' AND LOCATE('F38', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F38) is null) or (max(goods.F38) = ''), TRUE, FALSE) AND
  419. if((max(goods.F39)='1' AND LOCATE('F39', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F39) is null) or (max(goods.F39) = ''), TRUE, FALSE) AND
  420. if((max(goods.F40)='1' AND LOCATE('F40', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F40) is null) or (max(goods.F40) = ''), TRUE, FALSE) AND
  421. if((max(goods.F41)='1' AND LOCATE('F41', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F41) is null) or (max(goods.F41) = ''), TRUE, FALSE) AND
  422. if((max(goods.F42)='1' AND LOCATE('F42', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F42) is null) or (max(goods.F42) = ''), TRUE, FALSE) AND
  423. if((max(goods.F43)='1' AND LOCATE('F43', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F43) is null) or (max(goods.F43) = ''), TRUE, FALSE) AND
  424. if((max(goods.F44)='1' AND LOCATE('F44', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F44) is null) or (max(goods.F44) = ''), TRUE, FALSE) AND
  425. if((max(goods.F45)='1' AND LOCATE('F45', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F45) is null) or (max(goods.F45) = ''), TRUE, FALSE) AND
  426. if((max(goods.F46)='1' AND LOCATE('F46', group_concat(DISTINCT header.Code)) > 0) or (max(goods.F46) is null) or (max(goods.F46) = ''), TRUE, FALSE)
  427. ) AS checked
  428. FROM OilSupplier a
  429. LEFT JOIN OilSupplierCert b ON a.Id=b.SupplierId
  430. LEFT JOIN OilSupplierCertSub sub ON b.Id=sub.SupplierCertId
  431. LEFT JOIN OilSupplierFile files ON a.Id=files.SupplierId
  432. LEFT JOIN Base_TableHeader header ON files.NeedFileType=header.Name
  433. LEFT JOIN tmp_OilGoodsAptitudeClass class ON sub.Code=class.Code
  434. LEFT JOIN tmp_OilGoodsAptitude goods ON class.Id=goods.ClassId
  435. WHERE b.SupplierTypeCode='01' and `
  436. sql += having
  437. sql += ` GROUP BY a.Id, b.Id `
  438. if asc {
  439. sql += ` order by ` + orderby + ` ASC `
  440. } else {
  441. sql += ` order by ` + orderby + ` DESC `
  442. }
  443. sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
  444. sqlCount := "SELECT count(DISTINCT a.Id) as total FROM OilSupplier a LEFT JOIN OilSupplierCert b ON a.Id=b.SupplierId LEFT JOIN OilSupplierCertSub sub ON b.Id=sub.SupplierCertId LEFT JOIN OilSupplierFile files ON a.Id=files.SupplierId LEFT JOIN Base_TableHeader header ON files.NeedFileType=header.Name LEFT JOIN tmp_OilGoodsAptitudeClass class ON sub.Code=class.Code LEFT JOIN tmp_OilGoodsAptitude goods ON class.Id=goods.ClassId WHERE b.SupplierTypeCode='01' AND " + having
  445. var totalResult TotalResult
  446. s.DBE.SQL(sql).Find(entitiesPtr)
  447. s.DBE.SQL(sqlCount).Get(&totalResult)
  448. total = totalResult.Total
  449. return total
  450. }