Selaa lähdekoodia

feature(结算): 未出账单新增时计算费用

likai 4 vuotta sitten
vanhempi
commit
62dd03257d
2 muutettua tiedostoa jossa 32 lisäystä ja 14 poistoa
  1. 12 13
      handler/settle_account_main.go
  2. 20 1
      service/settle_account_main/settle_account_main.go

+ 12 - 13
handler/settle_account_main.go

@@ -5,7 +5,6 @@ import (
 	"dashoo.cn/common_definition/comm_def"
 	"dashoo.cn/micro_libary/micro_srv"
 	"dashoo.cn/micro_libary/myerrors"
-	"dashoo.cn/micro_libary/request"
 	"github.com/gogf/gf/frame/g"
 	"lims_adapter/model"
 	accountModel "lims_adapter/model/account"
@@ -84,25 +83,25 @@ func (a *SettleAccountMainController) ConfirmAccountMain(ctx context.Context, re
 	return nil
 }
 
-// 结算明细(未出账单)取消
+// 结算明细(未出账单)取消 (webApi 中也有取消,)
 func (a *SettleAccountMainController) CancelAccountMain(ctx context.Context, req *accountModel.AccountMainCancelReq, rsp *comm_def.CommonMsg) error {
 	tenant, err := micro_srv.GetTenant(ctx)
 	if err != nil {
 		return err
 	}
-	user := request.UserInfo{
-		Id: 0,
-		RealName: "系统自动取消", // 获取不到用户,自动取消,此时用户为 系统自动取消
-	}
-	if req.IsAuto != "1" {
-		user, err = micro_srv.GetUserInfo(ctx)
-		if err != nil {
-			return err
-		}
-	}
+	//user := request.UserInfo{
+	//	Id: 0,
+	//	RealName: "系统自动取消", // 获取不到用户,自动取消,此时用户为 系统自动取消
+	//}
+	//if req.IsAuto != "1" {
+	//	user, err = micro_srv.GetUserInfo(ctx)
+	//	if err != nil {
+	//		return err
+	//	}
+	//}
 	g.Log().Info("Received SettleAccountMainController.CancelAccountMain request @ " + tenant)
 
-	var errors = service.NewService(tenant).Cancel(*req, user)
+	var errors = service.NewService(tenant).Cancel(*req)
 	_, err, code, msg := myerrors.CheckError(errors)
 	if err != nil {
 		return err

+ 20 - 1
service/settle_account_main/settle_account_main.go

@@ -9,6 +9,7 @@ import (
 	"lims_adapter/dao/account"
 	"lims_adapter/model"
 	accountModel "lims_adapter/model/account"
+	"math"
 	"strconv"
 )
 
@@ -112,6 +113,11 @@ func (s Service) Add(req accountModel.AccountMainAddReq, user request.UserInfo)
 	req.Main.UpdateUserId = int(user.Id)
 	req.Main.UpdateBy = user.RealName
 	req.Main.UpdateOn = now
+	req.Main.ActualStartDate = req.Main.AppointStartDate
+	req.Main.ActualEndDate = req.Main.AppointEndDate
+	span := req.Main.ActualEndDate.Sub(req.Main.ActualStartDate)
+	req.Main.FeeTime = int(math.Ceil(span.Minutes()))
+	req.Main.ActualMachineHour = req.Main.FeeTime
 
 	// 获取账户
 	result1, err := s.Dao.DB.Model("base_account").Where(fmt.Sprintf("MainUserId='%v'", req.Main.MainUserId)).Order("Advance ASC").FindOne()
@@ -144,6 +150,19 @@ func (s Service) Add(req accountModel.AccountMainAddReq, user request.UserInfo)
 		req.Details[index].UpdateBy = user.RealName
 		req.Details[index].UpdateOn = now
 		req.Details[index].Pid = int(id)
+		if req.Details[index].PaymentType == "0" {
+			req.Details[index].ActualMinutes = strconv.Itoa(req.Main.ActualMachineHour)
+			req.Details[index].Minutes = strconv.Itoa(req.Main.ActualMachineHour)
+
+			discount := float64(1) // 计算折扣
+			if req.Details[index].Data5 != "" {
+				d, _ := strconv.ParseFloat(req.Details[index].Data5, 64)
+				discount = 1 - d / 100
+			}
+
+			req.Details[index].PaymentAccount = float64(req.Main.ActualMachineHour) * req.Details[index].UnitPrice * discount / 60 // 计算实际费用
+		}
+		req.Main.TotalPrice += req.Details[index].PaymentAccount
 	}
 	_, err =  tx.Insert("settle_account_detail", req.Details)
 	if err != nil {
@@ -171,7 +190,7 @@ func (s Service) Confirm(req accountModel.AccountMainConfirmReq, user request.Us
 }
 
 // 预约取消
-func (s Service) Cancel(req accountModel.AccountMainCancelReq, user request.UserInfo) error {
+func (s Service) Cancel(req accountModel.AccountMainCancelReq) error {
 	if req.AppointId == 0 {
 		return errors.New("参数缺失")
 	}