当前位置: 首页 > 编程日记 > 正文

Java项目:企业人事管理系统(java+SSM+jsp+mysql+maven)

源码获取:博客首页 "资源" 里下载!

一、项目简述

功能介绍:员工管理,用户管理,部门管理,文档管理, 职位管理等等。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Spring + SpringMVC + html+ css + JavaScript + JQuery + Ajax + maven等等。

后台部门管理:

/*** 后台部门管理Controller*/
@Controller
@RequestMapping("/admin/department")
public class DepartmentController {@Autowiredprivate DepartmentService departmentService;@Autowiredprivate OperaterLogService operaterLogService;/*** 分页查询部门列表* @param model* @param pageBean* @param department* @return*/@RequestMapping("/list")public String list(Model model, PageBean<Department> pageBean,Department department){model.addAttribute("title","部门列表");model.addAttribute("name",department.getName());model.addAttribute("pageBean",departmentService.findList(department, pageBean));return "/admin/department/list";}/*** 添加页面* @return*/@RequestMapping("/add")public String add(){return "/admin/department/add";}/*** 部门添加提交处理* @param department* @return*/@RequestMapping(value = "/add",method = RequestMethod.POST)@ResponseBodypublic Result<Boolean> add(Department department){//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(department);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(department.getNote().length() > 50){return Result.error(CodeMsg.DEPARTMENT_LENGTH_EXIST);}if(departmentService.isExistName(department.getName(),0l)){return Result.error(CodeMsg.ADMIN_DEPARTMENT_NAME_EXIST);}if(departmentService.save(department) == null){return Result.error(CodeMsg.ADMIN_DEPARTMENT_SAVE_ERROR);}operaterLogService.add("添加部门,部门名:" + department.getName());return Result.success(true);}/*** 编辑页面* @param model* @param id* @return*/@RequestMapping("/edit")public String edit(Model model,@RequestParam(name="id",required=true)Long id){model.addAttribute("department",departmentService.find(id));return "/admin/department/edit";}/*** 编辑表单提交处理* @param department* @return*/@RequestMapping(value = "/edit",method = RequestMethod.POST)@ResponseBodypublic Result<Boolean> edit(Department department){//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(department);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(department.getId() == null || department.getId().longValue() <= 0){return Result.error(CodeMsg.ADMIN_DEPARTMENT_NO_EXIST);}if(department.getNote().length() > 50){return Result.error(CodeMsg.DEPARTMENT_LENGTH_EXIST);}if(departmentService.isExistName(department.getName(),department.getId())){return Result.error(CodeMsg.ADMIN_DEPARTMENT_NAME_EXIST);}//到这说明一切符合条件,进行数据库保存Department findById = departmentService.find(department.getId());//讲提交的用户信息指定字段复制到已存在的department对象中,该方法会覆盖新字段内容BeanUtils.copyProperties(department, findById, "id","createTime","updateTime");if(departmentService.save(findById) == null){return Result.error(CodeMsg.ADMIN_DEPARTMENT_EDIT_ERROR);}operaterLogService.add("编辑部门,部门名:" + department.getName());return Result.success(true);}/*** 根据id删除* @param id* @return*/@RequestMapping(value = "delete",method = RequestMethod.POST)@ResponseBodypublic Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){try{departmentService.delete(id);}catch (Exception e){return Result.error(CodeMsg.ADMIN_DEPARTMENT_DELETE_ERROR);}operaterLogService.add("删除部门,部门ID:" + id);return Result.success(true);}
}

后台考核管理:

/*** 后台考核管理Controller*/
@Controller
@RequestMapping("/admin/assessment")
public class AssessmentController {@Autowiredprivate DepartmentService departmentService;@Autowiredprivate StaffService staffService;@Autowiredprivate PeranceAssmentService peranceAssmentService;@Autowiredprivate AssessTargetService assessTargetService;@Autowiredprivate AttendanceService attendanceService;/*** 分页查询员工列表* @param model* @param pageBean* @param staff* @return*/@RequestMapping("/list")public String list(Model model, PageBean<Staff> pageBean, Staff staff){model.addAttribute("title","考核列表");Staff loginedStaff = SessionUtil.getLoginedStaff();model.addAttribute("jobNumber",staff.getJobNumber());model.addAttribute("pageBean",staffService.findDepartmentList(staff, pageBean,loginedStaff));return "/admin/assessment/list";}/*** 绩效考核页面* @return*/@RequestMapping("/achieve_add")public String add(@RequestParam("id")Long id,Model model){Staff staff = staffService.find(id);Long departmentId = staff.getDepartment().getId();Department department = departmentService.find(departmentId);List<AssessTarget> assessTargets = department.getAssessTargets();model.addAttribute("staff",staff);model.addAttribute("assessTargetList",assessTargets);return "/admin/assessment/add";}/*** 绩效考核添加提交处理* @param performanceAssessment* @return*/@RequestMapping(value = "/achieve_add",method = RequestMethod.POST)@ResponseBodypublic Result<Boolean> add(PerformanceAssessment performanceAssessment,@RequestParam("assTarget")String assTarget){//判断员工是否存在Staff staff = performanceAssessment.getStaff();if(staff==null){return Result.error(CodeMsg.ADMIN_STAFF_NOT_EXIST_ERROR);}//年份判断Integer year = performanceAssessment.getYear();if(year<=0){return Result.error(CodeMsg.ADMIN_PERFORMANCE_YEAR_ERROR);}//月份判断Integer month = performanceAssessment.getMonth();if(month<=0){return Result.error(CodeMsg.ADMIN_PERFORMANCE_MONTH_ERROR);}PerformanceAssessment assessment = peranceAssmentService.findByYearAndMonthAndStaffId(year, month,staff.getId());if(assessment!=null){return Result.error(CodeMsg.ADMIN_PERFORMANCE_EXIST_ERROR);}JSONArray array = JSONObject.parseArray(assTarget);double totalScore=0;double weight=0;for(int i=0;i<array.size();i++){Object  assessmentTarget =  array.getJSONObject(i);Object targetId = ((com.alibaba.fastjson.JSONObject) assessmentTarget).get("targetId");Object currentScore = ((com.alibaba.fastjson.JSONObject) assessmentTarget).get("score");String idl = targetId.toString();AssessTarget assessTarget = assessTargetService.find(Long.valueOf(idl));Integer targetScore = assessTarget.getScore();String score = currentScore.toString();totalScore += Double.parseDouble(score) *targetScore.doubleValue();weight+=targetScore.doubleValue();}double finalScore = totalScore / weight;performanceAssessment.setPercentage(new BigDecimal(finalScore));GradeEnum gradeEnum = GradeEnum.countGrade(finalScore);performanceAssessment.setGrade(gradeEnum);if(peranceAssmentService.save(performanceAssessment)==null){return Result.error(CodeMsg.ADMIN_PERFORMANCE_ADD_ERROR);}return Result.success(true);}/*** 添加年度考核* @param id* @return*/@RequestMapping("/annual_add")public String annualAdd(Model model,@RequestParam(name="id",required=true)Long id){Staff staff = staffService.findByIdAndIsStatus(id, StaffStatus.ON_THE_JOB.getCode());if(staff == null){return "redirect:list";}Date date = new Date();Calendar cal = Calendar.getInstance();cal.setTime(date);//获取去年的年份int year = cal.get(Calendar.YEAR) - 1;//请假天数Double leaveDays = attendanceService.sumLeaveDays(staff.getJobNumber(), year);//加班小时Double overTimeHours = attendanceService.sumOverTimeHours(staff.getJobNumber(), year);//缺勤天数Double absenceDays = attendanceService.sumAbsenceDays(staff.getJobNumber(), year);//总数量Integer count = peranceAssmentService.count(staff.getId(), year);BigDecimal performanceScore = BigDecimal.ZERO;if(count != 0){performanceScore = peranceAssmentService.sumPercentage(id, year);performanceScore = performanceScore.divide(new BigDecimal(count));performanceScore.setScale(2,BigDecimal.ROUND_HALF_UP);}model.addAttribute("staff",staff);model.addAttribute("year",year);model.addAttribute("leaveDays",leaveDays);model.addAttribute("overTimeHours",overTimeHours);model.addAttribute("absenceDays",absenceDays);model.addAttribute("performanceScore",performanceScore);return "admin/assessment/annual_add";}}

后台报表管理:

/*** 后台报表管理Controller*/
@Controller
@RequestMapping("/admin/report_form")
public class ReportFormController {@Autowiredprivate DepartmentService departmentService;@Autowiredprivate OperaterLogService operaterLogService;@Autowiredprivate StaffService staffService;@Autowiredprivate SalaryService salaryService;/*** 报表页面* @return*/@RequestMapping("/list")public String list(Model model,@RequestParam(name = "years",defaultValue = "",required = false)Integer years,@RequestParam(name = "months",defaultValue = "",required = false)Integer months){model.addAttribute("title","报表列表");List<Object> countDepartment = staffService.findCountDepartment(StaffStatus.ON_THE_JOB.getCode());List<Object> avgDepartment = staffService.findAvgDepartment(StaffStatus.ON_THE_JOB.getCode());int currentYear = DateUtil.getCurrentYear();int currentMonth = DateUtil.getCurrentMonth();if(years==null){years=currentYear;}if(months==null){months=currentMonth;}List<Object> salary = salaryService.sumByDepartmentByYearAndMonth(years,months);List<Object> countPayRoll = salaryService.countPayRollDepartmentByYear(years);Map<String, Object> ret = new HashMap<>();ret.put("months",months);ret.put("years",years);ret.put("salaryList",salary);ret.put("avgDepartments",avgDepartment);ret.put("countDepartments",countDepartment);ret.put("countPayRoll",countPayRoll);model.addAllAttributes(ret);return "/admin/report_form/list";}}

后台用户管理控制器:

/*** 后台用户管理控制器**/
@RequestMapping("/admin/user")
@Controller
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;@Autowiredprivate OperaterLogService operaterLogService;/*** 用户列表页面* @param model* @param user* @param pageBean* @return*/@RequestMapping(value="/list")public String list(Model model,User user,PageBean<User> pageBean){model.addAttribute("title", "用户列表");model.addAttribute("username", user.getUsername());model.addAttribute("pageBean", userService.findList(user, pageBean));return "admin/user/list";}/*** 新增用户页面* @param model* @return*/@RequestMapping(value="/add",method=RequestMethod.GET)public String add(Model model){model.addAttribute("roles", roleService.findAll());return "admin/user/add";}/*** 用户添加表单提交处理* @param user* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Result<Boolean> add(User user){//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(user);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(user.getRole() == null || user.getRole().getId() == null){return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);}//判断用户名是否存在if(userService.isExistUsername(user.getUsername(), 0l)){return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);}//到这说明一切符合条件,进行数据库新增if(userService.save(user) == null){return Result.error(CodeMsg.ADMIN_USE_ADD_ERROR);}operaterLogService.add("添加用户,用户名:" + user.getUsername());return Result.success(true);}/*** 用户编辑页面* @param model* @return*/@RequestMapping(value="/edit",method=RequestMethod.GET)public String edit(Model model,@RequestParam(name="id",required=true)Long id){model.addAttribute("roles", roleService.findAll());model.addAttribute("user", userService.find(id));return "admin/user/edit";}/*** 编辑用户信息表单提交处理* @param user* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Result<Boolean> edit(User user){//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(user);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}if(user.getRole() == null || user.getRole().getId() == null){return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);}if(user.getId() == null || user.getId().longValue() <= 0){return Result.error(CodeMsg.ADMIN_USE_NO_EXIST);}if(userService.isExistUsername(user.getUsername(), user.getId())){return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);}//到这说明一切符合条件,进行数据库保存User findById = userService.find(user.getId());//讲提交的用户信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容BeanUtils.copyProperties(user, findById, "id","createTime","updateTime");if(userService.save(findById) == null){return Result.error(CodeMsg.ADMIN_USE_EDIT_ERROR);}operaterLogService.add("编辑用户,用户名:" + user.getUsername());return Result.success(true);}/*** 删除用户* @param id* @return*/@RequestMapping(value="/delete",method=RequestMethod.POST)@ResponseBodypublic Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){try {userService.delete(id);} catch (Exception e) {return Result.error(CodeMsg.ADMIN_USE_DELETE_ERROR);}operaterLogService.add("删除用户,用户ID:" + id);return Result.success(true);}
}

源码获取:博客首页 "资源" 里下载!

相关文章:

XCODE 6.1.1 配置GLFW

最近在学习opengl的相关知识。第一件事就是配环境(好烦躁)。了解了一下os x下的OpenGL开源库&#xff0c;主要有几个&#xff1a;GLUT&#xff0c;freeglut&#xff0c;GLFW等。关于其详细的介绍可以参考opengl网站(https://www.opengl.org/wiki/Related_toolkits_and_APIs)。由…

SpringCloud远程调用为啥要采用HTTP,而不是RPC?

通俗的说法就是:比如说现在有两台服务器A和B,一个应用部署在A服务器上,另一个应用部署在B服务器上,如果A应用想要调用B应用提供的方法,由于他们不在一台机器下,也就是说它们不在一个JVM内存空间中,是无法直接调用的,需要通过网络进行调用,那这个调用过程就叫做RPC。建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket ,套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

vs快捷键及常用设置(vs2012版)

vs快捷键&#xff1a; 1、ctrlf F是Find的简写&#xff0c;意为查找。在vs工具中按此快捷键&#xff0c;可以查看相关的关键词。比如查找哪些页面引用了某个类等。再配合查找范围&#xff08;整个解决方案、当前项目、当前文档等&#xff09;&#xff0c;可以快速的找到问题所在…

python_day10

小甲鱼python学习笔记 爬虫之正则表达式 1.入门&#xff08;要import re&#xff09; 正则表达式中查找示例&#xff1a; >>> import re >>> re.search(rFishC,I love FishC.com) <re.Match object; span(7, 12), matchFishC> >>> #单纯的这种…

Graphics2D API:Canvas操作

在中已经介绍了Canvas基本的绘图方法,本篇介绍一些基本的画布操作.注意:1、画布操作针对的是画布,而不是画布上的图形2、画布变换、裁剪影响后续图形的绘制,对之前已经绘制过的内容没有影响。

关于Titandb Ratelimiter 失效问题的一个bugfix

本文简单讨论一下在TitanDB 中使用Ratelimiter的一个bug&#xff0c;也算是一个重要bug了&#xff0c;相关fix已经提了PR到tikv 社区了pull-210。 这个问题导致的现象是ratelimiter 在titandb Flush/GC 生成blobfiled的过程中无法生效&#xff0c;也就是无法限制titandb的主要…

Java项目:前台预定+后台管理酒店管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能介绍&#xff1a; 前台用户端&#xff1a;用户注册登录&#xff0c;房间展示&#xff0c;房间分类&#xff0c;房间 按价格区间查询&#xff0c;房间评论&#xff0c;房间预订等等 后台管…

Solr初始化源码分析-Solr初始化与启动

用solr做项目已经有一年有余&#xff0c;但都是使用层面&#xff0c;只是利用solr现有机制&#xff0c;修改参数&#xff0c;然后监控调优&#xff0c;从没有对solr进行源码级别的研究。但是&#xff0c;最近手头的一个项目&#xff0c;让我感觉必须把solrn内部原理和扩展机制弄…

iOS :UIPickerView reloadAllComponets not work

编辑信息页面用了很多选择栏&#xff0c;大部分都用 UIPickerView 来实现。在切换数据显示的时候&#xff0c; UIPickerView 不更新数据&#xff0c;不得其解。Google 无解&#xff0c;原因在于无法描述自己的问题&#xff0c;想想应该还是代码哪里写错了。 写了个测试方法&…

单相计量芯片RN8209D使用经验分享(转)

单相计量芯片RN8209D使用经验分享转载于:https://www.cnblogs.com/LittleTiger/p/10736060.html

git 对之前的commit 进行重新签名 Resign

在向开源社区提交PR的时候如果之前的提交忘记添加sign &#xff08;个人签名/公司签名&#xff09;&#xff0c;则社区的DCO检查会失败。 关于通过DCO检查能够确保以下几件事情生效&#xff1a; 你所提交的贡献是由你自己完成或者 你参与了其中&#xff0c;并且有权利按照开源…

【原创】linux命令bc使用详解

最近经常要在linux下做一些进制转换&#xff0c;看到了可以使用bc命令&#xff0c;如下: echo "obase10;ibase16;CFFF" | bc 用完以后就对bc进行了进一步的了解, man bc里面有详细的使用说明。 1.是什么,怎么用 bc - An arbitrary precision calculator language 一…

Java项目:学生信息管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 用户的登录注册&#xff0c;学生信息管理&#xff0c;教师信息管理&#xff0c;班级信 息管理&#xff0c;采用mvcx项目架构&#xff0c;覆盖增删改查&#xff0c;包括学…

MVC學習網站

http://www.cnblogs.com/haogj/archive/2011/11/23/2246032.html

数据导出Excel表格

public String exportInfoFr(String path,String name,String startdate,String enddate,SysUser user){List<Map<String, Object>> list this.esEntPermitErrDao.findListObjectBySql("select 字段值1,字段值2,字段值3,字段值4,字段值5 from 表名 where 字段…

Rocksdb 通过posix_advise 让内核减少在page_cache的预读

文章目录1. 问题排查确认I/O完全/大多数来自于rocksdb确认此时系统只使用了rocksdb的Get来读确认每次系统调用下发读的请求大小确认是否在内核发生了预读2. 问题原因内核预读机制page_cache_sync_readaheadondemand_readahead3. 优化事情起源于 组内的分布式kv 系统使用rocksdb…

[leetcode] Minimum Path Sum

Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can only move either down or right at any point in time.分析&#xff1a;动态规划…

Java项目:在线小说阅读系统(读者+作者+管理员)(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 1:用户及主要操作功能 游客可以浏览网站的主页&#xff0c;登陆注册&#xff0c;小说湿度&#xff0c;下单购 买&#xff0c;订单查询&#xff0c;个人信息查询&#xf…

游戏中的脚本语言

本文最初发表于《游戏创造》(http://www.chinagcn.com)2007年8月刊。版权所有&#xff0c;侵权必究。如蒙转载&#xff0c;必须保留本声明&#xff0c;和作者署名&#xff1b;不得用于商业用途&#xff0c;必须保证全文完整。网络版首次发表于恋花蝶的博客(http://blog.csdn.ne…

mvn项目中的pom文件提示Error parsing lifecycle processing instructions解决

清空.m2/repository下的所有依赖文件&#xff0c;重新下载即可解决该问题。 如果本地用户下没有.m2/repository 目录&#xff0c;找到如下mvn 指定的repository&#xff0c;进去之后清空所有文件。 转载于:https://www.cnblogs.com/Hackerman/p/10736498.html

blktrace 工具集使用 及其实现原理

文章目录工具使用原理分析内核I/O栈blktrace 代码做的事情内核调用 ioctl 做的事情BLKTRACESETUPBLKTRACESTOPBLKTRACETEARDOWN内核 调用blk_register_tracepoints 之后做的事情参考最近使用blktrace 工具集来分析I/O 在磁盘上的一些瓶颈问题&#xff0c;特此做一个简单的记录。…

Java项目:教材管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教U阿以领取入库的教材&#xff0c;可以退还教材…

mysql更改数据文件目录及my.ini位置| MySQL命令详解

需求&#xff1a;更改mysql数据数据文件目录及my.ini位置。 步骤&#xff1a; 1、查找my.ini位置&#xff0c;可通过windows服务所对应mysql启动项&#xff0c;查看其对应属性->可执行文件路径&#xff0c;获取my.ini路径。 "D:\MySQL\MySQL Server 5.5\bin\mysqld&quo…

私有云管理-Windows Azure Pack

今天是2014年的第一天&#xff0c;今年的第一篇博客关于私有云&#xff0c;而我在2014年的主要目标也是针对私有云。随着Windows Azure在中国的落地&#xff0c;大家逐渐的熟悉了在Windows Azure中的云体验。而微软针对私有云、混合云推出了一个管理自助门户&#xff0c;Window…

面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维

1 面向对象 1.1 你是如何认识新事物的&#xff1f; 从过往的事物中总结事物的特点(特征)&#xff0c;并比对新事物&#xff0c;把新事物进行归类。 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述。 理解: [1] 类包含了两个要素:特性和行为 > 同一类…

cannot find main module 解决办法

做6.824 实验的过程中想要跑测试&#xff0c;发现go test -run 2A时 出现cannot find main module问题&#xff0c;测试跑不起来。 原因 这个原因是从GO1.11 版本开始引入了go.mod文件来对项目中的go源码的编译相关的内容进行管理&#xff0c;经常使用GO的同学可能深受go get…

Java项目:网上选课系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能&#xff1a; 系统分为三个角色。最高权限管理员&#xff0c;学生&#xff0c;教师&#xff0c;包括 学生管理&#xff0c;教师管理&#xff0c;课程管理&#xff0c;选课&#xff0c;退课…

C#中类的继承 override virtual new的作用以及代码分析

继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法&#xff1b; override 子类中必须显示声明该方法是重写的父类中的方法&#xff1b; new 子类中忽略父类的已存在的方法&#xff0c;“重写该方法“&#xff1b; C#中不支…

spring手动代码控制事务

为什么80%的码农都做不了架构师&#xff1f;>>> DataSourceTransactionManager tran new DataSourceTransactionManager(vjdbcTemplate.getDataSource());DefaultTransactionDefinition def new DefaultTransactionDefinition();//事务定义类def.setPropagationB…

tar命令-压缩,解压缩文件

tar&#xff1a; -c: 建立压缩档案 -x&#xff1a;解压 -t&#xff1a;查看内容 -r&#xff1a;向压缩归档文件末尾追加文件 -u&#xff1a;更新原压缩包中的文件 上面五个参数是独立的&#xff0c;压缩解压都要用到其中一个&#xff0c;可以和下面的命令连用但只能用其中一个。…