刘光辉
5 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package jnpf.elnService.formula.impl;
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jnpf.elnEntity.formula.ElnTemplateFormulaBindingEntity;
import jnpf.elnEntity.template.ElnTemplateVersionEntity;
import jnpf.elnMapper.ElnTemplateMapper;
import jnpf.elnMapper.ElnTemplateFormulaBindingMapper;
import org.springframework.stereotype.Component;
 
@Component
public class FormulaDraftTemplateReferenceChecker
        implements ElnFormulaCatalogServiceImpl.DraftTemplateReferenceChecker {
    private final ElnTemplateFormulaBindingMapper bindings;
    private final ElnTemplateMapper templates;
 
    public FormulaDraftTemplateReferenceChecker(ElnTemplateFormulaBindingMapper bindings,
            ElnTemplateMapper templates) {
        this.bindings = bindings; this.templates = templates;
    }
 
    @Override
    public boolean hasDraftReferences(String tenantId, String versionId) {
        for (ElnTemplateFormulaBindingEntity binding : bindings.selectList(
                Wrappers.<ElnTemplateFormulaBindingEntity>lambdaQuery()
                        .eq(ElnTemplateFormulaBindingEntity::getFTenantId, tenantId)
                        .eq(ElnTemplateFormulaBindingEntity::getGongshiBanbenId, versionId)
                        .in(ElnTemplateFormulaBindingEntity::getBangdingZhuangtai,
                                "PENDING", "ACTIVE")
                        .and(q -> q.isNull(ElnTemplateFormulaBindingEntity::getFDeleteMark)
                                .or().eq(ElnTemplateFormulaBindingEntity::getFDeleteMark, 0)))) {
            ElnTemplateVersionEntity template = templates.selectOne(
                    Wrappers.<ElnTemplateVersionEntity>lambdaQuery()
                            .eq(ElnTemplateVersionEntity::getFTenantId, tenantId)
                            .eq(ElnTemplateVersionEntity::getId, binding.getMubanId())
                            .eq(ElnTemplateVersionEntity::getBizStatus, "DRAFT")
                            .and(q -> q.isNull(ElnTemplateVersionEntity::getFDeleteMark)
                                    .or().eq(ElnTemplateVersionEntity::getFDeleteMark, 0)));
            if (template != null) return true;
        }
        return false;
    }
}