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<ServiceDonateorgan> list = serviceDonateorganService.queryList(serviceDonateorgan); 
 | 
        return getDataTable(list); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 器官分配累计 
 | 
     */ 
 | 
    @ApiOperation("器官分配累计") 
 | 
    @GetMapping("/countList") 
 | 
    public TableDataInfo countList(ServiceDonateorgan serviceDonateorgan) { 
 | 
        startPage(); 
 | 
        List<ServiceDonateorgan> list = serviceDonateorganService.countList(serviceDonateorgan); 
 | 
        return getDataTable(list); 
 | 
    } 
 | 
  
 | 
    @GetMapping("/listnew") 
 | 
    public TableDataInfo listnew(DonateOrganVO donateOrganVO) { 
 | 
        startPage(); 
 | 
        List<DonateOrganVO> 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<ServiceDonateorgan> list = serviceDonateorganService.queryList(serviceDonateorgan); 
 | 
        ExcelUtil<ServiceDonateorgan> util = new ExcelUtil<ServiceDonateorgan>(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("/add") 
 | 
    @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<ServiceDonateorgan> listrecord = serviceDonateorganService.queryList(serviceDonateorgan); 
 | 
            if (listrecord.size() > 0) { 
 | 
                return AjaxResult.error("新增时生成的编号" + organNumber + "已存在,无法保存!"); 
 | 
            } 
 | 
        } 
 | 
        serviceDonateorgan.setOrgannumber(organNumber); 
 | 
        boolean save = serviceDonateorganService.save(serviceDonateorgan); 
 | 
        return AjaxResult.success(serviceDonateorgan); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 新增捐献器官管理 
 | 
     */ 
 | 
    @ApiOperation("新增捐献器官信息") 
 | 
    //// @PreAuthorize("@ss.hasPermi('project:donateorgan:add')") 
 | 
    @Log(title = "捐献器官管理", businessType = BusinessType.INSERT) 
 | 
    @PostMapping("/addData") 
 | 
    @RepeatSubmit 
 | 
    public TableDataInfo addData(@RequestBody List<ServiceDonateorgan> serviceDonateorgans) { 
 | 
        List<ServiceDonateorgan> 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<ServiceDonateorgan> 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<ServiceDonateorgan> 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); 
 | 
    } 
 | 
  
 | 
} 
 |