Просмотр исходного кода

生成代码文件后,文件信息入库

lichunlei 4 месяцев назад
Родитель
Сommit
c069eb9f3f
1 измененных файлов с 121 добавлено и 7 удалено
  1. 121 7
      Task/MakeHelper.cs

+ 121 - 7
Task/MakeHelper.cs

@@ -45,7 +45,9 @@ namespace Tasks
                 //     string packageName = "123123123";
                 // }
                 //附加数据,原样返回
-                string attach = jsonObj["attach"].ToString();
+                JsonData attach = jsonObj["attach"];
+                string versionNo = attach["versionNo"].ToString();
+                string fileType = attach["fileType"].ToString();
                 //读取模板文件内容
                 // string templateString = Function.ReadInstance("Template/" + modePath + ".json");
                 var templateService = App.GetRequiredService<IMakeTemplateService>();
@@ -56,6 +58,9 @@ namespace Tasks
                 //解析模板内容
                 string resultString = Util.Maker.StartMake(jsonObj["data"], templateString);
                 resultString = Util.Maker.replaceKeyToValue(jsonObj["data"], resultString);
+                int serviceId = int.Parse(jsonObj["data"]["projectService"]["id"].ToString());
+                int projectId = int.Parse(jsonObj["data"]["projectService"]["projectId"].ToString());
+                int javaVersion = codeVersion(serviceId, versionNo);
                 //生成文件
                 string path = template.makePath.Substring(0, template.makePath.LastIndexOf("/") + 1);
                 string fileName = template.makePath.Substring(template.makePath.LastIndexOf("/") + 1);
@@ -64,11 +69,10 @@ namespace Tasks
                 Function.WritePage(path, fileName, resultString);
                 string startPath = Function.getPath(path + fileName);
                 OssHelper.Instance.Upload(startPath);
+                addFile(projectId, serviceId, 0, versionNo, fileName, path + fileName, path + fileName, fileType, javaVersion, "java");
                 //生成数据入库
-                JsonData data = JsonMapper.ToObject(attach);
-                int dataId = 0;
-                if(attach.Contains("dataId")) dataId = int.Parse(Function.CheckInt(data["dataId"].ToString()));
-                string makeFileType = data["fileType"].ToString();
+                int dataId = int.Parse(Function.CheckInt(attach["dataId"].ToString()));
+                string makeFileType = attach["fileType"].ToString();
                 var makeDataService = App.GetRequiredService<IMakeDataService>();
                 var item = makeDataService.GetFirst(m => m.dataId == dataId && m.makeFileType == makeFileType);
                 if(item == null)
@@ -80,7 +84,7 @@ namespace Tasks
                         makeFilePath = path,
                         makeFileType = makeFileType,
                         createTime = DateTime.Now,
-                        createBy = data["createBy"].ToString()
+                        createBy = attach["createBy"].ToString()
                     });
                 }
                 else
@@ -88,7 +92,7 @@ namespace Tasks
                     item.makeFileName = fileName;
                     item.makeFilePath = path;
                     item.updateTime = DateTime.Now;
-                    item.updateBy = data["createBy"].ToString();
+                    item.updateBy = attach["createBy"].ToString();
                     makeDataService.Update(item);
                 }
             }
@@ -100,5 +104,115 @@ namespace Tasks
             // RabbitMQClient.Instance.Push("MakeSqlCallBackQueue", requestId + "#cut#" + attach + "#cut#" + resultString);
         }
 
+        //生成代码版本
+        public int codeVersion(int DatabaseId, string versionNo)
+        {
+            int codeVersion = RedisServer.Cache.Get<int>("codeVersion:" + DatabaseId + ":" + versionNo);
+            if(codeVersion > 0)
+            {
+                return codeVersion;
+            }
+            var versionForProjectService = App.GetRequiredService<IVersionForProjectService>();
+            VersionForProject pro = versionForProjectService.GetFirst(m => m.databaseId == DatabaseId) ?? versionForProjectService.InsertReturnEntity(new VersionForProject()
+            {
+                databaseId = DatabaseId,
+            });
+            pro.javaVersion += 1;
+            versionForProjectService.Update(pro);
+            RedisServer.Cache.Set("codeVersion:" + DatabaseId + ":" + versionNo, pro.javaVersion, TimeSpan.FromMinutes(5));
+            return pro.javaVersion;
+        }
+
+        //生成代码版本-添加文件
+        public void addFile(int projectId, int serverId, int groupId, string versionNo, string fileName, string downloadPath, string localPath, string fileType = "", int codeVersion = 0, string language = "")
+        {
+            var versionsService = App.GetRequiredService<IVersionsService>();
+            var makeFilesService = App.GetRequiredService<IMakeFilesService>();
+            var filesForAllService = App.GetRequiredService<IFilesForAllService>();
+            Versions version = versionsService.GetFirst(m => m.projectId == projectId && m.serverId == serverId && m.groupId == groupId && m.versionNo == versionNo) ?? versionsService.InsertReturnEntity(new Versions()
+            {
+                createTime = DateTime.Now,
+                projectId = projectId,
+                serverId = serverId,
+                versionNo = versionNo,
+                groupId = groupId,
+            });
+            string[] PathList = localPath.TrimStart('/').Split('/');
+            int ParentFileId = 0;
+            int AllParentFileId = 0;
+            string DirPath = "";
+            for (int i = 0; i < PathList.Length - 1; i++)
+            {
+                string Path = PathList[i];
+                DirPath += PathList[i] + "/";
+                MakeFiles filePath = makeFilesService.GetFirst(m => m.projectId == projectId && (m.versionId == version.versionId || m.versionId == 0) && m.localPath == DirPath) ?? makeFilesService.InsertReturnEntity(new MakeFiles()
+                {
+                    createTime = DateTime.Now,
+                    projectId = projectId,
+                    versionId = version.versionId,
+                    fileName = Path,
+                    parentFileId = ParentFileId,
+                    fileType = "path",
+                    localPath = DirPath,
+                    language = language,
+                });
+                filePath.fileVersionNo = codeVersion;
+                ParentFileId = filePath.fileId;
+
+                FilesForAll fileAllPath = filesForAllService.GetFirst(m => m.projectId == projectId && m.localPath == DirPath);
+                if(fileAllPath == null)
+                {
+                    fileAllPath = filesForAllService.InsertReturnEntity(new FilesForAll()
+                    {
+                        createTime = DateTime.Now,
+                        projectId = projectId,
+                        fileName = Path,
+                        parentFileId = AllParentFileId,
+                        fileType = "path",
+                        localPath = DirPath,
+                    });
+                }
+                else
+                {
+                    fileAllPath.versionNo = version.versionId;
+                    filesForAllService.Update(fileAllPath);
+                }
+                AllParentFileId = fileAllPath.fileId;
+            }
+            MakeFiles file = makeFilesService.GetFirst(m => m.projectId == projectId && (m.versionId == version.versionId || m.versionId == 0) && m.localPath == localPath && m.fileName == fileName) ?? makeFilesService.InsertReturnEntity(new MakeFiles()
+            {
+                createTime = DateTime.Now,
+                projectId = projectId,
+                versionId = version.versionId,
+                fileName = fileName,
+                fileType = fileType,
+                localPath = localPath,
+                parentFileId = ParentFileId,
+                language = language,
+            });
+            file.downloadPath = downloadPath;
+            file.fileVersionNo = codeVersion;
+
+            FilesForAll fileAll = filesForAllService.GetFirst(m => m.projectId == projectId && m.localPath == localPath && m.fileName == fileName) ?? filesForAllService.InsertReturnEntity(new FilesForAll()
+            {
+                createTime = DateTime.Now,
+                projectId = projectId,
+                fileName = fileName,
+                fileType = fileType,
+                localPath = localPath,
+                parentFileId = ParentFileId,
+            });
+            fileAll.downloadPath = downloadPath;
+            fileAll.versionNo = codeVersion;
+            filesForAllService.Update(fileAll);
+
+            var files = makeFilesService.GetList(m => m.projectId == projectId && m.language == language && m.versionId == 0);
+            foreach(MakeFiles sub in files)
+            {
+                sub.versionId = version.versionId;
+                makeFilesService.Update(sub);
+            }
+        }
+
     }
 }