package com.ydtech.modules.ins.controller; import com.ydtech.aop.exception.DescribeException; import com.ydtech.constants.SysConstants; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.ins.model.vo.InsIncomeAndCmainReqVo; import com.ydtech.modules.ins.model.vo.InsSettleReqListVo; import com.ydtech.modules.ins.model.vo.InsSettleReqVo; import com.ydtech.modules.ins.model.vo.req.InsCminReqVo; import com.ydtech.modules.ins.service.InsSettleService; import com.ydtech.utils.StringUtils; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @Author: shixk * @create: 2021/8/18 9:00 * description: 结算单信息控制层 */ @Api(tags = {"InsSettleController"}, description = "结算单信息控制层") @ApiResponses({ @ApiResponse(code = 500, message = "出现异常"), @ApiResponse(code = 200, message = "请求成功") }) @RestController @RequestMapping("/insSettle") public class InsSettleController extends BaseController { @Autowired private InsSettleService insSettleService; // @PreAuthorize("hasAuthority('sys:insSettle:view')") @ApiOperation(value = "根据settle查询结算单数据") @PostMapping("/selectSettle") public HttpResult selectSettle(@RequestBody @ApiParam(name = "settle", value = "结算单主表实体类") InsSettleReqVo settle, HttpServletRequest request) { HttpResult result = null; try { String comcode = checkAuth(request, settle.getComcode()); settle.setComcode(comcode); result = insSettleService.selectSettle(settle); } catch (Exception e) { result = HttpResult.error("查询结算单信息失败!" + e.getMessage()); e.printStackTrace(); } return result; } // @PreAuthorize("hasAuthority('sys:insSettle:view')") @ApiOperation(value = "根据settle查询结算单数据并导出") @PostMapping("/exportSettle") public void exportSettle(@RequestBody @ApiParam(name = "settle", value = "结算单主表实体类") InsSettleReqVo settle, HttpServletRequest request, HttpServletResponse response) { try { String comcode = checkAuth(request, settle.getComcode()); settle.setComcode(comcode); insSettleService.exportSettle(settle, request, response); } catch (Exception e) { e.printStackTrace(); throw new DescribeException("导出失败!" + e.getMessage()); } } // @PreAuthorize("hasAuthority('sys:insSettle:view')") @ApiOperation(value = "根据settle查询结算单明细数据") @PostMapping("/selectSettleDetail") public HttpResult selectSettleDetail(@RequestBody @ApiParam(name = "settle", value = "结算单主表实体类") InsSettleReqVo settle) { HttpResult result = null; try { result = insSettleService.selectSettleDetail(settle); } catch (Exception e) { result = HttpResult.error("查询结算单明细信息失败!" + e.getMessage()); e.printStackTrace(); } return result; } // @PreAuthorize("hasAuthority('sys:insSettle:view')") @ApiOperation(value = "根据settle查询结算单明细数据导出") @PostMapping("/exportSettleDetail") public void exportSettleDetail(@RequestBody @ApiParam(name = "settle", value = "结算单主表实体类") InsSettleReqVo settle, HttpServletRequest request, HttpServletResponse response) { try { insSettleService.exportSettleDetail(settle, request, response); } catch (Exception e) { e.printStackTrace(); throw new DescribeException("导出失败!" + e.getMessage()); } } // @PreAuthorize("hasAuthority('sys:insSettle:view')") @ApiOperation(value = "结算单生成前查询的保单信息") @PostMapping("/generateBeforePolicyno") public HttpResult generateBeforePolicyno(@RequestBody @ApiParam(name = "vo", value = "保单请求类") InsCminReqVo vo, HttpServletRequest request) { HttpResult result = null; try { // 设置查询权限 String comcode = checkAuth(request, vo.getComcode()); vo.setComcode(comcode); result = insSettleService.generateBeforePolicyno(vo); } catch (Exception e) { result = HttpResult.error("查询保单信息失败!" + e.getMessage()); e.printStackTrace(); } return result; } // @PreAuthorize("hasAuthority('sys:insSettle:add') and hasAuthority('sys:insSettle:edit')") @ApiOperation(value = "结算单生成") @PostMapping("/generateSettleAndDetail") public HttpResult generateSettleAndDetail(@RequestBody @ApiParam(name = "reqVo", value = "结算单生成请求类") InsIncomeAndCmainReqVo reqVo, HttpServletRequest request) { HttpResult result; try { String comcode = checkAuth(request, reqVo.getComcode()); reqVo.setComcode(comcode); result = insSettleService.generateSettleAndDetail(reqVo); } catch (Exception e) { result = HttpResult.error("结算单生成失败!" + e.getMessage()); e.printStackTrace(); } return result; } // @PreAuthorize("hasAuthority('sys:insSettle:add') and hasAuthority('sys:insSettle:edit')") @ApiOperation(value = "结算单确认") @PostMapping("/enterSettle") public HttpResult enterSettle(@ApiParam(name = "reqListVo", value = "结算单确认请求类") @RequestBody InsSettleReqListVo reqListVo) { HttpResult result; try { result = insSettleService.enterSettle(reqListVo); } catch (Exception e) { result = HttpResult.error("结算单确认时发生错误!" + e.getMessage()); e.printStackTrace(); } return result; } /** * 校验权限 * * @param request * @param comcode2 * @return */ private String checkAuth(HttpServletRequest request, String comcode2) { // 设置查询权限 String tokenDeptId = getDeptId(); String comcode = comcode2; if (StringUtils.isNullOrEmpty(comcode)) { comcode = tokenDeptId.contains("D") ? tokenDeptId.substring(0, tokenDeptId.indexOf("D")) : tokenDeptId.equalsIgnoreCase(SysConstants.DEPT) ? "" : tokenDeptId; } else { if (!SysConstants.DEPT.equals(tokenDeptId)) { if (tokenDeptId.contains("D")) { tokenDeptId = tokenDeptId.substring(0, tokenDeptId.indexOf("D")); } if (!comcode.startsWith(tokenDeptId)) { comcode = tokenDeptId; } } } return comcode; } }