service.ftl 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <#import "function.ftl" as func>
  2. <#assign package=model.variables.package>
  3. <#assign class=model.variables.class>
  4. <#assign system=vars.system>
  5. <#assign tableName=model.tableName>
  6. <#assign subtables=model.subTableList>
  7. <#assign classVar=model.variables.classVar>
  8. <#assign table=model.subTableList>
  9. <#assign pk=func.getPk(model) >
  10. <#assign pkVar=func.convertUnderLine(pk)>
  11. <#assign pkVarFistUp=pkVar?cap_first >
  12. package ${vars.packagePre}.${system}.service.${package};
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Map;
  16. import java.util.HashMap;
  17. import ${vars.packagePre}.core.web.query.QueryFilter;
  18. import ${vars.packagePre}.platform.service.bpm.ProcessRunService;
  19. import ${vars.packagePre}.platform.model.bpm.ProcessRun;
  20. import net.sf.json.util.JSONUtils;
  21. import net.sf.ezmorph.object.DateMorpher;
  22. import ${vars.packagePre}.core.bpm.model.ProcessCmd;
  23. import ${vars.packagePre}.core.util.StringUtil;
  24. import ${vars.packagePre}.core.util.jsonobject.JSONObjectUtil;
  25. import net.sf.json.JSONObject;
  26. import javax.annotation.Resource;
  27. import org.springframework.stereotype.Service;
  28. import ${vars.packagePre}.core.db.IEntityDao;
  29. import ${vars.packagePre}.core.util.BeanUtils;
  30. import ${vars.packagePre}.core.util.UniqueIdUtil;
  31. import ${vars.packagePre}.${system}.model.${package}.${class};
  32. import ${vars.packagePre}.${system}.dao.${package}.${class}Dao;
  33. <#if func.isSubTableExist( subtables)>
  34. <#list subtables as table>
  35. import ${vars.packagePre}.${system}.model.${table.variables.package}.${table.variables.class};
  36. import ${vars.packagePre}.${system}.dao.${table.variables.package}.${table.variables.class}Dao;
  37. </#list>
  38. </#if>
  39. <#if func.supportFlow(model)>
  40. import ${vars.packagePre}.platform.service.bpm.ProcessRunService;
  41. import ${vars.packagePre}.core.bpm.model.ProcessCmd;
  42. import ${vars.packagePre}.core.service.WfBaseService;
  43. import ${vars.packagePre}.core.annotion.WorkFlow;
  44. import ${vars.packagePre}.platform.service.bpm.util.BpmAspectUtil;
  45. import ${vars.packagePre}.core.bpm.BpmResult;
  46. <#else>
  47. import ${vars.packagePre}.core.service.BaseService;
  48. </#if>
  49. /**
  50. *<pre>
  51. * 对象功能:${model.tabComment} Service类
  52. <#if vars.company?exists>
  53. * 开发公司:${vars.company}
  54. </#if>
  55. <#if vars.developer?exists>
  56. * 开发人员:${vars.developer}
  57. </#if>
  58. * 创建时间:${date?string("yyyy-MM-dd HH:mm:ss")}
  59. *</pre>
  60. */
  61. @Service
  62. public class ${class}Service extends <#if func.supportFlow(model)>WfBaseService<#else>BaseService</#if><${class}>
  63. {
  64. @Resource
  65. private ${class}Dao dao;
  66. <#if func.isSubTableExist( subtables)>
  67. <#list subtables as table>
  68. @Resource
  69. private ${table.variables.class}Dao ${table.variables.classVar}Dao;
  70. </#list>
  71. </#if>
  72. <#--直接绑定工作流生成-->
  73. <#if func.supportFlow(model)>
  74. @Resource
  75. private ProcessRunService processRunService;
  76. </#if>
  77. public ${class}Service()
  78. {
  79. }
  80. @Override
  81. protected IEntityDao<${class}, Long> getEntityDao()
  82. {
  83. return dao;
  84. }
  85. <#if func.isSubTableExist( subtables)>
  86. /**
  87. * 根据外键删除子表记录
  88. * @param ${pkVar}
  89. */
  90. private void delByPk(Long ${pkVar}){
  91. <#list model.subTableList as table>
  92. ${table.variables.classVar}Dao.delByMainId(${pkVar});
  93. </#list>
  94. }
  95. /**
  96. * 删除数据 包含相应子表记录
  97. * @param lAryId
  98. */
  99. @Override
  100. public void delByIds(Long[] lAryId) {
  101. for(Long id:lAryId){
  102. delByPk(id);
  103. dao.delById(id);
  104. //删除草稿表。
  105. <#if func.supportFlow(model)>
  106. processRunService.delByBusinessNum(id);
  107. </#if>
  108. }
  109. }
  110. /**
  111. * 添加数据
  112. * @param ${classVar}
  113. * @throws Exception
  114. */
  115. @Override
  116. public void add(${class} ${classVar}){
  117. super.add(${classVar});
  118. addSubList(${classVar});
  119. }
  120. /**
  121. * 更新数据
  122. * @param ${classVar}
  123. * @throws Exception
  124. */
  125. @Override
  126. public void update(${class} ${classVar}) {
  127. super.update(${classVar});
  128. delByPk(${classVar}.get${pkVar?cap_first}());
  129. addSubList(${classVar});
  130. }
  131. /**
  132. * 添加子表记录
  133. * @param ${classVar}
  134. * @throws Exception
  135. */
  136. private void addSubList(${class} ${classVar}) {
  137. <#list subtables as table>
  138. <#assign vars=table.variables>
  139. <#assign foreignKey=func.convertUnderLine(table.foreignKey) >
  140. <#assign subPk=func.getPk(table)>
  141. <#assign subPkVar=func.convertUnderLine(subPk)>
  142. List<${vars.class}> ${vars.classVar}List=${classVar}.get${vars.classVar?cap_first}List();
  143. if(BeanUtils.isNotEmpty(${vars.classVar}List)){
  144. for(${vars.class} ${vars.classVar}:${vars.classVar}List){
  145. ${vars.classVar}.set${foreignKey?cap_first}(${classVar}.get${pkVar?cap_first}());
  146. ${vars.classVar}.set${subPkVar?cap_first}(UniqueIdUtil.genId());
  147. ${vars.classVar}Dao.add(${vars.classVar});
  148. }
  149. }
  150. </#list>
  151. }
  152. <#list subtables as table>
  153. <#assign vars=table.variables>
  154. /**
  155. * 根据外键获得${table.tabComment}列表
  156. * @param ${pkVar}
  157. * @return
  158. */
  159. public List<${vars.class}> get${vars.classVar?cap_first}List(Long ${pkVar}) {
  160. return ${vars.classVar}Dao.getByMainId(${pkVar});
  161. }
  162. </#list>
  163. </#if>
  164. <#if func.supportFlow(model)>
  165. /**
  166. * 重写getAll方法绑定流程runId
  167. * @param queryFilter
  168. */
  169. public List<${class}> getAll(QueryFilter queryFilter){
  170. List<${class}> ${classVar}List=super.getAll(queryFilter);
  171. List<${class}> ${classVar}s=new ArrayList<${class}>();
  172. for(${class} ${classVar}:${classVar}List){
  173. ProcessRun processRun=processRunService.getByBusinessKey(${classVar}.get${pkVar?cap_first}().toString());
  174. if(BeanUtils.isNotEmpty(processRun)){
  175. ${classVar}.setRunId(processRun.getRunId());
  176. }
  177. ${classVar}s.add(${classVar});
  178. }
  179. return ${classVar}s;
  180. }
  181. /**
  182. * 重写getMyDraft方法绑定流程runId
  183. * @param queryFilter
  184. */
  185. public List<${class}> getMyDraft(Long userId,QueryFilter queryFilter){
  186. List<${class}> ${classVar}List=super.getAll(queryFilter);
  187. List<${class}> ${classVar}s=new ArrayList<${class}>();
  188. for(${class} ${classVar}:${classVar}List){
  189. ProcessRun processRun=processRunService.getByBusinessKey(${classVar}.get${pkVar?cap_first}().toString());
  190. if(BeanUtils.isNotEmpty(processRun)){
  191. ${classVar}.setRunId(processRun.getRunId());
  192. }
  193. ${classVar}s.add(${classVar});
  194. }
  195. return ${classVar}s;
  196. }
  197. </#if>
  198. /**
  199. * 流程处理器方法 用于处理业务数据
  200. * @param cmd
  201. * @throws Exception
  202. */
  203. public void processHandler(ProcessCmd cmd)throws Exception{
  204. Map data=cmd.getFormDataMap();
  205. if(BeanUtils.isNotEmpty(data)){
  206. String json=data.get("json").toString();
  207. ${class} ${classVar}=get${class}(json);
  208. if(StringUtil.isEmpty(cmd.getBusinessKey())){
  209. Long genId=UniqueIdUtil.genId();
  210. ${classVar}.set${pkVar?cap_first}(genId);
  211. this.add(${classVar});
  212. }else{
  213. ${classVar}.set${pkVar?cap_first}(Long.parseLong(cmd.getBusinessKey()));
  214. this.update(${classVar});
  215. }
  216. cmd.setBusinessKey(${classVar}.get${pkVar?cap_first}().toString());
  217. }
  218. }
  219. /**
  220. * 根据json字符串获取${class}对象
  221. * @param json
  222. * @return
  223. */
  224. public ${class} get${class}(String json){
  225. if(StringUtil.isEmpty(json))return null;
  226. <#if subtables?exists && subtables?size != 0>
  227. Map<String, Class> map=new HashMap<String, Class>();
  228. <#list subtables as subtable>
  229. <#assign vars=subtable.variables>
  230. map.put("${vars.classVar}List", ${vars.class}.class);
  231. </#list>
  232. ${class} ${classVar} = JSONObjectUtil.toBean(json, ${class}.class,map);
  233. <#else>
  234. ${class} ${classVar} = JSONObjectUtil.toBean(json, ${class}.class);
  235. </#if>
  236. return ${classVar};
  237. }
  238. /**
  239. * 保存 ${model.tabComment} 信息
  240. * @param ${classVar}
  241. */
  242. <#if func.supportFlow(model)>
  243. @WorkFlow(flowKey="${model.variables.flowKey}",tableName="${tableName}")
  244. </#if>
  245. public void save(${class} ${classVar}){
  246. Long id=${classVar}.get${pkVarFistUp}();
  247. if(id==null || id==0){
  248. id=UniqueIdUtil.genId();
  249. ${classVar}.set${pkVarFistUp}(id);
  250. this.add(${classVar});
  251. }
  252. else{
  253. this.update(${classVar});
  254. }
  255. <#if func.supportFlow(model)>
  256. BpmResult result=new BpmResult();
  257. //添加流程变量
  258. // result.addVariable("", "");
  259. result.setBusinessKey(id.toString());
  260. BpmAspectUtil.setBpmResult(result);
  261. </#if>
  262. }
  263. }