四张表关联查询思想

需求是四张表:

效果:
在这里插入图片描述

StRiskFireInspect:
 主键:  private String inspectId;
   private String permitId;
   
   @NotFound(action = NotFoundAction.IGNORE)
    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "PERMIT_ID", referencedColumnName = "PERMIT_ID", insertable = false, updatable = false)
    private StRiskPermit permit;
 
 @JsonIgnore
    @JSONField(serialize = false)
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name = "INSPECT_ID", referencedColumnName = "INSPECT_ID")
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<StRiskFireInspectType> fireinspecttype = new java.util.ArrayList<StRiskFireInspectType>(0);

StRiskFireInspectType:
主键  private String inspectTypeId;
   private String inspectId;
    /** 类别编码 **/
      /** 类别编码 **/
    @Basic
    @Column(name="INSPECT_TYPE_CODE",nullable=true )
    private String inspectTypeCode;



    @NotFound(action = NotFoundAction.IGNORE)
    @ManyToOne(fetch = FetchType.EAGER)
    @JsonSerialize(using = ValueCodeSerializer.class)
    @JoinColumn(name = "INSPECT_TYPE_CODE", referencedColumnName = "CODE", insertable = false, updatable = false)
    **//检查人**
    private ValueCodeTable codeNameCode; //可以点出 codeName    


    @NotFound(action = NotFoundAction.IGNORE)
    @ManyToOne(fetch = FetchType.EAGER)
    @JsonSerialize(using = ValueCodeSerializer.class)
    @JoinColumn(name = "INSPECT_ID", referencedColumnName = "INSPECT_ID", insertable = false, updatable = false)
    private StRiskFireInspect stRiskFireInspect;

    @JsonIgnore
    @JSONField(serialize = false)
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name = "INSPECT_TYPE_ID", referencedColumnName = "INSPECT_TYPE_ID")
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<StRiskFireInspectContent> meetings = new ArrayList<>(0);

StRiskFireInspectContent:
  主键:private String inspectContentId;
  private String inspectTypeId;
   /** 内容编码 **/
    @Basic
    @Column(name="CONTENT_CODE",nullable=true )
    private String contentCode;

    @NotFound(action = NotFoundAction.IGNORE)
    @ManyToOne(fetch = FetchType.EAGER)
    @JsonSerialize(using = ValueCodeSerializer.class)
    @JoinColumn(name = "CONTENT_CODE", referencedColumnName = "CODE", insertable = false, updatable = false)
    **//检查内容**
    private ValueCodeTable contentCodeName;   可以点出 codeName    

    @NotFound(action = NotFoundAction.IGNORE)
    @ManyToOne(fetch = FetchType.EAGER)
    @JsonSerialize(using = ValueCodeSerializer.class)
    @JoinColumn(name = "INSPECT_TYPE_ID", referencedColumnName = "INSPECT_TYPE_ID", insertable = false, updatable = false)
    private StRiskFireInspectType stRiskFireInspectType;

StRiskSign:
主键:private String signId;
private String businessId;
**//签字**
private String confirmorSign;

三张表是: inspectId 是 StRiskFireInspect 和 StRiskFireInspectType 关联  
               inspectTypeId 是 StRiskFireInspectType  和 StRiskFireInspectContent 关联
               inspectTypeId 是StRiskFireInspectType   和 StRiskSign 关联
其中 permitId一张许可证只有一个permitId

**检查人对应多条检查内容;检查人对应多个签字 !!!!!!!!!!**





@GetMapping("getFireInspectInformation")
    @ResponseBodyMessage
    @ApiOperation(value = "现场检查信息")
    public List<StRiskFireInspectDto> getFireInspectInformation(@ApiParam(name = "permitId", value = "许可证ID", required = true) @RequestParam(value = "permitId",required = true) String permitId) {
        List<StRiskFireInspectDto>listFireInspectInformation=service.getFireInspectInformation(permitId);
        return listFireInspectInformation;
    }
    
 @Override
    public List<StRiskFireInspectDto>  getFireInspectInformation(String permitId) {
        List<StRiskFireInspectDto> list = new ArrayList<StRiskFireInspectDto>();
        List<StRiskFireInspect> listFireInspectInformation = stRiskFireInspectRepository.findByPermitId(permitId);
        List<StRiskFireInspectType> typeList = new ArrayList<>();
        List<StRiskFireInspectContent> contentList = new ArrayList<>();
        if(listFireInspectInformation!=null && listFireInspectInformation.size()>0){
            typeList = listFireInspectInformation.get(0).getFireinspecttype();
            if(typeList!=null && typeList.size()>0){
                for(StRiskFireInspectType type : typeList){
                    if(type.getMeetings()!=null && type.getMeetings().size()>0) {
                        contentList.addAll(type.getMeetings());
                    }
                }
            }
        }
        for(StRiskFireInspectContent content : contentList){
            StRiskFireInspectDto dto = new StRiskFireInspectDto();
            dto.setCodeName(content.getContentCodeName().getCodeName());
            for(StRiskFireInspectType type : typeList){
                if(content.getInspectTypeId().equals(type.getInspectTypeId())){
                    dto.setInspectTypeCode(type.getCodeNameCode().getCodeName());
                    List<StRiskSign> listSign = stRiskSignRepository.getSignByPermitIdAndBusinessId(type.getInspectTypeId());
                    String confirmorSign = "";
                    for (StRiskSign sign : listSign) {
                        confirmorSign += sign.getConfirmorSign()+",";
                    }
                    dto.setConfirmorSign(confirmorSign);
                    break;
                }
            }
            list.add(dto);
        }
返回数据:
{
    "resultCode": 0,
    "result": [
        {
            "codeName": "与动火相关流程操作符合要求",
            "inspectTypeCode": "生产运行",
            "confirmorSign": "7,6,"
        },
        {
            "codeName": "满足生产单位的其他生产要求",
            "inspectTypeCode": "生产运行",
            "confirmorSign": "7,6,"
        },
        {
            "codeName": "消防车、器材及人员到位,消防道路畅通",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "5,4,"
        },
        {
            "codeName": "动火现场逃生通道符合要求",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "5,4,"
        },
        {
            "codeName": "应急预案制定和审核",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "3,2,"
        },
        {
            "codeName": "防静电接地、可燃气、含量等检测按动火方案要求进行,检测结果符合要求",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "3,2,"
        },
        {
            "codeName": "动火作业许可证按要求办理完毕",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "3,2,"
        },
        {
            "codeName": "动火涉及的其他许可作业的许可证按要求办理完毕(包括吊装、动土、管线打开等)",
            "inspectTypeCode": "动火监督",
            "confirmorSign": "3,2,"
        },
        {
            "codeName": "动火作业人员持有效操作证,劳保穿戴符合要求",
            "inspectTypeCode": "动火施工",
            "confirmorSign": "8,1,"
        },
        {
            "codeName": "现场人员熟悉动火方案内容",
            "inspectTypeCode": "动火施工",
            "confirmorSign": "8,1,"
        },
        {
            "codeName": "动火区域施工环境符合要求",
            "inspectTypeCode": "动火施工",
            "confirmorSign": "8,1,"
        },
        {
            "codeName": "施工机具、物料到位",
            "inspectTypeCode": "动火施工",
            "confirmorSign": "8,1,"
        }
    ],
    "msgId": null,
    "success": true
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值