Validation.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  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. con["t_project_log"] = r.T_project_log + tool.T_project
  194. }
  195. con["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  196. err = vali.UpdateValidationTool(tool.T_sn, con)
  197. if err != nil {
  198. o.Rollback()
  199. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  200. c.ServeJSON()
  201. return
  202. }
  203. }
  204. err = o.Commit() // 提交事务
  205. if err != nil {
  206. o.Rollback() // 回滚事务
  207. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  208. c.ServeJSON()
  209. return
  210. }
  211. c.Data["json"] = lib.JSONS{Code: 200, Msg: "修改成功!", Data: nil}
  212. c.ServeJSON()
  213. return
  214. }
  215. // 报废
  216. func (c *ValidationController) ScrapValidationTool() {
  217. var lendValidationList []validationtool.LendValidationTool
  218. err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
  219. if err != nil {
  220. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  221. c.ServeJSON()
  222. return
  223. }
  224. vali := validationtool.NewValidationTool(orm.NewOrm())
  225. o := orm.NewOrm()
  226. o.Begin()
  227. for _, tool := range lendValidationList {
  228. if len(tool.T_sn) <= 0 {
  229. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  230. c.ServeJSON()
  231. return
  232. }
  233. _, errs := vali.ReadValidationBytSn(tool.T_sn)
  234. if errs != nil {
  235. o.Rollback()
  236. if errs.Error() == orm.ErrNoRows.Error() {
  237. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("当前sn:%v 未入库", tool.T_sn), Data: nil}
  238. c.ServeJSON()
  239. return
  240. } else {
  241. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("查询sn:%v 失败", tool.T_sn), Data: nil}
  242. c.ServeJSON()
  243. return
  244. }
  245. }
  246. //修改设备状态
  247. con := make(map[string]string)
  248. if len(tool.T_remark) != 0 {
  249. con["t_remark"] = tool.T_remark
  250. }
  251. if len(tool.Validationnumber) != 0 {
  252. con["validationnumber"] = tool.Validationnumber
  253. }
  254. con["t_state"] = "4"
  255. if len(tool.LendUser) != 0 {
  256. con["lend_user"] = tool.LendUser
  257. }
  258. if len(tool.T_project) != 0 {
  259. con["t_project"] = tool.T_project
  260. }
  261. con["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  262. err = vali.UpdateValidationTool(tool.T_sn, con)
  263. if err != nil {
  264. o.Rollback()
  265. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  266. c.ServeJSON()
  267. return
  268. }
  269. }
  270. err = o.Commit() // 提交事务
  271. if err != nil {
  272. o.Rollback() // 回滚事务
  273. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  274. c.ServeJSON()
  275. return
  276. }
  277. c.Data["json"] = lib.JSONS{Code: 200, Msg: "提交成功!", Data: nil}
  278. c.ServeJSON()
  279. return
  280. }
  281. // 维修
  282. func (c *ValidationController) RepairValidationTool() {
  283. var lendValidationList []validationtool.LendValidationTool
  284. err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
  285. if err != nil {
  286. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
  287. c.ServeJSON()
  288. return
  289. }
  290. vali := validationtool.NewValidationTool(orm.NewOrm())
  291. o := orm.NewOrm()
  292. o.Begin()
  293. for _, tool := range lendValidationList {
  294. if len(tool.T_sn) <= 0 {
  295. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
  296. c.ServeJSON()
  297. return
  298. }
  299. _, errs := vali.ReadValidationBytSn(tool.T_sn)
  300. if errs != nil {
  301. o.Rollback()
  302. if errs.Error() == orm.ErrNoRows.Error() {
  303. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("当前sn:%v 未入库", tool.T_sn), Data: nil}
  304. c.ServeJSON()
  305. return
  306. } else {
  307. c.Data["json"] = lib.JSONS{Code: 1201, Msg: fmt.Sprintf("查询sn:%v 失败", tool.T_sn), Data: nil}
  308. c.ServeJSON()
  309. return
  310. }
  311. }
  312. //修改设备状态
  313. con := make(map[string]string)
  314. if len(tool.T_remark) != 0 {
  315. con["t_remark"] = tool.T_remark
  316. }
  317. if len(tool.Validationnumber) != 0 {
  318. con["validationnumber"] = tool.Validationnumber
  319. }
  320. con["t_state"] = "3"
  321. if len(tool.LendUser) != 0 {
  322. con["lend_user"] = tool.LendUser
  323. }
  324. if len(tool.T_project) != 0 {
  325. con["t_project"] = tool.T_project
  326. }
  327. con["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  328. err = vali.UpdateValidationTool(tool.T_sn, con)
  329. if err != nil {
  330. o.Rollback()
  331. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
  332. c.ServeJSON()
  333. return
  334. }
  335. }
  336. err = o.Commit() // 提交事务
  337. if err != nil {
  338. o.Rollback() // 回滚事务
  339. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "提交事务失败!", Data: nil}
  340. c.ServeJSON()
  341. return
  342. }
  343. c.Data["json"] = lib.JSONS{Code: 200, Msg: "提交成功!", Data: nil}
  344. c.ServeJSON()
  345. return
  346. }
  347. // GetValidationToolBySn 根据sn获取设备信息
  348. func (c *ValidationController) GetValidationToolBySn() {
  349. sn := c.GetString("sn")
  350. if len(sn) <= 0 {
  351. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
  352. c.ServeJSON()
  353. return
  354. }
  355. vali := validationtool.NewValidationTool(orm.NewOrm())
  356. r, err := vali.ReadValidationBytSn(sn)
  357. if err != nil {
  358. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  359. c.ServeJSON()
  360. return
  361. }
  362. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: r}
  363. c.ServeJSON()
  364. }
  365. // UpdateValidationToolBySn 根据sn修改设备信息
  366. func (c *ValidationController) UpdateValidationToolBySn() {
  367. sn := c.GetString("T_sn")
  368. Id := c.GetString("Id")
  369. Validationnumber := c.GetString("Validationnumber")
  370. T_remark := c.GetString("T_remark")
  371. T_state := c.GetString("T_state")
  372. T_class := c.GetString("T_class")
  373. if len(sn) <= 0 {
  374. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
  375. c.ServeJSON()
  376. return
  377. }
  378. if len(Id) <= 0 {
  379. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "Id不能为空!", Data: nil}
  380. c.ServeJSON()
  381. return
  382. }
  383. con := make(map[string]string)
  384. if len(Validationnumber) > 0 {
  385. con["validationnumber"] = Validationnumber
  386. }
  387. if len(T_remark) > 0 {
  388. con["t_remark"] = T_remark
  389. }
  390. if len(T_state) > 0 {
  391. con["t_state"] = T_state
  392. }
  393. if len(T_class) > 0 {
  394. con["t_class"] = T_class
  395. }
  396. con["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  397. vali := validationtool.NewValidationTool(orm.NewOrm())
  398. r, err := vali.ReadValidationById(Id)
  399. if err != nil {
  400. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  401. c.ServeJSON()
  402. return
  403. }
  404. if !strings.EqualFold(r.T_sn, sn) {
  405. con["t_sn"] = sn
  406. user := Stock.Read_MqttUser(sn)
  407. con["t_iccid"] = user.Iccid
  408. con["t_imei"] = user.Imei
  409. }
  410. err = vali.UpdateValidationToolById(Id, con)
  411. if err != nil {
  412. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
  413. c.ServeJSON()
  414. return
  415. }
  416. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
  417. c.ServeJSON()
  418. }
  419. func (c *ValidationController) ImportExcel() {
  420. // 获取上传的文件
  421. vali := validationtool.NewValidationTool(orm.NewOrm())
  422. f, _, err := c.GetFile("excelFile")
  423. if err != nil {
  424. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
  425. c.ServeJSON()
  426. return
  427. }
  428. defer f.Close()
  429. // 读取 Excel 文件
  430. reader, err := excelize.OpenReader(f)
  431. if err != nil {
  432. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "打开文件失败!", Data: nil}
  433. c.ServeJSON()
  434. return
  435. }
  436. defer func() {
  437. if err := reader.Close(); err != nil {
  438. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "关闭文件失败!", Data: nil}
  439. c.ServeJSON()
  440. return
  441. }
  442. }()
  443. // 读取工作表中的数据
  444. rows, err := reader.GetRows("Sheet1")
  445. if err != nil {
  446. c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
  447. c.ServeJSON()
  448. return
  449. }
  450. for i, row := range rows {
  451. if i == 0 {
  452. continue // 忽略第一排
  453. }
  454. if len(row) >= 4 {
  455. atoi, _ := strconv.Atoi(row[2])
  456. isout, _ := strconv.Atoi(row[3])
  457. user := Stock.Read_MqttUser(row[0])
  458. tool := validationtool.ValidationTool{
  459. T_sn: row[0],
  460. T_class: atoi,
  461. Validationnumber: row[1],
  462. T_uuid: c.User.T_uuid,
  463. T_state: isout,
  464. T_iccid: user.Iccid,
  465. T_imei: user.Imei,
  466. }
  467. _, err := vali.ADDValidationTool(tool)
  468. if err != nil {
  469. sprintf := fmt.Sprintf("设备sn添加失败%v", row[0])
  470. c.Data["json"] = lib.JSONS{Code: 1201, Msg: sprintf, Data: nil}
  471. c.ServeJSON()
  472. return
  473. }
  474. }
  475. }
  476. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
  477. c.ServeJSON()
  478. }
  479. func (c *ValidationController) ExportValidationListExcel() {
  480. // 分页参数 初始化
  481. page, _ := c.GetInt("page")
  482. if page < 1 {
  483. page = 1
  484. }
  485. page_z, _ := c.GetInt("page_z")
  486. if page_z < 1 {
  487. page_z = 9999
  488. }
  489. T_state := c.GetString("T_state")
  490. validationnumber := c.GetString("validationnumber")
  491. T_sn := c.GetString("T_sn")
  492. t_iccid := c.GetString("t_iccid")
  493. t_imei := c.GetString("t_imei")
  494. LendUser := c.GetString("LendUser")
  495. T_project := c.GetString("T_project")
  496. T_class := c.GetString("T_class")
  497. vali := validationtool.NewValidationTool(orm.NewOrm())
  498. R_List, _ := vali.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, T_class, page, page_z)
  499. f := excelize.NewFile() //设置单元格值
  500. // 这里设置表头ÒÒ
  501. f.SetCellValue("Sheet1", "A1", "序号")
  502. f.SetCellValue("Sheet1", "B1", "SN")
  503. f.SetCellValue("Sheet1", "C1", "编号")
  504. f.SetCellValue("Sheet1", "D1", "模组imei")
  505. f.SetCellValue("Sheet1", "E1", "物联网卡号")
  506. f.SetCellValue("Sheet1", "F1", "设备类型")
  507. f.SetCellValue("Sheet1", "G1", "借出人")
  508. f.SetCellValue("Sheet1", "H1", "借出项目")
  509. f.SetCellValue("Sheet1", "I1", "备注")
  510. // 设置列宽
  511. f.SetColWidth("Sheet1", "A", "A", 6)
  512. f.SetColWidth("Sheet1", "B", "B", 20)
  513. f.SetColWidth("Sheet1", "C", "C", 15)
  514. f.SetColWidth("Sheet1", "D", "D", 15)
  515. f.SetColWidth("Sheet1", "E", "E", 30)
  516. f.SetColWidth("Sheet1", "F", "F", 15)
  517. f.SetColWidth("Sheet1", "G", "G", 15)
  518. f.SetColWidth("Sheet1", "H", "H", 30)
  519. f.SetColWidth("Sheet1", "I", "J", 15)
  520. line := 1
  521. for i, v := range R_List {
  522. line++
  523. r, _ := Basic.Read_ProductClass_ById(v.T_class)
  524. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
  525. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  526. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.Validationnumber)
  527. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_imei)
  528. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_iccid)
  529. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), r.T_name)
  530. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.LendUser)
  531. f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), v.T_project)
  532. f.SetCellValue("Sheet1", fmt.Sprintf("I%d", line), v.T_remark)
  533. }
  534. timeStr := time.Now().Format("20060102150405")
  535. fileName := fmt.Sprintf("验证工具记录表%v.xlsx", timeStr)
  536. filePath := "ofile/" + "验证工具记录表" + timeStr + ".xlsx"
  537. // 保存文件
  538. if err := f.SaveAs(filePath); err != nil {
  539. logs.Error("文件失败:", err)
  540. }
  541. defer func() {
  542. os.Remove(filePath)
  543. }()
  544. c.Ctx.Output.Header("Content-Type", "application/vnd.ms-excel;charset=utf8")
  545. c.Ctx.Output.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName))
  546. c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
  547. c.Ctx.Output.Download(filePath, fileName)
  548. }
  549. func (c *ValidationController) Read_ValidationClass_List() {
  550. // 分页参数 初始化
  551. page, _ := c.GetInt("page")
  552. if page < 1 {
  553. page = 1
  554. }
  555. page_z, _ := c.GetInt("page_z")
  556. if page_z < 1 {
  557. page_z = conf.Page_size
  558. }
  559. // 查询
  560. T_name := c.GetString("T_name")
  561. R_List, R_cnt := validationtool.Read_ValidationToolClass_List(T_name, page, page_z)
  562. var r_jsons lib.R_JSONS
  563. r_jsons.Num = R_cnt
  564. r_jsons.Data = R_List
  565. r_jsons.Page = page
  566. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  567. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  568. c.ServeJSON()
  569. return
  570. }
  571. // 统计验证工具
  572. func (c *ValidationController) Validation_stat() {
  573. // 分页参数 初始化
  574. page, _ := c.GetInt("page")
  575. if page < 1 {
  576. page = 1
  577. }
  578. page_z, _ := c.GetInt("page_z")
  579. if page_z < 1 {
  580. page_z = conf.Page_size
  581. }
  582. LendUser := c.GetString("LendUser")
  583. T_project := c.GetString("T_project")
  584. vali := validationtool.NewValidationTool(orm.NewOrm())
  585. R_List, R_cnt := vali.Validation_stat(LendUser, T_project, page, page_z)
  586. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.R_JSONS{Data: R_List, Num: R_cnt}}
  587. c.ServeJSON()
  588. return
  589. }
  590. func (c *ValidationController) User_List() {
  591. var r_jsons lib.R_JSONS
  592. // 分页参数 初始化
  593. page, _ := c.GetInt("page")
  594. if page < 1 {
  595. page = 1
  596. }
  597. page_z, _ := c.GetInt("page_z")
  598. if page_z < 1 {
  599. page_z = conf.Page_size
  600. }
  601. T_name := c.GetString("T_name")
  602. vali := validationtool.NewValidationTool(orm.NewOrm())
  603. R_List, R_cnt := vali.Read_lend_user_List(T_name, page, page_z)
  604. for i := 0; i < len(R_List); i++ {
  605. if R_List[i].LendUser == "" {
  606. R_List[i].LendUser = "未出库"
  607. }
  608. }
  609. r_jsons.Num = R_cnt
  610. r_jsons.Data = R_List
  611. r_jsons.Page = page
  612. r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
  613. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  614. c.ServeJSON()
  615. return
  616. }