package com.uas.console.donate.controller; import com.alibaba.fastjson.JSONObject; import com.uas.console.donate.model.*; import com.uas.console.donate.service.AttachService; import com.uas.console.donate.service.ProjectRecodeService; import com.uas.console.donate.service.ProjectService; import com.uas.dfs.service.FileClient; import com.uas.platform.core.logging.BufferedLoggerManager; import com.uas.platform.core.model.PageInfo; import com.uas.platform.core.model.PageParams; import com.uas.platform.core.web.bind.RequestState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Controller @RequestMapping("/project") public class ProjectController { private static final SimpleDateFormat codesdf=new SimpleDateFormat("yyyyMMddhhmmsssss"); @Autowired private ProjectService projectService ; @Autowired private ProjectRecodeService projectRecodeService; @Autowired private FileClient fileClient; @Autowired private AttachService attachService; private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class); /** * 审核通过项目 */ @RequestMapping(value = "/approve",method = RequestMethod.POST) @ResponseBody public ModelMap approve(Long id){ logger.log("项目", "审核通过项目", null, null, id); return projectService.approve(id); } /** * 审核驳回项目 */ @RequestMapping(value = "/unapprove",method = RequestMethod.POST) @ResponseBody public ModelMap unapprove(Long id,String refuse){ logger.log("项目", "审核驳回项目", "原因:" + refuse, null, id); return projectService.unapprove(id,refuse); } /** * 重新申请项目 */ @RequestMapping(value = "/reapply", method = RequestMethod.POST) @ResponseBody public ModelMap reapply(Long id){ logger.log("项目", "重新申请项目", null, null, id); return projectService.reapply(id); } /** * 获取所有未被活动关联到的项目 */ @RequestMapping(value = "/getProjectQualification",method = RequestMethod.GET) @ResponseBody public List getProjectQualification(){ logger.log("项目", "获取所有未被活动关联到的项目"); return projectService.getProjects(); } /** * 保存项目草稿 */ @ResponseBody @RequestMapping(value = "/save",method = RequestMethod.POST) public Project save(@RequestParam(required = false) MultipartFile logo, @RequestParam(required = false) MultipartFile pcImg, @RequestParam(required = false) MultipartFile mobileImg, @RequestParam (required = false) MultipartFile mobileListImg, @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException{ Project project=JSONObject.parseObject(jsonStr,Project.class); if(logo!=null){ String file1=fileClient.upload(logo.getBytes(),logo.getSize(),"jpg",null); project.setLogo(file1); } if(pcImg!=null){ String file2=fileClient.upload(pcImg.getBytes(),pcImg.getSize(),"jpg",null); project.setPcImg(file2); } if(mobileImg!=null){ String file3=fileClient.upload(mobileImg.getBytes(),mobileImg.getSize(),"jpg",null); project.setMobileImg(file3); } if(mobileListImg!=null){ String file4=fileClient.upload(mobileListImg.getBytes(),mobileListImg.getSize(),"jpg",null); project.setListImg(file4); } Project pro = projectService.save(project); logger.log("项目", "保存项目", null, pro.getCode(), pro.getId()); return pro; } /** * 上传图片 */ @ResponseBody @RequestMapping(value = "/upload",method = RequestMethod.POST) public String ueditorUpload(MultipartFile file) throws IOException { //上传图片 String path=fileClient.upload(file.getBytes(),file.getSize(),"jpg",null); logger.log("项目", "上传项目相关图片", path); return path; } /** * 正式提交项目 */ @ResponseBody @RequestMapping(value = "/submit",method = RequestMethod.POST) public Project submit(@RequestParam(required = false) MultipartFile logo, @RequestParam(required = false) MultipartFile pcImg, @RequestParam(required = false) MultipartFile mobileImg, @RequestParam (required = false) MultipartFile mobileListImg, @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response)throws IOException{ Project project = JSONObject.parseObject(jsonStr, Project.class); if(logo!=null){ String file1=fileClient.upload(logo.getBytes(),logo.getSize(),"jpg",null); project.setLogo(file1); } if(pcImg!=null){ String file2=fileClient.upload(pcImg.getBytes(),pcImg.getSize(),"jpg",null); project.setPcImg(file2); } if(mobileImg!=null){ String file3=fileClient.upload(mobileImg.getBytes(),mobileImg.getSize(),"jpg",null); project.setMobileImg(file3); } if(mobileListImg!=null){ String file4=fileClient.upload(mobileListImg.getBytes(),mobileListImg.getSize(),"jpg",null); project.setListImg(file4); } Date date=new Date(); //设置项目提交时间 project.setSubmitTime(date); //设置项目编号 project.setCode(codesdf.format(date)); //设置项目默认参与人数 project.setJoinAmount(0L); //设置默认项目已筹集总金额 project.setTotalAmount(0.00); Project pro = projectService.submit(project); logger.log("项目", "提交项目", null, pro.getCode(), pro.getId()); return pro; } // /** // * 取出某项目的,以及该项目对应机构的具体信息 // * @param id // * @return // */ // @ResponseBody // @RequestMapping("/detail/{id}") // public List detail(@PathVariable("id") Long id){ // Org org=projectService.findOrgInfo(id); // Project project=projectService.findOne(id); // //项目进度 // // //捐款信息 // List projectRecodeList=projectRecodeService.findProjectDetail(id); // //财务披露 // // List list=new ArrayList<>(); // list.add(org); // list.add(project); // list.add(projectRecodeList); // return list; // } /** * 获取项目列表 (全部) * @return */ @RequestMapping(method = RequestMethod.GET) @ResponseBody public Page getAllProjects(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); logger.log("项目", "获取项目列表(全部)"); return projectService.getAllProjects(pageInfo, filter); } /** * 获取项目列表 (已审核) * @return */ @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET) @ResponseBody public Page getAuditedProjects(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); logger.log("项目", "获取项目列表(已审核)"); return projectService.getAuditedProjects(pageInfo, filter); } /** * 获取项目列表 (未审核) * @return */ @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET) @ResponseBody public Page getUnauditedProjects(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); logger.log("项目", "获取项目列表(未审核)"); return projectService.getUnauditedProjects(pageInfo, filter); } /** * 获取项目列表 (未通过) * @return */ @RequestMapping(params = RequestState.REFUSED, method = RequestMethod.GET) @ResponseBody public Page getDisagreedProjects(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); logger.log("项目", "获取项目列表(未通过)"); return projectService.getDisagreedProjects(pageInfo, filter); } /** * 获取项目列表 (未结项) * @return */ @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET) @ResponseBody public Page getNotEndProjects(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); logger.log("项目", "获取项目列表(未结项)"); return projectService.getNotEndProjects(pageInfo, filter); } /** * 获取项目详情 * @param id 项目id * @return */ @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) @ResponseBody public Project getProjectDetail(@PathVariable("id") Long id) { logger.log("项目", "获取项目详情", null, null, id); return projectService.findOne(id); } /** * 保存基本信息 * @param json * @return */ @RequestMapping(value = "/save/baseInfo", method = RequestMethod.POST) @ResponseBody public Project saveBaseInfo(@RequestBody String json) { Project project = JSONObject.parseObject(json, Project.class); Project pro = projectService.saveBaseInfo(project); logger.log("项目", "保存项目基本信息", null, null, pro.getId()); return pro; } /** * 保存财务信息 * @param json * @return */ @RequestMapping(value = "/save/finance/{id}", method = RequestMethod.POST) @ResponseBody public ModelMap saveFinance(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException { ProjectFinance finance = JSONObject.parseObject(json, ProjectFinance.class); if (img != null) { String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null); if (null != path) { finance.setPath(path); } } logger.log("项目", "保存财务信息", null, null, id); return projectService.saveFinance(finance, id); } /** * 保存进度报告 * @param json * @return */ @RequestMapping(value = "/save/report/{id}", method = RequestMethod.POST) @ResponseBody public ModelMap saveReport(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException { ProjectReport report = JSONObject.parseObject(json, ProjectReport.class); if (img != null) { String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null); if (null != path) { report.setPath(path); } } logger.log("项目", "保存进度报告", null, null, id); return projectService.saveReport(report, id); } /** * 获取项目执行日期和更新次数 * @param id * @return */ @RequestMapping(value = "/getConclude/{id}", method = RequestMethod.GET) @ResponseBody public ModelMap getConcludeData(@PathVariable("id") Long id) { ModelMap map = new ModelMap(); map.put("executeDays", projectService.getExecuteDaysById(id)); map.put("updateTimes", projectService.getUpdateTimesById(id)); logger.log("项目", "获取项目执行日期和更新次数"); return map; } /** * 保存结项报告 * @param json * @return */ @RequestMapping(value = "/save/conclude/{id}", method = RequestMethod.POST) @ResponseBody public ModelMap saveConclude(String json, @PathVariable("id") Long id ,MultipartFile img) throws IOException { ProjectConclude conclude = JSONObject.parseObject(json, ProjectConclude.class); if (img != null) { String path = fileClient.upload(img.getBytes(), img.getSize(), "jpg", null); if (null != path) { conclude.setPath(path); } } logger.log("项目", "保存结项报告", null, null, id); return projectService.saveConclude(conclude, id); } /** * 获取已保存的项目草稿 * @return */ @RequestMapping(value = "/getSavedProject", method = RequestMethod.GET) @ResponseBody public Project getSavedProject() { logger.log("项目", "获取已保存草稿"); return projectService.getSavedProject(); } /** * 获取各类项目数量 * @return */ @RequestMapping(value="/getProjectsNum", method = RequestMethod.GET) @ResponseBody public ModelMap getProjectsNum(){ logger.log("项目", "获取各类项目数量"); return projectService.getProjectsNum(); } /** * 编辑器删除图片 */ @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @ResponseBody public void deletePrizeImg(@RequestParam String path) { try { fileClient.delete(path); logger.log("项目", "编辑器删除图片成功"); } catch (RuntimeException e) { logger.log("项目", "编辑器删除图片失败", path); e.printStackTrace(); } } }