package cn.timer.api.controller.insure; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDate; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import cn.timer.api.bean.insure.InsurePolicy; import cn.timer.api.bean.insure.InsureProductPlan; import cn.timer.api.bean.insure.InsureUser; import cn.timer.api.config.annotation.CurrentUser; import cn.timer.api.config.annotation.UserBean; import cn.timer.api.dao.insure.InsureUserMapper; import cn.timer.api.dto.insure.InsureDto; import cn.timer.api.dto.insure.InsureUserDto; import cn.timer.api.dto.insure.PolicyDto; import cn.timer.api.utils.ExcelUtils; import cn.timer.api.utils.Page; import cn.timer.api.utils.Result; import cn.timer.api.utils.ResultUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.oss.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.beust.jcommander.internal.Lists; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.google.common.collect.Maps; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 被保人 * * @author wgd * @email 862422848@qq.com * @date 2022-03-11 09:06:53 */ @Api(tags = "8.0保险列表") @RestController @Transactional @RequestMapping(value ="/insureUser", produces = {"application/json"}) public class InsureUserController{ @Autowired private InsureUserMapper insureUserMapper; @PostMapping(value = "/policyList") @ApiOperation(value = "3.保单列表--运营后台", httpMethod = "POST", notes = "保单列表") public Result<Object> policyList(@RequestBody PolicyDto policyDto) { Map map = Maps.newHashMap(); List<PolicyDto> list = insureUserMapper.selectPolicyList(policyDto); map.put("list", Optional.ofNullable(list).orElse(Lists.newArrayList())); map.put("total", insureUserMapper.totalUser(policyDto)); return ResultUtil.data(map); } @GetMapping(value = "/userDetial") @ApiOperation(value = "被保人详情", httpMethod = "POST", notes = "保单列表") public Result<Object> userDetial(@RequestParam("userId") String userId) { InsureUser user = InsureUser.builder().id(Integer.parseInt(userId)).build().selectById(); InsureProductPlan insureProductPlan = InsureProductPlan.builder().id(user.getProductPlanId()).build().selectById(); user.setPlanIds(JSON.parseArray(insureProductPlan.getPlanJson(), String.class)); user.setProductName(insureProductPlan.getName()); user.setBenefitBasicPlan(String.valueOf(insureProductPlan.getId())); return ResultUtil.data(user); } @PostMapping(value = "/userPolicyList") @ApiOperation(value = "3.保单列表--8小时端", httpMethod = "POST", notes = "保单列表") public Result<Object> userPolicyList(@CurrentUser UserBean userBean, @RequestBody PolicyDto policyDto) { Map map = Maps.newHashMap(); if(!StringUtils.isNullOrEmpty(policyDto.getCreateTime())){ List arr= JSONObject.parseArray(policyDto.getCreateTime(), String.class); policyDto.setPolicyDateStart(arr.get(0).toString()); policyDto.setPolicyDateEnd(arr.get(1).toString()); } policyDto.setOrgCode(String.valueOf(userBean.getOrgCode())); List<PolicyDto> list = insureUserMapper.selectPolicyList(policyDto); map.put("list", Optional.ofNullable(list).orElse(Lists.newArrayList())); map.put("total", insureUserMapper.totalUser(policyDto)); return ResultUtil.data(map); } @PostMapping(value = "/getPolicyUserList") @ApiOperation(value = "获取选中用户方案信息", httpMethod = "POST", notes = "获取选中用户方案信息") public Result<Object> getPolicyUserList(@RequestBody InsureDto dto){ List<InsureUserDto> userList= insureUserMapper.selectPlansListByIds(dto.getOldIds()); if(userList.size()<=0){ return ResultUtil.error("用户方案错误"); } return ResultUtil.data(userList); } @GetMapping(value = "/getPolicyPlansList") @ApiOperation(value = "获取方案列表", httpMethod = "GET", notes = "获取选中用户方案信息") public Result<Object> getPolicyUserList(@RequestParam("policyId") String policyId){ List<InsureUserDto> userList= insureUserMapper.selectPlansListById(policyId); if(userList.size()<=0){ return ResultUtil.error("用户方案错误"); } return ResultUtil.data(userList); } @GetMapping(value = "/exportUserList") @ApiOperation(value = "导出列表", httpMethod = "GET", notes = "导出列表") public void exportUserList(@RequestParam("policyId") String policyId, @RequestParam("status") String status, @RequestParam("name") String name, @RequestParam("policyDateStart") String policyDateStart, @RequestParam("planId") String planId, @RequestParam("categoryId") String categoryId, HttpServletRequest request, HttpServletResponse resp){ LocalDate localDate = LocalDate.now(); PolicyDto policyDto = new PolicyDto(); policyDto.setId(Integer.parseInt(policyId)); policyDto.setStatus(status); policyDto.setName(name); policyDto.setPolicyDateStart(policyDateStart); policyDto.setPlanId(planId); policyDto.setCategoryId(categoryId); policyDto.setPage(null); List<PolicyDto> userList = insureUserMapper.selectPolicyList(policyDto); String[] rowName = new String[]{"编号", "姓名", "证件类型", "证件号", "保单号", "状态", "计划", "保险生效时间", "保险失效时间"}; List<Object[]> list = null; OutputStream os = null; try { resp.setContentType("application/octet-stream"); resp.setHeader("content-disposition", "attachment; filename=" + URLEncoder.encode(localDate+"_"+list.size()+"名人员清单.xlsx", "UTF-8")); resp.setCharacterEncoding("UTF-8"); os = resp.getOutputStream(); XSSFWorkbook workbook= ExcelUtils.exportExcel(localDate+"_"+list.size()+"投保人列表导出.xlsx",rowName, Collections.singletonList(list.stream().toArray())); workbook.write(os); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } }