day杰信商貿1課前04貨運模塊_第1頁
day杰信商貿1課前04貨運模塊_第2頁
day杰信商貿1課前04貨運模塊_第3頁
day杰信商貿1課前04貨運模塊_第4頁
day杰信商貿1課前04貨運模塊_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

北京傳智播客教育項目實訓1920-9520-78北京傳智播客教育項目實訓~流程1:購銷合同購銷合同客戶簽單后,杰信公司向廠家下達購銷合同,包括貨物的具體要求和交期。合同按不同廠家打印購銷合同單。貨物、附件各自打印,由公司駐當地銷售人員分發(fā)到各工廠。項目的核心,難點北京傳智播客教育項目實訓~購銷合同知識點:用戶需求分析結果考核點1實現(xiàn)合同的維護增刪改復雜表CRUD2合同貨物信息維護,一個合同下包含多個貨物信息;一個貨物下包含多個附件信息;合同和貨物為主從結構,貨物和附件為主從結構;對合同添加其貨物,對貨物添加其附件主從從信息3合同在未上報時,只能銷售部門看到,只有當上報以后,報運業(yè)務的專責才可以看到。上報后未進行報運前,可以取消,進行修改后,再上報。流程:上報、取消;流程控制4列表頁面顯示貨物數、附件數、總金額貨物、附件的生產廠家SQL統(tǒng)計SQL統(tǒng)計5合同、貨物、級聯(lián)刪除myBatis級聯(lián)刪除,層層調用SQL6查看查查看SQL及頁面項目實訓~購銷合同設計規(guī)范:表名加業(yè)務后綴,_C業(yè)務表_B基礎表_P權限表,表名全大寫,多個單詞用下劃線隔開主鍵名稱為表名去掉業(yè)務后綴,加_ID;主表主鍵映射為id,方便頁面統(tǒng)一處理;從表采用自身主鍵名稱,因為mybatis的結果集字段名稱不能相同。映射文件中,如果數據庫字段使用了關鍵字,例如request,如何映射?C+NAME初始化,字段設置默認值。冗余列金額怎么計算?什么時候計算?金額=數量*單價數據為多行文本時,頁面怎樣展現(xiàn)換行?<pre></pre>北京傳智播客教育項目實訓~購銷合同技術要點:從表貨物在CRUD時和主表合同CRUD時有什么不同?從從表附件在CRUD時和主表合同CRUD時有什么不同?和從表CURD時有何不同?隱藏域name和value對應whichmodel的規(guī)則?動態(tài)下拉列表(生產廠家)和靜態(tài)下列列表(包裝單位)查看合同,同時可以看到合同下的貨物信息,貨物下的附件信息,兩層嵌套如何在列表頁面顯示每個合同的貨物數,附件數?購銷合同復雜報表打印,打印技巧:數據分離,LOGO圖片,畫線等等文件下載,直接輸出response。北京傳智播客教育項目實訓~購銷合同技術要點:下拉框數據回顯?<tdclass="columnTitle_mustbe">生產廠家:</td><tdclass="tableContentAuto"><selectname="factoryId"> <optionvalue="">--請選擇--</option> <c:forEachitems="${factoryList}"var="f"> <optionvalue="${f.id}" <c:iftest="${obj.factoryId==f.id}">selected</c:if> >${f.factoryName}</option> </c:forEach></select></td>北京傳智播客教育項目實訓~購銷合同技術要點:如何映射布爾型的屬性?在xxx.hbm.xml中映射布爾類型<propertyname="accessories"type="boolean"column="ACCESSORIES"/>注意:1、數據庫沒有布爾型,都會映射為整數類型,不要被sqlYog等編輯工具所欺騙;例如:mysql中會轉換為tinyint,其他數據類同2、PDM數據庫建模時字段類型用bit//contract_product_cSQLSERVER2000為tinyint,MYSQL5.0為二進制字段3、PO對象中布爾型變量還有get和set方法嗎?

如果是Boolean,則是get,setprivatebooleanaccessories;publicbooleanisAccessories(){ returnaccessories;}publicvoidsetAccessories(booleanaccessories){ this.accessories=accessories;}北京傳智播客教育項目實訓~購銷合同技術要點:如何實現(xiàn)默認值設置?程序中設置記錄的默認值?@RequestMapping("/cargo/contract/insert.action")publicStringinsert(Contractcontract){ contract.setState(0); //新增狀態(tài)默認為0-草稿

contractService.insert(contract); return"redirect:/cargo/contract/list.action";}寫SQL時默認主鍵調用數據的UUID,缺點,其他數據庫不通用<insertid="insert"parameterType="cn.itcast.jk.domain.Contract"> insertintocontract_c (CONTRACT_ID,OFFEROR,CONTRACT_NO,STATE) values (uuid(),#{offeror},#{contractNo},#{state})</insert>北京傳智播客教育項目實訓~購銷合同技術要點:列表頁面中的字段怎么來的?業(yè)務中表的字段很多,列表中無法全部顯示,就需要取舍,放哪些字段,哪些不放,怎么確定呢?通常是用戶提供,通過和用戶的交流確定。也可根據經驗來先行編寫,之后再跟用戶確定。通常的原則是:1、重要的字段,客戶最想看到的內容放頁面上2、如果是大段文字的字段,不放在列表頁面上。如果客戶需要,則進行截斷顯示。例如:要顯示:產品與封樣無明顯差異,嘜頭、標簽及包裝質量務必符合公司要求。只顯示:“產品與封樣無明顯差異…”,鼠標移動到文字上時,顯示全部內容北京傳智播客教育項目實訓~購銷合同技術要點:從表:貨物新增時,如何知道是為哪個合同添加貨物?怎樣傳遞參數?方法有三種方法:1、通過po對象,利用springmvc的封裝參數,作為Controller方法的參數2、在action中聲明屬性(推薦)3、直接從request中獲?。ㄔ迹┖贤琷ContractList.jsp列表頁面在每條合同信息后增加下面的按鈕:<ahref="${ctx}/cargo/contractproduct/tocreate.action?contractId=${o.id}">[貨物]</a>Controller中接參:@RequestMapping("/cargo/contractproduct/tocreate.action")publicStringtocreate(ContractProductcontractProduct,Modelmodel){//傳遞主表的ID,同時作為查詢條件

model.addAttribute(“contractId”,contractProduct.getContractId());傳遞給頁面隱藏域,否則保存時取不到這個值}北京傳智播客教育項目實訓~購銷合同技術要點:金額無需用戶錄入,自動計算?contractProduct.setId(UUID.randomUUID().toString()); //程序產生UUIDif(contractProduct.getCnumber()!=null&&contractProduct.getPrice()!=null){ Aritharith=newArith(); //java精度工具類

contractProduct.setAmount(arith.mul(contractProduct.getCnumber(),contractProduct.getPrice())); }北京傳智播客教育信息并不都從頁面中來注意java運算的精度問題項目實訓~購銷合同技術要點:如何統(tǒng)計合同下貨物和附件數據量?SELECT( SELECTCOUNT(*)FROMcontract_product_cWHEREcontract_id=c.contract_id)cpnum,( SELECTCOUNT(*)FROMext_cproduct_cWHEREcontract_product_idIN ( SELECTcontract_product_idFROMcontract_product_c WHEREcontract_id=c.contract_id ))epnum,c.*FROMcontract_cc北京傳智播客教育利用SQL語句實現(xiàn)貨物數、附件數注意,大數據量時不推薦,性能將直接下降。SQL基礎1)單值結果集可以作為一個字段,2)可以動態(tài)獲取當前行中某列的當前值。項目實訓~購銷合同技術要點:合同的查看,對象關聯(lián),VO?<resultMapid="contractViewRM"type="cn.itcast.jk.vo.Contract"> <idproperty="id"column="CONTRACT_ID"/> <resultproperty="contractNo"column="CONTRACT_NO"/> <!--貨物信息--> <collectionproperty="contractProducts"ofType="cn.itcast.jk.vo.ContractProduct"> <idproperty="contractProductId"column="CONTRACT_PRODUCT_ID"/> <resultproperty="productNo"column="PRODUCT_NO"/> <!--貨物廠家--> <associationproperty="factory"javaType="cn.itcast.jk.domain.Factory"> <resultproperty="factoryName"column="FACTORY_NAME"/> </association> <!--附件信息--> <collectionproperty="extCproducts"ofType="cn.itcast.jk.vo.ExtCproduct"> <idproperty="extCproductId"column="EXT_CPRODUCT_ID"/> <resultproperty="productNo"column="EXT_PRODUCT_NO"/> <!--貨物廠家--> <associationproperty="factory"javaType="cn.itcast.jk.domain.Factory"> <resultproperty="factoryName"column="EXT_FACTORY_NAME"/> </association> </collection> </collection></resultMap>北京傳智播客教育<tdclass=“tableHeader”>貨物數/附件數</td>項目實訓~購銷合同技術要點:級聯(lián)刪除publicvoiddelete(Serializableid){ extCproductDao.deleteByContractId(id); //刪除當前合同下的貨物下的附件

contractProductDao.deleteByContractId(id); //刪除當前合同下的貨物

contractDao.delete(id); //刪除合同}publicvoiddelete(Serializable[]ids){ for(Serializableid:ids){ extCproductDao.deleteByContractId(id); } for(Serializableid:ids){ contractProductDao.deleteByContractId(id); } contractDao.delete(ids);}注:在hibernate中,級聯(lián)很簡潔;映射文件中配置,只需配置其和父對象、子對象之間的關系。其他不用關心。而這里需要所有的。北京傳智播客教育項目實訓~購銷合同技術要點:POI打印步驟操作步驟:打開一個excel文件打開當前工作簿創(chuàng)建行對象指定列,創(chuàng)建單元格對象寫入內容設置樣式:字體、大小、顏色、位置、表格線、換行、格式(字符、數字)關閉保存excel文件特殊操作:合并單元格、公式、合計、訪問其它工作簿中的內容【財務】單元格自定義:加上$前導符,KG后綴符插入圖片、插入線、分頁【購銷合同】頁眉頁腳、標題頭【出貨表】原理:Poiexcel打印就是操作單元格,設樣式POI缺點:不能批量設置樣式,只要一點不同,例如其它字體、大小、對齊、表格線,就一個斜體,一個正常,就必須重新創(chuàng)建一個新樣式。導致代碼量超大,都是無用功。示例:test/java/TestExcelPoiPrint.java項目實訓~購銷合同技術要點:打印程序設計技巧技巧好處實例模板將靜態(tài)內容利用模板,方便修改,易于維護。同時減少大量代碼。全部報表動態(tài)定位不是寫死行列,而是變?yōu)閯討B(tài)相對位置,這樣需求變更增加,如增加了一行,增加了一列,不會影響后面的位置全部報表高效組織數據如何減少數據多次從數據庫、關聯(lián)對象中取值【合同】中先構造所有數據,每頁存在一個MAP中,所有頁存在一個LIST集合中,打印時,只需讀取每個MAP,就不需在和數據庫、對象打交道。業(yè)務邏輯也變得簡單,打印時,只關心打印的位置和樣式,不需再關心數據。減少內容的交叉和復雜度,有利開發(fā)人員理解和操作。項目實訓~購銷合同技術要點:報表的組成區(qū)域項目實訓~購銷合同打印–模板打印要求:程序可以完成一切,但靜態(tài)內容,行高,列高等如果全由程序控制,代碼量大。用戶要修改其中一項,還需修改代碼。維護性不好。解決思路:模板,事先調整好行高、列寬靜動分離,靜態(tài)的內容,表頭、標題等可先在模板中設置為何要使用模板項目實訓~購銷合同打印–數據和打印代碼分離要求:poi的機制是一個一個單元格進行寫入并設置樣式,導致代碼量超多,但邏輯簡單。業(yè)務代碼和數據代碼混雜解決思路:將內容緩存在map中,poi寫單元格信息,就直接從map中讀取//OfferornRow=sheet.createRow((short)curRow-1);nRow.setHeightInPoints(20);nCell=nRow.createCell((short)(1));nCell.setCellValue(printMap.get("Offeror"));nCell.setCellStyle(pioUtil.titlev12(wb,blackFont));項目實訓~購銷合同打印–用戶配置要求:一個頁面打印1款貨2款貨物由用戶指定解決思路:設定變量,并且存儲表中,否則用戶下次需同樣方式打印時,不知道上次是何設定項目實訓~購銷合同打印–公式要求:指定單元格類型設置公式,利用程序拼接動態(tài)內容,對程序來說就是拼字符串nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);兩列值相乘:nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow)+")");兩列合計:nCell.setCellFormula("SUM(I"+String.valueOf(curRow-4)+":I"+String.valueOf(curRow-1)+")");項目實訓~購銷合同打印–

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論