Task.go 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. package Task
  2. import (
  3. "ColdVerify_server/conf"
  4. "ColdVerify_server/lib"
  5. "ColdVerify_server/logs"
  6. "ColdVerify_server/models/InfoCollection"
  7. "encoding/json"
  8. "errors"
  9. "fmt"
  10. "github.com/astaxie/beego/cache"
  11. "github.com/beego/beego/v2/adapter/orm"
  12. orm2 "github.com/beego/beego/v2/client/orm"
  13. _ "github.com/go-sql-driver/mysql"
  14. "time"
  15. )
  16. var (
  17. TaskSchemeStateWaitSubmit = 0 // 待提交
  18. TaskSchemeStateSubmitted = 5 // 已提交
  19. TaskSchemeStateClientPass = 1 // 已通过(客户)
  20. TaskSchemeStateClientReturn = 2 // 已退回(客户)
  21. TaskSchemeStatePass = 3 // 已通过(负责人)
  22. TaskSchemeStateReturn = 4 // 已退回(负责人)
  23. TaskSchemeStateMap = map[int]string{
  24. TaskSchemeStateWaitSubmit: "待提交",
  25. TaskSchemeStateSubmitted: "已提交",
  26. TaskSchemeStateClientPass: "已通过(客户)",
  27. TaskSchemeStateClientReturn: "已退回(客户)",
  28. TaskSchemeStatePass: "已通过(负责人)",
  29. TaskSchemeStateReturn: "已退回(负责人)",
  30. }
  31. // 0 未完成 1 数据来源已完成 2 处理中 3 已采集-无数据 4-数据编辑已完成(已提交) 5已通过(报告负责人) 6已退回(报告负责人)
  32. TaskCollectionStateWaitSubmit = 0 // 待提交
  33. TaskCollectionStateFinish = 1 // 已完成
  34. TaskCollectionStateInProgress = 2 // 处理中
  35. TaskCollectionStateNoData = 3 // 已采集-无数据
  36. TaskCollectionStateSubmitted = 4 // 已提交
  37. TaskCollectionStatePass = 5 // 已通过(负责人)
  38. TaskCollectionStateReturn = 6 // 已退回(负责人)
  39. TaskCollectionStateMap = map[int]string{
  40. TaskCollectionStateWaitSubmit: "待提交",
  41. TaskCollectionStateFinish: "已完成",
  42. TaskCollectionStateInProgress: "处理中",
  43. TaskCollectionStateNoData: "已采集-无数据",
  44. TaskCollectionStateSubmitted: "数据编辑已完成",
  45. TaskCollectionStatePass: "已通过(负责人)",
  46. TaskCollectionStateReturn: "已退回(负责人)",
  47. }
  48. TaskReportingStateWaitSubmit = 0 // 待提交
  49. TaskReportingStateSubmitted = 5 // 已提交
  50. TaskReportingStateClientPass = 1 // 已通过(客户)
  51. TaskReportingStateClientReturn = 2 // 已退回(客户)
  52. TaskReportingStatePass = 3 // 已通过(负责人)
  53. TaskReportingStateReturn = 4 // 已退回(负责人)
  54. TaskReportingStateMap = map[int]string{
  55. TaskReportingStateWaitSubmit: "待提交",
  56. TaskReportingStateSubmitted: "已提交",
  57. TaskReportingStateClientPass: "已通过(客户)",
  58. TaskReportingStateClientReturn: "已退回(客户)",
  59. TaskReportingStatePass: "已通过(负责人)",
  60. TaskReportingStateReturn: "已退回(负责人)",
  61. }
  62. TaskDeliveryStateUnfinished = 0 // 未完成
  63. TaskDeliveryStateFinished = 1 // 已完成
  64. TaskDeliveryStateGoing = 2 // 进行中
  65. TaskDeliveryStateMap = map[int]string{
  66. TaskDeliveryStateUnfinished: "未完成",
  67. TaskDeliveryStateFinished: "已完成",
  68. TaskDeliveryStateGoing: "处理中",
  69. }
  70. TaskMarkingStateUnfinished = 0 // 未完成
  71. TaskMarkingStateFinished = 1 // 已完成
  72. TaskMarkingStateMap = map[int]string{
  73. TaskMarkingStateUnfinished: "未完成",
  74. TaskMarkingStateFinished: "已完成",
  75. }
  76. )
  77. var (
  78. TaskSchemeTimeLimit = map[string]float64{
  79. "LC": 60, // LC-冷藏车
  80. "XT": 30, // XT-系统
  81. "WZ": 80, // WZ-位置
  82. "LK": 60, // LK-冷库
  83. "LG": 30, // LG-冷柜
  84. "BWX": 30, // BWX-保温箱
  85. }
  86. TaskReportingTimeLimit = map[string]float64{
  87. "LC": 300, // LC-冷藏车
  88. "XT": 300, // XT-系统
  89. "WZ": 240, // WZ-位置
  90. "LK": 360, // LK-冷库
  91. "LG": 180, // LG-冷柜
  92. "BWX": 180, // BWX-保温箱
  93. }
  94. TaskCollectionTimeLimit float64 = 7 * 24 * 60
  95. )
  96. type AuditRecord struct {
  97. T_uuid string `orm:"size(256);null"` // 提交人(客户)UUID
  98. T_uuid_name string `orm:"size(256);null"` // 提交人名称
  99. T_admin string `orm:"size(256);null"` // 提交人(报告负责人)UUID
  100. T_admin_name string `orm:"size(256);null"` // 提交人名称
  101. T_state int `orm:"size(2);default(0)"` // 状态 1 已完成(客户通过) 2已退回(客户) 3已通过(报告负责人) 4已退回(报告负责人) 5已提交
  102. T_reason string `orm:"type(text)"` // 原因
  103. T_time string `orm:"type(256)"` // 时间
  104. T_type string `orm:"type(256)"` // 退回类型 scheme方案 reporting报告
  105. }
  106. // 模板
  107. type Task struct {
  108. Id int `orm:"column(ID);size(11);auto;pk"`
  109. T_class int `orm:"size(200);default(0)"` // 分类id
  110. T_InfoCollection_id string `orm:"size(256);null"` // 信息采集ID
  111. T_InfoTemplate_id string `orm:"size(256);null"` // 信息采集模板ID
  112. T_task_id string `orm:"size(256);null"` // 任务ID
  113. T_uuid string `orm:"size(256);null"` // 用户 UUID
  114. T_name string `orm:"size(256);null"` // 标题
  115. T_VerifyTemplate_class string `orm:"size(256);null"` // 模板id
  116. T_VerifyTemplate_id string `orm:"size(256);null"` // 模板id
  117. T_deadline string `orm:"size(256);null"` // 截止时间
  118. T_scheme string `orm:"size(256);null"` // 实施方案 负责人UUID
  119. T_collection string `orm:"size(256);null"` // 数据采集 负责人UUID
  120. T_reporting string `orm:"size(256);null"` // 报告编写 负责人UUID
  121. T_delivery string `orm:"size(256);null"` // 交付审核 负责人UUID
  122. T_scheme_state int `orm:"size(2);default(0)"` // 实施方案 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  123. T_collection_state int `orm:"size(2);default(0)"` // 数据采集 状态 0 未完成 1 数据来源已完成 2 处理中 3 已采集-无数据 4-数据编辑已完成(已提交) 5已通过(负责人) 6已退回(负责人)
  124. T_reporting_state int `orm:"size(2);default(0)"` // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  125. T_delivery_state int `orm:"size(2);default(0)"` // 交付审核 状态 0 未完成 1 已完成 2 处理中
  126. T_marking_state int `orm:"size(2);default(0)"` // 验证标识 状态 0 未完成 1 已完成
  127. T_VerifyDeviceDataStartTime string `orm:"size(256);null"` // 验证设备数据开始时间
  128. T_VerifyDeviceDataEndTime string `orm:"size(256);null"` // 验证设备数据开始时间
  129. T_BindDeviceDataStartTime string `orm:"size(256);null"` // 绑定设备数据开始时间
  130. T_BindDeviceDataEndTime string `orm:"size(256);null"` // 绑定设备数据结束时间
  131. T_doc1 string `orm:"type(text);null"` // 封面
  132. T_pdf1 string `orm:"type(text);null"` // 验证方案
  133. T_pdf1_watermark string `orm:"type(text);null"` // 验证方案 带水印
  134. T_doc2 string `orm:"type(text);null"` // 报告
  135. T_pdf2 string `orm:"type(text);null"` // 验证报告
  136. T_pdf2_watermark string `orm:"type(text);null"` // 验证报告 带水印
  137. T_doc3 string `orm:"type(text);null"` // 证书
  138. T_pdf3 string `orm:"type(text);null"` // 证书
  139. T_pdf4 string `orm:"type(text);null"` // 验证标识
  140. T_Show int `orm:"size(2);default(1)"` // 0 隐藏 1 公开
  141. T_Visit int `orm:"size(200);default(0)"` // 浏览量
  142. T_State int `orm:"size(2);default(1)"` // 0 删除 1 正常
  143. T_step int `orm:"size(2);default(-1)"` // 验证步骤
  144. T_sn string `orm:"size(256);null"` // sn
  145. T_CalibrationExpirationTime string `orm:"size(256);null"` // 校准到期时间
  146. T_project string `orm:"size(256);null"` // 项目 负责人UUID
  147. T_province string `orm:"size(256);null"` // 省
  148. T_city string `orm:"size(256);null"` // 市
  149. T_district string `orm:"size(256);null"` // 区
  150. T_province_code string `orm:"size(256);null"` // 省 code
  151. T_city_code string `orm:"size(256);null"` // 市 code
  152. T_district_code string `orm:"size(256);null"` // 区 code
  153. T_category string `orm:"size(256);null"` // 类别
  154. T_device_type string `orm:"size(256);null"` // 设备类型
  155. T_volume string `orm:"size(256);null"` // 规格/容积
  156. T_verify_type string `orm:"size(256);null"` // 验证类型
  157. T_subject_matter string `orm:"size(256);null"` // 标的物名称
  158. T_temp_range string `orm:"size(256);null"` // 验证温度范围
  159. T_report_number string `orm:"size(256);null"` // 报告编号
  160. T_report_type string `orm:"size(256);null"` // 报告类型
  161. T_start_time string `orm:"size(256);null"` // 项目开始时间
  162. T_end_time string `orm:"size(256);null"` // 结束时间 报告审核通过时间
  163. T_time_interval float64 `orm:"size(256);null"` // 时间间隔 单位分钟
  164. T_reject_times int `orm:"size(256);null"` // 驳回次数 客户退回方案和报告时
  165. T_reject_record string `orm:"type(text)"` // 驳回记录
  166. // 方案
  167. T_scheme_start_time string `orm:"size(256);null"` // 验证方案开始时间 接收信息采集表的时间
  168. T_scheme_end_time string `orm:"size(256);null"` // 验证方案结束时间 负责人审核通过后最后一次上传时间
  169. T_scheme_time_interval float64 `orm:"size(256);null"` // 时间间隔 单位分钟
  170. T_scheme_overtime float64 `orm:"size(256);null"` // 验证方案超时时间 单位分钟
  171. T_scheme_signature string `orm:"type(text)"` // 验证方案客户签字确认图片
  172. T_scheme_return_times int `orm:"size(256);null"` // 验证方案退回次数
  173. T_scheme_audit_record string `orm:"type(text)"` // 验证方案审核记录
  174. // 实施
  175. T_enter_area_time string `orm:"size(256);null"` // 进场时间
  176. T_collection_start_time string `orm:"size(256);null"` // 实施开始时间(app开始验证时间)
  177. T_collection_end_time string `orm:"size(256);null"` // 实施结束时间 (审核通过后签字确认提交时间)
  178. T_collection_time_interval float64 `orm:"size(256);null"` // 时间间隔 单位分钟
  179. T_collection_overtime float64 `orm:"size(256);null"` // 实施超时时间 单位分钟
  180. T_collection_signature string `orm:"type(text)"` // 实施人员签字确认图片
  181. T_collection_return_times int `orm:"size(256);null"` // 实施方案退回次数
  182. T_collection_audit_record string `orm:"type(text);null"` // 实施方案审核记录
  183. // 报告
  184. T_reporting_start_time string `orm:"size(256);null"` // 验证报告开始时间 接收信息采集表的时间
  185. T_reporting_end_time string `orm:"size(256);null"` // 验证报告结束时间 负责人审核通过后最后一次上传时间
  186. T_reporting_time_interval float64 `orm:"size(256);null"` // 时间间隔 单位分钟
  187. T_reporting_overtime float64 `orm:"size(256);null"` // 验证报告超时时间 单位分钟
  188. T_reporting_signature string `orm:"type(text)"` // 验证报告客户签字确认图片
  189. T_reporting_return_times int `orm:"size(256);null"` // 验证报告退回次数
  190. T_reporting_audit_record string `orm:"type(text);null"` // 验证报告审核记录
  191. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  192. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  193. }
  194. type Task_ struct {
  195. Id int
  196. T_class int // 分类ID
  197. T_InfoCollection_id string // 信息采集ID
  198. T_task_id string // 任务ID
  199. T_uuid string // 用户 UUID
  200. T_user_name string // 用户 UUID
  201. T_name string // 标题
  202. T_VerifyTemplate_class string // 任务模板id
  203. T_VerifyTemplate_id string // 任务模板id
  204. T_deadline string // 截止时间
  205. T_scheme string // 实施方案 负责人UUID
  206. T_collection string // 数据采集 负责人UUID
  207. T_reporting string // 报告编写 负责人UUID
  208. T_delivery string // 交付审核 负责人UUID
  209. T_scheme_state int // 实施方案 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  210. T_collection_state int // 数据采集 状态 0 未完成 1 数据来源已完成 2 处理中 3 已采集-无数据 4-数据编辑已完成(已提交) 5已通过(负责人) 6已退回(负责人)
  211. T_reporting_state int // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  212. T_delivery_state int // 交付审核 状态 0 未完成 1 已完成 2 处理中
  213. T_marking_state int // 验证标识 状态 0 未完成 1 已完成
  214. T_scheme_state_str string // 实施方案 状态 字符串
  215. T_collection_state_str string // 数据采集 状态 字符串
  216. T_reporting_state_str string // 报告编写 状态 字符串
  217. T_delivery_state_str string // 交付审核 状态 字符串
  218. T_marking_state_str string // 验证标识 状态 字符串
  219. T_scheme_name string // 实施方案 负责人姓名
  220. T_collection_name string // 数据采集 负责人姓名
  221. T_reporting_name string // 报告编写 负责人姓名
  222. T_delivery_name string // 交付审核 负责人姓名
  223. T_VerifyDeviceDataTime [2]string // 验证设备数据开始-结束时间
  224. T_BindDeviceDataTime [2]string // 绑定设备数据开始-结束时间
  225. T_doc1 string // 封面
  226. T_pdf1 string // 验证方案
  227. T_doc2 string // 报告
  228. T_pdf2 string // 报告
  229. T_doc3 string // 证书
  230. T_pdf3 string // 证书
  231. T_pdf4 string // 验证标识
  232. T_Show int // 0 公开 1 隐藏
  233. T_Visit int // 浏览量
  234. T_State int // 0 删除 1 正常
  235. T_sn string // sn
  236. T_CalibrationExpirationTime string // 校准到期时间
  237. T_province string // 省
  238. T_city string // 市
  239. T_district string // 区
  240. T_area []string // 省市区
  241. T_province_code string // 省 code
  242. T_city_code string // 市 code
  243. T_district_code string // 区 code
  244. T_area_code []string // 省市区
  245. InfoCollection InfoCollection.InfoCollection //信息采集
  246. }
  247. type Task_Stat struct {
  248. Id int
  249. T_class int // 分类ID
  250. T_InfoCollection_id string // 信息采集ID
  251. T_InfoTemplate_id string // 信息采集模板ID
  252. T_task_id string // 任务ID
  253. T_uuid string // 用户 UUID
  254. T_user_name string // 用户 UUID
  255. T_name string // 标题
  256. T_VerifyTemplate_class string // 任务模板id
  257. T_VerifyTemplate_id string // 任务模板id
  258. T_deadline string // 截止时间
  259. T_scheme string // 实施方案 负责人UUID
  260. T_collection string // 数据采集 负责人UUID
  261. T_reporting string // 报告编写 负责人UUID
  262. T_delivery string // 交付审核 负责人UUID
  263. T_scheme_state int // 实施方案 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  264. T_collection_state int // 数据采集 状态 0 未完成 1 数据来源已完成 2 处理中 3 已采集-无数据 4-数据编辑已完成(已提交) 5已通过(负责人) 6已退回(负责人)
  265. T_reporting_state int // 报告编写 状态 0 未完成 1 已完成(客户通过) 2已退回(客户) 3已通过(负责人) 4已退回(负责人) 5已提交
  266. T_delivery_state int // 交付审核 状态 0 未完成 1 已完成 2 处理中
  267. T_marking_state int // 验证标识 状态 0 未完成 1 已完成
  268. T_scheme_state_str string // 实施方案 状态 字符串
  269. T_collection_state_str string // 数据采集 状态 字符串
  270. T_reporting_state_str string // 报告编写 状态 字符串
  271. T_delivery_state_str string // 交付审核 状态 字符串
  272. T_marking_state_str string // 验证标识 状态 字符串
  273. T_scheme_name string // 实施方案 负责人姓名
  274. T_collection_name string // 数据采集 负责人姓名
  275. T_reporting_name string // 报告编写 负责人姓名
  276. T_delivery_name string // 交付审核 负责人姓名
  277. T_VerifyDeviceDataTime [2]string // 验证设备数据开始-结束时间
  278. T_BindDeviceDataTime [2]string // 绑定设备数据开始-结束时间
  279. T_doc1 string // 封面
  280. T_pdf1 string // 验证方案
  281. T_doc2 string // 报告
  282. T_pdf2 string // 报告
  283. T_doc3 string // 证书
  284. T_pdf3 string // 证书
  285. T_pdf4 string // 验证标识
  286. T_Show int // 0 公开 1 隐藏
  287. T_Visit int // 浏览量
  288. T_State int // 0 删除 1 正常
  289. T_sn string // sn
  290. T_CalibrationExpirationTime string // 校准到期时间
  291. T_project string // 项目 负责人UUID
  292. T_project_name string // 项目 负责人姓名
  293. T_province string // 省
  294. T_city string // 市
  295. T_district string // 区
  296. T_area []string // 省市区
  297. T_province_code string // 省 code
  298. T_city_code string // 市 code
  299. T_district_code string // 区 code
  300. T_area_code []string // 省市区
  301. T_category string // 类别
  302. T_device_type string // 设备类型
  303. T_volume string // 规格/容积
  304. T_verify_type string // 验证类型
  305. T_subject_matter string // 标的物名称
  306. T_temp_range string // 验证温度范围
  307. T_report_number string // 报告编号
  308. T_report_type string // 报告类型
  309. T_start_time string // 项目开始时间
  310. T_end_time string // 结束时间 报告审核通过时间
  311. T_time_interval string // 时间间隔 单位分钟
  312. T_reject_times int // 驳回次数 客户退回方案和报告时
  313. T_reject_record string // 驳回记录
  314. // 方案
  315. T_scheme_start_time string // 验证方案开始时间 接收信息采集表的时间
  316. T_scheme_end_time string // 验证方案结束时间
  317. T_scheme_time_interval string // 时间间隔 单位分钟
  318. T_scheme_overtime string // 验证方案超时时间 单位分钟
  319. T_scheme_signature string // 验证方案客户签字确认图片
  320. T_scheme_return_times int // 验证方案退回次数
  321. T_scheme_audit_record string // 验证方案审核记录
  322. // 实施
  323. T_enter_area_time string // 进场时间
  324. T_collection_start_time string // 实施开始时间(app开始验证时间)
  325. T_collection_end_time string // 实施结束时间 (签字确认提交时间)
  326. T_collection_time_interval string // 时间间隔 单位分钟
  327. T_collection_overtime string // 实施超时时间 单位分钟
  328. T_collection_signature string // 实施人员签字确认图片
  329. T_collection_return_times int // 实施方案退回次数
  330. T_collection_audit_record string // 实施方案审核记录
  331. // 报告
  332. T_reporting_start_time string // 验证报告开始时间 接收信息采集表的时间
  333. T_reporting_end_time string // 验证报告结束时间
  334. T_reporting_time_interval string // 时间间隔 单位分钟
  335. T_reporting_overtime string // 验证报告超时时间 单位分钟
  336. T_reporting_signature string // 验证报告客户签字确认图片
  337. T_reporting_return_times int // 验证报告退回次数
  338. T_reporting_audit_record string // 验证报告审核记录
  339. InfoCollection InfoCollection.InfoCollection_R //信息菜鸡
  340. }
  341. func (t *Task) TableName() string {
  342. return "task" // 数据库名称 // ************** 替换 FormulaList **************
  343. }
  344. var redisCache_Task cache.Cache
  345. func init() {
  346. //注册模型
  347. orm.RegisterModel(new(Task))
  348. config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  349. "redis_"+"Task", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  350. logs.Println(config)
  351. var err error
  352. redisCache_Task, err = cache.NewCache("redis", config)
  353. if err != nil || redisCache_Task == nil {
  354. errMsg := "failed to init redis"
  355. logs.Println(errMsg, err)
  356. }
  357. }
  358. // -------------------------------------------------------------
  359. func TaskToTask_(T Task, userMap, adminMap map[string]string) (T_ Task_) {
  360. T_.Id = T.Id
  361. T_.T_class = T.T_class
  362. T_.T_InfoCollection_id = T.T_InfoCollection_id
  363. if len(T.T_InfoCollection_id) > 0 {
  364. T_.InfoCollection, _ = InfoCollection.Read_InfoCollection(T.T_InfoCollection_id)
  365. }
  366. T_.T_task_id = T.T_task_id
  367. T_.T_uuid = T.T_uuid
  368. T_.T_user_name = userMap[T.T_uuid]
  369. T_.T_name = T.T_name
  370. T_.T_VerifyTemplate_class = T.T_VerifyTemplate_class
  371. T_.T_VerifyTemplate_id = T.T_VerifyTemplate_id
  372. T_.T_deadline = T.T_deadline
  373. T_.T_scheme = T.T_scheme
  374. T_.T_collection = T.T_collection
  375. T_.T_reporting = T.T_reporting
  376. T_.T_delivery = T.T_delivery
  377. T_.T_scheme_state = T.T_scheme_state
  378. T_.T_collection_state = T.T_collection_state
  379. T_.T_reporting_state = T.T_reporting_state
  380. T_.T_delivery_state = T.T_delivery_state
  381. T_.T_marking_state = T.T_marking_state
  382. T_.T_scheme_state_str = TaskSchemeStateMap[T.T_scheme_state]
  383. T_.T_collection_state_str = TaskCollectionStateMap[T.T_collection_state]
  384. T_.T_reporting_state_str = TaskReportingStateMap[T.T_reporting_state]
  385. T_.T_delivery_state_str = TaskDeliveryStateMap[T.T_delivery_state]
  386. T_.T_marking_state_str = TaskMarkingStateMap[T.T_marking_state]
  387. T_.T_scheme_name = adminMap[T.T_scheme]
  388. T_.T_collection_name = adminMap[T.T_collection]
  389. T_.T_reporting_name = adminMap[T.T_reporting]
  390. T_.T_delivery_name = adminMap[T.T_delivery]
  391. T_.T_VerifyDeviceDataTime = [2]string{T.T_VerifyDeviceDataStartTime, T.T_VerifyDeviceDataEndTime}
  392. T_.T_BindDeviceDataTime = [2]string{T.T_BindDeviceDataStartTime, T.T_BindDeviceDataEndTime}
  393. T_.T_doc1 = T.T_doc1
  394. T_.T_doc2 = T.T_doc2
  395. T_.T_doc3 = T.T_doc3
  396. T_.T_pdf1 = T.T_pdf1_watermark
  397. if T_.InfoCollection.T_status == InfoCollection.InfoCollectionStatusReturnedMoney || len(T.T_InfoCollection_id) == 0 || len(T.T_pdf1_watermark) == 0 {
  398. T_.T_pdf1 = T.T_pdf1
  399. }
  400. T_.T_pdf2 = T.T_pdf2_watermark
  401. if T_.InfoCollection.T_status == InfoCollection.InfoCollectionStatusReturnedMoney || len(T.T_InfoCollection_id) == 0 || len(T.T_pdf2_watermark) == 0 {
  402. T_.T_pdf2 = T.T_pdf2
  403. }
  404. T_.T_pdf3 = T.T_pdf3
  405. T_.T_pdf4 = T.T_pdf4
  406. T_.T_Show = T.T_Show
  407. T_.T_Visit = T.T_Visit
  408. T_.T_State = T.T_State
  409. T_.T_sn = T.T_sn
  410. T_.T_CalibrationExpirationTime = T.T_CalibrationExpirationTime
  411. return T_
  412. }
  413. func TaskToTask_Stat(T Task, userMap, adminMap map[string]string) (T_ Task_Stat) {
  414. T_.Id = T.Id
  415. T_.T_class = T.T_class
  416. T_.T_InfoCollection_id = T.T_InfoCollection_id
  417. if len(T.T_InfoCollection_id) > 0 {
  418. infoCollection, _ := InfoCollection.Read_InfoCollection(T.T_InfoCollection_id)
  419. T_.InfoCollection = InfoCollection.InfoCollectionToInfoCollection_R(infoCollection, userMap, adminMap, map[string]string{}, map[string]string{})
  420. }
  421. T_.T_task_id = T.T_task_id
  422. T_.T_uuid = T.T_uuid
  423. T_.T_user_name = userMap[T.T_uuid]
  424. T_.T_name = T.T_name
  425. T_.T_VerifyTemplate_class = T.T_VerifyTemplate_class
  426. T_.T_VerifyTemplate_id = T.T_VerifyTemplate_id
  427. T_.T_deadline = T.T_deadline
  428. T_.T_scheme = T.T_scheme
  429. T_.T_collection = T.T_collection
  430. T_.T_reporting = T.T_reporting
  431. T_.T_delivery = T.T_delivery
  432. T_.T_scheme_state = T.T_scheme_state
  433. T_.T_collection_state = T.T_collection_state
  434. T_.T_reporting_state = T.T_reporting_state
  435. T_.T_delivery_state = T.T_delivery_state
  436. T_.T_marking_state = T.T_marking_state
  437. T_.T_scheme_state_str = TaskSchemeStateMap[T.T_scheme_state]
  438. T_.T_collection_state_str = TaskCollectionStateMap[T.T_collection_state]
  439. T_.T_reporting_state_str = TaskReportingStateMap[T.T_reporting_state]
  440. T_.T_delivery_state_str = TaskDeliveryStateMap[T.T_delivery_state]
  441. T_.T_marking_state_str = TaskMarkingStateMap[T.T_marking_state]
  442. T_.T_project_name = adminMap[T.T_project]
  443. T_.T_scheme_name = adminMap[T.T_scheme]
  444. T_.T_collection_name = adminMap[T.T_collection]
  445. T_.T_reporting_name = adminMap[T.T_reporting]
  446. T_.T_delivery_name = adminMap[T.T_delivery]
  447. T_.T_VerifyDeviceDataTime = [2]string{T.T_VerifyDeviceDataStartTime, T.T_VerifyDeviceDataEndTime}
  448. T_.T_BindDeviceDataTime = [2]string{T.T_BindDeviceDataStartTime, T.T_BindDeviceDataEndTime}
  449. T_.T_doc1 = T.T_doc1
  450. T_.T_doc2 = T.T_doc2
  451. T_.T_doc3 = T.T_doc3
  452. T_.T_pdf1 = T.T_pdf1_watermark
  453. if T_.InfoCollection.T_status == InfoCollection.InfoCollectionStatusReturnedMoney || len(T.T_InfoCollection_id) == 0 || len(T.T_pdf1_watermark) == 0 {
  454. T_.T_pdf1 = T.T_pdf1
  455. }
  456. T_.T_pdf2 = T.T_pdf2_watermark
  457. if T_.InfoCollection.T_status == InfoCollection.InfoCollectionStatusReturnedMoney || len(T.T_InfoCollection_id) == 0 || len(T.T_pdf2_watermark) == 0 {
  458. T_.T_pdf2 = T.T_pdf2
  459. }
  460. T_.T_pdf3 = T.T_pdf3
  461. T_.T_pdf4 = T.T_pdf4
  462. T_.T_Show = T.T_Show
  463. T_.T_Visit = T.T_Visit
  464. T_.T_State = T.T_State
  465. T_.T_sn = T.T_sn
  466. T_.T_CalibrationExpirationTime = T.T_CalibrationExpirationTime
  467. T_.T_project = T.T_project
  468. T_.T_province = T.T_province
  469. T_.T_city = T.T_city
  470. T_.T_district = T.T_district
  471. T_.T_area = []string{T.T_province, T.T_city, T.T_district}
  472. T_.T_province_code = T.T_province_code
  473. T_.T_city_code = T.T_city_code
  474. T_.T_district_code = T.T_district_code
  475. T_.T_area_code = []string{T.T_province_code, T.T_city_code, T.T_district_code}
  476. T_.T_category = T.T_category
  477. T_.T_device_type = T.T_device_type
  478. T_.T_volume = T.T_volume
  479. T_.T_verify_type = T.T_verify_type
  480. T_.T_subject_matter = T.T_subject_matter
  481. T_.T_temp_range = T.T_temp_range
  482. T_.T_report_number = T.T_report_number
  483. T_.T_report_type = T.T_report_type
  484. T_.T_start_time = T.T_start_time
  485. T_.T_end_time = T.T_end_time
  486. T_.T_time_interval = lib.ConvertMinutesToDHM(int(T.T_time_interval))
  487. T_.T_reject_times = T.T_reject_times
  488. T_.T_reject_record = T.T_reject_record
  489. // 方案
  490. T_.T_scheme_start_time = T.T_scheme_start_time
  491. T_.T_scheme_end_time = T.T_scheme_end_time
  492. if T.T_scheme_state == TaskSchemeStateClientPass ||
  493. T.T_scheme_state == TaskSchemeStateClientReturn ||
  494. T.T_scheme_state == TaskSchemeStatePass {
  495. T_.T_scheme_time_interval = lib.ConvertMinutesToDHM(int(T.T_scheme_time_interval))
  496. T_.T_scheme_overtime = lib.ConvertMinutesToDHM(int(T.T_scheme_overtime))
  497. }
  498. T_.T_scheme_signature = T.T_scheme_signature
  499. T_.T_scheme_return_times = T.T_scheme_return_times
  500. T_.T_scheme_audit_record = T.T_scheme_audit_record
  501. // 实施
  502. T_.T_enter_area_time = T.T_enter_area_time
  503. T_.T_collection_start_time = T.T_collection_start_time
  504. T_.T_collection_end_time = T.T_collection_end_time
  505. if T.T_collection_state == TaskCollectionStatePass {
  506. T_.T_collection_time_interval = lib.ConvertMinutesToDHM(int(T.T_collection_time_interval))
  507. T_.T_collection_overtime = lib.ConvertMinutesToDHM(int(T.T_collection_overtime))
  508. }
  509. T_.T_collection_signature = T.T_collection_signature
  510. T_.T_collection_return_times = T.T_collection_return_times
  511. T_.T_collection_audit_record = T.T_collection_audit_record
  512. // 报告
  513. T_.T_reporting_start_time = T.T_reporting_start_time
  514. T_.T_reporting_end_time = T.T_reporting_end_time
  515. if T.T_reporting_state == TaskReportingStateClientPass ||
  516. T.T_reporting_state == TaskReportingStateClientReturn ||
  517. T.T_reporting_state == TaskReportingStatePass {
  518. T_.T_reporting_time_interval = lib.ConvertMinutesToDHM(int(T.T_reporting_time_interval))
  519. T_.T_reporting_overtime = lib.ConvertMinutesToDHM(int(T.T_reporting_overtime))
  520. }
  521. T_.T_reporting_signature = T.T_reporting_signature
  522. T_.T_reporting_return_times = T.T_reporting_return_times
  523. T_.T_reporting_audit_record = T.T_reporting_audit_record
  524. return T_
  525. }
  526. // ---------------- Redis -------------------
  527. // Redis_Set(m.T_sn,m) // Redis 更新缓存
  528. func Redis_Task_Set(key string, r Task) (err error) {
  529. //json序列化
  530. str, err := json.Marshal(r)
  531. if err != nil {
  532. logs.Error(lib.FuncName(), err)
  533. return
  534. }
  535. err = redisCache_Task.Put(key, str, 24*time.Hour)
  536. if err != nil {
  537. logs.Println("set key:", key, ",value:", str, err)
  538. }
  539. return
  540. }
  541. // if r,is :=Redis_Get(T_sn);is{
  542. // return r,nil
  543. // }
  544. func Redis_Task_Get(key string) (r Task, is bool) {
  545. if redisCache_Task.IsExist(key) {
  546. logs.Println("找到key:", key)
  547. v := redisCache_Task.Get(key)
  548. json.Unmarshal(v.([]byte), &r)
  549. return r, true
  550. }
  551. logs.Println("没有 找到key:", key)
  552. return Task{}, false
  553. }
  554. func Redis_Task_DelK(key string) (err error) {
  555. err = redisCache_Task.Delete(key)
  556. return
  557. }
  558. // ---------------- 特殊方法 -------------------
  559. // 获取 ById
  560. func Read_Task_ById(id int) (r Task, is bool) {
  561. o := orm.NewOrm()
  562. r = Task{Id: id}
  563. err := o.Read(&r) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  564. if err != nil {
  565. logs.Error(lib.FuncName(), err)
  566. return r, false
  567. }
  568. return r, true
  569. }
  570. // 获取 By
  571. func Read_Task(T_task_id string) (r Task, is bool) {
  572. if r, is = Redis_Task_Get(T_task_id); is == true {
  573. return r, true
  574. }
  575. o := orm.NewOrm()
  576. qs := o.QueryTable(new(Task))
  577. //err := qs.Filter("T_task_id", T_task_id).Filter("T_State", 1).One(&r)
  578. err := qs.Filter("T_task_id", T_task_id).Filter("T_State", 1).One(&r)
  579. if err != nil {
  580. return r, false
  581. }
  582. Redis_Task_Set(T_task_id, r)
  583. return r, true
  584. }
  585. // 添加
  586. func Add_Task(r Task) (string, bool) {
  587. o := orm.NewOrm()
  588. // 生成编号
  589. rand_x := 0
  590. for true {
  591. r.T_task_id = lib.GetRandstring(12, "abcdefghijklmnopqrstuvwxyz0123456789", int64(rand_x)) // 1,336,336
  592. err := o.Read(&r, "T_task_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  593. if err != nil {
  594. break
  595. }
  596. rand_x += 1
  597. }
  598. _, err := o.Insert(&r)
  599. if err != nil {
  600. logs.Error(lib.FuncName(), err)
  601. return "", false
  602. }
  603. if !CREATE_TaskData(r.T_task_id) {
  604. return "", false
  605. }
  606. Redis_Task_Set(r.T_task_id, r)
  607. return r.T_task_id, true
  608. }
  609. func Add_Task_Tool(r Task) (string, bool) {
  610. o := orm.NewOrm()
  611. _, err := o.Insert(&r)
  612. if err != nil {
  613. logs.Error(lib.FuncName(), err)
  614. return "", false
  615. }
  616. return r.T_task_id, true
  617. }
  618. // 删除
  619. func Delete_Task(v Task) bool {
  620. o := orm.NewOrm()
  621. if num, err := o.Delete(&v); err == nil {
  622. logs.Println("Number of records deleted in database:", num)
  623. } else {
  624. logs.Error(lib.FuncName(), err)
  625. return false
  626. }
  627. Redis_Task_DelK(v.T_task_id)
  628. return true
  629. }
  630. // 删除
  631. func Delete_Task_(v Task) bool {
  632. o := orm.NewOrm()
  633. v.T_State = 0
  634. if num, err := o.Update(&v, "T_State"); err == nil {
  635. logs.Println("Number of records updated in database:", num)
  636. } else {
  637. logs.Error(lib.FuncName(), err)
  638. return false
  639. }
  640. Redis_Task_DelK(v.T_task_id)
  641. return true
  642. }
  643. // 修改
  644. func Update_Task(m Task, cols ...string) bool {
  645. o := orm.NewOrm()
  646. if num, err := o.Update(&m, cols...); err == nil {
  647. logs.Println("Number of records updated in database:", num)
  648. Redis_Task_Set(m.T_task_id, m)
  649. return true
  650. } else {
  651. logs.Error(lib.FuncName(), err)
  652. }
  653. return false
  654. }
  655. // 添加浏览量
  656. func Add_Task_Visit(m Task) bool {
  657. o := orm.NewOrm()
  658. m.T_Visit += 1
  659. if num, err := o.Update(&m, "T_Visit"); err == nil {
  660. logs.Println("Number of records updated in database:", num)
  661. Redis_Task_Set(m.T_task_id, m)
  662. return true
  663. } else {
  664. logs.Error(lib.FuncName(), err)
  665. }
  666. return false
  667. }
  668. // 获取用户任务列表
  669. func Read_UserTask_List(T_uuid string, T_name string, userMap, adminMap map[string]string, page int, page_z int) ([]Task_, int) {
  670. o := orm.NewOrm()
  671. qs := o.QueryTable(new(Task))
  672. var r []Task
  673. var offset int64
  674. if page <= 1 {
  675. offset = 0
  676. } else {
  677. offset = int64((page - 1) * page_z)
  678. }
  679. cond := orm.NewCondition()
  680. //cond1 := cond.And("T_name__icontains", T_name).And("T_State", 1)
  681. cond1 := cond.And("T_name__icontains", T_name).And("T_Show", 1).And("T_State", 1)
  682. if len(T_uuid) > 0 {
  683. cond1 = cond1.And("T_uuid", T_uuid)
  684. }
  685. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
  686. cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
  687. // 转换
  688. var TaskList []Task_
  689. for _, v := range r {
  690. TaskList = append(TaskList, TaskToTask_(v, userMap, adminMap))
  691. }
  692. return TaskList, int(cnt)
  693. }
  694. // 获取任务列表
  695. func Read_Task_List(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_scheme, T_collection, T_reporting, T_delivery,
  696. T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state string,
  697. T_company_list []string, userMap, adminMap map[string]string, page int, page_z int) ([]Task_, int) {
  698. o := orm.NewOrm()
  699. qs := o.QueryTable(new(Task))
  700. var r []Task
  701. var offset int64
  702. if page <= 1 {
  703. offset = 0
  704. } else {
  705. offset = int64((page - 1) * page_z)
  706. }
  707. cond := orm.NewCondition()
  708. cond1 := cond.AndCond(cond.Or("T_name__icontains", T_name).Or("T_task_id__icontains", T_name)).And("T_State", 1)
  709. if len(T_uuid) > 0 {
  710. cond1 = cond1.And("T_uuid", T_uuid)
  711. }
  712. if len(T_InfoCollection_id) > 0 {
  713. cond1 = cond1.And("T_InfoCollection_id", T_InfoCollection_id)
  714. }
  715. if len(T_admin) > 0 {
  716. cond1 = cond1.AndCond(cond.Or("T_scheme", T_admin).Or("T_collection", T_admin).
  717. Or("T_reporting", T_admin).Or("T_delivery", T_admin))
  718. }
  719. if len(T_company_list) > 0 {
  720. cond1 = cond1.And("T_uuid__in", T_company_list)
  721. }
  722. if len(T_scheme) > 0 {
  723. cond1 = cond1.And("T_scheme", T_scheme)
  724. }
  725. if len(T_collection) > 0 {
  726. cond1 = cond1.And("T_collection", T_collection)
  727. }
  728. if len(T_reporting) > 0 {
  729. cond1 = cond1.And("T_reporting", T_reporting)
  730. }
  731. if len(T_delivery) > 0 {
  732. cond1 = cond1.And("T_delivery", T_delivery)
  733. }
  734. if len(T_scheme_state) > 0 {
  735. cond1 = cond1.And("T_scheme_state", T_scheme_state)
  736. }
  737. if len(T_collection_state) > 0 {
  738. cond1 = cond1.And("T_collection_state", T_collection_state)
  739. }
  740. if len(T_reporting_state) > 0 {
  741. cond1 = cond1.And("T_reporting_state", T_reporting_state)
  742. }
  743. if len(T_delivery_state) > 0 {
  744. cond1 = cond1.And("T_delivery_state", T_delivery_state)
  745. }
  746. if len(T_marking_state) > 0 {
  747. cond1 = cond1.And("T_marking_state", T_marking_state)
  748. }
  749. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
  750. cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
  751. // 转换
  752. var TaskList []Task_
  753. for _, v := range r {
  754. TaskList = append(TaskList, TaskToTask_(v, userMap, adminMap))
  755. }
  756. return TaskList, int(cnt)
  757. }
  758. func Read_Task_BySN(sn string) (r Task, err error) {
  759. if task, is := Redis_Task_Get(sn); is == true {
  760. return task, nil
  761. }
  762. o := orm.NewOrm()
  763. qs := o.QueryTable(new(Task))
  764. err = qs.Filter("T_sn", sn).Filter("T_State", 1).One(&r)
  765. if err != nil {
  766. return r, err
  767. }
  768. Redis_Task_Set(sn, r)
  769. return r, nil
  770. }
  771. // 修改
  772. func Update_Task_T_InfoTemplate_id(T_InfoCollection_id, T_InfoTemplate_id string) error {
  773. o := orm.NewOrm()
  774. qs := o.QueryTable(new(Task))
  775. var r []Task
  776. o.Begin()
  777. qs.Filter("T_InfoCollection_id", T_InfoCollection_id).All(&r)
  778. for _, task := range r {
  779. task.T_InfoTemplate_id = T_InfoTemplate_id
  780. if _, err := o.Update(&task, "T_InfoTemplate_id"); err == nil {
  781. Redis_Task_Set(task.T_task_id, task)
  782. } else {
  783. o.Rollback()
  784. logs.Error(lib.FuncName(), err)
  785. return err
  786. }
  787. }
  788. o.Commit()
  789. return nil
  790. }
  791. func Add_AuditRecord(T_audit_record string, T_uuid, T_admin string, T_scheme_state int, T_reason string, T_type string) (string, error) {
  792. auditRecord := AuditRecord{
  793. T_uuid: T_uuid,
  794. T_admin: T_admin,
  795. T_state: T_scheme_state,
  796. T_reason: T_reason,
  797. T_type: T_type,
  798. T_time: time.Now().Format("2006-01-02 15:04:05"),
  799. }
  800. var returnRecordList []AuditRecord
  801. if len(T_audit_record) > 0 {
  802. err := json.Unmarshal([]byte(T_audit_record), &returnRecordList)
  803. if err != nil {
  804. logs.Error("JSON 反序列化失败:", err)
  805. return "", errors.New("JSON 反序列化失败")
  806. }
  807. }
  808. returnRecordList = append(returnRecordList, auditRecord)
  809. returnRecordJson, err := json.Marshal(returnRecordList)
  810. if err != nil {
  811. logs.Error("JSON 反序列化失败:", err)
  812. return "", errors.New("JSON 反序列化失败")
  813. }
  814. return string(returnRecordJson), nil
  815. }
  816. // 获取项目负责人列表
  817. func Get_Task_UserList(T_type string) []string {
  818. o := orm.NewOrm()
  819. var err error
  820. var pl_lists []string
  821. switch T_type {
  822. case "T_project":
  823. _, err = o.Raw("SELECT DISTINCT t_project FROM task LIMIT 0,1000").QueryRows(&pl_lists)
  824. case "T_scheme":
  825. _, err = o.Raw("SELECT DISTINCT t_scheme FROM task LIMIT 0,1000").QueryRows(&pl_lists)
  826. case "T_collection":
  827. _, err = o.Raw("SELECT DISTINCT t_collection FROM task LIMIT 0,1000").QueryRows(&pl_lists)
  828. case "T_reporting":
  829. _, err = o.Raw("SELECT DISTINCT t_reporting FROM task LIMIT 0,1000").QueryRows(&pl_lists)
  830. }
  831. if err != nil {
  832. logs.Error("获取项目负责人列表失败:", err)
  833. }
  834. return pl_lists
  835. }
  836. func Read_Task_Stat(T_uuid, T_admin, T_name, T_InfoCollection_id string, T_project, T_scheme, T_collection, T_reporting, T_delivery,
  837. T_scheme_state, T_collection_state, T_reporting_state, T_delivery_state, T_marking_state string,
  838. T_company_list []string, userMap, adminMap map[string]string, page int, page_z int) ([]Task_Stat, int) {
  839. o := orm.NewOrm()
  840. qs := o.QueryTable(new(Task))
  841. var r []Task
  842. var offset int64
  843. if page <= 1 {
  844. offset = 0
  845. } else {
  846. offset = int64((page - 1) * page_z)
  847. }
  848. cond := orm.NewCondition()
  849. cond1 := cond.AndCond(cond.Or("T_name__icontains", T_name).Or("T_task_id__icontains", T_name)).And("T_State", 1)
  850. if len(T_uuid) > 0 {
  851. cond1 = cond1.And("T_uuid", T_uuid)
  852. }
  853. if len(T_InfoCollection_id) > 0 {
  854. cond1 = cond1.And("T_InfoCollection_id", T_InfoCollection_id)
  855. }
  856. if len(T_admin) > 0 {
  857. cond1 = cond1.AndCond(cond.Or("T_scheme", T_admin).Or("T_collection", T_admin).
  858. Or("T_reporting", T_admin).Or("T_delivery", T_admin))
  859. }
  860. if len(T_company_list) > 0 {
  861. cond1 = cond1.And("T_uuid__in", T_company_list)
  862. }
  863. if len(T_project) > 0 {
  864. cond1 = cond1.And("T_project", T_project)
  865. }
  866. if len(T_scheme) > 0 {
  867. cond1 = cond1.And("T_scheme", T_scheme)
  868. }
  869. if len(T_collection) > 0 {
  870. cond1 = cond1.And("T_collection", T_collection)
  871. }
  872. if len(T_reporting) > 0 {
  873. cond1 = cond1.And("T_reporting", T_reporting)
  874. }
  875. if len(T_delivery) > 0 {
  876. cond1 = cond1.And("T_delivery", T_delivery)
  877. }
  878. if len(T_scheme_state) > 0 {
  879. cond1 = cond1.And("T_scheme_state", T_scheme_state)
  880. }
  881. if len(T_collection_state) > 0 {
  882. cond1 = cond1.And("T_collection_state", T_collection_state)
  883. }
  884. if len(T_reporting_state) > 0 {
  885. cond1 = cond1.And("T_reporting_state", T_reporting_state)
  886. }
  887. if len(T_delivery_state) > 0 {
  888. cond1 = cond1.And("T_delivery_state", T_delivery_state)
  889. }
  890. if len(T_marking_state) > 0 {
  891. cond1 = cond1.And("T_marking_state", T_marking_state)
  892. }
  893. if page_z == 9999 {
  894. qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
  895. } else {
  896. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
  897. }
  898. cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
  899. // 转换
  900. var TaskList []Task_Stat
  901. for _, v := range r {
  902. TaskList = append(TaskList, TaskToTask_Stat(v, userMap, adminMap))
  903. }
  904. return TaskList, int(cnt)
  905. }