k94314517
2025-05-14 4ddff036191a2ec6ee6f85a337c97d6f7d9471d6
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.ResponseStatus;
@@ -263,6 +264,9 @@
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.eq(UnionChange::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getSolutionsName() != null) {
            queryWrapper.eq(Solutions::getName, pageWrap.getModel().getSolutionsName());
        }
        if (pageWrap.getModel().getQueryStartTime() != null) {
            queryWrapper.ge(UnionChange::getCreateDate, pageWrap.getModel().getQueryStartTime() +" 00:00:00" );
@@ -351,10 +355,10 @@
        if(!(Constants.equalsInteger(user.getType(),Constants.ZERO) || Constants.equalsInteger(user.getType(),Constants.TWO))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户平台用户,无法进行该操作");
        }
        if(saveUnionChangeDTO.getBusinessType().equals(Constants.ZERO)||Objects.isNull(saveUnionChangeDTO.getApplyDate())){
            //2024年5月9日14:59:24  修改 默认入当前天
            saveUnionChangeDTO.setApplyDate(DateUtil.getMontageDate(new Date(),1));
        }
//        if(saveUnionChangeDTO.getBusinessType().equals(Constants.ZERO)||Objects.isNull(saveUnionChangeDTO.getApplyDate())){
//            //2024年5月9日14:59:24  修改 默认入当前天
//            saveUnionChangeDTO.setApplyDate(DateUtil.getMontageDate(new Date(),1));
//        }
        if(Objects.isNull(saveUnionChangeDTO)
                || Objects.isNull(saveUnionChangeDTO.getApplyIds())
                || Objects.isNull(saveUnionChangeDTO.getApplyDate())
@@ -374,33 +378,37 @@
        }
        if(saveUnionChangeDTO.getBusinessType().equals(Constants.ZERO)){
//            saveUnionChangeDTO.setApplyDate(unionApply.getStartTime());
            saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
            saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
            //根据申请日期 处理加减保的 实际生效日期
            if(Objects.nonNull(solutions.getAddValidDays())){
                saveUnionChangeDTO.setAddValidDate(
                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getAddValidDays())
                );
            if(unionApply.getStartTime().getTime()>System.currentTimeMillis()){
                saveUnionChangeDTO.setAddValidDate(unionApply.getStartTime());
                saveUnionChangeDTO.setDelValidDate(unionApply.getStartTime());
            }else{
                saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
            }
            if(Objects.nonNull(solutions.getDelValidDays())){
                saveUnionChangeDTO.setDelValidDate(
                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getDelValidDays())
                );
            }else{
                saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
            }
            //判断批单日期 合并单的批单生效期在为 保单起期的次日 到保单止期
            //获取开始日期次日
            if(saveUnionChangeDTO.getAddValidDate().getTime()<unionApply.getStartTime().getTime()
                    || saveUnionChangeDTO.getAddValidDate().getTime()> unionApply.getEndTime().getTime()){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单加保生效期错误");
            }
            if(saveUnionChangeDTO.getDelValidDate().getTime()<unionApply.getStartTime().getTime()
                    || saveUnionChangeDTO.getDelValidDate().getTime()> unionApply.getEndTime().getTime()){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单减保生效期错误");
                //根据申请日期 处理加减保的 实际生效日期
                if(Objects.nonNull(solutions.getAddValidDays())){
                    saveUnionChangeDTO.setAddValidDate(
                            DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getAddValidDays())
                    );
                }else{
                    saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
                }
                if(Objects.nonNull(solutions.getDelValidDays())){
                    saveUnionChangeDTO.setDelValidDate(
                            DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getDelValidDays())
                    );
                }else{
                    saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
                }
                //判断批单日期 合并单的批单生效期在为 保单起期的次日 到保单止期
                //获取开始日期次日
                if(saveUnionChangeDTO.getAddValidDate().getTime()<unionApply.getStartTime().getTime()
                        || saveUnionChangeDTO.getAddValidDate().getTime()> unionApply.getEndTime().getTime()){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单加保生效期错误");
                }
                if(saveUnionChangeDTO.getDelValidDate().getTime()<unionApply.getStartTime().getTime()
                        || saveUnionChangeDTO.getDelValidDate().getTime()> unionApply.getEndTime().getTime()){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单减保生效期错误");
                }
            }
        }else{
//            if(saveUnionChangeDTO.getApplyDate().getTime()<DateUtil.afterDateByType(unionApply.getStartTime(),0,1).getTime()
@@ -626,6 +634,7 @@
        String companyName = "";
        String creditCode = "";
        String email = "";
        String signId = "";
        if(Constants.equalsInteger(user.getType(),Constants.TWO)){
            if(!unionChange.getShopId().equals(user.getCompanyId())){
                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"对不起非您的合并单,您无法进行操作!");
@@ -637,6 +646,7 @@
            companyName = company.getName();
            creditCode = company.getCode();
            email = company.getEmail();
            signId = company.getSignId();
        }else{
                companyName = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PLAT_COMPANY_NAME).getCode();
                creditCode = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PLAT_CREDIT_CODE).getCode();
@@ -655,17 +665,17 @@
        String fileUrl = null;
//        if(Constants.equalsObject(unionChange.getType(), Constants.ONE)){
//            fileUrl = ExcelExporter.build(UnionChange.class).exportUnionChangeOtherUnitExcelToPdf(unionChange,"换厂申请表");
//        }else{
//            fileUrl = ExcelExporter.build(UnionChange.class).exportUnionChangeExcelToPdf(unionChange,"加减保申请表");
//        }
        if(Constants.equalsObject(unionChange.getType(), Constants.ONE)){
            fileUrl = ExcelExporter.build(UnionChange.class).exportUnionChangeOtherUnitExcelToPdf(unionChange,"换厂申请表");
        }else{
            fileUrl = ExcelExporter.build(UnionChange.class).exportUnionChangeExcelToPdf(unionChange,"加减保申请表");
        }
        String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode();
        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",unionChange.getId().toString());
//        String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"合并单(加减保/换厂)申请签署",company.getSignId(),notifyUrl);
        String applyNo = signService.applySignLocalFileByParam(companyName,companyName,fileUrl,creditCode,email,"合并单(加减保/换厂)申请签署",null,notifyUrl,new Float(0.7));
        //临时使用
        fileUrl =    "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";
        String applyNo = signService.applySignWidthQifengSet(companyName,fileUrl,companyName,creditCode,email,"人员名单签章",null,notifyUrl,new Float(0.7));
//        fileUrl =    "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";
//        String applyNo = signService.applySignWidthQifengSet(companyName,fileUrl,companyName,creditCode,email,"人员名单签章",null,notifyUrl,new Float(0.7));
        if(StringUtils.isBlank(applyNo) ){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!");
        }
@@ -941,6 +951,7 @@
                .eq(InsuranceApply::getId, applyChange.getApplyId())
        );
        applyChange.setFee(bigDecimalVO.getTotalFee());
    }
@@ -953,7 +964,7 @@
            , BigDecimalVO bigDecimalVO,List<ApplyChagneDetail> reduceList,Integer i){
        //查询人员信息是否存在相同的方案下是否存在 冲突数据
        InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(),
                detail.getIdcardNo(),detail.getMemberName(),DateUtil.getMontageDate(applyChange.getApplyStartTime(),1),DateUtil.getMontageDate(detail.getEndTime(),2),
                detail.getMemberId(),detail.getIdcardNo(),detail.getMemberName(),DateUtil.getMontageDate(applyChange.getApplyStartTime(),1),DateUtil.getMontageDate(detail.getEndTime(),2),
                applyDetailJoinMapper);
        //加保
@@ -1064,17 +1075,17 @@
        BigDecimal reduceFee = BigDecimal.ZERO;
        //如果批单日期 大于 员工保单的开始日期
        if(applyChange.getDelValidTime().getTime() > oldModel.getStartTime().getTime()){
            if(reduceDate.getTime()>oldModel.getStartTime().getTime()){
                reduceDate = DateUtil.getMontageDate(oldModel.getStartTime(), 3);
            }else{
                reduceDate = DateUtil.getMontageDate(applyChange.getDelValidTime(), 3);
            }
        if(reduceDate.getTime() > oldModel.getStartTime().getTime()){
            reduceDate = DateUtil.getMontageDate(applyChange.getDelValidTime(), 3);
            //减保记录操作后的总费用
            reduceFee = Constants.reduceFee(
                    solutions,fee,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),reduceDate) ;
        }else if(reduceDate.getTime()<oldModel.getStartTime().getTime()){
            reduceDate = DateUtil.getMontageDate(oldModel.getStartTime(), 3);
            //减保记录操作后的总费用
            reduceFee = Constants.reduceFee(
                    solutions,fee,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),reduceDate) ;
        }
        BigDecimal pullFee = BigDecimal.ZERO;
        if (oldModel.getStartTime().getTime() < System.currentTimeMillis()) {