CoworkdiscussOperation.jsp
14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@page import="weaver.crm.customer.CustomerShareUtil"%>
<%@page import="java.net.URLDecoder"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="weaver.cowork.CoworkDiscussVO"%>
<%@page import="weaver.systeminfo.setting.HrmUserSettingComInfo"%>
<%@page import="weaver.general.BaseBean"%>
<%@page import="weaver.general.TimeUtil"%>
<%@ page import="weaver.conn.*" %>
<%@ page import="java.io.*" %>
<%@page import="java.util.*"%>
<%@page import="weaver.hrm.*" %>
<%@ page import="weaver.Constants" %>
<%@page import="weaver.general.Util" %>
<%@ page import="weaver.file.FileUpload" %>
<%@page import="net.sf.json.JSONObject"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="weaver.cowork.*" %>
<%@page import="weaver.mobile.plugin.ecology.service.HrmResourceService" %>
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page" />
<jsp:useBean id="csm" class="weaver.cowork.CoworkShareManager" scope="page" />
<jsp:useBean id="CoworkService" class="weaver.cowork.CoworkService" scope="page" />
<%
request.setCharacterEncoding("UTF-8");
FileUpload fu = new FileUpload(request);
String userid = Util.null2String(fu.getParameter("userid"));
JSONObject json = new JSONObject();
HrmResourceService hrs = new HrmResourceService();
User user = hrs.getUserById(Util.getIntValue(userid));
if(user==null) {
json.put("status", "0");
json.put("errMsg", "未登录或登录超时");
out.print(json.toString());
return ;
}
int accessorynum = Util.getIntValue(fu.getParameter("accessory_num"),0);
int deleteField_idnum = Util.getIntValue(fu.getParameter("field_idnum"),0);
String operation = Util.fromScreen(fu.getParameter("method"),user.getLanguage());
String id = Util.null2String(fu.getParameter("id")); //协作id
String did = "";//回复ID
String replyType = ""; //回复类型
String from = "cowork";//用来表示从哪个页面进入的,从协作区进入from="cowork",从其他地方进入from="other"
String extendField=Util.null2String(fu.getParameter("extendField"));
String parm[] = extendField.split("_");
if(parm.length>2){
did = parm[0];
id = parm[1];
if("2".equals(parm[2])){
replyType = "comment";
}
}
String name = Util.fromScreen(fu.getParameter("name"),user.getLanguage());
BaseBean baseBean = new BaseBean();
String typeid = Util.fromScreen(fu.getParameter("typeid"),user.getLanguage());
int isApply = Util.getIntValue(fu.getParameter("isApply"),0);
String levelvalue = Util.null2String(fu.getParameter("levelvalue"),"0");
String creater = Util.fromScreen(fu.getParameter("creater"),user.getLanguage());
String coworkers = Util.fromScreen(fu.getParameter("coworkers"),user.getLanguage());
String begindate = Util.fromScreen(fu.getParameter("begindate"),user.getLanguage());
String beingtime = Util.fromScreen(fu.getParameter("beingtime"),user.getLanguage());
String enddate = Util.fromScreen(fu.getParameter("enddate"),user.getLanguage());
String endtime = Util.fromScreen(fu.getParameter("endtime"),user.getLanguage());
String relatedprj = Util.fromScreen(fu.getParameter("relatedprj"),user.getLanguage()); //相关项目任务
String relatedcus = Util.fromScreen(fu.getParameter("relatedcus"),user.getLanguage()); //相关客户
relatedcus=CustomerShareUtil.customerRightFilter(""+user.getUID(),relatedcus);
String relatedwf = Util.fromScreen(fu.getParameter("relatedwf"),user.getLanguage()); //相关流程
String relateddoc = Util.fromScreen(fu.getParameter("relateddoc"),user.getLanguage()); //相关文档
if("0".equals(relateddoc)) relateddoc="";
String relatedacc =Util.fromScreen(fu.getParameter("relatedacc"),user.getLanguage()); //相关附件
String projectIDs = Util.null2String(fu.getParameter("projectIDs"));//td11838 //相关项目
String principal = Util.null2String(fu.getParameter("txtPrincipal")); //协作负责人
String commentuserid = Util.null2String(fu.getParameter("commentuserid")); //被评论人id
String topdiscussid = Util.null2String(fu.getParameter("topdiscussid")); //被评论的留言id
String approvalAtatus = Util.null2String(fu.getParameter("approvalAtatus")); //审批状态 1 为待审批
String isApproval = "";
String isAnonymous = ""; //是否匿名
String createdate =TimeUtil.getCurrentDateString(); //当前日期
String createtime =TimeUtil.getOnlyCurrentTimeString(); //当前时间
String status ="1";
char flag = 2;
String Proc="";
String userId =""+user.getUID();
boolean isoracle = (RecordSet.getDBType()).equals("oracle");
String disType=Util.null2String((String)session.getAttribute("disType")); //协作讨论显示方式,tree为树形
int floorNum=0;
if(operation.equals("doremark")){ //回复讨论
try{
String content=Util.null2String(fu.getParameter("content"));
CoworkDAO dao = new CoworkDAO(Util.getIntValue(id));
CoworkItemsVO vo = dao.getCoworkItemsVO();
String cname = Util.null2String(vo.getName()); //协作名称
String ccreater = Util.null2String(vo.getCreater()); //协作创建人
principal=Util.null2String(vo.getPrincipal()); //协作负责人
String ctypeid=Util.null2String(vo.getTypeid()); //所属协作区
String cbegindate = Util.null2String(vo.getBegindate()); //开始日期
String cbeingtime = Util.null2String(vo.getBeingtime()); //开始时间
String cenddate = Util.null2String(vo.getEnddate()); //结束日期
String cendtime = Util.null2String(vo.getEndtime()); //结束时间
String capprovalAtatus=vo.getApprovalAtatus(); //审批状态,待审批
isAnonymous = vo.getIsAnonymous();
isAnonymous=isAnonymous.equals("")?"0":isAnonymous;
isApproval = vo.getIsApproval();
CoworkDiscussVO cvo = dao.getCoworkDiscussVO(did);
topdiscussid = did; //被评论的留言id
commentuserid = cvo.getDiscussant(); //被评论人id
if(!"".equals(relatedacc)){
csm.addCoworkDocShare(userid,relatedacc,typeid,id,principal); //添加附件共享
}
int replayid= Util.getIntValue(did);
int commentid=replayid;
String sql="";
if(!replyType.equals("comment")){ //引用产生新的楼层
//获取当前最大楼数
sql="select max(floorNum) as floorNum from cowork_discuss where coworkid="+id;
RecordSet.execute(sql);
if(RecordSet.next())
floorNum=RecordSet.getInt("floorNum");
if(floorNum==-1)
floorNum=0;
floorNum=floorNum+1;
}else
replayid=0;
//添加讨论
Proc=id+flag+userid+flag+createdate+flag+createtime+flag+content+flag+relatedprj+flag+relatedcus+flag+relatedwf+flag+relateddoc+flag+relatedacc+flag+projectIDs+flag+floorNum+flag+replayid;
RecordSet.executeProc("cowork_discuss_insert",Proc);
RecordSet.executeSql("select max(id) as maxid from cowork_discuss where coworkid="+id+" and discussant="+userid);
String currentid="0";
String discussid="0";
if(RecordSet.next()){
currentid=RecordSet.getString("maxid");
}
ArrayList reminderidList=new ArrayList();
if(replyType.equals("comment")){ //
RecordSet.executeSql("update cowork_discuss set commentid="+commentid+",topdiscussid="+topdiscussid+",commentuserid="+commentuserid+" where id="+currentid);
sql="select discussant from cowork_discuss where topdiscussid="+topdiscussid+" or id="+topdiscussid;
}else{
//引用、评论时计算回复数
RecordSet.executeSql("update cowork_items set replyNum=replyNum+1,lastupdatedate='"+createdate+"',lastupdatetime='"+createtime+"',lastdiscussant="+(isAnonymous.equals("1")?"0":userId)+" where id="+id);
sql="select discussant from cowork_discuss where id="+replayid;
}
RecordSet.execute(sql);
//提醒评论相关人
while(RecordSet.next()){
String reminderid=RecordSet.getString("discussant");
if(!reminderidList.contains(reminderid)&&!reminderid.equals(userid)){
reminderidList.add(reminderid);
}
}
for(int i=0;i<reminderidList.size();i++){
discussid=replyType.equals("comment")?topdiscussid:currentid;
sql="select id from cowork_remind where reminderid="+reminderidList.get(i)+" and discussid="+discussid;
RecordSet.execute(sql);
if(RecordSet.next()){
sql="update cowork_remind set createdate='"+createdate+"',createtime='"+createtime+"' where reminderid="+reminderidList.get(i)+" and discussid="+discussid;
}else{
sql="insert into cowork_remind(reminderid,discussid,coworkid,createdate,createtime) values"+
"("+reminderidList.get(i)+","+discussid+","+id+",'"+createdate+"','"+createtime+"')";
}
RecordSet.execute(sql);
}
RecordSet.executeSql("update cowork_discuss set approvalAtatus="+isApproval+",isAnonymous="+isAnonymous+" where id="+currentid);
//提醒协作负责人
if(!reminderidList.contains(principal)&&!principal.equals(userid)){
reminderidList.add(principal);
}
//协作提醒
CoworkService.addSysRemind(id,userid,reminderidList);
if(replyType.equals("comment")){
//只清除评论相关人的阅读记录
for(int i=0;i<reminderidList.size();i++){
CoworkService.delReadByUserid(id,(String)reminderidList.get(i));
}
}else{
//所有看过协作的参与者,都会记录到cowork_read,协作更新后就要删除cowork_read中的已经查看者
CoworkService.delRead(id);
//将当前回复者添加到已读者中
CoworkService.addRead(id,userid);
}
json.put("status", "1");
}catch(Exception ex){
ex.printStackTrace();
json.put("status", "0");
String errMsg = Util.null2String(ex.getMessage());
errMsg = URLEncoder.encode(errMsg, "UTF-8");
errMsg = errMsg.replaceAll("\\+","%20");
json.put("errMsg", errMsg);
}
out.print(json.toString());
}else if(operation.equals("subcontent")){
//回复
try{
String content=Util.null2String(fu.getParameter("content"));
if(!"".equals(relatedacc)){
csm.addCoworkDocShare(userid,relatedacc,typeid,id,principal); //添加附件共享
}
int replayid= Util.getIntValue(did);
int commentid=replayid;
String sql="";
if(!replyType.equals("comment")){ //引用产生新的楼层
//获取当前最大楼数
sql="select max(floorNum) as floorNum from cowork_discuss where coworkid="+id;
RecordSet.execute(sql);
if(RecordSet.next())
floorNum=RecordSet.getInt("floorNum");
if(floorNum==-1)
floorNum=0;
floorNum=floorNum+1;
}else
replayid=0;
//添加讨论
Proc=id+flag+userid+flag+createdate+flag+createtime+flag+content+flag+relatedprj+flag+relatedcus+flag+relatedwf+flag+relateddoc+flag+relatedacc+flag+projectIDs+flag+floorNum+flag+replayid;
RecordSet.executeProc("cowork_discuss_insert",Proc);
RecordSet.executeSql("select max(id) as maxid from cowork_discuss where coworkid="+id+" and discussant="+userid);
String currentid="0";
String discussid="0";
if(RecordSet.next()){
currentid=RecordSet.getString("maxid");
}
ArrayList reminderidList=new ArrayList();
if(replyType.equals("comment")){ //
RecordSet.executeSql("update cowork_discuss set commentid="+commentid+",topdiscussid="+topdiscussid+",commentuserid="+commentuserid+" where id="+currentid);
sql="select discussant from cowork_discuss where topdiscussid="+topdiscussid+" or id="+topdiscussid;
}else{
//引用、评论时计算回复数
RecordSet.executeSql("update cowork_items set replyNum=replyNum+1,lastupdatedate='"+createdate+"',lastupdatetime='"+createtime+"',lastdiscussant="+(isAnonymous.equals("1")?"0":userId)+" where id="+id);
sql="select discussant from cowork_discuss where id="+replayid;
}
RecordSet.execute(sql);
//提醒评论相关人
while(RecordSet.next()){
String reminderid=RecordSet.getString("discussant");
if(!reminderidList.contains(reminderid)&&!reminderid.equals(userid)){
reminderidList.add(reminderid);
}
}
for(int i=0;i<reminderidList.size();i++){
discussid=replyType.equals("comment")?topdiscussid:currentid;
sql="select id from cowork_remind where reminderid="+reminderidList.get(i)+" and discussid="+discussid;
RecordSet.execute(sql);
if(RecordSet.next()){
sql="update cowork_remind set createdate='"+createdate+"',createtime='"+createtime+"' where reminderid="+reminderidList.get(i)+" and discussid="+discussid;
}else{
sql="insert into cowork_remind(reminderid,discussid,coworkid,createdate,createtime) values"+
"("+reminderidList.get(i)+","+discussid+","+id+",'"+createdate+"','"+createtime+"')";
}
RecordSet.execute(sql);
}
RecordSet.executeSql("update cowork_discuss set approvalAtatus="+isApproval+",isAnonymous="+isAnonymous+" where id="+currentid);
//提醒协作负责人
if(!reminderidList.contains(principal)&&!principal.equals(userid)){
reminderidList.add(principal);
}
//协作提醒
CoworkService.addSysRemind(id,userid,reminderidList);
if(replyType.equals("comment")){
//只清除评论相关人的阅读记录
for(int i=0;i<reminderidList.size();i++){
CoworkService.delReadByUserid(id,(String)reminderidList.get(i));
}
}else{
//所有看过协作的参与者,都会记录到cowork_read,协作更新后就要删除cowork_read中的已经查看者
CoworkService.delRead(id);
//将当前回复者添加到已读者中
CoworkService.addRead(id,userid);
}
json.put("status", "1");
}catch(Exception ex){
ex.printStackTrace();
json.put("status", "0");
String errMsg = Util.null2String(ex.getMessage());
errMsg = URLEncoder.encode(errMsg, "UTF-8");
errMsg = errMsg.replaceAll("\\+","%20");
json.put("errMsg", errMsg);
}
out.print(json.toString());
}
%>