package com.ruoyi.web.controller.project; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.enums.OrganEnum; import com.ruoyi.project.domain.ServiceDonatecompletioninfo; import com.ruoyi.project.domain.ServiceDonateorgan; import com.ruoyi.project.domain.vo.DonationWitnessVO; import com.ruoyi.project.domain.vo.TimeVO; import com.ruoyi.project.service.IServiceDonatebaseinfoService; import com.ruoyi.project.service.IServiceDonateorganService; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.project.domain.ServiceDonationwitness; import com.ruoyi.project.service.IServiceDonationwitnessService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 捐献见证Controller * * @author ruoyi * @date 2021-11-17 */ @Api("捐献见证管理") @RestController @RequestMapping("/project/donationwitness") public class ServiceDonationwitnessController extends BaseController { @Autowired private IServiceDonationwitnessService serviceDonationwitnessService; @Autowired private IServiceDonateorganService serviceDonateorganService; @Autowired private IServiceDonatebaseinfoService serviceDonatebaseinfoService; private static Configuration configuration = null; public ServiceDonationwitnessController() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } /** * 查询捐献见证列表 */ @ApiOperation("获取捐献见证列表") //@PreAuthorize("@ss.hasPermi('project:donationwitness:list')") @GetMapping("/list") public TableDataInfo list(ServiceDonationwitness serviceDonationwitness) { startPage(); List list = serviceDonationwitnessService.queryList(serviceDonationwitness); return getDataTable(list); } @ApiOperation("获取捐献见证列表-新") @GetMapping("/listnew") public TableDataInfo listnew(DonationWitnessVO donationWitnessVO) { startPage(); List list = serviceDonationwitnessService.selectVOList(donationWitnessVO); return getDataTable(list); } /** * 导出捐献见证列表 */ @ApiOperation("导出捐献见证列表") //@PreAuthorize("@ss.hasPermi('project:donationwitness:export')") @Log(title = "捐献见证", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ServiceDonationwitness serviceDonationwitness) { List list = serviceDonationwitnessService.queryList(serviceDonationwitness); ExcelUtil util = new ExcelUtil(ServiceDonationwitness.class); return util.exportExcel(list, "捐献见证数据"); } /** * 获取捐献见证详细信息 */ @ApiOperation("通过id获取见证信息") //@PreAuthorize("@ss.hasPermi('project:donationwitness:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(serviceDonationwitnessService.getById(id)); } /** * 新增捐献见证 */ @ApiOperation("新增捐献见证") //@PreAuthorize("@ss.hasPermi('project:donationwitness:add')") @Log(title = "捐献见证", businessType = BusinessType.INSERT) @PostMapping @RepeatSubmit public AjaxResult add(@RequestBody ServiceDonationwitness serviceDonationwitness) { return toAjax(serviceDonationwitnessService.save(serviceDonationwitness)); } /** * 修改捐献见证 */ @ApiOperation("修改捐献见证") //@PreAuthorize("@ss.hasPermi('project:donationwitness:edit')") @Log(title = "捐献见证", businessType = BusinessType.UPDATE) @PutMapping @RepeatSubmit public AjaxResult edit(@RequestBody ServiceDonationwitness serviceDonationwitness) { return toAjax(serviceDonationwitnessService.updateById(serviceDonationwitness)); } /** * 删除捐献见证 */ @ApiOperation("删除捐献见证") //@PreAuthorize("@ss.hasPermi('project:donationwitness:remove')") @Log(title = "捐献见证", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(serviceDonationwitnessService.removeByIds(Arrays.asList(ids))); } @GetMapping(value = "/getByInfoId/{infoid}") public AjaxResult getByInfoId(@PathVariable("infoid") Long infoid) { return AjaxResult.success(serviceDonationwitnessService.getByInfoId(infoid)); } /** * 下载人体器官捐献获取见证登记表 */ @ApiOperation("通过donorno下载人体器官捐献获取见证登记表") @GetMapping(value = "/download/{id}") public Map downloadInfo(@PathVariable Long id) throws IOException { Map dataMap = new HashMap(); getData(dataMap, id); String filePath = getClass().getResource("/template/").getPath(); System.out.println(filePath); //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, configuration.setDirectoryForTemplateLoading(new File(filePath)); Template t=null; try { //捐献表.ftl为要装载的模板 t = configuration.getTemplate("人体器官捐献获取见证登记表.ftl"); } catch (IOException e) { e.printStackTrace(); } String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); String name = "人体器官捐献获取见证登记表_"+dataMap.get("XM")+"_"+ newTime; //输出文档路径及名称 File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } try { t.process(dataMap, out); } catch (TemplateException e) { e.printStackTrace(); } Map map = new HashMap<>(); map.put("downloadUrl","/profile/download/wordtemplate/"+name+".doc"); return map; } /** * 注意dataMap里存放的数据Key值要与模板中的参数相对应 * @param dataMap */ private void getData(Map dataMap, Long id){ DonationWitnessVO donationWitnessVO = new DonationWitnessVO(); List list = serviceDonationwitnessService.selectVOList(donationWitnessVO); DonationWitnessVO donationWitness = new DonationWitnessVO(); for(DonationWitnessVO v : list){ if(v.getDwid() != null && v.getDwid().longValue() == id){ donationWitness = v; } } SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); dataMap.put("JXBH",donationWitness.getDonorno()); dataMap.put("XM",donationWitness.getName()); dataMap.put("JXYY",donationWitness.getTreatmenthospitalname() == null ? "" : donationWitness.getTreatmenthospitalname()); dataMap.put("SWPD1",donationWitness.getDeathjudgedocto() == null ? "" : donationWitness.getDeathjudgedocto()); dataMap.put("SWPD2",donationWitness.getDeathjudgedoctt() == null ? "" : donationWitness.getDeathjudgedoctt()); dataMap.put("SWYY",donationWitness.getDeathreason() == null ? "" : donationWitness.getDeathreason()); dataMap.put("SWSJ",donationWitness.getDeathtime() == null ? "": sformat.format(donationWitness.getDeathtime())); if(donationWitness.getDwdonationcategory().contains("DBD")){ dataMap.put("ZGYL",(char) 8730); }else{ dataMap.put("ZGYL","□"); } if(donationWitness.getDwdonationcategory().contains("DCD")){ dataMap.put("ZGEL",(char) 8730); }else{ dataMap.put("ZGEL","□"); } if(donationWitness.getDwdonationcategory().contains("DBCD")){ dataMap.put("ZGSL",(char) 8730); }else{ dataMap.put("ZGSL","□"); } if(donationWitness.getOrgandonation().contains("C22")){ dataMap.put("GZ",(char) 8730); }else{ dataMap.put("GZ","□"); } if(donationWitness.getOrgandonation().contains("C64L")){ dataMap.put("ZS",(char) 8730); }else{ dataMap.put("ZS","□"); } if(donationWitness.getOrgandonation().contains("C64R")){ dataMap.put("YS",(char) 8730); }else{ dataMap.put("YS","□"); } if(donationWitness.getOrgandonation().contains("C38")){ dataMap.put("XZ",(char) 8730); }else{ dataMap.put("XZ","□"); } if(donationWitness.getOrgandonation().contains("C34")){ dataMap.put("FZ",(char) 8730); }else{ dataMap.put("FZ","□"); } if(donationWitness.getOrgandonation().contains("C25")){ dataMap.put("YX",(char) 8730); }else{ dataMap.put("YX","□"); } if(donationWitness.getOrgandonation().contains("C17")){ dataMap.put("XC",(char) 8730); }else{ dataMap.put("XC","□"); } if(donationWitness.getOrgandonation().contains("C69L")){ dataMap.put("ZYZZ",(char) 8730); }else{ dataMap.put("ZYZZ","□"); } if(donationWitness.getOrgandonation().contains("C69R")){ dataMap.put("YYZZ",(char) 8730); }else{ dataMap.put("YYZZ","□"); } String hqzz = serviceDonatebaseinfoService.gethqzz(donationWitness.getInfoid()); dataMap.put("HQZZ", hqzz == null ? "" : hqzz); dataMap.put("KSSJ",donationWitness.getOperationbegtime() == null ? "" : sformat.format(donationWitness.getOperationbegtime())); dataMap.put("JSSJ",donationWitness.getOperationendtime() == null ? "" : sformat.format(donationWitness.getOperationendtime())); dataMap.put("FZDMCG",donationWitness.getAbdominalaortacannulatime() == null ? "" : sformat.format(donationWitness.getAbdominalaortacannulatime())); dataMap.put("FZDMGZ",donationWitness.getAbdominalaortaperfusiontime() == null ? "" : sformat.format(donationWitness.getAbdominalaortaperfusiontime())); dataMap.put("MJMCG",donationWitness.getPortalveincannulatime() == null ? "" : sformat.format(donationWitness.getPortalveincannulatime())); dataMap.put("MJMGZ",donationWitness.getPortalveinperfusiontime() == null ? "" : sformat.format(donationWitness.getPortalveinperfusiontime())); dataMap.put("FDMCG",donationWitness.getPulmonaryarterycannulatime() == null ? "" : sformat.format(donationWitness.getPulmonaryarterycannulatime())); dataMap.put("FDMGZ",donationWitness.getPulmonaryarteryperfusiontime() == null ? "" : sformat.format(donationWitness.getPulmonaryarteryperfusiontime())); dataMap.put("ZDMCG",donationWitness.getAortacannulatime() == null ? "" : sformat.format(donationWitness.getAortacannulatime())); dataMap.put("ZDMGZ",donationWitness.getAortaperfusiontime() == null ? "" : sformat.format(donationWitness.getAortaperfusiontime())); if(donationWitness.getIsrestoreremains() == 0){ dataMap.put("HFYT","□"); dataMap.put("BHFYT",(char) 8730); }else if(donationWitness.getIsrestoreremains() == 1){ dataMap.put("HFYT",(char) 8730); dataMap.put("BHFYT","□"); } if(donationWitness.getIsspendremember() == 0){ dataMap.put("MA","□"); dataMap.put("BMA",(char) 8730); }else if(donationWitness.getIsspendremember() == 1){ dataMap.put("MA",(char) 8730); dataMap.put("BMA","□"); } ServiceDonateorgan serviceDonateorgan = new ServiceDonateorgan(); serviceDonateorgan.setInfoid(donationWitness.getInfoid()); List donateorganList = serviceDonateorganService.queryList(serviceDonateorgan); Boolean xz = false; Boolean qg = false; Boolean zg = false; Boolean yg = false; Boolean zs = false; Boolean ys = false; Boolean qf = false; Boolean zf = false; Boolean yf = false; Boolean yx = false; Boolean xc = false; Boolean zyjm = false; Boolean yyjm = false; if(donateorganList.size() > 0){ for(int i = 0; i