zhangqian
2023-08-26 4fecb91d754b375a8775e6767603ebcb44ede363
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package v1
 
import (
    "apsClient/constvar"
    "apsClient/model/response"
    _ "apsClient/model/response"
    "apsClient/pkg/contextx"
    "apsClient/pkg/ecode"
    "apsClient/service"
    "github.com/gin-gonic/gin"
    "github.com/spf13/cast"
)
 
type PlcApi struct{}
 
// GetProductProgress
// @Tags      生产数量
// @Summary   获取生产进度
// @Produce   application/json
// @Success   200   {object}  contextx.Response{data=response.ProductProgress}  "成功"
// @Router    /v1/plc/productProgress [get]
func (slf *PlcApi) GetProductProgress(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
    finishNumber, _ := service.PlcCacheGet(constvar.PlcCacheKeyFinishNumber)
    totalNumber, _ := service.PlcCacheGet(constvar.PlcCacheKeyTotalNumber)
    resp := new(response.ProductProgress)
    resp.FinishNumber = cast.ToInt(finishNumber)
    resp.TotalNumber = cast.ToInt(totalNumber)
    ctx.OkWithDetailed(resp)
}
 
// SetProductNumber
// @Tags      生产数量
// @Summary   设置生产总量
// @Produce   application/json
// @Success   200   {object}  contextx.Response{}  "成功"
// @Router    /v1/plc/setProductNumber [post]
func (slf *PlcApi) SetProductNumber(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
 
    taskData, code := service.NewTaskService().GetTask()
    if code != ecode.OK {
        ctx.Fail(code)
        return
    }
 
    if taskData.Order == nil {
        ctx.FailWithMsg(ecode.UnknownErr, "当前没有待生产工单")
        return
    }
 
    plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
    if code != ecode.OK {
        ctx.FailWithMsg(ecode.UnknownErr, "请先配置PLC")
        return
    }
 
    err := service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, taskData.Order.Amount.IntPart())
    if err != nil {
        ctx.FailWithMsg(ecode.UnknownErr, "设置失败,请检查plc配置")
        return
    }
    ctx.Ok()
}