package com.goafanti.techproject.controller; import java.text.ParseException; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.controller.CertifyApiController; import com.goafanti.common.enums.CopyrightFields; import com.goafanti.common.enums.TechProjectStatus; import com.goafanti.common.model.TechProject; import com.goafanti.common.model.TechProjectLog; import com.goafanti.common.model.User; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.techproject.bo.InputTechProject; import com.goafanti.techproject.bo.TechProjectDetailBo; import com.goafanti.techproject.service.TechProjectLogService; import com.goafanti.techproject.service.TechProjectService; import com.goafanti.techproject.service.TechWebsiteService; @Controller @RequestMapping(value = "/api/techproject") public class TechProjectApiController extends CertifyApiController { @Resource private TechProjectService techProjectService; @Resource private TechWebsiteService techWebsiteService; @Resource private TechProjectLogService techProjectLogService; /** * 获取科技部门 * @return */ @RequestMapping(value = "/getDepartment", method = RequestMethod.GET) public Result getDepartment(String uid){ Result res = new Result(); res.setData(techWebsiteService.getDepartment(TokenManager.getUserId())); return res; } /** * 科技项目申报列表 * * @param pageNo * @param pageSize * @return */ @RequestMapping(value = "/listClientTechProject", method = RequestMethod.POST) public Result listClientTechProject(String pageNo, String pageSize) { Result res = new Result(); if (!checkUserLogin(res)) { return res; } Integer pNo = 1; Integer pSize = 10; if (StringUtils.isNumeric(pageSize)) { pSize = Integer.parseInt(pageSize); } if (StringUtils.isNumeric(pageNo)) { pNo = Integer.parseInt(pageNo); } res.setData(techProjectService.listClientTechProject(TokenManager.getUserId(), pNo, pSize)); return res; } /** * 科技项目申报 * * @return */ @RequestMapping(value = "/applyTechProject", method = RequestMethod.POST) public Result applyTechProject(@Valid InputTechProject techProject, BindingResult bindingResult) { Result res = new Result(); if (bindingResult.hasErrors()) { res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(), CopyrightFields.getFieldDesc(bindingResult.getFieldError().getField()))); return res; } if (!checkUserLogin(res)) { return res; } User curUser = TokenManager.getUserToken(); if (!checkCertify(res, curUser)) { return res; } TechProject tp = new TechProject(); BeanUtils.copyProperties(techProject, tp); tp.setUid(TokenManager.getUserId()); techProjectService.saveTechProject(tp, TokenManager.getToken().getAid()); return res; } /** * 科技项目申报详情 * * @return */ @RequestMapping(value = "/techProjectDetial", method = RequestMethod.POST) public Result techProjectDetial(String pid) { Result res = new Result(); if (!checkUserLogin(res)) { return res; } if (StringUtils.isBlank(pid)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "科技项目ID")); } else { TechProjectDetailBo tpd = techProjectService.selectProjectDetail(pid); if (null != tpd.getUid() && tpd.getUid().equals(TokenManager.getUserId())) { res.setData(tpd); } else { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技项目ID")); } } return res; } /** * 科技项目状态流转 * * @param pid * @return */ @RequestMapping(value = "/techProjectLog", method = RequestMethod.POST) public Result techProjectLog(String pid) { Result res = new Result(); if (!checkUserLogin(res)) { return res; } if (StringUtils.isBlank(pid)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "科技项目ID")); return res; } TechProject tp = techProjectService.selectByPrimaryKey(pid); if (null != tp.getUid() && tp.getUid().equals(TokenManager.getUserId())){ List list = techProjectLogService.selectTechProjectLogByPid(pid); for (TechProjectLog log : list){ if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.SIGN){ log.setState(TechProjectStatus.CREATE.getCode()); } if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.CIRCULATION){ log.setState(TechProjectStatus.DELIVERD.getCode()); } if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.SETTLEMENT){ log.setState(TechProjectStatus.APPRVOVED.getCode()); } } res.setData(list); } else { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技项目id")); } return res; } /** * update科技项目 * * @param t * @param l * @param recordTimeFormattedDate * @return * @throws ParseException */ @RequestMapping(value = "/updateTechProject", method = RequestMethod.POST) public Result updateTechProject(@Valid InputTechProject techProject, BindingResult bindingResult) { Result res = new Result(); if (bindingResult.hasErrors()) { res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(), CopyrightFields.getFieldDesc(bindingResult.getFieldError().getField()))); return res; } if (!checkUserLogin(res)) { return res; } User curUser = TokenManager.getUserToken(); if (!checkCertify(res, curUser)) { return res; } if (StringUtils.isBlank(techProject.getId())) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到科技申报项目", "科技项目申报ID")); return res; } TechProject t = techProjectService.selectByPrimaryKey(techProject.getId()); if (null != t.getUid() && t.getUid().equals(curUser.getId())){ TechProject tp = new TechProject(); BeanUtils.copyProperties(techProject, tp); res.setData(techProjectService.updateTechProject(tp, null, null)); } else { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到科技申报项目", "科技项目申报")); } return res; } /** * 科技项目申报材料上传 * * @param req * @param sign * @return */ @RequestMapping(value = "/upload", method = RequestMethod.POST) public Result cognizanceFile(HttpServletRequest req, String uid) { Result res = new Result(); if (!checkUserLogin(res)) { return res; } User curUser = TokenManager.getUserToken(); if (!checkCertify(res, curUser)) { return res; } String sign = "tech_project"; res.setData(handleFiles(res, "/techProject/", true, req, sign, uid)); return res; } /** * 科技项目资料下载 * @param id * @param response * @return */ @RequestMapping(value = "/download", method = RequestMethod.GET) public Result download(String id, HttpServletResponse response){ Result res = new Result(); if (!checkUserLogin(res)) { return res; } User curUser = TokenManager.getUserToken(); if (!checkCertify(res, curUser)) { return res; } if (StringUtils.isEmpty(id)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技项目ID")); return res; } TechProject t = techProjectService.selectByPrimaryKey(id); if (null == t || !curUser.getId().equals(t.getUid())){ res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技项目ID")); return res; } downloadFile(response, t.getApprovalDownloadFileName(), t.getApprovalUrl()); return res; } }