kimi42345
2020-03-28 f7af6b99c11bf876c0faef82d42caacf5475de93
src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java
@@ -16,14 +16,13 @@
import com.highdatas.mdm.service.IMaintainFieldService;
import com.highdatas.mdm.service.IMaintainService;
import com.highdatas.mdm.service.ISysFieldService;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -50,13 +49,12 @@
    TableInfoMapper tableInfoMapper;
    @Override
    public List<SysField> getFieldByMaintain(String maintainId) {
    public MaintainField getMaintainFieldByMaintainId(String maintainId) {
        MaintainField maintainField;
        List<SysField> fieldList = null;
        if (StringUtils.isEmpty(maintainId)) {
          return null;
            return null;
        }
        Maintain maintain = maintainService.selectById(maintainId);
        if (maintain == null) {
@@ -68,17 +66,28 @@
            //对应版本找不到 往前找
            String maintainFieldId = maintainFieldMapper.getMappedMatintainId(DbUtils.quotedStr(maintain.getTableName()), maintain.getOrderNo());
            if (StringUtils.isEmpty(maintainFieldId)) {
                fieldList = this.selectList(new EntityWrapper<SysField>().eq("table_name", maintain.getTableName()).isNull("maintain_field_id").orderBy("order_no"));
                return fieldList;
               return null;
            }
            maintainField = maintainFieldService.selectById(maintainFieldId);
            if (maintainField == null){
                //无对应版本
                fieldList = this.selectList(new EntityWrapper<SysField>().eq("table_name", maintain.getTableName()).isNull("maintain_field_id").orderBy("order_no"));
                return fieldList;
            }
        }
        return maintainField;
    }
    @Override
    public List<SysField> getFieldByMaintain(String maintainId) {
        List<SysField> fieldList;
        Maintain maintain = maintainService.selectById(maintainId);
        if (maintain == null) {
            return null;
        }
        MaintainField maintainField = getMaintainFieldByMaintain(maintainId);
        if (maintainField == null && Constant.Default.equalsIgnoreCase(maintainField.getId())) {
            fieldList = this.selectList(new EntityWrapper<SysField>().eq("table_name", maintain.getTableName()).isNull("maintain_field_id").orderBy("order_no"));
            return fieldList;
        }
        String maintainFieldId = maintainField.getId();
        String tableName = maintainField.getTableName();
        //TODO  判断版本
@@ -100,6 +109,53 @@
            maintainField = maintainFieldService.selectOne(new EntityWrapper<MaintainField>().eq("table_name", maintain.getTableName()).eq("order_no", preNo));
            fieldList = this.selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainField.getId()).eq("table_name", tableName).orderBy("order_no"));
            return fieldList;
        }
    }
    @Override
    public MaintainField getMaintainFieldByMaintain(String maintainId) {
        MaintainField maintainField;
        List<SysField> fieldList = null;
        if (StringUtils.isEmpty(maintainId)) {
            return null;
        }
        Maintain maintain = maintainService.selectById(maintainId);
        if (maintain == null) {
            return null;
        }
        maintainField = maintainFieldService.selectOne(new EntityWrapper<MaintainField>().eq("maintain_id", maintainId).orderBy("order_no desc, create_time desc"));
        if (maintainField == null) {
            //对应版本找不到 往前找
            String maintainFieldId = maintainFieldMapper.getMappedMatintainId(DbUtils.quotedStr(maintain.getTableName()), maintain.getOrderNo());
            if (StringUtils.isEmpty(maintainFieldId)) {
                return new MaintainField().setId(Constant.Default);
            }
            maintainField = maintainFieldService.selectById(maintainFieldId);
            if (maintainField == null){
                return new MaintainField().setId(Constant.Default);
            }
        }
        String maintainFieldId = maintainField.getId();
        String tableName = maintainField.getTableName();
        ActivitiStatus status = flowsService.getStatusByBusinessId(maintainFieldId);
        if (status != null && status.equals(ActivitiStatus.open)) {
            return maintainFieldService.selectById(maintainField);
        }
        // 当前版本正在审批  找前一版本
        Integer maintainFieldOrderNo = maintainField.getOrderNo();
        if (maintainFieldOrderNo < 1) {
            return new MaintainField().setId(Constant.Default);
        }else {
            Integer preNo = maintainFieldOrderNo - 1;
            maintainField = maintainFieldService.selectOne(new EntityWrapper<MaintainField>().eq("table_name", maintain.getTableName()).eq("order_no", preNo));
            return maintainField;
        }
@@ -283,12 +339,38 @@
        }
        return collect.get(0);
    }
    @Override
    public List<SysField> getFieldByMaintainField(String maintainId) {
        if (StringUtils.isEmpty(maintainId)) {
            return selectList(new EntityWrapper<SysField>().isNull("maintain_field_id").orderBy("order_no"));
            return null;
        }
        return selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainId).orderBy("order_no"));
    }
    @Override
    public List<SysField> getDefaultTableField(String tableName) {
        return selectList(new EntityWrapper<SysField>().eq("table_name", tableName).isNull("maintain_field_id").orderBy("order_no"));
    }
    @Override
    public List<SysField> getTotalTableField(String tableName) {
        List<TableSchemaResult> tableField = tableInfoMapper.getTableField(tableName);
        List<SysField> result = new ArrayList<>();
        for (TableSchemaResult tableSchemaResult : tableField) {
            String fieldName = tableSchemaResult.getFieldName();
            List<SysField> fieldList = selectList(new EntityWrapper<SysField>().eq("table_name", tableName).eq(Constant.FIELD, fieldName).orderBy("create_time"));
            if (fieldList.isEmpty()) {
                //没有中文名称的  应该属于系统自留字段 如id
                continue;
            }
            HashSet<SysField> strings = new HashSet<SysField>(fieldList);
            String alias = strings.stream().map(SysField::getAlias).collect(Collectors.joining(Constant.SEMICOLON));
            SysField sysField = new SysField().setField(fieldName).setAlias(alias);
            result.add(sysField);
        }
        return result;
    }
}