Validation.go 18 KB

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