liujiandao
2023-10-18 07ecf8f047049c92193018d8f0e683bf3a49791e
报表模块修改
8个文件已修改
152 ■■■■ 已修改文件
controllers/location.go 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/report_forms_controller.go 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/location_product.go 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/product_category.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
request/report_forms_request.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/location.go
@@ -4,7 +4,6 @@
    "errors"
    "github.com/gin-gonic/gin"
    "strconv"
    "strings"
    "wms/extend/code"
    "wms/extend/util"
    "wms/models"
@@ -115,13 +114,24 @@
        util.ResponseFormat(c, code.RequestParamError, err)
        return
    }
    index := strings.LastIndex(params.JointName, "/")
    if index > 0 {
        jn := params.JointName[:index]
        oldName := params.JointName[index+1:]
        if oldName != params.Name {
            params.JointName = jn + "/" + params.Name
    //index := strings.LastIndex(params.JointName, "/")
    //if index > 0 {
    //    jn := params.JointName[:index]
    //    oldName := params.JointName[index+1:]
    //    if oldName != params.Name {
    //        params.JointName = jn + "/" + params.Name
    //    }
    //}
    if params.ParentId != 0 {
        //查询上级名称
        first, err := models.NewLocationSearch().SetID(params.ParentId).First()
        if err != nil {
            util.ResponseFormat(c, code.RequestParamError, "查询上级名称失败")
            return
        }
        params.JointName = first.JointName + "/" + params.Name
    } else {
        params.JointName = params.Name
    }
    err := models.NewLocationSearch().Update(&params)
    if err != nil {
controllers/report_forms_controller.go
@@ -1,6 +1,7 @@
package controllers
import (
    "fmt"
    "github.com/gin-gonic/gin"
    "wms/constvar"
    "wms/extend/code"
@@ -28,20 +29,31 @@
    }
    //查询产品
    search := models.NewMaterialSearch()
    if params.PageInfo.Check() {
        search.SetPage(params.Page, params.PageSize)
    search.Orm = search.Orm.Model(&models.Material{}).
        Select(`material.id, material.name, material.cost, material.amount, material.unit, wms_product_category.name as category_name `).
        Joins("left join wms_product_category on material.category_id = wms_product_category.id")
    if len(params.CategoryIds) > 0 {
        search.Orm.Where("material.category_id in (?)", params.CategoryIds)
    }
    materials, total, err := search.SetCategoryIds(params.CategoryIds).Find()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "查询产品类型失败")
    if params.KeyWord != "" {
        search.Orm.Where("material.name like ?", "%"+params.KeyWord+"%").Or("wms_product_category.name like ?", "%"+params.KeyWord+"%")
    }
    var (
        materials = make([]*models.Material, 0)
        total     int64
    )
    if err := search.Orm.Count(&total).Error; err != nil {
        util.ResponseFormat(c, code.RequestParamError, "查询total失败")
        return
    }
    //查询产品类型
    categories, err := models.NewProductCategorySearch().SetIds(params.CategoryIds).FindNotTotal()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "查询产品类型失败")
    if params.Page*params.PageSize > 0 {
        search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
    }
    if err := search.Orm.Find(&materials).Error; err != nil {
        util.ResponseFormat(c, code.RequestParamError, fmt.Errorf("查询产品失败: %v", err))
        return
    }
    //查询出入库数量
    locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal()
    if err != nil {
@@ -85,12 +97,7 @@
        resp.Amount = material.Amount
        resp.Unit = material.Unit
        resp.Value = material.Amount.Mul(material.Cost)
        for _, category := range categories {
            if material.CategoryId == int(category.ID) {
                resp.ProductType = category.Name
                break
            }
        }
        resp.ProductType = material.CategoryName
        for _, details := range inHouse {
            if material.ID == details.ProductId {
                resp.In = resp.In.Add(details.Amount)
@@ -166,7 +173,7 @@
// @Tags      报表
// @Summary   获取位置报表
// @Produce   application/json
// @Param     object  body  request.PageInfo true  "查询参数"
// @Param     object  body  request.GetLocationForms true  "查询参数"
// @Success   200 {object} util.ResponseList{data=[]response.LocationForms}    "成功"
// @Router    /api-wms/v1/forms/getLocationForms [post]
func (slf ReportFormsController) GetLocationForms(c *gin.Context) {
docs/docs.go
@@ -400,7 +400,7 @@
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.PageInfo"
                            "$ref": "#/definitions/request.GetLocationForms"
                        }
                    }
                ],
@@ -2645,7 +2645,7 @@
                    ]
                },
                "name": {
                    "description": "位置名称",
                    "description": "分类名称",
                    "type": "string"
                },
                "parentId": {
@@ -3058,6 +3058,10 @@
                        "type": "integer"
                    }
                },
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3075,6 +3079,10 @@
        "request.GetInventoryHistory": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3097,6 +3105,22 @@
                }
            }
        },
        "request.GetLocationForms": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                }
            }
        },
        "request.GetProductList": {
            "type": "object",
            "properties": {
docs/swagger.json
@@ -388,7 +388,7 @@
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.PageInfo"
                            "$ref": "#/definitions/request.GetLocationForms"
                        }
                    }
                ],
@@ -2633,7 +2633,7 @@
                    ]
                },
                "name": {
                    "description": "位置名称",
                    "description": "分类名称",
                    "type": "string"
                },
                "parentId": {
@@ -3046,6 +3046,10 @@
                        "type": "integer"
                    }
                },
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3063,6 +3067,10 @@
        "request.GetInventoryHistory": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3085,6 +3093,22 @@
                }
            }
        },
        "request.GetLocationForms": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                }
            }
        },
        "request.GetProductList": {
            "type": "object",
            "properties": {
docs/swagger.yaml
@@ -529,7 +529,7 @@
        - $ref: '#/definitions/constvar.InventoryValuation'
        description: 库存计价
      name:
        description: 位置名称
        description: 分类名称
        type: string
      parentId:
        description: 上级id
@@ -818,6 +818,9 @@
        items:
          type: integer
        type: array
      keyWord:
        description: 搜索条件
        type: string
      page:
        description: 页码
        type: integer
@@ -830,6 +833,9 @@
    type: object
  request.GetInventoryHistory:
    properties:
      keyWord:
        description: 搜索条件
        type: string
      page:
        description: 页码
        type: integer
@@ -845,6 +851,17 @@
      unit:
        description: 单位
        type: string
    type: object
  request.GetLocationForms:
    properties:
      keyWord:
        type: string
      page:
        description: 页码
        type: integer
      pageSize:
        description: 每页大小
        type: integer
    type: object
  request.GetProductList:
    properties:
@@ -1493,7 +1510,7 @@
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.PageInfo'
          $ref: '#/definitions/request.GetLocationForms'
      produces:
      - application/json
      responses:
models/location_product.go
@@ -90,7 +90,13 @@
    }
    if slf.Keyword != "" {
        db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
        //db = db.Where("Product.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
        db.Joins("left join wms_location on wms_location_product.location_id = wms_location.id").
            Joins("left join material on wms_location_product.product_id = material.id").
            Joins("left join wms_product_category on wms_location_product.product_category_id = wms_product_category.id").
            Where("wms_location.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword)).
            Or("material.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword)).
            Or("wms_product_category.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
    }
    if slf.Preload {
models/product_category.go
@@ -11,7 +11,7 @@
    // ProductCategory 产品分类
    ProductCategory struct {
        BaseModelInt
        Name                 string                        `json:"name" gorm:"index;type:varchar(255);not null;comment:分类名称"` //位置名称
        Name                 string                        `json:"name" gorm:"index;type:varchar(255);not null;comment:分类名称"` //分类名称
        ParentId             int                           `json:"parentId" gorm:"type:int;comment:上级分类id"`                   //上级id
        RouteId              int                           `json:"routeId" gorm:"type:int;comment:路线id"`                      //路线id
        RouteName            string                        `json:"routeName" gorm:"type:varchar(512);comment:路线名称"`           //公司
request/report_forms_request.go
@@ -4,6 +4,7 @@
    PageInfo
    CategoryIds   []int  `json:"categoryIds"`   //产品类型id
    WarehouseCode string `json:"warehouseCode"` //仓库缩写
    KeyWord       string `json:"keyWord"`       //搜索条件
}
type GetInventoryHistory struct {
@@ -11,6 +12,7 @@
    ProduceId   string `json:"produceId"`   //产品id
    ProductName string `json:"productName"` //产品名称
    Unit        string `json:"unit"`        //单位
    KeyWord     string `json:"keyWord"`     //搜索条件
}
type GetLocationForms struct {