k94314517
2025-05-20 142bcc9b22f48a8a2098a66b2964fe10c97c6fe8
git ch
已添加1个文件
已修改5个文件
181 ■■■■ 文件已修改
server/platform/src/main/java/com/doumee/api/business/SettleRiskController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/dto/CompensationFeeDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/SettleClaims.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/SettleClaimsService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/SettleRiskController.java
@@ -102,9 +102,9 @@
    @PreventRepeat
    @ApiOperation("理赔费用项信息")
    @GetMapping("/getCompensation")
    public ApiResponse<List<CompensationVO>> getCompensation(@RequestParam Integer id) {
        return ApiResponse.success(settleClaimsService.getCompensation(id));
    @PostMapping("/getCompensation")
    public ApiResponse<List<CompensationVO>> getCompensation(@RequestBody CompensationFeeDTO dto) {
        return ApiResponse.success(settleClaimsService.getCompensation(dto));
    }
@@ -155,5 +155,13 @@
    }
    @PreventRepeat
    @ApiOperation("结案提交")
    @PostMapping("/payCash")
    public ApiResponse payCash(@RequestBody PayCashDTO dto) {
        settleClaimsService.payCash(dto);
        return ApiResponse.success(null);
    }
}
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -768,6 +768,7 @@
        LP_STAMP_FILE(31, "保险公司理赔盖章文件", "保险公司理赔盖章文件"),
        LP_FILE(32, "保险公司上传理赔材料一览表", "保险公司上传理赔材料一览表"),
        LP_OTHER_FILE(33, "理赔其他材料", "理赔其他材料"),
        LP_PAY_FILE(34, "打款凭证", "打款凭证"),
        ;
        // æˆå‘˜å˜é‡
@@ -1995,7 +1996,7 @@
        UPLOAD(0, "提交报案","提交意见:${param}"),
        PLATFORM_RETURN(1, "平台退回","提交意见:${param}"),
        PLATFORM_CONFIRM_INFORMATION(2, "平台确认资料",""),
        PLATFORM_FINISH(3, "结案提交","提交意见:${param}"),
        PLATFORM_FINISH(3, "结案","提交意见:${param}"),
        UPDATE_DATA(4, "修改信息","提交意见:${param}"),
        SUPPLEMENT(5, "补充说明","提交意见:${param}"),
        PLATFORM_LP_DEAL(6, "平台理赔处理","已在平台完成理赔"),
server/service/src/main/java/com/doumee/dao/business/dto/CompensationFeeDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.dao.business.dto;
import com.doumee.dao.business.model.Multifile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * å­˜å‚¨ è¡¥å……说明
 */
@Data
public class CompensationFeeDTO {
    @ApiModelProperty(value = "业务主键")
    private Integer id;
    @ApiModelProperty(value = "获取类型:1=理算;2=核赔")
    private Integer type;
}
server/service/src/main/java/com/doumee/dao/business/model/SettleClaims.java
@@ -241,6 +241,15 @@
    @ApiModelProperty(value = "案件类型:0=未设置;1=医疗;2=伤残;3=死亡")
    private Integer caseType;
    @ApiModelProperty(value = "核赔所有赔付项信息(json数组[{name:“伙食费”,val:100,info:“伙食费说明”,type:0}]),type:0主要赔付项 1其他赔付项 2定损方案费用\t")
    @ExcelColumn(name="核赔所有赔付项信息")
    private String hpAccountContent;
    @ApiModelProperty(value = "核赔总金额")
    private BigDecimal hpAccount;
    @ApiModelProperty(value = "保险单附件")
    @TableField(exist = false)
    private  Multifile  baoxiandanFile;
server/service/src/main/java/com/doumee/service/business/SettleClaimsService.java
@@ -199,7 +199,7 @@
     * @param id
     * @return
     */
    List<CompensationVO> getCompensation(Integer id);
    List<CompensationVO> getCompensation(CompensationFeeDTO compensationFeeDTO);
    /**
     * ç†èµ”业务
@@ -237,4 +237,10 @@
     * @param dto
     */
    void updCaseType(CaseTypeDTO dto);
    /**
     * ç»“案提交
     * @param dto
     */
    void payCash(PayCashDTO dto);
}
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -1790,11 +1790,23 @@
    @Override
    public List<CompensationVO> getCompensation(Integer id){
        SettleClaims settleClaims = settleClaimsMapper.selectById(id);
    public List<CompensationVO> getCompensation(CompensationFeeDTO compensationFeeDTO){
        if(Objects.isNull(compensationFeeDTO)
                || Objects.isNull(compensationFeeDTO.getType())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        SettleClaims settleClaims = null;
        if(Objects.nonNull(compensationFeeDTO.getId())){
            settleClaims = settleClaimsMapper.selectById(compensationFeeDTO.getId());
        }
        List<CompensationVO> modelList = new ArrayList<>();
        if (Objects.nonNull(settleClaims)&&StringUtils.isNotBlank(settleClaims.getAccountContent())) {
            modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
        if (Objects.nonNull(settleClaims)) {
            if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ONE)&&StringUtils.isNotBlank(settleClaims.getAccountContent())){
                modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
            }else if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.TWO)&&StringUtils.isNotBlank(settleClaims.getHpAccountContent())){
                modelList = JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
            }
        }
        Constants.compensation [] compensations = Constants.compensation.values();
        List<CompensationVO> list = new ArrayList<>();
@@ -1837,7 +1849,7 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
        }
        List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
        List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
        SettleClaims update = new SettleClaims();
        update.setEditDate(new Date());
@@ -1925,18 +1937,14 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转~");
        }
        List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
        List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
        SettleClaims update = new SettleClaims();
        update.setEditDate(new Date());
        update.setEditor(loginUserInfo.getId());
        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));
        update.setOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setAccountContent(dto.getCompensationJson());
        update.setHpAccountContent(dto.getCompensationJson());
        update.setHpAccount(modelList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        update.setId(settleClaims.getId());
        update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey());
        settleClaimsMapper.updateById(update);
@@ -1985,7 +1993,7 @@
        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);
        List<CompensationVO> oldList =  JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
        for (CompensationVO compensationVO:oldList) {
            if(compensationVO.getName().equals(Constants.compensation.YL_COMPENSATION.getName())){
                compensationVO.setFee(update.getYlClaimAccount());
@@ -1999,7 +2007,6 @@
              continue;  
            }
        }
        update.setAccountContent(dto.getCompensationJson());
        update.setAccountContent(JSONArray.toJSONString(oldList));
        update.setId(settleClaims.getId()); 
        settleClaimsMapper.updateById(update);
@@ -2039,38 +2046,62 @@
    }
//    @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());
//    }
    @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.CONFIRM_FEE.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.CLOSE_CASE.getKey());
        update.setId(settleClaims.getId());
        settleClaimsMapper.updateById(update);
        if(CollectionUtils.isNotEmpty(dto.getMultifileList())){
            List<Multifile> fileList = dto.getMultifileList();
            if(CollectionUtils.isNotEmpty(fileList)){
                for (int i = 0; i < fileList.size(); i++) {
                    Multifile multifile = fileList.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.MultiFile.LP_PAY_FILE.getKey());
                    multifile.setSortnum(i+1);
                    multifileJoinMapper.insert(multifile);
                }
            }
        }
        //存储日志
        this.saveSettleClaimsLog(settleClaims,
                Constants.SettleClaimsLogType.PLATFORM_FINISH,
                dto.getDescribe());
    }