Java项目:ERP管理系统(java+SpringBoot+EasyUI+maven+mysql)_java erp项目-程序员宅基地

技术标签: easyui  spring boot  java  maven  Java毕业设计项目实战篇  mysql  

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

项目介绍

系统主要功能包括:
首页
零售管理:零售出库、零售退货;
采购管理:采购订单、采购入库、采购退货;
销售管理:销售订单、销售出库、销售退货;
仓库管理:其它入库、其它出库、调拨出库、组装单、拆卸单;
财务管理:收入单、支出单、收款单、付款单、转账单、收预付款;
报表查询:库存状况、结算账户、进货统计、销售统计、入库明细、出库明细、入库汇总、出库汇总、客户对账、供应商对账、库存预警;
商品管理:商品类别、商品信息、计量单位、序列号;
基本资料:供应商信息、客户信息、会员信息、仓库信息、收支项目、结算账户、经手人管理;

系统管理:角色管理、机构管理、用户管理、日志管理、系统配置;

 

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7或8.0版本;

6.是否Maven项目:是;

技术栈

* 核心框架:SpringBoot 2.0.0
* 持久层框架:Mybatis 1.3.2
* 日志管理:Log4j 2.10.0
* JS框架:Jquery 1.8.0
* UI框架: EasyUI 1.3.5
* 模板框架: AdminLTE 2.4.0

* 项目管理框架: Maven 3.2.3

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;
4. 运行com.jsh.erp包中的ErpApplication类,启动项目。(使用SpringBoot的启动方式)
5. 浏览器地址访问登录页面http://localhost:8080/login.html
默认管理员账号:admin,管理员账号一些特殊模块不具有修改权限,建议使用普通账号:jsh,密码都为123456

 

 

 

 

 

 

物料管理控制层:

@Api(tags="物料")
@RestController
@RequestMapping("/bas/basMaterial")
@Slf4j
public class BasMaterialController extends JeecgController<BasMaterial, IBasMaterialService> {
	@Autowired
	private IBasMaterialService basMaterialService;
	
	/**
	 * 分页列表查询
	 *
	 * @param basMaterial
	 * @param pageNo
	 * @param pageSize
	 * @param req
	 * @return
	 */
	@AutoLog(value = "物料-分页列表查询")
	@ApiOperation(value="物料-分页列表查询", notes="物料-分页列表查询")
	@GetMapping(value = "/list")
	public Result<?> queryPageList(BasMaterial basMaterial,
								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
								   HttpServletRequest req) {
		QueryWrapper<BasMaterial> queryWrapper = QueryGenerator.initQueryWrapper(basMaterial, req.getParameterMap());
		Page<BasMaterial> page = new Page<BasMaterial>(pageNo, pageSize);
		IPage<BasMaterial> pageList = basMaterialService.page(page, queryWrapper);
		return Result.ok(pageList);
	}
	
	/**
	 *   添加
	 *
	 * @param basMaterial
	 * @return
	 */
	@AutoLog(value = "物料-添加")
	@ApiOperation(value="物料-添加", notes="物料-添加")
	@PostMapping(value = "/add")
	public Result<?> add(@RequestBody BasMaterial basMaterial) {
		basMaterialService.save(basMaterial);
		return Result.ok("添加成功!");
	}
	
	/**
	 *  编辑
	 *
	 * @param basMaterial
	 * @return
	 */
	@AutoLog(value = "物料-编辑")
	@ApiOperation(value="物料-编辑", notes="物料-编辑")
	@PutMapping(value = "/edit")
	public Result<?> edit(@RequestBody BasMaterial basMaterial) {
		basMaterialService.updateById(basMaterial);
		return Result.ok("编辑成功!");
	}
	
	/**
	 *   通过id删除
	 *
	 * @param id
	 * @return
	 */
	@AutoLog(value = "物料-通过id删除")
	@ApiOperation(value="物料-通过id删除", notes="物料-通过id删除")
	@DeleteMapping(value = "/delete")
	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
		basMaterialService.removeById(id);
		return Result.ok("删除成功!");
	}
	
	/**
	 *  批量删除
	 *
	 * @param ids
	 * @return
	 */
	@AutoLog(value = "物料-批量删除")
	@ApiOperation(value="物料-批量删除", notes="物料-批量删除")
	@DeleteMapping(value = "/deleteBatch")
	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
		this.basMaterialService.removeByIds(Arrays.asList(ids.split(",")));
		return Result.ok("批量删除成功!");
	}
	
	/**
	 * 通过id查询
	 *
	 * @param id
	 * @return
	 */
	@AutoLog(value = "物料-通过id查询")
	@ApiOperation(value="物料-通过id查询", notes="物料-通过id查询")
	@GetMapping(value = "/queryById")
	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
		BasMaterial basMaterial = basMaterialService.getById(id);
		if(basMaterial==null) {
			return Result.error("未找到对应数据");
		}
		return Result.ok(basMaterial);
	}

    /**
    * 导出excel
    *
    * @param request
    * @param basMaterial
    */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, BasMaterial basMaterial) {
        return super.exportXls(request, basMaterial, BasMaterial.class, "物料");
    }

    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, BasMaterial.class);
    }

}

客户管理控制层:

@Api(tags="客户")
@RestController
@RequestMapping("/bas/basCustomer")
@Slf4j
public class BasCustomerController extends JeecgController<BasCustomer, IBasCustomerService> {
	@Autowired
	private IBasCustomerService basCustomerService;
	
	/**
	 * 分页列表查询
	 *
	 * @param basCustomer
	 * @param pageNo
	 * @param pageSize
	 * @param req
	 * @return
	 */
	@AutoLog(value = "客户-分页列表查询")
	@ApiOperation(value="客户-分页列表查询", notes="客户-分页列表查询")
	@GetMapping(value = "/list")
	public Result<?> queryPageList(BasCustomer basCustomer,
								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
								   HttpServletRequest req) {
		QueryWrapper<BasCustomer> queryWrapper = QueryGenerator.initQueryWrapper(basCustomer, req.getParameterMap());
		Page<BasCustomer> page = new Page<BasCustomer>(pageNo, pageSize);
		IPage<BasCustomer> pageList = basCustomerService.page(page, queryWrapper);
		return Result.ok(pageList);
	}
	
	/**
	 *   添加
	 *
	 * @param basCustomer
	 * @return
	 */
	@AutoLog(value = "客户-添加")
	@ApiOperation(value="客户-添加", notes="客户-添加")
	@PostMapping(value = "/add")
	public Result<?> add(@RequestBody BasCustomer basCustomer) {
		basCustomerService.save(basCustomer);
		return Result.ok("添加成功!");
	}
	
	/**
	 *  编辑
	 *
	 * @param basCustomer
	 * @return
	 */
	@AutoLog(value = "客户-编辑")
	@ApiOperation(value="客户-编辑", notes="客户-编辑")
	@PutMapping(value = "/edit")
	public Result<?> edit(@RequestBody BasCustomer basCustomer) {
		basCustomerService.updateById(basCustomer);
		return Result.ok("编辑成功!");
	}
	
	/**
	 *   通过id删除
	 *
	 * @param id
	 * @return
	 */
	@AutoLog(value = "客户-通过id删除")
	@ApiOperation(value="客户-通过id删除", notes="客户-通过id删除")
	@DeleteMapping(value = "/delete")
	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
		basCustomerService.removeById(id);
		return Result.ok("删除成功!");
	}
	
	/**
	 *  批量删除
	 *
	 * @param ids
	 * @return
	 */
	@AutoLog(value = "客户-批量删除")
	@ApiOperation(value="客户-批量删除", notes="客户-批量删除")
	@DeleteMapping(value = "/deleteBatch")
	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
		this.basCustomerService.removeByIds(Arrays.asList(ids.split(",")));
		return Result.ok("批量删除成功!");
	}
	
	/**
	 * 通过id查询
	 *
	 * @param id
	 * @return
	 */
	@AutoLog(value = "客户-通过id查询")
	@ApiOperation(value="客户-通过id查询", notes="客户-通过id查询")
	@GetMapping(value = "/queryById")
	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
		BasCustomer basCustomer = basCustomerService.getById(id);
		if(basCustomer==null) {
			return Result.error("未找到对应数据");
		}
		return Result.ok(basCustomer);
	}

    /**
    * 导出excel
    *
    * @param request
    * @param basCustomer
    */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, BasCustomer basCustomer) {
        return super.exportXls(request, basCustomer, BasCustomer.class, "客户");
    }

    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, BasCustomer.class);
    }

}

仓库管理控制层:

@RestController
@RequestMapping("/bas/basWarehouse")
@Slf4j
public class BasWarehouseController extends JeecgController<BasWarehouse, IBasWarehouseService>{
	@Autowired
	private IBasWarehouseService basWarehouseService;
	
	/**
	 * 分页列表查询
	 *
	 * @param basWarehouse
	 * @param pageNo
	 * @param pageSize
	 * @param req
	 * @return
	 */
	@GetMapping(value = "/rootList")
	public Result<?> queryPageList(BasWarehouse basWarehouse,
								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
								   HttpServletRequest req) {
		String parentId = basWarehouse.getPid();
		if (oConvertUtils.isEmpty(parentId)) {
			parentId = "0";
		}
		basWarehouse.setPid(null);
		QueryWrapper<BasWarehouse> queryWrapper = QueryGenerator.initQueryWrapper(basWarehouse, req.getParameterMap());
		// 使用 eq 防止模糊查询
		queryWrapper.eq("pid", parentId);
		Page<BasWarehouse> page = new Page<BasWarehouse>(pageNo, pageSize);
		IPage<BasWarehouse> pageList = basWarehouseService.page(page, queryWrapper);
		return Result.ok(pageList);
	}

	 /**
      * 获取子数据
      * @param testTree
      * @param req
      * @return
      */
	@GetMapping(value = "/childList")
	public Result<?> queryPageList(BasWarehouse basWarehouse,HttpServletRequest req) {
		QueryWrapper<BasWarehouse> queryWrapper = QueryGenerator.initQueryWrapper(basWarehouse, req.getParameterMap());
		List<BasWarehouse> list = basWarehouseService.list(queryWrapper);
		return Result.ok(list);
	}
	
	
	/**
	 *   添加
	 *
	 * @param basWarehouse
	 * @return
	 */
	@PostMapping(value = "/add")
	public Result<?> add(@RequestBody BasWarehouse basWarehouse) {
		basWarehouseService.addBasWarehouse(basWarehouse);
		return Result.ok("添加成功!");
	}
	
	/**
	 *  编辑
	 *
	 * @param basWarehouse
	 * @return
	 */
	@PutMapping(value = "/edit")
	public Result<?> edit(@RequestBody BasWarehouse basWarehouse) {
		basWarehouseService.updateBasWarehouse(basWarehouse);
		return Result.ok("编辑成功!");
	}
	
	/**
	 *   通过id删除
	 *
	 * @param id
	 * @return
	 */
	@DeleteMapping(value = "/delete")
	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
		basWarehouseService.deleteBasWarehouse(id);
		return Result.ok("删除成功!");
	}
	
	/**
	 *  批量删除
	 *
	 * @param ids
	 * @return
	 */
	@DeleteMapping(value = "/deleteBatch")
	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
		this.basWarehouseService.removeByIds(Arrays.asList(ids.split(",")));
		return Result.ok("批量删除成功!");
	}
	
	/**
	 * 通过id查询
	 *
	 * @param id
	 * @return
	 */
	@GetMapping(value = "/queryById")
	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
		BasWarehouse basWarehouse = basWarehouseService.getById(id);
		if(basWarehouse==null) {
			return Result.error("未找到对应数据");
		}
		return Result.ok(basWarehouse);
	}

    /**
    * 导出excel
    *
    * @param request
    * @param basWarehouse
    */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, BasWarehouse basWarehouse) {
		return super.exportXls(request, basWarehouse, BasWarehouse.class, "仓库");
    }

    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
		return super.importExcel(request, response, BasWarehouse.class);
    }

}

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuyecsdn/article/details/124512352

智能推荐

startActivity启动过程分析和Activity生命周期-程序员宅基地

文章浏览阅读2.1k次。一、startActivity启动过程启动流程:点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;system_server进程接收到请求后,向zygote进程发送创建进程的请求;Zygote进程fork出新的子进程,即App进程;App进程,通过Binder IPC向sytem_server进程发起a..._startactivity

0基础怎么自学编程?零基础自学编程应该怎么学-程序员宅基地

文章浏览阅读3.2k次。零基础想要学习编程,第一步首先决定要学哪一门语言,了解它们的特点和应用的领域;第二步确定学习方法,自学还要结合一些辅助资料或工具;第三步,调整良好的心理状态,为学习编程创建一个稳定的心理环境。_零基础自学编程

等价类,边界值,场景法的使用方法和运用场景_等价类适用于什么场景-程序员宅基地

文章浏览阅读895次,点赞17次,收藏14次。在很多情况下,很多人想到的测试方法是穷举测试,穷举测试是最全面的测试,但是数据量很大的情况下不太现实,测试效率太低,后来为了减少测试人员的工作量和提高测试的效率和以达到最好的测试质量,慢慢的就有了等价类的测试方法。1)划分等价类 一, 应按照输入条件(如输入值的范围,值的个数,值的类型,输入的条件如何等),划分有效输入和无效输入(有效等价类和无效等价类) ,总的来说,需求以内的都属于有效输入,需求以外的都属于无效输入。则需要测试的边界值为:1个字符,2个字符,3个字符,8个字符,9个字符,10个字符。_等价类适用于什么场景

STM32 C 语言和汇编语言混合编程_stm32 c语言可以嵌入汇编语言-程序员宅基地

文章浏览阅读399次。目录一、C语言调用汇编函数二、将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100三、在汇编函数中调用一个 C语言写的函数四、总结五、参考链接:MDK下C与汇编语言混合编程 - the7一、C语言调用汇编函数 1.打开keil 5新建工程 2.右击Source Group1 添加新项目3.点击 Asm File(.s) ,输入na..._stm32 c语言可以嵌入汇编语言

手写LinkedList集合简易版_手写集合-程序员宅基地

文章浏览阅读179次。纯手写LinkeList集合LinkeList原理LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。LinkedList数据结构原理Lin..._手写集合

emq无法启用mysql_EMQ开启mysql认证-程序员宅基地

文章浏览阅读918次。规定通过mqtt_user表格验证过的用户才能连接EMQ服务器,我们需要开启mysql插件认证。EMQ2.0自带mysql插件,下面开始配置。新建mqtt_user表格要想控制用户登录EMQ,肯定是首先创建一个可管理的用户表格,规定只有在这个表格中的用户才能被允许连接EMQ。 按照EMQ官方文档在你mysql服务器中新建一个mqtt_user的表格(http://www.emqtt.com/doc..._emqx中mysql插件启动出现parse_config_file_failed

随便推点

纯新手 docker langchain Qwen1.5 部署-程序员宅基地

文章浏览阅读1.8k次,点赞16次,收藏27次。使用下载的镜像,启动容器,使用modelscope命令下载。模型:Qwen1.5-Qwen-7B-Chat。镜像:qwenllm/qwen:cu121。【新手入门,多有遗漏,私信交流】文件后缀改为 .py 文件。3、安装langchain。_qwen1.5 部署

混合粒子群的混沌蝴蝶优化算法_cubic混沌映射-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏37次。为了解决蝴蝶优化算法(BOA)精度低、收敛速度慢的问题,研究的趋势是将两种或两种以上的算法混合,以获得优化问题的最优解。提出了一种新的混合算法HPSOBOA,并介绍了三种改进基本BOA的方法。因此,引入了利用Cubi映射对BOA进行初始化,并采用非线性参数控制策略。此外,将粒子群优化(PSO)算法与BOA算法相结合,改进了基本的BOA算法,使其能够进行全局优化。函数测试实验验证了该算法的有效性。实验结果表明,与GWO、BOA等算法相比,混合HPSOBOA算法收敛速度快,在高维数值优化问题中具有更好的稳定性。_cubic混沌映射

设置网络流量监测图形分析工具Cacti管理Windows Server 2008 R2-程序员宅基地

文章浏览阅读76次。如何安装Cacti,见前文Hyper-v下安装网络流量监测图形分析工具 Cacti 在Windows Server 2008以后的版本中,SNMP是以一个功能的形式存在的,不像Windows Server 2003里中是以Windows组件的形式存在的,所以安装的方法也不一样。您可以参照下面的步骤来安装SNMP服务。 1 打开服务器管理器,点击功能节点,点击..._网络流量分析工具 winserver2008r2

机器翻译和自动译后编辑_机器翻译输出指定样式怎么设置-程序员宅基地

文章浏览阅读509次。机器翻译工具通过NLP自然语言处理将一种语言翻译成另一种语言,机器翻译随着科技进步已经不仅仅局限于文字翻译,现在我们可以通过语音进行翻译还可以与机器人进行料体聊天。这些都是机器翻译的应用。..._机器翻译输出指定样式怎么设置

一文了解DevExpress:让.NET应用开发更简单、更强大_devexpress是什么软件-程序员宅基地

文章浏览阅读1.2k次,点赞41次,收藏15次。DevExpress(Developer Express Inc.)是一家知名的软件开发公司,提供一系列用于.NET框架的软件开发工具和组件,特别是针对桌面、网页以及移动平台的应用开发。DevExpress的产品有助于开发人员构建复杂的用户界面、提升应用程序的性能和可用性,以及提高开发效率。:用于构建Windows窗体应用程序的一套丰富的用户界面控件。:提供用于Windows Presentation Foundation(WPF)应用程序的高性能用户界面组件。_devexpress是什么软件

查看mysql重启记录吗_[转]mysql 的日志的启动与查看-程序员宅基地

文章浏览阅读1.2k次。mysql有以下几种日志:错误日志: -log-err查询日志: -log慢查询日志: -log-slow-queries更新日志: -log-update二进制日志:-log-bin日志文件文件中的信息作用错误日志记录启动、运行或停止mysqld时出现的问题。系统故障时定位故障原因查询日志记录建立的客户端连接和执行的语句。记录数据库发生的所有操作二进制日志记录所有更改数据的语句。数据库..._如何查看 mysql 重启次数

推荐文章

热门文章

相关标签