Browse Source

添加发运扫码的plc放行

pull/127/head
zhangxin 3 years ago
parent
commit
7bae853745
4 changed files with 112 additions and 5 deletions
  1. +2
    -0
      models/jit/jit.go
  2. +1
    -1
      services/jit/ShipOrder.service.go
  3. +102
    -2
      services/jit/implments/ShipOrder.service.impl.go
  4. +7
    -2
      web/controllers/jit/ShipOrder.rest.go

+ 2
- 0
models/jit/jit.go View File

@ -57,6 +57,8 @@ var UserShipOrderTempMap map[string]TempShipOrderData
type ShipResult struct {
IsClosed bool `json:"isClosed"`
Message string `json:"message"`
PLCResult bool `json:"plcResult"`
PLCMessage string `json:"plcMessage"`
}
// ShipOrderWithStatus 发运单连表状态


+ 1
- 1
services/jit/ShipOrder.service.go View File

@ -236,7 +236,7 @@ type ShipOrderService interface {
* @Date : 2021-11-03
*
******************************************************************************/
ScanBarCode(user *global.User, barCode string, shipOrderId string) (result *model.ShipResult, err error)
ScanBarCode(user *global.User, barCode string, shipOrderId string, workPlaceNr int) (result *model.ShipResult, err error)
/******************************************************************************
*
* @Function Name : CreateAdvanceShipOrderByEdit


+ 102
- 2
services/jit/implments/ShipOrder.service.impl.go View File

@ -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
}

+ 7
- 2
web/controllers/jit/ShipOrder.rest.go View File

@ -502,7 +502,7 @@ func RegisterCreateAdvanceShipOrderByEdit(party router.Party, path string, metho
* @Date : 2021-11-03
*
******************************************************************************/
func RegisterScanBarCode(party router.Party, path string, method func(user *global.User, barCode string, shipOrderId string) (result *model.ShipResult, err error)) {
func RegisterScanBarCode(party router.Party, path string, method func(user *global.User, barCode string, shipOrderId string, workPlaceNr int) (result *model.ShipResult, err error)) {
party.Get(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
@ -520,7 +520,12 @@ func RegisterScanBarCode(party router.Party, path string, method func(user *glob
//}
barcode := ctx.URLParam("barcode")
shipOrderId := ctx.URLParam("shipOrderId")
result, err := method(user, barcode, shipOrderId)
workPlaceNr, err := ctx.URLParamInt("workPlaceNr")
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
result, err := method(user, barcode, shipOrderId, workPlaceNr)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return


Loading…
Cancel
Save