jiangping
2025-05-29 2b0a139f88adbbb67bc6feed69dc1ee9ff158cb9
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -67,6 +67,8 @@
    @Autowired
    private SettleClaimsMapper settleClaimsMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private SettleClaimsExtMapper settleClaimsExtMapper;
    @Autowired
@@ -396,6 +398,7 @@
        }
        if(!Constants.equalsObject(settleClaims.getStatus(),Constants.ZERO)
                &&(  Objects.isNull(settleClaims.getExtData().getBxName())
                || Objects.isNull(settleClaims.getExtData().getReportDate())
                || Objects.isNull(settleClaims.getExtData().getBxCode())
                || Objects.isNull(settleClaims.getExtData().getBxEnddate())
                || Objects.isNull(settleClaims.getExtData().getBxOrg())
@@ -567,6 +570,7 @@
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在提报中的报案数据!");
        }
        settleClaims.setCreateDate(new Date());
        settleClaims.setIsdeleted(Constants.ZERO);
        settleClaims.setCompanyId(loginUserInfo.getCompanyId());
@@ -850,7 +854,24 @@
            settleClaims.setRefuseSettleClaimsLog(settleClaimsLog);
        }
        if((Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
                || Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey()))
        && Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)){
            SettleClaimsLog settleClaimsLog = settleClaimsLogJoinMapper.selectJoinOne(SettleClaimsLog.class,
                    new MPJLambdaWrapper<SettleClaimsLog>()
                            .selectAll(SettleClaimsLog.class)
                            .selectAs(SystemUser::getRealname,SettleClaimsLog::getCreatorName)
                            .selectAs(SystemUser::getType,SettleClaimsLog::getCreatorType)
                            .selectAs(Company::getName,SettleClaimsLog::getCompanyName)
                            .leftJoin(SystemUser.class,SystemUser::getId,SettleClaimsLog::getCreator)
                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                            .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
                            .in(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE.getKey())
                            .orderByDesc(SettleClaimsLog::getCreateDate)
                            .last(" limit 1")
            );
            settleClaims.setSupplementSettleClaimsLog(settleClaimsLog);
        }
@@ -1183,6 +1204,7 @@
                .selectAs(Member::getIdcardNo,SettleClaims::getMemberIdcardNo)
                .selectAs(Worktype::getName,SettleClaims::getWorktypeName)
                .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime)
                .selectAs(InsuranceApply::getCode,SettleClaims::getApplyCode)
                .selectAs(DispatchUnit::getName,SettleClaims::getDuName)
                .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime)
                .selectAs(InsuranceApply::getEndTime,SettleClaims::getBaoxianEndTime)
@@ -1201,7 +1223,8 @@
            }else {
                queryWrapper. in(Company::getId, user.getCompanyIdList());
            }
        } else  {
            queryWrapper.ne(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
        }{
            //企业用户只看自己的数据
            pageWrap.getModel().setCompanyId(user.getCompanyId());
        }
@@ -1257,6 +1280,7 @@
                .selectAs(SettleClaimsExt::getBxStartdate,SettleClaims::getBaoxianStartTime)
                .selectAs(SettleClaimsExt::getBxEnddate,SettleClaims::getBaoxianEndTime)
                .selectAs(SettleClaimsExt::getBxCode,SettleClaims::getApplyCode)
                .selectAs(SettleClaimsExt::getReportDate,SettleClaims::getReportDate)
                .innerJoin(SettleClaimsExt.class,SettleClaimsExt::getSettileClaimsId,SettleClaims::getId);
        queryWrapper.eq(SettleClaims::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(SettleClaims::getOrigin,Constants.ONE);
@@ -1273,7 +1297,9 @@
        queryWrapper.orderByDesc(SettleClaims::getCreateDate);
        PageData<SettleClaims> pageData = PageData.from(settleClaimsJoinMapper.selectJoinPage(page,SettleClaims.class, queryWrapper));
        for (SettleClaims settleClaims:pageData.getRecords()) {
            settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
            if(Objects.nonNull(settleClaims.getStatus())){
                settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
            }
            settleClaims.setPcAccount(settleClaims.getHpAccount().add(settleClaims.getHpOtherAccount()));
        }
        return pageData;
@@ -1323,10 +1349,25 @@
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
        }
        Member member =memberMapper.selectById(settleClaimsDTO.getMemberId());
        if(member == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,出险人信息不正确!");
        }
        SettleClaims settleClaims = new SettleClaims();
        BeanUtils.copyProperties(settleClaimsDTO,settleClaims);
        settleClaims.setReportNumStatus(Constants.ZERO);
        settleClaims.setCompanyId(loginUserInfo.getCompanyId());
        settleClaims.setOrigin(Constants.ZERO);
        settleClaims.setMemberName(member.getName());
        settleClaims.setCreateDate(new Date());
        if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)&&StringUtils.isBlank(settleClaims.getCode())){
            Long nextCode = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda().ne(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
                    .eq(SettleClaims::getOrigin,Constants.ZERO) .like(SettleClaims::getCreateDate,DateUtil.getDate(new Date(),"yyyy-MM-dd"))
            )+1;
            settleClaims.setCode("YYBLP-"+DateUtil.getDate(new Date(),"yyyyMMdd")+
                    (StringUtils.leftPad(nextCode.toString(),2,"0"))
            );
        }
        if(Objects.nonNull(settleClaims.getId())){
            settleClaims.setEditDate(new Date());
            settleClaims.setEditor(loginUserInfo.getId());
@@ -1338,9 +1379,7 @@
            }
            settleClaimsMapper.updateById(settleClaims);
        }else{
            settleClaims.setCreateDate(new Date());
            settleClaims.setIsdeleted(Constants.ZERO);
            settleClaims.setCompanyId(loginUserInfo.getCompanyId());
            settleClaims.setStatus(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)?
                    Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey():Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
            if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)){
@@ -1358,7 +1397,21 @@
                this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.PLATFORM_REGISTER,null,Constants.SettleClaimsStatus.CONFIRM_INFORMATION);
            }
        }
        if( Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey()) ||
                Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())){
            //-如果是待立案或者已立案待审核,发待办通知-------------
            Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,settleClaims.getId()));
            Notices notices = new Notices(noticeObjectType,Constants.ZERO,settleClaims.getId(),getNoticeConttent(settleClaims),
                    settleClaims.getCompanyId(),
                    Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey())?Constants.NoticeType.ZERO:Constants.NoticeType.TWO);
            noticesMapper.insert(notices);
        }
        return settleClaims.getId();
    }
    private String getNoticeConttent(SettleClaims settleClaims) {
        return  "报案号:"+StringUtils.defaultString(settleClaims.getCode(),"")+"  出险人:"+StringUtils.defaultString(settleClaims.getMemberName(),"");
    }
    public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){
@@ -1369,7 +1422,7 @@
        }
        Date happenTime = DateUtil.StringToDate(settleClaims.getHappenTime());
        if(happenTime.getTime() < insuranceApply.getStartTime().getTime() || happenTime.getTime() > insuranceApply.getEndTime().getTime()){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"事故发生事件未在保单生效范围内");
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"事故发生时间未在保单生效范围内");
        }
        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
        if(Objects.isNull(solutions)){
@@ -1952,8 +2005,11 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仅可修改一次报案号");
        }
        if(!(
                (Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())&&Constants.equalsInteger(model.getReportNumStatus(),Constants.ONE))
                ||(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())
                (Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
                        &&Constants.equalsInteger(model.getReportNumStatus(),Constants.ONE))
                ||((Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())
                        || Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
                        || Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey()))
                        &&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO))
//                        ||(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DEAL.getKey())
//                        &&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO))
@@ -2090,11 +2146,22 @@
            //受理商议审批
            settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId())
                    .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.REJECT_DEAL.getKey()));
                    .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey()));
            //存储日志
            this.saveSettleClaimsLog(settleClaims,
                    Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS,
                    dto.getDescribe(),Constants.SettleClaimsStatus.REJECT_DEAL);
                    dto.getDescribe(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT);
        }
        if( Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) ||
                Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey())){
            //-如果是待立案或者已立案待审核,发待办通知-------------
            Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,settleClaims.getId()));
            Notices notices = new Notices(noticeObjectType,Constants.ZERO,settleClaims.getId(),getNoticeConttent(settleClaims),
                    settleClaims.getCompanyId(),
                    Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey())?Constants.NoticeType.ZERO:Constants.NoticeType.TWO);
            noticesMapper.insert(notices);
        }
    }