package com.ruoyi.web.controller.project; import com.ruoyi.common.annotation.Log; 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.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.OrganEnum; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.bean.DtoConversionUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.domain.ServiceDonatecompletioninfo; import com.ruoyi.project.domain.ServiceDonateorgan; import com.ruoyi.project.domain.vo.DonationCompletionVO; import com.ruoyi.project.service.IServiceDonatecompletioninfoService; import com.ruoyi.project.service.IServiceDonatecomporganService; 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 lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; /** * 捐献完成Controller * * @author ruoyi * @date 2021-11-19 */ @Slf4j @Api("捐献完成登记管理") @RestController @RequestMapping("/project/donatecompletioninfo") public class ServiceDonatecompletioninfoController extends BaseController { @Autowired private IServiceDonatecompletioninfoService serviceDonatecompletioninfoService; @Autowired private IServiceDonateorganService serviceDonateorganService; @Autowired private IServiceDonatecomporganService serviceDonatecomporganService; private static Configuration configuration = null; public ServiceDonatecompletioninfoController() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } /** * 查询捐献完成列表 */ @ApiOperation("查询捐献完成列表") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:list')") @GetMapping("/list") public TableDataInfo list(ServiceDonatecompletioninfo serviceDonatecompletioninfo) { log.info("查询捐献完成列表:{}", serviceDonatecompletioninfo); startPage(); List list = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo); return getDataTable(list); } @ApiOperation("查询捐献完成列表(新)") @GetMapping("/listnew") @Log(title = "查询捐献完成列表(新)", businessType = BusinessType.OTHER) public TableDataInfo listnew(DonationCompletionVO donationCompletionVO) { log.info("查询捐献完成列表(新):{}", donationCompletionVO); startPage(); List list = serviceDonatecompletioninfoService.selectVOList(donationCompletionVO); return getDataTable(list); } /** * 导出捐献完成列表 */ @ApiOperation("导出捐献完成列表") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:export')") @Log(title = "捐献完成", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ServiceDonatecompletioninfo serviceDonatecompletioninfo) { log.info("导出捐献完成列表(新):{}", serviceDonatecompletioninfo); List list = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo); ExcelUtil util = new ExcelUtil(ServiceDonatecompletioninfo.class); return util.exportExcel(list, "捐献完成数据"); } /** * 获取捐献完成详细信息 */ @ApiOperation("通过id获取某一条捐献完成信息") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { log.info("通过id获取某一条捐献完成信息:{}", id); return AjaxResult.success(serviceDonatecompletioninfoService.getById(id)); } /** * 新增捐献完成 */ @ApiOperation("新增捐献完成") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:add')") @Log(title = "捐献完成", businessType = BusinessType.INSERT) @PostMapping("/add") @RepeatSubmit(interval = 5000) public AjaxResult add(@RequestBody ServiceDonatecompletioninfo serviceDonatecompletioninfo) { log.info("新增捐献完成:{}", serviceDonatecompletioninfo); serviceDonatecompletioninfoService.delDuplicateDonateCompletioninfo(serviceDonatecompletioninfo.getInfoid(), serviceDonatecompletioninfo.getCreateBy()); boolean save = serviceDonatecompletioninfoService.save(serviceDonatecompletioninfo); log.info("新增捐献完成serviceDonatecompletioninfo的ID:{}", serviceDonatecompletioninfo.getId()); return AjaxResult.success(serviceDonatecompletioninfo); } // /** // * 新增捐献完成详情 // */ // @ApiOperation("新增捐献完成详情") // //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:add')") // @Log(title = "新增捐献完成详情", businessType = BusinessType.INSERT) // @PostMapping // @RepeatSubmit(interval = 5000) // public AjaxResult addDetail(@RequestBody ServiceDonatecompletioninfo serviceDonatecompletioninfo) { // log.info("新增捐献完成:{}", serviceDonatecompletioninfo); // serviceDonatecompletioninfoService.delDuplicateDonateCompletioninfo(serviceDonatecompletioninfo.getInfoid(), serviceDonatecompletioninfo.getCreateBy()); // //新增donatecomporgan数据 // if (CollectionUtils.isNotEmpty(serviceDonatecompletioninfo.getServiceDonatecomporganList())) { // for (ServiceDonatecomporgan serviceDonatecomporgan : serviceDonatecompletioninfo.getServiceDonatecomporganList()) { // if (serviceDonatecomporgan.getInfoid() == null) { // throw new BaseException("请检查捐献器官移植信息,是否与捐献基础表进行关联"); // } // serviceDonatecomporganService.save(serviceDonatecomporgan); // } // } // return toAjax(serviceDonatecompletioninfoService.save(serviceDonatecompletioninfo)); // } @RepeatSubmit @ApiOperation("新增或修改捐献完成") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:edit')") @Log(title = "捐献完成", businessType = BusinessType.UPDATE) @PostMapping("/saveOrUpdateDonatecompletioninfo") public AjaxResult saveOrUpdateDonatecompletioninfo(@RequestBody List serviceDonatecompletioninfoList) { if (CollectionUtils.isEmpty(serviceDonatecompletioninfoList)) { throw new BaseException("请检查需要新增或修改的捐献完成参数是否完整"); } Boolean i = null; for (ServiceDonatecompletioninfo serviceDonatecompletioninfo : serviceDonatecompletioninfoList) { log.info("捐献完成id是否为空 : {},基础表的id为 : {}", serviceDonatecompletioninfo.getId(), serviceDonatecompletioninfo.getInfoid()); if (serviceDonatecompletioninfo.getId() == null) { i = serviceDonatecompletioninfoService.save(serviceDonatecompletioninfo); } else { i = serviceDonatecompletioninfoService.updateById(serviceDonatecompletioninfo); } } return toAjax(i); } /** * 修改捐献完成 */ @RepeatSubmit @ApiOperation("修改捐献完成") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:edit')") @Log(title = "捐献完成", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody ServiceDonatecompletioninfo serviceDonatecompletioninfo) { ServiceDonatecompletioninfo serviceDonatecompletioninfo1 = new ServiceDonatecompletioninfo(); serviceDonatecompletioninfo1.setInfoid(serviceDonatecompletioninfo.getInfoid()); List list = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo1); if (CollectionUtils.isEmpty(list)) { return error("案例ID,对应的完成登记信息为空"); } serviceDonatecompletioninfo.setId(list.get(0).getId()); return toAjax(serviceDonatecompletioninfoService.updateById(serviceDonatecompletioninfo)); } /** * 删除捐献完成 */ @ApiOperation("删除捐献完成") //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:remove')") @Log(title = "捐献完成", businessType = BusinessType.DELETE) @GetMapping("/remove/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(serviceDonatecompletioninfoService.removeByIds(Arrays.asList(ids))); } /** * 下载人体器官捐献完成结果登记表 */ @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"); map.put("downloadName", name + ".doc"); return map; } /** * 注意dataMap里存放的数据Key值要与模板中的参数相对应 * * @param dataMap */ private void getData(Map dataMap, Long id) { DonationCompletionVO donationCompletionVO = new DonationCompletionVO(); //donationCompletionVO.setDonorno(serviceDonatecompletioninfo.getDonorno()); List list = serviceDonatecompletioninfoService.selectVOList(donationCompletionVO); DonationCompletionVO donationCompletion = new DonationCompletionVO(); for (DonationCompletionVO v : list) { if (v.getDcid() != null && v.getDcid().longValue() == id) { donationCompletion = v; } } dataMap.put("JXBH", donationCompletion.getDcdonorno()); dataMap.put("XM", donationCompletion.getName()); dataMap.put("HQZZ", donationCompletion.getTreatmenthospitalname() == null ? "" : donationCompletion.getTreatmenthospitalname()); if (donationCompletion.getDonateorgan().contains("C22")) { dataMap.put("GZ", (char) 8730); } else { dataMap.put("GZ", "□"); } if (donationCompletion.getDonateorgan().contains("C64L")) { dataMap.put("ZS", (char) 8730); } else { dataMap.put("ZS", "□"); } if (donationCompletion.getDonateorgan().contains("C64R")) { dataMap.put("YS", (char) 8730); } else { dataMap.put("YS", "□"); } if (donationCompletion.getDonateorgan().contains("C38")) { dataMap.put("XZ", (char) 8730); } else { dataMap.put("XZ", "□"); } if (donationCompletion.getDonateorgan().contains("C34")) { dataMap.put("FZ", (char) 8730); } else { dataMap.put("FZ", "□"); } if (donationCompletion.getDonateorgan().contains("C25")) { dataMap.put("YX", (char) 8730); } else { dataMap.put("YX", "□"); } if (donationCompletion.getDonateorgan().contains("C17")) { dataMap.put("XC", (char) 8730); } else { dataMap.put("XC", "□"); } if (donationCompletion.getDonateorgan().contains("C69L")) { dataMap.put("ZYZZ", (char) 8730); } else { dataMap.put("ZYZZ", "□"); } if (donationCompletion.getDonateorgan().contains("C69R")) { dataMap.put("YYZZ", (char) 8730); } else { dataMap.put("YYZZ", "□"); } ServiceDonateorgan serviceDonateorgan = new ServiceDonateorgan(); serviceDonateorgan.setInfoid(donationCompletion.getInfoid()); List donateorganList = serviceDonateorganService.queryList(serviceDonateorgan); //List donateorganList = serviceDonateorganService.selectServiceDonateorganListNotAbandon(serviceDonateorgan); Boolean xz = false; Boolean qg = false; Boolean zg = false; Boolean yg = false; Boolean zs = false; Boolean ys = false; Boolean zf = false; Boolean yf = false; Boolean qf = false; Boolean yx = false; Boolean xc = false; Boolean zyjm = false; Boolean yyjm = false; SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd"); if (donateorganList.size() > 0) { for (int i = 0; i < donateorganList.size(); i++) { if (donateorganList.get(i).getOrganno().equals(OrganEnum.XZ.getCode())) { dataMap.put("XZYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("XZFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("XZRQ", "弃用"); } else { dataMap.put("XZRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } xz = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.QG.getCode())) { dataMap.put("GZYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("GZFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("GZRQ", "弃用"); } else { dataMap.put("GZRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } qg = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.ZG.getCode())) { dataMap.put("ZGZYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("ZGZFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("ZGZRQ", "弃用"); } else { dataMap.put("ZGZRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } zg = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.YG.getCode())) { dataMap.put("YGZYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("YGZFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("YGZRQ", "弃用"); } else { dataMap.put("YGZRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } yg = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.ZS.getCode())) { dataMap.put("ZSYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("ZSFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("ZSRQ", "弃用"); } else { dataMap.put("ZSRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } zs = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.YS.getCode())) { dataMap.put("YSYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("YSFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("YSRQ", "弃用"); } else { dataMap.put("YSRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } ys = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.ZF.getCode())) { dataMap.put("ZFYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("ZFFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("ZFRQ", "弃用"); } else { dataMap.put("ZFRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } zf = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.YF.getCode())) { dataMap.put("YFYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("YFFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("YFRQ", "弃用"); } else { dataMap.put("YFRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } yf = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.QF.getCode())) { dataMap.put("FZYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("FZFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("FZRQ", "弃用"); } else { dataMap.put("FZRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } qf = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.YX.getCode())) { dataMap.put("YXYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("YXFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("YXRQ", "弃用"); } else { dataMap.put("YXRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } yx = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.XC.getCode())) { dataMap.put("XCYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("XCYY", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("XCYY", "弃用"); } else { dataMap.put("XCYY", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } xc = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.ZYJM.getCode())) { dataMap.put("ZYYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("ZYFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("ZYRQ", "弃用"); } else { dataMap.put("ZYRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } zyjm = true; } else if (donateorganList.get(i).getOrganno().equals(OrganEnum.YYJM.getCode())) { dataMap.put("YYYY", donateorganList.get(i).getTransplanthospitalname() == null ? "" : donateorganList.get(i).getTransplanthospitalname()); dataMap.put("YYFZR", donateorganList.get(i).getTransplantdoct() == null ? "" : donateorganList.get(i).getTransplantdoct()); if (donateorganList.get(i).getOrganstate().equals("99")) { dataMap.put("YYRQ", "弃用"); } else { dataMap.put("YYRQ", donateorganList.get(i).getTransplanttime() == null ? "" : sformat.format(donateorganList.get(i).getTransplanttime())); } yyjm = true; } } if (xz.booleanValue() == false) { dataMap.put("XZYY", ""); dataMap.put("XZFZR", ""); dataMap.put("XZRQ", ""); } if (qg.booleanValue() == false) { dataMap.put("GZYY", ""); dataMap.put("GZFZR", ""); dataMap.put("GZRQ", ""); } if (zg.booleanValue() == false) { dataMap.put("ZGYY", ""); dataMap.put("ZGFZR", ""); dataMap.put("ZGRQ", ""); } if (yg.booleanValue() == false) { dataMap.put("YGYY", ""); dataMap.put("YGFZR", ""); dataMap.put("YGRQ", ""); } if (zs.booleanValue() == false) { dataMap.put("ZSYY", ""); dataMap.put("ZSFZR", ""); dataMap.put("ZSRQ", ""); } if (ys.booleanValue() == false) { dataMap.put("YSYY", ""); dataMap.put("YSFZR", ""); dataMap.put("YSRQ", ""); } if (zf.booleanValue() == false) { dataMap.put("ZFYY", ""); dataMap.put("ZFFZR", ""); dataMap.put("ZFRQ", ""); } if (yf.booleanValue() == false) { dataMap.put("YFYY", ""); dataMap.put("YFFZR", ""); dataMap.put("YFRQ", ""); } if (qf.booleanValue() == false) { dataMap.put("FZYY", ""); dataMap.put("FZFZR", ""); dataMap.put("FZRQ", ""); } if (yx.booleanValue() == false) { dataMap.put("YXYY", ""); dataMap.put("YXFZR", ""); dataMap.put("YXRQ", ""); } if (xc.booleanValue() == false) { dataMap.put("XCYY", ""); dataMap.put("XCFZR", ""); dataMap.put("XCRQ", ""); } if (zyjm.booleanValue() == false) { dataMap.put("ZYYY", ""); dataMap.put("ZYFZR", ""); dataMap.put("ZYRQ", ""); } if (yyjm.booleanValue() == false) { dataMap.put("YYYY", ""); dataMap.put("YYFZR", ""); dataMap.put("YYRQ", ""); } } dataMap.put("FZR", donationCompletion.getResponsibleusername() == null ? "" : donationCompletion.getResponsibleusername()); dataMap.put("XTY1", donationCompletion.getCoordinatedusernameo() == null ? "" : donationCompletion.getCoordinatedusernameo()); dataMap.put("XTY2", donationCompletion.getCoordinatedusernamet() == null ? "" : donationCompletion.getCoordinatedusernamet()); dataMap.put("WCRQ", sformat.format(donationCompletion.getCompletetime()) == null ? "" : sformat.format(donationCompletion.getCompletetime())); } }