成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

fortune項目-創(chuàng)新互聯(lián)

公司實習 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. git

clone、 (不需要初始化本地庫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è)務
    • 在本地路徑檢索文件名開始的文件 多個文件 循環(huán)插入中間表 文件備份

//拿到文件夾
            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 ListreadSalesImportDataCSV(File file)

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)為空的外部訂單編號(去重) ListextSalesOrderNoList = ifSalesImportDataDAO.selectExtSalesOrderNo();

  • 然后: 遍歷這個集合(遍歷每個外部訂單編號)

{

  • 其中: 每次循環(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é)果放到消息隊列里面

3. 檢查

因為有些數(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)

搜索引擎優(yōu)化
汝阳县| 潼关县| 天等县| 舞钢市| 岑巩县| 历史| 孟津县| 许昌县| 洞口县| 新龙县| 南江县| 姚安县| 新田县| 新乡县| 岱山县| 靖江市| 鄂温| 鄂州市| 东阳市| 晋州市| 桂林市| 淄博市| 新晃| 石家庄市| 罗甸县| 庆元县| 平泉县| 邵阳县| 湖南省| 罗城| 开原市| 遂溪县| 永仁县| 游戏| 南宫市| 德安县| 阜宁县| 五华县| 兴山县| 盖州市| 赞皇县|