【备品备件需求】--入库记录查询增加仓库字段

本文讲述了如何在同事交接的系统中,对入库查询条件进行改造,增加仓库筛选功能。前端通过el-select组件添加仓库选择,后端SQL进行了join和distinct操作以适应新增的查询条件。尽管存在冗余代码挑战,但因功能限制,改动相对简单。
摘要由CSDN通过智能技术生成

最近同事交接的系统,有需求改动。

但是我完全看不懂他写的代码,好在需求不是很复杂,只是改下查询条件,如果是动流程,增单据,那我可能就不行了。

需求1:入库查询条件中增加仓库筛选

需求图如下:
在这里插入图片描述

首先找页面:在这里插入图片描述
先找到这个页面,看看它的查询逻辑是什么?

在这里插入图片描述
后台对应的controller是 SpareTradehdController,因为是在查询条件新建仓库字段,而这些查询条件传到后台,是被封装成一个requestBody,也就是一个实体类。

那么,就要在这个实体类里增加属性,首先要判断这个实体类,有没有被其他类引用,如果它耦合度低,只在SpareTradehdController里引用,那么改造起来就会相对简单一些,反之则比较复杂。

前端改造

查询条件中增加仓库条件

<el-form-item label="仓库" prop="warehouseCode">
        <el-select v-model="queryParams.warehouseCode" placeholder="请选择仓库" clearable size="small">
          <el-option
            v-for="item in warehouseOptions"
            :key="item.warehouseCode"
            :label="item.warehouseDesc"
            :value="item.warehouseCode"
          />
        </el-select>
      </el-form-item>

warehouseOptions是预定义的仓库集合,里面的数据需要初始化。

这个东西在做设备管理的时候,取设备分类的时候,已经写过好多次了。

data中声明属性:

方法在仓库管理功能里已经定义好,因此不用再去写js,写后台类去获取仓库列表,直接引用就行。

在这里插入图片描述

接下来,就是在created初始化的方法里,把warehouseOptions里面的值进行初始化。
在这里插入图片描述

至此,前端改造完成,已经可以取到数据了,但是当点击查询的时候,虽然在queryParams中带上了warehouseCode,但是后台并没有相应的逻辑去处理。

因此还需要再后台,进行逻辑的改造。

后端改造

在这里插入图片描述
上图是后端对应的查询方法,可以看到它把这个前端传递的参数queryParams封装成了一个实体类,这样只需要在这个实体类中增加相应的属性,就行了。

虽然,这个实体类被其他的代码所引用,这个是历史遗留问题,当初离职的开发人员,在做这个系统的时候,自动生成的代码里,有大量的冗余代码没有清理,导致维护的时候,异常困难。

但是,这个入库记录的功能,在前端是只有查询和导出的功能,编辑,新增,删除等功能都没有。

更何况,这个实体类虽然被其他的类所应用,但是在其中增加一个warehouseCode字段,如果其他类引用了,这个属性的值就是null,并没有什么大碍。

换句话说,可以直接新增。

实体类增加字段,和对应的get和set方法。

在这里插入图片描述
SQL是需要重点改造的,因为它查询的入库记录中,没有仓库这个字段,这个字段是存在于具体明细表中,因此还需要新增join查询,因为是一对多的关系,还需要distinct进行过滤。

改造如下:

<sql id="selectSpareTradehdVo">
        select DISTINCT hd.id,
                        hd.bwart,
                        hd.document_num,
                        hd.document_date,
                        hd.posting_date,
                        case
                            when ss.NAME1 is not null then ss.NAME1
                            else hd.company
                            end company,
                        hd.dept,
                        case
                            when st.BUTXT is not null then st.BUTXT
                            else hd.supplier
                            end supplier,
                        hd.trade_type,
                        hd.create_by,
                        hd.create_time,
                        hd.update_by,
                        hd.update_time,
                        hd.remark,
                        ss.NAME1,
                        st.BUTXT
        from spare_tradehd hd
                 left join spare_supplier ss on ss.LIFNR = hd.supplier
                 left join (select distinct BUKRS, BUTXT from spare_t001) st on st.BUKRS = hd.company
                 left JOIN spare_tradeln ln on hd.id = ln.tradehd_id
    </sql>

    <select id="selectSpareTradehdList" parameterType="SpareTradehd" resultMap="SpareTradehdResult">
        <include refid="selectSpareTradehdVo"/>
        <where>
            <if test="bwart != null  and bwart != ''"> and hd.bwart = #{bwart}</if>
            <if test="documentNum != null  and documentNum != ''"> and hd.document_num = #{documentNum}</if>
            <if test="documentDate != null  and documentDate != ''"> and hd.document_date = #{documentDate}</if>
            <if test="postingDate != null  and postingDate != ''"> and hd.posting_date = #{postingDate}</if>
            <if test="company != null  and company != ''"> and hd.company = #{company}</if>
            <if test="dept != null  and dept != ''"> and hd.dept = #{dept}</if>
            <if test="supplier != null  and supplier != ''"> and hd.suppliersupplier = #{supplier}</if>
            <if test="tradeType != null  and tradeType != ''"> and hd.trade_type = #{tradeType}</if>
            <if test="tradeType != null  and tradeType != ''"> and ln.warehouse_code = #{warehouseCode}</if>
        </where>
        order by create_time desc
    </select>

    <select id="selectSpareTradehdById" parameterType="Long" resultMap="SpareTradehdResult">
        <include refid="selectSpareTradehdVo"/>
        where hd.id = #{id}
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值