工器具管理(基于若依)

文章目錄

  • 前言
  • 一、工器具管理
    • 項目總覽
  • 二、入庫功能
    • 1. 前端
      • 1.1 界面展示
      • 1.2 具體操作實現
      • 1.3 js文件
    • 2. 后端
      • 2.1 工器具信息回顯
      • 2.2 工器具入庫
  • 三、領用功能
    • 1. 前端
      • 1.1 界面展示
      • 1.2 具體實現操作
      • 1.3 js文件
    • 2. 后端
      • 2.1 工器具信息回顯
      • 2.2 工器具領用
  • 遇到的問題
    • 1. 同一頁面展示不同彈框
    • 2. 動態獲取數據下拉框信息回顯
    • 3. 循環依賴
    • 4. 數據庫查詢結果為空


前言

增刪改查相關操作代碼由若依框架生成,這部分主要介紹入庫和領用功能,可能業務邏輯沒那么清晰,主要是實現相關代碼,以及在學習的過程中,自己遇到一些問題。(僅個人學習記錄)


一、工器具管理

項目總覽

在這部分,目前主要編寫了包括工器具信息展示,以及工器具的入庫和領用功能。入庫和領用兩個按鈕是對原來的修改和刪除按鈕進行了修改,完成入庫和領用操作后,入庫記錄和領用記錄部分也會發生變化(其實就是涉及到對入庫表和領用表插入)。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二、入庫功能

在這里插入圖片描述

1. 前端

1.1 界面展示

1.1.1 首先是要定義“入庫”這個按鈕,代碼如下:

 <el-buttonsize="mini"type="text"@click="handleStorage(scope.row)" v-hasPermi="['toolManagement:tool:storage']"  <!--這個是訪問權限,要和后端匹配-->>入庫</el-button>

1.1.2 點擊按鈕后,彈窗按鈕展示。(因為這個頁面有幾個不同的彈窗–新增和修改、入庫以及領用,所以還需要對參數:visible.sync="libraryDialogVisible進行設置)

<!-- 入庫記錄對話框 --><el-dialog :title="title" :visible.sync="libraryDialogVisible" width="500px" append-to-body><el-form ref="form" :model="form" :rules="rules" label-width="80px"><el-form-item label="工器型號" prop="toolModel"><el-input v-model="form.toolModel" placeholder="請輸入工器型號" /></el-form-item><el-form-item label="工器類型" prop="toolType"><el-input v-model="form.toolType" placeholder="請輸入工器類型" /></el-form-item><el-form-item label="工器名稱" prop="toolName"><el-input v-model="form.toolName" placeholder="請輸入工器名稱" /></el-form-item><el-form-item label="入庫數" prop="stockInQuantity"><el-input-number :min="0" v-model="form.stockInQuantity" placeholder="請輸入入庫數" /></el-form-item><el-form-item label="入庫時間" prop="warehousingTime"><el-date-picker clearablev-model="form.warehousingTime"type="date"value-format="yyyy-MM-dd"placeholder="請選擇入庫時間"></el-date-picker></el-form-item><el-form-item label="備注信息" prop="remarkInformation"><el-input v-model="form.remarkInformation" placeholder="請輸入備注信息" /></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm2">確 定</el-button><el-button @click="cancel2">取 消</el-button></div></el-dialog>

1.2 具體操作實現

實現入庫按鈕操作handleStorage,并且導入js文件中的getRecord方法,在方法中提供訪問url以及訪問方式,在后端實現點擊“入庫”按鈕后的彈窗中信息回顯
實現入庫提交按鈕submitForm2,并且導入storage方法,在后端實現插入入庫信息到入庫記錄表中
在前面兩個方法中都需要把libraryDialogVisible設置為true,代表顯示彈框
點擊取消按鈕,需要把libraryDialogVisible設置為false

data() {return {...// 是否顯示彈出層open: false,     //用于修改和新增的彈框libraryDialogVisible:false,   //用于入庫彈框requisitionVisible:false,    //用于領用彈框....
}
//入庫按鈕操作handleStorage(row) {this.reset();this.libraryDialogVisible=true;const toolManagementId = row.toolManagementId || this.idsgetRecord(toolManagementId).then(response => {this.form = response.data;this.libraryDialogVisible = true;this.title = "入庫";});}/** 入庫提交按鈕 */submitForm2() {this.$refs["form"].validate(valid => {if (valid) {storage(this.form).then(response => {this.$modal.msgSuccess("入庫成功");this.libraryDialogVisible = false;this.getList();});}});},
// 取消按鈕cancel2() {this.libraryDialogVisible = false;this.reset();},

1.3 js文件

在對應的js文件中寫個getRecord方法和storage方法

//獲取工器具記錄信息
export function getRecord(toolManagementId) {return request({url: '/toolManagement/tool/storage/' + toolManagementId,method: 'get'})
}//工器具入庫
export function storage(data) {return request({url: '/toolManagement/tool/storage',method: 'put',data: data})
}

2. 后端

2.1 工器具信息回顯

2.1.1 Controller層編寫getStorageInfo方法實現信息回顯,根據工器具id查詢相關工器具信息,設置訪問方式GetMapping,url以及訪問權限一定要和前端的一樣。

/*** 獲取工器具信息(入庫)*/
@PreAuthorize("@ss.hasPermi('toolManagement:tool:queryId')")
@GetMapping(value = "/storage/{toolManagementId}")
public AjaxResult getStorageInfo(@PathVariable("toolManagementId") Long toolManagementId)
{StorageVO storageVO = sysToolService.getStorageInfo(toolManagementId);return success(storageVO);
}

2.2.2 具體的業務邏輯service-serviceImpl-mapper-mapper.xml,這部分用于信息回顯,

  /**service* 根據id獲得入庫信息* @param toolManagementId* @return*/StorageVO getStorageInfo(Long toolManagementId);//serviceImp:@Overridepublic StorageVO getStorageInfo(Long toolManagementId) {return sysToolMapper.getStorageInfo(toolManagementId);}//mapper
StorageVO getStorageInfo(Long id);
 <select id="getStorageInfo" parameterType="Long" resultMap="BaseResultMap">select tool_model,tool_type,tool_name  from sys_tool where tool_management_id=#{id}</select>

2.2 工器具入庫

2.2.1 前端填寫好信息,點擊提交按鈕會有入庫記錄。在Controller層編寫方法,StorageDTO根據前端頁面展示的信息寫的一個實體類

 /*** 工器具入庫* @param storageDTO* @return*/@PreAuthorize("@ss.hasPermi('toolManagement:tool:storage')")@Log(title = "工器具入庫", businessType = BusinessType.UPDATE)@PutMapping("/storage")public AjaxResult storage(@RequestBody StorageDTO storageDTO) {sysToolService.storage(storageDTO);return success();}

2.2.2 具體的業務邏輯service-serviceImpl-mapper-mapper.xml,主要業務邏輯包括工器具庫存的增加,工器具入庫表記錄插入數據

/**service* 工器具入庫以及修改庫存信息* @param storageDTO*/void storage(StorageDTO storageDTO);//serviceImpl
//在這里涉及到兩張表的操作要加入事務處理@Override@Transactionalpublic void storage(StorageDTO storageDTO) {int num = storageDTO.getStockInQuantity();String toolModel = storageDTO.getToolModel();//查詢工器具已有庫存數int stock = sysToolMapper.selectSysToolNumById(toolModel);stock = num+stock;//根據工器具型號工器具表sys_tool修改庫存sysToolMapper.updateSysToolByMode(stock,toolModel);//在sys_warehousing_record入庫表中添加記錄WarehousingRecord warehousingRecord = new WarehousingRecord();BeanUtils.copyProperties(storageDTO,warehousingRecord);warehousingRecord.setStockInQuantity(Long.valueOf(num));warehousingRecord.setRecommend(0L);warehousingRecordService.insertWarehousingRecord(warehousingRecord);}

mapper文件

 /*** 查詢表中庫存信息* @param toolModel* @return*/@Select("select stock from sys_tool where tool_model=#{toolModel}")int selectSysToolNumById(String toolModel);/*** 根據工器具類型修改庫存數量* @param num* @param toolModel*/@Update("update sys_tool set stock=#{num} where tool_model like #{toolModel}")void updateSysToolByMode(@Param("num") int num, @Param("toolModel") String toolModel);/*** 新增入庫記錄(若依代碼生成)* @param warehousingRecord 入庫記錄*/public int insertWarehousingRecord(WarehousingRecord warehousingRecord);

三、領用功能

這部分和入庫不同的點在于,領用人是一個下拉框,要展示的是一個列表信息,而且領用人的信息存于用戶表中,所以要怎么在后端定義一個實體類用于返回給前端數據是我之前不知道怎么搞的,而且這個下拉框怎么去遍歷列表,需要哪些信息也是要考慮的。在實現這個功能的時候,我還出現了循環依賴問題(這個最后給出解決辦法)
在這里插入圖片描述

1. 前端

1.1 界面展示

1.1.1 定義“領用”這個按鈕,代碼如下:

 <el-buttonsize="mini"type="text"@click="handlerequisition(scope.row)"v-hasPermi="['toolManagement:tool:requisition']">領用</el-button>

1.1.2 點擊按鈕后,彈窗按鈕展示。(重新設置了:visible.sync="requisitionVisible,由于定義了一個“領用人”下拉框信息回顯,在前端代碼做了修改,后端響應給前端的數據也與之對應)

<!-- 領用記錄對話框 --><el-dialog :title="title" :visible.sync="requisitionVisible" width="500px" append-to-body><el-form ref="form" :model="form" :rules="rules" label-width="80px"><el-form-item label="工器型號" prop="toolModel"><el-input v-model="form.toolModel" placeholder="請輸入工器型號" /></el-form-item><el-form-item label="工器類型" prop="toolType"><el-input v-model="form.toolType" placeholder="請輸入工器類型" /></el-form-item><el-form-item label="工器名稱" prop="toolName"><el-input v-model="form.toolName" placeholder="請輸入工器名稱" /></el-form-item><el-form-item label="數量" prop="number"><el-input-number :min="0" v-model="form.number" placeholder="請輸入數量" /></el-form-item><el-form-item label="領用時間" prop="collectionTime"><el-date-picker clearablev-model="form.collectionTime"type="date"value-format="yyyy-MM-dd"placeholder="請選擇領用時間"></el-date-picker></el-form-item><el-form-item label="領用人" prop="receiver"><el-select v-model="form.receiver" placeholder="請選擇領用人" ><el-optionv-for="item in form.users"  <!--這個users對應的后端返回的RequisitionVO中List<UserDTO> users -->:key="item.userId"    <!--users.userId和users.userName是從用戶表中查到的信息,用于信息回顯 -->:label="item.userName":value="item.userName"></el-option></el-select></el-form-item><el-form-item label="備注信息" prop="remarkInformation"><el-input v-model="form.remarkInformation" placeholder="請輸入備注信息" /></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm3">確 定</el-button><el-button @click="cancel3">取 消</el-button></div></el-dialog>

1.2 具體實現操作

實現領用按鈕操作handlerequisition,并且導入js文件中的getrequisitionInfo方法,實現點擊“領用”按鈕后的彈窗中信息回顯。
實現領用提交按鈕操作,主要是把填入的信息插入到領用表中,在前端定義requisition方法提供接口。
領用取消按鈕要把requisitionVisible置為false。

/** 領用按鈕操作 */handlerequisition(row) {this.reset();this.requisitionVisible=true;const toolManagementId = row.toolManagementId || this.idsgetrequisitionInfo(toolManagementId).then(response => {this.form = response.data;this.requisitionVisible = true;   //開啟彈窗this.title = "領用";});},/** 領用提交按鈕 */submitForm3() {this.$refs["form"].validate(valid => {if (valid) {requisition(this.form).then(response => {this.$modal.msgSuccess("領用成功");this.requisitionVisible = false;  //點擊提交按鈕后關閉彈窗this.getList();});}});},// 領用取消按鈕cancel3() {this.requisitionVisible = false;   //點擊取消按鈕關閉彈窗this.reset();},

1.3 js文件

在對應的js文件中寫個getrequisitionInfo方法和requisition方法

//獲取工器具領用信息
export function getrequisitionInfo(toolManagementId) {return request({url: '/toolManagement/tool/requisition/' + toolManagementId,method: 'get'})
}
//工器具領用
export function requisition(data) {return request({url: '/toolManagement/tool/requisition',method: 'put',data: data})
}

2. 后端

2.1 工器具信息回顯

2.1.1 Controller層編寫getrequisitionInfo方法實現信息回顯,根據工器具id查詢相關工器具信息,此外還要從用戶表中查詢所有用戶信息,用于領用人下拉框列表的信息回顯。

  /*** 獲取工器具信息(領用)*/@PreAuthorize("@ss.hasPermi('toolManagement:tool:queryrequisition')")@GetMapping(value = "/requisition/{toolManagementId}")public AjaxResult getrequisitionInfo(@PathVariable("toolManagementId") Long toolManagementId){RequisitionVO requisitionVO = sysToolService.getrequisitionInfo(toolManagementId);return success(requisitionVO);}

2.2.2 具體的業務邏輯service-serviceImpl-mapper-mapper.xml,這部分用于信息回顯,

    //獲取領用信息RequisitionVO getrequisitionInfo(Long toolManagementId);
//serviceImp:/*** 領用信息回顯* @param toolManagementId* @return*/@Overridepublic RequisitionVO getrequisitionInfo(Long toolManagementId) {
//查詢所有用戶信息,定義了一個UserDTO用于保存返回給前端信息,包括用戶id(主要是在前端遍歷的時候使用)和用戶賬號    List<UserDTO> userDTOS = userService.selectUserName(); 
//獲取工器具的詳細信息,這和入庫中信息回顯是一樣的 StorageVO storageInfo = sysToolMapper.getStorageInfo(toolManagementId);
//RequisitionVO用于返回給前端所需的數據RequisitionVO requisitionVO = new RequisitionVO();BeanUtils.copyProperties(storageInfo,requisitionVO);requisitionVO.setUsers(userDTOS);return requisitionVO;}  
//mapper/*** 查詢所有用戶名稱* @return*/List<UserDTO> selectUserName();
	<select id="selectUserName" resultMap="UserDTOResult">select user_id, user_name from sys_user</select>

2.2 工器具領用

1、 前端填寫好信息,點擊提交按鈕會有入庫記錄。在Controller層編寫requisition方法,RequisitionDTO根據前端頁面展示的信息寫的一個實體類

public class RequisitionDTO {/** 工器型號 */private String toolModel;/** 工器類型 */private String toolType;/** 工器名稱 */private String toolName;/** 數量 */private Integer number;/** 領用時間 */@JsonFormat(pattern = "yyyy-MM-dd")private Date collectionTime;/** 領用人 */private String receiver;/** 備注信息 */private String remarkInformation;
}/*** 工器具領用* @param requisitionDTO* @return*/@PreAuthorize("@ss.hasPermi('toolManagement:tool:requisition')")@Log(title = "工器具領用", businessType = BusinessType.UPDATE)@PutMapping("/requisition")public AjaxResult requisition(@RequestBody RequisitionDTO requisitionDTO) {//工器具領用sysToolService.requisition(requisitionDTO);return success();}

2、具體的業務邏輯service-serviceImpl-mapper-mapper.xml,主要業務邏輯包括工器具庫存的減少,工器具領用表記錄插入數據

    @Transactional@Overridepublic void requisition(RequisitionDTO requisitionDTO) {int num = requisitionDTO.getNumber();String toolModel = requisitionDTO.getToolModel();//查詢工器具已有庫存數int stock = sysToolMapper.selectSysToolNumById(toolModel);//判斷庫存數是否不足if(stock<=0){throw new RuntimeException("庫存不足");}stock = stock-num;//根據工器具型號工器具表sys_tool修改庫存sysToolMapper.updateSysToolByMode(stock,toolModel);//在sys_requisition_record領用表中添加記錄RequisitionRecord requisitionRecord = new RequisitionRecord();BeanUtils.copyProperties(requisitionDTO,requisitionRecord);requisitionRecord.setNumber(Long.valueOf(num));requisitionRecord.setRecommend(0L);//若依框架代碼生成requisitionRecordService.insertRequisitionRecord(requisitionRecord);}

遇到的問題

1. 同一頁面展示不同彈框

因為沒有接觸過前端,所以一開始不知道怎么處理,這里簡單的描述一下吧,前面的前端代碼有展示。
1、首先就是定義不同的彈框,<el-dialog …/>,設置不同的:visible.sync=xxx
2、在export default {data(){xxx:false }}定義好數據
3、在具體的操作中設置,比如我點擊入庫按鈕有彈窗,那么就要把xxx設置為true,點擊取消按鈕,彈框消失就要把它設置為false。

2. 動態獲取數據下拉框信息回顯

從后端數據庫獲取的信息全部用下拉框展示。在這部分,我需要回顯的信息設置兩個表的操作,所以我定義了一個VO實體類,具體如下:

public class RequisitionVO {//工器型號private String toolModel;/** 工器類型 */private String toolType;/** 工器名稱 */private String toolName;//領用人//這部分是用于下拉框信息回顯的數據,用的是一個列表private List<UserDTO> users;
}//用戶信息
public class UserDTO {//用戶idprivate Long userId;//用戶賬號private String userName;
}

雖然我只需要下拉框展示用戶賬號,但是在這里還需要有個id與之對應,用于前端代碼v-for。

 <el-form-item label="領用人" prop="receiver"><el-select v-model="form.receiver" placeholder="請選擇領用人" ><el-optionv-for="item in form.users":key="item.userId":label="item.userName":value="item.userName"></el-option></el-select></el-form-item>

3. 循環依賴

我用的若依系統,直接用的系統原有的用戶表,因為領用需要獲取領用人信息,剛開始操作的時候就直接在ruo-system中的文件夾中使用了,而我之前在自己的模塊中導入了ruo-system依賴,又在ruo-system導入了ruoyi-toolManagement中的類,結果造成了循環依賴的問題,具體解決辦法參考以下鏈接https://blog.csdn.net/m0_53979927/article/details/132954989
在這里插入圖片描述

4. 數據庫查詢結果為空

Mapper接口方法傳兩個參數要加Param注解,以及返回多個結果要用resultMap。
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11511.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pat乙1033-舊鍵盤打字

1測試點2&#xff1a; 輸入的字符串如果為空&#xff0c;要用getline(cin,s)&#xff0c;而不是cin>>s&#xff0c;否則程序做不了 2題目說的如果上鍵壞了那大寫字母打印不了&#xff0c;不是大寫轉小寫打印啦&#xff0c;認真讀題 3兩個for循環長這樣&#xff0c;break…

基于springboot+vue的自習室管理和預約系統(全套)

一、系統架構 前端&#xff1a;vue | element-ui | html 后端&#xff1a;springboot | mybatis-plus 環境&#xff1a;jdk1.8 | mysql | maven | nodejs 二、代碼及數據庫 三、功能介紹 01. web端-首頁1 02. web端-首頁2 03. web端-注冊 04. web端-登錄 05. w…

牛客Linux高并發服務器開發學習第六天

目錄相關函數 學習進度&#xff1a; Linux系統編程入門 06&#xff1a;59&#xff1a;42

Apollo9.0 Control模塊算法源碼學習

參考資料 Apollo控制算法_嗶哩嗶哩_bilibili

Python自動化測試 | 如何使用Robot Framework進行自動化測試?

你還在手動測試&#xff1f;不妨了解一下更高效、準確且簡單的測試方法——使用Python的Robot Framework進行自動化測試。 什么是Robot Framework&#xff1f; Robot Framework是一款開源的Python自動化測試框架&#xff0c;它基于關鍵字驅動的思想&#xff0c;具有易讀、易擴…

每日一題 城市群的數量

題目解析 城市群數量_牛客題霸_牛客網 當解決這個問題時&#xff0c;首先需要理解題目要求。題目中給出了一個城市之間的鄰接矩陣&#xff0c;矩陣中的元素表示城市之間是否直接相連。如果兩個城市直接相連&#xff0c;或者通過其他城市間接相連&#xff0c;它們就屬于同一個城…

算法學習筆記(匈牙利算法)

匈牙利算法可以求解二分圖的最大匹配問題&#xff08;二分圖&#xff1a;如果無向圖 G ( V , E ) G (V, E) G(V,E)的所有點可以分為兩個集合 V 1 、 V 2 V_1、V_2 V1?、V2?&#xff0c;所有的邊都在 V 1 V_1 V1?和 V 2 V_2 V2?之間&#xff0c;而 V 1 V_1 V1?或 V 2 V_2…

深入理解Python的類,實例和type函數

問題起源&#xff1a; class t():pass s1 t() s2 type("Student2",(),{}) isinstance(s1, type), isinstance(s2, type)為什么第一個是false&#xff0c;第二個是true呢 根因定位&#xff1a; 在Python中&#xff0c;一切皆對象&#xff0c;類是對象&#xff0c…

nacos在沒有指定數據源的情況下默認使用什么數據庫?

在沒有特別指定數據源的情況下&#xff0c;Nacos 默認使用內嵌的數據庫 Derby 來存儲其數據。Derby 是一個輕量級的、基于 Java 的數據庫管理系統&#xff0c;適合于開發和測試環境&#xff0c;因為它簡單易部署且無需額外的數據庫服務器。然而&#xff0c;對于生產環境&#x…

使用ORM快速獲取業務對象列表

通常在實際開發中&#xff0c;業務對象的信息是需要來自多個數據表的。 我們如果想要獲取這個業務對象&#xff0c;就要先查詢數據表&#xff0c;再把查詢到的數據依次循環&#xff0c;組合轉換封裝成業務要使用的對象類型列表。 如果使用了ORM&#xff0c;那么這個過程就可以簡…

Stability AI 推出 Stable Artisan,終于可以在Discord上使用Stable Diffusion了!

Stable Diffusion 社區最常見的要求之一是能夠直接在 Discord 上使用他們的模型。近期&#xff0c;Stability AI 推出 Stable Artisan&#xff0c;這個需求終于被實現了。 Stable Artisan 支持在 Discord 上生成媒體&#xff0c;由 Stability AI 的尖端圖像和視頻模型 Stable D…

基于Springboot的實習生管理系統(有報告)。Javaee項目,springboot項目。

演示視頻&#xff1a; 基于Springboot的實習生管理系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系結構&a…

mysql group by使用方法實例講解

MySQL中GROUP BY語句用于對某個或某些字段查詢分組&#xff0c;并返回重復記錄的第一條&#xff0c;本文章通過實例向大家介紹mysql group by使用方法和需要注意的地方&#xff0c;感興趣的朋友可以參考一下。 現在有這樣一個數據表book idfirst_namelast_namecityage1JasonM…

知乎知+廣告推廣該如何做?怎么收費?

知乎作為一個匯聚高質量用戶群體的知識分享平臺&#xff0c;成為了眾多品牌和產品推廣的優選之地。特別是知乎的“知”廣告推廣服務&#xff0c;以其精準定向、內容原生的特點&#xff0c;深受廣告主青睞。 一、知乎知廣告推廣基礎 1. 什么是知乎知&#xff1f; 知是知乎官方…

C++初階學習第七彈——探索STL奧秘(二)——string的模擬實現

標準庫中的string&#xff1a;C初階學習第六彈——string&#xff08;1&#xff09;——標準庫中的string類-CSDN博客 前言&#xff1a; 在前面我們已經學習了如何使用標準庫中的string類&#xff0c;但作為一個合格的程序員&#xff0c;我們不僅要會用&#xff0c;還要知道如…

C++類和對象下——實現日期類

前言 在學習了類和對象的六大成員函數后&#xff0c;為了鞏固我們學習的知識可以手寫一個日期類來幫助我們理解類和對象&#xff0c;加深對于其的了解。 默認函數 構造函數 既然是寫類和對象&#xff0c;我們首先就要定義一個類&#xff0c;然后根據實際需要來加入類的數據與函…

AI編程工具為什么選github copilot?

Github Copilot 是一個奇跡 它的競爭對手&#xff08;Amazon, Google, Meta, 騰訊&#xff09;都是免費的&#xff0c;但每月10-20美元的Github Copilot市場占有率最高。 1、2021年6月上線&#xff0c;比ChatGPT早近一年半 2、GitHub統計&#xff1a; 88%的用戶獲得效率提升平…

element ui的確認提示框文字樣式修改

修改確認提示框文字樣式修改&#xff0c;使用message屬性修改&#xff1a; 例&#xff1a; js代碼&#xff1a; this.$msgbox({title: 確定要刪除嗎?,message: this.$createElement(p, null, [this.$createElement(span, { style: color: red }, 該素材一旦刪除&#xff0c;…

Spring Boot日志

目錄 一、日志概述 1、為什么要學習日志&#xff1f; 2、日志的用途 &#xff08;1&#xff09;系統監控 &#xff08;2&#xff09;數據采集 &#xff08;3&#xff09;日志審計 二、日志使用 1、打印日志 &#xff08;1&#xff09;在程序中得到日志對象 &#xf…

QNX SLM介紹

QNX SLM SLM是Qnx中用來加載Application的組件&#xff0c;它可以監控Application行為&#xff08;比如異常退出時重新Application拉起&#xff09;、控制Application間的啟動時序。 QNX的SLM與Android RC文件類似。 下面摘自QNX官網介紹 System launch and monitor: launch c…