|
@@ -0,0 +1,1169 @@
|
|
|
+package service
|
|
|
+
|
|
|
+import (
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "gas-cylinder-api/app/admin/model"
|
|
|
+ "gas-cylinder-api/app/admin/service/dto"
|
|
|
+ "gas-cylinder-api/common/actions"
|
|
|
+ cDto "gas-cylinder-api/common/dto"
|
|
|
+ "gas-cylinder-api/common/global"
|
|
|
+ cModel "gas-cylinder-api/common/model"
|
|
|
+ "gogs.baozhida.cn/zoie/OAuth-core/service"
|
|
|
+ "gorm.io/gorm"
|
|
|
+ "gorm.io/gorm/utils"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type GasCylinderAllot struct {
|
|
|
+ service.Service
|
|
|
+}
|
|
|
+
|
|
|
+// GetPage 获取GasCylinderAllot列表
|
|
|
+func (e *GasCylinderAllot) GetPage(c *dto.GasCylinderAllotGetPageReq, list *[]model.GasCylinderAllot, count *int64, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+ var data model.GasCylinderAllot
|
|
|
+
|
|
|
+ err = e.Orm.Model(&data).
|
|
|
+ Scopes(
|
|
|
+ cDto.MakeCondition(c.GetNeedSearch()),
|
|
|
+ cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
|
|
+ actions.Permission(data.TableName(), p),
|
|
|
+ ).
|
|
|
+ Find(list).Limit(-1).Offset(-1).
|
|
|
+ Count(count).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.GetFailedErr
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Get 获取GasCylinderAllot对象
|
|
|
+func (e *GasCylinderAllot) Get(d *dto.GasCylinderAllotGetReq, gasCylinderAllotModel *model.GasCylinderAllot, p *actions.DataPermission) error {
|
|
|
+ err := e.Orm.
|
|
|
+ Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
|
|
|
+ Preload("AllotUser").
|
|
|
+ Preload("AcceptUser").
|
|
|
+ Preload("AllotCompany").
|
|
|
+ Preload("AcceptCompany").
|
|
|
+ First(gasCylinderAllotModel, d.GetId()).Error
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.GetNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.GetFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// ByOptType 获取GasCylinderAllot对象
|
|
|
+func (e *GasCylinderAllot) GetByOptType(d *dto.GasCylinderAllotGetByOptTypeReq, gasCylinderAllotModel *model.GasCylinderAllot, p *actions.DataPermission) error {
|
|
|
+ err := e.Orm.
|
|
|
+ Where("opt_type = ? and accept_user_id = ? and status = ?", d.OptType, p.UserId, model.GasCylinderAllotStateAllot).
|
|
|
+ Preload("AllotUser").
|
|
|
+ Preload("AllotCompany").
|
|
|
+ First(gasCylinderAllotModel).Error
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.GetNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.GetFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Insert 创建GasCylinderAllot对象
|
|
|
+func (e *GasCylinderAllot) Insert(c *dto.GasCylinderAllotInsertReq) error {
|
|
|
+ var err error
|
|
|
+ var data model.GasCylinderAllot
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ err = e.Orm.
|
|
|
+ Where("opt_type = ? and accept_user_id = ? and status = ?", c.OptType, c.AcceptUserId, model.GasCylinderAllotStateAllot).
|
|
|
+ First(&data).Error
|
|
|
+
|
|
|
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.GetFailedErr
|
|
|
+ }
|
|
|
+ if data.Id > 0 {
|
|
|
+ err = errors.New("调拨中,请勿重复提交!")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加调拨信息
|
|
|
+ c.Generate(&data)
|
|
|
+ err = tx.Create(&data).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ c.Id = data.Id
|
|
|
+ return nil
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// Update 修改GasCylinderAllot对象
|
|
|
+func (e *GasCylinderAllot) Update(c *dto.GasCylinderAllotUpdateReq, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ var gasCylinderAllotModel = model.GasCylinderAllot{}
|
|
|
+ // 查询调拨信息是否存在
|
|
|
+ err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
|
|
|
+ First(&gasCylinderAllotModel, c.GetId()).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.UpdateNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Generate(&gasCylinderAllotModel)
|
|
|
+ err = tx.Save(&gasCylinderAllotModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Id = gasCylinderAllotModel.Id
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Remove 删除GasCylinderAllot
|
|
|
+func (e *GasCylinderAllot) Remove(c *dto.GasCylinderAllotDeleteReq, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ var gasCylinderAllotModel model.GasCylinderAllot
|
|
|
+
|
|
|
+ // 查询调拨信息是否存在
|
|
|
+ err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
|
|
|
+ First(&gasCylinderAllotModel, c.GetId()).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.DeleteNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.DeleteFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ if gasCylinderAllotModel.Status != model.GasCylinderAllotStateFinish {
|
|
|
+ err = errors.New(fmt.Sprintf("状态为%s,无法删除", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ db := tx.Delete(&gasCylinderAllotModel)
|
|
|
+
|
|
|
+ if err = db.Error; err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.DeleteFailedErr
|
|
|
+ }
|
|
|
+ if db.RowsAffected == 0 {
|
|
|
+ return global.DeleteNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Cancel 取消GasCylinderAllot
|
|
|
+func (e *GasCylinderAllot) Cancel(c *dto.GasCylinderAllotCancelReq, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ var gasCylinderAllotModel = model.GasCylinderAllot{}
|
|
|
+ // 查询调拨信息是否存在
|
|
|
+ err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
|
|
|
+ First(&gasCylinderAllotModel, c.GetId()).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.UpdateNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+ if gasCylinderAllotModel.Status != model.GasCylinderAllotStateAllot {
|
|
|
+ err = errors.New(fmt.Sprintf("状态为%s,无法取消", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ gasCylinderAllotModel.Status = model.GasCylinderAllotStateCancel
|
|
|
+ err = tx.Save(&gasCylinderAllotModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Id = gasCylinderAllotModel.Id
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Submit 提交GasCylinderAllot
|
|
|
+func (e *GasCylinderAllot) Submit(c *dto.GasCylinderAllotSubmitReq, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 调拨状态更新为 已完成
|
|
|
+ // 调拨者气瓶状态更新
|
|
|
+ // 接收更新气瓶状态 上报气瓶流转信息
|
|
|
+ // 油站更新气瓶状态 上报气瓶流转信息
|
|
|
+
|
|
|
+ var gasCylinderAllotModel = model.GasCylinderAllot{}
|
|
|
+ // 查询调拨信息是否存在
|
|
|
+ err = e.Orm.First(&gasCylinderAllotModel, c.GetId()).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return global.UpdateNotFoundOrNoPermissionErr
|
|
|
+ }
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+ if gasCylinderAllotModel.Status != model.GasCylinderAllotStateAllot {
|
|
|
+ err = errors.New(fmt.Sprintf("状态为%s,无法提交", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ gasCylinderAllotModel.Status = model.GasCylinderAllotStateFinish
|
|
|
+ err = tx.Save(&gasCylinderAllotModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.UpdateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Id = gasCylinderAllotModel.Id
|
|
|
+
|
|
|
+ acceptUser, err := model.GetUserCode(c.AcceptUserId)
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ allotUser, err := model.GetUserCode(c.AllotUserId)
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ data := make([]model.OperationLog, 0)
|
|
|
+
|
|
|
+ switch c.OptType {
|
|
|
+ case "25":
|
|
|
+ // 25送气员领重瓶 37 门店重瓶出库
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ // 25送气员领重瓶
|
|
|
+ operationLog25 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: acceptUser.Dept.CmpCode,
|
|
|
+ Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog25)
|
|
|
+ // 37 门店重瓶出库
|
|
|
+ operationLog37 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "37",
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ ObjectUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: allotUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: allotUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog37)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: acceptUser.Id,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加送气员重瓶
|
|
|
+ err = tx.Where(model.GasCylinderStatus{InnerCode: chipUid, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除门店重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ?", c.InnerCodeList, allotUser.Dept.Id).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "21":
|
|
|
+ // 21门店回收空瓶 27送气员回收空瓶
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ // 21门店回收空瓶
|
|
|
+ operationLog21 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: acceptUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog21)
|
|
|
+
|
|
|
+ // 添加门店空瓶
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除送气员空瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?", c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "11":
|
|
|
+ // 10 门店空瓶出库 11 司机确认空瓶装车
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ // 11 司机确认空瓶装车
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+ operationLog11 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentTruck: acceptUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 10 门店空瓶出库
|
|
|
+ operationLog10 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "10",
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: allotUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: allotUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog10)
|
|
|
+
|
|
|
+ data = append(data, operationLog11)
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: acceptUser.Id,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加司机空瓶
|
|
|
+ err = tx.Where(model.GasCylinderStatus{InnerCode: chipUid, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除门店空瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?", c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "13":
|
|
|
+ // 12 司机运输空瓶到达气站 13 气站确认空瓶到达气站
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 13 气站确认空瓶到达气站
|
|
|
+ operationLog13 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStation: acceptUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog13)
|
|
|
+
|
|
|
+ // 12 司机运输空瓶到达气站
|
|
|
+ operationLog12 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "12",
|
|
|
+ ObjectUser: allotUser.ProvUserId,
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStation: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentTruck: allotUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog12)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusEmpty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加气站空瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除司机空瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?", c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "17":
|
|
|
+ // 15 气站重瓶出库 17 司机确认重瓶从气站出库
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 17 司机确认重瓶从气站出库
|
|
|
+ err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+ operationLog17 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStation: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentTruck: acceptUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog17)
|
|
|
+
|
|
|
+ // 15 气站重瓶出库
|
|
|
+ operationLog15 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "15",
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ ObjectUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStation: allotUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: allotUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog15)
|
|
|
+
|
|
|
+ // 司机添加重瓶
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: acceptUser.Id,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Where(model.GasCylinderStatus{InnerCode: chipUid, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除气站重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "31":
|
|
|
+ // 19 司机交付门店 31 门店确认重瓶卸货入库
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 31 门店确认重瓶卸货入库
|
|
|
+ operationLog31 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ ObjectUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentTruck: acceptUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog31)
|
|
|
+
|
|
|
+ // 19 司机交付门店
|
|
|
+ operationLog19 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "19",
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ ObjectUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentTruck: allotUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: allotUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog19)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 门店添加重瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除司机重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "35":
|
|
|
+ // 35 门店确认未配送重瓶返库
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2、上报气瓶流转信息
|
|
|
+ err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+ operationLog35 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: c.OptType,
|
|
|
+ OptUser: acceptUser.ProvUserId,
|
|
|
+ CompanyId: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: acceptUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: acceptUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog35)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 门店添加重瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除送气员重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "033":
|
|
|
+ // 33 门店将重瓶退回司机
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ // 2、上报气瓶流转信息
|
|
|
+ err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+ operationLog33 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "33",
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStore: allotUser.ProvUser.CmpCode,
|
|
|
+ Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
|
|
|
+ Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: allotUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data = append(data, operationLog33)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: acceptUser.Id,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 司机添加重瓶
|
|
|
+ err = tx.Where(model.GasCylinderStatus{InnerCode: chipUid, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除门店重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "016":
|
|
|
+ // 16 司机将订单退回气站
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+ // 1、通过高频ID查询气瓶内编码
|
|
|
+ var gasCylinder model.GasCylinder
|
|
|
+ err = tx.Where("uid = ?", chipUid).First(&gasCylinder).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2、上报气瓶流转信息
|
|
|
+ var truckUserCarInfo model.TruckUserCarInfo
|
|
|
+ err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("获取车辆信息失败: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
+ operationLog16 := model.OperationLog{
|
|
|
+ ProvOperationLog: model.ProvOperationLog{
|
|
|
+ InnerCode: gasCylinder.InnerCode,
|
|
|
+ OptType: "16",
|
|
|
+ ObjectUser: allotUser.ProvUserId,
|
|
|
+ OptUser: allotUser.ProvUserId,
|
|
|
+ CompanyId: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentEnterprise: allotUser.ProvUser.CmpCode,
|
|
|
+ CurrentStation: acceptUser.Dept.CmpCode,
|
|
|
+ CurrentTruck: allotUser.ProvUserId,
|
|
|
+ CurrentMotor: truckUserCarInfo.CarNo,
|
|
|
+ OptTime: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ },
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ data = append(data, operationLog16)
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusWeighty,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 气站添加重瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除司机重瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ case "Unqualified":
|
|
|
+ // 不合格 送气员->门店->司机->气站
|
|
|
+ // 送气员->门店
|
|
|
+ if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 0 {
|
|
|
+ // 送气员到门店 送气员不合格- 门店+
|
|
|
+ if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusUnqualified,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 门店添加不合格瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusUnqualified}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除送气员不合格瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusUnqualified).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = errors.New("请出示正确的门店回收不合格瓶调拨码")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 1 {
|
|
|
+ // 门店到司机 门店- 司机+
|
|
|
+ if acceptUser.ProvUser.UserType == 4 {
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: acceptUser.Id,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusUnqualified,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 司机添加不合格瓶
|
|
|
+ err = tx.Where(model.GasCylinderStatus{InnerCode: chipUid, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusUnqualified}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除门店不合格瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusUnqualified).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = errors.New("请司机出示正确的回收不合格瓶调拨码")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else if allotUser.ProvUser.UserType == 4 {
|
|
|
+ // 司机->气站 司机- 气站+
|
|
|
+ if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 0 {
|
|
|
+ for _, chipUid := range c.InnerCodeList {
|
|
|
+
|
|
|
+ gasCylinderStatus := &model.GasCylinderStatus{
|
|
|
+ InnerCode: chipUid,
|
|
|
+ UserId: 0,
|
|
|
+ CompanyId: acceptUser.Dept.Id,
|
|
|
+ Status: model.GasCylinderStatusUnqualified,
|
|
|
+ ControlBy: cModel.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: cModel.DeptBy{
|
|
|
+ DeptId: acceptUser.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 气站添加不合格瓶
|
|
|
+ err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", chipUid, acceptUser.Dept.Id).
|
|
|
+ Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusUnqualified}).FirstOrCreate(&gasCylinderStatus).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 删除司机不合格瓶
|
|
|
+ err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
|
|
|
+ c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusUnqualified).
|
|
|
+ Delete(&model.GasCylinderStatus{}).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = errors.New("请气站出示正确的回收不合格瓶调拨码")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ provList := make([]model.ProvOperationLog, 0)
|
|
|
+ for _, v := range data {
|
|
|
+ provList = append(provList, v.GenProvOperationLog())
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO 同步省平台 1.1.1.22 批量新增操作记录
|
|
|
+ if len(data) > 0 {
|
|
|
+ err = tx.Create(&data).Error
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return global.CreateFailedErr
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+
|
|
|
+}
|