k94314517
2024-06-20 bb64d5e37ba396998f75793476e381782ca6cefa
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -227,6 +227,10 @@
        if(model.getApplyEndTime()== null || model.getStartTime().getTime()>model.getApplyEndTime().getTime() ){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请生效周期时间不符合要求,请确认后修改重试~");
        }
        Solutions solutions = solutionsMapper.selectById(model.getSolutionId());
        if(Objects.isNull(solutions)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询方案信息");
        }
        //计算实际截止时间
        Date actEndTime = new Date(model.getApplyEndTime().getTime() + (insuranceApply.getStartTime().getTime() - model.getApplyStartTime().getTime()));
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -310,7 +314,8 @@
            for (ApplyDetail applyDetail:applyDetailList) {
                //查询人员信息是否存在相同的方案下是否存在 冲突数据
                this.checkMemberSolution(applyDetail.getSolutionId(),applyDetail.getIdcardNo(),applyDetail.getMemberName(),update.getStartTime(),update.getEndTime());
                this.checkMemberSolution(solutions.getBaseId(),applyDetail.getIdcardNo(),applyDetail.getMemberName(),update.getStartTime()
                        ,update.getEndTime(),insuranceApply.getId());
                MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId());
                memberInsurance.setRelationType(Constants.ZERO);
@@ -1753,8 +1758,6 @@
        insuranceApply.setEndTime(countCyclePriceVO.getEndDate());
        insuranceApply.setFinalEndTime(countCyclePriceVO.getEndDate());
        insuranceApplyMapper.insert(insuranceApply);
        //处理下级数据
        this.dealApplyDetailData(insuranceApply,solutions,applyDetailList,loginUserInfo,countCyclePriceVO,true);
        InsuranceApply updBean = new InsuranceApply();
@@ -1949,7 +1952,7 @@
                    addMemberList.add(member);
                }
                //查询人员信息是否存在相同的方案下是否存在 冲突数据
                this.checkMemberSolution(solutions.getId(),member.getIdcardNo(),member.getName(),insuranceApply.getStartTime(),insuranceApply.getEndTime());
                this.checkMemberSolution(solutions.getBaseId(),member.getIdcardNo(),member.getName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(),insuranceApply.getId());
            }
            if(CollectionUtils.isNotEmpty(addMemberList)){
                memberJoinMapper.insertBatchSomeColumn(addMemberList);
@@ -2044,21 +2047,24 @@
     * @param endTime
     */
    @Override
    public void checkMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,Date endTime){
    public void checkMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,Date endTime,Integer applyId){
        List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
        try {
            List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
            applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
                    new MPJLambdaWrapper<ApplyDetail>()
                            .selectAll(ApplyDetail.class)
                            .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode)
                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                            .eq(ApplyDetail::getIdcardNo,idCode)
                            .eq(InsuranceApply::getSolutionId,solutionId)
                            .notIn(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD
                                    ,Constants.InsuranceApplyStatus.PLATFORM_RETURN
                                    ,Constants.InsuranceApplyStatus.FAIL_RETURN
                                    ,Constants.InsuranceApplyStatus.CLOSE
                                    ,Constants.InsuranceApplyStatus.WTB_RETURN
                                    ,Constants.InsuranceApplyStatus.WTB_CLOSED )
                            .eq(Solutions::getBaseId,solutionId)
                            .ne(Objects.nonNull(applyId),InsuranceApply::getId,applyId)
                            .notIn(InsuranceApply::getStatus
                                    ,Constants.InsuranceApplyStatus.PLATFORM_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.FAIL_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.CLOSE.getKey()
                                    ,Constants.InsuranceApplyStatus.WTB_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() )
                            .apply(" ( " +
                                    " '"+DateUtil.getPlusTime(startTime)+"'  <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(endTime)+"' " +
                                    " or " +
@@ -2066,30 +2072,32 @@
                                    " or " +
                                    " ( '"+DateUtil.getPlusTime(startTime)+"' > t.start_time AND '"+DateUtil.getPlusTime(endTime)+"' < t.end_time )" +
                                    " ) " ));
            if(applyDetailList.size() >Constants.ZERO){
                ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该用户【"+memberName+" "+idCode+"】在保单【"+applyDetail.getApplyCode()+"】下已存在与本次提报冲突的日期");
            };
        }catch (Exception e){
        }
        if(applyDetailList.size() >Constants.ZERO){
            ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该员工【"+memberName+" "+idCode+"】在该保险方案下已存在投保记录,无法进行该操作");
        };
    }
    public static void checkStaticMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,Date endTime,ApplyDetailJoinMapper applyDetailJoinMapper){
    public static void checkStaticMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,
                                                 Date endTime,ApplyDetailJoinMapper applyDetailJoinMapper){
        List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
        try {
            List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
            applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
                    new MPJLambdaWrapper<ApplyDetail>()
                            .selectAll(ApplyDetail.class)
                            .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode)
                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                            .eq(ApplyDetail::getIdcardNo,idCode)
                            .eq(InsuranceApply::getSolutionId,solutionId)
                            .notIn(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD
                                    ,Constants.InsuranceApplyStatus.PLATFORM_RETURN
                                    ,Constants.InsuranceApplyStatus.FAIL_RETURN
                                    ,Constants.InsuranceApplyStatus.CLOSE
                                    ,Constants.InsuranceApplyStatus.WTB_RETURN
                                    ,Constants.InsuranceApplyStatus.WTB_CLOSED )
                            .eq(Solutions::getBaseId,solutionId)
                            .notIn(InsuranceApply::getStatus
                                    ,Constants.InsuranceApplyStatus.PLATFORM_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.FAIL_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.CLOSE.getKey()
                                    ,Constants.InsuranceApplyStatus.WTB_RETURN.getKey()
                                    ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() )
                            .apply(" ( " +
                                    " '"+DateUtil.getPlusTime(startTime)+"'  <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(endTime)+"' " +
                                    " or " +
@@ -2097,13 +2105,13 @@
                                    " or " +
                                    " ( '"+DateUtil.getPlusTime(startTime)+"' > t.start_time AND '"+DateUtil.getPlusTime(endTime)+"' < t.end_time )" +
                                    " ) " ));
            if(applyDetailList.size() >Constants.ZERO){
                ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该用户【"+memberName+" "+idCode+"】在保单【"+applyDetail.getApplyCode()+"】下已存在与本次提报冲突的日期");
            };
        }catch (Exception e){
        }
        if(applyDetailList.size() >Constants.ZERO){
            ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该员工【"+memberName+" "+idCode+"】在该保险方案下已存在投保记录,无法进行该操作");
        };
    }
    @Override
@@ -2790,7 +2798,7 @@
                BigDecimal sumAmount = BigDecimal.ZERO;
                List<ApplyDetail> applyDetailList = applyDetailMapper
                        .selectList(new QueryWrapper<ApplyDetail>().lambda()
                                .eq(ApplyDetail::getChangeStatus,Constants.ZERO)
                                .ne(ApplyDetail::getChangeStatus,Constants.TWO)
                                .eq(ApplyDetail::getApplyId,insuranceApply.getId()));
                if(CollectionUtils.isNotEmpty(applyDetailList)){
                    for (ApplyDetail applyDetail: applyDetailList) {
@@ -2806,16 +2814,15 @@
                            applyDetail.setCurrentFee(applyDetail.getFee());
                            applyDetailMapper.updateById(applyDetail);
                        }
                        sumAmount = sumAmount.add(applyDetail.getCurrentFee());
                        if(Constants.equalsInteger(applyDetail.getChangeStatus(),Constants.ZERO) || applyDetail.getEndTime().getTime()>System.currentTimeMillis()){
                            sumAmount = sumAmount.add(applyDetail.getCurrentFee());
                        }
                    }
                }
                insuranceApply.setCurrentFee(sumAmount);
                insuranceApplyMapper.updateById(insuranceApply);
            }
        }
//        if(1==1){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
//        }
    }