k94314517
2025-05-19 cdd6551b190b981b807a3b95e9635c559ccc769d
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -35,6 +35,8 @@
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -513,7 +515,7 @@
        if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请状态已流转,当前不支持该操作~");
        }
        Company company = user.getCompany();
        Company company = user.getShowCompany();
        if(debugModel){
            company = companyMapper.selectById(model.getCompanyId());
        }
@@ -1104,6 +1106,7 @@
    private void startSendEmail(Multifile f, String companyName, String solutionsName, String solutionEmail) {
        if(StringUtils.isBlank(solutionEmail) || f==null|| StringUtils.isBlank(f.getFileurl())){
            return;
@@ -1116,6 +1119,25 @@
        if(file!=null && file.isFile()){
            Map<String,Object> files = new HashMap<>();
            files.put("name",f.getName());
            files.put("file",file);
            email.setFileList(new ArrayList<>());
            email.getFileList().add(files);
            smsEmailService.sendEmail(email);
            file.delete();//发送后删除临时文件
        }
    }
    @Override
    public void testSendEmail(){
        SmsEmail email = new SmsEmail();
        email.setTitle("测试邮件");
        email.setEmail("94314517@qq.com");
        email.setContent("来自企业【测试企业】关于保险方案【测试方案】的测试邮件");
        File file = Constants.getFileByNetFile("https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20250116/600faf2f-5ba2-44e2-9a96-c99052dc013d.pdf","1111.pdf");
        if(file!=null && file.isFile()){
            Map<String,Object> files = new HashMap<>();
            files.put("name","测试文件");
            files.put("file",file);
            email.setFileList(new ArrayList<>());
            email.getFileList().add(files);
@@ -2270,8 +2292,6 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer updateData(InsuranceApply insuranceApply) {
@@ -2357,8 +2377,13 @@
    private static Logger logger = LoggerFactory.getLogger(InsuranceApplyServiceImpl.class);
    public void dealApplyDetailData(InsuranceApply insuranceApply,Solutions solutions,List<ApplyDetail> applyDetailList,
                                    LoginUserInfo loginUserInfo,CountCyclePriceVO  countCyclePriceVO,Boolean checkNewData){
        Long start = System.currentTimeMillis();
        logger.error("处理保单数据开始时间:=========================>"+start);
        //2024年11月6日15:01:34  加入  方案配置了有派遣单位 才会去验证派遣单位数据
        List<DuSolution>  duSolutionList = new ArrayList<>();
        List<DuWorktype> duWorktypeList = new ArrayList<>();
@@ -2441,6 +2466,8 @@
            }
            memberList.addAll(addMemberList);
            for (int i = 0; i < applyDetailList.size(); i++) {
                Long singlStart = System.currentTimeMillis();
                logger.error("处理保单单条数据开始时间:=========================>"+singlStart);
                ApplyDetail applyDetail = applyDetailList.get(i);
                if(Objects.isNull(applyDetail)
                        ||StringUtils.isBlank(applyDetail.getIdcardNo())
@@ -2481,6 +2508,7 @@
                        member.setDuId(applyDetail.getDuId());
                        member.setWorktypeId(applyDetail.getWorktypeId());
                        memberMapper.updateById(member);
                        applyDetail.setMemberName(member.getName());
                    }
                }else{
                    member = memberMapper.selectById(applyDetail.getMemberId());
@@ -2491,6 +2519,7 @@
                    member.setDuId(applyDetail.getDuId());
                    member.setWorktypeId(applyDetail.getWorktypeId());
                    memberMapper.updateById(member);
                    applyDetail.setMemberName(member.getName());
                }
                applyDetail.setMemberId(member.getId());
                applyDetail.setIdcardNo(member.getIdcardNo());
@@ -2515,11 +2544,11 @@
                        .collect(Collectors.toList()).size()<=Constants.ZERO){
                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"【"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"】员工工种信息未查询到!");
                }
//                if(duWorktypeList.stream().filter(d->d.getWorkTypeId().equals(applyDetail.getWorktypeId()))
//                        .collect(Collectors.toList()).size()<=Constants.ZERO){
//                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"【"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"】员工工种信息未查询到!");
//                }
                Long singlEnd = System.currentTimeMillis();
                logger.error("处理保单单条数据结束时间:=========================>"+singlEnd+";耗时:====》"+(singlStart-singlEnd));
            }
            Long end = System.currentTimeMillis();
            logger.error("处理单数据结束时间:=========================>"+end +";耗时:====》"+(end-start));
            applyDetailJoinMapper.insertBatchSomeColumn(applyDetailList);
        }
    }
@@ -2572,7 +2601,7 @@
        };
    }
    public static void checkStaticMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,
    public static void checkStaticMemberSolution(Integer solutionId,Integer memberId,String memberIdCard,String memberName,Date startTime,
                                                 Date endTime,ApplyDetailJoinMapper applyDetailJoinMapper){
        List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
        try {
@@ -2584,7 +2613,7 @@
                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                            .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
                            .eq(ApplyDetail::getIdcardNo,idCode)
                            .eq(ApplyDetail::getIdcardNo,memberIdCard)
                            .eq(Solutions::getBaseId,solutionId)
                            .eq(ApplyDetail::getIsdeleted,Constants.ZERO)
                            .notIn(InsuranceApply::getStatus
@@ -2602,6 +2631,7 @@
        }
        if(applyDetailList.size() >Constants.ZERO){
            String companyName = applyDetailList.get(Constants.ZERO).getCompanyName();
            String idCode = applyDetailList.get(Constants.ZERO).getIdcardNo();
            if(StringUtils.isNotBlank(companyName)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该员工【"+memberName+" "+idCode+"】已在【"+companyName+"】存在保险,请联系客服确认");
            }else{
@@ -3022,8 +3052,8 @@
                .selectAs(Solutions::getType,InsuranceApply::getSolutionType)
                .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
                .selectAs(Solutions::getHasDispatchUnit,InsuranceApply::getHasDispatchUnit)
                .selectAs(Solutions::getSignType,InsuranceApply::getSignType)
                .selectAs(Company::getName,InsuranceApply::getCompanyName)
                .selectAs(Solutions::getCorrectWarnTime,InsuranceApply::getCorrectWarnTime)
                .select("( select ifnull(sum(ad.FEE),0) from apply_chagne_detail ad left join  apply_change a on a.id = ad.APPLY_CHANGE_ID  where t.id = a.APPLY_ID  and a.status = 2  )",InsuranceApply::getChangeMoney)
                .select(" ( select max(ac.APPLY_START_TIME) from apply_change ac  where ac.apply_id = t.id and ac.status = 2 ) as lastChangeDate")
                .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad  where ad.apply_id = t.id ) as insureNum")
@@ -3034,16 +3064,20 @@
                .leftJoin(Company.class,Company::getId,Solutions::getShopId)
                .eq(InsuranceApply::getId,id)
                .last("limit 1");
        InsuranceApply insuranceApply = insuranceApplyJoinMapper.selectJoinOne(InsuranceApply.class,wrapper);
        if(Objects.isNull(insuranceApply)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        this.dealDataDetail(insuranceApply);
        return insuranceApply;
    }
    public void dealDataDetail(InsuranceApply insuranceApply){
        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
        if(Objects.isNull(solutions)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到方案信息");
        }
        insuranceApply.setCorrectWarnTime(solutions.getCorrectWarnTime());
        if(solutions.getDataType().equals(Constants.ONE)){
            Solutions newVersionSolution = solutionsMapper.selectOne(new QueryWrapper<Solutions>().lambda().eq(Solutions::getBaseId,solutions.getBaseId()).eq(Solutions::getDataType,Constants.TWO).last("limit 1"));
            if(Objects.isNull(newVersionSolution)){
@@ -3059,10 +3093,8 @@
        initApplyStatus(insuranceApply);
        //查询附件数据
        initImgData(insuranceApply);
        insuranceApply.setChangeMoney(Constants.getTwoPoint(insuranceApply.getChangeMoney()));
        insuranceApply.setFee(Constants.getTwoPoint(insuranceApply.getFee()));
        //查询操作记录
        List<ApplyLog> applyLogList = applyLogJoinMapper.selectJoinList(ApplyLog.class,
                new MPJLambdaWrapper<ApplyLog>()
@@ -3077,7 +3109,6 @@
                        .orderByAsc(ApplyLog::getCreateDate)
        );
        insuranceApply.setApplyLogList(applyLogList);
        return insuranceApply;
    }
    private void setServiceDays(InsuranceApply insuranceApply) {
@@ -3472,7 +3503,7 @@
        if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WTB_UPLOAD.getKey())){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请状态已流转,当前不支持该操作~");
        }
        Company company = user.getCompany();
        Company company = user.getShowCompany();
        if(debugModel){
            company = companyMapper.selectById(model.getCompanyId());
        }
@@ -3557,7 +3588,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该申请状态已流转,当前不支持签章操作!");
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Company company = user.getCompany();
        Company company = user.getShowCompany();
        if(debugModel){
            company = companyMapper.selectById(model.getCompanyId());
        }
@@ -3571,11 +3602,11 @@
        if(solutions.getType().equals(Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非委托保方案保单,无法进行该操作!");
        }
        String fileUrl = "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";//ExcelExporter.build(InsuranceApply.class).exportApplyExcelToPdf(model,"人员名单");
        String fileUrl = ExcelExporter.build(InsuranceApply.class).exportApplyExcelToPdf(model,"人员名单");
        String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode();
        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString());
        //String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保名单签章",company.getSignId(),notifyUrl);
        String applyNo = signService.applySign(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),model.getSignKeyword(),company.getSignId(),notifyUrl);
        String applyNo = signService.applySignLocalFileByParam(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保名单签章",company.getSignId(),notifyUrl,new Float(0.7));
//        String applyNo = signService.applySign(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),model.getSignKeyword(),company.getSignId(),notifyUrl);
        if(StringUtils.isBlank(applyNo) ){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!");
        }
@@ -3638,7 +3669,7 @@
        if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey())){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请状态已流转,当前不支持该操作~");
        }
        Company company = user.getCompany();
        Company company = user.getShowCompany();
        if(debugModel){
            company = companyMapper.selectById(model.getCompanyId());
        }