Răsfoiți Sursa

feature: 完善合同创建审批文件上传

liuyaqi 3 ani în urmă
părinte
comite
4cb78b5443

+ 11 - 10
opms_libary/micro_srv/micro_srv.go

@@ -2,14 +2,22 @@ package micro_srv
 
 import (
 	"context"
+	"encoding/json"
+	"errors"
+	"io/ioutil"
+	"net"
+	"os"
+	"path"
+	"strconv"
+	"strings"
+	"time"
+
 	"dashoo.cn/common_definition/comm_def"
 	"dashoo.cn/opms_libary/dynamic"
 	"dashoo.cn/opms_libary/gtoken"
 	"dashoo.cn/opms_libary/multipart"
 	"dashoo.cn/opms_libary/myerrors"
 	"dashoo.cn/opms_libary/request"
-	"encoding/json"
-	"errors"
 	"github.com/gogf/gf/encoding/gbase64"
 	"github.com/gogf/gf/encoding/gjson"
 	"github.com/gogf/gf/errors/gerror"
@@ -24,13 +32,6 @@ import (
 	"github.com/smallnest/rpcx/protocol"
 	"github.com/smallnest/rpcx/server"
 	"github.com/smallnest/rpcx/share"
-	"io/ioutil"
-	"net"
-	"os"
-	"path"
-	"strconv"
-	"strings"
-	"time"
 )
 
 // InitMicroSrvClient 获取微服务客户端,arg为可选参数,若有必须是两个,分别是:reg string, serverAddr string
@@ -161,7 +162,7 @@ func streamHandler(conn net.Conn, args *share.StreamServiceArgs) {
 			message := new(dynamic.Message)
 			message.ClassName = className
 			message.MethodName = methodName
-			message.Payload = &multipart.MultipartFile{FileName: fileName, FileSize: gconv.Int64(fileSize), File: tmpFile}
+			message.Payload = &multipart.MultipartFile{FileName: fileName, FileSize: gconv.Int64(fileSize), File: tmpFile, Meta: args.Meta}
 			rsp, err := dynamic.Invoker.HandleInvoker(ctx, message)
 			if err != nil {
 				resp := make(map[string]interface{})

+ 67 - 0
opms_parent/app/handler/contract/ctr_contract.go

@@ -2,9 +2,14 @@ package contract
 
 import (
 	"context"
+	"fmt"
+	"strconv"
 
 	model "dashoo.cn/micro/app/model/contract"
 	service "dashoo.cn/micro/app/service/contract"
+	"dashoo.cn/opms_libary/micro_srv"
+	"dashoo.cn/opms_libary/multipart"
+	"dashoo.cn/opms_libary/plugin/dingtalk"
 
 	"dashoo.cn/common_definition/comm_def"
 	"github.com/gogf/gf/frame/g"
@@ -114,6 +119,68 @@ func (c *CtrContract) Commit(ctx context.Context, req *model.CtrContractCommitRe
 	return nil
 }
 
+type CtrContractHandler struct{}
+
+var spaceId = "21042518430"
+
+func (h *CtrContractHandler) CommitWithFile(ctx context.Context, args *multipart.MultipartFile, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("CtrContractHandler.CommitWithFile request %#v ", *args)
+	// 获取用户信息
+	userInfo, err := micro_srv.GetUserInfo(ctx)
+	if err != nil {
+		return fmt.Errorf("获取用户信息异常:%s", err.Error())
+	}
+	if userInfo.DingtalkUid == "" {
+		return fmt.Errorf("该用户钉钉 uid 为空")
+	}
+	s, err := service.NewCtrContractService(ctx)
+	if err != nil {
+		return err
+	}
+	if args.FileName == "" {
+		return fmt.Errorf("文件名称不能为空")
+	}
+	if args.File == nil {
+		return fmt.Errorf("文件不能为空")
+	}
+	if args.File.Name() == "" {
+		return fmt.Errorf("文件路径不能为空")
+	}
+	contractId, err := strconv.Atoi(args.Meta["contractId"])
+	if err != nil {
+		return fmt.Errorf("合同 Id 不合法 %s", args.Meta["contractId"])
+	}
+
+	fmt.Println(args.File.Name(), args.FileName, args.FileSize, args.Meta)
+	fmt.Println(spaceId, userInfo.DingtalkId, args.FileName, args.File.Name())
+	// resp, err := s.UploadFile("21042518430", "8xljy04PZiS9iPxp5PhDnUzQiEiE", "引物导入模板-000000.xlsx", "/Users/chengjian/Downloads/引物导入模板.xlsx")
+
+	resp, err := dingtalk.Client.GetStorage().UploadFile(spaceId, userInfo.DingtalkId, args.FileName, args.File.Name())
+	if err != nil {
+		return fmt.Errorf("钉钉上传文件异常 %s", err.Error())
+	}
+
+	err = s.Commit(ctx, &model.CtrContractCommitReq{
+		Id:            contractId,
+		ContractModel: args.Meta["contractModel"],
+		Terms:         args.Meta["terms"],
+		PayTerms:      args.Meta["payTerms"],
+		File: []model.DingFileInfo{
+			{
+				SpaceId:  resp.Dentry.SpaceId,
+				FileId:   resp.Dentry.Id,
+				FileName: resp.Dentry.Name,
+				FileSize: resp.Dentry.Size,
+				FileType: resp.Dentry.Extension,
+			},
+		},
+	})
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
 // Swagger:CtrContract 合同,测试tag 更新合同
 func (c *CtrContract) Update(ctx context.Context, req *model.CtrContractUpdateReq, rsp *comm_def.CommonMsg) error {
 	g.Log().Infof("CtrContract.Update request %#v ", *req)

+ 4 - 1
opms_parent/main.go

@@ -2,10 +2,12 @@ package main
 
 import (
 	"context"
+	"net/http"
+
 	"dashoo.cn/micro/app/handler/dingtalk"
 	"dashoo.cn/micro/app/handler/workflow"
+	"dashoo.cn/opms_libary/dynamic"
 	"dashoo.cn/opms_libary/myerrors"
-	"net/http"
 
 	"dashoo.cn/opms_libary/micro_srv"
 	"github.com/gogf/gf/frame/g"
@@ -59,6 +61,7 @@ func main() {
 	// 钉钉回调接口
 	s.RegisterName("DingEvent", new(dingtalk.DingHandler), "")
 
+	dynamic.Invoker.Register(new(contract.CtrContractHandler))
 	// 注册服务对象
 	//s.RegisterName("Auth", new(handler.Auth), "")
 

+ 5 - 0
opms_parent/schema/contract.sql

@@ -4,6 +4,11 @@ CREATE TABLE `ctr_contract` (
     `contract_name` varchar(90) NOT NULL COMMENT '合同名称',
     `cust_id` int(11) NOT NULL COMMENT '关联客户',
     `cust_name` varchar(90) NOT NULL COMMENT '客户名称',
+    `product_line` varchar(4) NOT NULL COMMENT '产品线',
+    `cust_province_id` INT(11) COMMENT '所在省ID',
+    `cust_province` VARCHAR(90) COMMENT '所在省',
+    `cust_city_id` INT(11) COMMENT '所在市ID',
+    `cust_city` VARCHAR(90) COMMENT '所在市',
     `nbo_id` int(11) NOT NULL COMMENT '关联项目',
     `nbo_name` varchar(90) NOT NULL COMMENT '项目名称',
     `appro_status` varchar(4) NOT NULL COMMENT '审核状态 10 待提交审核 20 待审核 30 审核已同意 40 审核已拒绝 50 审核已撤销',

+ 7 - 0
opms_parent/schema/tmp.sql

@@ -12,3 +12,10 @@ alter table ctr_contract add `signatory_type` varchar(255) DEFAULT NULL COMMENT
 alter table ctr_contract modify `incharge_name` varchar(90) COMMENT '负责人(销售工程师)';
 
 alter table ctr_contract modify `appro_status` varchar(4) NOT NULL COMMENT '审核状态 10 待提交审核 20 待审核 30 审核已同意 40 审核已拒绝 50 审核已撤销',
+
+alter table ctr_contract  add `cust_province_id` INT(11) COMMENT '所在省ID' after cust_name;
+alter table ctr_contract  add `cust_province` VARCHAR(90) COMMENT '所在省' after cust_province_id;
+alter table ctr_contract  add `cust_city_id` INT(11) COMMENT '所在市ID' after cust_province;
+alter table ctr_contract  add `cust_city` VARCHAR(90) COMMENT '所在市' after cust_city_id;
+
+alter table ctr_contract  add  `product_line` varchar(4) NOT NULL COMMENT '产品线' after cust_name;