jiangshuai
2023-09-23 db425e3e5022111c8b776fa18f453ed04623deb2
1.报废新增、修改、列表、验证
10个文件已修改
874 ■■■■■ 已修改文件
constvar/const.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/operation.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/product_controller.go 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/material.go 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/operation.go 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
request/product_request.go 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/router.go 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/const.go
@@ -124,6 +124,7 @@
    LocationTypeInventoryLoss                         // 库存损失
    LocationTypeProduction                            // 生产
    LocationTypeTransit                               // 中转位置
    LocationTypeDisuse
)
func (t LocationType) Valid() bool {
controllers/operation.go
@@ -7,6 +7,7 @@
    "github.com/shopspring/decimal"
    "gorm.io/gorm"
    "strconv"
    "time"
    "wms/constvar"
    "wms/extend/code"
    "wms/extend/util"
@@ -47,6 +48,7 @@
    }
    params.Status = constvar.OperationStatus_Ready
    params.Number = strconv.FormatInt(time.Now().Unix(), 10)
    if err := models.NewOperationSearch().Create(&params); err != nil {
        logx.Errorf("Operation create err: %v", err)
        util.ResponseFormat(c, code.SaveFail, "添加失败:"+err.Error())
@@ -156,7 +158,6 @@
    }
    util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize)
}
func (slf OperationController) CheckListParams(params *request.OperationList) error {
@@ -318,7 +319,7 @@
                    if value, ok := mapProdt[v.ID]; !ok {
                        return errors.New("产品种类异常")
                    } else {
                        listProdt[k].Amount.Add(value)
                        listProdt[k].Amount = listProdt[k].Amount.Add(value)
                        if err := tx.Save(listProdt[k]).Error; err != nil {
                            return err
                        }
@@ -333,7 +334,7 @@
                        if v.Amount.LessThan(value) {
                            return errors.New(fmt.Sprintf("产品:%v,库存:%v,出库:%v,数量不够,无法完成出库操作", v.Name, v.Amount.String(), value.String()))
                        }
                        listProdt[k].Amount.Sub(value)
                        listProdt[k].Amount = listProdt[k].Amount.Sub(value)
                        if err := tx.Save(listProdt[k]).Error; err != nil {
                            return err
                        }
@@ -381,7 +382,5 @@
        util.ResponseFormat(c, code.RequestError, "查找失败:"+err.Error())
        return
    }
    util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize)
}
controllers/product_controller.go
@@ -1,11 +1,19 @@
package controllers
import (
    "errors"
    "fmt"
    "github.com/gin-gonic/gin"
    "github.com/shopspring/decimal"
    "github.com/spf13/cast"
    "gorm.io/gorm"
    "strconv"
    "time"
    "wms/constvar"
    "wms/extend/code"
    "wms/extend/util"
    "wms/models"
    "wms/pkg/logx"
    "wms/request"
    "wms/utils"
)
@@ -304,3 +312,240 @@
    util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize)
}
// AddDisuse
// @Tags      产品
// @Summary   添加报废信息
// @Produce   application/json
// @Param     object  body  request.AddDisuse true  "入库/出库信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/product/addDisuse [post]
func (slf ProductController) AddDisuse(c *gin.Context) {
    var params request.AddDisuse
    if err := c.BindJSON(&params); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误:"+err.Error())
        return
    }
    if params.Amount.LessThanOrEqual(decimal.NewFromInt(0)) {
        util.ResponseFormat(c, code.RequestParamError, "数量异常")
        return
    }
    if params.FromLocationId == 0 {
        util.ResponseFormat(c, code.RequestParamError, "请选择源位置")
        return
    }
    if params.ToLocationId == 0 {
        util.ResponseFormat(c, code.RequestParamError, "请选择报废位置")
        return
    }
    if params.SourceNumber == "" {
        util.ResponseFormat(c, code.RequestParamError, "请输入源单据")
        return
    }
    detail := &models.OperationDetails{
        ProductId:   params.ProductId,
        ProductName: params.ProductName,
        Amount:      params.Amount,
        Unit:        params.Unit,
    }
    operation := models.Operation{
        Number:          strconv.FormatInt(time.Now().Unix(), 10),
        SourceNumber:    params.SourceNumber,
        OperationTypeId: 0,
        Status:          constvar.OperationStatus_Ready,
        FromLocationID:  params.FromLocationId,
        ToLocationID:    params.ToLocationId,
        OperationDate:   time.Now().Format("2006-01-02 15:04:05"),
        Details:         []*models.OperationDetails{detail},
    }
    if err := models.NewOperationSearch().Create(&operation); err != nil {
        logx.Errorf("Operation create err: %v", err)
        util.ResponseFormat(c, code.SaveFail, "添加失败:"+err.Error())
        return
    }
    util.ResponseFormat(c, code.Success, "添加成功")
}
// ListDisuse
// @Tags      产品
// @Summary   报废列表
// @Produce   application/json
// @Param         object  body  request.QueryDisuseList true  "查询参数"
// @Success   200 {object} util.Response    "成功"
// @Router    /api-wms/v1/product/listDisuse [post]
func (slf ProductController) ListDisuse(c *gin.Context) {
    var params request.QueryDisuseList
    if err := c.BindJSON(&params); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误:"+err.Error())
        return
    }
    if !params.PageInfo.Check() {
        util.ResponseFormat(c, code.RequestParamError, "数据分页信息错误")
        return
    }
    db := models.NewOperationSearch().Orm.Table("wms_operation").Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation.from_location_id,wms_operation.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,wms_operation_details.product_name,wms_operation_details.unit,wms_operation_details.amount").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id")
    if params.SourceNumber != "" {
        db = db.Where("wms_operation.source_number like ?", fmt.Sprintf("%%%v%%", params.SourceNumber))
    }
    if params.Number != "" {
        db = db.Where("wms_operation.number like ?", fmt.Sprintf("%%%v%%", params.Number))
    }
    db = db.Where("wms_operation.operation_type_id=?", 0)
    var (
        records = make([]*models.ResponseDisuseList, 0)
        total   int64
    )
    //list, total, err := search.SetDisuse(true).SetPreload(true).SetOrder("created_at desc").Find()
    if err := db.Count(&total).Error; err != nil {
        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
        return
    }
    db = db.Preload("ToLocation").Preload("FromLocation")
    if params.Page*params.PageSize > 0 {
        db = db.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
    }
    if err := db.Find(&records).Error; err != nil {
        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
        return
    }
    util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize)
}
// FinishDisuse
//
//    @Tags        产品
//    @Summary    验证报废
//    @Produce    application/json
//    @Param        id    path        int            true    "id"
//    @Success    200    {object}    util.Response    "成功"
//    @Router        /api-wms/v1/product/finishDisuse/{id} [put]
func (slf ProductController) FinishDisuse(c *gin.Context) {
    id, err := strconv.Atoi(c.Param("id"))
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "错误的id值")
        return
    }
    if id == 0 {
        util.ResponseFormat(c, code.RequestParamError, "id为0")
        return
    }
    operation, err := models.NewOperationSearch().SetID(id).First()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "未找到相关信息:"+err.Error())
        return
    }
    if operation.Status != constvar.OperationStatus_Ready {
        util.ResponseFormat(c, code.RequestError, "该验证无法完成")
        return
    }
    if err := models.WithTransaction(func(tx *gorm.DB) error {
        if err := models.NewOperationSearch().SetOrm(tx).SetID(id).Update(&models.Operation{Status: constvar.OperationStatus_Finish}); err != nil {
            return err
        }
        var listProdtId []string
        var listProdt []*models.Material
        mapProdt := make(map[string]decimal.Decimal)
        listDetails, err := models.NewOperationDetailsSearch().SetOperationId(operation.Id).FindAll()
        if err != nil {
            return err
        }
        for _, v := range listDetails {
            listProdtId = append(listProdtId, v.ProductId)
            mapProdt[v.ProductId] = v.Amount
        }
        if err := models.NewMaterialSearch().Orm.Where("id IN ?", listProdtId).Find(&listProdt).Error; err != nil {
            return err
        }
        for k, v := range listProdt {
            if value, ok := mapProdt[v.ID]; !ok {
                return errors.New("产品种类异常")
            } else {
                if v.Amount.LessThan(value) {
                    return errors.New(fmt.Sprintf("产品:%v,库存:%v,报废:%v,数量不够,无法完成报废操作", v.Name, v.Amount.String(), value.String()))
                }
                listProdt[k].Amount = listProdt[k].Amount.Sub(value)
                if err := tx.Save(listProdt[k]).Error; err != nil {
                    return err
                }
            }
        }
        return nil
    }); err != nil {
        util.ResponseFormat(c, code.RequestError, err.Error())
        return
    }
    util.ResponseFormat(c, code.Success, "操作成功")
}
// UpdateDisuse
// @Tags      产品
// @Summary   修改报废信息
// @Produce   application/json
// @Param     object  body  request.UpdateDisuse true  "入库/出库信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/product/updateDisuse [post]
func (slf ProductController) UpdateDisuse(c *gin.Context) {
    var params request.UpdateDisuse
    if err := c.BindJSON(&params); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误:"+err.Error())
        return
    }
    if params.Amount.LessThanOrEqual(decimal.NewFromInt(0)) {
        util.ResponseFormat(c, code.RequestParamError, "数量异常")
        return
    }
    if params.FromLocationId == 0 {
        util.ResponseFormat(c, code.RequestParamError, "请选择源位置")
        return
    }
    if params.ToLocationId == 0 {
        util.ResponseFormat(c, code.RequestParamError, "请选择报废位置")
        return
    }
    if params.SourceNumber == "" {
        util.ResponseFormat(c, code.RequestParamError, "请输入源单据")
        return
    }
    if params.Status != constvar.OperationStatus_Ready {
        util.ResponseFormat(c, code.RequestParamError, "该信息无法修改")
        return
    }
    detail := &models.OperationDetails{
        ProductId:   params.ProductId,
        ProductName: params.ProductName,
        Amount:      params.Amount,
        Unit:        params.Unit,
    }
    operation := models.Operation{
        Id:              params.Id,
        Number:          params.Number,
        SourceNumber:    params.SourceNumber,
        OperationTypeId: 0,
        Status:          params.Status,
        FromLocationID:  params.FromLocationId,
        ToLocationID:    params.ToLocationId,
        OperationDate:   params.OperationDate,
        Details:         []*models.OperationDetails{detail},
    }
    if err := models.WithTransaction(func(tx *gorm.DB) error {
        if err := models.NewOperationDetailsSearch().SetOrm(tx).SetOperationId(params.Id).Delete(); err != nil {
            return err
        }
        operationSearch := models.NewOperationSearch().SetOrm(tx)
        if err := operationSearch.Orm.Model(&operation).Association("Details").Replace(operation.Details); err != nil {
            return err
        }
        if err := models.NewOperationSearch().SetOrm(tx).SetID(params.Id).Save(&operation); err != nil {
            return err
        }
        return nil
    }); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "修改失败:"+err.Error())
        return
    }
    util.ResponseFormat(c, code.Success, "添加成功")
}
docs/docs.go
@@ -787,6 +787,36 @@
                }
            }
        },
        "/api-wms/v1/product/addDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "添加报废信息",
                "parameters": [
                    {
                        "description": "入库/出库信息",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddDisuse"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/addProduct": {
            "post": {
                "produces": [
@@ -887,6 +917,34 @@
                "parameters": [
                    {
                        "type": "string",
                        "description": "id",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/finishDisuse/{id}": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "验证报废",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "id",
                        "name": "id",
                        "in": "path",
@@ -1073,6 +1131,36 @@
                }
            }
        },
        "/api-wms/v1/product/listDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "报废列表",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.QueryDisuseList"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/listOperaton": {
            "post": {
                "produces": [
@@ -1113,6 +1201,36 @@
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/updateDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "修改报废信息",
                "parameters": [
                    {
                        "description": "入库/出库信息",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateDisuse"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
@@ -1456,7 +1574,8 @@
                4,
                5,
                6,
                7
                7,
                8
            ],
            "x-enum-comments": {
                "LocationTypeCustomer": "客户位置",
@@ -1474,7 +1593,8 @@
                "LocationTypeCustomer",
                "LocationTypeInventoryLoss",
                "LocationTypeProduction",
                "LocationTypeTransit"
                "LocationTypeTransit",
                "LocationTypeDisuse"
            ]
        },
        "constvar.MaterialMode": {
@@ -2306,6 +2426,32 @@
                }
            }
        },
        "request.AddDisuse": {
            "type": "object",
            "properties": {
                "amount": {
                    "type": "number"
                },
                "fromLocationId": {
                    "type": "integer"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "sourceNumber": {
                    "type": "string"
                },
                "toLocationId": {
                    "type": "integer"
                },
                "unit": {
                    "type": "string"
                }
            }
        },
        "request.AddOperation": {
            "type": "object",
            "properties": {
@@ -2582,6 +2728,25 @@
                }
            }
        },
        "request.QueryDisuseList": {
            "type": "object",
            "properties": {
                "number": {
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                },
                "sourceNumber": {
                    "type": "string"
                }
            }
        },
        "request.QueryOperationList": {
            "type": "object",
            "properties": {
@@ -2634,6 +2799,44 @@
                }
            }
        },
        "request.UpdateDisuse": {
            "type": "object",
            "properties": {
                "amount": {
                    "type": "number"
                },
                "fromLocationId": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "number": {
                    "type": "string"
                },
                "operationDate": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "sourceNumber": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/constvar.OperationStatus"
                },
                "toLocationId": {
                    "type": "integer"
                },
                "unit": {
                    "type": "string"
                }
            }
        },
        "request.UpdateOperation": {
            "type": "object",
            "properties": {
docs/swagger.json
@@ -775,6 +775,36 @@
                }
            }
        },
        "/api-wms/v1/product/addDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "添加报废信息",
                "parameters": [
                    {
                        "description": "入库/出库信息",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddDisuse"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/addProduct": {
            "post": {
                "produces": [
@@ -875,6 +905,34 @@
                "parameters": [
                    {
                        "type": "string",
                        "description": "id",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/finishDisuse/{id}": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "验证报废",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "id",
                        "name": "id",
                        "in": "path",
@@ -1061,6 +1119,36 @@
                }
            }
        },
        "/api-wms/v1/product/listDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "报废列表",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.QueryDisuseList"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/listOperaton": {
            "post": {
                "produces": [
@@ -1101,6 +1189,36 @@
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api-wms/v1/product/updateDisuse": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "产品"
                ],
                "summary": "修改报废信息",
                "parameters": [
                    {
                        "description": "入库/出库信息",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateDisuse"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/util.Response"
                        }
                    }
                }
@@ -1444,7 +1562,8 @@
                4,
                5,
                6,
                7
                7,
                8
            ],
            "x-enum-comments": {
                "LocationTypeCustomer": "客户位置",
@@ -1462,7 +1581,8 @@
                "LocationTypeCustomer",
                "LocationTypeInventoryLoss",
                "LocationTypeProduction",
                "LocationTypeTransit"
                "LocationTypeTransit",
                "LocationTypeDisuse"
            ]
        },
        "constvar.MaterialMode": {
@@ -2294,6 +2414,32 @@
                }
            }
        },
        "request.AddDisuse": {
            "type": "object",
            "properties": {
                "amount": {
                    "type": "number"
                },
                "fromLocationId": {
                    "type": "integer"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "sourceNumber": {
                    "type": "string"
                },
                "toLocationId": {
                    "type": "integer"
                },
                "unit": {
                    "type": "string"
                }
            }
        },
        "request.AddOperation": {
            "type": "object",
            "properties": {
@@ -2570,6 +2716,25 @@
                }
            }
        },
        "request.QueryDisuseList": {
            "type": "object",
            "properties": {
                "number": {
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                },
                "sourceNumber": {
                    "type": "string"
                }
            }
        },
        "request.QueryOperationList": {
            "type": "object",
            "properties": {
@@ -2622,6 +2787,44 @@
                }
            }
        },
        "request.UpdateDisuse": {
            "type": "object",
            "properties": {
                "amount": {
                    "type": "number"
                },
                "fromLocationId": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "number": {
                    "type": "string"
                },
                "operationDate": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "sourceNumber": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/constvar.OperationStatus"
                },
                "toLocationId": {
                    "type": "integer"
                },
                "unit": {
                    "type": "string"
                }
            }
        },
        "request.UpdateOperation": {
            "type": "object",
            "properties": {
docs/swagger.yaml
@@ -77,6 +77,7 @@
    - 5
    - 6
    - 7
    - 8
    type: integer
    x-enum-comments:
      LocationTypeCustomer: 客户位置
@@ -94,6 +95,7 @@
    - LocationTypeInventoryLoss
    - LocationTypeProduction
    - LocationTypeTransit
    - LocationTypeDisuse
  constvar.MaterialMode:
    enum:
    - 原材料
@@ -679,6 +681,23 @@
        description: 备注
        type: string
    type: object
  request.AddDisuse:
    properties:
      amount:
        type: number
      fromLocationId:
        type: integer
      productId:
        type: string
      productName:
        type: string
      sourceNumber:
        type: string
      toLocationId:
        type: integer
      unit:
        type: string
    type: object
  request.AddOperation:
    properties:
      comment:
@@ -870,6 +889,19 @@
      sourceNumber:
        type: string
    type: object
  request.QueryDisuseList:
    properties:
      number:
        type: string
      page:
        description: 页码
        type: integer
      pageSize:
        description: 每页大小
        type: integer
      sourceNumber:
        type: string
    type: object
  request.QueryOperationList:
    properties:
      page:
@@ -904,6 +936,31 @@
        type: integer
      remark:
        description: 备注
        type: string
    type: object
  request.UpdateDisuse:
    properties:
      amount:
        type: number
      fromLocationId:
        type: integer
      id:
        type: integer
      number:
        type: string
      operationDate:
        type: string
      productId:
        type: string
      productName:
        type: string
      sourceNumber:
        type: string
      status:
        $ref: '#/definitions/constvar.OperationStatus'
      toLocationId:
        type: integer
      unit:
        type: string
    type: object
  request.UpdateOperation:
@@ -1507,6 +1564,25 @@
      summary: 编辑作业类型
      tags:
      - 业务类型
  /api-wms/v1/product/addDisuse:
    post:
      parameters:
      - description: 入库/出库信息
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.AddDisuse'
      produces:
      - application/json
      responses:
        "200":
          description: 成功
          schema:
            $ref: '#/definitions/util.Response'
      summary: 添加报废信息
      tags:
      - 产品
  /api-wms/v1/product/addProduct:
    post:
      parameters:
@@ -1581,6 +1657,24 @@
      summary: 删除产品类型
      tags:
      - 产品类型
  /api-wms/v1/product/finishDisuse/{id}:
    put:
      parameters:
      - description: id
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 成功
          schema:
            $ref: '#/definitions/util.Response'
      summary: 验证报废
      tags:
      - 产品
  /api-wms/v1/product/getProductCategoryDetails/{id}:
    get:
      parameters:
@@ -1679,6 +1773,25 @@
      summary: 获取产品列表
      tags:
      - 产品
  /api-wms/v1/product/listDisuse:
    post:
      parameters:
      - description: 查询参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.QueryDisuseList'
      produces:
      - application/json
      responses:
        "200":
          description: 成功
          schema:
            $ref: '#/definitions/util.Response'
      summary: 报废列表
      tags:
      - 产品
  /api-wms/v1/product/listOperaton:
    post:
      parameters:
@@ -1705,6 +1818,25 @@
      summary: 产品历史出入库信息
      tags:
      - 产品
  /api-wms/v1/product/updateDisuse:
    post:
      parameters:
      - description: 入库/出库信息
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.UpdateDisuse'
      produces:
      - application/json
      responses:
        "200":
          description: 成功
          schema:
            $ref: '#/definitions/util.Response'
      summary: 修改报废信息
      tags:
      - 产品
  /api-wms/v1/product/updateProduct:
    post:
      parameters:
models/material.go
@@ -475,3 +475,24 @@
    }
    return result.Max, nil
}
type ResponseDisuseList struct {
    Id             int                      `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
    Number         string                   `json:"number" gorm:"type:varchar(255)"`                                 //单号
    SourceNumber   string                   `json:"sourceNumber" gorm:"type:varchar(255)"`                           //源单号
    Status         constvar.OperationStatus `json:"status" gorm:"type:int(11);not null;comment:状态"`                  //状态
    FromLocationID int                      `json:"fromLocationId"   gorm:"type:int;not null;comment:源位置id"`         //源位置id
    FromLocation   Location                 `json:"fromLocation"     gorm:"foreignKey:FromLocationID;references:Id"` //源位置
    ToLocation     Location                 `json:"toLocation"      gorm:"foreignKey:ToLocationID;references:Id"`    //目标位置
    ToLocationID   int                      `json:"toLocationId"    gorm:"type:int;not null;comment:目标位置id"`         //目标位置id
    OperationDate  string                   `json:"operationDate" gorm:"type:varchar(31);comment:安排日期"`
    ContacterID    int                      `json:"contacterID" gorm:"type:int;comment:联系人ID"`
    ContacterName  string                   `json:"contacterName" gorm:"type:varchar(63);comment:联系人姓名"`
    CompanyID      int                      `json:"companyID" gorm:"type:int;comment:公司ID-客户"`
    CompanyName    string                   `json:"companyName" gorm:"type:varchar(127);comment:公司名称-客户"`
    Comment        string                   `json:"comment" gorm:"type:text;comment:备注"`
    ProductId      string                   `json:"productId" gorm:"type:varchar(191);not null;comment:产品id"`   //产品id
    ProductName    string                   `json:"productName" gorm:"type:varchar(255);not null;comment:产品名称"` //产品名称
    Amount         decimal.Decimal          `json:"amount" gorm:"type:decimal(20,2);not null;comment:数量"`       //数量
    Unit           string                   `json:"unit" gorm:"type:varchar(31);comment:单位"`
}
models/operation.go
@@ -45,6 +45,7 @@
        Keyword  string
        Orm      *gorm.DB
        Preload  bool
        Disuse   bool
    }
)
@@ -101,6 +102,11 @@
    return slf
}
func (slf *OperationSearch) SetDisuse(disuse bool) *OperationSearch {
    slf.Disuse = disuse
    return slf
}
func (slf *OperationSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&Operation{})
@@ -131,6 +137,10 @@
        db = db.Model(&Operation{}).Preload("Details").Preload("FromLocation").Preload("ToLocation")
    }
    if slf.Disuse {
        db = db.Where("operation_type_id = ?", 0)
    }
    return db
}
request/product_request.go
@@ -1,5 +1,10 @@
package request
import (
    "github.com/shopspring/decimal"
    "wms/constvar"
)
type GetProductList struct {
    PageInfo
    KeyWord string `json:"keyWord"`
@@ -9,3 +14,33 @@
    PageInfo
    ProductId string `json:"productId"`
}
type AddDisuse struct {
    ProductId      string          `json:"productId"`
    ProductName    string          `json:"productName"`
    Amount         decimal.Decimal `json:"amount"`
    FromLocationId int             `json:"fromLocationId"`
    ToLocationId   int             `json:"toLocationId"`
    SourceNumber   string          `json:"sourceNumber"`
    Unit           string          `json:"unit"`
}
type QueryDisuseList struct {
    PageInfo
    Number       string `json:"number"`
    SourceNumber string `json:"sourceNumber"`
}
type UpdateDisuse struct {
    Id             int                      `json:"id"`
    ProductId      string                   `json:"productId"`
    ProductName    string                   `json:"productName"`
    Amount         decimal.Decimal          `json:"amount"`
    FromLocationId int                      `json:"fromLocationId"`
    ToLocationId   int                      `json:"toLocationId"`
    SourceNumber   string                   `json:"sourceNumber"`
    Unit           string                   `json:"unit"`
    Number         string                   `json:"number"`
    Status         constvar.OperationStatus `json:"status"`
    OperationDate  string                   `json:"operationDate"`
}
router/router.go
@@ -102,7 +102,12 @@
        productAPI.POST("updateProductCategory", productController.UpdateProductCategory)            //修改产品类型
        productAPI.DELETE("deleteProductCategory/:id", productController.DeleteProductCategory)      //删除产品类型
        productAPI.POST("listOperaton", productController.ListOperation) //查看产品的历史出入库信息
        productAPI.POST("listOperaton", productController.ListOperation)   //查看产品的历史出入库信息
        productAPI.POST("addDisuse", productController.AddDisuse)          //添加报废信息
        productAPI.POST("listDisuse", productController.ListDisuse)        //查看产品的历史出入库信息
        productAPI.PUT("finishDisuse/:id", productController.FinishDisuse) //报废验证
        productAPI.POST("updateDisuse", productController.UpdateDisuse)    //修改报废信息
    }
    return r