|
@@ -909,7 +909,7 @@ func (e *Waybill) CarOut(c *dto.WaybillInOutReq, p *actions.DataPermission) erro
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
-func (e *Waybill) Receipt(c *dto.WaybillInOutReq, p *actions.DataPermission) error {
|
|
|
+func (e *Waybill) Receipt(c *dto.WaybillReceiptReq, p *actions.DataPermission) error {
|
|
|
var err error
|
|
|
|
|
|
tx := e.Orm.Begin()
|
|
@@ -931,95 +931,70 @@ func (e *Waybill) Receipt(c *dto.WaybillInOutReq, p *actions.DataPermission) err
|
|
|
return errors.New("获取车辆信息失败")
|
|
|
}
|
|
|
|
|
|
- for _, waybillNo := range c.WaybillNoList {
|
|
|
- var waybillModel = model.Waybill{}
|
|
|
- // 查询运单是否存在
|
|
|
- err = tx.Scopes(actions.Permission(waybillModel.TableName(), p)).
|
|
|
- Where("waybill_no = ?", waybillNo).
|
|
|
- First(&waybillModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
- return errors.New(fmt.Sprintf("运单号%s不存在", waybillNo))
|
|
|
- }
|
|
|
- return errors.New(fmt.Sprintf("运单号%s查询失败", waybillNo))
|
|
|
+ var waybillModel = model.Waybill{}
|
|
|
+ // 查询运单是否存在
|
|
|
+ err = tx.Scopes(actions.Permission(waybillModel.TableName(), p)).
|
|
|
+ Where("waybill_no = ?", c.WaybillNo).
|
|
|
+ First(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return errors.New(fmt.Sprintf("运单号%s不存在", c.WaybillNo))
|
|
|
}
|
|
|
+ return errors.New(fmt.Sprintf("运单号%s查询失败", c.WaybillNo))
|
|
|
+ }
|
|
|
|
|
|
- if waybillModel.Status == model.WaybillStatusReceipt {
|
|
|
- continue
|
|
|
- }
|
|
|
- waybillModel.Status = model.WaybillStatusReceipt
|
|
|
- waybillModel.CarId = car.Id
|
|
|
- waybillModel.ReceiptTime = model2.Time(time.Now())
|
|
|
- err = tx.Save(&waybillModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单信息失败:%s", err))
|
|
|
- }
|
|
|
- // 获取传感器信息
|
|
|
- // 获取传感器信息
|
|
|
- var deviceSensorList = []nats_server.DeviceSensor_R{}
|
|
|
- var count int64
|
|
|
- deviceSensorList, count, err = nats_server.Cold_CompanyDeviceSensor_List_ByKey(car.Sn)
|
|
|
- if err != nil || count == 0 {
|
|
|
- err = errors.New("查询设备定位信息失败")
|
|
|
- return err
|
|
|
- }
|
|
|
- var lng, Lat string
|
|
|
- if len(deviceSensorList[0].T_DeviceSensorData.T_site) > 0 {
|
|
|
- site := strings.Split(deviceSensorList[0].T_DeviceSensorData.T_site, ",")
|
|
|
- if len(site) == 2 {
|
|
|
- lng = site[0]
|
|
|
- Lat = site[1]
|
|
|
- }
|
|
|
+ if waybillModel.Status == model.WaybillStatusReceipt {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ waybillModel.Status = model.WaybillStatusReceipt
|
|
|
+ waybillModel.CarId = car.Id
|
|
|
+ waybillModel.ReceiptTime = c.StartTime
|
|
|
+ waybillModel.ReceiptImg = c.ReceiptImg
|
|
|
+ err = tx.Save(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 获取传感器信息
|
|
|
+ // 获取传感器信息
|
|
|
+ var deviceSensorList = []nats_server.DeviceSensor_R{}
|
|
|
+ var count int64
|
|
|
+ deviceSensorList, count, err = nats_server.Cold_CompanyDeviceSensor_List_ByKey(car.Sn)
|
|
|
+ if err != nil || count == 0 {
|
|
|
+ err = errors.New("查询设备定位信息失败")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ var lng, Lat string
|
|
|
+ if len(deviceSensorList[0].T_DeviceSensorData.T_site) > 0 {
|
|
|
+ site := strings.Split(deviceSensorList[0].T_DeviceSensorData.T_site, ",")
|
|
|
+ if len(site) == 2 {
|
|
|
+ lng = site[0]
|
|
|
+ Lat = site[1]
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 查询任务
|
|
|
- var task model.WaybillTask
|
|
|
- err = tx.Model(&task).Where("waybill_no = ? and car_id = ?", waybillNo, car.Id).
|
|
|
- Last(&task).Error
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and car_id = ?", c.WaybillNo, car.Id).
|
|
|
+ Last(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 未下车 直接点签收
|
|
|
+ if time.Time(task.EndTime).IsZero() {
|
|
|
+ task.EndTime = model2.Time(time.Now())
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
- }
|
|
|
- // 未下车 直接点签收
|
|
|
- if time.Time(task.EndTime).IsZero() {
|
|
|
- task.EndTime = model2.Time(time.Now())
|
|
|
- task.UpdateBy = p.UserId
|
|
|
- err = tx.Save(&task).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
- }
|
|
|
- // 添加下车物流记录
|
|
|
- Logistics := model.WaybillLogistics{
|
|
|
- WaybillNo: waybillNo,
|
|
|
- Status: model.WaybillStatusTruckOut,
|
|
|
- CarId: car.Id,
|
|
|
- UserId: p.UserId,
|
|
|
- Lng: lng,
|
|
|
- Lat: Lat,
|
|
|
- ControlBy: model2.ControlBy{
|
|
|
- CreateBy: p.UserId,
|
|
|
- },
|
|
|
- DeptBy: model2.DeptBy{
|
|
|
- DeptId: p.DeptId,
|
|
|
- },
|
|
|
- ModelTime: model2.ModelTime{
|
|
|
- CreatedAt: c.StartTime,
|
|
|
- },
|
|
|
- }
|
|
|
- err = tx.Create(&Logistics).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
- }
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
}
|
|
|
-
|
|
|
- // 添加签收记录
|
|
|
+ // 添加下车物流记录
|
|
|
Logistics := model.WaybillLogistics{
|
|
|
- WaybillNo: waybillNo,
|
|
|
- Status: model.WaybillStatusReceipt,
|
|
|
+ WaybillNo: c.WaybillNo,
|
|
|
+ Status: model.WaybillStatusTruckOut,
|
|
|
CarId: car.Id,
|
|
|
UserId: p.UserId,
|
|
|
Lng: lng,
|
|
@@ -1039,7 +1014,30 @@ func (e *Waybill) Receipt(c *dto.WaybillInOutReq, p *actions.DataPermission) err
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ // 添加签收记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: c.WaybillNo,
|
|
|
+ Status: model.WaybillStatusReceipt,
|
|
|
+ CarId: car.Id,
|
|
|
+ UserId: p.UserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: Lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
}
|
|
|
|
|
|
return nil
|