@ -494,3 +494,113 @@ func (impl *OPCBasicComInfoServiceImplement) Update(user *models.Usertab, entiti
}
return nil
}
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* @ Reference LAPP_LF_MOM_BACKEND / services / base / OPCBasicComInfoService . Delete
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
func ( impl * OPCBasicComInfoServiceImplement ) Save ( user * models . Usertab , entity * model . OPCBasicComInfo ) error {
grmi . Log ( user , "/services/base/implments/OPCBasicComInfo.service.impl.go" , "Save" , "保存OPC协议" )
engine := db . Eloquent . Master ( )
session := engine . NewSession ( )
defer session . Close ( )
if err := session . Begin ( ) ; err != nil {
return err
}
dao := dal . NewOPCBasicComInfoDAO ( session , user . Pid , user . Userid )
ruleDao := dal . NewOPCComRuleDAO ( session , user . Pid , user . Userid )
detailDao := dal . NewOPCComDetailRuleDAO ( session , user . Pid , user . Userid )
operationDao := dal . NewOperationDAO ( session , user . Pid , user . Userid )
workPlaceDao := dal . NewWorkPlaceDAO ( session , user . Pid , user . Userid )
operation , err := operationDao . SelectOne ( entity . OperationId )
if err != nil {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "查询工艺数据失败, error:" + err . Error ( ) )
}
if operation == nil {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "不存在对应的工艺" )
}
workPlace , err := workPlaceDao . SelectOne ( entity . WorkPlaceNr )
if err != nil {
_ = session . Rollback ( )
return err
}
if workPlace == nil {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "不存在对应的工位" )
}
if operation . PO != entity . PO || operation . StepNo != entity . StepNo || operation . StepDesc != entity . StepDesc || operation . ProjectId != entity . ProjectId {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "工艺数据错误" )
}
err = dao . DeleteWhere ( [ ] grmi . Predicate { meta . OPCBasicComInfo_OperationId . NewPredicate ( grmi . Equal , entity . OperationId ) } )
if err != nil {
_ = session . Rollback ( )
return err
}
err = ruleDao . DeleteWhere ( [ ] grmi . Predicate { meta . OPCComRule_OperationId . NewPredicate ( grmi . Equal , entity . OperationId ) } )
if err != nil {
_ = session . Rollback ( )
return err
}
err = detailDao . DeleteWhere ( [ ] grmi . Predicate { meta . OPCComDetailRule_OperationId . NewPredicate ( grmi . Equal , entity . OperationId ) } )
if err != nil {
_ = session . Rollback ( )
return err
}
ruleLi := entity . OPCComRuleLi
if len ( ruleLi ) == 0 {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "未获取到OPC通讯规则数据" )
}
for index , rule := range ruleLi {
if rule . RuleId == 0 || rule . ActionType == "" {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "OPC通讯规则数据不合规" )
}
rule . PO = entity . PO
rule . StepNo = entity . StepNo
rule . StepDesc = entity . StepDesc
rule . OperationId = entity . OperationId
if rule . DBlockValueType == model . DBlockValueType_VALUE_MAP {
if len ( rule . OPCComDetailRuleLi ) == 0 {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "未获取到OPC通讯详细规则" )
}
for index , detail := range rule . OPCComDetailRuleLi {
if detail . DetailId == 0 || detail . BaseOnType == "" {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "OPC通讯详细规则数据不合规" )
}
detail . PO = rule . PO
detail . StepNo = rule . StepNo
detail . RuleId = rule . RuleId
detail . StepDesc = rule . StepDesc
detail . OperationId = rule . OperationId
rule . OPCComDetailRuleLi [ index ] = detail
}
err = detailDao . Insert ( & rule . OPCComDetailRuleLi )
if err != nil {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "插入详细规则数据失败, error:" + err . Error ( ) )
}
}
ruleLi [ index ] = rule
}
err = ruleDao . Insert ( & ruleLi )
if err != nil {
_ = session . Rollback ( )
return grmi . NewBusinessError ( "插入通讯规则失败, error:" + err . Error ( ) )
}
err = dao . InsertOne ( entity )
if err != nil {
_ = session . Rollback ( )
return err
}
_ = session . Commit ( )
return nil
}