package com.ruoyi.web.controller.project;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
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.core.page.PageDomain;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableSupport;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.exception.base.BaseException;
|
import com.ruoyi.common.utils.PageUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.bean.DtoConversionUtils;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.project.domain.*;
|
import com.ruoyi.project.domain.dto.OrganfeeExportDto;
|
import com.ruoyi.project.service.IServiceDonorchargeorganService;
|
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.security.access.prepost.PreAuthorize;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* 捐献器官Controller
|
*
|
* @author ruoyi
|
* @date 2023-12-25
|
*/
|
@Slf4j
|
@Api("捐献器官")
|
@RestController
|
@RequestMapping("/project/donorchargeorgan")
|
public class ServiceDonorchargeorganController extends BaseController {
|
@Autowired
|
private IServiceDonorchargeorganService serviceDonorchargeorganService;
|
|
/**
|
* 查询捐献器官列表
|
*/
|
@ApiOperation("查询捐献器官列表")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:list')")
|
@GetMapping("/list")
|
public TableDataInfo list(ServiceDonorchargeorgan serviceDonorchargeorgan) {
|
log.info("查询捐献器官列表的入参:{}", serviceDonorchargeorgan);
|
startPage();
|
List<ServiceDonorchargeorgan> list = null;
|
if (serviceDonorchargeorgan.getPaymentidIsNotNull()) {
|
list = serviceDonorchargeorganService.queryList(serviceDonorchargeorgan);
|
} else {
|
list = serviceDonorchargeorganService.queryListBypaymentidIsNull(serviceDonorchargeorgan);
|
}
|
List<ServiceDonorchargeorganVO> serviceDonorchargeorganVOList = DtoConversionUtils.sourceToTarget(list, ServiceDonorchargeorganVO.class);
|
|
for (ServiceDonorchargeorganVO serviceDonorchargeorganVO : serviceDonorchargeorganVOList) {
|
if (!StringUtils.isEmpty(serviceDonorchargeorganVO.getAnnexFiles())) {
|
List<RbDetailFile> rbDetailFiles = JSONArray.parseArray(serviceDonorchargeorganVO.getAnnexFiles(), RbDetailFile.class);
|
serviceDonorchargeorganVO.setAnnexFilesList(rbDetailFiles);
|
}
|
}
|
return getDataTable2(serviceDonorchargeorganVOList, list);
|
}
|
|
/**
|
* 导出捐献器官列表
|
*/
|
@ApiOperation("导出捐献器官列表")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:export')")
|
@Log(title = "捐献器官", businessType = BusinessType.EXPORT)
|
@GetMapping("/export")
|
public AjaxResult export(ServiceDonorchargeorgan serviceDonorchargeorgan) {
|
List<ServiceDonorchargeorgan> list = serviceDonorchargeorganService.queryList(serviceDonorchargeorgan);
|
ExcelUtil<ServiceDonorchargeorgan> util = new ExcelUtil<ServiceDonorchargeorgan>(ServiceDonorchargeorgan.class);
|
return util.exportExcel(list, "捐献器官数据");
|
}
|
|
/**
|
* 导出器官费用列表(查询条件与列表接口一致,含报告日期区间)
|
*/
|
@ApiOperation("导出器官费用列表")
|
@Log(title = "器官费用", businessType = BusinessType.EXPORT)
|
@GetMapping("/exportOrganfee")
|
public AjaxResult exportOrganfee(ServiceDonorchargeorgan serviceDonorchargeorgan) {
|
log.info("导出器官费用列表的入参:{}", serviceDonorchargeorgan);
|
List<ServiceDonorchargeorgan> list = null;
|
if (Boolean.TRUE.equals(serviceDonorchargeorgan.getPaymentidIsNotNull())) {
|
list = serviceDonorchargeorganService.queryList(serviceDonorchargeorgan);
|
} else {
|
list = serviceDonorchargeorganService.queryListBypaymentidIsNull(serviceDonorchargeorgan);
|
}
|
List<OrganfeeExportDto> exportList = new ArrayList<>(list.size());
|
for (ServiceDonorchargeorgan serviceDonorchargeorganItem : list) {
|
OrganfeeExportDto exportDto = DtoConversionUtils.sourceToTarget(serviceDonorchargeorganItem, OrganfeeExportDto.class);
|
exportDto.setOrganStateName(organStateName(serviceDonorchargeorganItem.getOrganState()));
|
BigDecimal receivableBalance = receivableBalance(serviceDonorchargeorganItem.getOrgancharge(), serviceDonorchargeorganItem.getAmount());
|
exportDto.setReceivableBalance(receivableBalance);
|
exportDto.setPayStatus(payStatus(receivableBalance));
|
exportList.add(exportDto);
|
}
|
ExcelUtil<OrganfeeExportDto> util = new ExcelUtil<OrganfeeExportDto>(OrganfeeExportDto.class);
|
return util.exportExcel(exportList, "器官费用数据");
|
}
|
|
/**
|
* 器官状态值转文本
|
*/
|
private String organStateName(String organState) {
|
if (StringUtils.isEmpty(organState)) {
|
return "";
|
}
|
switch (organState) {
|
case "1":
|
return "移植";
|
case "2":
|
return "弃用";
|
case "3":
|
return "库存";
|
case "4":
|
return "失功";
|
case "5":
|
return "直系免除";
|
case "6":
|
return "不良事件";
|
default:
|
return organState;
|
}
|
}
|
|
/**
|
* 应收金额-实收金额的差额,应收金额为空时返回 null
|
*/
|
private BigDecimal receivableBalance(BigDecimal organcharge, BigDecimal amount) {
|
if (organcharge == null) {
|
return null;
|
}
|
return organcharge.subtract(amount == null ? BigDecimal.ZERO : amount);
|
}
|
|
/**
|
* 差额为 0 已付,其它未付
|
*/
|
private String payStatus(BigDecimal receivableBalance) {
|
if (receivableBalance == null) {
|
return "";
|
}
|
return receivableBalance.compareTo(BigDecimal.ZERO) == 0 ? "已付" : "未付";
|
}
|
|
/**
|
* 获取捐献器官详细信息
|
*/
|
@ApiOperation("获取捐献器官详细信息")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:query')")
|
@GetMapping(value = "/getInfo/{id}")
|
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
return AjaxResult.success(serviceDonorchargeorganService.getById(id));
|
}
|
|
/**
|
* 新增捐献器官
|
*/
|
@ApiOperation("新增捐献器官")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:add')")
|
@Log(title = "捐献器官", businessType = BusinessType.INSERT)
|
@PostMapping("/add")
|
@RepeatSubmit
|
public AjaxResult add(@RequestBody ServiceDonorchargeorganVO serviceDonorchargeorganvo) {
|
if (!CollectionUtils.isEmpty(serviceDonorchargeorganvo.getAnnexFilesList())) {
|
serviceDonorchargeorganvo.setAnnexFiles(JSON.toJSONString(serviceDonorchargeorganvo.getAnnexFilesList()));
|
}
|
ServiceDonorchargeorgan serviceDonorchargeorgan = DtoConversionUtils.sourceToTarget(serviceDonorchargeorganvo, ServiceDonorchargeorgan.class);
|
boolean save = serviceDonorchargeorganService.save(serviceDonorchargeorgan);
|
return AjaxResult.success(serviceDonorchargeorgan);
|
}
|
|
/**
|
* 修改捐献器官
|
*/
|
@ApiOperation("修改捐献器官")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:edit')")
|
@Log(title = "捐献器官", businessType = BusinessType.UPDATE)
|
@PostMapping("/edit")
|
@RepeatSubmit
|
public AjaxResult edit(@RequestBody ServiceDonorchargeorganVO serviceDonorchargeorganVO) {
|
if (!CollectionUtils.isEmpty(serviceDonorchargeorganVO.getAnnexFilesList())) {
|
serviceDonorchargeorganVO.setAnnexFiles(JSON.toJSONString(serviceDonorchargeorganVO.getAnnexFilesList()));
|
}
|
ServiceDonorchargeorgan serviceDonorchargeorgan = DtoConversionUtils.sourceToTarget(serviceDonorchargeorganVO, ServiceDonorchargeorgan.class);
|
return toAjax(serviceDonorchargeorganService.updateById(serviceDonorchargeorgan));
|
}
|
|
/**
|
* 删除捐献器官
|
*/
|
@ApiOperation("删除捐献器官")
|
// // @PreAuthorize("@ss.hasPermi('project:donorchargeorgan:remove')")
|
@Log(title = "捐献器官", businessType = BusinessType.DELETE)
|
@GetMapping("/remove/{ids}")
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
return toAjax(serviceDonorchargeorganService.removeByIds(Arrays.asList(ids)));
|
}
|
|
@RepeatSubmit
|
@ApiOperation("新增或修改捐献器官")
|
@Log(title = "捐献器官", businessType = BusinessType.UPDATE)
|
@PostMapping("/saveOrUpdateDonorchargeorgan")
|
public AjaxResult saveOrUpdateDonorchargeorgan(@RequestBody List<ServiceDonorchargeorganVO> serviceDonorchargeorganList) {
|
if (CollectionUtils.isEmpty(serviceDonorchargeorganList)) {
|
throw new BaseException("请检查需要新增或修改的捐献器官参数是否完整");
|
}
|
Boolean i = null;
|
for (ServiceDonorchargeorganVO serviceDonorchargeorganVO : serviceDonorchargeorganList) {
|
log.info("捐献器官id是否为空 : {},基础表的id为 : {}", serviceDonorchargeorganVO.getId(), serviceDonorchargeorganVO.getInfoid());
|
ServiceDonorchargeorgan serviceDonorchargeorgan = DtoConversionUtils.sourceToTarget(serviceDonorchargeorganVO, ServiceDonorchargeorgan.class);
|
serviceDonorchargeorgan.setAnnexFiles(JSON.toJSONString(serviceDonorchargeorganVO.getAnnexFilesList()));
|
if (serviceDonorchargeorgan.getDel_flag() == null) {
|
serviceDonorchargeorgan.setDel_flag(0);
|
}
|
if (serviceDonorchargeorgan.getId() == null) {
|
i = serviceDonorchargeorganService.save(serviceDonorchargeorgan);
|
} else {
|
i = serviceDonorchargeorganService.updateDonorchargeorgan(serviceDonorchargeorgan);
|
}
|
}
|
return toAjax(i);
|
}
|
|
@ApiOperation("收费统计")
|
@PostMapping("/getListBySpStatChange")
|
public TableDataInfo getListBySpStatChange(@RequestBody SpStatChangeReq spStatChangeReq) {
|
return getDataTable(serviceDonorchargeorganService.getListBySpStatChange(spStatChangeReq));
|
}
|
|
/**
|
* 导出收款统计
|
*/
|
@ApiOperation("导出收款统计")
|
@Log(title = "收款统计", businessType = BusinessType.EXPORT)
|
@GetMapping("/exportChange")
|
public AjaxResult exportChange(SpStatChangeReq spStatChangeReq) {
|
List<SpStatChange> list = serviceDonorchargeorganService.getListBySpStatChange(spStatChangeReq);
|
ExcelUtil<SpStatChange> util = new ExcelUtil<SpStatChange>(SpStatChange.class);
|
return util.exportExcel(list, "收款统计数据");
|
}
|
}
|