公司實習 2022/12/20 ——2023/1/19 追溯系統(tǒng)訂單導入、導出 ,訂單登錄
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、雅安服務器托管、營銷軟件、網(wǎng)站建設、納溪網(wǎng)站維護、網(wǎng)站推廣。主要技術棧: SpringBatch
一、環(huán)境配置 1. jdk自由切換用到了mybatis的逆向插件,jdk1.8要求版本在1.8.0.60以上版本 ,之前D盤下的不滿足,所以重新裝了放在C盤,以后裝jdk11也可以效仿
切換只需要改JAVA_HOME即可
https://blog.csdn.net/m0_71777195/article/details/127933674
2.導入MySQL數(shù)據(jù)庫時報錯1067 – Invalid default value for ‘字段名2023/1/16 今天把公司的阿里云數(shù)據(jù)庫copy到本地 本地用的mysql5.5.15 但是公司用的是5.7.21
執(zhí)行sql文件時報錯 原因:mysql5.7對sql_mode的設置比mysql5.6更嚴格了
一直對驅(qū)動有個疑惑:
mysql版本5.x、8.x 和驅(qū)動(mysql-connector-java)版本 5.x、8.x 不是一個東西
驅(qū)動也就是jar包、 之前學習jdbc 沒用maven的時候 需要自己引入 用了maven 只需要添加依賴即可
MySQL Connector/J 8.0版本驅(qū)動向下兼容之前的5.5+版本MySQL 但是需要Driver Class換成: com.mysql.cj.jdbc.Driver 同時需要指定時區(qū)
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的區(qū)別https://blog.csdn.net/a907691592/article/details/96876030
總結(jié): 目前用的較多mysql是5.x版本, 驅(qū)動可以用5.x和8.x 但是推薦用8.x版本。
公司用的驅(qū)動如下圖 mysql:5.7.21
解決 : mysql5.5保留(3306) 再裝一個5.7.40 (端口是3307
本地同時運行5.5和5.7的mysql的服務
https://blog.csdn.net/goog_man/article/details/108175281
3. Maven倉庫有些jar包不能maven直接導入, 用的同事打包過來的maven倉庫 兩步!
3.1 maven文件下復制一份setting.xml 修改倉庫地址 3.2 idea中設置 4. gitclone、 (不需要初始化本地庫VCS -->create Git Respository)
在自己的分支上開發(fā)、 由經(jīng)理合并
5. 中間件RabbitMQ 、zookeeper、Redis
6. TOMCAT查看占用的端口
一、在dos窗口中輸入指令:netstat -ano | findstr 8080,其中8080是指你被占用的端口號,然后會顯示出現(xiàn)在占用該端口號的pid。
二、輸入 taskkill /f /pid 52068,關閉該進程即可
2.1c_config 充當配置文件了
2.2c_message 注意 {} []
去MessageConstant里面加常量 然后去Cmessage加記錄
2.3 Ifsales_import_data 中間表
[]沒有特殊的作用 {}中的值會動態(tài)的傳進去
2.4 m_customer根據(jù)客戶編號去客戶主表查詢
2.5m_sales_channel 銷售組織
2.6m_customer_shipto 客戶交貨地主表
2.7m_product 商品主表
2.8m_sales_channel_product 銷售組織商品主表 根據(jù)商品編號,銷售組織,從銷售組織商品主表獲取商品組ID
2.9edi_config 、edi_log_detail 等
2.10 g_sales_order和g_sales_order_detail 最主要的業(yè)務表
因為這個功能是追加的 需要修改表結(jié)構(gòu)、實體類、example、mapper.xml
三、核心業(yè)務//拿到文件夾
File fileFolder = new File(localRealFilePath);
String[] list = fileFolder.list();
boolean fileExist = false;//用于判斷文件是否存在
//多個文件循環(huán)處理
for (String s : list) {
//以9451開頭的文件
if(s.indexOf(FileName)==0){
File file = new File(localRealFilePath + File.separator + s);
fileExist = true;
ListcsvList = CSVUtils.readSalesImportDataCSV(file);
if (csvList != null && csvList.size() >0) {
for (IfSalesImportData ifSalesImportData : csvList) {
ifSalesImportDataDAO.insert(ifSalesImportData);
}
}
//備份 9450+“/bak/SalesOrderImport/” realFile方法會在文件名上給你加時間戳 并且remove走原文件
String bakPath = localFilePath + File.separator + "bak" + File.separator + path;
FileUtils.realFile(file, bakPath);
}
}
//說明沒有以9451開頭的文件
if (fileExist == false){
throw new RuntimeException("追溯系統(tǒng)訂單導入文件不存在");
}
需要注意的函數(shù):(把以下函數(shù)串起來 就是整個功能)
File.separator
fileFolder.list()
s.indexOf(FileName)==0
public static List
importCsvUTF8(fileInputStream)
dataList.get(i).replaceAll("\"","").split(",")
strToDateForIfSalesImportData(str[1]) 注意: .parse()中引入的日期參數(shù)格式必須與調(diào)用該方法的SimpleDateFormat對象封裝的格式一致,若不一致會報錯。
FileUtils.realFile(file, bakPath);
File.remove 注意 返回值是布爾
2.往訂單表和訂單詳細表中插入數(shù)據(jù) 麻煩之處:接口訂單導入主表(中間表)外部訂單編號相同的行 和訂單主表多對一 ,和訂單詳細主 一對一
處理過程:首先: 查詢中間表接口狀態(tài)為空的外部訂單編號(去重) List
然后: 遍歷這個集合(遍歷每個外部訂單編號)
{
其中: 每次循環(huán) 檢查(見下文) 🙋1、插入訂單主表一條數(shù)據(jù) 2、插入訂單詳情表多條數(shù)據(jù)
插的過程中數(shù)據(jù)來源:去別的表查、中間表、現(xiàn)生成(例如銷售訂單編號)
結(jié)束: 🙋1. 處理成功: 修改中間表Flg、處理時間 ?2.處理失敗(不是異常) 修改中間表Flg、錯誤原因、處理時間
}
繼續(xù)下一個外部訂單編號的循環(huán)
............................
所有中間表中的數(shù)據(jù)處理完畢后 1.回寫edi配置表 2. 處理結(jié)果放到消息隊列里面
因為有些數(shù)據(jù)需要去別的表插,為防止空指針異常等問題 做出8個檢查 對于一個外部訂單編號只檢查一次
檢查1. [外部訂單編號] 不能為空
檢查2. [外部訂單編號] 在[訂單主表]的外部訂單編號中是否存在
OptionalgSalesOrderOptional =
gSalesOrderList.stream().filter(x ->s.equals(x.getExtSalesOrderNo())).findFirst();
if(gSalesOrderOptional.isPresent()){
// [外部訂單編號] 在訂單主表的外部訂單編號中存在
errorList.add(MessageConstant.EIF001_0021,s);
}
。。。。。。。。
檢查完畢 :若errorList.isEmpty()為true 插入 執(zhí)行2中的 🙋
若為false 則“ 對這個外部訂單編號的所有行 執(zhí)行出錯處理,跳過這個外部訂單編號,繼續(xù)循環(huán)” 執(zhí)行2中的?
4. 異常沒有用全局異常處理 而是一個大的try-catch
看我的另一篇文章
https://blog.csdn.net/weiyuhaodashabi/article/details/128351833
5. 導出File csvFile = CSVUtils.createCSVFile(csvHeader, datalist, localRealFilePath, fileName);
該方法的四個參數(shù) csv的標題行、數(shù)據(jù)行、文件的地址、文件名(不帶.csv
File.createNewFile(); (是會生成文件的
未改動 直接拿來用的https://blog.csdn.net/lfy609225258/article/details/89519712
6. 執(zhí)行 6.1 前端手動執(zhí)行6.2 定時任務
有空對比一下 crm項目 MultipartFile file的導入導出
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當前標題:fortune項目-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article16/ddesgg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、App設計、虛擬主機、服務器托管、網(wǎng)頁設計公司、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)