package controllers import ( "ERP_storage/Nats/NatsServer" "ERP_storage/conf" "ERP_storage/logs" "ERP_storage/models/Account" "ERP_storage/models/IOTNetworkCard" "encoding/json" "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" "strconv" "time" ) type IOTNetworkCardController struct { beego.Controller User userlibs.User } func (c *IOTNetworkCardController) Prepare() { c.User = *Account.User_r } // 财务管理列表 func (c *IOTNetworkCardController) IOTNetworkCard_List() { // 分页参数 初始化 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_name := c.GetString("T_name") T_state, _ := c.GetInt("T_state") userList, _ := NatsServer.Read_User_List_All() Account.Read_User_All_Map(userList) IOTNetworkCardDao := IOTNetworkCard.NewIOTNetworkCard(orm.NewOrm()) R_List, R_cnt := IOTNetworkCardDao.Read_IOTNetworkCard_List(T_name, T_state, 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 *IOTNetworkCardController) IOTNetworkCard_Get() { // 查询 T_id, _ := c.GetInt("T_id") IOTNetworkCard_r, err := IOTNetworkCard.Read_IOTNetworkCard_ById(T_id) if err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "T_id Err!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: IOTNetworkCard.IOTNetworkCardToIOTNetworkCard_R(IOTNetworkCard_r)} c.ServeJSON() return } func (c *IOTNetworkCardController) IOTNetworkCard_Add() { T_in_date := c.GetString("T_in_date") T_meal_type := c.GetString("T_meal_type") T_meal := c.GetString("T_meal") T_expire := c.GetString("T_expire") T_iccid := c.GetString("T_iccid") T_MSISDN := c.GetString("T_MSISDN") T_remark := c.GetString("T_remark") T_State, _ := c.GetInt("T_State") var_ := IOTNetworkCard.IOTNetworkCard{ T_in_date: T_in_date, T_meal_type: T_meal_type, T_meal: T_meal, T_expire: T_expire, T_iccid: T_iccid, T_MSISDN: T_MSISDN, T_State: T_State, T_remark: T_remark, } // 添加入库记录 var record []IOTNetworkCard.IOTNetworkCardRecord record = append(record, IOTNetworkCard.IOTNetworkCardRecord{ T_data: time.Now().Format("2006-01-02"), T_State: T_State, }) recordB, _ := json.Marshal(&record) var_.T_record = string(recordB) card, err := IOTNetworkCard.Read_IOTNetworkCard_ByT_MSISDN(T_MSISDN) if err != nil && err.Error() != orm.ErrNoRows.Error() { c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败"} c.ServeJSON() return } if card.Id > 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "此卡已入库"} c.ServeJSON() return } o := orm.NewOrm() IOTNetworkCardDao := IOTNetworkCard.NewIOTNetworkCard(o) Id, err := IOTNetworkCardDao.Add_IOTNetworkCard(var_) if err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "添加失败"} c.ServeJSON() return } NatsServer.AddUserLogs(c.User.T_uuid, "物联网卡", "添加", var_) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id} c.ServeJSON() return } func (c *IOTNetworkCardController) IOTNetworkCard_Edit() { T_id, _ := c.GetInt("T_id") T_in_date := c.GetString("T_in_date") T_meal_type := c.GetString("T_meal_type") T_meal := c.GetString("T_meal") T_expire := c.GetString("T_expire") T_iccid := c.GetString("T_iccid") T_MSISDN := c.GetString("T_MSISDN") T_out_date := c.GetString("T_out_date") // 出库日期 T_out_project := c.GetString("T_out_project") // 出库项目 T_receive := c.GetString("T_receive") // 领用人 T_State, _ := c.GetInt("T_State") // 状态 T_remark := c.GetString("T_remark") // 状态 IOTNetworkCard_r, err := IOTNetworkCard.Read_IOTNetworkCard_ById(T_id) if err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "T_id Err!"} c.ServeJSON() return } if len(T_in_date) > 0 { IOTNetworkCard_r.T_in_date = T_in_date } if len(T_meal_type) > 0 { IOTNetworkCard_r.T_meal_type = T_meal_type } if len(T_meal) > 0 { IOTNetworkCard_r.T_meal = T_meal } if len(T_expire) > 0 { IOTNetworkCard_r.T_expire = T_expire } if len(T_iccid) > 0 { IOTNetworkCard_r.T_iccid = T_iccid } if len(T_MSISDN) > 0 { IOTNetworkCard_r.T_MSISDN = T_MSISDN } if len(T_out_date) > 0 { IOTNetworkCard_r.T_out_date = T_out_date } if len(T_out_project) > 0 { IOTNetworkCard_r.T_out_project = T_out_project } if len(T_receive) > 0 { IOTNetworkCard_r.T_receive = T_receive } if len(T_remark) > 0 { IOTNetworkCard_r.T_remark = T_remark } if T_State > 0 && T_State != IOTNetworkCard_r.T_State { IOTNetworkCard_r.T_State = T_State // 添加入库记录 var record []IOTNetworkCard.IOTNetworkCardRecord err = json.Unmarshal([]byte(IOTNetworkCard_r.T_record), &record) if err != nil { logs.Error("JSON 反序列化失败:", err) return } record = append(record, IOTNetworkCard.IOTNetworkCardRecord{ T_data: time.Now().Format("2006-01-02"), T_State: T_State, T_out_project: T_out_project, T_remark: T_remark, }) recordB, _ := json.Marshal(&record) IOTNetworkCard_r.T_record = string(recordB) } o := orm.NewOrm() IOTNetworkCardDao := IOTNetworkCard.NewIOTNetworkCard(o) if err = IOTNetworkCardDao.Update_IOTNetworkCard(IOTNetworkCard_r, "T_in_date", "T_meal_type", "T_meal", "T_expire", "T_iccid", "T_MSISDN", "T_out_date", "T_out_project", "T_receive", "T_State", "T_record", "T_remark"); err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "修改失败"} c.ServeJSON() return } NatsServer.AddUserLogs(c.User.T_uuid, "物联网卡", "修改", IOTNetworkCard_r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } func (c *IOTNetworkCardController) IOTNetworkCard_Del() { T_id, _ := c.GetInt("T_id") IOTNetworkCard_r, err := IOTNetworkCard.Read_IOTNetworkCard_ById(T_id) if err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "T_id Err!"} c.ServeJSON() return } o := orm.NewOrm() IOTNetworkCardDao := IOTNetworkCard.NewIOTNetworkCard(o) err = IOTNetworkCardDao.Delete_IOTNetworkCard(IOTNetworkCard_r) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"} c.ServeJSON() return } NatsServer.AddUserLogs(c.User.T_uuid, "物联网卡", "删除", strconv.Itoa(T_id)) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: T_id} c.ServeJSON() return } // 导入 func (c *IOTNetworkCardController) IOTNetworkCard_Import() { // 获取上传的文件 IOTNetworkCardDao := IOTNetworkCard.NewIOTNetworkCard(orm.NewOrm()) f, _, err := c.GetFile("file") 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 } }() sheetMap := reader.GetSheetMap() for _, sheetName := range sheetMap { //读取工作表中的数据 rows, errs := reader.GetRows(sheetName) if errs != nil { c.Data["json"] = lib.JSONS{Code: 1201, Msg: "读取工作表失败!", Data: nil} c.ServeJSON() return } for i, row := range rows { if i < 2 { continue // 忽略第一行和第二行 } if len(row) >= 6 { // 解析时间 t, errT := time.Parse("01-02-06", row[0]) if errT != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "解析入库时间失败"} c.ServeJSON() return } T_MSISDN := row[5] _, errGet := IOTNetworkCard.Read_IOTNetworkCard_ByT_MSISDN(T_MSISDN) if errGet != nil && errGet.Error() == orm.ErrNoRows.Error() { continue } var_ := IOTNetworkCard.IOTNetworkCard{ T_in_date: t.Format("2006-01-02"), T_meal_type: row[1], T_meal: row[2], T_expire: row[3], T_iccid: row[4], T_MSISDN: row[5], T_State: IOTNetworkCard.IOTNetworkCardNewCardIn, } // 添加入库记录 var record []IOTNetworkCard.IOTNetworkCardRecord record = append(record, IOTNetworkCard.IOTNetworkCardRecord{ T_data: time.Now().Format("2006-01-02"), T_State: IOTNetworkCard.IOTNetworkCardNewCardIn, }) if len(row) >= 8 { // 解析时间 outT, errOutT := time.Parse("01-02-06", row[6]) if errOutT != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "解析出库时间失败"} c.ServeJSON() return } var_.T_State = IOTNetworkCard.IOTNetworkCardOut var_.T_out_date = outT.Format("2006-01-02") var_.T_out_project = row[7] record = append(record, IOTNetworkCard.IOTNetworkCardRecord{ T_data: time.Now().Format("2006-01-02"), T_State: IOTNetworkCard.IOTNetworkCardOut, T_out_project: row[7], }) } recordB, _ := json.Marshal(&record) var_.T_record = string(recordB) _, err = IOTNetworkCardDao.Add_IOTNetworkCard(var_) if err != nil { c.Data["json"] = lib.JSONS{Code: 203, Msg: "添加失败"} c.ServeJSON() return } } } } c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功!", Data: nil} c.ServeJSON() }