管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2023-04-10 7911d40e365c6d7c3cb5832609a9b6e30c1a6641
src/main/java/com/lf/server/service/data/MetaService.java
@@ -1,13 +1,13 @@
package com.lf.server.service.data;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.DownloadReqEntity;
import com.lf.server.entity.data.MetaEntity;
import com.lf.server.entity.sys.AttachEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.PathHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import com.lf.server.mapper.data.MetaMapper;
import com.lf.server.service.all.UploadAttachService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +16,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@@ -36,7 +37,7 @@
    public Integer selectCount(String depcode, String dircode, Integer verid, String name) {
        depcode = StringHelper.getRightLike(depcode);
        dircode = StringHelper.getRightLike(dircode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectCount(depcode, dircode, verid, name);
    }
@@ -45,7 +46,7 @@
    public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset) {
        depcode = StringHelper.getRightLike(depcode);
        dircode = StringHelper.getRightLike(dircode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectByPage(depcode, dircode, verid, name, limit, offset);
    }
@@ -53,7 +54,7 @@
    @Override
    public Integer selectMetasForCount(String depcode, String dirs, String name) {
        depcode = StringHelper.getRightLike(depcode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectMetasForCount(depcode, dirs, name);
    }
@@ -61,35 +62,35 @@
    @Override
    public List<MetaEntity> selectMetasForPage(String depcode, String dirs, String name, Integer limit, Integer offset) {
        depcode = StringHelper.getRightLike(depcode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectMetasForPage(depcode, dirs, name, limit, offset);
    }
    @Override
    public Integer selectCountForUpload(String name, Integer createUser, String types) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectCountForUpload(name, createUser, types);
    }
    @Override
    public List<MetaEntity> selectByPageForUpload(String name, Integer createUser, String types, Integer limit, Integer offset) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectByPageForUpload(name, createUser, types, limit, offset);
    }
    @Override
    public Integer selectCountByPid(Integer metaid, String name) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectCountByPid(metaid, name);
    }
    @Override
    public List<MetaEntity> selectPageByPid(Integer metaid, String name, Integer limit, Integer offset) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return metaMapper.selectPageByPid(metaid, name, limit, offset);
    }
@@ -117,6 +118,29 @@
    @Override
    public List<MetaEntity> selectXlsAnnex(Integer[] ids, String tabs) {
        return metaMapper.selectXlsAnnex(ids, tabs);
    }
    @Override
    public List<MetaEntity> selectMetasByDirCode(String dircode) {
        dircode = StringHelper.getRightLike(dircode);
        return metaMapper.selectMetasByDirCode(dircode);
    }
    @Override
    public List<String> selectMetaOverflowDep(String ids, String depcode) {
        depcode = StringHelper.getRightLike(depcode);
        return metaMapper.selectMetaOverflowDep(ids, depcode);
    }
    /**
     * 查询元数据中溢出的单位ID
     */
    public List<String> selectMetaOverflowDep(UserEntity ue, DownloadReqEntity dr) {
        String ids = StringHelper.join(dr.getIds(), ",");
        return selectMetaOverflowDep(ids, ue.getDepcode());
    }
    @Override
@@ -163,8 +187,19 @@
     * 获取删除表记录SQL
     */
    public String getDelTabsSql(List<MetaEntity> metas) {
        List<String> list = getTabDeletes(metas, metas.get(0).getTab());
        addCascadDeletes(list);
        addAttachDeletes(list);
        Collections.reverse(list);
        return StringHelper.join(list, ";");
    }
    /**
     * 获取删除表记录SQL
     */
    private List<String> getTabDeletes(List<MetaEntity> metas, String tab) {
        List<String> list = new ArrayList<>();
        String tab = metas.get(0).getTab();
        List<String> pids = new ArrayList<>();
        for (MetaEntity me : metas) {
@@ -178,12 +213,46 @@
                pids.add("'" + me.getEventid() + "'");
            }
        }
        if (pids.size() > 0) {
            list.add(String.format("delete from %s where parentid in (%s)", tab, StringHelper.join(pids, ",")));
        }
        return StringHelper.join(list, ";");
        return list;
    }
    /**
     * 添加级联删除
     */
    private void addCascadDeletes(List<String> list) {
        int i = 0, c = list.size();
        while (i < c) {
            String str = list.get(i);
            if (str.contains("bs.m_pipelinepoint ")) {
                list.add(str.replace("bs.m_pipelinepoint ", "bs.m_pipesegment "));
                list.add(str.replace("bs.m_pipelinepoint ", "bs.m_pipeline "));
            }
            if (str.contains("bs.s_explorationpoint ")) {
                list.add(str.replace("bs.s_explorationpoint ", "bs.s_surveyworksite "));
            }
            i++;
        }
    }
    /**
     * 添加附件删除
     */
    private void addAttachDeletes(List<String> list) {
        int i = 0, c = list.size();
        while (i < c) {
            String str = list.get(i);
            String tab = str.substring("delete from ".length(), str.indexOf(" where "));
            String select = str.replace("delete ", "select eventid ");
            list.add(String.format("delete from lf.sys_attach where tab='%s' and tab_guid in (%s)", tab, select));
            i++;
        }
    }
    /**