【正文】
long stopTime = ()。 //記錄當(dāng)前時(shí)間 (startTime)。 //利用ThreadLocal綁定一個(gè)變量,完成線程安全 NamedThreadLocalLong startTimeThreadLocal = new NamedThreadLocalLong(startTimeThreadLocal)。import 。import 。import 。c) 開(kāi)發(fā)步驟1) 寫一個(gè)攔截器,實(shí)現(xiàn)一個(gè)接口HandlerInterceptor2) 實(shí)現(xiàn)共用的變量,安全性3) 配置springmvc攔截器配置,package 。都比較耗時(shí),用戶體驗(yàn)不好。a) 生產(chǎn)廠家銷售情況餅形圖需求:生產(chǎn)廠家銷售情況,廠家+銷售SELECT ,FROM(SELECT factory_id,factory_name FROM factory_c WHERE state=1) fLEFT JOIN (SELECT factory_id,SUM(umber) AS sumnum FROM contract_product_cGROUP BY factory_id) cpON =WHERE IS NOT nullb) 產(chǎn)品銷售排行柱狀圖需求:產(chǎn)品銷售情況,暢銷的產(chǎn)品的前10名,產(chǎn)品+銷售SELECT product_no,SUM(umber) AS sumnum FROM contract_product_cGROUP BY product_no ORDER BY sumnum DESCLIMIT 10c) 系統(tǒng)訪問(wèn)壓力圖曲線圖需求:系統(tǒng)訪問(wèn)壓力圖記錄用戶登陸系統(tǒng),就記錄一條統(tǒng)計(jì)每天登陸系統(tǒng)的次數(shù)SELECT SUBSTRING(login_time,1,10),COUNT(login_time) FROM login_log_pGROUP BY SUBSTRING(login_time,1,10)統(tǒng)計(jì)24小時(shí)系統(tǒng)訪問(wèn)的次數(shù)當(dāng)數(shù)據(jù)不夠時(shí),利用臨時(shí)表湊數(shù)據(jù)SELECT ,IFNULL(,0) AS countnumFROM(SELECT a1 FROM online_t) tLEFT JOIN(SELECT SUBSTRING(login_time,12,2) AS a1,COUNT(login_time) AS countnum FROM login_log_pGROUP BY SUBSTRING(login_time,12,2)) pON =總結(jié):圖形報(bào)表業(yè)界已經(jīng)相當(dāng)成熟,提出公用,稱作報(bào)表引擎。(注意:html瀏覽器默認(rèn)都有緩存,)meta equiv=ContentType content=text/html。樣式文件訪問(wèn)本地的,這樣可以方便修改配置顏色,坐標(biāo),顯示樣式等。l amCharts FLASH,只需要構(gòu)建數(shù)據(jù)xml。做一個(gè)應(yīng)用程序,(C/S程序),IE上安裝插件。收費(fèi)??梢暬季纸缑妫渲脭?shù)據(jù)源即可。l 第三方的報(bào)表軟件,可視化開(kāi)發(fā)。變相解決,先做一個(gè)excel模板,插入好圖表控件,然后利用poi動(dòng)態(tài)設(shè)置它的數(shù)據(jù)。 第九天 圖形報(bào)表~讓微軟都羨慕的報(bào)表1. Java要實(shí)現(xiàn)圖形報(bào)表都有什么方式?l jFreeChart 純java API,利用生成一張圖片。(大量(超過(guò)10個(gè)字段)或者信息比較敏感,不推薦使用這種方法,推薦還使用通過(guò)id查找其他內(nèi)容)178。Div URL鏈接。這樣查詢的效率高。因?yàn)樗鼈?個(gè)的關(guān)系都是一對(duì)一。狀態(tài)采用常量來(lái)定義,只有新增加的狀態(tài),才需要編碼。瀏覽每步流程開(kāi)始時(shí)間,操作人,結(jié)束時(shí)間,審核人突然在流程步驟中增加一步工作流擴(kuò)充流程時(shí),非常方便,修改一下流程圖,工作流自動(dòng)記錄所有操作的人和操作時(shí)間,操作意見(jiàn)。))9. 知識(shí)回顧a) 業(yè)務(wù):貨運(yùn)管理,購(gòu)銷合同,出口報(bào)運(yùn),home裝箱單(預(yù)裝箱),裝箱,委托,發(fā)票(通知),財(cái)務(wù)統(tǒng)計(jì)。,39。))刪除附件DELETE FROM ext_cproduct_cWHERE ext_cproduct_id IN (SELECT ext_cproduct_id FROM ext_cproduct_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN(39。,39。)刪除貨物DELETE FROM contract_product_cWHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN(39。,39。))刪除合同DELETE FROM contract_cWHERE contract_id IN (39。,39。))附件的數(shù)據(jù)進(jìn)行歸檔INSERT INTO ext_cproduct_his_cSELECT * FROM ext_cproduct_c WHERE ext_cproduct_id IN (SELECT ext_cproduct_id FROM ext_cproduct_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN(39。,39。)貨物的數(shù)據(jù)進(jìn)行歸檔INSERT INTO contract_product_his_cSELECT * FROM contract_product_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN(39。,39。8. 購(gòu)銷合同歸檔,取消歸檔合同表數(shù)據(jù)進(jìn)行歸檔INSERT INTO contract_his_cSELECT * FROM contract_c WHERE contract_id IN (39。創(chuàng)建domain批量新增SQL,JDBC jdbcTemple spring7. 在一個(gè)系統(tǒng)架構(gòu)中一般訪問(wèn)數(shù)據(jù)兩種方式l hiberntate/mybatis 完成數(shù)據(jù)的持久化:新增,修改,刪除,簡(jiǎn)單查詢l jdbc/jdbcTemlpate/dbutil批量操作,批量新增,批量修改,級(jí)聯(lián)刪除,統(tǒng)計(jì)查詢主要框架來(lái)完成日常業(yè)務(wù),一般批量查詢使用jdbc,對(duì)于這些模塊,緩存就要注意使用。主模塊中的所有表,歷史中都有有。Select * from contract_c,contract_product_c,ext_cproduct_c,factory_cWhere contract_id,contract_product_id,factory_id…先找最小的結(jié)果集,只查詢某個(gè)合同下的貨物,只查詢某個(gè)貨物下的附件,只要查看這個(gè)合同c) 數(shù)據(jù)庫(kù)的選型l 單個(gè)數(shù)據(jù)庫(kù)優(yōu)先選擇Oracle,DB2 l 集群mysql,讀寫分離,單獨(dú)讀數(shù)據(jù)數(shù)據(jù)庫(kù),單獨(dú)寫的數(shù)據(jù)庫(kù)l Web應(yīng)用服務(wù)增加,可以增大訪問(wèn)量,同時(shí)分擔(dān)數(shù)據(jù)庫(kù)服務(wù)器壓力。l 表之間的關(guān)聯(lián)關(guān)系不要太復(fù)雜。業(yè)務(wù)中有些數(shù)據(jù)不常用,將這些不常用的數(shù)據(jù)放到另外一張表中,稱這個(gè)表為歷史表。原來(lái)需要1分多的查詢,現(xiàn)在只1秒多展現(xiàn)頁(yè)面。l 表的優(yōu)化,監(jiān)測(cè)數(shù)據(jù)執(zhí)行時(shí)間。6. 數(shù)據(jù)庫(kù)優(yōu)化a) 數(shù)據(jù)庫(kù)表設(shè)計(jì)l 由原來(lái)重視節(jié)省空間,變?yōu)橹匾曅阅堋?. 出口報(bào)運(yùn)的狀態(tài)0草稿 1已上報(bào) 2裝箱 3委托 4發(fā)票 5財(cái)務(wù)體現(xiàn)流程,客戶隨時(shí)想了解訂單進(jìn)展情況,流程的跟蹤。因?yàn)橹斑M(jìn)行了冗余設(shè)計(jì),財(cái)務(wù)所需的貨物信息和附件信息,在報(bào)運(yùn)中都有。實(shí)現(xiàn)跳躍查詢。主外鍵一個(gè)值。發(fā)票,委托,財(cái)務(wù)表的主鍵就是裝箱單的ID。4. 一對(duì)一特殊設(shè)計(jì)一個(gè)委托來(lái)自一個(gè)發(fā)票,一個(gè)發(fā)票來(lái)自一個(gè)委托,一個(gè)財(cái)務(wù)來(lái)自一個(gè)委托。統(tǒng)計(jì)這單合同有無(wú)賺取利潤(rùn)。3. 財(cái)務(wù)財(cái)務(wù)模塊不屬于貨運(yùn)的業(yè)務(wù)流程??蛻袈?lián)系貨代公司,聯(lián)系拖車公司,拖車?yán)鴿M箱到客戶指定的倉(cāng)庫(kù),卸貨。同時(shí)快遞客戶一個(gè)提單。同時(shí)產(chǎn)生發(fā)票日期。開(kāi)船從裝運(yùn)港出發(fā),到目的港。直到船來(lái)了。這幾個(gè)箱子風(fēng)吹雨淋。生產(chǎn)廠家在杰信的驗(yàn)貨員的監(jiān)督下,先將貨物裝到紙箱子中,然后在將紙箱子裝入集裝箱。杰信找拖車公司,訂拖車,拖車公司到碼頭拉空箱。 第八天 裝箱、委托、發(fā)票、財(cái)務(wù)業(yè)務(wù)+合同歸檔貨運(yùn)管理包括:購(gòu)銷合同、出口報(bào)運(yùn)、裝箱、委托、發(fā)票、財(cái)務(wù)統(tǒng)計(jì)。Mrecord控件它可以實(shí)現(xiàn)動(dòng)態(tài)新增,還可以實(shí)現(xiàn)批量刪除,自動(dòng)排序??梢耘縼?lái)修改貨物信息。由于js運(yùn)行很快,用戶感覺(jué)不到添加的過(guò)程,以為直接展示。在后臺(tái)準(zhǔn)備數(shù)據(jù),拼接成js串,將它寫入一個(gè)變量中,在頁(yè)面的jQuery的ready事件中,調(diào)用這個(gè)變量,形成多個(gè)js串,依次執(zhí)行。b) 批量修改Mrecord自定義控件,來(lái)信息補(bǔ)錄。用戶選擇報(bào)運(yùn)關(guān)聯(lián)的多個(gè)合同,代碼直接進(jìn)行數(shù)據(jù)的保存。b) 核心業(yè)務(wù):貨運(yùn)管理,出口報(bào)運(yùn)業(yè)務(wù),杰信獲得訂單后,安排多個(gè)生產(chǎn)廠家生產(chǎn)貨物,與此同時(shí)杰信準(zhǔn)備報(bào)關(guān)的材料,除了海關(guān)要求的一些制式文檔和杰信