MySurveyDesignAction.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. package com.key.dwsurvey.action.survey;
  2. import com.key.common.base.entity.User;
  3. import com.key.common.base.service.AccountManager;
  4. import com.key.common.utils.DiaowenProperty;
  5. import com.key.common.utils.JspToHtml;
  6. import com.key.common.utils.web.Struts2Utils;
  7. import com.key.dwsurvey.entity.Question;
  8. import com.key.dwsurvey.entity.SurveyDetail;
  9. import com.key.dwsurvey.entity.SurveyDirectory;
  10. import com.key.dwsurvey.entity.SurveyStyle;
  11. import com.key.dwsurvey.service.QuestionManager;
  12. import com.key.dwsurvey.service.SurveyDirectoryManager;
  13. import com.key.dwsurvey.service.SurveyReqUrlManager;
  14. import com.key.dwsurvey.service.SurveyStyleManager;
  15. import com.opensymphony.xwork2.ActionSupport;
  16. import org.apache.commons.lang.time.DateUtils;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.apache.struts2.ServletActionContext;
  19. import org.apache.struts2.convention.annotation.*;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import javax.servlet.RequestDispatcher;
  22. import javax.servlet.ServletContext;
  23. import javax.servlet.ServletOutputStream;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import javax.servlet.http.HttpServletResponseWrapper;
  27. import java.io.*;
  28. import java.net.URLDecoder;
  29. import java.text.SimpleDateFormat;
  30. import java.util.Calendar;
  31. import java.util.Date;
  32. import java.util.List;
  33. /**
  34. * 设计问卷
  35. * @author keyuan(keyuan258@gmail.com)
  36. *
  37. * https://github.com/wkeyuan/DWSurvey
  38. * http://dwsurvey.net
  39. *
  40. */
  41. @Namespace("/design")
  42. @InterceptorRefs({ @InterceptorRef("paramsPrepareParamsStack")})
  43. @Results({
  44. @Result(name=ActionSupport.SUCCESS,location="/WEB-INF/page/content/diaowen-design/design-survey.jsp",type=Struts2Utils.DISPATCHER),
  45. @Result(name=MySurveyDesignAction.PREVIEWDEV,location="/WEB-INF/page/content/diaowen-design/survey_preview_dev.jsp",type=Struts2Utils.DISPATCHER),
  46. @Result(name=MySurveyDesignAction.COLLECTSURVEY,location="my-collect.action?surveyId=${surveyId}",type=Struts2Utils.REDIRECT),
  47. @Result(name=MySurveyDesignAction.RELOADDESIGN,location="/design/my-survey-design.action?surveyId=${surveyId}",type=Struts2Utils.REDIRECT)
  48. })
  49. @AllowedMethods({"previewDev","devSurvey","ajaxSave","copySurvey"})
  50. public class MySurveyDesignAction extends ActionSupport{
  51. //发布设置
  52. protected final static String PREVIEWDEV="previewDev";
  53. protected final static String COLLECTSURVEY="collectSurvey";
  54. protected final static String RELOADDESIGN="reloadDesign";
  55. @Autowired
  56. private QuestionManager questionManager;
  57. @Autowired
  58. private SurveyDirectoryManager surveyDirectoryManager;
  59. @Autowired
  60. private SurveyStyleManager surveyStyleManager;
  61. @Autowired
  62. private SurveyReqUrlManager surveyReqUrlManager;
  63. @Autowired
  64. private AccountManager accountManager;
  65. private String surveyId;
  66. @Override
  67. public String execute() throws Exception {
  68. buildSurvey();
  69. return SUCCESS;
  70. }
  71. public String previewDev() throws Exception {
  72. buildSurvey();
  73. return PREVIEWDEV;
  74. }
  75. public String devSurvey() throws Exception {
  76. SurveyDirectory survey=surveyDirectoryManager.get(surveyId);
  77. Date createDate=survey.getCreateDate();
  78. SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd/");
  79. try{
  80. String url="/survey!answerSurvey.action?surveyId="+surveyId;
  81. String filePath="WEB-INF/wjHtml/"+dateFormat.format(createDate);
  82. String fileName=surveyId+".html";
  83. new JspToHtml().postJspToHtml(url, filePath, fileName);
  84. survey.setHtmlPath(filePath+fileName);
  85. url="/survey!answerSurveryMobile.action?surveyId="+surveyId;
  86. filePath="WEB-INF/wjHtml/"+dateFormat.format(createDate);
  87. fileName="m_"+surveyId+".html";
  88. new JspToHtml().postJspToHtml(url, filePath, fileName);
  89. List<Question> questions=questionManager.find(surveyId, "2");
  90. survey.setSurveyQuNum(questions.size());
  91. survey.setSurveyState(1);
  92. surveyDirectoryManager.save(survey);
  93. }catch (Exception e) {
  94. e.printStackTrace();
  95. }
  96. return COLLECTSURVEY;
  97. }
  98. private void buildSurvey() {
  99. //判断是否拥有权限
  100. User user= accountManager.getCurUser();
  101. if(user!=null){
  102. String userId=user.getId();
  103. SurveyDirectory surveyDirectory=surveyDirectoryManager.getSurveyByUser(surveyId, userId);
  104. if(surveyDirectory!=null){
  105. surveyDirectoryManager.getSurveyDetail(surveyId, surveyDirectory);
  106. // SurveyDirectory survey=surveyDirectoryManager.getSurvey(surveyId);
  107. List<Question> questions=questionManager.findDetails(surveyId, "2");
  108. surveyDirectory.setQuestions(questions);
  109. surveyDirectory.setSurveyQuNum(questions.size());
  110. surveyDirectoryManager.save(surveyDirectory);
  111. Struts2Utils.setReqAttribute("survey", surveyDirectory);
  112. SurveyStyle surveyStyle=surveyStyleManager.getBySurveyId(surveyId);
  113. Struts2Utils.setReqAttribute("surveyStyle", surveyStyle);
  114. Struts2Utils.setReqAttribute("prevHost", DiaowenProperty.STORAGE_URL_PREFIX);
  115. }else{
  116. Struts2Utils.setReqAttribute("msg", "未登录或没有相应数据权限");
  117. }
  118. }else{
  119. Struts2Utils.setReqAttribute("msg", "未登录或没有相应数据权限");
  120. }
  121. }
  122. public String ajaxSave() throws Exception {
  123. HttpServletRequest request=Struts2Utils.getRequest();
  124. HttpServletResponse response=Struts2Utils.getResponse();
  125. String svyName=request.getParameter("svyName");
  126. String svyNote=request.getParameter("svyNote");
  127. //属性
  128. String effective=request.getParameter("effective");
  129. String effectiveIp=request.getParameter("effectiveIp");
  130. String rule=request.getParameter("rule");
  131. String ruleCode=request.getParameter("ruleCode");
  132. String refresh=request.getParameter("refresh");
  133. String mailOnly=request.getParameter("mailOnly");
  134. String ynEndNum=request.getParameter("ynEndNum");
  135. String endNum=request.getParameter("endNum");
  136. String ynEndTime=request.getParameter("ynEndTime");
  137. String endTime=request.getParameter("endTime");
  138. String showShareSurvey=request.getParameter("showShareSurvey");
  139. String showAnswerDa=request.getParameter("showAnswerDa");
  140. SurveyDirectory survey=surveyDirectoryManager.getSurvey(surveyId);
  141. SurveyDetail surveyDetail=survey.getSurveyDetail();
  142. User user= accountManager.getCurUser();
  143. if(user!=null && survey!=null){
  144. String userId=user.getId();
  145. if(userId.equals(survey.getUserId())){
  146. if( svyNote!=null){
  147. svyNote=URLDecoder.decode(svyNote,"utf-8");
  148. surveyDetail.setSurveyNote(svyNote);
  149. }
  150. if(svyName!=null && !"".equals(svyName)){
  151. svyName=URLDecoder.decode(svyName,"utf-8");
  152. survey.setSurveyName(svyName);
  153. }
  154. //保存属性
  155. if(effective!=null && !"".equals(effective)){
  156. surveyDetail.setEffective(Integer.parseInt(effective));
  157. }
  158. if(effectiveIp!=null && !"".equals(effectiveIp)){
  159. surveyDetail.setEffectiveIp(Integer.parseInt(effectiveIp));
  160. }
  161. if(rule!=null && !"".equals(rule)){
  162. surveyDetail.setRule(Integer.parseInt(rule));
  163. surveyDetail.setRuleCode(ruleCode);
  164. }
  165. if(refresh!=null && !"".equals(refresh)){
  166. surveyDetail.setRefresh(Integer.parseInt(refresh));
  167. }
  168. if(mailOnly!=null && !"".equals(mailOnly)){
  169. surveyDetail.setMailOnly(Integer.parseInt(mailOnly));
  170. }
  171. if(ynEndNum!=null && !"".equals(ynEndNum)){
  172. surveyDetail.setYnEndNum(Integer.parseInt(ynEndNum));
  173. //surveyDetail.setEndNum(Integer.parseInt(endNum));
  174. if(endNum!=null && endNum.matches("\\d*")){
  175. surveyDetail.setEndNum(Integer.parseInt(endNum));
  176. }
  177. }
  178. if(ynEndTime!=null && !"".equals(ynEndTime)){
  179. surveyDetail.setYnEndTime(Integer.parseInt(ynEndTime));
  180. if(StringUtils.isNotEmpty(endTime)){
  181. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  182. surveyDetail.setEndTime(simpleDateFormat.parse(endTime));
  183. }
  184. }
  185. if(showShareSurvey!=null && !"".equals(showShareSurvey)){
  186. surveyDetail.setShowShareSurvey(Integer.parseInt(showShareSurvey));
  187. survey.setIsShare(Integer.parseInt(showShareSurvey));
  188. }
  189. if(showAnswerDa!=null && !"".equals(showAnswerDa)){
  190. surveyDetail.setShowAnswerDa(Integer.parseInt(showAnswerDa));
  191. survey.setViewAnswer(Integer.parseInt(showAnswerDa));
  192. }
  193. surveyDirectoryManager.save(survey);
  194. response.getWriter().write("true");
  195. }
  196. }
  197. return NONE;
  198. }
  199. public String getSurveyId() {
  200. return surveyId;
  201. }
  202. public void setSurveyId(String surveyId) {
  203. this.surveyId = surveyId;
  204. }
  205. public String copySurvey() throws Exception {
  206. //引用问卷
  207. // id="402880e541d051000141d0f708ff0004";
  208. HttpServletRequest request=Struts2Utils.getRequest();
  209. String fromBankId=request.getParameter("fromBankId");
  210. String surveyName=request.getParameter("surveyName");
  211. surveyName=URLDecoder.decode(surveyName,"utf-8");
  212. String tag=request.getParameter("tag");
  213. tag="2";
  214. SurveyDirectory directory=surveyDirectoryManager.createBySurvey(fromBankId,surveyName,tag);
  215. surveyId=directory.getId();
  216. return RELOADDESIGN;
  217. }
  218. private void buildSurveyHtml() throws Exception{
  219. HttpServletRequest request=Struts2Utils.getRequest();
  220. HttpServletResponse response=Struts2Utils.getResponse();
  221. String url = "";
  222. String name = "";
  223. ServletContext sc = ServletActionContext.getServletContext();
  224. String file_name = request.getParameter("file_name");
  225. url = "/design/my-collect.action?surveyId=402880ea4675ac62014675ac7b3a0000";
  226. // 这是生成的html文件名,如index.htm.
  227. name = "/survey.htm";
  228. name = sc.getRealPath(name);
  229. RequestDispatcher rd = sc.getRequestDispatcher(url);
  230. final ByteArrayOutputStream os = new ByteArrayOutputStream();
  231. final ServletOutputStream stream = new ServletOutputStream() {
  232. public void write(byte[] data, int offset, int length) {
  233. os.write(data, offset, length);
  234. }
  235. public void write(int b) throws IOException {
  236. os.write(b);
  237. }
  238. };
  239. final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,"utf-8"));
  240. HttpServletResponse rep = new HttpServletResponseWrapper(response) {
  241. public ServletOutputStream getOutputStream() {
  242. return stream;
  243. }
  244. public PrintWriter getWriter() {
  245. return pw;
  246. }
  247. };
  248. // rd.include(request, rep);
  249. rd.forward(request,rep);
  250. pw.flush();
  251. // 把jsp输出的内容写到xxx.htm
  252. File file = new File(name);
  253. if (!file.exists()) {
  254. file.createNewFile();
  255. }
  256. FileOutputStream fos = new FileOutputStream(file);
  257. os.writeTo(fos);
  258. fos.close();
  259. }
  260. }