Git Product home page Git Product logo

idea_plugin_ncdevplugin's Introduction

简介

用友 Yonyou NC5系列 、 U8Cloud、 NC6系列 、 NCCloud 、 YonBIP Idea devtool Plugin
实现了 Idea Yonyou NC5x 、 U8Cloud 、 NC6x 、 NCCloud(新版改名叫YonBip) 、 YonBIP 开发插件。

注意,最新的插件安装包是 项目根目录的 idea_plugin_ncdevplugin文件名开头的 7z文件! 安装需要 下载这个7z文件后解压,里面是个zip,直接安装这个zip即可!

如果有多个 就都下载下来,加压,因为git限制文件大小,所以我可能会压缩zip成为 多个拆分大小的7z文件。 如果没有7z 那就是 项目根目录的 几十MB大小的那个 zip 文件 。

插件使用视频教程

使用教程: https://www.bilibili.com/video/BV1mg4y1f7cQ/?vd_source=6b1c74e795e65a8b04ffe9fe91867a10

因本人目前在微服务公司,所以本人业余接开发私单,有私单才能继续参与NC 继续更新插件

专业承接 U8C NC5 NC6 NCC BIP,java微服务 springcloud,前后端分离,小程序 H5APP 等等私活,用友高级以上认证,项目都是120家以上经验!每年至少会做10家以上私单项目!

业务联系方式: QQ 209308343 微信: yongyourj

交个朋友,支持一杯咖啡:

buy me a coffee

版本兼容性

V2以及以下版本 兼容 IDEA 2017-2023 (IDEA 本身支持JDK5及以后)
V3以及以上版本 兼容 IDEA 2021.2.1 和更新版本 (IDEA 本身支持JDK7及以后)
老版本的下载,见根目录 idea_plugin_ncdevplugin.zip 里的提交历史 下载历史文件即可!
因为仓库过大, V4.0.3以前版本 请访问备份的老仓库:
https://gitee.com/ubisofts/idea_plugin_nc5devplugin
或者
https://github.com/Air211111/idea_plugin_ncdevplugin

如果你用的是BIP,启动服务有问题 可以试试增加NC服务器运行的JVM参数:

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl           
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl       

检查NC代码规范因为需要全局扫描会比较慢,没反应就多点几次检查就好了。

插件截图

快速面板

配置NCHOME

补丁导出界面

NC代码规范检查

Action搜索(简单版本)

Action搜索(完整版本)

从数据库表抽取导出最新BMF文件

编辑文件右键菜单

导出离线数据字典效果

导出离线数据字典效果

重置密码

数据库连接生成

日志窗口

使用方式

插件安装后使用方式:

新建项目-必须步骤:
1. Tools -> 配置NC HOME   进行NC HOME配置! 
2. Tools -> 更新NC 库依赖 执行依赖更新! (第一步如果自动配置了 就不用再点,如果切换了home或者home里代码文件变动了 要在点一下更新)
3. Tools -> 生成默认NC运行配置!(如果重启IDEA后丢失了运行配置或者改了HOME 再次执行这个)    
4. 如果不想自己配置项目结构和新建src这些文件夹,可以在模块上右键 点击 重新配置模块结构
5. 如果有特殊需求可以直接修改 .idea文件夹里的 nc.properties 文件里配置内容,重启idea生效。
add-idea连接数据库导出sql脚本增加xml支持变量填充!! 参考文件: 参考配置文件/导出脚本配置参考-一个单据比如/items_p7_单据模板.xml

注意简单使用方式,数据库配置不管他 没用处的,就是个显示功能

导出补丁支持 模块写一个配置文件 自定义相对路径:

#本文件必须放入模块的根目录 文件名: patcherconfig.properties   
#文件用法(可参考示例文件 patcherconfig.properties 所有参数都可以配或不配置 插件有默认值的哈):   
# class全限定名=相对路径(也就是NC模块名字)   
#例子(对test无效):    
nc.ui.gl.AddVoucherLineAction=gl   
# 支持包路径比如:    
nc.ui.gl=gl2       
nc.ui=gl3       
#  会根据 包路径判断模块名字,优先级是 全路径》包路径(包路径从最末级逐个向上匹配)》模块猜测       
# 特殊参数:   
##是否不要test代码,默认true
config-notest=false         
##是否导出源代码,默认true
config-exportsourcefile=true         
##是否把代码打包成jar文件, 默认false    
config-compressjar=false        
##如果启用了代码打包成jar文件,是否删除class文件  默认false
config-compressEndDeleteClass
##如果打包jar,那么 META-INF.MF 文件模板磁盘全路径(可以不配置 采用默认)  
config-ManifestFilePath=path             
#是否猜测模块,默认false,开启后 如果配置文件没有指明的类会根据包名第三个判断模块       
# (比如 nc.ui.pub.ButtonBar 第三个是pub 所以认为模块是 pub)     
config-guessModule=true     
# 类路径配置文件:     
#     比如我要把 nc.bs.arap包里 1.txt和DzTakeF1Impl.wsdl文件输出到 arap模块下的包文件夹里:   
nc.bs.arap.1.txt=arap   
nc.bs.arap.DzTakeF1Impl.wsdl=arap    
# 是否不导出 modelue.xml 默认false
not-export-modelue-xml=false     

.idea 文件夹里 nc.properties 插件项目配置信息选项说明:

#IDEA插件配置文件, 位于项目跟 .idea文件夹内
#NC的HOME根目录
home=I\:\\runtime\\NCC2105HOME
#客户端ip
clientip=127.0.0.1
#客户端端口
clientport=13100
#是否过滤重复sql
filtersql=true
#是否启用iuap默认的子表配置, 目前没实现
enableSubResultSet=true
#是否不使用iuap导出的script的SQL文件进行汇总,而是强制使用IDEA插件连接NC数据库导出SQL语句
rebuildsql=true
#IDEA如果配置的强制导出SQL, 默认的数据源索引(NC的数据源列表第几个 0开始)
data_source_index=0
#IDEA如果强制导出SQL 是否导出delete语句
includeDeletes=false
#是否关闭 NCC的hotwebs文件的实时复制
close_client_copy=false
#强制指定NC的版本 NC5, NC6,  NCC,  U8Cloud
nc.version=NCC
#是否删除hotwebs的dist 然后强行npm run build一下
reNpmBuild=true
# 是否导出前端资源 resources文件夹,默认是
exportResources=true
# 是否导出sql,默认是
exportSql=true
# 是否只保留全量sql单个文件,默认是
onleyFullSql=true
####

IDEA连接数据库导出SQL的xml配置文件:

参考 参考配置文件中的 xml,
新增变量功能:

 <vars>
        <!--        这个可以定义这个文件范围内的变量,然后可以在下面的 标签值中 使用变量
        , 比如 我定一个 一个变量名 billType 那么下面使用可以用 {billType} 使用他(大小写敏感)
        ,固定内置变量: date 当前日期, datetime 当前日期加时间 , project 项目名称, module 模块名称
         -->
        <var name="appcode">40060101</var>
        <var name="user">_by 张三 {datetime} 导出应用编码:{appcode} 所属项目 {project} 代码模块 {module}</var>
 </vars>


常见问题

  1. IDEA 重启后如果提示运行配置的 variables 比如 FIELD_NC_HOME 等无效,请无视他 ,因为在项目运行列表里里配置了 ,无需在 file > setting > apperarance & behavior > path variables 里配置全局的!

已知BUG

  1. 注意: 如果你没有设置JAVAHOME或者ufjdk没有javap工具,导出补丁不会导出 同一个源文件内的非public类中匿名且非public的类文件。但如果有javap就会导出 但同时耗时较长!

未来待实现功能

  1. 元数据编辑 - 暂不完成
  2. WSDL新增功能 - 暂不完成

版本更新

<em>4.0.6 版本 更新:</em> <br>
      <ul>
              <li>1. 优化bug和操作便利性!</li>
              <li>2. 新增根据在类名或者接口名等点击右键 打开upm文件功能!</li>
      </ul>
      
<em>4.0 版本 更新:</em> <br>
      <ul>
              <li>1. 新增 根据数据库表最新数据导出BMF元数据功能!</li>
              <li>2. 优化 导出指定文件功能!</li>
      </ul>

<em>3.8 版本 更新:</em> <br>
      <ul>
          <li>1. 优化和修复部分功能</li>
          <li>2. IDEA强制连接数据库导出脚本SQL功能 新增 支持 模块\script\conf\initdata\ 下所有的.xml都会读取导出,而不是只导出items.xml和items_idea.xml</li>
      </ul>

<em>3.7 版本 更新:</em> <br>
      <ul>
          <li>1. 新增数据库全局搜索</li>
          <li>2. 新增MSTSC远程桌面管理</li>
          <li>3. 重写优化NCC的Action类和UPM的servlet搜索功能</li>
          <li>4. 大量弹框增加IDEA侧边栏界面,方便不想要弹框的用户</li>
      </ul>
      
<em>3.3 版本 更新:</em> <br>
      <ul>
          <li>1. 新增NC代码规范检查功能,可支持检查是否client private public 导包存在错误.</li>
      </ul>
      
  <em>3.1 版本 更新:</em> <br>
      <ul>
          <li>1. 支持导出补丁右侧选则只导出哪些模块或文件.</li>
          <li>2. 支持导出云管家格式补丁(
                    nc.prop配置: 
                        filtersql 是否过滤完全重复SQL语句 默认 true ,<br>
                        rebuildsql 是否无视iuap导出的SQL采用IDEA插件自动根据items.xml导出SQL 默认 false ,<br>
                        data_source_index idea导出SQL使用的数据源索引 默认 0 ,<br>
                        enableSubResultSet 是否支持iuap自带的子表导出 默认 true -此功能暂时不支持,如果用idea强制导出 那么必须手工配置子表到 items-idea.xml(和items.xml一个文件夹里)中 ,<br>
                        includeDeletes 是否导出delete删除已存在数据的语句 默认 false .<br>
                        reNpmBuild 是否强制执行npm build 默认 true .<br>
                        format4Ygj 导出云管家模式 默认 true .<br>
              )
          </li>
      </ul>
     <em>3.0 版本 更新:</em> <br>
          <ul>
              <li>1. 支持导出补丁构建成NCC特有结构(前后端,前端要自己先build好).</li>
              <li>1. 支持自动合并和过滤SQL脚本(
                        nc.prop配置: 
                            filtersql 是否过滤完全重复SQL语句 默认 true ,<br>
                            rebuildsql 是否无视iuap导出的SQL采用IDEA插件自动根据items.xml导出SQL 默认 false ,<br>
                            data_source_index idea导出SQL使用的数据源索引 默认 0 ,<br>
                            enableSubResultSet 是否支持iuap自带的子表导出 默认 true -此功能暂时不支持,如果用idea强制导出 那么必须手工配置子表到 items-idea.xml(和items.xml一个文件夹里)中 ,<br>
                            includeDeletes 是否导出delete删除已存在数据的语句 默认 false .<br>
                            reNpmBuild 是否强制执行npm build 默认 true .<br>
                  )
              </li>
          </ul>
    <em>2.5.7 版本 更新:</em> <br>
      <ul>
          <li>1. 修复部分NCC的支持性问题.</li>
      </ul>

  <em>2.5.0 版本 更新:</em> <br>
      <ul>
          <li>1. 新增强行指定NC版本: <br>
                在.idea文件夹的nc.prop文件配置 nc.version参数为 NC5, NC6,  NCC,  U8Cloud 几种即可。
           </li>
          <li>2. 增加对NCC的特殊支持(特殊的hotwebs路径和配置文件路径和补丁结构)</li>
          <li>3. 优化运行等配置的生成参数</li>
          <li>4. 定时提醒和元数据复制无法正常使用,暂不修复,用处不大</li>
          <li>5. 修复部分情况下插件报错的问题</li>
      </ul>

 <em>2.4.0 版本 更新:</em> <br>
      <ul>
          <li>1. 新增NC6x导出单据脚本功能(整合一个大佬的工具) </li>
          <li>2. 新增元数据文件复制功能(整合一个大佬的工具) </li>
      </ul>
      
    <em>2.3.0 版本 更新:</em> <br>
          <ul>
              <li>1. 新增数据源 一键添加到Database工具连接列表功能 </li>
              <li>2. 新增重置NC操作员密码功能 </li>
              <li>3. 新增一键查看数据源列表和密码功能</li>
          </ul>
    
         <em>2.2.1 版本 更新:</em> <br>
          <ul>
              <li>1. 优化部分代码,减少插件直接爆出错误信息</li>
              <li>2. 修复部分小错误</li>
              <li>3. 修复 U8Cloud部分功能无法使用</li>
          </ul>
    
        <em>2.2.0 版本 更新:</em> <br>
          <ul>
              <li>1. 优化部分代码,减少插件直接爆出错误信息</li>
              <li>2. 新增 统一日志窗口,部分界面 不在使用右下角弹框</li>
              <li>3. 修复 U8Cloud部分功能无法使用</li>
              <li>4. 新增意见生成VO的set方法用</li>
              <li>5. 修复 U8Cloud部分功能无法使用</li>
          </ul>
    
        <em>2.1.1 版本 更新:</em> <br>
          <ul>
              <li>1. 新增 文件夹转jar功能</li>
              <li>2. 新增 NC补丁class模块转jar功能</li>
          </ul>
    
          <em>2.1.0 版本 更新:</em> <br>
          <ul>
              <li>1. 不修改NC本身数据源配置文件prop.xml</li>
              <li>2. 生成运行配置会生成模块的补丁导出配置文件。</li>
              <li>3. 修复打包成Jar Jar文件异常 无法识别。</li>
              <li>4. 增加部分导出补丁的配置参数。</li>
              <li>5. 导出补丁的支持包路径配置。</li>
          </ul>
    
          <em>2.0 版本重大更新:</em> <br>
          <ul>
              <li>1. 优化大量代码</li>
              <li>2. 支持IDEA同时打开多个项目 区分当前按钮点击所在项目。</li>
              <li>3. 修复IDEA同时打开多个项目 ,每次配置文件打开自动加载新的项目插件配置文件。</li>
          </ul>

感谢

部分代码 参考或使用了 部分插件开源项目的代码和功能灵感设计。 涉及到的有(列表可能不全,请谅解,实际已源码和项目为准): IDEA plugin 官方示例项目 或 开源插件: 比如 https://github.com/SonarSource/sonarlint-intellij , https://github.com/gejun123456/intellij-generateAllSetMethod ,https://github.com/jshiell/checkstyle-idea 等 框架比如 guava hutool 小乖乖 等等 再次感谢开源项目参与者们的无私奉献!

备注

IDEA常见事件: 事件分发 com.intellij.util.messages.impl.MessageBusImpl.invokeListener

   Build Manager   com.intellij.compiler.server.BuildManagerListener                                         
   compilation status        com.intellij.openapi.compiler.CompilationStatusListener                  
Run Content      com.intellij.execution.ui.RunContentWithExecutorListener                       

事件断点一些不需要的:


!"IdePerformanceListener".equals(message.getTopic().getDisplayName()) 
&& !"Application activation notifications".equals(message.getTopic().getDisplayName())
&& !"FrameStateListener".equals(message.getTopic().getDisplayName())
&& !"action changes".equals(message.getTopic().getDisplayName())
        && !"Document load, save and reload events".equals(message.getTopic().getDisplayName())   
        && !"tool window events".equals(message.getTopic().getDisplayName())
        && !"services topic".equals(message.getTopic().getDisplayName()) 
        && !"configuration executed".equals(message.getTopic().getDisplayName())  
        && !"IdeStatusBar.Text".equals(message.getTopic().getDisplayName())
        && !"compilation status".equals(message.getTopic().getDisplayName())
        && !"custom builder message".equals(message.getTopic().getDisplayName())
&& !"Build Manager".equals(message.getTopic().getDisplayName())
&& !"LOG_MODEL_CHANGED".equals(message.getTopic().getDisplayName())
&& !"Notifications".equals(message.getTopic().getDisplayName())
&& !"NewVirtualFileSystem changes".equals(message.getTopic().getDisplayName())
&& !"Run Content".equals(message.getTopic().getDisplayName())
&& !"DebuggerManagerListener".equals(message.getTopic().getDisplayName())
&& !"NewVirtualFileSystem changes".equals(message.getTopic().getDisplayName())


idea_plugin_ncdevplugin's People

Contributors

ts1993 avatar

Stargazers

信我的邪 avatar 糊糊 avatar zhangzhihong avatar gamerenzz avatar 梦奇D灬小武 avatar Judson Palen avatar  avatar Allto avatar  avatar AKA西部悍匪 avatar DZero avatar  avatar DY avatar tungchi avatar 何亮 avatar 逆向tg:roseccc avatar plato4ever avatar  avatar 王晓旭 avatar  avatar  avatar David_liu avatar BagHead avatar

Watchers

David_liu avatar plato4ever avatar  avatar air avatar

idea_plugin_ncdevplugin's Issues

导出补丁问题

在mac环境下 导出补丁选择 云管家格式,实际上补丁文件已经导出,但是后台任务却一直运行,一直在提示导出中 请等待 代码打包成jar

老师傅对nc6x的代码研究如何哇,请教一个问题

最近在研究nc的portal用户密码加解密方式,但是没有着手出,比如sm_user中数据库存储的密码都是 U_U++--V281415b277b1ec75bfe787830caf6ad9 这种格式,在哪里去寻找加密方式呢?以及如何尝试解密呢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.