jiapeng 7 anos atrás
pai
commit
4afa783679

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

1
package com.ekexiu.portal.job;
1
package com.ekexiu.portal.job;
2

2

3
import java.sql.Connection;
3
import java.sql.Connection;
4
import java.sql.ResultSet;
5
import java.sql.SQLException;
6
import java.sql.Statement;
4
import java.util.ArrayList;
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
import javax.sql.DataSource;
13
import javax.sql.DataSource;
8

14

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

18

12
import com.ekexiu.portal.pojo.DataDictCode;
19
import com.ekexiu.portal.pojo.DataDictCode;
13
import com.ekexiu.portal.service.DataDictService;
20
import com.ekexiu.portal.service.DataDictService;
53
		this.dataDictService = dataDictService;
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
	@Override
91
	@Override
57
	public void run() {
92
	public void run() {
93

94
		Map<String, DataDictCode> tmpMap = new HashMap<String, DataDictCode>();
58
		try {
95
		try {
59
			Connection con = this.dataSource.getConnection();
96
			Connection con = this.dataSource.getConnection();
60
			try {
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
			} catch (Exception e) {
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
					e.printStackTrace();
119
					e.printStackTrace();
86
				}
120
			} finally {
121
				JdbcUtil.close(con);
87
			}
122
			}
88
		} catch (Exception e) {
123
		} catch (Exception e) {
89
			e.printStackTrace();
124
			e.printStackTrace();
90
		}
125
		}
91

92
	}
126
	}
93
}
127
}

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

35
	private PatKeyWordDao patKeyWordDao;
35
	private PatKeyWordDao patKeyWordDao;
36
	@Autowrie
36
	@Autowrie
37
	private PapKeyWordDao papKeyWordDao;
37
	private PapKeyWordDao papKeyWordDao;
38
	
39
	
38

40
	public ProKeyWordDao getProKeyWordDao() {
39
	public ProKeyWordDao getProKeyWordDao() {
41
		return proKeyWordDao;
40
		return proKeyWordDao;
42
	}
41
	}
85
		this.papKeyWordDao = papKeyWordDao;
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
		proKeyWordDao.delete(con, id);
88
		proKeyWordDao.delete(con, id);
90
		if(kws!=null && kws.length>0){
89
		if (kws != null && kws.length > 0) {
91
			ProKeyWord[] okws = new ProKeyWord[kws.length];
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
				ProKeyWord okw = new ProKeyWord();
92
				ProKeyWord okw = new ProKeyWord();
94
				okw.setId(id);
93
				okw.setId(id);
95
				okw.setKw(kws[i]);
94
				okw.setKw(kws[i]);
96
				okws[i]= okw;
95
				okws[i] = okw;
97
			}
96
			}
98
			proKeyWordDao.insert(con, okws);
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
		orgKeyWordDao.delete(con, id);
102
		orgKeyWordDao.delete(con, id);
104
		if(kws!=null && kws.length>0){
103
		if (kws != null && kws.length > 0) {
105
			OrgKeyWord[] okws = new OrgKeyWord[kws.length];
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
				OrgKeyWord okw = new OrgKeyWord();
106
				OrgKeyWord okw = new OrgKeyWord();
108
				okw.setId(id);
107
				okw.setId(id);
109
				okw.setKw(kws[i]);
108
				okw.setKw(kws[i]);
110
				okws[i]= okw;
109
				okws[i] = okw;
111
			}
110
			}
112
			orgKeyWordDao.insert(con, okws);
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
		artKeyWordDao.delete(con, id);
116
		artKeyWordDao.delete(con, id);
118
		if(kws!=null && kws.length>0){
117
		if (kws != null && kws.length > 0) {
119
			ArtKeyWord[] okws = new ArtKeyWord[kws.length];
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
				ArtKeyWord okw = new ArtKeyWord();
120
				ArtKeyWord okw = new ArtKeyWord();
122
				okw.setId(id);
121
				okw.setId(id);
123
				okw.setKw(kws[i]);
122
				okw.setKw(kws[i]);
124
				okws[i]= okw;
123
				okws[i] = okw;
125
			}
124
			}
126
			artKeyWordDao.insert(con, okws);
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
		resKeyWordDao.delete(con, id);
130
		resKeyWordDao.delete(con, id);
132
		if(kws!=null && kws.length>0){
131
		if (kws != null && kws.length > 0) {
133
			ResKeyWord[] okws = new ResKeyWord[kws.length];
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
				ResKeyWord okw = new ResKeyWord();
134
				ResKeyWord okw = new ResKeyWord();
136
				okw.setId(id);
135
				okw.setId(id);
137
				okw.setKw(kws[i]);
136
				okw.setKw(kws[i]);
138
				okws[i]= okw;
137
				okws[i] = okw;
139
			}
138
			}
140
			resKeyWordDao.insert(con, okws);
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
		papKeyWordDao.delete(con, id);
144
		papKeyWordDao.delete(con, id);
146
		if(kws!=null && kws.length>0){
145
		if (kws != null && kws.length > 0) {
147
			PapKeyWord[] okws = new PapKeyWord[kws.length];
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
				PapKeyWord okw = new PapKeyWord();
148
				PapKeyWord okw = new PapKeyWord();
150
				okw.setId(id);
149
				okw.setId(id);
151
				okw.setKw(kws[i]);
150
				okw.setKw(kws[i]);
152
				okws[i]= okw;
151
				okws[i] = okw;
153
			}
152
			}
154
			papKeyWordDao.insert(con, okws);
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
		patKeyWordDao.delete(con, id);
158
		patKeyWordDao.delete(con, id);
161
		if(kws!=null && kws.length>0){
159
		if (kws != null && kws.length > 0) {
162
			PatKeyWord[] okws = new PatKeyWord[kws.length];
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
				PatKeyWord okw = new PatKeyWord();
162
				PatKeyWord okw = new PatKeyWord();
165
				okw.setId(id);
163
				okw.setId(id);
166
				okw.setKw(kws[i]);
164
				okw.setKw(kws[i]);
167
				okws[i]= okw;
165
				okws[i] = okw;
168
			}
166
			}
169
			patKeyWordDao.insert(con, okws);
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
		ArrayList<String> result = new ArrayList<String>();
175
		ArrayList<String> result = new ArrayList<String>();
176
		char[] cs = kws.toCharArray();
176
		char[] cs = kws.toCharArray();
177
		int mi = cs.length;
177
		int mi = cs.length;
180
			for (int i = 0; i < mi; ++i) {
180
			for (int i = 0; i < mi; ++i) {
181
				char c = cs[i];
181
				char c = cs[i];
182
				if (c == ',') {
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
					begin = i + 1;
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
ALTER TABLE patent_agree ADD PRIMARY KEY (op_id,patent_id);
1581
ALTER TABLE patent_agree ADD PRIMARY KEY (op_id,patent_id);
1582
ALTER TABLE paper_agree ADD PRIMARY KEY (op_id,paper_id);
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