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() }