package cn.ksource.web.facade.fileManage; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.ParamsMapUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.TreeNode; import cn.ksource.web.Constants; import cn.ksource.web.service.file.FileService; @Service("docFacade") @SuppressWarnings("unchecked") public class DocFacadeImpl implements DocFacade { @Autowired BaseDao baseDao; @Override public List queryMyfileList(HttpServletRequest request) { StringBuilder sql=new StringBuilder("SELECT ID,FOLDER_NAME AS NAME,FOLDER_PATH AS PATH,0 AS FILE_SIZE,0 AS FILE_FORMAT,ORDERNUM,P_ID,CREATE_TIME,1 AS FILE_TYPE FROM GG_FOLDERS A" + " UNION SELECT ID,FILE_NAME AS NAME,FILE_PATH AS PATH,FILE_SIZE,FILE_FORMAT,ORDERNUM,FOLDER_ID AS P_ID,CREATE_TIME,2 AS FILE_TYPE FROM GG_FILES B " + " WHERE 1=1 "); Map params=ParamsMapUtil.getParameterMap(request); String pId=params.get("pId"); if(StringUtil.isEmpty(pId)){ } else{ sql.append("AND B.FOLDER_ID=:pId AND A.P_ID=:pId"); } List list= baseDao.queryForList(sql.toString(), params); for(Map map :list){ String icon=StringUtil.docSuffer(map.get("FILE_FORMAT")+""); map.put("icon", icon); } return list; } @Override public int queryfileCount(Map params) { StringBuilder sql=new StringBuilder("SELECT COUNT(C.ID) FROM(SELECT ID,FOLDER_NAME AS NAME FROM GG_FOLDERS A WHERE 1=1"); String pId=params.get("pId"); if(StringUtil.isEmpty(pId)){ sql.append(" AND A.P_ID IS NULL"); }else{ sql.append(" AND A.P_ID=:pId"); } sql.append(" UNION SELECT ID,FILE_NAME AS NAME FROM GG_FILES B WHERE B.DEL_FLAG=1 AND B.AUDIT_STATE="+Constants.FILE_STATE_SHTG); if(StringUtil.isEmpty(pId)){ sql.append(" AND(B.FOLDER_ID IS NULL OR B.FOLDER_ID = '0' )"); }else{ sql.append(" AND B.FOLDER_ID=:pId"); } sql.append(")C"); String searchWord=params.get("searchWord"); if(!StringUtil.isEmpty(searchWord)){ sql.append(" WHERE C.NAME LIKE:searchWord"); params.put("searchWord", "%"+searchWord+"%"); } return baseDao.queryForInteger(sql.toString(), params); } @Override public PageInfo queryfileData(PageInfo pageInfo, Map params) { StringBuilder sql=new StringBuilder("SELECT * FROM (SELECT ID,FOLDER_NAME AS NAME,FOLDER_PATH AS PATH,0 AS FILE_SIZE,0 AS FILE_FORMAT,ORDERNUM,P_ID,CREATE_TIME,1 AS FILE_TYPE,TYPE,0 AS BUSINESSTYPE,0 AS ORDER_CODE,0 AS FLOWID,0 AS BUSINESS_ID FROM GG_FOLDERS A WHERE 1=1"); String pId=params.get("pId"); if(StringUtil.isEmpty(pId)){ sql.append(" AND A.P_ID IS NULL"); }else{ sql.append(" AND A.P_ID=:pId"); } sql.append(" UNION SELECT B.ID,B.FILE_NAME AS NAME,B.FILE_PATH AS PATH,B.FILE_SIZE,B.FILE_FORMAT,B.ORDERNUM,B.FOLDER_ID AS P_ID,B.CREATE_TIME,2 AS FILE_TYPE,3 AS TYPE,D.BUSINESSTYPE,D.ORDER_CODE,D.ID AS FLOWID,D.BUSINESS_ID FROM GG_FILES B LEFT JOIN WORKFLOW_BASE D ON B.EXTEND1= D.ID" + " WHERE B.DEL_FLAG=1 AND B.AUDIT_STATE="+Constants.FILE_STATE_SHTG); if(StringUtil.isEmpty(pId)){ sql.append(" AND (B.FOLDER_ID IS NULL OR B.FOLDER_ID = '0' )"); }else{ sql.append(" AND B.FOLDER_ID=:pId"); } sql.append(")C "); String searchWord=params.get("searchWord"); if(!StringUtil.isEmpty(searchWord)){ sql.append(" WHERE C.NAME LIKE:searchWord"); params.put("searchWord", "%"+searchWord+"%"); } String orderWay=params.get("orderWay"); String orderType=params.get("orderType"); if(!StringUtil.isEmpty(orderType)&&"1".equals(orderType)){ if("1".equals(orderWay)){ sql.append(" ORDER BY C.TYPE ASC,C.FILE_TYPE DESC"); }else { sql.append(" ORDER BY C.TYPE ASC,C.FILE_TYPE "); } } else if(!StringUtil.isEmpty(orderType)&&"2".equals(orderType)){ if("1".equals(orderWay)){ sql.append(" ORDER BY CAST(C.FILE_SIZE as SIGNED) DESC"); }else { sql.append(" ORDER BY CAST(C.FILE_SIZE as SIGNED) "); } } else if(!StringUtil.isEmpty(orderType)&&"3".equals(orderType)){ if("1".equals(orderWay)){ sql.append(" ORDER BY C.CREATE_TIME DESC"); }else { sql.append(" ORDER BY C.CREATE_TIME "); } } else{ sql.append(" ORDER BY C.TYPE ASC,C.FILE_TYPE,C.FILE_FORMAT,C.CREATE_TIME DESC"); } PageInfo info=baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); List list= info.getDatas(); for(Map map :list){ if("1".equals(map.get("FILE_TYPE")+"") ){ map.put("icon", "folder"); map.put("size", "--"); } else{ String icon=StringUtil.docSuffer(map.get("FILE_FORMAT")+""); map.put("icon", icon); String size=""; try { size=StringUtil.getFileSize(Double.parseDouble(map.get("FILE_SIZE")+"")); } catch (Exception e) { } map.put("size", size); } } return info; } @Override public void deleteFile(Map params) { String file_type=params.get("file_type"); StringBuilder sqlBuilder=new StringBuilder(""); /*String id=params.get("id"); String sqlString="SELECT * FROM GG_FILES A WHERE A.FOLDER_ID=:id UNION SELECT * FROM GG_FOLDERS B WHERE B.P_ID=:id"; baseDao.queryForList(sqlString, params);*/ if("1".equals(file_type)){ sqlBuilder.append("DELETE FROM GG_FOLDERS WHERE ID=:id"); }else{ sqlBuilder.append("UPDATE GG_FILES SET DEL_FLAG =0 WHERE ID=:id"); } baseDao.execute(sqlBuilder.toString(), params); } @Override public void domoveFile(Map params) { String file_type=params.get("file_type"); String targetId=params.get("targetId"); if(StringUtil.isEmpty(targetId)){ params.put(targetId,"null"); } StringBuilder sqlBuilder=new StringBuilder(""); if("1".equals(file_type)){ sqlBuilder.append("UPDATE GG_FOLDERS SET P_ID=:targetId WHERE ID=:id"); }else{ sqlBuilder.append("UPDATE GG_FILES SET FOLDER_ID =:targetId WHERE ID=:id"); } baseDao.execute(sqlBuilder.toString(), params); } @Override public void dorenameFile(Map params) { String file_type=params.get("file_type"); StringBuilder sqlBuilder=new StringBuilder(""); if("1".equals(file_type)){ sqlBuilder.append("UPDATE GG_FOLDERS SET FOLDER_NAME=:newName WHERE ID=:id"); }else{ sqlBuilder.append("UPDATE GG_FILES SET FILE_NAME =:newName WHERE ID=:id"); } baseDao.execute(sqlBuilder.toString(), params); } @Override public String queryUpPid(String id) { String rString=""; if(!StringUtil.isEmpty(id)){ String sqlString="SELECT P_ID FROM GG_FOLDERS WHERE ID=:id"; rString=baseDao.queryForString(sqlString,new SqlParameter("id",id)); } return rString; } @Override public TreeNode getCompanyFileTree(Map params) { String pid=params.get("id"); TreeNode root = new TreeNode("0","公司文档分类树"); Map paramMap = new HashMap(); StringBuilder sql = new StringBuilder(); sql.append("SELECT * FROM GG_FOLDERS WHERE 1=1 "); if (StringUtils.isBlank(pid)) { sql.append(" AND P_ID IS NULL"); } else { sql.append(" AND P_ID = :pid"); paramMap.put("pid", pid); } sql.append(" ORDER BY CREATE_TIME"); List categoryList = baseDao.queryForList(sql.toString(), paramMap); for (Map map : categoryList) { TreeNode yjTree = new TreeNode(map.get("ID").toString(),map.get("FOLDER_NAME").toString()); yjTree.setIsOpen(false); Map attr = new HashMap(); attr.put("ISNODE", "1"); attr.put("FOLDER_NAME", map.get("FOLDER_NAME")); yjTree.setAttributes(attr); root.addChild(yjTree); } return root; } @Override public void saveFolder(Map params) { String up_id=params.get("up_id"); StringBuilder sqlBuilder=new StringBuilder("INSERT INTO GG_FOLDERS (ID,FOLDER_NAME,P_ID,TYPE,CREATE_TIME) VALUES(:id,:forderName,:up_id,:type,:create_time)"); params.put("id", StringUtil.getUUID()); params.put("type","2"); params.put("create_time",DateUtil.getCurrentDate14()+""); if(StringUtil.isBlank(up_id)){ params.put("up_id", null); } baseDao.execute(sqlBuilder.toString(), params); } @Override public void saveFile(String businessId, Map fileMap) { String saveSql = "INSERT INTO GG_FILES(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,FOLDER_ID,CREATE_TIME,AUDIT_STATE,USER_ID,USER_NAME) VALUES (:id,:fileName,:filePath,:fileSize,:fileFormat,:businessId,:createTime,3,:user_id,:user_name)"; Map paramMap = new HashMap(); paramMap.put("id", StringUtil.getUUID()); paramMap.put("fileName", fileMap.get("FILE_NAME")); paramMap.put("filePath", fileMap.get("FILE_PATH")); paramMap.put("fileSize", fileMap.get("FILE_SIZE")); paramMap.put("fileFormat", fileMap.get("EXT_NAME")); paramMap.put("user_id", fileMap.get("user_id")); paramMap.put("user_name", fileMap.get("user_name")); paramMap.put("businessId", businessId); paramMap.put("createTime", DateUtil.getCurrentDate14()); baseDao.execute(saveSql, paramMap); } @Override public List queryParentMenu(Map params) { List list=new ArrayList(); String pId=params.get("pId"); int i=0; while(!StringUtil.isEmpty(pId)){ String sqlString="SELECT P_ID,FOLDER_NAME,ID FROM GG_FOLDERS WHERE ID=:pId"; Map map=baseDao.queryForMap(sqlString, params); String pid=map.get("P_ID"); list.add(map); pId=pid; params.put("pId", pId); i++; if(i>2){ Map map2=new HashMap(); map2.put("FOLDER_NAME","..."); map2.put("ID",""); list.add(map2); break; } } return list; } @Override public void docopyFile(Map params) { String sql="SELECT * FROM GG_FILES WHERE ID=:id"; Map map=baseDao.queryForMap(sql, params); map.put("id", StringUtil.getUUID()); map.put("createTime",DateUtil.getCurrentDate14()+""); map.put("targetId",params.get("targetId")); String sqlString="INSERT INTO GG_FILES(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,FOLDER_ID,CREATE_TIME,AUDIT_STATE) VALUES (:id,:FILE_NAME,:FILE_PATH,:FILE_SIZE,:FILE_FORMAT,:targetId,:createTime,:AUDIT_STATE)"; baseDao.execute(sqlString, map); } @Override public int queryfileSearchCount(Map params) { StringBuilder sqlBuilder=new StringBuilder("SELECT COUNT(A.ID) FROM GG_FILES A " + " WHERE A.DEL_FLAG=1 AND A.AUDIT_STATE="+Constants.FILE_STATE_SHTG); getSql(sqlBuilder,params); return baseDao.queryForInteger(sqlBuilder.toString(), params); } @Override public PageInfo queryfileSearchData(PageInfo pageInfo, Map params) { StringBuilder sqlBuilder=new StringBuilder("SELECT ID,FILE_NAME AS NAME,FILE_PATH AS PATH,FILE_SIZE,FILE_FORMAT,ORDERNUM,FOLDER_ID AS P_ID,CREATE_TIME,2 AS FILE_TYPE,USER_NAME,AUDIT_STATE FROM GG_FILES A " + " WHERE A.DEL_FLAG=1 AND A.AUDIT_STATE="+Constants.FILE_STATE_SHTG); getSql(sqlBuilder,params); String orderWay=params.get("orderWay"); String orderType=params.get("orderType"); if(!StringUtil.isEmpty(orderType)&&"1".equals(orderType)){ if("1".equals(orderWay)){ sqlBuilder.append(" ORDER BY A.ORDERNUM DESC"); }else { sqlBuilder.append(" ORDER BY A.ORDERNUM "); } } else if(!StringUtil.isEmpty(orderType)&&"2".equals(orderType)){ if("1".equals(orderWay)){ sqlBuilder.append(" ORDER BY CAST(A.FILE_SIZE as SIGNED) DESC"); }else { sqlBuilder.append(" ORDER BY CAST(A.FILE_SIZE as SIGNED) "); } } else if(!StringUtil.isEmpty(orderType)&&"3".equals(orderType)){ if("1".equals(orderWay)){ sqlBuilder.append(" ORDER BY A.CREATE_TIME DESC"); }else { sqlBuilder.append(" ORDER BY A.CREATE_TIME "); } } else{ sqlBuilder.append(" ORDER BY A.CREATE_TIME DESC"); } PageInfo info= baseDao.queryforSplitPageInfo(pageInfo, sqlBuilder.toString(), params); List list= info.getDatas(); for(Map map :list){ if("1".equals(map.get("FILE_TYPE")+"") ){ map.put("icon", "folder"); map.put("size", "--"); } else{ String icon=StringUtil.docSuffer(map.get("FILE_FORMAT")+""); map.put("icon", icon); String size=""; try { size=StringUtil.getFileSize(Double.parseDouble(map.get("FILE_SIZE")+"")); } catch (Exception e) { } map.put("size", size); } } return info; } private void getSql(StringBuilder builder,Map params) { String searchWord=params.get("searchWord"); if(!StringUtil.isEmpty(searchWord)){ builder.append(" AND A.FILE_NAME LIKE:searchWord"); params.put("searchWord", "%"+searchWord+"%"); } String user_id=params.get("user_id"); if(!StringUtil.isEmpty(user_id)){ builder.append(" AND A.USER_ID =:user_id"); } String current_id=params.get("current_id"); if(!StringUtil.isEmpty(current_id)){ builder.append(" AND A.CURRENT_ID =:current_id"); } String file_name=params.get("file_name"); if(!StringUtil.isEmpty(file_name)){ builder.append(" AND A.FILE_NAME LIKE:file_name"); params.put("file_name", "%"+file_name+"%"); } String begin_date=params.get("begin_date"); if(!StringUtil.isEmpty(begin_date)){ builder.append(" AND A.CREATE_TIME >:begin_date"); } String end_date=params.get("end_date"); if(!StringUtil.isEmpty(end_date)){ builder.append(" AND A.CREATE_TIME <:end_date"); } } @Override public Map queryFileMsg(String fileId) { String sqlString1="SELECT A.*,B.FOLDER_NAME,C.BUSINESSTYPE,C.ORDER_CODE,C.ID AS FLOWID,C.BUSINESS_ID FROM GG_FILES A LEFT JOIN GG_FOLDERS B ON A.FOLDER_ID=B.ID LEFT JOIN WORKFLOW_BASE C ON A.BUSINESS_ID= C.ID WHERE A.ID=:fileId"; Map map=baseDao.queryForMap(sqlString1, new SqlParameter("fileId",fileId)); String f_id=map.get("FOLDER_ID")+""; String f_name=map.get("FOLDER_NAME")+""; String sqlString="SELECT P_ID,FOLDER_NAME FROM GG_FOLDERS WHERE ID=:f_id"; if("0".equals(f_id)){ map.put("FOLDER_NAME", "公司文档分类树"); }else{ for(int i=0;i<2;i++){ if(!StringUtil.isEmpty(f_id)){ SqlParameter parameter=new SqlParameter(); parameter.put("f_id", f_id); Map map2=baseDao.queryForMap(sqlString, parameter); f_id=map2.get("P_ID")+""; if(i==0){ f_name=""; } if(map2.get("FOLDER_NAME")!=null){ f_name="/"+map2.get("FOLDER_NAME")+f_name; } } } if(!StringUtil.isEmpty(f_id)){ f_name="..."+f_name; } if(StringUtil.isEmpty(f_name)){ map.put("FOLDER_NAME",""); }else{ map.put("FOLDER_NAME", f_name); } } return map; } @Override public int querymyfileCount(Map params) { StringBuilder sqlBuilder=new StringBuilder("SELECT COUNT(A.ID) FROM GG_FILES A " + " WHERE A.DEL_FLAG=1"); getSql(sqlBuilder,params); return baseDao.queryForInteger(sqlBuilder.toString(), params); } @Override public PageInfo querymyfileData(PageInfo pageInfo,Map params) { StringBuilder sqlBuilder=new StringBuilder("SELECT A.ID,A.FILE_NAME AS NAME,A.FILE_PATH AS PATH,A.FILE_SIZE,A.FILE_FORMAT,A.ORDERNUM,A.FOLDER_ID AS P_ID,A.CREATE_TIME,2 AS FILE_TYPE,A.USER_NAME,A.AUDIT_STATE,B.FOLDER_NAME FROM GG_FILES A " + " LEFT JOIN GG_FOLDERS B ON A.FOLDER_ID=B.ID WHERE A.DEL_FLAG=1"); getSql(sqlBuilder, params); sqlBuilder.append(" ORDER BY CREATE_TIME DESC"); PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sqlBuilder .toString(), params); List list = info.getDatas(); for (Map map : list) { if ("1".equals(map.get("FILE_TYPE") + "")) { map.put("icon", "folder"); map.put("size", "--"); } else { String icon = StringUtil.docSuffer(map.get("FILE_FORMAT") + ""); map.put("icon", icon); String size = ""; try { size=StringUtil.getFileSize(Double.parseDouble(map.get("FILE_SIZE")+"")); } catch (Exception e) { } map.put("size", size); } String f_id=map.get("P_ID")+""; String f_name=map.get("FOLDER_NAME")+""; String sqlString="SELECT P_ID,FOLDER_NAME FROM GG_FOLDERS WHERE ID=:f_id"; for(int i=0;i<2;i++){ if(!StringUtil.isEmpty(f_id)){ SqlParameter parameter=new SqlParameter(); parameter.put("f_id", f_id); Map map2=baseDao.queryForMap(sqlString, parameter); f_id=map2.get("P_ID")+""; if(i==0){ f_name=""; } if(map2.get("FOLDER_NAME")!=null){ f_name="/"+map2.get("FOLDER_NAME")+f_name; } } } if(!StringUtil.isEmpty(f_id)){ f_name="..."+f_name; } if(StringUtil.isEmpty(f_name)){ map.put("FOLDER_NAME",""); }else{ map.put("FOLDER_NAME", f_name); } } return info; } @Override public void docomitFile(Map params) { String sql="UPDATE GG_FILES SET AUDIT_STATE=:audit_state ,CURRENT_ID=:curId,FILE_NOTE=:note WHERE ID=:id"; params.put("audit_state", Constants.FILE_STATE_DSH); baseDao.execute(sql, params); } @Override public void doeditFile(Map params) { String sql="UPDATE GG_FILES SET FOLDER_ID=:folderId,FILE_NOTE=:note,FILE_FORMAT=:EXT_NAME," + "FILE_NAME=:FILE_NAME,FILE_PATH=:FILE_PATH,FILE_SIZE=:FILE_SIZE,FILE_NAME=:FILE_NAME WHERE ID=:id"; baseDao.execute(sql, params); } @Override public void docheckFile(Map params) { String sql="UPDATE GG_FILES SET AUDIT_STATE=:flag WHERE ID=:id"; baseDao.execute(sql, params); } }