From 427096ae47a5bac72f655964b90cf4c0714261fd Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 19 五月 2026 13:37:50 +0800
Subject: [PATCH] 遗体器官获取伦理审查表word导出功能
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 153 insertions(+), 16 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
index a8d120e..9603720 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
@@ -6,25 +6,40 @@
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.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
/**
* 浼︾悊瀹℃煡涓撳鎰忚Controller
@@ -34,20 +49,27 @@
*/
@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<String, Object> list(ServiceEthicalreviewopinions serviceEthicalreviewopinions) {
+ serviceEthicalreviewopinionsService.updateTimeOut();
Page<ServiceEthicalreviewopinions> list = serviceEthicalreviewopinionsService.queryListByPage(serviceEthicalreviewopinions);
return getDataTable(list.getRecords(), (int) list.getTotal());
}
+ @ApiOperation("鏌ヨ鎹愮尞淇℃伅浼︾悊瀹℃煡涓撳鎰忚鍒楄〃")
@GetMapping("/listnew")
public TableDataInfo listnew(EthicalReviewVO ethicalReviewVO) {
startPage();
@@ -68,6 +90,7 @@
// return util.exportExcel(list, "浼︾悊瀹℃煡涓撳鎰忚鏁版嵁");
// }
+ @ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鎰忚璇︾粏淇℃伅")
/**
* 鑾峰彇浼︾悊瀹℃煡涓撳鎰忚璇︾粏淇℃伅
*/
@@ -77,17 +100,19 @@
return AjaxResult.success(serviceEthicalreviewopinionsService.getById(id));
}
+ @ApiOperation("鏂板浼︾悊瀹℃煡涓撳鎰忚")
/**
* 鏂板浼︾悊瀹℃煡涓撳鎰忚
*/
//// @PreAuthorize("@ss.hasPermi('project:ethicalreviewopinions:add')")
- @Log(title = "浼︾悊瀹℃煡涓撳鎰忚", businessType = BusinessType.INSERT)
+ @Log(title = "鏂板浼︾悊瀹℃煡涓撳鎰忚", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody ServiceEthicalreviewopinions serviceEthicalreviewopinions) {
boolean save = serviceEthicalreviewopinionsService.save(serviceEthicalreviewopinions);
return AjaxResult.success(serviceEthicalreviewopinions);
}
+ @ApiOperation("淇敼浼︾悊瀹℃煡涓撳鎰忚")
/**
* 淇敼浼︾悊瀹℃煡涓撳鎰忚
*/
@@ -96,9 +121,18 @@
@PostMapping("/edit")
// @RepeatSubmit
public AjaxResult edit(@RequestBody ServiceEthicalreviewopinions serviceEthicalreviewopinions) {
- return toAjax(serviceEthicalreviewopinionsService.updateById(serviceEthicalreviewopinions));
+ boolean res=serviceEthicalreviewopinionsService.updateById(serviceEthicalreviewopinions);
+ if(res&&serviceEthicalreviewopinions.getExpertType().equals("涓讳换濮斿憳")&&serviceEthicalreviewopinions.getReceiveStatus().equals("5")){
+ QueryWrapper<ServiceEthicalreviewinitiate> ethicalreviewinitiateQueryWrapper=new QueryWrapper<>();
+ ethicalreviewinitiateQueryWrapper.eq("id",serviceEthicalreviewopinions.getNitiateId());
+ ServiceEthicalreviewinitiate serviceEthicalreviewinitiate =new ServiceEthicalreviewinitiate();
+ serviceEthicalreviewinitiate.setStatus("3");
+ res=serviceEthicalreviewinitiateService.update(serviceEthicalreviewinitiate,ethicalreviewinitiateQueryWrapper);
+ }
+ return toAjax(res);
}
+ @ApiOperation("鍒犻櫎浼︾悊瀹℃煡涓撳鎰忚")
/**
* 鍒犻櫎浼︾悊瀹℃煡涓撳鎰忚
*/
@@ -114,9 +148,9 @@
*/
@ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鏁伴噺")
@GetMapping(value = "/expertCount")
- public AjaxResult count(Integer InfoID) {
+ public AjaxResult count(Integer nitiateId) {
QueryWrapper<ServiceEthicalreviewopinions> ethicalreviewopinionsWrapper=new QueryWrapper<>();
- ethicalreviewopinionsWrapper.eq("InfoID",InfoID);
+ ethicalreviewopinionsWrapper.eq("nitiate_Id",nitiateId);
long count =serviceEthicalreviewopinionsService.count(ethicalreviewopinionsWrapper);
return AjaxResult.success(count);
}
@@ -124,23 +158,126 @@
/**
* 鑾峰彇浼︾悊瀹℃煡涓撳鎺ユ敹
*/
- @ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鎺ユ敹")
+ @ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鐘舵��")
@GetMapping("/receiveStatus")
- public AjaxResult receiveStatus(Integer InfoID,String DonorNo) {
+ public AjaxResult receiveStatus(Integer nitiateId,String expertNo,String receiveStatus) {
QueryWrapper<ServiceEthicalreviewopinions> ethicalreviewopinionsWrapper=new QueryWrapper<>();
- ethicalreviewopinionsWrapper.eq("InfoID",InfoID).eq("DonorNo",DonorNo);
+ ethicalreviewopinionsWrapper.eq("nitiate_Id",nitiateId).eq("expert_no",expertNo);
ServiceEthicalreviewopinions serviceEthicalreviewopinions =new ServiceEthicalreviewopinions();
- serviceEthicalreviewopinions.setReceiveStatus("1");
+ serviceEthicalreviewopinions.setReceiveStatus(receiveStatus);
return toAjax(serviceEthicalreviewopinionsService.update(serviceEthicalreviewopinions,ethicalreviewopinionsWrapper));
}
- /**
- * 鑾峰彇浼︾悊瀹℃煡涓撳鏁伴噺
- */
+
@ApiOperation("涓撳缁熻璇︽儏")
@GetMapping(value = "/expertTotal")
- public AjaxResult expertTotal(String DonorNo) {
- return AjaxResult.success(serviceEthicalreviewopinionsService.expertTotal(DonorNo));
+ public Result<List<EthicalreviewopinionsTotalVO>> expertTotal(String expertNo) {
+ return Result.success(serviceEthicalreviewopinionsService.expertTotal(expertNo)) ;
}
+
+ @ApiOperation("涓撳鐘舵�佺粺璁�")
+ @GetMapping(value = "/stateTotal")
+ public Result<List<EthicalreviewopinionsStateTotalVO>> 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<EthicalReviewVO> 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+=" <w:tr wsp:rsidR=\"00425E28\" wsp:rsidRPr=\"00CB3FB5\" wsp:rsidTr=\"00425E28\"><w:trPr><w:trHeight w:val=\"680\"/></w:trPr>\n" +
+ " <w:tc><w:tcPr><w:tcW w:w=\"885\" w:type=\"dxa\"/><w:vmerge/><w:shd w:val=\"clear\" w:color=\"auto\" w:fill=\"auto\"/><w:vAlign\n" +
+ " w:val=\"center\"/></w:tcPr>\n" +
+ " <w:p wsp:rsidR=\"00425E28\" wsp:rsidRPr=\"00CB3FB5\" wsp:rsidRDefault=\"00425E28\" wsp:rsidP=\"006A1099\"><w:pPr></w:pPr></w:p>\n" +
+ " </w:tc>\n" +
+ " <w:tc><w:tcPr></w:tcPr>\n" +
+ " <w:p wsp:rsidR=\"00425E28\" wsp:rsidRPr=\"00CB3FB5\" wsp:rsidRDefault=\"00AC7CCA\" wsp:rsidP=\"00CB3FB5\">\n" +
+ " <w:r wsp:rsidRPr=\"00737357\">\n" +
+ " <w:t>銆愬鍛樺鎵广��"+expName+" "+State+" </w:t></w:r>\n" +
+ " </w:p>\n" +
+ " </w:tc>\n" +
+ " <w:tc><w:tcPr></w:tcPr>\n" +
+ " <w:p wsp:rsidR=\"00425E28\" wsp:rsidRPr=\"00CB3FB5\" wsp:rsidRDefault=\"00AC7CCA\" wsp:rsidP=\"00CB3FB5\">\n" +
+ " <w:r wsp:rsidRPr=\"00737357\">\n" +
+ " <w:t>绛惧悕锛�</w:t></w:r>\n" +
+ " <w:r wsp:rsidR=\"00421BE1\">\n" ;
+ if(sgin.length()>10) {
+ committeeOpinion += " <w:pict>\n" +
+ " <w:binData w:name=\"wordml://03000001.png\" xml:space=\"preserve\"> " + sgin + "</w:binData>\n" +
+ " <v:shape style=\"width:50pt;height:20pt\"><v:imagedata src=\"wordml://03000001.png\" o:title=\"my绛惧瓧\"/></v:shape>\n" +
+ " </w:pict>\n" ;
+ }
+ committeeOpinion += " </w:r>\n" +
+ " </w:p>\n" +
+ " </w:tc>\n" +
+ " <w:tc><w:tcPr></w:tcPr>\n" +
+ " <w:p wsp:rsidR=\"00425E28\" wsp:rsidRPr=\"00CB3FB5\" wsp:rsidRDefault=\"00AC7CCA\" wsp:rsidP=\"00CB3FB5\">\n" +
+ " <w:r wsp:rsidRPr=\"00737357\"><w:t>"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",row.getConclusiontime())+"</w:t></w:r></w:p>\n" +
+ " </w:tc>\n" +
+ " </w:tr>";
+ }
+ content=content.replace("$committeeOpinion",committeeOpinion);//濮斿憳浼氭剰瑙�
+ content=content.replace("$dateContent",DateUtils.parseDateToStr("yyyy骞碝M鏈坉d鏃�",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<String, Object> map = new HashMap<>();
+ map.put("downloadUrl", "/download/wordtemplate/" + name + ".doc");
+ map.put("downloadName", name + ".doc");
+ return Result.success(map);
+ }
}
--
Gitblit v1.9.3