基于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机试,一定要注意不…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14
什么是 Pattern Matching(模式匹配) ❝ 模式匹配就是一种“描述式”的写法,不需要你手动判断、提取数据,而是直接描述你希望的数据结构是什么样子,系统自动判断并提取。❞ 你给的定义拆解: ✴ Instead of …...