瀏覽代碼

桥梁管理

hxz 2 年之前
父節點
當前提交
5c1798f285

+ 69 - 3
app/controller/bridgeController.go

@@ -2,6 +2,13 @@ package controller
 
 import (
 	"github.com/gin-gonic/gin"
+	"iot_manager_service/app/dao"
+	"iot_manager_service/app/model"
+	"iot_manager_service/app/service"
+	"iot_manager_service/app/utils"
+	"math"
+	"net/http"
+	"strconv"
 )
 
 // 桥梁管理对象
@@ -10,15 +17,71 @@ var Bridge = new(bridgeCtl)
 type bridgeCtl struct{}
 
 func (c *bridgeCtl) Detail(ctx *gin.Context) {
+	id, e := strconv.Atoi(ctx.Query("id"))
+	if e != nil {
+		ctx.JSON(http.StatusOK, utils.ParamsInvalidResponse(e.Error(), nil))
+		return
+	}
+
+	device, err := service.BridgeService.Get(id)
+	if err != nil {
+		ctx.JSON(http.StatusOK, err)
+		return
+	}
+	ctx.JSON(http.StatusOK, utils.SuccessResponse(utils.Succeeded, device))
 }
 
 func (c *bridgeCtl) List(ctx *gin.Context) {
+	searchValue := ctx.Query("searchValue")
+	current, _ := strconv.Atoi(ctx.Query("current"))
+	size, _ := strconv.Atoi(ctx.Query("size"))
+	if current == 0 {
+		current = 1
+	}
+	if size <= 0 || size > 100 {
+		size = 10
+	}
+	devices, err := service.BridgeService.List(searchValue, current, size)
+	if err != nil {
+		ctx.JSON(http.StatusOK, err)
+		return
+	}
+	pages := math.Ceil(float64(len(devices)) / float64(size))
+	rsp := model.RsqBridgeList{
+		Current: current,
+		Size:    size,
+		Total:   len(devices),
+		Pages:   int(pages),
+	}
+	for _, device := range devices {
+
+		rsp.Records = append(rsp.Records, device)
+	}
+	ctx.JSON(http.StatusOK, utils.SuccessResponse(utils.Succeeded, rsp))
 }
 
 func (c *bridgeCtl) CreateOrUpdate(ctx *gin.Context) {
+	var req dao.Bridge
+	if err := ctx.ShouldBindJSON(&req); err != nil {
+		ctx.JSON(http.StatusOK, utils.ParamsInvalidResponse(err.Error(), nil))
+		return
+	}
+	err := service.BridgeService.CreateOrUpdate(req)
+	ctx.JSON(http.StatusOK, err)
 }
 
 func (c *bridgeCtl) Remove(ctx *gin.Context) {
+	var req *model.ReqBridgeRemove
+	if err := ctx.ShouldBindJSON(&req); err != nil {
+		ctx.JSON(http.StatusOK, utils.ParamsInvalidResponse(err.Error(), nil))
+		return
+	}
+	err := service.BridgeService.Remove(req.IDs)
+	if err != nil {
+		ctx.JSON(http.StatusOK, err)
+		return
+	}
+	ctx.JSON(http.StatusOK, utils.SuccessResponse(utils.Succeeded, nil))
 }
 
 func (c *bridgeCtl) ImportExcel(ctx *gin.Context) {
@@ -31,7 +94,10 @@ func (c *bridgeCtl) ExportTemplate(ctx *gin.Context) {
 }
 
 func (c *bridgeCtl) GetList(ctx *gin.Context) {
-}
-
-func (c *bridgeCtl) Enable(ctx *gin.Context) {
+	devices, err := service.BridgeService.GetList()
+	if err != nil {
+		ctx.JSON(http.StatusOK, err)
+		return
+	}
+	ctx.JSON(http.StatusOK, utils.SuccessResponse(utils.Succeeded, devices))
 }

+ 96 - 0
app/dao/bridgeDao.go

@@ -0,0 +1,96 @@
+package dao
+
+import (
+	"github.com/jinzhu/gorm"
+	"time"
+)
+
+type Bridge struct {
+	ID                int       `gorm:"primary_key" json:"id"`                      //编号
+	Name              string    `gorm:"type:varchar(64)" json:"name"`               //名称
+	SN                string    `gorm:"type:varchar(60)" json:"sn"`                 //唯一编码
+	Lng               float64   `gorm:"type:double(17, 14) " json:"lng"`            //经度
+	Lat               float64   `gorm:"type:double(17, 14)  " json:"lat"`           //纬度
+	ProvinceName      string    `gorm:" type:varchar(60)" json:"provinceName"`      //省份
+	CityName          string    `gorm:"type:varchar(60)" json:"cityName"`           //市
+	DistrictName      string    `gorm:"type:varchar(60)" json:"districtName"`       //区
+	InstallPosition   string    `gorm:"type:varchar(100)" json:"installLocation"`   //位置
+	PurposeType       int       `gorm:" type:int" json:"purposeType"`               //用途类型
+	StraddlesType     int       `gorm:"type: int " json:"straddlesType"`            //跨越类型
+	StuffType         int       `gorm:"type: int " json:"stuffType"`                //材料类型
+	StructureType     int       `gorm:"type: int " json:"structureType"`            //结构类型
+	TechniqueGrade    int       `gorm:" type: int " json:"techniqueGrade"`          //技术等级
+	CompletionTime    string    `gorm:" type:date" json:"completionTime"`           //建成时间
+	Length            int       `gorm:"type: int " json:"length"`                   //长度
+	Width             int       `gorm:"type: int " json:"width"`                    //宽度
+	Height            int       `gorm:"type: int " json:"height"`                   //高度
+	TrafficNum        int       `gorm:"type: int " json:"trafficNum"`               //车道数
+	IsOpenTraffic     int       `gorm:" type: int " json:"isOpenTraffic"`           //是否已通车
+	DesignSpeed       int       `gorm:"type: int " json:"designSpeed"`              //设计时速
+	BriefIntroduction string    `gorm:"type:varchar(255)" json:"briefIntroduction"` //简介
+	Photo             string    `gorm:"type:varchar(255)" json:"photo"`             //照片
+	TenantId          string    `gorm:"type:varchar(12)" json:"tenantId"`           //租户id
+	CreateTime        time.Time `gorm:"type:datetime" json:"createTime"`            //新增时间
+	CreateUser        string    `gorm:"type:varchar(60)" json:"createUser"`         //新增记录操作用户ID
+	UpdateTime        time.Time `gorm:"type:datetime" json:"updateTime"`            //修改时间
+	UpdateUser        string    `gorm:"type:varchar(60)" json:"updateUser"`         //修改用户
+	IsDeleted         int       `gorm:"type:int;default 0" json:"isDeleted"`        //是否删除 0=未删除,1=删除
+	Status            int       `gorm:"type:int" json:"status"`                     //状态 0=正常,1=异常
+}
+
+func (Bridge) TableName() string {
+	return "t_dev_bridge"
+}
+
+func (c Bridge) Delete() error {
+	return GDb.Model(&c).Where("id = ?", c.ID).Updates(map[string]interface{}{"update_time": c.UpdateTime,
+		"update_user": c.UpdateUser, "is_deleted": c.IsDeleted}).Error
+}
+
+func (c Bridge) IsExistedBySN() bool {
+	var count = 0
+	_ = GDb.Model(&c).Where("  tsn = ? and is_deleted = ?",
+		c.SN, c.IsDeleted).Count(&count).Error
+	return count > 0
+}
+
+func (c Bridge) IsExistedByNameAndCode() bool {
+	var devices []Bridge
+	err := GDb.Model(&c).Where(" sn = ? and is_deleted = ?",
+		c.SN, c.IsDeleted).Find(&devices).Error
+	//如果查询不到,返回相应的错误
+	if gorm.IsRecordNotFoundError(err) {
+		return false
+	}
+	for _, d := range devices {
+		if d.ID != c.ID {
+			return true
+		}
+	}
+	return false
+}
+
+func (c *Bridge) Create() error {
+	return GDb.Model(&c).Save(&c).Error
+}
+
+func (c *Bridge) Update() error {
+	return GDb.Model(&c).Where(" id = ? ", c.ID).Update(&c).Error
+}
+
+func (c *Bridge) GetDevice() error {
+	err := GDb.Model(&c).Where(" id = ? ", c.ID).Scan(&c).Error
+	return err
+}
+
+func (c Bridge) GetDevices(offset, limit int) ([]Bridge, error) {
+	var devices []Bridge
+	err := GDb.Model(&c).Where(" name like ? and is_deleted = 0", "%"+c.Name+"%").Offset(offset).Limit(limit).Find(&devices).Error
+	return devices, err
+}
+
+func (c Bridge) GetAllDevices() ([]*Bridge, error) {
+	var devices []*Bridge
+	err := GDb.Model(&c).Where(" tenant_id = ? and is_deleted = ? ", c.TenantId, c.IsDeleted).Scan(&devices).Error
+	return devices, err
+}

+ 1 - 0
app/dao/common.go

@@ -39,6 +39,7 @@ func InitDB() {
 			&CaptureUint{},
 			&CheckPoint{},
 			&AlarmTerminal{},
+			&Bridge{},
 		).Error
 		if err != nil {
 			panic(fmt.Sprintf("AutoMigrate err : %v", err))

+ 15 - 0
app/model/bridge.go

@@ -0,0 +1,15 @@
+package model
+
+import "iot_manager_service/app/dao"
+
+type RsqBridgeList struct {
+	Records []dao.Bridge `json:"records"` //记录列表
+	Current int          `json:"current"` //当前分页
+	Size    int          `json:"size"`    //每页数量
+	Pages   int          `json:"pages"`   //总页数
+	Total   int          `json:"total"`   //总数
+}
+
+type ReqBridgeRemove struct {
+	IDs int `json:"ids"` //分组编码
+}

+ 104 - 0
app/service/bridgeService.go

@@ -0,0 +1,104 @@
+package service
+
+import (
+	"fmt"
+	"iot_manager_service/app/dao"
+	"iot_manager_service/app/utils"
+	"time"
+)
+
+var BridgeService = new(bridgeService)
+
+type bridgeService struct{}
+
+func (s *bridgeService) Get(id int) (*dao.Bridge, *utils.Errors) {
+	// 创建查询实例
+	device := &dao.Bridge{
+		ID: id,
+	}
+	err := device.GetDevice()
+	if err != nil {
+		return nil, utils.FailResponse(err.Error(), nil)
+	}
+	return device, nil
+
+}
+
+func (s *bridgeService) CreateOrUpdate(req dao.Bridge) *utils.Errors {
+	// 创建查询实例
+	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
+	if req.ID == 0 {
+		device.CreateTime = time.Now()
+		device.CreateUser = "TODO" // todo: 使用登录态
+		if device.IsExistedBySN() {
+			fmt.Printf("Create GetDeviceID err \n")
+			return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
+		}
+		if err := device.Create(); err != nil {
+			fmt.Printf("Create err = %s \n", err.Error())
+			return utils.FailResponse(err.Error(), nil)
+		}
+		return utils.SuccessResponse(utils.Succeeded, nil)
+	}
+
+	if device.IsExistedByNameAndCode() {
+		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
+	}
+
+	if err := device.Update(); err != nil {
+		fmt.Printf("Update err = %s \n", err.Error())
+		return utils.FailResponse(err.Error(), nil)
+	}
+
+	//todo operation record
+	return utils.SuccessResponse(utils.Succeeded, nil)
+}
+func (s *bridgeService) List(searchValue string, current, size int) ([]dao.Bridge, *utils.Errors) {
+	device := dao.Bridge{}
+	if searchValue != "" {
+		device.SN = searchValue
+		device.Name = searchValue
+	}
+
+	offset := (current - 1) * size
+	limit := size
+	devices, err := device.GetDevices(offset, limit)
+	if err != nil {
+		return nil, utils.FailResponse(err.Error(), nil)
+	}
+	return devices, nil
+}
+func (s *bridgeService) Remove(id int) *utils.Errors {
+	// 创建查询实例
+	device := &dao.Bridge{
+		ID:         id,
+		IsDeleted:  1,
+		UpdateUser: "TODO", // todo 使用登录态
+		UpdateTime: time.Now(),
+	}
+	//todo
+	// service.transformerService.CountRelation()
+
+	//todo operation record
+	err := device.Delete()
+	if err != nil {
+		return utils.FailResponse(err.Error(), nil)
+	}
+	return nil
+}
+
+func (s *bridgeService) GetList() ([]*dao.Bridge, *utils.Errors) {
+	// todo use redis cache
+	device := &dao.Bridge{
+		TenantId:  "000000", // todo 使用登录态
+		IsDeleted: 0,
+	}
+	devices, err := device.GetAllDevices()
+	if err != nil {
+		return nil, utils.FailResponse(err.Error(), nil)
+	}
+
+	return devices, nil
+}

+ 2 - 2
app/service/garbageService.go

@@ -27,6 +27,8 @@ func (s *garbageService) Get(id int) (*dao.Garbage, *utils.Errors) {
 func (s *garbageService) CreateOrUpdate(req dao.Garbage) *utils.Errors {
 	// 创建查询实例
 	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -40,8 +42,6 @@ func (s *garbageService) CreateOrUpdate(req dao.Garbage) *utils.Errors {
 		}
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 	}

+ 2 - 2
app/service/garbageWayGroupService.go

@@ -27,6 +27,8 @@ func (s *garbageWayGroupService) Get(id int) (*dao.GarbageWayGroup, *utils.Error
 func (s *garbageWayGroupService) CreateOrUpdate(req dao.GarbageWayGroup) *utils.Errors {
 	// 创建查询实例
 	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -40,8 +42,6 @@ func (s *garbageWayGroupService) CreateOrUpdate(req dao.GarbageWayGroup) *utils.
 		}
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("列表中存在重名,请更改垃圾桶道路名称!", nil)
 	}

app/service/GatewayRelationService.go → app/service/gatewayRelationService.go


app/service/GatewayService.go → app/service/gatewayService.go


+ 2 - 2
app/service/infoBoardService.go

@@ -27,6 +27,8 @@ func (s *infoBoardService) Get(id int) (*dao.InfoBoard, *utils.Errors) {
 func (s *infoBoardService) CreateOrUpdate(req dao.InfoBoard) *utils.Errors {
 	// 创建查询实例
 	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -40,8 +42,6 @@ func (s *infoBoardService) CreateOrUpdate(req dao.InfoBoard) *utils.Errors {
 		}
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 	}

app/service/OnDemandGroupService.go → app/service/onDemandGroupService.go


+ 2 - 2
app/service/switchBoxService.go

@@ -30,6 +30,8 @@ func (s *switchBoxService) CreateOrUpdate(req dao.SwitchBox) *utils.Errors {
 	if device.TenantId == "" {
 		device.TenantId = "000000" // todo: 使用登录态
 	}
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -44,8 +46,6 @@ func (s *switchBoxService) CreateOrUpdate(req dao.SwitchBox) *utils.Errors {
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
 	//更新
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 	}

+ 2 - 2
app/service/transformerService.go

@@ -27,6 +27,8 @@ func (s *transformerService) Get(id int) (*dao.Transformer, *utils.Errors) {
 func (s *transformerService) CreateOrUpdate(req dao.Transformer) *utils.Errors {
 	// 创建查询实例
 	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -40,8 +42,6 @@ func (s *transformerService) CreateOrUpdate(req dao.Transformer) *utils.Errors {
 		}
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 	}

+ 2 - 2
app/service/zigbeeService.go

@@ -27,6 +27,8 @@ func (s *zigbeeService) Get(id int) (*dao.Zigbee, *utils.Errors) {
 func (s *zigbeeService) CreateOrUpdate(req dao.Zigbee) *utils.Errors {
 	// 创建查询实例
 	device := req
+	device.UpdateUser = "TODO" // todo: 使用登录态
+	device.UpdateTime = time.Now()
 	if req.ID == 0 {
 		device.CreateTime = time.Now()
 		device.CreateUser = "TODO" // todo: 使用登录态
@@ -40,8 +42,6 @@ func (s *zigbeeService) CreateOrUpdate(req dao.Zigbee) *utils.Errors {
 		}
 		return utils.SuccessResponse(utils.Succeeded, nil)
 	}
-	device.UpdateUser = "TODO" // todo: 使用登录态
-	device.UpdateTime = time.Now()
 	if device.IsExistedByNameAndCode() {
 		return utils.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 	}