Преглед изворни кода

feature(交付工单): 项目经理、交付经理看自己的;研发主管、研发总监看全部的;丁岳嵩看全部硬件的

lk пре 2 година
родитељ
комит
ac9d1ec5f7
1 измењених фајлова са 47 додато и 2 уклоњено
  1. 47 2
      opms_parent/app/service/work/deliver_order.go

+ 47 - 2
opms_parent/app/service/work/deliver_order.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"database/sql"
 	"fmt"
+	"github.com/gogf/gf/os/glog"
 
 	basedao "dashoo.cn/micro/app/dao/base"
 	contractdao "dashoo.cn/micro/app/dao/contract"
@@ -102,6 +103,16 @@ func (s DeliverOrderService) List(ctx context.Context, req *work.DeliverOrderLis
 		dao = dao.Where("b.incharge_id = ?", s.userInfo.Id)
 		// } else if service.StringsContains(s.userInfo.Roles, "ProjectDeliveryManager") {
 		// 	dao = dao.Where("a.deliver_man_id = ?", s.userInfo.Id)
+		//	项目经理、交付经理看自己的,研发主管、研发总监看全部的
+	} else if service.StringsContains(s.userInfo.Roles, "ProjectManager") {
+		dao = dao.Where("a.project_man_id = ?", s.userInfo.Id)
+	} else if service.StringsContains(s.userInfo.Roles, "ProjectDeliveryManager") {
+		dao = dao.Where("a.deliver_man_id = ?", s.userInfo.Id)
+	} else if service.StringsContains(s.userInfo.Roles, "HardwareDeliveryManager") {
+		//	丁岳嵩 查看全部硬件 交付类型:10软件;20硬件
+		dao = dao.Where("a.order_type = ?", "20")
+	} else if service.StringsContains(s.userInfo.Roles, "ResearchAndDevelopmentDirector") || service.StringsContains(s.userInfo.Roles, "ResearchAndDevelopmentSupervisor") {
+		//	研发主管、研发总监看全部的
 	} else {
 		productCode, err := service.ColumnString(s.Dao.DB.Table("base_product_auth").Wheref("user_id = ?", s.userInfo.Id), "product_code")
 		if err != nil {
@@ -226,6 +237,9 @@ func DeliverOrderAdd(tx *gdb.TX, contractId int, userInfo request.UserInfo) ([]i
 		if p.ProdClass == "40" || p.ProdClass == "60" {
 			orderType = "20"
 		}
+
+		projectManId, projectManName := getProjectUser(tx, &c)
+
 		o := work.DeliverOrder{
 			OrderCode:      fmt.Sprintf("%s%s", c.ContractCode, orderType),
 			OrderStatus:    "10",
@@ -236,8 +250,8 @@ func DeliverOrderAdd(tx *gdb.TX, contractId int, userInfo request.UserInfo) ([]i
 			ProjectName:    c.NboName,
 			ContractId:     c.Id,
 			ContractCode:   c.ContractCode,
-			ProjectManId:   0,
-			ProjectManName: "",
+			ProjectManId:   projectManId,
+			ProjectManName: projectManName,
 			DeliverManId:   0,
 			DeliverManName: "",
 			Product:        c.ProductLine,
@@ -299,6 +313,37 @@ func DeliverOrderAdd(tx *gdb.TX, contractId int, userInfo request.UserInfo) ([]i
 	return id, nil
 }
 
+func getProjectUser(tx *gdb.TX, c *contractmodel.CtrContract) (int, string) {
+	projectManId := 0
+	projectManName := ""
+	// 根据产品线,设置项目经理:  10 BIOBANK; 20 CELLSOP; 30 LIMS+基因; 40 智能硬件; 50 液氮罐; 60 MCS;
+	// 非交付工单产品线: 70 咨询服务; 80 石油; 90 外购
+	if c.ProductLine == "10" {
+		projectManName = "姜辉"
+		projectManId = 0
+	} else if c.ProductLine == "20" {
+		projectManName = "王晓宇"
+		projectManId = 0
+	} else if c.ProductLine == "30" {
+		projectManName = "程健"
+		projectManId = 0
+	} else if c.ProductLine == "40" || c.ProductLine == "50" || c.ProductLine == "60" {
+		projectManName = "孙淼"
+		projectManId = 0
+	}
+	if projectManName != "" {
+		user, err := tx.Model("sys_user").Where(fmt.Sprintf("nick_name='%v'", projectManName)).One()
+		if err != nil && err != sql.ErrNoRows {
+			glog.Error(err)
+		}
+		if user != nil {
+			projectManId = user["id"].Int()
+		}
+	}
+
+	return projectManId, projectManName
+}
+
 func DeliverOrderBindProduct(tx *gdb.TX, id int, product []work.DeliverOrderProduct) error {
 	_, err := tx.Delete("deliver_order_product", "deliver_order_id = ?", id)
 	if err != nil {