|
@@ -0,0 +1,647 @@
|
|
|
+package com.jeeplus.modules.ruralprojectrecords.web;
|
|
|
+
|
|
|
+import com.jeeplus.common.config.Global;
|
|
|
+import com.jeeplus.common.persistence.Page;
|
|
|
+import com.jeeplus.common.utils.MyBeanUtils;
|
|
|
+import com.jeeplus.common.utils.StringUtils;
|
|
|
+import com.jeeplus.common.web.BaseController;
|
|
|
+import com.jeeplus.modules.act.entity.Act;
|
|
|
+import com.jeeplus.modules.act.service.ActTaskService;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportChangeService;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportRecordService;
|
|
|
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
|
|
|
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
|
|
|
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
|
|
|
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
|
|
|
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectcontentinfo;
|
|
|
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
|
|
|
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
|
|
|
+import com.jeeplus.modules.sys.entity.MainDictDetail;
|
|
|
+import com.jeeplus.modules.sys.entity.User;
|
|
|
+import com.jeeplus.modules.sys.utils.DictUtils;
|
|
|
+import com.jeeplus.modules.sys.utils.UserUtils;
|
|
|
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
|
|
|
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
|
|
|
+import org.activiti.engine.HistoryService;
|
|
|
+import org.activiti.engine.history.HistoricProcessInstance;
|
|
|
+import org.activiti.engine.runtime.ProcessInstance;
|
|
|
+import org.activiti.engine.task.Task;
|
|
|
+import org.apache.shiro.authz.annotation.Logical;
|
|
|
+import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+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.mvc.support.RedirectAttributes;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 造价审核项目列表Controller
|
|
|
+ * @author 徐滕
|
|
|
+ * @version 2020-04-15
|
|
|
+ */
|
|
|
+@Controller
|
|
|
+@RequestMapping(value = "${adminPath}/ruralProject/ruralCostProjectMessage")
|
|
|
+public class RuralCostProjectMessageController extends BaseController {
|
|
|
+ @Autowired
|
|
|
+ private RuralProjectRecordsService projectRecordsService;
|
|
|
+ @Autowired
|
|
|
+ private ProjectRecordsService projectRecordsServices;
|
|
|
+ @Autowired
|
|
|
+ private RuralProjectMessageService ruralProjectMessageService;
|
|
|
+ @Autowired
|
|
|
+ private ProjectReportDataService projectReportDataService;
|
|
|
+ @Autowired
|
|
|
+ private ProjectcontentinfoService projectcontentinfoService;
|
|
|
+ @Autowired
|
|
|
+ private ProjectReportChangeService projectReportChangeService;
|
|
|
+ @Autowired
|
|
|
+ protected HistoryService historyService;
|
|
|
+ @Autowired
|
|
|
+ private ActTaskService actTaskService;
|
|
|
+ @Autowired
|
|
|
+ private ProjectReportRecordService projectReportRecordService;
|
|
|
+
|
|
|
+ @ModelAttribute
|
|
|
+ public RuralProjectRecords get(@RequestParam(required=false) String id) {
|
|
|
+ RuralProjectRecords entity = null;
|
|
|
+ if (StringUtils.isNotBlank(id)){
|
|
|
+ entity = projectRecordsService.get(id);
|
|
|
+ }
|
|
|
+ if (entity == null){
|
|
|
+ entity = new RuralProjectRecords();
|
|
|
+ }
|
|
|
+ return entity;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 项目列表页面
|
|
|
+ */
|
|
|
+ @RequiresPermissions("ruralProject:ruralCostProjectMessage:list")
|
|
|
+ @RequestMapping(value = {"list", ""})
|
|
|
+ public String list(RuralProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
|
|
|
+ if(UserUtils.isManager()){
|
|
|
+ model.addAttribute("flag","1");
|
|
|
+ }
|
|
|
+ //添加查询类型(造价审核)
|
|
|
+ projectRecords.setProjectType("2");
|
|
|
+ Page<RuralProjectRecords> page = ruralProjectMessageService.findPage(new Page<RuralProjectRecords>(request, response), projectRecords);
|
|
|
+ //无合同状态下,获取委托方的名称
|
|
|
+ List<RuralProjectRecords> list = page.getList();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ RuralProjectRecords records1 = list.get(i);
|
|
|
+ if (records1.getWorkContractInfo() == null) {
|
|
|
+ projectRecordsService.queryLinkmanInfos(records1);
|
|
|
+ if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
|
|
|
+ WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
|
|
|
+ WorkContractInfo contractInfo = new WorkContractInfo();
|
|
|
+ contractInfo.setClient(linkman.getClientId());
|
|
|
+ records1.setWorkContractInfo(contractInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ model.addAttribute("page", page);
|
|
|
+ return "modules/ruralprojectrecords/cost/ruralCostProjectMessageList";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 跳转新增报告页面
|
|
|
+ * @param projectcontentinfo
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param model
|
|
|
+ * @param attr
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = {"form"})
|
|
|
+ public String form(RuralProjectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes attr) {
|
|
|
+ Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProjectId());
|
|
|
+ model.addAttribute("parentIds", projectcontentinfo1.getParentIds());
|
|
|
+ String dictType = projectcontentinfo.getDictType();
|
|
|
+ RuralProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
|
|
|
+ model.addAttribute("projectRecords", records);
|
|
|
+ projectcontentinfo.setProject(records);
|
|
|
+ ProjectReportData projectReportData = new ProjectReportData();
|
|
|
+ projectReportData.setType(dictType);
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo1.getInfoId())){
|
|
|
+ projectReportData = projectReportDataService.get(projectcontentinfo1.getInfoId());
|
|
|
+ }else if (projectcontentinfo.getProjectReportData()!=null && StringUtils.isNotBlank(projectcontentinfo.getProjectReportData().getId())) {
|
|
|
+ projectReportData = projectReportDataService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ }else {
|
|
|
+ projectReportData.setNumber("");
|
|
|
+ }
|
|
|
+ if (projectReportData.getMaster()==null || StringUtils.isBlank(projectReportData.getMaster().getId())){
|
|
|
+ projectReportData.setMaster(UserUtils.getUser());
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(projectReportData.getStatus())){
|
|
|
+ projectReportData.setFileStatus("1");
|
|
|
+ }
|
|
|
+ projectcontentinfo.setProjectReportData(projectReportData);
|
|
|
+ model.addAttribute("projectcontentinfo", projectcontentinfo);
|
|
|
+ if (projectReportData != null && projectReportData.getCreateBy() != null && StringUtils.isNotBlank(projectReportData.getCreateBy().getId()) && projectReportData.getCreateBy().getId().equals(UserUtils.getUser().getId())) {
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportForm";
|
|
|
+ } else if (projectReportData == null || StringUtils.isBlank(projectReportData.getId())) {
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportForm";
|
|
|
+ } else {
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportView";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 编辑项目表单页面
|
|
|
+ */
|
|
|
+ @RequiresPermissions(value={"ruralProject:ruralCostProjectMessage:edit"},logical= Logical.OR)
|
|
|
+ @RequestMapping(value = "modify")
|
|
|
+ public String modify(RuralProjectcontentinfo projectcontentinfo,Integer status, Model model, RedirectAttributes redirectAttributes) {
|
|
|
+ System.out.println(status);
|
|
|
+ Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProjectId());
|
|
|
+ ProjectReportData projectReportData = projectReportDataService.getOnRural(projectcontentinfo1.getInfoId());
|
|
|
+ Projectcontentinfo projectcontent = projectcontentinfoService.getByInfoId(projectReportData.getId());
|
|
|
+ projectcontent.setProjectReportData(projectReportData);
|
|
|
+ model.addAttribute("processInstanceId",projectReportData.getProcessInstanceId());
|
|
|
+ model.addAttribute("projectId", projectcontentinfo1.getProject().getId());
|
|
|
+ model.addAttribute("id", projectcontentinfo.getId());
|
|
|
+ model.addAttribute("projectcontentinfo", projectcontent);
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getView()) && projectcontentinfo.getView().contains("view")) {
|
|
|
+ List<MainDictDetail> achievementTypes = DictUtils.getMainDictList("achievement_type");
|
|
|
+ if(null != achievementTypes){
|
|
|
+ for (MainDictDetail achievementType:achievementTypes) {
|
|
|
+ if(achievementType.getValue().equals(projectReportData.getAchievementType())){
|
|
|
+ projectReportData.setAchievementType(achievementType.getLabel());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportView";
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getView()) && projectcontentinfo.getView().contains("report")) {
|
|
|
+ if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
|
|
|
+ Act act = getByAct(projectReportData.getProcessInstanceId());
|
|
|
+ projectReportData.setAct(act);
|
|
|
+ }
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportModify";
|
|
|
+ }
|
|
|
+ return "modules/ruralprojectrecords/cost/projectcontentinfo/reportForm";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增报告信息
|
|
|
+ * @param projectcontentinfo
|
|
|
+ * @param model
|
|
|
+ * @param redirectAttributes
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = {"saveReport"})
|
|
|
+ public String saveReport(Projectcontentinfo projectcontentinfo, Model model,RedirectAttributes redirectAttributes) {
|
|
|
+ try{
|
|
|
+ String str = ruralProjectMessageService.saveData(projectcontentinfo,2);
|
|
|
+ addMessage(redirectAttributes, "发起报告审批"+(str.equals("true")?"成功":"失败"));
|
|
|
+ ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
|
|
|
+ if (projectReportData!=null){
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getEdit()) && projectcontentinfo.getEdit().equals("edit")){
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("ProjectcontentinfoController save Exception e"+e);
|
|
|
+ }
|
|
|
+ if(UserUtils.isManager()){
|
|
|
+ model.addAttribute("flag","1");
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "发起报告审批失败");
|
|
|
+ ProjectRecords projectRecords = projectcontentinfo.getProject()==null?new ProjectRecords():projectcontentinfo.getProject();
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 暂存报告信息
|
|
|
+ * @param projectcontentinfo
|
|
|
+ * @param model
|
|
|
+ * @param redirectAttributes
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = {"holdSaveReport"})
|
|
|
+ public String holdSaveReport(Projectcontentinfo projectcontentinfo, Model model,RedirectAttributes redirectAttributes) {
|
|
|
+ try{
|
|
|
+ String str = ruralProjectMessageService.saveData(projectcontentinfo,1);
|
|
|
+ addMessage(redirectAttributes, "暂存报告"+(str.equals("true")?"成功":"失败"));
|
|
|
+ ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
|
|
|
+ if (projectReportData!=null){
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getEdit()) && projectcontentinfo.getEdit().equals("edit")){
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("ProjectcontentinfoController save Exception e"+e);
|
|
|
+ }
|
|
|
+ if(UserUtils.isManager()){
|
|
|
+ model.addAttribute("flag","1");
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "暂存报告失败");
|
|
|
+ ProjectRecords projectRecords = projectcontentinfo.getProject()==null?new ProjectRecords():projectcontentinfo.getProject();
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读取单个实体流程
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "getProcessOne")
|
|
|
+ public String getProcessOne(Projectcontentinfo projectcontentinfo,String type,Model model) {
|
|
|
+ ProjectReportData projectReportDataInfo = ruralProjectMessageService.getProjectReportDateByProjectId(projectcontentinfo.getId());
|
|
|
+ projectcontentinfo.setProjectReportData(projectReportDataInfo);
|
|
|
+ if ("2".equals(type)){ //审批中流程
|
|
|
+ ProjectReportData projectReportData = projectReportDataService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getProcessInstanceId());
|
|
|
+ }else if("3".equals(type)){ //变更中流程
|
|
|
+ ProjectReportData projectReportData = projectReportChangeService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getProcessInstanceId());
|
|
|
+ } else if("8".equals(type)){ //变更中流程
|
|
|
+ ProjectReportData projectReportData = projectReportDataService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getUpId());
|
|
|
+ }else if("6".equals(type) || "7".equals(type)){ //作废流程
|
|
|
+ ProjectReportData projectReportData = projectReportDataService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getInvalidProcessInstanceId());
|
|
|
+ }else if("5".equals(type)){
|
|
|
+ ProjectReportData projectReportData = projectReportDataService.get(projectcontentinfo.getProjectReportData().getId());
|
|
|
+ if(projectReportData.getUpId() != null){
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getUpId());
|
|
|
+ }else {
|
|
|
+ model.addAttribute("processInstanceId", projectReportData.getProcessInstanceId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "modules/workreimbursement/workReimbursementTrack";
|
|
|
+ }
|
|
|
+
|
|
|
+ //报告流程审批
|
|
|
+ @RequestMapping(value = {"reportAudit"})
|
|
|
+ public String reportAudit(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model,
|
|
|
+ RedirectAttributes redirectAttributes) throws Exception {
|
|
|
+ ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
|
|
|
+ if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
|
|
|
+ Act act = getByAct(projectReportData.getProcessInstanceId());
|
|
|
+ projectReportData.setAct(act);
|
|
|
+ }
|
|
|
+ ProjectReportData t = projectReportDataService.getOnRural(projectReportData.getId());//从数据库取出记录的值
|
|
|
+ try {
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
|
|
|
+ if(StringUtils.isNotBlank(t.getProcessInstanceId())){
|
|
|
+ Act act = getByAct(t.getProcessInstanceId());
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportData.getAct(), act);
|
|
|
+ t.setAct(act);
|
|
|
+ projectcontentinfo.setProjectReportData(t);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ String taskDefKey = t.getAct().getTaskDefKey();
|
|
|
+ List<User> users = null;
|
|
|
+ ProjectRecords projectRecord = projectRecordsServices.getRuralMasters(projectcontentinfo.getProject().getId());
|
|
|
+ projectReportData.setProject(projectRecord);
|
|
|
+ if ("master".equals(taskDefKey)){
|
|
|
+ users = UserUtils.getByProssType(t.getProcessInstanceId(),2);
|
|
|
+ if (users==null )
|
|
|
+ users = UserUtils.getByRoleActivityEnname("bzshb",3,t.getOfficeId(),"12",t.getCreateBy());
|
|
|
+ }else if ("bzshb".equals(taskDefKey)){
|
|
|
+ users = UserUtils.getByProssType(t.getProcessInstanceId(),5);
|
|
|
+ if (users==null )
|
|
|
+ users = UserUtils.getByRoleActivityEnname("gzr",3,t.getOfficeId(),"12",t.getCreateBy());
|
|
|
+ }else if ("gzr".equals(taskDefKey)){
|
|
|
+ users = UserUtils.getByProssType(t.getProcessInstanceId(),5);
|
|
|
+ if (users==null )
|
|
|
+ users = UserUtils.getByRoleActivityEnname("gzr",3,t.getOfficeId(),"12",t.getCreateBy());
|
|
|
+ }else if ("modifyApply".equals(taskDefKey)){
|
|
|
+ users = UserUtils.getByProssType(t.getProcessInstanceId(),1);
|
|
|
+ }
|
|
|
+ String flag = t.getAct().getFlag();
|
|
|
+ if ("yes".equals(flag) && (users==null || users.size()==0)){
|
|
|
+ addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
|
|
|
+ }else {
|
|
|
+ if ("modifyApply".equals(taskDefKey)){
|
|
|
+ ruralProjectMessageService.saveData(projectcontentinfo,3);
|
|
|
+ }
|
|
|
+ String str = ruralProjectMessageService.auditSave(t, users);
|
|
|
+ addMessage(redirectAttributes, str);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getHome()) && projectcontentinfo.getHome().equals("home")){
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/home/?repage";
|
|
|
+ }else {
|
|
|
+ if (StringUtils.isNotBlank(projectcontentinfo.getEdit()) && projectcontentinfo.getEdit().equals("edit")){
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "revoke")
|
|
|
+ public String revoke(HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
+ HashMap<String, String> requestMap = findRequestMap(request);
|
|
|
+ String processInstanceId = requestMap.get("processInstanceId");
|
|
|
+ String id = requestMap.get("id");
|
|
|
+ /*try {*/
|
|
|
+ RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
|
|
|
+ if(5==projectRecords.getProjectReportStatus()){
|
|
|
+ addMessage(redirectAttributes, "项目报告已审批通过,无法撤回");
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ ProjectReportData projectReportDateByProjectId = ruralProjectMessageService.getProjectReportDateByProjectId(projectRecords.getId());
|
|
|
+ ruralProjectMessageService.cancelInvalidate(projectReportDateByProjectId);
|
|
|
+ addMessage(redirectAttributes, "撤回该项目报告成功");
|
|
|
+ /*}catch (Exception e){
|
|
|
+ logger.info(e.getMessage());
|
|
|
+ addMessage(redirectAttributes, "撤回该项目报告失败");
|
|
|
+ }*/
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public Act getByAct(String processInstanceId){
|
|
|
+ Act act = new Act();
|
|
|
+ HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
|
|
+ ProcessInstance processInstance = actTaskService.getProcIns(processInstanceId);
|
|
|
+ if (processInstance!=null) {
|
|
|
+ List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
|
|
|
+ if(taskList!=null && taskList.size()>1){
|
|
|
+ for (Task taskInfok:taskList) {
|
|
|
+ if (taskInfok.getAssignee().equals(UserUtils.getUser().getId())) {
|
|
|
+ act.setTaskId(taskInfok.getId());
|
|
|
+ act.setTaskName(taskInfok.getName());
|
|
|
+ act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
|
|
|
+ act.setProcDefId(taskInfok.getProcessDefinitionId());
|
|
|
+ act.setProcInsId(taskInfok.getProcessInstanceId());
|
|
|
+ act.setTask(taskInfok);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ Task task = actTaskService.getCurrentTaskInfo(processInstance);
|
|
|
+ act.setTaskId(task.getId());
|
|
|
+ act.setTaskName(task.getName());
|
|
|
+ act.setTaskDefKey(task.getTaskDefinitionKey());
|
|
|
+ act.setProcDefId(task.getProcessDefinitionId());
|
|
|
+ act.setProcInsId(task.getProcessInstanceId());
|
|
|
+ act.setTask(task);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return act;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据信息获取归档信息并调转页面
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "formRecord")
|
|
|
+ public String form(ProjectReportRecord projectReportRecord, Model model) throws Exception {
|
|
|
+ if (StringUtils.isBlank(projectReportRecord.getView()) || !projectReportRecord.getView().equals("view")){
|
|
|
+ if(StringUtils.isBlank(projectReportRecord.getId())){
|
|
|
+ projectReportRecord.setCreateDate(new Date());
|
|
|
+ projectReportRecord.setCreateBy(UserUtils.getUser());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ProjectReportData projectReportData = new ProjectReportData();
|
|
|
+ ProjectRecords projectRecords = new ProjectRecords();
|
|
|
+ projectReportData.setFileStatus("1");
|
|
|
+ ProjectReportData reportData = ruralProjectMessageService.getProjectReportDateByProjectId(projectReportRecord.getReportId());
|
|
|
+ if(null != reportData){
|
|
|
+ if (StringUtils.isBlank(projectReportRecord.getView()) || !projectReportRecord.getView().equals("view")){
|
|
|
+ int count = projectReportRecordService.getNumber(reportData.getId());
|
|
|
+ projectReportRecord.setRecordNum(count>9?reportData.getNumber()+"-"+count+"":reportData.getNumber()+"-"+"0"+count);
|
|
|
+ }else{
|
|
|
+ ProjectReportRecord projectReportRecordInfo =ruralProjectMessageService.getProjectReportRecord(reportData.getId());
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportRecordInfo, projectReportRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取项目信息
|
|
|
+ RuralProjectRecords ruralProjectRecords = projectRecordsService.get(projectReportRecord.getReportId());
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(ruralProjectRecords, projectRecords);
|
|
|
+ //获取合同信息
|
|
|
+ WorkContractInfo projectContractInfo = ruralProjectMessageService.getProjectContractInfo(projectRecords.getWorkContractInfo().getId());
|
|
|
+ projectRecords.setWorkContractInfo(projectContractInfo);
|
|
|
+ reportData.setProject(projectRecords);
|
|
|
+ projectReportRecord.setReport(reportData);
|
|
|
+ model.addAttribute("projectReportRecord", projectReportRecord);
|
|
|
+ if(null != projectContractInfo){
|
|
|
+ if(null != projectContractInfo.getWorkClientInfoList()){
|
|
|
+ model.addAttribute("workClientInfoName", projectContractInfo.getWorkClientInfoList().get(0).getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("view")){
|
|
|
+ return "modules/ruralprojectrecords/cost/projectReportRecord/projectReportRecordView";
|
|
|
+ }else if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modiftApply")){
|
|
|
+ ProcessInstance processInstance = actTaskService.getProcIns(projectReportRecord.getProcessInstanceId());
|
|
|
+ if (processInstance!=null) {
|
|
|
+ Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
|
|
|
+ Act act = new Act();
|
|
|
+ act.setTaskId(taskInfok.getId());
|
|
|
+ act.setTaskName(taskInfok.getName());
|
|
|
+ act.setProcDefId(taskInfok.getProcessDefinitionId());
|
|
|
+ act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
|
|
|
+ act.setProcInsId(taskInfok.getProcessInstanceId());
|
|
|
+ act.setTask(taskInfok);
|
|
|
+ projectReportRecord.setAct(act);
|
|
|
+ }
|
|
|
+ return "modules/projectcontentinfo/projectReportRecordModiftApply";
|
|
|
+ }
|
|
|
+ return "modules/ruralprojectrecords/cost/projectReportRecord/projectReportRecordForm";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查看,增加,编辑报告归档表单页面
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "formRecordModify")
|
|
|
+ public String formRecordModify(ProjectReportRecord projectReportRecord, Model model) {
|
|
|
+ projectReportRecord = projectReportRecordService.get(projectReportRecord.getId());
|
|
|
+ if(StringUtils.isBlank(projectReportRecord.getId())){
|
|
|
+ projectReportRecord.setCreateDate(new Date());
|
|
|
+ projectReportRecord.setCreateBy(UserUtils.getUser());
|
|
|
+ }
|
|
|
+ projectReportRecord.setView("modify");
|
|
|
+ model.addAttribute("projectReportRecord", projectReportRecord);
|
|
|
+ if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("view")){
|
|
|
+ return "modules/ruralprojectrecords/projectReportRecord/projectReportRecordView";
|
|
|
+ }else if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modiftApply")){
|
|
|
+ ProcessInstance processInstance = actTaskService.getProcIns(projectReportRecord.getProcessInstanceId());
|
|
|
+ if (processInstance!=null) {
|
|
|
+ Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
|
|
|
+ Act act = new Act();
|
|
|
+ act.setTaskId(taskInfok.getId());
|
|
|
+ act.setTaskName(taskInfok.getName());
|
|
|
+ act.setProcDefId(taskInfok.getProcessDefinitionId());
|
|
|
+ act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
|
|
|
+ act.setProcInsId(taskInfok.getProcessInstanceId());
|
|
|
+ act.setTask(taskInfok);
|
|
|
+ projectReportRecord.setAct(act);
|
|
|
+ }
|
|
|
+ return "modules/projectcontentinfo/projectReportRecordModiftApply";
|
|
|
+ }
|
|
|
+ return "modules/ruralprojectrecords/cost/projectReportRecord/projectReportRecordModify";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存报告归档
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "saveRecord")
|
|
|
+ public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
|
|
|
+ if (!beanValidator(model, projectReportRecord)){
|
|
|
+ return form(projectReportRecord, model);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ //获取创建者信息
|
|
|
+ User user = projectReportRecord.getCreateBy();
|
|
|
+ String sta = projectReportRecord.getStatus();
|
|
|
+ if(user!=null && !UserUtils.getUser().getId().equals(user.getId()) && StringUtils.isNotBlank(user.getId())){
|
|
|
+ addMessage(redirectAttributes, "您不是申请人,无法修改");
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ //状态设置为审核中
|
|
|
+ projectReportRecord.setStatus("2");
|
|
|
+ String processInstanceId ="";
|
|
|
+ if (user!=null && StringUtils.isNotBlank(user.getId()) && StringUtils.isNotBlank(sta) && "3".equals(sta)){
|
|
|
+ processInstanceId = projectReportRecordService.get(projectReportRecord.getId()).getProcessInstanceId();
|
|
|
+ }
|
|
|
+ Map<String, Object> variables = new HashMap<>();
|
|
|
+ if(!projectReportRecord.getIsNewRecord()){//编辑表单保存
|
|
|
+ ProjectReportRecord t = projectReportRecordService.get(projectReportRecord.getId());//从数据库取出记录的值
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportRecord,t);//将编辑表单中的非NULL值覆盖数据库记录中的值
|
|
|
+ if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modify")){
|
|
|
+ projectReportRecord.setStatus("2");
|
|
|
+ }
|
|
|
+ ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
|
|
|
+ }else {//新增表单保存
|
|
|
+ ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "保存报告归档成功");
|
|
|
+ }catch (Exception e){
|
|
|
+ addMessage(redirectAttributes, "保存报告归档失败");
|
|
|
+ }
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 暂存报告归档
|
|
|
+ * @param projectReportRecord
|
|
|
+ * @param model
|
|
|
+ * @param redirectAttributes
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "holdSaveRecord")
|
|
|
+ public String holdSaveRecord(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
|
|
|
+ if (!beanValidator(model, projectReportRecord)){
|
|
|
+ return form(projectReportRecord, model);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ //获取创建者信息
|
|
|
+ User user = projectReportRecord.getCreateBy();
|
|
|
+ String sta = projectReportRecord.getStatus();
|
|
|
+ if(user!=null && !UserUtils.getUser().getId().equals(user.getId()) && StringUtils.isNotBlank(user.getId())){
|
|
|
+ addMessage(redirectAttributes, "您不是申请人,无法修改");
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+ //添加暂存判定
|
|
|
+ projectReportRecord.setFlag("1");
|
|
|
+ //将状态改为暂存状态
|
|
|
+ projectReportRecord.setStatus("1");
|
|
|
+ String processInstanceId ="";
|
|
|
+ if (user!=null && StringUtils.isNotBlank(user.getId()) && StringUtils.isNotBlank(sta) && "3".equals(sta)){
|
|
|
+ processInstanceId = projectReportRecordService.get(projectReportRecord.getId()).getProcessInstanceId();
|
|
|
+ }
|
|
|
+ Map<String, Object> variables = new HashMap<>();
|
|
|
+ if(!projectReportRecord.getIsNewRecord()){//编辑表单保存
|
|
|
+ ProjectReportRecord t = projectReportRecordService.get(projectReportRecord.getId());//从数据库取出记录的值
|
|
|
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportRecord,t);//将编辑表单中的非NULL值覆盖数据库记录中的值
|
|
|
+ if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modify")){
|
|
|
+ projectReportRecord.setStatus("1");
|
|
|
+ }
|
|
|
+ ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
|
|
|
+ }else {//新增表单保存
|
|
|
+ ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "保存报告归档暂存成功");
|
|
|
+ }catch (Exception e){
|
|
|
+ addMessage(redirectAttributes, "保存报告归档暂存失败");
|
|
|
+ }
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读取单个实体流程
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "getReportRecordProcessOne")
|
|
|
+ public String getReportRecordProcessOne(ProjectReportRecord projectReportRecord,Model model) {
|
|
|
+ model.addAttribute("processInstanceId", projectReportRecord.getProcessInstanceId());
|
|
|
+ return "modules/workreimbursement/workReimbursementTrack";
|
|
|
+ }
|
|
|
+
|
|
|
+ //报告流程审批
|
|
|
+ @RequestMapping(value = {"auditProjectReportRecordSave"})
|
|
|
+ public String auditProjectReportRecordSave(ProjectReportRecord projectReportRecord, HttpServletRequest request, HttpServletResponse response, Model model,
|
|
|
+ RedirectAttributes redirectAttributes) {
|
|
|
+ try {
|
|
|
+ // 对不同环节的业务逻辑进行操作
|
|
|
+ List<User> users = UserUtils.getByProssType(projectReportRecord.getProcessInstanceId(),1);
|
|
|
+ String flag = projectReportRecord.getAct().getFlag();
|
|
|
+ if ("yes".equals(flag) && (users==null || users.size()==0)){
|
|
|
+ addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
|
|
|
+ }else {
|
|
|
+ String str = projectReportRecordService.auditSave(projectReportRecord,users);
|
|
|
+ addMessage(redirectAttributes, str);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("Exception e:"+e);
|
|
|
+ addMessage(redirectAttributes, "报告归档流程审批失败");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(projectReportRecord.getHome()) && projectReportRecord.getHome().equals("home")){
|
|
|
+ return "redirect:" + Global.getAdminPath() + "/home/?repage";
|
|
|
+ }else {
|
|
|
+ //报告变更
|
|
|
+ Page<ProjectReportRecord> page = projectReportRecordService.findPage(new Page<ProjectReportRecord>(request, response), projectReportRecord);
|
|
|
+ model.addAttribute("page", page);
|
|
|
+ return "modules/projectcontentinfo/projectReportRecordList";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报告归档:强制撤回
|
|
|
+ */
|
|
|
+ @RequestMapping("cancelInvalidate")
|
|
|
+ public String cancelInvalidate(ProjectReportRecord projectReportRecord,RedirectAttributes redirectAttributes){
|
|
|
+ projectReportRecord = projectReportRecordService.get(projectReportRecord.getId());
|
|
|
+ try {
|
|
|
+ if(projectReportRecord.getStatus().equals("5")){
|
|
|
+ addMessage(redirectAttributes, "报告归档已审批通过,无法撤回");
|
|
|
+ }else{
|
|
|
+ ruralProjectMessageService.cancelInvalidate(projectReportRecord);
|
|
|
+ addMessage(redirectAttributes, "强制撤回报告归档成功");
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ addMessage(redirectAttributes, "强制撤回报告归档失败");
|
|
|
+ }
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
|
|
|
+ }
|
|
|
+
|
|
|
+}
|