Validation.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. package controllers
  2. import (
  3. "ERP_storage/Nats/NatsServer"
  4. "ERP_storage/conf"
  5. "ERP_storage/logs"
  6. "ERP_storage/models/Account"
  7. "ERP_storage/models/Basic"
  8. "ERP_storage/models/Stock"
  9. "ERP_storage/models/validationtool"
  10. "encoding/json"
  11. "errors"
  12. "fmt"
  13. "github.com/beego/beego/v2/adapter/orm"
  14. beego "github.com/beego/beego/v2/server/web"
  15. "github.com/xuri/excelize/v2"
  16. userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
  17. "gogs.baozhida.cn/zoie/ERP_libs/lib"
  18. "math"
  19. "net/url"
  20. "os"
  21. "strconv"
  22. "strings"
  23. "time"
  24. )
  25. type ValidationController struct {
  26. beego.Controller
  27. User userlibs.User
  28. }
  29. func (c *ValidationController) Prepare() {
  30. c.User = *Account.User_r
  31. }
  32. func (c *ValidationController) AddValidation() {
  33. var ValidationList []validationtool.AddValidationTool
  34. errs := json.Unmarshal(c.Ctx.Input.RequestBody, &ValidationList)
  35. if errs != nil {
  36. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  37. c.ServeJSON()
  38. return
  39. }
  40. o := orm.NewOrm()
  41. o.Begin() // 开始事务
  42. vali := validationtool.NewValidationTool(o)
  43. valiRecord := validationtool.NewValidationToolRecord(o)
  44. BatchNumber := time.Now().Format("2006-01-02 15:04:05")
  45. for _, tool := range ValidationList {
  46. if len(tool.T_sn) == 0 {
  47. o.Rollback() // 回滚事务
  48. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  49. c.ServeJSON()
  50. return
  51. }
  52. validation, err := vali.ReadValidationBytSn(tool.T_sn)
  53. if err != nil && !errors.Is(err, orm.ErrNoRows) {
  54. o.Rollback() // 回滚事务
  55. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "查询失败!", Data: nil}
  56. c.ServeJSON()
  57. return
  58. } else if errors.Is(err, orm.ErrNoRows) {
  59. var validataiontool validationtool.ValidationTool
  60. user := Stock.Read_MqttUser(tool.T_sn)
  61. validataiontool.T_iccid = user.Iccid
  62. validataiontool.T_imei = user.Imei
  63. validataiontool.T_uuid = c.User.T_uuid
  64. validataiontool.Validationnumber = tool.Validationnumber
  65. validataiontool.T_sn = tool.T_sn
  66. validataiontool.T_remark = tool.T_remark
  67. validataiontool.T_state = validationtool.ValidationToolStateStockIn
  68. validataiontool.T_class = tool.T_class
  69. validataiontool.UpdateTime = time.Now()
  70. _, err = vali.ADDValidationTool(validataiontool)
  71. if err != nil {
  72. o.Rollback() // 回滚事务
  73. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
  74. c.ServeJSON()
  75. return
  76. }
  77. _, err = valiRecord.ADD(validataiontool, BatchNumber)
  78. if err != nil {
  79. o.Rollback() // 回滚事务
  80. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  81. c.ServeJSON()
  82. return
  83. }
  84. }
  85. //修改设备状态
  86. validation.T_state = validationtool.ValidationToolStateStockIn
  87. cols := []string{"t_state"}
  88. if len(tool.T_remark) != 0 {
  89. validation.T_remark = tool.T_remark
  90. cols = append(cols, "T_remark")
  91. } else {
  92. validation.T_remark = ""
  93. cols = append(cols, "T_remark")
  94. }
  95. if len(tool.Validationnumber) != 0 {
  96. validation.Validationnumber = tool.Validationnumber
  97. cols = append(cols, "validationnumber")
  98. }
  99. validation.LendUser = ""
  100. cols = append(cols, "LendUser")
  101. validation.T_project = ""
  102. cols = append(cols, "T_project")
  103. err = vali.UpdateValidationTool(validation, cols...)
  104. if err != nil {
  105. o.Rollback() // 回滚事务
  106. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
  107. c.ServeJSON()
  108. return
  109. }
  110. _, err = valiRecord.ADD(validation, BatchNumber)
  111. if err != nil {
  112. o.Rollback() // 回滚事务
  113. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  114. c.ServeJSON()
  115. return
  116. }
  117. o.Commit() // 提交事务
  118. c.Data["json"] = lib.JSONS{Code: 200, Msg: "入库成功!", Data: nil}
  119. c.ServeJSON()
  120. return
  121. }
  122. NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "添加", ValidationList)
  123. }
  124. func (c *ValidationController) ValidationList() {
  125. // 分页参数 初始化
  126. page, _ := c.GetInt("page")
  127. if page < 1 {
  128. page = 1
  129. }
  130. page_z, _ := c.GetInt("page_z")
  131. if page_z < 1 {
  132. page_z = conf.Page_size
  133. }
  134. T_state := c.GetString("T_state")
  135. validationnumber := c.GetString("Validationnumber")
  136. T_sn := c.GetString("T_sn")
  137. t_iccid := c.GetString("t_iccid")
  138. t_imei := c.GetString("t_imei")
  139. LendUser := c.GetString("LendUser")
  140. T_project := c.GetString("T_project")
  141. T_class := c.GetString("T_class")
  142. vali := validationtool.NewValidationTool(orm.NewOrm())
  143. R_List, R_cnt := vali.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, T_class, page, page_z)
  144. var r_jsons lib.R_JSONS
  145. r_jsons.Num = R_cnt
  146. r_jsons.Data = R_List
  147. r_jsons.Page = page
  148. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  149. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  150. c.ServeJSON()
  151. return
  152. }
  153. func (c *ValidationController) DeleteValidationTool() {
  154. id := c.GetString("t_sn")
  155. if len(id) <= 0 {
  156. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "t_sn不能为空!", Data: nil}
  157. c.ServeJSON()
  158. return
  159. }
  160. vali := validationtool.NewValidationTool(orm.NewOrm())
  161. err := vali.DeleteValidationTool(id)
  162. if err != nil {
  163. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "删除失败!", Data: nil}
  164. c.ServeJSON()
  165. return
  166. }
  167. c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除成功!", Data: nil}
  168. c.ServeJSON()
  169. }
  170. // 出库
  171. func (c *ValidationController) UpdateValidationTool() {
  172. var lendValidationList []validationtool.LendValidationTool
  173. err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
  174. if err != nil {
  175. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  176. c.ServeJSON()
  177. return
  178. }
  179. o := orm.NewOrm()
  180. o.Begin()
  181. vali := validationtool.NewValidationTool(o)
  182. valiRecord := validationtool.NewValidationToolRecord(o)
  183. BatchNumber := time.Now().Format("2006-01-02 15:04:05")
  184. for _, tool := range lendValidationList {
  185. if len(tool.T_sn) <= 0 {
  186. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  187. c.ServeJSON()
  188. return
  189. }
  190. validation, err2 := vali.ReadValidationBytSn(tool.T_sn)
  191. sprintf := fmt.Sprintf("当前sn:%v 未入库", tool.T_sn)
  192. if err2 != nil || validation.T_state != validationtool.ValidationToolStateStockIn {
  193. o.Rollback()
  194. c.Data["json"] = lib.JSONS{Code: 1201, Msg: sprintf, Data: nil}
  195. c.ServeJSON()
  196. return
  197. }
  198. //修改设备状态
  199. validation.T_state = validationtool.ValidationToolStateStockOut
  200. cols := []string{"t_state"}
  201. if len(tool.T_remark) != 0 {
  202. validation.T_remark = tool.T_remark
  203. cols = append(cols, "T_remark")
  204. }
  205. if len(tool.Validationnumber) != 0 {
  206. validation.Validationnumber = tool.Validationnumber
  207. cols = append(cols, "validationnumber")
  208. }
  209. if len(tool.LendUser) != 0 {
  210. validation.LendUser = tool.LendUser
  211. cols = append(cols, "LendUser")
  212. }
  213. if len(tool.T_project) != 0 {
  214. validation.T_project = tool.T_project
  215. cols = append(cols, "T_project")
  216. }
  217. err = vali.UpdateValidationTool(validation, cols...)
  218. if err != nil {
  219. o.Rollback()
  220. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  221. c.ServeJSON()
  222. return
  223. }
  224. _, err = valiRecord.ADD(validation, BatchNumber)
  225. if err != nil {
  226. o.Rollback() // 回滚事务
  227. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  228. c.ServeJSON()
  229. return
  230. }
  231. }
  232. err = o.Commit() // 提交事务
  233. if err != nil {
  234. o.Rollback() // 回滚事务
  235. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  236. c.ServeJSON()
  237. return
  238. }
  239. NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "出库", lendValidationList)
  240. c.Data["json"] = lib.JSONS{Code: 200, Msg: "修改成功!", Data: nil}
  241. c.ServeJSON()
  242. return
  243. }
  244. // 报废
  245. func (c *ValidationController) ScrapValidationTool() {
  246. var lendValidationList []validationtool.LendValidationTool
  247. err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
  248. if err != nil {
  249. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  250. c.ServeJSON()
  251. return
  252. }
  253. o := orm.NewOrm()
  254. vali := validationtool.NewValidationTool(o)
  255. valiRecord := validationtool.NewValidationToolRecord(o)
  256. BatchNumber := time.Now().Format("2006-01-02 15:04:05")
  257. o.Begin()
  258. for _, tool := range lendValidationList {
  259. if len(tool.T_sn) <= 0 {
  260. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  261. c.ServeJSON()
  262. return
  263. }
  264. validation, errs := vali.ReadValidationBytSn(tool.T_sn)
  265. if errs != nil {
  266. o.Rollback()
  267. if errs.Error() == orm.ErrNoRows.Error() {
  268. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("当前sn:%v 未入库", tool.T_sn), Data: nil}
  269. c.ServeJSON()
  270. return
  271. } else {
  272. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("查询sn:%v 失败", tool.T_sn), Data: nil}
  273. c.ServeJSON()
  274. return
  275. }
  276. }
  277. //修改设备状态
  278. validation.T_state = validationtool.ValidationToolStateStockScrap
  279. cols := []string{"t_state"}
  280. if len(tool.T_remark) != 0 {
  281. validation.T_remark = tool.T_remark
  282. cols = append(cols, "T_remark")
  283. }
  284. if len(tool.Validationnumber) != 0 {
  285. validation.Validationnumber = tool.Validationnumber
  286. cols = append(cols, "validationnumber")
  287. }
  288. if len(tool.LendUser) != 0 {
  289. validation.LendUser = tool.LendUser
  290. cols = append(cols, "LendUser")
  291. }
  292. if len(tool.T_project) != 0 {
  293. validation.T_project = tool.T_project
  294. cols = append(cols, "T_project")
  295. }
  296. err = vali.UpdateValidationTool(validation, cols...)
  297. if err != nil {
  298. o.Rollback()
  299. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  300. c.ServeJSON()
  301. return
  302. }
  303. _, err = valiRecord.ADD(validation, BatchNumber)
  304. if err != nil {
  305. o.Rollback() // 回滚事务
  306. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  307. c.ServeJSON()
  308. return
  309. }
  310. }
  311. err = o.Commit() // 提交事务
  312. if err != nil {
  313. o.Rollback() // 回滚事务
  314. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  315. c.ServeJSON()
  316. return
  317. }
  318. NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "报废", lendValidationList)
  319. c.Data["json"] = lib.JSONS{Code: 200, Msg: "提交成功!", Data: nil}
  320. c.ServeJSON()
  321. return
  322. }
  323. // 维修
  324. func (c *ValidationController) RepairValidationTool() {
  325. var lendValidationList []validationtool.LendValidationTool
  326. err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
  327. if err != nil {
  328. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  329. c.ServeJSON()
  330. return
  331. }
  332. o := orm.NewOrm()
  333. o.Begin()
  334. vali := validationtool.NewValidationTool(o)
  335. valiRecord := validationtool.NewValidationToolRecord(o)
  336. BatchNumber := time.Now().Format("2006-01-02 15:04:05")
  337. for _, tool := range lendValidationList {
  338. if len(tool.T_sn) <= 0 {
  339. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  340. c.ServeJSON()
  341. return
  342. }
  343. validation, errs := vali.ReadValidationBytSn(tool.T_sn)
  344. if errs != nil {
  345. o.Rollback()
  346. if errs.Error() == orm.ErrNoRows.Error() {
  347. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("当前sn:%v 未入库", tool.T_sn), Data: nil}
  348. c.ServeJSON()
  349. return
  350. } else {
  351. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("查询sn:%v 失败", tool.T_sn), Data: nil}
  352. c.ServeJSON()
  353. return
  354. }
  355. }
  356. //修改设备状态
  357. validation.T_state = validationtool.ValidationToolStateStockRepair
  358. cols := []string{"t_state"}
  359. if len(tool.T_remark) != 0 {
  360. validation.T_remark = tool.T_remark
  361. cols = append(cols, "T_remark")
  362. }
  363. if len(tool.Validationnumber) != 0 {
  364. validation.Validationnumber = tool.Validationnumber
  365. cols = append(cols, "validationnumber")
  366. }
  367. if len(tool.LendUser) != 0 {
  368. validation.LendUser = tool.LendUser
  369. cols = append(cols, "LendUser")
  370. }
  371. if len(tool.T_project) != 0 {
  372. validation.T_project = tool.T_project
  373. cols = append(cols, "T_project")
  374. }
  375. err = vali.UpdateValidationTool(validation, cols...)
  376. if err != nil {
  377. o.Rollback()
  378. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  379. c.ServeJSON()
  380. return
  381. }
  382. _, err = valiRecord.ADD(validation, BatchNumber)
  383. if err != nil {
  384. o.Rollback() // 回滚事务
  385. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  386. c.ServeJSON()
  387. return
  388. }
  389. }
  390. err = o.Commit() // 提交事务
  391. NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "维修", lendValidationList)
  392. if err != nil {
  393. o.Rollback() // 回滚事务
  394. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  395. c.ServeJSON()
  396. return
  397. }
  398. c.Data["json"] = lib.JSONS{Code: 200, Msg: "提交成功!", Data: nil}
  399. c.ServeJSON()
  400. return
  401. }
  402. // GetValidationToolBySn 根据sn获取设备信息
  403. func (c *ValidationController) GetValidationToolBySn() {
  404. sn := c.GetString("sn")
  405. if len(sn) <= 0 {
  406. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
  407. c.ServeJSON()
  408. return
  409. }
  410. vali := validationtool.NewValidationTool(orm.NewOrm())
  411. r, err := vali.ReadValidationBytSn(sn)
  412. if err != nil {
  413. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  414. c.ServeJSON()
  415. return
  416. }
  417. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: r}
  418. c.ServeJSON()
  419. }
  420. // UpdateValidationToolBySn 根据sn修改设备信息
  421. func (c *ValidationController) UpdateValidationToolBySn() {
  422. sn := c.GetString("T_sn")
  423. Id := c.GetString("Id")
  424. Validationnumber := c.GetString("Validationnumber")
  425. T_remark := c.GetString("T_remark")
  426. T_state, _ := c.GetInt("T_state")
  427. T_class, _ := c.GetInt("T_class")
  428. if len(sn) <= 0 {
  429. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
  430. c.ServeJSON()
  431. return
  432. }
  433. if len(Id) <= 0 {
  434. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "Id不能为空!", Data: nil}
  435. c.ServeJSON()
  436. return
  437. }
  438. vali := validationtool.NewValidationTool(orm.NewOrm())
  439. valiRecord := validationtool.NewValidationToolRecord(orm.NewOrm())
  440. r, err := vali.ReadValidationById(Id)
  441. if err != nil {
  442. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  443. c.ServeJSON()
  444. return
  445. }
  446. cols := []string{}
  447. if len(Validationnumber) > 0 {
  448. r.Validationnumber = Validationnumber
  449. cols = append(cols, "Validationnumber")
  450. }
  451. if len(T_remark) > 0 {
  452. r.T_remark = T_remark
  453. cols = append(cols, "T_remark")
  454. }
  455. if T_state > 0 {
  456. r.T_state = T_state
  457. cols = append(cols, "T_state")
  458. }
  459. if T_class > 0 {
  460. r.T_class = T_class
  461. cols = append(cols, "T_class")
  462. }
  463. if !strings.EqualFold(r.T_sn, sn) {
  464. r.T_sn = sn
  465. user := Stock.Read_MqttUser(sn)
  466. r.T_iccid = user.Iccid
  467. r.T_imei = user.Imei
  468. cols = append(cols, "T_sn", "T_iccid", "T_imei")
  469. }
  470. err = vali.UpdateValidationTool(r, cols...)
  471. if err != nil {
  472. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  473. c.ServeJSON()
  474. return
  475. }
  476. BatchNumber := time.Now().Format("2006-01-02 15:04:05")
  477. _, err = valiRecord.ADD(r, BatchNumber)
  478. if err != nil {
  479. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "保存历史记录失败!", Data: nil}
  480. c.ServeJSON()
  481. return
  482. }
  483. NatsServer.AddUserLogs(c.User.T_uuid, "验证工具", "通过sn修改验证工具", r)
  484. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
  485. c.ServeJSON()
  486. }
  487. func (c *ValidationController) ImportExcel() {
  488. // 获取上传的文件
  489. vali := validationtool.NewValidationTool(orm.NewOrm())
  490. f, _, err := c.GetFile("excelFile")
  491. if err != nil {
  492. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
  493. c.ServeJSON()
  494. return
  495. }
  496. defer f.Close()
  497. // 读取 Excel 文件
  498. reader, err := excelize.OpenReader(f)
  499. if err != nil {
  500. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "打开文件失败!", Data: nil}
  501. c.ServeJSON()
  502. return
  503. }
  504. defer func() {
  505. if err := reader.Close(); err != nil {
  506. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "关闭文件失败!", Data: nil}
  507. c.ServeJSON()
  508. return
  509. }
  510. }()
  511. // 读取工作表中的数据
  512. rows, err := reader.GetRows("Sheet1")
  513. if err != nil {
  514. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
  515. c.ServeJSON()
  516. return
  517. }
  518. for i, row := range rows {
  519. if i == 0 {
  520. continue // 忽略第一排
  521. }
  522. if len(row) >= 4 {
  523. atoi, _ := strconv.Atoi(row[2])
  524. isout, _ := strconv.Atoi(row[3])
  525. user := Stock.Read_MqttUser(row[0])
  526. tool := validationtool.ValidationTool{
  527. T_sn: row[0],
  528. T_class: atoi,
  529. Validationnumber: row[1],
  530. T_uuid: c.User.T_uuid,
  531. T_state: isout,
  532. T_iccid: user.Iccid,
  533. T_imei: user.Imei,
  534. }
  535. _, err := vali.ADDValidationTool(tool)
  536. if err != nil {
  537. sprintf := fmt.Sprintf("设备sn添加失败%v", row[0])
  538. c.Data["json"] = lib.JSONS{Code: 1201, Msg: sprintf, Data: nil}
  539. c.ServeJSON()
  540. return
  541. }
  542. }
  543. }
  544. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
  545. c.ServeJSON()
  546. }
  547. func (c *ValidationController) ExportValidationListExcel() {
  548. // 分页参数 初始化
  549. page, _ := c.GetInt("page")
  550. if page < 1 {
  551. page = 1
  552. }
  553. page_z, _ := c.GetInt("page_z")
  554. if page_z < 1 {
  555. page_z = 9999
  556. }
  557. T_state := c.GetString("T_state")
  558. validationnumber := c.GetString("validationnumber")
  559. T_sn := c.GetString("T_sn")
  560. t_iccid := c.GetString("t_iccid")
  561. t_imei := c.GetString("t_imei")
  562. LendUser := c.GetString("LendUser")
  563. T_project := c.GetString("T_project")
  564. T_class := c.GetString("T_class")
  565. vali := validationtool.NewValidationTool(orm.NewOrm())
  566. R_List, _ := vali.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, T_class, page, page_z)
  567. f := excelize.NewFile() //设置单元格值
  568. // 这里设置表头ÒÒ
  569. f.SetCellValue("Sheet1", "A1", "序号")
  570. f.SetCellValue("Sheet1", "B1", "SN")
  571. f.SetCellValue("Sheet1", "C1", "编号")
  572. f.SetCellValue("Sheet1", "D1", "模组imei")
  573. f.SetCellValue("Sheet1", "E1", "物联网卡号")
  574. f.SetCellValue("Sheet1", "F1", "设备类型")
  575. f.SetCellValue("Sheet1", "G1", "借出人")
  576. f.SetCellValue("Sheet1", "H1", "借出项目")
  577. f.SetCellValue("Sheet1", "I1", "备注")
  578. // 设置列宽
  579. f.SetColWidth("Sheet1", "A", "A", 6)
  580. f.SetColWidth("Sheet1", "B", "B", 20)
  581. f.SetColWidth("Sheet1", "C", "C", 15)
  582. f.SetColWidth("Sheet1", "D", "D", 15)
  583. f.SetColWidth("Sheet1", "E", "E", 30)
  584. f.SetColWidth("Sheet1", "F", "F", 15)
  585. f.SetColWidth("Sheet1", "G", "G", 15)
  586. f.SetColWidth("Sheet1", "H", "H", 30)
  587. f.SetColWidth("Sheet1", "I", "J", 15)
  588. line := 1
  589. for i, v := range R_List {
  590. line++
  591. r, _ := Basic.Read_ProductClass_ById(v.T_class)
  592. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
  593. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  594. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.Validationnumber)
  595. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_imei)
  596. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_iccid)
  597. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), r.T_name)
  598. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.LendUser)
  599. f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), v.T_project)
  600. f.SetCellValue("Sheet1", fmt.Sprintf("I%d", line), v.T_remark)
  601. }
  602. timeStr := time.Now().Format("20060102150405")
  603. fileName := fmt.Sprintf("验证工具记录表%v.xlsx", timeStr)
  604. filePath := "ofile/" + "验证工具记录表" + timeStr + ".xlsx"
  605. // 保存文件
  606. if err := f.SaveAs(filePath); err != nil {
  607. logs.Error("文件失败:", err)
  608. }
  609. defer func() {
  610. os.Remove(filePath)
  611. }()
  612. c.Ctx.Output.Header("Content-Type", "application/vnd.ms-excel;charset=utf8")
  613. c.Ctx.Output.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName))
  614. c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
  615. c.Ctx.Output.Download(filePath, fileName)
  616. }
  617. func (c *ValidationController) Read_ValidationClass_List() {
  618. // 分页参数 初始化
  619. page, _ := c.GetInt("page")
  620. if page < 1 {
  621. page = 1
  622. }
  623. page_z, _ := c.GetInt("page_z")
  624. if page_z < 1 {
  625. page_z = conf.Page_size
  626. }
  627. // 查询
  628. T_name := c.GetString("T_name")
  629. R_List, R_cnt := validationtool.Read_ValidationToolClass_List(T_name, page, page_z)
  630. var r_jsons lib.R_JSONS
  631. r_jsons.Num = R_cnt
  632. r_jsons.Data = R_List
  633. r_jsons.Page = page
  634. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  635. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  636. c.ServeJSON()
  637. return
  638. }
  639. // 统计验证工具
  640. func (c *ValidationController) Validation_stat() {
  641. // 分页参数 初始化
  642. page, _ := c.GetInt("page")
  643. if page < 1 {
  644. page = 1
  645. }
  646. page_z, _ := c.GetInt("page_z")
  647. if page_z < 1 {
  648. page_z = conf.Page_size
  649. }
  650. LendUser := c.GetString("LendUser")
  651. T_project := c.GetString("T_project")
  652. vali := validationtool.NewValidationTool(orm.NewOrm())
  653. R_List, R_cnt := vali.Validation_stat(LendUser, T_project, page, page_z)
  654. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.R_JSONS{Data: R_List, Num: R_cnt}}
  655. c.ServeJSON()
  656. return
  657. }
  658. func (c *ValidationController) User_List() {
  659. var r_jsons lib.R_JSONS
  660. // 分页参数 初始化
  661. page, _ := c.GetInt("page")
  662. if page < 1 {
  663. page = 1
  664. }
  665. page_z, _ := c.GetInt("page_z")
  666. if page_z < 1 {
  667. page_z = conf.Page_size
  668. }
  669. T_name := c.GetString("T_name")
  670. vali := validationtool.NewValidationTool(orm.NewOrm())
  671. R_List, R_cnt := vali.Read_lend_user_List(T_name, page, page_z)
  672. for i := 0; i < len(R_List); i++ {
  673. if R_List[i].LendUser == "" {
  674. R_List[i].LendUser = "未出库"
  675. }
  676. }
  677. r_jsons.Num = R_cnt
  678. r_jsons.Data = R_List
  679. r_jsons.Page = page
  680. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  681. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  682. c.ServeJSON()
  683. return
  684. }
  685. func (c *ValidationController) Record_List() {
  686. // 分页参数 初始化
  687. page, _ := c.GetInt("page")
  688. if page < 1 {
  689. page = 1
  690. }
  691. page_z, _ := c.GetInt("page_z")
  692. if page_z < 1 {
  693. page_z = conf.Page_size
  694. }
  695. T_state := c.GetString("T_state")
  696. validationnumber := c.GetString("Validationnumber")
  697. T_sn := c.GetString("T_sn")
  698. t_iccid := c.GetString("t_iccid")
  699. t_imei := c.GetString("t_imei")
  700. LendUser := c.GetString("LendUser")
  701. T_project := c.GetString("T_project")
  702. T_class := c.GetString("T_class")
  703. valiRecord := validationtool.NewValidationToolRecord(orm.NewOrm())
  704. R_List, R_cnt := valiRecord.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, T_class, page, page_z)
  705. var r_jsons lib.R_JSONS
  706. r_jsons.Num = R_cnt
  707. r_jsons.Data = R_List
  708. r_jsons.Page = page
  709. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  710. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  711. c.ServeJSON()
  712. return
  713. }
  714. func (c *ValidationController) Operation_List() {
  715. // 分页参数 初始化
  716. page, _ := c.GetInt("page")
  717. if page < 1 {
  718. page = 1
  719. }
  720. page_z, _ := c.GetInt("page_z")
  721. if page_z < 1 {
  722. page_z = conf.Page_size
  723. }
  724. T_state := c.GetString("T_state")
  725. T_sn := c.GetString("T_sn")
  726. LendUser := c.GetString("LendUser")
  727. T_project := c.GetString("T_project")
  728. valiRecord := validationtool.NewValidationToolRecord(orm.NewOrm())
  729. R_List, R_cnt := valiRecord.Read_Operation_List(T_sn, T_state, LendUser, T_project, page, page_z)
  730. var r_jsons lib.R_JSONS
  731. r_jsons.Num = R_cnt
  732. r_jsons.Data = R_List
  733. r_jsons.Page = page
  734. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  735. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  736. c.ServeJSON()
  737. return
  738. }