controllerClass.ftl 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. package ${controllerPackage};
  2. import java.util.UUID;
  3. import java.util.List;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import org.apache.commons.lang.StringUtils;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.velocity.VelocityContext;
  11. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  12. import org.jeecgframework.p3.core.common.utils.AjaxJson;
  13. import org.jeecgframework.p3.core.page.SystemTools;
  14. import org.jeecgframework.p3.core.util.plugin.ViewVelocity;
  15. import org.jeecgframework.p3.core.web.BaseController;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.web.bind.annotation.ModelAttribute;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestMethod;
  21. import org.springframework.web.bind.annotation.RequestParam;
  22. import org.springframework.web.bind.annotation.ResponseBody;
  23. import ${domainPackage}.${className}Entity;
  24. import ${pagePackage}.${className}Page;
  25. import ${servicePackage}.${className}Service;
  26. <#list subEntityList as sub>
  27. import ${sub.paramData.domainPackage}.${sub.paramData.className}Entity;
  28. import ${sub.paramData.servicePackage}.${sub.paramData.className}Service;
  29. </#list>
  30. /**
  31. * 描述:${codeName}
  32. * @author: ${author}
  33. * @since:${nowDate}
  34. * @version:1.0
  35. */
  36. @Controller
  37. @RequestMapping("/${projectName}/${lowerName}")
  38. public class ${className}Controller extends BaseController{
  39. @Autowired
  40. private ${className}Service ${lowerName}Service;
  41. <#list subEntityList as sub>
  42. @Autowired
  43. private ${sub.paramData.className}Service ${sub.paramData.lowerName}Service;
  44. </#list>
  45. /**
  46. * 列表页面
  47. * @return
  48. */
  49. @RequestMapping(params = "list",method = {RequestMethod.GET,RequestMethod.POST})
  50. public void list(@ModelAttribute ${className}Entity query,HttpServletRequest request,HttpServletResponse response,
  51. @RequestParam(required = false, value = "pageNo", defaultValue = "1") int pageNo,
  52. @RequestParam(required = false, value = "pageSize", defaultValue = "10") int pageSize) throws Exception{
  53. try {
  54. LOG.info(request, " back list");
  55. //分页数据
  56. MiniDaoPage<${className}Entity> list = ${lowerName}Service.getAll(query,pageNo,pageSize);
  57. VelocityContext velocityContext = new VelocityContext();
  58. velocityContext.put("${lowerName}",query);
  59. velocityContext.put("pageInfos",SystemTools.convertPaginatedList(list));
  60. String viewName = "${projectName}/${bussPackage}/${lowerName}-list.vm";
  61. ViewVelocity.view(request,response,viewName,velocityContext);
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. /**
  67. * 详情
  68. * @return
  69. */
  70. @RequestMapping(params="toDetail",method = RequestMethod.GET)
  71. public void ${lowerName}Detail(@RequestParam(required = true, value = "id" ) String id,HttpServletResponse response,HttpServletRequest request)throws Exception{
  72. VelocityContext velocityContext = new VelocityContext();
  73. String viewName = "${projectName}/${bussPackage}/${lowerName}-detail.vm";
  74. ${className}Entity ${lowerName} = ${lowerName}Service.get(id);
  75. velocityContext.put("${lowerName}",${lowerName});
  76. <#list subEntityList as sub>
  77. List<${sub.paramData.className}Entity> ${sub.paramData.lowerName}Entities = this.${sub.paramData.lowerName}Service.getBy${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.mainForeignKeyUpper}());
  78. velocityContext.put("${sub.paramData.lowerName}Entities", ${sub.paramData.lowerName}Entities);
  79. </#list>
  80. ViewVelocity.view(request,response,viewName,velocityContext);
  81. }
  82. /**
  83. * 跳转到添加页面
  84. * @return
  85. */
  86. @RequestMapping(params = "toAdd",method ={RequestMethod.GET, RequestMethod.POST})
  87. public void toAddDialog(HttpServletRequest request,HttpServletResponse response)throws Exception{
  88. VelocityContext velocityContext = new VelocityContext();
  89. String viewName = "${projectName}/${bussPackage}/${lowerName}-add.vm";
  90. ViewVelocity.view(request,response,viewName,velocityContext);
  91. }
  92. /**
  93. * 保存信息
  94. * @return
  95. */
  96. @RequestMapping(params = "doAdd",method ={RequestMethod.GET, RequestMethod.POST})
  97. @ResponseBody
  98. public AjaxJson doAdd(@ModelAttribute ${className}Entity ${lowerName},
  99. @ModelAttribute ${className}Page ${lowerName}Page){
  100. AjaxJson j = new AjaxJson();
  101. try {
  102. <#list subEntityList as sub>
  103. List<${sub.paramData.className}Entity> ${sub.paramData.lowerName}Entities = ${lowerName}Page.get${sub.paramData.className}Entities();
  104. if(${sub.paramData.lowerName}Entities.size() <= 0){
  105. j.setMsg("请至少添加一个${sub.paramData.codeName}详情");
  106. j.setSuccess(false);
  107. return j;
  108. }
  109. </#list>
  110. String randomSeed = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
  111. ${lowerName}.setId(randomSeed);
  112. ${lowerName}Service.insert(${lowerName});
  113. <#list subEntityList as sub>
  114. for (${sub.paramData.className}Entity entity : ${sub.paramData.lowerName}Entities) {
  115. randomSeed = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
  116. entity.setId(randomSeed);
  117. if(StringUtils.isEmpty(${lowerName}.getGoOrderCode())){
  118. j.setMsg("关联外键不能为空");
  119. j.setSuccess(false);
  120. return j;
  121. }
  122. entity.set${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.mainForeignKeyUpper}());
  123. ${sub.paramData.lowerName}Service.insert(entity);
  124. }
  125. </#list>
  126. j.setMsg("保存成功");
  127. } catch (Exception e) {
  128. log.info(e.getMessage());
  129. j.setSuccess(false);
  130. j.setMsg("保存失败");
  131. }
  132. return j;
  133. }
  134. /**
  135. * 跳转到编辑页面
  136. * @return
  137. */
  138. @RequestMapping(params="toEdit",method = RequestMethod.GET)
  139. public void toEdit(@RequestParam(required = true, value = "id" ) String id,HttpServletResponse response,HttpServletRequest request) throws Exception{
  140. VelocityContext velocityContext = new VelocityContext();
  141. ${className}Entity ${lowerName} = ${lowerName}Service.get(id);
  142. velocityContext.put("${lowerName}",${lowerName});
  143. <#list subEntityList as sub>
  144. List<${sub.paramData.className}Entity> ${sub.paramData.lowerName}Entities = this.${sub.paramData.lowerName}Service.getBy${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.mainForeignKeyUpper}());
  145. velocityContext.put("${sub.paramData.lowerName}Entities", ${sub.paramData.lowerName}Entities);
  146. </#list>
  147. String viewName = "${projectName}/${bussPackage}/${lowerName}-edit.vm";
  148. ViewVelocity.view(request,response,viewName,velocityContext);
  149. }
  150. /**
  151. * 编辑
  152. * @return
  153. */
  154. @RequestMapping(params = "doEdit",method ={RequestMethod.GET, RequestMethod.POST})
  155. @ResponseBody
  156. public AjaxJson doEdit(@ModelAttribute ${className}Entity ${lowerName},
  157. @ModelAttribute ${className}Page ${lowerName}Page){
  158. AjaxJson j = new AjaxJson();
  159. try {
  160. <#list subEntityList as sub>
  161. List<${sub.paramData.className}Entity> ${sub.paramData.lowerName}Entities = ${lowerName}Page.get${sub.paramData.className}Entities();
  162. if(${sub.paramData.lowerName}Entities.size() <= 0){
  163. j.setMsg("请至少添加一个${sub.paramData.codeName}详情");
  164. j.setSuccess(false);
  165. return j;
  166. }
  167. </#list>
  168. ${lowerName}Service.update(${lowerName});
  169. ${className}Entity temp${className}Entity = this.${lowerName}Service.get(${lowerName}.getId());
  170. <#list subEntityList as sub>
  171. Map<String,${sub.paramData.className}Entity> old${sub.paramData.className}EntityMap = new HashMap<String, ${sub.paramData.className}Entity>();
  172. if(!temp${className}Entity.get${sub.paramData.foreignKeyUpper}().equals(${lowerName}.get${sub.paramData.foreignKeyUpper}())){
  173. this.${sub.paramData.lowerName}Service.deleteBy${sub.paramData.foreignKeyUpper}(temp${className}Entity.get${sub.paramData.foreignKeyUpper}());
  174. }else{
  175. List<${sub.paramData.className}Entity> old${sub.paramData.className}EntityList = this.${sub.paramData.lowerName}Service.getBy${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.foreignKeyUpper}());
  176. for(${sub.paramData.className}Entity po:old${sub.paramData.className}EntityList){
  177. old${sub.paramData.className}EntityMap.put(po.getId(), po);
  178. }
  179. }
  180. </#list>
  181. <#list subEntityList as sub>
  182. for(${sub.paramData.className}Entity entity : ${sub.paramData.lowerName}Entities){
  183. if(StringUtils.isEmpty(entity.getId())){
  184. String randomSeed = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
  185. entity.setId(randomSeed);
  186. entity.set${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.mainForeignKeyUpper}());
  187. this.${sub.paramData.lowerName}Service.insert(entity);
  188. }else{
  189. this.${sub.paramData.lowerName}Service.update(entity);
  190. //剔除已经更新了的数据
  191. if(old${sub.paramData.className}EntityMap.size()>0&&old${sub.paramData.className}EntityMap.containsKey(entity.getId())){
  192. old${sub.paramData.className}EntityMap.remove(entity.getId());
  193. }
  194. }
  195. }
  196. //old${sub.paramData.className}EntityMap中剩余的数据就是删除的数据
  197. if(old${sub.paramData.className}EntityMap.size()>0){
  198. Iterator itSub=old${sub.paramData.className}EntityMap.entrySet().iterator();
  199. while(itSub.hasNext()){
  200. Map.Entry entrySub=(Map.Entry)itSub.next();
  201. this.${sub.paramData.lowerName}Service.delete((${sub.paramData.className}Entity)entrySub.getValue());
  202. }
  203. }
  204. </#list>
  205. j.setMsg("编辑成功");
  206. } catch (Exception e) {
  207. log.info(e.getMessage());
  208. j.setSuccess(false);
  209. j.setMsg("编辑失败");
  210. }
  211. return j;
  212. }
  213. /**
  214. * 删除
  215. * @return
  216. */
  217. @RequestMapping(params="doDelete",method = RequestMethod.GET)
  218. @ResponseBody
  219. public AjaxJson doDelete(@RequestParam(required = true, value = "id" ) String id){
  220. AjaxJson j = new AjaxJson();
  221. try {
  222. ${className}Entity ${lowerName} = new ${className}Entity();
  223. ${lowerName}.setId(id);
  224. ${lowerName}Service.delete(${lowerName});
  225. <#list subEntityList as sub>
  226. this.${sub.paramData.lowerName}Service.delBy${sub.paramData.foreignKeyUpper}(${lowerName}.get${sub.paramData.mainForeignKeyUpper}());
  227. </#list>
  228. j.setMsg("删除成功");
  229. } catch (Exception e) {
  230. log.info(e.getMessage());
  231. j.setSuccess(false);
  232. j.setMsg("删除失败");
  233. }
  234. return j;
  235. }
  236. }