基于Jeecgboot前后端分离的ERP系统开发代码生成(六)

news2025/1/29 14:02:02

      商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表

     一、采用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-popup
                        v-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-popup
                        v-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> {
	@Autowired
	private 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">
        SELECT
            a.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_price
        FROM erp_goods AS a
        LEFT JOIN erp_goods_price AS price ON price.id = a.id
        LEFT JOIN erp_goods_category AS c ON c.id = a.category_id
        LEFT 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 {

	@Autowired
	private ErpGoodsDtoMapper erpGoodsDtoMapper;
	
	@Override
	public IPage<ErpGoodsDto> queryGoodsList(Page<ErpGoodsDto> page, QueryGoodsVo queryGoodsVo) {
		List<ErpGoodsDto> erpGoodsDtoLists = this.baseMapper.queryGoodsList(page, queryGoodsVo);
        return page.setRecords(erpGoodsDtoLists);
	}

	@Override
	public List<ErpGoodsDto> queryByIds(String ids) {
		// TODO Auto-generated method stub
		String [] idArray=ids.split(",");
		return erpGoodsDtoMapper.getByIds(idArray);
	}

}

四、效果图

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例19-遇见问题的临时解决方案和最终解决方案

目录1、背景介绍2、两种解决方案的概念1、临时解决方案&#xff1a;2、最终解决方案&#xff1a;3、排查问题过程4、总结站在用户的角度思考作为软件开发者5、升华1、背景介绍 首先说明这是系统很早之前的时候的一个功能&#xff0c;当时和学习通还有很强的耦合关系。在学习通…

研究链表空间销毁问题

&#x1f4af;&#x1f4af;&#x1f4af; 1.研究链表空间销毁问题 当链表使用完后&#xff0c;需要将链表销毁&#xff0c;那么该如何销毁呢&#xff1f; void SLTDestroy(SLTNode* phead)//销毁单链表 {SLTNode* cur phead;while(cur){free(cur);cur cur->next;} }你…

Linux下Nginx安装使用

一、下载解压nginx # 进入要放安装包的目录 cd /opt/software # 下载安装包 wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压缩 tar -zxvf nginx-1.20.2.tar.gz -C /opt/modules # 进入解压后的目录 cd /opt/modules/nginx-1.20.2/二、安装nginx 1、安装编译器 …

剑指 Offer II 021. 删除链表的倒数第 n 个结点

题目链接 剑指 Offer II 021. 删除链表的倒数第 n 个结点 mid 题目描述 给定一个链表&#xff0c;删除链表的倒数第 n个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; …

MySQL的多表操作

多表关系 介绍 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。例如&#xff1a;一个商城项目就需要分类表(category)、商品表(products)、 订单表(orders)等多张表。且这些表的数据之间存在一定的关系&#xff0c;接下来我们将在单表的基础上&#xff0c;一起学习…

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

数据异常率预警在工业安全生产中是一项重要工作&#xff0c;对于监控生产过程的稳定性&#xff0c;保障生产数据的有效性&#xff0c;维护生产设备的可靠性具有重要意义。随着大数据技术在生产领域的深入应用&#xff0c;基于机器学习的智能预警已经成为各大生产企业进行生产数…

logback无法删除太久远的日志文件?logback删除日志文件源码分析

logback无法删除太久远的日志文件&#xff1f;logback删除日志文件源码分析 最近发现logback配置滚动日志&#xff0c;但是本地日志文件甚至还有2年前的日志文件&#xff0c;服务器是却是正常的&#xff01; 网上搜索了一波没有发现&#xff0c;只找到说不能删除太久远的旧日志…

Leetcode. 21 合并两个有序列表

尾插 核心思路&#xff1a;依次比较 &#xff0c;取经过比较后较小值进行尾插 cur1 指向list1 ,cur 2指向list2 ,当cur1走完list1 或者cur2 走完list2 后停止 如果cur1走完list1 ,可以将cur2 整个拿下来尾插 如果cur2走完list2 ,可以将cur1 整个拿下来尾插 特殊情况 &#xff1…

c# 32位程序突破2G内存限制

起因 在开发过程中&#xff0c;由于某些COM组件只能在32位程序下运行&#xff0c;程序不得不在X86平台下生成。而X86的32位程序默认内存大小被限制在2G。由于程序中可能存在大数量处理&#xff0c;期间对象若没有及时释放或则回收&#xff0c;内存占用达到了1.2G左右&#xff…

瀑布开发与敏捷开发的区别,以及从瀑布转型敏捷项目管理的5大注意事项

事实证明&#xff0c;瀑布开发管理模式并不适合所有的软件项目&#xff0c;但敏捷项目管理却对大多数项目有效。那么当团队选择转型敏捷的时候有哪些因素必须注意&#xff1f;敏捷开发最早使用者大多是小型、独立的团队&#xff0c;他们通常致力于小型、独立的项目。正是他们的…

Keepalive+LVS群集部署

KeepaliveLVS群集部署一、Keepalive概述1、什么是Keepalive2、Keepalive工作原理3、Keepalive主要模块及作用4、Keepalived 服务重要功能&#xff08;1&#xff09;管理 LVS 负载均衡软件&#xff08;2&#xff09;支持故障自动切换&#xff08;3&#xff09;实现 LVS 负载调度…

SpringBoot下的Spring框架学习(tedu)——day03——Spring DI、SpringAOP JDK动态代理

SpringBoot下的Spring框架学习&#xff08;tedu&#xff09;——day03——Spring DI、SpringAOP JDK动态代理 目录SpringBoot下的Spring框架学习&#xff08;tedu&#xff09;——day03——Spring DI、SpringAOP JDK动态代理1. Spring的依赖注入1.1 依赖注入案例1.1.1 定义接口…

Python的运算符

Python支持多种运算符&#xff0c;下表大致按照优先级从高到低的顺序列出了所有的运算符&#xff0c;运算符的优先级指的是多个运算符同时出现时&#xff0c;先做什么运算然后再做什么运算。除了我们之前已经用过的赋值运算符和算术运算符&#xff0c;我们稍后会陆续讲到其他运…

解决launch:program .exe does not exist

二. 程序的运行和调试 1.launch.json 复制下列代码至launch.json&#xff0c;并根据指导做出相对/绝对路径修改 用 IntelliSense 了解相关属性。 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.micros…

虹科教您 | 在Linux环境下安装PCAN View及通讯测试指南

应用简介 PCAN-View软件是一款简化的CAN监视软件&#xff0c;可用于显示、发送、和记录CAN数据通讯。报文可手动和定期发送&#xff0c;用户可设置比特率。在处理期间显示总线系统错误和CAN硬件的存储器过满。示踪功能可用于记录和保存CAN数据通讯。本文档的作用在于&#xff…

Python进阶-----面向对象8.0(反射---对象属性方法操作)

目录 前言&#xff1a; 反射 1.getattr() 函数 2.setattr() 函数 3.hasattr() 函数 4.delattr() 函数 前言&#xff1a; 众所周知&#xff0c;每一个实例化对象都是有实例化属性或者方法的&#xff0c;之前我们对实例化对象进行属性方法查询、删除或者添加都是直接去通过…

day27_css

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、CSS 零、 复习昨日 见代码 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通…

MpAndroidChart3最强实践攻略

本篇主要总结下Android非常火爆的一个三方库MpAndroidChart的使用。可能在大多数情况下&#xff0c;我们很少会在Android端去开发图表。但如果说去做一些金融财经类、工厂类、大数据类等的app&#xff0c;那么绝对会用到MpAndroidChart。 一、前言 2018年&#xff0c;那年的我…

打包成JAR文件和WAR文件,到底有什么区别?

Spring Boot是一种基于Spring框架的快速开发应用程序的工具&#xff0c;可以轻松地构建可部署的独立应用程序。在使用Spring Boot时&#xff0c;你可能会注意到有两种不同的部署选项&#xff1a;打包成JAR文件和WAR文件。在这篇文章中&#xff0c;我们将深入探讨这两种部署选项…

Netty 简介

一、Netty 简介 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架&#xff0c;使用 Netty 可以快速开发网络应用&#xff0c;Netty 提供了高层次的抽象来简化 TCP 和 UDP 服务器的编程&#xff0c;但是你仍然可以使用底层的 API。 Netty 的内部实现是很复杂的&#xff0c;但…