|
@@ -2,7 +2,9 @@ package controllers
|
|
|
|
|
|
import (
|
|
|
"ERP_storage/conf"
|
|
|
+ "ERP_storage/logs"
|
|
|
"ERP_storage/models/Account"
|
|
|
+ "ERP_storage/models/Basic"
|
|
|
"ERP_storage/models/Stock"
|
|
|
"ERP_storage/models/validationtool"
|
|
|
"encoding/json"
|
|
@@ -10,10 +12,15 @@ import (
|
|
|
"fmt"
|
|
|
"github.com/beego/beego/v2/adapter/orm"
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
|
+ "github.com/xuri/excelize/v2"
|
|
|
userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
|
|
|
"gogs.baozhida.cn/zoie/ERP_libs/lib"
|
|
|
"math"
|
|
|
+ "net/url"
|
|
|
+ "os"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
type ValidationController struct {
|
|
@@ -30,14 +37,14 @@ func (c *ValidationController) AddValidation() {
|
|
|
var ValidationList []validationtool.AddValidationTool
|
|
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ValidationList)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "json 序列化失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
for _, tool := range ValidationList {
|
|
|
if len(tool.T_sn) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_sn不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -45,6 +52,7 @@ func (c *ValidationController) AddValidation() {
|
|
|
if err != nil {
|
|
|
if errors.Is(err, orm.ErrNoRows) {
|
|
|
var validataiontool validationtool.ValidationTool
|
|
|
+ atoi, _ := strconv.Atoi(tool.T_class)
|
|
|
user := Stock.Read_MqttUser(tool.T_sn)
|
|
|
validataiontool.T_iccid = user.Iccid
|
|
|
validataiontool.T_imei = user.Imei
|
|
@@ -53,9 +61,10 @@ func (c *ValidationController) AddValidation() {
|
|
|
validataiontool.T_sn = tool.T_sn
|
|
|
validataiontool.T_remark = tool.T_remark
|
|
|
validataiontool.T_state = 2
|
|
|
+ validataiontool.T_class = atoi
|
|
|
_, err := vali.ADDValidationTool(validataiontool)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "入库失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -74,7 +83,7 @@ func (c *ValidationController) AddValidation() {
|
|
|
con["lend_user"] = ""
|
|
|
err = vali.UpdateValidationTool(r.T_sn, con)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "入库失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "入库失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -104,9 +113,10 @@ func (c *ValidationController) ValidationList() {
|
|
|
t_imei := c.GetString("t_imei")
|
|
|
LendUser := c.GetString("LendUser")
|
|
|
T_project := c.GetString("T_project")
|
|
|
+ T_class := c.GetString("T_class")
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
|
|
|
- R_List, R_cnt := vali.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, page, page_z)
|
|
|
+ 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)
|
|
|
|
|
|
var r_jsons lib.R_JSONS
|
|
|
r_jsons.Num = R_cnt
|
|
@@ -121,14 +131,14 @@ func (c *ValidationController) ValidationList() {
|
|
|
func (c *ValidationController) DeleteValidationTool() {
|
|
|
id := c.GetString("t_sn")
|
|
|
if len(id) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "t_sn不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "t_sn不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
err := vali.DeleteValidationTool(id)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "删除失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "删除失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -139,21 +149,21 @@ func (c *ValidationController) UpdateValidationTool() {
|
|
|
var lendValidationList []validationtool.LendValidationTool
|
|
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &lendValidationList)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "json 序列化失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "json 序列化失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
for _, tool := range lendValidationList {
|
|
|
if len(tool.T_sn) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_sn不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "T_sn不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
r, err := vali.ReadValidationBytSn(tool.T_sn)
|
|
|
sprintf := fmt.Sprintf("当前sn:%v 未入库", tool.T_sn)
|
|
|
if err != nil || r.T_state != 2 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: sprintf, Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: sprintf, Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -174,7 +184,7 @@ func (c *ValidationController) UpdateValidationTool() {
|
|
|
}
|
|
|
err = vali.UpdateValidationTool(tool.T_sn, con)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "修改失败!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "修改失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -188,14 +198,14 @@ func (c *ValidationController) UpdateValidationTool() {
|
|
|
func (c *ValidationController) GetValidationToolBySn() {
|
|
|
sn := c.GetString("sn")
|
|
|
if len(sn) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "sn不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
r, err := vali.ReadValidationBytSn(sn)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "当前设备不存在!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -210,13 +220,14 @@ func (c *ValidationController) UpdateValidationToolBySn() {
|
|
|
Validationnumber := c.GetString("Validationnumber")
|
|
|
T_remark := c.GetString("T_remark")
|
|
|
T_state := c.GetString("T_state")
|
|
|
+ T_class := c.GetString("T_class")
|
|
|
if len(sn) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "sn不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "sn不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
if len(Id) <= 0 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id不能为空!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "Id不能为空!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -230,6 +241,9 @@ func (c *ValidationController) UpdateValidationToolBySn() {
|
|
|
if len(T_state) > 0 {
|
|
|
con["t_state"] = T_state
|
|
|
}
|
|
|
+ if len(T_class) > 0 {
|
|
|
+ con["t_class"] = T_class
|
|
|
+ }
|
|
|
vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
r, err := vali.ReadValidationById(Id)
|
|
|
if !strings.EqualFold(r.T_sn, sn) {
|
|
@@ -240,10 +254,147 @@ func (c *ValidationController) UpdateValidationToolBySn() {
|
|
|
}
|
|
|
err = vali.UpdateValidationToolById(Id, con)
|
|
|
if err != nil {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "当前设备不存在!", Data: nil}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "当前设备不存在!", Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+}
|
|
|
+func (c *ValidationController) ImportExecl() {
|
|
|
+ // 获取上传的文件
|
|
|
+ vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
+ f, _, err := c.GetFile("excelFile")
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer f.Close()
|
|
|
+
|
|
|
+ // 读取 Excel 文件
|
|
|
+ reader, err := excelize.OpenReader(f)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "打开文件失败!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
+ defer func() {
|
|
|
+ if err := reader.Close(); err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "关闭文件失败!", Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ // 读取工作表中的数据
|
|
|
+ rows, err := reader.GetRows("Sheet1")
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取文件失败!", Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for i, row := range rows {
|
|
|
+ if i == 0 {
|
|
|
+ continue // 忽略第一排
|
|
|
+ }
|
|
|
+ if len(row) >= 4 {
|
|
|
+ atoi, _ := strconv.Atoi(row[2])
|
|
|
+ isout, _ := strconv.Atoi(row[3])
|
|
|
+ user := Stock.Read_MqttUser(row[0])
|
|
|
+ tool := validationtool.ValidationTool{
|
|
|
+ T_sn: row[0],
|
|
|
+ T_class: atoi,
|
|
|
+ Validationnumber: row[1],
|
|
|
+ T_uuid: c.User.T_uuid,
|
|
|
+ T_state: isout,
|
|
|
+ T_iccid: user.Iccid,
|
|
|
+ T_imei: user.Imei,
|
|
|
+ }
|
|
|
+ _, err := vali.ADDValidationTool(tool)
|
|
|
+ if err != nil {
|
|
|
+ sprintf := fmt.Sprintf("设备sn添加失败%v", row[0])
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 1201, Msg: sprintf, Data: nil}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
|
|
|
c.ServeJSON()
|
|
|
}
|
|
|
+func (c *ValidationController) ExportValidationListExecl() {
|
|
|
+
|
|
|
+ // 分页参数 初始化
|
|
|
+ page, _ := c.GetInt("page")
|
|
|
+ if page < 1 {
|
|
|
+ page = 1
|
|
|
+ }
|
|
|
+ page_z, _ := c.GetInt("page_z")
|
|
|
+ if page_z < 1 {
|
|
|
+ page_z = 9999
|
|
|
+ }
|
|
|
+
|
|
|
+ T_state := c.GetString("T_state")
|
|
|
+ validationnumber := c.GetString("validationnumber")
|
|
|
+ T_sn := c.GetString("T_sn")
|
|
|
+ t_iccid := c.GetString("t_iccid")
|
|
|
+ t_imei := c.GetString("t_imei")
|
|
|
+ LendUser := c.GetString("LendUser")
|
|
|
+ T_project := c.GetString("T_project")
|
|
|
+ T_class := c.GetString("T_class")
|
|
|
+ vali := validationtool.NewValidationTool(orm.NewOrm())
|
|
|
+
|
|
|
+ R_List, _ := vali.Read_Validation_List(validationnumber, T_sn, t_iccid, t_imei, T_state, LendUser, T_project, T_class, page, page_z)
|
|
|
+
|
|
|
+ f := excelize.NewFile() //设置单元格值
|
|
|
+ // 这里设置表头ÒÒ
|
|
|
+ f.SetCellValue("Sheet1", "A1", "序号")
|
|
|
+ f.SetCellValue("Sheet1", "B1", "SN")
|
|
|
+ f.SetCellValue("Sheet1", "C1", "编号")
|
|
|
+ f.SetCellValue("Sheet1", "D1", "模组imei")
|
|
|
+ f.SetCellValue("Sheet1", "E1", "物联网卡号")
|
|
|
+ f.SetCellValue("Sheet1", "F1", "设备类型")
|
|
|
+ f.SetCellValue("Sheet1", "G1", "借出人")
|
|
|
+ f.SetCellValue("Sheet1", "H1", "借出项目")
|
|
|
+ f.SetCellValue("Sheet1", "I1", "备注")
|
|
|
+
|
|
|
+ // 设置列宽
|
|
|
+ f.SetColWidth("Sheet1", "A", "A", 6)
|
|
|
+ f.SetColWidth("Sheet1", "B", "B", 20)
|
|
|
+ f.SetColWidth("Sheet1", "C", "C", 15)
|
|
|
+ f.SetColWidth("Sheet1", "D", "D", 15)
|
|
|
+ f.SetColWidth("Sheet1", "E", "E", 30)
|
|
|
+ f.SetColWidth("Sheet1", "F", "F", 15)
|
|
|
+ f.SetColWidth("Sheet1", "G", "G", 15)
|
|
|
+ f.SetColWidth("Sheet1", "H", "H", 30)
|
|
|
+ f.SetColWidth("Sheet1", "I", "J", 15)
|
|
|
+
|
|
|
+ line := 1
|
|
|
+ for i, v := range R_List {
|
|
|
+ line++
|
|
|
+ r, _ := Basic.Read_ProductClass_ById(v.T_class)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.Validationnumber)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_imei)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_iccid)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), r.T_name)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.LendUser)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), v.T_project)
|
|
|
+ f.SetCellValue("Sheet1", fmt.Sprintf("I%d", line), v.T_remark)
|
|
|
+ }
|
|
|
+ timeStr := time.Now().Format("20060102150405")
|
|
|
+ fileName := fmt.Sprintf("验证工具记录表%v.xlsx", timeStr)
|
|
|
+ filePath := "ofile/" + "验证工具记录表" + timeStr + ".xlsx"
|
|
|
+ // 保存文件
|
|
|
+ if err := f.SaveAs(filePath); err != nil {
|
|
|
+ logs.Error("文件失败:", err)
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ os.Remove(filePath)
|
|
|
+ }()
|
|
|
+ c.Ctx.Output.Header("Content-Type", "application/vnd.ms-excel;charset=utf8")
|
|
|
+ c.Ctx.Output.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName))
|
|
|
+ c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
|
|
|
+ c.Ctx.Output.Download(filePath, fileName)
|
|
|
+}
|