Просмотр исходного кода

fix:合同金额数字使用财务的方式展示:小数点前每隔三位用,隔开

Roc 3 лет назад
Родитель
Сommit
8d79dad1b7
2 измененных файлов с 31 добавлено и 12 удалено
  1. 12 12
      services/word.go
  2. 19 0
      utils/common.go

+ 12 - 12
services/word.go

@@ -186,8 +186,8 @@ func GenerateWord(contractDetail *contract.ContractDetail) (err error) {
 				//originalPrice := strconv.FormatFloat(contractDetail.OriginalPrice, 'E', -1, 64)
 
 				//优惠前金额(小写)
-				newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
-				originalPrice := newDecimal.String()
+				//newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
+				originalPrice := utils.FormatPrice(contractDetail.OriginalPrice)
 				priceStr += "小写:" + originalPrice + ","
 
 				//优惠前金额(大写)
@@ -201,8 +201,8 @@ func GenerateWord(contractDetail *contract.ContractDetail) (err error) {
 				//如果实际支付金额与订单原金额不符
 				if contractDetail.OriginalPrice != contractDetail.Price {
 					//优惠后的金额(小写)
-					newDecimal := decimal.NewFromFloat(contractDetail.Price)
-					price := newDecimal.String()
+					//newDecimal := decimal.NewFromFloat(contractDetail.Price)
+					price := utils.FormatPrice(contractDetail.Price)
 					priceStr += ",经甲乙双方友好协商,优惠至:" + price + "元,"
 
 					//优惠后的金额(大写)
@@ -603,8 +603,8 @@ func GetHtmlByContractDetail(contractDetail *contract.ContractDetail, htmlType s
 		//originalPrice := strconv.FormatFloat(contractDetail.OriginalPrice, 'E', -1, 64)
 
 		//优惠前金额(小写)
-		newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
-		originalPrice := newDecimal.String()
+		//newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
+		originalPrice := utils.FormatPrice(contractDetail.OriginalPrice)
 		priceStr += "小写:" + originalPrice + "元,"
 
 		//优惠前金额(大写)
@@ -618,8 +618,8 @@ func GetHtmlByContractDetail(contractDetail *contract.ContractDetail, htmlType s
 		//如果实际支付金额与订单原金额不符
 		if contractDetail.OriginalPrice != contractDetail.Price {
 			//优惠后的金额(小写)
-			newDecimal := decimal.NewFromFloat(contractDetail.Price)
-			price := newDecimal.String()
+			//newDecimal := decimal.NewFromFloat(contractDetail.Price)
+			price := utils.FormatPrice(contractDetail.Price)
 			priceStr += ",经甲乙双方友好协商,优惠至:" + price + "元,"
 
 			//优惠后的金额(大写)
@@ -1594,8 +1594,8 @@ func getPrintData(data WordElement, contractDetail *contract.ContractDetail) (is
 		printContent = tmpPrintContent
 	case "original_price":
 		//优惠前金额(小写)
-		newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
-		printContent = newDecimal.String()
+		//newDecimal := decimal.NewFromFloat(contractDetail.OriginalPrice)
+		printContent = utils.FormatPrice(contractDetail.OriginalPrice)
 	case "original_price_cn":
 		//优惠前金额(大写)
 		originalCnyPrice, cnyErr := utils.ConvertNumToCny(contractDetail.OriginalPrice)
@@ -1609,8 +1609,8 @@ func getPrintData(data WordElement, contractDetail *contract.ContractDetail) (is
 		if contractDetail.OriginalPrice == contractDetail.Price {
 			return
 		}
-		newDecimal := decimal.NewFromFloat(contractDetail.Price)
-		printContent = newDecimal.String()
+		//newDecimal := decimal.NewFromFloat(contractDetail.Price)
+		printContent = utils.FormatPrice(contractDetail.Price)
 	case "price_cn":
 		//实际金额(大写)
 		if contractDetail.OriginalPrice == contractDetail.Price {

+ 19 - 0
utils/common.go

@@ -683,3 +683,22 @@ func getMonthDay(year, month int) (days int) {
 	}
 	return
 }
+
+// FormatPrice 格式化展示金额数字(财务金额展示,小数点前,每三位用,隔开)    1,234,567,898.55
+func FormatPrice(price float64) (str string) {
+	str = fmt.Sprint(price)
+	length := len(str)
+	if length < 4 {
+		return str
+	}
+	arr := strings.Split(str, ".") //用小数点符号分割字符串,为数组接收
+	length1 := len(arr[0])
+	if length1 < 4 {
+		return str
+	}
+	count := (length1 - 1) / 3
+	for i := 0; i < count; i++ {
+		arr[0] = arr[0][:length1-(i+1)*3] + "," + arr[0][length1-(i+1)*3:]
+	}
+	return strings.Join(arr, ".") //将一系列字符串连接为一个字符串,之间用sep来分隔。
+}