Browse Source

新增验证工具出入库管理

huangyan 1 month ago
parent
commit
8b0674f1b5

+ 2 - 2
Z_Build.bat

@@ -1,10 +1,10 @@
 cd %~dp0
 set GOARCH=amd64
 set GOOS=linux
-set GOPATH=C:\Users\SIKED\go
+set GOPATH=E:\gopath
 set GO111MODULE=auto
 
-go build main.go
+go build -o ERP_storage6703 main.go
 
 
 

+ 5 - 5
conf/app.conf

@@ -11,7 +11,7 @@ NatsServer_Url = "127.0.0.1:4223"
 NatsSubj_Prefix = "Test_"
 
 # Mysql 线上
-MysqlServer_UrlPort = "127.0.0.1:3316"
+MysqlServer_UrlPort = "36.137.156.216:3306"
 MysqlServer_Database = "erp_storage_test"
 MysqlServer_Username = "erp_storage_test"
 MysqlServer_Password = "cHFeFmxFhZJdijDn"
@@ -30,15 +30,15 @@ MysqlServer_MaxOpenConnections = 200
 # MysqlServer_MaxOpenConnections = 200
 
 # Mysql Mqtt
-MysqlMqtt_UrlPort = "127.0.0.1:40306"
+MysqlMqtt_UrlPort = "203.34.49.130:3306"
 MysqlMqtt_Database = "mqtt"
-MysqlMqtt_Username = "mqtt"
-MysqlMqtt_Password = "UQ7sPD8YZwCF2Zg!"
+MysqlMqtt_Username = "root"
+MysqlMqtt_Password = "yjwyEckZS7rE5H"
 MysqlMqtt_MaxIdleConnections = 100
 MysqlMqtt_MaxOpenConnections = 200
 
 # Redis
-Redis_address = "127.0.0.1:6378"
+Redis_address = "36.137.156.216:6379"
 Redis_password = ""
 Redis_dbNum = "2"
 

+ 3 - 3
controllers/Stock.go

@@ -12,13 +12,13 @@ import (
 	"ERP_storage/models/Property"
 	"ERP_storage/models/Stock"
 	"fmt"
-	natslibs "gogs.baozhida.cn/zoie/ERP_libs/Nats"
-	userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
-	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 	"github.com/beego/beego/v2/adapter/orm"
 	beego "github.com/beego/beego/v2/server/web"
 	"github.com/robfig/cron/v3"
 	"github.com/xuri/excelize/v2"
+	natslibs "gogs.baozhida.cn/zoie/ERP_libs/Nats"
+	userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 	"math"
 	"os"
 	"strconv"

+ 249 - 0
controllers/Validation.go

@@ -0,0 +1,249 @@
+package controllers
+
+import (
+	"ERP_storage/conf"
+	"ERP_storage/models/Account"
+	"ERP_storage/models/Stock"
+	"ERP_storage/models/validationtool"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"github.com/beego/beego/v2/adapter/orm"
+	beego "github.com/beego/beego/v2/server/web"
+	userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
+	"math"
+	"strings"
+)
+
+type ValidationController struct {
+	beego.Controller
+	User userlibs.User
+}
+
+func (c *ValidationController) Prepare() {
+	c.User = *Account.User_r
+}
+
+// AddValidation 查询设备是否存在在库存中,如果存在则修改设备状态为待使用,否则直接添加设备
+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.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.ServeJSON()
+			return
+		}
+		r, err := vali.ReadValidationBytSn(tool.T_sn)
+		if err != nil {
+			if errors.Is(err, orm.ErrNoRows) {
+				var validataiontool validationtool.ValidationTool
+				user := Stock.Read_MqttUser(tool.T_sn)
+				validataiontool.T_iccid = user.Iccid
+				validataiontool.T_imei = user.Imei
+				validataiontool.T_uuid = c.User.T_uuid
+				validataiontool.Validationnumber = tool.Validationnumber
+				validataiontool.T_sn = tool.T_sn
+				validataiontool.T_remark = tool.T_remark
+				validataiontool.T_state = 2
+				_, err := vali.ADDValidationTool(validataiontool)
+				if err != nil {
+					c.Data["json"] = lib.JSONS{Code: 201, Msg: "入库失败!", Data: nil}
+					c.ServeJSON()
+					return
+				}
+			}
+		} else {
+			//修改设备
+			con := make(map[string]string)
+			if len(tool.Validationnumber) != 0 {
+				con["validationnumber"] = tool.Validationnumber
+			}
+			if r.T_state != 2 {
+				con["t_state"] = "2" // 待使用
+			}
+			con["t_remark"] = tool.T_remark
+			con["t_project"] = ""
+			con["lend_user"] = ""
+			err = vali.UpdateValidationTool(r.T_sn, con)
+			if err != nil {
+				c.Data["json"] = lib.JSONS{Code: 201, Msg: "入库失败!", Data: nil}
+				c.ServeJSON()
+				return
+			}
+		}
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "入库成功!", Data: nil}
+	c.ServeJSON()
+	return
+}
+
+func (c *ValidationController) ValidationList() {
+
+	// 分页参数 初始化
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	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")
+	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)
+
+	var r_jsons lib.R_JSONS
+	r_jsons.Num = R_cnt
+	r_jsons.Data = R_List
+	r_jsons.Page = page
+	r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}
+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.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.ServeJSON()
+		return
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除成功!", Data: nil}
+	c.ServeJSON()
+}
+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.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.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.ServeJSON()
+			return
+		}
+		//修改设备状态
+		con := make(map[string]string)
+		if len(tool.T_remark) != 0 {
+			con["t_remark"] = tool.T_remark
+		}
+		if len(tool.Validationnumber) != 0 {
+			con["validationnumber"] = tool.Validationnumber
+		}
+		con["t_state"] = "1"
+		if len(tool.LendUser) != 0 {
+			con["lend_user"] = tool.LendUser
+		}
+		if len(tool.T_project) != 0 {
+			con["t_project"] = tool.T_project
+		}
+		err = vali.UpdateValidationTool(tool.T_sn, con)
+		if err != nil {
+			c.Data["json"] = lib.JSONS{Code: 201, Msg: "修改失败!", Data: nil}
+			c.ServeJSON()
+			return
+		}
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "修改成功!", Data: nil}
+	c.ServeJSON()
+	return
+}
+
+// GetValidationToolBySn 根据sn获取设备信息
+func (c *ValidationController) GetValidationToolBySn() {
+	sn := c.GetString("sn")
+	if len(sn) <= 0 {
+		c.Data["json"] = lib.JSONS{Code: 201, 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.ServeJSON()
+		return
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: r}
+	c.ServeJSON()
+}
+
+// UpdateValidationToolBySn  根据sn修改设备信息
+func (c *ValidationController) UpdateValidationToolBySn() {
+	sn := c.GetString("T_sn")
+	Id := c.GetString("Id")
+	Validationnumber := c.GetString("Validationnumber")
+	T_remark := c.GetString("T_remark")
+	T_state := c.GetString("T_state")
+	if len(sn) <= 0 {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "sn不能为空!", Data: nil}
+		c.ServeJSON()
+		return
+	}
+	if len(Id) <= 0 {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id不能为空!", Data: nil}
+		c.ServeJSON()
+		return
+	}
+	con := make(map[string]string)
+	if len(Validationnumber) > 0 {
+		con["validationnumber"] = Validationnumber
+	}
+	if len(T_remark) > 0 {
+		con["t_remark"] = T_remark
+	}
+	if len(T_state) > 0 {
+		con["t_state"] = T_state
+	}
+	vali := validationtool.NewValidationTool(orm.NewOrm())
+	r, err := vali.ReadValidationById(Id)
+	if !strings.EqualFold(r.T_sn, sn) {
+		con["t_sn"] = sn
+		user := Stock.Read_MqttUser(sn)
+		con["t_iccid"] = user.Iccid
+		con["t_imei"] = user.Imei
+	}
+	err = vali.UpdateValidationToolById(Id, con)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "当前设备不存在!", Data: nil}
+		c.ServeJSON()
+		return
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil}
+	c.ServeJSON()
+}

+ 2 - 3
main.go

@@ -51,15 +51,14 @@ func main() {
 		// 允许访问所有源
 		AllowAllOrigins: true,
 		// 可选参数"GET", "POST", "PUT", "DELETE", "OPTIONS" (*为所有)
-		AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
+		AllowMethods: []string{"*"},
 		// 指的是允许的Header的种类
-		AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
+		AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Headers", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
 		// 公开的HTTP标头列表
 		ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
 		// 如果设置,则允许共享身份验证凭据,例如cookie
 		AllowCredentials: true,
 	}))
-
 	appname, _ := beego.AppConfig.String("appname")
 
 	beego.BConfig.AppName = appname              // 项目名

+ 1 - 1
models/Stock/Device.go

@@ -5,10 +5,10 @@ import (
 	"ERP_storage/models/Basic"
 	"errors"
 	"fmt"
-	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 	_ "github.com/astaxie/beego/cache/redis"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 	"strconv"
 	"time"
 )

+ 1 - 1
models/Stock/Mqtt.go

@@ -2,8 +2,8 @@ package Stock
 
 import (
 	"ERP_storage/logs"
-	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 	orm2 "github.com/beego/beego/v2/client/orm"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
 )
 
 type Mqtt struct {

+ 2 - 0
models/init.go

@@ -3,6 +3,7 @@ package models
 import (
 	db "ERP_storage/initialize"
 	"ERP_storage/models/ContractReview"
+	"ERP_storage/models/validationtool"
 	_ "github.com/go-sql-driver/mysql"
 	"log"
 )
@@ -19,6 +20,7 @@ func AutoMigrateDB() {
 			&ContractReview.ServiceItem{},
 			&ContractReview.ContractReview{},
 			&ContractReview.ContractReviewServiceItem{},
+			&validationtool.ValidationTool{},
 		)
 	if err != nil {
 		log.Fatalf("migrate db fail: %v", err)

+ 225 - 0
models/validationtool/validation.go

@@ -0,0 +1,225 @@
+package validationtool
+
+import (
+	"ERP_storage/logs"
+	"errors"
+	"fmt"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
+	"strconv"
+	"time"
+)
+
+type ValidationTool struct {
+	Id                int       `orm:"column(ID);size(11);auto;pk"`
+	T_contract_number string    `orm:"size(256);null"`                                        // 合同编号
+	T_product_id      int       `orm:"size(20);null"`                                         // 产品id
+	Validationnumber  string    `orm:"size(256);null"`                                        // 验证工具编号
+	T_out_number      string    `orm:"size(256);null"`                                        // 出库编号
+	T_sn              string    `orm:"size(256);null"`                                        // 设备sn
+	T_iccid           string    `orm:"size(256);null"`                                        // sim卡号
+	T_imei            string    `orm:"size(256);null"`                                        // 模组imei
+	History_iccid     string    `orm:"size(256);type(json);null"`                             // 历史sim卡号
+	History_imei      string    `orm:"size(256);type(json);null"`                             //历史模组
+	T_state           int       `orm:"size(2);default(2)"`                                    // 1-已出库 2-待使用  3-待维修
+	T_remark          string    `orm:"type(text);null"`                                       // 备注
+	T_project         string    `orm:"type(text);null"`                                       // 出库项目
+	T_project_log     string    `orm:"type(text);null"`                                       // 出库项目
+	T_uuid            string    `orm:"size(256);null"`                                        //用户uuid
+	LendUser          string    `orm:"size(256);null"`                                        //借出用户
+	CreateTime        time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime        time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+type ValidationToolUseRecord struct {
+	Id                int       `orm:"column(ID);size(11);auto;pk"`
+	T_contract_number string    `orm:"size(256);null"`                                        // 合同编号
+	T_product_id      int       `orm:"size(20);null"`                                         // 产品id
+	Validationnumber  string    `orm:"size(256);null"`                                        // 验证工具编号
+	T_out_number      string    `orm:"size(256);null"`                                        // 出库编号
+	T_sn              string    `orm:"size(256);null"`                                        // 设备sn
+	T_iccid           string    `orm:"size(256);null"`                                        // sim卡号
+	T_imei            string    `orm:"size(256);null"`                                        // 模组imei
+	History_iccid     string    `orm:"size(256);type(json);null"`                             // 历史sim卡号
+	History_imei      string    `orm:"size(256);type(json);null"`                             //历史模组
+	T_state           int       `orm:"size(2);default(2)"`                                    // 1-已出库 2-未出库/入库
+	T_remark          string    `orm:"type(text);null"`                                       // 备注
+	T_project         string    `orm:"type(text);null"`                                       // 出库项目
+	T_project_log     string    `orm:"type(text);null"`                                       // 出库项目
+	CreateTime        time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime        time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+type AddValidationTool struct {
+	T_sn             string `json:"T_sn"`
+	Validationnumber string `json:"Validationnumber"`
+	T_remark         string `json:"T_remark"`
+}
+type LendValidationTool struct {
+	T_sn             string `json:"T_sn"`
+	Validationnumber string `json:"Validationnumber"`
+	T_remark         string `json:"T_remark"`
+	T_project        string `json:"T_project"`
+	LendUser         string `json:"LendUser"`
+}
+
+func (t *ValidationTool) TableName() string {
+	return "ValidationTool"
+}
+func (t *ValidationToolUseRecord) TableName() string {
+	return "ValidationToolRecord"
+}
+
+type ValidationImpl struct {
+	orm orm.Ormer
+}
+type ValidationUseRecordImpl struct {
+	orm orm.Ormer
+}
+
+func NewValidationTool(orm orm.Ormer) *ValidationImpl {
+	return &ValidationImpl{orm: orm}
+}
+func NewValidationToolUseRecord(orm orm.Ormer) *ValidationUseRecordImpl {
+	return &ValidationUseRecordImpl{orm: orm}
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(ValidationTool))
+	orm.RegisterModel(new(ValidationToolUseRecord))
+}
+
+// ADDValidationTool 添加
+func (dao *ValidationImpl) ADDValidationTool(r ValidationTool) (id int64, err error) {
+	_, err = dao.ReadValidationBytSn(r.T_sn)
+	if err != nil {
+		if errors.Is(err, orm.ErrNoRows) {
+			id, err = dao.orm.Insert(&r)
+			if err != nil {
+				logs.Error(lib.FuncName(), err)
+			}
+			return id, err
+		}
+	}
+	return id, err
+}
+func (dao *ValidationImpl) ReadValidationBytSn(T_sn string) (r ValidationTool, err error) {
+	qs := dao.orm.QueryTable(new(ValidationTool))
+	var list []ValidationTool
+	_, err = qs.Limit(1, 0).Filter("T_sn", T_sn).OrderBy("-CreateTime").All(&list)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	if len(list) == 0 {
+		return r, orm.ErrNoRows
+	}
+	if len(list) > 0 {
+		r = list[0]
+	}
+	return
+}
+func (dao *ValidationImpl) UpdateValidationTool(TSn string, con map[string]string) (err error) {
+	qs := dao.orm.QueryTable(new(ValidationTool))
+	params := orm.Params{}
+	for key, value := range con {
+		params[key] = value
+	}
+	_, err = qs.Filter("T_sn", TSn).Update(orm2.Params(params))
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return err
+}
+func (dao *ValidationImpl) UpdateValidationToolById(id string, con map[string]string) (err error) {
+	qs := dao.orm.QueryTable(new(ValidationTool))
+	params := orm.Params{}
+	for key, value := range con {
+		params[key] = value
+	}
+	_, err = qs.Filter("id", id).Update(orm2.Params(params))
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return err
+}
+func (dao *ValidationImpl) ReadValidationById(id string) (r ValidationTool, err error) {
+	qs := dao.orm.QueryTable(new(ValidationTool))
+	var list []ValidationTool
+	_, err = qs.Limit(1, 0).Filter("id", id).OrderBy("-CreateTime").All(&list)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	if len(list) == 0 {
+		return r, orm.ErrNoRows
+	}
+	if len(list) > 0 {
+		r = list[0]
+	}
+	return
+}
+
+func (dao *ValidationImpl) Read_Validation_List(Validationnumber, T_sn, T_iccid, T_imei, T_State, LendUser, T_project string, page, page_z int) (r []ValidationTool, cnt int64) {
+	var offset int
+	if page <= 1 {
+		offset = 0
+	} else {
+		offset = (page - 1) * page_z
+	}
+
+	// 过滤
+	sqlWhere := " WHERE id > 0"
+	if len(Validationnumber) > 0 {
+		sqlWhere += " AND validationnumber like \"%" + Validationnumber + "%\""
+	}
+	if len(T_State) > 0 {
+		sqlWhere += " AND t_state like \"%" + T_State + "%\""
+	}
+	if len(T_sn) > 0 {
+		sqlWhere += " AND t_sn like \"%" + T_sn + "%\""
+	}
+	if len(T_iccid) > 0 {
+		sqlWhere += " AND t_iccid like \"%" + T_iccid + "%\""
+	}
+	if len(T_imei) > 0 {
+		sqlWhere += " AND t_imei like \"%" + T_imei + "%\""
+	}
+	if len(LendUser) > 0 {
+		sqlWhere += " AND lend_user like \"%" + LendUser + "%\""
+	}
+	if len(T_project) > 0 {
+		sqlWhere += " AND t_project like \"%" + T_project + "%\""
+	}
+	var maps_z []orm2.ParamsList
+	// 获取总条数
+	sql := "SELECT COUNT(*) FROM ValidationTool"
+	sql = sql + sqlWhere
+	fmt.Println(sql)
+	_, err := dao.orm.Raw(sql).ValuesList(&maps_z)
+	if err != nil {
+		return r, 0
+	}
+	if len(maps_z) == 0 {
+		return r, 0
+	}
+	sql = "SELECT * FROM ValidationTool"
+
+	sql = sql + sqlWhere
+
+	sql += " ORDER BY create_time DESC"
+
+	sql += " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
+
+	fmt.Println(sql)
+	var maps []ValidationTool
+	_, err = dao.orm.Raw(sql).QueryRows(&maps)
+	if err != nil {
+		return r, 0
+	}
+	count, _ := strconv.Atoi(maps_z[0][0].(string))
+	return maps, int64(count)
+}
+func (dao *ValidationImpl) DeleteValidationTool(sn string) (err error) {
+	qs := dao.orm.QueryTable(new(ValidationTool))
+	_, err = qs.Filter("t_sn", sn).Delete()
+	return err
+}

+ 19 - 0
routers/vaildationTool.go

@@ -0,0 +1,19 @@
+package routers
+
+import (
+	"ERP_storage/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+
+	vaildationTool := beego.NewNamespace("/vaildationTool",
+		beego.NSRouter("/add", &controllers.ValidationController{}, "*:AddValidation"),                         // 添加验证工具
+		beego.NSRouter("/list", &controllers.ValidationController{}, "*:ValidationList"),                       // 获取验证工具列表
+		beego.NSRouter("/del", &controllers.ValidationController{}, "*:DeleteValidationTool"),                  // 删除验证工具
+		beego.NSRouter("/update", &controllers.ValidationController{}, "*:UpdateValidationTool"),               // 修改验证工具
+		beego.NSRouter("/readvaildation", &controllers.ValidationController{}, "*:GetValidationToolBySn"),      // 修改验证工具
+		beego.NSRouter("/updatevaildation", &controllers.ValidationController{}, "*:UpdateValidationToolBySn"), // 修改验证工具
+	)
+	beego.AddNamespace(vaildationTool)
+}