InsureUserController.java 7.09 KB
Newer Older
翁国栋 committed
1 2
package cn.timer.api.controller.insure;

翁国栋 committed
3 4 5 6 7 8
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.Collections;
翁国栋 committed
9 10
import java.util.List;
import java.util.Map;
翁国栋 committed
11
import java.util.Optional;
翁国栋 committed
12
import java.util.stream.Collectors;
翁国栋 committed
13

翁国栋 committed
14
import cn.timer.api.bean.insure.InsurePolicy;
翁国栋 committed
15
import cn.timer.api.bean.insure.InsureProductPlan;
翁国栋 committed
16
import cn.timer.api.bean.insure.InsureUser;
翁国栋 committed
17 18
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
翁国栋 committed
19
import cn.timer.api.dao.insure.InsureUserMapper;
翁国栋 committed
20 21
import cn.timer.api.dto.insure.InsureDto;
import cn.timer.api.dto.insure.InsureUserDto;
翁国栋 committed
22
import cn.timer.api.dto.insure.PolicyDto;
翁国栋 committed
23
import cn.timer.api.utils.ExcelUtils;
翁国栋 committed
24
import cn.timer.api.utils.Page;
翁国栋 committed
25 26
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
翁国栋 committed
27 28 29
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.common.utils.StringUtils;
翁国栋 committed
30
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
翁国栋 committed
31 32 33 34 35
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;
翁国栋 committed
36
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
翁国栋 committed
37
import org.springframework.beans.factory.annotation.Autowired;
翁国栋 committed
38 39
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
翁国栋 committed
40

翁国栋 committed
41 42 43
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

翁国栋 committed
44 45 46 47 48 49 50 51

/**
 * 被保人
 *
 * @author wgd
 * @email 862422848@qq.com
 * @date 2022-03-11 09:06:53
 */
翁国栋 committed
52
@Api(tags = "8.0保险列表")
翁国栋 committed
53
@RestController
翁国栋 committed
54 55
@Transactional
@RequestMapping(value ="/insureUser", produces = {"application/json"})
翁国栋 committed
56
public class InsureUserController{
翁国栋 committed
57 58 59 60
    @Autowired
    private InsureUserMapper insureUserMapper;

    @PostMapping(value = "/policyList")
284718418@qq.com committed
61
    @ApiOperation(value = "3.保单列表--运营后台", httpMethod = "POST", notes = "保单列表")
翁国栋 committed
62 63
    public Result<Object> policyList(@RequestBody PolicyDto policyDto) {
        Map map = Maps.newHashMap();
翁国栋 committed
64
        List<PolicyDto> list = insureUserMapper.selectPolicyList(policyDto);
翁国栋 committed
65
        map.put("list", Optional.ofNullable(list).orElse(Lists.newArrayList()));
翁国栋 committed
66
        map.put("total", insureUserMapper.totalUser(policyDto));
翁国栋 committed
67 68 69
        return ResultUtil.data(map);
    }
    @GetMapping(value = "/userDetial")
284718418@qq.com committed
70
    @ApiOperation(value = "被保人详情", httpMethod = "POST", notes = "保单列表")
翁国栋 committed
71 72
    public Result<Object> userDetial(@RequestParam("userId") String userId) {
        InsureUser user = InsureUser.builder().id(Integer.parseInt(userId)).build().selectById();
翁国栋 committed
73 74 75
            InsureProductPlan insureProductPlan = InsureProductPlan.builder().id(user.getProductPlanId()).build().selectById();
            user.setPlanIds(JSON.parseArray(insureProductPlan.getPlanJson(), String.class));
            user.setProductName(insureProductPlan.getName());
翁国栋 committed
76
            user.setBenefitBasicPlan(String.valueOf(insureProductPlan.getId()));
翁国栋 committed
77 78
        return ResultUtil.data(user);
    }
翁国栋 committed
79

翁国栋 committed
80
    @PostMapping(value = "/userPolicyList")
284718418@qq.com committed
81
    @ApiOperation(value = "3.保单列表--8小时端", httpMethod = "POST", notes = "保单列表")
翁国栋 committed
82
    public Result<Object> userPolicyList(@CurrentUser UserBean userBean, @RequestBody PolicyDto policyDto) {
翁国栋 committed
83
        Map map = Maps.newHashMap();
翁国栋 committed
84 85 86 87 88 89
        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()));
翁国栋 committed
90
        List<PolicyDto> list = insureUserMapper.selectPolicyList(policyDto);
翁国栋 committed
91
        map.put("list", Optional.ofNullable(list).orElse(Lists.newArrayList()));
翁国栋 committed
92
        map.put("total", insureUserMapper.totalUser(policyDto));
翁国栋 committed
93 94
        return ResultUtil.data(map);
    }
翁国栋 committed
95
    @PostMapping(value = "/getPolicyUserList")
284718418@qq.com committed
96
    @ApiOperation(value = "获取选中用户方案信息", httpMethod = "POST", notes = "获取选中用户方案信息")
翁国栋 committed
97 98 99 100 101 102 103 104
    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")
284718418@qq.com committed
105
    @ApiOperation(value = "获取方案列表", httpMethod = "GET", notes = "获取选中用户方案信息")
翁国栋 committed
106 107 108 109 110 111 112
    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);
    }
翁国栋 committed
113

翁国栋 committed
114 115

    @GetMapping(value = "/exportUserList")
翁国栋 committed
116 117
    @ApiOperation(value = "导出列表", httpMethod = "GET", notes = "导出列表")
    public void exportUserList(@RequestParam("policyId") String policyId,
翁国栋 committed
118 119 120 121 122 123
                               @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();
翁国栋 committed
124 125 126 127 128 129 130
        PolicyDto policyDto = new PolicyDto();
        policyDto.setId(Integer.parseInt(policyId));
        policyDto.setStatus(status);
        policyDto.setName(name);
        policyDto.setPolicyDateStart(policyDateStart);
        policyDto.setPlanId(planId);
        policyDto.setCategoryId(categoryId);
翁国栋 committed
131
        policyDto.setPage(null);
翁国栋 committed
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
        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();
            }
        }
翁国栋 committed
154
    }
翁国栋 committed
155
}