jiangshuai
2023-10-19 55bd24a2d654052d4c4c8eb6e7bee244af81d446
Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS
10个文件已修改
191 ■■■■ 已修改文件
controllers/location.go 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/report_forms_controller.go 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/db.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/location.go 24 ●●●●● 补丁 | 查看 | 原始文档 | 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 {
@@ -57,13 +69,13 @@
    dbIn := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
        Joins("left join wms_operation ON wms_operation_details.operation_id=wms_operation.id").
        Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeIncoming).
        Where("wms_operation.status=?", constvar.OperationStatus_Ready)
        Where("wms_operation.status in (?)", []int{3, 4})
    dbOut := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
        Joins("left join wms_operation ON wms_operation_details.operation_id=wms_operation.id").
        Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeOutgoing).
        Where("wms_operation.status=?", constvar.OperationStatus_Ready)
        Where("wms_operation.status in (?)", []int{3, 4})
    if len(locationIds) > 0 {
        dbIn.Where("wms_operation.from_location_id in (?)", locationIds)
        dbIn.Where("wms_operation.to_location_id in (?)", locationIds)
        dbOut.Where("wms_operation.from_location_id in (?)", locationIds)
    }
    err = dbIn.Find(&inHouse).Error
@@ -82,15 +94,9 @@
        resp.ProduceId = material.ID
        resp.ProductName = material.Name
        resp.Cost = material.Cost
        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)
@@ -101,6 +107,7 @@
                resp.Out = resp.Out.Add(details.Amount)
            }
        }
        resp.Amount = resp.In.Sub(resp.Out)
        resp.AvailableNumber = resp.Amount
        result = append(result, resp)
    }
@@ -125,7 +132,7 @@
    if params.PageInfo.Check() {
        detailsSearch.SetPage(params.Page, params.PageSize)
    }
    details, total, err := detailsSearch.SetProductId(params.ProduceId).Find()
    details, err := detailsSearch.SetProductId(params.ProduceId).FindNotTotal()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "查询操作详情失败")
        return
@@ -135,7 +142,7 @@
        operationIds = append(operationIds, detail.OperationID)
    }
    //获取已完成的操作记录
    operations, err := models.NewOperationSearch().SetIds(operationIds).SetStatus(constvar.OperationStatus_Finish).FindNotTotal()
    operations, total, err := models.NewOperationSearch().SetIds(operationIds).SetStatus(constvar.OperationStatus_Finish).Find()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "查询操作记录失败")
        return
@@ -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": {
@@ -3062,6 +3062,10 @@
                        "type": "integer"
                    }
                },
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3079,6 +3083,10 @@
        "request.GetInventoryHistory": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3098,6 +3106,22 @@
                "unit": {
                    "description": "单位",
                    "type": "string"
                }
            }
        },
        "request.GetLocationForms": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                }
            }
        },
@@ -3710,6 +3734,8 @@
    Description:      "",
    InfoInstanceName: "swagger",
    SwaggerTemplate:  docTemplate,
    LeftDelim:        "{{",
    RightDelim:       "}}",
}
func init() {
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": {
@@ -3050,6 +3050,10 @@
                        "type": "integer"
                    }
                },
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3067,6 +3071,10 @@
        "request.GetInventoryHistory": {
            "type": "object",
            "properties": {
                "keyWord": {
                    "description": "搜索条件",
                    "type": "string"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -3089,6 +3097,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
@@ -821,6 +821,9 @@
        items:
          type: integer
        type: array
      keyWord:
        description: 搜索条件
        type: string
      page:
        description: 页码
        type: integer
@@ -833,6 +836,9 @@
    type: object
  request.GetInventoryHistory:
    properties:
      keyWord:
        description: 搜索条件
        type: string
      page:
        description: 页码
        type: integer
@@ -848,6 +854,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:
@@ -1499,7 +1516,7 @@
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.PageInfo'
          $ref: '#/definitions/request.GetLocationForms'
      produces:
      - application/json
      responses:
models/db.go
@@ -98,6 +98,7 @@
func InsertDefaultData() {
    models := []interface{}{
        NewDepartmentSearch(),
        NewLocationSearch(),
    }
    for _, model := range models {
        if id, ok := model.(InitDefaultData); ok {
models/location.go
@@ -317,3 +317,27 @@
    }
    return records, nil
}
// InitDefaultData 初始化数据
func (slf *LocationSearch) InitDefaultData() error {
    var (
        db          = slf.Orm.Table(slf.TableName())
        total int64 = 0
    )
    if err := db.Count(&total).Error; err != nil {
        return err
    }
    if total != 0 {
        return nil
    }
    locations := make([]*Location, 0)
    locations = append(locations, &Location{Name: "供应商位置", Type: 1, JointName: "供应商位置"})
    locations = append(locations, &Location{Name: "视图", Type: 2, JointName: "视图"})
    locations = append(locations, &Location{Name: "客户位置", Type: 4, JointName: "客户位置"})
    locations = append(locations, &Location{Name: "库存损失", Type: 5, JointName: "库存损失"})
    locations = append(locations, &Location{Name: "生产", Type: 6, JointName: "生产"})
    locations = append(locations, &Location{Name: "中转位置", Type: 7, JointName: "中转位置"})
    locations = append(locations, &Location{Name: "报废位置", Type: 8, JointName: "报废位置"})
    locations = append(locations, &Location{Name: "库存盘点", Type: 9, JointName: "库存盘点"})
    return slf.CreateBatch(locations)
}
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 {