package com.ruoyi.web.controller.project; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.NotRepeatCommit; import com.ruoyi.common.annotation.RepeatSubmit; 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.exception.base.BaseException; import com.ruoyi.common.utils.bean.DtoConversionUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.domain.ServiceDonatecomporgan; import com.ruoyi.project.domain.ServiceDonateorgan; import com.ruoyi.project.domain.ServiceDonateorganVO; import com.ruoyi.project.domain.ServiceOrganallocation; import com.ruoyi.project.domain.vo.DonateOrganVO; import com.ruoyi.project.domain.vo.TimeVO; import com.ruoyi.project.service.IServiceDonateorganService; import com.ruoyi.project.service.IServiceOrganallocationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.List; /** * 捐献器官管理Controller * * @author ruoyi * @date 2021-11-10 */ @Slf4j @Api("捐献器官管理") @RestController @RequestMapping("/project/donateorgan") public class ServiceDonateorganController extends BaseController { @Autowired private IServiceDonateorganService serviceDonateorganService; @Autowired private IServiceOrganallocationService serviceOrganallocationService; /** * 查询捐献器官管理列表 */ @ApiOperation("捐献器官列表") //@PreAuthorize("@ss.hasPermi('project:donateorgan:list')") @GetMapping("/list") public TableDataInfo list(ServiceDonateorgan serviceDonateorgan) { startPage(); List list = serviceDonateorganService.queryList(serviceDonateorgan); if (!CollectionUtils.isEmpty(list)) { List serviceDonateorganVOS = DtoConversionUtils.sourceToTarget(list, ServiceDonateorganVO.class); // for (ServiceDonateorganVO serviceDonateorganVO : serviceDonateorganVOS) { // ServiceOrganallocation serviceOrganallocation = new ServiceOrganallocation(); // serviceOrganallocation.setOrganid(serviceDonateorganVO.getId()); // List serviceOrganallocations = serviceOrganallocationService.selectServiceOrganallocationList(serviceOrganallocation); // serviceDonateorganVO.setServiceOrganallocations(serviceOrganallocations); // } return getDataTable(serviceDonateorganVOS); } return getDataTable(list); } @GetMapping("/listnew") public TableDataInfo listnew(DonateOrganVO donateOrganVO) { startPage(); List list = serviceDonateorganService.selectVOList(donateOrganVO); return getDataTable(list); } /** * 导出捐献器官管理列表 */ @ApiOperation("导出捐献器官列表") //@PreAuthorize("@ss.hasPermi('project:donateorgan:export')") @Log(title = "捐献器官管理", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ServiceDonateorgan serviceDonateorgan) { List list = serviceDonateorganService.queryList(serviceDonateorgan); ExcelUtil util = new ExcelUtil(ServiceDonateorgan.class); return util.exportExcel(list, "捐献器官管理数据"); } /** * 获取捐献器官管理详细信息 */ @ApiOperation("通过id获得捐献器官信息") //@PreAuthorize("@ss.hasPermi('project:donateorgan:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(serviceDonateorganService.getById(id)); } /** * 新增捐献器官管理 */ @ApiOperation("新增捐献器官信息") //@PreAuthorize("@ss.hasPermi('project:donateorgan:add')") @Log(title = "捐献器官管理", businessType = BusinessType.INSERT) @PostMapping @RepeatSubmit public AjaxResult add(@RequestBody ServiceDonateorgan serviceDonateorgan) { String organNumber = serviceDonateorgan.getDonorno() + "." + serviceDonateorgan.getOrganno(); if (organNumber == "") { return AjaxResult.error("新增时生成的编号为空,创建失败!"); } else { ServiceDonateorgan serviceDonateorgan1 = new ServiceDonateorgan(); serviceDonateorgan1.setOrgannumber(organNumber); List listrecord = serviceDonateorganService.queryList(serviceDonateorgan); if (listrecord.size() > 0) { return AjaxResult.error("新增时生成的编号" + organNumber + "已存在,无法保存!"); } } serviceDonateorgan.setOrgannumber(organNumber); return toAjax(serviceDonateorganService.save(serviceDonateorgan)); } /** * 新增捐献器官管理 */ @ApiOperation("新增捐献器官信息") //@PreAuthorize("@ss.hasPermi('project:donateorgan:add')") @Log(title = "捐献器官管理", businessType = BusinessType.INSERT) @PostMapping("/addData") @RepeatSubmit public TableDataInfo addData(@RequestBody List serviceDonateorgans) { List serviceDonateorgans1 = serviceDonateorganService.saveData(serviceDonateorgans); return saveDataTable(serviceDonateorgans1); } /** * 修改器官分配 */ @ApiOperation("修改器官分配信息") //@PreAuthorize("@ss.hasPermi('project:organallocation:edit')") @Log(title = "器官分配", businessType = BusinessType.UPDATE) @PostMapping("/editarraydata") @RepeatSubmit public AjaxResult editArrayData(@RequestBody List serviceDonateorgans) { return AjaxResult.success(serviceDonateorganService.editArrayData(serviceDonateorgans)); } /** * 修改捐献器官管理 */ @ApiOperation("修改捐献器官信息") //@PreAuthorize("@ss.hasPermi('project:donateorgan:edit')") @Log(title = "捐献器官管理", businessType = BusinessType.UPDATE) @PostMapping("/edit") @RepeatSubmit public AjaxResult edit(@RequestBody ServiceDonateorgan serviceDonateorgan) { return toAjax(serviceDonateorganService.updateById(serviceDonateorgan)); } /** * 删除捐献器官管理 */ @ApiOperation("删除捐献器官信息") //@PreAuthorize("@ss.hasPermi('project:donateorgan:remove')") @Log(title = "捐献器官管理", businessType = BusinessType.DELETE) @GetMapping("/remove/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(serviceDonateorganService.removeByIds(Arrays.asList(ids))); } @ApiOperation("得到浙江各市下的捐献信息") @GetMapping("/numberOfOrgans") public AjaxResult numberOfOrgans() { return AjaxResult.success(serviceDonateorganService.getNumberOfOrgans()); } @ApiOperation("得到各医院的捐献信息") @PostMapping("/OrgansOfHospital") public AjaxResult OrgansOfHospital(String cityName) { return AjaxResult.success(serviceDonateorganService.getOrgansOfHospital(cityName)); } @ApiOperation("全省捐献器官信息汇总") @GetMapping("/allOrgansInfo") public AjaxResult allOrgansInfo(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getAllOrgansInfo(timeVO)); } @ApiOperation("本年度器官质量情况分析") @GetMapping("/organQuality") public AjaxResult organQuality(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getOrganQuality(timeVO)); } @ApiOperation("捐献累计信息") @GetMapping("/donateNumber") public AjaxResult donateNumber(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDonateNumber(timeVO)); } @ApiOperation("按月度统计的潜在捐献数量") @GetMapping("/donateBaseInfoByMonth") public AjaxResult donateBaseInfoByMonth() { return AjaxResult.success(serviceDonateorganService.getDonateBaseInfoByMonth()); } @ApiOperation("按月度统计的捐献案例数") @GetMapping("/donatePeopleByMonth") public AjaxResult donatePeopleByMonth(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDonatePeopleByMonth(timeVO)); } @ApiOperation("按月度统计的捐献案例数-完成案例") @GetMapping("/getDonatePeopleByMonthFromCompletioninfo") public AjaxResult getDonatePeopleByMonthFromCompletioninfo(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDonatePeopleByMonthFromCompletioninfo(timeVO)); } @ApiOperation("按月度统计的捐献器官数") @GetMapping("/donateNumberByMonth") public AjaxResult donateNumberByMonth(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDonateNumberByMonth(timeVO)); } @ApiOperation("按月度统计的捐献医院数") @GetMapping("/donateHospitalByMonth") public AjaxResult donateHospitalByMonth(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDonateHospitalByMonth(timeVO)); } @ApiOperation("按月度统计的获取医院数") @GetMapping("/acceptHospitalByMonth") public AjaxResult acceptHospitalByMonth() { return AjaxResult.success(serviceDonateorganService.getAcceptHospitalByMonth()); } @ApiOperation("按月度统计的各医院的捐献信息") @GetMapping("/OrgansOfHospitalByMonth") public AjaxResult OrgansOfHospitalByMonth(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.OrgansOfHospitalByMonth(timeVO)); } @ApiOperation("按时间统计的各医院的捐献信息") @GetMapping("/OrgansOfHospitalByTime") public AjaxResult OrgansOfHospitalByTime(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.OrgansOfHospitalByTime(timeVO)); } @ApiOperation("每百万人口的捐献率") @GetMapping("/getPMPRate") public AjaxResult getPMPRate(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getPMPRate(timeVO)); } @ApiOperation("根据地市返回捐献、完成、器官数") @GetMapping("/getDistrictDonateCalculate") public AjaxResult getDistrictDonateCalculate() { return AjaxResult.success(serviceDonateorganService.getDistrictDonateCalculate()); } @ApiOperation("根据时间地市返回捐献、完成、器官数") @GetMapping("/getDistrictDonateCalculateByTime") public AjaxResult getDistrictDonateCalculateByTime(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getDistrictDonateCalculateByTime(timeVO)); } @ApiOperation("根据机构返回器官总数") @GetMapping("/getOrganNumberByOrg") public AjaxResult getOrganNumberByOrg(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getOrganNumberByOrg(timeVO)); } @ApiOperation("返回器官总数") @GetMapping("/getOrganCount") public AjaxResult getOrganCount(TimeVO timeVO) { return AjaxResult.success(serviceDonateorganService.getOrganCount(timeVO)); } @RepeatSubmit @ApiOperation("新增或修改捐献器官管理") @Log(title = "捐献完成", businessType = BusinessType.UPDATE) @PostMapping("/saveOrUpdateDonateorgan") public AjaxResult saveOrUpdateDonateorgan(@RequestBody List serviceDonateorganList) { if (CollectionUtils.isEmpty(serviceDonateorganList)) { throw new BaseException("请检查需要新增或修改的捐献器官管理参数是否完整"); } Boolean i = null; for (ServiceDonateorgan serviceDonateorgan : serviceDonateorganList) { log.info("捐献器官移植id是否为空 : {},基础表的id为 : {}", serviceDonateorgan.getId(), serviceDonateorgan.getInfoid()); if (serviceDonateorgan.getId() == null) { i = serviceDonateorganService.save(serviceDonateorgan); } else { i = serviceDonateorganService.updateById(serviceDonateorgan); } } return toAjax(i); } }