Commit bae87f172b4cb43cc8c5f2ce6feeb30b4824d2c8

Authored by 周峰
1 parent 51a34c9e

添加库龄预警页面

ant-design-vue-jeecg/src/views/system/inventory/InventoryAgeAlarmList.vue 0 → 100644
  1 +<template>
  2 + <a-card :bordered="false">
  3 + <!-- 查询区域 -->
  4 + <div class="table-page-search-wrapper">
  5 + <a-form layout="inline" @keyup.enter.native="searchQuery">
  6 + <a-row :gutter="24">
  7 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  8 + <a-form-item label="物料编码">
  9 + <a-input placeholder="请输入物料编码" v-model="queryParam.materialCode"></a-input>
  10 + </a-form-item>
  11 + </a-col>
  12 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  13 + <a-form-item label="物料名称">
  14 + <a-input placeholder="请输入物料名称" v-model="queryParam.materialName"></a-input>
  15 + </a-form-item>
  16 + </a-col>
  17 + <a-col :xl='6' :lg='7' :md='8' :sm='24'>
  18 + <a-form-item label='预警状态'>
  19 + <a-select show-search placeholder='请选择预警状态' option-filter-prop='children' v-model='queryParam.alarmStatus'>
  20 + <a-select-option v-for='item in alarmStatusList' :key='item.name' :value='item.code'>
  21 + {{ item.name }}
  22 + </a-select-option>
  23 + </a-select>
  24 + </a-form-item>
  25 + </a-col>
  26 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
  27 + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  28 + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button>
  29 + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
  30 + </span>
  31 + </a-col>
  32 + </a-row>
  33 + </a-form>
  34 + </div>
  35 + <!-- 查询区域-END -->
  36 +
  37 + <!-- 操作按钮区域 -->
  38 + <div class="table-operator" style="display: none">
  39 + <a-button type="primary" icon="download" @click="handleExportXls('inventory_age_alarm')">导出</a-button>
  40 + </div>
  41 +
  42 + <!-- table区域-begin -->
  43 + <div>
  44 + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
  45 + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
  46 + style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
  47 + <a style="margin-left: 24px" @click="onClearSelected">清空</a>
  48 + </div>
  49 +
  50 + <a-table
  51 + ref="table"
  52 + size="middle"
  53 + :scroll="{x:true}"
  54 + bordered
  55 + rowKey="id"
  56 + :columns="columns"
  57 + :dataSource="dataSource"
  58 + :pagination="ipagination"
  59 + :loading="loading"
  60 + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
  61 + class="j-table-force-nowrap"
  62 + @change="handleTableChange">
  63 +
  64 + <span slot="expiringdays" slot-scope="text, record">
  65 + <a-tag :key="record" :color="expiringdaysColor(record)">
  66 + {{ record.expiringdays }}
  67 + </a-tag>
  68 + </span>
  69 +
  70 + <span slot="days" slot-scope="text, record">
  71 + <a-tag :key="record" :color="daysColor(record)">
  72 + {{ record.days}}
  73 + </a-tag>
  74 + </span>
  75 +
  76 + <span slot="daystoexpire" slot-scope="text, record">
  77 + <a-tag :key="record" :color="daystoexpireColor(record)">
  78 + {{ record.daystoexpire}}
  79 + </a-tag>
  80 + </span>
  81 +
  82 +
  83 + <template slot="htmlSlot" slot-scope="text">
  84 + <div v-html="text"></div>
  85 + </template>
  86 + <template slot="imgSlot" slot-scope="text">
  87 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
  88 + <img v-else :src="getImgView(text)" height="25px" alt=""
  89 + style="max-width:80px;font-size: 12px;font-style: italic;"/>
  90 + </template>
  91 + <template slot="fileSlot" slot-scope="text">
  92 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
  93 + <a-button
  94 + v-else
  95 + :ghost="true"
  96 + type="primary"
  97 + icon="download"
  98 + size="small"
  99 + @click="downloadFile(text)">
  100 + 下载
  101 + </a-button>
  102 + </template>
  103 +
  104 + </a-table>
  105 + </div>
  106 + </a-card>
  107 +</template>
  108 +
  109 +<script>
  110 +
  111 +import '@/assets/less/TableExpand.less'
  112 +import {mixinDevice} from '@/utils/mixin'
  113 +import {JeecgListMixin} from '@/mixins/JeecgListMixin'
  114 +
  115 +export default {
  116 + name: 'InventoryAgeAlarmList',
  117 + mixins: [JeecgListMixin, mixinDevice],
  118 + components: {},
  119 + queryParam: {
  120 + materialName2:""
  121 + },
  122 + data() {
  123 + return {
  124 + description: '库存水位预警',
  125 + alarmStatusList:[
  126 + {'name':'所有', 'code':'all'},
  127 + {'name':'无预警', 'code':'noAlarm'},
  128 + {'name':'有预警', 'code':'isAlarm'},
  129 + ],
  130 + // 表头
  131 + columns: [
  132 + {
  133 + title: '#',
  134 + dataIndex: '',
  135 + key: 'rowIndex',
  136 + width: 60,
  137 + align: "center",
  138 + customRender: function (t, r, index) {
  139 + return parseInt(index) + 1;
  140 + }
  141 + },
  142 + {
  143 + title: '库位编码',
  144 + align: "center",
  145 + dataIndex: 'locationCode'
  146 + },
  147 + {
  148 + title: '托盘编码',
  149 + align: "center",
  150 + dataIndex: 'containerCode'
  151 + },
  152 + {
  153 + title: '物料编码',
  154 + align: "center",
  155 + dataIndex: 'materialCode'
  156 + },
  157 + {
  158 + title: '物料名称',
  159 + align: "center",
  160 + dataIndex: 'materialName'
  161 + },
  162 + {
  163 + title: '物料规格',
  164 + align: "center",
  165 + dataIndex: 'materialSpec'
  166 + },
  167 + {
  168 + title: '库存数量',
  169 + align: "center",
  170 + dataIndex: 'qty'
  171 + },
  172 + {
  173 + title: '物料单位',
  174 + align: "center",
  175 + dataIndex: 'materialUnit'
  176 + },
  177 + {
  178 + title: '入库时间',
  179 + align: "center",
  180 + dataIndex: 'createTime'
  181 + },
  182 + {
  183 + title: '库龄(天)',
  184 + align: "center",
  185 + dataIndex: 'days',
  186 + scopedSlots: {customRender: 'days'}
  187 + },
  188 + {
  189 + title: '预警期',
  190 + align: "center",
  191 + dataIndex: 'expiringdays',
  192 + scopedSlots: {customRender: 'expiringdays'}
  193 + }, {
  194 + title: '保质期',
  195 + align: "center",
  196 + dataIndex: 'daystoexpire',
  197 + scopedSlots: {customRender: 'daystoexpire'}
  198 + },
  199 + {
  200 + title: '仓库编码',
  201 + align: "center",
  202 + dataIndex: 'warehouseCode'
  203 + },
  204 + {
  205 + title: '货主编码',
  206 + align: "center",
  207 + dataIndex: 'companyCode'
  208 + }
  209 + ],
  210 + url: {
  211 + list: "/inventory/inventoryAge/list",
  212 + exportXlsUrl: "/inventory/inventoryAge/exportXls",
  213 + },
  214 + dictOptions: {},
  215 + superFieldList: [],
  216 + }
  217 + },
  218 + created() {
  219 + this.getSuperFieldList();
  220 + },
  221 + computed: {
  222 + importExcelUrl: function () {
  223 + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
  224 + },
  225 + },
  226 + methods: {
  227 + initDictConfig() {
  228 + },
  229 +
  230 + expiringdaysColor(record) {
  231 + if(record.days >= record.expiringdays){
  232 + return 'blue';
  233 + }
  234 + return '';
  235 + },
  236 +
  237 + daystoexpireColor(record) {
  238 + if(record.days >= record.daystoexpire){
  239 + return 'blue';
  240 + }
  241 + return '';
  242 + },
  243 +
  244 + daysColor(record) {
  245 + if(record.days >= record.expiringdays){
  246 + return 'red';
  247 + }
  248 + return '';
  249 + },
  250 +
  251 + getSuperFieldList() {
  252 + let fieldList = [];
  253 + fieldList.push({type: 'string', value: 'alarmType', text: '预警类别代码'})
  254 + fieldList.push({type: 'string', value: 'warehouseCode', text: '仓库编码'})
  255 + fieldList.push({type: 'string', value: 'companyCode', text: '货主编码'})
  256 + fieldList.push({type: 'string', value: 'materialCode', text: '物料编码'})
  257 + fieldList.push({type: 'string', value: 'materialName', text: '物料名称'})
  258 + fieldList.push({type: 'string', value: 'materialSpec', text: '物料规格'})
  259 + fieldList.push({type: 'string', value: 'materialUnit', text: '物料单位'})
  260 + fieldList.push({type: 'int', value: 'qtysum', text: 'qtysum'})
  261 + fieldList.push({type: 'int', value: 'inlower', text: 'inlower'})
  262 + fieldList.push({type: 'int', value: 'inupper', text: 'inupper'})
  263 + fieldList.push({type: 'int', value: 'inmin', text: 'inmin'})
  264 + fieldList.push({type: 'int', value: 'inmax', text: 'inmax'})
  265 + fieldList.push({type: 'int', value: 'needalarm', text: 'needalarm'})
  266 + fieldList.push({type: 'int', value: 'max', text: '最大'})
  267 + fieldList.push({type: 'int', value: 'min', text: '最小'})
  268 + fieldList.push({type: 'int', value: 'upper', text: '上限预警值'})
  269 + fieldList.push({type: 'int', value: 'lower', text: '下限预警值'})
  270 + fieldList.push({type: 'string', value: 'remark', text: '备注'})
  271 + fieldList.push({type: 'string', value: 'userdef1', text: '备用字段1'})
  272 + fieldList.push({type: 'string', value: 'userdef2', text: '备用字段2'})
  273 + fieldList.push({type: 'string', value: 'userdef3', text: '备用字段3'})
  274 + this.superFieldList = fieldList
  275 + }
  276 + }
  277 +}
  278 +</script>
  279 +<style scoped>
  280 +@import '~@assets/less/common.less';
  281 +</style>
0 282 \ No newline at end of file
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/controller/InventoryAgeAlarmController.java 0 → 100644
  1 +package org.jeecg.modules.wms.inventory.inventoryAge.controller;
  2 +
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5 +import io.swagger.annotations.Api;
  6 +import io.swagger.annotations.ApiOperation;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.jeecg.common.api.vo.Result;
  9 +import org.jeecg.common.system.base.controller.JeecgController;
  10 +import org.jeecg.modules.wms.config.materialWarning.service.IMaterialWarningService;
  11 +import org.jeecg.modules.wms.inventory.inventoryAge.entity.InventoryAgeAlarm;
  12 +import org.jeecg.modules.wms.inventory.inventoryAge.service.IInventoryAgeAlarmService;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.web.bind.annotation.*;
  15 +import org.springframework.web.servlet.ModelAndView;
  16 +
  17 +import javax.servlet.http.HttpServletRequest;
  18 +
  19 +/**
  20 + * @Description: inventory_level_alarm
  21 + * @Author: jeecg-boot
  22 + * @Date: 2023-10-30
  23 + * @Version: V1.0
  24 + */
  25 +@Api(tags="inventory_age_alarm")
  26 +@RestController
  27 +@RequestMapping("/inventory/inventoryAge")
  28 +@Slf4j
  29 +public class InventoryAgeAlarmController extends JeecgController<InventoryAgeAlarm, IInventoryAgeAlarmService> {
  30 + @Autowired
  31 + private IInventoryAgeAlarmService iInventoryAgeAlarmService;
  32 +
  33 + @Autowired
  34 + private IMaterialWarningService iMaterialWarningService;
  35 +
  36 + /**
  37 + * 分页列表查询
  38 + *
  39 + * @param pageNo
  40 + * @param pageSize
  41 + * @param req
  42 + * @return
  43 + */
  44 + //@AutoLog(value = "inventory_level_alarm-分页列表查询")
  45 + @ApiOperation(value="inventory_level_alarm-分页列表查询", notes="inventory_level_alarm-分页列表查询")
  46 + @GetMapping(value = "/list")
  47 + public Result<IPage<InventoryAgeAlarm>> queryPageList(String materialCode, String materialName, String alarmStatus,
  48 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  49 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  50 + HttpServletRequest req) {
  51 +
  52 + Page<InventoryAgeAlarm> page = new Page<>(pageNo, pageSize);
  53 + IPage<InventoryAgeAlarm> pageList = iInventoryAgeAlarmService.queryAgeAlarm(page, materialCode, materialName, alarmStatus);
  54 + //对list分页处理
  55 + return Result.OK(pageList);
  56 + }
  57 +
  58 +
  59 + /**
  60 + * 通过id查询
  61 + *
  62 + * @param id
  63 + * @return
  64 + */
  65 + //@AutoLog(value = "inventory_age_alarm-通过id查询")
  66 + @ApiOperation(value="inventory_age_alarm-通过id查询", notes="inventory_age_alarm-通过id查询")
  67 + @GetMapping(value = "/queryById")
  68 + public Result<InventoryAgeAlarm> queryById(@RequestParam(name="id",required=true) String id) {
  69 + InventoryAgeAlarm inventoryageAlarm = iInventoryAgeAlarmService.getById(id);
  70 + if(inventoryageAlarm ==null) {
  71 + return Result.error("未找到对应数据");
  72 + }
  73 + return Result.OK(inventoryageAlarm);
  74 + }
  75 +
  76 + /**
  77 + * 导出excel
  78 + *
  79 + * @param request
  80 + * @param inventoryAgeAlarm
  81 + */
  82 + @RequestMapping(value = "/exportXls")
  83 + public ModelAndView exportXls(HttpServletRequest request, InventoryAgeAlarm inventoryAgeAlarm) {
  84 + return super.exportXls(request, inventoryAgeAlarm, InventoryAgeAlarm.class, "inventory_level_alarm");
  85 + }
  86 +
  87 +
  88 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/entity/InventoryAgeAlarm.java 0 → 100644
  1 +package org.jeecg.modules.wms.inventory.inventoryAge.entity;
  2 +
  3 +import lombok.Data;
  4 +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
  5 +
  6 +@Data
  7 +public class InventoryAgeAlarm extends InventoryDetail {
  8 + private int days;
  9 + /**保质期**/
  10 + private int daystoexpire;
  11 + /**预警期**/
  12 + private int expiringdays;
  13 +
  14 + public InventoryAgeAlarm(){
  15 +
  16 + }
  17 +
  18 +
  19 + @Override
  20 + public String toString() {
  21 + String str = "<ul>";
  22 +// if (inLower()) {
  23 +// str = str + "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数 <b>" + getQtySum() + "</b>&nbsp;&nbsp;低于下限预警值<b> " + getLower() + "</b></li>";
  24 +// } else if (inUpper()) {
  25 +// str = str + "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数 <b>" + getQtySum() + "</b>&nbsp;&nbsp;高于上限预警值<b> " + getUpper() + "</b></li>";
  26 +// } else if (inMin()) {
  27 +// str = str + "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数 <b>" + getQtySum() + "</b>&nbsp;&nbsp;低于最低值<b> " + getMin() + "</b></li>";
  28 +// } else if (inMax()) {
  29 +// str = str + "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数 <b>" + getQtySum() + "</b>&nbsp;&nbsp;超过最高值<b> " + getMax() + "</b></li>";
  30 +// }
  31 + return str + "</ul>";
  32 + }
  33 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/mapper/InventoryAgeAlarmMapper.java 0 → 100644
  1 +package org.jeecg.modules.wms.inventory.inventoryAge.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.jeecg.modules.wms.inventory.inventoryAge.entity.InventoryAgeAlarm;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * @Description: material_level_alarm
  12 + * @Author: jeecg-boot
  13 + * @Date: 2023-10-30
  14 + * @Version: V1.0
  15 + */
  16 +public interface InventoryAgeAlarmMapper extends BaseMapper<InventoryAgeAlarm> {
  17 + IPage<InventoryAgeAlarm> queryAgeAlarm(IPage<InventoryAgeAlarm> page,
  18 + @Param("materialCode") String materialCode,
  19 + @Param("materialName") String materialName,
  20 + @Param("alarmStatus") String alarmStatus);
  21 +
  22 + List<InventoryAgeAlarm> queryAgeAlarm(@Param("materialCode") String materialCode,
  23 + @Param("materialName") String materialName,
  24 + @Param("alarmStatus") String alarmStatus);
  25 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/mapper/xml/InventoryAgeAlarmMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.wms.inventory.inventoryAge.mapper.InventoryAgeAlarmMapper">
  4 +
  5 + <select id="queryAgeAlarm"
  6 + resultType="org.jeecg.modules.wms.inventory.inventoryAge.entity.InventoryAgeAlarm">
  7 + SELECT c.*, d.*, DATEDIFF(current_date, d.create_time) as days from inventory_detail d INNER JOIN (
  8 + SELECT * FROM (
  9 + SELECT
  10 + m.CODE as material_code, m.type,
  11 + COALESCE ( m.daystoexpire, mt.daystoexpire ) AS daystoexpire,
  12 + COALESCE ( m.expiringdays, mt.expiringdays ) AS expiringdays
  13 + FROM material m
  14 + LEFT JOIN material_type mt ON mt.CODE = m.type
  15 + ) mt_config
  16 + WHERE
  17 + daystoexpire IS NOT NULL
  18 + AND expiringdays IS NOT NULL
  19 + ) c on d.material_code = c.material_code
  20 + <where>
  21 + <if test="materialCode != null and materialCode != ''">
  22 + and d.material_code = #{materialCode}
  23 + </if>
  24 + <if test="materialName != null and materialName != ''">
  25 + <bind name="materialNameLike" value="'%'+materialName+'%'"/>
  26 + and d.material_name like #{materialNameLike}
  27 + </if>
  28 + <if test="alarmStatus != null and alarmStatus == 'noAlarm'">
  29 + DATEDIFF(current_date, d.create_time) &lt; expiringdays
  30 + </if>
  31 + <if test="alarmStatus != null and alarmStatus == 'isAlarm'">
  32 + DATEDIFF(current_date, d.create_time) &gt;= expiringdays
  33 + </if>
  34 + </where>
  35 + </select>
  36 +</mapper>
0 37 \ No newline at end of file
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/service/IInventoryAgeAlarmService.java 0 → 100644
  1 +package org.jeecg.modules.wms.inventory.inventoryAge.service;
  2 +
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.service.IService;
  5 +import org.jeecg.modules.wms.inventory.inventoryAge.entity.InventoryAgeAlarm;
  6 +
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * @Description: inventory_level_alarm
  11 + * @Author: jeecg-boot
  12 + * @Date: 2023-10-30
  13 + * @Version: V1.0
  14 + */
  15 +public interface IInventoryAgeAlarmService extends IService<InventoryAgeAlarm> {
  16 + List<InventoryAgeAlarm> getAgeAlarm(String materialCode);
  17 +
  18 + IPage<InventoryAgeAlarm> queryAgeAlarm(IPage<InventoryAgeAlarm> page, String materialCode, String materialName, String alarmStatus);
  19 +
  20 +}
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryAge/service/impl/InventoryAgeAlarmServiceImpl.java 0 → 100644
  1 +package org.jeecg.modules.wms.inventory.inventoryAge.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5 +import org.jeecg.modules.wms.config.materialWarning.service.impl.MaterialWarningServiceImpl;
  6 +import org.jeecg.modules.wms.inventory.inventoryAge.entity.InventoryAgeAlarm;
  7 +import org.jeecg.modules.wms.inventory.inventoryAge.mapper.InventoryAgeAlarmMapper;
  8 +import org.jeecg.modules.wms.inventory.inventoryAge.service.IInventoryAgeAlarmService;
  9 +import org.jeecg.modules.wms.inventory.inventoryHeader.service.impl.InventoryDetailServiceImpl;
  10 +import org.springframework.stereotype.Service;
  11 +
  12 +import javax.annotation.Resource;
  13 +import java.util.List;
  14 +
  15 +/**
  16 + * @Description: inventory_level_alarm
  17 + * @Author: jeecg-boot
  18 + * @Date: 2023-10-30
  19 + * @Version: V1.0
  20 + */
  21 +@Service
  22 +public class InventoryAgeAlarmServiceImpl extends ServiceImpl<InventoryAgeAlarmMapper, InventoryAgeAlarm> implements IInventoryAgeAlarmService {
  23 +
  24 + @Resource
  25 + InventoryDetailServiceImpl inventoryDetailService;
  26 +
  27 + @Resource
  28 + MaterialWarningServiceImpl materialWarningService;
  29 +
  30 + @Resource
  31 + InventoryAgeAlarmMapper inventoryAgeAlarmMapper;
  32 +
  33 + @Override
  34 + public List<InventoryAgeAlarm> getAgeAlarm(String materialCode) {
  35 + List<InventoryAgeAlarm> alarmList = inventoryAgeAlarmMapper.queryAgeAlarm(materialCode,null,"isAlarm");
  36 +
  37 + return alarmList;
  38 + }
  39 +
  40 +
  41 + @Override
  42 + public IPage<InventoryAgeAlarm> queryAgeAlarm(IPage<InventoryAgeAlarm> page, String materialCode, String materialName, String alarmStatus) {
  43 + return inventoryAgeAlarmMapper.queryAgeAlarm(page, materialCode, materialName, alarmStatus);
  44 + }
  45 +}
... ...