| | |
| | | "fmt" |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/shopspring/decimal" |
| | | "github.com/spf13/cast" |
| | | "gorm.io/gorm" |
| | | "strconv" |
| | | "wms/constvar" |
| | |
| | | if location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeVendor)).First(); err != nil { |
| | | return err |
| | | } else { |
| | | params.FromLocationId = location.Id |
| | | params.FromLocationID = location.Id |
| | | } |
| | | if params.ToLocationId == 0 { |
| | | if params.ToLocationID == 0 { |
| | | return errors.New("请选择目标位置") |
| | | } |
| | | } |
| | |
| | | if location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeCustomer)).First(); err != nil { |
| | | return err |
| | | } else { |
| | | params.ToLocationId = location.Id |
| | | params.ToLocationID = location.Id |
| | | } |
| | | if params.FromLocationId == 0 { |
| | | if params.FromLocationID == 0 { |
| | | return errors.New("请选择源位置") |
| | | } |
| | | } |
| | | if operationType.BaseOperationType == constvar.BaseOperationTypeInternal { |
| | | if params.ToLocationId == 0 { |
| | | if params.ToLocationID == 0 { |
| | | return errors.New("请选择目标位置") |
| | | } |
| | | if params.FromLocationId == 0 { |
| | | if params.FromLocationID == 0 { |
| | | return errors.New("请选择源位置") |
| | | } |
| | | } |
| | |
| | | //检查明细部分 |
| | | for _, v := range params.Details { |
| | | if v.ProductId == "" { |
| | | return errors.New("productID为0") |
| | | return errors.New("productID为空") |
| | | } |
| | | if v.ProductName == "" { |
| | | return errors.New("产品名称异常") |
| | | } |
| | | if v.Quantity.IsNegative() { |
| | | if v.Amount.IsNegative() { |
| | | return errors.New("产品数量出错") |
| | | } |
| | | } |
| | |
| | | // @Summary 修改入库/出库信息 |
| | | // @Produce application/json |
| | | // @Param object body request.UpdateOperation true "入库信息" |
| | | // @Param id path int true "入库信息id" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-wms/v1/operation/operation/{id} [put] |
| | | // @Router /api-wms/v1/operation/update [post] |
| | | func (slf OperationController) Update(c *gin.Context) { |
| | | id := cast.ToUint(c.Param("id")) |
| | | if id == 0 { |
| | | util.ResponseFormat(c, code.RequestParamError, "空的记录id") |
| | | return |
| | | } |
| | | var reqParams request.UpdateOperation |
| | | var params models.Operation |
| | | if err := c.BindJSON(&reqParams); err != nil { |
| | |
| | | } |
| | | 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(¶ms).Association("Details").Replace(params.Details); err != nil { |
| | | return err |
| | | } |
| | | if err := models.NewOperationSearch().SetOrm(tx).SetID(params.Id).Save(¶ms); err != nil { |
| | |
| | | } |
| | | for _, v := range listDetails { |
| | | listProdtId = append(listProdtId, v.ProductId) |
| | | mapProdt[v.ProductId] = v.Quantity |
| | | mapProdt[v.ProductId] = v.Amount |
| | | } |
| | | if err := models.NewMaterialSearch().Orm.Where("id IN ?", listProdtId).Find(&listProdt).Error; err != nil { |
| | | return err |