|
|
@@ -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 {
|