jiangping
2025-06-11 3e76748af46dcc2602205f80caf8e9ea357c1e53
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -1435,6 +1435,15 @@
                .eq(Member::getIsdeleted,Constants.ZERO)
                .in(Member::getIdcardNo,addDetailList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList()))
        );
        ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda()
                .eq(ApplyDetail::getApplyId,applyChange.getApplyId())
                .isNotNull(ApplyDetail::getPrice)
                .last("limit 1 ")
        );
        if(Objects.isNull(applyDetail)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "保单下无明细数据");
        }
        List<Member> updMemberList = new ArrayList<>();
        //查询本次加保所有人员的历史保单记录
        List<ApplyDetail> applyDetailAllList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
                new MPJLambdaWrapper<ApplyDetail>()
@@ -1458,6 +1467,7 @@
                        .in(Member::getIdcardNo,memberList.stream().map(i->i.getId()).collect(Collectors.toList()))
                        .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE));
        List<ApplyChagneDetail> applyChagneDetailList = new ArrayList<>();
        for (int i = 0; i < addDetailList.size(); i++) {
            ApplyChagneDetail applyChagneDetail = addDetailList.get(i);
            if (
@@ -1503,9 +1513,9 @@
                member.setWorktypeId(applyChagneDetail.getWorktypeId());
                member.setStartTime(applyChagneDetail.getStartTime());
                member.setEndTime(applyChagneDetail.getEndTime());
                memberMapper.updateById(member);
//                memberMapper.updateById(member);
                updMemberList.add(member);
                applyChagneDetail.setMemberId(member.getId());
                if(applyChangeDetailAllList.stream().filter(
                        j->Constants.equalsInteger(j.getMemberId(),applyChagneDetail.getMemberId())
                ).collect(Collectors.toList()).size()>Constants.ZERO){
@@ -1516,10 +1526,6 @@
            List<ApplyDetail> memberApplyDetailList = new ArrayList<>();
            if(CollectionUtils.isNotEmpty(applyDetailAllList)){
                memberApplyDetailList = applyDetailAllList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList());
            }
            if(CollectionUtils.isEmpty(memberApplyDetailList)){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "保单中未存在明细记录");
            }
            if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())&&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId())
                    && j.getStartTime().getTime() <= DateUtil.getMontageDate(applyChange.getApplyStartTime(),1).getTime()
@@ -1536,16 +1542,8 @@
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】存在保障中的保单信息,无法进行加保");
            };
            List<ApplyDetail> optApplyDetailList = applyDetailAllList.stream()
                    .filter(j->Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId())
            ).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(optApplyDetailList)){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "保单中未存在明细记录");
            }
            ApplyDetail applyDetail = optApplyDetailList.get(Constants.ZERO);
            applyChagneDetail.setPrice(applyDetail.getPrice());
            applyChagneDetail.setCreateDate(new Date());
            applyChagneDetail.setCreator(loginUserInfo.getId());
@@ -1578,18 +1576,6 @@
                }
            };
            //查询员工是在主单下 是否存在生效中的数据
            if(!Objects.isNull(applyChagneDetail.getMemberId())){
                if (applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>().lambda()
                        .eq(ApplyDetail::getApplyId, applyChange.getApplyId())
                        .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId())
                        .le(ApplyDetail::getStartTime, "now()")
                        .ge(ApplyDetail::getEndTime, "now()")
                ) > Constants.ZERO) {
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】存在保障中的保单信息,无法进行加保");
                }
            }
            //验证派遣单位信息 与工种信息 是否存在
            if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){
                if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) {
@@ -1608,7 +1594,24 @@
            }else{
                applyChagneDetail.setFee(detailFee);
            }
            applyChagneDetailJoinMapper.insert(applyChagneDetail);
            applyChagneDetail.setId(null);
            applyChagneDetailList.add(applyChagneDetail);
        }
        if(CollectionUtils.isNotEmpty(applyChagneDetailList)){
            applyChagneDetailJoinMapper.insert(applyChagneDetailList);
        }
        if(CollectionUtils.isNotEmpty(updMemberList)){
            Thread t1=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        memberMapper.insertOrUpdate(updMemberList);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
            t1.start();
        }
    }