商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表
一、采用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); } }
四、效果图