jiangping
2025-05-20 c35d4cc65b01b0a3b88e88f25d485d38b1ef12bd
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -377,6 +377,66 @@
    @Override
    public Integer createSys(SettleClaims settleClaims) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        settleClaims.setOrigin(Constants.ONE);
        if(Objects.isNull(settleClaims)
                || Objects.isNull(settleClaims.getMemberName())
                || Objects.isNull(settleClaims.getSolutionName())
                || Objects.isNull(settleClaims.getDuId())
                || Objects.isNull(settleClaims.getWorktypeId())
                || Objects.isNull(settleClaims.getHappenTime())
                || Objects.isNull(settleClaims.getType())
                || Objects.isNull(settleClaims.getInHospital())
                || Objects.isNull(settleClaims.getMedicalInsurance())
                || Objects.isNull(settleClaims.getContent())
                || Objects.isNull(settleClaims.getInformantName())
                || Objects.isNull(settleClaims.getInformantPhone())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(!loginUserInfo.getType().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非企业员工无法进行该操作");
        }
        //查询是否存在已提报的数据  根据人员和保险方案进行过滤 是否存在进行中的数据
        if(settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
                .eq(SettleClaims::getSolutionId,settleClaims.getSolutionId())
                .eq(SettleClaims::getMemberId,loginUserInfo.getId())
                .in(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey(),
                        Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在提报中的报案数据!");
        }
        settleClaims.setCreateDate(new Date());
        settleClaims.setIsdeleted(Constants.ZERO);
        settleClaims.setCompanyId(loginUserInfo.getCompanyId());
        settleClaims.setStatus(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
        settleClaims.setCreator(loginUserInfo.getId());
        settleClaims.setCheckUserId(loginUserInfo.getId());
        settleClaimsMapper.insert(settleClaims);
        List<Multifile> reportVideo = settleClaims.getReportFileList();
        if(CollectionUtils.isNotEmpty(reportVideo)){
            for (int i = 0; i < reportVideo.size(); i++) {
                Multifile multifile = reportVideo.get(i);
                if(Objects.isNull(multifile.getFileurl())
                        || Objects.isNull(multifile.getType())
                        || StringUtils.isBlank(multifile.getName())
                ){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"附件内容异常");
                }
                multifile.setCreator(loginUserInfo.getId());
                multifile.setCreateDate(new Date());
                multifile.setIsdeleted(Constants.ZERO);
                multifile.setObjId(settleClaims.getId());
                multifile.setObjType(Constants.ONE);
                multifile.setSortnum(i+1);
                multifileJoinMapper.insert(multifile);
            }
        }
        return  settleClaims.getId();
    }
    @Override
    public Integer create(SettleClaims settleClaims) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Objects.isNull(settleClaims)
@@ -1001,6 +1061,7 @@
        }
        SettleClaims settleClaims = new SettleClaims();
        BeanUtils.copyProperties(settleClaimsDTO,settleClaims);
        settleClaims.setReportNumStatus(Constants.ZERO);
        if(Objects.nonNull(settleClaims.getId())){
            settleClaims.setEditDate(new Date());
            settleClaims.setEditor(loginUserInfo.getId());
@@ -1499,7 +1560,34 @@
    }
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void updCaseType(CaseTypeDTO dto){
        if(Objects.isNull(dto)
                || Objects.isNull(dto.getId())
                || Objects.isNull(dto.getCaseType())
                || !(dto.getCaseType()>=Constants.ONE&&dto.getCaseType()<=Constants.THREE)
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!loginUserInfo.getType().equals(Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非管理员无法进行该操作");
        }
        SettleClaims settleClaims  = settleClaimsJoinMapper.selectById(dto.getId());
        if(Objects.isNull(settleClaims)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
        }
        //存储日志
        this.saveSettleClaimsLog(settleClaims, Constants.SettleClaimsLogType.UPD_CASE_TYPE,Constants.SettleClaimsLogType.UPD_CASE_TYPE.getInfo());
        settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime())
                .set(SettleClaims::getEditor,loginUserInfo.getId())
                .set(SettleClaims::getCaseType,dto.getCaseType()));
    }
@@ -1556,16 +1644,25 @@
        if(!user.getType().equals(Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非管理员无法进行该操作");
        }
        //查询是否有报案号更改记录
        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
        && settleClaimsLogMapper.selectCount(new QueryWrapper<SettleClaimsLog>().lambda()
                        .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_ADDCODE.getKey())
                .eq(SettleClaimsLog::getSettleClainmsId,param.getId()))>=Constants.ONE){
        if(Constants.equalsInteger(model.getReportNumStatus(),Constants.TWO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仅可修改一次报案号");
        }
        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())&&StringUtils.isNotBlank(model.getReportNum())){
            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.WAIT_DEAL.getKey())&&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO)))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仅可修改一次报案号");
        }
//        //查询是否有报案号更改记录
//        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
//        && settleClaimsLogMapper.selectCount(new QueryWrapper<SettleClaimsLog>().lambda()
//                        .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_ADDCODE.getKey())
//                .eq(SettleClaimsLog::getSettleClainmsId,param.getId()))>=Constants.ONE){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仅可修改一次报案号");
//        }
//        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())&&StringUtils.isNotBlank(model.getReportNum())){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"已修改报案号,无法再次修改");
//        }
        settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
                .eq(SettleClaims::getId,param.getId()).set(SettleClaims::getEditDate,
                        DateUtil.getCurrDateTime()).set(SettleClaims::getReportNum,param.getReportNum()));
@@ -1573,6 +1670,7 @@
        SettleClaims update = new SettleClaims();
        update.setEditDate(new Date());
        update.setEditor(user.getId());
        update.setReportNumStatus(model.getReportNumStatus()+Constants.ONE);
        update.setId(model.getId());
        update.setCheckDate(update.getEditDate());
        update.setCheckInfo("添加备案号");
@@ -1608,7 +1706,7 @@
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.COMPENSATION.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_CLOSE_CASE.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_FEE.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())
        )){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请当前不支持该操作~");
@@ -1867,7 +1965,9 @@
        if(Objects.isNull(settleClaims)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())
                || Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus()))
        ){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
        }
@@ -1876,12 +1976,14 @@
        SettleClaims update = new SettleClaims();
        update.setEditDate(new Date());
        update.setEditor(loginUserInfo.getId());
        if(Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus())){
            update.setFeeUpdate(Constants.ONE);
        }
        update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.WG_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setScClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SC_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setSwClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SW_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        //处理历史数据
        List<CompensationVO> oldList =  JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
        for (CompensationVO compensationVO:oldList) {
@@ -1912,7 +2014,6 @@
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void confirmFee(Integer id){
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!loginUserInfo.getType().equals(Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非管理员无法进行该操作");
@@ -1924,7 +2025,12 @@
        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
        }
        SettleClaims update = new SettleClaims();
        update.setEditDate(new Date());
        update.setEditor(loginUserInfo.getId());
        update.setStatus(Constants.SettleClaimsStatus.WAIT_DEAL.getKey());
        update.setId(settleClaims.getId());
        settleClaimsMapper.updateById(update);
        //存储日志
        this.saveSettleClaimsLog(settleClaims,
@@ -1933,5 +2039,42 @@
    }
//    @Override
//    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
//    public void payCash(PayCashDTO dto){
//        if(Objects.isNull(dto)
//                || Objects.isNull(dto.getId())
//                || StringUtils.isBlank(dto.getDescribe())
//        ){
//            throw new BusinessException(ResponseStatus.BAD_REQUEST);
//        }
//        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
//        if(!loginUserInfo.getType().equals(Constants.ZERO)){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非管理员无法进行该操作");
//        }
//        SettleClaims settleClaims  = settleClaimsJoinMapper.selectById(dto.getId());
//        if(Objects.isNull(settleClaims)){
//            throw new BusinessException(ResponseStatus.DATA_EMPTY);
//        }
//        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
//        }
//        SettleClaims update = new SettleClaims();
//        update.setEditDate(new Date());
//        update.setEditor(loginUserInfo.getId());
//        update.setStatus(Constants.SettleClaimsStatus.WAIT_DEAL.getKey());
//        update.setId(settleClaims.getId());
//        settleClaimsMapper.updateById(update);
//
//        //存储日志
//        this.saveSettleClaimsLog(settleClaims,
//                Constants.SettleClaimsLogType.CONFIRM_FEE,
//                Constants.SettleClaimsLogType.CONFIRM_FEE.getInfo());
//    }
}