package com.goafanti.RD.controller; import com.goafanti.RD.bo.InputRdDetails; import com.goafanti.RD.bo.InputRdList; import com.goafanti.RD.service.RDService; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.controller.BaseApiController; import com.goafanti.common.controller.PublicController; import com.goafanti.common.enums.AttachmentType; import com.goafanti.common.model.Attachment; import com.goafanti.common.model.RdDetails; import com.goafanti.common.utils.DateUtils; import com.goafanti.common.utils.LoggerUtils; import com.goafanti.common.utils.ParamUtils; import com.goafanti.common.utils.StringUtils; import com.goafanti.common.utils.excel.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; @RestController @RequestMapping(value = "/api/admin/RD") public class RDContorller extends BaseApiController { @Autowired private RDService rdService; @Value(value = "${upload.path}") private final String uploadPath = null; @RequestMapping(value="/add",method = RequestMethod.POST) public Result add(@Validated InputRdDetails in ,BindingResult bindingResult) { Result res= new Result(); if (bindingResult.hasErrors()) { res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(), ParamUtils.getParamName(in,bindingResult.getFieldError().getField()))); return res; } if (rdService.checkRdNo(in.getRdNo(),null)){ res.getError().add(buildErrorMessageParams(ErrorConstants.PARAM_BEING_ERROR,"研发活动编号")); return res; } if (StringUtils.isNotBlank(in.getRdStartStr())){ in.setRdStart(DateUtils.StringToDate(in.getRdStartStr(), AFTConstants.YYYYMMDD)); } if (StringUtils.isNotBlank(in.getRdEndStr())){ in.setRdEnd(DateUtils.StringToDate(in.getRdEndStr(),AFTConstants.YYYYMMDD)); } res.data(rdService.add(in)); return res; } @RequestMapping(value="/update",method = RequestMethod.POST) public Result update(@Validated InputRdDetails in ,BindingResult bindingResult) { Result res= new Result(); if (bindingResult.hasErrors()) { res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(), ParamUtils.getParamName(in,bindingResult.getFieldError().getField()))); return res; } if (rdService.checkRdNo(in.getRdNo(),in.getId())){ res.getError().add(buildErrorMessageParams(ErrorConstants.PARAM_BEING_ERROR,"研发活动编号")); return res; } if (StringUtils.isNotBlank(in.getRdStartStr())){ in.setRdStart(DateUtils.StringToDate(in.getRdStartStr(), AFTConstants.YYYYMMDD)); } if (StringUtils.isNotBlank(in.getRdEndStr())){ in.setRdEnd(DateUtils.StringToDate(in.getRdEndStr(),AFTConstants.YYYYMMDD)); } res.data(rdService.update(in)); return res; } @RequestMapping(value = "/details",method = RequestMethod.GET) public Result details(Long id){ Result res =new Result(); res.setData(rdService.details(id)); return res; } @RequestMapping(value = "/list",method = RequestMethod.GET) public Result list(InputRdList in){ Result res =new Result(); res.setData(rdService.list(in)); return res; } @RequestMapping(value = "/exportList",method = RequestMethod.GET) public Result exportList(InputRdList in){ return rdService.exportList(in,uploadPath); } /** * Excel批量导入回款 * * @return */ @RequestMapping(value = "/import" , method = RequestMethod.POST) public Result importTemplate(@RequestParam(value = "file", required = false) MultipartFile file) { Result res=new Result(); //判断文件是否存在 if(null == file){ res.getError().add(buildError("文件不存在!","文件不存在!")); return res; } String fileName = file.getOriginalFilename(); if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { res.getError().add(buildError("格式不正确","格式不正确")); return res; } res.data(rdService.batchList(file)); return res; } /** * 批量导入回款模版 * * @return */ @RequestMapping(value = "/downloadTemplate", method = RequestMethod.GET) public void downloadTemplate(HttpServletResponse response) { Result res = new Result(); StringBuffer url= new StringBuffer(uploadPath); url=url.append("/tmp").append("/RD_details_template.xlsx"); try { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, url.toString(),"研发活动导入模版.xlsx"); FileUtils.writeBytes(url.toString(), response.getOutputStream()); } catch (Exception e) { LoggerUtils.error(PublicController.class,"下载文件失败", e); } } }