Browse Source

feature: 调整合同字段

liuyaqi 2 years ago
parent
commit
71b138e7e6

+ 4 - 1
opms_parent/app/dao/contract/internal/ctr_contract.go

@@ -41,9 +41,10 @@ type ctrContractColumns struct {
 	ContractStartTime string // 合同开始时间
 	ContractEndTime   string // 合同结束时间
 	InchargeId        string // 负责人ID
-	InchargeName      string // 负责人
+	InchargeName      string // 负责人(销售工程师)
 	SignatoryId       string // 公司签约人ID
 	SignatoryName     string // 公司签约人
+	SignatoryType     string // 签订单位类型 10 终端用户 20 经销商 30 代理商
 	CustSignatoryId   string // 客户签约人ID
 	CustSignatoryName string // 客户签约人
 	DistributorId     string // 经销商ID
@@ -83,6 +84,7 @@ var (
 			InchargeName:      "incharge_name",
 			SignatoryId:       "signatory_id",
 			SignatoryName:     "signatory_name",
+			SignatoryType:     "signatory_type",
 			CustSignatoryId:   "cust_signatory_id",
 			CustSignatoryName: "cust_signatory_name",
 			DistributorId:     "distributor_id",
@@ -124,6 +126,7 @@ func NewCtrContractDao(tenant string) CtrContractDao {
 			InchargeName:      "incharge_name",
 			SignatoryId:       "signatory_id",
 			SignatoryName:     "signatory_name",
+			SignatoryType:     "signatory_type",
 			CustSignatoryId:   "cust_signatory_id",
 			CustSignatoryName: "cust_signatory_name",
 			DistributorId:     "distributor_id",

+ 1 - 1
opms_parent/app/handler/contract/ctr_contract.go

@@ -44,7 +44,7 @@ func (c *CtrContract) List(ctx context.Context, req *model.CtrContractListReq, r
 		return err
 	}
 	if ent == nil {
-		ent = []*model.CtrContract{}
+		ent = []*model.CtrContractListRsp{}
 	}
 	//rsp.Code = code
 	//rsp.Msg = msg

+ 10 - 0
opms_parent/app/model/contract/ctr_contract.go

@@ -19,6 +19,14 @@ type CtrContractGetRsp struct {
 	Product []*CtrContractProduct `json:"product"` // 产品
 }
 
+type CtrContractListRsp struct {
+	CtrContract
+	CustProvinceId int    `json:"custProvinceId"` // 所在省ID
+	CustProvince   string `json:"custProvince"`   // 所在省
+	CustCityId     int    `json:"custCityId"`     // 所在市ID
+	CustCity       string `json:"custCity"`       // 所在市
+}
+
 type CtrContractListReq struct {
 	request.PageReq
 	SearchText   string `json:"searchText"`   // 合同编号,合同名称,客户名称,项目名称
@@ -72,6 +80,7 @@ type CtrContractAddReq struct {
 	InchargeName      string          `json:"inchargeName"`      // 负责人
 	SignatoryId       int             `json:"signatoryId"`       // 公司签约人ID
 	SignatoryName     string          `json:"signatoryName"`     // 公司签约人
+	SignatoryType     string          `json:"signatoryType"`     // 签订单位类型 10 终端用户 20 经销商 30 代理商
 	CustSignatoryId   int             `json:"custSignatoryId"`   // 客户签约人ID
 	CustSignatoryName string          `json:"custSignatoryName"` // 客户签约人
 	DistributorId     int             `json:"distributorId"`     // 经销商ID
@@ -99,6 +108,7 @@ type CtrContractUpdateReq struct {
 	InchargeName      string           `json:"inchargeName"`      // 负责人
 	SignatoryId       int              `json:"signatoryId"`       // 公司签约人ID
 	SignatoryName     string           `json:"signatoryName"`     // 公司签约人
+	SignatoryType     string           `json:"signatoryType"`     // 签订单位类型 10 终端用户 20 经销商 30 代理商
 	CustSignatoryId   int              `json:"custSignatoryId"`   // 客户签约人ID
 	CustSignatoryName string           `json:"custSignatoryName"` // 客户签约人
 	DistributorId     int              `json:"distributorId"`     // 经销商ID

+ 2 - 1
opms_parent/app/model/contract/internal/ctr_contract.go

@@ -25,9 +25,10 @@ type CtrContract struct {
 	ContractStartTime *gtime.Time `orm:"contract_start_time" json:"contractStartTime"` // 合同开始时间
 	ContractEndTime   *gtime.Time `orm:"contract_end_time"   json:"contractEndTime"`   // 合同结束时间
 	InchargeId        int         `orm:"incharge_id"         json:"inchargeId"`        // 负责人ID
-	InchargeName      string      `orm:"incharge_name"       json:"inchargeName"`      // 负责人
+	InchargeName      string      `orm:"incharge_name"       json:"inchargeName"`      // 负责人(销售工程师)
 	SignatoryId       int         `orm:"signatory_id"        json:"signatoryId"`       // 公司签约人ID
 	SignatoryName     string      `orm:"signatory_name"      json:"signatoryName"`     // 公司签约人
+	SignatoryType     string      `orm:"signatory_type"      json:"signatoryType"`     // 签订单位类型 10 终端用户 20 经销商 30 代理商
 	CustSignatoryId   int         `orm:"cust_signatory_id"   json:"custSignatoryId"`   // 客户签约人ID
 	CustSignatoryName string      `orm:"cust_signatory_name" json:"custSignatoryName"` // 客户签约人
 	DistributorId     int         `orm:"distributor_id"      json:"distributorId"`     // 经销商ID

+ 36 - 25
opms_parent/app/service/contract/ctr_contract.go

@@ -14,6 +14,7 @@ import (
 	sysdao "dashoo.cn/micro/app/dao/sys"
 	model "dashoo.cn/micro/app/model/contract"
 	proj "dashoo.cn/micro/app/model/proj"
+	"dashoo.cn/micro/app/service"
 
 	"dashoo.cn/opms_libary/micro_srv"
 	"dashoo.cn/opms_libary/myerrors"
@@ -138,72 +139,74 @@ func (s CtrContractService) DynamicsList(ctx context.Context, req *model.CtrCont
 	return total, ret, err
 }
 
-func (s CtrContractService) List(ctx context.Context, req *model.CtrContractListReq) (int, []*model.CtrContract, error) {
-	dao := &s.Dao.CtrContractDao
+func (s CtrContractService) List(ctx context.Context, req *model.CtrContractListReq) (int, []*model.CtrContractListRsp, error) {
+	dao := s.Dao.DB.Table("ctr_contract a").
+		LeftJoin("cust_customer b", "a.cust_id=b.id").
+		Unscoped().Where("a.deleted_time is null")
 	if req.SearchText != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.SearchText)
-		dao = dao.Where("(contract_code LIKE ? || contract_name LIKE ? || cust_name LIKE ? || nbo_name LIKE ?)", likestr, likestr, likestr, likestr)
+		dao = dao.Where("(a.contract_code LIKE ? || a.contract_name LIKE ? || a.cust_name LIKE ? || a.nbo_name LIKE ?)", likestr, likestr, likestr, likestr)
 	}
 	if req.ContractCode != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.ContractCode)
-		dao = dao.Where("contract_code like ?", likestr)
+		dao = dao.Where("a.contract_code like ?", likestr)
 	}
 	if req.ContractName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.ContractName)
-		dao = dao.Where("contract_name like ?", likestr)
+		dao = dao.Where("a.contract_name like ?", likestr)
 	}
 	if req.CustId != 0 {
-		dao = dao.Where("cust_id = ?", req.CustId)
+		dao = dao.Where("a.cust_id = ?", req.CustId)
 	}
 	if req.CustName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.CustName)
-		dao = dao.Where("cust_name like ?", likestr)
+		dao = dao.Where("a.cust_name like ?", likestr)
 	}
 	if req.NboId != 0 {
-		dao = dao.Where("nbo_id = ?", req.NboId)
+		dao = dao.Where("a.nbo_id = ?", req.NboId)
 	}
 	if req.NboName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.NboName)
-		dao = dao.Where("nbo_name like ?", likestr)
+		dao = dao.Where("a.nbo_name like ?", likestr)
 	}
 	if req.ApproStatus != "" {
-		dao = dao.Where("appro_status = ?", req.ApproStatus)
+		dao = dao.Where("a.appro_status = ?", req.ApproStatus)
 	}
 	if req.ContractType != "" {
-		dao = dao.Where("contract_type = ?", req.ContractType)
+		dao = dao.Where("a.contract_type = ?", req.ContractType)
 	}
 	// if req.ContractStartTime != nil {
-	// 	dao = dao.Where("contract_start_time > ?", req.ContractStartTime)
+	// 	dao = dao.Where("a.contract_start_time > ?", req.ContractStartTime)
 	// }
 	// if req.ContractEndTime != nil {
-	// 	dao = dao.Where("contract_end_time < ?", req.ContractEndTime)
+	// 	dao = dao.Where("a.contract_end_time < ?", req.ContractEndTime)
 	// }
 	if req.InchargeId != 0 {
-		dao = dao.Where("incharge_id = ?", req.InchargeId)
+		dao = dao.Where("a.incharge_id = ?", req.InchargeId)
 	}
 	if req.InchargeName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.InchargeName)
-		dao = dao.Where("incharge_name like ?", likestr)
+		dao = dao.Where("a.incharge_name like ?", likestr)
 	}
 	if req.SignatoryId != 0 {
-		dao = dao.Where("signatory_id = ?", req.SignatoryId)
+		dao = dao.Where("a.signatory_id = ?", req.SignatoryId)
 	}
 	if req.SignatoryName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.SignatoryName)
-		dao = dao.Where("signatory_name like ?", likestr)
+		dao = dao.Where("a.signatory_name like ?", likestr)
 	}
 	if req.DistributorId != 0 {
-		dao = dao.Where("distributor_id = ?", req.DistributorId)
+		dao = dao.Where("a.distributor_id = ?", req.DistributorId)
 	}
 	if req.DistributorName != "" {
 		likestr := fmt.Sprintf("%%%s%%", req.DistributorName)
-		dao = dao.Where("distributor_name like ?", likestr)
+		dao = dao.Where("a.distributor_name like ?", likestr)
 	}
 	if req.BeginTime != "" {
-		dao = dao.Where("created_time > ?", req.BeginTime)
+		dao = dao.Where("a.created_time > ?", req.BeginTime)
 	}
 	if req.EndTime != "" {
-		dao = dao.Where("created_time < ?", req.EndTime)
+		dao = dao.Where("a.created_time < ?", req.EndTime)
 	}
 
 	total, err := dao.Count()
@@ -213,14 +216,14 @@ func (s CtrContractService) List(ctx context.Context, req *model.CtrContractList
 	if req.PageNum != 0 {
 		dao = dao.Page(req.GetPage())
 	}
-	orderby := "created_time desc"
+	orderby := "a.created_time desc"
 	if req.OrderBy != "" {
 		orderby = req.OrderBy
 	}
 	dao = dao.Order(orderby)
 
-	ents := []*model.CtrContract{}
-	err = dao.Structs(&ents)
+	ents := []*model.CtrContractListRsp{}
+	err = dao.Fields("a.*, b.cust_province_id as CustProvinceId, b.cust_province as CustProvince, b.cust_city_id as CustCityId, b.cust_city as CustCity").Structs(&ents)
 	if err != nil && err != sql.ErrNoRows {
 		return 0, nil, err
 	}
@@ -306,8 +309,12 @@ func (s CtrContractService) Add(ctx context.Context, req *model.CtrContractAddRe
 		return 0, myerrors.TipsError(validErr.Current().Error())
 	}
 
+	sequence, err := service.Sequence(s.Dao.DB, "contract_code")
+	if err != nil {
+		return 0, err
+	}
 	if req.ContractCode == "" {
-		req.ContractCode = "HT" + time.Now().Format("20060102150405")
+		req.ContractCode = fmt.Sprintf("DS%s%s%s", req.ContractType, time.Now().Format("0601"), sequence)
 	}
 
 	c, err := s.Dao.Where("contract_code = ?", req.ContractCode).One()
@@ -354,6 +361,7 @@ func (s CtrContractService) Add(ctx context.Context, req *model.CtrContractAddRe
 		InchargeName:      req.InchargeName,
 		SignatoryId:       req.SignatoryId,
 		SignatoryName:     req.SignatoryName,
+		SignatoryType:     req.SignatoryType,
 		CustSignatoryId:   req.CustSignatoryId,
 		CustSignatoryName: req.CustSignatoryName,
 		DistributorId:     req.DistributorId,
@@ -477,6 +485,9 @@ func (s CtrContractService) Update(ctx context.Context, req *model.CtrContractUp
 	if req.SignatoryName != "" {
 		toupdate["signatory_name"] = req.SignatoryName
 	}
+	if req.SignatoryType != "" {
+		toupdate["signatory_type"] = req.SignatoryType
+	}
 	if req.CustSignatoryId != 0 {
 		toupdate["cust_signatory_id"] = req.CustSignatoryId
 	}

+ 18 - 0
opms_parent/app/service/cust/cust_customer.go

@@ -8,6 +8,8 @@ import (
 	"strconv"
 	"strings"
 
+	"dashoo.cn/common_definition/comm_def"
+	"dashoo.cn/opms_libary/micro_srv"
 	"dashoo.cn/opms_libary/plugin/dingtalk/workflow"
 	"dashoo.cn/opms_libary/request"
 	"dashoo.cn/opms_libary/utils"
@@ -1190,3 +1192,19 @@ func (s *CustomerService) Export(req *model.CustCustomerExport) (content *model.
 
 	return &con, err
 }
+
+func GetUser(ctx context.Context, id int) error {
+	srv := micro_srv.InitMicroSrvClient("User", "micro_srv.auth")
+	defer srv.Close()
+	resp := &comm_def.CommonMsg{}
+	err := srv.Call(ctx, "GetUserInfo", &comm_def.IdReq{
+		Id: int64(id),
+	}, resp)
+	if err != nil {
+		return fmt.Errorf("获取用户信息 %d %s", id, err.Error())
+	}
+	fmt.Println(resp.Data)
+	fmt.Println("---------------")
+	fmt.Println(resp.Data.(map[string]interface{})["entity"])
+	return nil
+}

+ 12 - 1
opms_parent/app/service/cust/cust_customer_test.go

@@ -2,6 +2,7 @@ package cust
 
 import (
 	"context"
+	"fmt"
 	"testing"
 
 	modelWorkflow "dashoo.cn/micro/app/model/workflow"
@@ -26,7 +27,7 @@ func TestAssignCustomerRequestApproval(t *testing.T) {
 		panic(err)
 	}
 	instance := modelWorkflow.PlatWorkflow{}
-	err = g.DB(testTenant).Table("plat_workflow").Where("id = ?", 33).Struct(&instance)
+	err = g.DB(testTenant).Table("plat_workflow").Where("id = ?", 55).Struct(&instance)
 	if err != nil {
 		panic(err)
 	}
@@ -84,3 +85,13 @@ func TestAssignTransCustomerApproval(t *testing.T) {
 		panic(err)
 	}
 }
+
+func TestGetUser(t *testing.T) {
+	ctx := context.WithValue(context.Background(), share.ReqMetaDataKey, map[string]string{
+		"tenant":      testTenant,
+		share.AuthKey: "iuxauv5FSTslRo+jIJhl19cupXNs5/H9kZ2o5Aazkw5LFkV7hO4gRforyS4s1yvX",
+	})
+
+	err := GetUser(ctx, 1)
+	fmt.Println(err)
+}

+ 2 - 1
opms_parent/schema/contract.sql

@@ -14,9 +14,10 @@ CREATE TABLE `ctr_contract` (
     `contract_start_time` datetime NOT NULL COMMENT '合同开始时间',
     `contract_end_time` datetime NOT NULL COMMENT '合同结束时间',
     `incharge_id` int(11) COMMENT '负责人ID',
-    `incharge_name` varchar(90) COMMENT '负责人',
+    `incharge_name` varchar(90) COMMENT '负责人(销售工程师)',
     `signatory_id` int(11) DEFAULT NULL COMMENT '公司签约人ID',
     `signatory_name` varchar(90) DEFAULT NULL COMMENT '公司签约人',
+    `signatory_type` varchar(255) DEFAULT NULL COMMENT '签订单位类型',
     `cust_signatory_id` int(11) DEFAULT NULL COMMENT '客户签约人ID',
     `cust_signatory_name` varchar(90) DEFAULT NULL COMMENT '客户签约人',
     `distributor_id` int(11) DEFAULT NULL COMMENT '经销商ID',

+ 2 - 1
opms_parent/schema/function.sql

@@ -24,5 +24,6 @@ RETURN currval(seq_name);
 END $ 
 DELIMITER ;
 
--- INSERT INTO plat_sequence VALUES ('customer_code', 0, 1, '', 1000, '系统管理员', '2023-02-09 10:27:42', null, null, null, null);
+-- INSERT INTO plat_sequence VALUES ('customer_code', 1000, 1, '', 1000, '系统管理员', '2023-02-09 10:27:42', null, null, null, null);
+-- INSERT INTO plat_sequence VALUES ('contract_code', 1000, 1, '', 1000, '系统管理员', '2023-02-09 10:27:42', null, null, null, null);
 -- select `nextval`('customer_code');

+ 4 - 1
opms_parent/schema/tmp.sql

@@ -6,4 +6,7 @@ alter table cust_customer add `cust_region_id` INT(11) COMMENT '所在区县ID'
 alter table cust_customer add `cust_region` VARCHAR(90) COMMENT '所在区县' after cust_region_id;
 alter table cust_customer modify `cust_status` VARCHAR(4) DEFAULT 10 COMMENT '客户状态(10 待领取 20 领取审批 30 已领取)';
 alter table cust_customer add `follow_up_man` VARCHAR(90) COMMENT '最后跟进人' after follow_up_date;
-alter table ctr_contract_invoice modify `appro_status` varchar(4) DEFAULT NULL COMMENT '审核状态 10 待提交审核 20 待审核 30 审核已同意 40 审核已拒绝 50 审核已撤销',
+alter table ctr_contract_invoice modify `appro_status` varchar(4) DEFAULT NULL COMMENT '审核状态 10 待提交审核 20 待审核 30 审核已同意 40 审核已拒绝 50 审核已撤销';
+
+alter table ctr_contract add `signatory_type` varchar(255) DEFAULT NULL COMMENT '签订单位类型 10 终端用户 20 经销商 30 代理商' after signatory_name;
+alter table ctr_contract modify `incharge_name` varchar(90) COMMENT '负责人(销售工程师)';