ソースを参照

feat: 计量获得目录接口

caipin 2 年 前
コミット
f68c16f4ae
5 ファイル変更205 行追加1 行削除
  1. 1 1
      datasource/dbhelper.go
  2. 10 0
      services/project_service.go
  3. 124 0
      services/tree_service.go
  4. 65 0
      web/external/jl_bb.go
  5. 5 0
      web/routes/routes.go

+ 1 - 1
datasource/dbhelper.go

@@ -41,7 +41,7 @@ func NewDbMaster() *xorm.Engine {
 	configFilePrefix := "config"
 	configFileName := fmt.Sprintf("%s-pro.yaml", configFilePrefix)
 
-	if debug == "qa" {
+	if debug == "qa" || debug == "mbp" {
 		fmt.Println("读取QA配置文件成功")
 		configFileName = fmt.Sprintf("%s-debug.yaml", configFilePrefix)
 	} else if debug == "uat" {

+ 10 - 0
services/project_service.go

@@ -32,6 +32,7 @@ type ProjectService interface {
 	Get(projectId int) (*viewmodels.Project, error)
 	GetList(page int, size int) []viewmodels.Project
 	GetName(code string) []viewmodels.Project
+	GetNameBs(code string) models.CmProject
 	Save(projectId int, projectVM viewmodels.Project) error
 	Add(projectVM viewmodels.Project) error
 	SaveBs(projectVM viewmodels.Project, id int, manager *models.CmManager) error
@@ -191,6 +192,15 @@ func (s *projectService) GetName(code string) []viewmodels.Project {
 	return datalist
 }
 
+// 获得项目名称
+func (s *projectService) GetNameBs(code string) models.CmProject {
+	result := s.dao.GetListByCode(code)
+	if len(result) == 0 {
+		return models.CmProject{}
+	}
+	return result[0]
+}
+
 // 保存项目信息
 func (s *projectService) Save(id int, projectVM viewmodels.Project) error {
 	project := models.CmProject{}

+ 124 - 0
services/tree_service.go

@@ -33,6 +33,7 @@ type TreeService interface {
 	Create(data viewmodels.Tree) error
 	GetAllProject(projectId int) *viewmodels.Tree
 	GetAllContract(projectId int, account *models.CmProjectAccount, bidsectionType int) *viewmodels.FolderContract
+	GetAllContractByJL(projectId int) *viewmodels.FolderContract
 	Rename(treevm viewmodels.Tree, projectId int) error
 	GetFolderAndBid(id int, projectId int) ([]models.CmTree, error)
 	DeleteFolderAndBid(id int, projectId int) error
@@ -620,6 +621,129 @@ func (s *treeService) Move(id int, moveId int, projectId int) error {
 	return nil
 }
 
+// 获得合同管理的目录
+func (s *treeService) GetAllContractByJL(projectId int) *viewmodels.FolderContract {
+	datalist := s.dao.GetAllTree(projectId)
+	folderlist := make([]viewmodels.FolderContract, 0)
+
+	// 生成根
+	folder := viewmodels.FolderContract{}
+	id, _ := comm.AesEncrypt(strconv.Itoa(0), conf.SignSecret)
+	parentId, _ := comm.AesEncrypt(strconv.Itoa(-1), conf.SignSecret)
+	folder.Id = id
+	folder.Name = "root"
+	folder.ParentId = parentId
+	folder.Isfolder = 1
+	// folder.Children = make([]*viewmodels.FolderContract, 0)
+	folderlist = append(folderlist, folder)
+	// 加入数据
+	for _, data := range datalist {
+
+		folder := viewmodels.FolderContract{}
+		id, _ := comm.AesEncrypt(strconv.Itoa(data.Id), conf.SignSecret)
+		parentId, _ := comm.AesEncrypt(strconv.Itoa(data.ParentId), conf.SignSecret)
+		projectId, _ := comm.AesEncrypt(strconv.Itoa(data.ProjectId), conf.SignSecret)
+		bidsectionId, _ := comm.AesEncrypt(strconv.Itoa(data.BidsectionId), conf.SignSecret)
+		folder.Id = id
+		folder.Name = data.Name
+		folder.ParentId = parentId
+		folder.ProjectId = projectId
+		folder.BidsectionId = bidsectionId
+		// 合同数据
+		folder.Contracts = data.Contracts
+
+		contractsIncome, _ := strconv.ParseFloat(data.ContractsIncome, 64)
+		contractsReturned, _ := strconv.ParseFloat(data.ContractsReturned, 64)
+
+		folder.ContractsIncome = utils.PriceToStringFormat(contractsIncome)
+		folder.ContractsReturned = utils.PriceToStringFormat(contractsReturned)
+
+		// 汇款进度
+		ContractsIncome, err := strconv.ParseFloat(data.ContractsIncome, 64)
+		if err != nil {
+			ContractsIncome = 0
+		}
+		ContractsReturned, err := strconv.ParseFloat(data.ContractsReturned, 64)
+		if err != nil || ContractsReturned == 0 {
+			ContractsReturned = 0
+			folder.ContractsIncomeProgress = "0"
+		} else {
+			folder.ContractsIncomeProgress = fmt.Sprintf("%.2f", (ContractsReturned/ContractsIncome)*100)
+		}
+
+		contractsPay, _ := strconv.ParseFloat(data.ContractsPay, 64)
+		contractsPaid, _ := strconv.ParseFloat(data.ContractsPaid, 64)
+
+		folder.ContractsPay = utils.PriceToStringFormat(contractsPay)
+		folder.ContractsPaid = utils.PriceToStringFormat(contractsPaid)
+		// 支付进度
+		ContractsPay, err := strconv.ParseFloat(data.ContractsPay, 64)
+		if err != nil {
+			ContractsPay = 0
+		}
+		ContractsPaid, err := strconv.ParseFloat(data.ContractsPaid, 64)
+		if err != nil || ContractsPaid == 0 {
+			ContractsPaid = 0
+			folder.ContractsPayProgress = "0"
+		} else {
+			folder.ContractsPayProgress = fmt.Sprintf("%.2f", (ContractsPaid/ContractsPay)*100)
+		}
+
+		// 安全
+		folder.SafeTotal = data.SafeTotal
+		folder.SafeRectification = data.SafeRectification
+		folder.SafeRectificationFinish = data.SafeRectificationFinish
+		folder.SafeRectificationIn = data.SafeRectificationIn
+		folder.SafeApproval = data.SafeApproval
+		folder.SafeClose = data.SafeClose
+
+		// 质量
+		folder.QualityTotal = data.QualityTotal
+		folder.QualityApproval = data.QualityApproval
+		folder.QualityRectification = data.QualityRectification
+		folder.QualityRectificationFinish = data.QualityRectificationFinish
+		folder.QualityRectificationIn = data.QualityRectificationIn
+		folder.QualityClose = data.QualityClose
+
+		folder.Isfolder = data.Isfolder
+		folder.IsEnd = false
+
+		folder.HasFolder = false
+		folder.IsBid = false
+		folderlist = append(folderlist, folder)
+
+	}
+
+	var data []*viewmodels.FolderContract
+	data = make([]*viewmodels.FolderContract, 0)
+	for i, _ := range folderlist {
+		var a *viewmodels.FolderContract
+		a = &folderlist[i]
+		data = append(data, a)
+	}
+
+	node := &folderlist[0] //父节点
+	comm.MakeFolderContract(data, node)
+
+	// 求和
+	// dataLenght := len(data) + 4
+
+	s.filterFolder(node)
+
+	// 删除空目录
+	ChildrenShow := make([]*viewmodels.FolderContract, 0)
+	for _, item := range node.Children {
+		if item.IsHidden == 0 {
+			ChildrenShow = append(ChildrenShow, item)
+		}
+	}
+	node.Children = ChildrenShow
+
+	// node.Children = s.copyShowFolder(node.Children)
+	// fmt.Println(node)
+	return node
+}
+
 // 创建一颗树...interface{}
 func maketree(Data []*viewmodels.Tree, node *viewmodels.Tree) { //参数为父节点,添加父节点的子节点指针切片
 	childs, _ := havechild(Data, node) //判断节点是否有子节点并返回

+ 65 - 0
web/external/jl_bb.go

@@ -0,0 +1,65 @@
+package external
+
+import (
+	"fmt"
+
+	"github.com/kataras/iris/v12"
+	"go.mod/services"
+	"go.mod/web/viewmodels"
+)
+
+type JlBb struct {
+	Ctx            iris.Context
+	ServiceTree    services.TreeService
+	ServiceProject services.ProjectService
+}
+
+// @Summary 获得合同目录和标段
+// @Tags 合同管理
+// @Description 获得合同目录和标段
+// @Accept  json
+// @Produce  json
+// @Param   code     path    string     true        "项目编号"
+// @Success 200 {object} viewmodels.FolderContract "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
+// @Router /api/contract/folder [get]
+func (c *JlBb) GetFolder() {
+
+	// 1.获得数据
+	data := &viewmodels.Jl{}
+	if err := c.Ctx.ReadForm(data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 1-1.校验是否存在code
+	if err := data.ValidateCode(); err != nil {
+
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	// 1-2.验证jwt
+	// _, err := utils.ValidateJwt(data.Token)
+	// if err != nil {
+	// 	c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+	// 	return
+	// }
+
+	// 获得项目ID
+	projectDetail := c.ServiceProject.GetNameBs(data.Code)
+	if projectDetail.Id == 0 {
+		c.Ctx.JSON(iris.Map{
+			"code": -1,
+			"msg":  "项目不存在",
+		})
+		return
+	}
+
+	// 获得层级文件夹
+	FolderData := c.ServiceTree.GetAllContractByJL(projectDetail.Id)
+
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"msg":  "",
+		"data": FolderData,
+	})
+}

+ 5 - 0
web/routes/routes.go

@@ -231,6 +231,11 @@ func Configure(b *bootstrap.Bootstrapper) {
 	jlEx := mvc.New(b.Party("/api/external/jl"))
 	jlEx.Handle(new(external.JlEx))
 
+	jlbb := mvc.New(b.Party("/api/external/jlbb"))
+	jlbb.Register(TreeService)
+	jlbb.Register(ProjectService)
+	jlbb.Handle(new(external.JlBb))
+
 	// 后台相关
 	backstageCM := mvc.New(b.Party("/api/backstage/login", b.Protect))
 	backstageCM.Register(backstageService)