AllotTask.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  1. package controllers
  2. import (
  3. "ColdVerify_server/conf"
  4. "ColdVerify_server/lib"
  5. "ColdVerify_server/lib/wx"
  6. "ColdVerify_server/models/Account"
  7. "ColdVerify_server/models/AllotTask"
  8. "ColdVerify_server/models/InfoCollection"
  9. "ColdVerify_server/models/System"
  10. "encoding/json"
  11. "fmt"
  12. "math"
  13. "time"
  14. beego "github.com/beego/beego/v2/server/web"
  15. )
  16. type AllotTaskController struct {
  17. beego.Controller
  18. }
  19. // 列表 -
  20. func (c *AllotTaskController) List() {
  21. // 验证登录 User_is, User_r
  22. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  23. if !User_is {
  24. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  25. c.ServeJSON()
  26. return
  27. }
  28. var r_jsons lib.R_JSONS
  29. page, _ := c.GetInt("page")
  30. if page < 1 {
  31. page = 1
  32. }
  33. page_z, _ := c.GetInt("page_z")
  34. if page_z < 1 {
  35. page_z = conf.Page_size
  36. }
  37. T_name := c.GetString("T_name")
  38. T_company := c.GetString("T_company") // 公司名称
  39. T_uuid := c.GetString("T_uuid")
  40. T_scheme := c.GetString("T_scheme") // 实施方案 负责人UUID
  41. T_project := c.GetString("T_project") // 实施方案 负责人UUID
  42. T_collection := c.GetString("T_collection") // 数据采集 负责人UUID
  43. T_reporting := c.GetString("T_reporting") // 报告编写 负责人UUID
  44. T_delivery := c.GetString("T_delivery") // 交付审核 负责人UUID
  45. T_status, _ := c.GetInt("T_status")
  46. UserMap := Account.UserListToMap(Account.Read_User_List_ALL_1())
  47. AdminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
  48. var T_company_list []string
  49. if len(T_company) > 0 {
  50. T_company_list = Account.Read_User_T_uuid_ListByT_name(T_company)
  51. }
  52. var T_admin string
  53. if User_r.T_power > 2 {
  54. T_admin = User_r.T_uuid
  55. }
  56. // 经销商下管理员可查看自己经销商下所有的任务
  57. // 经销商下其他角色只能查看分配给自己的任务
  58. if len(User_r.T_Distributor_id) > 0 && User_r.T_power <= 2 {
  59. T_admin = ""
  60. }
  61. var cnt int
  62. List, cnt := AllotTask.Read_AllotTask_List(User_r.T_Distributor_id, T_admin, T_uuid, T_name, T_project, T_scheme, T_collection, T_reporting, T_delivery,
  63. T_status, T_company_list, UserMap, AdminMap, page, page_z)
  64. page_size := math.Ceil(float64(cnt) / float64(page_z))
  65. r_jsons.List = List
  66. r_jsons.Page = page
  67. r_jsons.Page_size = int(page_size)
  68. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  69. r_jsons.Num = cnt
  70. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  71. c.ServeJSON()
  72. return
  73. }
  74. // 获取-
  75. func (c *AllotTaskController) Get() {
  76. // 验证登录 User_is, User_r
  77. _, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  78. if !User_is {
  79. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  80. c.ServeJSON()
  81. return
  82. }
  83. T_allot_task_id := c.GetString("T_allot_task_id")
  84. r, is := AllotTask.Read_AllotTask(T_allot_task_id)
  85. if !is {
  86. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  87. c.ServeJSON()
  88. return
  89. }
  90. userMap := Account.UserListToMap(Account.Read_User_List_ALL_1())
  91. adminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
  92. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: AllotTask.AllotTaskToAllotTask_(r, userMap, adminMap)}
  93. c.ServeJSON()
  94. return
  95. }
  96. // 添加-
  97. func (c *AllotTaskController) Add() {
  98. // 验证登录 User_is, User_r
  99. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  100. if !User_is {
  101. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  102. c.ServeJSON()
  103. return
  104. }
  105. T_name := c.GetString("T_name")
  106. T_uuid := c.GetString("T_uuid") // 用户uuid
  107. T_approach_time := c.GetString("T_approach_time") // 用户uuid
  108. T_scheme := c.GetString("T_scheme")
  109. T_collection := c.GetString("T_collection")
  110. T_reporting := c.GetString("T_reporting")
  111. T_delivery := c.GetString("T_delivery")
  112. T_project := c.GetString("T_project") // 项目 负责人UUID
  113. T_province := c.GetString("T_province") // 省
  114. T_city := c.GetString("T_city") // 市
  115. T_district := c.GetString("T_district") // 区
  116. T_province_code := c.GetString("T_province_code") // 省 code
  117. T_city_code := c.GetString("T_city_code") // 市 code
  118. T_district_code := c.GetString("T_district_code") // 区 code
  119. T_category := c.GetString("T_category") // 类别
  120. T_attachment := c.GetString("T_attachment") // 合同附件
  121. // 查询信息采集信息
  122. user, is := Account.Read_User(T_uuid)
  123. if !is {
  124. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid 错误!"}
  125. c.ServeJSON()
  126. return
  127. }
  128. var_ := AllotTask.AllotTask{
  129. T_Distributor_id: user.T_Distributor_id,
  130. T_uuid: T_uuid,
  131. T_name: T_name,
  132. T_approach_time: T_approach_time,
  133. T_scheme: T_scheme,
  134. T_collection: T_collection,
  135. T_reporting: T_reporting,
  136. T_delivery: T_delivery,
  137. T_project: T_project,
  138. T_province: T_province,
  139. T_city: T_city,
  140. T_district: T_district,
  141. T_province_code: T_province_code,
  142. T_city_code: T_city_code,
  143. T_district_code: T_district_code,
  144. T_category: T_category,
  145. T_attachment: T_attachment,
  146. T_state: 1,
  147. T_status: AllotTask.AllotTaskStatusWaitReceive,
  148. T_allot_time: time.Now(),
  149. }
  150. T_sllot_task_id, is := AllotTask.Add_AllotTask(var_)
  151. if !is {
  152. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
  153. c.ServeJSON()
  154. return
  155. }
  156. // 通知
  157. _, company_r := Account.Read_User_ByT_uuid(var_.T_uuid)
  158. go wx.WxSend(var_.T_collection, fmt.Sprintf("【%s-%s】采集任务已派发,进场时间:%s,请及时接收并提交信息确认表", company_r.T_name, var_.T_name, T_approach_time))
  159. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "添加", var_)
  160. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: T_sllot_task_id}
  161. c.ServeJSON()
  162. return
  163. }
  164. // 修改-
  165. func (c *AllotTaskController) Up() {
  166. // 验证登录 User_is, User_r
  167. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  168. if !User_is {
  169. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  170. c.ServeJSON()
  171. return
  172. }
  173. T_name := c.GetString("T_name")
  174. T_approach_time := c.GetString("T_approach_time")
  175. T_scheme := c.GetString("T_scheme")
  176. T_collection := c.GetString("T_collection")
  177. T_reporting := c.GetString("T_reporting")
  178. T_delivery := c.GetString("T_delivery")
  179. T_project := c.GetString("T_project") // 项目 负责人UUID
  180. T_province := c.GetString("T_province") // 省
  181. T_city := c.GetString("T_city") // 市
  182. T_district := c.GetString("T_district") // 区
  183. T_province_code := c.GetString("T_province_code") // 省 code
  184. T_city_code := c.GetString("T_city_code") // 市 code
  185. T_district_code := c.GetString("T_district_code") // 区 code
  186. T_category := c.GetString("T_category") // 类别
  187. T_attachment := c.GetString("T_attachment") // 合同附件
  188. T_allot_task_id := c.GetString("T_allot_task_id")
  189. r, is := AllotTask.Read_AllotTask(T_allot_task_id)
  190. if !is {
  191. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  192. c.ServeJSON()
  193. return
  194. }
  195. old_collection := r.T_collection
  196. // .......
  197. clos := make([]string, 0)
  198. r.T_attachment = T_attachment
  199. if len(T_name) > 0 {
  200. r.T_name = T_name
  201. clos = append(clos, "T_name")
  202. }
  203. if len(T_approach_time) > 0 {
  204. r.T_approach_time = T_approach_time
  205. clos = append(clos, "T_approach_time")
  206. }
  207. if len(T_scheme) > 0 {
  208. r.T_scheme = T_scheme
  209. clos = append(clos, "T_scheme")
  210. }
  211. if len(T_collection) > 0 {
  212. r.T_collection = T_collection
  213. clos = append(clos, "T_collection")
  214. }
  215. if len(T_reporting) > 0 {
  216. r.T_reporting = T_reporting
  217. clos = append(clos, "T_reporting")
  218. }
  219. if len(T_delivery) > 0 {
  220. r.T_delivery = T_delivery
  221. clos = append(clos, "T_delivery")
  222. }
  223. if len(T_project) > 0 {
  224. r.T_project = T_project
  225. clos = append(clos, "T_project")
  226. }
  227. if len(T_province) > 0 {
  228. r.T_province = T_province
  229. clos = append(clos, "T_province")
  230. }
  231. if len(T_city) > 0 {
  232. r.T_city = T_city
  233. clos = append(clos, "T_city")
  234. }
  235. if len(T_district) > 0 {
  236. r.T_district = T_district
  237. clos = append(clos, "T_district")
  238. }
  239. if len(T_province_code) > 0 {
  240. r.T_province_code = T_province_code
  241. clos = append(clos, "T_province_code")
  242. }
  243. if len(T_city_code) > 0 {
  244. r.T_city_code = T_city_code
  245. clos = append(clos, "T_city_code")
  246. }
  247. if len(T_district_code) > 0 {
  248. r.T_district_code = T_district_code
  249. clos = append(clos, "T_district_code")
  250. }
  251. if len(T_category) > 0 {
  252. r.T_category = T_category
  253. clos = append(clos, "T_category")
  254. }
  255. if len(T_attachment) > 0 {
  256. r.T_attachment = T_attachment
  257. clos = append(clos, "T_attachment")
  258. }
  259. if r.T_status == AllotTask.AllotTaskStatusRefused {
  260. r.T_status = AllotTask.AllotTaskStatusWaitReceive
  261. r.T_allot_time = time.Now()
  262. clos = append(clos, "T_status")
  263. _, company_r := Account.Read_User_ByT_uuid(r.T_uuid)
  264. go wx.WxSend(r.T_collection, fmt.Sprintf("【%s-%s】采集任务已派发,进场时间:%s,请及时接收并提交信息确认表", company_r.T_name, r.T_name, T_approach_time))
  265. } else if r.T_collection != old_collection {
  266. _, company_r := Account.Read_User_ByT_uuid(r.T_uuid)
  267. go wx.WxSend(r.T_collection, fmt.Sprintf("【%s-%s】采集任务已派发,进场时间:%s,请及时接收并提交信息确认表", company_r.T_name, r.T_name, T_approach_time))
  268. }
  269. if !AllotTask.Update_AllotTask(r, clos...) {
  270. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  271. c.ServeJSON()
  272. return
  273. }
  274. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "修改", r)
  275. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  276. c.ServeJSON()
  277. return
  278. }
  279. // 删除-
  280. func (c *AllotTaskController) Del() {
  281. // 验证登录 User_is, User_r
  282. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  283. if !User_is {
  284. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  285. c.ServeJSON()
  286. return
  287. }
  288. T_allot_task_id := c.GetString("T_allot_task_id")
  289. if r, is := AllotTask.Read_AllotTask(T_allot_task_id); is {
  290. if !AllotTask.Delete_AllotTask(r) {
  291. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  292. c.ServeJSON()
  293. return
  294. }
  295. // 添加任务操作日志
  296. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "删除", r)
  297. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  298. c.ServeJSON()
  299. return
  300. }
  301. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  302. c.ServeJSON()
  303. return
  304. }
  305. // 复制-
  306. func (c *AllotTaskController) Copy() {
  307. // 验证登录 User_is, User_r
  308. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  309. if !User_is {
  310. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  311. c.ServeJSON()
  312. return
  313. }
  314. T_name := c.GetString("T_name")
  315. T_approach_time := c.GetString("T_approach_time")
  316. T_allot_task_id := c.GetString("T_allot_task_id")
  317. r, is := AllotTask.Read_AllotTask(T_allot_task_id)
  318. if !is {
  319. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  320. c.ServeJSON()
  321. return
  322. }
  323. var_ := AllotTask.AllotTask{
  324. T_Distributor_id: r.T_Distributor_id,
  325. T_uuid: r.T_uuid,
  326. T_name: T_name,
  327. T_approach_time: T_approach_time,
  328. T_scheme: r.T_scheme,
  329. T_collection: r.T_collection,
  330. T_reporting: r.T_reporting,
  331. T_delivery: r.T_delivery,
  332. T_project: r.T_project,
  333. T_province: r.T_province,
  334. T_city: r.T_city,
  335. T_district: r.T_district,
  336. T_province_code: r.T_province_code,
  337. T_city_code: r.T_city_code,
  338. T_district_code: r.T_district_code,
  339. T_category: r.T_category,
  340. T_state: 1,
  341. T_status: AllotTask.AllotTaskStatusWaitReceive,
  342. T_allot_time: time.Now(),
  343. }
  344. // 通知
  345. _, company_r := Account.Read_User_ByT_uuid(var_.T_uuid)
  346. go wx.WxSend(var_.T_collection, fmt.Sprintf("【%s-%s】采集任务已派发,进场时间:%s,请及时接收并提交信息确认表", company_r.T_name, var_.T_name, T_approach_time))
  347. T_sllot_task_id, is := AllotTask.Add_AllotTask(var_)
  348. if !is {
  349. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
  350. c.ServeJSON()
  351. return
  352. }
  353. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "复制", var_)
  354. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: T_sllot_task_id}
  355. c.ServeJSON()
  356. return
  357. }
  358. // 接收
  359. func (c *AllotTaskController) Receive() {
  360. // 验证登录 User_is, User_r
  361. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  362. if !User_is {
  363. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  364. c.ServeJSON()
  365. return
  366. }
  367. T_status, _ := c.GetInt("T_status") // 2-接收 3-拒绝
  368. T_reason := c.GetString("T_reason")
  369. T_allot_task_id := c.GetString("T_allot_task_id")
  370. r, is := AllotTask.Read_AllotTask(T_allot_task_id)
  371. if !is {
  372. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  373. c.ServeJSON()
  374. return
  375. }
  376. // 验证权限
  377. if User_r.T_uuid != r.T_collection {
  378. c.Data["json"] = lib.JSONS{Code: 202, Msg: "您不是该任务单的接收人!"}
  379. c.ServeJSON()
  380. return
  381. }
  382. // 获取r.T_record,转换为json,添加新的记录
  383. var existingRecords = make([]AllotTask.AllotTaskRecord, 0)
  384. if len(r.T_record) > 0 {
  385. json.Unmarshal([]byte(r.T_record), &existingRecords)
  386. }
  387. // 创建新的记录条目
  388. newRecord := AllotTask.AllotTaskRecord{
  389. T_collection: User_r.T_uuid,
  390. T_status: T_status,
  391. T_reason: T_reason,
  392. T_time: time.Now().Format("2006-01-02 15:04:05"),
  393. }
  394. existingRecords = append(existingRecords, newRecord)
  395. // 将更新后的记录数组转换为JSON字符串
  396. updatedRecordsJSON, err := json.Marshal(existingRecords)
  397. if err != nil {
  398. c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录更新失败!"}
  399. c.ServeJSON()
  400. return
  401. }
  402. // 更新r.T_record字段
  403. r.T_record = string(updatedRecordsJSON)
  404. r.T_status = T_status
  405. if r.T_status == AllotTask.AllotTaskStatusRefused && len(T_reason) > 0 {
  406. r.T_reason = T_reason
  407. }
  408. // 更新数据库中的记录
  409. if !AllotTask.Update_AllotTask(r, "T_record", "T_status", "T_reason") {
  410. c.Data["json"] = lib.JSONS{Code: 202, Msg: "更新记录失败!"}
  411. c.ServeJSON()
  412. return
  413. }
  414. // 添加任务操作日志
  415. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "接收", r)
  416. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  417. c.ServeJSON()
  418. return
  419. }
  420. // 上传信息确认表
  421. func (c *AllotTaskController) UploadConfirmForm() {
  422. // 验证登录 User_is, User_r
  423. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  424. if !User_is {
  425. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  426. c.ServeJSON()
  427. return
  428. }
  429. T_confirm_form := c.GetString("T_confirm_form")
  430. T_allot_task_id := c.GetString("T_allot_task_id")
  431. r, is := AllotTask.Read_AllotTask(T_allot_task_id)
  432. if !is {
  433. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
  434. c.ServeJSON()
  435. return
  436. }
  437. if len(T_confirm_form) > 0 {
  438. r.T_confirm_form = T_confirm_form
  439. if r.T_status == AllotTask.AllotTaskStatusReceived {
  440. r.T_status = AllotTask.AllotTaskStatusSubmit // 修改为已提交
  441. }
  442. if len(r.T_submit_time) == 0 {
  443. r.T_submit_time = time.Now().Format("2006-01-02 15:04:05") // 设置提交时间
  444. }
  445. }
  446. // 获取r.T_record,转换为json,添加新的记录
  447. var existingRecords = make([]AllotTask.AllotTaskRecord, 0)
  448. if len(r.T_record) > 0 {
  449. json.Unmarshal([]byte(r.T_record), &existingRecords)
  450. }
  451. // 创建新的记录条目
  452. newRecord := AllotTask.AllotTaskRecord{
  453. T_collection: User_r.T_uuid,
  454. T_status: AllotTask.AllotTaskStatusSubmit,
  455. T_reason: "",
  456. T_time: time.Now().Format("2006-01-02 15:04:05"),
  457. }
  458. existingRecords = append(existingRecords, newRecord)
  459. // 将更新后的记录数组转换为JSON字符串
  460. updatedRecordsJSON, err := json.Marshal(existingRecords)
  461. if err != nil {
  462. c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录更新失败!"}
  463. c.ServeJSON()
  464. return
  465. }
  466. // 更新r.T_record字段
  467. r.T_record = string(updatedRecordsJSON)
  468. if !AllotTask.Update_AllotTask(r, "T_confirm_form", "T_status", "T_submit_time", "T_record") {
  469. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  470. c.ServeJSON()
  471. return
  472. }
  473. System.Add_UserLogs_T(User_r.T_uuid, "采集任务管理", "修改", r)
  474. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  475. c.ServeJSON()
  476. return
  477. }
  478. // 采集任务统计
  479. func (c *AllotTaskController) Statistics() {
  480. // 验证登录 User_is, User_r
  481. User_r, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  482. if !User_is {
  483. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  484. c.ServeJSON()
  485. return
  486. }
  487. List, cnt := AllotTask.Read_AllotTask_List(User_r.T_Distributor_id, User_r.T_uuid, "", "", "", "", "", "", "",
  488. 0, []string{}, map[string]string{}, map[string]string{}, 0, 9999)
  489. res := make(map[int]int)
  490. for k, _ := range AllotTask.AllotTaskStateMap {
  491. res[k] = 0
  492. }
  493. res[0] = cnt
  494. for _, r := range List {
  495. res[r.T_status] += 1
  496. }
  497. // 按指定格式返回统计结果
  498. result := []map[string]interface{}{
  499. {
  500. "name": "全部",
  501. "num": res[0],
  502. "T_status": 0,
  503. },
  504. {
  505. "name": "待接收",
  506. "num": res[AllotTask.AllotTaskStatusWaitReceive],
  507. "T_status": AllotTask.AllotTaskStatusWaitReceive,
  508. },
  509. {
  510. "name": "已接收",
  511. "num": res[AllotTask.AllotTaskStatusReceived],
  512. "T_status": AllotTask.AllotTaskStatusReceived,
  513. },
  514. {
  515. "name": "已提交",
  516. "num": res[AllotTask.AllotTaskStatusSubmit],
  517. "T_status": AllotTask.AllotTaskStatusSubmit,
  518. },
  519. {
  520. "name": "已拒绝",
  521. "num": res[AllotTask.AllotTaskStatusRefused],
  522. "T_status": AllotTask.AllotTaskStatusRefused,
  523. },
  524. }
  525. c.Data["json"] = lib.JSONS{Data: result, Code: 200, Msg: "ok!"}
  526. c.ServeJSON()
  527. return
  528. }
  529. // 获取任务负责人列表
  530. func (c *AllotTaskController) GetAllotTaskUserList() {
  531. // 验证登录 User_is, User_r
  532. _, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  533. if !User_is {
  534. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  535. c.ServeJSON()
  536. return
  537. }
  538. T_type := c.GetString("T_type") // T_project项目 T_scheme方案 T_collection数据采集 T_reporting报告
  539. list := AllotTask.Get_AllotTask_UserList(T_type)
  540. AdminMap := Account.AdminListToMap(Account.Read_Admin_List_ALL_1())
  541. var User_list []Account.Admin_R
  542. for _, v := range list {
  543. if len(v) == 0 {
  544. continue
  545. }
  546. User_list = append(User_list, Account.Admin_R{T_uuid: v, T_name: AdminMap[v]})
  547. }
  548. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: User_list}
  549. c.ServeJSON()
  550. return
  551. }
  552. // 通过信息采集ID获取指派任务详情
  553. func (c *AllotTaskController) GetByInfoCollectionId() {
  554. // 验证登录
  555. _, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  556. if !User_is {
  557. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  558. c.ServeJSON()
  559. return
  560. }
  561. T_InfoCollection_id := c.GetString("T_InfoCollection_id")
  562. if len(T_InfoCollection_id) == 0 {
  563. c.Data["json"] = lib.JSONS{Code: 202, Msg: "信息采集ID不能为空!"}
  564. c.ServeJSON()
  565. return
  566. }
  567. // 先通过信息采集ID获取信息采集详情
  568. infoCollection, is := InfoCollection.Read_InfoCollection(T_InfoCollection_id)
  569. if !is {
  570. c.Data["json"] = lib.JSONS{Code: 202, Msg: "信息采集ID错误!"}
  571. c.ServeJSON()
  572. return
  573. }
  574. // 检查是否有关联的指派任务ID
  575. if len(infoCollection.T_allot_task_id) == 0 {
  576. c.Data["json"] = lib.JSONS{Code: 200, Data: AllotTask.AllotTask_{}, Msg: "该信息采集没有关联的指派任务!"}
  577. c.ServeJSON()
  578. return
  579. }
  580. // 通过指派任务ID获取指派任务详情
  581. allotTask, is := AllotTask.Read_AllotTask(infoCollection.T_allot_task_id)
  582. if !is {
  583. c.Data["json"] = lib.JSONS{Code: 202, Msg: "指派任务不存在!"}
  584. c.ServeJSON()
  585. return
  586. }
  587. allotTaskDetail := AllotTask.AllotTaskToAllotTask_(allotTask, map[string]string{}, map[string]string{})
  588. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: allotTaskDetail}
  589. c.ServeJSON()
  590. return
  591. }