From d5acd8d069e69479f805e79f457590539dbd4a52 Mon Sep 17 00:00:00 2001
From: wgd <862422848@qq.com>
Date: Mon, 11 Jul 2022 18:38:45 +0800
Subject: [PATCH] 投保导入多个替换人,不同套餐

---
 src/main/java/cn/timer/api/bean/insure/InsureUser.java             |  4 ++--
 src/main/java/cn/timer/api/controller/insure/CallBackContorll.java |  7 +++++++
 src/main/java/cn/timer/api/controller/insure/InsureContorll.java   | 45 +++++++++++++++++++++++----------------------
 3 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/src/main/java/cn/timer/api/bean/insure/InsureUser.java b/src/main/java/cn/timer/api/bean/insure/InsureUser.java
index 410f338..9f1367a 100644
--- a/src/main/java/cn/timer/api/bean/insure/InsureUser.java
+++ b/src/main/java/cn/timer/api/bean/insure/InsureUser.java
@@ -170,6 +170,6 @@ public class InsureUser extends Model<InsureUser> {
 
 	@Transient
 	@TableField(exist = false)
-	@ApiModelProperty(value="新被保人",example="新被保人")
-	private InsureUser replaceUser;
+	@ApiModelProperty(value="原被保人",example="原被保人")
+	private InsureUser originaUser;
 }
diff --git a/src/main/java/cn/timer/api/controller/insure/CallBackContorll.java b/src/main/java/cn/timer/api/controller/insure/CallBackContorll.java
index 1f349b9..f0da502 100644
--- a/src/main/java/cn/timer/api/controller/insure/CallBackContorll.java
+++ b/src/main/java/cn/timer/api/controller/insure/CallBackContorll.java
@@ -124,6 +124,9 @@ public class CallBackContorll {
             CallBack callBack = JSONObject.parseObject(sb.toString(), CallBack.class);
             if (callBack.getCallback_type().equals("1")) {
                 List<InsureUser> insureUserList = InsureUser.builder().build().selectList(new QueryWrapper<InsureUser>().lambda().eq(InsureUser::getTransId, callBack.getOrder_import_info().getThird_uuid()));
+                if(insureUserList.size()<=0){
+                    insureUserList = InsureUser.builder().build().selectList(new QueryWrapper<InsureUser>().lambda().eq(InsureUser::getBatchNo, callBack.getOrder_import_info().getUuid()));
+                }
                 InsurePolicy insurePolicy = InsurePolicy.builder().id(insureUserList.get(0).getPolicyId()).build().selectById();
                 if (callBack.getStatus().equals("1")) {
                     if (insureUserList.size() > 0) {
@@ -264,6 +267,10 @@ public class CallBackContorll {
         } catch (Exception e) {
             log.error("保全增员申请回调异常:",e);
             throw new CustomException("保全增员申请回调异常");
+            //TODO 写入日志
+//            InsureLog.builder().requestParam(JSONObject.toJSONString(paramsMap)).type(7)
+//                    .requestData(sb.toString()).createTime(new Date()).requestType(1).returnBody(JSONObject.toJSONString(callBack)).requestPath(base_api_url + "/callBack/policy/CallBack")
+//                    .returnCode(callBack.getStatus()).returnMsg(errorMsg).policyId(insurePolicy.getId()).build().insert();
         } finally {
             Map trueMap = Maps.newHashMap();
             trueMap.put("status", "1");
diff --git a/src/main/java/cn/timer/api/controller/insure/InsureContorll.java b/src/main/java/cn/timer/api/controller/insure/InsureContorll.java
index 7ecf750..f64a047 100644
--- a/src/main/java/cn/timer/api/controller/insure/InsureContorll.java
+++ b/src/main/java/cn/timer/api/controller/insure/InsureContorll.java
@@ -1715,7 +1715,7 @@ public class InsureContorll {
     @PostMapping(value = "/replaceUserPolicy")
     @ApiOperation(value = "18.导入替换人员", httpMethod = "POST", notes = "导入用户")
     @Transactional(rollbackFor = Exception.class)
-    public Result<Object> replaceUserPolicy(@RequestParam("file") MultipartFile file, @RequestParam("policyId") Integer policyId,@RequestParam("planId") String planId,@RequestParam("categoryId") String categoryId) throws IOException, ParseException {
+    public Result<Object> replaceUserPolicy(@RequestParam("file") MultipartFile file, @RequestParam("policyId") Integer policyId){
         InsurePolicy insurePolicy = InsurePolicy.builder().id(policyId).build().selectById();
         ByteArrayOutputStream bos  = new ByteArrayOutputStream();
         XSSFWorkbook xw=null;
@@ -1726,8 +1726,8 @@ public class InsureContorll {
             XSSFRow titleRow = sheetAt.getRow(12);
             InsureUser originalUser;
             InsureUser replaceUser;
-            /*原被保人集合*/
-            List<InsureUser> originalList=Lists.newArrayList();
+            /*新被保人集合*/
+            List<InsureUser> replaceList=Lists.newArrayList();
             // 循环获取每一行数据
         for (int i = 13; i < sheetAt.getPhysicalNumberOfRows(); i++) {
             XSSFRow row = sheetAt.getRow(i);
@@ -1805,30 +1805,30 @@ public class InsureContorll {
 
                 }
             }
-            originalUser.setReplaceUser(replaceUser);
-            originalList.add(originalUser);
+            replaceUser.setOriginaUser(originalUser);
+            replaceList.add(replaceUser);
         }
         /*验证表格信息*/
             /*新被保人用户Id*/
             List<String> userIdList=Lists.newArrayList();
             /*原被保人*/
             List<InsureUser> originaInuserUserList = Lists.newArrayList();
-            /*新被保人*/
-            List<InsureUser> replaceUserList=originalList.stream().map(InsureUser::getReplaceUser).collect(Collectors.toList());
-            for (InsureUser insureUser : originalList) {
+            for (InsureUser insureUser : replaceList) {
+                /*获取原投保人*/
                 InsureUser getInsureUser = InsureUser.builder().build().selectOne(new QueryWrapper<InsureUser>().lambda()
-                        .eq(InsureUser::getInsuredEContact,insureUser.getInsuredEContact()).eq(InsureUser::getInsuredNo,insureUser.getInsuredNo())
-                        .eq(InsureUser::getInsureStatus,1).eq(InsureUser::getStatus,1).eq(InsureUser::getPolicyId,policyId).eq(InsureUser::getBenefitBasicPlan,planId)
-                .eq(InsureUser::getBenefitOccupationCategory,categoryId));
+                        .eq(InsureUser::getInsuredEContact,insureUser.getOriginaUser().getInsuredEContact()).eq(InsureUser::getInsuredNo,insureUser.getOriginaUser().getInsuredNo())
+                        .eq(InsureUser::getInsureStatus,1).eq(InsureUser::getStatus,1).eq(InsureUser::getPolicyId,policyId));
                 if(getInsureUser==null){
                     return ResultUtil.error(insureUser.getInsuredEContact()+"未投保");
                 }
+                /*设置保单套餐*/
+                insureUser.setOriginaUser(getInsureUser);
+                insureUser.setBenefitBasicPlan(getInsureUser.getBenefitBasicPlan());
+                insureUser.setBenefitOccupationCategory(getInsureUser.getBenefitOccupationCategory());
                 originaInuserUserList.add(getInsureUser);
-            }
-            replaceUserList.stream().forEach(insureUser->{
-                YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda()
-                        .eq(YgglMainEmp::getName,insureUser.getInsuredEContact())
-                        .eq(YgglMainEmp::getZjNum,insureUser.getInsuredNo()));
+                    YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda()
+                            .eq(YgglMainEmp::getName,insureUser.getInsuredEContact())
+                            .eq(YgglMainEmp::getZjNum,insureUser.getInsuredNo()));
                 if(ygglMainEmp==null){
                     QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().phone(String.valueOf(System.currentTimeMillis())).pw(Md5.md5(pwd)).regTime(new Date()).orgId(insurePolicy.getOrgCode()).username(insureUser.getInsuredEContact()).sts(CommonEnum.U_STS_ON.getType()).build();
                     qyzxEmpLogin.insert();
@@ -1846,7 +1846,7 @@ public class InsureContorll {
                 insureUser.setInsuredMobile(ygglMainEmp.getPhone());
                 insureUser.setUserId(ygglMainEmp.getId());
                 userIdList.add(String.valueOf(ygglMainEmp.getId()));
-            });
+            }
             /*上传替换文件到保司服务器*/
             String url = "";
             xw.write(bos);
@@ -1871,7 +1871,7 @@ public class InsureContorll {
                     .requestData(JSONObject.toJSONString(bodyMap)).createTime(new Date()).requestType(1).returnBody(data).requestPath(uploadUrl2)
                     .returnCode(dataMap.get("errcode").toString()).returnMsg(dataMap.get("errmsg").toString()).fileUrl(url).build().insert();
 
-            Integer price = getPrice(planId, categoryId);
+
             LocalDateTime now = LocalDateTime.now();
             DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
             bodyMap.put("contract_no", insurePolicy.getPolicyNo());
@@ -1899,18 +1899,19 @@ public class InsureContorll {
                     return ResultUtil.error("信息填写错误,请查看日志");
                 } else {
                     QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().id(insurePolicy.getOrgCode()).build().selectById();
-                    replaceUserList.forEach(y -> {
+                    replaceList.forEach(y -> {
+                        Integer price = getPrice(y.getBenefitBasicPlan(),y.getBenefitOccupationCategory());
                         InsureUser.builder()
                                 .transId("RP_" + insurePolicy.getOrgCode() + "_" + dtf2.format(now))
                                 .insuredName(qyzxEntInfoM.getName())
                                 .price(price.toString())/*前端获取的保费*/
-                                .premium(String.valueOf(price * replaceUserList.size()))
+                                .premium(String.valueOf(price * replaceList.size()))
                                 .batchNo(batchData.get("import_uuid").toString())
-                                .benefitBasicPlan(planId)
+                                .benefitBasicPlan(y.getBenefitBasicPlan())
                                 .policyNo(orderImportInfo.get("contract_no").toString())
                                 .userId(y.getUserId())
                                 .orgCode(y.getOrgCode())
-                                .benefitOccupationCategory(categoryId)
+                                .benefitOccupationCategory(y.getBenefitOccupationCategory())
                                 .insuredNo(y.getInsuredNo())
                                 .tricycleFrameNumber(y.getTricycleFrameNumber())
                                 .insuredEContact(y.getInsuredEContact())
--
libgit2 0.26.0