package cn.ksource.web.facade.fileManage;
|
|
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 org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@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<String,String> 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<Map> 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<String,String> params) {
|
StringBuilder sql=new StringBuilder("SELECT COUNT(C.ID) FROM(SELECT 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 ID 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<String,String> 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<Map> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<Map> 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<String, String> 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<String, String> 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<String,String> 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<String, String> 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<String, String> 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<String, String> 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<Map> 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<String, String> 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<String, String> 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<String, String> 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<Map> 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<String, String> 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<String, String> 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<String, String> params) {
|
String sql="UPDATE GG_FILES SET AUDIT_STATE=:flag WHERE ID=:id";
|
baseDao.execute(sql, params);
|
|
}
|
}
|