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

284718418@qq.com committed
3
//import cn.timer.api.bean.insure.InsuredUser;
翁国栋 committed
4 5 6 7 8 9 10 11
import cn.timer.api.bean.qyzx.QyzxEntInfoM;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.utils.*;
import com.alibaba.druid.util.Base64;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.beust.jcommander.internal.Lists;
284718418@qq.com committed
12
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
翁国栋 committed
13 14 15 16 17 18 19 20 21 22 23
import com.google.common.collect.Maps;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
284718418@qq.com committed
24
import java.net.URLEncoder;
翁国栋 committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

import com.alibaba.fastjson.JSONObject;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * @Description TODO
 * @Author wgd
 * @Date 2022/3/1 11:34
 */
@Api(tags = "8.0保险列表")
@RestController
@Transactional
@RequestMapping(value = "/insure", produces = {"application/json"})
public class InsureContorll {
    private static final Logger log = LoggerFactory.getLogger(InsureContorll.class);
284718418@qq.com committed
47 48 49 50
    /*测试用*/
    private static String appid = "1002303100602312445";
    /*测试用*/
    private static String secret = "acb329868c31d5b3ba03de40dac13dd9";
翁国栋 committed
51

284718418@qq.com committed
52 53 54 55
    /*保全测试用*/
    private static String appidq="1000115041006006938";
    /*保全测试用*/
    private static String secretq="6ba1bf4aa0bd14368c95ff0b9934a17b";
翁国栋 committed
56 57


284718418@qq.com committed
58 59 60 61 62 63
    /*测试用投保上传文件地址*/
    private static String uploadUrl = " http://sandbox.portal.unistar-ins.com/service/Home/Index/fileUpload";
    /*测试用投保申请地址*/
    private static String insuredUrl = "http://sandbox.portal.unistar-ins.com/mall/Home/Index/createQuotePolicy";
    /*测试用保全上传文件地址*/
    private static String uploadUrl2 = "http://sandbox.portal.unistar-ins.com/fuli/Home/Index/file_upload";
翁国栋 committed
64 65 66 67 68 69 70


    /**
     * 设置请求参数
     * @param sign
     * @return
     */
284718418@qq.com committed
71
    private Map setParams(String sign){
翁国栋 committed
72
        /*当前时间戳*/
284718418@qq.com committed
73 74
        long timestamp =System.currentTimeMillis()/1000;
        log.info("时间戳"+timestamp);
翁国栋 committed
75
        Map paramsMap = Maps.newHashMap();
284718418@qq.com committed
76 77 78
        paramsMap.put("pid",appid);
        paramsMap.put("timestamp",String.valueOf(timestamp));
        paramsMap.put("trace_id",appid+timestamp+ new Random().nextInt((9999 - 100) + 1) + 10);
翁国栋 committed
79 80
//        paramsMap.put("sign",Md5.md5(appid+secret+timestamp+sign.trim()));

284718418@qq.com committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
        String value=appid+secret+timestamp+sign;
        log.info("body参数======"+sign);
        paramsMap.put("sign", DigestUtils.md5Hex(value));
        log.info("params参数======"+JSONObject.toJSONString(paramsMap));
        return paramsMap;
    }
    /*保全*/
    private Map setParams2(String sign){
        /*当前时间戳*/
        long timestamp =System.currentTimeMillis()/1000;
        log.info("时间戳"+timestamp);
        Map paramsMap = Maps.newHashMap();
        paramsMap.put("pid",appidq);
        paramsMap.put("timestamp",String.valueOf(timestamp/1000));
        paramsMap.put("trace_id",appidq+timestamp+ new Random().nextInt((9999 - 100) + 1) + 10);
//        paramsMap.put("sign",Md5.md5(appidq+secret+timestamp+sign.trim()));

        String value=appidq+secretq+timestamp+sign;
        log.info("body参数======"+sign);
翁国栋 committed
100
        paramsMap.put("sign", DigestUtils.md5Hex(value));
284718418@qq.com committed
101
        log.info("params参数======"+JSONObject.toJSONString(paramsMap));
翁国栋 committed
102 103 104 105 106
        return paramsMap;
    }

    @PostMapping(value = "/insured_add")
    @ApiOperation(value = "1.投保申请", httpMethod = "Post", notes = "投保申请")
284718418@qq.com committed
107 108 109
    @ApiOperationSupport(order = 2)
    public Result<Object> insured_add(@CurrentUser UserBean userBean, @RequestParam(required = true) String url) {
        QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().id(userBean.getOrgCode()).build().selectById(); // 企业信息
翁国栋 committed
110 111 112 113
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        LocalDateTime now = LocalDateTime.now();
        Map bodyMap = Maps.newHashMap();
        ArrayList<Map> quotationsArry = new ArrayList<Map>();
284718418@qq.com committed
114 115 116 117 118 119 120 121 122 123 124 125
        bodyMap.put("is_ss",0);
        Map quotations=Maps.newHashMap();
        quotations.put("trans_id","MB_"+dtf2.format(now));/*报价请求流水号*/
        quotations.put("applicant_type","2");/*投保人类型:2-企业*/
        quotations.put("quotation_type",3);/*报价类型:3-投保申请*/
        quotations.put("currency","5");/*币种:5人民币*/
        quotations.put("source_type","");/*币种:5人民币*/
        quotations.put("cps_email","");/*币种:5人民币*/
        quotations.put("cps_tel","");/*币种:5人民币*/
        quotations.put("last_serial_number","");/*币种:5人民币*/
        quotations.put("from_source","");/*币种:5人民币*/
        quotations.put("operator_name","");/*币种:5人民币*/
翁国栋 committed
126

284718418@qq.com committed
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
        Map basicMap = Maps.newHashMap();
        basicMap.put("partner_pid","1231");/*分销商pid*/
        basicMap.put("plan_code_id","61b85207b73d2ab09fb2959");/*计划代码,选项值:61b85207b73d2ab09fb2959 (生产环境) 61b85207b73d2ab09fb2959 (沙箱环境)*/
        basicMap.put("product_code_id","61b85207a9f87da19fb5986");/*产品代码,选项值:61b85207a9f87da19fb5986 (生产环境) 61b85207a9f87da19fb5986 (沙箱环境)*/
        basicMap.put("policy_date_start","2022-04-01 00:00:00");
        basicMap.put("policy_date_end","2022-4-30 23:59:59");
        basicMap.put("channel","");
        basicMap.put("fee","");
        basicMap.put("partner_user_rate","");
        basicMap.put("promotion_fee","");
        basicMap.put("agent_id","");
        basicMap.put("policy_insure_notify","");
        basicMap.put("promotion_id",0);
        basicMap.put("policy_number_last_year","");
        quotations.put("basic",basicMap);
        quotations.put("individual_applicant",Maps.newHashMap());
翁国栋 committed
143 144 145

        /*企业信息*/
        Map companyApplicantMap = Maps.newHashMap();
284718418@qq.com committed
146 147 148 149 150 151 152 153
        companyApplicantMap.put("applicant_e_name","测试企业一");/*企业/网点名称*/
        companyApplicantMap.put("applicant_e_address", "测试地址");/*企业/网点地址*/
        companyApplicantMap.put("applicant_e_contacts", "测试人");/*企业授权操作人姓名*/
        companyApplicantMap.put("applicant_e_phone", "13800138000");/*操作人的联系电话*/
        companyApplicantMap.put("applicant_e_no_type", "3646");/*企业证件类型*/
        companyApplicantMap.put("applicant_e_no", "91310230MA1JXL5059");/*企业证件号码*/
        companyApplicantMap.put("applicant_e_mail", "123@123.com");/*企业邮箱*/
        companyApplicantMap.put("applicant_province_city", "21721");/*省市区*/
翁国栋 committed
154
        /*人员清单填被保人员*/
284718418@qq.com committed
155 156
        companyApplicantMap.put("applicant_employee_list",url);
        quotations.put("company_applicant",companyApplicantMap);
翁国栋 committed
157 158 159 160


        /*被保人员 填被保企业信息*/
        ArrayList<Map> insuredArray = new ArrayList<>();
284718418@qq.com committed
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
        Map insured = Maps.newHashMap();
        insured.put("trans_id","P_"+qyzxEntInfoM.getId()+"_"+dtf2.format(now));
        insured.put("price","75");
        insured.put("insured_applicant_relations", "36960");
        insured.put("insured_mobile", qyzxEntInfoM.getLinkManPhone());
        insured.put("insured_e_contact", qyzxEntInfoM.getLinkMan());
        insured.put("insured_name", qyzxEntInfoM.getName());
        insured.put("insured_no_type", "3306");
        insured.put("insured_no", qyzxEntInfoM.getCreditCode());
        insured.put("insured_zm_openid", "");
        insured.put("benefit_basic_plan", "36969");
        insured.put("benefit_occupation_category", "63119");
        insured.put("benefit_EL_employee_number_t", "5");
        insuredArray.add(insured);
        quotations.put("insured",insuredArray);



        /*quotations.put("bd_id","");不需要*/
        quotations.put("file",Lists.newArrayList());
翁国栋 committed
181 182
        quotations.put("specifically_agreed_file", Lists.newArrayList());
        quotations.put("policy_no", "");
284718418@qq.com committed
183 184
        quotations.put("callback_policy", "/callBack/insuredCallBack");
        quotations.put("insured",insuredArray);
翁国栋 committed
185
        quotationsArry.add(quotations);
284718418@qq.com committed
186
        bodyMap.put("quotations",quotationsArry);
翁国栋 committed
187 188 189 190 191 192 193
        log.info(JSONObject.toJSONString(bodyMap));
        Object o=requestAgent(bodyMap);
        return ResultUtil.data(o);

    }
    /*测试用生产环境不需要*/
    synchronized private Object requestAgent(Map bodyMap ){
284718418@qq.com committed
194
        String data= HttpUtils.sendPost(insuredUrl,setParams(JSONObject.toJSONString(bodyMap)),bodyMap);
翁国栋 committed
195 196 197 198 199 200 201 202 203 204 205 206 207
        Map<String,Object> dataMap = JSONObject.parseObject(data);
        if (dataMap.get("errcode").toString().equals("suc")) {
            return dataMap.get("data");
        }else{
            if(dataMap.get("errcode").toString().equals("e1")&&dataMap.get("errmsg").toString().equals("出单中")){
                try {
                    Thread.sleep(30000);
                    requestAgent(bodyMap);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
284718418@qq.com committed
208
            return dataMap.get("data");
翁国栋 committed
209
        }
翁国栋 committed
210
    }
翁国栋 committed
211

翁国栋 committed
212

284718418@qq.com committed
213 214 215 216 217 218 219 220 221

    @PostMapping (value = "/file_upload")
    @ApiOperation(value = "3.投保上传文件", httpMethod = "Post", notes = "上传文件")
    @ApiOperationSupport(order = 2)
    public Result<Object> fileUpload(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file) {
        if (file == null) {
            return ResultUtil.error("上传失败,请选择上传文件");
        }
        byte[] bytes =null;
翁国栋 committed
222 223 224 225 226 227 228 229 230 231 232 233 234
        try {
            bytes=file.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
            log.warn("文件转换Base64异常");
        }
        String fileBase64= Base64.byteArrayToBase64(bytes);
        /*body参数 begin*/
        Map bodyMap= Maps.newHashMap();
        bodyMap.put("app","mall");
        bodyMap.put("name",file.getName());
        bodyMap.put("file",fileBase64);
        /*end*/
284718418@qq.com committed
235
        String data= HttpUtils.sendPost(uploadUrl,setParams(JSONObject.toJSONString(bodyMap)),bodyMap);
翁国栋 committed
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
        log.info("请求返回的结果====="+data);
        /*文件流base64*/
        return ResultUtil.data(message(data));
    };
    @PostMapping (value = "/file_upload2")
    @ApiOperation(value = "3.保全上传文件", httpMethod = "Post", notes = "上传文件")
    @ApiOperationSupport(order = 2)
    public Result<Object> fileUpload2(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file) {
        if (file == null) {
            return ResultUtil.error("上传失败,请选择上传文件");
        }
        byte[] bytes =null;
        try {
            bytes=file.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
            log.warn("文件转换Base64异常");
        }
        String fileBase64= Base64.byteArrayToBase64(bytes);
        /*body参数 begin*/
        Map bodyMap= Maps.newHashMap();
//        bodyMap.put("app","mall");
//        bodyMap.put("name","劳务公司批增-月单(1).xlsx");
        bodyMap.put("file",fileBase64);
        /*end*/
284718418@qq.com committed
261
        String data= HttpUtils.sendPost(uploadUrl2,setParams2(JSONObject.toJSONString(bodyMap)),bodyMap);
翁国栋 committed
262 263 264 265 266
        log.info("请求返回的结果====="+data);
        /*文件流base64*/
        return ResultUtil.data(message(data));
    };

284718418@qq.com committed
267 268 269 270 271 272
//    @PostMapping(value = "/baoquan")
//    @ApiOperation(value = "2.单个添加保全", httpMethod = "Post", notes = "上传文件")
//    @ApiOperationSupport(order = 2)
//    public Result<Object> baoquan_add(InsuredUser user) {
//return null;
//    }
翁国栋 committed
273 274

    /**
284718418@qq.com committed
275 276
     * 设置错误信息
     * @param data
翁国栋 committed
277 278
     * @return
     */
284718418@qq.com committed
279 280 281 282
    private Object message(String data){
        Map<String,Object> dataMap = JSONObject.parseObject(data);
        if (dataMap.get("errcode").toString().equals("suc")) {
            return dataMap.get("data");
翁国栋 committed
283
        }
284718418@qq.com committed
284 285 286 287 288 289 290
        return dataMap.get("errmsg");
    }

    @GetMapping(value = "/downExcel")
    @ApiOperation(value = "2.下载投保文件", httpMethod = "Get", notes = "下载投保文件")
    @ApiOperationSupport(order = 2)
    public void downExcel(@CurrentUser UserBean userBean, HttpServletRequest request, HttpServletResponse resp){
翁国栋 committed
291 292
        LocalDate localDate = LocalDate.now();
        /*获取该企业下所有未投保员工*/
284718418@qq.com committed
293
        List<YgglMainEmp> ygglMainEmpList = YgglMainEmp.builder().build().selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode,userBean.getOrgCode())
翁国栋 committed
294 295 296 297 298 299
                .eq(YgglMainEmp::getIsInsure,0));
        List list=Lists.newArrayList();
        for (YgglMainEmp y:ygglMainEmpList.subList(0,5)) {
            String[] arr =new String[]{String.valueOf(y.getId()),y.getName(),"身份证",y.getZjNum(),"50万意外/5万医疗/扩展24小时(A类)","","深圳名邦人力资源管理有限公司","无","A类"};
            list.add(arr);
        }
284718418@qq.com committed
300 301 302
        String[] rowName=new String[]{"ID","name","ID_type","ID_number","Scheme_name","Date_start","Branch","Tricycle_frame_number","benefit_occupation_category"};
        /*随机抽取五名幸运用户投保*/
        OutputStream os = null;
翁国栋 committed
303
        try {
284718418@qq.com committed
304 305 306 307 308 309 310
            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();
            ExcelUtils.exportExcel(localDate+"_"+list.size()+"名人员清单.xlsx",rowName,list,os);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
翁国栋 committed
311 312
        } catch (IOException e) {
            e.printStackTrace();
284718418@qq.com committed
313
        }finally {
翁国栋 committed
314
            try {
284718418@qq.com committed
315
                os.close();
翁国栋 committed
316 317 318 319 320 321 322 323
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}