java activiti 审核_用activiti工作流实现申请主播审核功能

org.activiti

activiti-engine

5.17.0

首先引入一个工作流的jar包

下面是主播申请表的entity

/**

* Copyright © 2015-2020 JeePlus All rights reserved.

*/

package com.jeeplus.modules.zdcj.entity;

import java.util.Map;

import org.activiti.engine.history.HistoricProcessInstance;

import org.activiti.engine.repository.ProcessDefinition;

import org.activiti.engine.runtime.ProcessInstance;

import org.activiti.engine.task.Task;

import com.jeeplus.common.persistence.DataEntity;

import com.jeeplus.common.utils.excel.annotation.ExcelField;

/**

* 申请主播Entity

* @author ywj

* @version 2016-12-22

*/

public class ZdcjApply extends DataEntity {

private static final long serialVersionUID = 1L;

private String userId;// 用户ID

private String name;// 真实姓名

private String mobile;// 手机号

private String qq;// QQ

private String email;// 邮箱

private String applystatus;// 状态

private String processInstanceId;//流程定义id

//-- 临时属性 --//

// 流程任务

private Task task;

private Map variables;

// 运行中的流程实例

private ProcessInstance processInstance;

// 历史的流程实例

private HistoricProcessInstance historicProcessInstance;

// 流程定义

private ProcessDefinition processDefinition;

@ExcelField(title="流程实例id", align=2, sort=13)

public String getProcessInstanceId() {

return processInstanceId;

}

public void setProcessInstanceId(String processInstanceId) {

this.processInstanceId = processInstanceId;

}

public Task getTask() {

return task;

}

public void setTask(Task task) {

this.task = task;

}

public Map getVariables() {

return variables;

}

public void setVariables(Map variables) {

this.variables = variables;

}

public ProcessInstance getProcessInstance() {

return processInstance;

}

public void setProcessInstance(ProcessInstance processInstance) {

this.processInstance = processInstance;

}

public HistoricProcessInstance getHistoricProcessInstance() {

return historicProcessInstance;

}

public void setHistoricProcessInstance(

HistoricProcessInstance historicProcessInstance) {

this.historicProcessInstance = historicProcessInstance;

}

public ProcessDefinition getProcessDefinition() {

return processDefinition;

}

public void setProcessDefinition(ProcessDefinition processDefinition) {

this.processDefinition = processDefinition;

}

public ZdcjApply() {

super();

}

public ZdcjApply(String id){

super(id);

}

@ExcelField(title="用户ID", align=2, sort=1)

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

@ExcelField(title="真实姓名", align=2, sort=2)

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@ExcelField(title="手机号", align=2, sort=3)

public String getMobile() {

return mobile;

}

public void setMobile(String mobile) {

this.mobile = mobile;

}

@ExcelField(title="QQ", align=2, sort=4)

public String getQq() {

return qq;

}

public void setQq(String qq) {

this.qq = qq;

}

@ExcelField(title="邮箱", align=2, sort=5)

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

@ExcelField(title="状态", dictType="apply_status", align=2, sort=6)

public String getApplystatus() {

return applystatus;

}

public void setApplystatus(String applystatus) {

this.applystatus = applystatus;

}

}

下面是工作流的操作

1 /**

2 * Copyright © 2015-2020 JeePlus All rights reserved.3 */

4 packagecom.jeeplus.modules.zdcj.service;5

6 importjava.io.InputStream;7 importjava.util.HashMap;8 importjava.util.List;9 importjava.util.Map;10

11 importorg.activiti.engine.ProcessEngine;12 importorg.activiti.engine.ProcessEngines;13 importorg.activiti.engine.repository.Deployment;14 importorg.activiti.engine.runtime.ProcessInstance;15 importorg.activiti.engine.task.Task;16 importorg.junit.Test;17 importorg.springframework.beans.factory.annotation.Autowired;18 importorg.springframework.stereotype.Service;19 importorg.springframework.transaction.annotation.Transactional;20

21 importcom.jeeplus.common.persistence.Page;22 importcom.jeeplus.common.service.CrudService;23 importcom.jeeplus.modules.zdcj.entity.ZdcjApply;24 importcom.jeeplus.modules.zdcj.dao.ZdcjApplyDao;25

26 /**

27 * 申请主播Service28 *@authorjzp29 *@version2016-12-2630 */

31 @Service32 @Transactional(readOnly = false)33 public classCactivitiService{34

35 @Autowired36 privateZdcjApplyService zdcjApplyService;37

38 ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();39

40 /**

41 * 部署流程定义(从inputStream)42 */

43 publicString save_inputStream(String nn){44 try{45 InputStream bp = this.getClass().getResourceAsStream("/diagrams/ZdcjApply.bpmn");46 InputStream png = this.getClass().getResourceAsStream("/diagrams/ZdcjApply.png");47 Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的service

48 .createDeployment()//创建一个部署对象

49 .name("申请主播")//添加部署的名称

50 .addInputStream("ZdcjApply.bpmn", bp)51 .addInputStream("ZdcjApply.png", png)52 .deploy();//完成部署流程定义

53 return "true";54 } catch(Exception e) {55 e.printStackTrace();56 return "false";57 }58 }59

60 /**

61 * 启动流程实例62 */

63 public voidstartProc(ZdcjApply zdcjApply){64 zdcjApplyService.save(zdcjApply);//保存

65 String processKey="ZdcjApply";66 String keyid=zdcjApply.getId();67 //流程定义的id

68 ProcessInstance processInstance = null;69 processInstance = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的service

70 .startProcessInstanceByKey(processKey,keyid);//使用流程实例定义的key启动流程实例。key对应helloword.bpmn文件中id的属性值

71 System.out.println("流程实例的id:"+processInstance.getId());//流程实例的id 801

72 System.out.println("流程定义的id:"+processInstance.getProcessDefinitionId());//流程定义的id helloWord:1:704

73 String processInstanceId =processInstance.getId();74 zdcjApply.setProcessInstanceId(processInstanceId);75 zdcjApplyService.save(zdcjApply);//保存

76 }77

78 /**

79 * 完成我的任务80 */

81 public voidcompleteMyPer(String taskid,String key,Boolean message,String name){82 //完成任务的同时 设置流程变量 使用流程变量用来指定完成任务后 下一个连线 对应sequenceFlow.bpmn文件中的 ${message=='不重要'}

83 Map map=newHashMap();84 map.put(key, message);85 map.put("applyUserId", name);86 /*variables = new HashMap();87 variables.put("deptLeaderPass", true);*/

88 processEngine.getTaskService()//与正在执行任务管理相关的service

89 .complete(taskid, map);90 System.out.println("完成任务,任务id是:"+taskid);91 /*if("dirPass".equals(key) && true==message){92 Map map2=new HashMap();93 map2.put(key, message);94 processEngine.getTaskService()//与正在执行任务管理相关的service95 .complete(taskid, map2);96 }97 System.out.println("完成任务,任务id是:"+taskid);*/

98 }99

100 /**

101 * 查询当前人的个人任务102 */

103 @Test104 public ListfindMyPer(Map map){105 String assignee = (String) map.get("assignee");106 if(null!=map.get("instanceId") && !"".equals(map.get("instanceId"))){107 List list = processEngine.getTaskService()//与正在执行任务管理相关的service

108 .createTaskQuery()//创建任务查询对象

109 /**查询条件 where*/

110 //.taskAssignee(assignee)//指定个人任务查询,指定办理人

111 .processInstanceId(""+map.get("instanceId"))//使用流程实例的id查询

112 /**排序*/

113 .orderByTaskCreateTime().desc()//创建时间的倒叙排列

114 .list();//返回一个list集合,分装流程定义

115 /*if(list!=null && list.size()>0){116 for (Task task : list) {117 System.out.println("任务id:"+task.getId());118 System.out.println("任务名称:"+task.getName());119 System.out.println("任务创建时间:"+task.getCreateTime());120 System.out.println("任务办理人:"+task.getAssignee());121 System.out.println("流程实例id:"+task.getProcessInstanceId());122 System.out.println("执行对象id:"+task.getExecutionId());123 System.out.println("流程定义id:"+task.getProcessDefinitionId());124 System.out.println("#####################################");125 }126 }*/

127 returnlist;128 }else{129 return null;130 }131 }132

133 public voidclaim(String tkid, String userId) {134 processEngine.getTaskService()135 .claim(tkid, userId);136 }137

138 /**

139 * 删除流程140 */

141 public voiddeleteProcessInstance() {142 //processEngine.getExecutionService();143 //ProcessInstance processInstance = executionService.startProcessInstanceByKey("helloworld");144 //executionService.deleteProcessInstanceCascade(processInstance.getId());

145 }146 }

下面是审核流程,流程为 用户申请主播→(申请成功)→客服审核→(审核成功)→客服主管审核→(审核成功)→用户成为主播。

如果客服或者客服主管审核未通过,则返回过去,重新调整申请,最后结束流程。

1 /**

2 * Copyright © 2015-2020 JeePlus All rights reserved.3 */

4 packagecom.jeeplus.modules.zdcj.web;5

6 importjava.io.InputStream;7 importjava.util.HashMap;8 importjava.util.List;9 importjava.util.Map;10

11 importjavax.servlet.http.HttpServletRequest;12 importjavax.servlet.http.HttpServletResponse;13 importjavax.servlet.http.HttpSession;14 importjavax.validation.ConstraintViolationException;15

16

17 importorg.apache.shiro.authz.annotation.Logical;18 importorg.apache.shiro.authz.annotation.RequiresPermissions;19 importorg.junit.Test;20 importorg.springframework.beans.factory.annotation.Autowired;21 importorg.springframework.stereotype.Controller;22 importorg.springframework.ui.Model;23 importorg.springframework.web.bind.annotation.ModelAttribute;24 importorg.springframework.web.bind.annotation.PathVariable;25 importorg.springframework.web.bind.annotation.RequestMapping;26 importorg.springframework.web.bind.annotation.RequestMethod;27 importorg.springframework.web.bind.annotation.RequestParam;28 importorg.springframework.web.bind.annotation.ResponseBody;29 importorg.springframework.web.multipart.MultipartFile;30 importorg.springframework.web.servlet.mvc.support.RedirectAttributes;31

32 importcom.google.common.collect.Lists;33 importcom.google.common.collect.Maps;34 importcom.jeeplus.common.utils.DateUtils;35 importcom.jeeplus.common.utils.MyBeanUtils;36 importcom.jeeplus.common.config.Global;37 importcom.jeeplus.common.persistence.Page;38 importcom.jeeplus.common.web.BaseController;39 importcom.jeeplus.common.utils.StringUtils;40 importcom.jeeplus.common.utils.excel.ExportExcel;41 importcom.jeeplus.common.utils.excel.ImportExcel;42 importcom.jeeplus.modules.sys.entity.Role;43 importcom.jeeplus.modules.sys.entity.User;44 importcom.jeeplus.modules.sys.security.SystemAuthorizingRealm.Principal;45 importcom.jeeplus.modules.sys.service.SystemService;46 importcom.jeeplus.modules.sys.utils.UserUtils;47 importcom.jeeplus.modules.zdcj.entity.ZdcjApply;48 importcom.jeeplus.modules.zdcj.service.CactivitiService;49 importcom.jeeplus.modules.zdcj.service.ZdcjApplyService;50 importcom.jeeplus.modules.zdcj.service.ZdcjUserService;51

52 importorg.activiti.engine.ProcessEngine;53 importorg.activiti.engine.ProcessEngines;54 importorg.activiti.engine.repository.Deployment;55 importorg.activiti.engine.repository.ProcessDefinition;56 importorg.activiti.engine.runtime.ProcessInstance;57 importorg.activiti.engine.task.Task;58

59 /**

60 * 申请主播Controller61 *@authorywj62 *@version2016-12-2263 */

64 @Controller65 @RequestMapping(value = "${adminPath}/zdcj/zdcjApply")66 public class ZdcjApplyController extendsBaseController {67

68 @Autowired69 privateZdcjApplyService zdcjApplyService;70

71 @Autowired72 privateCactivitiService cactivitiService;73

74 @Autowired75 privateSystemService systemService;76

77 ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();78

79 @ModelAttribute80 public ZdcjApply get(@RequestParam(required=false) String id) {81 ZdcjApply entity = null;82 if(StringUtils.isNotBlank(id)){83 entity =zdcjApplyService.get(id);84 }85 if (entity == null){86 entity = newZdcjApply();87 }88 returnentity;89 }90

91 /**

92 * 申请信息列表页面93 */

94 @RequiresPermissions("zdcj:zdcjApply:list")95 @RequestMapping(value = {"list", ""})96 publicString list(ZdcjApply zdcjApply, HttpServletRequest request, HttpServletResponse response, Model model) {97 Page page = zdcjApplyService.findPage(new Page(request, response), zdcjApply);98 List aj=page.getList();99 for(ZdcjApply aa : aj) {100 Map map=newHashMap();101 map.put("instanceId", aa.getProcessInstanceId());102 List tk=cactivitiService.findMyPer(map);103 if(tk!=null && tk.size()>0){104 aa.setTask(tk.get(0));105 }106 }107 model.addAttribute("page", page);108 return "modules/zdcj/zdcjApplyList";109 }110

111 /**

112 * 查看,增加,编辑申请信息表单页面113 */

114 @RequiresPermissions(value={"zdcj:zdcjApply:view","zdcj:zdcjApply:add","zdcj:zdcjApply:edit"},logical=Logical.OR)115 @RequestMapping(value = "form")116 publicString form(ZdcjApply zdcjApply, Model model) {117 model.addAttribute("zdcjApply", zdcjApply);118 return "modules/zdcj/zdcjApplyForm";119 }120

121 /**

122 * 保存申请信息123 */

124 @RequiresPermissions(value={"zdcj:zdcjApply:add","zdcj:zdcjApply:edit"},logical=Logical.OR)125 @RequestMapping(value = "save")126 publicString save(ZdcjApply zdcjApply, Model model, RedirectAttributes redirectAttributes,127 HttpServletRequest request, HttpServletResponse response) throwsException{128 Principal principal =UserUtils.getPrincipal();129 String tongyi=request.getParameter("tongyi");130 tongyi=tongyi+"";131 //是否同意 true 同意, FALSE 不同意

132 Boolean message=false;133 if(tongyi.equals("同意")){134 message=true;135 }else if(tongyi.equals("不同意")){136 message=false;137 }138 if (!beanValidator(model, zdcjApply)){139 returnform(zdcjApply, model);140 }141 if(!zdcjApply.getIsNewRecord()){//编辑表单保存

142

143 User r=systemService.getUser(principal.getId());144

145 String rname=r.getRoleList().get(0).getEnname();146 if(null!=rname && !"".equals(rname)){147 }else{148 addMessage(redirectAttributes, "抱歉 审核失败");149 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";150 }151

152 if(zdcjApply.getProcessInstanceId()!=null && !"".equals(zdcjApply.getProcessInstanceId())){153 Map map=newHashMap();154 map.put("instanceId", zdcjApply.getProcessInstanceId());155 List tk=cactivitiService.findMyPer(map);156 if(tk.get(0).getTaskDefinitionKey().equals("CustomerService")){157 User rs=systemService.getUser(zdcjApply.getUserId());158 System.out.println("客服审批");159 if(rname.equals("kefu")){160 cactivitiService.completeMyPer(tk.get(0).getId() ,"deptLeaderPass", message,rs.getName());161 addMessage(redirectAttributes, "审核成功");162 }else{163 addMessage(redirectAttributes, "抱歉 审核失败");164 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";165 }166 }else if(tk.size()>0 && tk.get(0).getTaskDefinitionKey().equals("director")){167 System.out.println("主管审批");168 User rs=systemService.getUser(zdcjApply.getUserId());169 if(rname.equals("kfadmin")){170 cactivitiService.completeMyPer(tk.get(0).getId() ,"dirPass", message,rs.getName());171 if(message==true){172 zdcjApply.setApplystatus("1");173 zdcjApplyService.save(zdcjApply);//保存

174 addMessage(redirectAttributes, "审核成功,申请通过");175 }else{176 addMessage(redirectAttributes, "审核成功,调整申请");177 }178 }else{179 addMessage(redirectAttributes, "抱歉 审核失败");180 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";181 }182 }else if(tk.size()>0 && tk.get(0).getTaskDefinitionKey().equals("modifyApply")){183 System.out.println("调整申请");184 if(true){185 cactivitiService.completeMyPer(tk.get(0).getId() ,"reApply", message,principal.getName());186 if(message==true){187 zdcjApplyService.save(zdcjApply);//保存

188 addMessage(redirectAttributes, "重新提交成功");189 }else{190 zdcjApply.setApplystatus("2");191 zdcjApplyService.save(zdcjApply);//保存

192 addMessage(redirectAttributes, "审核结束,申请未通过");193 }194 }/*else{195 addMessage(redirectAttributes, "抱歉 审核失败");196 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";197 }*/

198 }else{199 addMessage(redirectAttributes, "抱歉 审核失败");200 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";201 }202 }else{203 addMessage(redirectAttributes, "抱歉 审核失败");204 }205

206 }else{//新增表单保存

207 try{208 zdcjApply.setUserId(principal.getId());209 //流程定义的id

210 if(null==zdcjApply.getApplystatus() || "".equals(zdcjApply.getApplystatus())){211 zdcjApply.setApplystatus("0");212 }213 cactivitiService.startProc(zdcjApply);214 addMessage(redirectAttributes, "提交申请成功");215 } catch(Exception e) {216 addMessage(redirectAttributes, "提交申请失败,您可能没有部署流程定义");217 e.printStackTrace();218 }219 }220

221 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";222 }223

224 /**

225 * 部署流程信息226 */

227 @RequiresPermissions("zdcj:zdcjApply:add")228 @RequestMapping(value = "bushu")229 publicString bushu(ZdcjApply zdcjApply, RedirectAttributes redirectAttributes) {230 try{231 String name="";//zdcjApply.getName();

232 String aa=cactivitiService.save_inputStream(name);233 addMessage(redirectAttributes, "部署成功");234

235 } catch(Exception e) {236 addMessage(redirectAttributes, "部署失败");237 e.printStackTrace();238 }239 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";240 }241

242 /**

243 * 签收任务244 */

245 @RequiresPermissions("zdcj:zdcjApply:edit")246 @RequestMapping(value = "qianshou")247 publicString qianshou(ZdcjApply zdcjApply, RedirectAttributes redirectAttributes) {248 Principal principal =UserUtils.getPrincipal();249 String userId =principal.getName();250

251 //判断角色

252 User r=systemService.getUser(principal.getId());253

254 String rname=r.getRoleList().get(0).getEnname();255 if(null!=rname && !"".equals(rname)){256 }else{257 addMessage(redirectAttributes, "您不能该签收任务");258 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";259 }260

261

262 if(zdcjApply.getProcessInstanceId()!=null && !"".equals(zdcjApply.getProcessInstanceId())){263 Map map=newHashMap();264 map.put("instanceId", zdcjApply.getProcessInstanceId());265 List tk=cactivitiService.findMyPer(map);266 if(tk.size()>0 && tk.get(0).getTaskDefinitionKey().equals("CustomerService")){267 System.out.println("客服审批");268 if(rname.equals("kefu")){269 cactivitiService.claim(tk.get(0).getId(), userId);270 addMessage(redirectAttributes, "任务已签收");271 }else{272 addMessage(redirectAttributes, "您不能签收该任务");273 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";274 }275 }else if(tk.size()>0 && tk.get(0).getTaskDefinitionKey().equals("director")){276 System.out.println("主管审批");277 if(rname.equals("kfadmin")){278 cactivitiService.claim(tk.get(0).getId(), userId);279 addMessage(redirectAttributes, "任务已签收");280 }else{281 addMessage(redirectAttributes, "您不能该签收任务");282 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";283 }284 }else{285 addMessage(redirectAttributes, "您不能该签收任务");286 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";287 }288 }else{289 addMessage(redirectAttributes, "任务签收失败");290 }291

292 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";293 }294

295 /**

296 * APP接口调用 查询流程进度297 */

298 @ResponseBody299 @RequestMapping(value = "app_queryActiviti")300 public Map app_queryActiviti( @RequestParam(required=false)String id301 ,HttpServletRequest request, HttpServletResponse response, Model model) {302 Map map = null;303 try{304 map =Maps.newHashMap();305 if (null==id || "".equals(id)) {306 map.put("stauts", "1");307 map.put("message", "查询错误 :系统参数异常");308 }else{309 ZdcjApply zj=zdcjApplyService.get(id);310 Map map2=newHashMap();311 map2.put("instanceId", zj.getProcessInstanceId());312 Task task=cactivitiService.findMyPer(map2).get(0);313 //zj.setTask(tk.get(0));

314 map.put("stauts", "0");315 map.put("message", "查询成功");316 Map map3=newHashMap();317 map3.put("zdcjApply", zj);318 map3.put("taskId", task.getId());319 map3.put("taskName", task.getName());//任务节点

320 map3.put("taskCreateTime", task.getCreateTime());//任务创建时间

321 map3.put("taskAssignee", task.getAssignee());//任务办理人322 //map3.put("processInstanceId", task.getProcessInstanceId());//流程实例id

323 map3.put("executionId", task.getExecutionId());//执行对象id

324 map3.put("processDefinitionId", task.getProcessDefinitionId());//流程定义id

325 map.put("data", map3);326 }327 } catch(Exception e) {328 e.printStackTrace();329 map.put("stauts", "1");330 map.put("message", "查询错误 ");331 }332

333 returnmap;334 }335

336 /**

337 * 删除申请信息338 */

339 @RequiresPermissions("zdcj:zdcjApply:del")340 @RequestMapping(value = "delete")341 publicString delete(ZdcjApply zdcjApply, RedirectAttributes redirectAttributes) {342 /*processEngine.getRepositoryService()343 .deleteDeployment("45012",true);//删除流程定义*/

344 zdcjApplyService.delete(zdcjApply);345 addMessage(redirectAttributes, "删除申请信息成功");346 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";347 }348

349 /**

350 * 批量删除申请信息351 */

352 @RequiresPermissions("zdcj:zdcjApply:del")353 @RequestMapping(value = "deleteAll")354 publicString deleteAll(String ids, RedirectAttributes redirectAttributes) {355 String idArray[] =ids.split(",");356 for(String id : idArray){357 zdcjApplyService.delete(zdcjApplyService.get(id));358 }359 addMessage(redirectAttributes, "删除申请信息成功");360 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";361 }362

363 /**

364 * 导出excel文件365 */

366 @RequiresPermissions("zdcj:zdcjApply:export")367 @RequestMapping(value = "export", method=RequestMethod.POST)368 publicString exportFile(ZdcjApply zdcjApply, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {369 try{370 String fileName = "申请信息"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";371 Page page = zdcjApplyService.findPage(new Page(request, response, -1), zdcjApply);372 new ExportExcel("申请信息", ZdcjApply.class).setDataList(page.getList()).write(response, fileName).dispose();373 return null;374 } catch(Exception e) {375 addMessage(redirectAttributes, "导出申请信息记录失败!失败信息:"+e.getMessage());376 }377 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";378 }379

380 /**

381 * 导入Excel数据382

383 */

384 @RequiresPermissions("zdcj:zdcjApply:import")385 @RequestMapping(value = "import", method=RequestMethod.POST)386 publicString importFile(MultipartFile file, RedirectAttributes redirectAttributes) {387 try{388 int successNum = 0;389 int failureNum = 0;390 StringBuilder failureMsg = newStringBuilder();391 ImportExcel ei = new ImportExcel(file, 1, 0);392 List list = ei.getDataList(ZdcjApply.class);393 for(ZdcjApply zdcjApply : list){394 try{395 zdcjApplyService.save(zdcjApply);396 successNum++;397 }catch(ConstraintViolationException ex){398 failureNum++;399 }catch(Exception ex) {400 failureNum++;401 }402 }403 if (failureNum>0){404 failureMsg.insert(0, ",失败 "+failureNum+" 条申请信息记录。");405 }406 addMessage(redirectAttributes, "已成功导入 "+successNum+" 条申请信息记录"+failureMsg);407 } catch(Exception e) {408 addMessage(redirectAttributes, "导入申请信息失败!失败信息:"+e.getMessage());409 }410 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";411 }412

413 /**

414 * 下载导入申请信息数据模板415 */

416 @RequiresPermissions("zdcj:zdcjApply:import")417 @RequestMapping(value = "import/template")418 publicString importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {419 try{420 String fileName = "申请信息数据导入模板.xlsx";421 List list =Lists.newArrayList();422 new ExportExcel("申请信息数据", ZdcjApply.class, 1).setDataList(list).write(response, fileName).dispose();423 return null;424 } catch(Exception e) {425 addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());426 }427 return "redirect:"+Global.getAdminPath()+"/zdcj/zdcjApply/?repage";428 }429

430

431

432

433 }

下面是流程图

1 <?xml version="1.0" encoding="UTF-8"?>

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

最后sql也贴出来吧

1 <?xml version="1.0" encoding="UTF-8" ?>

2

3

4

5

6 a.id AS "id",7 a.user_id AS "userId",8 a.name AS "name",9 a.mobile AS "mobile",10 a.qq AS "qq",11 a.email AS "email",12 a.applystatus AS "applystatus",13 a.create_by AS "createBy.id",14 a.create_date AS "createDate",15 a.update_by AS "updateBy.id",16 a.update_date AS "updateDate",17 a.remarks AS "remarks",18 a.del_flag AS "delFlag",19 a.process_instance_id AS "processInstanceId"

20

21

22

23

24

25

26

27 SELECT28

29 FROM zdcj_apply a30

31 WHERE a.id =#{id}32

33

34

35 SELECT36

37 FROM zdcj_apply a38

39

40 a.del_flag =#{DEL_FLAG_NORMAL}41

42 AND a.name LIKE43 '%'||#{name}||'%'

44 '%'+#{name}+'%'

45 concat('%',#{name},'%')

46

47

48 AND a.mobile LIKE49 '%'||#{mobile}||'%'

50 '%'+#{mobile}+'%'

51 concat('%',#{mobile},'%')

52

53

54 AND a.qq LIKE55 '%'||#{qq}||'%'

56 '%'+#{qq}+'%'

57 concat('%',#{qq},'%')

58

59

60 AND a.email LIKE61 '%'||#{email}||'%'

62 '%'+#{email}+'%'

63 concat('%',#{email},'%')

64

65

66 AND a.applystatus =#{applystatus}67

68

69 AND a.create_date =#{createDate}70

71

72

73

74 ORDER BY ${page.orderBy}75

76

77 ORDER BY a.update_date DESC78

79

80

81

82

83 SELECT84

85 FROM zdcj_apply a86

87

88 a.del_flag =#{DEL_FLAG_NORMAL}89

90

91

92 ORDER BY ${page.orderBy}93

94

95 ORDER BY a.update_date DESC96

97

98

99

100

101 INSERT INTO zdcj_apply(102 id,103 user_id,104 name,105 mobile,106 qq,107 email,108 applystatus,109 create_by,110 create_date,111 update_by,112 update_date,113 remarks,114 del_flag,115 process_instance_id116 ) VALUES (117 #{id},118 #{userId},119 #{name},120 #{mobile},121 #{qq},122 #{email},123 #{applystatus},124 #{createBy.id},125 #{createDate},126 #{updateBy.id},127 #{updateDate},128 #{remarks},129 #{delFlag},130 #{processInstanceId}131 )132

133

134

135 UPDATE zdcj_apply SET136 user_id =#{userId},137 name =#{name},138 mobile =#{mobile},139 qq =#{qq},140 email =#{email},141 applystatus =#{applystatus},142 update_by =#{updateBy.id},143 update_date =#{updateDate},144 remarks =#{remarks},145 process_instance_id =#{processInstanceId}146 WHERE id =#{id}147

148

149

150

151

152 DELETE FROM zdcj_apply153 WHERE id =#{id}154

155

156

157

158 UPDATE zdcj_apply SET159 del_flag =#{DEL_FLAG_DELETE}160 WHERE id =#{id}161

162

163

164

165

166 select * FROM zdcj_apply where ${propertyName} = '${value}'

167

168

169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值