package com.lf.server.service.data; import com.lf.server.entity.all.StaticData; import com.lf.server.entity.data.MetaEntity; import com.lf.server.entity.sys.AttachEntity; 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; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 元数据 * @author WWW */ @Service public class MetaService implements MetaMapper { @Autowired PathHelper pathHelper; @Autowired MetaMapper metaMapper; private final static Log log = LogFactory.getLog(MetaService.class); @Override public Integer selectCount(String depcode, String dircode, Integer verid, String name) { depcode = StringHelper.getRightLike(depcode); dircode = StringHelper.getRightLike(dircode); name = StringHelper.getLikeStr(name); return metaMapper.selectCount(depcode, dircode, verid, name); } @Override public List 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); return metaMapper.selectByPage(depcode, dircode, verid, name, limit, offset); } @Override public Integer selectMetasForCount(String depcode, String dirs, String name) { depcode = StringHelper.getRightLike(depcode); name = StringHelper.getLikeStr(name); return metaMapper.selectMetasForCount(depcode, dirs, name); } @Override public List selectMetasForPage(String depcode, String dirs, String name, Integer limit, Integer offset) { depcode = StringHelper.getRightLike(depcode); name = StringHelper.getLikeStr(name); return metaMapper.selectMetasForPage(depcode, dirs, name, limit, offset); } @Override public Integer selectCountForUpload(String name, Integer createUser, String types) { name = StringHelper.getLikeStr(name); return metaMapper.selectCountForUpload(name, createUser, types); } @Override public List selectByPageForUpload(String name, Integer createUser, String types, Integer limit, Integer offset) { name = StringHelper.getLikeStr(name); return metaMapper.selectByPageForUpload(name, createUser, types, limit, offset); } @Override public Integer selectCountByPid(Integer metaid, String name) { name = StringHelper.getLikeStr(name); return metaMapper.selectCountByPid(metaid, name); } @Override public List selectPageByPid(Integer metaid, String name, Integer limit, Integer offset) { name = StringHelper.getLikeStr(name); return metaMapper.selectPageByPid(metaid, name, limit, offset); } @Override public MetaEntity selectById(int id) { return metaMapper.selectById(id); } @Override public MetaEntity selectByGuid(String guid, String tab) { return metaMapper.selectByGuid(guid, tab); } @Override public List selectByIdsForTab(String ids) { return metaMapper.selectByIdsForTab(ids); } @Override public List selectMetaFiles(List ids) { return metaMapper.selectMetaFiles(ids); } @Override public List selectXlsAnnex(Integer[] ids, String tabs) { return metaMapper.selectXlsAnnex(ids, tabs); } @Override public Integer insert(MetaEntity entity) { return metaMapper.insert(entity); } @Override public Integer inserts(List list) { return metaMapper.inserts(list); } @Override public Integer deletes(String sql, String ids) { return metaMapper.deletes(sql, ids); } @Override public Integer update(MetaEntity entity) { return metaMapper.update(entity); } @Override public Integer updates(List list) { return metaMapper.updates(list); } /** * 删除元数据 */ public Integer deletes(List list) { String ids = StringHelper.join(list, ","); String sql = null; List metas = selectByIdsForTab(ids); if (null != metas && metas.size() > 0) { sql = getDelTabsSql(metas); } return deletes(sql, ids); } /** * 获取删除表记录SQL */ public String getDelTabsSql(List metas) { List list = new ArrayList<>(); String tab = metas.get(0).getTab(); List pids = new ArrayList<>(); for (MetaEntity me : metas) { if (tab.equals(me.getTab())) { pids.add("'" + me.getEventid() + "'"); } else { list.add(String.format("delete from %s where parentid in (%s)", tab, StringHelper.join(pids, ","))); pids.clear(); tab = me.getTab(); 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, ";"); } /** * 查看文件 */ public void downloadForView(String guid, boolean inline, HttpServletResponse res) { try { if (StringHelper.isEmpty(guid)) { WebHelper.writeStr2Page(res, StaticData.NO_FILE); return; } MetaEntity me = selectByGuid(guid, null); if (me == null) { WebHelper.writeStr2Page(res, StaticData.NO_FILE); return; } String filePath = pathHelper.getConfig().getUploadPath() + File.separator + me.getPath(); File file = new File(filePath); if (!file.exists() || file.isDirectory()) { WebHelper.writeJson2Page(res, "文件不存在"); } WebHelper.download(filePath, me.getName(), inline, res); } catch (Exception ex) { WebHelper.writeJson2Page(res, "文件下载出错"); log.error(ex.getMessage(), ex); } } }