Files
SIPAIIS_WMS_JSSW/src/com/sipai/controller/administration/TemporaryController.java

430 lines
18 KiB
Java
Raw Normal View History

2026-01-16 14:13:44 +08:00
package com.sipai.controller.administration;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONArray;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sipai.entity.activiti.WorkTask;
import com.sipai.entity.administration.Temporary;
import com.sipai.entity.business.BusinessUnit;
import com.sipai.entity.business.BusinessUnitAudit;
import com.sipai.entity.business.BusinessUnitHandle;
import com.sipai.entity.business.BusinessUnitRecord;
import com.sipai.entity.user.Company;
import com.sipai.entity.user.User;
import com.sipai.service.activiti.WorkflowProcessDefinitionService;
import com.sipai.service.activiti.WorkflowService;
import com.sipai.service.administration.TemporaryService;
import com.sipai.service.business.BusinessUnitAuditService;
import com.sipai.service.business.BusinessUnitHandleService;
import com.sipai.service.user.UnitService;
import com.sipai.service.user.UserService;
import com.sipai.tools.ActivitiUtil;
import com.sipai.tools.CommString;
import com.sipai.tools.CommUtil;
@Controller
@RequestMapping("/administration/temporary")
public class TemporaryController {
@Resource
private TemporaryService temporaryService;
@Resource
private UnitService unitService;
@Resource
private WorkflowProcessDefinitionService workflowProcessDefinitionService;
@Resource
private BusinessUnitHandleService businessUnitHandleService;
@Resource
private BusinessUnitAuditService businessUnitAuditService;
@Resource
private WorkflowService workflowService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private UserService userService;
@RequestMapping("/showList.do")
public String showList(HttpServletRequest request, Model model) {
return "/administration/temporaryList";
}
@RequestMapping("/getList.do")
public ModelAndView getList(HttpServletRequest request,Model model,
@RequestParam(value = "page") Integer page,
@RequestParam(value = "rows") Integer rows,
@RequestParam(value = "sort", required = false) String sort,
@RequestParam(value = "order", required = false) String order) {
User cu = (User) request.getSession().getAttribute("cu");
if (sort==null || sort.equals("id")) {
sort = " insdt ";
}
if (order == null) {
order = " desc ";
}
String orderstr = " order by "+sort+" "+order;
String wherestr = " where 1=1 ";
if (request.getParameter("search_code")!= null && !request.getParameter("search_code").isEmpty()) {
wherestr += " and unit_id = '"+request.getParameter("search_code")+"'";
}
PageHelper.startPage(page, rows);
List<Temporary> list = this.temporaryService.selectListByWhere(wherestr+orderstr);
PageInfo<Temporary> pInfo = new PageInfo<Temporary>(list);
JSONArray jsonArray = JSONArray.fromObject(list);
String result = "{\"total\":"+pInfo.getTotal()+",\"rows\":"+jsonArray+"}";
model.addAttribute("result",result);
return new ModelAndView("result");
}
@RequestMapping("/add.do")
public String doadd (HttpServletRequest request,Model model) {
String companyId = request.getParameter("companyId");
Company company = this.unitService.getCompById(companyId);
String id = company.getEname()+"-ZZYA-"+CommUtil.nowDate().replaceAll("[[\\s-:punct:]]","");
model.addAttribute("id",id);
model.addAttribute("company",company);
return "/administration/temporaryAdd";
}
@RequestMapping("/save.do")
public String dosave(HttpServletRequest request,Model model,
@ModelAttribute Temporary temporary) {
User cu = (User) request.getSession().getAttribute("cu");
temporary.setInsdt(CommUtil.nowDate());
temporary.setInsuser(cu.getId());
int result = this.temporaryService.save(temporary);
String resultstr = "{\"res\":\""+result+"\",\"id\":\""+temporary.getId()+"\"}";
model.addAttribute("result",resultstr);
return "result";
}
@RequestMapping("/delete.do")
public String dodelete(HttpServletRequest request,Model model,
@RequestParam(value = "id") String id) {
int result = this.temporaryService.deleteById(id);
model.addAttribute("result",result);
return "result";
}
@RequestMapping("/deletes.do")
public String dodeletes(HttpServletRequest request,Model model,
@RequestParam(value = "ids") String ids){
ids = ids.replace(",","','");
int result = this.temporaryService.deleteByWhere("where id in ('"+ids+"')");
model.addAttribute("result",result);
return "result";
}
@RequestMapping("/edit.do")
public String doedit(HttpServletRequest request,Model model,
@RequestParam(value = "id") String id) {
Temporary temporary = this.temporaryService.selectById(id);
model.addAttribute("temporary", temporary);
return "/administration/temporaryEdit";
}
@RequestMapping("/update.do")
public String doupdate(HttpServletRequest request,Model model,
@ModelAttribute Temporary temporary) {
User cu = (User) request.getSession().getAttribute("cu");
temporary.setInsdt(CommUtil.nowDate());
temporary.setInsuser(cu.getId());
int result = this.temporaryService.update(temporary);
String resstr="{\"res\":\""+result+"\",\"id\":\""+temporary.getId()+"\"}";
model.addAttribute("result", resstr);
return "result";
}
@RequestMapping("/view.do")
public String doview(HttpServletRequest request,Model model,
@RequestParam(value = "id") String id){
Temporary temporary = this.temporaryService.selectById(id);
model.addAttribute("temporary", temporary);
return "/administration/temporaryView";
}
/**
* 更新,启动指标审核流程
* */
@RequestMapping("/startProcess.do")
public String dostartProcess(HttpServletRequest request,Model model,
@ModelAttribute Temporary temporary){
User cu= (User)request.getSession().getAttribute("cu");
temporary.setInsuser(cu.getId());
temporary.setInsdt(CommUtil.nowDate());
int result=0;
try {
result =this.temporaryService.startProcess(temporary);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
String resstr="{\"res\":\""+result+"\",\"id\":\""+temporary.getId()+"\"}";
model.addAttribute("result", resstr);
return "result";
}
/**
* 查看指标处理流程详情
* @param request
* @param model
* @return
*/
@RequestMapping("/showProcessTemporaryView.do")
public String showProcessTemporaryView(HttpServletRequest request,Model model){
String temporaryId = request.getParameter("id");
Temporary temporary = this.temporaryService.selectById(temporaryId);
request.setAttribute("business", temporary);
List<BusinessUnitRecord> businessUnitRecords = new ArrayList<>();
BusinessUnitRecord businessUnitRecord = new BusinessUnitRecord(temporary);
businessUnitRecords.add(businessUnitRecord);
List<WorkTask> workTasks=workflowProcessDefinitionService.getAllPDTask(temporary.getProcessdefid(), "desc");
List<String> keys=new ArrayList<>();
for (WorkTask workTask : workTasks) {
keys.add(workTask.getTaskKey());
}
Set set = new HashSet();
set.addAll(keys);
keys=new ArrayList<>();
keys.addAll(set);
for (String item : keys) {
switch (item) {
case BusinessUnit.UNIT_Temporary_HANDLE:
List<BusinessUnitHandle> list = businessUnitHandleService.selectListByWhere("where businessid='"+temporaryId+"' ");
for (BusinessUnitHandle businessUnitHandle : list) {
businessUnitRecord = new BusinessUnitRecord(businessUnitHandle);
businessUnitRecords.add(businessUnitRecord);
}
break;
case BusinessUnit.UNIT_Temporary_AUDIT:
List<BusinessUnitAudit> list_audit = businessUnitAuditService.selectListByWhere("where businessid='"+temporaryId+"' ");
for (BusinessUnitAudit businessUnitAudit : list_audit) {
businessUnitRecord = new BusinessUnitRecord(businessUnitAudit);
businessUnitRecords.add(businessUnitRecord);
}
break;
default:
break;
}
}
//展示最新任务是否签收
String processId = temporary.getProcessid();
List<HistoricTaskInstance> list=this.workflowService.getHistoryService() // 历史相关Service
.createHistoricTaskInstanceQuery() // 创建历史任务实例查询
.processInstanceId(processId) // 用流程实例id查询
.list();
for (HistoricTaskInstance task : list) {
if (task.getAssignee()==null || task.getClaimTime()==null) {
continue;
}
businessUnitRecord = new BusinessUnitRecord(task);
businessUnitRecords.add(businessUnitRecord);
}
Collections.sort(businessUnitRecords, new Comparator<BusinessUnitRecord>() {
public int compare(BusinessUnitRecord o1, BusinessUnitRecord o2) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try{
Date dt1 = df.parse(o1.getInsdt());
Date dt2 = df.parse(o2.getInsdt());
if (dt1.getTime() > dt2.getTime()) {
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
return -1;
} else {
return 0;
}
}catch(Exception e){
e.printStackTrace();
return 0;
}
}
});
JSONArray jsonArray =JSONArray.fromObject(businessUnitRecords);
model.addAttribute("businessUnitRecords",jsonArray);
//检测流程实例是否结束,结束则历史记录最后节点变化
long num =runtimeService.createProcessInstanceQuery().processInstanceId(temporary.getProcessid()).count();
if(num>0){
model.addAttribute("finishFlag", false);
}else{
model.addAttribute("finishFlag", true);
}
if(request.getParameter("inModal")!=null){
//判断显示在流程处理模态框右侧
return "administration/temporaryExecuteViewInModal";
}else{
return "administration/temporaryExecuteView";
}
}
/**
* 显示指标审核
* */
@RequestMapping("/showAuditTemporary.do")
public String showAuditTemporary(HttpServletRequest request,Model model){
String taskId = request.getParameter("taskId");
String processInstanceId = request.getParameter("processInstanceId");
BusinessUnitAudit businessUnitAudit=new BusinessUnitAudit();
Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();
model.addAttribute("taskName", task.getName());
businessUnitAudit.setId(CommUtil.getUUID());
businessUnitAudit.setProcessid(processInstanceId);
businessUnitAudit.setTaskid(taskId);
ProcessInstance pInstance=runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
businessUnitAudit.setBusinessid(pInstance.getBusinessKey());
businessUnitAudit.setTaskdefinitionkey(task.getTaskDefinitionKey());
model.addAttribute("businessUnitAudit", businessUnitAudit);
String temporaryId= pInstance.getBusinessKey();
Temporary temporary = this.temporaryService.selectById(temporaryId);
model.addAttribute("temporary", temporary);
//获取任务下一节点若为任务节点则显示目标用户div否则不显示
List<ActivityImpl> activityImpls=workflowProcessDefinitionService.getNEXTActivities(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
if (activityImpls.size()>0) {
model.addAttribute("showTargetUsersFlag", true);
}else{
model.addAttribute("showTargetUsersFlag", false);
}
return "administration/temporaryAudit";
}
/**
* 流程流转
* */
@RequestMapping("/AuditTemporary.do")
public String doAuditTemporary(HttpServletRequest request,Model model,
@ModelAttribute BusinessUnitAudit businessUnitAudit){
User cu= (User)request.getSession().getAttribute("cu");
int result=0;
businessUnitAudit.setInsuser(cu.getId());
businessUnitAudit.setInsdt(CommUtil.nowDate());
result =this.temporaryService.doAudit(businessUnitAudit);
String resstr="{\"res\":\""+result+"\",\"id\":\""+businessUnitAudit.getId()+"\"}";
model.addAttribute("result", resstr);
return "result";
}
/**
* 显示指标业务处理
* */
@RequestMapping("/showTemporaryHandle.do")
public String showTemporaryHandle(HttpServletRequest request,Model model){
String taskId = request.getParameter("taskId");
String processInstanceId = request.getParameter("processInstanceId");
String unitId = request.getParameter("unitId");
ProcessInstance pInstance=runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
BusinessUnitHandle businessUnitHandle = new BusinessUnitHandle();
Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();
model.addAttribute("taskName", task.getName());
List<BusinessUnitHandle> businessUnitHandles = this.businessUnitHandleService.selectListByWhere("where processid='"+processInstanceId+"' and taskId='"+taskId+"'");
if(businessUnitHandles!= null && businessUnitHandles.size()>0){
businessUnitHandle = businessUnitHandles.get(0);
//若任务退回后需更新新的任务id
businessUnitHandle.setTaskid(taskId);
}else{
businessUnitHandle.setId(CommUtil.getUUID());
businessUnitHandle.setProcessid(processInstanceId);
businessUnitHandle.setTaskid(taskId);
businessUnitHandle.setBusinessid(pInstance.getBusinessKey());
businessUnitHandle.setTaskdefinitionkey(task.getTaskDefinitionKey());
businessUnitHandle.setUnitid(unitId);
}
String userIds = businessUnitHandle.getTargetusers();
if(userIds!= null && !userIds.isEmpty()){
List<User> users = userService.selectListByWhere("where id in('"+userIds.replace(",", "','")+"')");
String targetUsersName ="";
for (User user : users) {
if(!targetUsersName.isEmpty()){
targetUsersName+=",";
}
targetUsersName+=user.getCaption();
}
model.addAttribute("targetUsersName", targetUsersName);
}
model.addAttribute("businessUnitHandle", businessUnitHandle);
model.addAttribute("nowDate", CommUtil.nowDate());
String temporaryId = pInstance.getBusinessKey();
Temporary temporary = this.temporaryService.selectById(temporaryId);
List<BusinessUnitAudit> list = this.businessUnitAuditService.selectListByWhere("where businessId = '"+temporaryId+"' order by insdt desc ");
if(list!=null && list.size()>0){
model.addAttribute("businessUnitAudit", list.get(0));
}
model.addAttribute("temporary", temporary);
return "administration/temporaryHandle";
}
/**
* 流程流程指标业务处理提交
* */
@RequestMapping("/submitTemporaryHandle.do")
public String dosubmitTemporaryHandle(HttpServletRequest request,Model model,
@ModelAttribute BusinessUnitHandle businessUnitHandle){
String routeNum=request.getParameter("routeNum");
User cu= (User)request.getSession().getAttribute("cu");
int result=0;
if(!this.businessUnitHandleService.checkExit(businessUnitHandle)) {
businessUnitHandle.setInsuser(cu.getId());
businessUnitHandle.setInsdt(CommUtil.nowDate());
result =this.businessUnitHandleService.save(businessUnitHandle);
}else {
result =this.businessUnitHandleService.update(businessUnitHandle);
}
try {
Map<String, Object> variables = new HashMap<String, Object>();
variables =ActivitiUtil.fixVariableWithRoute(variables, true, routeNum);
variables.put(CommString.ACTI_KEK_Candidate_Users, businessUnitHandle.getTargetusers());
variables.put(CommString.ACTI_KEK_Assignee, null);
taskService.complete(businessUnitHandle.getTaskid(), variables);
//发送消息
if(businessUnitHandle.getTargetusers()!=null && !businessUnitHandle.getTargetusers().isEmpty()){
//补全所有字段信息
businessUnitHandle = businessUnitHandleService.selectById(businessUnitHandle.getId());
BusinessUnitRecord businessUnitRecord = new BusinessUnitRecord(businessUnitHandle);
businessUnitRecord.sendMessage(businessUnitHandle.getTargetusers(),"");
}
this.temporaryService.updateStatus(businessUnitHandle.getBusinessid());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
result=0;
}
String resstr="{\"res\":\""+result+"\",\"id\":\""+businessUnitHandle.getId()+"\"}";
model.addAttribute("result", resstr);
return "result";
}
}