| | |
| | | func (slf OperationController) Add(c *gin.Context) { |
| | | var reqParams request.AddOperation |
| | | var params models.Operation |
| | | |
| | | if err := c.BindJSON(&reqParams); err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") |
| | | return |
| | |
| | | util.ResponseFormat(c, code.RequestParamError, "单号已存在") |
| | | return |
| | | } |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | if err := models.NewOperationSearch().Create(¶ms); err != nil { |
| | | return err |
| | | } |
| | | od := params.Details |
| | | for _, v := range od { |
| | | //material, err := models.NewMaterialSearch().SetID(v.ProductId).First() |
| | | //if err != nil {return err} |
| | | material := new(models.Material) |
| | | material.ID = v.ProductId |
| | | material.Cost = v.Cost |
| | | material.SalePrice = v.SalePrice |
| | | if err := models.NewMaterialSearch().SetOrm(db).Update(material); err != nil { |
| | | return err |
| | | } |
| | | } |
| | | return nil |
| | | }) |
| | | |
| | | if err := models.NewOperationSearch().Create(¶ms); err != nil { |
| | | if err != nil { |
| | | logx.Errorf("Operation create err: %v", err) |
| | | util.ResponseFormat(c, code.SaveFail, "添加失败:"+err.Error()) |
| | | return |
| | |
| | | } |
| | | |
| | | func (slf OperationController) CheckParams(params models.Operation) error { |
| | | if params.SourceNumber == "" { |
| | | /*if params.SourceNumber == "" { |
| | | return errors.New("请填入源单号") |
| | | } |
| | | }*/ |
| | | |
| | | if params.Number == "" { |
| | | return errors.New("请填入单号") |
| | |
| | | if int(params.Status) != 0 { |
| | | search.SetStatus(params.Status) |
| | | } |
| | | materials, err := models.NewMaterialSearch().FindNotTotal() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestError, "查找失败:"+err.Error()) |
| | | return |
| | | } |
| | | costMap := make(map[string]decimal.Decimal) |
| | | salePriceMap := make(map[string]decimal.Decimal) |
| | | for _, material := range materials { |
| | | costMap[material.ID] = material.Cost |
| | | salePriceMap[material.ID] = material.SalePrice |
| | | } |
| | | 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 |
| | | } |
| | | for _, v := range list { |
| | | for _, v1 := range v.Details { |
| | | //v1.SalePrice = decimal.NewFromFloat(1.2345) |
| | | //v1.Cost = decimal.NewFromFloat(9.678) |
| | | v1.SalePrice = v1.Cost |
| | | v1.Cost = v1.SalePrice |
| | | } |
| | | } |
| | | |
| | | util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize) |
| | |
| | | if err := models.NewOperationSearch().SetOrm(tx).SetID(params.Id).Save(¶ms); err != nil { |
| | | return err |
| | | } |
| | | od := params.Details |
| | | for _, v := range od { |
| | | //material, err := models.NewMaterialSearch().SetID(v.ProductId).First() |
| | | //if err != nil {return err} |
| | | material := new(models.Material) |
| | | material.ID = v.ProductId |
| | | material.Cost = v.Cost |
| | | material.SalePrice = v.SalePrice |
| | | if err := models.NewMaterialSearch().SetOrm(tx).Update(material); err != nil { |
| | | return err |
| | | } |
| | | } |
| | | return nil |
| | | }); err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "修改失败:"+err.Error()) |