From 79eca4ef507f418b88a0817f43a9ea25750a818a Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期六, 23 九月 2023 16:57:57 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS --- controllers/operation.go | 92 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 72 insertions(+), 20 deletions(-) diff --git a/controllers/operation.go b/controllers/operation.go index 32d16bb..9d6fa9b 100644 --- a/controllers/operation.go +++ b/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(¶ms); err != nil { logx.Errorf("Operation create err: %v", err) util.ResponseFormat(c, code.SaveFail, "娣诲姞澶辫触锛�"+err.Error()) @@ -128,13 +130,12 @@ // @Tags 鍏ュ簱/鍑哄簱 // @Summary 鍏ュ簱/鍑哄簱鍒楄〃 // @Produce application/json -// @Accept json -// @Param object query request.OperationList true "鍙傛暟" -// @Success 200 {object} util.Response "鎴愬姛" -// @Router /api-wms/v1/operation/operation [get] +// @Param object body request.OperationList true "鏌ヨ鍙傛暟" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/operation/list [post] func (slf OperationController) List(c *gin.Context) { var params request.OperationList - if err := c.ShouldBindQuery(¶ms); err != nil { + if err := c.BindJSON(¶ms); err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error()) return } @@ -144,14 +145,19 @@ } search := models.NewOperationSearch() search.SetPage(params.Page, params.PageSize) + if params.Number != "" { + search.SetNumber(params.Number) + } + if params.SourceNumber != "" { + search.SetSourceNumber(params.SourceNumber) + } list, total, err := search.SetOperationTypeId(params.OperationTypeId).SetPreload(true).SetOrder("created_at desc").Find() if err != nil { util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error()) return } - util.ResponseFormatList(c, code.Success, list, int(total)) - + util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize) } func (slf OperationController) CheckListParams(params *request.OperationList) error { @@ -293,11 +299,7 @@ if err := models.NewOperationSearch().SetOrm(tx).SetID(id).Update(&models.Operation{Status: constvar.OperationStatus_Finish}); err != nil { return err } - if operationType.BaseOperationType == constvar.BaseOperationTypeIncoming { - if err := models.NewMaterialSearch().Orm.Exec("update material INNER JOIN wms_operation_details on wms_operation_details.product_id=material.id INNER JOIN wms_operation on wms_operation.id=wms_operation_details.operation_id set material.amount=material.amount + wms_operation_details.quantity where wms_operation.id=?", id).Error; err != nil { - return err - } - } else if operationType.BaseOperationType == constvar.BaseOperationTypeOutgoing { + if operationType.BaseOperationType != constvar.BaseOperationTypeInternal { var listProdtId []string var listProdt []*models.Material mapProdt := make(map[string]decimal.Decimal) @@ -312,18 +314,34 @@ if err := models.NewMaterialSearch().Orm.Where("id IN ?", listProdtId).Find(&listProdt).Error; err != nil { return err } - for _, 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())) + if operationType.BaseOperationType == constvar.BaseOperationTypeIncoming { + for k, v := range listProdt { + if value, ok := mapProdt[v.ID]; !ok { + return errors.New("浜у搧绉嶇被寮傚父") + } else { + listProdt[k].Amount = listProdt[k].Amount.Add(value) + if err := tx.Save(listProdt[k]).Error; err != nil { + return err + } } } } - if err := models.NewMaterialSearch().Orm.Exec("update material INNER JOIN wms_operation_details on wms_operation_details.product_id=material.id INNER JOIN wms_operation on wms_operation.id=wms_operation_details.operation_id set material.amount=material.amount - wms_operation_details.quantity where wms_operation.id=?", id).Error; err != nil { - return err + if operationType.BaseOperationType == constvar.BaseOperationTypeOutgoing { + 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 { @@ -332,3 +350,37 @@ } util.ResponseFormat(c, code.Success, "鎿嶄綔鎴愬姛") } + +// ListAll +// @Tags 鍏ュ簱/鍑哄簱 +// @Summary 璋冩嫧 +// @Produce application/json +// @Param object body request.OperationAllList true "鍙傛暟" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/operation/listAll [post] +func (slf OperationController) ListAll(c *gin.Context) { + var params request.OperationAllList + if err := c.BindJSON(¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error()) + return + } + if !params.PageInfo.Check() { + util.ResponseFormat(c, code.RequestParamError, "鏁版嵁鍒嗛〉淇℃伅閿欒") + return + } + search := models.NewOperationSearch() + search.SetPage(params.Page, params.PageSize) + search.SetPage(params.Page, params.PageSize) + if params.Number != "" { + search.SetNumber(params.Number) + } + if params.SourceNumber != "" { + search.SetSourceNumber(params.SourceNumber) + } + list, total, err := search.SetPreload(true).SetOrder("created_at desc").Find() + if err != nil { + util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error()) + return + } + util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize) +} -- Gitblit v1.8.0