资产入库模块
有了资产类型之后,用户就可以维护资产的入库情况。入库模块也是对固定资产和耗材做了区分,资产入库模块的主界面如下图所示。
用户可以根据资产名称、发票单号进行模拟查询,搜索栏在顶部左侧,如下图所示。
资产入库单实体类的字段明细如下:
字段名称 | 数据类型 | 长度 | 字段含义 | 备注 |
Id | Varchar | 255 | 唯一标识 | 非空,主键 |
assetId | Varchar | 255 | 资产ID | 非空,外键 |
assetName | Varchar | 255 | 资产名称 | 非空 |
invoice | Varchar | 255 | 发票单号 | 非空 |
model | Varchar | 15 | 型号 | 非空 |
unitPrice | BigDecimal | 15 | 单价 | 非空 |
nature | Varchar | 15 | 性质 | 非空 |
number | BigDecimal | 15 | 入库数量 | 非空 |
remarks | Varchar | 255 | 备注 |
用户可以对某个资产进行入库操作,点击顶部的添加按钮,进入到资产入库界面,如下图所示。
其中第一个输入表单为资产,这是一个选择器组件,使用View UI的 Drawer 抽屉实现,选择器的界面如下图所示,资产的数据来源是资产类型模块。
资产选择器的前端组件代码如下所示。
<Button @click="assetModalVisible=true" :icon="icon">{{text}}</Button> <Drawer title="选择固定资产" closable v-model="assetModalVisible" width="800" draggable> <Form ref="searchUserForm" :model="searchUserForm" inline :label-width="55"> <Form-item label="资产名称" prop="houseNumber"> <Input type="text" v-model="searchUserForm.houseNumber" clearable placeholder="请输入资产名称" style="width: 200px" /> </Form-item> <Form-item style="margin-left:-35px;" class="br"> <Button @click="handleSearchUser" type="primary" icon="ios-search">搜索</Button> <Button @click="handleResetUser">重置</Button> </Form-item> </Form> <Table :loading="userLoading" border :columns="userColumns" :data="userData" @on-row-click="changeSelect" style="margin: 2vh 0;"></Table> <Row type="flex" justify="end"> <Page :current="searchUserForm.pageNumber" :total="totalUser" :page-size="searchUserForm.pageSize" @on-change="changeUserPage" @on-page-size-change="changeUserPageSize" :page-size-opts="[10,20,50]" size="small" show-total show-elevator show-sizer transfer></Page> </Row> </Drawer>
用户只需输入入库数量,资产的型号、单价、总价都会自动回显、计算,简化入库人员的录入工作。
资产领用出库模块
资产类型和资产入库模块之后,就是资产出库了,资产出库的概念就是中小企业内部员工的领用操作,资产出库的主界面如下图所示。
员工也可以查询自己的出库领用,如下图所示。
资产出库领用单实体类的字段明细如下:
字段名称 | 数据类型 | 长度 | 字段含义 | 备注 |
Id | Varchar | 255 | 唯一标识 | 非空,主键 |
assetId | Varchar | 255 | 资产ID | 非空,外键 |
assetName | Varchar | 255 | 资产名称 | 非空 |
recipients | Varchar | 255 | 领用人 | 非空 |
recipientsId | Varchar | 255 | 领用人ID | 非空,外键 |
model | Varchar | 15 | 型号 | 非空 |
unitPrice | BigDecimal | 15 | 单价 | 非空 |
nature | Varchar | 15 | 性质 | 非空 |
number | BigDecimal | 15 | 入库数量 | 非空 |
auditStatus | Integer | 15 | 出库审核状态 | 非空 |
auditTime | Varchar | 255 | 出库审核时间 | 非空 |
remarks | Varchar | 255 | 备注 |
用户点击出库模块的添加按钮,即可进入出库模块,用户需要选择资产、领用人和出库的数量,还可以选填备注信息,如下图所示。
员工也可以自己申请领用,在员工的申请领用界面中,没有领用人字段,即领用人就是自己,操作界面如下图所示。
新增出库单后,资产类型的现有数量不会随之减少,而是等到出库审核通过后才会变少,新增出库单的核心代码如下所示。
@SystemLog(about = "新增资产出库单", type = LogType.DATA_CENTER,doType = "ASSET-OUT-03") @ApiOperation(value = "新增资产出库单") @RequestMapping(value = "/insert", method = RequestMethod.POST) public Result<WarehouseOut> insert(WarehouseOut warehouseOut){ warehouseOut.setAuditStatus(0); warehouseOut.setAuditTime(""); boolean saveFlag = saveAssetNumber(warehouseOut, false); if(!saveFlag) { return ResultUtil.error("手慢啦!库存不足!"); } if(ZwzNullUtils.isNull(warehouseOut.getRecipientsId())) { User currUser = securityUtil.getCurrUser(); warehouseOut.setRecipientsId(currUser.getId()); warehouseOut.setRecipients(currUser.getNickname()); } if(iWarehouseOutService.saveOrUpdate(warehouseOut)){ return new ResultUtil<WarehouseOut>().setData(warehouseOut); } return ResultUtil.error(); }
资产出库审核模块
当仓管员或用户提交了资产出库申请后,会自动生成一个审核单,送到资产出库审核模块,资产出库审核模块的主界面如下图所示。
用户可以查询到资产审核单,可以对资产审核单进行“审核通过”和“审核驳回”操作,审核通过后,资产类型的现有数量会随之减少,审核驳回后现有数量不会变化。用户也可以根据资产名称和领用人进行模拟搜索。
资产出库审核的接口代码如下所示。
@ApiOperation(value = "审核资产出库单") @RequestMapping(value = "/returnFx", method = RequestMethod.GET) public Result<Object> returnFx(@RequestParam String id,@RequestParam Integer message){ WarehouseOut wo = iWarehouseOutService.getById(id); if(wo == null) { return ResultUtil.error("出库单不存在"); } if(Objects.equals(1,message)) { boolean saveFlag = saveAssetNumber(wo,true); if(!saveFlag) { return ResultUtil.error("手慢啦!库存不足!"); } } wo.setAuditStatus(message); wo.setAuditTime(DateUtil.now()); iWarehouseOutService.saveOrUpdate(wo); return ResultUtil.success(); } @ApiOperation(value = "资产出库出库处理") private boolean saveAssetNumber(WarehouseOut warehouseOut,Boolean saveFlag) { WarehouseOut oldWarehouseOut = iWarehouseOutService.getById(warehouseOut.getId()); BigDecimal oldNumber = BigDecimal.ZERO; if(oldWarehouseOut != null){ oldNumber = oldWarehouseOut.getNumber(); } // outNumber 要出库的数量 BigDecimal outNumber = warehouseOut.getNumber(); AssetsType oldAssetsType = iAssetsTypeService.getById(warehouseOut.getAssetId()); if(oldAssetsType != null){ // newNumber 出库后还有的数量 = 仓库原本还有的数量 - 出库单的出库数量 BigDecimal newNumber = oldAssetsType.getExistingNumber().subtract(outNumber); if(newNumber.compareTo(BigDecimal.ZERO) > -1){ if(saveFlag) { oldAssetsType.setExistingNumber(newNumber); iAssetsTypeService.saveOrUpdate(oldAssetsType); } }else{ return false; } } return true; }
基于Vue和SpringBoot的资产出入库管理系统还有四张静态图表,使用Antv图表进行开发,如下所示。
项目总结
本软件是基于Vue和SpringBoot的资产出入库管理系统,包含了系统基础模块、资产类型维护、资产入库、资产领用出库、资产出库审核这五个功能模块。
免责声明
- 本项目开源,仅供个人学习使用,转发 / 商用授权请联系作者,否则后果自负。
- 作者拥有本软件构建后的应用系统全部内容所有权及独立的知识产权(软件著作权登记号:2022SR1338865)。
- 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复。相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
下载本系统代码的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
- 必须了解使用本软件的风险,作者不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。