QuRadioAction.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.key.dwsurvey.action;
  2. import java.io.UnsupportedEncodingException;
  3. import java.net.URLDecoder;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.struts2.convention.annotation.*;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.util.WebUtils;
  12. import com.key.common.utils.web.Struts2Utils;
  13. import com.key.common.CheckType;
  14. import com.key.common.QuType;
  15. import com.key.dwsurvey.entity.QuRadio;
  16. import com.key.dwsurvey.entity.Question;
  17. import com.key.dwsurvey.entity.QuestionLogic;
  18. import com.key.dwsurvey.service.QuRadioManager;
  19. import com.key.dwsurvey.service.QuestionManager;
  20. import com.opensymphony.xwork2.ActionSupport;
  21. /**
  22. * 单选题 action
  23. * @author KeYuan(keyuan258@gmail.com)
  24. *
  25. * https://github.com/wkeyuan/DWSurvey
  26. * http://dwsurvey.net
  27. *
  28. */
  29. @Namespaces({@Namespace("/design")})
  30. @InterceptorRefs({ @InterceptorRef("paramsPrepareParamsStack") })
  31. @AllowedMethods({"ajaxSave","ajaxDelete"})
  32. @Results({})
  33. public class QuRadioAction extends ActionSupport{
  34. @Autowired
  35. private QuestionManager questionManager;
  36. @Autowired
  37. private QuRadioManager quRadioManager;
  38. public String ajaxSave() throws Exception {
  39. HttpServletRequest request=Struts2Utils.getRequest();
  40. HttpServletResponse response=Struts2Utils.getResponse();
  41. try{
  42. Question entity=ajaxBuildSaveOption(request);
  43. questionManager.save(entity);
  44. String resultJson=buildResultJson(entity);
  45. response.getWriter().write(resultJson);
  46. }catch (Exception e) {
  47. e.printStackTrace();
  48. response.getWriter().write("error");
  49. }
  50. return null;
  51. }
  52. private Question ajaxBuildSaveOption(HttpServletRequest request) throws UnsupportedEncodingException {
  53. String quId=request.getParameter("quId");
  54. String belongId=request.getParameter("belongId");
  55. String quTitle=request.getParameter("quTitle");
  56. String orderById=request.getParameter("orderById");
  57. String tag=request.getParameter("tag");
  58. String isRequired=request.getParameter("isRequired");
  59. String hv=request.getParameter("hv");
  60. String randOrder=request.getParameter("randOrder");
  61. String cellCount=request.getParameter("cellCount");
  62. String contactsAttr=request.getParameter("contactsAttr");
  63. String contactsField=request.getParameter("contactsField");
  64. if("".equals(quId)){
  65. quId=null;
  66. }
  67. Question entity=questionManager.getModel(quId);
  68. entity.setBelongId(belongId);
  69. if(quTitle!=null){
  70. quTitle=URLDecoder.decode(quTitle,"utf-8");
  71. entity.setQuTitle(quTitle);
  72. }
  73. entity.setOrderById(Integer.parseInt(orderById));
  74. entity.setTag(Integer.parseInt(tag));
  75. entity.setQuType(QuType.RADIO);
  76. isRequired=(isRequired==null || "".equals(isRequired))?"0":isRequired;
  77. hv=(hv==null || "".equals(hv))?"0":hv;
  78. randOrder=(randOrder==null || "".equals(randOrder))?"0":randOrder;
  79. cellCount=(cellCount==null || "".equals(cellCount))?"0":cellCount;
  80. contactsAttr=(contactsAttr==null || "".equals(contactsAttr))?"0":contactsAttr;
  81. entity.setContactsAttr(Integer.parseInt(contactsAttr));
  82. entity.setContactsField(contactsField);
  83. entity.setIsRequired(Integer.parseInt(isRequired));
  84. entity.setHv(Integer.parseInt(hv));
  85. entity.setRandOrder(Integer.parseInt(randOrder));
  86. entity.setCellCount(Integer.parseInt(cellCount));
  87. Map<String, Object> optionNameMap=WebUtils.getParametersStartingWith(request, "optionValue_");
  88. List<QuRadio> quRadios=new ArrayList<QuRadio>();
  89. for (String key : optionNameMap.keySet()) {
  90. String optionId=request.getParameter("optionId_"+key);
  91. String isNote=request.getParameter("isNote_"+key);
  92. String checkType=request.getParameter("checkType_"+key);
  93. String isRequiredFill=request.getParameter("isRequiredFill_"+key);
  94. Object optionName=optionNameMap.get(key);
  95. String optionNameValue=(optionName!=null)?optionName.toString():"";
  96. QuRadio quRadio=new QuRadio();
  97. if("".equals(optionId)){
  98. optionId=null;
  99. }
  100. quRadio.setId(optionId);
  101. // quRadio.setOptionTitle(key);
  102. optionNameValue=URLDecoder.decode(optionNameValue,"utf-8");
  103. quRadio.setOptionName(optionNameValue);
  104. quRadio.setOrderById(Integer.parseInt(key));
  105. isNote=(isNote==null || "".equals(isNote))?"0":isNote;
  106. checkType=(checkType==null || "".equals(checkType))?"NO":checkType;
  107. isRequiredFill=(isRequiredFill==null || "".equals(isRequiredFill))?"0":isRequiredFill;
  108. quRadio.setIsNote(Integer.parseInt(isNote));
  109. quRadio.setCheckType(CheckType.valueOf(checkType));
  110. quRadio.setIsRequiredFill(Integer.parseInt(isRequiredFill));
  111. quRadios.add(quRadio);
  112. }
  113. entity.setQuRadios(quRadios);
  114. //逻辑选项设置
  115. Map<String, Object> quLogicIdMap=WebUtils.getParametersStartingWith(request, "quLogicId_");
  116. List<QuestionLogic> quLogics=new ArrayList<QuestionLogic>();
  117. for (String key : quLogicIdMap.keySet()) {
  118. String cgQuItemId=request.getParameter("cgQuItemId_"+key);
  119. String skQuId=request.getParameter("skQuId_"+key);
  120. String visibility=request.getParameter("visibility_"+key);
  121. String logicType=request.getParameter("logicType_"+key);
  122. Object quLogicId=quLogicIdMap.get(key);
  123. String quLogicIdValue=(quLogicId!=null)?quLogicId.toString():null;
  124. QuestionLogic quLogic=new QuestionLogic();
  125. quLogic.setId(quLogicIdValue);
  126. quLogic.setCgQuItemId(cgQuItemId);
  127. quLogic.setSkQuId(skQuId);
  128. quLogic.setVisibility(Integer.parseInt(visibility));
  129. quLogic.setTitle(key);
  130. quLogic.setLogicType(logicType);
  131. quLogics.add(quLogic);
  132. }
  133. entity.setQuestionLogics(quLogics);
  134. return entity;
  135. }
  136. public static String buildResultJson(Question entity){
  137. StringBuffer strBuf=new StringBuffer();
  138. strBuf.append("{id:'").append(entity.getId());
  139. strBuf.append("',orderById:");
  140. strBuf.append(entity.getOrderById());
  141. strBuf.append(",quItems:[");
  142. List<QuRadio> quRadios=entity.getQuRadios();
  143. for (QuRadio quRadio : quRadios) {
  144. strBuf.append("{id:'").append(quRadio.getId());
  145. strBuf.append("',title:'").append(quRadio.getOrderById()).append("'},");
  146. }
  147. int strLen=strBuf.length();
  148. if(strBuf.lastIndexOf(",")==(strLen-1)){
  149. strBuf.replace(strLen-1, strLen, "");
  150. }
  151. strBuf.append("]");
  152. strBuf.append(",quLogics:[");
  153. List<QuestionLogic> questionLogics=entity.getQuestionLogics();
  154. if(questionLogics!=null){
  155. for (QuestionLogic questionLogic : questionLogics) {
  156. strBuf.append("{id:'").append(questionLogic.getId());
  157. strBuf.append("',title:'").append(questionLogic.getTitle()).append("'},");
  158. }
  159. }
  160. strLen=strBuf.length();
  161. if(strBuf.lastIndexOf(",")==(strLen-1)){
  162. strBuf.replace(strLen-1, strLen, "");
  163. }
  164. strBuf.append("]}");
  165. return strBuf.toString();
  166. }
  167. /**
  168. * 删除选项
  169. * @return
  170. * @throws Exception
  171. */
  172. public String ajaxDelete() throws Exception {
  173. HttpServletRequest request=Struts2Utils.getRequest();
  174. HttpServletResponse response=Struts2Utils.getResponse();
  175. try{
  176. String quItemId=request.getParameter("quItemId");
  177. quRadioManager.ajaxDelete(quItemId);
  178. response.getWriter().write("true");
  179. }catch(Exception e){
  180. e.printStackTrace();
  181. response.getWriter().write("error");
  182. }
  183. return null;
  184. }
  185. }