zhangqian
2024-08-01 72025bc1118c62acb57bba645ed142faddc410a7
注释掉已不用的盘点接口
2个文件已修改
372 ■■■■ 已修改文件
controllers/location_product_amount.go 366 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/router.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/location_product_amount.go
@@ -2,7 +2,6 @@
import (
    "errors"
    "fmt"
    "github.com/gin-gonic/gin"
    "github.com/mitchellh/mapstructure"
    "github.com/shopspring/decimal"
@@ -14,7 +13,6 @@
    "wms/extend/util"
    "wms/middleware"
    "wms/models"
    "wms/pkg/mysqlx"
    "wms/request"
    "wms/response"
    "wms/service"
@@ -23,126 +21,126 @@
type LocationProductAmountController struct {
}
// List
// @Tags      库存盘点
// @Summary   库存盘点列表
// @Produce   application/json
// @Param         object  body  request.GetList true  "查询参数"
// @Success   200 {object} util.Response    "成功"
// @Router    /api-wms/v1/locationProductAmount/list [post]
func (slf LocationProductAmountController) List(c *gin.Context) {
    var params request.GetList
    if err := c.BindJSON(&params); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误:"+err.Error())
        return
    }
    if !params.Check() {
        util.ResponseFormat(c, code.RequestParamError, "参数异常")
        return
    }
    productIds := make([]string, 0)
    locationIds := make([]int, 0)
    if params.Keyword != "" {
        materials, _ := models.NewMaterialSearch().SetKeyword(params.Keyword).FindNotTotal()
        for _, material := range materials {
            productIds = append(productIds, material.ID)
        }
        locations, _ := models.NewLocationSearch().SetKeyword(params.Keyword).FindNotTotal()
        for _, location := range locations {
            locationIds = append(locationIds, location.Id)
        }
    }
    search := models.NewLocationProductAmountSearch()
    //search.SetPage(params.Page, params.PageSize)
    //wms_operation_details.amount as adjust_amount,wms_operation.id as operation_id,wms_operation.status
    search.Orm = search.Orm.
        Table("wms_location_product_amount").
        Select(`wms_location_product_amount.id as location_product_amount_id,wms_location.id as location_id,wms_location.joint_name as location_name,
        material.id as product_id,material.name as product_name,wms_location_product_amount.amount,material.unit,
        wms_location_product_amount.create_date,material.weight`).
        InnerJoins("inner join material on material.id=wms_location_product_amount.product_id").
        InnerJoins("inner join wms_location on wms_location.id=wms_location_product_amount.location_id")
    var (
        records = make([]*models.LocationProductAmountWithOperation, 0)
        total   int64
    )
    if len(productIds) > 0 {
        search.Orm = search.Orm.Where("wms_location_product_amount.product_id in (?)", productIds)
    }
    if len(locationIds) > 0 {
        search.Orm = search.Orm.Where("wms_location_product_amount.location_id in (?)", locationIds)
    }
    if err := search.Orm.Count(&total).Error; err != nil {
        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
        return
    }
    //search.Orm = search.Orm.Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product")
    if params.Page*params.PageSize > 0 {
        search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
    }
    if err := search.Orm.Order("wms_location_product_amount.updated_at desc").Find(&records).Error; err != nil {
        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
        return
    }
    for k, v := range records {
        var operation models.Operation
        db := mysqlx.GetDB()
        if res := db.Table("wms_operation").Preload("Details").InnerJoins("inner join wms_operation_details "+
            "on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation.base_operation_type=? and "+
            "wms_operation.status=? and wms_operation_details.to_location_id=? and wms_operation_details.product_id=?", constvar.BaseOperationTypeAdjust,
            constvar.OperationStatus_Ready, v.LocationId, v.ProductId).First(&operation); res.Error != nil {
            if errors.Is(res.Error, gorm.ErrRecordNotFound) {
                records[k].Status = constvar.OperationStatus_Finish
                records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
                continue
            } else {
                util.ResponseFormat(c, code.RequestError, fmt.Errorf("find operation err: %v", res.Error.Error()))
                return
            }
        } else {
            if len(operation.Details) > 0 {
                records[k].DifferenceAmount = operation.Details[0].Amount
                records[k].AdjustAmount = v.DifferenceAmount.Sub(v.Amount)
            }
            records[k].OperationId = operation.Id
            records[k].Status = operation.Status
        }
        records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
    }
    productIds = make([]string, 0)
    for _, record := range records {
        productIds = append(productIds, record.ProductId)
    }
    products, err := models.NewMaterialSearch().SetIDs(productIds).FindNotTotal()
    if err != nil {
        util.ResponseFormat(c, code.RequestError, "查询产品失败")
        return
    }
    productMap := models.MaterialMap(products)
    for k, v := range records {
        product := productMap[v.ProductId]
        if product == nil {
            continue
        }
        moreUnit := product.MoreUnit
        if moreUnit != nil && *moreUnit {
            records[k].AmountMoreUnits = service.CreateMoreUnit(v.Amount, product.MoreUnitList)
        }
    }
    util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize)
}
//// List
//// @Tags      库存盘点
//// @Summary   库存盘点列表
//// @Produce   application/json
//// @Param         object  body  request.GetList true  "查询参数"
//// @Success   200 {object} util.Response    "成功"
//// @Router    /api-wms/v1/locationProductAmount/list [post]
//func (slf LocationProductAmountController) List(c *gin.Context) {
//    var params request.GetList
//    if err := c.BindJSON(&params); err != nil {
//        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误:"+err.Error())
//        return
//    }
//    if !params.Check() {
//        util.ResponseFormat(c, code.RequestParamError, "参数异常")
//        return
//    }
//    productIds := make([]string, 0)
//    locationIds := make([]int, 0)
//    if params.Keyword != "" {
//        materials, _ := models.NewMaterialSearch().SetKeyword(params.Keyword).FindNotTotal()
//        for _, material := range materials {
//            productIds = append(productIds, material.ID)
//        }
//        locations, _ := models.NewLocationSearch().SetKeyword(params.Keyword).FindNotTotal()
//        for _, location := range locations {
//            locationIds = append(locationIds, location.Id)
//        }
//    }
//
//    search := models.NewLocationProductAmountSearch()
//    //search.SetPage(params.Page, params.PageSize)
//
//    //wms_operation_details.amount as adjust_amount,wms_operation.id as operation_id,wms_operation.status
//    search.Orm = search.Orm.
//        Table("wms_location_product_amount").
//        Select(`wms_location_product_amount.id as location_product_amount_id,wms_location.id as location_id,wms_location.joint_name as location_name,
//        material.id as product_id,material.name as product_name,wms_location_product_amount.amount,material.unit,
//        wms_location_product_amount.create_date,material.weight`).
//        InnerJoins("inner join material on material.id=wms_location_product_amount.product_id").
//        InnerJoins("inner join wms_location on wms_location.id=wms_location_product_amount.location_id")
//
//    var (
//        records = make([]*models.LocationProductAmountWithOperation, 0)
//        total   int64
//    )
//    if len(productIds) > 0 {
//        search.Orm = search.Orm.Where("wms_location_product_amount.product_id in (?)", productIds)
//
//    }
//    if len(locationIds) > 0 {
//        search.Orm = search.Orm.Where("wms_location_product_amount.location_id in (?)", locationIds)
//    }
//
//    if err := search.Orm.Count(&total).Error; err != nil {
//        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
//        return
//    }
//    //search.Orm = search.Orm.Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product")
//    if params.Page*params.PageSize > 0 {
//        search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
//    }
//    if err := search.Orm.Order("wms_location_product_amount.updated_at desc").Find(&records).Error; err != nil {
//        util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
//        return
//    }
//
//    for k, v := range records {
//        var operation models.Operation
//        db := mysqlx.GetDB()
//        if res := db.Table("wms_operation").Preload("Details").InnerJoins("inner join wms_operation_details "+
//            "on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation.base_operation_type=? and "+
//            "wms_operation.status=? and wms_operation_details.to_location_id=? and wms_operation_details.product_id=?", constvar.BaseOperationTypeAdjust,
//            constvar.OperationStatus_Ready, v.LocationId, v.ProductId).First(&operation); res.Error != nil {
//            if errors.Is(res.Error, gorm.ErrRecordNotFound) {
//                records[k].Status = constvar.OperationStatus_Finish
//                records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
//                continue
//            } else {
//                util.ResponseFormat(c, code.RequestError, fmt.Errorf("find operation err: %v", res.Error.Error()))
//                return
//            }
//        } else {
//            if len(operation.Details) > 0 {
//                records[k].DifferenceAmount = operation.Details[0].Amount
//                records[k].AdjustAmount = v.DifferenceAmount.Sub(v.Amount)
//            }
//            records[k].OperationId = operation.Id
//            records[k].Status = operation.Status
//        }
//        records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
//    }
//
//    productIds = make([]string, 0)
//    for _, record := range records {
//        productIds = append(productIds, record.ProductId)
//    }
//
//    products, err := models.NewMaterialSearch().SetIDs(productIds).FindNotTotal()
//    if err != nil {
//        util.ResponseFormat(c, code.RequestError, "查询产品失败")
//        return
//    }
//
//    productMap := models.MaterialMap(products)
//
//    for k, v := range records {
//        product := productMap[v.ProductId]
//        if product == nil {
//            continue
//        }
//
//        moreUnit := product.MoreUnit
//        if moreUnit != nil && *moreUnit {
//            records[k].AmountMoreUnits = service.CreateMoreUnit(v.Amount, product.MoreUnitList)
//        }
//    }
//
//    util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize)
//}
// LocationProductList
// @Tags      库存盘点
@@ -204,28 +202,28 @@
    util.ResponseFormatList(c, code.Success, dataList, int(total))
}
// Add
// @Tags      库存盘点
// @Summary   添加库存盘点信息
// @Produce   application/json
// @Param     Authorization    header string true "token"
// @Param     object  body  request.UpdateLocationProductAmount true  "入库/出库信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/locationProductAmount/add [post]
func (slf LocationProductAmountController) Add(c *gin.Context) {
    var reqParams request.UpdateLocationProductAmount
    if err := c.BindJSON(&reqParams); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
        return
    }
    userInfo := middleware.GetUserInfo(c)
    if err := AddLocationProductAmount(reqParams, userInfo); err != nil {
        util.ResponseFormat(c, code.RequestError, err)
        return
    }
    util.ResponseFormat(c, code.Success, "添加成功")
}
//// Add
//// @Tags      库存盘点
//// @Summary   添加库存盘点信息
//// @Produce   application/json
//// @Param     Authorization    header string true "token"
//// @Param     object  body  request.UpdateLocationProductAmount true  "入库/出库信息"
//// @Success   200 {object} util.Response "成功"
//// @Router    /api-wms/v1/locationProductAmount/add [post]
//func (slf LocationProductAmountController) Add(c *gin.Context) {
//    var reqParams request.UpdateLocationProductAmount
//    if err := c.BindJSON(&reqParams); err != nil {
//        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
//        return
//    }
//    userInfo := middleware.GetUserInfo(c)
//    if err := AddLocationProductAmount(reqParams, userInfo); err != nil {
//        util.ResponseFormat(c, code.RequestError, err)
//        return
//    }
//
//    util.ResponseFormat(c, code.Success, "添加成功")
//}
func AddLocationProductAmount(reqParams request.UpdateLocationProductAmount, userInfo *request.CustomClaims) error {
    if reqParams.LocationId == 0 {
@@ -330,46 +328,46 @@
    util.ResponseFormat(c, code.Success, ruleList)
}
// Update
// @Tags      库存盘点
// @Summary   修改库存盘点信息
// @Produce   application/json
// @Param     Authorization    header string true "token"
// @Param     object  body  request.UpdateLocationProductAmount true  "入库/出库信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/locationProductAmount/update [post]
func (slf LocationProductAmountController) Update(c *gin.Context) {
    var reqParams request.UpdateLocationProductAmount
    if err := c.BindJSON(&reqParams); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
        return
    }
    userInfo := middleware.GetUserInfo(c)
    if reqParams.OperationId == 0 {
        if err := AddLocationProductAmount(reqParams, userInfo); err != nil {
            util.ResponseFormat(c, code.RequestError, err.Error())
            return
        }
        util.ResponseFormat(c, code.Success, "添加成功")
        return
    }
    operation, err := models.NewOperationSearch().SetID(reqParams.OperationId).First()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "未找到相关数据")
        return
    }
    if operation.Status != constvar.OperationStatus_Ready {
        util.ResponseFormat(c, code.RequestParamError, "该记录已被验证,请刷新页面查看")
        return
    }
    if err := models.NewOperationDetailsSearch().SetOperationId(reqParams.OperationId).SetProductId(reqParams.ProductId).Update(&models.OperationDetails{Amount: reqParams.DifferenceAmount}); err != nil {
        util.ResponseFormat(c, code.RequestError, "修改失败:"+err.Error())
        return
    }
    util.ResponseFormat(c, code.Success, "修改成功")
}
//// Update
//// @Tags      库存盘点
//// @Summary   修改库存盘点信息
//// @Produce   application/json
//// @Param     Authorization    header string true "token"
//// @Param     object  body  request.UpdateLocationProductAmount true  "入库/出库信息"
//// @Success   200 {object} util.Response "成功"
//// @Router    /api-wms/v1/locationProductAmount/update [post]
//func (slf LocationProductAmountController) Update(c *gin.Context) {
//    var reqParams request.UpdateLocationProductAmount
//    if err := c.BindJSON(&reqParams); err != nil {
//        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
//        return
//    }
//    userInfo := middleware.GetUserInfo(c)
//    if reqParams.OperationId == 0 {
//        if err := AddLocationProductAmount(reqParams, userInfo); err != nil {
//            util.ResponseFormat(c, code.RequestError, err.Error())
//            return
//        }
//        util.ResponseFormat(c, code.Success, "添加成功")
//        return
//    }
//    operation, err := models.NewOperationSearch().SetID(reqParams.OperationId).First()
//    if err != nil {
//        util.ResponseFormat(c, code.RequestParamError, "未找到相关数据")
//        return
//    }
//    if operation.Status != constvar.OperationStatus_Ready {
//        util.ResponseFormat(c, code.RequestParamError, "该记录已被验证,请刷新页面查看")
//        return
//    }
//
//    if err := models.NewOperationDetailsSearch().SetOperationId(reqParams.OperationId).SetProductId(reqParams.ProductId).Update(&models.OperationDetails{Amount: reqParams.DifferenceAmount}); err != nil {
//        util.ResponseFormat(c, code.RequestError, "修改失败:"+err.Error())
//        return
//    }
//
//    util.ResponseFormat(c, code.Success, "修改成功")
//}
// Finish
// deprecated
router/router.go
@@ -158,10 +158,10 @@
    locationProductAmountController := new(controllers.LocationProductAmountController)
    locationProductAmountAPI := r.Group(urlPrefix + "/locationProductAmount")
    {
        locationProductAmountAPI.POST("add", locationProductAmountController.Add)                                 //添加库存盘点信息
        locationProductAmountAPI.POST("list", locationProductAmountController.List)                               //查看库存盘点列表
        //locationProductAmountAPI.POST("add", locationProductAmountController.Add)                                 //添加库存盘点信息
        //locationProductAmountAPI.POST("list", locationProductAmountController.List)                               //查看库存盘点列表
        locationProductAmountAPI.POST("locationProductList", locationProductAmountController.LocationProductList) //查看产品库存列表
        locationProductAmountAPI.POST("update", locationProductAmountController.Update)                           //修改库存盘点信息
        //locationProductAmountAPI.POST("update", locationProductAmountController.Update)                           //修改库存盘点信息
        //locationProductAmountAPI.POST("finish", locationProductAmountController.Finish)                                     //应用、验证库存盘点信息
        locationProductAmountAPI.POST("getRuleList", locationProductAmountController.GetRuleList)                           //获取上架规则
        locationProductAmountAPI.POST("getLocationProductAmount", locationProductAmountController.GetLocationProductAmount) //获取位置产品信息