Browse Source

Merge branch 'master' of http://192.168.1.41:3000/caipin/construction_management

caipin 4 years ago
parent
commit
3d5ab613aa
4 changed files with 46 additions and 17 deletions
  1. 10 0
      dao/contract_paid_dao.go
  2. 2 10
      dao/rule_dao.go
  3. 2 2
      models/cm_rule.go
  4. 32 5
      services/rule_service.go

+ 10 - 0
dao/contract_paid_dao.go

@@ -149,3 +149,13 @@ func (d *ContractPaidDao) UpdatePaidTotalPrice(projectId int, bidsectionId int,
 	}
 	return nil
 }
+
+// 筛选出应用了当前规则的条数
+func (d *ContractPaidDao) CountPaidRuleCode(bid int) (int64, error) {
+	data := &models.CmContractsPaid{}
+	total, err := d.engine.Where("`bidsection_id` = ?", bid).Count(data)
+	if err != nil {
+		total = 0
+	}
+	return total, err
+}

+ 2 - 10
dao/rule_dao.go

@@ -8,8 +8,6 @@
 package dao
 
 import (
-	"fmt"
-
 	"github.com/go-xorm/xorm"
 	"go.mod/models"
 )
@@ -51,16 +49,10 @@ func (d *RuleDao) UpdateOrCreate(pid int, bid int, key string, value string) err
 	} else {
 		data.ContractPaidRule = value
 	}
-	// fmt.Println("newData", data, "value", value, "key", key)
 	if has && err == nil {
-		_, err := d.engine.Id(data.Id).Update(data)
-		fmt.Println("err2", err)
-		return err
+		_, err = d.engine.Cols(key).Id(data.Id).Update(data)
 	} else if !has && err == nil {
-		_, err := d.engine.Insert(data)
-		fmt.Println("err3", err)
-		return err
+		_, err = d.engine.Insert(data)
 	}
-	fmt.Println(err)
 	return err
 }

+ 2 - 2
models/cm_rule.go

@@ -6,6 +6,6 @@ type CmRule struct {
 	BidsectionId       int    `xorm:"not null default 0 comment('标段ID') INT(11)"`
 	SafeRule           string `xorm:"comment('安全巡检编号规则') VARCHAR(255)"`
 	QualityRule        string `xorm:"comment('质量巡检编号规则') VARCHAR(255)"`
-	ContractReturnRule string `xorm:"comment('合同收入编号规则') VARCHAR(255)"`
-	ContractPaidRule   string `xorm:"comment('合同支出编号规则') VARCHAR(255)"`
+	ContractReturnRule string `xorm:"comment('收入合同编号规则') VARCHAR(255)"`
+	ContractPaidRule   string `xorm:"comment('支出合同编号规则') VARCHAR(255)"`
 }

+ 32 - 5
services/rule_service.go

@@ -25,11 +25,12 @@ type RuleService interface {
 
 // //返回service操作类
 type ruleService struct {
-	daoRule       *dao.RuleDao
-	daoSafe       *dao.SafeDao
-	daoQuality    *dao.QualityDao
-	daoContract   *dao.ContractDao
-	validAutoPath string
+	daoRule         *dao.RuleDao
+	daoSafe         *dao.SafeDao
+	daoQuality      *dao.QualityDao
+	daoContract     *dao.ContractDao
+	daoContractPaid *dao.ContractPaidDao
+	validAutoPath   string
 }
 
 //创建项目用户service
@@ -134,6 +135,32 @@ func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, error
 			}
 			return string(e), err
 		}
+	} else if codeType == "contractPaidRule" {
+		if rule.ContractPaidRule == "" {
+			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
+		}
 	} else {
 		if rule.QualityRule == "" {
 			return "", errors.New("该标段未设置编号规则!")