ecology_maven/com/api/doc/search/util/DocListUtil.java

801 lines
33 KiB
Java
Raw Normal View History

2021-11-14 15:29:16 +08:00
package com.api.doc.search.util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.api.browser.bean.SearchConditionOption;
import com.api.browser.util.ConditionType;
import com.engine.doc.util.CheckPermission;
import com.engine.doc.util.TimeZoneUtil;
import com.engine.hrm.biz.HrmClassifiedProtectionBiz;
import weaver.docs.docs.DocManager;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.systeminfo.setting.HrmUserSettingComInfo;
/**
* sqlwhere
*
* @author wangqs
*/
public class DocListUtil {
private String sqlWhere = " t1.id=t2.sourceid ";
private boolean needRight = true;
public DocListUtil(HttpServletRequest request, User user, DocTableType docTableType) {
this.packageCondition(request, user, docTableType);
}
public DocListUtil(
HttpServletRequest request, User user, DocTableType docTableType, boolean needRight) {
if (!needRight || user == null) { // user为null登录前门户元素more页面
sqlWhere = "";
this.needRight = false;
}
this.packageCondition(request, user, docTableType);
}
/** 封装查询条件 */
private void packageCondition(HttpServletRequest request, User user, DocTableType docTableType) {
String belongtoids = "";
if (needRight) {
HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo();
String belongtoshow = userSetting.getBelongtoshowByUserId(user.getUID() + "");
belongtoids = user.getBelongtoids();
if ("1".equals(belongtoshow) && "0".equals(user.getAccount_type()) && !"".equals(belongtoids))
belongtoids += "," + user.getUID();
else belongtoids = "";
}
Enumeration paramNames = request.getParameterNames();
String docstatus = "";
String customSql = "";
if (docTableType == DocTableType.DOC_COPYMOVE) {
sqlWhere = " t1.seccategory = " + request.getParameter("sourceId");
}
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String paramValue = Util.null2String(request.getParameter(paramName));
boolean isCustom = true; // 是否是自定义字段
for (DocCondition condition : DocCondition.values()) {
if (paramValue.isEmpty()) continue;
if (condition.getConditionType() == ConditionType.DATE) {
if (paramName.equals(condition.getName() + ConditionUtil.DATE_SELECT)
&& !"6".equals(paramValue)) { // 只有6-时间范围,页面才传开始到结束时间,这里需要自己处理
sqlWhere += packDateType(condition.getName(), paramValue, condition);
} else if (paramName.equals(condition.getName() + ConditionUtil.DATE_FROM)) {
// if(paramValue.equals(request.getParameter(condition.getName() +
// ConditionUtil.DATE_TO))){ //开始日期==结束日期
// paramValue = TimeZoneUtil.getServerDate1(paramValue,"begin");
// sqlWhere += " and " + condition.getName() + "='" + paramValue + "'";
// }else{
String time_paramValue = TimeZoneUtil.getServerDate1(paramValue, "begin");
// if(!paramValue.equals(time_paramValue)){
// time_paramValue = paramValue;
// }
if ("doclastmoddate".equals(condition.getName())
|| "doccreatedate".equals(condition.getName())) {
String doclastmodtime = TimeZoneUtil.getServertime1(paramValue, "begin");
sqlWhere +=
TimeZoneUtil.handDateCondition(
"6", paramValue, "", condition.getName(), "", false);
} else {
sqlWhere +=
" and "
+ condition.getName()
+ ">='"
+ time_paramValue
+ "'"; // + " and " + condition.getName() + "=" + paramValue;
}
// }
} else if (paramName.equals(condition.getName() + ConditionUtil.DATE_TO)) {
// if(!paramValue.equals(request.getParameter(condition.getName() +
// ConditionUtil.DATE_FROM))){ //开始日期!=结束日期
// paramValue = TimeZoneUtil.getServerDate1(paramValue,"end");
String time_paramValue = TimeZoneUtil.getServerDate1(paramValue, "end");
// if(!paramValue.equals(time_paramValue)){
// time_paramValue = paramValue;
// }
if ("doclastmoddate".equals(condition.getName())
|| "doccreatedate".equals(condition.getName())) {
String doclastmodtime = TimeZoneUtil.getServertime1(paramValue, "end");
sqlWhere +=
TimeZoneUtil.handDateCondition(
"6", "", paramValue, condition.getName(), "", false);
// sqlWhere += " and (" + condition.getName() + "<='" + time_paramValue + "'"
// + " and " + "doclastmodtime<='"+ doclastmodtime +"')";
} else {
sqlWhere +=
" and "
+ condition.getName()
+ "<='"
+ time_paramValue
+ "'"; // + " and " + condition.getName() + "=" + paramValue;
}
// sqlWhere += " and " + condition.getName() + "<='" + time_paramValue + "'";
// }
}
continue;
}
if (condition.getConditionType() == ConditionType.SCOPE) {
if (paramName.equals(DocCondition.REPLAY_DOC_COUNT + ConditionUtil.INTERVAL_FROM)) {
String _val = Util.getIntValue(paramValue, 0) + "";
if (condition.getDbType() != DbType.INT) {
_val = "'" + _val.replace("'", "'") + "'";
}
sqlWhere += " and " + condition.getName() + " >= " + _val;
} else if (paramName.equals(DocCondition.REPLAY_DOC_COUNT + ConditionUtil.INTERVAL_TO)) {
String _val = Util.getIntValue(paramValue, 0) + "";
if (condition.getDbType() != DbType.INT) {
_val = "'" + _val.replace("'", "'") + "'";
}
sqlWhere += " and " + condition.getName() + " <= " + _val;
}
}
if (condition.getName().equals(paramName)) {
isCustom = false;
if (condition.getLogic() == LogicOperation.CUSTOM) {
if (paramName.equals(DocCondition.DOC_SUBJECT.getName())) { // 标题
sqlWhere += " and " + getDocSubjectSql(paramValue);
} else if (paramName.equals(DocCondition.KEYWORD.getName())) { // 关键字
sqlWhere += " and " + getKeyWordSql(paramValue);
} else if (paramName.equals(DocCondition.DEPARTMENT_ID.getName())) { // 创建部门
sqlWhere +=
" and exists(select 1 from HrmResource where departmentid="
+ paramValue
+ " and id=t1.doccreaterid)";
} else if (paramName.equals(DocCondition.CREATER_SUBCOMPANY_ID.getName())) { // 创建人分部
sqlWhere +=
" and exists(select 1 from HrmResource where subcompanyid1="
+ paramValue
+ " and id=t1.doccreaterid)";
} else if (paramName.equals(DocCondition.OWNER_DEPARTMENT_ID.getName())) { // 所有者部门
sqlWhere +=
" and exists(select 1 from HrmResource where departmentid="
+ paramValue
+ " and id=t1.ownerid)";
} else if (paramName.equals(DocCondition.OWNER_SUBCOMPANY_ID.getName())) { // 所有者分部
sqlWhere +=
" and exists(select 1 from HrmResource where subcompanyid1="
+ paramValue
+ " and id=t1.ownerid)";
} else if (paramName.equals(DocCondition.DATE2DURING.getName())) { // 修改期间
if (Util.getIntValue(paramValue, 0) > 36
|| Util.getIntValue(paramValue, 0) < 1) { // 表示全部
continue;
}
sqlWhere +=
" and t1.doclastmoddate>='"
+ getDate2During(Util.getIntValue(paramValue, 0))
+ "'";
} else if (paramName.equals(DocCondition.DOC_STATUS.getName())) { // 文档状态
docstatus = paramValue;
} else if (paramName.equals(DocCondition.TREE_DOC_FIELD_ID.getName())) { // 虚拟目录
paramValue = paramValue.startsWith(",") ? paramValue.substring(1) : paramValue;
paramValue =
paramValue.endsWith(",")
? paramValue.substring(0, paramValue.length() - 1)
: paramValue;
paramValue =
paramValue.indexOf(",") == -1
? (" = " + paramValue)
: (" in (" + paramValue + ")");
sqlWhere +=
" and exists(select 1 from DocDummyDetail where docid=t1.id and catelogid "
+ paramValue
+ ")";
}
} else if (condition.getLogic() == LogicOperation.EQ_OR_IN) {
paramValue = paramValue.startsWith(",") ? paramValue.substring(1) : paramValue;
paramValue =
paramValue.endsWith(",")
? paramValue.substring(0, paramValue.length() - 1)
: paramValue;
// 分为文档订阅部分的高级搜索条件拼接
if (paramValue.indexOf(",") == -1) {
if (condition.getDbType() == DbType.VARCHAR)
paramValue = "'" + paramValue.replace("'", "''") + "'";
paramValue = " = " + paramValue;
} else {
if (condition.getDbType() == DbType.VARCHAR)
paramValue = "'" + paramValue.replace("'", "''").replace(",", "','") + "'";
paramValue = " in (" + paramValue + ")";
}
if (condition == DocCondition.SUBSCRIPTION_APPROVE_DATE
|| condition == DocCondition.SUBSCRIPTION_DATE
|| condition == DocCondition.SUBSCRIPTION_STATE) {
sqlWhere += " and ds." + paramName + paramValue;
} else {
sqlWhere += " and t1." + paramName + paramValue;
}
} else if (condition.getLogic() != null) { // 分为文档订阅部分的高级搜索条件拼接
String _code = condition.getLogic().getCode();
if (_code == null) continue;
if (condition.getDbType() == DbType.VARCHAR) {
if (_code.indexOf("{#}") > -1) {
paramValue = paramValue.replace("'", "''");
} else {
paramValue = "'" + paramValue.replace("'", "''") + "'";
}
}
if (condition == DocCondition.SUBSCRIPTION_APPROVE_DATE
|| condition == DocCondition.SUBSCRIPTION_DATE
|| condition == DocCondition.SUBSCRIPTION_STATE) {
sqlWhere +=
" and ds."
+ paramName
+ (_code.indexOf("{#}") > -1
? _code.replace("{#}", paramValue)
: (_code + paramValue));
} else {
sqlWhere +=
" and t1."
+ paramName
+ (_code.indexOf("{#}") > -1
? _code.replace("{#}", paramValue)
: (_code + paramValue));
}
}
break;
}
}
// 处理自定义字段
// 如果开启了自定义查询,当前的条件是自定义字段中的值,则进行检查
if (isCustom
&& ConditionUtil.isCustomParamNameNew(paramName)
&& ConditionUtil.isCustomParamValue(paramName)) {
String id = ConditionUtil.getCustomIdNew(paramName);
int secid = Util.getIntValue(Util.null2String(request.getParameter("seccategory")));
if (docTableType == DocTableType.DOC_COPYMOVE) {
sqlWhere = " t1.seccategory = " + request.getParameter("sourceId");
}
String fieldValue = paramValue;
String fieldOpt =
Util.null2String(
request.getParameter(
ConditionUtil.CUSTOM_KEY_PREV + id + ConditionUtil.CUSTOM_KEY_OPT),
"-1");
String customSqlWhere = ConditionUtil.getCustomSql(id, secid, user, fieldValue, fieldOpt);
if (!customSqlWhere.isEmpty()) {
customSql += " and " + customSqlWhere;
}
}
}
String eqOrInBelongtoidsForSql =
needRight
? (belongtoids.isEmpty() ? (" = " + user.getUID()) : (" in (" + belongtoids + ")"))
: "";
// 处理特殊字段
docstatus = docstatus.startsWith(",") ? docstatus.substring(1) : docstatus;
docstatus =
docstatus.endsWith(",") ? docstatus.substring(0, docstatus.length() - 1) : docstatus;
if (docTableType == DocTableType.MY_DOC_TABLE) { // 我的文档
if (docstatus.isEmpty()) {
sqlWhere += " and t1.docstatus != 8 and t1.docstatus != 9 and t1.docstatus <=9";
} else {
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
sqlWhere +=
" and (t1.doccreaterid "
+ eqOrInBelongtoidsForSql
+ " or t1.ownerid "
+ eqOrInBelongtoidsForSql
+ ")";
} else if (docTableType == DocTableType.DOC_BATCHSHARE) { // 批量共享
if (needRight) {
// sqlWhere += " and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (sharelevel>1 or
// (t1.doccreaterid="+user.getUID()+" or t1.ownerid="+user.getUID()+"))))";
sqlWhere +=
" and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (t1.doccreaterid="
+ user.getUID()
+ " or t1.ownerid="
+ user.getUID()
+ ")))";
} else {
sqlWhere += " and t1.docstatus in(1,2,5,7) ";
}
} else if (docTableType == DocTableType.DOC_COPYMOVE
|| docTableType == DocTableType.ENGINE_DOC_BATCHSHARE) { // 复制、移动 后台批量调整共享
if (docstatus.isEmpty()) {
sqlWhere += " and t1.docstatus in(1,2,5,7)";
} else {
docstatus = docstatus.equals("1") ? "1,2" : docstatus; // 页面查询条件1表示 同时查询 正常、生效两种状态
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
} else if (docTableType == DocTableType.DOC_RECYCLE) { // 文档回收站
if (!docstatus.isEmpty()) {
docstatus = docstatus.equals("1") ? "1,2" : docstatus; // 页面查询条件1表示 同时查询 正常、生效两种状态
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
} else if (docTableType == DocTableType.ENGINE_DOC_RECYCLE) { // 文档回收(后台)
if (!docstatus.isEmpty()) {
docstatus = docstatus.equals("1") ? "1,2" : docstatus; // 页面查询条件1表示 同时查询 正常、生效两种状态
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
} else if (docTableType == DocTableType.DOC_SUBSCRIPTION_HISTORY) { // 文档订阅历史
if (docstatus.isEmpty()) {
// sqlWhere += " and t1.docstatus in(1,2,5) ";
if (needRight) {
// sqlWhere += " and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (sharelevel>1 or
// (t1.doccreaterid="+user.getUID()+" or t1.ownerid="+user.getUID()+"))))";
// ayh 默认可以查看全部文档,包括非正常状态的文档
/* sqlWhere +=
" and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (t1.doccreaterid="
+ user.getUID()
+ " or t1.ownerid="
+ user.getUID()
+ ")))";*/
sqlWhere +=
" and (t1.docstatus in(1,2,3,4,5,6,7,8,9) or (t1.docstatus=7 and (t1.doccreaterid="
+ user.getUID()
+ " or t1.ownerid="
+ user.getUID()
+ ")))";
} else {
// ayh 默认可以参看全部文档,包括处于非正常状态的文档
// sqlWhere += " and t1.docstatus in(1,2,5) ";
sqlWhere += " and t1.docstatus in(1,2,3,4,5,6,7,8,9) ";
}
} else {
docstatus = docstatus.equals("1") ? "1,2" : docstatus; // 页面查询条件1表示 同时查询 正常、生效两种状态
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
if (docTableType == DocTableType.NEWEST_DOC
|| docTableType == DocTableType.NO_READ_DOC) { // 最新文档(未读文档)
sqlWhere +=
" and t1.doccreaterid "
+ (belongtoids.isEmpty()
? ("<> " + user.getUID())
: ("not in (" + belongtoids + ")"));
}
} else if (docTableType == DocTableType.ENGINE_DOC_PROP_SET) { // 文档弹出窗口设置
sqlWhere += " and t1.docstatus in(1,2,5) and t1.docextendname = 'html'";
} else {
if (docstatus.isEmpty()) {
// sqlWhere += " and t1.docstatus in(1,2,5) ";
if (needRight) {
// sqlWhere += " and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (sharelevel>1 or
// (t1.doccreaterid="+user.getUID()+" or t1.ownerid="+user.getUID()+"))))";
// ayh
// sqlWhere +=
// " and (t1.docstatus in(1,2,5) or (t1.docstatus=7 and (t1.doccreaterid="
// + user.getUID()
// + " or t1.ownerid="
// + user.getUID()
// + ")))";
sqlWhere +=
" and (t1.docstatus in(1,2,3,4,5,6,7,8,9) or (t1.docstatus=7 and (t1.doccreaterid="
+ user.getUID()
+ " or t1.ownerid="
+ user.getUID()
+ ")))";
} else {
// ayh
// sqlWhere += " and t1.docstatus in(1,2,5) ";
sqlWhere += " and t1.docstatus in(1,2,3,4,5,6,7,8,9) ";
}
} else {
docstatus = docstatus.equals("1") ? "1,2" : docstatus; // 页面查询条件1表示 同时查询 正常、生效两种状态
sqlWhere +=
" and t1.docstatus "
+ (docstatus.indexOf(",") > -1 ? ("in (" + docstatus + ")") : ("=" + docstatus));
}
if (docTableType == DocTableType.NEWEST_DOC
|| docTableType == DocTableType.NO_READ_DOC) { // 最新文档(未读文档)
sqlWhere +=
" and t1.doccreaterid "
+ (belongtoids.isEmpty()
? ("<> " + user.getUID())
: ("not in (" + belongtoids + ")"));
}
}
String isNew = Util.null2String(request.getParameter("isNew"));
if ("yes".equals(isNew)
|| docTableType == DocTableType.NEWEST_DOC
|| docTableType == DocTableType.NO_READ_DOC) {
sqlWhere +=
" and not exists(select 1 from docReadTag where t1.id=docid and userid "
+ eqOrInBelongtoidsForSql
+ " and usertype=1)";
}
if (!customSql.isEmpty()) {
sqlWhere +=
" and exists(select 1 from cus_fielddata tcm where scope='"
+ ConditionUtil.CUSTOM_SCOPE
+ "' and id=t1.id "
+ customSql
+ ")";
}
if (docTableType == DocTableType.DOC_BATCHSHARE && needRight) { // 批量共享(不需要权限的是后台批量共享)
// sqlWhere += " and sharelevel=3 and exists(select 1 from DocSecCategory where
// DocSecCategory.id=t1.secCategory and DocSecCategory.shareable='1')";
sqlWhere +=
" and exists(select 1 from DocSecCategory where DocSecCategory.id=t1.secCategory and DocSecCategory.shareable='1')";
}
// if(needRight){
if (docTableType == DocTableType.DOC_OUT_TABLE) { // 登录前门户more(只取内部)
boolean secretFlag = CheckPermission.isOpenSecret();
if (secretFlag) sqlWhere += " and t1.secretLevel=" + DocManager.DEFAILT_SECRET_LEVEL;
} else {
sqlWhere += DocListUtil.getSecretSql(user, " and t1.secretLevel");
}
// }
// 统一过滤字段
if (docTableType != DocTableType.DOC_SUBSCRIPTION_HISTORY
&& docTableType != DocTableType.DOC_SUBSCRIPTION_APPROVE
&& docTableType != DocTableType.DOC_SUBSCRIPTION_BACK
&& docTableType != DocTableType.DOC_RECYCLE) { // 非文档订阅过虑历史文件 、 非回收站
sqlWhere += " and (t1.ishistory is null or t1.ishistory = 0)";
}
if (docTableType == DocTableType.DOC_RECYCLE) { // 文档回收站
sqlWhere += " and t1.ishistory != 1 ";
sqlWhere += " and t1.docdeleteuserid=" + user.getUID();
} else if (docTableType == DocTableType.ENGINE_DOC_RECYCLE) { // 文档回收站(后台)
sqlWhere += " and t1.ishistory != 1 ";
} else {
sqlWhere += " and (t1.isreply is null or t1.isreply='' or t1.isreply='0')";
}
sqlWhere = sqlWhere.trim().startsWith("and") ? sqlWhere.substring(4) : sqlWhere;
// 初次进入列表,代入默认值条件
packDefaultValue(request, user, docTableType);
}
public static String getSecretSql(User user, String column) {
boolean secretFlag = CheckPermission.isOpenSecret();
if (secretFlag) {
HrmClassifiedProtectionBiz hcpb = new HrmClassifiedProtectionBiz();
String userSecretLevel = user == null ? "" : hcpb.getMaxResourceSecLevel(user);
return column + ">=" + Util.getIntValue(userSecretLevel, DocManager.DEFAILT_SECRET_LEVEL); //
}
return "";
}
public static Map<String, String> getCreateDate(HttpServletRequest request) {
String select =
request.getParameter(DocCondition.DOC_CREATEDATE_SELECT + ConditionUtil.DATE_SELECT);
String from =
request.getParameter(DocCondition.DOC_CREATEDATE_SELECT + ConditionUtil.DATE_FROM);
String to = request.getParameter(DocCondition.DOC_CREATEDATE_SELECT + ConditionUtil.DATE_TO);
Map<String, String> dateMap = new HashMap<String, String>();
if ("0".equals(select)) {
return dateMap;
}
dateMap = packDate(select, from, to);
from = dateMap.get("from");
to = dateMap.get("to");
if (from != null && !from.isEmpty()) {
from = new TimeZoneUtil().getServerDate(from + " 00:00:00");
}
if (to != null && !to.isEmpty()) {
to = new TimeZoneUtil().getServerDate(to + " 23:59:59");
}
dateMap.put(DocCondition.DOC_CREATEDATE_SELECT.getName() + ConditionUtil.DATE_FROM, from);
dateMap.put(DocCondition.DOC_CREATEDATE_SELECT.getName() + ConditionUtil.DATE_TO, to);
return dateMap;
}
/**
*
*
* @author wangqs
*/
public void packDefaultValue(HttpServletRequest request, User user, DocTableType docTableType) {
//
/***
* String during = request.getParameter(DocCondition.DATE2DURING.getName());
* if(during == null){
* List<SearchConditionOption> options = ConditionUtil.getDateSelectDuring(user.getLanguage());
* int date = 0;
* for(SearchConditionOption option : options){
* if(option.isSelected()){
* date = Util.getIntValue(option.getKey(),0);
* }
* }
* if(date >= 1 && date <= 36){
*
* sqlWhere += " and t1.doclastmoddate>='" + getDate2During(date) + "'";
* }
* }
*
***/
// 最新文档有tab页未读文档没有tab页
if (docTableType == DocTableType.NEWEST_DOC) { // 最新文档
try {
sqlWhere += this.packSearchTabDate(request.getParameter(ConditionUtil.TAB_REQ_NAME));
} catch (Exception e) {
e.printStackTrace();
}
} else if (docTableType == DocTableType.MY_DOC_TABLE
|| docTableType == DocTableType.SEARCH_DOC_TABLE
|| docTableType == DocTableType.CATEGORY_DOC_TABLE) { // 我的文档、查询文档、文档目录
try {
// 0-全部1-今天2-本周3-本月4-本季5-本年
int tab =
Util.getIntValue(
request.getParameter(ConditionUtil.TAB_REQ_NAME), ConditionUtil.TAB_DATE_DEFAULT);
String updateDate =
Util.null2String(
request.getParameter(
DocCondition.DOC_LAST_MODDATE.getName() + ConditionUtil.DATE_SELECT));
if (updateDate.isEmpty()) { // 没有修改日期,取默认时间
// sqlWhere += packDateType(DocCondition.DOC_LAST_MODDATE.getName(),tab + "");
}
} catch (Exception e) {
e.printStackTrace();
}
}
sqlWhere = sqlWhere.trim().startsWith("and") ? sqlWhere.substring(4) : sqlWhere;
}
/** 处理修改期间(最近n月)条件的查询 */
public static String getDate2During(int month) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -30 * month);
Date cDate = new Date(calendar.getTimeInMillis());
return new SimpleDateFormat("yyyy-MM-dd").format(cDate);
}
/** 处理特殊时间类型(今天、本周、本月....)条件查询 0-全部1-今天2-本周3-本月7-上个月4-本季5-本年8-上一年6-指定日期范围 */
public static String packDateType(String column, String value, DocCondition condition) {
Map<String, String> dateMap = packDate(value, "", "");
String sdate = Util.null2String(dateMap.get("from"));
String edate = Util.null2String(dateMap.get("to"));
if ("0".equals(value)) {
return "";
}
if (condition == DocCondition.SUBSCRIPTION_APPROVE_DATE
|| condition == DocCondition.SUBSCRIPTION_DATE
|| condition == DocCondition.SUBSCRIPTION_STATE) {
if (!sdate.isEmpty()) {
if ("8".equals(value)) {
return TimeZoneUtil.handDateCondition(value, sdate, edate, column, "ds", false, true);
} else {
return TimeZoneUtil.handDateCondition(value, sdate, edate, column, "ds", false, true);
}
// if(sdate.equals(edate)){
//// return TimeZoneUtil.handDateCondition(value,sdate,"",column,"ds",false,true);
// return " and ds." + column + "='" + sdate + "'";
// }else{
//// return TimeZoneUtil.handDateCondition(value,sdate,"",column,"ds",false,true);
// String test = " and ds." + column + ">='" + sdate + "' and ds." + column + "<='" +
// edate + "'";
// return test;
// }
}
} else {
if (!sdate.isEmpty()) {
if ("8".equals(value)) {
return TimeZoneUtil.handDateCondition(value, sdate, edate, column, "t1", false, true);
} else {
return TimeZoneUtil.handDateCondition(value, sdate, edate, column, "t1", false, true);
}
// if(sdate.equals(edate)){
// return " and t1." + column + "='" + sdate + "'";
// }else{
// String test = " and t1." + column + ">='" + sdate + "' and t1." + column + "<='" +
// edate + "'";
// return test;
// }
}
}
return "";
}
/**
* (....) 0-1-2-3-7-4-5-8-6-
*
* @author wangqs
* @params select-from-to-
*/
public static Map<String, String> packDate(String select, String from, String to) {
Map<String, String> dateMap = new HashMap<String, String>();
String sdate = "";
String edate = TimeUtil.getCurrentDateString();
switch (Util.getIntValue(select, 0)) {
case 1:
sdate = TimeUtil.getCurrentDateString();
break;
case 2:
sdate = TimeUtil.getFirstDayOfWeek();
break;
case 3:
sdate = TimeUtil.getFirstDayOfMonth();
break;
case 4:
sdate = TimeUtil.getFirstDayOfSeason();
break;
case 5:
sdate = TimeUtil.getFirstDayOfTheYear();
break;
case 6:
sdate = from;
edate = to;
case 7:
sdate = TimeUtil.getLastMonthBeginDay();
edate = TimeUtil.getLastMonthEndDay();
break;
case 8:
sdate = TimeUtil.getFirstDayOfLastYear();
edate = TimeUtil.getEndDayOfLastYear();
break;
default:
break;
}
// TimeZoneUtil timeZoneUtil = new TimeZoneUtil();
// //多时区转换
// sdate = timeZoneUtil.getServerDate(sdate,"begin");
// edate = timeZoneUtil.getServerDate(edate,"end");
dateMap.put("from", sdate);
dateMap.put("to", edate);
return dateMap;
}
/** 根据规则 处理有主题条件的查询 */
private String getDocSubjectSql(String docsubject) {
String tmpString = "";
docsubject = docsubject.replaceAll("'", "''").replaceAll("\"", "&quot;");
if ((docsubject.indexOf(" ") == -1 && docsubject.indexOf("+") == -1)
|| (docsubject.indexOf(" ") != -1 && docsubject.indexOf("+") != -1)) {
tmpString += " t1.docsubject like '%" + docsubject + "%'";
} else if (docsubject.indexOf(" ") != -1 && docsubject.indexOf("+") == -1) {
String orArray[] = Util.TokenizerString2(docsubject, " ");
if (orArray.length > 0) {
tmpString += " ( ";
}
for (int i = 0; i < orArray.length; i++) {
tmpString += " t1.docsubject like '%" + orArray[i] + "%'";
if (i + 1 < orArray.length) {
tmpString += " or ";
}
}
if (orArray.length > 0) {
tmpString += " ) ";
}
} else if (docsubject.indexOf(" ") == -1 && docsubject.indexOf("+") != -1) {
String andArray[] = Util.TokenizerString2(docsubject, "+");
for (int i = 0; i < andArray.length; i++) {
tmpString += " t1.docsubject like '%" + andArray[i] + "%'";
if (i + 1 < andArray.length) {
tmpString += " and ";
}
}
}
return tmpString;
}
/** 根据规则 处理有关键字条件的查询 */
private String getKeyWordSql(String keyword) {
String keywordSql = "";
keyword = keyword.trim().replaceAll("'", "''");
ArrayList keywordList = Util.TokenizerString(keyword, " ");
if (keywordList != null && keywordList.size() > 0) {
for (int i = 0; i < keywordList.size(); i++) {
String tempkeyword = (String) keywordList.get(i);
keywordSql +=
keywordSql.equals("")
? " t1.keyword like '%" + tempkeyword + "%' "
: " or t1.keyword like '%" + tempkeyword + "%' ";
}
if (!keywordSql.equals("")) {
keywordSql = " (" + keywordSql + ") ";
}
}
return keywordSql;
}
/**
* tab sql
*
* @author wangqs
*/
private String packSearchTabDate(String tabValue) throws Exception {
String sql = "";
switch (Util.getIntValue(tabValue, ConditionUtil.TAB_DEFAULT_VALUE)) {
case ConditionUtil.TAB_TODAY_VALUE:
sql = " and t1.doccreatedate='" + TimeUtil.getCurrentDateString() + "'";
break;
case ConditionUtil.TAB_WEEK_VALUE:
sql = " and t1.doccreatedate>='" + TimeUtil.getFirstDayOfWeek() + "'";
sql += " and t1.doccreatedate<='" + TimeUtil.getLastDayOfWeek() + "'";
break;
case ConditionUtil.TAB_MONTH_VALUE:
sql = " and t1.doccreatedate>='" + TimeUtil.getFirstDayOfMonth() + "'";
sql += " and t1.doccreatedate<='" + TimeUtil.getLastDayOfMonth() + "'";
break;
case ConditionUtil.TAB_SESSION_VALUE:
sql = " and t1.doccreatedate>='" + TimeUtil.getFirstDayOfSeason() + "'";
sql += " and t1.doccreatedate<='" + TimeUtil.getLastDayDayOfSeason() + "'";
break;
case ConditionUtil.TAB_YEAR_VALUE:
sql = " and t1.doccreatedate>='" + TimeUtil.getFirstDayOfTheYear() + "'";
sql += " and t1.doccreatedate<='" + TimeUtil.getLastDayOfYear() + "'";
break;
default:
break;
}
return sql;
}
public String getSqlWhere() {
// ayh
new BaseBean().writeLog("create sql string from docListUtil, sqlWhere is :" + this.sqlWhere);
return this.sqlWhere;
}
}