2018年5月工作中遇到的問題
2018年5月工作中遇到的問題
1、客戶報價管理:
客戶名稱顯示邏輯,通過登陸使用者ID在表upms_user_jskh查詢到customer_ids和company_ids,然後通過查詢的customer_ids和company_ids再去表crm_jskh裡面查詢客戶名稱。 |
2、修改使用者管理:
1、使用者管理頁面:將新增使用者按鈕改成兩個按鈕分別為新增員工和新增客戶,點選時跳出不同的頁面。 2、在新增客戶跳出的頁面裡新增:經營單位和結算單位下拉框 |
3、客戶報價模板裡面無法儲存客戶型別。
4、upms_user_jskh許可權表,許可權的商品庫和報關模板欄位在這個表裡面。
5、報價模板存在表crm_quote_customer
6、5月7號下午---5月8號修改時,增加了非法欄位導致報錯,所以進行了修改
F:\IdeaProjects\wanli\zheng\zheng-crm\zheng-crm-web\src\main\java\com\zheng\crm\server\controller\ saleManage\CrmQuoteCustomerController.java F:\IdeaProjects\wanli\zheng\zheng-crm\zheng-crm-rpc-service\src\main\java\com\zheng\crmSaleManage\dao\mapper\ CrmQuoteTemplateMapper.xml
F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-server\src\main\java\com\zheng\upms\server\controller\manage\ UpmsUserRoleController.java F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-server\src\ main\webapp\WEB-INF\jsp\manage\userRole |
7、
client reconnect client(url: dubbo://192.168.31.102:20883/com.zheng.crm.rpc.api.CrmJskhContactsService:crm服務沒有啟動 |
8、在UpmsUserJskhMapper.xml檔案裡:
F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-rpc-service\src\main\java\com\zheng\upms\dao\mapper\UpmsUserJskhMapper.xml
<update id="updateData" parameterType="java.util.Map"> <if test="customer_text != null and ‘’!= customer_text "> //取消紅色部分 <![CDATA[t.customer_text = #{customer_text},]]> </if> </update>
修改的問題: 使用者管理,經營單位,結算單位、供應商、資料庫、報關模板 批量勾選取消全部 儲存後無效。 |
9、 使用select2實現多功能下拉框 **
下面是使用select2的初始化、動態賦值,實現標籤化多選、以及遇到的問題: 1,從http://select2.github.io/examples.html 處下載select2原始碼,把dist目錄中css、js引用到html中, 2,在頁面中新建:<div id="test_select2"></div>, 3,初始化select2很簡單,$('#test_select2').select2();就行,這是沒有任何屬性和值的最簡單初始化,下面介紹幾個常用的屬性: var itemList =[{id:1,text:'測試1'}{}{}{{}{}{}{}]; //類似的json陣列格式,可以單獨用jquery的ajax獲取伺服器的資料。 $('#test_select2').select2({ placeholder : '輸入話題關鍵字', tags : true, multiple : true, height: '40px', maximumSelectionLength : 3, allowClear : true, language: "zh-CN", data : itemList // itemList是[{}{}{}{}]格式的陣列 }); |
10、 String 和List<String> 的互相轉換 **
String 轉換成List<String> : private List<String> stringToList(String strs){ String str[] = strs.split(","); return Arrays.asList(str); } List<String > 轉換成 String : 迭代List的每個子項,將他們用“,”隔開,拼接最好是用StringBuilder 或者StringBuffer |
11、MyBatis框架:$和#的區別: ***
${param}傳遞的引數會被當成sql語句中的一部分,比如傳遞表名,欄位名 例子:(傳入值為id) order by ${param} 則解析成的sql為: order by id
#{parm}傳入的資料都當成一個字串,會對自動傳入的資料加一個雙引號 例子:(傳入值為id) select * from table where name = #{param} 則解析成的sql為: select * from table where name = "id" 為了安全,能用#的地方就用#方式傳參,這樣可以有效的防止sql注入攻擊 |
12、 maven專案中採用jetty外掛啟動每次修改程式碼都會自動重啟的問題解決
<reload>預設值為 automatic,它與大於 0 的 scanIntervalSeconds 節點一起作用,實現自動熱部署的工作。設為 manual 的好處是,當你改變檔案內容並儲存時,不會馬上觸發自動掃描和重部署的動作,你還可以繼續的修改,直至你在 Console 或命令列中敲回車鍵(Enter)的時候才觸發重新載入的動作。這樣可以更加的方便除錯修改。 |
13、 mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'
在使用mybaitis傳引數的時候,如果僅傳入一個型別為String的引數,那麼在 xml檔案中應該使用_parameter來代替引數名。 |
14、為報價管理的供應商新增許可權:
部分程式碼如下: Subject subject = SecurityUtils.getSubject(); Map<String,Object> userMap = new HashMap<>(); userMap.put("username",subject.getPrincipal()); userMap.put("usertype",100); List<Map<String,Object>> userList = upmsUserService.selectJskh(userMap); Map<String,Object> map = userList.get(0); String supplierStr =(String)map.get("supplier_ids"); List<Map<String,Object>> list = crmSupplierService.selectSupplierName(supplierStr); |
15、 MyBatis框架傳參問題: ***
常用的兩種方案:
第一種方案: DAO層的函式方法 Public User selectUser(String name,String area); 對應的Mapper.xml <select id="selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{0} and user_area=#{1} </select> 其中,#{0}代表接收的是dao層中的第一個引數,#{1}代表dao層中第二引數,更多引數一致往後加即可。
第二種方案:如果只有一個引數可以不使用@param註解,否則必須要加,為了養成良好的習慣,建議都加 Dao層的函式方法 Public User selectUser(@param(“userName”)String name,@param(“userArea”)String area); 對應的Mapper.xml <select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR} </select> 個人覺得這種方法比較好,能讓開發者看到dao層方法就知道該傳什麼樣的引數,比較直觀,個人推薦用第二種方案。 |
16、下拉列表和單選按鈕預設選中判斷: ***
①、下拉列表預設選中: <select id="staffStauts" name="staffStauts" class="form-control"> <option value="0" <c:if test="${staff.staffStauts==0}">selected</c:if>>在職</option> <option value="1" <c:if test="${staff.staffStauts==1}">selected</c:if>>離職</option> </select> ②、單選按鈕預設選中: <div class="radio radio-inline radio-success"> <input id="locked_0" type="radio" name="locked" value="0" <c:if test="${user.locked==0}">checked</c:if>> <label for="locked_0">正常 </label> </div> <div class="radio radio-inline"> <input id="locked_1" type="radio" name="locked" value="1" <c:if test="${user.locked==1}">checked</c:if>> <label for="locked_1">鎖定 </label> </div> |
17、 JS和JSP的區別 *
1、JSP全名為Java Server Pages,其根本是一個簡化的servlet設計,他實現了Html語法中的java擴張(以 <%, %>形式)。JSP與Servlet一樣,是在伺服器端執行的。 jsp 要先翻譯,注意是翻譯成servlet才能執行:比如 test.jsp 要變成 test_jsp.java 然後編譯成test_jsp.class 而 test_jsp.java 本身就是一個servlet。所以 jsp只是servlet的一個變種,方便書寫html內容才出現的。servlet是根本,所有jsp能做的,servlet全能做。 2、簡單地說——JS是在客戶端執行的,需要瀏覽器支援Javascript。JSP是在伺服器端執行的,需要伺服器上部署支援Servlet的伺服器程式。JS程式碼是能夠直接從伺服器上download得到,對外是可見的,jsp(和翻譯後的servlet)程式碼是對外不可見的。 聯絡: JS與JavaScript相比:雖然JavaScript可以在客戶端動態生成HTML,但是很難與伺服器互動,因此不能提供複雜的服務,比如訪問資料庫和影象處理等等。JSP在HTML中用<%%>裡面實現。JS在html中用<Script></Script>實現 |
18、Invoke remote method timeout. method: selectUpmsUserByUsername:RPC服務連結超時
出現的原因:①、網路不好;②、就是指定的服務沒有開啟。
19、前臺如何解析List<Map<String,Object>>資料:**
後臺:
前臺jQuery解析:
20、jQuery遍歷函式:
21、 Java獲取系統時間的四種方法
1、Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(df.format(day)); 通過Date類來獲取當前時間
2、SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(df.format(System.currentTimeMillis())); 通過System類中的currentTimeMillis方法來獲取當前時間
3、Calendar c = Calendar.getInstance();//可以對每個時間域單獨修改 工廠模式 int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int date = c.get(Calendar.DATE); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second); 通過Calendar類來獲取當前時間
4、 Date date = new Date(); String year = String.format("%tY", date); String month = String.format("%tB", date); String day = String.format("%te", date); System.out.println("今天是:"+year+"-"+month+"-"+day); 通過Date類來獲取當前時間 總結:設定時間格式可通過呼叫SimpleDateFormat類進行設定和通過String中的format方法來設定。可通過Date類和System中的currentTimeMillis來獲取! |
22、ResultMap和ResultType在使用中的區別
1、resultType:當使用resultType做SQL語句返回結果型別處理時,對於SQL語句查詢出的欄位在相應的pojo中必須有和它相同的欄位對應,而resultType中的內容就是pojo在本專案中的位置。 2、 resultMap:當使用resultMap做SQL語句返回結果型別處理時,通常需要在mapper.xml中定義resultMap進行pojo和相應表字段的對應。 |
23、 mybatis異常:Could not find result map java.util.Map 問題分析及解決
錯誤寫法 <select id="queryXXXCount" resultMap="java.util.Map" > 正確寫法: <select id="queryXXXCount" resultType="java.util.Map">
注意: mybatis報出的異常日誌棧資訊定位不是那麼準(找錯誤發生的地方不能直接根據異常棧資訊直接定位到問題方法) 此次根據這次異常棧資訊找到的就是正常的方法,但是觸發了有問題的那個mybatis
在問題除錯、查詢過程中:根據svn提交資訊將新提交的程式碼進行核對、註釋掉,並進行實際除錯才能準確定位此類問題。 |
24、JS獲取當前時間戳的方法
JavaScript 獲取當前時間戳: 第一種方法: var timestamp = Date.parse(new Date()); 結果:1280977330000 第二種方法: var timestamp = (new Date()).valueOf(); 結果:1280977330748 第三種方法: var timestamp=new Date().getTime(); 結果:1280977330748 第一種:獲取的時間戳是把毫秒改成000顯示, 第二種和第三種是獲取了當前毫秒的時間戳。 |
25、用js將從後臺得到的時間戳(毫秒數)轉換為想要的日期格式
得到後臺從資料庫中拿到的資料我們希望格式是 2016年10月25日 17時37分30秒 或者 2016/10/25 17:37:30 然而我們前臺得到的卻是一段數字(時間戳,毫秒數) 1477386005 我們要將時間戳轉化為我們想要的格式。 核心方法 : 1477386005是我從後臺得到時間戳 (注意:有的時候得到的時間戳是已經乘以1000的) var unixTimestamp = new Date( 1477386005*1000 ) ; commonTime = unixTimestamp.toLocaleString(); alert(commonTime); 這時候的結果是 但是我希望轉換為我自己想要的格式,就在本頁面重寫一下 toLocaleString()方法即可。 Date.prototype.toLocaleString = function() { return this.getFullYear() + "年" + (this.getMonth() + 1) + "月" + this.getDate() + "日 " + this.getHours() + "點" + this.getMinutes() + "分" + this.getSeconds() + "秒"; }; 結果為: 或者其他想要的格式:
Date.prototype.toLocaleString = function() { return this.getFullYear() + "/" + (this.getMonth() + 1) + "/" + this.getDate() + "/ " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds(); }; 結果為: |
26、錯誤問題:
解決方法:重新安裝服務
27、 Unknown return value type: java.lang.Integer
原因之一: 沒有寫@responseBody註解
28、如何在伺服器端的程式中判斷時間是否是新的一天。
思想:在資料庫裡專門建一個表存放時間,在使用過程中獲取當前系統時間後去資料庫裡查詢是否有這個時間,有則不是新一天。沒有查到則是新一天,並把這一天存到資料庫中。
29、專案中邏輯編寫:
要記住:在Controller層是能寫一些簡單的邏輯程式碼,主要的邏輯程式碼需要一定要在Service裡面寫。這樣才符合SSM框架SVM模式的設計理念,同時在Service層裡面有事務可以保證訪問資料庫的安全性。
相關推薦
2018年5月工作中遇到的問題
2018年5月工作中遇到的問題 1、客戶報價管理: 客戶名稱顯示邏輯,通過登陸使用
2018年5月25日星期五工作日誌——Excel匯入匯出C#
上班第一天,經理要求做出Excel匯入匯出,以前做這方面的不多,所以記錄下來,新手一枚,望高手指教。 Excel匯出 方法眾多,選擇了直接IO操作。 程式碼如下: /// <summary> &nb
spring boot 基礎 2018年5月3日
plugins pri info out configure www read ping mapping 主包下運行類@SpringBootApplication 此註解是核心註解,源碼如下 @Target({ElementType.TYPE}) @Retention
2018年5月3日筆記
表達 pst .text mkdir html str fin 字符串 文件 常用的正則表達式匹配規則 \d 表示一個數字字符,等價於 [0-9] \D 表示一個非數字字符,等價於 [^\d] \s 表示一個空白字符,等價於 [<空格>\t\r\n\f
2018年5月6日GDCPC (廣東賽區)總結
公式 都沒有 省賽 好好學習 過程 方法 AC 2018年 開始 試機是隊友浩哥一個人去的,因為覺得華工去了不少次了,環境也比較熟悉了。直到看到了現場環境,感覺有些擁擠,不如從前那樣寬敞,增加了一些緊張的不適感。 比賽開始時,我們三人分頭讀題,雖說題目比較簡短,但第一眼看
2018年5月7日
color HA char sch oid 升序 read lse seq 028統計出數組中的各個字符的個數 1 import java.io.*; 2 public class StatisticsChar 3 { 4 public sta
2018年5月8日筆記
grep 字節 width RoCE system ID 字符串類型 工作 abs CentOS 7上安裝mysql # CentOS 7 安裝mysql 1. 檢測系統是否自帶安裝 mysql rpm -qa | grep mysql 2. 若已安裝,可以進行卸
2018年5月10日筆記
conn imp key port 學生 但是 not oot mysql 在Python中如何表示數據庫表 方法一:由於數據庫表是一個二維表,所以可用list表示多行,list的每個元素是tuple,表示一行記錄 如:有一張學生信息表,包含學生的學號,姓名,年齡,可表
2018年5月13日筆記
class leg 刪除 pass ota pan where ide maker SQL語句復習 創建一個庫 create database DB_name; 授權一個用戶 grant all privileges on *.* to ‘user1‘@‘%‘ ide
2018年5月第一二周下載中心資源下載TOP榜
系統運維 編程開發 web開發 數據庫 考試認證 2018年5月01日至2018年5月14日下載中心資源下載TOP榜 A、系統運維 NO.1下載數:282資源標題:Linux操作系統(上百個新特性)_紅帽RHEL7新特性與功能匯總V1.0資源地址:http://down.51cto.com
2018年5月9日JAVA-servlet02
127.0.0.1 超過 即使 ddc spa 比較 寫入 方便 void session對象用於在會話範圍內,記錄每個客戶端的訪問狀態,以便於跟蹤每個客戶端的操作狀態,在會話存儲的信息,在瀏覽器發出後續請求時可以獲取這些會話的有效數據。 在jsp頁面中可以直接使用s
2018年5月17日筆記
最大 返回值 onf delete 常用操作 all 描述 app 筆記 python操作redis set操作 sadd(name, values) 增加 scard(name) 獲取 spop(name) 刪除並返回set中的一個隨機元素 srem(n
2018年5月19日筆記
共享內存 main 多核cpu 需要 target 創建 uil out lease 進程的概念 進程是程序在計算機上的一次執行活動。 進程可分為系統進程和用戶進程。 所有正在運行的進程輪流使用CPU,任何一個時間點有且只有一個進程占用CPU。 進程與線程的區
【程序員劄記#學習&&塑形# 】2018年5月21號
width title gray 繼續 ali 粉絲 tro margin post 2018年警醒 對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 現在要做的事情:“戒酒&
2018年5月20日--西安icpc邀請賽打鐵總結
平時 很難 線段樹 過度 提高 符號 幾何題 掌握 ORC 2018年5月20日--西安icpc邀請賽打鐵總結 事後諸葛亮 大致回顧一下比賽,29號的熱身賽和30號的正式賽。 熱身
2018年5月22日筆記
req 阻塞 OS rom ron fun star 因此 -- Python共享內存 共享內存有兩個結構,一個是 Value, 一個是 Array,這兩個結構內部都實現了鎖機制,因此是多進程安全的。 Value 和 Array 都需要設置其中存放值的類型,d 是 do
【程序員劄記#學習&&塑形# 】2018年5月24號
round href hang border ttext HR -- chang 規劃 2018年警醒 對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 感悟 今天想到了
2018年5月第三周下載中心資源下載TOP榜
系統運維 開發技術 前端開發 數據庫 人工智能 2018年5月14日至2018年5月20日下載中心資源下載TOP榜A、系統運維NO.1下載數:252資源標題:微軟產品安裝介質下載地址清單V1.0資源地址:http://down.51cto.com/data/2447111NO.2下載數:1
2018年5月26日筆記
tin eas 配置 sel utc zone result config AS 習題1 先在utils.py文件中定義一個工具類 1 # utils.py 2 3 import os 4 import threading 5 import codecs
2018年5月27號
下一個 info 今天 IV span https 負環 class 第一篇 一開始並不懂得真正判斷負環,自從寫了這道題才有點感覺:這道題就是洛谷的p1768天路。 我主要想說如何判斷負環: 首先一個最普通的做法: 1 void spfa(int x) 2