文末獲取源碼,項(xiàng)目編號(hào):
S
081
。
\color{red}{文末獲取源碼,項(xiàng)目編號(hào):S081。}
文末獲取源碼,項(xiàng)目編號(hào):S081。
一、摘要
1.1 項(xiàng)目介紹
基于JAVA+Vue+SpringBoot+MySQL的實(shí)驗(yàn)室耗材管理系統(tǒng),包含了耗材檔案模塊、耗材入庫(kù)模塊、耗材出庫(kù)模塊、耗材申請(qǐng)模塊、耗材審核模塊和耗材圖表模塊,還包含系統(tǒng)自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數(shù)據(jù)字典管理、文件管理、圖表展示等基礎(chǔ)模塊,實(shí)驗(yàn)室耗材管理系統(tǒng)基于角色的訪問控制,給管理員和耗材管理專員使用,可將權(quán)限精確到按鈕級(jí)別,您可以自定義角色并分配權(quán)限,系統(tǒng)適合設(shè)計(jì)精確的權(quán)限約束需求。
1.2 項(xiàng)目錄屏
源碼下載
二、功能模塊
2.1 耗材檔案模塊
實(shí)驗(yàn)室耗材管理系統(tǒng)的耗材檔案模塊是用來管理和維護(hù)實(shí)驗(yàn)室中所有耗材的信息的模塊。它可以幫助實(shí)驗(yàn)室管理人員有效地記錄和跟蹤實(shí)驗(yàn)室中的耗材信息,包括耗材的名稱、規(guī)格、型號(hào)、供應(yīng)商、采購(gòu)日期、有效期、存放位置等。
實(shí)驗(yàn)室管理人員可以通過耗材檔案模塊將新購(gòu)買的耗材信息錄入系統(tǒng)中,包括耗材的基本信息和相關(guān)屬性。實(shí)驗(yàn)室管理人員可以根據(jù)耗材的各種屬性進(jìn)行查詢,快速定位和查找需要的耗材信息。耗材檔案模塊可以記錄耗材的采購(gòu)日期、供應(yīng)商信息以及入庫(kù)數(shù)量等,幫助管理人員對(duì)耗材進(jìn)行合理的入庫(kù)管理。當(dāng)實(shí)驗(yàn)室需要使用某種耗材時(shí),管理人員可以通過耗材檔案模塊進(jìn)行出庫(kù)操作,記錄出庫(kù)數(shù)量和使用目的等信息。
耗材檔案模塊可以實(shí)時(shí)統(tǒng)計(jì)和更新實(shí)驗(yàn)室中各種耗材的庫(kù)存情況,提醒管理人員及時(shí)進(jìn)行補(bǔ)充采購(gòu)。當(dāng)某種耗材過期或損壞無法使用時(shí),可以通過耗材檔案模塊進(jìn)行報(bào)廢管理,記錄報(bào)廢原因和處理方式等信息。通過耗材檔案模塊,實(shí)驗(yàn)室管理人員可以更加方便地管理和控制實(shí)驗(yàn)室中的耗材,提高耗材的利用率和管理效率。
2.2 耗材入庫(kù)模塊
實(shí)驗(yàn)室耗材管理系統(tǒng)的耗材入庫(kù)模塊是用來記錄和管理實(shí)驗(yàn)室中新購(gòu)買的耗材入庫(kù)信息的模塊。實(shí)驗(yàn)室管理人員可以通過耗材入庫(kù)模塊將新購(gòu)買的耗材信息錄入系統(tǒng)中。包括耗材的名稱、規(guī)格、型號(hào)、供應(yīng)商、采購(gòu)日期、有效期等基本信息。錄入耗材信息時(shí),還可以添加附加屬性,如物料編號(hào)、批次號(hào)、條形碼等。在錄入耗材信息的同時(shí),管理人員需要填寫入庫(kù)數(shù)量。系統(tǒng)會(huì)自動(dòng)計(jì)算并更新庫(kù)存數(shù)量,方便管理人員實(shí)時(shí)掌握實(shí)驗(yàn)室中各種耗材的庫(kù)存情況。
耗材入庫(kù)模塊通常也包含供應(yīng)商管理功能,可以記錄供應(yīng)商的聯(lián)系信息、合作情況和評(píng)價(jià)等。在入庫(kù)時(shí),管理人員可以選擇已經(jīng)建立的供應(yīng)商,并關(guān)聯(lián)相應(yīng)的耗材采購(gòu)信息。耗材入庫(kù)模塊一般會(huì)生成入庫(kù)單,用于記錄每次耗材入庫(kù)的詳細(xì)信息,包括入庫(kù)日期、供應(yīng)商、采購(gòu)單號(hào)、入庫(kù)人等。管理人員可以根據(jù)入庫(kù)單進(jìn)行查詢和統(tǒng)計(jì),方便日后追溯和審核。有些實(shí)驗(yàn)室可能需要對(duì)入庫(kù)的耗材進(jìn)行質(zhì)檢。耗材入庫(kù)模塊可以提供相應(yīng)的功能,管理人員可以記錄質(zhì)檢結(jié)果、質(zhì)檢人員和質(zhì)檢日期等信息,確保入庫(kù)的耗材符合實(shí)驗(yàn)室的質(zhì)量要求。通過耗材入庫(kù)模塊,實(shí)驗(yàn)室管理人員可以方便地記錄和管理實(shí)驗(yàn)室中新購(gòu)買的耗材信息,及時(shí)更新庫(kù)存數(shù)量,提高耗材管理的效率和準(zhǔn)確性。
2.3 耗材出庫(kù)模塊
實(shí)驗(yàn)室耗材管理系統(tǒng)的耗材出庫(kù)模塊是用來記錄和管理實(shí)驗(yàn)室中耗材的出庫(kù)信息的模塊。實(shí)驗(yàn)室管理人員可以通過耗材出庫(kù)模塊根據(jù)耗材的名稱、規(guī)格、型號(hào)等信息進(jìn)行查詢,快速定位需要出庫(kù)的耗材。管理人員可以通過耗材出庫(kù)模塊進(jìn)行耗材的出庫(kù)操作。在出庫(kù)時(shí),需要填寫出庫(kù)數(shù)量以及使用目的等相關(guān)信息。同時(shí),系統(tǒng)會(huì)自動(dòng)更新庫(kù)存數(shù)量,確保庫(kù)存信息的準(zhǔn)確性。耗材出庫(kù)模塊一般會(huì)生成出庫(kù)單,記錄每次耗材出庫(kù)的詳細(xì)信息,包括出庫(kù)日期、出庫(kù)人、領(lǐng)用單位等。這些信息可以用于后續(xù)的追溯和審核。
耗材出庫(kù)模塊可以記錄每次耗材的使用記錄,包括使用人、使用日期、使用目的等。這樣可以方便實(shí)驗(yàn)室管理人員對(duì)耗材的使用情況進(jìn)行統(tǒng)計(jì)和分析。在耗材出庫(kù)模塊中,可以設(shè)置庫(kù)存預(yù)警功能。當(dāng)某種耗材的庫(kù)存數(shù)量低于預(yù)設(shè)閾值時(shí),系統(tǒng)會(huì)自動(dòng)生成提醒通知,以便管理人員及時(shí)進(jìn)行補(bǔ)充采購(gòu)。通過耗材出庫(kù)模塊,實(shí)驗(yàn)室管理人員可以方便地記錄和管理實(shí)驗(yàn)室中耗材的出庫(kù)信息,及時(shí)更新庫(kù)存數(shù)量,提高耗材管理的效率和準(zhǔn)確性。
2.4 耗材申請(qǐng)模塊
實(shí)驗(yàn)室耗材管理系統(tǒng)的耗材申請(qǐng)模塊是用來方便實(shí)驗(yàn)室人員提交耗材申請(qǐng)并進(jìn)行審批流程的模塊。實(shí)驗(yàn)室內(nèi)的人員可以通過耗材申請(qǐng)模塊提交耗材的申請(qǐng)。在申請(qǐng)時(shí),需要填寫所需耗材的名稱、數(shù)量、用途等相關(guān)信息。耗材申請(qǐng)模塊一般會(huì)設(shè)計(jì)審批流程,包括申請(qǐng)人、審批人、審批順序等。申請(qǐng)人提交耗材申請(qǐng)后,相應(yīng)的審批人會(huì)收到通知,進(jìn)行審批操作。系統(tǒng)會(huì)記錄每個(gè)審批環(huán)節(jié)的處理情況,以便后續(xù)查詢和追溯。耗材申請(qǐng)模塊會(huì)根據(jù)用戶的權(quán)限設(shè)置不同的審批權(quán)限。只有具有相應(yīng)權(quán)限的人員才能進(jìn)行審批操作,確保審批過程的安全性和準(zhǔn)確性。
耗材申請(qǐng)模塊會(huì)記錄每次耗材申請(qǐng)的詳細(xì)信息,包括申請(qǐng)日期、申請(qǐng)人、審批狀態(tài)等。管理人員可以通過查詢功能查看和統(tǒng)計(jì)申請(qǐng)記錄,方便管理和掌握實(shí)驗(yàn)室內(nèi)的耗材使用情況。耗材申請(qǐng)模塊會(huì)通過系統(tǒng)消息或郵件等方式通知相關(guān)人員的申請(qǐng)狀態(tài)和審批結(jié)果,提高溝通效率和及時(shí)性。通過耗材申請(qǐng)模塊,實(shí)驗(yàn)室內(nèi)的人員可以方便地提交耗材申請(qǐng)并進(jìn)行審批流程,提高申請(qǐng)的準(zhǔn)確性和效率。同時(shí),管理人員可以更好地掌握和管理實(shí)驗(yàn)室的耗材使用情況。
2.5 耗材審核模塊
實(shí)驗(yàn)室耗材管理系統(tǒng)的耗材審核模塊是該系統(tǒng)中的一個(gè)重要部分,用于對(duì)實(shí)驗(yàn)室耗材的采購(gòu)申請(qǐng)進(jìn)行審核和管理。實(shí)驗(yàn)室成員可以通過系統(tǒng)向耗材審核模塊提交耗材采購(gòu)申請(qǐng),包括所需耗材的名稱、規(guī)格、數(shù)量、用途等信息。申請(qǐng)?zhí)峤缓?,?huì)自動(dòng)生成一個(gè)申請(qǐng)單。申請(qǐng)單會(huì)經(jīng)過一定的審核流程,根據(jù)實(shí)驗(yàn)室的設(shè)定,可以包括多級(jí)審核。審核人員可以對(duì)申請(qǐng)單進(jìn)行審核、審批以及駁回操作。審核人員可以查看申請(qǐng)單的詳細(xì)信息,包括耗材的具體需求和用途。
系統(tǒng)會(huì)記錄每一次審核的結(jié)果和審核人的意見,以便后續(xù)查詢和審計(jì)。審核記錄可在系統(tǒng)中進(jìn)行查看和導(dǎo)出,方便實(shí)驗(yàn)室管理人員進(jìn)行數(shù)據(jù)分析和監(jiān)控。系統(tǒng)可以通過郵件、短信等方式向相關(guān)人員發(fā)送審核結(jié)果的通知,提醒實(shí)驗(yàn)室成員耗材采購(gòu)申請(qǐng)的進(jìn)展情況。審核通過的耗材采購(gòu)申請(qǐng)可以自動(dòng)更新實(shí)驗(yàn)室的耗材庫(kù)存信息,方便實(shí)驗(yàn)室管理人員進(jìn)行庫(kù)存管理和統(tǒng)計(jì)。
通過耗材審核模塊,實(shí)驗(yàn)室可以實(shí)現(xiàn)對(duì)耗材采購(gòu)申請(qǐng)的規(guī)范化、集中化管理,提高審核效率,減少人工操作和錯(cuò)誤,確保實(shí)驗(yàn)室耗材的合理使用和供應(yīng)鏈管理的準(zhǔn)確性。
三、系統(tǒng)展示
四、核心代碼
4.1 查詢耗材品類
@ApiOperation(value = "查詢耗材品類")
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
public Result<IPage<AssetsType>> getByPage(@ModelAttribute AssetsType assetsType, @ModelAttribute PageVo page, @RequestParam(required = false) String natureType) {
QueryWrapper<AssetsType> qw = new QueryWrapper<AssetsType>();
if(StrUtil.isNotBlank(natureType)) {
if(natureType.equals("1")){
qw.eq("nature", "固定資產(chǎn)");
}else{
qw.eq("nature", "耗材");
}
}
if(!ZwzNullUtils.isNull(assetsType.getNature())) {
qw.eq("nature", assetsType.getNature());
}
if(!ZwzNullUtils.isNull(assetsType.getAssetName())) {
qw.like("asset_name", assetsType.getAssetName());
}
return new ResultUtil<IPage<AssetsType>>().setData(iAssetsTypeService.page(PageUtil.initMpPage(page),qw));
}
4.2 查詢資產(chǎn)出庫(kù)清單
@ApiOperation(value = "查詢資產(chǎn)出庫(kù)清單")
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
public Result<IPage<WarehouseOut>> getByPage(@ModelAttribute WarehouseOut warehouseOut, @ModelAttribute PageVo page){
QueryWrapper<WarehouseOut> qw = new QueryWrapper<WarehouseOut>();
if(!ZwzNullUtils.isNull(warehouseOut.getNature())) {
qw.eq("nature", warehouseOut.getNature());
}
if(!ZwzNullUtils.isNull(warehouseOut.getAssetName())) {
qw.like("asset_name", warehouseOut.getAssetName());
}
if(!ZwzNullUtils.isNull(warehouseOut.getRecipients())) {
qw.like("recipients", warehouseOut.getRecipients());
}
IPage<WarehouseOut> data = iWarehouseOutService.page(PageUtil.initMpPage(page),qw);
for (WarehouseOut wh : data.getRecords()) {
AssetsType assetsType = iAssetsTypeService.getById(wh.getAssetId());
double existnumber = Double.parseDouble(assetsType.getExistingNumber()) + Double.parseDouble(wh.getNumber());
wh.setExistNumber("" + existnumber);
}
return new ResultUtil<IPage<WarehouseOut>>().setData(data);
}
4.3 資產(chǎn)出庫(kù)
@ApiOperation(value = "資產(chǎn)出庫(kù)")
@RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST)
public Result<WarehouseOut> saveOrUpdate(WarehouseOut warehouseOut){
WarehouseOut oldWarehouseOut = iWarehouseOutService.getById(warehouseOut.getId());
double oldNumber = 0.0;
if(oldWarehouseOut != null){
oldNumber = Double.parseDouble(oldWarehouseOut.getNumber());
}
// outNumber 要出庫(kù)的數(shù)量
double outNumber = Double.parseDouble(warehouseOut.getNumber());
AssetsType oldAssetsType = iAssetsTypeService.getById(warehouseOut.getAssetId());
if(oldAssetsType != null){
// newNumber 出庫(kù)后還有的數(shù)量 = 倉(cāng)庫(kù)原本還有的數(shù)量 - 出庫(kù)單的出庫(kù)數(shù)量 + 原有出庫(kù)單的出庫(kù)數(shù)量
Double newNumber = Double.parseDouble(oldAssetsType.getExistingNumber()) - outNumber + oldNumber;
if(newNumber >= 0){
oldAssetsType.setExistingNumber(newNumber + "");
iAssetsTypeService.saveOrUpdate(oldAssetsType);
}else{
return ResultUtil.error("手慢啦!庫(kù)存不足!");
}
}
if(ZwzNullUtils.isNull(warehouseOut.getId())) {
warehouseOut.setAuditStatus(0);
warehouseOut.setAuditTime("");
}
if(iWarehouseOutService.saveOrUpdate(warehouseOut)){
return new ResultUtil<WarehouseOut>().setData(warehouseOut);
}
return ResultUtil.error();
}
4.4 查詢?nèi)霂?kù)單
@ApiOperation(value = "查詢資產(chǎn)入庫(kù)清單")
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
public Result<IPage<Warehousing>> getByPage(@ModelAttribute Warehousing warehousing, @ModelAttribute PageVo page){
QueryWrapper<Warehousing> qw = new QueryWrapper<Warehousing>();
if(!ZwzNullUtils.isNull(warehousing.getNature())) {
qw.eq("nature", warehousing.getNature());
}
if(!ZwzNullUtils.isNull(warehousing.getAssetName())) {
qw.like("asset_name", warehousing.getAssetName());
}
if(!ZwzNullUtils.isNull(warehousing.getInvoice())) {
qw.like("invoice", warehousing.getInvoice());
}
return new ResultUtil<IPage<Warehousing>>().setData(iWarehousingService.page(PageUtil.initMpPage(page),qw));
}
4.5 資產(chǎn)入庫(kù)
@ApiOperation(value = "資產(chǎn)入庫(kù)")
@RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST)
public Result<Warehousing> insertOrUpdate(Warehousing warehousing){
Warehousing oldWarehousing = iWarehousingService.getById(warehousing.getId());
double oldNumber = 0.0;
if(oldWarehousing != null){
oldNumber = oldWarehousing.getNumber() == null ? 0.0 : Double.parseDouble(oldWarehousing.getNumber());
}
// 入庫(kù),更新庫(kù)存
AssetsType assetsType = iAssetsTypeServicel.getById(warehousing.getAssetId());
if(assetsType != null){
// number = 現(xiàn)在倉(cāng)庫(kù)總數(shù)量 + 該入庫(kù)單現(xiàn)增加數(shù)量 - 該入庫(kù)單原有增加數(shù)量
double number = Double.parseDouble(assetsType.getNumber()) + Double.parseDouble(warehousing.getNumber()) - oldNumber;
assetsType.setNumber(number + "");
assetsType.setTotalPrice((Double.parseDouble(assetsType.getUnitPrice()) * number) + "");
// existNumber = 現(xiàn)在倉(cāng)庫(kù)存在數(shù)量 + 該入庫(kù)單現(xiàn)增加數(shù)量 - 該入庫(kù)單原有增加數(shù)量
double existNumber = Double.parseDouble(assetsType.getExistingNumber()) + Double.parseDouble(warehousing.getNumber()) - oldNumber;
if(existNumber < 0) {
return ResultUtil.error("入庫(kù)數(shù)量大于已出庫(kù)數(shù)量!");
}
assetsType.setExistingNumber(existNumber + "");
iAssetsTypeServicel.saveOrUpdate(assetsType);
}
if(iWarehousingService.saveOrUpdate(warehousing)){
return new ResultUtil<Warehousing>().setData(warehousing);
}
return ResultUtil.error();
}
五、免責(zé)說明
- 本項(xiàng)目?jī)H供個(gè)人學(xué)習(xí)使用,商用授權(quán)請(qǐng)聯(lián)系博主,否則后果自負(fù)。
- 博主擁有本軟件構(gòu)建后的應(yīng)用系統(tǒng)全部?jī)?nèi)容所有權(quán)及獨(dú)立的知識(shí)產(chǎn)權(quán),擁有最終解釋權(quán)。
- 如有問題,歡迎在倉(cāng)庫(kù) Issue 留言,看到后會(huì)第一時(shí)間回復(fù),相關(guān)意見會(huì)酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統(tǒng)代碼或使用本系統(tǒng)的用戶,必須同意以下內(nèi)容,否則請(qǐng)勿下載!文章來源:http://www.zghlxwxcb.cn/news/detail-773918.html
- 出于自愿而使用/開發(fā)本軟件,了解使用本軟件的風(fēng)險(xiǎn),且同意自己承擔(dān)使用本軟件的風(fēng)險(xiǎn)。
- 利用本軟件構(gòu)建的網(wǎng)站的任何信息內(nèi)容以及導(dǎo)致的任何版權(quán)糾紛和法律爭(zhēng)議及后果和博主無關(guān),博主對(duì)此不承擔(dān)任何責(zé)任。
- 在任何情況下,對(duì)于因使用或無法使用本軟件而導(dǎo)致的任何難以合理預(yù)估的損失(包括但不僅限于商業(yè)利潤(rùn)損失、業(yè)務(wù)中斷與業(yè)務(wù)信息丟失),博主概不承擔(dān)任何責(zé)任。
- 必須了解使用本軟件的風(fēng)險(xiǎn),博主不承諾提供一對(duì)一的技術(shù)支持、使用擔(dān)保,也不承擔(dān)任何因本軟件而產(chǎn)生的難以預(yù)料的問題的相關(guān)責(zé)任。
文章來源地址http://www.zghlxwxcb.cn/news/detail-773918.html
到了這里,關(guān)于【開源】基于Vue.js的實(shí)驗(yàn)室耗材管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!