validation.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. package validationtool
  2. import (
  3. "ERP_storage/logs"
  4. "errors"
  5. "fmt"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. orm2 "github.com/beego/beego/v2/client/orm"
  8. "gogs.baozhida.cn/zoie/ERP_libs/lib"
  9. "strconv"
  10. "time"
  11. )
  12. type ValidationTool struct {
  13. Id int `orm:"column(ID);size(11);auto;pk"` // 合同编号
  14. T_class int `orm:"size(20);default(0)"` // 产品分类 T_class=0 冷链验证 // 产品id
  15. Validationnumber string `orm:"size(256);null"` // 验证工具编号
  16. T_sn string `orm:"size(256);null"` // 设备sn
  17. T_iccid string `orm:"size(256);null"` // sim卡号
  18. T_imei string `orm:"size(256);null"` // 模组imei
  19. History_iccid string `orm:"size(256);type(json);null"` // 历史sim卡号
  20. History_imei string `orm:"size(256);type(json);null"` // 历史模组
  21. T_state int `orm:"size(2);default(2)"` // 1-已出库 2-待使用 3-维修中 4-已报废
  22. T_remark string `orm:"type(text);null"` // 备注
  23. T_project string `orm:"type(text);null"` // 出库项目
  24. T_project_log string `orm:"type(text);null"` // 出库项目
  25. T_uuid string `orm:"size(256);null"` //用户uuid
  26. LendUser string `orm:"size(256);null"` //借出用户
  27. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  28. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  29. }
  30. type AddValidationTool struct {
  31. T_sn string `json:"T_sn"`
  32. Validationnumber string `json:"Validationnumber"`
  33. T_remark string `json:"T_remark"`
  34. T_class int `json:"T_class"`
  35. }
  36. type LendValidationTool struct {
  37. T_sn string `json:"T_sn"`
  38. Validationnumber string `json:"Validationnumber"`
  39. T_remark string `json:"T_remark"`
  40. T_project string `json:"T_project"`
  41. LendUser string `json:"LendUser"`
  42. }
  43. type ValidationStat struct {
  44. T_project string // 出库项目
  45. LendUser string // 借出用户
  46. TotalCount int // 项目数量
  47. T_state int
  48. }
  49. func (t *ValidationTool) TableName() string {
  50. return "ValidationTool"
  51. }
  52. type ValidationImpl struct {
  53. orm orm.Ormer
  54. }
  55. type ValidationUseRecordImpl struct {
  56. orm orm.Ormer
  57. }
  58. func NewValidationTool(orm orm.Ormer) *ValidationImpl {
  59. return &ValidationImpl{orm: orm}
  60. }
  61. func NewValidationToolUseRecord(orm orm.Ormer) *ValidationUseRecordImpl {
  62. return &ValidationUseRecordImpl{orm: orm}
  63. }
  64. func init() {
  65. //注册模型
  66. orm.RegisterModel(new(ValidationTool))
  67. }
  68. // ADDValidationTool 添加
  69. func (dao *ValidationImpl) ADDValidationTool(r ValidationTool) (id int64, err error) {
  70. _, err = dao.ReadValidationBytSn(r.T_sn)
  71. if err != nil {
  72. if errors.Is(err, orm.ErrNoRows) {
  73. id, err = dao.orm.Insert(&r)
  74. if err != nil {
  75. logs.Error(lib.FuncName(), err)
  76. }
  77. return id, err
  78. }
  79. }
  80. return id, err
  81. }
  82. func (dao *ValidationImpl) ReadValidationBytSn(T_sn string) (r ValidationTool, err error) {
  83. qs := dao.orm.QueryTable(new(ValidationTool))
  84. var list []ValidationTool
  85. _, err = qs.Limit(1, 0).Filter("T_sn", T_sn).OrderBy("-CreateTime").All(&list)
  86. if err != nil {
  87. logs.Error(lib.FuncName(), err)
  88. }
  89. if len(list) == 0 {
  90. return r, orm.ErrNoRows
  91. }
  92. if len(list) > 0 {
  93. r = list[0]
  94. }
  95. return
  96. }
  97. func (dao *ValidationImpl) UpdateValidationTool(TSn string, con map[string]string) (err error) {
  98. qs := dao.orm.QueryTable(new(ValidationTool))
  99. params := orm.Params{}
  100. for key, value := range con {
  101. params[key] = value
  102. }
  103. _, err = qs.Filter("T_sn", TSn).Update(orm2.Params(params))
  104. if err != nil {
  105. logs.Error(lib.FuncName(), err)
  106. }
  107. return err
  108. }
  109. func (dao *ValidationImpl) UpdateValidationToolById(id string, con map[string]string) (err error) {
  110. qs := dao.orm.QueryTable(new(ValidationTool))
  111. params := orm.Params{}
  112. for key, value := range con {
  113. params[key] = value
  114. }
  115. _, err = qs.Filter("id", id).Update(orm2.Params(params))
  116. if err != nil {
  117. logs.Error(lib.FuncName(), err)
  118. }
  119. return err
  120. }
  121. func (dao *ValidationImpl) ReadValidationById(id string) (r ValidationTool, err error) {
  122. qs := dao.orm.QueryTable(new(ValidationTool))
  123. var list []ValidationTool
  124. _, err = qs.Limit(1, 0).Filter("id", id).OrderBy("-CreateTime").All(&list)
  125. if err != nil {
  126. logs.Error(lib.FuncName(), err)
  127. }
  128. if len(list) == 0 {
  129. return r, orm.ErrNoRows
  130. }
  131. if len(list) > 0 {
  132. r = list[0]
  133. }
  134. return
  135. }
  136. func (dao *ValidationImpl) Read_Validation_List(Validationnumber, T_sn, T_iccid, T_imei, T_State, LendUser, T_project, T_class string, page, page_z int) (r []ValidationTool, cnt int64) {
  137. var offset int
  138. if page <= 1 {
  139. offset = 0
  140. } else {
  141. offset = (page - 1) * page_z
  142. }
  143. // 过滤
  144. sqlWhere := " WHERE id > 0"
  145. if len(Validationnumber) > 0 {
  146. sqlWhere += " AND validationnumber like \"%" + Validationnumber + "%\""
  147. }
  148. if len(T_State) > 0 {
  149. sqlWhere += " AND t_state like \"%" + T_State + "%\""
  150. }
  151. if len(T_sn) > 0 {
  152. sqlWhere += " AND t_sn like \"%" + T_sn + "%\""
  153. }
  154. if len(T_iccid) > 0 {
  155. sqlWhere += " AND t_iccid like \"%" + T_iccid + "%\""
  156. }
  157. if len(T_imei) > 0 {
  158. sqlWhere += " AND t_imei like \"%" + T_imei + "%\""
  159. }
  160. if len(LendUser) > 0 {
  161. sqlWhere += " AND lend_user like \"%" + LendUser + "%\""
  162. }
  163. if len(T_project) > 0 {
  164. sqlWhere += " AND t_project like \"%" + T_project + "%\""
  165. }
  166. if len(T_class) > 0 {
  167. sqlWhere += " AND t_class like \"%" + T_class + "%\""
  168. }
  169. var maps_z []orm2.ParamsList
  170. // 获取总条数
  171. sql := "SELECT COUNT(*) FROM ValidationTool"
  172. sql = sql + sqlWhere
  173. fmt.Println(sql)
  174. _, err := dao.orm.Raw(sql).ValuesList(&maps_z)
  175. if err != nil {
  176. return r, 0
  177. }
  178. if len(maps_z) == 0 {
  179. return r, 0
  180. }
  181. sql = "SELECT * FROM ValidationTool"
  182. sql = sql + sqlWhere
  183. sql += " ORDER BY create_time DESC"
  184. sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
  185. fmt.Println(sql)
  186. var maps []ValidationTool
  187. _, err = dao.orm.Raw(sql).QueryRows(&maps)
  188. if err != nil {
  189. return r, 0
  190. }
  191. count, _ := strconv.Atoi(maps_z[0][0].(string))
  192. return maps, int64(count)
  193. }
  194. func (dao *ValidationImpl) DeleteValidationTool(sn string) (err error) {
  195. qs := dao.orm.QueryTable(new(ValidationTool))
  196. _, err = qs.Filter("t_sn", sn).Delete()
  197. return err
  198. }
  199. func (dao *ValidationImpl) Validation_stat(LendUser, T_project string, page, page_z int) (maps []ValidationStat, count int64) {
  200. var offset int
  201. if page <= 1 {
  202. offset = 0
  203. } else {
  204. offset = (page - 1) * page_z
  205. }
  206. // 过滤
  207. sqlWhere := " WHERE id > 0"
  208. if len(LendUser) > 0 {
  209. if LendUser == "未出库" {
  210. sqlWhere += " AND lend_user = ''"
  211. } else {
  212. sqlWhere += " AND lend_user like \"%" + LendUser + "%\""
  213. }
  214. }
  215. if len(T_project) > 0 {
  216. sqlWhere += " AND t_project like \"%" + T_project + "%\""
  217. }
  218. sql := "SELECT t_project,lend_user,t_state,COUNT(*) as total_count FROM ValidationTool"
  219. sql = sql + sqlWhere
  220. sql += " GROUP BY lend_user,t_project ORDER BY lend_user"
  221. var maps_z []orm2.ParamsList
  222. // 获取总条数
  223. countSql := "SELECT COUNT(*) FROM (" + sql + ") as subquery"
  224. fmt.Println(sql)
  225. _, err := dao.orm.Raw(countSql).ValuesList(&maps_z)
  226. if err != nil {
  227. return maps, 0
  228. }
  229. if len(maps_z) == 0 {
  230. return maps, 0
  231. }
  232. if page_z != 9999 {
  233. sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
  234. }
  235. fmt.Println(sql)
  236. _, err = dao.orm.Raw(sql).QueryRows(&maps)
  237. if err != nil {
  238. logs.Error(lib.FuncName(), err)
  239. return maps, 0
  240. }
  241. cnt, _ := strconv.Atoi(maps_z[0][0].(string))
  242. return maps, int64(cnt)
  243. }
  244. func (dao *ValidationImpl) Read_lend_user_List(T_name string, page, page_z int) (lists []ValidationStat, count int64) {
  245. var offset int
  246. if page <= 1 {
  247. offset = 0
  248. } else {
  249. offset = (page - 1) * page_z
  250. }
  251. o := orm.NewOrm()
  252. sql := "SELECT lend_user,count(*) as total_count FROM ValidationTool"
  253. if len(T_name) > 0 {
  254. sql += " WHERE lend_user like \"%" + T_name + "%\""
  255. }
  256. sql += " GROUP BY lend_user ORDER BY lend_user"
  257. var maps_z []orm2.ParamsList
  258. // 获取总条数
  259. countSql := "SELECT COUNT(*) FROM (" + sql + ") as subquery"
  260. fmt.Println(sql)
  261. _, err := dao.orm.Raw(countSql).ValuesList(&maps_z)
  262. if err != nil {
  263. return lists, 0
  264. }
  265. if len(maps_z) == 0 {
  266. return lists, 0
  267. }
  268. if page_z != 9999 {
  269. sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
  270. }
  271. _, err = o.Raw(sql).QueryRows(&lists)
  272. if err != nil {
  273. logs.Error(lib.FuncName(), err)
  274. return
  275. }
  276. cnt, _ := strconv.Atoi(maps_z[0][0].(string))
  277. return lists, int64(cnt)
  278. }