|
@@ -30,6 +30,13 @@ var PastureDataLogType = map[string]int32{
|
|
|
"FeedFormula_IsModify": 2,
|
|
|
"FeedFormula_Cancel_Distribute": 3,
|
|
|
}
|
|
|
+var EditRecodeMap = map[string]string{
|
|
|
+ "forage_name": "饲料名称",
|
|
|
+ "weight": "重量",
|
|
|
+ "stir_delay": "搅拌延迟",
|
|
|
+ "allow_error": "允许误差",
|
|
|
+ "sort": "排序",
|
|
|
+}
|
|
|
|
|
|
// CreateFeedFormula 添加数据
|
|
|
func (s *StoreEntry) CreateFeedFormula(ctx context.Context, req *operationPb.AddFeedFormulaRequest) error {
|
|
@@ -109,6 +116,113 @@ func (s *StoreEntry) AddFeedByFeedFormula(ctx context.Context, req *operationPb.
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// EditFeedByFeedFormula 配方饲料编辑
|
|
|
+func (s *StoreEntry) EditFeedByFeedFormula(ctx context.Context, req *operationPb.AddFeedFormulaDetail) error {
|
|
|
+ feedFormulaData := &model.FeedFormula{Id: int64(req.FeedFormulaId)}
|
|
|
+ if err := s.DB.Model(new(model.FeedFormula)).First(feedFormulaData).Error; err != nil {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ feedFormulaDetail := &model.FeedFormulaDetail{Id: int64(req.Id)}
|
|
|
+ if err := s.DB.Model(new(model.FeedFormulaDetail)).
|
|
|
+ Where("is_show = ?", operationPb.IsShow_OK).
|
|
|
+ First(feedFormulaDetail).Error; err != nil {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ // 添加修改记录
|
|
|
+ defer s.EditFeedFormulaDetailAddRecode(ctx, req, feedFormulaDetail)
|
|
|
+
|
|
|
+ // 更新数据
|
|
|
+ updateData := &model.FeedFormulaDetail{
|
|
|
+ ForageId: int64(req.ForageId),
|
|
|
+ ForageName: req.ForageName,
|
|
|
+ ForageGroupName: req.ForageGroupName,
|
|
|
+ Weight: int32(req.Weight * 100),
|
|
|
+ StirDelay: req.StirDelay,
|
|
|
+ AllowError: req.AllowError,
|
|
|
+ Sort: req.Sort,
|
|
|
+ }
|
|
|
+ if err := s.DB.Model(new(model.FeedFormulaDetail)).Where("id = ?", req.Id).Updates(updateData).Error; err != nil {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// EditFeedFormulaDetailAddRecode 更新饲料配方修改记录
|
|
|
+func (s *StoreEntry) EditFeedFormulaDetailAddRecode(ctx context.Context, req *operationPb.AddFeedFormulaDetail, feedFormulaDetail *model.FeedFormulaDetail) {
|
|
|
+ editRecordList := make([]*model.FeedFormulaEditRecord, 0)
|
|
|
+
|
|
|
+ editRecordData := &model.FeedFormulaEditRecord{
|
|
|
+ FeedFormulaId: int64(req.FeedFormulaId),
|
|
|
+ PastureName: "集团",
|
|
|
+ ForageName: req.ForageName,
|
|
|
+ Status: operationPb.FeedFormulaEditRecordType_UPDATE,
|
|
|
+ }
|
|
|
+
|
|
|
+ if operationName, err := s.GetCurrentUserName(ctx); err != nil {
|
|
|
+ zaplog.Error("EditFeedByFeedFormula", zap.Any("GetCurrentUserName", err))
|
|
|
+ } else {
|
|
|
+ editRecordData.OperationName = operationName
|
|
|
+ }
|
|
|
+
|
|
|
+ lastGroupIdData := &model.FeedFormulaEditRecord{}
|
|
|
+ if err := s.DB.Model(new(model.FeedFormulaEditRecord)).
|
|
|
+ Where("is_show = ?", operationPb.IsShow_OK).
|
|
|
+ Order("group_id desc").
|
|
|
+ First(&lastGroupIdData).Error; err != nil {
|
|
|
+ zaplog.Error("EditFeedByFeedFormula", zap.Any("lastGroupIdData", err))
|
|
|
+ } else {
|
|
|
+ editRecordData.GroupId = lastGroupIdData.GroupId + 1
|
|
|
+ editRecordData.BeforeValue = lastGroupIdData.BeforeValue
|
|
|
+ }
|
|
|
+
|
|
|
+ if feedFormulaDetail.ForageName != req.ForageName {
|
|
|
+ editRecordData.FieldName = EditRecodeMap["forage_name"]
|
|
|
+ editRecordData.BeforeValue = lastGroupIdData.ForageName
|
|
|
+ editRecordData.AfterValue = req.ForageName
|
|
|
+ editRecordList = append(editRecordList, editRecordData)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feedFormulaDetail.Weight != int32(req.Weight*100) {
|
|
|
+ editRecordData.FieldName = EditRecodeMap["weight"]
|
|
|
+ editRecordData.AfterValue = fmt.Sprintf("%d", int32(req.Weight*100))
|
|
|
+ editRecordList = append(editRecordList, editRecordData)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feedFormulaDetail.AllowError != req.AllowError {
|
|
|
+ editRecordData.FieldName = EditRecodeMap["allow_error"]
|
|
|
+ editRecordData.AfterValue = fmt.Sprintf("%d", req.AllowError)
|
|
|
+ editRecordList = append(editRecordList, editRecordData)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feedFormulaDetail.StirDelay != req.StirDelay {
|
|
|
+ editRecordData.FieldName = EditRecodeMap["stir_delay"]
|
|
|
+ editRecordData.AfterValue = fmt.Sprintf("%d", req.StirDelay)
|
|
|
+ editRecordList = append(editRecordList, editRecordData)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feedFormulaDetail.Sort != req.Sort {
|
|
|
+ editRecordData.FieldName = EditRecodeMap["sort"]
|
|
|
+ editRecordData.AfterValue = fmt.Sprintf("%d", req.Sort)
|
|
|
+ editRecordList = append(editRecordList, editRecordData)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := s.CreateFeedFormulaEditRecord(ctx, editRecordList); err != nil {
|
|
|
+ zaplog.Error("EditFeedByFeedFormula", zap.Any("CreateFeedFormulaEditRecord", err))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// CreateFeedFormulaEditRecord 创建配方修改记录
|
|
|
+func (s *StoreEntry) CreateFeedFormulaEditRecord(ctx context.Context, req []*model.FeedFormulaEditRecord) error {
|
|
|
+ if req == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ if err := s.DB.Model(new(model.FeedFormulaDetail)).Save(req).Error; err != nil {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
// FeedFormulaDetailBySort 配方饲料排序
|
|
|
func (s *StoreEntry) FeedFormulaDetailBySort(ctx context.Context, req *operationPb.GroupAddFeedFormulaDetail) error {
|
|
|
feedFormulaData := &model.FeedFormula{Id: int64(req.FeedFormulaId)}
|