用友实习-debug日志1.单点登录到dip后,纳税主体管理节点,B分公司下没下级节点,却显示展开收缩图标; 该项目是FBIP 和 FDIP 的集成版本,就是在FBIP的税种核定设置界面直接单点登录融入了拥有新的框架FDIP,所以在这个页面中–税种核定设置,其实他对应的节点就是 FDIP 的税务主体管理。
该bug是因为没有下级的机构也显示了三角符号(下拉展示符),通过导师知道,是因为后端isSon的标识符赋值错误,正常来说是 没有下级 isSon = 1,存在下级 isSon = 2,前端通过获取isSon的值去执行不同的显示逻辑,1是没有三角符号,作为节点末级;2是有三角符号,可以继续展示子级。
我通过断点跟代码,最后发现是因为后端的查询赋值逻辑的if语句中,对isSon的赋值出错。传回前端的isSon的值全是null,导致前端无法获取准确的命令,出现了bug。
最后的解决方法是通过sql语句查询纳税主体数据库,获取所有的的parentId数据集合,然后将当前节点的id与parentId比较,如果parentId结果集contains该节点的id, ...
用友实习-debug日志本周主要进入的项目是FDIP下的全面税务管理项目,主要对项目中的需求性bug进行修改,并通过GitLab与同事进行版本控制,于周末同意打新补丁,更新项目版本。
需求BUG人员工时明细,导入导出模板中将原来机构改为机构名称,增加一列字段名为机构编码,导入时根据人员编码查找人员基本信息反写机构编码与名称,注意导出时机构编码与名称是否有值
要对Excel的导入导出流进行逻辑校验,并且对excel模板进行修改。FDIP的excel是通过输入输出流手搓的一个excel导入导出功能,并没有使用Spring框架以及第三方库Apache POI 和 JExcelAPI实现Excel导入导出,所以在理解代码的就花了不少时间。
FDIP是通过批注的方式控制Excel的导出范围,当新增列或者行的时候需要对应的修改批注,不然会造成数据丢失:
行和列都要调整
导出的时候需要把新增的列也就是机构编码查询出来并放进导出数据集中:
123456789101112131415161718192021// 获取所有的人员编号 Set<String> staf ...
用友实习-debug日志本周主要进入的项目是FDIP下的全面税务管理项目,主要对项目中的需求性bug进行修改,并通过GitLab与同事进行版本控制,于周末同意打新补丁,更新项目版本。
缺陷BUG人员工时明细,有问题的数据要一起显示出来
还是通过测试环境获取入口类并开始调试打断点Debug查询数据
发现前端传回的数据staffNo=null,属于前端缺陷:
但我是后端开发,前端React找不到点击事件(太复杂),只能通过后端sql进行信息反写,开始打算使用的是staffName查询对应的staffNo,但是后端也设置了限制,需要获取到机构编码,才能进行staffName的查询。
1234// 通过 pkStaff 查询人员信息StaffHourDetail staff = staffHourDetailAssoService.queryList("staffName", vo.getEntity().getStaffName()).get(0);// 获取人员编号String staffNo = staff.getStaffNo();
抛 ...
用友实习-debug日志本周主要进入的项目是FDIP下的全面税务管理项目,主要对项目中的需求性bug进行修改,并通过GitLab与同事进行版本控制,于周末同意打新补丁,更新项目版本。
缺陷BUG1无形资产台账,导入文件中使用人有值,导入时还是报错
通过远程测试环境复现BUG,找到接口入口类:
找到后端接口,开始通过断点调试Debug
最后通过断点数据查看是因为导入时staffNo有值,但是staffName=null导致导入失败,需要修复,通过全面税务rdcp封装类使用staffNo获取staffName
最后完成逻辑校验,成功导入。
1234567891011for (RdcpBusiIntanAmort rdcpBusiIntanAmort : importEntityList) { // 使用人(人员编号)获取人员名称 if (rdcpBusiIntanAmort.getUserCodeLocal() != null && !rdcpBusiIntanAmort.getUserCodeLoc ...
详解 ThreadPoolExecutor 的参数含义及源码执行流程?线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开**ThreadPoolExecutor,在阿里巴巴的《Java开发手册》中是这样规定线程池的:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor**的方式,这样的处理方式让写的读者更加明确线程池的运行规则,规避资源耗尽的风险。
说明:Executors 返回的线程池对象的弊端如下:
1)**FixedThreadPool** 和 **SingleThreadPool**:允许的请求队列长度为 **Integer.MAX_VALUE**,可能会堆积大量的请求,从而导致 OOM(Out Of Memory)
2)**CachedThreadPool** 和 **ScheduledThreadPool**:允许的创建线程数量为 **Integer.MAX_VAL ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
HashMap 是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为 HashMap 的知识点有很多,同时它又属于 Java 基础知识的一部分,因此在面试中经常被问到。
典型回答在JDK1.7中HashMap是以数组加链表的形式组成的,JDK1.8之后新增了红黑树的组成结构,当链表大于8时,链表结构会转换成红黑树结构,它的组成结构如下图所示:
数组中的元素我们称之为哈希桶,它的定义如下:
123456789101112131415161718192021222324252627282930313233343536373839static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) { ...
一、安装nacos官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
1.1 Nacos 概述Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1.2 下载nacos下载最新稳定版2.1.1:https://github.com/alibaba/nacos/releases 后解压成目录 /dev/nacos。
目录说明:
nacos|—bin 启动/停止 nacos 服务的shell脚本, widowns系统是 cmd脚本|—conf nacos ...
一、 什么是JDBCJDBC(Java DataBase Connectivity)是Java数据库连接技术的简称。它提供了连接和操作各种常用数据库的能力。JDBC只定义了Java应用程序访问数据库的标准接口层,而具体的实现由各数据库厂商提供(称为数据库驱动程序包)。
二、 JDBC工作原理JDBC驱动程序包是对JDK JDBC API的具体实现。JDBC定义了与数据库通信的规范和协议,而这些规范的具体实现由数据库厂商负责。
三、 JDBC访问数据库的步骤准备工作将驱动程序包mysql-connector-j-8.2.0.jar引入项目依赖中。
注册数据库驱动程序
123456789101112131415161718192021222324252627282930final String DRIVER = "com.mysql.cj.jdbc.Driver";final String URL = "jdbc:mysql://localhost:3306/scott";final String USERNAME = "root&quo ...
MySQL数据库1. MySQL数据库安装MySQL安装版本没要求(MySQL 8.0.26),安装基本是一路下一步。
MySQL Installer 8.0.27: https://dev.mysql.com/downloads/windows/installer/8.0.html
安装后:得到一个MySQL的服务,每次使用MySQL需要启动此服务(默认是自动开启的)。MySQL 5安装后只带一个命令行环境的客户端,如果使用图形界面,可以用第三方软件(Navicat)、IDEA数据库客户端或MySQL 8.0自带图形客户端(Workbench)。
1.1 MySQL存储引擎MySQL常用的两个存储引擎是 MyISAM 和 InnoDB:
(1) MyISAM 表文件:
.MYD : 即 MY Data,表数据文件
.MYI : 即 MY Index,索引文件
.log : 日志文件
(2) InnoDB采用表空间(tablespace)来管理数据,存储表数据和索引:
InnoDB数据库文件(即InnoDB文件集,ib-file set):
ibdata1、ibdata2等:系统表 ...