jiapeng 7 years ago
parent
commit
4afa783679

+ 59 - 25
src/main/java/com/ekexiu/portal/job/HotKeyJobEntry.java

@ -1,13 +1,20 @@
1 1
package com.ekexiu.portal.job;
2 2

3 3
import java.sql.Connection;
4
import java.sql.ResultSet;
5
import java.sql.SQLException;
6
import java.sql.Statement;
4 7
import java.util.ArrayList;
5
import java.util.List;
8
import java.util.Collections;
9
import java.util.Comparator;
10
import java.util.HashMap;
11
import java.util.Map;
6 12

7 13
import javax.sql.DataSource;
8 14

9 15
import org.jfw.apt.annotation.Autowrie;
10 16
import org.jfw.apt.annotation.Bean;
17
import org.jfw.util.jdbc.JdbcUtil;
11 18

12 19
import com.ekexiu.portal.pojo.DataDictCode;
13 20
import com.ekexiu.portal.service.DataDictService;
@ -53,41 +60,68 @@ public class HotKeyJobEntry extends DictTaskJobEntry implements Runnable {
53 60
		this.dataDictService = dataDictService;
54 61
	}
55 62

63
	private void addEntry(String caption, Map<String, DataDictCode> map) {
64
		DataDictCode item = map.get(caption);
65
		if (item == null) {
66
			item = new DataDictCode();
67
			item.setCaption(caption);
68
			item.setCount(1);
69
			map.put(caption, item);
70
		} else {
71
			item.setCount(1 + item.getCount());
72
		}
73
	}
74

75
	private void addEntrys(Connection con, String sql, Map<String, DataDictCode> map) throws SQLException {
76
		Statement st = con.createStatement();
77
		try {
78
			ResultSet rs = st.executeQuery(sql);
79
			try {
80
				while (rs.next()) {
81
					addEntry(rs.getString(1), map);
82
				}
83
			} finally {
84
				JdbcUtil.close(rs);
85
			}
86
		} finally {
87
			JdbcUtil.close(st);
88
		}
89
	}
90

56 91
	@Override
57 92
	public void run() {
93

94
		Map<String, DataDictCode> tmpMap = new HashMap<String, DataDictCode>();
58 95
		try {
59 96
			Connection con = this.dataSource.getConnection();
60 97
			try {
61
				Items items = fillSetValue(con,
62
						"SELECT SUBJECT FROM PROFESSOR UNION ALL SELECT INDUSTRY FROM PROFESSOR UNION ALL SELECT SUBJECT FROM ARTICLE UNION ALL SELECT SUBJECT FROM RESOURCE");
63
				List<Item> list = items.getItemByDescSort();
64
				List<DataDictCode> codes = new ArrayList<DataDictCode>();
65
				for (Item item : list) {
66
					if (item.getValue() > 1) {
67
						DataDictCode code = new DataDictCode();
68
						code.setCount(item.getValue());
69
						code.setCaption(item.getCaption());
70
						codes.add(code);
98
				addEntrys(con, "SELECT KW FROM ART_KEY_WORD", tmpMap);
99
				addEntrys(con, "SELECT KW FROM PRO_KEY_WORD", tmpMap);
100
				addEntrys(con, "SELECT KW FROM ORG_KEY_WORD", tmpMap);
101
				addEntrys(con, "SELECT KW FROM RES_KEY_WORD", tmpMap);
102
				addEntrys(con, "SELECT KW FROM PAP_KEY_WORD", tmpMap);
103
				addEntrys(con, "SELECT KW FROM PAT_KEY_WORD", tmpMap);
104
				ArrayList<DataDictCode> list = new ArrayList<DataDictCode>(tmpMap.size());
105
				list.addAll(tmpMap.values());
106
				Collections.sort(list, new Comparator<DataDictCode>() {
107
					public int compare(DataDictCode o1, DataDictCode o2) {
108
						long l = o2.getCount() - o1.getCount();
109
						if (l == 0)
110
							return 0;
111
						else if (l > 0)
112
							return 1;
113
						else
114
							return -1;
71 115
					}
72
				}
73
				this.dataDictService.setHotKey(codes);
74

116
				});
117
				this.dataDictService.setHotKey(list);
75 118
			} catch (Exception e) {
76
				try {
77
					con.rollback();
78
				} catch (Exception e1) {
79
					e1.printStackTrace();
80
				}
81
			} finally {
82
				try {
83
					con.close();
84
				} catch (Exception e) {
85 119
					e.printStackTrace();
86
				}
120
			} finally {
121
				JdbcUtil.close(con);
87 122
			}
88 123
		} catch (Exception e) {
89 124
			e.printStackTrace();
90 125
		}
91

92 126
	}
93 127
}

+ 46 - 40
src/main/java/com/ekexiu/portal/service/KeyWordService.java

@ -35,8 +35,7 @@ public class KeyWordService {
35 35
	private PatKeyWordDao patKeyWordDao;
36 36
	@Autowrie
37 37
	private PapKeyWordDao papKeyWordDao;
38
	
39
	
38

40 39
	public ProKeyWordDao getProKeyWordDao() {
41 40
		return proKeyWordDao;
42 41
	}
@ -85,93 +84,94 @@ public class KeyWordService {
85 84
		this.papKeyWordDao = papKeyWordDao;
86 85
	}
87 86

88
	public void refreshProfessor(Connection con,String id,String[] kws)throws SQLException{
87
	public void refreshProfessor(Connection con, String id, String[] kws) throws SQLException {
89 88
		proKeyWordDao.delete(con, id);
90
		if(kws!=null && kws.length>0){
89
		if (kws != null && kws.length > 0) {
91 90
			ProKeyWord[] okws = new ProKeyWord[kws.length];
92
			for(int i = 0 ;i < kws.length ; ++i){
91
			for (int i = 0; i < kws.length; ++i) {
93 92
				ProKeyWord okw = new ProKeyWord();
94 93
				okw.setId(id);
95 94
				okw.setKw(kws[i]);
96
				okws[i]= okw;
95
				okws[i] = okw;
97 96
			}
98 97
			proKeyWordDao.insert(con, okws);
99 98
		}
100 99
	}
101
	
102
	public void refreshOrg(Connection con,String id,String[] kws)throws SQLException{
100

101
	public void refreshOrg(Connection con, String id, String[] kws) throws SQLException {
103 102
		orgKeyWordDao.delete(con, id);
104
		if(kws!=null && kws.length>0){
103
		if (kws != null && kws.length > 0) {
105 104
			OrgKeyWord[] okws = new OrgKeyWord[kws.length];
106
			for(int i = 0 ;i < kws.length ; ++i){
105
			for (int i = 0; i < kws.length; ++i) {
107 106
				OrgKeyWord okw = new OrgKeyWord();
108 107
				okw.setId(id);
109 108
				okw.setKw(kws[i]);
110
				okws[i]= okw;
109
				okws[i] = okw;
111 110
			}
112 111
			orgKeyWordDao.insert(con, okws);
113 112
		}
114 113
	}
115
	
116
	public void refreshArticle(Connection con,String id,String[] kws)throws SQLException{
114

115
	public void refreshArticle(Connection con, String id, String[] kws) throws SQLException {
117 116
		artKeyWordDao.delete(con, id);
118
		if(kws!=null && kws.length>0){
117
		if (kws != null && kws.length > 0) {
119 118
			ArtKeyWord[] okws = new ArtKeyWord[kws.length];
120
			for(int i = 0 ;i < kws.length ; ++i){
119
			for (int i = 0; i < kws.length; ++i) {
121 120
				ArtKeyWord okw = new ArtKeyWord();
122 121
				okw.setId(id);
123 122
				okw.setKw(kws[i]);
124
				okws[i]= okw;
123
				okws[i] = okw;
125 124
			}
126 125
			artKeyWordDao.insert(con, okws);
127 126
		}
128 127
	}
129
	
130
	public void refreshResource(Connection con,String id,String[] kws)throws SQLException{
128

129
	public void refreshResource(Connection con, String id, String[] kws) throws SQLException {
131 130
		resKeyWordDao.delete(con, id);
132
		if(kws!=null && kws.length>0){
131
		if (kws != null && kws.length > 0) {
133 132
			ResKeyWord[] okws = new ResKeyWord[kws.length];
134
			for(int i = 0 ;i < kws.length ; ++i){
133
			for (int i = 0; i < kws.length; ++i) {
135 134
				ResKeyWord okw = new ResKeyWord();
136 135
				okw.setId(id);
137 136
				okw.setKw(kws[i]);
138
				okws[i]= okw;
137
				okws[i] = okw;
139 138
			}
140 139
			resKeyWordDao.insert(con, okws);
141 140
		}
142 141
	}
143
	
144
	public void refreshPaper(Connection con,String id,String[] kws)throws SQLException{
142

143
	public void refreshPaper(Connection con, String id, String[] kws) throws SQLException {
145 144
		papKeyWordDao.delete(con, id);
146
		if(kws!=null && kws.length>0){
145
		if (kws != null && kws.length > 0) {
147 146
			PapKeyWord[] okws = new PapKeyWord[kws.length];
148
			for(int i = 0 ;i < kws.length ; ++i){
147
			for (int i = 0; i < kws.length; ++i) {
149 148
				PapKeyWord okw = new PapKeyWord();
150 149
				okw.setId(id);
151 150
				okw.setKw(kws[i]);
152
				okws[i]= okw;
151
				okws[i] = okw;
153 152
			}
154 153
			papKeyWordDao.insert(con, okws);
155 154
		}
156 155
	}
157
	
158
	
159
	public void refreshPatent(Connection con,String id,String[] kws)throws SQLException{
156

157
	public void refreshPatent(Connection con, String id, String[] kws) throws SQLException {
160 158
		patKeyWordDao.delete(con, id);
161
		if(kws!=null && kws.length>0){
159
		if (kws != null && kws.length > 0) {
162 160
			PatKeyWord[] okws = new PatKeyWord[kws.length];
163
			for(int i = 0 ;i < kws.length ; ++i){
161
			for (int i = 0; i < kws.length; ++i) {
164 162
				PatKeyWord okw = new PatKeyWord();
165 163
				okw.setId(id);
166 164
				okw.setKw(kws[i]);
167
				okws[i]= okw;
165
				okws[i] = okw;
168 166
			}
169 167
			patKeyWordDao.insert(con, okws);
170 168
		}
171 169
	}
172
	public static String[] splitKeyWord(String kws){
173
		if(kws == null || kws.trim().length()== 0) return null;
174
		kws = kws.trim();		
170

171
	public static String[] splitKeyWord(String kws) {
172
		if (kws == null || kws.trim().length() == 0)
173
			return null;
174
		kws = kws.trim();
175 175
		ArrayList<String> result = new ArrayList<String>();
176 176
		char[] cs = kws.toCharArray();
177 177
		int mi = cs.length;
@ -180,13 +180,19 @@ public class KeyWordService {
180 180
			for (int i = 0; i < mi; ++i) {
181 181
				char c = cs[i];
182 182
				if (c == ',') {
183
					if (i != begin) result.add(new String(cs, begin, i - begin));
183
					if (i != begin) {
184
						String kw = new String(cs, begin, i - begin);
185
						if (!result.contains(kw)) {
186
							result.add(new String(cs, begin, i - begin));
187
						}
188
					}
184 189
					begin = i + 1;
185 190
				}
186 191
			}
187
			if (begin!= mi) result.add(new String(cs, begin, mi - begin));
188
		} 
189
		return result.isEmpty()?null :result.toArray(new String[result.size()]);
192
			if (begin != mi)
193
				result.add(new String(cs, begin, mi - begin));
194
		}
195
		return result.isEmpty() ? null : result.toArray(new String[result.size()]);
190 196
	}
191
	
197

192 198
}

+ 4 - 0
src/main/resources/database.sql

@ -1581,6 +1581,10 @@ COMMENT ON COLUMN patent_agree.create_time IS '点赞时间';
1581 1581
ALTER TABLE patent_agree ADD PRIMARY KEY (op_id,patent_id);
1582 1582
ALTER TABLE paper_agree ADD PRIMARY KEY (op_id,paper_id);
1583 1583

1584
ALTER TABLE organization ALTER COLUMN is_join SET DEFAULT '0';
1585
UPDATE organization set is_join='0' WHERE is_join is null;
1586
ALTER TABLE organization ALTER COLUMN is_join SET NOT NULL;
1587

1584 1588

1585 1589

1586 1590