|
|
@ -3,6 +3,7 @@ |
|
|
|
package implments |
|
|
|
|
|
|
|
import ( |
|
|
|
"LAPP_ACURA_MOM_BACKEND/conf" |
|
|
|
baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" |
|
|
|
dal "LAPP_ACURA_MOM_BACKEND/dao/jit" |
|
|
|
meDal "LAPP_ACURA_MOM_BACKEND/dao/me" |
|
|
@ -10,9 +11,13 @@ import ( |
|
|
|
"LAPP_ACURA_MOM_BACKEND/db" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/global" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/grmi" |
|
|
|
baseMeta "LAPP_ACURA_MOM_BACKEND/meta/base" |
|
|
|
meta "LAPP_ACURA_MOM_BACKEND/meta/jit" |
|
|
|
baseModel "LAPP_ACURA_MOM_BACKEND/models/base" |
|
|
|
model "LAPP_ACURA_MOM_BACKEND/models/jit" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/utils" |
|
|
|
"encoding/json" |
|
|
|
"github.com/kataras/iris/v12" |
|
|
|
"strconv" |
|
|
|
"time" |
|
|
|
) |
|
|
@ -866,7 +871,7 @@ func (impl *ShipOrderServiceImplement) CreateAdvanceShipOrderByEdit(user *global |
|
|
|
} |
|
|
|
|
|
|
|
// ScanBarCode 在发运环境扫描工单条码 通过工单条码获取包装单 自动配置发运单
|
|
|
|
func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode string, shipOrderId string) (result *model.ShipResult, err error) { |
|
|
|
func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode string, shipOrderId string, workPlaceNr int) (result *model.ShipResult, err error) { |
|
|
|
grmi.Log(user, "/services/jit/implments/ShipOrder.service.impl.go", "ScanBarCode", "在发运环节扫描工单条码") |
|
|
|
result = &model.ShipResult{} |
|
|
|
engine := db.Eloquent.Master() |
|
|
@ -879,6 +884,30 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
shipOrderDataLstDao := dal.NewShipOrderDataLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrderStatusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
shipOrderStatusHistoryDao := dal.NewShipOrderStatusHistoryDAO(session, user.PlantNr, user.UserId) |
|
|
|
workPlaceConfigDao := baseDal.NewWorkPlaceConfigDAO(session, user.PlantNr, user.UserId) |
|
|
|
// 获取工位配置
|
|
|
|
workPlaceConfigLi, err := workPlaceConfigDao.Select([]grmi.Predicate{baseMeta.WorkPlaceConfig_WorkPlaceNr.NewPredicate(grmi.Equal, workPlaceNr)}, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, grmi.NewBusinessError("获取工位PLC放行配置失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if len(workPlaceConfigLi) == 0 { |
|
|
|
return nil, grmi.NewBusinessError("未获取到工位PLC放行配置") |
|
|
|
} |
|
|
|
var workPlaceConfig *baseModel.WorkPlaceConfig |
|
|
|
for _, config := range workPlaceConfigLi { |
|
|
|
if config.ParamName == "PLC" { |
|
|
|
workPlaceConfig = &config |
|
|
|
} |
|
|
|
} |
|
|
|
if workPlaceConfig == nil { |
|
|
|
return nil, grmi.NewBusinessError("未获取到工位PLC放行配置") |
|
|
|
} |
|
|
|
if workPlaceConfig.StrValue1 == "" || |
|
|
|
workPlaceConfig.StrValue2 == "" || |
|
|
|
workPlaceConfig.StrValue3 == "" || |
|
|
|
workPlaceConfig.StrValue4 == "" { |
|
|
|
return nil, grmi.NewBusinessError("工位PLC放行配置不足") |
|
|
|
} |
|
|
|
// 1. 通过barcode 工单条码查询包装单数据 并校验
|
|
|
|
packLstDao := dal.NewPackOrderItemLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
packOrderDao := dal.NewPackOrderDAO(session, user.PlantNr, user.UserId) |
|
|
@ -912,7 +941,7 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
return nil, grmi.NewBusinessError("查询工单数据失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if serialOrder == nil { |
|
|
|
return nil, grmi.NewBusinessError("工单不存在, 工单ID:" + packOrderItem.SerialOrderId) |
|
|
|
return nil, grmi.NewBusinessError("工单不存在, 工单ID:" + packOrderItem.SerialOrderId) |
|
|
|
} |
|
|
|
if serialOrder.RepairFlag { |
|
|
|
return nil, grmi.NewBusinessError("工单是线上返修工单, 工单ID:" + packOrderItem.SerialOrderId) |
|
|
@ -1082,6 +1111,13 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
_ = session.Commit() |
|
|
|
result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId |
|
|
|
result.IsClosed = false |
|
|
|
err = impl.PermitTrough(workPlaceConfig) |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} else { |
|
|
|
result.PLCResult = true |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
// 如果包装单上面有包装模板ID
|
|
|
@ -1156,6 +1192,13 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
_ = session.Commit() |
|
|
|
result.Message = "扫描完成并关闭包装单,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId |
|
|
|
result.IsClosed = true |
|
|
|
err = impl.PermitTrough(workPlaceConfig) |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} else { |
|
|
|
result.PLCResult = true |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} else { |
|
|
|
// 将发运单状态置为操作中
|
|
|
@ -1200,6 +1243,13 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
_ = session.Commit() |
|
|
|
result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackTemplateId + ", 当前发运单ID:" + shipOrderId |
|
|
|
result.IsClosed = false |
|
|
|
err = impl.PermitTrough(workPlaceConfig) |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} else { |
|
|
|
result.PLCResult = true |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
} |
|
|
@ -1338,6 +1388,13 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
_ = session.Commit() |
|
|
|
result.Message = "扫描完成并关闭包装单,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId |
|
|
|
result.IsClosed = true |
|
|
|
err = impl.PermitTrough(workPlaceConfig) |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} else { |
|
|
|
result.PLCResult = true |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} else { |
|
|
|
// 将发运单状态置为操作中
|
|
|
@ -1382,6 +1439,13 @@ func (impl *ShipOrderServiceImplement) ScanBarCode(user *global.User, barCode st |
|
|
|
_ = session.Commit() |
|
|
|
result.Message = "扫描完成,扫描包装单ID:" + packOrder.PackOrder.PackOrderId + ", 当前发运单ID:" + shipOrderId |
|
|
|
result.IsClosed = false |
|
|
|
err = impl.PermitTrough(workPlaceConfig) |
|
|
|
if err != nil { |
|
|
|
result.PLCResult = false |
|
|
|
result.PLCMessage = err.Error() |
|
|
|
} else { |
|
|
|
result.PLCResult = true |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
|
|
|
@ -1674,3 +1738,39 @@ func (impl *ShipOrderServiceImplement) SelectWithStatus(user *global.User, urlPa |
|
|
|
} |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
|
|
|
|
// PermitTrough plc放行
|
|
|
|
func (impl *ShipOrderServiceImplement) PermitTrough(workPlaceConfig *baseModel.WorkPlaceConfig) error { |
|
|
|
plcType := workPlaceConfig.StrValue1 |
|
|
|
plcAddress := workPlaceConfig.StrValue2 |
|
|
|
DBAddress := workPlaceConfig.StrValue3 |
|
|
|
valueType := workPlaceConfig.StrValue4 |
|
|
|
retryCount := workPlaceConfig.IntValue1 |
|
|
|
data := baseModel.PLC{ |
|
|
|
PLCType: plcType, |
|
|
|
PLCAddress: plcAddress, |
|
|
|
ValueAddress: DBAddress, |
|
|
|
ValuType: valueType, |
|
|
|
RetryCount: retryCount, |
|
|
|
} |
|
|
|
if valueType == "Boolean" { |
|
|
|
data.ValueText = workPlaceConfig.BoolValue1 |
|
|
|
} |
|
|
|
postData, err := json.Marshal(data) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("准备向plc写入数据失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
boday, err := utils.Post(conf.DbConfig.PLCBackend, postData) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("向plc管理后台发送请求失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
var response baseModel.Response |
|
|
|
err = json.Unmarshal(boday, &response) |
|
|
|
if err != nil { |
|
|
|
return grmi.NewBusinessError("解析plc管理后台返回值失败, error:" + err.Error()) |
|
|
|
} |
|
|
|
if response.Code != iris.StatusOK { |
|
|
|
return grmi.NewBusinessError("plc管理后台写入失败, 错误:" + response.Msg) |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |