基于Jeecgboot前后端分离的ERP系统开发代码生成(六)
商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表
一、采用TAB主题一对多的模式
因为主键,在online表单配置是灰的,所以不能进行外键管理,只能通过下面数据库进行关联录入,否则online界面上不能录入。

效果如下:

二、生成代码使用页面风格tab风格

三、生成tab风格的代码还是需要进行修改
1、没有详情了,所以ErpGoodsList.vue需要增加
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
同时需要增加下面信息:
增加几个价格信息的列
{
title:'采购价格',
align:"center",
dataIndex: 'purchasePrice'
},
{
title:'销售价格',
align:"center",
dataIndex: 'salePrice'
},
{
title:'零售价格',
align:"center",
dataIndex: 'retailPrice'
},
list修改成如下:
url: {
list: "/goods/erpGoodsDto/list",
同时在ErpGoodsModal.vue文件把按钮要隐藏掉
:okButtonProps="{ class:{'jee-hidden': disableSubmit}
2、ErpGoodsForm.vue增加两个名称显示
<a-col :xs="24" :sm="12"><a-form-model-item label="类别编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="categoryId"><j-popupv-model="model.categoryId"field="categoryId"org-fields="id,name"dest-fields="categoryId,categoryName"code="SelectorGoodsCategory":multi="true"@input="popupCallback"/><a-input v-model="model.categoryName"></a-input></a-form-model-item></a-col><a-col :xs="24" :sm="12"><a-form-model-item label="品牌编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="brandId"><j-popupv-model="model.brandId"field="brandId"org-fields="id,name"dest-fields="brandId,brandName"code="SelectorBrand":multi="true"@input="popupCallback"/><a-input v-model="model.brandName"></a-input></a-form-model-item></a-col>
3、后端增加相关文件
3.1 ErpGoodsDto.java文件
package com.nbcio.modules.erp.goods.dto;import java.io.Serializable;import org.jeecg.common.aspect.annotation.Dict;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
public class ErpGoodsDto implements Serializable {private static final long serialVersionUID = 1L;/**ID*/private java.lang.String id;/**编号*/private java.lang.String code;/**名称*/private java.lang.String name;/**SPU编号*///private java.lang.String spuId;/**类别编号*/private java.lang.String categoryId;/**类别名称*/private java.lang.String categoryName;/**品牌编号*/private java.lang.String brandId;/**品牌名称*/private java.lang.String brandName;/**规格*/private java.lang.String spec;/**单位*/private java.lang.String unit;/**采购价格*/private java.math.BigDecimal purchasePrice;/**销售价格*/private java.math.BigDecimal salePrice;/**零售价格*/private java.math.BigDecimal retailPrice;/**税率(%)*/private java.math.BigDecimal taxRate;/**销项税率(%)*/private java.math.BigDecimal saleTaxRate;/**数量*/private java.lang.Integer num;/**总价格*/private java.math.BigDecimal totalPrice;/**库存数量*/private java.lang.Integer stockNum;@Dict(dicCode = "erp_status")@ApiModelProperty(value = "状态")private java.lang.Integer status;}
3.2 ErpGoodsDtoController.java文件
package com.nbcio.modules.erp.goods.controller;import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.jeecg.common.api.vo.Result;import com.nbcio.modules.erp.goods.dto.ErpGoodsDto;
import com.nbcio.modules.erp.goods.service.IErpGoodsDtoService;
import com.nbcio.modules.erp.goods.vo.QueryGoodsVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;/*** @Description: erp_goods_dto* @Author: nbacheng* @Date: 2023-02-09* @Version: V1.0*/
@Api(tags="erp_goods_dto")
@RestController
@RequestMapping("/goods/erpGoodsDto")
@Slf4j
public class ErpGoodsDtoController extends JeecgController<ErpGoodsDto, IErpGoodsDtoService> {@Autowiredprivate IErpGoodsDtoService erpGoodsDtoService;/*** 分页列表查询** @param erpGoods* @param pageNo* @param pageSize* @param req* @return*/@AutoLog(value = "erp_goods-商品信息列表查询")@ApiOperation(value="erp_goods-商品信息列表查询", notes="erp_goods-商品信息列表查询")@GetMapping(value = "/list")public Result<?> queryGoodsList(QueryGoodsVo queryGoodsvo,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) {Page<ErpGoodsDto> page = new Page<ErpGoodsDto>(pageNo, pageSize);IPage<ErpGoodsDto> pageList = erpGoodsDtoService.queryGoodsList(page, queryGoodsvo);return Result.OK(pageList);}/*** 通过ids查询** @param ids* @return*/@AutoLog(value = "商品-通过ids查询")@ApiOperation(value="商品-通过ids查询", notes="商品-通过ids查询")@GetMapping(value = "/queryByIds")public Result<?> queryByIds(@RequestParam(name="ids",required=true) String ids) {List<ErpGoodsDto> listErpGoodsDto = erpGoodsDtoService.queryByIds(ids);if(listErpGoodsDto.size()==0) {return Result.error("未找到对应数据");}return Result.OK(listErpGoodsDto);}}
3.3 ErpGoodsDtoMapper.java文件
package com.nbcio.modules.erp.goods.mapper;import com.nbcio.modules.erp.goods.dto.ErpGoodsDto;
import com.nbcio.modules.erp.goods.vo.QueryGoodsVo;import java.util.List;import org.apache.ibatis.annotations.Param;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** @Description: erp_goods_dto* @Author: nbacheng* @Date: 2023-02-09* @Version: V1.0*/
public interface ErpGoodsDtoMapper extends BaseMapper<ErpGoodsDto> {List<ErpGoodsDto> queryGoodsList(Page<ErpGoodsDto> page, @Param("vo") QueryGoodsVo vo);public List<ErpGoodsDto> getByIds(@Param("idArray") String[] idArray);
}
3.4 ErpGoodsDtoMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nbcio.modules.erp.goods.mapper.ErpGoodsDtoMapper"><resultMap id="ErpGoodsDtoMap" type="com.nbcio.modules.erp.goods.dto.ErpGoodsDto"><id column="id" property="id"/><result column="code" property="code"/><result column="name" property="name"/><result column="category_id" property="categoryId"/><result column="category_name" property="categoryName"/><result column="brand_id" property="brandId"/><result column="brand_name" property="brandName"/><result column="spec" property="spec"/><result column="unit" property="unit"/><result column="status" property="status"/><result column="purchase_price" property="purchasePrice"/><result column="sale_price" property="salePrice"/><result column="retail_price" property="retailPrice"/><result column="tax_rate" property="taxRate"/><result column="sale_tax_rate" property="saleTaxRate"/><result column="num" property="num"/><result column="total_price" property="totalPrice"/></resultMap><sql id="ErpGoodsDto_sql">SELECTa.id,a.code,a.name,c.id AS category_id,c.name AS category_name,b.id AS brand_id,b.name AS brand_name,a.spec,a.unit,a.status,price.purchase AS purchase_price,price.sale AS sale_price,price.retail AS retail_price,a.tax_rate,a.sale_tax_rate,1 as num,price.sale*1 as total_priceFROM erp_goods AS aLEFT JOIN erp_goods_price AS price ON price.id = a.idLEFT JOIN erp_goods_category AS c ON c.id = a.category_idLEFT JOIN erp_goods_brand AS b ON b.id = a.brand_id</sql><select id="queryGoodsList" resultMap="ErpGoodsDtoMap"><include refid="ErpGoodsDto_sql"/><where><if test="vo != null"><if test="vo.condition != null and vo.condition != ''">AND (a.id LIKE CONCAT('%', #{vo.condition}, '%')OR a.code LIKE CONCAT('%', #{vo.condition}, '%')OR a.name LIKE CONCAT('%', #{vo.condition}, '%'))</if><if test="vo.brandId != null and vo.brandId != ''">AND b.id = #{vo.brandId}</if><if test="vo.categoryId != null and vo.categoryId != ''">AND (c.id = #{vo.categoryId} </if></if>AND a.status = '1' </where>ORDER BY a.code</select><select id="getByIds" resultType="com.nbcio.modules.erp.goods.dto.ErpGoodsDto"><include refid="ErpGoodsDto_sql"/><where>a.id IN (<foreach collection="idArray" item="id" separator=",">#{id}</foreach>)</where>order by a.code desc</select> </mapper>
3.5 IErpGoodsDtoService.java文件
package com.nbcio.modules.erp.goods.service;import com.nbcio.modules.erp.goods.dto.ErpGoodsDto;
import com.nbcio.modules.erp.goods.vo.QueryGoodsVo;import java.util.List;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;/*** @Description: erp_goods_dto* @Author: nbacheng* @Date: 2023-02-09* @Version: V1.0*/
public interface IErpGoodsDtoService extends IService<ErpGoodsDto> {IPage<ErpGoodsDto> queryGoodsList(Page<ErpGoodsDto> page, QueryGoodsVo queryGoodsVo);List<ErpGoodsDto> queryByIds(String ids);
}
3.6 ErpGoodsDtoServiceImpl.java文件
package com.nbcio.modules.erp.goods.service.impl;import com.nbcio.modules.erp.goods.dto.ErpGoodsDto;
import com.nbcio.modules.erp.goods.mapper.ErpGoodsDtoMapper;
import com.nbcio.modules.erp.goods.service.IErpGoodsDtoService;
import com.nbcio.modules.erp.goods.vo.QueryGoodsVo;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;/*** @Description: erp_goods* @Author: nbacheng* @Date: 2023-02-09* @Version: V1.0*/
@Service
public class ErpGoodsDtoServiceImpl extends ServiceImpl<ErpGoodsDtoMapper, ErpGoodsDto> implements IErpGoodsDtoService {@Autowiredprivate ErpGoodsDtoMapper erpGoodsDtoMapper;@Overridepublic IPage<ErpGoodsDto> queryGoodsList(Page<ErpGoodsDto> page, QueryGoodsVo queryGoodsVo) {List<ErpGoodsDto> erpGoodsDtoLists = this.baseMapper.queryGoodsList(page, queryGoodsVo);return page.setRecords(erpGoodsDtoLists);}@Overridepublic List<ErpGoodsDto> queryByIds(String ids) {// TODO Auto-generated method stubString [] idArray=ids.split(",");return erpGoodsDtoMapper.getByIds(idArray);}}
四、效果图


相关文章:
基于Jeecgboot前后端分离的ERP系统开发代码生成(六)
商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表 一、采用TAB主题一对多的模式 因为主键,在online表单配置是灰的,所以不能进行外键管理,只能通过下面数据库进行关联录入,否则online界面…...
什么?同步代码块失效了?-- 自定义类加载器引起的问题
一、背景 最近编码过程中遇到了一个非常奇怪的问题,基于单例对象的同步代码块似乎失效了,百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例,在 init 方法中使用同步代码块来保证 data不…...
CHAPTER 4 文件共享 - Samba
文件共享 - Samba1 Samba1.1 Samba的软件架构1.2 搭建Samba服务器1.3 samba用户管理1. 添加用户2. 修改用户密码3. 删除用户和密码4. 查看samba用户列表5. 查看samba服务器状态1.4 samba共享设置(配置文件详解)1.5 访问共享目录1. windows访问2. linux客…...
深入分析@Configuration源码
文章目录一、源码时序图1. 注册ConfigurationClassPostProcessor流程源码时序图2. 注册ConfigurationAnnotationConfig流程源码时序图3. 实例化流程源码时序图二、源码解析1. 注册ConfigurationClassPostProcessor流程源码解析(1)运行案例程序启动类Conf…...
Unity 代码优化 内存管理优化
项目遇到了卡顿的情况 仔细检查了代码没检查出有误的地方 仔细的总结了一下可以优化的东西 解决了卡顿 记录一下 1 协程 项目之前写的关于倒计时之类的东西 都是开了个协程 虽然协程是消耗很小的线程 , 可是还是有额外消耗 而且 有很多用携程来检测销毁预制体的操作 也都放到U…...
设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式&am…...
C++面向对象编程之一:封装
C面向对象编程三大特性为:封装,继承,多态。C认为万事万物皆为对象,对象有属性和行为。比如:游戏里的地图场景可以看作是长方形对象,属性场景id,有长,有宽,可能有NPC&…...
IDEA插件系列(3):Maven Helper插件
一、引言在写Java代码的时候,我们可能会出现Jar包的冲突的问题,这时候就需要我们去解决依赖冲突了,而解决依赖冲突就需要先找到是那些依赖发生了冲突,当项目比较小的时候,还比较依靠IEDA的【Diagrams】查看依赖关系&am…...
SAP 更改物料基本计量单位
前言部分 在SAP中物料创建后,一旦发生业务,其基本计量单位便很难修改。由于单位无法满足业务要求,往往会要求新建一个物料替代旧物料。这时候除了要将旧物料上所有的未清业务删除外,还需要替换工艺与BOM中的旧物料。特别是当出现旧…...
蓝桥web基础知识学习
HTMLCSS 知识点重要指数HTML 基础标签🌟🌟🌟🌟🌟HTML5 新特性🌟🌟🌟🌟🌟HTML5 本地存储🌟🌟🌟🌟CSS 基础语法…...
Python+ChatGPT制作一个AI实用百宝箱
目录一、注册OpenAI二、搭建网站及其框架三、AI聊天机器人四、AI绘画机器人ChatGPT 最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章、写报告、写周报、做表格、做策划甚至还会写代码。只要与文字相关…...
Python中格式化字符串输出的4种方式
Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’ 一、%号占位符 这是一种引入最早的一种,也是比较容易理解的一种方式.使用方式为: 1、格式化字符串中变化的部分使用占位符 2、…...
C#基础教程15 枚举与类
文章目录 C# 枚举(Enum)声明 enum 变量C# 类(Class)类的定义成员函数和封装C# 中的构造函数关键字 staticC# 枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 声明 enum 变…...
三步 让你的 vscode 自动编译ts文件
三步让你的 vscode 自动编译ts文件 TypeScript环境安装与如何在vscode实现自动编译ts文件? 文章目录三步让你的 vscode 自动编译ts文件前提条件环境安装自动编译运行监视任务时报错?前提条件 安装 node 环境 环境安装 tsc 作用:负责将ts 代码 转为 浏…...
STM32程序下载和启动方式
目录1 BOOT引脚配置和下载说明2 关于串口下载方式3 关于一按复位就跑代码4 关于下载调试速度5 关于三种启动方式5.1 FLASH启动5.2 系统存储器器启动5.3 SRAM启动6 关于程序的三种下载方式1 BOOT引脚配置和下载说明 BOOT0BOOT1程序运行ST-Link下载串口下载启动说明xx无0x√√用…...
基础01-ajax fetch axios 的区别
ajax fetch axios 的区别 题目 ajax fetch axios 的区别 分析 三者根本没有可比性,不要被题目搞混了。要说出他们的本质 传统 ajax AJAX (几个单词首字母,按规范应该大写) - Asynchronous JavaScript and XML(异…...
Android Execution failed for task ‘:app:mergeDebugJavaResource
错误提示 FAILURE: Build failed with an exception.* What went wrong: Execution failed for task :app:mergeDebugJavaResource. > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction> 2 files found with path k…...
spring事物源码分析
今天的任务是剖析源码,看看Spring 是怎么运行事务的,并且是基于当前最流行的SpringBoot。还有,我们之前剖析Mybatis 的时候,也知道,Mybatis 也有事务,那么,他俩融合之后,事务是交给谁…...
炫龙游戏本Win10系统总是蓝屏崩溃怎么办?
炫龙游戏本Win10系统总是蓝屏崩溃怎么办?有用户使用的炫龙游戏本最近总是在运行的过程中出现自动蓝屏的情况,有的时候自己还在操作电脑,而屏幕却蓝屏了,导致自己的工作被中断了。那么这个情况要怎么去进行修复呢?来看看…...
华为OD机试题,用 Java 解【数字加减游戏】问题
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
