jiangping
2024-06-25 c0367b08c77c92377b2b94570019570dc3513507
Merge remote-tracking branch 'origin/1.0.1' into 1.0.1
已修改5个文件
198 ■■■■ 文件已修改
server/service/src/main/java/com/doumee/core/utils/Constants.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -760,7 +760,10 @@
    }
    public static void main(String[] args) {
        System.out.println(Constants.getSexByIdCard("41052119910310001X"));
        System.out.println(IdcardUtil.isValidCard("342623199201150101"));
        System.out.println(IdcardUtil.isValidCard("342623199201150102"));
        System.out.println(IdcardUtil.isValidCard("342623199201150103"));
        System.out.println(IdcardUtil.isValidCard("342623199201150104"));
//        System.out.println(IdcardUtil.isValidCard("340621199310134818"));
//        System.out.println(IdcardUtil.isValidCard("341621199310134818"));
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -631,6 +631,7 @@
                    .set(ApplyDetail::getEditor, update.getEditor())
                    .set(ApplyDetail::getEditDate, update.getEditDate())
                    .eq(ApplyDetail::getId, oldModel.getId());
            BigDecimal reduceMoney = BigDecimal.ZERO;
            if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
                    && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){
@@ -639,8 +640,9 @@
                    updateWrapper.lambda().set(ApplyDetail::getFee,updateFee)
                            .set(ApplyDetail::getChangeStatus,Constants.TWO);
                }else{
                    reduceMoney = solutions.getPrice().multiply(new BigDecimal(-1));
                    //标记数据已被替换
                    updateWrapper.lambda().set(ApplyDetail::getReduceMoney,solutions.getPrice().multiply(new BigDecimal(-1)))
                    updateWrapper.lambda().set(ApplyDetail::getReduceMoney,reduceMoney)
                            .set(ApplyDetail::getChangeStatus,Constants.ONE);
                }
                detail.setApplyDetailId(oldModel.getId());
@@ -648,7 +650,7 @@
            applyDetailJoinMapper.update(null, updateWrapper);
            totalFee = totalFee.add(updateFee).subtract(oldModel.getFee());
            totalFee = totalFee.add(updateFee).subtract(oldModel.getFee()).add(reduceMoney);
            currentFee = currentFee.add(updateCurrentFee);
            //修改 员工投保明细记录 历史数据
@@ -723,6 +725,7 @@
            add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2));
            add.setFee(Constants.addFee(solutions,solutions.getPrice(),insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),update.getApplyStartTime(),insuranceApply.getEndTime()));
            add.setChangeStatus(Constants.ZERO);
            if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
                    && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && i < reduceList.size()){
                add.setReduceId(reduceList.get(i).getId());
@@ -736,9 +739,12 @@
                add.setCurrentFee(BigDecimal.ZERO);
            }
            applyDetailJoinMapper.insert(add);
            //如果不是替换业务的加保数据 则添加实际产生费用
            detail.setFee(Objects.isNull(add.getReduceId())?add.getFee():BigDecimal.ZERO);
            totalFee = totalFee.add(add.getFee());
            currentFee = currentFee.add(add.getCurrentFee());
            if(Objects.isNull(add.getReduceId())){
                currentFee = currentFee.add(add.getCurrentFee());
            }
            MemberInsurance memberInsurance = new MemberInsurance(detail, update, update.getEditor(), add.getId(),solutions.getId());
            memberInsurance.setStartTime(add.getStartTime());
            memberInsurance.setEndTime(add.getEndTime());
@@ -758,158 +764,6 @@
            member.setEndTime(detail.getEndTime());
            memberMapper.updateById(member);
        }
        /*for (ApplyChagneDetail detail : detailList) {
            Member member = memberMapper.selectById(detail.getMemberId());
            if(Objects.isNull(member)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到员工数据");
            }
            if (Constants.equalsInteger(detail.getType(), Constants.ZERO)) {
                //查询加保人员是否存在 冲突的 保单明细数据
                if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
                        .lambda()
                        .eq(ApplyDetail::getApplyId,update.getApplyId())
                        .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo())
                        .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(update.getApplyStartTime(),1))
                        .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(detail.getEndTime(),2))
                )>Constants.ZERO){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,加保人员【" + detail.getMemberName() + "】存在日期冲突的数据");
                }
                //加保
                ApplyDetail add = new ApplyDetail();
                add.setApplyId(update.getApplyId());
                add.setValidCode(update.getValidCode());
                add.setFee(detail.getFee());
                add.setIsdeleted(Constants.ZERO);
                add.setCreator(update.getEditor());
                add.setCreateDate(update.getEditDate());
                add.setMemberId(detail.getMemberId());
                add.setMemberName(detail.getMemberName());
                add.setWorktypeId(detail.getWorktypeId());
                add.setIsdeleted(Constants.ZERO);
                add.setIdcardNo(detail.getIdcardNo());
                add.setSex(Constants.getSexByIdCard(detail.getIdcardNo()));
                add.setMemberName(detail.getMemberName());
                add.setRemark(detail.getRemark());
                add.setDuId(detail.getDuId());
                add.setStartTime(DateUtil.getMontageDate(update.getApplyStartTime(), 1));
                add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2));
                add.setFee(Constants.addFee(solutions,solutions.getPrice(),insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),update.getApplyStartTime(),insuranceApply.getEndTime()));
                if(new Date().compareTo(DateUtil.getMontageDate(detail.getStartTime(), 2))>=0){
                    //2024年5月8日17:37:23 修改 计算产生费用
                    add.setCurrentFee(
                            Constants.produceFee(solutions,add.getFee(),add.getStartTime(),add.getEndTime(),add.getStartTime())
                    );
                }else{
                    add.setCurrentFee(BigDecimal.ZERO);
                }
                applyDetailJoinMapper.insert(add);
                totalFee = totalFee.add(add.getFee());
                currentFee = currentFee.add(add.getCurrentFee());
                MemberInsurance memberInsurance = new MemberInsurance(detail, update, update.getEditor(), add.getId(),solutions.getId());
                memberInsurance.setStartTime(add.getStartTime());
                memberInsurance.setEndTime(add.getEndTime());
                memberInsurance.setRelationType(Constants.ONE);
                memberInsuranceList.add(memberInsurance);
                applyChangeDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
                        .set(ApplyChagneDetail::getFee,add.getFee())
                        .set(ApplyChagneDetail::getStartTime,DateUtil.getMontageDate(update.getApplyStartTime(), 1))
                        .eq(ApplyChagneDetail::getId,detail.getId())
                );
            } else {
                    //减保操作
                    //查询员工是在主单下 是否存在生效中的数据
                    ApplyDetail oldModel = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda()
                            .eq(ApplyDetail::getApplyId, update.getApplyId())
                            .eq(ApplyDetail::getMemberId, detail.getMemberId())
                            .orderByDesc(ApplyDetail::getCreateDate)
                            .last("limit 1"));
                    if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) {
                        throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!");
                    }
                    if(!(oldModel.getStartTime().getTime()<update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){
                        throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!");
                    }
                    Date delValidTime = oldModel.getStartTime().compareTo(update.getDelValidTime())!=0?
                            DateUtil.getMontageDate(update.getDelValidTime(), 3):
                            DateUtil.getMontageDate(update.getDelValidTime(), 2);
                    BigDecimal sumFee = Objects.isNull(insuranceApply.getServerCost())?
                            solutions.getPrice():
                            solutions.getPrice().add(insuranceApply.getServerCost());
                    // 减保后 总费用
                    BigDecimal updateFee =  Constants.reduceFee(
                            solutions,
                            sumFee
                            ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime
                    ) ;
                    //当审批时间 大于 申请的时间时 计算实际减少金额 因为已扣金额会大于 应扣金额
                    BigDecimal updateCurrentFee = BigDecimal.ZERO;
                    if (DateUtil.daysBetweenDates(DateUtil.getMontageDate(new Date(), 2),oldModel.getStartTime()) > 0) {
                        //// 2024年5月8日17:37:23 修改 计算产生费用
                        updateCurrentFee = Constants.produceFee(solutions,sumFee,insuranceApply.getStartTime(),insuranceApply.getEndTime(),
                                oldModel.getStartTime()
                        );
                    }
                    UpdateWrapper<ApplyDetail> updateWrapper = new UpdateWrapper<ApplyDetail>();
                    updateWrapper.lambda()
                            .setSql(" fee = " + updateFee)
                            .setSql(" current_fee = " + updateCurrentFee)
                            .set(ApplyDetail::getEndTime, delValidTime)
                            .set(ApplyDetail::getEditor, update.getEditor())
                            .set(ApplyDetail::getEditDate, update.getEditDate())
                            .eq(ApplyDetail::getId, oldModel.getId());
                    if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
                            && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){
                        if(delValidTime.getTime()<=oldModel.getStartTime().getTime()){
                            updateFee  = BigDecimal.ZERO;
                            updateWrapper.lambda().set(ApplyDetail::getFee,updateFee)
                                    .set(ApplyDetail::getChangeStatus,Constants.TWO);
                        }else{
                            //标记数据已被替换
                            updateWrapper.lambda().set(ApplyDetail::getReduceMoney,solutions.getPrice().multiply(new BigDecimal(-1)))
                                    .set(ApplyDetail::getChangeStatus,Constants.ONE);
                        }
                    }
                    applyDetailJoinMapper.update(null, updateWrapper);
                    totalFee = totalFee.add(updateFee).subtract(oldModel.getFee());
                    currentFee = currentFee.add(updateCurrentFee);
                    //修改 员工投保明细记录 历史数据
                    memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda()
                            .setSql(" fee = " + updateFee)
                            .set(MemberInsurance::getEndTime, delValidTime)
                            .eq(MemberInsurance::getRelationId, oldModel.getId())
                    );
                    //修改业务明细行数据实际批单日期
                    applyChangeDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
                            .set(ApplyChagneDetail::getFee,updateFee.subtract(oldModel.getFee()))
                            .set( ApplyChagneDetail::getEndTime, delValidTime)
                            .eq(ApplyChagneDetail::getId,detail.getId())
                    );
            }
            member.setApplyId(update.getApplyId());
            member.setDuId(detail.getDuId());
            member.setWorktypeId(detail.getWorktypeId());
            member.setStartTime(detail.getStartTime());
            member.setEndTime(detail.getEndTime());
            memberMapper.updateById(member);
        }*/
        if (memberInsuranceList != null && memberInsuranceList.size() > 0) {
            memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList);
@@ -1393,12 +1247,13 @@
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失");
            }
            //查询减保人员是否存在 冲突的 保单明细数据
            if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
                    .lambda()
                    .eq(ApplyDetail::getApplyId,applyChange.getApplyId())
                    .eq(ApplyDetail::getIdcardNo,applyChagneDetail.getIdcardNo())
//                    .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1))
                    .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1))
                    .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),3))
            )<=Constants.ZERO){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,减保人员【" + applyChagneDetail.getMemberName() + "】未查询到符合批单日期的数据");
@@ -1498,7 +1353,7 @@
            }
            //查询人员信息是否存在相同的方案下是否存在 冲突数据
            InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(),
                    applyChagneDetail.getMemberIdcardNo(),applyChagneDetail.getMemberName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(),
                    applyChagneDetail.getIdcardNo(),applyChagneDetail.getMemberName(),applyChange.getApplyStartTime(),insuranceApply.getEndTime(),
                    applyDetailJoinMapper);
            //查询加保人员是否存在 冲突的 保单明细数据
@@ -1550,7 +1405,7 @@
                    member.setName(applyChagneDetail.getMemberName());
                    member.setCompanyId(insuranceApply.getCompanyId());
                    member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo()));
                    if(!IdcardUtil.isValidCard(applyDetail.getIdcardNo())){
                    if(!IdcardUtil.isValidCard(applyChagneDetail.getIdcardNo())){
                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"加保员工信息身份证信息错误["+member.getName()+"]");
                    }
                    member.setIdcardNo(applyChagneDetail.getIdcardNo());
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -305,6 +305,7 @@
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(DispatchUnit::getDataType,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位名称】已存在");
        };
@@ -412,6 +413,7 @@
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(DispatchUnit::getDataType,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位名称】已存在");
        };
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -1764,6 +1764,11 @@
        updBean.setId(insuranceApply.getId());
        updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
        insuranceApplyMapper.updateById(updBean);
//        if(1==1){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
//        }
        //存储日志数据
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD;
        String info =applyLogType.getInfo();
@@ -2060,10 +2065,7 @@
                            .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)+"' " +
@@ -2093,10 +2095,7 @@
                            .eq(ApplyDetail::getIdcardNo,idCode)
                            .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)+"' " +
@@ -2605,7 +2604,8 @@
                .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
                .selectAs(Solutions::getType,InsuranceApply::getSolutionType)
                .selectAs(Company::getName,InsuranceApply::getCompanyName)
                .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id  and a.status in ( 5 , 27 )  where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum")
                .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad  where ad.apply_id = t.id ) as insureNum")
                .select(" isnull(( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id  and a.status in ( 5 , 27 )  where ad.apply_id = t.id and ad.END_TIME > now() ),0) as guaranteeNum")
                .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
                .eq(InsuranceApply::getId,model.getId())
@@ -2627,7 +2627,7 @@
        //查询明细
        List<ApplyDetail> detailList =applyDetailJoinMapper.selectJoinList(ApplyDetail.class,wrapper1);
        if(detailList!=null){
            insuranceApply.setInsureNum(detailList.size());
//            insuranceApply.setInsureNum(detailList.size());
            insuranceApply.setApplyDetailList(detailList);
        }
        insuranceApply.setRemark(model.getRemark());
server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java
@@ -114,7 +114,7 @@
        queryWrapper.selectAll(Notices.class);
        queryWrapper.selectAs(Company::getName,Notices::getCompanyName);
        queryWrapper.leftJoin(Company.class,Company::getId,Notices::getCompanyId);
        queryWrapper.eq(Notices::getType, Constants.NoticeType.SIX.getStatus());
        queryWrapper.ne(Notices::getType, Constants.NoticeType.SIX.getStatus());
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.eq(Notices::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }