|
@@ -27,6 +27,7 @@ type RuleService interface {
|
|
|
type ruleService struct {
|
|
|
daoRule *dao.RuleDao
|
|
|
daoSafe *dao.SafeDao
|
|
|
+ daoContract *dao.ContractDao
|
|
|
validAutoPath string
|
|
|
}
|
|
|
|
|
@@ -84,6 +85,52 @@ func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, error
|
|
|
}
|
|
|
return string(e), err
|
|
|
}
|
|
|
+ } else if codeType == "contractRule" {
|
|
|
+ if rule.ContractRule == "" {
|
|
|
+ return "", errors.New("该标段未设置编号规则!")
|
|
|
+ }
|
|
|
+ var code viewmodels.RuleCode
|
|
|
+ err := json.Unmarshal([]byte(rule.ContractRule), &code)
|
|
|
+ if err == nil {
|
|
|
+ total, err := s.daoContract.CountRuleCode(bid)
|
|
|
+ value := reflect.ValueOf(code)
|
|
|
+ for i := 0; i < value.NumField(); i++ {
|
|
|
+ b := fmt.Sprint(value.Field(i))
|
|
|
+ if b == code.Code {
|
|
|
+ k, _ := strconv.Atoi(b)
|
|
|
+ code.Code = utils.CreateRuleCode(int64(k), total, len(code.Code))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ e, err := json.Marshal(code)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return string(e), err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if rule.QualityRule == "" {
|
|
|
+ return "", errors.New("该标段未设置编号规则!")
|
|
|
+ }
|
|
|
+ var code viewmodels.RuleCode
|
|
|
+ err := json.Unmarshal([]byte(rule.QualityRule), &code)
|
|
|
+ if err == nil {
|
|
|
+ total, err := s.daoSafe.CountRuleCode(bid)
|
|
|
+ value := reflect.ValueOf(code)
|
|
|
+ for i := 0; i < value.NumField(); i++ {
|
|
|
+ b := fmt.Sprint(value.Field(i))
|
|
|
+ if b == code.Code {
|
|
|
+ k, _ := strconv.Atoi(b)
|
|
|
+ code.Code = utils.CreateRuleCode(int64(k), total, len(code.Code))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ e, err := json.Marshal(code)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return string(e), err
|
|
|
+ }
|
|
|
}
|
|
|
return "", errors.New("生成code失败")
|
|
|
}
|