zhangqian
2023-10-17 9e3412941ea49942f651506657d90ab174a4329f
api/v1/task.go
@@ -213,9 +213,24 @@
      ctx.Fail(ecode.ParamsErr)
      return
   }
   err := service.NewTaskService().UpdateProcedureStatus(nil, id, model.ProcedureStatusFinished, procedure.Channel)
   err := model.WithTransaction(func(db *gorm.DB) error {
      err := service.NewTaskService().UpdateProcedureStatus(db, id, model.ProcedureStatusFinished, procedure.Channel)
      if err != nil {
         return err
      }
      record := model.TaskStatusSync{
         WorkOrderId:  procedure.WorkOrderID,
         ProcedureID:  procedure.ProcedureID,
         DeviceId:     procedure.DeviceID,
         IsProcessing: false,
         IsFinish:     true,
      }
      return service.NewTaskService().SaveTaskStatusSync(db, &record)
   })
   if err != nil {
      logx.Errorf("UpdateProcedureStatus err: %v", err.Error())
      logx.Errorf("TaskFinish UpdateProcedureStatus err: %v", err.Error())
      ctx.Fail(ecode.UnknownErr)
      return
   }
@@ -263,7 +278,23 @@
      ctx.FailWithMsg(ecode.ParamsErr, "未获取到工艺参数,请在工艺模型库中上传!")
      return
   }
   plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
   if code != ecode.OK || plcConfig.ID == 0 {
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "请先配置PLC")
      return
   }
   plcConfig.MaxTryTimes = 2
   err = SendParams(processModel.ParamsMap, plcConfig)
   if err != nil {
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置!")
      return
   }
   plcConfig.CurrentTryTimes = 0
   err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart())
   if err != nil {
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置!")
      return
   }
   err = model.WithTransaction(func(db *gorm.DB) error {
      err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusProcessing, procedure.Channel, processModel.Number)
      if err != nil {
@@ -273,38 +304,25 @@
      if err != nil {
         return err
      }
      return service.NewProgressService().Add(db, procedure, order)
      err = service.NewProgressService().Add(db, procedure, order)
      if err != nil {
         return err
      }
      record := model.TaskStatusSync{
         WorkOrderId:  procedure.WorkOrderID,
         ProcedureID:  procedure.ProcedureID,
         DeviceId:     procedure.DeviceID,
         IsProcessing: true,
         IsFinish:     false,
      }
      return service.NewTaskService().SaveTaskStatusSync(db, &record)
   })
   if err != nil {
      logx.Errorf("SendProcessParams update order and procedure status error:%v", err.Error())
      ctx.FailWithMsg(ecode.DBErr, "更改工单状态失败")
      return
   }
   plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
   if code != ecode.OK || plcConfig.ID == 0 {
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "请先配置PLC")
      return
   }
   plcConfig.MaxTryTimes = 2
   err = SendParams(processModel.ParamsMap, plcConfig)
   if err != nil {
      logx.Errorf("SendProcessParams: %v", err.Error())
      err = model.WithTransaction(func(db *gorm.DB) error {
         err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusWaitProcess, procedure.Channel, "")
         if err != nil {
            return err
         }
         return nil
      })
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置!")
      return
   }
   plcConfig.CurrentTryTimes = 0
   err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart())
   if err != nil {
      ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置")
      return
   }
   service.TaskFlagSet(procedure.Channel)
   ctx.Ok()
}