2
3

todolist.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. package oilsupplier
  2. import (
  3. "dashoo.cn/backend/api/business/invoiceinfo"
  4. "dashoo.cn/backend/api/business/oilcontract/contract"
  5. "dashoo.cn/backend/api/business/oilcontract/contractReview"
  6. "dashoo.cn/backend/api/business/oilsupplier/annualaudit"
  7. "dashoo.cn/backend/api/business/oilsupplier/infochange"
  8. "dashoo.cn/backend/api/business/oilsupplier/oilcatalog"
  9. "dashoo.cn/backend/api/business/oilsupplier/oilcatalogsub"
  10. "dashoo.cn/backend/api/business/oilsupplier/supplier"
  11. "dashoo.cn/backend/api/business/oilsupplier/suppliercertappend"
  12. "dashoo.cn/backend/api/business/register"
  13. "dashoo.cn/backend/api/business/todolist"
  14. "dashoo.cn/backend/api/business/workflow"
  15. . "dashoo.cn/backend/api/controllers"
  16. "dashoo.cn/utils"
  17. "fmt"
  18. "sort"
  19. "strconv"
  20. "strings"
  21. "time"
  22. )
  23. type TodoListController struct {
  24. BaseController
  25. }
  26. // @Title 获取列表
  27. // @Description get user by token
  28. // @Success 200 {object} []supplier.OilSupplierView
  29. // @router /gettodolist [get]
  30. func (this *TodoListController) GetMyTaskEntityList() {
  31. page := this.GetPageInfoForm()
  32. // stype := this.GetString("Type") // 1 准入 2 增项 3 年审 4 信息变更 5 注册 7 待入库 8 待开发票 9 目录审批
  33. supplierTypeCode := this.GetString("SupplierTypeCode")
  34. supplierName := this.GetString("SupplierName")
  35. wfNames := ""
  36. wfNames = workflow.OIL_ENUSER_SUPPLIER_APPLY + "," + workflow.OIL_ENUSER_APPEND_APPLY + "," + workflow.OIL_INFO_CHANGE + "," + workflow.OIL_AUDIT_APPLY + "," + workflow.OIL_SUPPLIER_VERIFY+ "," + workflow.OIL_DAILY_CONTRACT_EVALUATION
  37. var todoliststemp []todolist.TodoList
  38. var pagingResult workflow.ActiMyPagingResultVM
  39. var myTasksRetWithTimes []workflow.ActiMyTasksRetWithTimeVM
  40. actisvc := workflow.GetActivitiService(utils.DBE)
  41. pagingResult = actisvc.GetMyAllTypePagingTasksWithTime(this.User.Id, page.CurrentPage, page.Size, wfNames, supplierTypeCode, supplierName)
  42. myTasksRetWithTimes = pagingResult.TaskList
  43. var jzpsCount int64 = 0 // 准入集中评审的数量
  44. for _,item := range myTasksRetWithTimes {
  45. wfName := strings.Split(item.ProcessDefinitionId, ":")[0]
  46. if (item.TaskName == "集中评审") && (wfName == workflow.OIL_ENUSER_SUPPLIER_APPLY) {
  47. jzpsCount ++
  48. }
  49. }
  50. pagingResult.Total = pagingResult.Total - jzpsCount
  51. //取出各种类型的ID
  52. for _,item := range myTasksRetWithTimes {
  53. idx := strings.Index(item.BusinessKey, "-")
  54. id := item.BusinessKey
  55. if idx >= 0 {
  56. id = strings.Split(item.BusinessKey, "-")[0]
  57. }
  58. //工作流名称
  59. has := false
  60. wfName := strings.Split(item.ProcessDefinitionId, ":")[0] //如:oil_enuser_supplier_apply:2:2543
  61. if wfName == workflow.OIL_ENUSER_SUPPLIER_APPLY {
  62. if item.TaskName == "集中评审" {
  63. // 集中评审不显示在待办列表
  64. continue
  65. }
  66. //准入
  67. where := " 1=1 "
  68. where = where + " and b.Id = '" + id + "'"
  69. var todo todolist.TodoList
  70. svc := supplier.GetOilSupplierService(utils.DBE)
  71. has = svc.GetMyTodoEntitie(OilSupplierName, OilSupplierCertName, &todo, where)
  72. if has {
  73. todo.Type = todolist.SUPPLIER
  74. todo.UserName = this.User.Realname
  75. todo.CreateTime = item.CreateTime
  76. todo.TaskName = item.TaskName
  77. todoliststemp = append(todoliststemp, todo)
  78. }
  79. } else if wfName == workflow.OIL_ENUSER_APPEND_APPLY {
  80. //增项
  81. where := " 1=1 "
  82. where = where + " and b.Id = '" + id + "'"
  83. var todo todolist.TodoList
  84. var certAppend suppliercertappend.OilSupplierCertAppend
  85. svcapp := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  86. has :=svcapp.GetTodoEntitie(OilSupplierName, OilSupplierCertAppendName, &todo, where)
  87. svcapp.GetEntityById(id, &certAppend)
  88. if has {
  89. todo.Id = certAppend.Id
  90. todo.SupplierId = strconv.Itoa(certAppend.SupplierId)
  91. todo.CertId = strconv.Itoa(certAppend.SupplierCertId)
  92. todo.Type = todolist.CERTAPPEND
  93. todo.TaskName = item.TaskName
  94. todo.UserName = this.User.Realname
  95. todo.CreateTime = item.CreateTime
  96. todoliststemp = append(todoliststemp, todo)
  97. }
  98. } else if wfName == workflow.OIL_AUDIT_APPLY {
  99. //年审
  100. var todo todolist.TodoList
  101. var listannu annualaudit.OilAnnualAudit
  102. svc := annualaudit.GetOilAnnualAuditService(utils.DBE)
  103. has = svc.GetEntityById(id, &listannu)
  104. if has {
  105. todo.Id = listannu.Id
  106. todo.SupplierId = strconv.Itoa(listannu.SupplierId)
  107. todo.Type = todolist.ANNUALAUDIT
  108. todo.SupplierName = listannu.SupplierName
  109. todo.UserName = this.User.Realname
  110. todo.TaskName = item.TaskName
  111. todo.SupplierTypeCode = listannu.SupplierTypeName
  112. todo.Step = strconv.Itoa(listannu.Step)
  113. todo.Status = listannu.Status
  114. todo.CertId = strconv.Itoa(listannu.CerId)
  115. todo.CreateTime = item.CreateTime
  116. todoliststemp = append(todoliststemp, todo)
  117. }
  118. } else if wfName == workflow.OIL_INFO_CHANGE {
  119. //资质变更
  120. var todo todolist.TodoList
  121. var listInfo infochange.OilInfoChange
  122. svc := infochange.GetInfoChangeService(utils.DBE)
  123. has = svc.GetEntityById(id, &listInfo)
  124. if has {
  125. todo.Id = listInfo.Id
  126. todo.Type = todolist.INFOCHANGE
  127. todo.SupplierId = strconv.Itoa(listInfo.SupplierId)
  128. todo.SupplierName = listInfo.SupplierName
  129. todo.UserName = this.User.Realname
  130. todo.TaskName = item.TaskName
  131. todo.SupplierTypeCode = todolist.INFOCHANGE// listInfo.SupplierTypeName
  132. todo.Status = listInfo.Status
  133. todo.CreateTime = item.CreateTime
  134. todoliststemp = append(todoliststemp, todo)
  135. }
  136. } else if wfName == workflow.OIL_REGISTER_APPLY {
  137. //企业用户注册
  138. var todo todolist.TodoList
  139. regsvc := register.GetOilCorporateInfoService(utils.DBE)
  140. var listinfo register.OilCorporateInfo
  141. has = regsvc.GetEntityById(id, &listinfo)
  142. if has {
  143. todo.Id = listinfo.Id
  144. todo.Type = todolist.REGISTER
  145. todo.SupplierName = listinfo.SupplierName
  146. todo.UserName = this.User.Realname
  147. todo.TaskName = item.TaskName
  148. todo.SupplierTypeCode = todolist.REGISTER
  149. todo.Status = strconv.Itoa(listinfo.CheckStatus)
  150. todo.CreateTime = item.CreateTime
  151. todoliststemp = append(todoliststemp, todo)
  152. }
  153. } else if wfName == workflow.OIL_SUPPLIER_VERIFY {
  154. //待开发票
  155. var todo todolist.TodoList
  156. regsvc := invoiceinfo.GetInvoiceService(utils.DBE)
  157. var listinfo invoiceinfo.OilInvoiceInfo
  158. has = regsvc.GetEntityById(id, &listinfo)
  159. if has {
  160. todo.Id = listinfo.Id
  161. todo.Type = todolist.INVOICE
  162. todo.SupplierName = listinfo.SupplierName
  163. todo.UserName = this.User.Realname
  164. todo.TaskName = item.TaskName
  165. todo.SupplierTypeCode = todolist.INVOICE
  166. todo.Status = "未开"
  167. todo.CreateTime = item.CreateTime
  168. todoliststemp = append(todoliststemp, todo)
  169. }
  170. } else if wfName == workflow.OIL_Catalog {
  171. // 目录审批
  172. var todo todolist.TodoList
  173. regsvc := invoiceinfo.GetInvoiceService(utils.DBE)
  174. var listinfo oilcatalogsub.OilCatalogSub
  175. has = regsvc.GetEntityById(id, &listinfo)
  176. if has {
  177. var list oilcatalog.OilCatalog
  178. regsvc.GetEntity(&list, "SubId=" + strconv.Itoa(listinfo.Id))
  179. todo.Id = listinfo.Id
  180. todo.Type = todolist.INCOME
  181. todo.SupplierName = list.CompanyName
  182. todo.UserName = this.User.Realname
  183. todo.TaskName = item.TaskName
  184. if listinfo.Type == "6" {
  185. todo.SupplierTypeCode = todolist.INCOME + "-6"
  186. } else if listinfo.Type == "7" {
  187. todo.SupplierTypeCode = todolist.INCOME + "-7"
  188. }
  189. todo.Status = listinfo.Status
  190. todo.CreateTime = item.CreateTime
  191. todoliststemp = append(todoliststemp, todo)
  192. }
  193. } else if wfName == workflow.OIL_DAILY_CONTRACT_EVALUATION {
  194. // 合同日常评审
  195. var todo todolist.TodoList
  196. conRev := contractReview.GetOilContractReviewService(utils.DBE)
  197. var contractReviewEntity contractReview.OilContractReview
  198. has = conRev.GetEntityById(id, &contractReviewEntity)
  199. contractSvc := contract.GetOilContractService(utils.DBE)
  200. var contractEntity contract.OilContract
  201. contractSvc.GetEntityById(contractReviewEntity.ContractId, &contractEntity)
  202. if has {
  203. todo.Id = contractReviewEntity.Id
  204. todo.Type = todolist.DAILY
  205. todo.TaskName = item.TaskName
  206. todo.UserName = this.User.Realname
  207. todo.CreateTime = item.CreateTime
  208. todo.SupplierTypeCode = contractEntity.ContractClass
  209. todo.SupplierName = contractEntity.SupplierName
  210. todo.Status = contractReviewEntity.Status
  211. todoliststemp = append(todoliststemp, todo)
  212. }
  213. }
  214. }
  215. var todolists []todolist.TodoList
  216. CreateOn := this.GetString("CreateOn")
  217. if CreateOn != "" {
  218. dates := strings.Split(CreateOn, ",")
  219. var minDate time.Time
  220. var maxDate time.Time
  221. if len(dates) == 2 {
  222. minDate,_ = utils.TimeParse(dates[0], "2006-01-02 15:04")
  223. maxDate,_ = utils.TimeParse(dates[1], "2006-01-02 15:04")
  224. }
  225. for i := 0; i < len(todoliststemp); i++ {
  226. fmt.Println(minDate.Unix()*1000, "==",maxDate.Unix()*1000)
  227. fmt.Println(todoliststemp[i].CreateTime, "==",todoliststemp[i].CreateTime)
  228. if todoliststemp[i].CreateTime > minDate.Unix()*1000 && todoliststemp[i].CreateTime < maxDate.Unix()*1000 {
  229. todolists = append(todolists, todoliststemp[i])
  230. }
  231. }
  232. } else {
  233. todolists = todoliststemp
  234. }
  235. sort.Slice(todolists, func(i, j int) bool {
  236. return todolists[i].CreateTime > todolists[j].CreateTime
  237. })
  238. var datainfo DataInfo
  239. datainfo.Items = todolists
  240. datainfo.CurrentItemCount = pagingResult.Total
  241. datainfo.PageIndex = page.CurrentPage
  242. datainfo.ItemsPerPage = page.Size
  243. this.Data["json"] = &datainfo
  244. this.ServeJSON()
  245. }
  246. // @Title 获取已办列表
  247. // @Description get user by token
  248. // @Success 200 {object} []supplier.OilSupplierView
  249. // @router /getmytaskfinishedlist [get]
  250. func (this *TodoListController) GetMyTaskFinishedList() {
  251. page := this.GetPageInfoForm()
  252. stype := this.GetString("Type")
  253. supplierTypeCode := this.GetString("SupplierTypeCode")
  254. supplierName := this.GetString("SupplierName")
  255. wfNames := ""
  256. if stype == "1" {
  257. wfNames = workflow.OIL_ENUSER_SUPPLIER_APPLY
  258. } else if stype == "2" {
  259. wfNames = workflow.OIL_ENUSER_APPEND_APPLY
  260. } else if stype == "3" {
  261. wfNames = workflow.OIL_AUDIT_APPLY
  262. } else if stype == "4" {
  263. wfNames = workflow.OIL_INFO_CHANGE
  264. } else if stype == "5" {
  265. wfNames = workflow.OIL_REGISTER_APPLY
  266. } else if stype == "7" {
  267. // wfNames = workflow.OIL_SUPPLIER_INSTORE
  268. } else if stype == "8" {
  269. wfNames = workflow.OIL_SUPPLIER_VERIFY
  270. } else if stype == "9" {
  271. wfNames = workflow.OIL_Catalog
  272. } else if stype == "10" {
  273. wfNames = workflow.OIL_DAILY_CONTRACT_EVALUATION
  274. }
  275. var todoliststemp []todolist.TodoList
  276. var pagingResult workflow.ActiMyPagingResultVM
  277. var myTasksRetWithTimes []workflow.ActiMyTasksRetWithTimeVM
  278. actisvc := workflow.GetActivitiService(utils.DBE)
  279. pagingResult = actisvc.GetMyAllTypePagingFinishedTasksWithTime(this.User.Id, page.CurrentPage, page.Size, wfNames, supplierTypeCode, supplierName)
  280. myTasksRetWithTimes = pagingResult.TaskList
  281. //取出各种类型的ID
  282. for _,item := range myTasksRetWithTimes {
  283. idx := strings.Index(item.BusinessKey, "-")
  284. id := item.BusinessKey
  285. if idx >= 0 {
  286. id = strings.Split(item.BusinessKey, "-")[0]
  287. }
  288. //工作流名称
  289. has := false
  290. wfName := strings.Split(item.ProcessDefinitionId, ":")[0] //如:oil_enuser_supplier_apply:2:2543
  291. if wfName == workflow.OIL_ENUSER_SUPPLIER_APPLY {
  292. //准入
  293. where := " 1=1 "
  294. where = where + " and b.Id = '" + id + "'"
  295. var todo todolist.TodoList
  296. svc := supplier.GetOilSupplierService(utils.DBE)
  297. has = svc.GetMyTodoEntitie(OilSupplierName, OilSupplierCertName, &todo, where)
  298. if has {
  299. todo.Type = todolist.SUPPLIER
  300. todo.UserName = this.User.Realname
  301. todo.CreateTime = item.CreateTime
  302. todo.TaskName = item.TaskName
  303. todoliststemp = append(todoliststemp, todo)
  304. }
  305. } else if wfName == workflow.OIL_ENUSER_APPEND_APPLY {
  306. //增项
  307. where := " 1=1 "
  308. where = where + " and b.Id = '" + id + "'"
  309. var todo todolist.TodoList
  310. svcapp := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  311. has :=svcapp.GetTodoEntitie(OilSupplierName, OilSupplierCertAppendName, &todo, where)
  312. if has {
  313. todo.TaskName = item.TaskName
  314. todo.Type = todolist.CERTAPPEND
  315. todo.UserName = this.User.Realname
  316. todo.CreateTime = item.CreateTime
  317. todoliststemp = append(todoliststemp, todo)
  318. }
  319. } else if wfName == workflow.OIL_AUDIT_APPLY {
  320. //年审
  321. where := " 1=1 "
  322. where = where + " and Id = '" + id + "'"
  323. var todo todolist.TodoList
  324. var listannu annualaudit.OilAnnualAudit
  325. svc := annualaudit.GetOilAnnualAuditService(utils.DBE)
  326. has = svc.GetEntity(&listannu, where)
  327. if has {
  328. todo.Id = listannu.Id
  329. todo.SupplierId = strconv.Itoa(listannu.SupplierId)
  330. todo.Type = todolist.ANNUALAUDIT
  331. todo.SupplierName = listannu.SupplierName
  332. todo.UserName = this.User.Realname
  333. todo.TaskName = item.TaskName
  334. todo.SupplierTypeCode = listannu.SupplierTypeName
  335. todo.Step = strconv.Itoa(listannu.Step)
  336. todo.Status = listannu.Status
  337. todo.CertId = strconv.Itoa(listannu.CerId)
  338. todo.CreateTime = item.CreateTime
  339. todoliststemp = append(todoliststemp, todo)
  340. }
  341. } else if wfName == workflow.OIL_INFO_CHANGE {
  342. //资质变更
  343. where := " 1=1 "
  344. where = where + " and Id = '" + id + "'"
  345. var todo todolist.TodoList
  346. var listInfo infochange.OilInfoChange
  347. svc := infochange.GetInfoChangeService(utils.DBE)
  348. has = svc.GetEntity(&listInfo, where)
  349. if has {
  350. todo.Id = listInfo.Id
  351. todo.Type = todolist.INFOCHANGE
  352. todo.SupplierId = strconv.Itoa(listInfo.SupplierId)
  353. todo.SupplierName = listInfo.SupplierName
  354. todo.UserName = this.User.Realname
  355. todo.TaskName = item.TaskName
  356. todo.SupplierTypeCode = todolist.INFOCHANGE
  357. todo.Status = listInfo.Status
  358. todo.CreateTime = item.CreateTime
  359. todoliststemp = append(todoliststemp, todo)
  360. }
  361. } else if wfName == workflow.OIL_REGISTER_APPLY {
  362. //企业用户注册
  363. var todo todolist.TodoList
  364. regsvc := register.GetOilCorporateInfoService(utils.DBE)
  365. var listinfo register.OilCorporateInfo
  366. has = regsvc.GetEntityById(id, &listinfo)
  367. if has {
  368. todo.Id = listinfo.Id
  369. todo.Type = todolist.REGISTER
  370. todo.SupplierName = listinfo.SupplierName
  371. todo.UserName = this.User.Realname
  372. todo.TaskName = item.TaskName
  373. todo.SupplierTypeCode = todolist.REGISTER
  374. todo.Status = strconv.Itoa(listinfo.CheckStatus)
  375. todo.CreateTime = item.CreateTime
  376. todoliststemp = append(todoliststemp, todo)
  377. }
  378. } else if wfName == workflow.OIL_SUPPLIER_VERIFY {
  379. //待开发票
  380. var todo todolist.TodoList
  381. regsvc := invoiceinfo.GetInvoiceService(utils.DBE)
  382. var listinfo invoiceinfo.OilInvoiceInfo
  383. has = regsvc.GetEntityById(id, &listinfo)
  384. if has {
  385. todo.Id = listinfo.Id
  386. todo.Type = todolist.INVOICE
  387. todo.SupplierName = listinfo.SupplierName
  388. todo.UserName = this.User.Realname
  389. todo.TaskName = item.TaskName
  390. todo.SupplierTypeCode = todolist.INVOICE
  391. todo.Status = "已开"
  392. todo.CreateTime = item.CreateTime
  393. todoliststemp = append(todoliststemp, todo)
  394. }
  395. } else if wfName == workflow.OIL_Catalog {
  396. // 目录审批
  397. var todo todolist.TodoList
  398. regsvc := invoiceinfo.GetInvoiceService(utils.DBE)
  399. var listinfo oilcatalogsub.OilCatalogSub
  400. has = regsvc.GetEntityById(id, &listinfo)
  401. if has {
  402. var list oilcatalog.OilCatalog
  403. regsvc.GetEntity(&list, "SubId=" + strconv.Itoa(listinfo.Id))
  404. todo.Id = listinfo.Id
  405. todo.Type = todolist.INCOME
  406. todo.SupplierName = list.CompanyName
  407. todo.UserName = this.User.Realname
  408. todo.TaskName = item.TaskName
  409. if listinfo.Type == "6" {
  410. todo.SupplierTypeCode = todolist.INCOME + "-6"
  411. } else if listinfo.Type == "7" {
  412. todo.SupplierTypeCode = todolist.INCOME + "-7"
  413. }
  414. todo.Status = listinfo.Status
  415. todo.CreateTime = item.CreateTime
  416. todoliststemp = append(todoliststemp, todo)
  417. }
  418. } else if wfName == workflow.OIL_DAILY_CONTRACT_EVALUATION {
  419. // 合同日常评审
  420. var todo todolist.TodoList
  421. conRev := contractReview.GetOilContractReviewService(utils.DBE)
  422. var contractReviewEntity contractReview.OilContractReview
  423. has = conRev.GetEntityById(id, &contractReviewEntity)
  424. contractSvc := contract.GetOilContractService(utils.DBE)
  425. var contractEntity contract.OilContract
  426. contractSvc.GetEntityById(contractReviewEntity.ContractId, &contractEntity)
  427. if has {
  428. todo.Id = contractReviewEntity.Id
  429. todo.Type = todolist.DAILY
  430. todo.TaskName = item.TaskName
  431. todo.UserName = this.User.Realname
  432. todo.CreateTime = item.CreateTime
  433. todo.SupplierTypeCode = contractEntity.ContractClass
  434. todo.SupplierName = contractEntity.SupplierName
  435. todo.Status = contractReviewEntity.Status
  436. todoliststemp = append(todoliststemp, todo)
  437. }
  438. }
  439. }
  440. var todolists []todolist.TodoList
  441. CreateOn := this.GetString("CreateOn")
  442. if CreateOn != "" {
  443. dates := strings.Split(CreateOn, ",")
  444. var minDate time.Time
  445. var maxDate time.Time
  446. if len(dates) == 2 {
  447. minDate,_ = utils.TimeParse(dates[0], "2006-01-02 15:04")
  448. maxDate,_ = utils.TimeParse(dates[1], "2006-01-02 15:04")
  449. }
  450. for i := 0; i < len(todoliststemp); i++ {
  451. if todoliststemp[i].CreateTime > minDate.Unix()*1000 && todoliststemp[i].CreateTime < maxDate.Unix()*1000 {
  452. todolists = append(todolists, todoliststemp[i])
  453. }
  454. }
  455. } else {
  456. todolists = todoliststemp
  457. }
  458. sort.Slice(todolists, func(i, j int) bool {
  459. return todolists[i].CreateTime > todolists[j].CreateTime
  460. })
  461. var datainfo DataInfo
  462. datainfo.Items = todolists
  463. datainfo.CurrentItemCount = pagingResult.Total
  464. datainfo.PageIndex = page.CurrentPage
  465. datainfo.ItemsPerPage = page.Size
  466. this.Data["json"] = &datainfo
  467. this.ServeJSON()
  468. }