|  | @@ -3,9 +3,7 @@ package services
 | 
	
		
			
				|  |  |  import (
 | 
	
		
			
				|  |  |  	"encoding/json"
 | 
	
		
			
				|  |  |  	"errors"
 | 
	
		
			
				|  |  | -	"fmt"
 | 
	
		
			
				|  |  |  	"log"
 | 
	
		
			
				|  |  | -	"reflect"
 | 
	
		
			
				|  |  |  	"strconv"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	"go.mod/web/utils"
 | 
	
	
		
			
				|  | @@ -19,7 +17,7 @@ import (
 | 
	
		
			
				|  |  |  type RuleService interface {
 | 
	
		
			
				|  |  |  	Get(pid int, id int) viewmodels.ViewRule
 | 
	
		
			
				|  |  |  	Post(pid int, id int, key string, value string) error
 | 
	
		
			
				|  |  | -	AutoCode(bid int, pid int, codeType string) (string, error)
 | 
	
		
			
				|  |  | +	AutoCode(bid int, pid int, codeType string) (string, string, error)
 | 
	
		
			
				|  |  |  	ValidRule(ctx iris.Context) (viewmodels.ValidField, error)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -56,161 +54,75 @@ func (s *ruleService) Post(pid int, id int, key string, value string) error {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 生成code
 | 
	
		
			
				|  |  | -func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, error) {
 | 
	
		
			
				|  |  | +func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, string, error) {
 | 
	
		
			
				|  |  |  	// 获取该标段的规则
 | 
	
		
			
				|  |  |  	rule := s.daoRule.FindByPidWithBid(pid, bid)
 | 
	
		
			
				|  |  |  	if codeType == "safeRule" {
 | 
	
		
			
				|  |  |  		if rule.SafeRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.SafeRule), &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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoSafe.CountRuleCode(bid)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.SafeRule, newCode, err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	} else if codeType == "contractReturnRule" {
 | 
	
		
			
				|  |  |  		if rule.ContractReturnRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.ContractReturnRule), &code)
 | 
	
		
			
				|  |  | -		if err == nil {
 | 
	
		
			
				|  |  | -			total, err := s.daoContract.CountRuleCode(bid, 0)
 | 
	
		
			
				|  |  | -			if err != nil {
 | 
	
		
			
				|  |  | -				return "", err
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoContract.CountRuleCode(bid, 0)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.ContractReturnRule, newCode, err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	} else if codeType == "contractPaidRule" {
 | 
	
		
			
				|  |  |  		if rule.ContractPaidRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
 | 
	
		
			
				|  |  | -		if err == nil {
 | 
	
		
			
				|  |  | -			total, err := s.daoContract.CountRuleCode(bid, 1)
 | 
	
		
			
				|  |  | -			if err != nil {
 | 
	
		
			
				|  |  | -				return "", err
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoContract.CountRuleCode(bid, 1)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.ContractPaidRule, newCode, err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	} else if codeType == "contractPaidRule" {
 | 
	
		
			
				|  |  |  		if rule.ContractPaidRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
 | 
	
		
			
				|  |  | -		if err == nil {
 | 
	
		
			
				|  |  | -			total, err := s.daoContractPaid.CountPaidRuleCode(bid)
 | 
	
		
			
				|  |  | -			if err != nil {
 | 
	
		
			
				|  |  | -				return "", err
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoContractPaid.CountPaidRuleCode(bid)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.ContractPaidRule, newCode, err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	} else if codeType == "contractPaidRule" {
 | 
	
		
			
				|  |  |  		if rule.ContractPaidRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
 | 
	
		
			
				|  |  | -		if err == nil {
 | 
	
		
			
				|  |  | -			total, err := s.daoContractPaid.CountPaidRuleCode(bid)
 | 
	
		
			
				|  |  | -			if err != nil {
 | 
	
		
			
				|  |  | -				return "", err
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoContractPaid.CountPaidRuleCode(bid)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.ContractPaidRule, newCode, err
 | 
	
		
			
				|  |  |  	} else {
 | 
	
		
			
				|  |  |  		if rule.QualityRule == "" {
 | 
	
		
			
				|  |  | -			return "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  | +			return "", "", errors.New("该标段未设置编号规则!")
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		var code viewmodels.RuleCode
 | 
	
		
			
				|  |  |  		err := json.Unmarshal([]byte(rule.QualityRule), &code)
 | 
	
		
			
				|  |  | -		if err == nil {
 | 
	
		
			
				|  |  | -			total, err := s.daoQuality.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
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		total, err := s.daoQuality.CountRuleCode(bid)
 | 
	
		
			
				|  |  | +		k, _ := strconv.Atoi(code.Code)
 | 
	
		
			
				|  |  | +		newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
 | 
	
		
			
				|  |  | +		return rule.QualityRule, newCode, err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	return "", errors.New("生成code失败")
 | 
	
		
			
				|  |  | +	return "", "", errors.New("生成code失败")
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (s *ruleService) ValidRule(ctx iris.Context) (viewmodels.ValidField, error) {
 |