Browse Source

TMR: 羊圈业务

Yi 1 year ago
parent
commit
d628a24298

+ 4 - 4
conf/app-develop.ini

@@ -21,7 +21,7 @@ TimeFormat = 20060102-150405
 #debug or release
 #RunMode = debug
 RunMode = release
-HttpPort = 8082
+HttpPort = 8081
 ReadTimeout = 60
 WriteTimeout = 60
 NoAuth = 1
@@ -41,9 +41,9 @@ Description = tmrgo
 [database]
 Type = mysql
 User = root
-Password = 123456
-Host = 192.168.1.70:3306
-Name = tmrwatch2
+Password = root
+Host = 192.168.1.93:3326
+Name = yq
 TablePrefix =
 
 ShowXormlog = false

+ 2 - 2
conf/app.ini

@@ -70,9 +70,9 @@ Host = 192.168.1.93:3326
 #Name = equipment
 #Name = eqdev
 #Name = eq0422
-#Name = tmrgo 
+#Name = tmrgo
 #Password = kepaiteng!QAZ
-#Host = 222.73.129.15:31306 
+#Host = 222.73.129.15:31306
 Name = sfmc1
 TablePrefix =
 

+ 1 - 1
conf/setting/setting.go

@@ -115,7 +115,7 @@ func Setup() {
 	switch appEnv {
 	case "test":
 		cfg, err = ini.Load(CurrentPath + "conf/app-test.ini")
-	case "develop":
+	case "development":
 		cfg, err = ini.Load(CurrentPath + "conf/app-develop.ini")
 	default:
 		cfg, err = ini.Load(CurrentPath + "conf/app.ini")

+ 1 - 1
go.mod

@@ -3,7 +3,7 @@ module tmr-watch
 go 1.16
 
 require (
-	gitee.com/xuyiping_admin/go_proto v0.0.0-20231020024751-e01ca61df346
+	gitee.com/xuyiping_admin/go_proto v0.0.0-20240412073745-a781895d2a7f
 	gitee.com/xuyiping_admin/pkg v0.0.0-20230816061144-c1f079802584
 	github.com/360EntSecGroup-Skylar/excelize v1.4.1
 	github.com/Anderson-Lu/gofasion v0.0.0-20190530065914-6a05b679ee48

+ 4 - 0
go.sum

@@ -727,6 +727,10 @@ gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0p
 gitee.com/xuyiping_admin/go_proto v0.0.0-20230802054950-77dee3d12065/go.mod h1:cxbPefIf1o+cyQwvFaM3ndaoUeaK5aWzPV/eZQGJPgE=
 gitee.com/xuyiping_admin/go_proto v0.0.0-20231020024751-e01ca61df346 h1:XZR4WvMVxk6fNbraGsReW7onWxR5O6TMLTAmPWnphm8=
 gitee.com/xuyiping_admin/go_proto v0.0.0-20231020024751-e01ca61df346/go.mod h1:x47UOU+lOkZnrtAENAsOGd7mZ5I8D2JRkMKMqLLRlVw=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240412063848-81e2e5859cdb h1:MGLoKD2yR5TPbycdMwrDiYNuysPZ4C7BStjkFE11PLs=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240412063848-81e2e5859cdb/go.mod h1:x47UOU+lOkZnrtAENAsOGd7mZ5I8D2JRkMKMqLLRlVw=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240412073745-a781895d2a7f h1:FO2Z0evzd6UoclJKhVWZ8lmfPKHB+iHOH2VGzkrqYGQ=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240412073745-a781895d2a7f/go.mod h1:x47UOU+lOkZnrtAENAsOGd7mZ5I8D2JRkMKMqLLRlVw=
 gitee.com/xuyiping_admin/pkg v0.0.0-20230816061144-c1f079802584 h1:5RE5yrMMvnDITrnoX821mFl7dNYfsFA1osDobUV/TDo=
 gitee.com/xuyiping_admin/pkg v0.0.0-20230816061144-c1f079802584/go.mod h1:VQ7WztVDQRlXE1dUu/Yqo3ZdhKsfv7IGJtV+vqNqJVw=
 github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0gHwBYyfo5Jcjv/Ks=

+ 29 - 0
http/handle/api/new_api.go

@@ -5,6 +5,7 @@ import (
 	"strconv"
 	"tmr-watch/middleware"
 	"tmr-watch/service/group"
+	"tmr-watch/service/sheep"
 
 	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
 	feedPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/pasture"
@@ -89,3 +90,31 @@ func FeetTemplateUpgradeNewVersion(c *gin.Context) {
 		Data: &operationPb.Success{Success: true},
 	})
 }
+
+// UpdateTmrGear 更新tmr_gear表数据
+func UpdateTmrGear(c *gin.Context) {
+	var req operationPb.UpdateOrCreateTmrGearRequest
+	if err := ginutil.BindProto(c, &req); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := valid.ValidateStruct(&req,
+		valid.Field(&req.TmrId, valid.Required),
+		valid.Field(&req.Params, valid.Required),
+	); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	if err := sheep.UpdateOrCreateTmrGear(c, &req); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	ginutil.JSONResp(c, &operationPb.CommonOK{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: &operationPb.Success{Success: true},
+	})
+}

+ 1 - 0
http/routers/new_api.go

@@ -15,5 +15,6 @@ func NewAPI(opts ...func(engine *gin.Engine)) func(s *gin.Engine) {
 		newApiGroup.POST("feet_template/list", api.SearchFeetTemplateList)
 		newApiGroup.POST("feet_template/version", api.GetFeetTemplateVersion)
 		newApiGroup.POST("feet_template/upgrade", api.FeetTemplateUpgradeNewVersion)
+		newApiGroup.POST("tmr/gear", api.UpdateTmrGear)
 	}
 }

+ 58 - 0
migration/v0002_yq_bar.sql

@@ -0,0 +1,58 @@
+# 新增圈舍名称字段pen和长度length字段
+UPDATE apisql SET sqlstr = 'SELECT
+bcode,bname,allowratio,autozone,autosecond,isstart,
+begintag,endtag,sort,enable,autosecondname,length,pen,
+TRIM(id) id,
+TRIM(pastureid)pastureid,
+udcode,udname
+FROM
+  bar
+WHERE pastureid = ?
+ AND ( bname LIKE CONCAT(''%'',?,''%'')  OR ? = '''')
+ AND ( bcode LIKE CONCAT(''%'',?,''%'')  OR ? = '''')
+ AND ( pen LIKE CONCAT(''%'',?,''%'')  OR ? = '''')
+ AND (allowratio = ? OR ? = '''')
+ AND (enable =? OR ? = '''')
+ AND (autozone= ? OR ? = '''')
+ AND (autosecond = ? OR ? = '''')
+ORDER BY sort ',
+params = 'pastureid,bname,bname,bcode ,bcode,pen,pen ,allowratio ,allowratio ,enable ,enable,autozone,autozone,autosecond,autosecond'
+where sqlname = 'getBarList' and enable = 1;
+
+
+# 新增圈舍名称字段pen和长度length字段
+UPDATE apisql SET sqlstr = '
+update bar set bcode=? ,bname=?,allowratio=? ,autozone=?,autosecond=?,autosecondname=?,isstart=? ,enable=?,AUFNR = ?,pen = ?,length = ?
+where pastureid=? and id=?',
+params = 'bcode,bname,allowratio,autozone,autosecond,autosecondname,isstart,enable,AUFNR,pen,length,pastureid,id'
+where sqlname = 'updateBar' and enable = 1;
+
+# 新增speend 车速字段
+UPDATE apisql SET sqlstr ="SELECT 0 islock,
+eqcode,tname,datacaptureno,trim(tclassid) tclassid,
+(SELECT dictlist.label FROM dictlist JOIN dict ON dict.id=dictlist.pid WHERE dict.name='TMR设备类型' AND dict.ENABLE=1  and dictlist .enable=1  and value = tclassid) as tclassname,
+maxstirfeed,remark,enable,TRIM(id) id,TRIM(pastureid)pastureid,
+tcolor,imei,ifnull(datainterface,1),autozone,autosecond,if(autosecondname= '' or autosecondname is null,'禁用',autosecondname ) autosecondname,(select pasture_name from pasture where pastureid = tmr.pastureid) as pasturename,
+ifnull(gps,'')  gps ,volume,speed,volume_rate
+FROM
+  tmr
+WHERE pastureid = ?  and  if(?=0,tclassid in (0,6,7),tclassid in (1,2,3,4))
+  AND (tmr.eqcode LIKE CONCAT('%',?,'%')  OR ? = '')
+ AND (tmr.tclassname =? OR ? = '')
+AND (tmr.tname =? OR ? = '')
+  AND (tmr.enable =? OR ? = '')  AND (tmr.imei =? OR ? = '')
+ORDER BY tmr.id DESC",params = 'pastureid,eqtype,eqcode,eqcode,classname,classname,tname,tname,enable,enable,imei,imei'
+where sqlname = 'getTmrList' and enable = 1;
+
+# 新增speend 车速字段
+update  apisql SET sqlstr ="update tmr join dictlist  JOIN `dict` ON `dict`.`id`=dictlist.`pid` set eqcode=? ,tname=? ,datacaptureno=?,tclassid=?,tclassname=? ,maxstirfeed=?,tmr.enable=?,remark=? ,tcolor = ?,imei=?,datainterface=?,autozone=if(?='',null,?),autosecond=if(?='',null,?),  autosecondname=dictlist.label,gps = ?,volume = ?,speed = ifnull(?,0), volume_rate = ? where tmr.pastureid=? and tmr.id= ? and `dict`.`name`='跳转延时' AND `dict`.ENABLE=1  and dictlist.enable=1 and  dictlist.`value` =? ",
+params = 'eqcode,tname,datacaptureno,tclassid,tclassname,maxstirfeed,enable,remark,tcolor,imei,datainterface,autozone,autozone,autosecond,autosecond,gps,volume,speed,volume_rate,pastureid,id,autosecond'
+where sqlname = 'updateTMR' and enable = 1;
+
+# 新增TMR设备撒料档位操作
+insert into apisql(sqlname,sqlstr,params) values ('getTmrGearList','select * from tmr_gear where tmr_id = ? and is_delete = 1 order by gear', 'tmr_id');
+
+# 新增圈舍下拉框列表数据
+insert into apisql(sqlname,sqlstr,params) values ('getPenList','select id,pen from bar where pastureid = ? and enable = 1 and isdelete = 0 and pen is not null group by pen order by sort', 'pastureid');
+
+ALTER TABLE `tmr`  ADD COLUMN `volume_rate` decimal(12,5) NOT NULL COMMENT '撒料机每转体积';

+ 40 - 0
models/tmr_gear.go

@@ -0,0 +1,40 @@
+package models
+
+import (
+	"fmt"
+	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
+	"sort"
+	"time"
+)
+
+type TmrGear struct {
+	Id        int64                   `json:"id"`
+	TmrId     int64                   `json:"tmr_id"`
+	Gear      string                  `json:"name"`
+	Rev       int64                   `json:"rev"`
+	IsDelete  operationPb.IsShow_Kind `json:"is_delete"`
+	CreatedAt int64                   `json:"created_at"`
+	UpdatedAt int64                   `json:"updated_at"`
+}
+
+func (t *TmrGear) TableName() string {
+	return "tmr_gear"
+}
+
+func NewTmrGearList(tmrId int64, req *operationPb.UpdateOrCreateTmrGearRequest) []*TmrGear {
+	sort.Slice(req.Params, func(i, j int) bool {
+		return req.Params[i].Rev < req.Params[j].Rev
+	})
+	res := make([]*TmrGear, len(req.Params))
+	for i, v := range req.Params {
+		res[i] = &TmrGear{
+			TmrId:     tmrId,
+			Gear:      fmt.Sprintf("%d", i+1),
+			Rev:       int64(v.Rev),
+			IsDelete:  operationPb.IsShow_OK,
+			CreatedAt: time.Now().Unix(),
+			UpdatedAt: time.Now().Unix(),
+		}
+	}
+	return res
+}

+ 58 - 0
module/sheep.go

@@ -0,0 +1,58 @@
+package module
+
+import (
+	"context"
+	"errors"
+	"gitee.com/xuyiping_admin/pkg/xerr"
+	"github.com/xormplus/xorm"
+	"strconv"
+	"time"
+	"tmr-watch/http/handle/restful"
+	"tmr-watch/models"
+
+	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
+)
+
+// SearchTrmGearByTmrId 查询撒料电机档位数据
+func SearchTrmGearByTmrId(ctx context.Context, tmrId int64) ([]*models.TmrGear, error) {
+	res := make([]*models.TmrGear, 0)
+	if err := restful.Engine.NewSession().Table(new(models.TmrGear).TableName()).Where("is_delete = ?", operationPb.IsShow_OK).
+		Where("tmr_id = ?", tmrId).Find(&res); err != nil {
+		if !errors.Is(err, xorm.ErrNotExist) {
+			return nil, err
+		}
+	}
+	return res, nil
+}
+
+func CreateOrUpdateTmrGear(ctx context.Context, req *operationPb.UpdateOrCreateTmrGearRequest) error {
+	tmrId, _ := strconv.ParseInt(req.TmrId, 10, 64)
+	tmrGearList, err := SearchTrmGearByTmrId(ctx, tmrId)
+	if err != nil {
+		return xerr.WithStack(err)
+	}
+
+	tx := restful.Engine.NewSession()
+	defer tx.Close()
+
+	if err = tx.Begin(); err != nil {
+		return xerr.WithStack(err)
+	}
+
+	if len(tmrGearList) >= 1 {
+		if _, err = tx.Table(new(models.TmrGear).TableName()).Where("tmr_id = ?", req.TmrId).Update(map[string]interface{}{
+			"is_delete":  operationPb.IsShow_NO,
+			"updated_at": time.Now().Unix(),
+		}); err != nil {
+			tx.Rollback()
+			return xerr.WithStack(err)
+		}
+	}
+
+	newTmrGearList := models.NewTmrGearList(tmrId, req)
+	if _, err = tx.Table(new(models.TmrGear).TableName()).Insert(newTmrGearList); err != nil {
+		tx.Rollback()
+		return xerr.WithStack(err)
+	}
+	return tx.Commit()
+}

+ 30 - 0
service/sheep/tmr_gear.go

@@ -0,0 +1,30 @@
+package sheep
+
+import (
+	"context"
+	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
+	"gitee.com/xuyiping_admin/pkg/xerr"
+	"tmr-watch/module"
+)
+
+func UpdateOrCreateTmrGear(ctx context.Context, req *operationPb.UpdateOrCreateTmrGearRequest) error {
+	if len(req.Params) <= 0 {
+		return xerr.Customf("参数错误: params")
+	}
+
+	if len(req.TmrId) <= 0 {
+		return xerr.Customf("参数错误: tmr_id")
+	}
+	revList := make(map[int32]struct{})
+	for _, v := range req.Params {
+		if _, ok := revList[v.Rev]; ok {
+			return xerr.Customf("不能出现同样转速的数据")
+		}
+		revList[v.Rev] = struct{}{}
+	}
+
+	if err := module.CreateOrUpdateTmrGear(ctx, req); err != nil {
+		return xerr.WithStack(err)
+	}
+	return nil
+}