package com.ruoyi.web.controller.project; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.NotRepeatCommit; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.domain.ServiceDonateorganBase; import com.ruoyi.project.domain.ServiceEthicalreviewinitiate; import com.ruoyi.project.domain.ServiceEthicalreviewopinions; import com.ruoyi.project.domain.vo.EthicalReviewVO; import com.ruoyi.project.domain.vo.EthicalreviewopinionsStateTotalVO; import com.ruoyi.project.domain.vo.EthicalreviewopinionsTotalVO; import com.ruoyi.project.service.IServiceEthicalreviewinitiateService; import com.ruoyi.project.service.IServiceEthicalreviewopinionsService; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.ObjectUtils; import org.apache.poi.ss.formula.functions.Now; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; /** * 伦理审查专家意见Controller * * @author ruoyi * @date 2021-11-23 */ @RestController @RequestMapping("/project/ethicalreviewopinions") @Api(description = "伦理审查专家意见",tags={"伦理审查专家意见"}) public class ServiceEthicalreviewopinionsController extends BaseController { @Autowired private IServiceEthicalreviewopinionsService serviceEthicalreviewopinionsService; @Autowired private IServiceEthicalreviewinitiateService serviceEthicalreviewinitiateService; @ApiOperation("查询伦理审查专家意见列表") /** * 查询伦理审查专家意见列表 */ //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:list')") @GetMapping("/list") public Map list(ServiceEthicalreviewopinions serviceEthicalreviewopinions) { serviceEthicalreviewopinionsService.updateTimeOut(); Page list = serviceEthicalreviewopinionsService.queryListByPage(serviceEthicalreviewopinions); return getDataTable(list.getRecords(), (int) list.getTotal()); } @ApiOperation("查询捐献信息伦理审查专家意见列表") @GetMapping("/listnew") public TableDataInfo listnew(EthicalReviewVO ethicalReviewVO) { startPage(); List list = serviceEthicalreviewopinionsService.selectVOList(ethicalReviewVO); return getDataTable(list); } // /** // * 导出伦理审查专家意见列表 // */ // //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:export')") // @Log(title = "伦理审查专家意见", businessType = BusinessType.EXPORT) // @GetMapping("/export") // public AjaxResult export(ServiceEthicalreviewopinions serviceEthicalreviewopinions) { // List list = serviceEthicalreviewopinionsService.queryList(serviceEthicalreviewopinions); // ExcelUtil util = new ExcelUtil(ServiceEthicalreviewopinions.class); // return util.exportExcel(list, "伦理审查专家意见数据"); // } @ApiOperation("获取伦理审查专家意见详细信息") /** * 获取伦理审查专家意见详细信息 */ //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(serviceEthicalreviewopinionsService.getById(id)); } @ApiOperation("新增伦理审查专家意见") /** * 新增伦理审查专家意见 */ //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:add')") @Log(title = "新增伦理审查专家意见", businessType = BusinessType.INSERT) @PostMapping("/add") public AjaxResult add(@RequestBody ServiceEthicalreviewopinions serviceEthicalreviewopinions) { boolean save = serviceEthicalreviewopinionsService.save(serviceEthicalreviewopinions); return AjaxResult.success(serviceEthicalreviewopinions); } @ApiOperation("修改伦理审查专家意见") /** * 修改伦理审查专家意见 */ //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:edit')") @Log(title = "伦理审查专家意见", businessType = BusinessType.UPDATE) @PostMapping("/edit") // @RepeatSubmit public AjaxResult edit(@RequestBody ServiceEthicalreviewopinions serviceEthicalreviewopinions) { boolean res=serviceEthicalreviewopinionsService.updateById(serviceEthicalreviewopinions); if(res&&serviceEthicalreviewopinions.getExpertType().equals("主任委员")&&serviceEthicalreviewopinions.getReceiveStatus().equals("5")){ QueryWrapper ethicalreviewinitiateQueryWrapper=new QueryWrapper<>(); ethicalreviewinitiateQueryWrapper.eq("id",serviceEthicalreviewopinions.getNitiateId()); ServiceEthicalreviewinitiate serviceEthicalreviewinitiate =new ServiceEthicalreviewinitiate(); serviceEthicalreviewinitiate.setStatus("3"); res=serviceEthicalreviewinitiateService.update(serviceEthicalreviewinitiate,ethicalreviewinitiateQueryWrapper); } return toAjax(res); } @ApiOperation("删除伦理审查专家意见") /** * 删除伦理审查专家意见 */ //// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:remove')") @Log(title = "伦理审查专家意见", businessType = BusinessType.DELETE) @GetMapping("/remove/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(serviceEthicalreviewopinionsService.removeByIds(Arrays.asList(ids))); } /** * 获取伦理审查专家数量 */ @ApiOperation("获取伦理审查专家数量") @GetMapping(value = "/expertCount") public AjaxResult count(Integer nitiateId) { QueryWrapper ethicalreviewopinionsWrapper=new QueryWrapper<>(); ethicalreviewopinionsWrapper.eq("nitiate_Id",nitiateId); long count =serviceEthicalreviewopinionsService.count(ethicalreviewopinionsWrapper); return AjaxResult.success(count); } /** * 获取伦理审查专家接收 */ @ApiOperation("获取伦理审查专家状态") @GetMapping("/receiveStatus") public AjaxResult receiveStatus(Integer nitiateId,String expertNo,String receiveStatus) { QueryWrapper ethicalreviewopinionsWrapper=new QueryWrapper<>(); ethicalreviewopinionsWrapper.eq("nitiate_Id",nitiateId).eq("expert_no",expertNo); ServiceEthicalreviewopinions serviceEthicalreviewopinions =new ServiceEthicalreviewopinions(); serviceEthicalreviewopinions.setReceiveStatus(receiveStatus); return toAjax(serviceEthicalreviewopinionsService.update(serviceEthicalreviewopinions,ethicalreviewopinionsWrapper)); } @ApiOperation("专家统计详情") @GetMapping(value = "/expertTotal") public Result> expertTotal(String expertNo) { return Result.success(serviceEthicalreviewopinionsService.expertTotal(expertNo)) ; } @ApiOperation("专家状态统计") @GetMapping(value = "/stateTotal") public Result> stateTotal(String expertNo) { return Result.success(serviceEthicalreviewopinionsService.stateTotal(expertNo)); } /** * 下载工作人员差旅费报销单 */ @ApiOperation("遗体器官获取伦理审查表") @GetMapping(value = "/download") public Result downloadInfo(String nitiateId) throws IOException { if(ObjectUtils.isEmpty(nitiateId)){ return Result.error("nitiateId伦理审查id不能为空"); } EthicalReviewVO reviewVO =new EthicalReviewVO(); reviewVO.setNitiateId(nitiateId); List list = serviceEthicalreviewopinionsService.selectVOList(reviewVO); if(list.size()==0){ return Result.error("伦理审查id无相关数据"); } EthicalreviewopinionsStateTotalVO stateTotalVO=serviceEthicalreviewopinionsService.stateTotalAll(nitiateId); String filePath = getClass().getResource("/template/").getPath(); if(filePath.substring(0,1).equals("/")) filePath=filePath.substring(1); String content =""; Template t = null; try { content = Files.readString(Paths.get(filePath+"遗体器官获取伦理审查表首页.xml"), StandardCharsets.UTF_8); String name=list.get(0).getName()+"(住院号:"+list.get(0).getInpatientno()+")"; content=content.replace("$name",name);//项目名称 content=content.replace("$inCount",stateTotalVO.getInCount());//到会委员 content=content.replace("$avoidCount","0");//回避委员 content=content.replace("$agreeCount",stateTotalVO.getAgreeCount());//同意 content=content.replace("$updateAgreeCount",stateTotalVO.getRejectCount());//修改后同意 content=content.replace("$disagreeCount",stateTotalVO.getDisagreeCount());//不同意 content=content.replace("$abstentionCount",stateTotalVO.getWaiveCount());//弃权 String committeeOpinion=""; for (EthicalReviewVO row:list) { String State="",sgin="",id=row.getId()+"",expName=row.getExpertname(); if(expName.length()==2) expName=expName.substring(0,1)+" "+expName.substring(1); if(row.getReceiveStatus().equals("1"))State="已同意"; else if(row.getReceiveStatus().equals("2")) State="不同意"; else if(row.getReceiveStatus().equals("3")) State="弃权"; else if(row.getReceiveStatus().equals("4")) State="修改后同意"; committeeOpinion+=" \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 【委员审批】"+expName+" "+State+" \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 签名:\n" + " \n" ; if(sgin.length()>10) { committeeOpinion += " \n" + " " + sgin + "\n" + " \n" + " \n" ; } committeeOpinion += " \n" + " \n" + " \n" + " \n" + " \n" + " "+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",row.getConclusiontime())+"\n" + " \n" + " "; } content=content.replace("$committeeOpinion",committeeOpinion);//委员会意见 content=content.replace("$dateContent",DateUtils.parseDateToStr("yyyy年MM月dd日",new Date()));//日期 } catch (Exception e) { e.printStackTrace(); } String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); String name = "遗体器官获取伦理审查表_"+nitiateId+"_" + newTime; String filePathData =RuoYiConfig.getProfile() + "/download/wordtemplate"; //创建文件夹 File folderPath = new File(filePathData); if (!folderPath.exists()) { folderPath.mkdirs(); } try { Files.writeString(Paths.get(filePathData+ "/" + name + ".doc"),content); } catch (Exception e1) { e1.printStackTrace(); } Map map = new HashMap<>(); map.put("downloadUrl", "/download/wordtemplate/" + name + ".doc"); map.put("downloadName", name + ".doc"); return Result.success(map); } }