diff --git a/src/com/api/doc/detail/util/CooperativeUtilForDoc.java b/src/com/api/doc/detail/util/CooperativeUtilForDoc.java
new file mode 100644
index 0000000..320534b
--- /dev/null
+++ b/src/com/api/doc/detail/util/CooperativeUtilForDoc.java
@@ -0,0 +1,93 @@
+package com.api.doc.detail.util;
+
+import com.engine.doc.util.IWebOfficeConf;
+import weaver.conn.RecordSet;
+import weaver.general.Util;
+
+public class CooperativeUtilForDoc {
+
+ public static boolean isopencolla(int fileid){
+ RecordSet rs = new RecordSet();
+ String collasql = " select d3.ISCOLLASEC,d3.OPENCOLLAEDIT,d1.ISOPENCOLLA from DOCDETAIL d1,DOCIMAGEFILE d2 ,DOCSECCATEGORY d3 where d1.ID=d2.DOCID and d1.SECCATEGORY=d3.ID and d2.IMAGEFILEID=? order by d2.ID DESC ";
+ rs.executeQuery(collasql,fileid);
+ boolean iscollaborativedoc = false;
+ if(rs.next()){
+ int iscollasec = Util.getIntValue(rs.getString("ISCOLLASEC"), 0);
+ int isopencolla = Util.getIntValue(rs.getString("ISOPENCOLLA"), 0);
+ int opencollaedit = Util.getIntValue(rs.getString("OPENCOLLAEDIT"), 0);
+ iscollaborativedoc = iscollasec ==1 && isopencolla == 1 && opencollaedit==1;
+ }
+ return iscollaborativedoc;
+ }
+
+ public static boolean isColla(int docid){
+ RecordSet rs = new RecordSet();
+ String collasql = " select d1.DOCTYPE,d2.ISCOLLASEC,d1.ISOPENCOLLA from DOCDETAIL d1,DOCSECCATEGORY d2 where d1.ID=? and d1.SECCATEGORY=d2.ID ";
+ rs.executeQuery(collasql,docid);
+ boolean iscollaborativedoc = false;
+ if(rs.next()){
+ int isopencolla = Util.getIntValue(rs.getString("ISOPENCOLLA"), 0);
+ int doctype = Util.getIntValue(rs.getString("DOCTYPE"), 0);
+ iscollaborativedoc = isopencolla == 1;
+ }
+ return iscollaborativedoc;
+ }
+
+ public static boolean isCollaEdit(int docid){
+ RecordSet rs = new RecordSet();
+ String collasql = " select d2.ISCOLLASEC,d2.OPENCOLLAEDIT,d1.ISOPENCOLLA,d1.doctype from DOCDETAIL d1,DOCSECCATEGORY d2 where d1.ID=? and d1.SECCATEGORY=d2.ID ";
+ rs.executeQuery(collasql,docid);
+ boolean iscollaborativedoc = false;
+ if(rs.next()){
+ int isopencolla = Util.getIntValue(rs.getString("ISOPENCOLLA"), 0);
+ int opencollaedit = Util.getIntValue(rs.getString("OPENCOLLAEDIT"), 0);
+ int doctype = Util.getIntValue(rs.getString("doctype"), 0);
+ iscollaborativedoc = isopencolla == 1 && opencollaedit == 1 && doctype==2;
+ }
+ return iscollaborativedoc;
+ }
+
+ public static void openCollaForDoc(int docid){
+ RecordSet rs = new RecordSet();
+ String collasql = " select d2.ISCOLLASEC,d1.ISOPENCOLLA,d1.doctype from DOCDETAIL d1,DOCSECCATEGORY d2 where d1.ID=? and d1.SECCATEGORY=d2.ID ";
+ rs.executeQuery(collasql,docid);
+ boolean iscollaborativesec = false;
+ if(rs.next()){
+ int iscollasec = Util.getIntValue(rs.getString("ISCOLLASEC"), 0);
+ int doctype = Util.getIntValue(rs.getString("doctype"), 0);
+ iscollaborativesec = iscollasec == 1;
+ }
+ if(iscollaborativesec){
+ rs.executeSql(" update docdetail set ISOPENCOLLA=1 where id="+docid);
+ }
+ }
+
+ public static String getmFileType(int fileid){
+ RecordSet rs = new RecordSet();
+ String sql = "select a.imagefileid,a.imagefilename,a.docfiletype,a.versionId,b.filesize from DocImageFile a,Imagefile b " +
+ " where a.imagefileid=b.imagefileid and a.imagefileid="+fileid+" and (a.isextfile <> '1' or a.isextfile is null) order by a.versionId desc";
+ rs.executeQuery(sql);
+ String mFileType = "";
+ int docFileType = rs.getInt("docfiletype");
+ String imageFileName = rs.getString("imagefilename");
+ int versionId = rs.getInt("versionId");
+ if(docFileType == 3){
+ mFileType = ".doc";
+ } else if(docFileType == 7){
+ mFileType = ".docx";
+ }else if(docFileType == 4){
+ mFileType = ".xls";
+ } else if(docFileType == 8){
+ mFileType = ".xlsx";
+ }else if(docFileType == 6){
+ mFileType = ".wps";
+ }else if(docFileType == 10){
+ mFileType = ".et";
+ }else if(docFileType == 12){
+ mFileType = ".html";
+ }else if(imageFileName.toLowerCase().endsWith(".uot") && IWebOfficeConf.isyozoOffice()){
+ mFileType = ".doc";
+ }
+ return mFileType;
+ }
+}
diff --git a/src/com/api/doc/search/service/DocShareService.java b/src/com/api/doc/search/service/DocShareService.java
new file mode 100644
index 0000000..45962da
--- /dev/null
+++ b/src/com/api/doc/search/service/DocShareService.java
@@ -0,0 +1,2356 @@
+package com.api.doc.search.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.api.doc.detail.util.DocSecretLevelUtil;
+import com.engine.hrm.biz.HrmClassifiedProtectionBiz;
+import com.api.doc.detail.util.CooperativeUtilForDoc;
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.crm.Maint.CustomerInfoComInfo;
+import weaver.crm.Maint.CustomerTypeComInfo;
+import weaver.docs.category.SecCategoryComInfo;
+import weaver.docs.docs.DocViewer;
+import weaver.general.BaseBean;
+import weaver.general.IsGovProj;
+import weaver.general.KnowledgeTransMethod;
+import weaver.general.Util;
+import weaver.hrm.User;
+import weaver.hrm.company.DepartmentComInfo;
+import weaver.hrm.company.SubCompanyComInfo;
+import weaver.hrm.companyvirtual.CompanyVirtualComInfo;
+import weaver.hrm.job.JobTitlesComInfo;
+import weaver.hrm.moduledetach.ManageDetachComInfo;
+import weaver.hrm.orggroup.HrmOrgGroupComInfo;
+import weaver.hrm.resource.ResourceComInfo;
+import weaver.hrm.roles.RolesComInfo;
+import weaver.splitepage.operate.SpopForDoc;
+import weaver.systeminfo.SystemEnv;
+
+import com.api.browser.bean.BrowserBean;
+import com.api.browser.bean.SearchConditionItem;
+import com.api.browser.bean.SearchConditionOption;
+import com.api.browser.util.ConditionFactory;
+import com.api.browser.util.ConditionType;
+import com.api.doc.detail.service.DocViewPermission;
+import com.api.doc.detail.util.DocCoopereateUtil;
+import com.api.doc.search.util.BrowserType;
+import com.api.doc.search.util.DocSptm;
+import com.api.doc.search.util.DocTableType;
+import com.api.doc.search.util.PatternUtil;
+import com.cloudstore.dev.api.util.Util_TableMap;
+import com.engine.doc.util.WaterMarkUtil;
+
+/**
+ * 文档权限
+ * @author wangqs
+ * */
+public class DocShareService {
+
+
+ public static String OBJ_TYPE = "objType"; //对象类型
+ public static String OBJ_ID = "obj_id";
+ public static String SEC_LEVEL = "seclevel";
+ public static String DOWNLOAD = "download";
+ public static String HAS_SUB = "has_sub";
+ public static String FROM_LEVEL = "from_Level";
+ public static String TO_LEVEL = "to_Level";
+ public static String POST_LEVEL = "post_Level";
+ public static String TARGET_OBJECT_ID = "target_object_id";
+ public static String ROLE_LEVEL = "role_level";
+ public static String CREATER_ORGID = "creater_orgid";
+
+ public static final int OBJ_TYPE_CUSTOMER_TYPE = -1; //对象类型-客户类型
+ public static final int OBJ_TYPE_USER = 1; //对象类型-人力资源
+ public static final int OBJ_TYPE_SUB_COMPANY = 2;//对象类型-分部
+ public static final int OBJ_TYPE_DEPARTMENT = 3;//对象类型-部门
+ public static final int OBJ_TYPE_ROLE = 4;//对象类型-角色
+ public static final int OBJ_TYPE_ALL = 5;//对象类型-所有人
+ public static final int OBJ_TYPE_GROUP = 6;//对象类型-群组
+ public static final int OBJ_TYPE_CUSTOMER = 9; //对象类型-指定客户
+ public static final int OBJ_TYPE_POST = 10;//对象类型-岗位
+ public static final int OBJ_TYPE_CREATER_SELF = 80;//对象类型-创建人本人
+ public static final int OBJ_TYPE_CREATER_SELF_2 = -80;//对象类型-创建人本人
+ public static final int OBJ_TYPE_CREATER_MANAGER = 81;//对象类型-创建人直接上级
+ public static final int OBJ_TYPE_CREATER_MANAGER_2 = -81;//对象类型-创建人直接上级
+ public static final int OBJ_TYPE_CREATER_ALL_MANAGER = 82;//对象类型-创建人所有上级
+ public static final int OBJ_TYPE_CREATER_SUB_COMPANY = 84;//对象类型-创建人本分部
+ public static final int OBJ_TYPE_CREATER_DEPARTMENT = 85;//对象类型-创建人本部门
+
+ public static final int OBJ_TYPE_DEFAULT = OBJ_TYPE_USER;
+
+ public static final int SEC_LEVEL_VIEW = 1; //查看
+ public static final int SEC_LEVEL_EDIT = 2;//编辑
+ public static final int SEC_LEVEL_ALL = 3;//完全控制
+ public static final int SEC_LEVEL_DEFAULT = SEC_LEVEL_VIEW;
+
+ public static final int ROLE_LEVEL_DEPARTMENT = 0; //部门
+ public static final int ROLE_LEVEL_SUB_COMPANY = 1; //分部
+ public static final int ROLE_LEVEL_ALL = 2; //总部
+ public static final int ROLE_LEVEL_DEFAULT = ROLE_LEVEL_DEPARTMENT;
+
+ public static final int POST_LEVEL_ALL = 1;
+ public static final int POST_LEVEL_SUB_COMPANY = 2;
+ public static final int POST_LEVEL_DEPARTMENT = 3;
+ public static final int POST_LEVEL_DEFAULT = POST_LEVEL_ALL;
+
+ public static final int SEC_LEVEL_FROM = 10; //安全级别 默认起始值
+ public static final int SEC_LEVEL_TO = 100; //安全级别 默认结束值
+
+ private static int sharelevel=1; // 1.查看,2.编辑,3.完全控制
+
+
+
+
+ /**
+ * 文档权限列表
+ * @params user
+ * @params docid
+ * @params params 自定义参数集
+ * @author wangqs
+ * */
+ public Map getShareList(User user,int docid,Map params){
+
+ SecCategoryComInfo scci = new SecCategoryComInfo();
+ String secId= "";
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select seccategory from docdetail where id=" + docid);
+ if(rs.next()){
+ secId=rs.getString("seccategory");
+ }
+ boolean nodownload = scci.getNoDownload(secId).equals("1");//得到此分录下的文档最大可上传附件大小
+
+ String col = "";
+
+ col += "";//共享类型
+ col += ""; //共享对象
+ col += ""; //对象名称
+ col += ""; //安全级别
+ col += ""; //权限
+ if(!nodownload){
+ col += "";//下载权限
+ }
+
+ String sourceparams = "id:"+docid+"";
+ if(params != null && "1".equals(params.get("iscooper"))){
+ sourceparams += "+iscooper:1";
+ }
+
+ String tableString =
+ "" +
+ ""+
+ " "+
+ "" +
+ col +
+ ""+
+ "
";
+
+ String sessionkey = DocTableType.DOC_SHARE.getPageUid() + "_" + Util.getEncrypt(Util.getRandom());
+ Util_TableMap.setVal(sessionkey, tableString);
+
+ Map apidatas = new HashMap();
+
+ apidatas.put("sessionkey", sessionkey);
+
+ return apidatas;
+ }
+
+ public List
\n\n")) { //处理富文本多次换行
+ valueSpan = valueSpan.replaceAll("
\n\n", "
\n");
+ }
+ mss.put(jsonName + "span",convertChar(valueSpan,wrapClose));
+ }
+
+ mss.put(jsonName, convertChar(value,wrapClose));
+
+ //logger.error("end jsonName :" + jsonName);
+ }
+ else {
+ mss.put(jsonName, convertChar(value,wrapClose));
+ mss.put(jsonName + "span", convertChar(valueSpan,wrapClose));
+ }
+ if(obj.containsKey("linkvaluecolumn")) {
+ String id = obj.getString("linkvaluecolumn");
+ mss.put(id,rs.getString(id));
+ }
+
+ //移动端处理
+ if (sqlObj.containsKey("ismobile"))
+ {
+ if (obj.containsKey("mobiletransmethod") && StringUtils.isNotBlank(obj.getString("mobiletransmethod"))) {
+
+ try {
+ valueSpan = Util.null2String(Util_public.doMobileTransMethod(obj, rs));
+
+ }catch(Exception e) {
+ e.printStackTrace();
+ //logger.error(e.getMessage());
+ }
+
+ if ("".equals(valueSpan)) {
+ mss.put(jsonName + "span", "");
+ } else {
+ mss.put(jsonName + "span", convertChar(valueSpan,wrapClose));
+ }
+ mss.put(jsonName, convertChar(value,wrapClose));
+
+ }
+
+ //过滤移动端的 Link标签
+ if (StringUtil.isNotNullAndEmpty(valueSpan))
+ {
+ valueSpan=Util_public.deletcLink(valueSpan);
+ mss.put(jsonName + "span", convertChar(valueSpan,wrapClose));
+ }
+ }
+ //移动端处理
+ }
+ if (null != getBroList && getBroList.size() > 0) {
+ for (int i = 0; i < getBroList.size(); i++) {
+ if (!mss.containsKey(getBroList.get(i))) {
+ mss.put((String) getBroList.get(i),
+ rs.getString(getBroList.get(i) + ""));
+ }
+ }
+ }
+ for(int i=0; i> getDevTableDatas(JSONObject sqlObj,
+ JSONArray columns, String min, String max, String sortParams,
+ List getBroList, TimeMarker timeMarker) {
+ // TODO Auto-generated method stub
+ StringBuilder sb = new StringBuilder();
+ String usedpri = Util.null2String(sqlObj.getString("usingPriSql"));
+ String pripagesql = Util.null2String(sqlObj.getString("priPageSql"));
+ String tWhere = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("sqlwhere")));
+ String privatePageSql = "";
+ // logger.error("sqlwhere is :" + tWhere);
+ if ("true".equals(usedpri) && !"".equals(pripagesql)) {
+ pripagesql = pripagesql.replace("tmp.maxNum", max);
+ pripagesql = pripagesql.replace("tmp.minNum", min);
+ sb.append(pripagesql);
+ privatePageSql = sb.toString();
+ // logger.error("getDevTableDatas private sql :" + sb.toString());
+ } else {
+
+ String tFields = Util.null2String(sqlObj.getString("backfields"));
+ if(!"".equals(tFields)){
+ tFields+=Util.null2String(sqlObj.getString("topColumn"))==""?"":",t1."+Util.null2String(sqlObj.getString("topColumn"));
+
+ }
+ String tFrom = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("sqlform")));
+ // String tWhere = Util.null2String(sqlObj.getString("sqlwhere"));
+ String tOrder = Util.null2String(sqlObj.getString("sqlorderby"));
+ String tOrderWay = Util.null2String(sqlObj.getString("sqlsortway"));
+ String tDistinct = Util.null2String(sqlObj.getString("sqlisdistinct"));
+ String tGroupBy = Util.null2String(sqlObj.getString("sqlgroupby")).trim();
+ String sqlPrimaryKey = sqlObj.getString("sqlprimarykey");
+
+ String openPrimaryKeyOrder = sqlObj.getString("openprimarykeyorder");
+
+ String mergeOrder = sqlObj.getString("mergeorder");
+
+ //分页方式不带top
+ String fastpage = sqlObj.getString("fastpage");
+
+ tOrder = Util_public.createSqlOrder(sortParams, tOrder, tOrderWay, sqlPrimaryKey,
+ BoolAttr.TRUE.getStringVal().equals(openPrimaryKeyOrder),BoolAttr.TRUE.getStringVal().equals(mergeOrder));
+
+ //分页方式fastpage 不使用top分页较快
+ if ("true".equals(fastpage))
+ {
+ //sb.append("select * from (");
+
+ sb.append("select * ");
+
+ //支持outfields
+ if (sqlObj.containsKey("outfields")
+ && !"".equals(sqlObj.getString("outfields"))) {
+ sb.append(" , " + sqlObj.getString("outfields"));
+ }
+ //支持outfields
+
+ //sb.append(" from ( ");
+
+ sb.append(" from (select * ,ROW_NUMBER() OVER( order by " + tOrder
+ + ") as rn from ( ");
+
+ //(select * ,ROW_NUMBER () OVER (ORDER BY sort ASC, id ASC) AS rn from
+
+ sb.append("select " + ("true".equals(tDistinct) ? "distinct " : "")
+ + tFields );
+ sb.append(" ");
+ if (!tFrom.startsWith("from"))
+ sb.append("from");
+ sb.append(" ").append(tFrom);
+ sb.append(" ");
+ if(!"".equals(tWhere)){
+ if (!tWhere.startsWith("where") && !tWhere.startsWith("WHERE")) {
+ sb.append("where");
+ }
+ sb.append(" ").append(tWhere);
+ }
+ // if ((!tWhere.startsWith("where") && !"".equals(tWhere))
+ // || (!tWhere.startsWith("WHERE") && !"".equals(tWhere)))
+ // sb.append("where");
+ // sb.append(" ").append(tWhere);
+ sb.append(Util_public.getSqlPartWithToken(tGroupBy, "group by"));
+ //sb.append(Util_public.getSqlPartWithToken(tOrder, "order by"));
+ sb.append(" ) as p");
+ sb.append(" ) as r");
+ sb.append(" where 1=1");
+ sb.append(" and r.rn>=").append(min);
+ sb.append(" and r.rn<=").append(max);
+ // logger.error("getDevTableDatas public sql :" + sb.toString());
+ privatePageSql = sb.toString();
+ }
+ else
+ {
+ //top方式分页效率较低 但是为了兼容以前的暂时留着 andyzhang 2018-10-11
+
+ privatePageSql += " SELECT r.* ";
+ if (sqlObj.containsKey("outfields")
+ && !"".equals(sqlObj.getString("outfields"))) {
+ privatePageSql += " , " + sqlObj.getString("outfields");
+ }
+ privatePageSql += " FROM ( SELECT outtemp.* FROM (SELECT row_number () over ( ORDER BY tempcolumn) temprownumber ,* FROM (";
+ privatePageSql += " SELECT ";
+ if ("true".equals(tDistinct)) {
+ privatePageSql += " distinct ";
+ }
+
+ privatePageSql += " top " + max + " tempcolumn = 0,";
+
+ privatePageSql += tFields;
+ privatePageSql += Util_public.getSqlPartWithToken(tFrom, "from");
+ privatePageSql += Util_public.getSqlPartWithToken(tWhere, "where");
+ privatePageSql += Util_public.getSqlPartWithToken(tGroupBy, "group by");
+ if (StringUtils.isNotBlank(tOrder))
+ privatePageSql += " order by " + tOrder;
+ privatePageSql += " ) innertemp ) outtemp ";
+
+ privatePageSql += " where temprownumber>=" + min;
+ privatePageSql += " ) r";
+ }
+
+
+ }
+ timeMarker.mark("create sql");
+ return this.setDevTableDatas(sqlObj, privatePageSql, columns,
+ getBroList, timeMarker);
+ }
+
+
+ public String getDbType(String poolname)
+ {
+ String dbtype;
+ if(!StringHelper.isEmpty(poolname)&&!DataSourceXML.SYS_LOCAL_POOLNAME.equals(poolname)){
+ DataSource datasource = (DataSource) StaticObj.getServiceByFullname("datasource."+poolname, DataSource.class);
+ dbtype = datasource.getType();
+ }else{
+ RecordSet recordSet = new RecordSet();
+ dbtype = recordSet.getDBType();
+ }
+
+ return dbtype;
+ }
+ // private static String toSqlForSplitPage(String s) {
+ //
+ // // s = Util.StringReplace(s, "\\'", "'");
+ // s = Util.StringReplace(s, "<", "<");
+ // s = Util.StringReplace(s, ">", ">");
+ // s = Util.StringReplace(s, "&", "&");
+ // s = Util.StringReplace(s, """, "\"");
+ // return s;
+ // }
+
+ /**
+ * TODO
+ * @param sqlObj
+ * @return
+ */
+ @Override
+ public int getDevTableCount(JSONObject sqlObj) {
+ RecordSet rs=new RecordSet();
+ String usedpri = Util.null2String(sqlObj.getString("usingPriSql"));
+ String poolname = sqlObj.getString("poolname");
+ new BaseBean().writeLog("getDevTableCount--poolname:"+poolname);
+ if ("true".equals(usedpri)) {
+
+ String countsql = Util.null2String(sqlObj.getString("priCountSql"));
+ if ("".equals(countsql))
+ return 0;
+ sql = countsql;
+ // logger.error("in used private countsql " + sql);
+ /*if (!rs.executeSql(sql, poolname))
+ logger.error(" private countsql wrong sql :" + sql);*/
+ //AndyZhang 修改建模的跨数据库异常问题
+ if (StringUtils.isBlank(poolname)){
+ if(!rs.executeSql(sql))logger.error(" private countsql wrong sql :" + sql);
+ }
+ else{
+ if(!rs.executeSql(sql, poolname)) logger.error(" private countsql wrong sql :" + sql);
+ }
+
+ return rs.next() ? rs.getInt(1) : 0;
+ } else {
+ String tFrom = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("sqlform")));
+ String tWhere = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("sqlwhere")));
+ String tDistinct = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("sqlisdistinct")));
+ String tFields = Util_public.toSqlForSplitPage(Util.null2String(sqlObj.getString("backfields")));
+ String tGroupBy = Util.null2String(sqlObj.getString("sqlgroupby"));
+ StringBuilder sb = new StringBuilder();
+ sb.append("select count(*)");
+ sb.append(" from (");
+ sb.append("select " + ("true".equals(tDistinct) ? "distinct " : " ") + tFields + " ");
+ sb.append(Util_public.getSqlPartWithToken(tFrom, "from"));
+ sb.append(Util_public.getSqlPartWithToken(tWhere, "where"));
+ sb.append(Util_public.getSqlPartWithToken(tGroupBy, "group by"));
+
+ DataSource dataSource = (DataSource) StaticObj.getServiceByFullname("datasource." + poolname, DataSource.class);
+// 南大通用sql报错 别名list前加as;数据库厂商已经做了兼容,去掉 as
+ sb.append("mysql".equalsIgnoreCase(dataSource != null ? dataSource.getType() : rs.getDBType()) ? " ) `list`" : "informix".equalsIgnoreCase(dataSource != null ? dataSource.getType() : rs.getDBType()) ?" ) as list " : " ) list");
+// sb.append(" ) list");
+ sql = sb.toString();
+
+ Long start=System.currentTimeMillis();
+
+ //AndyZhang 修改建模的跨数据库异常问题
+ if (StringUtils.isBlank(poolname)){
+ if(!rs.executeSql(sql))logger.error(" public countsql wrong sql:" + sql);
+ }
+ else{
+ if(!rs.executeSql(sql, poolname)) logger.error(" public countsql wrong sql:" + sql);
+ }
+
+ /*if (!rs.executeSql(sql, poolname))
+ logger.error(" public countsql wrong sql :" + sql);*/
+
+ printSQLAndTimeLog(sql,start);
+
+ //logger.error("GET DEV TABLE COUNT sql:" + sql);
+ return rs.next() ? rs.getInt(1) : 0;
+ }
+ }
+
+ /**
+ * TODO
+ * @param customid
+ * @return
+ */
+ @Override
+ public boolean checkModeSkip(int customid) {
+ RecordSet rs=new RecordSet();
+ sql = "select 1 from Mode_CustomDspField where customid = " + customid
+ + " and isshow = 1";
+ if (!rs.execute(sql)) {
+ logger.error("checkModeSkip wrong sql :" + sql);
+ return false;
+ }
+ if (!rs.next()) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * TODO
+ * @param user
+ * @param pageUid
+ * @param type
+ * @return
+ */
+ @Override
+ public JSONObject getDestTable(User user, String pageUid, int type) {
+ RecordSet rs=new RecordSet();
+ JSONObject rObj = new JSONObject();
+ rObj.put("status", false);
+
+ if (null != pageUid && !"".equals(pageUid)) {
+
+ JSONArray getRlist = new JSONArray();
+ StringBuilder sbl = new StringBuilder();
+ String dbname = " cloudstore_defcol ";
+ // " user_default_col ";
+ // if (!"".equals(pageUid) && 0 == type)
+ // dbname = " cloudstore_defcol ";
+ sbl.append("select distinct sdc.orders,udc.id,udc.sysid,sdc._text,sdc._key from ");
+ sbl.append(dbname).append(" udc");
+ sbl.append(" , cloudstore_sdfcol sdc where udc.sysid = sdc.uuid ");
+ // sql.append(" left outer join table_col_base tcb on sdc.col_base_id = tcb.id");
+ sbl.append(" and udc.userid = '").append(user.getUID())
+ .append("' and sdc.pageUid='").append(pageUid)
+ .append("' and udc.display=0");
+ sbl.append(" order by sdc.orders");
+ // System.out.println("1-------"+sql);
+ sql = sbl.toString();
+ // json.put("currentPage", "1");
+ // json.put("totalPage", "1");
+ if (!rs.execute(sql)) {
+ logger.error("getDestTable Awrong sql :" + sql);
+ return rObj;
+ }
+ while (rs.next()) {
+ JSONObject tmp = new JSONObject();
+ tmp.put("id", rs.getString("sysid"));
+ tmp.put("name", rs.getString("_text"));
+ tmp.put("key", rs.getString("_key"));
+ getRlist.add(tmp);
+ }
+
+ sbl = new StringBuilder();
+ sbl.append("select sdc.id,sdc.uuid,sdc._text,sdc._key from cloudstore_sdfcol sdc where sdc.display=0 and sdc.pageuid='")
+ .append(pageUid).append("'");
+
+ // 用户没有设置自定义列时,查出所有的需要显示的列。设置了自定义列时,查出不在自定义表中的需要显示的列
+ // 针对自定义查询做的修改。
+ if (getRlist.size() > 0) {
+ sbl.append(" and not exists (select id from cloudstore_defcol udc where udc.sysid = sdc.uuid and udc.userid = '"+user.getUID()+"') ");
+ }
+ sbl.append(" order by orders");
+ sql = sbl.toString();
+ if (!rs.execute(sql)) {
+ logger.error("getDestTable Bwrong sql :" + sql);
+ return rObj;
+ }
+
+ while (rs.next()) {
+ JSONObject tmp = new JSONObject();
+ tmp.put("id", rs.getString("uuid"));
+ tmp.put("name", rs.getString("_text"));
+ tmp.put("key", rs.getString("_key"));
+ getRlist.add(tmp);
+ }
+ // }
+
+ if (getRlist.size() == 0) {
+ // 系统表不存在这个表单,需要保存一次记录
+ logger.error("pageUid 为:" + pageUid + " 表单定制列进行了一次新增");
+ rObj.put("msg", "needInit");
+ return rObj;
+ }
+ rObj.put("status", true);
+ rObj.put("datas", getRlist);
+ }
+
+ return rObj;
+
+ }
+
+ /**
+ * TODO
+ * @param user
+ * @param pageUid
+ * @param type
+ * @return
+ */
+ @Override
+ public JSONArray getSrcTable(User user, String pageUid, int type) {
+ RecordSet rs=new RecordSet();
+ JSONArray getRlist = new JSONArray();
+ StringBuilder sql2 = new StringBuilder();
+ String dbname = " cloudstore_defcol ";
+
+ StringBuilder sbl = new StringBuilder();
+ sbl.append("select distinct sdc.orders,udc.id,udc.sysid,sdc._text,udc.display,sdc._key from ");
+ sbl.append(dbname).append(" udc");
+ sbl.append(", cloudstore_sdfcol sdc where udc.sysid = sdc.uuid ");
+ // sql.append(" left outer join table_col_base tcb on sdc.col_base_id = tcb.id");
+ sbl.append(" and udc.userid = '").append(user.getUID())
+ .append("' and sdc.pageUid='").append(pageUid)
+ .append("' order by sdc.orders");
+
+ sql = sbl.toString();
+ // json.put("currentPage", "1");
+ // json.put("totalPage", "1");
+ // logger.error("getSrcTable A sql :" + sql);
+ if (!rs.execute(sql)) {
+ logger.error("getSrcTable Awrong sql :" + sql);
+ return getRlist;
+ }
+ String usingIds = "";
+ while (rs.next()) {
+ String id = rs.getString("sysid");
+ if ("1".equals(rs.getString("display"))) {
+ JSONObject tmp = new JSONObject();
+ tmp.put("id", id);
+ tmp.put("key", rs.getString("_key"));
+ tmp.put("name", rs.getString("_text"));
+ getRlist.add(tmp);
+ }
+ usingIds += "'" + id + "',";
+
+ }
+ sql2.append("select sdc.id,sdc.uuid,sdc._text,sdc._key from cloudstore_sdfcol sdc");
+ // sql2.append(" left outer join table_col_base tcb on tcb.id = sdc.col_base_id");
+ sql2.append(" where sdc.pageuid='").append(pageUid).append("'");
+
+ if (!"".equals(usingIds)) {
+ usingIds = usingIds.substring(0, usingIds.length() - 1);
+ sql2.append(" and sdc.uuid not in (").append(usingIds)
+ .append(") and sdc.display=1");
+ } else {
+ sql2.append(" and sdc.display=1");
+ }
+
+ sql2.append(" order by sdc.orders");
+ sql = sql2.toString();
+ // logger.error("sql2 src sql :" + sql);
+ if (!rs.executeSql(sql)) {
+ logger.error("getSrcTable Bwrong sql :" + sql);
+ return getRlist;
+ }
+ while (rs.next()) {
+ JSONObject tmp = new JSONObject();
+ String id = rs.getString("uuid");
+ tmp.put("id", id);
+ tmp.put("key", rs.getString("_key"));
+ tmp.put("name", rs.getString("_text"));
+ getRlist.add(tmp);
+ }
+ // if (getRlist.size() == 0 && 0 == type) {
+ // //logger.error("run second");
+ // getRlist.addAll(getSrcTable(user, excludeId, includeId, pageId,
+ // pageUid, 1));
+ // }
+ return getRlist;
+ }
+
+ /**
+ * 更新用户列的配置
+ * @param systemIdArr
+ * @param systemOrderArr
+ * @param user
+ * @param pageUid
+ * @return
+ */
+ @Override
+ public boolean updateShowCol(String[] systemIdArr, String[] systemOrderArr,
+ User user, String pageUid) {
+ // TODO Auto-generated method stub
+ RecordSetTrans rst = new RecordSetTrans();
+ if ("".equals(pageUid) || null == pageUid) {
+ return false;
+ }
+ try {
+ rst.setAutoCommit(false);
+ // 目前不能先删除后添加了。
+ // 不知道为什么不能,但现在的逻辑是有问题的,第一次如果是从已读改为未读,被修改的数据会丢失,所以还是改成先删除后添加。by caoyun
+ rst.executeSql("delete from cloudstore_defcol where sysid<>'def' and pageuid='"+pageUid+"'"+" and userId = "+user.getUID());
+ String dbname = " cloudstore_defcol ";
+ // " user_default_col ";
+
+ // if (!"".equals(pageUid))
+ // dbname = " cloudstore_defcol ";
+ sql = "insert into " + dbname + " (sysid,pageUid,userid,orders,display) "
+ + " select sdc.uuid, '" + pageUid + "','"+user.getUID() + "', sdc.orders, 1 "
+ + " from cloudstore_sdfcol sdc where sdc.pageUid='" + pageUid + "'";
+// sql = "update " + dbname + " set display=1 where pageuid='"
+// + pageUid + "'" + " and userId = " + user.getUID();
+
+ // logger.error("frist update sql is :" + sql);
+ if (!rst.executeSql(sql)) {
+ logger.error("updateShowCol update sql first false :" + sql);
+ return false;
+ }
+ for (int i = 0; i < systemIdArr.length; i++) {
+ if (Util.null2String(systemIdArr[i]).equalsIgnoreCase(""))
+ continue;
+ int orders = i;
+ if (systemOrderArr != null && systemOrderArr.length > 0) {
+ orders = Util.getIntValue(systemOrderArr[i], 0);
+ }
+ sql = "select 1 from " + dbname + " where sysid = '"
+ + systemIdArr[i] + "' and pageuid='" + pageUid + "'"
+ + " and userId = " + user.getUID();
+ // logger.error("frist select sql is :" + sql);
+ if (!rst.executeSql(sql)) {
+ logger.error("updateShowCol select sql false :" + sql);
+ return false;
+ }
+ if (rst.next()) {// 更新
+ sql = "update " + dbname + " set display=0,orders="
+ + orders + " where sysid='" + systemIdArr[i]
+ + "' and pageuid='" + pageUid + "'"
+ + " and userId = '" + user.getUID() + "'";
+
+ // logger.error("second update sql is :" + sql);
+ rst.executeSql(sql);
+ } else {
+
+ sql = "insert into "
+ + dbname
+ + "(sysid,pageUid,userid,orders,display"
+ + ") values('" + systemIdArr[i] + "','" + pageUid
+ + "','" + user.getUID() + "',"
+ + orders + ",0)";
+
+ // logger.error("second insert sql is :" + sql);
+ rst.executeSql(sql);
+ }
+ }
+ rst.commit();
+ // 添加成功
+
+ return true;
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ rst.rollback();
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * TODO 新增
+ *
+ * @param heads
+ * @param pageUid
+ * @return
+ */
+ @Override
+ public boolean insertShowCol(JSONArray heads, String pageUid) {
+ // TODO Auto-generated method stub
+ RecordSetTrans rst = new RecordSetTrans();
+ try {
+ rst.setAutoCommit(false);
+ Map IndexMap = new HashMap();
+
+ if ("".equals(pageUid)) {
+ return false;
+ }
+ for (int i = 0; i < heads.size(); i++) {
+ // 先判断当前列是否存在DataIndex
+ JSONObject jo = heads.getJSONObject(i);
+ if (jo.containsKey("dataIndex")
+ && !"".equals((jo.getString("dataIndex")))
+ && !IndexMap.containsKey(jo.getString("dataIndex"))) {
+ IndexMap.put(jo.getString("dataIndex"), "used");
+
+ sql = "insert into cloudstore_sdfcol (uuid,pageuid,_key,display,orders,orderkey,_text)values('"
+ + UUID.randomUUID()
+ + "','"
+ + pageUid
+ + "','"
+ + jo.getString("dataIndex")
+ + "','"
+ + ("true".equals(jo.getString("display")) ? "0"
+ : "1")
+ + "','"
+ + i
+ + "','"
+ + jo.getString("orderkey")
+ + "','"
+ + jo.getString("title") + "')";
+ if (!rst.execute(sql)) {
+ logger.error("insertShowCol WrongSql :" + sql);
+ return false;
+ }
+
+ } else {
+ return false;
+ }
+ }
+ rst.commit();
+ return true;
+ } catch (Exception e) {
+ rst.rollback();
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+ /**
+ * TODO 新增
+ *
+ * @param heads
+ * @param pageUid
+ * @param i
+ * @return
+ */
+ @Override
+ public boolean insertShowCol4Obj(JSONObject heads, String pageUid, int i) {
+ // TODO Auto-generated method stub
+ RecordSetTrans rst = new RecordSetTrans();
+ try {
+ rst.setAutoCommit(false);
+
+ if ("".equals(pageUid)) {
+ return false;
+ }
+ // 先判断当前列是否存在DataIndex
+ JSONObject jo = heads;
+ if (jo.containsKey("dataIndex")
+ && !"".equals((jo.getString("dataIndex")))) {
+ RecordSet rs = new RecordSet();
+ String checksql = "select _text from cloudstore_sdfcol where pageUid = '"+pageUid+"' and _text='"+jo.getString("title").trim()+"'";
+ rs.executeSql(checksql);
+ if (!rs.next()) {
+ sql = "insert into cloudstore_sdfcol (uuid,pageuid,_key,display,orders,orderkey,_text)values('"
+ + UUID.randomUUID()
+ + "','"
+ + pageUid
+ + "','"
+ + jo.getString("dataIndex")
+ + "','"
+ + ("true".equals(jo.getString("display")) ? "0"
+ : "1")
+ + "','"
+ + i
+ + "','"
+ + jo.getString("orderkey")
+ + "','"
+ + jo.getString("title") + "')";
+
+ if (!rst.execute(sql)) {
+ logger.error("insertShowCol WrongSql :" + sql);
+ return false;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+ rst.commit();
+ return true;
+ } catch (Exception e) {
+ rst.rollback();
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+ /**
+ * TODO
+ * @param title
+ * @param dataIndex
+ * @param pageUid
+ * @param i
+ * @return
+ */
+ @Override
+ public boolean updateShowCol4Obj(String title, String dataIndex,
+ String pageUid, int i) {
+ // TODO Auto-generated method stub
+ RecordSetTrans rst = new RecordSetTrans();
+ try {
+ rst.setAutoCommit(false);
+ if ("".equals(pageUid)) {
+ return false;
+ }
+ // 先判断当前列是否存在DataIndex
+ if (!"".equals(dataIndex)) {
+
+ sql = "update cloudstore_sdfcol set _text='" + title
+ + "' where pageuid = '" + pageUid + "' and _key='"
+ + dataIndex + "'";
+
+ if (!rst.execute(sql)) {
+ logger.error("update WrongSql :" + sql);
+ return false;
+ }
+
+ } else {
+ return false;
+ }
+
+ rst.commit();
+ return true;
+ } catch (Exception e) {
+ rst.rollback();
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+ /**
+ * TODO
+ * @param uid
+ * @param isload
+ */
+ @Override
+ public void insertUserSetting(int uid, String isload) {
+ RecordSet rs=new RecordSet();
+ sql = "insert into HrmUserSetting(resourceid,rtxOnload,isCoworkHead,skin,cutoverWay,transitionTime,transitionWay) values("
+ + uid + "," + isload + ",1,'','','','')";
+ if (!rs.executeSql(sql)) {
+ logger.error("insertUserSetting Bwrong sql :" + sql);
+ }
+ }
+
+ /**
+ * TODO
+ * @param uid
+ * @param pageId
+ * @return
+ */
+ @Override
+ public String getPageSize(int uid, String pageId) {
+ RecordSet rs=new RecordSet();
+ String sql = "select pagesize from ecology_pagesize where pageId = '" + pageId
+ + "' and userid=" + uid;
+ if (!rs.executeSql(sql)) {
+ logger.error("getPageSize wrong sql :" + sql);
+ return "";
+ }
+ if (rs.next()) {
+ return rs.getString(1);
+ }
+ return "";
+ }
+ /**
+ * TODO
+ * @param uid
+ * @param pageId
+ * @param usedPageSize
+ * @return
+ */
+ @Override
+ public boolean insertPageSize(int uid, String pageId, int usedPageSize) {
+ RecordSet rs=new RecordSet();
+ sql = "insert into ecology_pagesize(pageId,pageSize,userid) values('"
+ + pageId + "'," + usedPageSize + "," + uid + ")";
+ if (!rs.executeSql(sql)) {
+ logger.error("insertPageSize wrong sql :" + sql);
+ return false;
+ }
+
+ return true;
+ }
+ /**
+ * TODO
+ * @param uid
+ * @param pageId
+ * @param usedPageSize
+ * @return
+ */
+ @Override
+ public boolean updatePageSize(int uid, String pageId, int usedPageSize) {
+ RecordSet rs=new RecordSet();
+ sql = "update ecology_pagesize set pageSize= " + usedPageSize
+ + " where pageId='" + pageId + "' and userid=" + uid;
+ if (!rs.executeSql(sql)) {
+ logger.error("updatePageSize wrong sql :" + sql);
+ return false;
+ }
+ return true;
+ }
+
+
+ public String getDealWithThousandsField(String sumField,String tCountcolumns,String dbType)
+ {
+ if (StringUtils.isNotBlank(tCountcolumns)) {
+ String[] fields=tCountcolumns.split(",");
+ for(String field:fields) {
+ if (StringUtils.isNotBlank(field)&&field.equalsIgnoreCase(sumField)) {
+
+ if (dbType.equals("oracle")) {
+ return "cast(REPLACE("+sumField+",',','') as float) ";
+ }
+ else
+ if (dbType.equals("sqlserver")) {
+ return "cast(REPLACE("+sumField+",',','') as float) ";
+ }
+ else
+ if (dbType.equals("mysql")) {
+ return "cast(REPLACE("+sumField+",',','') as DECIMAL(30,8)) ";
+ }
+ }
+ }
+ }
+ return sumField;
+ }
+
+ @Override
+ public Map getSqlSum(JSONObject sp, String[] sumlist,
+ Map allSumMap) {
+ RecordSet rs = new RecordSet();
+
+ StringBuilder sb = new StringBuilder();
+ String tWhere = Util_public.toSqlForSplitPage(Util.null2String(sp.getString("sqlwhere")));
+ String tFields = Util.null2String(sp.getString("backfields"));
+ String tFrom = Util_public.toSqlForSplitPage(Util.null2String(sp.getString("sqlform")));
+ String tOrder = Util.null2String(sp.getString("sqlorderby"));
+ String tOrderWay = Util.null2String(sp.getString("sqlsortway"));
+ String tDistinct = Util.null2String(sp.getString("sqlisdistinct"));
+ String tGroupBy = Util.null2String(sp.getString("sqlgroupby"));
+ String tCountcolumns = Util.null2String(sp.getString("countcolumnsdbtype"));
+ String poolname = Util.null2String(sp.getString("poolname"));
+
+ String dbType="";
+ if(StringUtils.isBlank(poolname)){
+ dbType = getDbType("");
+ }else{
+ dbType = getDbType(poolname);
+ }
+
+ Map tempMap=new HashMap();
+
+ String tOrderArr[] = tOrder.split(",");
+ tOrder = "";
+ for (int i = 0; i < tOrderArr.length; i++) {
+ tOrder += tOrderArr[i] + " " + tOrderWay + ",";
+ }
+ if (StringUtils.isNotBlank(tOrder))
+ tOrder = tOrder.substring(0, tOrder.length() - 1);
+ sb.append("select ");
+ String tsum = "";
+
+ for (int i = 0; i < sumlist.length; i++) {
+ String field=sumlist[i];
+
+ //tCountcolumns 兼容E8千分位的字段 需要被处理andyZhang 2008-8-10
+ field=getDealWithThousandsField(sumlist[i],tCountcolumns,dbType);
+
+ //tCountcolumns 兼容E8千分位的字段 需要被处理andyZhang 2008-8-10
+ /*
+ *sqlserver如果sum的结果超过int范围(-2^31 (-2,147,483,648) 到 2^31 - 1(2,147,483,647)),会出现报错,这里进行sql处理
+ *oracel中int相当于number(22),存储22位数据,足够大,暂不做处理
+ */
+ if(dbType.contains("sqlserver")){
+ tsum += "sum(cast(" + field + " as decimal(38,6))) " + sumlist[i] + ",";
+ }else{
+ tsum += "sum(" + field + ") " + sumlist[i] + ",";
+ }
+
+ tempMap.put(sumlist[i].trim(), 0.00);
+ allSumMap.put(sumlist[i].trim(), "0.00");
+ }
+
+ if (!"".equals(tsum)) {
+ tsum = tsum.substring(0, tsum.length() - 1);
+ }
+ sb.append(" ").append(!"".equals(tsum) ? tsum : "*").append(" from(");
+
+ sb.append("select " + ("true".equals(tDistinct) ? "distinct " : "") + tFields);
+ sb.append(" ");
+ sb.append(Util_public.getSqlPartWithToken(tFrom, "from"));
+ sb.append(Util_public.getSqlPartWithToken(tWhere, "where"));
+ sb.append(Util_public.getSqlPartWithToken(tGroupBy, "group by"));
+ sb.append(") tmp");
+ sb.append(" where 1=1");
+ sql = sb.toString();
+
+ //AndyZhang 修改建模的跨数据库异常问题
+ if (StringUtils.isBlank(poolname)){
+ if(!rs.executeSql(sql)) logger.error("getSqlSum wrong sql is :" + sql);
+ }
+ else{
+ if(!rs.executeSql(sql, poolname)) logger.error("getSqlSum wrong sql is :" + sql);
+ }
+
+ /*if (!rs.executeSql(sql,poolname))
+ logger.error("getSqlSum wrong sql is :" + sql);*/
+
+ while (rs.next()) {
+ for (int i = 0; i < sumlist.length; i++) {
+ Double getsum = Util.getDoubleValue(rs.getString(sumlist[i].trim()) ,0);//直接getDouble默认值是-1,会有问题。
+ //getsum = getsum + allSumMap.get(sumlist[i].trim());
+ getsum = getsum + tempMap.get(sumlist[i].trim());
+ allSumMap.put(sumlist[i].trim(), Util_public.parseString(getsum));
+ }
+ }
+ return allSumMap;
+ }
+
+ /**
+ * 根据pageUid清除待选列,null时清除所有待选列
+ * @param pageUid
+ * @return
+ */
+ @Override
+ public boolean clearShowCol(String pageUid) {
+ return false;
+ /*SqlSession session = sqlSessionFactory.openSession();
+ try {
+ Dao_TableMapper mapper = session.getMapper(Dao_TableMapper.class);
+ if (pageUid != null) {
+ mapper.deleteDefColByPageUid(pageUid);
+ mapper.deleteSdfColByPageUid(pageUid);
+ } else {
+ mapper.deleteAllDefCol();
+ mapper.deleteAllSdfCol();
+ }
+ session.commit();
+ } finally{
+ session.close();
+ }
+ return true;*/
+ }
+
+ @Override
+ public boolean clearShowCol(String pageUid, int uid) {
+ String sql = "delete from cloudstore_defcol where pageUid = ? and userid = ?";
+ RecordSet rs = new RecordSet();
+ /*SqlSession session = sqlSessionFactory.openSession();
+ try {
+ Dao_TableMapper mapper = session.getMapper(Dao_TableMapper.class);
+ mapper.deleteUserDefCol(pageUid, uid);
+ session.commit();
+ } finally{
+ session.close();
+ }*/
+ return rs.executeUpdate(sql, pageUid, uid);
+ }
+
+ @Override
+ public List getUserDefColumns(String pageUid, int uid) {
+ String sql = "select dataIndex, orders, display ,width from cloudstore_defcol where pageUid = ? and userid = ? and sysid<>'def' order by orders";
+ RecordSet rs = new RecordSet();
+ rs.executeQuery(sql, pageUid, uid);
+
+ //读取默认账号
+ if (rs.getCounts()==0)
+ rs.executeQuery(sql, pageUid, 0);
+
+ List userDefCols = Lists.newArrayList();
+ while (rs.next()) {
+ UserDefCol col = new UserDefCol();
+ col.setDataIndex(rs.getString("dataIndex"));
+ col.setOrders(rs.getInt("orders"));
+ col.setDisplay(rs.getString("display"));
+ col.setWidth(rs.getString("width"));
+ userDefCols.add(col);
+ }
+ return userDefCols;
+ /*SqlSession session = sqlSessionFactory.openSession();
+ try {
+ Dao_TableMapper mapper = session.getMapper(Dao_TableMapper.class);
+ return mapper.getUserDefColumns(pageUid, uid);
+ } finally{
+ session.close();
+ }*/
+ }
+
+ @Override
+ public void insertShowCol(List choosedDefCols, List unchoosedDefCols) {
+ if (choosedDefCols != null && choosedDefCols.size() > 0) {
+ batchInsert(choosedDefCols);
+ }
+ if (unchoosedDefCols != null && unchoosedDefCols.size() > 0) {
+ batchInsert(unchoosedDefCols);
+ }
+ /*SqlSession session = sqlSessionFactory.openSession();
+ try {
+ Dao_TableMapper mapper = session.getMapper(Dao_TableMapper.class);
+ if (choosedDefCols != null && choosedDefCols.size() > 0) {
+ mapper.insertUserDefCol(choosedDefCols);
+ }
+ if (unchoosedDefCols != null && unchoosedDefCols.size() > 0) {
+ mapper.insertUserDefCol(unchoosedDefCols);
+ }
+ session.commit();
+ } finally{
+ session.close();
+ }*/
+ }
+
+ private void batchInsert(List cols) {
+ RecordSet rs = new RecordSet();
+ //宽度调整 andyzhang
+ /*StringBuilder builder = new StringBuilder("insert into cloudstore_defcol (dataIndex,sysid, orders, display, pageUid,userid,width) values ");
+ List params = Lists.newArrayList();
+ for (UserDefCol col : cols) {
+ builder.append("(?,?,?,?,?,?,?),");
+ params.add(col.getDataIndex());
+ params.add("");
+ params.add(col.getOrders());
+ params.add(col.getDisplay());
+ params.add(col.getPageUid());
+ params.add(col.getUserId());
+ params.add(col.getWidth());
+ }
+ builder.deleteCharAt(builder.length() - 1);
+ boolean result = rs.executeUpdate(builder.toString(), params.toArray());
+ if (!result) {
+ logger.error("插入失败");
+ }*/
+
+ //为兼容sql2005而调整 andyzhang
+ for (UserDefCol col : cols) {
+ StringBuilder builder = new StringBuilder("insert into cloudstore_defcol (dataIndex,sysid, orders, display, pageUid,userid,width) values ");
+ List params = Lists.newArrayList();
+ builder.append("(?,?,?,?,?,?,?)");
+ params.add(col.getDataIndex());
+ params.add("");
+ params.add(col.getOrders());
+ params.add(col.getDisplay());
+ params.add(col.getPageUid());
+ params.add(col.getUserId());
+ params.add(col.getWidth());
+ boolean result = rs.executeUpdate(builder.toString(), params.toArray());
+ if (!result) {
+ logger.error("插入失败");
+ }
+ }
+ }
+
+ public List getDepList(String departmentIds) throws Exception {
+ ArrayList depList=new ArrayList<>();
+ if (StringUtils.isNotEmpty(departmentIds) )
+ return depList;
+ DepartmentComInfo comInfo=new DepartmentComInfo();
+ String[] list=departmentIds.split(",");
+
+ for(String id :list) {
+ depList.add(id);
+ comInfo.getAllChildDeptByDepId(depList,id);
+ }
+ return depList;
+ }
+
+ public List getCompanyList(String companyIds) throws Exception {
+ ArrayList companyList=new ArrayList<>();
+ if (StringUtils.isNotEmpty(companyIds) )
+ return companyList;
+ CompanyComInfo comInfo=new CompanyComInfo();
+ String[] list=companyIds.split(",");
+
+ for(String id :list) {
+ companyList.add(id);
+ }
+ return companyList;
+ }
+
+ @Override
+ public boolean synCols(BizLogContext bizLogContext,List choosedDefCols, List unchoosedDefCols, OrgType orgType, String orgId,int def) {
+ try {
+ String pageuid="";
+ String sysid="nullSysId";
+ //def==1 是默认 def==2 是清除非默认
+ if (def==1) sysid="def";
+ RecordSet rs=new RecordSet();
+
+ String sqlWhere="";
+ String sqlWhereAll="";
+ List params=new ArrayList();
+ if (OrgType.COMPANY==orgType){
+ List companyList=getCompanyList(orgId);
+ sqlWhere=" sysid in "+WeaCommon.createWhereInSQL(companyList,true);
+ sqlWhereAll=" where "+sqlWhere ;
+ if (def==2)
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='COMPANY' and pageuid=? and "+sqlWhere,pageuid);
+ else
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='COMPANY' and sysid<>? and pageuid=? and "+sqlWhere,def,pageuid);
+ updateCols(orgType.name(),companyList,choosedDefCols,unchoosedDefCols,pageuid,def);
+ //logger.info("清除设置:"+pageuid);
+ }
+
+ if (OrgType.DEPARTMENT==orgType){
+
+ List depList=getDepList(orgId);
+ sqlWhere=" sysid in "+WeaCommon.createWhereInSQL(depList,true);
+ sqlWhereAll=" where "+sqlWhere ;
+ if (def==2)
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='DEPARTMENT' and pageuid=? "+sqlWhere,pageuid,params);
+ else
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='DEPARTMENT' and sysid<>'def' and pageuid=? "+sqlWhere,pageuid,params);
+ updateCols(orgType.name(),depList,choosedDefCols,unchoosedDefCols,pageuid,def);
+ }
+
+ if (OrgType.PERSON==orgType){
+ List orgList= Lists.newArrayList (orgId.split(",")) ;
+ sqlWhere=" sysid in "+WeaCommon.createWhereInSQL(orgId);
+ sqlWhereAll=" where "+sqlWhere ;
+ if (def==2)
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='PERSON' and pageuid=? and "+sqlWhere,pageuid);
+ else
+ rs.executeQuery("delete from cloudstore_defcol where orgtype='PERSON' and sysid<>'def' and pageuid=? and "+sqlWhere,pageuid);
+
+ updateCols(orgType.name(),orgList,choosedDefCols,unchoosedDefCols,pageuid,def);
+ }
+
+
+ logger.info("SQL执行成功:"+pageuid);
+
+ LogUtil.writeBizLog(bizLogContext);
+ }
+ catch (Exception ex ) {
+ logger.error(ex.getMessage());
+ return false;
+ }
+
+ return true;
+ }
+
+ public boolean updateCols(String orgtype,List orgList,List choosedDefCols,List unchoosedDefCols,String pageuid,int def){
+ int i=0;
+ RecordSet rs=new RecordSet();
+ for(String orgid:orgList){
+
+ for(UserDefCol col : choosedDefCols) {
+ String dataIndex=col.getDataIndex();
+ ArrayList paramsReal=new ArrayList<>();
+ i++;
+ paramsReal.add(orgid);
+ paramsReal.add("");
+ paramsReal.add(pageuid);
+ paramsReal.add(i);
+ paramsReal.add(dataIndex);
+ paramsReal.add(orgtype);
+ String sql;
+
+ sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width,orgtype) ";
+ sql+=" values(?,?,?,?,1,?,0,?) ";
+
+ rs.executeUpdate(sql,paramsReal);
+ logger.info("SQL执行成功:def:"+def+":"+sql);
+ if (def==2){
+ ArrayList paramsDef=new ArrayList<>();
+ paramsDef.add(orgid);
+ paramsDef.add("def");
+ paramsDef.add(pageuid);
+ paramsDef.add(i);
+ paramsDef.add(dataIndex);
+ paramsDef.add(orgtype);
+ rs.executeUpdate(sql,paramsDef);
+ }
+ }
+
+ i=0;
+ for(UserDefCol col : unchoosedDefCols) {
+ i++;
+ String dataIndex=col.getDataIndex();
+ ArrayList paramsReal=new ArrayList<>();
+ paramsReal.add(orgid);
+ paramsReal.add("");
+ paramsReal.add(pageuid);
+ paramsReal.add(i);
+ paramsReal.add(dataIndex);
+ paramsReal.add(orgtype);
+ String sql;
+
+ sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width,orgtype) ";
+ sql+=" values(?,?,?,?,1,?,?,0,?) ";
+
+ rs.executeUpdate(sql,paramsReal);
+ logger.info("SQL执行成功:def:"+def+":"+sql);
+ if (def==2){
+ ArrayList paramsDef=new ArrayList<>();
+ paramsDef.add("orgid");
+ paramsDef.add("def");
+ paramsDef.add(pageuid);
+ paramsDef.add(i);
+ paramsDef.add(dataIndex);
+ paramsDef.add(orgtype);
+ rs.executeUpdate(sql,paramsDef);
+ }
+ }
+ }
+ return true;
+ }
+
+
+}
diff --git a/src/com/cloudstore/dev/api/service/Service_DevTable.java b/src/com/cloudstore/dev/api/service/Service_DevTable.java
new file mode 100755
index 0000000..3b6a9da
--- /dev/null
+++ b/src/com/cloudstore/dev/api/service/Service_DevTable.java
@@ -0,0 +1,3025 @@
+/*
+ *
+ * Copyright (c) 2001-2018 泛微软件.
+ * 泛微协同商务系统,版权所有.
+ *
+ */
+package com.cloudstore.dev.api.service;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.api.cube.service.CubeSearchService;
+import com.api.cube.util.CubeSearchTransMethod;
+import com.api.formmode.cache.CustomSearchComInfo;
+import com.cloudstore.api.util.Util_DateTime;
+import com.cloudstore.api.util.Util_Ehcache;
+import com.cloudstore.dev.api.bean.*;
+import com.cloudstore.dev.api.dao.Dao_Table;
+import com.cloudstore.dev.api.dao.Dao_TableFactory;
+import com.cloudstore.dev.api.util.TextUtil;
+import com.cloudstore.dev.api.util.Util_TableMap;
+import com.cloudstore.dev.api.util.Util_public;
+import com.cloudstore.eccom.core.WeaCommon;
+import com.cloudstore.eccom.result.WeaResultMsg;
+import com.engine.common.constant.BizLogOperateType;
+import com.engine.common.constant.BizLogSmallType4SysEngine;
+import com.engine.common.constant.BizLogType;
+import com.engine.common.entity.BizLogContext;
+import com.engine.common.util.LogUtil;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.poifs.crypt.EncryptionInfo;
+import org.apache.poi.poifs.crypt.EncryptionMode;
+import org.apache.poi.poifs.crypt.Encryptor;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.streaming.SXSSFRow;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import weaver.common.StringUtil;
+import weaver.conn.RecordSet;
+import weaver.conn.constant.DBConstant;
+import weaver.formmode.data.ModeDataIDUpdateSingle;
+import weaver.formmode.service.CommonConstant;
+import weaver.general.BaseBean;
+import weaver.general.StaticObj;
+import weaver.general.Util;
+import weaver.hrm.HrmUserVarify;
+import weaver.hrm.User;
+import weaver.interfaces.datasource.DataSource;
+import weaver.rsa.security.RSA;
+import weaver.security.util.SecurityMethodUtil;
+import weaver.servicefiles.DataSourceXML;
+import weaver.systeminfo.SystemEnv;
+import weaver.systeminfo.setting.HrmUserSetting;
+import weaver.systeminfo.setting.HrmUserSettingComInfo;
+import weaver.systeminfo.setting.HrmUserSettingHandler;
+import weaver.wechat.util.Utils;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.*;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import java.io.*;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+/**
+ * Service_DevTable 表格接口
+ *
+ */
+@Path("/ec/dev/table")
+public class Service_DevTable {
+
+ private static final Log logger = LogFactory.getLog(Service_DevTable.class);
+
+ public String checkData = null;
+ private Dao_Table d = null;
+ public Service_DevTable() {
+ try {
+ d = getDaoTableByPool(null);
+ } catch (Exception e) {
+ logger.error(e);
+ }
+ }
+
+ private Dao_Table getDaoTableByPool(String poolname) throws Exception {
+ try {
+ logger.info("====>wyw getDaoTableByPool() param poolname:"+poolname);
+ if (StringUtils.isBlank(poolname) && d != null) {
+ return d;
+ }
+ String dbType;
+ if (StringUtils.isBlank(poolname)||DataSourceXML.SYS_LOCAL_POOLNAME.equals(poolname)) {
+ RecordSet rs = new RecordSet();
+ dbType = rs.getDBType();
+ } else {
+ DataSource datasource = (DataSource) StaticObj.getServiceByFullname("datasource."+poolname, DataSource.class);
+ dbType = datasource.getType();
+ }
+ new BaseBean().writeLog("====>wyw getDaoTableByPool() dbType:"+dbType);
+ logger.info("====>wyw getDaoTableByPool() dbType:"+dbType);
+ logger.info("====>wyw getDaoTableByPool() isDBType:"+(isDBType("cirrodata",dbType)?"true1":"false2"));
+
+// if (isDBType(DBConstant.DB_TYPE_ORACLE,dbType)||isDBType("informix",dbType))
+ if (isDBType(DBConstant.DB_TYPE_ORACLE,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableOracle");
+ else if (isDBType(DBConstant.DB_TYPE_MYSQL,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableMysql");
+ else if (isDBType(DBConstant.DB_TYPE_SQLSERVER,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableSqlServer");
+ else if (isDBType(DBConstant.DB_TYPE_DB2,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableDB2");
+ else if (isDBType(DBConstant.DB_TYPE_HANA,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableHana");
+ else if(isDBType(DBConstant.DB_TYPE_POSTGRESQL,dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TablePostgresql");
+ else if(isDBType("informix",dbType))
+ return Dao_TableFactory.getInstance().getDao("Dao_TableInformix");//wyw informix数据库
+ else
+ throw new Exception("不支持的数据库类型:"+dbType );
+ } catch (Exception e) {
+ throw new Exception("无法读取数据源,poolName:" + poolname, e);
+ }
+ }
+
+ /**
+ * 判断数据库类型支持版本问题
+ * @param dbTypeDef 标准数据库类型字符
+ * @param dbType 数据库类型可以包含版本号
+ * @return
+ */
+ public boolean isDBType(String dbTypeDef,String dbType) {
+ if(dbType.equals("dm")||dbType.equals("st")||dbType.equals("jc")||dbType.equals("gs")) dbType="oracle";
+ if(dbType.equals("nt")||dbType.equals("ob")) dbType="oracle";
+ if(dbType.equals("pg")) dbType="postgresql";
+ if(dbType.equals("hg")) dbType="postgresql";
+ if(dbType.equals("og")) dbType="postgresql";
+ if(dbType.equals("ux")) dbType="postgresql";
+ if(dbType.equals("obmysql")) dbType="mysql";
+ return StringUtil.isNull(dbType)?false: dbType.toLowerCase().startsWith(dbTypeDef);
+ }
+
+ /**
+ * 1、列定义 2、数据总数
+ *
+ * @param request
+ * @param response
+ * @param dataKey
+ * @return
+ */
+ @POST
+ @Path("/counts")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getcounts(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey) {
+ JSONObject rspJson = new JSONObject();
+ rspJson.put("status", false);
+ try {
+
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("msg", "dataKey is null");
+ return rspJson.toJSONString();
+ }
+ User user = HrmUserVarify.getUser(request, response);
+ int languageid=user!=null?user.getLanguage():7;
+
+ //解决counts接口非组件发起调用接口时找不到缓存数据问题
+ Thread.sleep(100);
+
+ String xmlString = Util_TableMap.getVal(dataKey);
+ if (StringUtils.isBlank(xmlString)) {
+ logger.info("读取dataKey为空:"+dataKey);
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(508217 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ SplitPageBean bean = new SplitPageBean(xmlString,0, "RootMap", "sql", "head");
+
+ // 兼容免登录业务
+ String loginFree = Util.null2String(bean.getRootMap().getString("loginFree"));
+ if (!loginFree.equals("true") && user == null) {
+ rspJson.put("msg", SystemEnv.getHtmlLabelName(10004767, languageid));
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ if (bean.getRootMap().containsKey("datasource")) {
+ rspJson = getMethodDatas(bean, user, rspJson, request, response);
+ if (rspJson.containsKey("datas")) {
+ rspJson.remove("datas");
+ }
+ } else {
+ JSONObject sqlMap = bean.getSql();
+ String poolname = bean.getSql().getString("poolname");
+ new BaseBean().writeLog("====poolname:"+poolname);
+ rspJson.put("count", getDaoTableByPool(poolname).getDevTableCount(sqlMap));
+ }
+ rspJson.put("status", true);
+ // "TimesE is :" + (System.currentTimeMillis() - times1));
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ //e.printStackTrace();
+ //rspJson.put("msg", Util_public.getErrorInfoFromException(e));
+ }
+ String result = JSON.toJSONString(rspJson);
+ return result;
+ }
+
+ private JSONObject getMethodDatas(SplitPageBean bean, User user, JSONObject rspJson, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ JSONObject Rootheads = bean.getRootMap();
+ JSONObject sp = bean.getSql();
+ JSONArray heads = bean.getHeads();
+
+ Map getCanMap = new HashMap();
+ String tPrimaryKey = Util.null2String(sp.getString("sqlprimarykey"));
+ String [] primarys = primarys = tPrimaryKey.split(",");
+ if ("".equals(tPrimaryKey)) {
+ rspJson.put("errMsg", "tPrimaryKey is null!");
+ }
+ boolean needCanMap = false;
+ if (Rootheads.containsKey("sourceparams")) {
+ getCanMap.put("fromExport",Util.null2String(bean.getSql().get("fromExport")));
+ String sourceparamString = Util.null2String(Rootheads.getString("sourceparams"));
+ if (!"".equals(sourceparamString)) {
+ String[] sclist = sourceparamString.split("\\+");
+ for (int i = 0; i < sclist.length; i++) {
+ String[] keyandvalue = sclist[i].split(":");
+ if (2 == keyandvalue.length) {
+ getCanMap.put(keyandvalue[0], keyandvalue[1]);
+ }
+ }
+ }
+ needCanMap = true;
+ }
+ String dataSourceKey = Rootheads.getString("datasource");
+
+ String[] funcName = dataSourceKey.split("\\.");
+ String useFunName = funcName[funcName.length - 1];
+ String useFun = dataSourceKey.substring(0, dataSourceKey.length() - useFunName.length() - 1);
+
+ Class usedClass = Class.forName(useFun);
+
+ Method useMethod1;
+ if (needCanMap) {
+ useMethod1 = usedClass.newInstance().getClass().getMethod(useFunName, User.class, Map.class,HttpServletRequest.class,HttpServletResponse.class);
+ } else {
+ useMethod1 = usedClass.newInstance().getClass().getMethod(useFunName, User.class,HttpServletRequest.class,HttpServletResponse.class);
+ }
+ List> getDatas = new ArrayList>();
+ if (Rootheads.containsKey("pageBySelf")) {
+ // 这个逻辑是说明有分页参数,获取返回结构不一样
+ Map getDatasforMap = new HashMap();
+ if (needCanMap) {
+ getDatasforMap = (Map) useMethod1.invoke(
+ usedClass.newInstance(), user, getCanMap, request,
+ response);
+ } else {
+ getDatasforMap = (Map) useMethod1.invoke(
+ usedClass.newInstance(), user, request, response);
+ }
+ if (null != getDatasforMap) {
+ if (getDatasforMap.containsKey("dataAll")) {
+ rspJson.put("datas", getDatasforMap.get("dataAll"));
+ }
+ if (getDatasforMap.containsKey("recordCount")) {
+ rspJson.put("count", getDatasforMap.get("recordCount"));
+ }else{
+ rspJson.put("count", 0);
+ }
+ } else {
+ rspJson.put("count", 0);
+ rspJson.put("datas", new ArrayList>());
+ }
+
+ } else {
+
+ if (needCanMap) {
+ getDatas = (List>) useMethod1.invoke(
+ usedClass.newInstance(), user, getCanMap, request,
+ response);
+ } else {
+ getDatas = (List>) useMethod1.invoke(
+ usedClass.newInstance(), user, request, response);
+ }
+ if (null != getDatas) {
+ rspJson.put("datas", getDatas);
+ rspJson.put("count", getDatas.size());
+ }
+ }
+ for (int i = 0; i < getDatas.size(); i++) {
+ Map getData = getDatas.get(i);
+ for (int j = 0; j < heads.size(); j++) {
+
+ JSONObject onceHead = heads.getJSONObject(j);
+ if (!getData.containsKey(
+ onceHead.getString("dataIndex"))) {
+ if ("randomFieldId".equals(onceHead.getString("dbField"))) {
+ getData.put(onceHead.getString("dataIndex"),getData.get(tPrimaryKey));
+ } else {
+ getData.put(onceHead.getString("dataIndex"),getData.get(onceHead.getString("dbField")));
+ }
+ }
+ }}
+ ////============添加外部数据源 对randomField数据的处理 Andyzhang
+ if ("1".equals(Rootheads.getString("randomfieldopen")))
+ for (int i = 0; i < rspJson.getJSONArray("datas").size(); i++) {
+ JSONObject obj = rspJson.getJSONArray("datas").getJSONObject(i);
+ for (int j = 0; j < heads.size(); j++) {
+ JSONObject onceHead = heads.getJSONObject(j);
+ if ("set".equals(onceHead.getString("from"))) {
+ obj.put(onceHead.getString("dataIndex"), obj.getString(onceHead.getString("dbField")));
+ }
+ }
+ }
+ return rspJson;
+ }
+
+ // 统一处理显示列定制
+ private JSONArray getShowColHeads(SplitPageBean bean, String pageUid,
+ User user) {
+ if ("".equals(pageUid)) {
+ return bean.getHeads();
+ }
+ List cols = d.getUserDefColumns(pageUid, user.getUID());
+ if (cols == null || cols.isEmpty()) {
+ return bean.getHeads();
+ }
+ Map headMap = Maps.newHashMap();
+ Map noDataIndexMap = Maps.newHashMap();
+ for (int i=0;i sumTransMethod(SplitPageBean bean,Map data,String[] sumlist,String decimalFormat,String tCountcolumns)
+ {
+ if (StringUtils.isNotBlank(decimalFormat)) {
+ String[] str=decimalFormat.split("\\|");
+ int i=0;
+ for(String item:sumlist) {
+ String format=str[i];
+ String value=data.get(item);
+ String valueSpan=String.format(format, Util.getDoubleValue(value, 0));
+ data.put(item+"span", valueSpan);
+ data.put(item, valueSpan);
+ i++;
+ }
+ }
+
+ if ("true".equals(bean.getRootMap().getString("counttransmethod")))
+ for(Object column : (List)bean.getHeads()) {
+ JSONObject obj = (JSONObject) column;
+ String name = obj.getString("dbField");
+ String jsonName = obj.getString("dataIndex");
+ for(String item:sumlist) {
+ if (item.equalsIgnoreCase(name)) {
+ if (obj.containsKey("transMethod") && StringUtils.isNotBlank(obj.getString("transMethod"))) {
+ if ("true".equals(obj.getString("display"))|| "true".equals(obj.getString("transMethodForce"))) {
+ try {
+ String transMethod = obj.getString("transMethod");
+ Object[] params = getParams(obj, data);
+ String valueSpan = doMethod(transMethod, params, obj.getString("dbField"));
+ data.put(jsonName+"span", valueSpan);
+ }catch(Exception e) {
+ e.printStackTrace();
+ logger.error(e.getMessage());
+ }
+ }
+ }
+ }
+ }
+ }
+ return data;
+ }
+ /**
+ * TODO
+ * @param transMethod
+ * @param params
+ * @param defaultValue
+ * @return
+ * @throws ClassNotFoundException
+ * @throws InstantiationException
+ * @throws IllegalAccessException
+ * @throws NoSuchMethodException
+ * @throws SecurityException
+ * @throws IllegalArgumentException
+ * @throws InvocationTargetException
+ */
+ private static String doMethod(String transMethod, Object[] params, String defaultValue) throws Exception {
+ if("".equals(transMethod)) return defaultValue;
+ if ("com.api.cube.util.CubeSearchTransMethod.getOthers".equals(transMethod)) {
+ String otherpara = (String)params[1]+"+$issumcolumn$";
+ return CubeSearchTransMethod.INSTANCE.getOthers((String)params[0], otherpara);
+ }
+ Object o = doMethod(transMethod, params);
+ return o.toString();
+ }
+ /**
+ * 获得一行数据中某个key的具体数据。处理了RecordSet与Map类型
+ * @param data
+ * @param key
+ * @return
+ */
+ private static String getValue(Object data, String key) {
+ if (data instanceof Map) {
+ return (String)((Map) data).get(key);
+ } else if (data instanceof RecordSet) {
+ return ((RecordSet) data).getString(key);
+ } else {
+ return "";
+ }
+ }
+
+ /**
+ * 将transMethod方法的参数转化成某个固定格式,为了后面的处理
+ * @param obj
+ * @param name
+ * @param rs
+ * @return
+ */
+ private static JSONArray transMethodToNew(JSONObject obj,String name,Object rs) {
+ //String column = Util.null2String(obj.getString("dbField"));
+ String others = Util.null2String(obj.getString(name));
+ JSONArray tmParams = new JSONArray();
+ String otherArr[] = others.split("[+]");
+ JSONObject tmObj1 = new JSONObject();
+ tmObj1.put("type","fixedValue");
+ StringBuilder sb = new StringBuilder();
+ for(int i=0;i clazz = Class.forName(sb.toString());
+ Object obj = clazz.newInstance();
+ Class[] cl = new Class[params.length];
+ for (int i=0;i < params.length;i++) {
+ cl[i] = String.class;
+ }
+
+ Method m1 = clazz.getDeclaredMethod(tmArr[tmArr.length-1],cl);
+ return m1.invoke(obj,params);
+ }
+
+
+ @GET
+ @Path("/refresh")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String refreshDatakey(@Context HttpServletRequest request, @Context HttpServletResponse response)
+ {
+ JSONObject rspJson = new JSONObject();
+ rspJson.put("status", true);
+ String dataKey=request.getParameter("dataKey");
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("msg", "dataKey"+ SystemEnv.getHtmlLabelName(385284,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+
+ String xmlString = Util_TableMap.getVal(dataKey);
+ if (StringUtils.isBlank(xmlString)){
+ User user = HrmUserVarify.getUser(request, response);
+ int languageid=user!=null?user.getLanguage():7;
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(508217 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+ else {
+ Util_TableMap.refreshKey(dataKey);
+ }
+ return rspJson.toJSONString();
+ }
+
+
+ @POST
+ @Path("/datas")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String datas(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey,
+ @FormParam("pageSize") String pageSize,
+ @FormParam("sortParams") String sortParams,
+ @FormParam("min") String min, @FormParam("max") String max,
+ @FormParam("current") String current,@FormParam("ismobile") String ismobile) {
+
+ JSONObject rspJson = new JSONObject();
+ rspJson.put("status", false);
+
+ if (!Util_public.checkSortParams(sortParams)){
+ rspJson.put("msg","SQL Injection error");
+ return rspJson.toJSONString();
+ }
+
+ try {
+ TimeMarker timeMarker = new TimeMarker();
+ timeMarker.setMark(true);
+ timeMarker.markStart();
+
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("msg", "dataKey is null");
+ return rspJson.toJSONString();
+ }
+ User user = HrmUserVarify.getUser(request, response);
+ int languageid=user!=null?user.getLanguage():7;
+
+ String xmlString = Util_TableMap.getVal(dataKey);
+ if (StringUtils.isBlank(xmlString)) {
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(508217 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ String sessionId = Util_TableMap.getSessionVal(dataKey);
+ if (!StringUtils.equals( SessionFilter.getSessionId(),sessionId)) {
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(388918 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap", "operates", "head", "sql", "checkboxpopedom", "browser", "otherHeads");
+
+ // 校验免登录标识
+ String loginFree = Util.null2String(bean.getRootMap().getString("loginFree"));
+ if (!loginFree.equals("true") && user == null) {
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(10004767 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ Util_TableMap.refreshKey(dataKey);
+
+ if ("1".equalsIgnoreCase(ismobile)) bean.getSql().put("ismobile", "ismobile");
+
+ //获取测试预览的当前操作用户
+// if (bean.getRootMap() != null && bean.getRootMap().containsKey("sourceparams")) {
+// String sourceparams = (String)bean.getRootMap().get("sourceparams");
+// String datashowid = sourceparams.substring(sourceparams.indexOf(":")+1);
+//
+// RecordSet rs = new RecordSet();
+// rs.executeQuery("select showname from datashowset where id = ?", datashowid);
+// if (rs.next()) {
+// String showname = rs.getString(Util.null2String("showname"));
+// String operatorId = (String)StaticObj.getInstance().getObject("browser.operatoruser." + showname);
+// if (operatorId != null && operatorId.length() > 0) {
+// user = User.getUser(Integer.parseInt(operatorId), 0);
+// }
+// }
+// }
+
+ timeMarker.mark("init Bean");
+ String isPageAutoWrap="1";
+ // 加入读取折行逻辑
+ if (user!=null) {
+ HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo();
+ String id = userSetting.getId(user.getUID() + "");
+ if ("".equals(id)) {
+ HrmUserSettingHandler handler = new HrmUserSettingHandler();
+ HrmUserSetting setting = handler.getSetting(user.getUID());
+ boolean rtxload = setting.isRtxOnload();
+ String isload = "0";
+ if (rtxload) {
+ isload = "1";
+ }
+ d.insertUserSetting(user.getUID(), isload);
+ userSetting.removeHrmUserSettingComInfoCache();
+ userSetting = new HrmUserSettingComInfo();
+ id = userSetting.getId(user.getUID() + "");
+ }
+ //默认折行
+ isPageAutoWrap = userSetting.getIsPageAutoWrap(id);
+ }
+
+ boolean flag = !"0".equals(isPageAutoWrap);
+ String pageAutoWrap=bean.getRootMap().getString("pageAutoWrap");
+ if (StringUtils.isNotBlank(pageAutoWrap)){
+ flag="1".equals(pageAutoWrap) ;
+ }
+ rspJson.put("pageAutoWrap", flag);
+ //rspJson.put("pageAutoWrap", "1".equals(isPageAutoWrap));
+
+ // pageSize逻辑上移
+ String paSize = "";
+ String pageUId = "";
+ if (null != bean.getRootMap()) {
+ pageUId = Util.null2String(bean.getRootMap().getString("pageUid"));
+ }
+ String tablePageSize = bean.getRootMap().getString("pagesize");
+
+ if (null != bean.getHeads()) {
+ if (user!=null) bean.setHeads(getShowColHeads(bean, pageUId, user));
+ bean.mergeHeads();
+ }
+
+ //调整分页规则
+ if (StringUtils.isNotBlank(pageSize)) {
+ rspJson.put("pageSize", pageSize);
+ }
+ else
+ if (!"".equals(pageUId)) {
+ if (user!=null)
+ paSize = d.getPageSize(user.getUID(), pageUId);
+ if (StringUtils.isBlank(paSize)) {
+ // 需要新增
+ rspJson.put("pageSize", StringUtils.isBlank(tablePageSize) ? 10 : tablePageSize);
+ } else {
+ rspJson.put("pageSize", paSize);
+ }
+ } else {
+ rspJson.put("pageSize", 10);
+ }
+
+ // 分页逻辑上移
+ min = Util.null2String(min);
+ max = Util.null2String(max);
+ current = Util.null2String(current);
+ if ("".equals(max) || "".equals(min)) {
+ // 只要空就走以下逻辑
+ if ("".equals(current)) {
+ min = "1";
+ max = rspJson.getString("pageSize");
+ } else {
+ int minInt = (Integer.valueOf(current) - 1) * Integer.valueOf(rspJson.getString("pageSize")) + 1;
+ int maxInt = minInt + Integer.valueOf(rspJson.getString("pageSize")) - 1;
+ min = minInt + "";
+ max = maxInt + "";
+ }
+ }
+
+ timeMarker.mark("get current user and count page ");
+ List> mssl = new ArrayList>();
+
+ if (bean.getRootMap().containsKey("datasource")) {
+ // 说明不需要拼接sql,直接从接口获取数据
+ // 支持方法中直接分页
+ mssl = getDataFromDatasource(request, response, sortParams, min, max, timeMarker, rspJson, bean, user,ismobile);
+
+
+ rspJson.put("datas", mssl);
+ rspJson.put("columns", bean.getHeads());
+ rspJson.put("ops", bean.getOperates());
+
+ } else {
+ String poolname = bean.getSql().getString( "poolname");
+ // 加入分页逻辑
+ //根据pageUId 查询 mode_customsearch 里的相关信息,是否需要置顶,以及置顶条件,然后给需要置顶的表,修改表结构添加isTop 字段,用于排序。
+ if(pageUId.startsWith("mode_customsearch:")) {
+ CustomSearchComInfo customSearchComInfo = new CustomSearchComInfo();
+ int custom_id = Util.getIntValue(Util.null2String(pageUId.substring(pageUId.indexOf(":") + 1, pageUId.length())), 0);
+ if(custom_id!=0){
+ String dataShowType = customSearchComInfo.getDatashowtype(custom_id+"");
+ Map otherparam = new HashMap<>();
+ otherparam.put("user",user);
+ if(!dataShowType.equals("2")){
+ getCompleteSql(pageUId,bean,otherparam);//添加密级判断,以及数据置顶逻辑
+ }
+ }
+ }
+
+ JSONObject jsonObject = bean.getSql();
+ if ("excel".equals(request.getParameter("displayType")) && !jsonObject.containsKey("wrapclose")){ //查询 excel 换行
+ jsonObject.put("wrapclose", "1");
+ }
+
+ mssl = getDaoTableByPool(poolname).getDevTableDatas(jsonObject, bean.getHeads(), min, max, sortParams, bean.getBroList(), timeMarker);
+ // 需要判断是否包含字段密级字段(seclevel) 目前参数不支持 快速判断(分页最大值为100,最差情况也就是遍历一百次)
+// AddSeclevelUtil addSeclevelUtil = new AddSeclevelUtil();
+// HashMap otherparam = new HashMap<>();
+// addSeclevelUtil.getSecLevelItems(mssl,user,otherparam);
+
+ timeMarker.mark("read data from datasource");
+ if(pageUId.startsWith("mode_customsearch:")) {
+ CubeSearchTransMethod.clearCache(pageUId);
+ }
+ // 加入查询分页数量
+ //logger.info("heads:"+ JSON.toJSONString( bean.getHeads()));
+
+ rspJson.put("columns", bean.getHeads());
+ rspJson.put("ops", bean.getOperates());
+ rspJson.put("datas", mssl);
+ rspJson.put("isSts", false);
+ // 加入以前的合并同类给出合计值功能
+ if (bean.getSql().containsKey("sumColumns")) {
+ // 说明存在合计参数
+ String[] sumlist = Util.null2String(bean.getSql().getString("sumColumns")).split(",");
+ List sumDecryptList = Util.TokenizerString(bean.getSql().getString("sumDecryptColumns"), ",");
+ String tCountcolumns = Util.null2String(bean.getSql().getString("countcolumnsdbtype"));
+ String decimalFormat = Util.null2String(bean.getSql().getString("decimalFormat"));
+ Map sumMap = new HashMap();
+ for (int i = 0; i < sumlist.length; i++) {
+ if(sumDecryptList.indexOf(sumlist[i]) > -1){
+ sumMap.put(sumlist[i].trim(), "****");
+ sumMap.put(sumlist[i].trim() + "span", "****");
+ continue;
+ }
+ Double thissum = 0.00;
+ Double sumspan = null;
+ for (int j = 0; j < mssl.size(); j++) {
+ if (Util_public.isThousandsField(sumlist[i], tCountcolumns))
+ {
+ String str=mssl.get(j).get(sumlist[i].trim());
+ if (StringUtils.isNotEmpty(str)) str=str.replace(",", "");
+ thissum += Util.getDoubleValue(str, 0);
+ }
+ else
+ thissum += Util.getDoubleValue(mssl.get(j).get(sumlist[i].trim()), 0);
+ //span不进行转换后统计列计算 andyzhang
+ //当页合计
+
+ }
+ sumMap.put(sumlist[i].trim(),Util_public.parseString(thissum) );
+ sumMap.put(sumlist[i].trim() + "span", Util_public.parseString(thissum));
+ }
+
+ sumMap=sumTransMethod(bean,sumMap,sumlist,decimalFormat,tCountcolumns);
+
+ Map allSumMap = new HashMap();
+ allSumMap = getDaoTableByPool(poolname).getSqlSum(bean.getSql(), sumlist, allSumMap);
+ // 如果存在sumValues,说明这个值在取tableString时已经计算好了。针对需要transMethod配置显示数据的场景。
+ // 格式: key:value+key2:value2
+ if (bean.getSql().containsKey("sumValues")) {
+ String[] sumValues = Util.null2String(bean.getSql().getString("sumValues")).split("\\+");
+ for (int i = 0; i < sumValues.length; i++) {
+ String[] sumValue = sumValues[i].split(":");
+ //allSumMap.put(sumValue[0].trim(), Util.getDoubleValue(sumValue[1].trim(), 0));
+ allSumMap.put(sumValue[0].trim(), sumValue[1].trim());
+ }
+ }
+
+ allSumMap=sumTransMethod(bean,allSumMap,sumlist,decimalFormat,tCountcolumns);
+ //decimalFormat="%.0f|%.2f|%.2f|%.0f|";
+
+ rspJson.put("isSts", true);
+ rspJson.put("stsData", sumMap);
+ rspJson.put("stsAllData", allSumMap);
+ timeMarker.mark("sum data");
+ }
+ }
+ boolean haveCheck = false;
+ if (bean.getCheckboxList().size() > 0) {
+ JSONObject checkboxFirst = (JSONObject)bean.getCheckboxList().get(0);
+ haveCheck = checkboxFirst.getString("id") != null;
+ }
+ rspJson.put("haveCheck", haveCheck);
+ rspJson.put("status", true);
+
+ // 暂时来说,这里向rspJson里放入了browser,columns,datas,还没有抽出来。
+ bean.outputByBrowser(rspJson, mssl);
+ timeMarker.mark("do browser");
+ rspJson.put("rootMap", bean.getRootMap());
+ // result = JSON.toJSONString(rspJson);
+
+ // "AAATimesF is :" + (System.currentTimeMillis() - startTime));
+ timeMarker.markEnd();
+ if (timeMarker.isMark()) {
+ rspJson.put("timeJson", timeMarker.toTimeCostJSON());
+ }
+
+ rspJson.put("expandOperate", 0);
+
+ //移动端信息
+ if (bean.getRootMap().containsKey("mobileshowtype"))
+ rspJson.put("mobileshowtype",bean.getRootMap().getString("mobileshowtype"));
+
+ if (bean.getRootMap().containsKey("rowstylefield"))
+ rspJson.put("rowstylefield",bean.getRootMap().getString("rowstylefield"));
+
+ if (bean.getRootMap().containsKey("mobileshowtemplate")) {
+ String str=bean.getRootMap().getString("mobileshowtemplate");
+ if (StringUtil.isNotNull(str)) {
+ SplitMobileTemplateBean tempBean=Util_public.getMobileTemplateExt(str);
+ rspJson.put("mobileshowtemplate",tempBean);
+ }
+ }
+
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ e.printStackTrace();
+ //rspJson.put("msg", Util_public.getErrorInfoFromException(e));
+ rspJson.put("msg", "error");
+ }
+
+ return rspJson.toJSONString();
+ }
+
+
+ private List> getDataFromDatasource(HttpServletRequest request, HttpServletResponse response,
+ String sortParams,String min,
+ String max, TimeMarker timeMarker, JSONObject rspJson,
+ SplitPageBean bean, User user, String ismobile) throws Exception {
+ List> mssl = Lists.newArrayList();
+ request.setAttribute("min", min);
+ request.setAttribute("max", max);
+ request.setAttribute("pageSize", rspJson.getString("pageSize"));
+ request.setAttribute("sortParams", sortParams);
+ String tPrimaryKey = Util.null2String(bean.getSql().getString("sqlprimarykey"));
+ rspJson = getMethodDatas(bean, user, rspJson, request, response);
+ if (timeMarker != null) {
+ timeMarker.mark("read data from dataSource");
+ }
+
+ List> getDatas = Lists.newArrayList();
+ if (rspJson.containsKey("datas")) {
+ getDatas = (List>) rspJson.get("datas");
+ }
+ int minInt = 0;
+ int maxInt = getDatas.size();
+ if (!bean.getRootMap().containsKey("pageBySelf")) {
+ minInt = Integer.valueOf(min) - 1;
+ maxInt = Integer.valueOf(max);
+ if (minInt < 0) {
+ minInt = 0;
+ }
+ if (maxInt > getDatas.size())
+ maxInt = getDatas.size();
+ }
+ for (int i = minInt; i < maxInt; i++) {
+ Map getData = getDatas.get(i);
+ for (Object obj : (List)bean.getHeads()) {
+ JSONObject column = (JSONObject)obj;
+ //加入对base64的支持功能 andyzhang
+ if (column.containsKey("isBase64")&& column.getString("isBase64").equals("1")){
+ String jsonName = column.getString("dataIndex");
+ String value=getData.get(jsonName);
+ value=TextUtil.toBase64ForMultilang(value);
+ /*if (Util.isEnableMultiLang()) {//weainput多语言需要在前面加上base_标识
+ value=TextUtil.toBase64ForMultilang(value);
+ }else {
+ value=Util_public.base64Encode(value);
+ }*/
+ getData.put(jsonName, value);
+ }
+ if (column.containsKey("transMethod") && column.containsKey("display"))
+ if ("true".equals(column.getString("display"))|| "true".equals(column.getString("transMethodForce"))) {
+ String jsonName = column.getString("dataIndex");
+ String transvalue = Util_public.doTransMethod(column, getData);
+
+ if ("1".equalsIgnoreCase(ismobile)) {
+ if (StringUtils.isNotBlank(transvalue))
+ transvalue=Util_public.deletcLink(transvalue);
+ }
+ getData.put(jsonName+"span", transvalue);
+ }
+ if (StringUtils.isNotBlank(tPrimaryKey)) {
+ getData.put("randomFieldId",getData.get(tPrimaryKey));
+ }
+ }
+ mssl.add(getData);
+ }
+
+ if (timeMarker != null) {
+ timeMarker.mark("do transmethod in dataSource");
+ }
+ return mssl;
+ }
+
+ // 测试用获取 xmlString以及oracle和sql拼好的语句
+ @GET
+ @Path("/getxml")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String datas(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ // long startTime = System.currentTimeMillis();
+ String dataKey = Util.null2String(request.getParameter("dataKey"));
+ JSONObject jo = new JSONObject();
+ jo.put("status", false);
+ try {
+ if (!"".equals(dataKey)) {
+ //AndyZhang 解决IP地址切换的导致的数据获取不到问题
+ String xmlString = Util.null2String(Util_TableMap.getVal(dataKey));
+ if (!"".equals(xmlString)) {
+ jo.put("xmlString", xmlString);
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "head", "sql");
+ String sortParams = Util.null2String(request.getParameter("sortParams"));
+ RecordSet rs = new RecordSet();
+ String sql = getDevTableSql(bean.getSql(), bean.getHeads(), sortParams, rs.getDBType());
+ jo.put("sql", sql);
+ jo.put("status", true);
+ } else {
+ jo.put("msg", "xmlString "+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ }
+ } else {
+ jo.put("msg", "dataKey "+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ }
+ } catch (Exception e) {
+ logger.error(e);
+ //e.printStackTrace();
+ jo.put("msg", Util_public.getErrorInfoFromException(e));
+ }
+ return jo.toString();
+ }
+
+ public String getTableSqlByKey(HttpServletRequest request, String dataKey) throws Exception {
+ // String dataKey = Util.null2String(request.getParameter("dataKey"));
+ if (null == dataKey || "".equals(dataKey)
+ || !Util_TableMap.containsKey(dataKey))
+ return "";
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "head", "sql");
+ RecordSet rs = new RecordSet();
+ String dbtype = "oracle".equalsIgnoreCase(rs.getDBType()) ? "oracle" : "sqlserver";
+ return getDevTableSql(bean.getSql(), bean.getHeads(), "", dbtype);
+ }
+
+ public String getTableSqlByKeyNoOrder(HttpServletRequest request, String dataKey) throws Exception {
+ // String dataKey = Util.null2String(request.getParameter("dataKey"));
+ if (null == dataKey || "".equals(dataKey)
+ || !Util_TableMap.containsKey(dataKey))
+ return "";
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "head", "sql");
+ RecordSet rs = new RecordSet();
+ String dbtype = "oracle".equalsIgnoreCase(rs.getDBType()) ? "oracle" : "sqlserver";
+ return getDevTableSqlNoOrder(bean.getSql(), bean.getHeads(), "", dbtype);
+ }
+
+ private String getDevTableSqlNoOrder(JSONObject sqlObj, JSONArray heads,
+ String sortParams, String type) {
+
+ String tFields = Util.null2String(sqlObj.getString("backfields"));
+ String tFrom = Util.toSqlForSplitPage(Util.null2String(sqlObj
+ .getString("sqlform")));
+ String tWhere = Util.toSqlForSplitPage(Util.null2String(sqlObj
+ .getString("sqlwhere")));
+ String tOrder = Util.null2String(sqlObj.getString("sqlorderby"));
+ String tOrderWay = Util.null2String(sqlObj.getString("sqlsortway"));
+ String tDistinct = Util.null2String(sqlObj.getString("sqlisdistinct"));
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append(" select " + ("true".equals(tDistinct) ? "distinct " : "")
+ + tFields);
+ sb.append(" ");
+ if (!tFrom.startsWith("from"))
+ sb.append("from");
+ sb.append(" ").append(tFrom);
+ sb.append(" ");
+ if (!tWhere.startsWith("where") && !"".equals(tWhere))
+ sb.append(" where");
+ sb.append(" ").append(tWhere);
+ if (!"".equals(tOrder))
+ sb.append(" order by ").append(tOrder);
+
+ return sb.toString();
+ }
+
+ private String getDevTableSql(JSONObject sqlObj, JSONArray heads,
+ String sortParams, String type) {
+ String tFields = Util.null2String(sqlObj.getString("backfields"));
+ String tFrom = Util.toSqlForSplitPage(Util.null2String(sqlObj
+ .getString("sqlform")));
+ String tWhere = Util.toSqlForSplitPage(Util.null2String(sqlObj
+ .getString("sqlwhere")));
+ String tOrder = Util.null2String(sqlObj.getString("sqlorderby"));
+ String tOrderWay = Util.null2String(sqlObj.getString("sqlsortway"));
+ String tDistinct = Util.null2String(sqlObj.getString("sqlisdistinct"));
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append(" select " + ("true".equals(tDistinct) ? "distinct " : "")
+ + tFields);
+ sb.append(" ");
+ if (!tFrom.startsWith("from"))
+ sb.append("from");
+ sb.append(" ").append(tFrom);
+ sb.append(" ");
+ if (!tWhere.startsWith("where") && !"".equals(tWhere))
+ sb.append(" where");
+ sb.append(" ").append(tWhere);
+ if (!"".equals(tOrder))
+ sb.append(" order by ").append(tOrder);
+ if (!"".equals(tOrderWay))
+ sb.append(" ").append(tOrderWay);
+
+ return sb.toString();
+ }
+
+ /**
+ * 分页函数接口
+ * @param request 请求对象
+ * @param response 回复对象
+ * @param dataKey tableString 键
+ * @param min 开始行号
+ * @param pageSize 分页大小
+ * @param max 末尾行号
+ * @return
+ */
+ @POST
+ @Path("/pageSize")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String datas(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey, @FormParam("min") String min,
+ @FormParam("pageSize") String pageSize,
+ @FormParam("max") String max) {
+ long startTime = System.currentTimeMillis();
+ String result = "";
+ JSONObject rspJson = new JSONObject();
+ rspJson.put("status", false);
+ String pageUid = "";
+ User user = HrmUserVarify.getUser(request, response);
+ String xmlString = Util_TableMap.getVal(dataKey);
+
+ if (StringUtils.isBlank(xmlString)) {
+ int languageid=user!=null?user.getLanguage():7;
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(508217 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap");
+ pageUid = Util.null2String(bean.getRootMap().getString("pageUid"));
+ } catch(Exception e) {
+ logger.error(e);
+ e.printStackTrace();
+ //rspJson.put("msg", Util_public.getErrorInfoFromException(e));
+ }
+ if (StringUtils.isBlank(pageUid)) {
+ if (rspJson.get("msg") == null) {
+ rspJson.put("msg", "pageUid"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ }
+ return rspJson.toJSONString();
+ }
+
+ if (user==null) {
+ rspJson.put("msg", "user"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+
+ return rspJson.toJSONString();
+ }
+ //加入查询分页数量
+ min = Util.null2String(min);
+ max = Util.null2String(max);
+ pageSize = Util.null2String(pageSize);
+ if (!"".equals(pageUid)) {
+ int usedPageSize = 10;
+ if (!"".equals(pageSize)) {
+ usedPageSize = Integer.valueOf(pageSize);
+ } else if (!"".equals(min) && !"".equals(max)) {
+ usedPageSize = (Integer.valueOf(max) - Integer.valueOf(min)) + 1;
+ }
+
+ String paSize = d.getPageSize(user.getUID(), pageUid);
+ if ("".equals(paSize)) {
+ // 需要新增
+ d.insertPageSize(user.getUID(), pageUid, usedPageSize);
+ } else if (usedPageSize != Integer.valueOf(paSize)) {
+ // 需要修改
+ d.updatePageSize(user.getUID(), pageUid, usedPageSize);
+ }
+ rspJson.put("pageSize", usedPageSize);
+ rspJson.put("status", true);
+ } else {
+ rspJson.put("errMsg", "pageUid"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ }
+ result = JSON.toJSONString(rspJson);
+ return result;
+ }
+
+ /**
+ * 安全性检查
+ * @param data
+ * @return
+ */
+ public JSONObject checkJson(JSONObject data){
+ if (Objects.isNull(checkData)) {
+ BaseBean bb = new BaseBean();
+ checkData =Util.null2String(bb.getPropValue("weaver_new_session","checkdata")) ;
+ }
+
+ if ("0".equals(checkData))
+ return data;
+
+ for (Map.Entry entry : data.entrySet()) {
+ String value=Util.null2String(entry.getValue());
+ value = SecurityMethodUtil.checkSql(value);
+ value = SecurityMethodUtil.clearKeywordFromConditon(value);
+ entry.setValue(value);
+ }
+
+ return data;
+ }
+
+
+ /**
+ * 获取选择框的状态列表
+ * @param request 请求
+ * @param response 响应
+ * @param dataKey 键值
+ * @param checkId 编号
+ * @param randomDatas
+ * @return
+ */
+ @POST
+ @Path("/checks")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String checks(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey, @FormParam("checkId") String checkId,
+ @FormParam("randomDatas") String randomDatas) {
+ JSONObject rspJson = new JSONObject();
+ /*防止html注入
+ if(StringUtils.isNotBlank(randomDatas))
+ randomDatas=randomDatas.replaceAll("[\\>\\<]", "");
+ */
+ JSONArray rdJson = JSON.parseArray(randomDatas);
+ try {
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("msg", "dataKey is null");
+ //rspJson.put("errorCode", "005");
+ rspJson.put("status", false);
+ return rspJson.toJSONString();
+ }
+
+ User user = HrmUserVarify.getUser(request, response);
+
+ String xmlString = Util_TableMap.getVal(dataKey);
+ if (StringUtils.isBlank(xmlString)) {
+ int languageid=user!=null?user.getLanguage():7;
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(508217 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ List getList = new ArrayList();
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap", "operates", "head", "checkboxpopedom", "otherHeads");
+
+ // 校验免登录标识
+ String loginFree = Util.null2String(bean.getRootMap().getString("loginFree"));
+ if (!loginFree.equals("true") && user == null) {
+ int languageid=user!=null?user.getLanguage():7;
+ rspJson.put("msg",SystemEnv.getHtmlLabelName(10004767 ,languageid) );
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ bean.mergeHeads();
+
+ JSONObject popdom = bean.getOperates().size() > 0 ? bean.getOperates().getJSONObject(0) : null;
+ String opTransmethod = popdom != null ? Utils.null2String(popdom.getString("transmethod")) : "";
+ JSONObject checkbox = bean.getCheckBox(checkId);
+ String showmethod = Util.null2String(checkbox.getString("showmethod"));
+ for (int i = 0; i < rdJson.size(); i++) {
+ JSONObject newRd = new JSONObject();
+ JSONObject rd = rdJson.getJSONObject(i);
+ rd=checkJson(rd);
+ JSONArray tmParams = transMethodToNew(checkbox, "popedompara", rd, bean.getHeads());
+ String opValue = "";
+ String value = "";
+ try {
+ // "tmParams:"+tmParams.toJSONString());
+ if ("".equals(showmethod) || "true".equals(showmethod))
+ value = "true";
+ else if ("false".equals(showmethod))
+ value = "false";
+ else //检查参数安全 andyzhang 2019-12-23
+ //value = SecurityMethodUtil.textXssClean(doMethod(rd, showmethod, tmParams, "", bean.getHeads()));
+ value = doMethod(rd, showmethod, tmParams, "", bean.getHeads());
+
+ if ("".equals(opTransmethod) || "true".equals(opTransmethod))
+ newRd.put("randomFieldOp", "true");
+ else if ("false".equals(opTransmethod))
+ newRd.put("randomFieldOp", "false");
+ else {
+ JSONArray opParams = new JSONArray();
+ JSONObject tmObj = new JSONObject();
+ tmObj.put("type", "fixedValue");
+ tmObj.put("obj", rd.getString("randomFieldId") == null ? 0
+ : rd.getString("randomFieldId"));
+ opParams.add(tmObj);
+
+ opParams.addAll(transMethodToNew(popdom, "otherpara", rd, bean.getHeads()));
+ opParams.addAll(transMethodToNew(popdom, "otherpara2", rd, bean.getHeads()));
+ opValue = doMethod(rd, opTransmethod, opParams, "",bean.getHeads());
+ for (int j = 1; j < bean.getOperates().size(); j++) {
+ JSONObject op = bean.getOperates().getJSONObject(j);
+ JSONArray rfop = transMethodToNew(op, "otherpara", rd, bean.getHeads());
+ // l.write("checks rfop :" + rfop.toString());
+ newRd.put("randomFieldOpPara" + op.getString("index"), rfop);
+ }
+ newRd.put("randomFieldOp", opValue);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ newRd.put("randomFieldCk", value);
+ newRd.put("randomFieldId", rd.getString("randomFieldId"));
+ // "opValue:"+opValue);
+ // l.write("checks out try newRd :" + newRd.toString());
+ rdJson.set(i, newRd);
+ }
+ } catch (Exception e) {
+ logger.error("checks 错误:"+e.getMessage());
+ rspJson.put("msg", e.getMessage());
+ e.printStackTrace();
+ //rspJson.put("msg", Util_public.getErrorInfoFromException(e));
+ }
+ // return JSON.toJSONString(rspJson);
+ //l.writeLog(JSON.toJSONString(rspJson));
+ rspJson.put("status", true);
+ rspJson.put("datas", rdJson);
+ return JSON.toJSONString(rspJson);
+ }
+
+ private boolean checkDataKey(String dataKey) {
+ return !dataKey.matches("^[A-Za-z0-9-]+$");
+ }
+
+
+ /**
+ * 读取待选列
+ * @param request
+ * @param response
+ * @return
+ */
+ @GET
+ @Path("/showCol")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getshowCol(@Context HttpServletRequest request,
+ @Context HttpServletResponse response) {
+ JSONObject rspJson = new JSONObject();
+ String dataKey = Util.null2String(request.getParameter("dataKey"));
+ rspJson.put("status", false);
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("errMsg", "dataKey "+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap","head");
+ String pageUid = "";
+ if (null != bean.getRootMap()) {
+ pageUid = Util.null2String(bean.getRootMap().getString("pageUid"));
+ }
+ if (StringUtils.isBlank(pageUid)) {
+ rspJson.put("errMsg", "pageUid"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+ // 获得当前用户的定制列
+ User user = HrmUserVarify.getUser(request, response);
+
+ if (user==null) {
+ rspJson.put("errMsg", "user"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+
+ List userDefCols = d.getUserDefColumns(pageUid, user.getUID());
+ JSONArray unchoosedColumns = bean.getUnchoosedColumns();
+ JSONArray choosedColumns = bean.getChoosedColumns();
+
+ // 用户如果有定制列,则按用户的定义处理
+ // 但如果用户配置的定制列已不存在,或者有不在配置列中的,则按当前配置的处理
+ if (userDefCols != null && !userDefCols.isEmpty()) {
+ JSONArray defUnchoose = new JSONArray();//用户自定义的未选列
+ JSONArray defChoosed = new JSONArray();//用户自定义的已选列
+ // 将默认的待选已选转为Map,增加orders属性
+ Map unchooseMap = Maps.newHashMap();
+ Map choosedMap = Maps.newHashMap();
+ for (int i=0; i< unchoosedColumns.size();i++) {
+ JSONObject col = (JSONObject) unchoosedColumns.get(i);
+ col.put("orders", i);
+ unchooseMap.put(col.getString("dataIndex"), col);
+ }
+ for (int i=0; i< choosedColumns.size();i++) {
+ JSONObject col = (JSONObject) choosedColumns.get(i);
+ col.put("orders", i);
+ choosedMap.put(col.getString("dataIndex"), col);
+ }
+ // 按用户配置的定制列来组装数据
+ for (UserDefCol defCol: userDefCols) {
+ String dataIndex = defCol.getDataIndex();
+ JSONObject col = unchooseMap.get(dataIndex);
+ unchooseMap.remove(dataIndex);
+ if (col == null) {
+ col = choosedMap.get(dataIndex);
+ choosedMap.remove(dataIndex);
+ }
+ if (col == null) {
+ continue;
+ }
+ col.put("display", defCol.getDisplay());
+ col.put("orders", defCol.getOrders());
+ if ("0".equals(defCol.getDisplay())) {
+ defChoosed.add(col);
+ } else {
+ defUnchoose.add(col);
+ }
+ }
+ // 对于不在用户配置内的,按它们的配置位置加入到列表中
+ if (!unchooseMap.isEmpty()) {
+ addToListByOrders(defUnchoose, unchooseMap);
+ }
+ if (!choosedMap.isEmpty()) {
+ addToListByOrders(defChoosed, choosedMap);
+ }
+ unchoosedColumns = defUnchoose;
+ choosedColumns = defChoosed;
+ }
+
+ rspJson.put("destdatas", choosedColumns);
+ rspJson.put("srcdatas", unchoosedColumns);
+ rspJson.put("currentPage", "1");
+ rspJson.put("totalPage", "1");
+ rspJson.put("status", true);
+
+ } catch(Exception e) {
+ logger.error(e);
+ //e.printStackTrace();
+ //rspJson.put("msg", Util_public.getErrorInfoFromException(e));
+ return rspJson.toJSONString();
+ }
+ return JSON.toJSONString(rspJson);
+ }
+
+ private class OrderCompare implements Comparable {
+ JSONObject jsonObject;
+ public OrderCompare(JSONObject jsonObject){
+ this.jsonObject = jsonObject;
+ }
+ private int getOrders() {
+ return jsonObject.getIntValue("orders");
+ }
+
+ @Override
+ public int compareTo(OrderCompare o) {
+ return Integer.valueOf(this.getOrders()).compareTo(Integer.valueOf(o.getOrders()));
+ }
+ }
+
+ /**
+ * 将map中的value按顺序(orders属性)加入到前面的list中。
+ * @param array
+ * @param map
+ */
+ private void addToListByOrders(JSONArray array, Map map) {
+ List list = Lists.newArrayList();
+ for (JSONObject jo: map.values()) {
+ list.add(new OrderCompare(jo));
+ }
+ Collections.sort(list);
+ for (OrderCompare o : list){
+ int index = o.getOrders();
+ if (index < array.size()) {
+ array.add(index, o.jsonObject);
+ } else {
+ array.add(o.jsonObject);
+ }
+ }
+ }
+
+ /**
+ * 保存已选列
+ * @param request
+ * @param response
+ * @param dataKey
+ * @param systemIds
+ * @return
+ */
+ @POST
+ @Path("/showCol")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String postshowCol(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey,
+ @FormParam("systemIds") String systemIds,
+ @FormParam("widths") String widths) {
+ JSONObject rspJson = new JSONObject();
+ rspJson.put("status", false);
+ if (StringUtils.isBlank(dataKey)) {
+ rspJson.put("errMsg", "dataKey "+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap","head");
+ String pageUid = "";
+ if (null != bean.getRootMap()) {
+ pageUid = Util.null2String(bean.getRootMap().getString("pageUid"));
+ }
+ if (StringUtils.isBlank(pageUid)) {
+ rspJson.put("errMsg", "pageUid"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+
+ User user = HrmUserVarify.getUser(request, response);
+
+ if (user==null) {
+ rspJson.put("errMsg", "user"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return rspJson.toJSONString();
+ }
+
+ if (StringUtils.isBlank(systemIds)) {
+ boolean result = d.clearShowCol(pageUid, user.getUID());
+ rspJson.put("status", result);
+ } else {
+ String[] dataIndexArr = Util.null2String(systemIds).split(",");
+ String[] widthIndexArr = Util.null2String(widths).split(",");
+
+ if (StringUtils.isNotBlank(widths))
+ widthIndexArr = Util.null2String(widths).split(",");
+
+ List choosedDefCols = Lists.newArrayList();//已选列
+ List unchoosedDefCols = Lists.newArrayList();//待选列
+ // 处理传入的已选列
+ Set dataIndexSet = Sets.newHashSet();
+ for (int i=0;i= choosedDefCols.size()) {
+ choosedDefCols.add(defCol);
+ } else {
+ choosedDefCols.add(order, defCol);
+ }
+ } else {
+ orders++;
+ UserDefCol defCol = new UserDefCol(col.getString("dataIndex"), user.getUID(), pageUid, "1", orders,"");
+ unchoosedDefCols.add(defCol);
+ }
+ }
+ for (int i = 0; i list= Arrays.asList(field_list);
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+ obj.put("display", "false");
+ String fieldName=obj.getString("dbField");
+ if (list.contains(fieldName)) {obj.put("display", "true");};
+ }
+
+ for(String item:field_list) {
+ JSONObject obj = getJSONObject(item,heads);
+ if (obj!=null) {
+ obj.put("display", "true");
+ newHeads.add(obj);
+ }
+ }
+ return newHeads;
+ }
+ else
+ return heads;
+
+ }
+
+ public boolean getUserExportConfig(int userId)
+ {
+ BaseBean bean=new BaseBean();
+ String status=bean.getPropValue("weaver_export_config", "status");
+ status=StringUtils.isBlank(status)?"0":status;
+ if ("0".equals(status)) return true;
+ String userList=bean.getPropValue("weaver_export_config", "user");
+ String deptList=bean.getPropValue("weaver_export_config", "dept");
+ if (StringUtils.isNotEmpty(userList)) {
+ String[] list=userList.split(",");
+ for(String item:list) {
+ if (String.valueOf(userId).equalsIgnoreCase(item))
+ return true;
+ }
+ }
+
+ if (StringUtils.isNotEmpty(deptList)) {
+ String[] list=deptList.split(",");
+ String where="";
+ for(String item:list) {
+ where=StringUtils.isEmpty(where)?item:where+","+item;
+ }
+ RecordSet rs=new RecordSet();
+ rs.executeQuery("select id from HrmResource where departmentid in ("+where+") and id =?",userId);
+ return rs.getCounts()>0;
+ }
+ return false;
+
+ }
+
+ /**
+ * 清除Excel临时文件
+ * @param request
+ * @param response
+ * @return
+ */
+ @GET
+ @Path("/cleartemp")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String cleartemp(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ String fileName=request.getParameter("filename");
+ WeaResultMsg result=new WeaResultMsg(true);
+
+ if (StringUtils.isBlank(fileName) || fileName.contains("..")){
+ return result.fail("file name error").toString();
+ }
+
+ String path = request.getSession().getServletContext().getRealPath("cloudstore/system/tmpFile/" + fileName);
+
+ File file=new File(path);
+
+ if (file.exists()) {
+ try {
+ file.delete();
+ return result.success("ok").toString();
+ }
+ catch (Exception ex) {
+ return result.success(ex.getMessage()).toString();
+ }
+ }
+ return result.success(""+ SystemEnv.getHtmlLabelName(391241,weaver.general.ThreadVarLanguage.getLang())+"").toString();
+ }
+
+ /**
+ * 下载文件并且自动删除文件
+ * @param request
+ * @param response
+ * @throws IOException
+ */
+ @GET
+ @Path("/downfiledata")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String downloadExcel (@Context HttpServletRequest request, @Context HttpServletResponse response)
+ throws IOException {
+ WeaResultMsg result=new WeaResultMsg(false);
+
+ String fileName=request.getParameter("filename");
+
+ if (!SecurityMethodUtil.isValidPath(fileName)){
+ return result.fail("file name error").toString();
+ }
+
+ String reName=request.getParameter("rename");
+ if (StringUtils.isNotBlank(reName))
+ reName=URLDecoder.decode(reName,"utf-8");
+ String path = request.getSession().getServletContext().getRealPath("filesystem/cloudstore/system/tmpFile/" + fileName);
+
+ response.reset();
+ response.setCharacterEncoding("UTF-8");
+ logger.info("开始导出文件:"+fileName);
+ logger.info("文件名:"+reName);
+ File file = new File(path);
+ if (!file.exists()) return result.fail(""+ SystemEnv.getHtmlLabelName(10004787,weaver.general.ThreadVarLanguage.getLang())+""+fileName).toString();
+
+ response.setContentType("application/vnd.ms-excel;charset=ISO-8859-1");
+ //response.setContentType("application/octet-stream");
+
+ String agent = request.getHeader("User-Agent");
+
+ if (StringUtils.isNotBlank(reName)){
+ //response.addHeader("Content-Disposition","attachment;filename=" +reName);
+ if((agent.contains("Firefox")||agent.contains(" Chrome")||agent.contains("Safari") )&& !agent.contains("Edge")){
+ response.setHeader("content-disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(reName.replaceAll("<", "").replaceAll(">", "").replaceAll("<", "").replaceAll(">", ""),"UTF-8").replaceAll("\\+", "%20").replaceAll("%28", "(").replaceAll("%29", ")"));
+ }else{
+ response.setHeader("content-disposition", "attachment; filename=\"" +
+ URLEncoder.encode(reName.replaceAll("<", "").replaceAll(">", "").replaceAll("<", "").replaceAll(">", ""),"UTF-8").replaceAll("\\+", "%20").replaceAll("%28", "(").replaceAll("%29", ")")+"\"");
+ }
+ }
+ else
+ response.addHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes(),"utf-8"));
+
+ InputStream in = new FileInputStream(file);
+ response.setHeader("Content-Length", String.valueOf(in.available()));
+ logger.info("文件长度:"+in.available());
+ OutputStream out = response.getOutputStream();
+ int size=0;
+ int len = 0;
+ byte[] buffer = new byte[1024];
+ while ((len = in.read(buffer)) > 0) {
+ out.write(buffer,0,len);
+ size=size+len;
+ }
+ logger.info("文件长度写出:"+size);
+ in.close();
+ out.flush();
+ out.close();
+ file.deleteOnExit();
+ file.delete();
+ return "";
+ }
+
+
+ @POST
+ @Path("/export")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String export(@Context HttpServletRequest request,
+ @Context HttpServletResponse response,
+ @FormParam("dataKey") String dataKey,
+ @FormParam("filetype") String filetype, @FormParam("filename") String filename,
+ @FormParam("fields")String fields,@FormParam("min") String min, @FormParam("max") String max,
+ @FormParam("htmlfields")String htmlfields,@FormParam("sharepassword") String sharepassword) {
+ /*if (StringUtils.isNotBlank(filename)) {
+ try {
+ filename = URLDecoder.decode(filename, "utf-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }*/
+ JSONObject rspJson = new JSONObject();
+
+ if (StringUtils.isBlank(filetype)) {
+ filetype="xlsx";
+ } else if (!StringUtils.equalsAny(filetype, "xlsx", "xls") ) {
+ rspJson.put("msg", "file type error");
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ if (!SecurityMethodUtil.isValidPath(filename)){
+ rspJson.put("msg", "file name error");
+ rspJson.put("errorCode", "005");
+ return rspJson.toJSONString();
+ }
+
+ String xmlString = Util_TableMap.getVal(dataKey);
+ if (StringUtils.isBlank(xmlString)) {
+ rspJson.put("msg", ""+ SystemEnv.getHtmlLabelName(10004788,weaver.general.ThreadVarLanguage.getLang())+"");
+ rspJson.put("errorCode", "005");
+ rspJson.put("dataKey", dataKey);
+ return rspJson.toJSONString();
+ }
+ String pageUId="";
+ String maxOccurs ="0";
+ boolean status = true;
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap", "head", "sql");
+ User user = HrmUserVarify.getUser(request, response);
+
+ pageUId = bean.getRootMap().getString("pageUid");
+
+ logger.info("pageUid=======>> " + pageUId);
+ String exportRight= bean.getRootMap().getString("exportRight");
+ String rootFileName = bean.getRootMap().getString("fileName");
+
+ //Map maxMap=new HashMap<>();
+ if(Objects.nonNull(pageUId)) maxOccurs = Util_Ehcache.getInstance().getLockStr(pageUId);
+
+ if (Util.getIntValue(maxOccurs,0)>3){
+ logger.info("限制下载并发:"+maxOccurs);
+ rspJson.put("msg", SystemEnv.getHtmlLabelName(522074 ,user.getLanguage()));
+ rspJson.put("errorCode", "005");
+ rspJson.put("dataKey", dataKey);
+ return rspJson.toJSONString();
+ }
+ else{
+ if(Objects.nonNull(pageUId)) {
+ maxOccurs = String.valueOf(Util.getIntValue(Util_Ehcache.getInstance().getLockStr(pageUId), 0) + 1);
+ Util_Ehcache.getInstance().putLock(pageUId, maxOccurs);
+ logger.info("限制下载并发:" + maxOccurs);
+ }
+ }
+
+ String isEncryptShare = Util.null2String(bean.getRootMap().getString("isEncryptShare"));
+ if(isEncryptShare.equals("1")&&StringUtils.isBlank(sharepassword)){
+ if(Objects.nonNull(pageUId))logger.info("加密绕过:"+pageUId);
+ rspJson.put("msg", SystemEnv.getHtmlLabelName(382663 ,user.getLanguage()));
+ rspJson.put("errorCode", "005");
+ rspJson.put("dataKey", dataKey);
+ return rspJson.toJSONString();
+ }
+
+ //andyzhang 判断权限在导出
+ if (StringUtils.isNotBlank(exportRight))
+ if (!HrmUserVarify.checkUserRight(Util.null2String(exportRight), user)){
+ rspJson.put("noright", true);
+ rspJson.put("status",status);
+ if(Objects.nonNull(pageUId)) {
+ maxOccurs = String.valueOf(Util.getIntValue(Util_TableMap.getValWithEh(pageUId), 0) - 1);
+ Util_TableMap.setObjValWithEh(pageUId, maxOccurs);
+ }
+ return rspJson.toJSONString();
+ }
+ //andyzhang 根据配置导出
+ if (null != bean.getHeads() && Objects.nonNull(pageUId)) {
+ if (user!=null) bean.setHeads(getShowColHeads(bean, pageUId, user));
+ bean.mergeHeads();
+ }
+
+ JSONArray heads=bean.getHeads();
+ if (StringUtils.isNotBlank(fields))
+ heads=getExportFields(fields,bean.getHeads());
+
+ List> mssl = null;
+ bean.getSql().put("fromExport","1");
+
+ String filetypestr="."+filetype;
+
+ String fileNameRadom = (rootFileName != null ? rootFileName : "table") + Util_DateTime.getNowDateTimeStr() +
+ Util_public.createGuid() +filetypestr ;
+ HttpSession session = request.getSession(true);
+ File f = new File(session.getServletContext().getRealPath("filesystem/cloudstore/system/tmpFile/"));
+ if(!f.exists()) {
+ f.mkdirs();
+ }
+
+ String url = session.getServletContext().getRealPath("filesystem/cloudstore/system/tmpFile/" + fileNameRadom);
+ String realUrl = "filesystem/cloudstore/system/tmpFile/" + fileNameRadom;
+
+ if (StringUtils.isBlank(fields)&& user!=null && Objects.nonNull(pageUId))
+ heads = getShowColHeads(bean, pageUId, user);
+
+ String languageId="7";
+ if (user!=null)
+ languageId = String.valueOf(user.getLanguage());
+
+ Workbook workbook = null;
+ FileOutputStream fOut = new FileOutputStream(url);
+
+ // 先限制结束位置为第 100万 条
+ // int end = Integer.MAX_VALUE;
+ int end = 1000000;
+ int start = 0;
+ // 步长
+ final int STEP_SIZE = 5000;
+ // 当前max值
+ int temMax = STEP_SIZE;
+ int temMin = 1;
+ // 如果用户设置了min、max
+ if (StringUtils.isNotBlank(min)) {
+ start = Integer.parseInt(min);
+ temMin = start;
+ temMax = temMin + STEP_SIZE;
+ }
+ if (StringUtils.isNotBlank(max)) {
+ end = Integer.parseInt(max);
+ temMax = Math.min(end, temMax);
+ }
+ boolean isEXCEL2003 = "xls".equalsIgnoreCase(filetype);
+ if (isEXCEL2003) {
+ // excel 单sheet页最多65535行,限定最大行数。
+ end = Math.min(start + 65530, end);
+ }
+ // 标记当前操作是不是 向excel中追加
+ boolean isAddRow = false;
+ TimeMarker timeMarker = new TimeMarker();
+ timeMarker.setMark(true);
+ timeMarker.markStart();
+ while (true) {
+ // 从数据库查询数据
+ if (bean.getRootMap().containsKey("datasource")) {
+ mssl = getDataFromDatasource(request, response, null, String.valueOf(temMin), String.valueOf(temMax), null, rspJson, bean, user,"");
+ } else {
+ String poolname = bean.getSql().getString("poolname");
+ mssl = getDaoTableByPool(poolname).getDevTableDatas(bean.getSql(), heads, String.valueOf(temMin),
+ String.valueOf(temMax), "", new ArrayList(), new TimeMarker());
+ }
+ timeMarker.mark("get data from database " + temMax);
+ if (StringUtils.isNotBlank(htmlfields))
+ Util_public.replaceHtml(heads,mssl,htmlfields);
+
+ // 处理追加
+ if (isEXCEL2003) {
+ if (isAddRow) {
+ workbook = addRowExcel2003(workbook, heads, mssl, languageId);
+ } else {
+ workbook = exportExcel2003(heads,mssl,languageId,filename);
+ isAddRow = true;
+ }
+ } else {
+ if (isAddRow) {
+ workbook = addRowExcel2007(workbook, heads, mssl, languageId);
+ } else {
+ workbook=exportExcel2007(heads,mssl,languageId,filename);
+ isAddRow = true;
+ }
+ }
+ timeMarker.mark("add data to file " + temMax);
+ // 移动窗口
+ temMin += STEP_SIZE;
+ temMax = Math.min(end, temMax + STEP_SIZE);
+ // 如果查询结果 mssl 的长度小于步长,说明已经到数据末尾。
+ if (mssl.size() < STEP_SIZE || temMin > temMax) {
+ break;
+ }
+
+ }
+
+ workbook.write(fOut);
+ fOut.flush();
+
+ fOut.getFD().sync();
+ fOut.close();
+
+ if (StringUtils.isNotBlank(sharepassword)) {
+
+ RSA rsa=new RSA();
+ sharepassword=rsa.decrypt(request, sharepassword);
+
+ if ("xls".equalsIgnoreCase(filetype)) {
+ Biff8EncryptionKey.setCurrentUserPassword(sharepassword);
+ POIFSFileSystem fs = new POIFSFileSystem(new File(url), true);
+ HSSFWorkbook hwb = new HSSFWorkbook(fs.getRoot(), true);
+ FileOutputStream out = new FileOutputStream(url);
+ hwb.write(out);
+ hwb.close();
+ out.close();
+ Biff8EncryptionKey.setCurrentUserPassword(null);
+
+ } else {
+
+ POIFSFileSystem fs = new POIFSFileSystem();
+ EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);
+ Encryptor enc = info.getEncryptor();
+ //设置密码
+ enc.confirmPassword(sharepassword);
+ OPCPackage opc = OPCPackage.open(new File(url), PackageAccess.READ_WRITE);
+ OutputStream os = enc.getDataStream(fs);
+ opc.save(os);
+ opc.close();
+ os.close();
+ //把加密后的文件写回到流
+ FileOutputStream fos = new FileOutputStream(url);
+ fs.writeFilesystem(fos);
+ fs.close();
+ fos.close();
+
+ }
+ }
+
+ String rename="";
+ if (StringUtils.isNotBlank(filename))
+ rename=URLEncoder.encode(URLEncoder.encode(filename+"."+filetype,"utf-8"),"utf-8");
+ rspJson.put("size",mssl.size());
+ rspJson.put("url","/api/ec/dev/table/downfiledata?filename="+fileNameRadom+"&rename="+rename);
+ // }
+
+ timeMarker.mark("deal with file");
+ //加入导出日志
+ BizLogContext bizLogContext=new BizLogContext();
+ bizLogContext.setLogType(BizLogType.SYSTEM);
+ bizLogContext.setDateObject(new Date());
+ if (user!=null)
+ bizLogContext.setUserid(user.getUID());
+ String pageId = Util.null2String(bean.getRootMap().getString("pageId"));
+ bizLogContext.setTargetId(pageId);
+ bizLogContext.setLogSmallType(BizLogSmallType4SysEngine.SYSTEM_ENGINE_EXPORT);
+ if ("Hrm:resourceSearchResultByManager".equals(pageId)||"Hrm:resourceSearchResult".equals(pageId)) {
+ bizLogContext.setTargetName("~`~`7 导出人员Excel日志`~`8 Export personnel excel log`~`9 導出人員Excel日誌`~`~");
+ bizLogContext.setLogType(BizLogType.HRM);
+ }
+ else
+ bizLogContext.setTargetName(""+ SystemEnv.getHtmlLabelName(382051,weaver.general.ThreadVarLanguage.getLang())+"");
+ if (user!=null)
+ bizLogContext.setUsertype(Util.getIntValue(user.getLogintype()));
+ bizLogContext.setOperateType(BizLogOperateType.SELECT);
+ //bizLogContext.setParams(request.getParameterMap());
+ bizLogContext.setClientIp(Util.null2String(Util.getIpAddr(request)));
+ bizLogContext.setDesc(xmlString);
+ //l.writeLog(bizLogContext.toString());
+ saveLog(bizLogContext);
+ //标记导出日志时间
+ timeMarker.mark("deal with log");
+ timeMarker.markEnd();
+ rspJson.put("timeMark", timeMarker.toTimeCostJSON());
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ e.printStackTrace();
+ status = false;
+ rspJson.put("url","");
+ rspJson.put("err",e.getMessage());
+ if(Objects.nonNull(pageUId))Util_Ehcache.getInstance().putLock(pageUId,"0");
+ }
+ rspJson.put("status",status);
+ if(Objects.nonNull(pageUId)) {
+ maxOccurs = String.valueOf(Util.getIntValue(Util_Ehcache.getInstance().getLockStr(pageUId), 0) - 1);
+ Util_Ehcache.getInstance().putLock(pageUId, maxOccurs);
+ }
+ logger.info("限制下载并发归位:"+maxOccurs);
+
+
+ return rspJson.toJSONString();
+ }
+
+
+ public void downExcel(String fileName, String filetype, Workbook workbook,HttpServletRequest request, HttpServletResponse response) {
+ try {
+ fileName=fileName+ "."+filetype;
+ String agent = request.getHeader("User-Agent");
+
+ if((agent.contains("Firefox")||agent.contains(" Chrome")||agent.contains("Safari") )&& !agent.contains("Edge")){
+ response.setHeader("content-disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName.replaceAll("<", "").replaceAll(">", "").replaceAll("<", "").replaceAll(">", ""),"UTF-8").replaceAll("\\+", "%20").replaceAll("%28", "(").replaceAll("%29", ")"));
+ }else{
+ response.setHeader("content-disposition", "attachment; filename=\"" +
+ URLEncoder.encode(fileName.replaceAll("<", "").replaceAll(">", "").replaceAll("<", "").replaceAll(">", ""),"UTF-8").replaceAll("\\+", "%20").replaceAll("%28", "(").replaceAll("%29", ")")+"\"");
+ }
+
+
+ ByteArrayOutputStream bout=new ByteArrayOutputStream();
+ workbook.write(bout);
+ logger.info(fileName+":"+bout.toByteArray().length);
+ ServletOutputStream out = response.getOutputStream();
+ response.setContentType("application/vnd.ms-excel;charset=ISO-8859-1");
+ response.setHeader("Content-Length",String.valueOf(bout.toByteArray().length));
+ //解决某些操作系统环境下载打不开的问题
+ bout.writeTo(out);
+ out.flush();
+ out.close();
+ }
+ catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ public String doMethod(Map mss,String tm,JSONArray tmp,String value) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
+ if("".equals(tm)) return value;
+ String tmArr[] = tm.split("\\.");
+ StringBuilder sb = new StringBuilder();
+ for(int i=0;i clazz = Class.forName(sb.toString());
+ Object obj = clazz.newInstance();
+ //List cl = new ArrayList();
+ Class[] cl = new Class[tmp.size()];
+ Object[] sl = new Object[tmp.size()];
+ int i = 0;
+ for(Object t : (List)tmp) {
+ JSONObject tObj = (JSONObject)t;
+ String typeStr = tObj.getString("type");
+ String objStr = tObj.getString("obj");
+ if(typeStr.equals("columns")) {
+ sl[i] = mss.get(objStr);
+ }
+ else {
+ sl[i] = objStr;
+ }
+ cl[i] = String.class;
+ i++;
+ }
+ Method m1 = clazz.getDeclaredMethod(tmArr[tmArr.length-1],cl);
+ Object o = m1.invoke(obj,sl);
+ return o.toString();
+ }
+
+ public void setCell(HSSFRow r, int n, String value, String type, HSSFWorkbook workbook, CellStyle DatecellStyle,
+ CellStyle NumbercellStyle,CellStyle StrcellStyle,String languageId) {
+ HSSFCell cell = r.createCell((short) n);
+ if (null != type && !"".equals(type)) {
+ // / "type is not null :" + type);
+ if (type.indexOf("number") > -1) {
+ cell.setCellStyle(NumbercellStyle);
+ cell.setCellValue(value);
+ } else if ("date".equals(type)) {
+ cell.setCellStyle(DatecellStyle);
+ cell.setCellValue(value);
+ } else {
+ cell.setCellType(CellType.STRING);
+ cell.setCellStyle(StrcellStyle);
+ value=Util.formatMultiLang(value,languageId);
+ cell.setCellValue(value);
+ }
+ } else {
+ cell.setCellType(CellType.STRING);
+ cell.setCellStyle(StrcellStyle);
+ value=Util.formatMultiLang(value,languageId);
+ //AndyZhang 加入时区转换功能
+ value=Util_public.transformTimeZone(value);
+ cell.setCellValue(value);
+ }
+
+ }
+
+ public JSONArray transMethodToNew(JSONObject obj,String name,JSONObject mss,JSONArray heads) {
+
+ String others = Util.null2String(obj.getString(name));
+ JSONArray tmParams = new JSONArray();
+ String otherArr[] = others.split("[+]");
+ JSONObject tmObj1 = new JSONObject();
+ tmObj1.put("type","fixedValue");
+ StringBuilder sb = new StringBuilder();
+ for(int i=0;i clazz = Class.forName(sb.toString());
+ Object obj = clazz.newInstance();
+ Class[] cl = new Class[tmp.size()];
+ Object[] sl = new Object[tmp.size()];
+ int i = 0;
+ for(Object t : (List)tmp) {
+ JSONObject tObj = (JSONObject)t;
+ String typeStr = tObj.getString("type");
+ String objStr = tObj.getString("obj");
+ if(typeStr.equals("columns")) {
+ sl[i] = mss.get(getRealKey(heads,objStr));
+ }
+ else {
+ sl[i] = objStr;
+ }
+ cl[i] = String.class;
+ i++;
+ }
+ Method m1 = clazz.getDeclaredMethod(tmArr[tmArr.length-1],cl);
+ o = m1.invoke(obj, sl);
+
+ return o.toString();
+ }
+
+ /**
+ * from='set'
+ * @param heads
+ * @param rdField
+ * @return
+ */
+ public String getRealKey(JSONArray heads,String rdField) {
+ String value = "";
+ for(int i=0;i> mssl,String languageId,String filename)
+ {
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ HSSFSheet sheet = workbook.createSheet();
+ workbook.setSheetName(0, StringUtils.isNotBlank(filename)?filename:"datas");
+ HSSFRow row = sheet.createRow((short) 0);
+
+ CellStyle DatecellStyle = workbook.createCellStyle();
+ DataFormat DateCSformat = workbook.createDataFormat();
+ DatecellStyle.setDataFormat(DateCSformat.getFormat("yyyy-mm-dd"));
+
+ CellStyle NumbercellStyle = workbook.createCellStyle();
+ DataFormat NumberCSformat = workbook.createDataFormat();
+ NumbercellStyle.setDataFormat(NumberCSformat.getFormat("#,##0.00"));
+
+ CellStyle StrcellStyle = workbook.createCellStyle();
+ DataFormat format = workbook.createDataFormat();
+ StrcellStyle.setDataFormat(format.getFormat("@"));
+
+ int col = 0;
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+ if (!"false".equals(obj.getString("display"))) {
+ this.setCell(row, col++, obj.getString("title"), "", workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+ int rowNum = 1;
+
+ for(int i=0;i mss = mssl.get(i);
+ //logger.info("mss is :" + JSON.toJSONString(mss));
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+
+ if (!"false".equals(obj.getString("display"))) {
+ if (obj.containsKey("transMethod")) {
+ String name = obj.getString("dataIndex");
+ String value = mss.get(name);
+ //String valueSpan = delHTMLTag("".equals(mss.get(name + "span")) ? value : mss.get(name + "span"));
+ //直接送转换数据
+ String valueSpan = delHTMLTag(mss.get(name + "span"));
+ this.setCell(row, col++, valueSpan, obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ } else {
+ this.setCell(row, col++, delHTMLTag(mss.get(obj.getString("dataIndex"))), obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+
+ }
+ }
+ return workbook;
+ }
+
+ /**
+ * excel2003 追加行
+ * @param wb
+ * @param heads
+ * @param mssl
+ * @param languageId
+ * @return
+ */
+ public Workbook addRowExcel2003(Workbook wb, JSONArray heads,List> mssl,String languageId)
+ {
+ HSSFWorkbook workbook;
+ if(wb instanceof HSSFWorkbook){
+ workbook = (HSSFWorkbook) wb;
+ } else {
+ return wb;
+ }
+
+ HSSFSheet sheet = workbook.getSheetAt(0);
+
+ CellStyle DatecellStyle = workbook.createCellStyle();
+ DataFormat DateCSformat = workbook.createDataFormat();
+ DatecellStyle.setDataFormat(DateCSformat.getFormat("yyyy-mm-dd"));
+
+ CellStyle NumbercellStyle = workbook.createCellStyle();
+ DataFormat NumberCSformat = workbook.createDataFormat();
+ NumbercellStyle.setDataFormat(NumberCSformat.getFormat("#,##0.00"));
+
+ CellStyle StrcellStyle = workbook.createCellStyle();
+ DataFormat format = workbook.createDataFormat();
+ StrcellStyle.setDataFormat(format.getFormat("@"));
+
+ int col = 0;
+ int rowNum = sheet.getLastRowNum() + 1;
+ HSSFRow row = null;
+
+ for(int i=0;i mss = mssl.get(i);
+ //logger.info("mss is :" + JSON.toJSONString(mss));
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+
+ if (!"false".equals(obj.getString("display"))) {
+ if (obj.containsKey("transMethod")) {
+ String name = obj.getString("dataIndex");
+ String value = mss.get(name);
+ //直接送转换数据
+ String valueSpan = delHTMLTag(mss.get(name + "span"));
+ this.setCell(row, col++, valueSpan, obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ } else {
+ this.setCell(row, col++, delHTMLTag(mss.get(obj.getString("dataIndex"))), obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+
+ }
+ }
+ return workbook;
+ }
+
+ public Workbook exportExcel2007(JSONArray heads, List> mssl,String languageId,String filename)
+ {
+ SXSSFWorkbook workbook = new SXSSFWorkbook();
+
+ SXSSFSheet sheet = workbook.createSheet();
+ workbook.setSheetName(0, StringUtils.isNotBlank(filename)?filename:"datas");
+ SXSSFRow row = sheet.createRow(0);
+
+ CellStyle DatecellStyle = workbook.createCellStyle();
+ DataFormat DateCSformat = workbook.createDataFormat();
+ DatecellStyle.setDataFormat(DateCSformat.getFormat("yyyy-mm-dd"));
+
+ CellStyle NumbercellStyle = workbook.createCellStyle();
+ DataFormat NumberCSformat = workbook.createDataFormat();
+ NumbercellStyle.setDataFormat(NumberCSformat.getFormat("#,##0.00"));
+
+ CellStyle StrcellStyle = workbook.createCellStyle();
+ DataFormat format = workbook.createDataFormat();
+ StrcellStyle.setDataFormat(format.getFormat("@"));
+
+ int col = 0;
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+ if (!"false".equals(obj.getString("display"))) {
+ this.setCell(row, col++, obj.getString("title"), "", workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+ int rowNum = 1;
+ // " start transmethod ");
+ for(int i=0;i mss = mssl.get(i);
+ //logger.info("mss is :" + JSON.toJSONString(mss));
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+
+ if (!"false".equals(obj.getString("display"))) {
+ if (obj.containsKey("transMethod")) {
+ String name = obj.getString("dataIndex");
+ String value = mss.get(name);
+
+ //String valueSpan = delHTMLTag("".equals(mss.get(name + "span")) ? value : mss.get(name + "span"));
+ //直接送转换数据
+ String valueSpan = delHTMLTag(mss.get(name + "span"));
+ this.setCell(row, col++, valueSpan, obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ } else {
+ String name =obj.getString("dataIndex");
+ String value=String.valueOf(mss.get(name));
+ this.setCell(row, col++, delHTMLTag(value), obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+ }
+ }
+ return workbook;
+ }
+
+ /**
+ * exce2007 追加行
+ * @param wb
+ * @param heads
+ * @param mssl
+ * @param languageId
+ * @return
+ */
+ public Workbook addRowExcel2007(Workbook wb, JSONArray heads, List> mssl,String languageId)
+ {
+ SXSSFWorkbook workbook;
+ if(wb instanceof SXSSFWorkbook){
+ workbook = (SXSSFWorkbook) wb;
+ } else {
+ return wb;
+ }
+
+ SXSSFSheet sheet = workbook.getSheetAt(0);
+
+ CellStyle DatecellStyle = workbook.createCellStyle();
+ DataFormat DateCSformat = workbook.createDataFormat();
+ DatecellStyle.setDataFormat(DateCSformat.getFormat("yyyy-mm-dd"));
+
+ CellStyle NumbercellStyle = workbook.createCellStyle();
+ DataFormat NumberCSformat = workbook.createDataFormat();
+ NumbercellStyle.setDataFormat(NumberCSformat.getFormat("#,##0.00"));
+
+ CellStyle StrcellStyle = workbook.createCellStyle();
+ DataFormat format = workbook.createDataFormat();
+ StrcellStyle.setDataFormat(format.getFormat("@"));
+
+ int col = 0;
+ int rowNum = sheet.getLastRowNum() + 1;
+ SXSSFRow row = null;
+
+ for(int i=0;i mss = mssl.get(i);
+ for(Object head : (List)heads) {
+ JSONObject obj = (JSONObject) head;
+
+ if (!"false".equals(obj.getString("display"))) {
+ if (obj.containsKey("transMethod")) {
+ String name = obj.getString("dataIndex");
+ String value = mss.get(name);
+
+ //直接送转换数据
+ String valueSpan = delHTMLTag(mss.get(name + "span"));
+ this.setCell(row, col++, valueSpan, obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ } else {
+ String name =obj.getString("dataIndex");
+ String value=String.valueOf(mss.get(name));
+ this.setCell(row, col++, delHTMLTag(value), obj.getString("exportType"), workbook,DatecellStyle,NumbercellStyle,StrcellStyle,languageId);
+ }
+ }
+ }
+ }
+ return workbook;
+ }
+
+ public void setCell(Row r, int n, String value, String type, Workbook workbook, CellStyle DatecellStyle,
+ CellStyle NumbercellStyle,CellStyle StrcellStyle,String languageId) {
+ Cell cell = r.createCell(n);
+ if (null != type && !"".equals(type)) {
+ if (type.indexOf("number") > -1) {
+ cell.setCellStyle(NumbercellStyle);
+ cell.setCellValue(value);
+ } else if ("date".equals(type)) {
+
+ cell.setCellStyle(DatecellStyle);
+ cell.setCellValue(value);
+ } else {
+ cell.setCellStyle(StrcellStyle);
+ value=Util.formatMultiLang(value,languageId);
+ cell.setCellValue(value);
+ }
+ } else {
+ // "type is null ");
+ cell.setCellStyle(StrcellStyle);
+ value=Util.formatMultiLang(value,languageId);
+ //AndyZhang 加入时区转换功能
+ value=Util_public.transformTimeZone(value);
+ cell.setCellValue(value);
+ }
+ }
+ public void saveLog(BizLogContext bizLogContext) {
+ LogUtil.writeBizLog(bizLogContext);
+ }
+
+ /**
+ * 设置默认用户的自定义字段数据
+ * @param request
+ * @param response
+ * @return
+ * @throws IOException
+ */
+ @GET
+ @Path("/syndefcols")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String synchronizationColsDef(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
+
+ String pageuid=request.getParameter("pageuid");
+ String systemIds=request.getParameter("systemIds");
+ String systemIdsHide=request.getParameter("systemIdsHide");
+ return synchronizationCols(request,response,"","0",pageuid,systemIds,systemIdsHide);
+ }
+
+ /**
+ * #1063683
+ * 概述:显示列定制增加更改默认显示列及同步显示列定制功能
+ * @param request
+ * @param response
+ * @return
+ * @throws IOException
+ */
+ @GET
+ @Path("/syncols")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String syncCols(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
+ WeaResultMsg result=new WeaResultMsg(false);
+ User user = HrmUserVarify.getUser(request, response);
+ String dataKey=request.getParameter("dataKey");
+ String sOrgType=request.getParameter("orgType");
+ OrgType orgType=OrgType.valueOf(sOrgType);
+ String orgId=request.getParameter("orgId");
+ int def=Util.getIntValue(request.getParameter("def"),0) ;
+ String pageuid="";
+ String systemIds=request.getParameter("systemIds");
+ String systemIdsHide=request.getParameter("systemIdsHide");
+
+
+ if (!StringUtils.isEmpty(dataKey)) {
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap","head");
+ if (null != bean.getRootMap())
+ pageuid = Util.null2String(bean.getRootMap().getString("pageUid"));
+
+ if (StringUtils.isEmpty(pageuid))
+ return result.fail(""+ SystemEnv.getHtmlLabelName(10004769,weaver.general.ThreadVarLanguage.getLang())+"pageuid").toString();
+
+ if (user==null) {
+ result.fail("user"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return result.toString();
+ }
+
+ List userDefCols = d.getUserDefColumns(pageuid, user.getUID());
+ JSONArray unchoosedColumns = bean.getUnchoosedColumns();
+ JSONArray choosedColumns = bean.getChoosedColumns();
+
+ if (userDefCols != null && !userDefCols.isEmpty()) {
+ JSONArray defUnchoose = new JSONArray();//用户自定义的未选列
+ JSONArray defChoosed = new JSONArray();//用户自定义的已选列
+ // 将默认的待选已选转为Map,增加orders属性
+ Map unchooseMap = Maps.newHashMap();
+ Map choosedMap = Maps.newHashMap();
+ for (int i=0; i< unchoosedColumns.size();i++) {
+ JSONObject col = (JSONObject) unchoosedColumns.get(i);
+ col.put("orders", i);
+ unchooseMap.put(col.getString("dataIndex"), col);
+ }
+ for (int i=0; i< choosedColumns.size();i++) {
+ JSONObject col = (JSONObject) choosedColumns.get(i);
+ col.put("orders", i);
+ choosedMap.put(col.getString("dataIndex"), col);
+ }
+ // 按用户配置的定制列来组装数据
+ for (UserDefCol defCol: userDefCols) {
+ String dataIndex = defCol.getDataIndex();
+ JSONObject col = unchooseMap.get(dataIndex);
+ unchooseMap.remove(dataIndex);
+ if (col == null) {
+ col = choosedMap.get(dataIndex);
+ choosedMap.remove(dataIndex);
+ }
+ if (col == null) {
+ continue;
+ }
+ col.put("display", defCol.getDisplay());
+ col.put("orders", defCol.getOrders());
+ if ("0".equals(defCol.getDisplay())) {
+ defChoosed.add(col);
+ } else {
+ defUnchoose.add(col);
+ }
+ }
+ // 对于不在用户配置内的,按它们的配置位置加入到列表中
+ if (!unchooseMap.isEmpty()) {
+ addToListByOrders(defUnchoose, unchooseMap);
+ }
+ if (!choosedMap.isEmpty()) {
+ addToListByOrders(defChoosed, choosedMap);
+ }
+ unchoosedColumns = defUnchoose;
+ choosedColumns = defChoosed;
+ }
+
+ BizLogContext bizLogContext=new BizLogContext();
+ //加入导出日志
+ bizLogContext.setLogType(BizLogType.SYSTEM);
+ bizLogContext.setDateObject(new Date());
+ if (user!=null){
+ bizLogContext.setUserid(user.getUID());
+ bizLogContext.setUsertype(Util.getIntValue(user.getLogintype()));
+ }
+ bizLogContext.setLogSmallType(BizLogSmallType4SysEngine.SYSTEM_ENGINE_EXPORT);
+ bizLogContext.setOperateType(BizLogOperateType.ADD);
+ bizLogContext.setClientIp(Util.null2String(Util.getIpAddr(request)));
+
+ List choosedDefCols=new ArrayList<>();
+ List unchoosedDefCols=new ArrayList<>();
+
+ for (int i=0; i< choosedColumns.size();i++) {
+ JSONObject col = (JSONObject) choosedColumns.get(i);
+ UserDefCol udc=new UserDefCol();
+
+ udc.setDataIndex(col.getString("dataIndex"));
+ udc.setDisplay(col.getString("dataIndex"));
+ udc.setOrders(col.getInteger("orders"));
+ udc.setPageUid(col.getString("pageUid"));
+ udc.setWidth(col.getString("width"));
+ udc.setUserId(user.getUID());
+ choosedDefCols.add(udc);
+ }
+
+ for (int i=0; i< unchoosedColumns.size();i++) {
+ JSONObject col = (JSONObject) unchoosedColumns.get(i);
+ UserDefCol udc=new UserDefCol();
+
+ udc.setDataIndex(col.getString("dataIndex"));
+ udc.setDisplay(col.getString("dataIndex"));
+ udc.setOrders(col.getInteger("orders"));
+ udc.setPageUid(col.getString("pageUid"));
+ udc.setWidth(col.getString("width"));
+ udc.setUserId(user.getUID());
+ unchoosedDefCols.add(udc);
+ }
+
+ logger.info("choosedDefCols:"+ JSON.toJSONString(choosedDefCols));
+ logger.info("unchoosedDefCols:"+JSON.toJSONString(unchoosedDefCols));
+ logger.info("orgType:"+orgType);
+ logger.info("orgId:"+orgId);
+ d.synCols(bizLogContext,choosedDefCols, unchoosedDefCols, orgType, orgId,def);
+
+ }
+ catch (Exception ex ) {
+ logger.error(ex.getMessage());
+ return result.fail(ex.toString()).toString();
+ }
+
+
+ }
+
+
+ return result.success().toString();
+ }
+
+ /**
+ * 同步自定义字段到任意用户
+ * @param request
+ * @param response
+ * @return
+ * @throws IOException
+ */
+ @GET
+ @Path("/syncols")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String synchronizationCols(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
+ String dataKey=request.getParameter("dataKey");
+ String userlist=request.getParameter("userlist");
+ String pageuid=request.getParameter("pageuid");
+ String systemIds=request.getParameter("systemIds");
+ String systemIdsHide=request.getParameter("systemIdsHide");
+ return synchronizationCols(request,response,dataKey,userlist,pageuid,systemIds,systemIdsHide);
+ }
+ /**
+ * 同步自定义字段到任意用户
+ * @param request
+ * @param response
+ * @param dataKey
+ * @param userlist
+ * @param pageuid
+ * @param systemIds
+ * @param systemIdsHide
+ * @return
+ * @throws IOException
+ */
+ public String synchronizationCols(HttpServletRequest request,HttpServletResponse response,String dataKey,String userlist,
+ String pageuid,String systemIds,String systemIdsHide) throws IOException {
+ WeaResultMsg result=new WeaResultMsg(false);
+
+ if (!StringUtils.isEmpty(dataKey)) {
+ try {
+ SplitPageBean bean = new SplitPageBean(request, dataKey, "RootMap","head");
+ if (null != bean.getRootMap()) {
+ pageuid = Util.null2String(bean.getRootMap().getString("pageUid"));
+ }
+
+ if (StringUtils.isEmpty(pageuid))
+ return result.fail(""+ SystemEnv.getHtmlLabelName(10004769,weaver.general.ThreadVarLanguage.getLang())+"pageuid").toString();
+
+ User user = HrmUserVarify.getUser(request, response);
+ if (user==null) {
+ result.fail("user"+ SystemEnv.getHtmlLabelName(18622,weaver.general.ThreadVarLanguage.getLang())+"");
+ return result.toString();
+ }
+
+ List userDefCols = d.getUserDefColumns(pageuid, user.getUID());
+ JSONArray unchoosedColumns = bean.getUnchoosedColumns();
+ JSONArray choosedColumns = bean.getChoosedColumns();
+
+ if (userDefCols != null && !userDefCols.isEmpty()) {
+ JSONArray defUnchoose = new JSONArray();//用户自定义的未选列
+ JSONArray defChoosed = new JSONArray();//用户自定义的已选列
+ // 将默认的待选已选转为Map,增加orders属性
+ Map unchooseMap = Maps.newHashMap();
+ Map choosedMap = Maps.newHashMap();
+ for (int i=0; i< unchoosedColumns.size();i++) {
+ JSONObject col = (JSONObject) unchoosedColumns.get(i);
+ col.put("orders", i);
+ unchooseMap.put(col.getString("dataIndex"), col);
+ }
+ for (int i=0; i< choosedColumns.size();i++) {
+ JSONObject col = (JSONObject) choosedColumns.get(i);
+ col.put("orders", i);
+ choosedMap.put(col.getString("dataIndex"), col);
+ }
+ // 按用户配置的定制列来组装数据
+ for (UserDefCol defCol: userDefCols) {
+ String dataIndex = defCol.getDataIndex();
+ JSONObject col = unchooseMap.get(dataIndex);
+ unchooseMap.remove(dataIndex);
+ if (col == null) {
+ col = choosedMap.get(dataIndex);
+ choosedMap.remove(dataIndex);
+ }
+ if (col == null) {
+ continue;
+ }
+ col.put("display", defCol.getDisplay());
+ col.put("orders", defCol.getOrders());
+ if ("0".equals(defCol.getDisplay())) {
+ defChoosed.add(col);
+ } else {
+ defUnchoose.add(col);
+ }
+ }
+ // 对于不在用户配置内的,按它们的配置位置加入到列表中
+ if (!unchooseMap.isEmpty()) {
+ addToListByOrders(defUnchoose, unchooseMap);
+ }
+ if (!choosedMap.isEmpty()) {
+ addToListByOrders(defChoosed, choosedMap);
+ }
+ unchoosedColumns = defUnchoose;
+ choosedColumns = defChoosed;
+ }
+
+ String sqlWhere="";
+ String sqlWhereDelete="";
+ ArrayList params=new ArrayList<>();
+
+ if (!StringUtils.isEmpty(userlist)) {
+ sqlWhereDelete=WeaCommon.createWhereInSQL(userlist, params);
+ sqlWhere = " where id in " + WeaCommon.createWhereInSQL(userlist, params);
+ }
+
+ ArrayList paramsWhere=new ArrayList<>();
+ paramsWhere.add(pageuid);
+ RecordSet rs=new RecordSet();
+ rs.executeUpdate("delete from cloudstore_defcol where pageuid=? "+ (StringUtils.isEmpty(userlist)?"":" and userid in") ,paramsWhere);
+
+ for(int i=0; i paramsReal=new ArrayList<>();
+ paramsReal.add(pageuid);
+ paramsReal.add(i);
+ paramsReal.add(dataIndex);
+ paramsReal.addAll(params);
+ String sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width) "+
+ " select id,'',?,?,0,?,'' from HrmResource "+sqlWhere;
+ rs.executeUpdate(sql,paramsReal);
+ }
+
+ for(int i=0; i paramsReal=new ArrayList<>();
+ paramsReal.add(pageuid);
+ paramsReal.add(i);
+ paramsReal.add(dataIndex);
+ paramsReal.addAll(params);
+
+ String sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width) "+
+ " select id,'',?,?,1,?,'' from HrmResource "+sqlWhere;
+ rs.executeUpdate(sql,paramsReal);
+ }
+ }
+ catch (Exception ex ) {
+ logger.error(ex.getMessage());
+ return result.fail(ex.toString()).toString();
+ }
+ }
+ else{
+ if (StringUtils.isEmpty(pageuid))
+ return result.fail(""+ SystemEnv.getHtmlLabelName(10004769,weaver.general.ThreadVarLanguage.getLang())+"pageuid").toString();
+ if (StringUtils.isEmpty(systemIds))
+ return result.fail(""+ SystemEnv.getHtmlLabelName(10004769,weaver.general.ThreadVarLanguage.getLang())+"systemIds").toString();
+ if (StringUtils.isEmpty(systemIdsHide))
+ return result.fail(""+ SystemEnv.getHtmlLabelName(10004769,weaver.general.ThreadVarLanguage.getLang())+"systemIdsHide").toString();
+
+ RecordSet rs=new RecordSet();
+ rs.executeUpdate("delete from cloudstore_defcol where pageuid=?",pageuid);
+
+ String[] dataIndexArr = Util.null2String(systemIds).split(",");
+ String[] dataIndexArrHide = Util.null2String(systemIdsHide).split(",");
+
+ String sqlWhere="";
+ ArrayList params=new ArrayList<>();
+
+ if (!StringUtils.isEmpty(userlist))
+ sqlWhere=" where id in "+WeaCommon.createWhereInSQL(userlist,params);
+
+ int i=0;
+ for(String dataIndex :dataIndexArr) {
+ ArrayList paramsReal=new ArrayList<>();
+ paramsReal.add(pageuid);
+ paramsReal.add(++i);
+ paramsReal.add(dataIndex);
+ paramsReal.addAll(params);
+
+ String sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width) "+
+ " select id,'',?,?,0,?,'' from HrmResource "+sqlWhere;
+ rs.executeUpdate(sql,paramsReal);
+ }
+ for(String dataIndex :dataIndexArrHide) {
+ ArrayList paramsReal=new ArrayList<>();
+ paramsReal.add(pageuid);
+ paramsReal.add(++i);
+ paramsReal.add(dataIndex);
+ paramsReal.addAll(params);
+
+ String sql=" Insert into cloudstore_defcol(userid,sysid,pageuid,orders,display,dataindex,width) "+
+ " select id,'',?,?,1,?,'' from HrmResource "+sqlWhere;
+ rs.executeUpdate(sql,paramsReal);
+ }
+ }
+ result.success();
+ return result.toString();
+ }
+
+
+ public SplitPageBean getCompleteSql(String pageUId, SplitPageBean bean,Map params) {
+
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
+ String curDate = sdf.format(date);
+ JSONObject sqlObj = bean.getSql();
+
+ String defaultsqltop = "";
+ String detailTable = "";
+ String relationCondition = " ";
+ String formid = "";
+ CubeSearchService cubeSearchService = new CubeSearchService();//原先用来处理sql动态参数的,暂时不考虑先保留代码
+ //获取mode_customsearch id
+ int id = Util.getIntValue(Util.null2String(pageUId.substring(pageUId.indexOf(":") + 1, pageUId.length())), 0);
+ //置顶标识
+ int enabledtop = 0;
+ int modeid = 0;
+ //设定排序的表的过滤条件
+ String sqlwhere = "";
+ String tOrder = Util.null2String(sqlObj.getString("sqlorderby"));//bean 里面的排序语句,如果当前表在mode_customsearch设置了置顶条件,那么需要将置顶条件字段拼接在前面
+ String sqlFrom = Util.null2String(sqlObj.getString("sqlform"));
+ String beanSqlWhere = Util.null2String(sqlObj.getString("sqlwhere"));
+ if (!("".equals(sqlFrom))) {
+ //获取表名
+ String tableName = sqlFrom.substring(4, sqlFrom.indexOf("t1")).trim();
+ if (id != 0) {
+ String topColumn = "mode_top_" + id;
+ //查询 mode_customsearch 表里面的信息,enabledtop defaultsqltop
+ String sqlForModeCustomsearch = "select enabledtop,defaultsqltop,detailtable,modeid,formid from mode_customsearch where id = " + id;
+
+ RecordSet rs = new RecordSet();
+ rs.execute(sqlForModeCustomsearch);
+ while (rs.next()) {
+ enabledtop = Util.getIntValue(Util.null2String(rs.getString("enabledtop"), "0"));
+ // sqlwhere = Util.null2String(rs.getString("defaultsqltop"),"");
+ defaultsqltop = Util.null2String(rs.getString("defaultsqltop"), "");
+ String temp = Util.null2String(rs.getString("detailtable"));
+ detailTable= !"".equals(temp)?","+temp+" d1 ":"";
+ relationCondition = !"".equals(temp)?" and t1.id = d1.mainid ":" ";
+ modeid = Util.getIntValue(Util.null2String(rs.getString("modeid"), "0"));
+ bean.getSql().put("modeid", modeid);
+ params.put("modeId",modeid);
+ formid = Util.null2String(rs.getString("formid"));
+ }
+
+ if (!weaver.formmode.virtualform.VirtualFormHandler.isVirtualForm(formid)){
+ ModeDataIDUpdateSingle.INSTANCE.updateModifyInfo(tableName);
+ }
+ //添加密级处理
+// AddSeclevelUtil addSeclevelUtil = new AddSeclevelUtil();
+// String secLevelSqlWhere = addSeclevelUtil.getBrowserOrSearchSecLevelSqlWhere(params);
+// if(!"".equals(secLevelSqlWhere)){
+// beanSqlWhere+= secLevelSqlWhere;
+// sqlObj.put("sqlwhere",beanSqlWhere);
+// }
+
+
+
+ if (enabledtop == 1) {
+ //查询设置表单的表 存不存在标记置顶的字段
+ try {
+ String sqlGetTopCol = "select id, " + topColumn + " from " + tableName+" where 1=2 ";
+ rs.execute(sqlGetTopCol);
+ if ("".equals(rs.getExceptionMsg())) {//rs对象内部处理了异常,只能根据msg 来判断是否有异常,先保留try catch
+ String nullFun = CommonConstant.DB_ISNULL_FUN;
+ tOrder = !"".equals(tOrder) ? nullFun+"(t1." + topColumn + ",0) desc," + tOrder : nullFun+"(t1." + topColumn + ",0) desc";
+ bean.getSql().put("topColumn", "mode_top_" + id);
+ bean.getSql().put("sqlorderby", tOrder);
+
+ if (!"".equals(defaultsqltop)) {
+ //查询出当天满足条件的(当天数据量较小)
+ if(defaultsqltop.indexOf("d1.") ==-1){
+ detailTable="";
+ relationCondition= "";
+ }
+
+ String sqlGetCurData = " select t1.id from " + tableName + " t1 "+ detailTable +" where t1.modedatacreatedate='" + curDate + "' and " + defaultsqltop +relationCondition+ " and t1.formmodeid =" + modeid +" and t1."+topColumn+" is null ";
+ rs.executeQuery(sqlGetCurData);
+ int dataId = 0;
+ if("".equals(rs.getExceptionMsg())){
+ while (rs.next()) {
+ dataId = Util.getIntValue(rs.getString("id"), 0);
+ String sqlUpdateDayData = " update " + tableName + " set " + topColumn + "=1 where id=" + dataId;
+ rs.execute(sqlUpdateDayData);
+ }
+ }
+
+ }
+ }
+ } catch (Exception e) {
+ //打印日志,列不存在
+ }
+ }
+ }
+ }
+ return bean;
+ }
+
+}
\ No newline at end of file
diff --git a/src/com/engine/msgcenter/dao/MsgTypeConfigDao.java b/src/com/engine/msgcenter/dao/MsgTypeConfigDao.java
new file mode 100644
index 0000000..7adb210
--- /dev/null
+++ b/src/com/engine/msgcenter/dao/MsgTypeConfigDao.java
@@ -0,0 +1,365 @@
+package com.engine.msgcenter.dao;
+
+import com.cloudstore.eccom.result.WeaResultMsg;
+import com.engine.msgcenter.constant.HrmPracticalConstant;
+import com.engine.msgcenter.constant.PageUidConstant;
+import com.engine.msgcenter.entity.HrmType;
+import com.engine.msgcenter.util.MsgECToEM;
+import com.engine.msgcenter.util.MsgPushLogUtil;
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.DBUtil;
+import weaver.conn.RecordSet;
+import weaver.conn.constant.DBConstant;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.hrm.User;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/*
+ * @ Date :Created in 2019/1/15 14:50 by mhw
+ */
+public class MsgTypeConfigDao {
+
+ public WeaResultMsg contextConfig(Map params, User user) {
+
+ WeaResultMsg resultMsg = new WeaResultMsg(false);
+ RecordSet recordSet = new RecordSet();
+ String guid = java.util.UUID.randomUUID().toString().replace("-", "");
+ String date = MsgPushLogUtil.getNowDate();
+ String time = MsgPushLogUtil.getNowTime();
+ String flag = Util.null2String(params.get("flag"));
+ //params
+// String id = Util.null2String(params.get("id"));
+ String config_id = Util.null2String(params.get("config_id"));
+ String contextType = Util.null2String(params.get("contextType"));
+ String detailType = Util.null2String(params.get("detailType"));
+ String contextPath = Util.null2String(params.get("contextPath"));
+ try {
+ if (StringUtils.equals(flag, "add")) {
+ String sql = "insert into ecology_biz_mobile_context (id,config_id,contexttype,detailtype,contextpath,creater,createdate,createtime,modifydate,modifytime) values(?,?,?,?,? ,?,?,?,?,?)";
+ recordSet.executeUpdate(sql, guid, config_id, contextType, detailType, contextPath, user.getUID(), date, time, date, time);
+ return resultMsg.success();
+ } else if (StringUtils.equals(flag, "update")) {
+ if (StringUtils.isBlank(config_id))
+ return resultMsg.fail("id is empty");
+ String sql = "update ecology_biz_mobile_context set contexttype=?,contextpath=?,detailtype=? where config_id=?";
+ recordSet.executeUpdate(sql, contextType, contextPath, detailType, config_id);
+ return resultMsg.success();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return resultMsg.fail(e.getMessage());
+ }
+ return resultMsg;
+ }
+
+ public boolean hasAgentid(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select agentid from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ if (org.apache.commons.lang.StringUtils.isNotBlank(recordSet.getString("agentid")))
+ return true;
+ return false;
+ }
+
+ public String getMsgTypeids(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select messagetypeid from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("messagetypeid");
+ }
+
+ public String getAgentid(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select agentid from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("agentid");
+ }
+
+ public static String getStatus(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select status from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("status");
+ }
+
+ public static String getEMStatus(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select em_status from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("em_status");
+ }
+
+ public static String getPC_Dialogurl(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select dialogurl from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("dialogurl");
+ }
+
+ public static String getAPP_Dialogurl(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select em_app_url from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("em_app_url");
+ }
+
+ public static String getAgentids(String ids) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select agentid from ecology_biz_mobile_config where id=?";
+ String[] idString = Util.splitString(ids, ",");
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < idString.length; i++) {
+ recordSet.executeQuery(sql, idString[i]);
+ recordSet.next();
+ if ("n".equals(recordSet.getString("isdefault")))
+ sb.append(recordSet.getString("agentid")).append(",");
+ }
+ return sb.toString();
+ }
+
+ public void insertContextConfig(String config_id, String contextType, String detailType, String contextPath, String otherparam, String userid) {
+ RecordSet recordSet = new RecordSet();
+ String date = MsgPushLogUtil.getNowDate();
+ String time = MsgPushLogUtil.getNowTime();
+ String sql = "insert into ecology_biz_mobile_context " +
+ "(id, config_id, contexttype, detailtype, contextpath, otherparam, creater, createdate, createtime, modifydate, modifytime) " +
+ "values(?,?,?,?,? ,?,?,?,?,?, ?)";
+ recordSet.executeUpdate(sql, config_id, config_id, contextType, detailType, contextPath, otherparam, userid, date, time, date, time);
+ return;
+ }
+
+ public void updateCC(String config_id, String contextType, String contextPath, String detailType, String otherparam) {
+ RecordSet recordSet = new RecordSet();
+ String date = MsgPushLogUtil.getNowDate();
+ String time = MsgPushLogUtil.getNowTime();
+ String sql = "update ecology_biz_mobile_context set contexttype=?, contextpath=?, detailtype=?, otherparam=?, modifydate=?, modifytime=? where config_id=?";
+ recordSet.executeUpdate(sql, contextType, contextPath, detailType, otherparam, date, time, config_id);
+ return;
+ }
+
+ public String backfields() {
+ RecordSet recordSet = new RecordSet();
+ String fields = " t.em_status,t.id, t.name, t.isdefault,t.broadcaster,t.sendrange, t2.groupname, t3.name as gname, t.messagetypeid, t.moduleid, t.agentid, t.dialogurl, t.imgurl, t.enable, t.enableem, t.enablepc, t.sendmobile, t.config, t.description, concat(concat(t.createdate, ' '),t.createtime) as tcretime, concat(concat(t.modifydate, ' '),t.modifytime) as tmodtime";
+ if (DBConstant.DB_TYPE_SQLSERVER.equalsIgnoreCase(recordSet.getDBType())) {
+ fields = " t.em_status,t.id, t.name, t.isdefault,t.broadcaster,t.sendrange, t2.groupname, t3.name as gname, t.messagetypeid, t.moduleid, t.agentid, t.dialogurl, t.imgurl, t.enable, t.enableem, t.enablepc, t.sendmobile, t.config, t.description, t.createdate+' '+t.createtime as tcretime, t.modifydate+' '+t.modifytime as tmodtime";
+ }
+ return fields;
+ }
+
+ public String sqlForm(String radioType, Map params) {
+ RecordSet rs = new RecordSet();
+ BaseBean bb = new BaseBean();
+ String sql = "ecology_biz_mobile_config t left join ecology_message_group t2 on t.moduleid=t2.id left join ecology_biz_mobile_group t3 on t.groupid=cast(t3.id as varchar)";
+ bb.writeLog("rs.getDBType():"+rs.getDBType());
+ if ("mysql".equalsIgnoreCase(rs.getDBType())){
+ sql = "ecology_biz_mobile_config t left join ecology_message_group t2 on t.moduleid=t2.id left join ecology_biz_mobile_group t3 on t.groupid=cast(t3.id as char)";
+ } else if ("oracle".equalsIgnoreCase(rs.getDBType())) {
+ sql = "ecology_biz_mobile_config t left join ecology_message_group t2 on t.moduleid= to_char(t2.id) left join ecology_biz_mobile_group t3 on t.groupid= to_char(t3.id) ";
+ }
+ bb.writeLog("sql:"+sql);
+ if (HrmPracticalConstant.RADIO_TYPE.equals(radioType)) {
+ String objectValue = Util.null2String(params.get("objectValue"));
+ String objectType = Util.null2String(params.get("objectType"));
+ if (StringUtils.isNotBlank(objectValue) || "6".equals(objectType))
+ sql += " inner join ";
+ else
+ sql += " left join ";
+ sql += " ( SELECT DISTINCT configid from ECOLOGY_HRMRESOURCE_PERMISSION t4 where 1 =1 ";
+
+ if ("6".equals(objectType)){
+ sql += " and t4.permissionType='broadCaster' and t4.objectType=" + objectType + "";
+
+ }
+ else if (org.apache.commons.lang.StringUtils.isNotBlank(objectType) && StringUtils.isNotBlank(objectValue)) {
+ sql += " and t4.permissionType='broadCaster'";
+ sql += " and t4.objectType=" + objectType + "";
+ if (HrmType.EVERYONE != HrmType.getHrmType(objectType))
+ sql += " and t4.objectValue in ('" + objectValue.replaceAll(",", "','") + "')";
+ }
+ sql += ") t5 on t.id = t5.configid";
+ }
+ return sql;
+ }
+
+ public Map selectMapById(String id) {
+ Map datas = new HashMap<>();
+ if (org.apache.commons.lang.StringUtils.isBlank(id))
+ return datas;
+ RecordSet recordSet = new RecordSet();
+ String sql = "select * from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ if (recordSet.next()) {
+ datas.put("id", id);
+ datas.put("name", Util.null2String(recordSet.getString("name")));
+ datas.put("biztypeid", Util.null2String(recordSet.getString("biztypeid")));
+ datas.put("groupid", Util.null2String(recordSet.getString("groupid")));
+ datas.put("moduleid", Util.null2String(recordSet.getString("moduleid")));
+ datas.put("messagetypeid", Util.null2String(recordSet.getString("messagetypeid")));
+ datas.put("agentid", Util.null2String(recordSet.getString("agentid")));
+ datas.put("dialogurl", Util.null2String(recordSet.getString("dialogurl")));
+ datas.put("imgurl", Util.null2String(recordSet.getString("imgurl")));
+ datas.put("enable", Util.null2String(recordSet.getString("enable")));
+ datas.put("enableem", Util.null2String(recordSet.getString("enableem")));
+ datas.put("enablepc", Util.null2String(recordSet.getString("enablepc")));
+ datas.put("sendmobile", Util.null2String(recordSet.getString("sendmobile")));
+ datas.put("desc", Util.null2String(recordSet.getString("description")));
+ datas.put("status", Util.null2String(recordSet.getString("status")));
+ datas.put("createrid", Util.null2String(recordSet.getString("createrid")));
+ datas.put("createtime", Util.null2String(recordSet.getString("createdate")) + " " + Util.null2String(recordSet.getString("createtime")));
+ datas.put("latest_modifytime", Util.null2String(recordSet.getString("modifydate")) + " " + Util.null2String(recordSet.getString("modifytime")));
+ }
+ sql = "select contexttype,contextpath,detailtype,otherparam from ecology_biz_mobile_context where config_id=?";
+ recordSet.executeQuery(sql, id);
+ if (recordSet.next()) {
+ datas.put("contexttype", Util.null2String(recordSet.getString("contexttype")));
+ datas.put("contextpath", Util.null2String(recordSet.getString("contextpath")));
+ datas.put("detailtype", Util.null2String(recordSet.getString("detailtype")));
+ datas.put("otherparam", Util.null2String(recordSet.getString("otherparam")));
+ }
+ return datas;
+ }
+
+ public String mtcAddSql() {
+ StringBuffer sb = new StringBuffer();
+ String opType = "insert into ecology_biz_mobile_config ";
+ String backfields = "(id, name, moduleid, groupid, messagetypeid, agentid, dialogurl, belongid, imgurl, config, enable, enablepc, enableem, sendmobile, isdefault, isShow, status, createrid, createdate, createtime, modifydate, modifytime)";
+ String values = "(?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?)";
+ String sql = sb.append(opType).append(backfields).append("values").append(values).toString();
+ return sql;
+ }
+
+ public String mtcUpdateSql() {
+ StringBuffer sb = new StringBuffer();
+ String opType = "update ecology_biz_mobile_config set ";
+ String backfields = "agentid=?, name=?, groupid=?, moduleid=?, messagetypeid=?, imgurl=?, picture_url=?, enable=?, enablepc=?, enableem=?, sendmobile=?, modifydate=?, modifytime=?,em_status = ?,pc_url = ? ,dialogurl = ? ,em_app_url = ? ";
+ String sqlWhere = "id=?";
+ String sql = sb.append(opType).append(backfields).append("where ").append(sqlWhere).toString();
+ return sql;
+ }
+
+ /**
+ * @description :路径类型ids=>路径ids
+ */
+ public String getWfpath(String typeids) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(",");
+ RecordSet recordSet = new RecordSet();
+ List params = new ArrayList<>();
+ Object[] objects = DBUtil.transListIn(typeids, params);
+ String sql = "select distinct a.id,a.workflowname as name from workflow_base a where a.workflowtype in (" + objects[0] + ")";
+ recordSet.executeQuery(sql, params);
+ while (recordSet.next()) {
+ sb.append(recordSet.getInt("id")).append(",");
+ }
+ return sb.toString();
+ }
+
+ public String deleteGroupSql(Object obj) {
+ return "delete from ecology_biz_mobile_group where status='n' and id in (" + obj + ")";
+ }
+
+ public String batchCs(String flat, Object obj) {
+ return "update ecology_biz_mobile_config set modifydate=?,modifytime=?,enable='" + flat + "' where id in (" + obj + ")";
+ }
+
+ public String getBelongid(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select belongid from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ if (recordSet.next())
+ return recordSet.getString("belongid");
+ return "";
+ }
+
+ public int getShowNum() {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select max(shownum) as shownum from ecology_biz_mobile_group";
+ recordSet.executeQuery(sql);
+ recordSet.next();
+ int shownum = recordSet.getInt("shownum");
+ return ++shownum;
+ }
+
+ public String getTab(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select istab from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ recordSet.next();
+ return recordSet.getString("istab");
+ }
+
+ public void updateEnableAndAgentid(String id, String agentid) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "update ecology_biz_mobile_config set enable='y',agentid=? where id=?";
+ recordSet.executeUpdate(sql, agentid, id);
+ return;
+ }
+
+ public void updateAgentid(String id, String agentid) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "update ecology_biz_mobile_config set agentid=? where id=?";
+ recordSet.executeUpdate(sql, agentid, id);
+ return;
+ }
+
+ public void updateEnable(String id, String enable) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "update ecology_biz_mobile_config set enable=?,modifydate=?,modifytime=? where id=?";
+ recordSet.executeUpdate(sql, PageUidConstant.ABLE_EM.equals(enable) ? PageUidConstant.DISABLE_EM : PageUidConstant.ABLE_EM, MsgPushLogUtil.getNowDate(), MsgPushLogUtil.getNowTime(), id);
+ return;
+ }
+
+ public boolean checkMTCApp(String id) {
+ RecordSet recordSet = new RecordSet();
+ String sql = "select agentid,istab,imgurl,dialogurl,em_app_url,name,sendmobile from ecology_biz_mobile_config where id=?";
+ recordSet.executeQuery(sql, id);
+ String agentid = recordSet.getString("agentid");
+ String istab = recordSet.getString("istab");
+ String imgurl = recordSet.getString("imgurl");
+ String name = recordSet.getString("istab");
+ String sendmobile = recordSet.getString("sendmobile");
+// String dialogurl = MsgECToEM.getDialog_Url(id, istab);
+ String app_Dialogurl = recordSet.getString("em_app_url");
+ String pc_Dialogurl = recordSet.getString("dialogurl");
+ if (StringUtils.isBlank(agentid)) {
+ //创建em应用
+ try {
+ MsgECToEM msgECToEM = new MsgECToEM();
+ agentid = msgECToEM.CreateMsgTypeApp(imgurl, name, null, app_Dialogurl, pc_Dialogurl, sendmobile);
+ if (StringUtils.isNotBlank(agentid)) {
+ updateAgentid(id, agentid);
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ return true;
+ }
+ return false;
+ }
+
+ public void updateMsgConfigStatus(String id, String config) throws Exception {
+ if (StringUtils.isBlank(id))
+ throw new Exception("invalid params");
+ if ("y".equals(config) || "n".equals(config)) {
+ } else
+ throw new Exception("invalid params");
+ RecordSet rs = new RecordSet();
+ String sql = "update ecology_biz_mobile_config set config = ? where id = ?";
+ rs.executeUpdate(sql, config, id);
+ }
+
+}
diff --git a/src/com/engine/voting/cmd/VotingForm/VotingFormConditionCmd.java b/src/com/engine/voting/cmd/VotingForm/VotingFormConditionCmd.java
new file mode 100644
index 0000000..d8000e3
--- /dev/null
+++ b/src/com/engine/voting/cmd/VotingForm/VotingFormConditionCmd.java
@@ -0,0 +1,164 @@
+package com.engine.voting.cmd.VotingForm;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.general.Util;
+import weaver.hrm.User;
+import weaver.systeminfo.SystemEnv;
+
+import com.api.browser.bean.BrowserBean;
+import com.api.browser.bean.SearchConditionItem;
+import com.api.browser.bean.SearchConditionOption;
+import com.api.browser.util.ConditionType;
+import com.api.voting.util.BrowserType;
+import com.api.voting.util.ConditionUtil;
+import com.api.voting.util.VotingCommonUtil;
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import com.google.common.collect.Maps;
+
+/**
+ * 后台 调查 - 网上调查设置 高级搜索条件
+ */
+public class VotingFormConditionCmd extends AbstractCommonCommand> {
+
+
+ public VotingFormConditionCmd(User user, Map params) {
+ this.user = user;
+ this.params = params;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map apidatas = Maps.newHashMap();
+
+ String istemplate = Util.null2s(Util.null2String(this.params.get("istemplate")), "0");
+ try {
+
+ String votingtype = Util.null2String(this.params.get("votingtype"));
+
+ RecordSet rs = new RecordSet();
+
+ List> grouplist = new ArrayList>();
+
+ Map groupitem1 = new HashMap();
+ List itemlist1 = new ArrayList();
+ groupitem1.put("title", SystemEnv.getHtmlLabelNames(ConditionUtil.COMMON_CONDITION, user.getLanguage()));
+ groupitem1.put("defaultshow", true);
+ groupitem1.put("items", itemlist1);
+ grouplist.add(groupitem1);
+
+ //itemlist1.add(ConditionUtil.getCondition(DocCondition.DOC_SUBJECT,user));
+ int lanaguage = user.getLanguage();
+
+ //调查名称
+ itemlist1.add(getInput(lanaguage,"33439","subject"));
+ //创建人
+ itemlist1.add(getBrowser(lanaguage,"882","createrid",BrowserType.USER));
+
+ //调查类型
+ List typeOptions = new ArrayList();
+ List typeOptionsOfAdd = new ArrayList();
+ String where = "" ;
+ if(StringUtils.isNotBlank(votingtype)){
+ where = " and id in ("+votingtype+") " ;
+ }
+ rs.executeQuery("select * from voting_type "+where);
+ typeOptions.add(new SearchConditionOption("",""));
+ typeOptionsOfAdd.add(new SearchConditionOption("",""));
+ while(rs.next()) {
+ typeOptions.add(new SearchConditionOption(rs.getString("id"),rs.getString("typename")));
+ typeOptionsOfAdd.add(new SearchConditionOption(rs.getString("id"),rs.getString("typename")));
+ }
+ itemlist1.add(getSelect(lanaguage,"24111","votingtype",typeOptions));
+
+ //状态
+ if(!"1".equals(istemplate)) {
+ List statusOptions = new ArrayList();
+ statusOptions.add(new SearchConditionOption("",""));
+ statusOptions.add(new SearchConditionOption("0",SystemEnv.getHtmlLabelName(83443,weaver.general.Util.getIntValue(user.getLanguage()))));
+ statusOptions.add(new SearchConditionOption("3",SystemEnv.getHtmlLabelName(30835, user.getLanguage())));
+ statusOptions.add(new SearchConditionOption("1",SystemEnv.getHtmlLabelName(18600, user.getLanguage())));
+ statusOptions.add(new SearchConditionOption("2",SystemEnv.getHtmlLabelName(405, user.getLanguage())));
+ itemlist1.add(getSelect(lanaguage,"602","status",statusOptions));
+
+ //开始日期
+ //itemlist1.add(getDate(lanaguage,"740","begindate"));
+ //截止日期
+ //itemlist1.add(getDate(lanaguage,"741","enddate"));
+
+ //调查时间(时间选择)
+ itemlist1.add(new SearchConditionItem(ConditionType.DATE, SystemEnv.getHtmlLabelName(500889, user.getLanguage()), "", new String[]{"datetype", "begindate", "enddate"},
+ VotingCommonUtil.getDateSelectOption(user.getLanguage(), false, false), 6, 18, null));
+ } else {
+ itemlist1.add(getInput(lanaguage, "433","descr"));
+ }
+
+ apidatas.put("condition", grouplist);
+
+ Map btnBrowser = new HashMap();
+ btnBrowser.put("votingMould", new BrowserBean(BrowserType.votingMould));
+ apidatas.put("btnBrowser",btnBrowser );
+
+ apidatas.put("votingType", getSelect(lanaguage,"24111","votingtype",typeOptionsOfAdd));
+
+ }catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ return apidatas;
+ }
+ apidatas.put("api_status", true);
+ return apidatas;
+ }
+
+ public SearchConditionItem getInput(int language,String labelids,String domkey){
+ SearchConditionItem searchConditionItem = new SearchConditionItem(ConditionType.INPUT, SystemEnv.getHtmlLabelNames(labelids,language),
+ new String[]{domkey});
+ searchConditionItem.setLabelcol(6);
+ searchConditionItem.setFieldcol(18);
+ return searchConditionItem;
+ }
+
+ public SearchConditionItem getBrowser(int language,String labelids,String domkey,String browserType){
+ SearchConditionItem searchConditionItem = new SearchConditionItem(ConditionType.BROWSER, SystemEnv.getHtmlLabelNames(labelids,language),
+ new String[]{domkey});
+ BrowserBean browserBean= new BrowserBean(browserType);
+ searchConditionItem.setBrowserConditionParam(browserBean);
+ searchConditionItem.setLabelcol(6);
+ searchConditionItem.setFieldcol(18);
+ return searchConditionItem;
+ }
+
+ public SearchConditionItem getSelect(int language,String labelids,String domkey,List options){
+ SearchConditionItem searchConditionItem = new SearchConditionItem(ConditionType.SELECT, SystemEnv.getHtmlLabelNames(labelids,language),
+ new String[]{domkey});
+ searchConditionItem.setLabelcol(6);
+ searchConditionItem.setFieldcol(18);
+ searchConditionItem.setOptions(options);
+ Map otherParams = new HashMap();
+ otherParams.put("dropdownMatchSelectWidth", true);
+ searchConditionItem.setOtherParams(otherParams);
+ return searchConditionItem;
+ }
+
+ public SearchConditionItem getDate(int language,String labelids,String domkey){
+ SearchConditionItem searchConditionItem = new SearchConditionItem(ConditionType.DATEPICKER, SystemEnv.getHtmlLabelNames(labelids,language),
+ new String[]{domkey});
+ searchConditionItem.setLabelcol(6);
+ searchConditionItem.setFieldcol(18);
+ return searchConditionItem;
+ }
+
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+
+}
diff --git a/src/com/engine/voting/cmd/VotingForm/VotingFormTableCmd.java b/src/com/engine/voting/cmd/VotingForm/VotingFormTableCmd.java
new file mode 100644
index 0000000..1648e66
--- /dev/null
+++ b/src/com/engine/voting/cmd/VotingForm/VotingFormTableCmd.java
@@ -0,0 +1,332 @@
+package com.engine.voting.cmd.VotingForm;
+
+//import com.api.voting.service.VotingListService;
+import com.cloudstore.dev.api.util.Util_TableMap;
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import com.engine.voting.util.CheckVotingFormPermission;
+import com.engine.voting.util.VotingDetach;
+import com.engine.voting.util.VotingPageUidFactory;
+import com.google.common.collect.Maps;
+
+import weaver.conn.RecordSet;
+import weaver.general.PageIdConst;
+import weaver.general.TimeUtil;
+import weaver.general.Util;
+import weaver.hrm.HrmUserVarify;
+import weaver.hrm.User;
+import weaver.systeminfo.SystemEnv;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 后台 调查 - 网上调查设置 列表
+ */
+public class VotingFormTableCmd
+ extends
+ AbstractCommonCommand> {
+
+ public VotingFormTableCmd() {
+ }
+
+ public VotingFormTableCmd(Map params, User user) {
+ this.params = params;
+ this.user = user;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map apidatas = Maps.newHashMap();
+ try {
+ String userid = user.getUID() + "";
+ String loginType = user.getLogintype();
+
+ //用户是否有删除权限
+ boolean canDelete = HrmUserVarify.checkUserRight("voting:delete", user); //调查删除权限
+ boolean canmaint = HrmUserVarify.checkUserRight("Voting:Maint", user); //调查维护权限
+ boolean canmaintview = canmaint;
+
+ boolean cancreate = false;
+ //boolean canapprove = false ;
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select id from votingmaintdetail where createrid=? or approverid=?", userid, userid);
+ if (rs.next()) {
+ cancreate = true;
+ }
+ if (canmaint) {
+ cancreate = true;
+ }
+
+ boolean canCommit = false;
+ if (canmaint) {
+ canCommit = true;
+ }else{
+ rs.executeQuery("select id from votingmaintdetail where approverid=?", userid);
+ if (rs.next()) {
+ canCommit = true;
+ }
+ }
+
+
+ //设置好搜索条件
+ String backFields = " id,descr, subject,begindate,begintime,enddate,endtime,createrid,approverid,status,createdate ,createtime,istemplate,votingtype ";
+ String fromSql = " voting ";
+ String sqlWhere = "";
+ if (canmaintview) {
+ sqlWhere = " where 1=1 ";
+ } else if (cancreate) {
+ sqlWhere = " where (createrid=" + userid + " or approverid=" + userid + ") ";
+ } else {
+ sqlWhere = " where 1 != 1 "; //没有调查维护权限,且没有被设置调查授权则不展示数据
+// VotingListService votingListService = new VotingListService();
+// sqlWhere = " where id in(" + votingListService.getVotingIdByShare(user) + ") and status in (1,2) ";
+ }
+ sqlWhere += " and (istemplate <> '1' or istemplate is null)";
+
+ if(!"1".equals(userid)){
+ sqlWhere += " and createrid = "+ userid ;
+ }
+
+ //调查名称
+ String subject = Util.null2String(params.get("subject")).replace("'", "''");
+ if (!subject.equals("")) {
+ sqlWhere += " and subject like '%" + subject + "%'";
+ }
+ //创建人
+ String createrid = Util.null2String(params.get("createrid"));
+ if (!createrid.equals("")) {
+ sqlWhere += " and createrid in (" + createrid + ")";
+ }
+ //调查类型
+ String votingtype = Util.null2String(params.get("votingtype"));
+ if (!votingtype.equals("")) {
+ sqlWhere += " and votingtype in (" + votingtype + ")";
+ }
+ //状态
+ String status = Util.null2String(params.get("status"));
+ if (!status.equals("")) {
+ sqlWhere += " and status in (" + status + ")";
+ }
+// //开始日期
+// String begindate = Util.null2String(params.get("begindate"));
+// if (!begindate.equals("")) {
+// sqlWhere += " and begindate >= '" + begindate + "'";
+// }
+// //截止日期
+// String enddate = Util.null2String(params.get("enddate"));
+// if (!enddate.equals("")) {
+// sqlWhere += " and enddate <= '" + enddate + "'";
+// }
+
+ // 开始日期 截止日期
+ String datetype = Util.null2String(params.get("datetype")); // 时间(全部:空;今天:1;本周:2;本月:3;本季:4;本年:5;指定日期范围:6;)
+ String begindate = Util.null2String(params.get("begindate")); // 开始日期
+ String enddate = Util.null2String(params.get("enddate")); // 截止日期
+ if (!"0".equals(datetype) && !"".equals(datetype) && !"6".equals(datetype)) {
+ sqlWhere += " and begindate >= '" + TimeUtil.getDateByOption(datetype + "", "0") + "'";
+ sqlWhere += " and enddate <= '" + TimeUtil.getDateByOption(datetype + "", "") + "'";
+ }
+ if ("6".equals(datetype) && !"".equals(begindate)) {
+ sqlWhere += " and begindate >= '" + begindate + "'";
+ }
+ if ("6".equals(datetype) && !"".equals(enddate)) {
+ sqlWhere += " and enddate <= '" + enddate + "'";
+ }
+
+ boolean detach = VotingDetach.isDetach(); //是否开启知识-管理分权
+ if (detach) {
+ String subcompanyid = Util.null2String(params.get("subcompanyid"));
+ if (!subcompanyid.isEmpty()) {
+ sqlWhere += " and subcompanyid=" + subcompanyid;
+ } else if (user.getUID() != 1) { //系统管理默认分权所有分部,不做过滤
+ String suncompanyids = Util.null2String(VotingDetach.getSubcompanyids(user));
+ suncompanyids = suncompanyids.startsWith(",") ? suncompanyids.substring(1) : suncompanyids;
+ suncompanyids = suncompanyids.endsWith(",") ? suncompanyids.substring(0, suncompanyids.length() - 1) : suncompanyids;
+ if(suncompanyids.isEmpty()){
+ sqlWhere += " and 1 <> 1 ";
+ }else {
+ sqlWhere += " and (" + Util.getSubINClause(suncompanyids, "subcompanyid", "in") + ")";
+ }
+ }
+
+ rs.executeQuery("select count(id) num from voting where subcompanyid is null or subcompanyid =0 or subcompanyid =''");
+ if (rs.next()) {
+ if (rs.getInt("num") > 0) {
+ String defaultId = VotingDetach.getDefaultId();
+ if (Util.getIntValue(defaultId) > 0) {
+ rs.execute("update voting set subcompanyid=" + defaultId + " where subcompanyid is null or subcompanyid =0 or subcompanyid =''");
+ }
+ }
+ }
+ }
+
+ //当前是 批量删除页还是批量批准页
+ String viewType = Util.null2String(params.get("viewType"));
+ //writeLog("viewType---:"+viewType);
+ String checkboxpopedom = "";
+ String checkboxpopedompara= "";
+ String pageId = PageIdConst.Voting_VotingListTable;
+ String pageUid = VotingPageUidFactory.getPageUid(pageId);
+ if("batchApprove".equals(viewType)){ //批量批准
+
+ checkboxpopedompara = "column:status+" + canCommit+ "+column:votingtype";
+ checkboxpopedom = "";
+ }else{ //批量删除
+
+ checkboxpopedompara = "column:status+" + canDelete;
+ checkboxpopedom = "";
+ }
+
+ String orderBy = "id";
+
+ String operatepopedompara = "column:status+" + cancreate + "+" + canDelete + "+column:id" + "+" + user.getUID() + "+column:votingtype";
+ String operateString = "";
+ operateString = " ";
+ operateString +=" ";
+ operateString +=" ";
+ operateString +=" "; //批准
+ operateString +=" "; //提交
+ operateString +=" ";
+ operateString +=" ";
+ operateString +=" ";// 参与范围
+ operateString +=" ";
+ operateString +=" ";// 复制调查
+ operateString +=" "; //另存为模板
+ operateString +=" "; //日志
+ operateString +=" ";
+
+
+ String tableString = "";
+ tableString="";
+ tableString += checkboxpopedom;
+ tableString +="";
+ tableString += operateString;
+ tableString += ""+
+ ""+
+ ""+
+ ""+ //调查类型
+ ""+
+ ""+
+ ""+
+ ""+
+ ""+
+ "
";
+
+ String sessionkey = pageUid + "_" + Util.getEncrypt(Util.getRandom());
+ Util_TableMap.setVal(sessionkey, tableString);
+ apidatas.put("sessionkey", sessionkey);
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ return apidatas;
+ }
+ apidatas.put("api_status", true);
+ return apidatas;
+ }
+
+ /**
+ * 行 右侧下拉操作按钮权限
+ * @param id
+ * @param params
+ * @return
+ */
+ public List getVotingFormOperate(String id, String params) {
+ List result = new ArrayList();
+
+ List ps = Util.TokenizerString(params, "+");
+ String votingstatus = ps.get(0) + "";
+ String canCreate = ps.get(1) + "";
+ String canDelete = ps.get(2) + "";
+ String votingid = ps.get(3) + "";
+ String userid = ps.get(4) + "";
+ String votingtype = ps.get(5) + "";
+
+ String canEdit = "false";
+ if ("0".equals(votingstatus) && "true".equals(canCreate)) {
+ canEdit = "true";
+ }
+
+ String canapprove = "false";
+ User user = User.getUser(Util.getIntValue(userid), 0);
+ if ("0".equals(votingstatus) && CheckVotingFormPermission.checkCanApprove(user, Util.getIntValue(votingid))) {
+ canapprove = "true";
+ }
+ String tijiao = "false";
+ if("true".equals(canapprove) && Util.getIntValue(votingtype) > 0) {
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select approver from voting_type where id = ?", votingtype);
+ if(rs.next() && rs.getInt("approver") > 0) {
+ tijiao = "true";
+ canapprove = "false";
+ }
+ }
+
+ //1、有调查删除权限 voting:delete ,2、非进行中状态 (创建 和 结束状态) 才可以删除。
+ canDelete = "true".equals(canDelete) && (!"1".equals(votingstatus)&& !"3".equals(votingstatus)) ? "true" : "false";
+
+ result.add(canEdit);
+ result.add(canapprove);
+ result.add(tijiao);
+ result.add(canDelete);
+ result.add(canCreate);
+ result.add(canCreate);
+ result.add(canCreate);
+ result.add(canCreate);
+ result.add(canCreate);
+ result.add(canCreate); //日志
+
+ return result;
+ }
+
+ /**
+ * 批量批准时,列表的条目选择框状态
+ * @param params
+ * @return
+ */
+ public String getVotingListCheckBoxRight(String params) {
+ List ps = Util.TokenizerString(params, "+");
+
+ String status = ps.get(0) + "";
+ String canCommit = ps.get(1) + "";
+ String votingtype = ps.get(2) + "";
+
+ String realCommit = "false";
+
+ if ("0".equals(status) && "true".equals(canCommit)) { //创建状态
+ realCommit = "true";
+ }
+ if("true".equals(realCommit) && Util.getIntValue(votingtype) > 0){
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select approver from voting_type where id = ?", votingtype);
+ if(rs.next() && rs.getInt("approver") > 0) {
+ realCommit = "false";
+ }
+ }
+ return realCommit;
+ }
+
+ /**
+ * 根据调查类型id获取调查类型名称
+ * @param votingtypeId
+ * @return
+ */
+ public String getVotingTypeName(String votingtypeId) {
+ String typename = "";
+ if(Util.getIntValue(votingtypeId) > 0) {
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select typename from voting_type where id = ?", votingtypeId);
+ if(rs.next()) {
+ typename = rs.getString("typename");
+ }
+ }
+ return typename;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+}
diff --git a/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingCmd.java b/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingCmd.java
new file mode 100644
index 0000000..ac2fa4b
--- /dev/null
+++ b/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingCmd.java
@@ -0,0 +1,235 @@
+package com.engine.voting.cmd.VotingList;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.general.BaseBean;
+import weaver.general.PageIdConst;
+import weaver.general.TimeUtil;
+import weaver.general.Util;
+import weaver.hrm.User;
+import weaver.systeminfo.SystemEnv;
+import weaver.systeminfo.setting.HrmUserSettingComInfo;
+
+import com.alibaba.fastjson.JSON;
+import com.api.voting.util.ConditionUtil;
+import com.api.voting.util.VotingTableType;
+import com.cloudstore.dev.api.bean.SplitMobileDataBean;
+import com.cloudstore.dev.api.util.Util_TableMap;
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import com.engine.voting.util.VotingPageUidFactory;
+import com.engine.voting.biz.VotingCreateMobileTemplate;
+import com.engine.voting.biz.VotingGetSqlWhere;
+import com.engine.voting.biz.VotingGetVotingIdByShare;
+
+/**
+ * 根据tabinfo来获取前台参与调查页面的未参与调查列表和已参与调查列表
+ *
+ * @author ZH
+ *
+ */
+public class VotingGetMyVotingCmd extends AbstractCommonCommand> {
+ protected int tabInfo;
+ private static final String JSON_CONFIG = "[ \n" + "]";
+
+ public VotingGetMyVotingCmd(User user, Map params, int tabInfo) {
+ this.user = user;
+ this.params = params;
+ this.tabInfo = tabInfo;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ VotingGetSqlWhere votinggetsqlwhere = new VotingGetSqlWhere();
+ VotingCreateMobileTemplate votingcreatemobiletemplate = new VotingCreateMobileTemplate();
+ VotingGetVotingIdByShare votinggetvotingidbyshare = new VotingGetVotingIdByShare();
+ Map apidatas = new HashMap();
+ params = params == null ? new HashMap() : params;
+ String backFields = " id,descr, subject,begindate,begintime,enddate,endtime,createrid,approverid,status,createdate ,createtime,istemplate,id countid,id picid ";
+ String fromSql = " voting ";
+
+ String sqlWhere = "";
+ VotingTableType tableType;
+
+ String pageId = "";
+ if (tabInfo == 2) {// 我发起的
+ tableType = VotingTableType.VOTING_ME_CREATE;
+ pageId = "VOTING_ME_CREATE";
+ sqlWhere = " where (istemplate <> '1' or istemplate is null) and status in (1,2) and createrid ="
+ + user.getUID();
+ sqlWhere += votinggetsqlwhere.getSqlWhere(params);
+ } else if (tabInfo == 3) {// 与我有关的
+ tableType = VotingTableType.VOTING_ME_RELATED;
+ pageId = "VOTING_ME_RELATED";
+ sqlWhere = " where (istemplate <> '1' or istemplate is null) and status in(1,2) and (id in("
+ + votinggetvotingidbyshare.getJoinVotingIdByShare(user) + ") or createrid =" + user.getUID() + ")";
+
+ String votingCurrentDate = TimeUtil.getCurrentDateString();
+ String votingCurrentTime = TimeUtil.getOnlyCurrentTimeString();
+
+ sqlWhere += " and (beginDate<'" + votingCurrentDate + "' or (beginDate='" + votingCurrentDate
+ + "' and (beginTime is null or beginTime='' or beginTime<='" + votingCurrentTime + "')))";
+
+ sqlWhere += votinggetsqlwhere.getSqlWhere(params);
+ } else {
+ sqlWhere = " where id in(" + votinggetvotingidbyshare.getJoinVotingIdByShare(user) + ")";
+
+ HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo();
+ String belongtoshow = userSetting.getBelongtoshowByUserId(user.getUID() + "");
+ String account_type = user.getAccount_type();
+ String belongtoids = user.getBelongtoids();
+ if (belongtoshow.equals("1") && account_type.equals("0") && !belongtoids.equals("")) {
+ belongtoids += "," + user.getUID();
+ } else {
+ belongtoids = user.getUID() + "";
+ }
+
+ sqlWhere += " and (istemplate <> '1' or istemplate is null)";
+ sqlWhere += votinggetsqlwhere.getSqlWhere(params);
+
+ if (tabInfo == ConditionUtil.TAB_VOTING_DO) { // 已参与
+ tableType = VotingTableType.VOTING_HAS_DOWN;
+ pageId = "VOTING_HAS_DOWN";
+ sqlWhere += " and status in(1,2) ";// 已参与只可能是进行中,已结束
+ sqlWhere += " and exists";
+ sqlWhere += " (select 1 from VotingRemark where votingid=voting.id and resourceid"
+ + (belongtoids.contains(",") ? (" in (" + belongtoids + ")") : ("=" + belongtoids)) + ")";
+ } else {// 未参与
+ tableType = VotingTableType.VOTING_UN_DO;
+ pageId = "VOTING_UN_DO";
+ String votingCurrentDate = TimeUtil.getCurrentDateString();
+ String votingCurrentTime = TimeUtil.getOnlyCurrentTimeString();
+ sqlWhere += " and status=1 ";
+ sqlWhere += " and (beginDate<'" + votingCurrentDate + "' or (beginDate='" + votingCurrentDate
+ + "' and (beginTime is null or beginTime='' or beginTime<='" + votingCurrentTime + "')))";
+ sqlWhere += " and (";
+
+ List belongtoidsList = Util.TokenizerString(belongtoids, ",");
+ for (int k = 0; k < belongtoidsList.size(); k++) {// 次账号存在于参与人范围,又不存在提交remark表
+ if (k == 0) {
+ sqlWhere += " (exists(select 1 from VotingShareDetail where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + ")";
+ sqlWhere += " and not exists(select 1 from VotingRemark where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + "))";
+ } else {
+ sqlWhere += " or (exists(select 1 from VotingShareDetail where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + ")";
+ sqlWhere += " and not exists(select 1 from VotingRemark where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + "))";
+ }
+ }
+
+ sqlWhere += ") ";
+ }
+
+ }
+
+ BaseBean bb = new BaseBean();
+ String voting_type = Util.null2String(params.get("votingtype"));
+ bb.writeLog("voting_type:"+voting_type);
+ if(StringUtils.isNotBlank(voting_type)){
+ sqlWhere += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sqlWhere:"+sqlWhere);
+
+ boolean isSys = true;
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select 1 from hrmresource where id=" + user.getUID());
+ if (rs.next()) {
+ isSys = false;
+ }
+ if (isSys && user.getUID() != 1) {
+ sqlWhere = " 1=2";
+ }
+
+ String mobileTemplate = votingcreatemobiletemplate.createMobileTemplate(JSON.parseArray(JSON_CONFIG,
+ SplitMobileDataBean.class));
+
+ String pageUid = VotingPageUidFactory.getPageUid(pageId);
+
+ String tableString = "";
+ tableString += ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + "";
+ String isFromMobile = Util.null2String(params.get("_ec_ismobile"));
+ if ("true".equals(isFromMobile) && tabInfo == 0) {
+ tableString += ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + "";
+ } else if ("true".equals(isFromMobile) && tabInfo != 0) {
+ tableString += ""
+ + ""
+ + ""
+ + "";
+ }
+ tableString += "" + "
";
+
+ String sessionkey = pageUid + "_" + Util.getEncrypt(Util.getRandom());
+ Util_TableMap.setVal(sessionkey, tableString);
+
+ apidatas.put("sessionkey", sessionkey);
+
+ // String isFromMobile = Util.null2String(params.get("_ec_ismobile"));
+ // if("true".equals(isFromMobile)){
+ // if(tabInfo == ConditionUtil.TAB_VOTING_DO){ //已参与
+ // //已参与调查中的已参与人数
+ // Map remarkMap = getVotingRemarkCount(votingShareSql, votingCurrentDate,
+ // votingCurrentTime, 1);
+ // apidatas.put("remarkMap", remarkMap);
+ //
+ // }else if(tabInfo == ConditionUtil.TAB_VOTING_UN_DO){//未参与
+ // //未参与调查中的已参与人数
+ // Map remarkMap = getVotingRemarkCount(votingShareSql, votingCurrentDate,
+ // votingCurrentTime, 0);
+ // apidatas.put("remarkMap", remarkMap);
+ // Map votingPicMap = getVotingPathPic(votingShareSql, votingCurrentDate,
+ // votingCurrentTime);
+ // apidatas.put("votingPicMap", votingPicMap);
+ // }
+ // }
+
+ return apidatas;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+}
diff --git a/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingNumCmd.java b/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingNumCmd.java
new file mode 100644
index 0000000..14a5cf5
--- /dev/null
+++ b/src/com/engine/voting/cmd/VotingList/VotingGetMyVotingNumCmd.java
@@ -0,0 +1,147 @@
+package com.engine.voting.cmd.VotingList;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.general.BaseBean;
+import weaver.hrm.User;
+import weaver.systeminfo.setting.HrmUserSettingComInfo;
+import weaver.conn.RecordSet;
+import weaver.general.TimeUtil;
+import weaver.general.Util;
+
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import com.engine.voting.biz.VotingGetVotingIdByShare;
+/**
+ * 与我相关,未参与,我发起,已参与 调查数量
+ * @author ZH
+ *
+ */
+public class VotingGetMyVotingNumCmd extends AbstractCommonCommand> {
+ public VotingGetMyVotingNumCmd(User user, Map params) {
+ this.user = user;
+ this.params = params;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ VotingGetVotingIdByShare votinggetvotingidbyshare = new VotingGetVotingIdByShare();
+ Map apidatas = new HashMap();
+ Map data = new HashMap();
+
+ RecordSet rs = new RecordSet();
+
+ String votingCurrentDate = TimeUtil.getCurrentDateString();
+ String votingCurrentTime = TimeUtil.getOnlyCurrentTimeString();
+
+ HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo();
+ String belongtoshow = userSetting.getBelongtoshowByUserId(user.getUID() + "");
+ String account_type = user.getAccount_type();
+ String belongtoids = user.getBelongtoids();
+ if (belongtoshow.equals("1") && account_type.equals("0") && !belongtoids.equals("")) {
+ belongtoids += "," + user.getUID();
+ } else {
+ belongtoids = user.getUID() + "";
+ }
+
+ String sql = "select count(id) voteNum from Voting where id in("
+ + votinggetvotingidbyshare.getJoinVotingIdByShare(user)
+ + ") and (istemplate <> '1' or istemplate is null)";
+
+ sql += " and status=1 ";
+ sql += " and (beginDate<'" + votingCurrentDate + "' or (beginDate='" + votingCurrentDate
+ + "' and (beginTime is null or beginTime='' or beginTime<='" + votingCurrentTime + "')))";
+ sql += " and (";
+
+ List belongtoidsList = Util.TokenizerString(belongtoids, ",");
+ for (int k = 0; k < belongtoidsList.size(); k++) {// 次账号存在于参与人范围,又不存在提交remark表
+ if (k == 0) {
+ sql += " (exists(select 1 from VotingShareDetail where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + ")";
+ sql += " and not exists(select 1 from VotingRemark where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + "))";
+ } else {
+ sql += " or (exists(select 1 from VotingShareDetail where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + ")";
+ sql += " and not exists(select 1 from VotingRemark where votingid=voting.id and resourceid="
+ + belongtoidsList.get(k) + "))";
+ }
+ }
+
+ sql += ") ";
+
+ BaseBean bb = new BaseBean();
+ String voting_type = Util.null2String(params.get("votingtype"));
+ bb.writeLog("voting_type:"+voting_type);
+ if(StringUtils.isNotBlank(voting_type)){
+ sql += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sql:"+sql);
+
+ rs.executeQuery(sql);
+ if (rs.next()) {// 未参与
+ String voteNum = rs.getString("voteNum");
+ data.put("unjoin", voteNum);
+ }
+
+ sql = "select count(id) voteNum from Voting where id in("
+ + votinggetvotingidbyshare.getJoinVotingIdByShare(user)
+ + ") and (istemplate <> '1' or istemplate is null)";
+ sql += " and exists";
+ sql += " (select 1 from VotingRemark where votingid=voting.id and resourceid"
+ + (belongtoids.contains(",") ? (" in (" + belongtoids + ")") : ("=" + belongtoids)) + ")";
+
+ if(StringUtils.isNotBlank(voting_type)){
+ sql += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sql:"+sql);
+ rs.executeQuery(sql);
+ if (rs.next()) {// 我参与
+ String voteNum = rs.getString("voteNum");
+ data.put("join", voteNum);
+ }
+
+ sql = "select count(id) voteNum from Voting where (istemplate <> '1' or istemplate is null) and status in(1,2) and createrid ="
+ + user.getUID();
+
+ if(StringUtils.isNotBlank(voting_type)){
+ sql += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sql:"+sql);
+ rs.executeQuery(sql);
+ if (rs.next()) {// 我发起
+ String voteNum = rs.getString("voteNum");
+ data.put("create", voteNum);
+ }
+
+ sql = "select count(id) voteNum from Voting where (istemplate <> '1' or istemplate is null) and status in(1,2)";
+ sql += " and (beginDate<'" + votingCurrentDate + "' or (beginDate='" + votingCurrentDate
+ + "' and (beginTime is null or beginTime='' or beginTime<='" + votingCurrentTime + "')))";
+ sql += " and (id in(" + votinggetvotingidbyshare.getJoinVotingIdByShare(user) + ") or createrid ="
+ + user.getUID() + ")";
+ // System.out.println("sql--------:"+sql);
+
+ if(StringUtils.isNotBlank(voting_type)){
+ sql += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sql:"+sql);
+
+ rs.executeQuery(sql);
+ if (rs.next()) {// 与我有关
+ String voteNum = rs.getString("voteNum");
+ data.put("related", voteNum);
+ }
+
+ apidatas.put("data", data);
+
+ return apidatas;
+ }
+
+ public BizLogContext getLogContext() {
+ return null;
+ }
+}
diff --git a/src/com/engine/voting/cmd/VotingList/VotingGetVotingResultListCmd.java b/src/com/engine/voting/cmd/VotingList/VotingGetVotingResultListCmd.java
new file mode 100644
index 0000000..817b1c1
--- /dev/null
+++ b/src/com/engine/voting/cmd/VotingList/VotingGetVotingResultListCmd.java
@@ -0,0 +1,106 @@
+package com.engine.voting.cmd.VotingList;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.general.BaseBean;
+import weaver.hrm.User;
+import weaver.systeminfo.SystemEnv;
+import weaver.general.PageIdConst;
+import weaver.general.Util;
+
+import com.alibaba.fastjson.JSON;
+import com.api.voting.util.VotingTableType;
+import com.cloudstore.dev.api.bean.SplitMobileDataBean;
+import com.cloudstore.dev.api.util.Util_TableMap;
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import com.engine.voting.util.VotingPageUidFactory;
+import com.engine.voting.biz.VotingGetSqlWhere;
+import com.engine.voting.biz.VotingCreateMobileTemplate;
+import com.engine.voting.biz.VotingGetVotingIdByShare;
+/**
+ * 前台页面调查结果列表:获取当前用户拥有权限查看调查结果的调查列表
+ */
+
+public class VotingGetVotingResultListCmd extends AbstractCommonCommand>{
+ public VotingGetVotingResultListCmd(User user, Map params) {
+ this.user = user;
+ this.params = params;
+ }
+
+ private static final String JSON_CONFIG = "[ \n" + "]";
+
+ public Map execute(CommandContext commandContext) {
+ Map apidatas = new HashMap();
+ params = params == null ? new HashMap() : params;
+ String loginType = user.getLogintype();
+ String backFields = " id,descr, subject,begindate,begintime,enddate,endtime,createrid,approverid,status,createdate ,createtime,istemplate,id countid ";
+ String fromSql = " voting ";
+ VotingGetVotingIdByShare votinggetvotingidbyshare = new VotingGetVotingIdByShare();
+ String sqlWhere = " where id in(" + votinggetvotingidbyshare.getVotingIdByShare(user) + ")";
+ sqlWhere += " and status in (1,2) ";
+ sqlWhere += " and (istemplate <> '1' or istemplate is null)";
+
+ BaseBean bb = new BaseBean();
+ String voting_type = Util.null2String(params.get("votingtype"));
+ bb.writeLog("voting_type:"+voting_type);
+ if(StringUtils.isNotBlank(voting_type)){
+ sqlWhere += " and votingtype in("+voting_type+")";
+ }
+ bb.writeLog("sqlWhere:"+sqlWhere);
+
+
+ VotingGetSqlWhere votinggetsqlwhere = new VotingGetSqlWhere();
+ sqlWhere += votinggetsqlwhere.getSqlWhere(params);
+ String orderBy = "id";
+ String operateString = "";
+ VotingTableType tableType = VotingTableType.VOTING_RESULT;
+ String pageId = "VOTING_RESULT";
+ String pageUid = VotingPageUidFactory.getPageUid(pageId);
+ VotingCreateMobileTemplate votingcreatemobiletemplate = new VotingCreateMobileTemplate();
+ String mobileTemplate = votingcreatemobiletemplate.createMobileTemplate(JSON.parseArray(JSON_CONFIG,
+ SplitMobileDataBean.class));
+ String tableString = "";
+ tableString = "";
+ // tableString
+ // +="";
+ tableString += "";
+ tableString += operateString;
+ tableString += ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + "";
+ String isFromMobile = Util.null2String(params.get("_ec_ismobile"));
+ if ("true".equals(isFromMobile)) {
+ tableString += ""
+ + ""
+ + "";
+ }
+ tableString += "" + "
";
+
+ String sessionkey = pageUid + "_" + Util.getEncrypt(Util.getRandom());
+ Util_TableMap.setVal(sessionkey, tableString);
+ apidatas.put("sessionkey", sessionkey);
+ // String isFromMobile = Util.null2String(params.get("_ec_ismobile"));
+ // if("true".equals(isFromMobile)){
+ // //已参与调查中的已参与人数
+ // Map remarkMap = getVotingResultRemarkCount(votingShareSql, params);
+ // apidatas.put("remarkMap", remarkMap);
+ // }
+ return apidatas;
+ }
+
+ public BizLogContext getLogContext() {
+ return null;
+ }
+}
diff --git a/src/com/engine/voting/web/VotingListAction.java b/src/com/engine/voting/web/VotingListAction.java
new file mode 100644
index 0000000..7de224d
--- /dev/null
+++ b/src/com/engine/voting/web/VotingListAction.java
@@ -0,0 +1,280 @@
+package com.engine.voting.web;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+
+import weaver.general.Util;
+import weaver.hrm.HrmUserVarify;
+import weaver.hrm.User;
+import weaver.systeminfo.SystemEnv;
+
+import com.alibaba.fastjson.JSONObject;
+import com.api.browser.bean.BrowserBean;
+import com.api.browser.bean.SearchConditionItem;
+import com.api.browser.bean.SearchConditionOption;
+import com.api.browser.util.ConditionType;
+import com.api.voting.bean.RightMenu;
+import com.api.voting.util.BrowserType;
+import com.api.voting.util.ConditionUtil;
+import com.api.voting.util.RightMenuType;
+import com.api.voting.util.VotingCommonUtil;
+import com.engine.common.util.ServiceUtil;
+import com.engine.voting.service.VotingListService;
+import com.engine.voting.service.impl.VotingListServiceImpl;
+import com.engine.workflow.util.CommonUtil;
+
+/**
+ * 网上调查列表
+ * */
+@Path("/voting/list")
+public class VotingListAction {
+ private VotingListService getService(HttpServletRequest request, HttpServletResponse response) {
+ return ServiceUtil.getService(VotingListServiceImpl.class, CommonUtil.getUserByRequest(request, response));
+ }
+
+ /**
+ * 调查结果列表
+ * */
+ @GET
+ @Path("/result")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String result(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception {
+ Map apidatas = new HashMap();
+ try {
+ User user = HrmUserVarify.getUser(request, response);
+ Map params = getRequestMap(request);
+ apidatas = getService(request, response).getResultList(user, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ /**
+ * 未参与列表
+ * */
+ @GET
+ @Path("/myVoting")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String myVoting(@Context HttpServletRequest request, @Context HttpServletResponse response)
+ throws Exception {
+ Map apidatas = new HashMap();
+ try {
+ User user = HrmUserVarify.getUser(request, response);
+
+ //当前选中tab
+ int tabInfo = Util.getIntValue(request.getParameter(ConditionUtil.TAB_REQ_NAME), ConditionUtil.TAB_VOTING_DEFAULT);
+
+ apidatas = getService(request, response).getMyVoting(user, this.getRequestMap(request), tabInfo);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ /**
+ * 与我相关,未参与,我发起,已参与 调查数量
+ * */
+ @GET
+ @Path("/myVotingNum")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String myVotingNum(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception {
+ Map apidatas = new HashMap();
+ try{
+ User user = HrmUserVarify.getUser (request , response) ;
+ Map params = getRequestMap(request);
+ apidatas = getService(request, response).getMyVotingNum(user, params);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ /**
+ * TAB页
+ * @author wangqs
+ * */
+ @GET
+ @Path("/tabInfo")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getTabInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception {
+ Map apidatas = new HashMap();
+ try{
+ User user = HrmUserVarify.getUser (request , response) ;
+
+ int _default = ConditionUtil.TAB_VOTING_DEFAULT;
+
+ List> groupinfo = new ArrayList>();
+
+ Map undo = new HashMap();
+ undo.put("color","");
+ undo.put("selected",ConditionUtil.TAB_ALL_VALUE == _default);
+ undo.put("groupid","undo");
+ undo.put("editable",false);
+ undo.put("showcount",false);
+ undo.put("title",SystemEnv.getHtmlLabelName(33850,user.getLanguage()));
+ undo.put(ConditionUtil.TAB_REQ_NAME, ConditionUtil.TAB_VOTING_UN_DO);
+ groupinfo.add(undo);
+
+ Map hasDown = new HashMap();
+ hasDown.put("color","");
+ hasDown.put("selected",ConditionUtil.TAB_TODAY_VALUE == _default);
+ hasDown.put("groupid","hasDown");
+ hasDown.put("editable",false);
+ hasDown.put("showcount",false);
+ hasDown.put("title",SystemEnv.getHtmlLabelName(33849,user.getLanguage()));
+ hasDown.put(ConditionUtil.TAB_REQ_NAME, ConditionUtil.TAB_VOTING_DO);
+ groupinfo.add(hasDown);
+
+ apidatas.put("groupinfo",groupinfo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ /**
+ * 右键菜单
+ * @author wangqs
+ * */
+ @GET
+ @Path("/rightMenu")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getRightMenu(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception {
+ Map apidatas = new HashMap();
+ try{
+ User user = HrmUserVarify.getUser (request , response) ;
+ List rightMenus = new ArrayList();
+
+ String listType = request.getParameter("listType");// --result:调查结果,myVoting-参与调查
+ int tabInfo = Util.getIntValue(request.getParameter(ConditionUtil.TAB_REQ_NAME),ConditionUtil.TAB_VOTING_DEFAULT);
+
+ int language = user.getLanguage();
+
+ //if("result".equals(listType) || ("myVoting".equals(listType) && tabInfo == ConditionUtil.TAB_VOTING_DO)){
+ rightMenus.add(new RightMenu(language, RightMenuType.BTN_SEARCH, "", false));
+ //}
+ rightMenus.add(new RightMenu(language, RightMenuType.BTN_STORE, "", false));
+ rightMenus.add(new RightMenu(language, RightMenuType.BTN_HELP, "", false));
+
+ apidatas.put("rightMenus", rightMenus);
+ //当前选中tab
+ }catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ /**
+ * 高级搜索
+ * */
+ @GET
+ @Path("/condition")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getConDition(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception {
+ Map apidatas = new HashMap();
+ try{
+ User user = HrmUserVarify.getUser (request , response) ;
+
+ String listType = request.getParameter("listType");// --result:调查结果,myVoting-参与调查
+ int tabInfo = Util.getIntValue(request.getParameter(ConditionUtil.TAB_REQ_NAME),ConditionUtil.TAB_VOTING_DEFAULT);
+ String isFromMobile = Util.null2String(request.getParameter("_ec_ismobile"));
+ int viewcondition = Util.getIntValue(request.getParameter("viewcondition"), 1); //0:未参与列表,1:已参与列表
+
+ List> grouplist = new ArrayList>();
+
+ Map groupitem1 = new HashMap();
+ List itemlist1 = new ArrayList();
+ groupitem1.put("title", SystemEnv.getHtmlLabelNames(ConditionUtil.COMMON_CONDITION, user.getLanguage()));
+ groupitem1.put("defaultshow", true);
+ groupitem1.put("items", itemlist1);
+ grouplist.add(groupitem1);
+
+ SearchConditionItem titleItem = new SearchConditionItem(ConditionType.INPUT, SystemEnv.getHtmlLabelName(33439,
+ user.getLanguage()), new String[]{"subject"});
+ titleItem.setIsQuickSearch(true);
+ itemlist1.add(titleItem);
+ BrowserBean createUser = new BrowserBean(BrowserType.USER);
+
+ if("result".equals(listType) || "true".equals(isFromMobile)){
+ itemlist1.add(new SearchConditionItem(ConditionType.BROWSER, SystemEnv.getHtmlLabelName(882,
+ user.getLanguage()), new String[]{"createrid"},createUser));
+
+ List options = new ArrayList();
+ List> votingTypes = getService(request, response).getVotingTypes();
+ for(Map votingType : votingTypes){
+ options.add(new SearchConditionOption(votingType.get("id"),votingType.get("name")));
+ }
+// SearchConditionItem votingTypeItem = new SearchConditionItem(ConditionType.SELECT, SystemEnv.getHtmlLabelName(24111,
+// user.getLanguage()), new String[]{"votingtype"});
+// votingTypeItem.setOptions(options);
+// itemlist1.add(votingTypeItem);
+ } else if("myVoting".equals(listType)) { //未参与列表才有创建
+ // 创建人
+ itemlist1.add(new SearchConditionItem(ConditionType.BROWSER, SystemEnv.getHtmlLabelName(882, user.getLanguage()), new String[]{"createrid"}, createUser));
+ }
+
+ List statusOptions = new ArrayList();
+ statusOptions.add(new SearchConditionOption("",""));
+ //statusOptions.add(new SearchConditionOption("3",SystemEnv.getHtmlLabelNames("30835",user.getLanguage())));
+ statusOptions.add(new SearchConditionOption("1",SystemEnv.getHtmlLabelName(18600,weaver.general.Util.getIntValue(user.getLanguage())))); //进行
+ statusOptions.add(new SearchConditionOption("2",SystemEnv.getHtmlLabelName(405,weaver.general.Util.getIntValue(user.getLanguage())))); //结束
+ SearchConditionItem votingStatusItem = new SearchConditionItem(ConditionType.SELECT, SystemEnv.getHtmlLabelName(602, user.getLanguage()), new String[]{"status"});
+ votingStatusItem.setOptions(statusOptions);
+ itemlist1.add(votingStatusItem);
+
+ //调查时间(时间选择)
+ itemlist1.add(new SearchConditionItem(ConditionType.DATE, SystemEnv.getHtmlLabelName(500889, user.getLanguage()), "", new String[]{"datetype", "begindate", "enddate"},
+ VotingCommonUtil.getDateSelectOption(user.getLanguage(), false, false), 6, 18, null));
+
+ if("myVoting".equals(listType) && tabInfo == ConditionUtil.TAB_VOTING_UN_DO){
+ //grouplist = new ArrayList>();
+ }
+
+ if("true".equals(isFromMobile)){
+ apidatas.put("conditioninfo", grouplist);
+ }else{
+ apidatas.put("condition", grouplist);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ apidatas.put("api_status", false);
+ apidatas.put("api_errormsg", "系统内部异常");
+ }
+ return JSONObject.toJSONString(apidatas);
+ }
+
+ public Map getRequestMap(HttpServletRequest request){
+ Map dataMap = new HashMap();
+ Enumeration paramNames = request.getParameterNames();
+ while (paramNames.hasMoreElements()) {
+ String paramName = (String) paramNames.nextElement();
+ String paramValue = Util.null2String(request.getParameter(paramName));
+ dataMap.put(paramName,paramValue);
+ }
+ return dataMap;
+ }
+}
diff --git a/src/com/engine/zjrb/pattern/cmd/PatternUnlockingAddCmd.java b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingAddCmd.java
new file mode 100644
index 0000000..c223426
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingAddCmd.java
@@ -0,0 +1,111 @@
+package com.engine.zjrb.pattern.cmd;
+
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.formmode.setup.ModeRightInfo;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.hrm.User;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+public class PatternUnlockingAddCmd extends AbstractCommonCommand> {
+ public PatternUnlockingAddCmd(Map params, User user) {
+ this.params = params;
+ this.user = user;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map returnMap = new HashMap();
+ BaseBean bb = new BaseBean();
+ int userid = user.getUID();
+ int departmentid = user.getUserDepartment();
+ int subcompanyid = user.getUserSubCompany1();
+ bb.writeLog("departmentid:"+departmentid);
+ bb.writeLog("subcompanyid:"+subcompanyid);
+
+ RecordSet rs = new RecordSet();
+ boolean data = false;
+
+ String uftable = "uf_pattern";
+
+ String patternvalue = Util.null2String(params.get("patternvalue"));
+ try{
+ String id = "";
+ String sql = " select id from "+uftable+" where ry = ? " ;
+ rs.executeQuery(sql,new Object[]{userid});
+ if(rs.next()){
+ id = Util.null2String(rs.getString("id"));
+ }
+ if(StringUtils.isNotBlank(id)){
+ sql = " update "+uftable+" set taz = ?,ryszbm=?,ryszfb=? where id = ?";
+ boolean isTrue = rs.executeUpdate(sql,new Object[]{patternvalue,departmentid,subcompanyid,id});
+ if(isTrue){
+ data = true;
+ }
+ }else{
+
+ ModeRightInfo modeRightInfo = new ModeRightInfo();
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期
+ SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
+
+ int formmodeid = 0 ;
+ String modedatacreater = "1" ;
+ String modedatacreatertype = "0" ;
+ String modedatacreatedate = sdf1.format(new Date());
+ String modedatacreatetime = sdf2.format(new Date());
+ String uuid = UUID.randomUUID().toString();
+
+ sql =" select k.id from modeinfo k \n" +
+ " inner join workflow_bill l on formid = l.id\n" +
+ " where l.tablename = ? " ;
+ rs.executeQuery(sql,new Object[]{uftable});
+ if(rs.next()){
+ formmodeid = Util.getIntValue(Util.null2String(rs.getString("id")));
+ }
+
+ sql = " insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,ry,taz,ryszbm,ryszfb)" +
+ " values(?,?,?,?,?,?,?,?,?,?)" ;
+ boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,userid,patternvalue,departmentid,subcompanyid});
+ bb.writeLog("sql;"+sql);
+ if(flag){
+ String dataid = "";
+ sql = " select * from "+uftable+" where uuid=? ";
+ bb.writeLog("sql:" + sql);
+ rs.executeQuery(sql,new Object[]{uuid});
+ if (rs.next()) {
+ dataid = Util.null2String(rs.getString("id"));
+ }
+ bb.writeLog("sql:" + sql);
+ bb.writeLog("dataid:" + dataid);
+ bb.writeLog("modeid:" + formmodeid);
+ if (StringUtils.isNotEmpty(dataid))
+ {
+ modeRightInfo.setNewRight(true);
+ modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), formmodeid, Integer.parseInt(dataid));
+
+ data = true;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ bb.writeLog("e:"+e);
+ }
+ returnMap.put("data",data);
+ return returnMap;
+ }
+}
diff --git a/src/com/engine/zjrb/pattern/cmd/PatternUnlockingQueryCmd.java b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingQueryCmd.java
new file mode 100644
index 0000000..a9bf81e
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingQueryCmd.java
@@ -0,0 +1,61 @@
+package com.engine.zjrb.pattern.cmd;
+
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.hrm.User;
+
+import java.util.*;
+
+public class PatternUnlockingQueryCmd extends AbstractCommonCommand> {
+ public PatternUnlockingQueryCmd(Map params, User user) {
+ this.params = params;
+ this.user = user;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map returnMap = new HashMap();
+ BaseBean bb = new BaseBean();
+ int userid = user.getUID();
+ RecordSet rs = new RecordSet();
+ String id = "";
+ String ry = "" ;
+ String taz = "";
+ List tazList = new ArrayList();
+ try{
+ String sql = " select id,taz,ry from uf_pattern where ry = ? " ;
+ rs.executeQuery(sql,new Object[]{userid});
+ if(rs.next()){
+ id = Util.null2String(rs.getString("id"));
+ ry = Util.null2String(rs.getString("ry"));
+ taz = Util.null2String(rs.getString("taz"));
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ bb.writeLog("e:"+e);
+ }
+ returnMap.put("id",id);
+ returnMap.put("ry",ry);
+ if(StringUtils.isNotBlank(taz)){
+ String[] tazArray = taz.split(",");
+ for(int i=0;i> {
+
+ public PatternUnlockingResetCmd(Map params, User user) {
+ this.params = params;
+ this.user = user;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map returnMap = new HashMap();
+ BaseBean bb = new BaseBean();
+ int userid = user.getUID();
+ String name = "";
+ int departmentid = user.getUserDepartment();
+ int subcompanyid = user.getUserSubCompany1();
+ bb.writeLog("departmentid:"+departmentid);
+ bb.writeLog("subcompanyid:"+subcompanyid);
+ RecordSet rs = new RecordSet();
+
+ try{
+
+ }catch (Exception e){
+ e.printStackTrace();
+ bb.writeLog("e:"+e);
+ }
+ if(StringUtils.isBlank(name)){
+ name = "系统管理员";
+ }
+ returnMap.put("name",name);
+ return returnMap;
+ }
+}
diff --git a/src/com/engine/zjrb/pattern/cmd/PatternUnlockingUpdateCmd.java b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingUpdateCmd.java
new file mode 100644
index 0000000..9263b80
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/cmd/PatternUnlockingUpdateCmd.java
@@ -0,0 +1,115 @@
+package com.engine.zjrb.pattern.cmd;
+
+import com.engine.common.biz.AbstractCommonCommand;
+import com.engine.common.entity.BizLogContext;
+import com.engine.core.interceptor.CommandContext;
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.formmode.setup.ModeRightInfo;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.hrm.User;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+public class PatternUnlockingUpdateCmd extends AbstractCommonCommand> {
+
+ public PatternUnlockingUpdateCmd(Map params, User user) {
+ this.params = params;
+ this.user = user;
+ }
+
+ @Override
+ public BizLogContext getLogContext() {
+ return null;
+ }
+
+ @Override
+ public Map execute(CommandContext commandContext) {
+ Map returnMap = new HashMap();
+ BaseBean bb = new BaseBean();
+ int userid = user.getUID();
+
+ int departmentid = user.getUserDepartment();
+ int subcompanyid = user.getUserSubCompany1();
+ bb.writeLog("departmentid:"+departmentid);
+ bb.writeLog("subcompanyid:"+subcompanyid);
+
+ RecordSet rs = new RecordSet();
+ boolean data = false;
+
+ String uftable = "uf_pattern";
+
+ String patternvalue = Util.null2String(params.get("patternvalue"));
+ try{
+ String id = "";
+ String sql = " select id from "+uftable+" where ry = ? " ;
+ rs.executeQuery(sql,new Object[]{userid});
+ if(rs.next()){
+ id = Util.null2String(rs.getString("id"));
+ }
+ bb.writeLog("id:"+id);
+
+ if(StringUtils.isNotBlank(id)){
+ sql = " update "+uftable+" set taz = ?,ryszbm=?,ryszfb=? where id = ?";
+ boolean isTrue = rs.executeUpdate(sql,new Object[]{patternvalue,departmentid,subcompanyid,id});
+ if(isTrue){
+ data = true;
+ }
+ }else{
+
+ ModeRightInfo modeRightInfo = new ModeRightInfo();
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期
+ SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
+
+ int formmodeid = 0 ;
+ String modedatacreater = "1" ;
+ String modedatacreatertype = "0" ;
+ String modedatacreatedate = sdf1.format(new Date());
+ String modedatacreatetime = sdf2.format(new Date());
+ String uuid = UUID.randomUUID().toString();
+
+ sql = " select k.id from modeinfo k \n" +
+ " inner join workflow_bill l on formid = l.id\n" +
+ " where l.tablename = ? " ;
+ rs.executeQuery(sql,new Object[]{uftable});
+ if(rs.next()){
+ formmodeid = Util.getIntValue(Util.null2String(rs.getString("id")));
+ }
+
+ sql = " insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,ry,taz,ryszbm,ryszfb)" +
+ " values(?,?,?,?,?,?,?,?,?,?)" ;
+ boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,userid,patternvalue,departmentid,subcompanyid});
+ bb.writeLog("sql;"+sql);
+ if(flag){
+ String dataid = "";
+ sql = " select * from "+uftable+" where uuid=? ";
+ bb.writeLog("sql:" + sql);
+ rs.executeQuery(sql,new Object[]{uuid});
+ if (rs.next()) {
+ dataid = Util.null2String(rs.getString("id"));
+ }
+ bb.writeLog("sql:" + sql);
+ bb.writeLog("dataid:" + dataid);
+ bb.writeLog("modeid:" + formmodeid);
+ if (StringUtils.isNotEmpty(dataid))
+ {
+ modeRightInfo.setNewRight(true);
+ modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), formmodeid, Integer.parseInt(dataid));
+
+ data = true;
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ bb.writeLog("e:"+e);
+ }
+ returnMap.put("data",data);
+ return returnMap;
+ }
+}
diff --git a/src/com/engine/zjrb/pattern/service/PatternUnlockingService.java b/src/com/engine/zjrb/pattern/service/PatternUnlockingService.java
new file mode 100644
index 0000000..045b749
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/service/PatternUnlockingService.java
@@ -0,0 +1,13 @@
+package com.engine.zjrb.pattern.service;
+
+import weaver.hrm.User;
+
+import java.util.Map;
+
+public interface PatternUnlockingService {
+
+ Map query(Map params, User user);
+ Map add(Map params, User user);
+ Map update(Map params, User user);
+ Map getrestinfo(Map params, User user);
+}
diff --git a/src/com/engine/zjrb/pattern/service/impl/PatternUnlockingServiceImpl.java b/src/com/engine/zjrb/pattern/service/impl/PatternUnlockingServiceImpl.java
new file mode 100644
index 0000000..a9b1040
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/service/impl/PatternUnlockingServiceImpl.java
@@ -0,0 +1,33 @@
+package com.engine.zjrb.pattern.service.impl;
+
+import com.engine.core.impl.Service;
+import com.engine.zjrb.pattern.cmd.PatternUnlockingAddCmd;
+import com.engine.zjrb.pattern.cmd.PatternUnlockingQueryCmd;
+import com.engine.zjrb.pattern.cmd.PatternUnlockingUpdateCmd;
+import com.engine.zjrb.pattern.service.PatternUnlockingService;
+import weaver.hrm.User;
+
+import java.util.Map;
+
+public class PatternUnlockingServiceImpl extends Service implements PatternUnlockingService {
+ @Override
+ public Map query(Map params, User user) {
+ return commandExecutor.execute(new PatternUnlockingQueryCmd(params,user));
+ }
+
+ @Override
+ public Map add(Map params, User user) {
+ return commandExecutor.execute(new PatternUnlockingAddCmd(params,user));
+ }
+
+ @Override
+ public Map update(Map params, User user) {
+ return commandExecutor.execute(new PatternUnlockingUpdateCmd(params,user));
+ }
+
+
+ @Override
+ public Map getrestinfo(Map params, User user) {
+ return commandExecutor.execute(new PatternUnlockingUpdateCmd(params,user));
+ }
+}
diff --git a/src/com/engine/zjrb/pattern/web/PatternUnlockingAction.java b/src/com/engine/zjrb/pattern/web/PatternUnlockingAction.java
new file mode 100644
index 0000000..aa727b9
--- /dev/null
+++ b/src/com/engine/zjrb/pattern/web/PatternUnlockingAction.java
@@ -0,0 +1,125 @@
+package com.engine.zjrb.pattern.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.engine.common.util.ParamUtil;
+import com.engine.common.util.ServiceUtil;
+import com.engine.zjrb.pattern.service.PatternUnlockingService;
+import com.engine.zjrb.pattern.service.impl.PatternUnlockingServiceImpl;
+import weaver.general.BaseBean;
+import weaver.hrm.HrmUserVarify;
+import weaver.hrm.User;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class PatternUnlockingAction {
+
+ public PatternUnlockingService getService(){
+ return (PatternUnlockingService) ServiceUtil.getService(PatternUnlockingServiceImpl.class);
+ }
+
+ @GET
+ @Path("/query")
+ @Produces({MediaType.TEXT_PLAIN})
+ public String query(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ Map apidatas = new HashMap();
+
+ BaseBean bb = new BaseBean();
+ bb.writeLog("query");
+ User user = HrmUserVarify.getUser(request , response) ;
+
+ try{
+ Map params = ParamUtil.request2Map(request);
+ apidatas.putAll(getService().query(params,user));
+ apidatas.put("api_status",true);
+ }catch (Exception e){
+ apidatas.put("api_status",false);
+ apidatas.put("api_errormsg","exception:"+e.getMessage());
+ }
+ bb.writeLog("apidatas:"+ JSONObject.toJSONString(apidatas));
+ return JSONObject.toJSONString(apidatas);
+ }
+
+
+ @GET
+ @Path("/add")
+ @Produces({MediaType.TEXT_PLAIN})
+ public String add(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ Map apidatas = new HashMap();
+
+ BaseBean bb = new BaseBean();
+ bb.writeLog("query");
+ User user = HrmUserVarify.getUser(request , response) ;
+
+ try{
+ Map params = ParamUtil.request2Map(request);
+ apidatas.putAll(getService().add(params,user));
+ apidatas.put("api_status",true);
+ }catch (Exception e){
+ apidatas.put("api_status",false);
+ apidatas.put("api_errormsg","exception:"+e.getMessage());
+ }
+ bb.writeLog("apidatas:"+ JSONObject.toJSONString(apidatas));
+ return JSONObject.toJSONString(apidatas);
+ }
+
+
+ @GET
+ @Path("/update")
+ @Produces({MediaType.TEXT_PLAIN})
+ public String update(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ Map apidatas = new HashMap();
+
+ BaseBean bb = new BaseBean();
+ bb.writeLog("query");
+ User user = HrmUserVarify.getUser(request , response) ;
+
+ try{
+ Map params = ParamUtil.request2Map(request);
+ apidatas.putAll(getService().update(params,user));
+ apidatas.put("api_status",true);
+ }catch (Exception e){
+ apidatas.put("api_status",false);
+ apidatas.put("api_errormsg","exception:"+e.getMessage());
+ }
+ bb.writeLog("apidatas:"+ JSONObject.toJSONString(apidatas));
+ return JSONObject.toJSONString(apidatas);
+
+
+ }
+
+
+ @GET
+ @Path("/getrestinfo")
+ @Produces({MediaType.TEXT_PLAIN})
+ public String getrestinfo(@Context HttpServletRequest request, @Context HttpServletResponse response) {
+ Map apidatas = new HashMap();
+
+ BaseBean bb = new BaseBean();
+ bb.writeLog("query");
+ User user = HrmUserVarify.getUser(request , response) ;
+
+ try{
+ Map params = ParamUtil.request2Map(request);
+ apidatas.putAll(getService().getrestinfo(params,user));
+ apidatas.put("api_status",true);
+ }catch (Exception e){
+ apidatas.put("api_status",false);
+ apidatas.put("api_errormsg","exception:"+e.getMessage());
+ }
+ bb.writeLog("apidatas:"+ JSONObject.toJSONString(apidatas));
+ return JSONObject.toJSONString(apidatas);
+ }
+
+
+
+
+
+}
diff --git a/src/weaver/docs/DocShare.java b/src/weaver/docs/DocShare.java
new file mode 100644
index 0000000..f9a6084
--- /dev/null
+++ b/src/weaver/docs/DocShare.java
@@ -0,0 +1,1816 @@
+package weaver.docs;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+import weaver.hrm.orggroup.HrmOrgGroupComInfo;
+import weaver.conn.RecordSet;
+import weaver.crm.Maint.CustomerInfoComInfo;
+import weaver.crm.Maint.CustomerTypeComInfo;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.general.KnowledgeTransMethod;
+import weaver.hrm.companyvirtual.CompanyVirtualComInfo;
+import weaver.hrm.companyvirtual.ResourceVirtualComInfo;
+import weaver.hrm.company.DepartmentComInfo;
+import weaver.hrm.company.SubCompanyComInfo;
+import weaver.hrm.resource.ResourceComInfo;
+import weaver.hrm.roles.RolesComInfo;
+import weaver.share.ShareManager;
+import weaver.systeminfo.SystemEnv;
+import weaver.hrm.job.JobTitlesComInfo;
+public class DocShare extends BaseBean {
+ public ResourceComInfo rcc;
+
+ public SubCompanyComInfo scci;
+
+ public DepartmentComInfo dci;
+
+ public RolesComInfo rci;
+
+ public CustomerTypeComInfo ctci;
+
+ public CustomerInfoComInfo cici;
+ public HrmOrgGroupComInfo hogci;
+ private ShareManager ShareManager;
+ private KnowledgeTransMethod knotm;
+ private CompanyVirtualComInfo cvc;
+ private ResourceVirtualComInfo rvc;
+ private JobTitlesComInfo jbcom;
+
+ public DocShare() {
+ super();
+ try {
+ jbcom=new JobTitlesComInfo();
+ cvc=new CompanyVirtualComInfo();
+ rvc= new ResourceVirtualComInfo();
+ rcc = new ResourceComInfo();
+ knotm = new KnowledgeTransMethod();
+ scci = new SubCompanyComInfo();
+ dci = new DepartmentComInfo();
+ rci = new RolesComInfo();
+ ctci = new CustomerTypeComInfo();
+ cici = new CustomerInfoComInfo();
+ hogci = new HrmOrgGroupComInfo();
+ ShareManager = new ShareManager();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 得到相关的共享字符串
+ * @param stringType
+ * 1:与创建人相关的默认共享 2:与创建人无关的默认共享 3:与客户相关的默认共享 4:与创建人相关的默认共享(外部用户创建)
+ * 5:非默认共享
+ * @param docId
+ * 文档的ID
+ * @return 相关的共享字符串
+ */
+ public String getShareTRString(int stringType, int docId,
+ String needCheckbox, int userLanguage) {
+ return this.getShareTRString(stringType,docId,needCheckbox,userLanguage,true);
+ }
+
+ /**
+ * 得到相关的共享字符串
+ * @param stringType
+ * 1:与创建人相关的默认共享 2:与创建人无关的默认共享 3:与客户相关的默认共享 4:与创建人相关的默认共享(外部用户创建)
+ * 5:非默认共享
+ * @param docId
+ * 文档的ID
+ * @return 相关的共享字符串
+ */
+ public String getShareTRString(int stringType, int docId,
+ String needCheckbox, int userLanguage,boolean canShare) {
+ String shareTRString = "";
+ String sqlStr = "";
+ String createrName = "";
+ String isAllowModiMShare = "0";
+ String isAllowModiNMShare = "0";
+ RecordSet rs = new RecordSet();
+
+ rs
+ .executeSql("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id="
+ + docId);
+ if (rs.next()) {
+ // if (stringType==4){
+ // isAllowModiMShare =
+ // Util.null2String(rs.getString("allownModiMshareW"));
+ // } else {
+ // 修改了一下用 allownModiMshareL代替了所有的默认共享
+ isAllowModiMShare = Util.null2String(rs
+ .getString("allownModiMshareL"));
+ // }
+ isAllowModiNMShare = Util.null2String(rs.getString("shareable"));
+ }
+
+ if (stringType == 1) { // 与创建人相关的默认共享 (内部)
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype between 80 and 85 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if ((!"1".equals(isAllowModiMShare)||!canShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case 80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ createrName = shareRealName;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(15763, userLanguage);
+ break;
+ case 81: // 与创建人直接上级相关
+ shareName = SystemEnv.getHtmlLabelName(18583, userLanguage);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""
+ + shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = rcc.getLastname("" + shareUserId)
+ + SystemEnv.getHtmlLabelName(18940, userLanguage);
+ break;
+
+ case 84: // 与创建人分部相关
+ shareName = SystemEnv.getHtmlLabelName(18937, userLanguage);
+ String departmentId = rcc.getDepartmentID("" + shareUserId);
+ String subCompanyName = scci.getSubCompanyname(dci
+ .getSubcompanyid1(departmentId));
+ shareRealName = subCompanyName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = subCompanyName + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">=" + secLevel
+ + SystemEnv.getHtmlLabelName(18941, userLanguage);
+ break;
+ case 85: // 与创建人部门相关
+ shareName = SystemEnv.getHtmlLabelName(18938, userLanguage);
+ departmentId = rcc.getDepartmentID("" + shareUserId);
+ String departmentName = dci.getDepartmentname(departmentId);
+ String subcompanyid = rcc.getSubCompanyID("" + shareUserId);
+ String subcompanyname = scci.getSubcompanyname(subcompanyid);
+
+ shareRealName = departmentName+"["+subcompanyname+"]";
+ if ("".equals(departmentName))
+ continue;
+ shareRealLevel = departmentName + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + "" + ">=" + secLevel
+ + SystemEnv.getHtmlLabelName(18942, userLanguage);
+ break;
+ }
+ if (shareLevel == 1) {
+ shareRealType = SystemEnv.getHtmlLabelName(18932,
+ userLanguage);
+ //TD12005 START
+ int downloadLevel = Util.getIntValue(rs.getString("downloadlevel"),0);
+ if (downloadLevel == 1) {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23733, userLanguage) + ")";
+ } else {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23734, userLanguage) + ")";
+ }//TD12005 END
+ }
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(18933,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(18934,
+ userLanguage);
+
+ shareTRString += "\n";
+ if ("true".equalsIgnoreCase(needCheckbox))
+ shareTRString += " | \n";
+ shareTRString += " " + shareName + " | \n";
+ shareTRString += " " + shareRealLevel + " | \n";
+ shareTRString += " " + shareRealName + " | \n";
+ shareTRString += " " + shareRealType + " | \n";
+ shareTRString += "
\n";
+ shareTRString += " |
\n";
+ }
+ } else if (stringType == 2) { // 与创建人本人无关的默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype between 1 and 79 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareCrmId = rs.getInt("crmid");
+ int shareLevel = rs.getInt("sharelevel");
+
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if ((!"1".equals(isAllowModiMShare)||!canShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case 1: // 人力资源
+ shareName = SystemEnv.getHtmlLabelName(179, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ break;
+ case 2: // 分部
+ int subcompanyId = rs.getInt("subcompanyid");
+ shareName = SystemEnv.getHtmlLabelName(141, userLanguage);
+ shareRealName = scci.getSubCompanyname("" + subcompanyId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18941, userLanguage);
+ break;
+ case 3: // 部门
+ int departmentId = rs.getInt("departmentid");
+ shareName = SystemEnv.getHtmlLabelName(18939, userLanguage);
+ shareRealName = dci.getDepartmentname("" + departmentId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18942, userLanguage);
+ break;
+ case 4: // 角色成员
+ int roleId = rs.getInt("roleId");
+ int rolelevel = rs.getInt("rolelevel");
+ String roleLevelName = "";
+ switch (rolelevel) {
+ case 0:
+ roleLevelName = SystemEnv.getHtmlLabelName(18939,
+ userLanguage);
+ break;
+ case 1:
+ roleLevelName = SystemEnv.getHtmlLabelName(141,
+ userLanguage);
+ break;
+ case 2:
+ roleLevelName = SystemEnv.getHtmlLabelName(140,
+ userLanguage);
+ break;
+ }
+
+ shareName = SystemEnv.getHtmlLabelName(18936, userLanguage);
+ shareRealName = rci.getRolesRemark("" + roleId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(3005,
+ userLanguage)
+ + "="
+ + roleLevelName
+ + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18945, userLanguage);
+ break;
+ case 6: // 群组
+ int orgGroupId = rs.getInt("orgGroupId");
+ shareName = SystemEnv.getHtmlLabelName(24002, userLanguage);
+ shareRealName = hogci.getOrgGroupName("" + orgGroupId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(431, userLanguage);
+ break;
+ case 5: // 所有人
+ shareName = SystemEnv.getHtmlLabelName(1340, userLanguage);
+ shareRealName = SystemEnv.getHtmlLabelName(1340,
+ userLanguage);
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18943, userLanguage);
+ break;
+ case 9: // 具体客户
+ shareName = SystemEnv.getHtmlLabelName(18935, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareCrmId);
+ if ("".equals(shareRealName))
+ continue;
+ // shareRealLevel=createrName+"的经理的所有上级";
+ break;
+ }
+ if (shareLevel == 1) {
+ shareRealType = SystemEnv.getHtmlLabelName(18932,
+ userLanguage);
+ //TD12005 START
+ int downloadLevel = Util.getIntValue(rs.getString("downloadlevel"),0);
+ if (downloadLevel == 1) {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23733, userLanguage) + ")";
+ } else {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23734, userLanguage) + ")";
+ }//TD12005 END
+ }
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(18933,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(18934,
+ userLanguage);
+
+ shareTRString += "\n";
+ if ("true".equalsIgnoreCase(needCheckbox))
+ shareTRString += " | \n";
+ shareTRString += " " + shareName + " | \n";
+ shareTRString += " " + shareRealLevel + " | \n";
+ shareTRString += " " + shareRealName + " | \n";
+ shareTRString += " " + shareRealType + " | \n";
+ shareTRString += "
\n";
+ shareTRString += " |
\n";
+ }
+ } else if (stringType == 3) { // 与客户相关的默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype<0 and sharetype>-80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if ((!"1".equals(isAllowModiMShare)||!canShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+
+ String crmtype = "" + ((-1) * shareType);
+ shareName = ctci.getCustomerTypename(crmtype);
+ shareRealLevel = SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">= " + secLevel
+ + SystemEnv.getHtmlLabelName(18946, userLanguage)
+ + shareName;
+ shareRealName = shareName;
+ if ("".equals(shareRealName))
+ continue;
+ if (shareLevel == 1) {
+ shareRealType = SystemEnv.getHtmlLabelName(18932,
+ userLanguage);
+ //TD12005 START
+ int downloadLevel = Util.getIntValue(rs.getString("downloadlevel"),0);
+ if (downloadLevel == 1) {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23733, userLanguage) + ")";
+ } else {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23734, userLanguage) + ")";
+ }//TD12005 END
+ }
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(18933,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(18934,
+ userLanguage);
+
+ shareTRString += "\n";
+ if ("true".equalsIgnoreCase(needCheckbox))
+ shareTRString += " | \n";
+ shareTRString += " " + shareName + " | \n";
+ shareTRString += " " + shareRealLevel + " | \n";
+ shareTRString += " " + shareRealName + " | \n";
+ shareTRString += " " + shareRealType + " | \n";
+ shareTRString += "
\n";
+ shareTRString += " |
\n";
+ }
+ } else if (stringType == 4) { // 与创建人相关的默认共享(外部用户创建)
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype between -82 and -80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if ((!"1".equals(isAllowModiMShare)||!canShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case -80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ createrName = shareRealName;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(15763, userLanguage);
+ break;
+ case -81: // 与创建人经理相关
+ shareName = SystemEnv.getHtmlLabelName(15080, userLanguage);
+ shareRealName = rcc.getLastname(cici
+ .getCustomerInfomanager("" + shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = cici.getCustomerInfoname("" + shareUserId)
+ + SystemEnv.getHtmlLabelName(18944, userLanguage);
+ break;
+
+ }
+ if (shareLevel == 1) {
+ shareRealType = SystemEnv.getHtmlLabelName(18932,
+ userLanguage);
+ //TD12005 START
+ int downloadLevel = Util.getIntValue(rs.getString("downloadlevel"),0);
+ if (downloadLevel == 1) {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23733, userLanguage) + ")";
+ } else {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23734, userLanguage) + ")";
+ }//TD12005 END
+ }
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(18933,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(18934,
+ userLanguage);
+
+ shareTRString += "\n";
+ if ("true".equalsIgnoreCase(needCheckbox))
+ shareTRString += " | \n";
+ shareTRString += " " + shareName + " | \n";
+ shareTRString += " " + shareRealLevel + " | \n";
+ shareTRString += " " + shareRealName + " | \n";
+ shareTRString += " " + shareRealType + " | \n";
+ shareTRString += "
\n";
+ shareTRString += " |
\n";
+ }
+ } else if (stringType == 5) { // 非默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and (isSecDefaultShare !='1' or isSecDefaultShare is null) order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareCrmId = rs.getInt("crmid");
+ int shareLevel = rs.getInt("sharelevel");
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+
+ if (!"1".equals(isAllowModiNMShare)||!canShare) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case 1: // 人力资源
+ shareName = SystemEnv.getHtmlLabelName(179, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ break;
+ case 2: // 分部
+ int subcompanyId = rs.getInt("subcompanyid");
+ shareName = SystemEnv.getHtmlLabelName(141, userLanguage);
+ shareRealName = scci.getSubCompanyname("" + subcompanyId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18941, userLanguage);
+ break;
+ case 3: // 部门
+ int departmentId = rs.getInt("departmentid");
+ shareName = SystemEnv.getHtmlLabelName(18939, userLanguage);
+ shareRealName = dci.getDepartmentname("" + departmentId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18942, userLanguage);
+ break;
+ case 4: // 角色成员
+ int roleId = rs.getInt("roleId");
+ shareName = SystemEnv.getHtmlLabelName(18936, userLanguage);
+ int rolelevel = rs.getInt("rolelevel");
+ String roleLevelName = "";
+ switch (rolelevel) {
+ case 0:
+ roleLevelName = SystemEnv.getHtmlLabelName(18939,
+ userLanguage);
+ break;
+ case 1:
+ roleLevelName = SystemEnv.getHtmlLabelName(141,
+ userLanguage);
+ break;
+ case 2:
+ roleLevelName = SystemEnv.getHtmlLabelName(140,
+ userLanguage);
+ break;
+ }
+ shareRealName = rci.getRolesRemark("" + roleId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(3005,
+ userLanguage)
+ + "="
+ + roleLevelName
+ + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18945, userLanguage);
+ break;
+ case 6: // 群组
+ int orgGroupId = rs.getInt("orgGroupId");
+ shareName = SystemEnv.getHtmlLabelName(24002, userLanguage);
+ shareRealName = hogci.getOrgGroupName("" + orgGroupId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(431, userLanguage);
+ break;
+ case 5: // 所有人
+ shareName = SystemEnv.getHtmlLabelName(1340, userLanguage);
+ shareRealName = SystemEnv.getHtmlLabelName(1340,
+ userLanguage);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18943, userLanguage);
+ break;
+ case -80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ createrName = shareRealName;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(15763, userLanguage);
+ break;
+ case 80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ createrName = shareRealName;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(15763, userLanguage);
+ break;
+ case 81: // 与创建人直接上级相关
+ shareName = SystemEnv.getHtmlLabelName(18583, userLanguage);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""
+ + shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(18940, userLanguage);
+ break;
+ case 84: // 与创建人分部相关
+ shareName = SystemEnv.getHtmlLabelName(18937, userLanguage);
+ departmentId = Util.getIntValue(rcc.getDepartmentID(""
+ + shareUserId));
+ String subCompanyName = scci.getSubCompanyname(dci
+ .getSubcompanyid1("" + departmentId));
+ shareRealName = subCompanyName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = subCompanyName + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">=" + secLevel
+ + SystemEnv.getHtmlLabelName(18941, userLanguage);
+ break;
+ case 85: // 与创建人部门相关
+ shareName = SystemEnv.getHtmlLabelName(18938, userLanguage);
+ departmentId = Util.getIntValue(rcc.getDepartmentID(""
+ + shareUserId));
+ String departmentName = dci.getDepartmentname(""
+ + departmentId);
+
+ String subcompanyid = rcc.getSubCompanyID("" + shareUserId);
+ String subcompanyname = scci.getSubcompanyname(subcompanyid);
+
+ shareRealName = departmentName+"["+subcompanyname+"]";
+ if ("".equals(departmentName))
+ continue;
+ shareRealLevel = departmentName + " "
+ + SystemEnv.getHtmlLabelName(683, userLanguage)
+ + ">=" + secLevel
+ + SystemEnv.getHtmlLabelName(18942, userLanguage);
+ break;
+ case -81: // 与创建人经理相关
+ shareName = SystemEnv.getHtmlLabelName(15080, userLanguage);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""
+ + shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = createrName
+ + SystemEnv.getHtmlLabelName(18944, userLanguage);
+ break;
+ case 9: // 具体客户
+ shareName = SystemEnv.getHtmlLabelName(18935, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareCrmId);
+ if ("".equals(shareRealName))
+ continue;
+ // shareRealLevel=createrName+"的经理的所有上级";
+ break;
+ default: // 客户
+ String crmtype = "" + ((-1) * shareType);
+ shareName = ctci.getCustomerTypename(crmtype);
+ shareRealLevel = SystemEnv.getHtmlLabelName(683,
+ userLanguage)
+ + ">= "
+ + secLevel
+ + SystemEnv.getHtmlLabelName(18946, userLanguage)
+ + shareName;
+ shareRealName = shareName;
+ if ("".equals(shareRealName))
+ continue;
+
+ }
+ if (shareLevel == 1) {
+ shareRealType = SystemEnv.getHtmlLabelName(18932,
+ userLanguage);
+ //TD12005 START
+ int downloadLevel = Util.getIntValue(rs.getString("downloadlevel"),0);
+ if (downloadLevel == 1) {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23733, userLanguage) + ")";
+ } else {
+ shareRealType += "(" + SystemEnv.getHtmlLabelName(23734, userLanguage) + ")";
+ }//TD12005 END
+ }
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(18933,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(18934,
+ userLanguage);
+
+ shareTRString += "\n";
+ if ("true".equalsIgnoreCase(needCheckbox))
+ shareTRString += " | \n";
+ shareTRString += " " + shareName + " | \n";
+ shareTRString += " " + shareRealLevel + " | \n";
+ shareTRString += " " + shareRealName + " | \n";
+ shareTRString += " " + shareRealType + " | \n";
+ shareTRString += "
\n";
+ shareTRString += " |
\n";
+ }
+ }
+
+ return shareTRString;
+ }
+
+ public ArrayList getShareList(int stringType, int docId,
+ String needCheckbox, int userLanguage) {
+ ArrayList returnList=new ArrayList();
+ //String shareTRString = "";
+ String sqlStr = "";
+ String createrName = "";
+ String isAllowModiMShare = "0";
+ String isAllowModiNMShare = "0";
+
+ int hasVirtualCom = 0 ;
+ if(cvc.getCompanyNum()>0){
+ hasVirtualCom=1;
+ }
+ RecordSet rs = new RecordSet();
+ RecordSet rs2 = new RecordSet();
+
+ rs.executeSql("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id="
+ + docId);
+ if (rs.next()) {
+ // if (stringType==4){
+ // isAllowModiMShare =
+ // Util.null2String(rs.getString("allownModiMshareW"));
+ // } else {
+ // 修改了一下用 allownModiMshareL代替了所有的默认共享
+ isAllowModiMShare = Util.null2String(rs
+ .getString("allownModiMshareL"));
+ // }
+ isAllowModiNMShare = Util.null2String(rs.getString("shareable"));
+ }
+
+ if (stringType == 1) { // 与创建人相关的默认共享 (内部)
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and ( (sharetype between 80 and 85 and isSecDefaultShare='1' and sharetype!=89 )or( sharetype=11 and isSecDefaultShare='1' and isSecDefaultShare='1' and sharetype!=89 ))order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+
+ int orgid = Util.getIntValue(rs.getString("orgid"),0);
+ int seclevelmax = Util.getIntValue(rs.getString("seclevelmax"),255);
+ String includesub = Util.null2String(rs.getString("includesub"));
+ String custype = Util.null2String(rs.getString("custype"));
+ String allmanagers=Util.null2String(rs.getString("allmanagers"));
+
+ String operategrouppar = userLanguage+"+1+"+orgid+"+"+hasVirtualCom;
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ int downloadlevel = Util.getIntValue(rs.getString("downloadlevel"), 0);//TD12005
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if (!"1".equals(isAllowModiMShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+
+ String joblevel=Util.null2String(rs.getString("joblevel"));
+ String jobdepartment=Util.null2String(rs.getString("jobdepartment"));
+ String jobsubcompany=Util.null2String(rs.getString("jobsubcompany"));
+ String jobids=Util.null2String(rs.getString("jobids"));
+
+ switch (shareType) {
+ case 80: // 与创建人本人相关
+ shareName = knotm.getShareTypeNew("1",operategrouppar);
+ shareRealName = ""+rcc.getLastname("" + shareUserId)+"";
+ createrName = rcc.getLastname("" + shareUserId);
+ shareRealLevel = "";
+ break;
+ case 81: // 与创建人直接上级相关
+
+ if(orgid==0){
+ if(allmanagers.equals("1")){
+ shareName = knotm.getShareTypeNew("3",operategrouppar);
+ shareRealName=rcc.getMulResourcename2(rcc.getManagersIDs(""+shareUserId));
+ if ("".equals(rcc.getManagersIDs(""+shareUserId)+"")||"0".equals(rcc.getManagersIDs(""+shareUserId)+""))
+ continue;
+ }else{
+ shareName = knotm.getShareTypeNew("2",operategrouppar);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""+ shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+
+ }
+ }else if(orgid<0){
+ String allmtem="";
+ if(allmanagers.equals("1")){
+ shareName = knotm.getShareTypeNew("3",operategrouppar);
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName=rcc.getMulResourcename2(rs2.getString("managerstr"));
+ allmtem=rs2.getString("managerstr");
+
+ }
+ }else{
+ shareName = knotm.getShareTypeNew("2",operategrouppar);
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = rcc.getLastname(rs2.getString("managerid"));
+ allmtem=rs2.getString("managerid");
+
+ shareRealName = ""+shareRealName+"";
+ }
+ }
+
+ if ("".equals(allmtem))
+ continue;
+
+ }
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = "";
+
+ break;
+
+ case 84: // 与创建人分部相关
+ shareName = knotm.getShareTypeNew("4",operategrouppar);
+ String departmentId = rcc.getDepartmentID("" + shareUserId);
+ String subCompanyName = scci.getSubCompanyname(dci.getSubcompanyid1(departmentId));
+ if(orgid==0){
+ shareRealName = subCompanyName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+
+ }else if(orgid<0){
+
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = scci.getSubCompanyname(rs2.getString("subcompanyid"));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ }
+
+
+ }
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 85: // 与创建人部门相关
+ shareName = knotm.getShareTypeNew("5",operategrouppar);
+ departmentId = rcc.getDepartmentID("" + shareUserId);
+ String subcompanyid = rcc.getSubCompanyID("" + shareUserId);
+ String subcompanyname = scci.getSubcompanyname(subcompanyid);
+ String departmentName = dci.getDepartmentname(departmentId);
+
+ if(orgid==0){
+ shareRealName = departmentName+"["+subcompanyname+"]";
+ if ("".equals(departmentName)) continue;
+ shareRealName = ""+shareRealName+"";
+
+ }else if(orgid<0){
+
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = dci.getDepartmentname(rs2.getString("departmentid"));
+ if ("".equals(shareRealName)) continue;
+ shareRealName = ""+shareRealName+"";
+ }
+ }
+ if ("".equals(shareRealName)) continue;
+ shareRealLevel = shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+
+ case 11: // 与创建人岗位相关
+ shareName = SystemEnv.getHtmlLabelName(126610,userLanguage);
+ shareRealName = jbcom.getJobTitlesname(jobids)+"/";
+ if ("".equals(jbcom.getJobTitlesname(jobids))){
+ continue;
+ }
+ if(joblevel.equals("1")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(140,userLanguage);
+ }
+
+ if(joblevel.equals("2")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(21837,userLanguage);
+ }
+ if(joblevel.equals("3")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(126607,userLanguage);
+ }
+ if(joblevel.equals("4")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(126608,userLanguage);
+ }
+ if(joblevel.equals("5")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(30792,userLanguage);
+ }
+ if(joblevel.equals("6")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19436,userLanguage);
+ }
+ if(joblevel.equals("7")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(27189,userLanguage);
+ }
+
+
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel ="";
+ break;
+
+
+
+
+ }
+ if (shareLevel == 1)
+ shareRealType = SystemEnv.getHtmlLabelName(367,
+ userLanguage);
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(93,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(17874,
+ userLanguage);
+
+
+ /** td12005 start */
+ String downloadlevelName = "";
+ if(shareLevel==1){
+ downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage);
+ }
+ /** td12005 end */
+
+ Hashtable ht=new Hashtable();
+ ht.put("shareId", ""+shareId);
+ ht.put("shareName", shareName);
+ ht.put("shareRealLevel", shareRealLevel);
+ ht.put("shareRealName", shareRealName);
+ ht.put("shareRealType", shareRealType);
+ /** td12005 start */
+ ht.put("downloadlevelName", downloadlevelName);
+ ht.put("downloadlevel", ""+downloadlevel);
+ /** td12005 end */
+
+ ht.put("type",SystemEnv.getHtmlLabelName(15059, userLanguage));
+
+
+
+ if ("true".equalsIgnoreCase(needCheckbox))
+ ht.put("chk", ""+isDisabled);
+
+ returnList.add(ht);
+ }
+
+ } else if (stringType == 2) { // 与创建人本人无关的默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype between 1 and 79 and isSecDefaultShare='1' and sharetype !=11 order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ int orgid = Util.getIntValue(rs.getString("orgid"),0);
+ int seclevelmax = Util.getIntValue(rs.getString("seclevelmax"),255);
+ int includesub = Util.getIntValue(rs.getString("includesub"),0);
+ String custype = Util.null2String(rs.getString("custype"));
+ String allmanagers=Util.null2String(rs.getString("allmanagers"));
+
+ String joblevel=Util.null2String(rs.getString("joblevel"));
+ String jobdepartment=Util.null2String(rs.getString("jobdepartment"));
+ String jobsubcompany=Util.null2String(rs.getString("jobsubcompany"));
+ String jobids=Util.null2String(rs.getString("jobids"));
+
+ String includesubDes=SystemEnv.getHtmlLabelName(10000010,userLanguage);
+ if(includesub==1){
+ includesubDes=SystemEnv.getHtmlLabelName(125963,userLanguage);
+ }
+
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareCrmId = rs.getInt("crmid");
+ int shareLevel = rs.getInt("sharelevel");
+ int downloadlevel = Util.getIntValue(rs.getString("downloadlevel"), 0);//TD12005
+
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if (!"1".equals(isAllowModiMShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case 1: // 人力资源
+ shareName = SystemEnv.getHtmlLabelName(179, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ break;
+ case 2: // 分部
+ int subcompanyId = rs.getInt("subcompanyid");
+ shareName = SystemEnv.getHtmlLabelName(141, userLanguage);
+ shareRealName = scci.getSubCompanyname("" + subcompanyId)+"("+includesubDes+")";
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 3: // 部门
+ int departmentId = rs.getInt("departmentid");
+ shareName = SystemEnv.getHtmlLabelName(18939, userLanguage);
+ shareRealName = dci.getDepartmentname("" + departmentId)+"("+includesubDes+")";
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 4: // 角色成员
+ int roleId = rs.getInt("roleId");
+ int rolelevel = rs.getInt("rolelevel");
+ String roleLevelName = "";
+ switch (rolelevel) {
+ case 0:
+ roleLevelName = SystemEnv.getHtmlLabelName(18939,
+ userLanguage);
+ break;
+ case 1:
+ roleLevelName = SystemEnv.getHtmlLabelName(141,
+ userLanguage);
+ break;
+ case 2:
+ roleLevelName = SystemEnv.getHtmlLabelName(140,
+ userLanguage);
+ break;
+ }
+
+ shareName = SystemEnv.getHtmlLabelName(18936, userLanguage);
+ shareRealName = rci.getRolesRemark("" + roleId)+"/"+roleLevelName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = shareRealName;
+
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 6: // 群组
+ int orgGroupId = rs.getInt("orgGroupId");
+ shareName = SystemEnv.getHtmlLabelName(24002, userLanguage);
+ shareRealName = hogci.getOrgGroupName("" + orgGroupId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 5: // 所有人
+ shareName = SystemEnv.getHtmlLabelName(1340, userLanguage);
+ shareRealName = "";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 9: // 具体客户
+ shareName = SystemEnv.getHtmlLabelName(18935, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareCrmId);
+ if ("".equals(shareRealName))
+ continue;
+ // shareRealLevel=createrName+"的经理的所有上级";
+ break;
+ case 10: // 与创建人无关的岗位
+ shareName = SystemEnv.getHtmlLabelName(6086,userLanguage);
+ shareRealName = jbcom.getJobTitlesname(jobids)+"/";
+ if ("".equals(jbcom.getJobTitlesname(jobids))){
+ continue;
+ }
+ if(joblevel.equals("1")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(140,userLanguage);
+ }
+ if(joblevel.equals("2")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19437,userLanguage)+"("+Util.toScreen(scci.getSubCompanyname(jobsubcompany),userLanguage)+")";
+ }
+ if(joblevel.equals("3")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19438,userLanguage)+"("+Util.toScreen(dci.getDepartmentname(jobdepartment),userLanguage)+")";
+ }
+
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel ="";
+ break;
+
+
+ }
+ if (shareLevel == 1)
+ shareRealType = SystemEnv.getHtmlLabelName(367,
+ userLanguage);
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(93,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(17874,
+ userLanguage);
+
+ /** td12005 start */
+ String downloadlevelName = "";
+ if(shareLevel==1){
+ downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage);
+ }
+ /** td12005 end */
+
+ Hashtable ht=new Hashtable();
+ ht.put("shareId", ""+shareId);
+ ht.put("shareName", shareName);
+ ht.put("shareRealLevel", shareRealLevel);
+ ht.put("shareRealName", shareRealName);
+ ht.put("shareRealType", shareRealType);
+ /** td12005 start */
+ ht.put("downloadlevelName", downloadlevelName);
+ ht.put("downloadlevel", ""+downloadlevel);
+ /** td12005 end */
+
+ ht.put("type",SystemEnv.getHtmlLabelName(15059, userLanguage));
+
+
+
+ if ("true".equalsIgnoreCase(needCheckbox))
+ ht.put("chk", ""+isDisabled);
+
+ returnList.add(ht);
+ }
+ } else if (stringType == 3) { // 与客户相关的默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype<0 and sharetype>-80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ int seclevelmax = Util.getIntValue(rs.getString("seclevelmax"),255);
+ String operategrouppar = userLanguage+"+3+0+"+hasVirtualCom;
+
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ int downloadlevel = Util.getIntValue(rs.getString("downloadlevel"), 0);//TD12005
+
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if (!"1".equals(isAllowModiMShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+
+ String crmtype = "" + ((-1) * shareType);
+ shareName = knotm.getShareTypeNew("8",operategrouppar);
+
+ shareRealName = ctci.getCustomerTypename(crmtype);
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ if (shareLevel == 1)
+ shareRealType = SystemEnv.getHtmlLabelName(367,
+ userLanguage);
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(93,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(17874,
+ userLanguage);
+
+ /** td12005 start */
+ String downloadlevelName = "";
+ if(shareLevel==1){
+ downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage);
+ }
+ /** td12005 end */
+
+ Hashtable ht=new Hashtable();
+ ht.put("shareId", ""+shareId);
+ ht.put("shareName", shareName);
+ ht.put("shareRealLevel", shareRealLevel);
+ ht.put("shareRealName", shareRealName);
+ ht.put("shareRealType", shareRealType);
+ /** td12005 start */
+ ht.put("downloadlevelName", downloadlevelName);
+ ht.put("downloadlevel", ""+downloadlevel);
+ /** td12005 end */
+
+ ht.put("type",SystemEnv.getHtmlLabelName(15059, userLanguage));
+
+
+
+ if ("true".equalsIgnoreCase(needCheckbox))
+ ht.put("chk", ""+isDisabled);
+
+ returnList.add(ht);
+ }
+ } else if (stringType == 4) { // 与创建人相关的默认共享(外部用户创建)
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and sharetype between -82 and -80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareLevel = rs.getInt("sharelevel");
+ int downloadlevel = Util.getIntValue(rs.getString("downloadlevel"), 0);//TD12005
+
+ String isSecDefaultShare = Util.null2String(rs
+ .getString("isSecDefaultShare"));
+ if (!"1".equals(isAllowModiMShare)
+ && "1".equals(isSecDefaultShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case -80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ createrName = shareRealName;
+ shareRealLevel = "";
+ break;
+ case -81: // 与创建人经理相关
+ shareName = SystemEnv.getHtmlLabelName(15080, userLanguage);
+ shareRealName = rcc.getLastname(cici.getCustomerInfomanager("" + shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel = "";
+ break;
+
+ }
+ if (shareLevel == 1)
+ shareRealType = SystemEnv.getHtmlLabelName(367,
+ userLanguage);
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(93,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(17874,
+ userLanguage);
+ /** td12005 start */
+ String downloadlevelName = "";
+ if(shareLevel==1){
+ downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage);
+ }
+ /** td12005 end */
+
+ Hashtable ht=new Hashtable();
+ ht.put("shareId", ""+shareId);
+ ht.put("shareName", shareName);
+ ht.put("shareRealLevel", shareRealLevel);
+ ht.put("shareRealName", shareRealName);
+ ht.put("shareRealType", shareRealType);
+ /** td12005 start */
+ ht.put("downloadlevelName", downloadlevelName);
+ ht.put("downloadlevel", ""+downloadlevel);
+ /** td12005 end */
+ ht.put("type",SystemEnv.getHtmlLabelName(15059, userLanguage));
+
+
+
+ if ("true".equalsIgnoreCase(needCheckbox))
+ ht.put("chk", ""+isDisabled);
+
+ returnList.add(ht);
+ }
+ } else if (stringType == 5) { // 非默认共享
+ sqlStr = "select * from docshare where docid="
+ + docId
+ + " and (isSecDefaultShare !='1' or isSecDefaultShare is null) and sharetype!=89 order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ while (rs.next()) {
+ int orgid = Util.getIntValue(rs.getString("orgid"),0);
+ int seclevelmax = Util.getIntValue(rs.getString("seclevelmax"),255);
+
+ int includesub = Util.getIntValue(rs.getString("includesub"),0);
+
+ String joblevel=Util.null2String(rs.getString("joblevel"));
+ String jobdepartment=Util.null2String(rs.getString("jobdepartment"));
+ String jobsubcompany=Util.null2String(rs.getString("jobsubcompany"));
+ String jobids=Util.null2String(rs.getString("jobids"));
+
+ String custype = Util.null2String(rs.getString("custype"));
+ String allmanagers=Util.null2String(rs.getString("allmanagers"));
+ String includesubDes=SystemEnv.getHtmlLabelName(10000010,userLanguage);
+ if(includesub==1){
+ includesubDes=SystemEnv.getHtmlLabelName(125963,userLanguage);
+ }
+
+ String operategrouppar = userLanguage+"+1+"+orgid+"+"+hasVirtualCom;
+
+ String shareName = "";
+ String shareRealName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ String chkShareId = "chkShareId";
+
+ int shareId = rs.getInt("id");
+ int shareType = rs.getInt("sharetype");
+ int shareUserId = rs.getInt("userid");
+ int shareCrmId = rs.getInt("crmid");
+ int shareLevel = rs.getInt("sharelevel");
+ int downloadlevel = Util.getIntValue(rs.getString("downloadlevel"), 0);//TD12005
+ String secLevel = Util.null2String(rs.getString("seclevel"));
+
+ if (!"1".equals(isAllowModiNMShare)) {
+ isDisabled = " disabled ";
+ chkShareId = "_chkShareId";
+ }
+ switch (shareType) {
+ case 1: // 人力资源
+ shareName = SystemEnv.getHtmlLabelName(179, userLanguage);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ break;
+ case 2: // 分部
+ int subcompanyId = rs.getInt("subcompanyid");
+ shareName = SystemEnv.getHtmlLabelName(141, userLanguage);
+ shareRealName = scci.getSubCompanyname("" + subcompanyId)+"("+includesubDes+")";
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 3: // 部门
+ int departmentId = rs.getInt("departmentid");
+ shareName = SystemEnv.getHtmlLabelName(18939, userLanguage);
+ shareRealName = dci.getDepartmentname("" + departmentId)+"("+includesubDes+")";
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 4: // 角色成员
+ int roleId = rs.getInt("roleId");
+ shareName = SystemEnv.getHtmlLabelName(18936, userLanguage);
+ int rolelevel = rs.getInt("rolelevel");
+ String roleLevelName = "";
+ switch (rolelevel) {
+ case 0:
+ roleLevelName = SystemEnv.getHtmlLabelName(18939,
+ userLanguage);
+ break;
+ case 1:
+ roleLevelName = SystemEnv.getHtmlLabelName(141,
+ userLanguage);
+ break;
+ case 2:
+ roleLevelName = SystemEnv.getHtmlLabelName(140,
+ userLanguage);
+ break;
+ }
+ shareRealName = rci.getRolesRemark("" + roleId)+"/"+roleLevelName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = shareRealName;
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 5: // 所有人
+ shareName = SystemEnv.getHtmlLabelName(1340, userLanguage);
+ shareRealName = "";
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+ case 6: // 群组
+ int orgGroupId = rs.getInt("orgGroupId");
+ shareName = SystemEnv.getHtmlLabelName(24002, userLanguage);
+ shareRealName = hogci.getOrgGroupName("" + orgGroupId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+
+ case 10: // 与创建人无关的岗位
+ shareName = SystemEnv.getHtmlLabelName(6086,userLanguage);
+ shareRealName = jbcom.getJobTitlesname(jobids)+"/";
+ if ("".equals(jbcom.getJobTitlesname(jobids))){
+ continue;
+ }
+ if(joblevel.equals("1")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(140,userLanguage);
+ }
+ if(joblevel.equals("2")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19437,userLanguage)+"("+Util.toScreen(scci.getSubCompanyname(jobsubcompany),userLanguage)+")";
+ }
+ if(joblevel.equals("3")){
+ shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19438,userLanguage)+"("+Util.toScreen(dci.getDepartmentname(jobdepartment),userLanguage)+")";
+ }
+
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel ="";
+ break;
+
+
+ case -80: // 与创建人本人相关
+ shareName = SystemEnv.getHtmlLabelName(15079, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ createrName = shareRealName;
+ shareRealLevel = "";
+ break;
+ case 80: // 与创建人本人相关
+ shareName = knotm.getShareTypeNew("1",operategrouppar);
+ shareRealName = rcc.getLastname("" + shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ createrName = shareRealName;
+ shareRealLevel = "";
+ break;
+ case 81: // 与创建人直接上级相关
+ if(orgid==0){
+ if(allmanagers.equals("1")){
+ shareName = knotm.getShareTypeNew("3",operategrouppar);
+ shareRealName=rcc.getMulResourcename2(rcc.getManagersIDs(""+shareUserId));
+ if ("".equals(rcc.getManagersIDs(""+shareUserId)+"")||"0".equals(rcc.getManagersIDs(""+shareUserId)+""))
+ continue;
+ }else{
+ shareName = knotm.getShareTypeNew("2",operategrouppar);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""+ shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+
+ }
+ }else if(orgid<0){
+ String allmtem="";
+ if(allmanagers.equals("1")){
+ shareName = knotm.getShareTypeNew("3",operategrouppar);
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName=rcc.getMulResourcename2(rs2.getString("managerstr"));
+ allmtem=rs2.getString("managerstr");
+
+
+
+ }
+ }else{
+ shareName = knotm.getShareTypeNew("2",operategrouppar);
+
+
+
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = rcc.getLastname(rs2.getString("managerid"));
+ allmtem=rs2.getString("managerid");
+
+ shareRealName = ""+shareRealName+"";
+ }
+ }
+
+
+
+
+
+ if ("".equals(allmtem))
+ continue;
+
+ }
+ if ("".equals(shareRealName))
+ continue;
+
+ shareRealLevel = "";
+
+ break;
+
+ case 84: // 与创建人分部相关
+
+ shareName = knotm.getShareTypeNew("4",operategrouppar);
+ departmentId =Util.getIntValue(rcc.getDepartmentID("" + shareUserId));
+ String subCompanyName = scci.getSubCompanyname(dci.getSubcompanyid1(departmentId+""));
+ if(orgid==0){
+ shareRealName = subCompanyName;
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+
+ }else if(orgid<0){
+
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = scci.getSubCompanyname(rs2.getString("subcompanyid"));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ }
+
+
+ }
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+
+
+ case 85: // 与创建人部门相关
+
+
+ shareName = knotm.getShareTypeNew("5",operategrouppar);
+ departmentId = Util.getIntValue(rcc.getDepartmentID(""
+ + shareUserId));
+ String departmentName = dci.getDepartmentname(departmentId+"");
+ String subcompanyid = rcc.getSubCompanyID("" + shareUserId);
+ String subcompanyname = scci.getSubcompanyname(subcompanyid);
+
+ if(orgid==0){
+ shareRealName = departmentName+"["+subcompanyname+"]";
+ if ("".equals(departmentName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+
+ }else if(orgid<0){
+
+ rs2.executeSql("select * from HrmResourceVirtual where virtualtype= "+orgid+" and resourceid="+shareUserId);
+ if(rs2.next()){
+ shareRealName = dci.getDepartmentname(rs2.getString("departmentid"));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ }
+
+
+ }
+ if ("".equals(shareRealName))
+ continue;
+ shareRealLevel = shareRealLevel =secLevel+"-"+seclevelmax ;
+ break;
+
+
+ case -81: // 与创建人经理相关
+ shareName = SystemEnv.getHtmlLabelName(15080, userLanguage);
+ shareRealName = rcc.getLastname(rcc.getManagerID(""+ shareUserId));
+ if ("".equals(shareRealName))
+ continue;
+ shareRealName = ""+shareRealName+"";
+ shareRealLevel = "";
+ break;
+ case 9: // 具体客户
+ shareName = SystemEnv.getHtmlLabelName(18935, userLanguage);
+ shareRealName = cici.getCustomerInfoname("" + shareCrmId);
+ if ("".equals(shareRealName))
+ continue;
+ // shareRealLevel=createrName+"的经理的所有上级";
+ break;
+ default: // 客户
+ String crmtype = "" + ((-1) * shareType);
+ shareName = SystemEnv.getHtmlLabelName(1282, userLanguage);
+ shareRealLevel =secLevel+"-"+seclevelmax ;
+ shareRealName = ctci.getCustomerTypename(crmtype);
+ if ("".equals(shareRealName))
+ continue;
+
+ }
+ if (shareLevel == 1)
+ shareRealType = SystemEnv.getHtmlLabelName(367,
+ userLanguage);
+ else if (shareLevel == 2)
+ shareRealType = SystemEnv.getHtmlLabelName(93,
+ userLanguage);
+ else if (shareLevel == 3)
+ shareRealType = SystemEnv.getHtmlLabelName(17874,
+ userLanguage);
+
+ /** td12005 start */
+ String downloadlevelName = "";
+ if(shareLevel==1){
+ downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage);
+ }
+ /** td12005 end */
+
+ Hashtable ht=new Hashtable();
+ ht.put("shareId", ""+shareId);
+ ht.put("shareName", shareName);
+ ht.put("shareRealLevel", shareRealLevel);
+ ht.put("shareRealName", shareRealName);
+ ht.put("shareRealType", shareRealType);
+ /** td12005 start */
+ ht.put("downloadlevelName", downloadlevelName);
+ ht.put("downloadlevel", ""+downloadlevel);
+ /** td12005 end */
+
+ ht.put("type",SystemEnv.getHtmlLabelName(18574, userLanguage));
+
+
+
+ if ("true".equalsIgnoreCase(needCheckbox))
+ ht.put("chk", ""+isDisabled);
+
+ returnList.add(ht);
+ }
+
+ //所有上级权限 展现 89
+ sqlStr = "select * from docshare where docid=" + docId + " and (isSecDefaultShare!='1' or isSecDefaultShare is null) and sharetype=89 order by issecdefaultshare desc,sharetype";
+ rs.executeSql(sqlStr);
+ int count = rs.getCounts();
+ int i =0 ;
+ String shareRealName = "";
+ while (rs.next()) {
+ i ++;
+ String shareName = "";
+ String shareRealLevel = "";
+ String shareRealType = "";
+ String isDisabled = "";
+ int shareUserId = rs.getInt("userid");
+ shareRealName += rcc.getLastname(""+ shareUserId);
+ if ("".equals(shareRealName))
+ continue;
+
+ if(i=" + secLevel);
+ int i = 0;
+ while (rs.next()) {
+ if (i <= 9) {
+ downOwnerStr1 += Util.null2String(rs.getString(1)) + " ";
+ }
+ downOwnerStr2 += Util.null2String(rs.getString(1)) + " ";
+ i++;
+ }
+ if ("".equals(downOwnerStr1))
+ downOwnerStr = "";
+ else
+ downOwnerStr = "" + downOwnerStr1 + "......" + "
";
+
+ return downOwnerStr;
+ }
+
+ /**
+ * 得到是否此目录下的文档允许修改其默认共享
+ * @param docid
+ * 文档的ID
+ * @return 是否此目录下的文档允许修改其默认共享
+ */
+ public boolean getIsAllowModiMShare(String docid) {
+ boolean allowModiMShare = false;
+ RecordSet rs = new RecordSet();
+ rs
+ .executeSql("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id="
+ + docid);
+ if (rs.next()) {
+ // 修改了一下用 allownModiMshareL代替了所有的默认共享
+ String isAllowModiMShare = Util.null2String(rs
+ .getString("allownModiMshareL")); // 默认共享
+ allowModiMShare = "1".equals(isAllowModiMShare);
+ }
+ return allowModiMShare;
+ }
+
+ /**
+ * 得到 是否此目录下的文档允许修改其非默认共享
+ * @param docid
+ * 文档的ID
+ * @return 是否此目录下的文档允许修改其非默认共享
+ */
+ public boolean getIsAllowModiNMShare(String docid) {
+ boolean allowModiNMShare = false;
+ RecordSet rs = new RecordSet();
+ rs
+ .executeSql("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id="
+ + docid);
+ if (rs.next()) {
+ String isAllowModiNMShare = Util.null2String(rs
+ .getString("shareable")); // 非默认共享
+ allowModiNMShare = "1".equals(isAllowModiNMShare);
+
+ }
+ return allowModiNMShare;
+ }
+
+ /**
+ * 得到 是否此目录下的文档禁止文档下载(TD12005)
+ * @param docid
+ * 文档的ID
+ * @return 是否此目录下的文档禁止文档下载
+ */
+ public boolean getIsAllowDownload(String docid) {
+ boolean allowDownload = false;
+ RecordSet rs = new RecordSet();
+ rs
+ .executeSql("select d2.nodownload from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id="
+ + docid);
+ if (rs.next()) {
+ String noDownload = Util.null2String(rs
+ .getString("nodownload")); // 禁止文档下载
+ allowDownload = "0".equals(noDownload);
+
+ }
+ return allowDownload;
+ }
+}
diff --git a/src/weaver/interfaces/zjrb/job/HrmSynDaoTime_E92E7.java b/src/weaver/interfaces/zjrb/job/HrmSynDaoTime_E92E7.java
new file mode 100644
index 0000000..ca844e8
--- /dev/null
+++ b/src/weaver/interfaces/zjrb/job/HrmSynDaoTime_E92E7.java
@@ -0,0 +1,209 @@
+package weaver.interfaces.zjrb.job;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSetDataSource;
+import weaver.general.BaseBean;
+
+/**
+ * @Author: shil
+ * @Date: 2024/8/21
+ * @Time: 17:23
+ * @Desc: 浙江人保组织架构同步,从E9同步到E7
+ * 需要注意的是所有的表的外键都是id而不是code,在每次同步结束后
+ * 要根据原来的id转成code,再到当前E9中转成现在的id
+ * @Version: 1.0
+ */
+
+public class HrmSynDaoTime_E92E7 {
+
+ public void syn(int days,String dataResource){
+
+ // 备份数据
+
+ BaseBean bb = new BaseBean();
+ HrmSynSubcompanyUtil hrmSynSubcompanyUtil = new HrmSynSubcompanyUtil();
+ HrmSynDepartmentUtil hrmSynDepartmentUtil = new HrmSynDepartmentUtil();
+ HrmSynJobGroupUtil hrmSynJobGroupUtil = new HrmSynJobGroupUtil();
+ HrmSynJobActivitiesUtil hrmSynJobActivitiesUtil = new HrmSynJobActivitiesUtil();
+ HrmSynJobTitlesUtil hrmSynJobTitlesUtil = new HrmSynJobTitlesUtil();
+ HrmSynResourceUtil hrmSynResourceUtil = new HrmSynResourceUtil();
+
+ try {
+ backDataBaseData(dataResource,"1");
+ String subcompanyWhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ String mainid = hrmSynSubcompanyUtil.SynHrmSubcompanyData(dataResource,subcompanyWhere);
+ if(StringUtils.isNotBlank(mainid)){
+ backDataBaseData(dataResource,"2");
+ String departmentwhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ hrmSynDepartmentUtil.SynHrmDepartmentData(dataResource,mainid,departmentwhere);
+
+ backDataBaseData(dataResource,"3");
+ String jobgroupWhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ hrmSynJobGroupUtil.SynHrmJobGroupData(dataResource,mainid,jobgroupWhere);
+
+ backDataBaseData(dataResource,"4");
+ String jobactivitiesWhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ hrmSynJobActivitiesUtil.SynHrmJobActivitiesData(dataResource,mainid,jobactivitiesWhere);
+
+ backDataBaseData(dataResource,"5");
+ String jobTitlesWhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ hrmSynJobTitlesUtil.SynHrmJobTitlesData(dataResource,mainid,jobTitlesWhere);
+
+ backDataBaseData(dataResource,"6");
+ String hrmresourceWhere = " and to_char(created,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') or to_char(modified,'yyyy-mm-dd')>=to_char(sysdate-"+days+",'yyyy-mm-dd') ";
+ hrmSynResourceUtil.SynHrmresourceData(dataResource,mainid,hrmresourceWhere);
+ }
+ }catch (Exception e){
+ bb.writeLog(e);
+ }
+ }
+
+
+ public void allSyn(String dataResource){
+
+ // 备份数据
+ BaseBean bb = new BaseBean();
+ HrmSynSubcompanyUtil hrmSynSubcompanyUtil = new HrmSynSubcompanyUtil();
+ HrmSynDepartmentUtil hrmSynDepartmentUtil = new HrmSynDepartmentUtil();
+ HrmSynJobGroupUtil hrmSynJobGroupUtil = new HrmSynJobGroupUtil();
+ HrmSynJobActivitiesUtil hrmSynJobActivitiesUtil = new HrmSynJobActivitiesUtil();
+ HrmSynJobTitlesUtil hrmSynJobTitlesUtil = new HrmSynJobTitlesUtil();
+ HrmSynResourceUtil hrmSynResourceUtil = new HrmSynResourceUtil();
+
+ try {
+ backDataBaseData(dataResource,"1");
+ String mainid = hrmSynSubcompanyUtil.SynHrmSubcompanyData(dataResource,"");
+ if(StringUtils.isNotBlank(mainid)){
+ backDataBaseData(dataResource,"2");
+ hrmSynDepartmentUtil.SynHrmDepartmentData(dataResource,mainid,"");
+ backDataBaseData(dataResource,"3");
+ hrmSynJobGroupUtil.SynHrmJobGroupData(dataResource,mainid,"");
+ backDataBaseData(dataResource,"4");
+ hrmSynJobActivitiesUtil.SynHrmJobActivitiesData(dataResource,mainid,"");
+ backDataBaseData(dataResource,"5");
+ hrmSynJobTitlesUtil.SynHrmJobTitlesData(dataResource,mainid,"");
+ backDataBaseData(dataResource,"6");
+ hrmSynResourceUtil.SynHrmresourceData(dataResource,mainid,"");
+ }
+ }catch (Exception e){
+ bb.writeLog(e);
+ }
+ }
+
+
+ public void backDataBaseData(String dataResource,String type){
+ BaseBean bb = new BaseBean();
+ RecordSetDataSource rsd = new RecordSetDataSource(dataResource);
+ if("1".equals(type)){
+ try {
+ String sql = " delete from hrmsubcompany_bakall ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除分部备份表数据成功");
+ sql = " INSERT INTO HRMSUBCOMPANY_bakall \n" +
+ " SELECT * FROM HRMSUBCOMPANY ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份分部表数据成功");
+ }
+ }
+ }catch (Exception e){
+ bb.writeLog("hrmsubcompany_bakall-Exception");
+ }
+ }
+
+ if("2".equals(type)){
+ try {
+ String sql = " delete from HRMDEPARTMENT_bakall ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除部门备份表数据成功");
+ sql = " INSERT INTO HRMDEPARTMENT_bakall \n" +
+ " SELECT * FROM HRMDEPARTMENT h ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份部门表数据成功");
+ }
+ }
+ }catch (Exception e){
+ bb.writeLog("HRMDEPARTMENT_bakall-Exception");
+ }
+ }
+
+
+ if("3".equals(type)){
+ try {
+ String sql = " delete from HRMJOBGROUPS_BAKALL ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除人员备份表数据成功");
+ sql = " INSERT INTO HRMJOBGROUPS_BAKALL \n" +
+ " SELECT * FROM HRMJOBGROUPS ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份人员表数据成功");
+ }
+ }
+ }catch (Exception e){
+ bb.writeLog("HRMJOBGROUPS_BAKALL-Exception");
+ }
+ }
+
+
+ if("4".equals(type)){
+ try {
+ String sql = " delete from HRMJOBACTIVITIES_BAKALL ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除人员备份表数据成功");
+ sql = " INSERT INTO HRMJOBACTIVITIES_BAKALL \n" +
+ " SELECT * FROM HRMJOBACTIVITIES ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份人员表数据成功");
+ }
+ }
+ }catch (Exception e){
+ bb.writeLog("HRMJOBGROUPS_BAKALL-Exception");
+ }
+ }
+
+ if("5".equals(type)){
+ try {
+ String sql = " delete from HRMJOBTITLES_BAKALL ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除人员备份表数据成功");
+ sql = " INSERT INTO HRMJOBTITLES_BAKALL \n" +
+ " SELECT * FROM HRMJOBTITLES ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份人员表数据成功");
+ }
+ }
+ }catch (Exception e){
+ bb.writeLog("HRMJOBTITLES_BAKALL-Exception");
+ }
+ }
+
+ if("6".equals(type)){
+ try {
+ String sql = " delete from HRMRESOURCE_bakall ";
+ boolean isTrue = rsd.execute(sql);
+ if(isTrue){
+ bb.writeLog("删除人员备份表数据成功");
+ sql = " INSERT INTO HRMRESOURCE_bakall \n" +
+ " SELECT * FROM HRMRESOURCE ";
+ boolean isTrue2 = rsd.execute(sql);
+ if(isTrue2){
+ bb.writeLog("备份人员表数据成功");
+ }
+ }
+ }catch (Exception e){
+
+ }
+ }
+
+ }
+
+}
diff --git a/src/weaver/interfaces/zjrb/job/HrmSynDepartmentUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynDepartmentUtil.java
new file mode 100644
index 0000000..5fcb12d
--- /dev/null
+++ b/src/weaver/interfaces/zjrb/job/HrmSynDepartmentUtil.java
@@ -0,0 +1,732 @@
+package weaver.interfaces.zjrb.job;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.conn.RecordSet;
+import weaver.conn.RecordSetDataSource;
+import weaver.formmode.setup.ModeRightInfo;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+public class HrmSynDepartmentUtil {
+
+ public void SynHrmDepartmentData(String dataResource,String mainid,String departmentwhere){
+
+ BaseBean bb = new BaseBean();
+ RecordSetDataSource rsd = new RecordSetDataSource(dataResource);
+ RecordSet rs = new RecordSet();
+
+ int totle_count = 0;
+ int update_success_count = 0;
+ int update_fail_count = 0;
+ int update_exp_count = 0;
+
+ int insert_success_count = 0;
+ int insert_fail_count = 0;
+ int insert_exp_count = 0;
+
+ int unchanged_count = 0;
+ int data_error_count = 0;
+
+ List dataErrorList = new ArrayList();
+ List