package com.doumee.api.business; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageWrap; import com.doumee.core.model.PageData; import com.doumee.dao.business.dto.SCSupplementDTO; import com.doumee.dao.business.model.SettleClaims; import com.doumee.dao.business.vo.SettleClaimsExcelVO; import com.doumee.service.business.SettleClaimsService; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * @author 江蹄蹄 * @date 2024/01/16 10:03 */ @Api(tags = "理赔申请表") @RestController @RequestMapping("/business/settleClaims") public class SettleClaimsController extends BaseController { @Autowired private SettleClaimsService settleClaimsService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("business:settleclaims:create") public ApiResponse create(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.create(settleClaims)); } @PreventRepeat @ApiOperation("平台系统案件录入(ID不为空表示编辑,ID为空表示新增)") @PostMapping("/createSys") @RequiresPermissions("business:settleclaims:create") public ApiResponse createSys(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.createOrEditSys(settleClaims)); } @ApiOperation("添加报案号") @PostMapping("/addCode") @RequiresPermissions("business:settleclaims:addCode") public ApiResponse addCode(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.addCode(settleClaims)); } @ApiOperation("理赔处理") @PostMapping("/dealBiz") @RequiresPermissions("business:settleclaims:dealBiz") public ApiResponse dealBiz(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.dealBiz(settleClaims)); } @ApiOperation("结案提交") @PostMapping("/doneCommit") @RequiresPermissions("business:settleclaims:doneCommit") public ApiResponse doneCommit(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.doneCommit(settleClaims)); } @ApiOperation("撤销申请") @PostMapping("/back") @RequiresPermissions("business:settleclaims:back") public ApiResponse back(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.back(settleClaims)); } @ApiOperation("附件上传") @PostMapping("/claimsUploadFile") @RequiresPermissions("business:settleclaims:update") public ApiResponse claimsUploadFile(@RequestBody SCSupplementDTO scSupplementDTO) { settleClaimsService.claimsUploadFile(scSupplementDTO); return ApiResponse.success(null); } @ApiOperation("备注标签") @PostMapping("/remark") @RequiresPermissions("business:settleclaims:remark") public ApiResponse remark(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.remark(settleClaims)); } @ApiOperation("资料确认") @PostMapping("/confirm") @RequiresPermissions("business:settleclaims:confirm") public ApiResponse confirm(@RequestBody SettleClaims settleClaims) { return ApiResponse.success(settleClaimsService.confirm(settleClaims)); } @ApiOperation("资料下载") @PostMapping("/exportFiles") @RequiresPermissions("business:settleclaims:exportExcel") public void exportFiles(@RequestBody SettleClaims model,HttpServletResponse response) { if(model.getId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } settleClaimsService.exportFiles(model.getId(),response); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("business:settleclaims:delete") public ApiResponse deleteById(@PathVariable Integer id) { settleClaimsService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("批量删除") @GetMapping("/delete/batch") @RequiresPermissions("business:settleclaims:delete") public ApiResponse deleteByIdInBatch(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } settleClaimsService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("business:settleclaims:update") public ApiResponse updateById(@RequestBody SettleClaims settleClaims) { settleClaimsService.updateById(settleClaims); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("business:settleclaims:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(settleClaimsService.findPage(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("business:settleclaims:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { ExcelExporter.build(SettleClaims.class).export(settleClaimsService.findPage(pageWrap).getRecords(), "报案理赔_"+System.currentTimeMillis(), response); } @ApiOperation("分页查询 - 手动录入") @PostMapping("/pageForSD") @RequiresPermissions("business:settleclaims:query") public ApiResponse> pageForSD (@RequestBody PageWrap pageWrap) { return ApiResponse.success(settleClaimsService.findPageForSd(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportForSDExcel") @RequiresPermissions("business:settleclaims:exportExcel") public void exportForSDExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { List settleClaimsList = settleClaimsService.findPageForSd(pageWrap).getRecords(); List settleClaimsExcelVOList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(settleClaimsList)){ for (SettleClaims settleClaims:settleClaimsList) { SettleClaimsExcelVO settleClaimsExcelVO = new SettleClaimsExcelVO(); BeanUtils.copyProperties(settleClaims,settleClaimsExcelVO); settleClaimsExcelVOList.add(settleClaimsExcelVO); } } ExcelExporter.build(SettleClaimsExcelVO.class).export(settleClaimsExcelVOList, "案件录入_"+System.currentTimeMillis(), response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("business:settleclaims:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(settleClaimsService.getSettleClaimsDetail(id)); } @ApiOperation("根据ID查询 - 手动录入") @GetMapping("/getDetailForSd") @RequiresPermissions("business:settleclaims:query") public ApiResponse getDetailForSd(@RequestParam Integer id) { return ApiResponse.success(settleClaimsService.getSettleClaimsDetailForSd(id)); } @ApiOperation("删除附件") @GetMapping("/delFile/{id}/{fileId}") @RequiresPermissions("business:settleclaims:query") public ApiResponse delFile(@PathVariable(name = "id") Integer id,@PathVariable(name = "fileId") Integer fileId) { return ApiResponse.success(settleClaimsService.delFile(id,fileId)); } }