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> getDocShare(User user, Map otherparams, HttpServletRequest request, HttpServletResponse response){ + Integer docid = Integer.parseInt((String) otherparams.get("id")); + //DocShare docShare = new DocShare(); + ArrayList> dataList=new ArrayList>(); + + + // 分页信息 + int startSize = Util.getIntValue(request.getParameter("min"),0); + if(startSize <= 0){ + startSize = Util.getIntValue((String)request.getAttribute("min"),0); + } + int pageSize = Util.getIntValue(request.getParameter("pageSize"),0); + if(pageSize <= 0){ + pageSize = Util.getIntValue((String)request.getAttribute("pageSize"),0); + } + + // new BaseBean().writeLog("---------------" + pageNum + "=======" + pageSize); + int endSize = startSize+pageSize; + + try{ + dataList.addAll(getShareList(1,docid,"true",user.getLanguage(),false)); + dataList.addAll(getShareList(2,docid,"true",user.getLanguage(),false)); + dataList.addAll(getShareList(3,docid,"true",user.getLanguage(),false)); + dataList.addAll(getShareList(4,docid,"true",user.getLanguage(),false)); + + startSize = startSize - dataList.size(); + endSize = endSize - dataList.size(); + + List> shareList = getShareList(5,docid,"true",user.getLanguage(),false); + + String shareEdit = Util.null2String(new BaseBean().getPropValue("doc_cooperate_edit_set","shareEdit")); + + if("1".equals(otherparams.get("iscooper")+"") && !"0".equals(shareEdit)){ + + Map userMap = new HashMap(); + + + String editLabel = SystemEnv.getHtmlLabelName(93,user.getLanguage()); + + String downloadlevelName = ""; + + int i = 1; + + for(Map data : shareList){ + if(i >= startSize && i < endSize){ + + //new BaseBean().writeLog("--------------------" + i); + if("1".equals(data.get("shareType"))){ + if(("1".equals(data.get("shareLevel")))){ + if(userMap.get(data.get("shareUserId")) == null){ + String permissionType = new DocCoopereateUtil().takePermission(new User(Util.getIntValue(data.get("shareUserId"))),docid+""); + if(DocCoopereateUtil.WRITE.equals(permissionType)){ + data.put("downloadlevelName",""); + data.put("shareRealType",editLabel); + userMap.put(data.get("shareUserId"),"1"); + } + }else{ + data.put("downloadlevelName",""); + data.put("shareRealType",editLabel); + } + }else{ + userMap.put(data.get("shareUserId"),"1"); + } + } + } + i++; + } + } + dataList.addAll(shareList); + + }catch(Exception e){ + } + return dataList; + } + + /** + * 是否有新增、删除按钮 + * */ + public Map canEdit(User user,int docid){ + Map apidatas = new HashMap(); + String hasBtn = "-1"; + String hasDelBtn = "-1"; + int userid=user.getUID(); + String logintype = user.getLogintype(); + String userSeclevel = user.getSeclevel(); + String userType = ""+user.getType(); + String userdepartment = ""+user.getUserDepartment(); + String usersubcomany = ""+user.getUserSubCompany1(); + String userInfo=logintype+"_"+userid+"_"+userSeclevel+"_"+userType+"_"+userdepartment+"_"+usersubcomany; + SpopForDoc sfd = new SpopForDoc(); + try{ + ArrayList PdocList = sfd.getDocOpratePopedom(""+docid,userInfo); + if (((String)PdocList.get(3)).equals("true")){ + RecordSet rs = new RecordSet(); + rs.executeQuery("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id=" + docid); + int isAllowModiMShare = 0; + int isAllowModiNMShare = 0; + if (rs.next()) { + isAllowModiMShare = Util.getIntValue(Util.null2String(rs.getString("allownModiMshareL")),0); + isAllowModiNMShare = Util.getIntValue(Util.null2String(rs.getString("shareable")),0); + } + if(isAllowModiNMShare==1){ + hasBtn="1"; + hasDelBtn="1"; + }else if(isAllowModiMShare==1){ + hasDelBtn="1"; + } + + } + }catch(Exception e){ + + } + + apidatas.put("hasAddBtn", hasBtn); + apidatas.put("hasDelBtn", hasDelBtn); + return apidatas; + } + + /** + * 批量调整共享 + * */ + public void doBatch(String docids,User user,String defaultshare,String nondefaultshare,String otherversion){ + + + RecordSet rs = new RecordSet(); + + + String docSql = docids.contains(",") ? (" in (" + docids + ")") : (" = " + docids); + if("1".equals(otherversion) && false){ // 处理历史版本文件 + rs.executeQuery("select t1.id from DocDetail t1 where exists " + + "(select 1 from DocDetail t2 where t1.doceditionid=t2.doceditionid and t2.id" + docSql + " and t2.doceditionid>0)"); + String editids = ""; + while(rs.next()){ + String id = rs.getString("id"); + if(("," + docids + ",").indexOf("," + id + ",") == -1){ + docids += "," + id; + editids += "," + id; + } + } + editids = editids.contains(",") ? editids.substring(1) : editids; + + if(!editids.isEmpty()){ + String copyColumn = "sharetype,seclevel,rolelevel,userid,subcompanyid,departmentid,roleid," + + "foralluser,sharedcrm,crmid,sharesource,isSecDefaultShare,creatordepartmentid,creatorsubcompanyid," + + "doccreatorid,orggroupid,downloadlevel,allmanagers,includesub,orgid,seclevelmax,joblevel," + + "jobdepartment,jobsubcompany,jobids"; + rs.executeUpdate("insert into DocShare(docid," + copyColumn + ") " + + "(select docid," + copyColumn + ")"); + } + } + + String sql = "delete from DocShare where docid " + docSql ; + + if("1".equals(defaultshare) && !"1".equals(nondefaultshare)){ + sql += " and isSecDefaultShare='1'"; + }else if(!"1".equals(defaultshare) && "1".equals(nondefaultshare)){ + sql += " and (isSecDefaultShare is null or isSecDefaultShare='' or isSecDefaultShare!='1')"; + } + rs.executeUpdate(sql); + + String ndocids = ""; + for(String docid : docids.split(",")){ + ndocids += ",-" + docid; + } + ndocids = ndocids.substring(1); + + docSql = ndocids.contains(",") ? (" in (" + ndocids + ")") : (" = " + ndocids); + sql = "update DocShare set docid=-docid where docid" + docSql; + rs.executeUpdate(sql); + + DocViewer dv = new DocViewer(); + for(String docid : docids.split(",")){ + try{ + dv.setDocShareByDoc(docid); + }catch(Exception e){ + + } + } + + } + + /** + * 删除共享 + * */ + public Map deleteShare(User user,int docid,String shareids){ + Map apidatas = new HashMap(); + + shareids = PatternUtil.trimSplit(shareids,","); + + if(!PatternUtil.isAllNumber(shareids)){ + apidatas.put("status", -1); + apidatas.put("api_status", false); + apidatas.put("msg", SystemEnv.getHtmlLabelName(500537,user.getLanguage()));//数据异常! + return apidatas; + } + + + String shareidSQL = shareids.contains(",") ? (" in (" + shareids + ")") : (" = " + shareids); + + RecordSet rs = new RecordSet(); + + DocViewer dv = new DocViewer(); + try{ + rs.execute("delete from DocShare where docid=" + docid + " and id " + shareidSQL); + dv.setDocShareByDoc(docid + ""); + apidatas.put("status", 1); + apidatas.put("api_status", true); + }catch(Exception e){ + apidatas.put("status", -1); + apidatas.put("api_status", false); + apidatas.put("msg", SystemEnv.getHtmlLabelName(83473,user.getLanguage()));// 删除失败! + rs.writeLog(e); + e.printStackTrace(); + } + + return apidatas; + } + + /** + * 删除所有共享 + * @author wangqs + * @params docid-文档id,delNow-是否立即删除,syncToDetail-是否同步shareinnerdoc + * */ + public void deleteAll(String docid,boolean delNow,boolean syncToDetail){ + RecordSet rs = new RecordSet(); + + String idStr = docid.contains(",") ? (" in (" + docid + ")") : (" = " + docid); + + if(delNow){ + rs.executeUpdate("delete from DocShare where docid" + idStr); + }else{ + rs.executeUpdate("update DocShare set docid=-docid where docid" + idStr); + } + if(syncToDetail){ + try{ + DocViewer dv = new DocViewer(); + for(String id : docid.split(",")){ + dv.setDocShareByDoc(id); + } + }catch(Exception e){ + } + } + } + + /** + * 删除非默认共享 + * @author wangqs + * @params docid-文档id,delNow-是否立即删除,syncToDetail-是否同步shareinnerdoc + * */ + public void deleteNonDefault(String docid,boolean delNow,boolean syncToDetail){ + RecordSet rs = new RecordSet(); + + String idStr = docid.contains(",") ? (" in (" + docid + ")") : (" = " + docid); + + if(delNow){ + rs.executeUpdate("delete from DocShare where docid" + idStr + " and " + + "(isSecDefaultShare is null or isSecDefaultShare='' or isSecDefaultShare='0')"); + }else{ + rs.executeUpdate("update DocShare set docid=-docid where docid" + idStr + " and " + + "(isSecDefaultShare is null or isSecDefaultShare='' or isSecDefaultShare='0')"); + } + if(syncToDetail){ + try{ + DocViewer dv = new DocViewer(); + for(String id : docid.split(",")){ + dv.setDocShareByDoc(id); + } + }catch(Exception e){ + } + } + } + + /** + * 删除默认共享 + * @author wangqs + * @params docid-文档id,delNow-是否立即删除,syncToDetail-是否同步shareinnerdoc + * */ + public void deleteDefault(String docid,boolean delNow,boolean syncToDetail){ + + String idStr = docid.contains(",") ? (" in (" + docid + ")") : (" = " + docid); + + RecordSet rs = new RecordSet(); + if(delNow){ + rs.executeUpdate("delete from DocShare where docid" + idStr + " and isSecDefaultShare='1'"); + }else{ + rs.executeUpdate("update DocShare set docid=-docid where docid" + idStr + " and isSecDefaultShare='1'"); + } + if(syncToDetail){ + try{ + DocViewer dv = new DocViewer(); + for(String id : docid.split(",")){ + dv.setDocShareByDoc(id); + } + }catch(Exception e){ + } + } + } + + + /** + * 获取权限 + * @author wangqs + * @params user-当前人,isBatch-是否是批量调整,docid-文档 + * */ + public Map getShareCondition(User user,boolean isBatch,String docid){ + return getShareCondition(user,isBatch,docid); + } + + /** + * 获取权限 + * @author wangqs + * @params user-当前人,isBatch-是否是批量调整,docid-文档,iscooper-是否是协同编辑 + * */ + public Map getShareCondition(User user,boolean isBatch,boolean iscooper,String docid){ + Map apidatas = new HashMap(); + + DocViewPermission dvps = new DocViewPermission(); + + //其他模块参数集 + Map levelMap = dvps.getShareLevel(Util.getIntValue(docid,0),user,false); + if(levelMap.get(DocViewPermission.CONTROL)||isBatch){ + sharelevel=3; + } + else{ + sharelevel=2; + } + + + int noDownload = 0; + int createUserType = 0; + RecordSet rs = new RecordSet(); + if(!isBatch){ + rs.executeQuery("select d2.noDownload,d1.usertype from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id=" + docid); + if(rs.next()){ + noDownload = Util.getIntValue(rs.getString("noDownload"),0); + createUserType = Util.getIntValue(rs.getString("usertype"),0); + } + } + + int isgoveproj = 0; + try{ + Util.getIntValue(IsGovProj.getPath(),0);//0:非政务系统,1:政务系统 + }catch(Exception e){ + } + + int language = user.getLanguage(); + List conditions = new ArrayList(); + + + if(iscooper){ + noDownload = 1; + sharelevel = 2; + } + + if(CooperativeUtilForDoc.isColla(Util.getIntValue(docid))){ + sharelevel = 2; + } + + //对象类型 + List options = new ArrayList(); + options.add(new SearchConditionOption(OBJ_TYPE_USER + "",SystemEnv.getHtmlLabelName(179,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_USER)); + options.add(new SearchConditionOption(OBJ_TYPE_SUB_COMPANY + "",SystemEnv.getHtmlLabelName(141,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_SUB_COMPANY)); + options.add(new SearchConditionOption(OBJ_TYPE_DEPARTMENT + "",SystemEnv.getHtmlLabelName(124,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_DEPARTMENT)); + options.add(new SearchConditionOption(OBJ_TYPE_POST + "",SystemEnv.getHtmlLabelName(6086,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_POST)); + options.add(new SearchConditionOption(OBJ_TYPE_ROLE + "",SystemEnv.getHtmlLabelName(122,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_ROLE)); + if(!new ManageDetachComInfo().appDetachDisableAll(user)){ + options.add(new SearchConditionOption(OBJ_TYPE_ALL + "",SystemEnv.getHtmlLabelName(1340,weaver.general.Util.getIntValue(language)),OBJ_TYPE_DEFAULT == OBJ_TYPE_ALL)); + } + options.add(new SearchConditionOption(OBJ_TYPE_GROUP + "",SystemEnv.getHtmlLabelName(24002,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_GROUP)); + if(isgoveproj==0){ + options.add(new SearchConditionOption(OBJ_TYPE_CUSTOMER + "",SystemEnv.getHtmlLabelName(18647,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CUSTOMER)); + options.add(new SearchConditionOption(OBJ_TYPE_CUSTOMER_TYPE + "",SystemEnv.getHtmlLabelName(1282,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CUSTOMER_TYPE)); + } + if (1 == createUserType){ + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_SELF + "",SystemEnv.getHtmlLabelName(15079,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_SELF)); + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_MANAGER + "",SystemEnv.getHtmlLabelName(18583,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_MANAGER)); + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_ALL_MANAGER + "",SystemEnv.getHtmlLabelName(385205,weaver.general.Util.getIntValue(language)),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_ALL_MANAGER)); + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_SUB_COMPANY + "",SystemEnv.getHtmlLabelName(18584,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_SUB_COMPANY)); + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_DEPARTMENT + "",SystemEnv.getHtmlLabelName(15081,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_DEPARTMENT)); + }else if(!isBatch){ + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_SELF_2 + "",SystemEnv.getHtmlLabelName(15079,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_SELF_2)); + options.add(new SearchConditionOption(OBJ_TYPE_CREATER_MANAGER_2 + "",SystemEnv.getHtmlLabelName(18583,language),OBJ_TYPE_DEFAULT == OBJ_TYPE_CREATER_MANAGER_2)); + + } + SearchConditionItem optionType = new SearchConditionItem(ConditionType.SELECT,SystemEnv.getHtmlLabelName(21956,language) + ,new String []{OBJ_TYPE}); + optionType.setOptions(options); + conditions.add(optionType); + + + Map dataMap = new HashMap(); + conditions.add(dataMap); + + + //人力资源 + List userOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_USER + "",userOptList); + List dataUserCondition = new ArrayList(); + SearchConditionItem userCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + userCondition.setViewAttr(3); + BrowserBean userBrowser = new BrowserBean(); + userBrowser.setType(BrowserType.USER_MULTI); + userBrowser.setViewAttr(3); + userBrowser.setTitle(SystemEnv.getHtmlLabelName(179,language)); + //开启了密级功能 + if(Util.getIntValue(docid,0)>0 && HrmClassifiedProtectionBiz.isOpenClassification()){ + String secretLevel=DocSecretLevelUtil.takeSecretLevelbyDocid(docid); + Map dataParams = new HashMap<>(); + dataParams.put("classification",secretLevel); + userBrowser.setDataParams(dataParams); + userBrowser.setCompleteParams(dataParams); + } + + userCondition.setBrowserConditionParam(userBrowser); + dataUserCondition.add(userCondition); + Object o = JSON.parseObject(JSON.toJSONString(dataUserCondition, SerializerFeature.DisableCircularReferenceDetect), List.class); + dataUserCondition = (List) o; + userOptList.add(dataUserCondition); + userOptList.add(getPermissionMap(language,noDownload)); + + new BaseBean().writeLog("<<>>"); + //分部 + List companyOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_SUB_COMPANY + "",companyOptList); + List dataCompanyCondition = new ArrayList(); + //SearchConditionItem companyCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + // new String []{OBJ_ID}); + //companyCondition.setValue(3); + //BrowserBean companyBrowser = new BrowserBean(); + //companyBrowser.setType(BrowserType.SUBCOMPANY_MULTI); + //companyBrowser.setViewAttr(3); + //companyBrowser.setTitle(SystemEnv.getHtmlLabelName(141,language)); + //companyCondition.setBrowserConditionParam(companyBrowser); + ConditionFactory conditionFactory = new ConditionFactory(user); + SearchConditionItem searchConditionItem=conditionFactory.createCondition(ConditionType.BROWSER, "141", "subcompany","194"); + searchConditionItem.setViewAttr(3); + searchConditionItem.getBrowserConditionParam().setViewAttr(3); + dataCompanyCondition.add(searchConditionItem); + dataCompanyCondition.add(getHasSub(language)); + companyOptList.add(dataCompanyCondition); + companyOptList.add(getShareLevel(language)); + companyOptList.add(getPermissionMap(language,noDownload)); + + + //部门 + List departmentOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_DEPARTMENT + "",departmentOptList); + List dataDepartmentCondition = new ArrayList(); + //SearchConditionItem departmentCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + // new String []{OBJ_ID}); + //departmentCondition.setViewAttr(3); + //BrowserBean departmentBrowser = new BrowserBean(); + //departmentBrowser.setType(BrowserType.DEPARTMENT_MULTI); + //departmentBrowser.setViewAttr(3); + //departmentBrowser.setTitle(SystemEnv.getHtmlLabelName(124,language)); + SearchConditionItem searchConditionItem2=conditionFactory.createCondition(ConditionType.BROWSER, "124", "department","57"); + searchConditionItem2.setViewAttr(3); + searchConditionItem2.getBrowserConditionParam().setViewAttr(3); + + //departmentCondition.setBrowserConditionParam(searchConditionItem); + dataDepartmentCondition.add(searchConditionItem2); + dataDepartmentCondition.add(getHasSub(language)); + departmentOptList.add(dataDepartmentCondition); + departmentOptList.add(getShareLevel(language)); + departmentOptList.add(getPermissionMap(language,noDownload)); + + //岗位 + List postOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_POST + "",postOptList); + List dataPostCondition = new ArrayList(); + SearchConditionItem postCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + postCondition.setViewAttr(3); + BrowserBean postBrowser = new BrowserBean(); + postBrowser.setType(BrowserType.POST_MULTI); + postBrowser.setViewAttr(3); + postBrowser.setTitle(SystemEnv.getHtmlLabelName(6086,language)); + postCondition.setBrowserConditionParam(postBrowser); + dataPostCondition.add(postCondition); + + List options3 = new ArrayList(); + options3.add(new SearchConditionOption(POST_LEVEL_ALL + "",SystemEnv.getHtmlLabelName(140,language),POST_LEVEL_ALL == POST_LEVEL_DEFAULT)); + options3.add(new SearchConditionOption(POST_LEVEL_SUB_COMPANY + "",SystemEnv.getHtmlLabelName(19437,language),POST_LEVEL_SUB_COMPANY == POST_LEVEL_DEFAULT)); + options3.add(new SearchConditionOption(POST_LEVEL_DEPARTMENT + "",SystemEnv.getHtmlLabelName(19438,language),POST_LEVEL_DEPARTMENT == POST_LEVEL_DEFAULT)); + List dataPostLevelCondition = new ArrayList(); + SearchConditionItem postLevelCondition = new SearchConditionItem(ConditionType.SELECT_LINKAGE,SystemEnv.getHtmlLabelName(28169,weaver.general.Util.getIntValue(language)), + new String []{POST_LEVEL}); + postLevelCondition.setOptions(options3); + + SearchConditionItem subcompany = new SearchConditionItem(ConditionType.BROWSER,"", + new String []{TARGET_OBJECT_ID}); + subcompany.setViewAttr(3); + BrowserBean companyBrowser_p = new BrowserBean(); + companyBrowser_p.setType(BrowserType.SUBCOMPANY_MULTI); + companyBrowser_p.setViewAttr(3); + companyBrowser_p.setTitle(SystemEnv.getHtmlLabelName(141,language)); + subcompany.setBrowserConditionParam(companyBrowser_p); + + SearchConditionItem department = new SearchConditionItem(ConditionType.BROWSER,"", + new String []{TARGET_OBJECT_ID}); + department.setViewAttr(3); + BrowserBean departmentBrowser_p = new BrowserBean(); + departmentBrowser_p.setType(BrowserType.DEPARTMENT_MULTI); + departmentBrowser_p.setViewAttr(3); + departmentBrowser_p.setTitle(SystemEnv.getHtmlLabelName(124,language)); + department.setBrowserConditionParam(departmentBrowser_p); + + Map targetObj = new HashMap(); + targetObj.put(POST_LEVEL_SUB_COMPANY + "", subcompany); + targetObj.put(POST_LEVEL_DEPARTMENT + "", department); + postLevelCondition.setSelectLinkageDatas(targetObj); + dataPostLevelCondition.add(postLevelCondition); + + + postOptList.add(dataPostCondition); + postOptList.add(dataPostLevelCondition); + postOptList.add(getPermissionMap(language,noDownload)); + + + //角色 + List roleOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_ROLE + "",roleOptList); + List dataRoleCondition = new ArrayList(); + SearchConditionItem roleCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + roleCondition.setViewAttr(3); + BrowserBean roleBrowser = new BrowserBean(); + roleBrowser.setType(BrowserType.ROLE_MULTI); + roleBrowser.setViewAttr(3); + roleBrowser.setTitle(SystemEnv.getHtmlLabelName(122,language)); + roleCondition.setBrowserConditionParam(roleBrowser); + dataRoleCondition.add(roleCondition); + + List options4 = new ArrayList(); + options4.add(new SearchConditionOption(ROLE_LEVEL_DEPARTMENT + "",SystemEnv.getHtmlLabelName(124,language),ROLE_LEVEL_DEPARTMENT == ROLE_LEVEL_DEFAULT)); + options4.add(new SearchConditionOption(ROLE_LEVEL_SUB_COMPANY + "",SystemEnv.getHtmlLabelName(141,language),ROLE_LEVEL_SUB_COMPANY == ROLE_LEVEL_DEFAULT)); + options4.add(new SearchConditionOption(ROLE_LEVEL_ALL + "",SystemEnv.getHtmlLabelName(140,language),ROLE_LEVEL_ALL == ROLE_LEVEL_DEFAULT)); + SearchConditionItem roleLevelCondition = new SearchConditionItem(ConditionType.SELECT,SystemEnv.getHtmlLabelName(139,language), + new String []{ROLE_LEVEL}); + roleLevelCondition.setOptions(options4); + dataRoleCondition.add(roleLevelCondition); + roleOptList.add(dataRoleCondition); + roleOptList.add(getShareLevel(language)); + roleOptList.add(getPermissionMap(language,noDownload)); + + + //所有人 + List allOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_ALL + "",allOptList); + allOptList.add(getShareLevel(language)); + allOptList.add(getPermissionMap(language,noDownload)); + + //群组 + List groupOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_GROUP + "",groupOptList); + List dataGroupCondition = new ArrayList(); + SearchConditionItem groupCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + groupCondition.setViewAttr(3); + BrowserBean groupBrowser = new BrowserBean(); + groupBrowser.setType(BrowserType.GROUP_MULTI); + groupBrowser.setViewAttr(3); + groupBrowser.setTitle(SystemEnv.getHtmlLabelName(1340,weaver.general.Util.getIntValue(language))); + groupBrowser.setTitle(SystemEnv.getHtmlLabelName(24002,language)); + groupCondition.setBrowserConditionParam(groupBrowser); + dataGroupCondition.add(groupCondition); + + groupOptList.add(dataGroupCondition); + groupOptList.add(getShareLevel(language)); + groupOptList.add(getPermissionMap(language,noDownload)); + + if(isgoveproj==0){ + //指定客户 + List customerOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CUSTOMER + "",customerOptList); + List dataCustomerCondition = new ArrayList(); + SearchConditionItem customerCondition = new SearchConditionItem(ConditionType.BROWSER,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + customerCondition.setViewAttr(3); + BrowserBean customerBrowser = new BrowserBean(); + customerBrowser.setType(BrowserType.CUSTOMER_MULTI); + customerBrowser.setViewAttr(3); + customerBrowser.setTitle(SystemEnv.getHtmlLabelName(136,language)); + customerCondition.setBrowserConditionParam(customerBrowser); + dataCustomerCondition.add(customerCondition); + customerOptList.add(dataCustomerCondition); + customerOptList.add(getPermissionMap(language,noDownload)); + + //客户类型 + List customerTypeOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CUSTOMER_TYPE + "",customerTypeOptList); + List dataCustomerTypeCondition = new ArrayList(); + SearchConditionItem customerTypeCondition = new SearchConditionItem(ConditionType.SELECT,SystemEnv.getHtmlLabelName(106,language), + new String []{OBJ_ID}); + List options_ct = new ArrayList(); + CustomerTypeComInfo ctci = new CustomerTypeComInfo(); + int i = 0; + while(ctci.next()){ + String curid=ctci.getCustomerTypeid(); + String curname=ctci.getCustomerTypename(); + String optionvalue="-"+curid; + options_ct.add(new SearchConditionOption(optionvalue,curname,i == 0)); + i++; + } + + customerTypeCondition.setOptions(options_ct); + dataCustomerTypeCondition.add(customerTypeCondition); + customerTypeOptList.add(dataCustomerTypeCondition); + customerTypeOptList.add(getShareLevel(language)); + customerTypeOptList.add(getPermissionMap(language,noDownload)); + + } + + if (1 == createUserType){ + //创建人本人 + List createrSelfOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CREATER_SELF + "",createrSelfOptList); + createrSelfOptList.add(getPermissionMap(language,noDownload)); + + List> dimensions = new ArrayList>(); + + CompanyVirtualComInfo cvci = new CompanyVirtualComInfo(); + if(cvci.getCompanyNum()>0){ + + // 行政组织 + Map dimension0 = new HashMap(); + dimension0.put("id", "0"); + dimension0.put("name", SystemEnv.getHtmlLabelName(83179,user.getLanguage())); + dimensions.add(dimension0); + + cvci.setTofirstRow(); + while(cvci.next()){ + Map dimension = new HashMap(); + dimensions.add(dimension); + dimension.put("id", cvci.getCompanyid()); + dimension.put("name", cvci.getVirtualType()); + } + } + + + //创建人直接上级 + List createrManagerOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CREATER_MANAGER + "",createrManagerOptList); + if(dimensions.size() > 0){ + createrManagerOptList.add(getDimensionMap(language,dimensions)); + } + createrManagerOptList.add(getPermissionMap(language,noDownload)); + + //创建人所有上级 + List createrAllManagerOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CREATER_ALL_MANAGER + "",createrAllManagerOptList); + if(dimensions.size() > 0){ + createrAllManagerOptList.add(getDimensionMap(language,dimensions)); + } + createrAllManagerOptList.add(getPermissionMap(language,noDownload)); + + //创建人本分部 + List createrSubCompanyOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CREATER_SUB_COMPANY + "",createrSubCompanyOptList); + if(dimensions.size() > 0){ + createrSubCompanyOptList.add(getDimensionMap(language,dimensions)); + } + createrSubCompanyOptList.add(getShareLevel(language)); + createrSubCompanyOptList.add(getPermissionMap(language,noDownload)); + + //创建人本部门 + List createrDepartmentOptList = new ArrayList(); + dataMap.put(OBJ_TYPE_CREATER_DEPARTMENT + "",createrDepartmentOptList); + if(dimensions.size() > 0){ + createrDepartmentOptList.add(getDimensionMap(language,dimensions)); + } + createrDepartmentOptList.add(getShareLevel(language)); + createrDepartmentOptList.add(getPermissionMap(language,noDownload)); + + }else{ + + } + + apidatas.put("conditions",conditions); + return apidatas; + } + + /** + * 权限 + * */ + public List getPermissionMap(int language,int noDownload){ + List options = new ArrayList(); + options.add(new SearchConditionOption(SEC_LEVEL_VIEW + "",SystemEnv.getHtmlLabelName(367,language),SEC_LEVEL_VIEW == SEC_LEVEL_DEFAULT,true)); + options.add(new SearchConditionOption(SEC_LEVEL_EDIT + "",SystemEnv.getHtmlLabelName(93,language),SEC_LEVEL_EDIT == SEC_LEVEL_DEFAULT,true)); + if(sharelevel>2){ + options.add(new SearchConditionOption(SEC_LEVEL_ALL + "",SystemEnv.getHtmlLabelName(17874,language),SEC_LEVEL_ALL == SEC_LEVEL_DEFAULT,true)); + } + + List dataPermissionCondition = new ArrayList(); + SearchConditionItem secLevelCondition = new SearchConditionItem(ConditionType.SELECT_LINKAGE,SystemEnv.getHtmlLabelName(385,language), + new String []{SEC_LEVEL}); + secLevelCondition.setOptions(options); + SearchConditionItem downloadCondition = new SearchConditionItem(ConditionType.CHECKBOX,SystemEnv.getHtmlLabelName(23733,language), + new String []{DOWNLOAD}); + if(noDownload == 1){ + downloadCondition.setViewAttr(1); + }else{ + downloadCondition.setValue("1"); + } + + Map selectLinkageDatas = new HashMap(); + if(noDownload != 1){ + selectLinkageDatas.put(SEC_LEVEL_VIEW + "", downloadCondition); + } + + secLevelCondition.setSelectLinkageDatas(selectLinkageDatas); + + dataPermissionCondition.add(secLevelCondition); + //dataPermissionCondition.add(downloadCondition); + return dataPermissionCondition; + } + + /** + * 含下级 + * */ + public SearchConditionItem getHasSub(int language){ + SearchConditionItem hasSub = new SearchConditionItem(ConditionType.CHECKBOX,SystemEnv.getHtmlLabelName(125963,weaver.general.Util.getIntValue(language)), + new String []{HAS_SUB}); + return hasSub; + } + + /** + * 维度 + * */ + public List getDimensionMap(int language,List> dimensions){ + List options = new ArrayList(); + + int i = 0; + for(Map map : dimensions){ + options.add(new SearchConditionOption(map.get("id"),map.get("name"),i == 0)); + i++; + } + + SearchConditionItem dimension = new SearchConditionItem(ConditionType.SELECT,SystemEnv.getHtmlLabelName(34069,language), + new String []{CREATER_ORGID}); + dimension.setOptions(options); + + List dimensionCondition = new ArrayList(); + dimensionCondition.add(dimension); + + return dimensionCondition; + } + + /** + * 安全级别 + * */ + public List getShareLevel( int language){ + List dataLevelCondition = new ArrayList(); + SearchConditionItem level = new SearchConditionItem(ConditionType.INPUT_INTERVAL,SystemEnv.getHtmlLabelName(683,language), + new String []{FROM_LEVEL,TO_LEVEL}); + List values = new ArrayList(); + values.add(SEC_LEVEL_FROM); + values.add(SEC_LEVEL_TO); + level.setValue(values); + dataLevelCondition.add(level); + return dataLevelCondition; + } + + /** + * 人力资源 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * userids-用户id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * download-是否可下载 + * */ + public void addShareForUser(User user,int docid,String userids,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + for(String userid : userids.split(",")){ + if(userid.isEmpty()) continue; + String sql = "insert into DocShare(docid,sharetype,sharelevel,userid,downloadlevel) values("+ + docid+","+OBJ_TYPE_USER+","+seclevel+","+userid+","+(download?1:0)+")"; + + rs.execute(sql); + } + + } + /** + * 分部 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * companyids-分部id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * containsSub-是否含下级 + * download-是否可下载 + * */ + public void addShareForSubCompany(User user,int docid,String companyids,int seclevel,int fromlevel,int tolevel,boolean containsSub,boolean download){ + RecordSet rs = new RecordSet(); + for(String companyid : companyids.split(",")){ + if(companyid.isEmpty()) continue; + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,subcompanyid,downloadlevel,seclevelmax,includesub) values("+ + docid+","+OBJ_TYPE_SUB_COMPANY+","+fromlevel+","+seclevel+"," + companyid + ","+(download?1:0)+","+tolevel+",'"+(containsSub ? 1 : 0)+"')"; + rs.execute(sql); + } + } + /** + * 部门 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * departmentids-部门id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * containsSub-是否含下级 + * download-是否可下载 + * */ + public void addShareForDepartment(User user,int docid,String departmentids,int seclevel,int fromlevel,int tolevel,boolean containsSub,boolean download){ + RecordSet rs = new RecordSet(); + for(String departmentid : departmentids.split(",")){ + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,departmentid,downloadlevel,seclevelmax,includesub) values("+ + docid+","+OBJ_TYPE_DEPARTMENT+","+fromlevel+","+seclevel+"," + departmentid + ","+(download?1:0)+","+tolevel+",'"+(containsSub ? 1 : 0)+"')"; + rs.execute(sql); + } + } + /** + * 岗位 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * postids-岗位id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * level-岗位级别(1-总部,2-指定分部,3-指定部门) + * tagetids-指定分部(部门)id集合 + * download-是否可下载 + * */ + public void addShareForPost(User user,int docid,String postids,int seclevel,int level,String tagetids,boolean download){ + RecordSet rs = new RecordSet(); + for(String postid : postids.split(",")){ + String columns = "docid,sharetype,sharelevel,downloadlevel,jobids,joblevel"; + String values = docid+","+OBJ_TYPE_POST+","+seclevel+","+(download?1:0)+",'"+postid+"','" + level + "'"; + + + if(level == POST_LEVEL_SUB_COMPANY){ + columns += ",jobsubcompany"; + }else if(level == POST_LEVEL_DEPARTMENT){ + columns += ",jobdepartment"; + } + + if(level == POST_LEVEL_ALL){ + rs.execute("insert into DocShare(" + columns + ") values(" + values + ")"); + }else{ + for(String targetid : tagetids.split(",")){ + if(targetid.isEmpty()) continue; + rs.execute("insert into DocShare(" + columns + ") values(" + values + ",'" + targetid + "')"); + } + } + } + } + + /** + * 角色 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * roleids-角色id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * level-级别(1-总部,2-分部,3-部门) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForRole(User user,int docid,String roleids,int seclevel,int level,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + for(String roleid : roleids.split(",")){ + if(roleid.isEmpty()) continue; + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,roleid,downloadlevel,seclevelmax,rolelevel) values("+ + docid+","+OBJ_TYPE_ROLE+","+fromlevel+","+seclevel+"," + roleid + ","+(download?1:0)+","+tolevel+"," + level + ")"; + rs.execute(sql); + } + } + + /** + * 群组 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * groupids-群组id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForGroup(User user,int docid,String groupids,int seclevel,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + for(String groupid : groupids.split(",")){ + if(groupid.isEmpty()) continue; + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,downloadlevel,seclevelmax,orgGroupId) values("+ + docid+","+OBJ_TYPE_GROUP+","+fromlevel+","+seclevel+","+(download?1:0)+","+tolevel+"," + groupid +")"; + rs.execute(sql); + } + } + + /** + * 所有人 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForAll(User user,int docid,int seclevel,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,downloadlevel,seclevelmax,foralluser) values("+ + docid+","+OBJ_TYPE_ALL+","+fromlevel+","+seclevel+","+(download?1:0)+","+tolevel+",1)"; + rs.execute(sql); + } + + + /** + * 指定客户 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * crmids-客户id集合,逗号隔开(被赋予权限对象) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * download-是否可下载 + * */ + public void addShareForCustomer(User user,int docid,String crmids,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + for(String crmid : crmids.split(",")){ + if(crmid.isEmpty()) continue; + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,crmid) values("+ + docid+","+OBJ_TYPE_CUSTOMER+","+seclevel+","+(download?1:0)+"," + crmid + ")"; + rs.execute(sql); + } + } + + /** + * 客户类型 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * crmtypeid - 负的客户类型id(-id) + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForCustomerType(User user,int docid,String crmtypeid,int seclevel,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,seclevel,sharelevel,downloadlevel,seclevelmax) values("+ + docid+",'"+crmtypeid+"',"+fromlevel+","+seclevel+","+(download?1:0)+","+tolevel+")"; + rs.execute(sql); + } + + /** + * 创建人本人 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * download-是否可下载 + * */ + public void addShareForCreaterSelf(User user,int docid,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,userid) select "+ + docid+","+OBJ_TYPE_CREATER_SELF+","+seclevel+","+(download?1:0)+",doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + /** + * 创建人本人(文档创建人为客户) + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * download-是否可下载 + * */ + public void addShareForCreaterSelf2(User user,int docid,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,userid) select "+ + docid+","+OBJ_TYPE_CREATER_SELF_2+","+seclevel+","+(download?1:0)+",doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + /** + * 创建人直接上级 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * orgid-维度 + * download-是否可下载 + * */ + public void addShareForCreaterManager(User user,int docid,String orgid,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,orgid,userid) select "+ + docid+","+OBJ_TYPE_CREATER_MANAGER+","+seclevel+","+(download?1:0)+",'" + orgid + "',doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + /** + * 创建人直接上级(文档创建人为客户) + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * orgid-维度 + * download-是否可下载 + * */ + public void addShareForCreaterManager2(User user,int docid,String orgid,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,orgid,userid) select "+ + docid+","+OBJ_TYPE_CREATER_MANAGER_2+","+seclevel+","+(download?1:0)+",'" + orgid + "',doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + /** + * 创建人所有上级 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * orgid-维度 + * download-是否可下载 + * */ + public void addShareForCreaterAllManager(User user,int docid,String orgid,int seclevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,downloadlevel,orgid,allmanagers,userid) select "+ + docid+","+OBJ_TYPE_CREATER_MANAGER+","+seclevel+","+(download?1:0)+",'" + orgid + "','1',doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + /** + * 创建人本分部 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * orgid-维度 + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForCreaterSubCompany(User user,int docid,String orgid,int seclevel,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,seclevel,seclevelmax,downloadlevel,orgid,userid) select "+ + docid+","+OBJ_TYPE_CREATER_SUB_COMPANY+","+seclevel+","+fromlevel+","+tolevel+","+(download?1:0)+",'" + orgid + "',doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + + /** + * 创建人本部门 + * @author wangqs + * @params user-当前用户 + * docid-文档id + * seclevel-权限(1-查看;2-编辑,3-完全控制) + * orgid-维度 + * fromlevel-最低安全级别 + * tolevel-最高安全级别 + * download-是否可下载 + * */ + public void addShareForCreaterDepartment(User user,int docid,String orgid,int seclevel,int fromlevel,int tolevel,boolean download){ + RecordSet rs = new RecordSet(); + String sql = "insert into DocShare(docid,sharetype,sharelevel,seclevel,seclevelmax,downloadlevel,orgid,userid) select "+ + docid+","+OBJ_TYPE_CREATER_DEPARTMENT+","+seclevel+","+fromlevel+","+tolevel+","+(download?1:0)+",'" + orgid + "',doccreaterid from DocDetail where id=" + docid; + rs.execute(sql); + } + + + public ArrayList> getShareList(int stringType, int docId, + String needCheckbox, int userLanguage,boolean isMobile) throws Exception{ + + + JobTitlesComInfo jbcom=new JobTitlesComInfo(); + CompanyVirtualComInfo cvc=new CompanyVirtualComInfo(); + ResourceComInfo rcc = new ResourceComInfo(); + KnowledgeTransMethod knotm = new KnowledgeTransMethod(); + SubCompanyComInfo scci = new SubCompanyComInfo(); + DepartmentComInfo dci = new DepartmentComInfo(); + RolesComInfo rci = new RolesComInfo(); + CustomerTypeComInfo ctci = new CustomerTypeComInfo(); + CustomerInfoComInfo cici = new CustomerInfoComInfo(); + HrmOrgGroupComInfo hogci = new HrmOrgGroupComInfo(); + + DocSptm ds = new DocSptm(); + + + ArrayList> returnList=new ArrayList>(); + //String shareTRString = ""; + String sqlStr = ""; + String isAllowModiMShare = "0"; + String isAllowModiNMShare = "0"; + + int hasVirtualCom = 0 ; + if(cvc.getCompanyNum()>0){ + hasVirtualCom=1; + } + RecordSet rs = new RecordSet(); + RecordSet rs2 = new RecordSet(); + + rs.executeQuery("select d2.allownModiMshareL,d2.allownModiMshareW,d2.shareable from docdetail d1,DocSecCategory d2 where d1.seccategory=d2.id and d1.id=?" + ,docId); + if (rs.next()) { + isAllowModiMShare = Util.null2String(rs.getString("allownModiMshareL")); + isAllowModiNMShare = Util.null2String(rs.getString("shareable")); + } + if (stringType == 1) { // 与创建人相关的默认共享 (内部) + sqlStr = "select * from docshare where 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.executeQuery(sqlStr,docId); + 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 allmanagers=Util.null2String(rs.getString("allmanagers")); + + String operategrouppar = userLanguage+"+1+"+orgid+"+"+hasVirtualCom; + String shareName = ""; + String shareRealName = ""; + String shareRealLevel = ""; + String shareRealType = ""; + String isDisabled = ""; + + + 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 "; + } + + String joblevel=Util.null2String(rs.getString("joblevel")); + String jobids=Util.null2String(rs.getString("jobids")); + + String includesubDes=SystemEnv.getHtmlLabelName(10000010,userLanguage); + if("1".equals(includesub)){ + includesubDes=SystemEnv.getHtmlLabelName(125963,userLanguage); + } + + switch (shareType) { + case 80: // 与创建人本人相关 + shareName = knotm.getShareTypeNew("1",operategrouppar); + shareRealName = ds.getHrmCard(shareUserId + ""); + if(isMobile){ + shareRealName = rcc.getResourcename(shareUserId + ""); + } + shareRealLevel = ""; + break; + case 81: // 与创建人直接上级相关 + + if (orgid == 0) { + if (allmanagers.equals("1")) { + shareName = knotm.getShareTypeNew("3", operategrouppar); + shareRealName = ds.getHrmCard(rcc.getManagersIDs("" + shareUserId)); + if(isMobile){ + shareRealName = ds.getHrmCard(rcc.getManagersIDs("" + shareUserId),isMobile); + } + 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 = ds.getHrmCard(rcc.getManagerID("" + shareUserId)); + if(isMobile){ + shareRealName = ds.getHrmCard(rcc.getManagerID("" + shareUserId),isMobile); + } + + } + } else if (orgid < 0) { + String allmtem = ""; + if (allmanagers.equals("1")) { + shareName = knotm.getShareTypeNew("3", operategrouppar); + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?", orgid, shareUserId); + if (rs2.next()) { + allmtem = rs2.getString("managerstr"); + shareRealName += ds.getHrmCard(allmtem + ""); + if(isMobile){ + shareRealName += ds.getHrmCard(allmtem + "",isMobile); + } + } + } else { + shareName = knotm.getShareTypeNew("2", operategrouppar); + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?", orgid, shareUserId); + if (rs2.next()) { + allmtem = rs2.getString("managerid"); + shareRealName = ds.getHrmCard(allmtem); + if(isMobile){ + shareRealName = ds.getHrmCard(allmtem,isMobile); + } + } + } + + 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; + if(!isMobile){ + //shareRealName += "(" + includesubDes + ")"; + shareRealName = ds.getCompanyLink(dci.getSubcompanyid1(departmentId),shareRealName); + + } + }else if(orgid<0){ + + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?",orgid,shareUserId); + if(rs2.next()){ + shareRealName = scci.getSubCompanyname(rs2.getString("subcompanyid")); + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + shareRealName += "(" + includesubDes + ")"; + shareRealName = ds.getCompanyLink(rs2.getString("subcompanyid"),shareRealName); + } + + } + } + if ("".equals(shareRealName)) + continue; + shareRealLevel =secLevel+"-"+seclevelmax ; + break; + case 85: // 与创建人部门相关 + shareName = knotm.getShareTypeNew("5",operategrouppar); + departmentId = 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; + if(!isMobile){ + //shareRealName += "(" + includesubDes + ")"; + shareRealName = ds.getDepartmentLink(departmentId,shareRealName); + } + + + }else if(orgid<0){ + + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?",orgid,shareUserId); + if(rs2.next()){ + shareRealName = dci.getDepartmentname(rs2.getString("departmentid")); + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + //shareRealName += "(" + includesubDes + ")"; + shareRealName = ds.getDepartmentLink(rs2.getString("departmentid"),shareRealName); + } + + } + + + } + if ("".equals(shareRealName)) + continue; + 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); + + + String downloadlevelName = ""; + if(shareLevel==1){ + downloadlevelName = downloadlevel == 1 ? SystemEnv.getHtmlLabelName(23733, userLanguage) :SystemEnv.getHtmlLabelName(23734, userLanguage); + } + if(isMobile){ + shareRealName = WaterMarkUtil.delHTMLTag(shareRealName); + } + Map ht=new HashMap(); + ht.put("shareId", ""+shareId); + ht.put("shareName", shareName); + ht.put("shareRealLevel", shareRealLevel); + ht.put("shareRealName", shareRealName); + ht.put("shareRealType", shareRealType); + ht.put("downloadlevelName", downloadlevelName); + ht.put("downloadlevel", ""+downloadlevel); + + 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=? " + + " and sharetype between 1 and 79 and isSecDefaultShare='1' and sharetype !=11 order by issecdefaultshare desc,sharetype"; + rs.executeQuery(sqlStr,docId); + while (rs.next()) { + 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 includesubDes=SystemEnv.getHtmlLabelName(10000010,userLanguage); + if(includesub==1){ + includesubDes=SystemEnv.getHtmlLabelName(125963,userLanguage); + } + + String shareName = ""; + String shareRealName = ""; + String shareRealLevel = ""; + String shareRealType = ""; + String isDisabled = ""; + + 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 "; + } + switch (shareType) { + case 1: // 人力资源 + shareName = SystemEnv.getHtmlLabelName(179, userLanguage); + shareRealName = rcc.getLastname("" + shareUserId); + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + shareRealName = ds.getHrmCard(shareUserId + ""); + } + + break; + case 2: // 分部 + int subcompanyId = rs.getInt("subcompanyid"); + shareName = SystemEnv.getHtmlLabelName(141, userLanguage); + shareRealName = scci.getSubCompanyname("" + subcompanyId)+"("+includesubDes+")"; + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + shareRealName = ds.getCompanyLink(subcompanyId + "",shareRealName); + } + shareRealLevel =secLevel+"-"+seclevelmax ; + break; + case 3: // 部门 + int departmentId = rs.getInt("departmentid"); + shareName = SystemEnv.getHtmlLabelName(18939, userLanguage); + shareRealName = dci.getDepartmentname("" + departmentId)+"("+includesubDes+")"; + String subcompanyid = dci.getSubcompanyid1("" + departmentId); + String subcompanyname = scci.getSubcompanyname(subcompanyid); + if(StringUtils.isNotBlank(subcompanyname)){ + shareRealName += "["+subcompanyname+"]" ; + } + + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + shareRealName = ds.getDepartmentLink(departmentId + "",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; + + 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; + 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)+"("+ds.getCompanyLink(jobsubcompany,scci.getSubCompanyname(jobsubcompany))+")"; + } + if(joblevel.equals("3")){ + shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19438,userLanguage)+"("+ds.getDepartmentLink(jobdepartment ,dci.getDepartmentname(jobdepartment))+")"; + } + + 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 */ + if(isMobile){ + shareRealName = WaterMarkUtil.delHTMLTag(shareRealName); + } + Map ht=new HashMap(); + 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=? " + + " and sharetype<0 and sharetype>-80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype"; + rs.executeQuery(sqlStr,docId); + 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 = ""; + + int shareId = rs.getInt("id"); + int shareType = rs.getInt("sharetype"); + 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 "; + } + + 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 */ + + Map ht=new HashMap(); + 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=? " + + " and sharetype between -82 and -80 and isSecDefaultShare='1' order by issecdefaultshare desc,sharetype"; + rs.executeQuery(sqlStr,docId); + while (rs.next()) { + String shareName = ""; + String shareRealName = ""; + String shareRealLevel = ""; + String shareRealType = ""; + String isDisabled = ""; + + 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 "; + } + switch (shareType) { + case -80: // 与创建人本人相关 + shareName = SystemEnv.getHtmlLabelName(15079, userLanguage); + shareRealName = cici.getCustomerInfoname("" + shareUserId); + if ("".equals(shareRealName)) + continue; + shareRealLevel = ""; + break; + case -81: // 与创建人经理相关 + shareName = SystemEnv.getHtmlLabelName(15080, userLanguage); + shareRealName = rcc.getLastname(cici.getCustomerInfomanager("" + shareUserId)); + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getHrmCard(cici.getCustomerInfomanager("" + shareUserId)); + } + 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 */ + + Map ht=new HashMap(); + 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=? " + + " and (isSecDefaultShare !='1' or isSecDefaultShare is null) and sharetype!=89 order by issecdefaultshare desc,sharetype"; + rs.executeQuery(sqlStr,docId); + 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 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 = ""; + + 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 "; + } + switch (shareType) { + case 1: // 人力资源 + shareName = SystemEnv.getHtmlLabelName(179, userLanguage); + shareRealName = rcc.getLastname("" + shareUserId); + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getHrmCard(shareUserId + ""); + } + break; + case 2: // 分部 + int subcompanyId = rs.getInt("subcompanyid"); + shareName = SystemEnv.getHtmlLabelName(141, userLanguage); + shareRealName = scci.getSubCompanyname("" + subcompanyId)+"("+includesubDes+")"; + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getCompanyLink(subcompanyId + "",shareRealName); + } + shareRealLevel =secLevel+"-"+seclevelmax ; + break; + case 3: // 部门 + int departmentId = rs.getInt("departmentid"); + shareName = SystemEnv.getHtmlLabelName(18939, userLanguage); + shareRealName = dci.getDepartmentname("" + departmentId)+"("+includesubDes+")"; + + String subcompanyid = dci.getSubcompanyid1("" + departmentId); + String subcompanyname = scci.getSubcompanyname(subcompanyid); + if(StringUtils.isNotBlank(subcompanyname)){ + shareRealName += "["+subcompanyname+"]" ; + } + + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getDepartmentLink(departmentId + "",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; + 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)+"("+ds.getCompanyLink(jobsubcompany,null)+")"; + } + if(joblevel.equals("3")){ + shareRealName = shareRealName + SystemEnv.getHtmlLabelName(19438,userLanguage)+"("+ds.getDepartmentLink(jobdepartment,null)+")"; + } + + if ("".equals(shareRealName)) + continue; + shareRealLevel =""; + break; + + + case -80: // 与创建人本人相关 + shareName = SystemEnv.getHtmlLabelName(15079, userLanguage); + shareRealName = cici.getCustomerInfoname("" + shareUserId); + if ("".equals(shareRealName)) + continue; + shareRealLevel = ""; + break; + case 80: // 与创建人本人相关 + shareName = knotm.getShareTypeNew("1",operategrouppar); + shareRealName = rcc.getLastname("" + shareUserId); + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getHrmCard(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; + if(isMobile){ + shareRealName = ds.getHrmCard(rcc.getManagersIDs(""+shareUserId),isMobile); + } + }else{ + shareName = knotm.getShareTypeNew("2",operategrouppar); + shareRealName = rcc.getLastname(rcc.getManagerID(""+ shareUserId)); + if ("".equals(shareRealName)) + continue; + if(isMobile){ + shareRealName = ds.getHrmCard(rcc.getManagerID(""+ shareUserId),isMobile); + } + } + }else if(orgid<0){ + String allmtem=""; + if(allmanagers.equals("1")){ + shareName = knotm.getShareTypeNew("3",operategrouppar); + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?",orgid,shareUserId); + if(rs2.next()){ + allmtem=rs2.getString("managerstr"); + shareRealName = ds.getHrmCard(allmtem); + if (isMobile){ + shareRealName = ds.getHrmCard(allmtem,isMobile); + } + } + }else{ + shareName = knotm.getShareTypeNew("2",operategrouppar); + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=",orgid,shareUserId); + if(rs2.next()){ + allmtem=rs2.getString("managerid"); + shareRealName = ds.getHrmCard(allmtem); + if (isMobile){ + shareRealName = ds.getHrmCard(allmtem,isMobile); + } + } + } + + + 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; + if (!isMobile){ + //shareRealName += "("+includesubDes+")"; + shareRealName = ds.getCompanyLink(dci.getSubcompanyid1(departmentId+""),shareRealName); + } + + }else if(orgid<0){ + + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?",orgid,shareUserId); + if(rs2.next()){ + shareRealName = scci.getSubCompanyname(rs2.getString("subcompanyid")); + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + //shareRealName += "("+includesubDes+")"; + shareRealName = ds.getCompanyLink(rs2.getString("subcompanyid"),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+""); + subcompanyid = rcc.getSubCompanyID("" + shareUserId); + subcompanyname = scci.getSubcompanyname(subcompanyid); + + if(orgid==0){ + shareRealName = departmentName+"["+subcompanyname+"]"; + if ("".equals(departmentName)) + continue; + if(!isMobile){ + //shareRealName += "("+includesubDes+")"; + shareRealName = ds.getDepartmentLink(departmentId + "",shareRealName); + } + + }else if(orgid<0){ + + rs2.executeQuery("select * from HrmResourceVirtual where virtualtype=? and resourceid=?",orgid,shareUserId); + if(rs2.next()){ + shareRealName = dci.getDepartmentname(rs2.getString("departmentid")); + if ("".equals(shareRealName)) + continue; + if(!isMobile){ + //shareRealName += "("+includesubDes+")"; + shareRealName = ds.getDepartmentLink(rs2.getString("departmentid"),shareRealName); + } + + } + + + } + if ("".equals(shareRealName)) + continue; + shareRealLevel = secLevel+"-"+seclevelmax ; + break; + + + case -81: // 与创建人经理相关 + shareName = SystemEnv.getHtmlLabelName(15080, userLanguage); + shareRealName = rcc.getLastname(rcc.getManagerID(""+ shareUserId)); + if ("".equals(shareRealName)) + continue; + if (!isMobile){ + shareRealName = ds.getHrmCard(rcc.getManagerID(""+ shareUserId)); + } + 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 */ + + Map ht=new HashMap(); + + ht.put("shareLevel",shareLevel+""); + ht.put("shareType",shareType+""); + ht.put("shareUserId",shareUserId+""); + + 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=? and (isSecDefaultShare!='1' or isSecDefaultShare is null) and sharetype=89 order by issecdefaultshare desc,sharetype"; + rs.executeQuery(sqlStr, docId); + 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 getMobileShareList(User user, int docid) { + Map apidatas = new HashMap(); + 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");//得到此分录下的文档最大可上传附件大小 + apidatas = getDocShare(user,docid,true); + apidatas.put("nodownload",nodownload); + return apidatas; + + } + /** + * 移动端系统文档权限列表 + * @params user + * @params docid + * @params + * @author sunch + * */ + private Map getDocShare(User user, int docid) { + return getDocShare(user,docid,false); + } + private Map getDocShare(User user, int docid, boolean isMobile) { + Map apidatas = new HashMap(); + ArrayList> dataList1=new ArrayList>(); + ArrayList> dataList2=new ArrayList>(); + try{ + dataList1.addAll(getShareList(1,docid,"true",user.getLanguage(),isMobile));//与创建人相关的默认共享 (内部) + dataList1.addAll(getShareList(2,docid,"true",user.getLanguage(),isMobile));//与创建人本人无关的默认共享 + dataList1.addAll(getShareList(3,docid,"true",user.getLanguage(),isMobile));//与客户相关的默认共享 + dataList1.addAll(getShareList(4,docid,"true",user.getLanguage(),isMobile));//创建人相关的默认共享(外部用户创建) + dataList2.addAll(getShareList(5,docid,"true",user.getLanguage(),isMobile));//非默认共享 + apidatas.put("defaultShareList",dataList1);//默认共享 + apidatas.put("nonDefaultShareList",dataList2);//非默认共享 + }catch(Exception e){ + + } + return apidatas; + } + /** + * 更新文档共享 + * @param userids 要更新的人员的id,多个id之间用逗号隔开 + * @param docids 要更新的文档id,多个id之间用逗号隔开 + * @param sharelevel 权限(1-查看;2-编辑,3-完全控制) + * @param download 是否可下载 + */ + public void updateShareForUser(String userids,String docids,int sharelevel,boolean download){ + RecordSet rs = new RecordSet(); + if(userids.isEmpty() || docids.isEmpty()) { + rs.writeLog("DocShareService updateShareForUser userids:"+userids+"--docids:"+docids); + return; + } + String sql = "update docshare set sharelevel="+sharelevel+",downloadlevel="+(download?1:0)+ + " where sharetype in (1,80,81,86) and docid in("+docids+") and userid in("+userids+")"; + rs.execute(sql); + //更新shareinnerdoc表 + for(String docid : docids.split(",")){ + try{ + DocViewer dv = new DocViewer(); + dv.setDocShareByDoc(docid + ""); + }catch(Exception e){ + rs.writeLog("DocShareService updateShareForUser userids:"+userids+"--docids:"+docids+"--docid:"+docid + +"--e:"+e.getMessage()); + } + } + } +} diff --git a/src/com/api/mobilemode/web/mobile/service/MobileCommonAction.java b/src/com/api/mobilemode/web/mobile/service/MobileCommonAction.java new file mode 100644 index 0000000..6f7eba1 --- /dev/null +++ b/src/com/api/mobilemode/web/mobile/service/MobileCommonAction.java @@ -0,0 +1,825 @@ +package com.api.mobilemode.web.mobile.service; + +import com.api.doc.detail.service.DocViewPermission; +import com.api.doc.detail.util.DocDownloadCheckUtil; +import com.api.doc.mobile.systemDoc.service.impl.ImageFileServiceImpl; +import com.api.doc.mobile.systemDoc.util.DocDetailUtil; +import com.api.mobilemode.util.BasicHandler; +import com.api.mobilemode.util.FieldHandler; +import com.api.mobilemode.web.mobile.ActionMapping; +import com.api.mobilemode.web.mobile.BaseMobileAction; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.cube.biz.CodeBuilder; +import com.engine.mobilemode.biz.json.MJSONObject; +import com.weaver.formmodel.constant.Constants; +import com.weaver.formmodel.data.manager.CustomSearchManager; +import com.weaver.formmodel.data.manager.FormInfoManager; +import com.weaver.formmodel.data.model.CustomSearch; +import com.weaver.formmodel.data.model.Formfield; +import com.weaver.formmodel.exception.MobileModeException; +import com.weaver.formmodel.mobile.MobileFileUpload; +import com.weaver.formmodel.mobile.mec.model.MobileExtendComponent; +import com.weaver.formmodel.mobile.mec.service.MECService; +import com.weaver.formmodel.mobile.security.SecurityUtil; +import com.weaver.formmodel.mobile.ui.manager.MobileAppUIManager; +import com.weaver.formmodel.mobile.ui.model.AppFormUI; +import com.weaver.formmodel.mobile.utils.AttachUtil; +import com.weaver.formmodel.mobile.utils.BrowserUtil; +import com.weaver.formmodel.mobile.utils.MobileCommonUtil; +import com.weaver.formmodel.mobile.utils.TextUtil; +import com.weaver.formmodel.util.NumberHelper; +import com.weaver.formmodel.util.SQLParseHelper; +import com.weaver.formmodel.util.StringHelper; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.file.FileUpload; +import weaver.file.ImageFileManager; +import weaver.formmode.dao.ModelInfoDao; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.StaticObj; +import weaver.general.Util; +import weaver.interfaces.datasource.DataSource; +import weaver.servicefiles.DataSourceXML; + +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URLDecoder; +import java.util.*; +import java.util.Map.Entry; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class MobileCommonAction extends BaseMobileAction{ + private static final long serialVersionUID = -268583277882617838L; + + public MobileCommonAction(HttpServletRequest request, HttpServletResponse response) { + super(request, response); + } + + /** + * 解析字段联动值 + * + * @return + */ + @ActionMapping(name="getFieldTriggerValue") + public List> getFieldTriggerValue(){ + RecordSet recordSet = new RecordSet(); + String datasource = Util.null2String(getParameter("datasourcename")); + String fromTable = ""; + String whereClause = ""; + int entryId = Util.getIntValue(getParameter("entryId"), -1); + String fromTableids = Util.null2String(getParameter("fromTable")); + java.util.List fromTableidsList = StringHelper.string2ArrayList(fromTableids, ","); + + String sql = "select a.entryid,a.whereclause,b.id,b.DataInputID,b.TableName,b.alias from modeDataInputmain a,modeDataInputtable b where a.id=b.datainputid and a.entryID=? order by b.id asc"; + recordSet.executeQuery(sql, entryId); + List textTypeFields = new ArrayList<>(); + RecordSet fieldRcord = new RecordSet(); + String DBtype = fieldRcord.getDBType(); + while(recordSet.next()){ + String dataInputtableid = recordSet.getString("id"); + if(!fromTableidsList.contains(dataInputtableid)) continue; + + String itemFromTable = recordSet.getString("tablename"); + String alias = Util.null2String(recordSet.getString("alias")); + fieldRcord.executeQuery("select a.fieldname from workflow_billfield a, workflow_bill b where a.billid = b.id and a.fielddbtype = 'text' and b.tablename = ?", itemFromTable); + while(fieldRcord.next()) { + String textFieldname = fieldRcord.getString("fieldname"); + if (!"".equals(alias)) { + textFieldname = (alias+"."+textFieldname); + } + textTypeFields.add(textFieldname); + } + if(!"".equals(alias)) itemFromTable += " " + alias; + fromTable += itemFromTable + ","; + whereClause = Util.null2String(recordSet.getString("whereclause")); + } + if(!"".equals(fromTable)) fromTable = fromTable.substring(0, fromTable.length()-1); + if("".equals(whereClause)) whereClause = " 1=1 "; + + //取值字段为查询条件 + JSONArray asArr; + String triggerConditionjsonArr = Util.null2String(getParameter("triggerConditionjsonArr")); + if(triggerConditionjsonArr.trim().equals("")){ + asArr = new JSONArray(); + }else{ + asArr = JSONArray.fromObject(triggerConditionjsonArr); + } + //赋值字为查询字段 + String regex = "^[\u4e00-\u9fa5 a-z0-9A-Z_]*$"; + String triggerJsonArr = Util.null2String(getParameter("triggerJsonArr")); + String searchField = ""; + if(triggerJsonArr.trim().equals("")){ + searchField = " * "; + }else{ + try{ + StringBuilder sb = new StringBuilder(); + JSONArray searchFieldArr = JSONArray.fromObject(triggerJsonArr); + for(int i = 0; i < searchFieldArr.size(); i++){ + JSONObject fieldObj = searchFieldArr.getJSONObject(i); + String fieldname = Util.null2String(fieldObj.get("name")); + String fieldid = Util.null2String(fieldObj.get("id")); + if(!Pattern.matches(regex, fieldid)) throw new MobileModeException(MobileCommonUtil.getHtmlLabelName(383777, user.getLanguage(), "fieldid参数不合法:"+fieldid)); + if(!Pattern.matches(regex, fieldname)) throw new MobileModeException(MobileCommonUtil.getHtmlLabelName(383777, user.getLanguage(), "fieldname参数不合法:"+fieldname)); + + String alias = Util.null2String(fieldObj.get("alias")); + sb.append("".equals(alias) ? fieldname : alias + "." + fieldname).append(" ").append(fieldid).append(","); + } + searchField = sb.substring(0, sb.length() - 1); + }catch(Exception e){ + searchField = " * "; + new BaseBean().writeLog(e.getMessage()); + } + } + + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("select ").append(searchField).append(" from ").append(fromTable).append(" where ").append(whereClause); + for(int i = 0;i < asArr.size();i++){ + JSONObject jsonObject = asArr.getJSONObject(i); + String alias = StringHelper.null2String(jsonObject.get("alias")); + String nameN = StringHelper.null2String(jsonObject.get("name")); + String conditions = StringHelper.null2String(jsonObject.get("conditions"));//联动条件设置 + if(StringHelper.isNotEmpty(alias)){ + nameN = alias + "." + nameN; + } + String valueN = StringHelper.null2String(jsonObject.get("value")); + if (textTypeFields.contains(nameN)) { + nameN = " cast(" + nameN + " as varchar)"; + } + if("".equals(valueN)){ + sqlBuilder.append(" and (").append(nameN).append("='' or ").append(nameN).append(" is null)"); + }else{ + if("1".equals(conditions)){//属于 + sqlBuilder.append(" and ").append(nameN).append(" in (").append(valueN).append(")"); + } else { + if(DBtype.equals("postgresql")){//当数据库类型为postgreSQL时单独处理 + sqlBuilder.append(" and ").append(nameN).append(" = '").append(valueN).append("'"); + }else{ + sqlBuilder.append(" and ").append(nameN).append(" like '").append(valueN).append("'"); + } + + } + } + } + sql = sqlBuilder.toString(); + Map fieldAliasMap = new HashMap<>(); + boolean flag = MobileCommonUtil.analysisPwd( sql, datasource, fieldAliasMap ); + List> resultList = new ArrayList>(); + if(!"".equals(datasource) && !DataSourceXML.SYS_LOCAL_POOLNAME.equals(datasource)){ + recordSet.executeSqlWithDataSource(sql, datasource); + }else{ + recordSet.execute(sql); + } + BaseBean zxlog = new BaseBean(); + zxlog.writeLog("----2022120701ZXCS----:"+sql+"|| DBtype:"+DBtype); + String[] columnNames = recordSet.getColumnName(); + while(recordSet.next()){ + Map resultMap = new HashMap(); + for(String columnName : columnNames){ + String columnValue = MobileCommonUtil.formatMultiLang(recordSet.getString(columnName), user); + if(flag && ("password".equals(columnName.toLowerCase() ) || Util.null2String(fieldAliasMap.get(columnName.toLowerCase())).toLowerCase().contains("password"))){ + columnValue = ""; + } + resultMap.put(columnName, columnValue); + } + resultList.add(resultMap); + } + return resultList; + } + + @ActionMapping(name="getCalendarCondition") + public String getCalendarCondition() { + String condition = ""; + String columns = Util.null2String(this.getRequest().getParameter("columns")); + if(!columns.equals("")){ + try { + columns = URLDecoder.decode(columns, "utf-8"); + JSONArray columnArr = JSONArray.fromObject(columns); + if(columnArr.size() > 0){ + //日期条件 + condition += "("; + for(int i = 0; i < columnArr.size(); i++){ + JSONObject columnObj = (JSONObject)columnArr.get(i); + String name = Util.null2String(columnObj.get("name")); + String value = Util.null2String(columnObj.get("value")); + String opt = Util.null2String(columnObj.get("opt")); + String fieldType = Util.null2String(columnObj.get("fieldType")); + boolean valueIsField = fieldType.equals("valueIsField"); + String optStr = ""; + String dateTimeValue = value; + if(opt.equals("equalTo")){ + //只有e8使用了 + optStr = "="; + }else if(opt.equals("lessThanEqualTo")){ + optStr = "<="; + //时间日期字段或者来源为sql时type为"" + if ((fieldType.equals("290") || fieldType.equals("")) && !valueIsField){ + dateTimeValue += " 23:59:59"; + } + }else if(opt.equals("greaterThanEqualTo")){ + optStr = ">="; + //数据库比较字符串大小是一个一个字符比较的,因此2019-12-12是小于2019-12-12 00:00:00的。此处只对时间日期类型处理即可。 + if (fieldType.equals("290")){ + dateTimeValue += " 00:00:00"; + } + } + String singleMark = valueIsField ? "" : "'"; + condition += name + optStr + singleMark + dateTimeValue + singleMark; + if(i != (columnArr.size() - 1)){ + condition += " and "; + } + } + condition += ")"; + condition = SecurityUtil.encrypt(condition); + } + } catch (Exception e) { + writeLog(e); + } + } + + return condition; + } + + + + @ActionMapping(name="getImgMeta", returnKey="datas") + public JSONArray getImgMeta() throws Exception{ + JSONArray datas = new JSONArray(); + String items = Util.null2String(getParameter("items")).trim(); + JSONArray imgArr = new JSONArray(); + if(StringHelper.isNotEmpty(items)){ + try{ + imgArr = JSONArray.fromObject(items); + }catch(Exception e){ + e.printStackTrace(); + } + } + int size = imgArr.size(); + for(int i = 0; i < size; i++){ + JSONObject imgObj = imgArr.getJSONObject(i); + int index = Util.getIntValue(Util.null2String(imgObj.get("index"))); + String imgPath = Util.null2String(imgObj.get("src")); + if(imgPath.trim().equals("")){ + continue; + } + + String fileid = ""; + boolean isID = false; + if(imgPath.indexOf("/weaver/weaver.file.FileDownload?fileid=") != -1){ + fileid = MobileCommonUtil.getParamInUrl(imgPath, "fileid"); + isID = true; + }else if(imgPath.indexOf("/mobile/plugin/Download.jsp?sessionkey=") != -1){ + fileid = MobileCommonUtil.getParamInUrl(imgPath, "url"); + isID = true; + }else if(imgPath.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")){ + fileid = imgPath; + imgPath = "/weaver/weaver.file.FileDownload?fileid=" + fileid; + isID = true; + } + boolean isUrl = !isID && !imgPath.equals(""); + + InputStream inStream = null; + if(isID){ + fileid = DocDownloadCheckUtil.getDownloadfileidstr(fileid); + ImageFileManager fileManager = new ImageFileManager(); + fileManager.getImageFileInfoById(Util.getIntValue(fileid)); + String fileType = fileManager.getImageFileType(); + if(!fileType.contains("image")){ //过滤掉不是图片的附件 + continue; + } + inStream = ImageFileManager.getInputStreamById(Util.getIntValue(fileid)); + }else if(isUrl){ + String realPath = getRequest().getSession().getServletContext().getRealPath(imgPath); + File file = new File(realPath); + if(file.exists() && file.isFile()){ + inStream = new BufferedInputStream(new FileInputStream(file)); + } + } + if (imgPath != null && imgPath.startsWith("/") && !imgPath.startsWith(weaver.general.GCONST.getContextPath())) { + imgPath = weaver.general.GCONST.getContextPath() + imgPath; + } + + JSONObject d = new JSONObject(); + d.put("src", imgPath); + d.put("w", "200"); //如果是外网图片或者资源不存在,需设置默认高度和宽度,否则PhotoSwipejs会加载异常 + d.put("h", "200"); + if(inStream != null){ + try{ + + /*使用ByteArrayOutputStream读取inStream,相当于缓存复制一份inStream。下面用的时候不能因为try中的代码干扰catch中的代码*/ + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len; + while ((len = inStream.read(buffer)) > -1 ) { + byteArrayOutputStream.write(buffer, 0, len); + } + byteArrayOutputStream.flush(); + + BufferedImage inputBufImage = null; + try{ + inputBufImage = ImageIO.read(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())); + }catch(Exception ex){ + ex.printStackTrace(); + } + + int width = inputBufImage.getWidth(); + int height = inputBufImage.getHeight(); + + d.put("w", width); + d.put("h", height); + }catch(Exception ex){ + //如果IO流对应的文件不是图片,文件流获取图片信息会失败,需要捕获该异常 + ex.printStackTrace(); + } + } + d.put("index", index); + datas.add(d); + + } + return datas; + } + + @ActionMapping(name="runSQL") + public JSONObject runSQL() { + JSONObject result = new JSONObject(); + FileUpload fileUpload = new MobileFileUpload(this.getRequest(), "UTF-8", false); + + String datasource = Util.null2String(fileUpload.getParameter("datasource")); + datasource = ("".equals(datasource)) ? null : datasource; + + String sql = Util.null2String(fileUpload.getParameter("content")); + sql = SecurityUtil.decrypt(sql); + if(!MobileCommonUtil.isSafeSql(sql, datasource)){//sql不安全 + result.put("status", "0"); + result.put("result", "false"); + return result; + } + + sql = BasicHandler.replaceVariables(sql, user, pageParam); + sql = BasicHandler.replaceServerVariables(sql); + + String tmpSQL = sql.toLowerCase().trim(); + boolean isNotQuery = tmpSQL.startsWith("insert") || tmpSQL.startsWith("update") || tmpSQL.startsWith("delete"); + + String sqlParams = MobileCommonUtil.decompressByLZ(Util.null2String(fileUpload.getParameter("sqlParams"))); + JSONArray sqlParamArray = StringHelper.isEmpty(sqlParams) ? new JSONArray() : JSONArray.fromObject(sqlParams); + + Object[] paramArr = new Object[sqlParamArray.size()]; + for(int i = 0; i < sqlParamArray.size(); i++){ + Object p = sqlParamArray.get(i); + if(p instanceof String){ + p = TextUtil.escapeHtml((String)p); + } + paramArr[i] = p; + } + + /*处理in的情况,方便前台调用*/ + String inStr = " in (?)"; + int inIndex = -1; + while((inIndex = sql.indexOf(inStr)) != -1){ + String beforeStr = sql.substring(0, inIndex); + String currStr = sql.substring(inIndex, inIndex + inStr.length()); + String afterStr = sql.substring(inIndex + inStr.length(), sql.length()); + + int countOfBefore = (beforeStr.length() - beforeStr.replace("?", "").length()); + Object currValue = paramArr[countOfBefore]; + currStr = currStr.replace("?", Util.null2String(currValue)); + paramArr = MobileCommonUtil.deleteArrayElement(paramArr, countOfBefore); + + sql = beforeStr + currStr + afterStr; + } + + Map fieldAliasMap = new HashMap<>(); + RecordSet rs = new RecordSet(); + boolean flag = MobileCommonUtil.analysisPwd(sql, datasource, fieldAliasMap); + + /*针对查询增加分页限制*/ + if(!isNotQuery){ +// String dbType = rs.getDBType(datasource); + String dbType = ""; + if (StringUtils.isBlank(datasource)||DataSourceXML.SYS_LOCAL_POOLNAME.equals(datasource)) { + dbType = rs.getDBType(); + } else { + DataSource datasource2 = (DataSource) StaticObj.getServiceByFullname("datasource."+datasource, DataSource.class); + dbType = datasource2.getType(); + } + new BaseBean().writeLog("===dbType2:"+dbType); + + if("oracle".equalsIgnoreCase(dbType)){ + sql = "select T.* from ("+sql+") T where rownum <= 100"; + }else if("mysql".equalsIgnoreCase(dbType)){ + if(!sql.toLowerCase().contains(" limit ")){ + sql = sql + " limit 100"; + } + } + else if("postgresql".equalsIgnoreCase(dbType)){ + if(!sql.toLowerCase().contains(" limit ")){ + sql = sql + " limit 100"; + } + } + else if("db2".equalsIgnoreCase(dbType)){ + if(!sql.toLowerCase().contains(" fetch first ")){ + sql = "select T.* from ("+sql+") T fetch first 100 rows only"; + } + } + else if ("sqlserver".equalsIgnoreCase(dbType)) { + //解析sql + int selectIndex = sql.toLowerCase().indexOf("select "); + int fromIndex = sql.toLowerCase().indexOf(" from"); + if(fromIndex > 0){ + List sqlParts = SQLParseHelper.formatAndSplit(sql, datasource); + Optional orderByOpt = sqlParts.stream().filter(s -> s.toLowerCase().indexOf("order by") == 0).findFirst(); + String orderBy = orderByOpt.isPresent() ? orderByOpt.get() : ""; + int topIndex = sql.substring(selectIndex, fromIndex).toLowerCase().indexOf(" top "); + if (StringHelper.isNotEmpty(orderBy) && topIndex == -1) { + //如果最外层sql有 order by且无top关键字,此处对sql进行处理加上 Top 100 + sql = "select top 100 "+sql.substring(6); + } else { + sql = "select top 100 T.* from ("+sql+") T"; + } + } + }else if("informix".equalsIgnoreCase(dbType)){ + sql = " select T.* from ("+sql+") T limit 100 "; + }else { + sql = "select top 100 T.* from ("+sql+") T"; + } + } + new BaseBean().writeLog("===sql:"+sql); + + boolean isSuccess = rs.executeSql(sql, !isNotQuery, datasource, paramArr); + + result.put("status", isSuccess ? "1" : "0"); + if(isNotQuery){ + result.put("result", isSuccess); + }else{ + List> resultList = new ArrayList>(); + String[] columnNames = rs.getColumnName(); + while(rs.next()){ + Map resultMap = new HashMap(); + for(String columnName : columnNames){ + String columnValue = MobileCommonUtil.formatMultiLang(rs.getString(columnName), user); + String columnNameLower = columnName.toLowerCase(); + String colrmnNameUpper = columnName.toUpperCase(); + if(flag && ("password".equals(columnName. toLowerCase() ) || Util.null2String(fieldAliasMap.get(columnName.toLowerCase())).toLowerCase().contains("password"))){ + columnValue = ""; + } + resultMap.put(columnName, columnValue); + if(columnName.equals(columnNameLower)){ + resultMap.put(colrmnNameUpper, columnValue); + }else if(columnName.equals(colrmnNameUpper)){ + resultMap.put(columnNameLower, columnValue); + }else{ + resultMap.put(colrmnNameUpper, columnValue); + resultMap.put(columnNameLower, columnValue); + } + } + resultList.add(resultMap); + } + result.put("result", JSONArray.fromObject(resultList)); + } + return result; + } + + @ActionMapping(name="getCustomSearchFieldMeta") + public MJSONObject getCustomSearchFieldMeta() throws Exception{ + MJSONObject resultObj = new MJSONObject(); + MobileExtendComponent mecObj = getMecObjFromRequest(); + JSONArray asFields = (JSONArray) mecObj.getMecparam("advancedSearchColumns"); + JSONObject sourceData = (JSONObject) mecObj.getMecparam("sourceData"); + int sourceType = Util.getIntValue(Util.null2String(sourceData.get("sourceType")), 1); + if(sourceType != 1 && asFields != null && asFields.size() > 0){ + for(int i = 0; i < asFields.size(); i++){ + JSONObject searchFieldObj = asFields.getJSONObject(i); + String id = Util.null2String(searchFieldObj.get("id")); + JSONObject customFieldJson = (JSONObject) searchFieldObj.get("fieldJson"); + int fieldtype = Util.getIntValue(Util.null2String(customFieldJson.get("fieldtype"))); + int dataType = Util.getIntValue(Util.null2String(customFieldJson.get("sourcetype"))); + if(fieldtype == 5 && dataType == 2){ + String datasource = Util.null2String(customFieldJson.get("datasource")); + String sql = Util.null2String(customFieldJson.get("sql")); + sql = BasicHandler.replaceVariables(sql, user, pageParam); + RecordSet rs = new RecordSet(); + boolean isSuccess = false; + if (!"".equals(datasource) && !DataSourceXML.SYS_LOCAL_POOLNAME.equals(datasource)) { + isSuccess = rs.executeQueryWithDatasource(sql, datasource); + } else { + isSuccess = rs.executeQuery(sql); + } + if(isSuccess){ + JSONArray fieldDatas = new JSONArray(); + List columnNames = Arrays.asList(rs.getColumnName()); + while(rs.next()){ + JSONObject jsonObj = new JSONObject(); + String name; + String value; + if(columnNames.contains("name")){ + name = rs.getString("name"); + }else{ + name = rs.getString(1); + } + if(columnNames.contains("value")){ + value = rs.getString("value"); + }else{ + value = rs.getString(2); + } + + jsonObj.put("selectname", MobileCommonUtil.formatMultiLang(name, user)); + jsonObj.put("selectvalue", value); + fieldDatas.add(jsonObj); + } + resultObj.put(id, fieldDatas); + } + } + } + } + return resultObj; + } + + @ActionMapping(name="getSearchFieldMeta", returnKey="datas") + public JSONArray getSearchFieldMeta() throws Exception{ + JSONArray fieldMetaArr = new JSONArray(); + + String browser = Util.null2String(getParameter("browser")); + if(StringHelper.isNotEmpty(browser)){// 浏览框高级搜索 + List formFields = BrowserUtil.getCubeBrowserSearchField(browser, user.getLanguage()); + formFields.forEach(f -> { + fieldMetaArr.add(FieldHandler.parseFormfieldForSearch("", f, user)); + }); + return fieldMetaArr; + } + + String id = Util.null2String(getParameter("id")); + int searchid = Util.getIntValue(getParameter("searchid")); + JSONArray asConfigArr = new JSONArray(); + int formid = 0; + if(searchid != -1){ + try{ + String advancedSearchContent = Util.null2String(getParameter("conditions")).trim(); + asConfigArr = JSONArray.fromObject(advancedSearchContent); + CustomSearchManager searchManager = CustomSearchManager.getInstance(); + CustomSearch customSearch = searchManager.getCustomSearch(searchid); + formid = customSearch.getFormid(); + }catch(Exception e){ + e.printStackTrace(); + } + }else{ + MECService mecService = new MECService(); + MobileExtendComponent mecObj = mecService.getMecById(id); + int source = Util.getIntValue(Util.null2String(mecObj.getMecparam("source"))); + MobileAppUIManager mobileAppUIManager = MobileAppUIManager.getInstance(); + AppFormUI appFormUI = mobileAppUIManager.getById(source); + String advancedSearchContent = Util.null2String(mecObj.getMecparam("advancedSearchContent")).trim(); + asConfigArr = JSONArray.fromObject(advancedSearchContent); + if(appFormUI != null && !advancedSearchContent.equals("")){ + formid = appFormUI.getFormId(); + } + } + if(formid != 0){ + Map fieldMap = FormInfoManager.getInstance().getFieldMap(formid); + Map childFieldMap = new HashMap<>(); + for (int i = 0; i < asConfigArr.size(); i++) { + JSONObject asConfigObj = (JSONObject)asConfigArr.get(i); + int fid = Util.getIntValue(Util.null2String(asConfigObj.get("fieldid"))); + Formfield fd = fieldMap.get(fid); + String htmltype = fd.getFieldhtmltype(); + if ("5".equals(htmltype)) { + int fieldid = fd.getId(); + Integer childfieldid = fd.getChildfieldid(); + if (childfieldid != null && childfieldid > 0) { + childFieldMap.put(childfieldid, fieldid); + } + } + } + for(int i = 0; i < asConfigArr.size(); i++){ + JSONObject asConfigObj = (JSONObject)asConfigArr.get(i); + String fieldname = Util.null2String(asConfigObj.get("field")); + int fid = Util.getIntValue(Util.null2String(asConfigObj.get("fieldid"))); + Formfield formfield = fieldMap.get(fid); + if(formfield == null){//兼容老数据 + for(Entry entry : fieldMap.entrySet()){ + Formfield fd = entry.getValue(); + String currfield = fd.getFieldname(); + if(StringHelper.isNotEmpty(fd.getDetailtable())){ + currfield = Constants.DETAILTABLE_ALIAS + "." + currfield; + } + if(fieldname.equalsIgnoreCase(currfield)){ + formfield = fd; + break; + } + } + } + if(formfield == null){ //字段匹配不到 + continue; + } + + formfield.setLabelName(Util.null2String(asConfigObj.get("showname"))); + fieldMetaArr.add(FieldHandler.parseFormfieldForSearch(String.valueOf(searchid), formfield, childFieldMap, user)); + } + } + return fieldMetaArr; + } + + @ActionMapping(name="selectChange", returnKey="datas") + protected JSONArray getChildSelectValue(){ + JSONArray result = new JSONArray(); + + int fieldid = Util.getIntValue(getParameter("fieldid")); + int childfieldid = Util.getIntValue(getParameter("childfieldid")); + String selectvalue = Util.null2String(getParameter("selectvalue")); + if(fieldid != -1 && childfieldid != -1 && StringHelper.isNotEmpty(selectvalue)){ + RecordSet rs = new RecordSet(); + String sql = ""; + sql = "select childitemid from workflow_selectitem where fieldid="+fieldid+" and isbill=1 and selectvalue="+selectvalue; + rs.execute(sql); + if(rs.next()){ + String childitemid = Util.null2String(rs.getString("childitemid")); + if(!"".equals(childitemid.trim())){ + if(!"".equals(childitemid)){ + if(childitemid.indexOf(",")==0){ + childitemid = childitemid.substring(1); + } + if(childitemid.endsWith(",")){ + childitemid = childitemid.substring(0, childitemid.length()-1); + } + sql = "select id, selectvalue, selectname, listorder from workflow_selectitem where fieldid="+childfieldid+" and isbill=1 and selectvalue in ("+childitemid+") and ( cancel!=1 or cancel is null) order by listorder, id asc"; + rs.execute(sql); + while(rs.next()){ + String selectvalue_tmp = Util.null2String(rs.getString("selectvalue")); + String selectname_tmp = Util.toScreen(rs.getString("selectname"), 7); + JSONObject selectOption=new JSONObject(); + selectOption.put("value",selectvalue_tmp); + selectOption.put("text", MobileCommonUtil.formatMultiLang(selectname_tmp, user)); + result.add(selectOption); + } + } + } + } + } + + return result; + } + + + @ActionMapping(name="getUserMecConfig") + public JSONObject getUserMecConfig(){ + JSONObject result = new JSONObject(); + result.put("status", "0"); + + String mecid = Util.null2String(getParameter("mecid")); + if(StringHelper.isNotEmpty(mecid)){ + RecordSet rs = new RecordSet(); + String sql = ""; + sql = "select config from MobilemodeUserMecConfig where userid = ? and mecid = ? "; + rs.executeQuery(sql, user.getUID(), mecid); + if(rs.next()){ + result.put("status", "1"); + result.put("result", Util.null2String(rs.getString("config"))); + } + } + + return result; + } + + @ActionMapping(name="setUserMecConfig") + public JSONObject setUserMecConfig(){ + JSONObject result = new JSONObject(); + FileUpload fu = new MobileFileUpload(this.getRequest(), "UTF-8", false); + + String mecid = Util.null2String(fu.getParameter("mecid")); + String config = Util.null2String(fu.getParameter("config")); + boolean isSuccess = false; + if(StringHelper.isNotEmpty(mecid)){ + RecordSet rs = new RecordSet(); + String sql = ""; + sql = "select id from MobilemodeUserMecConfig where userid = ? and mecid = ? "; + rs.executeQuery(sql, user.getUID(), mecid); + if(rs.next()){ + isSuccess = rs.executeUpdate("update MobilemodeUserMecConfig set config = ? where id = ? ", config, Util.null2String(rs.getString("id"))); + }else{ + isSuccess = rs.executeUpdate("insert into MobilemodeUserMecConfig(mecid, userid, config) values(?,?,?)", mecid, user.getUID(), config); + } + } + + result.put("success", isSuccess); + return result; + } + + @ActionMapping(name="encrypt") + protected String encrypt() { + String content = Util.null2String(getParameter("content")); + boolean unEncodeWhenFirewallDisabled = Util.null2String(getParameter("unEncodeWhenFirewallDisabled")).equals("true"); + return MobileCommonUtil.xssEncode(content, !unEncodeWhenFirewallDisabled); + } + + @ActionMapping(name="addFormmodeDataShare") + protected void addFormmodeDataShare() { + int modelid = NumberHelper.getIntegerValue(getParameter("modelid"), -1); + int billid = NumberHelper.getIntegerValue(getParameter("billid"), -1); + if(modelid > 0 && billid > 0){ + + int userid = user.getUID(); + + ModelInfoDao modelInfoDao = new ModelInfoDao(); + int formid = modelInfoDao.getFormInfoIdByModelId(modelid); + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + CodeBuilder cbuild = new CodeBuilder(modelid); + cbuild.getModeCodeStr(formid, billid);//生成编号 + modeRightInfo.setNewRight(true); + modeRightInfo.editModeDataShare(userid, modelid, billid);//新建的时候添加共享 + } + } + + @ActionMapping(name="parseVar") + protected JSONObject parseVar() { + FileUpload fileUpload = new MobileFileUpload(this.getRequest(), "UTF-8", false); + String requestParam = Util.null2String(fileUpload.getParameter("requestmap")); + JSONObject requestmap = JSONObject.fromObject(requestParam); + for(Object key : requestmap.keySet()){ + String source = Util.null2String(requestmap.get(key)); + String target = BasicHandler.replaceWithVarParser(source, user); + requestmap.put(key, target); + } + return requestmap; + } + + @ActionMapping(name="getImagesByDocids") + protected Map> getImagesByDocids() { + String docids = Util.null2String(getParameter("docids")); + return AttachUtil.getAllImagesByDocids(docids); + } + + /** + * 获取请求URL的域名或IP与端口 + * @return + */ + @ActionMapping(name="getRequestURL", returnKey="ipaddr") + protected String getRequestURL() { + URI uri = URI.create(getRequest().getRequestURL().toString()); + try { + uri = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); + } catch (URISyntaxException e) { + return ""; + } + return uri.toString(); + } + + @ActionMapping(name="checkCubeReply", returnKey="enable") + protected boolean isENFormmodeReply() { + RecordSet rs = new RecordSet(); + rs.execute("select isEnFormmodeReply from formEngineSet"); + if(rs.next()){ + return "1".equals(rs.getString("isEnFormmodeReply")); + } + return false; + } + + /** + * 附件下载的在钉钉环境会单开浏览器导致拿不到用户无法下载 + * + * @return + */ + @ActionMapping(name="getFileDownloadParams") + protected Map getFileDownloadDDCode(){ + String fileidStr = Util.null2String(getRequest().getParameter("fileid"), ""); + int fileid = -1; + if(fileidStr.length()<11){ + fileid = Util.getIntValue(fileidStr); + }else{ + fileid = DocDownloadCheckUtil.getDownloadfileid(fileidStr); + } + + int docid = AttachUtil.convertFileIdToDocid(fileid); + + DocViewPermission docViewPermission = new DocViewPermission(); + Map rightMap= docViewPermission.getShareLevel(docid,user,false); + boolean canReader = rightMap.get(DocViewPermission.READ); + + if(canReader || docid == -1){ + Map resultMap = ParamUtil.request2Map(getRequest()); + ImageFileServiceImpl imageFileService = ServiceUtil.getService(ImageFileServiceImpl.class, user); + Map result = imageFileService.getMobileDownloadParams(fileid, "", resultMap, user); + return result; + }else{ + throw new MobileModeException(MobileCommonUtil.getHtmlLabelName(539277, user.getLanguage(), "无下载权限")); + } + + } + + @ActionMapping(name="getAttachViewFileType") + protected List getAttachViewFileType(){ + DocDetailUtil docDetailUtil = new DocDetailUtil(); + return docDetailUtil.getAttachViewFileType(false, false); + } +} diff --git a/src/com/api/zjrb/pattern/web/PatternUnlockingActionApi.java b/src/com/api/zjrb/pattern/web/PatternUnlockingActionApi.java new file mode 100644 index 0000000..fec947b --- /dev/null +++ b/src/com/api/zjrb/pattern/web/PatternUnlockingActionApi.java @@ -0,0 +1,9 @@ +package com.api.zjrb.pattern.web; + +import com.engine.zjrb.pattern.web.PatternUnlockingAction; + +import javax.ws.rs.Path; + +@Path("/zjrb/pattern") +public class PatternUnlockingActionApi extends PatternUnlockingAction { +} diff --git a/src/com/cloudstore/dev/api/dao/Dao_TableInformix.java b/src/com/cloudstore/dev/api/dao/Dao_TableInformix.java new file mode 100644 index 0000000..8841ce0 --- /dev/null +++ b/src/com/cloudstore/dev/api/dao/Dao_TableInformix.java @@ -0,0 +1,986 @@ +package com.cloudstore.dev.api.dao; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.api.browser.util.BoolAttr; +import com.cloudstore.api.util.Util_Base64; +import com.cloudstore.dev.api.bean.OrgType; +import com.cloudstore.dev.api.bean.TimeMarker; +import com.cloudstore.dev.api.bean.UserDefCol; +import com.cloudstore.dev.api.util.Util_public; +import com.cloudstore.eccom.core.WeaCommon; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.LogUtil; +import com.google.common.collect.Lists; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import weaver.conn.RecordSet; +import weaver.conn.RecordSetDataSource; +import weaver.conn.RecordSetTrans; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import java.io.UnsupportedEncodingException; +import java.util.*; + +/** + * author: wangyiwu + * create: 2023/12/10 19:12 + * description:*** + */ +public class Dao_TableInformix implements Dao_Table { + + private static final Log logger = LogFactory.getLog(Dao_TableInformix.class); + + private String sql = null; + private Dao_Table d = null; + + /** + * 无参构造方法 + */ + public Dao_TableInformix() { + d = Dao_TableFactory.getInstance().getDao("Dao_TableSqlServer"); + } + + /** + * TODO + * + * @param sqlObj + * @param columns + * @param min + * @param max + * @return + */ + @Override + public List> getTableDatas(JSONObject sqlObj, + JSONArray columns, String min, String max) { + String tFields = ""; + String tFrom = ""; + String tWhere = ""; + String tOrder = ""; +// RecordSet rs=new RecordSet(); + //wyw 读取Informin数据源 + RecordSetDataSource rs=new RecordSetDataSource("Informix"); + try { + + tFields = new String( + Util_Base64.decode(sqlObj.getString("tFields")), "UTF-8"); + tFrom = new String(Util_Base64.decode(sqlObj.getString("tFrom")), "UTF-8"); + tWhere = new String(Util_Base64.decode(sqlObj.getString("tWhere")), "UTF-8"); + tOrder = new String(Util_Base64.decode(sqlObj.getString("tOrder")), "UTF-8"); + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StringBuilder sb = new StringBuilder(); + sb.append("select * from ("); + sb.append("select " + tFields); + if (!"".equals(tOrder)){ + sb.append(" ,ROW_NUMBER() OVER(order by ").append(tOrder) + .append(" ) as rn"); + } else { + sb.append(",rownum as rn "); + } + 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); + sb.append(") tmp"); + sb.append(" where 1=1"); + if (!"".equals(min)) + sb.append(" and tmp.rn>=").append(min); + if (!"".equals(max)) + sb.append(" and tmp.rn<=").append(max); + + sql = sb.toString(); + logger.info("====>wyw getTableDatas() sql:"+ sql); + logger.error("打印:"+sql); + if (!rs.execute(sql)) + logger.error(sql); + List mssl = new ArrayList(); + while (rs.next()) { + Map mss = new HashMap(); + for (Iterator localIterator = columns.iterator(); localIterator + .hasNext();) { + Object column = localIterator.next(); + JSONObject obj = (JSONObject) column; + String dataIndex = obj.getString("dataIndex"); + mss.put(dataIndex, rs.getString(dataIndex)); + } + mssl.add(mss); + } + return mssl; + } + + /** + * TODO + * + * @param sqlObj + * @return + */ + @Override + public int getTableCount(JSONObject sqlObj) { + // TODO Auto-generated method stub + return d.getTableCount(sqlObj); + } + + /** + * TODO + * + * @param sqlObj + * @param sql + * @param columns + * @return + */ + @Override + public List> setDevTableDatas(JSONObject sqlObj, + String sql, JSONArray columns, List getBroList, TimeMarker timeMarker) { + // TODO Auto-generated method stub + //logger.error("setDevTableDatas sql :" + sql); + return d.setDevTableDatas(sqlObj, sql, columns, getBroList, timeMarker); + } + + // public static String Util_public.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 + * @param columns + * @param min + * @param max + * @param sortParams + * @return + */ + @Override + public List> getDevTableDatas(JSONObject sqlObj, + JSONArray columns, String min, String max, String sortParams, + List getBroList, TimeMarker timeMarker) { + // TODO Auto-generated method stub + logger.info("====>wyw getDevTableDatas() params sqlObj:"+ JSON.toJSONString(sqlObj)); + logger.info("====>wyw getDevTableDatas() params columns:"+ JSON.toJSONString(columns)); + String tFields = 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_public.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")); + String sqlPrimaryKey = Util.null2String(sqlObj.getString("sqlprimarykey")); + String openPrimaryKeyOrder = sqlObj.getString("openprimarykeyorder"); + String mergeOrder = sqlObj.getString("mergeorder"); + + tOrder = Util_public.createSqlOrder(sortParams, tOrder, tOrderWay, sqlPrimaryKey, + BoolAttr.TRUE.getStringVal().equals(openPrimaryKeyOrder),BoolAttr.TRUE.getStringVal().equals(mergeOrder)); + + String tGroupBy = Util.null2String(sqlObj.getString("sqlgroupby")).trim(); + + // 》》》 + StringBuilder sb = new StringBuilder(); + 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")); + if (!"".equals(tOrder)) + sb.append(" order by ").append(tOrder); + // 偏移量 + int minNum = Integer.parseInt(min); + minNum = minNum > 0 ? minNum - 1 : 0; + String sqlnew = ""; + if (!"".equals(max) && !"".equals(min)){ +// sb.append(" limit (").append(minNum).append(",").append(max).append(")"); + int maxNum = Integer.parseInt(max); + int cou = maxNum - minNum; + new BaseBean().writeLog("==min:"+min+" minNum:"+minNum+" max:"+max+" maxNum:"+maxNum); + + sqlnew = " select skip "+minNum+" first "+cou+" t0.* from ("+sb.toString()+") as t0 "; + new BaseBean().writeLog("==sqlnew:"+sqlnew); + + }else{ + sqlnew = sb.toString(); + } + + new BaseBean().writeLog("==sqlnew:"+sqlnew); + + /* + =============================================================================== + sb.append(" select r.* "); + if (sqlObj.containsKey("outfields") + && !"".equals(sqlObj.getString("outfields"))) { + sb.append(" ,").append(sqlObj.getString("outfields")); + } + sb.append(" from (select tmp.*,rownum as rn 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")); + if (!"".equals(tOrder)) + sb.append(" order by ").append(tOrder); + //优化执行效率 AndyZhang + if (!"".equals(max)) { + sb.append(" ) tmp where rownum <= ").append(max).append(" ) r"); + } else{ + sb.append(" ) tmp ) r"); + } + sb.append(" where 1=1"); + if (!"".equals(min)) + sb.append(" and r.rn>=").append(min); + =============================================================================== + */ + /*if (!"".equals(max)) + sb.append(" and r.rn<=").append(max);*/ + //logger.info(sb.toString()); + + logger.info("====> getDevTableDatas() sql : "+ sb.toString()); + timeMarker.mark("create sql"); + return this.setDevTableDatas(sqlObj, sqlnew, columns, getBroList, timeMarker); + } + + /** + * TODO + * + * @param sqlObj + * @return + */ + @Override + public int getDevTableCount(JSONObject sqlObj) { + // TODO Auto-generated method stub + return d.getDevTableCount(sqlObj); + } + + /** + * TODO + * + * @return + */ + @Override + public boolean checkModeSkip(int customid) { + // TODO Auto-generated method stub + return d.checkModeSkip(customid); + } + + /** + * TODO + * + * @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); + // 目前不能先删除后添加了。 + // rst.executeSql("delete from user_default_col where pageId='"+pageId+"'"+" and userId = "+user.getUID()); + // String dbname = " "; + // " user_default_col "; + + // if (!"".equals(pageUid)) + // dbname = " cloudstore_defcol "; + sql = "update cloudstore_defcol 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 cloudstore_defcol 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 cloudstore_defcol 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 cloudstore_defcol (id,sysid,pageUid,userid,orders,display" + + ") values(cloudstore_defcol_seq.nextval,'" + + 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 user + * @param pageUid + * @param i + * @return + */ + @Override + public JSONObject getDestTable(User user, String pageUid, int i) { + // TODO Auto-generated method stub + 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"); + + 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); + } + + if (getRlist.size() == 0) { + // if (0 == type) { + // getRlist.addAll(getDestTable(user, excludeId, includeId, + // pageId, pageUid, 1)); + // } else { + // 用户没有设置自定义列 + + sbl = new StringBuilder(); + sbl.append( + "select id,uuid,text,key from cloudstore_sdfcol where display=0 and pageuid='") + .append(pageUid).append("'"); + + 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) { + // 系统表不存在这个表单,需要保存一次记录 + + rObj.put("msg", "needInit"); + return rObj; + } + } + rObj.put("status", true); + rObj.put("datas", getRlist); + } + + return rObj; + } + + /** + * TODO + * + * @param user + * @param pageUid + * @param i + * @return + */ + @Override + public JSONArray getSrcTable(User user, String pageUid, int i) { + // TODO Auto-generated method stub + RecordSet rs = new RecordSet(); + JSONArray getRlist = new JSONArray(); + StringBuilder sql2 = new StringBuilder(); + String dbname = " cloudstore_defcol "; + // " user_default_col "; + // if (!"".equals(pageUid) && 0 == type) + // 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(")"); + } 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; + } + + /** + * 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 (id,uuid,pageuid,key,display,orders,orderkey,text)values(cloudstore_sdfcol_seq.nextval,'" + + 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 (id,uuid,pageuid,key,display,orders,orderkey,text)values(cloudstore_sdfcol_seq.nextval,'" + + 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 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 + * @return + */ + @Override + public void insertUserSetting(int uid, String isload) { + // TODO Auto-generated method stub + + RecordSet rs = new RecordSet(); + sql = "insert into HrmUserSetting(id,resourceid,rtxOnload,isCoworkHead,skin,cutoverWay,transitionTime,transitionWay) values(HRMUSERSETTING_ID.nextval," + + 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) { + // TODO Auto-generated method stub + RecordSet rs = new RecordSet(); + 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) { + // TODO Auto-generated method stub + RecordSet rs = new RecordSet(); + sql = "insert into ecology_pagesize(id,pageId,pageSize,userid) values(ECOLOGY_PAGESIZE_ID.nextval,'" + + 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) { + // TODO Auto-generated method stub + 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; + } + + @Override + public Map getSqlSum(JSONObject sp, String[] sumlist, + Map allSumMap) { + // TODO Auto-generated method stub + return d.getSqlSum(sp, sumlist, allSumMap); + } + + @Override + public boolean clearShowCol(String pageUid) { + return d.clearShowCol(pageUid); + } + + @Override + public boolean clearShowCol(String pageUid, int uid) { + return d.clearShowCol(pageUid, uid); + } + + @Override + public List getUserDefColumns(String pageUid, int uid) { + return d.getUserDefColumns(pageUid, uid); + } + + @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(); + }*/ + } + + @Override + public boolean synCols(BizLogContext bizLogContext, List choosedDefCols, List unchoosedDefCols, OrgType orgType, String orgId, int def) { + try { + String pageuid=""; + String sysid="nullSysId"; + if (def==1) sysid="def"; + RecordSet rs=new RecordSet(); + + String sqlWhere=""; + String sqlWhereAll=""; + List params=new ArrayList(); + if (OrgType.COMPANY==orgType){ + List depList=d.getDepList(orgId); + sqlWhere=" subcompanyid1 in "+ WeaCommon.createWhereInSQL(orgId,params); + sqlWhereAll=" where "+sqlWhere ; + if (def==2) + rs.executeQuery("delete from cloudstore_defcol where pageuid=? "+sqlWhere,pageuid); + else + rs.executeQuery("delete from cloudstore_defcol where sysid<>? and pageuid=? "+sqlWhere,def,pageuid); + //logger.info("清除设置:"+pageuid); + } + + if (OrgType.DEPARTMENT==orgType){ + + List depList=getDepList(orgId); + sqlWhere=" where departmentid in "+WeaCommon.createWhereInSQL(depList,params); + sqlWhereAll=" where "+sqlWhere ; + if (def==2) + rs.executeQuery("delete from cloudstore_defcol where pageuid=? "+sqlWhere,pageuid); + else + rs.executeQuery("delete from cloudstore_defcol where sysid<>'def' and pageuid=? "+sqlWhere,pageuid); + } + + if (OrgType.PERSON==orgType){ + + sqlWhere=" where id in "+WeaCommon.createWhereInSQL(orgId,params); + sqlWhereAll=" where "+sqlWhere ; + if (def==2) + rs.executeQuery("delete from cloudstore_defcol where pageuid=? "+sqlWhere,pageuid); + else + rs.executeQuery("delete from cloudstore_defcol where sysid<>'def' and pageuid=? "+sqlWhere,pageuid); + } + + int i=0; + for(UserDefCol col : choosedDefCols) { + String dataIndex=col.getDataIndex(); + ArrayList paramsReal=new ArrayList<>(); + i++; + paramsReal.add(sysid); + paramsReal.add(pageuid); + paramsReal.add(i); + paramsReal.add(dataIndex); + String sql; + + sql=" Insert into cloudstore_defcol(id,userid,sysid,pageuid,orders,display,dataindex,width) "; + sql+=" select cloudstore_defcol_seq.nextval,id,?,?,?,1,?,'' from HrmResource "+sqlWhereAll; + + rs.executeUpdate(sql,paramsReal); + logger.info("SQL执行成功:def:"+def+":"+sql); + if (def==2){ + ArrayList paramsDef=new ArrayList<>(); + paramsDef.add("def"); + paramsDef.add(pageuid); + paramsDef.add(i); + paramsDef.add(dataIndex); + rs.executeUpdate(sql,paramsDef); + } + } + + i=0; + for(UserDefCol col : unchoosedDefCols) { + i++; + String dataIndex=col.getDataIndex(); + ArrayList paramsReal=new ArrayList<>(); + paramsReal.add(sysid); + paramsReal.add(pageuid); + paramsReal.add(i); + paramsReal.add(dataIndex); + String sql; + + sql=" Insert into cloudstore_defcol(id,userid,sysid,pageuid,orders,display,dataindex,width) "; + sql+=" select cloudstore_defcol_seq.nextval,id,?,?,?,0,?,'' from HrmResource "+sqlWhereAll; + + rs.executeUpdate(sql,paramsReal); + logger.info("SQL执行成功:def:"+def+":"+sql); + if (def==2){ + ArrayList paramsDef=new ArrayList<>(); + paramsDef.add("def"); + paramsDef.add(pageuid); + paramsDef.add(i); + paramsDef.add(dataIndex); + rs.executeUpdate(sql,paramsDef); + } + } + logger.info("SQL执行成功:"+pageuid); + LogUtil.writeBizLog(bizLogContext); + } + catch (Exception ex ) { + logger.error(ex.getMessage()); + return false; + } + + return true; + } + + @Override + public List getDepList(String departmentIds) throws Exception { + return d.getDepList(departmentIds); + } + + + /*@Override + public void setExpandOperate(int uid, String pageId, String value) { + RecordSet rs=new RecordSet(); + boolean hasOperate=false; + String sql = "select Operate from ecology_pagesize where pageId = ? and userid= ? "; + if (rs.executeQuery(sql,uid,pageId)) + hasOperate=rs.next(); + if (!hasOperate) { + sql = "insert into ecology_pagesize(id,pageId,Operate,userid) values(ECOLOGY_PAGESIZE_ID.nextval,?,?,?)"; + if (!rs.executeQuery(sql, pageId, value, uid)) { + logger.error("insertPageSize wrong sql :" + sql); + } + } + else{ + sql = "update ecology_pagesize set Operate=? where pageId=? and userid=?"; + if (!rs.executeQuery(sql,value,pageId,uid)) { + logger.error("updatePageSize wrong sql :" + sql); + } + } + } + + @Override + public String getExpandOperate(int uid, String pageId) { + return d.getExpandOperate(uid,pageId); + }*/ + + private void batchInsert(List cols) { + RecordSet rs = new RecordSet(); + for (UserDefCol col : cols) { + StringBuilder builder = new StringBuilder("insert into cloudstore_defcol ( id, dataIndex,sysid, orders, display, pageUid,userid,width) values "); + List params = Lists.newArrayList(); + builder.append("(cloudstore_defcol_seq.nextval,?,'nullSysId',?,?,?,?,?)"); + params.add(col.getDataIndex()); + params.add(col.getOrders()); + params.add(col.getDisplay()); + params.add(col.getPageUid()); + params.add(col.getUserId()); + params.add(col.getWidth()); + rs.executeUpdate(builder.toString(), params.toArray()); + } + } +} diff --git a/src/com/cloudstore/dev/api/dao/Dao_TableSqlServer.java b/src/com/cloudstore/dev/api/dao/Dao_TableSqlServer.java new file mode 100755 index 0000000..9fee2b4 --- /dev/null +++ b/src/com/cloudstore/dev/api/dao/Dao_TableSqlServer.java @@ -0,0 +1,1509 @@ +/* + * +S * Copyright (c) 2001-2017 泛微软件. + * 泛微协同商务系统,版权所有. + * + */ +package com.cloudstore.dev.api.dao; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.api.browser.util.BoolAttr; +import com.api.cube.util.CubeCipherUitl; +import com.cloudstore.dev.api.bean.OrgType; +import com.cloudstore.dev.api.bean.TimeMarker; +import com.cloudstore.dev.api.bean.UserDefCol; +import com.cloudstore.dev.api.util.TextUtil; +import com.cloudstore.dev.api.util.Util_public; +import com.cloudstore.eccom.core.WeaCommon; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.LogUtil; +import com.google.common.collect.Lists; +import com.weaver.formmodel.util.StringHelper; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import weaver.common.util.string.StringUtil; +import weaver.conn.RecordSet; +import weaver.conn.RecordSetTrans; +import weaver.formmode.util.WorkflowToModeUtil; +import weaver.general.BaseBean; +import weaver.general.StaticObj; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.company.CompanyComInfo; +import weaver.hrm.company.DepartmentComInfo; +import weaver.interfaces.datasource.DataSource; +import weaver.servicefiles.DataSourceXML; + +import java.util.*; + + +/** + * @version 1.0 + * @author wangkai + * TODO + */ +public class Dao_TableSqlServer implements Dao_Table { + + private static final Log logger = LogFactory.getLog(Dao_TableSqlServer.class); + private String sql = null; + + /** + * 无参构造方法 + */ + public Dao_TableSqlServer(){ + + } + + /** + * TODO 旧的分页查询 + * + * @param sqlObj + * @param columns + * @param min + * @param max + * @return + */ + @Override + public List> getTableDatas(JSONObject sqlObj, + JSONArray columns, String min, String max) { + RecordSet rs=new RecordSet(); + String tFields = Util.null2String(sqlObj.getString("tFields")); + String tFrom = Util.null2String(sqlObj.getString("tFrom")); + String tWhere = Util.null2String(sqlObj.getString("tWhere")); + String tOrder = Util.null2String(sqlObj.getString("tOrder")); + StringBuilder sb = new StringBuilder(); + sb.append("select * from ("); + sb.append("select "+tFields+",ROW_NUMBER() OVER( order by "+tOrder+") as rn"); + 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); + } + sb.append(") as tmp"); + sb.append(" where tmp.rn>=").append(min); + sb.append(" and tmp.rn<=").append(max); + sql = sb.toString(); + //logger.error(sql); + rs.writeLog("zqb::::::sql====="+sql); + if(!rs.execute(sql)) logger.error(sql); + List> mssl = new ArrayList>(); + while(rs.next()) { + Map mss = new HashMap(); + for(Object column : (List)columns) { + JSONObject obj = (JSONObject) column; + String dataIndex = obj.getString("dataIndex"); + mss.put(dataIndex,rs.getString(dataIndex)); + } + mss.put("id",rs.getString("id")); + mssl.add(mss); + } + return mssl; + } + + /** + * TODO 旧的分页数量查询 + * + * @param sqlObj + * @return + */ + @Override + public int getTableCount(JSONObject sqlObj) { + RecordSet rs=new RecordSet(); + String tFrom = sqlObj.getString("tFrom"); + String tWhere = sqlObj.getString("tWhere"); + StringBuilder sb = new StringBuilder(); + sb.append("select count(*)"); + 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); + } + sql = sb.toString(); + Long start=System.currentTimeMillis(); + + if(!rs.execute(sql)) logger.error(sql); + printSQLAndTimeLog(sql,start); + return rs.next()?rs.getInt(1):0; + } + + /** + * 打印时间和SQL的日志 + * @param sql + * @return + */ + public void printSQLAndTimeLog(String sql,Long start){ + if (System.currentTimeMillis()-start>2000) + logger.error("通用列表查询:耗时:"+(System.currentTimeMillis()-start)+"ms SQL:"+sql); + } + + /** + * TODO + * @param str + * @return + */ + public static String convertChar(String str,String wrapClose){ + if ("1".equals(wrapClose)) return str;//关闭换行 + else { + str = str.replace("\t", ""); + str = str.replace("\r", ""); + str = str.replace("\n", ""); + str = str.replace("\f", ""); + return str; + } + } + + /** + * TODO + * @param sqlObj + * @param sql + * @param columns + * @return + */ + @Override + public List> setDevTableDatas(JSONObject sqlObj, String sql, JSONArray columns, List getBroList, TimeMarker timeMarker) { + RecordSet rs=new RecordSet(); + // 如果在 标签中配置了 unchecksql 属性,不检查SQL。 + // 默认:检查SQL + if (sqlObj.getBooleanValue("unchecksql")){ + rs.setChecksql(false); + } + if(Util.null2String(sqlObj.getString("fromExport")).equals("1")){ + //导出数据明文显示 + rs.isReturnDecryptData(true); + }else{ + rs.isReturnDecryptData(Util.null2String(sqlObj.getString("isReturnDecryptData")).equals("true")); + rs.isAutoDecrypt(!Util.null2String(sqlObj.getString("isAutoDecrypt")).equals("false")); + } + + String topColumn = Util.null2String(sqlObj.getString("topColumn"),"");//获取置顶列 + int topColumnValue = 0;//置顶列的value + //logger.error("setDevTableDatas sql :" + sql); + String tPrimaryKey = Util.null2String(sqlObj.getString("sqlprimarykey")); + String wrapClose = Util.null2String(sqlObj.getString("wrapclose")); + String [] primarys = primarys = tPrimaryKey.split(","); + String tophtmlWithMarginString = "TOP"; + String tophtmlWithOutMarginString = "TOP"; + for(int i=0; i0) { + primarys[i] = primarys[i].substring(primarys[i].indexOf(".")+1); + } + } + String poolname = sqlObj.getString("poolname"); + + //logger.error(sql); + //AndyZhang 修改建模的跨数据库异常问题 + if (StringUtils.isBlank(poolname)){ + if(!rs.executeSql(sql)) logger.error(sql); + } + else{ + if(!rs.executeSql(sql, poolname)) logger.error(sql); + } + + /*if(!rs.executeSql(sql, poolname)) logger.error(sql);*/ + printSQLAndTimeLog(sql,timeMarker.getStart()); + + + timeMarker.mark("read data in dao"); + List> mssl = new ArrayList>(); + //Long times1 = System.currentTimeMillis(); + while(rs.next()) { + Map mss = new HashMap(); + if(!"".equals(topColumn)){ + topColumnValue = Util.getIntValue(Util.null2String(rs.getString(topColumn)), 0); + } + + for(Object column : (List)columns) { + JSONObject obj = (JSONObject) column; + + obj.put("fromExport",Util.null2String(sqlObj.getString("fromExport"))); + String name = obj.getString("dbField"); + String tablename = obj.getString("tablename"); + String columnname = Util.null2String(obj.getString("columnname"));//字段名,用于别名情况 + String jsonName = obj.getString("dataIndex"); + /*String align = obj.getString("align"); + + if (StringUtils.isNotBlank(align)) mss.put("align",align); + if (StringUtils.isNotBlank(obj.getString("dataalign"))) + mss.put("dataalign",obj.getString("dataalign"));*/ + + String value = ""; + if(columnname.length()>0){ + value = rs.getStringFromAlias(tablename,name, columnname); + }else{ + value = rs.getString(tablename,name); + } + value=CubeCipherUitl.decrypt(value); + String valueSpan = value; + // logger.error("obj is :" + obj.toString()); + + //加入对base64的支持功能 andyzhang + if (obj.containsKey("isBase64")&& obj.getString("isBase64").equals("1")){ + if (Util.isEnableMultiLang()) {//weainput多语言需要在前面加上base_标识 + value=TextUtil.toBase64ForMultilang(value); + }else { + value=Util_public.base64Encode(value); + } + } + + if (obj.containsKey("transMethod") && StringUtils.isNotBlank(obj.getString("transMethod")) + && obj.containsKey("display")) { + // logger.error("obj is containsKey transMethod:" + // + obj.getString("transMethod")); + // logger.error("obj is containsKey display:" + // + obj.getString("display")); + if ("true".equals(obj.getString("display"))|| "true".equals(obj.getString("transMethodForce"))) { + //linkvaluecolumn + try { + valueSpan = Util.null2String(Util_public.doTransMethod(obj, rs)).replaceAll(" "," ").replaceAll("
","\n"); + //添加对移动交互字段的解析逻辑 + if (value.indexOf(WorkflowToModeUtil.SPLIT_LOCATION) != -1 || value.indexOf(WorkflowToModeUtil.SPLIT_FIELD) != -1) {//判断是否存在地址分割符,如果存在就进行转换 + valueSpan = WorkflowToModeUtil.toList(value); + } + +// if(topColumnValue==1){ +// if(valueSpan.startsWith("") != -1 ){//链接字段 且属于置顶数据则需要添加top标志 +// if(!"".equals(value) && valueSpan.indexOf("javaScript:openhrm")==-1){ +// valueSpan+= tophtmlWithMarginString; +// }else { +// if(valueSpan.indexOf("javaScript:openhrm")==-1){ +// valueSpan+=tophtmlWithOutMarginString; +// } +// +// } +// } +// } + }catch(Exception e) { + } + } + if ("".equals(valueSpan)) { + mss.put(jsonName + "span", ""); + } else { + if (valueSpan.contains("

\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> sqlList = new ArrayList>(); + + Map subCompanyOutkeyMap = getE9SubcompanyOutkey(); + Map departmentOutkeyMap = getE9DepartmentOutkey(); + Map> E7DepartmentMap = getE7DepartmentData(dataResource); + List E7SubcompanyList = getE7HrmSubcompanyList(dataResource); + + bb.writeLog("subCompanyOutkeyMap:"+subCompanyOutkeyMap.size()+"
"); + bb.writeLog("departmentOutkeyMap:"+departmentOutkeyMap.size()+"
"); + bb.writeLog("E7DepartmentMap:"+E7DepartmentMap.size()+"
"); + bb.writeLog("E7SubcompanyList:"+E7SubcompanyList.size()+"
"); + + List> topInsertList = new ArrayList>(); + List> topUpdateList = new ArrayList>(); + List topList = new ArrayList<>(); + String sql =" select id,departmentmark,departmentname,subcompanyid1,nvl(supdepid,0) as supdepid,allsupdepid,canceled,departmentcode,outkey,tlevel,showorderoftree,showorder\n" + + " from hrmdepartment \n" + + " where nvl(supdepid,0) = 0 \n" ; + rs.execute(sql); + while(rs.next()) { + totle_count++; + String e9id = Util.null2String(rs.getString("id")); + topList.add(e9id); + + String departmentmark = Util.null2String(rs.getString("departmentmark")); + String departmentname = Util.null2String(rs.getString("departmentname")); + String subcompanyid1 = Util.null2String(rs.getString("subcompanyid1")); + String supdepid = Util.null2String(rs.getString("supdepid")); + String allsupdepid = Util.null2String(rs.getString("allsupdepid")); + String canceled = Util.null2String(rs.getString("canceled")); + String departmentcode = Util.null2String(rs.getString("departmentcode")); + String outkey = Util.null2String(rs.getString("outkey")); //E7的hrmdepartment的ID + String tlevel = Util.null2String(rs.getString("tlevel")); + String showorder = Util.null2String(rs.getString("showorder")); + + Map E9Map = new HashMap(); + E9Map.put("e9id", e9id); + E9Map.put("departmentname", departmentname); + E9Map.put("departmentmark", departmentmark); + E9Map.put("departmentcode", departmentcode); + E9Map.put("tlevel", tlevel); + E9Map.put("showorder", showorder); + E9Map.put("canceled", canceled); + + String subcompanyOutKey = "" ; + if(subCompanyOutkeyMap.containsKey(subcompanyid1)){ + subcompanyOutKey = subCompanyOutkeyMap.get(subcompanyid1); + } + + String supdepidOutKey = ""; + if(StringUtils.isNotBlank(supdepid)){ + if("0".equals(supdepid) || "-1".equals(supdepid) || StringUtils.isBlank(supdepid)){ + supdepidOutKey = "0"; + }else{ + if(departmentOutkeyMap.containsKey(supdepid)){ + supdepidOutKey = departmentOutkeyMap.get(supdepid); + } + } + } + + String allsupdepidOutKey = ""; + if(StringUtils.isNotBlank(allsupdepid)){ + String[] supdepids = allsupdepid.split(","); + for(int i=0;i e7DeptMap = E7DepartmentMap.get(outkey); + String e7departmentmark = Util.null2String(e7DeptMap.get("e7departmentmark")); + String e7departmentname = Util.null2String(e7DeptMap.get("e7departmentname")); + String e7subcompanyid1 = Util.null2String(e7DeptMap.get("e7subcompanyid1")); + String e7supdepid = Util.null2String(e7DeptMap.get("e7supdepid")); + String e7allsupdepid = Util.null2String(e7DeptMap.get("e7allsupdepid")); + String e7canceled = Util.null2String(e7DeptMap.get("e7canceled")); + String e7departmentcode = Util.null2String(e7DeptMap.get("e7departmentcode")); + String e7tlevel = Util.null2String(e7DeptMap.get("e7tlevel")); + String e7showorder = Util.null2String(e7DeptMap.get("e7showorder")); + + if(!e7departmentmark.equals(departmentmark) + || !e7departmentname.equals(departmentname) + || !e7subcompanyid1.equals(subcompanyOutKey) + || !e7supdepid.equals(supdepidOutKey) + || !e7canceled.equals(canceled) + || !e7departmentcode.equals(departmentcode) + || !e7allsupdepid.equals(allsupdepidOutKey) + || !e7tlevel.equals(tlevel) + || !e7showorder.equals(showorder) + ){ + + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + E9Map.put("e7id", outkey); + topUpdateList.add(E9Map); + }else{ + unchanged_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + if(StringUtils.isNotBlank(subcompanyOutKey) && E7SubcompanyList.contains(subcompanyOutKey) ) { + if (StringUtils.isNotBlank(supdepidOutKey) && ("0".equals(supdepidOutKey) || E7DepartmentMap.containsKey(supdepidOutKey))){ + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + topInsertList.add(E9Map); + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + } + }else{ + + if(StringUtils.isNotBlank(subcompanyOutKey) && E7SubcompanyList.contains(subcompanyOutKey) ) { + if (StringUtils.isNotBlank(supdepidOutKey) && ("0".equals(supdepidOutKey) || E7DepartmentMap.containsKey(supdepidOutKey))){ + + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + topInsertList.add(E9Map); + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + } + } + + bb.writeLog("topUpdateList:"+topUpdateList.size()+"
"); + bb.writeLog("topInsertList:"+topInsertList.size()+"
"); + + for(Map E9Map : topInsertList){ + String e9id = Util.null2String(E9Map.get("e9id")); + + String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase(); + E9Map.put("uuid",uuid); + + String keyString = ""; + String valueString = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + try{ + boolean isTrue2 = false ; + String insert_sql = " insert into hrmdepartment("+keyString+") values("+valueString+")"; + + String newE7Id = insertE7DepartmentData(rsd,insert_sql,uuid,insert_fail_count); + bb.writeLog("insert_sql:"+insert_sql+" newE7Id:"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + String up_sql = " update hrmdepartment set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(up_sql); + bb.writeLog("up_sql:"+up_sql+" isTrue2:"+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + + }catch (Exception e){ + bb.writeLog(""); + insert_exp_count++; + } + } + + for(Map E9Map : topUpdateList){ + String e7id = Util.null2String(E9Map.get("e7id")); + String e9id = Util.null2String(E9Map.get("e9id")); + + String valuesStr = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + } + try{ + String update_sql = " update hrmdepartment set "+valuesStr+" where id = '"+e7id+"' "; + boolean isTrue = updateE7DepartmentData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" isTrue:"+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + + }catch (Exception e){ + update_exp_count++; + } + } + List> insertList = new ArrayList>(); + List> updateList = new ArrayList>(); + for(String departmentid : topList){ + if(StringUtils.isNotBlank(departmentid)){ + sql = " select id,departmentmark,departmentname,subcompanyid1,nvl(supdepid,0) supdepid,allsupdepid,canceled,departmentcode,outkey,tlevel,showorderoftree,showorder \n" + + " from hrmdepartment \n" + + " where 1=1 " + departmentwhere + + " connect by prior id = supdepid \n" + + " start with supdepid = "+departmentid; + + rs.executeQuery(sql); + while (rs.next()){ + totle_count++; + + String e9id = Util.null2String(rs.getString("id")); + + String departmentmark = Util.null2String(rs.getString("departmentmark")); + String departmentname = Util.null2String(rs.getString("departmentname")); + String subcompanyid1 = Util.null2String(rs.getString("subcompanyid1")); + String supdepid = Util.null2String(rs.getString("supdepid")); + String allsupdepid = Util.null2String(rs.getString("allsupdepid")); + String canceled = Util.null2String(rs.getString("canceled")); + String departmentcode = Util.null2String(rs.getString("departmentcode")); + String outkey = Util.null2String(rs.getString("outkey")); //E7的hrmsubcompany的ID + + String tlevel = Util.null2String(rs.getString("tlevel")); + String showorder = Util.null2String(rs.getString("showorder")); + + Map E9Map = new HashMap(); + E9Map.put("e9id", e9id); + E9Map.put("departmentname", departmentname); + E9Map.put("departmentmark", departmentmark); + E9Map.put("departmentcode", departmentcode); + E9Map.put("tlevel", tlevel); + E9Map.put("showorder", showorder); + E9Map.put("canceled", canceled); + + String subcompanyOutKey = "" ; + if(subCompanyOutkeyMap.containsKey(subcompanyid1)){ + subcompanyOutKey = subCompanyOutkeyMap.get(subcompanyid1); + } + + String supdepidOutKey = ""; + if(StringUtils.isNotBlank(supdepid)){ + if("0".equals(supdepid) || "-1".equals(supdepid) || StringUtils.isBlank(supdepid)){ + supdepidOutKey = "0"; + }else{ + if(departmentOutkeyMap.containsKey(supdepid)){ + supdepidOutKey = departmentOutkeyMap.get(supdepid); + } + } + }else{ + supdepidOutKey = "0"; + } + + String allsupdepidOutKey = ""; + if(StringUtils.isNotBlank(allsupdepid)){ + String[] supdepids = allsupdepid.split(","); + for(int i=0;i e7DeptMap = E7DepartmentMap.get(outkey); + String e7departmentmark = Util.null2String(e7DeptMap.get("e7departmentmark")); + String e7departmentname = Util.null2String(e7DeptMap.get("e7departmentname")); + String e7subcompanyid1 = Util.null2String(e7DeptMap.get("e7subcompanyid1")); + String e7supdepid = Util.null2String(e7DeptMap.get("e7supdepid")); + String e7allsupdepid = Util.null2String(e7DeptMap.get("e7allsupdepid")); + String e7canceled = Util.null2String(e7DeptMap.get("e7canceled")); + String e7departmentcode = Util.null2String(e7DeptMap.get("e7departmentcode")); + String e7tlevel = Util.null2String(e7DeptMap.get("e7tlevel")); + String e7showorder = Util.null2String(e7DeptMap.get("e7showorder")); + + if(!e7departmentmark.equals(departmentmark) + || !e7departmentname.equals(departmentname) + || !e7subcompanyid1.equals(subcompanyOutKey) + || !e7supdepid.equals(supdepidOutKey) + || !e7canceled.equals(canceled) + || !e7departmentcode.equals(departmentcode) + || !e7allsupdepid.equals(allsupdepidOutKey) + || !e7tlevel.equals(tlevel) + || !e7showorder.equals(showorder) + ){ + + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + E9Map.put("e7id", outkey); + updateList.add(E9Map); + }else{ + unchanged_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + if(StringUtils.isNotBlank(subcompanyOutKey) && E7SubcompanyList.contains(subcompanyOutKey) ) { + if (StringUtils.isNotBlank(supdepidOutKey) && ("0".equals(supdepidOutKey) || E7DepartmentMap.containsKey(supdepidOutKey))){ + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + insertList.add(E9Map); + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + } + }else{ + + if(StringUtils.isNotBlank(subcompanyOutKey) && E7SubcompanyList.contains(subcompanyOutKey) ) { + if (StringUtils.isNotBlank(supdepidOutKey) && ("0".equals(supdepidOutKey) || E7DepartmentMap.containsKey(supdepidOutKey))){ + + E9Map.put("subcompanyid1", subcompanyOutKey); + E9Map.put("supdepid", supdepidOutKey); + insertList.add(E9Map); + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + }else{ + dataErrorList.add(e9id); + data_error_count++; + } + } + } + } + } + + bb.writeLog("insertList:"+insertList.size()+"
"); + bb.writeLog("updateList:"+updateList.size()+"
"); + + for(Map E9Map : insertList){ + String e9id = Util.null2String(E9Map.get("e9id")); + String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase(); + E9Map.put("uuid",uuid); + + String keyString = ""; + String valueString = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + + boolean isTrue2 = false; + String insert_sql = " insert into hrmdepartment("+keyString+") values("+valueString+")"; + String newE7Id = insertE7DepartmentData(rsd,insert_sql,uuid,insert_fail_count); + bb.writeLog("insert_sql:"+insert_sql+" newE7Id:"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + String up_sql = " update hrmdepartment set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(up_sql); + bb.writeLog("up_sql:"+up_sql+" isTrue2:"+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + } + + for(Map E9Map : updateList){ + String e7id = Util.null2String(E9Map.get("e7id")); + String e9id = Util.null2String(E9Map.get("e9id")); + + String valuesStr = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + } + + String update_sql = "update hrmdepartment set "+valuesStr+" where id = '"+e7id+"' "; + + boolean isTrue = updateE7DepartmentData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" isTrue:"+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + } + + try{ + String bmtbjg = "部门共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + Map mainMap = new HashMap(); + mainMap.put("bmtbjg",bmtbjg); + if(dataErrorList.size() > 0 ){ + + if(dataErrorList.size() <= 150){ + String bmycsj = String.join(",", dataErrorList); + mainMap.put("bmycsj",bmycsj); + }else{ + String bmycsj = String.join(",", dataErrorList.subList(0,150)); + mainMap.put("bmycsj",bmycsj); + } + + } + + recordSynMainlog(mainid,mainMap); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail2(mainid,sqlList); + } + }catch (Exception e){ + bb.writeLog(e); + } + + } + + + private String insertE7DepartmentData(RecordSetDataSource rsd,String insert_sql,String uuid,int insert_fail_count){ + String newE7Id = ""; + boolean isTrue = rsd.execute(insert_sql); + if(isTrue){ + String sql = " select id from hrmdepartment where uuid = '"+uuid+"' "; + rsd.executeSql(sql); + if(rsd.next()){ + newE7Id = Util.null2String(rsd.getString("id")); + } + }else{ + insert_fail_count++; + } + return newE7Id; + } + + + private boolean updateE7DepartmentData(RecordSetDataSource rsd,String update_sql){ + boolean isTrue = rsd.execute(update_sql); + return isTrue; + } + + private Map getE9SubcompanyOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmsubcompany " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + + private Map getE9DepartmentOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmdepartment " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + + + private Map> getE7DepartmentData(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7DepartmentMap = new HashMap>(); + String sql = " select id,departmentmark,departmentname,subcompanyid1,supdepid,allsupdepid,canceled,departmentcode,tlevel,showorder from hrmdepartment " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String e7departmentmark = Util.null2String(rsd.getString("departmentmark")); + String e7departmentname = Util.null2String(rsd.getString("departmentname")); + String e7subcompanyid1 = Util.null2String(rsd.getString("subcompanyid1")); + String e7supdepid = Util.null2String(rsd.getString("supdepid")); + String e7allsupdepid = Util.null2String(rsd.getString("allsupdepid")); + String e7canceled = Util.null2String(rsd.getString("canceled")); + String e7departmentcode = Util.null2String(rsd.getString("departmentcode")); + String e7tlevel = Util.null2String(rsd.getString("tlevel")); + String e7showorder = Util.null2String(rsd.getString("showorder")); + + Map deptMap= new HashMap(); + deptMap.put("e7departmentmark",e7departmentmark); + deptMap.put("e7departmentname",e7departmentname); + deptMap.put("e7subcompanyid1",e7subcompanyid1); + deptMap.put("e7supdepid",e7supdepid); + deptMap.put("e7allsupdepid",e7allsupdepid); + deptMap.put("e7canceled",e7canceled); + deptMap.put("e7departmentcode",e7departmentcode); + deptMap.put("e7tlevel",e7tlevel); + deptMap.put("e7showorder",e7showorder); + + E7DepartmentMap.put(id,deptMap); + } + return E7DepartmentMap; + } + + /*** + * + * @return + */ + private List getE7HrmSubcompanyList(String dataResource){ + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7SubcompanyList = new ArrayList(); + String sql = " select id from hrmsubcompany " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7SubcompanyList.add(id); + } + return E7SubcompanyList; + } + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail2(String mainid, List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt2(mainid,bmid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } + +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSynJobActivitiesUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynJobActivitiesUtil.java new file mode 100644 index 0000000..6072d8c --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSynJobActivitiesUtil.java @@ -0,0 +1,413 @@ +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 HrmSynJobActivitiesUtil { + + public void SynHrmJobActivitiesData(String dataResource,String mainid,String jobactivitiesWhere){ + 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> sqlList = new ArrayList>(); + + + Map> E7ActivitiesMap = getE7HrmActivitiesList2(dataResource) ; + Map E9GroupMap = getE9HrmGroupData(); + List E7GroupMap = getE7HrmGroupData(dataResource); + + bb.writeLog("E7ActivitiesMap:"+E7ActivitiesMap.size()+"
"); + bb.writeLog("E9GroupMap:"+E9GroupMap.size()+"
"); + bb.writeLog("E7GroupMap:"+E7GroupMap.size()+"
"); + + List> insertGroupList = new ArrayList>(); + List> updateGroupList = new ArrayList>(); + String sql = " select * from hrmjobactivities where id in(select h.jobactivityid from hrmjobtitles h) " + jobactivitiesWhere; + rs.execute(sql); + while(rs.next()){ + totle_count++; + + String e9id = Util.null2String(rs.getString("id")); + String jobactivitymark = Util.null2String(rs.getString("jobactivitymark")); + String jobactivityname = Util.null2String(rs.getString("jobactivityname")); + String jobgroupid = Util.null2String(rs.getString("jobgroupid")); + String outkey = Util.null2String(rs.getString("outkey")); + + Map groupMap = new HashMap(); + groupMap.put("e9id",e9id); + groupMap.put("jobactivitymark",jobactivitymark); + groupMap.put("jobactivityname",jobactivityname); + + String E9GroupOutkey = ""; + if(StringUtils.isNotBlank(jobgroupid)){ + if(E9GroupMap.containsKey(jobgroupid)){ + E9GroupOutkey = E9GroupMap.get(jobgroupid); + } + } + + if(StringUtils.isNotBlank(outkey)){ + if(E7GroupMap.contains(E9GroupOutkey)){ + if(E7ActivitiesMap.containsKey(outkey)){ + Map activitiesMap = E7ActivitiesMap.get(outkey); + + String e7jobactivitymark = Util.null2String(activitiesMap.get("e7jobactivitymark")); + String e7jobactivityname = Util.null2String(activitiesMap.get("e7jobactivityname")); + String e7jobgroupid = Util.null2String(activitiesMap.get("e7jobgroupid")); + + if(!e7jobactivitymark.equals(jobactivitymark) + || !e7jobactivityname.equals(jobactivityname) + || !e7jobgroupid.equals(E9GroupOutkey) + ){ + groupMap.put("jobgroupid",E9GroupOutkey); + groupMap.put("e7id",outkey); + updateGroupList.add(groupMap); + }else{ + unchanged_count++; + } + }else{ + insertGroupList.add(groupMap); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + if(E7GroupMap.contains(E9GroupOutkey)){ + insertGroupList.add(groupMap); + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + } + } + bb.writeLog("updateGroupList:"+updateGroupList.size()); + bb.writeLog("insertGroupList:"+insertGroupList.size()); + + for(Map item : insertGroupList) + { + String e9id = Util.null2String(item.get("e9id")); + + String keyString = ""; + String valueString = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e9id".equals(key) && !"e7id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + + } + boolean isTrue2 = false; + String insert_sql = " insert into hrmjobactivities("+keyString+") values("+valueString+")"; + String newE7Id = insertE7Data(rsd,insert_sql,insert_fail_count); + bb.writeLog("newE7Id:"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + sql = "update hrmjobactivities set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(sql); + bb.writeLog("sql:"+sql+" "+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + } + + for(Map item : updateGroupList) { + String e7id = Util.null2String(item.get("e7id")); + String e9id = Util.null2String(item.get("e9id")); + String valuesStr = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e9id".equals(key) && !"e7id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key + "='" + value + "'" : "," + key + "='" + value + "'"; + } + } + String update_sql = "update hrmjobactivities set " + valuesStr + " where id = '" + e7id + "' "; + boolean isTrue = updateE7Data(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" "+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + } + + try{ + String zztbjg = "职责共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + + Map mainMap = new HashMap(); + mainMap.put("zztbjg",zztbjg); + if(dataErrorList.size() > 0){ + + if(dataErrorList.size()<=150){ + String zzycsj = String.join(",", dataErrorList); + mainMap.put("zzycsj",zzycsj); + }else{ + String zzycsj = String.join(",", dataErrorList.subList(0,150)); + mainMap.put("zzycsj",zzycsj); + } + + } + recordSynMainlog(mainid,mainMap); + + bb.writeLog("mainid:"+mainid); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail4(mainid,sqlList); + } + }catch (Exception e){ + bb.writeLog(e); + } + + } + + private List getE7HrmActivitiesList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List groupList = new ArrayList(); + String sql = " select id from hrmjobactivities " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + groupList.add(id); + } + return groupList; + } + + + private List getE7HrmGroupData(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List groupList = new ArrayList(); + String sql = " select id from hrmjobgroups " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + groupList.add(id); + } + return groupList; + } + + /*** + * + * @return + */ + private Map getE9HrmGroupData(){ + + RecordSet rsd = new RecordSet(); + Map groupMap = new HashMap(); + String sql = " select id,outkey from hrmjobgroups" ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String outkey = Util.null2String(rsd.getString("outkey")); + groupMap.put(id,outkey); + } + return groupMap; + } + + + private Map> getE7HrmActivitiesList2(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7ActivitiesMap = new HashMap>(); + String sql =" select id,jobactivitymark,jobactivityname,jobgroupid \n" + + " from hrmjobactivities \n" ; + + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String e7jobactivitymark = Util.null2String(rsd.getString("jobactivitymark")); + String e7jobactivityname = Util.null2String(rsd.getString("jobactivityname")); + String e7jobgroupid = Util.null2String(rsd.getString("jobgroupid")); + + Map activitiesMap = new HashMap(); + activitiesMap.put("e7jobactivitymark",e7jobactivitymark); + activitiesMap.put("e7jobactivityname",e7jobactivityname); + activitiesMap.put("e7jobgroupid",e7jobgroupid); + E7ActivitiesMap.put(id,activitiesMap); + } + return E7ActivitiesMap; + } + + + private String insertE7Data(RecordSetDataSource rsd,String insert_sql,int insert_fail_count){ + String newE7Id = ""; + BaseBean bb = new BaseBean(); + bb.writeLog("insert-sql:"+insert_sql); + boolean isTrue = rsd.execute(insert_sql); + if(isTrue){ + String sql = " select max(id) as id from hrmjobactivities "; + rsd.executeSql(sql); + if(rsd.next()){ + newE7Id = Util.null2String(rsd.getString("id")); + } + }else{ + insert_fail_count++; + } + return newE7Id; + } + + + private boolean updateE7Data(RecordSetDataSource rsd,String update_sql){ + BaseBean bb = new BaseBean(); + bb.writeLog("update-sql:"+update_sql); + boolean isTrue = rsd.execute(update_sql); + return isTrue; + } + + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail4(String mainid,List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt4(mainid,zzid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } + +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSynJobGroupUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynJobGroupUtil.java new file mode 100644 index 0000000..f1a4b83 --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSynJobGroupUtil.java @@ -0,0 +1,308 @@ +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 HrmSynJobGroupUtil { + + public void SynHrmJobGroupData(String dataResource,String mainid,String jobgroupWhere){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + BaseBean bb = new BaseBean(); + 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> sqlList = new ArrayList>(); + + RecordSet rs = new RecordSet(); + Map> E7GroupMap = getE7HrmGroupList2(dataResource); + List> insertGroupList = new ArrayList>(); + List> updateGroupList = new ArrayList>(); + String sql = " select id,jobgroupname,jobgroupremark,outkey from hrmjobgroups where 1=1 "+jobgroupWhere; + rs.execute(sql); + while(rs.next()){ + totle_count++; + + String e9id = Util.null2String(rs.getString("id")); + String jobgroupname = Util.null2String(rs.getString("jobgroupname")); + String jobgroupremark = Util.null2String(rs.getString("jobgroupremark")); + String outkey = Util.null2String(rs.getString("outkey")); + + Map groupMap = new HashMap(); + groupMap.put("e9id",e9id); + groupMap.put("jobgroupname",jobgroupname); + groupMap.put("jobgroupremark",jobgroupremark); + + if(StringUtils.isNotBlank(outkey)){ + if(E7GroupMap.containsKey(outkey)){ + + Map e7Map = E7GroupMap.get(outkey); + String e7jobgroupname = e7Map.get("e7jobgroupname"); + String e7jobgroupremark = e7Map.get("e7jobgroupremark"); + if(!e7jobgroupname.equals(jobgroupname) || !e7jobgroupremark.equals(jobgroupremark)){ + groupMap.put("e7id",outkey); + updateGroupList.add(groupMap); + }else{ + unchanged_count++; + } + }else{ + insertGroupList.add(groupMap); + } + }else{ + insertGroupList.add(groupMap); + } + } + bb.writeLog("updateGroupList:"+updateGroupList.size()); + bb.writeLog("insertGroupList:"+insertGroupList.size()); + + for(Map item : insertGroupList) + { + String e9id = Util.null2String(item.get("e9id")); + String keyString = ""; + String valueString = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + boolean isTrue2 = false; + String insert_sql = " insert into hrmjobgroups("+keyString+") values("+valueString+")"; + String newE7Id = insertE7Data(rsd,insert_sql,insert_fail_count); + bb.writeLog("insert_sql:"+insert_sql+" , newE7Id"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + String up_sql = " update hrmjobgroups set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(up_sql); + bb.writeLog("up_sql:"+up_sql+" , isTrue2"+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + + } + + for(Map item : updateGroupList) { + String e7id = Util.null2String(item.get("e7id")); + String e9id = Util.null2String(item.get("e9id")); + String valuesStr = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key + "='" + value + "'" : "," + key + "='" + value + "'"; + } + } + String update_sql = " update hrmjobgroups set " + valuesStr + " where id = '" + e7id + "' "; + boolean isTrue = updateE7Data(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" , isTrue:"+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("fbid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + } + + try{ + String zwlxtbjg ="职务类型共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + Map mainMap = new HashMap(); + mainMap.put("zwlxtbjg",zwlxtbjg); + recordSynMainlog(mainid,mainMap); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail3(mainid,sqlList); + } + }catch (Exception e){ + bb.writeLog(e); + } + } + + + + private Map> getE7HrmGroupList2(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7GroupMap = new HashMap>(); + String sql = " select id,jobgroupname,jobgroupremark from hrmjobgroups" ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String jobgroupname = Util.null2String(rsd.getString("jobgroupname")); + String jobgroupremark = Util.null2String(rsd.getString("jobgroupremark")); + + Map groupMap = new HashMap(); + groupMap.put("e7jobgroupname",jobgroupname); + groupMap.put("e7jobgroupremark",jobgroupremark); + E7GroupMap.put(id,groupMap); + } + return E7GroupMap; + } + + + private String insertE7Data(RecordSetDataSource rsd,String insert_sql,int insert_fail_count){ + String newE7Id = ""; + boolean isTrue = rsd.execute(insert_sql); + if(isTrue){ + String sql = " select max(id) as id from hrmjobgroups "; + rsd.executeSql(sql); + if(rsd.next()){ + newE7Id = Util.null2String(rsd.getString("id")); + } + }else{ + insert_fail_count++; + } + return newE7Id; + } + + + private boolean updateE7Data(RecordSetDataSource rsd,String update_sql){ + boolean isTrue = rsd.execute(update_sql); + return isTrue; + } + + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail3(String mainid, List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt3(mainid,zwlxid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSynJobTitlesUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynJobTitlesUtil.java new file mode 100644 index 0000000..19585ab --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSynJobTitlesUtil.java @@ -0,0 +1,457 @@ +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 HrmSynJobTitlesUtil { + + + public void SynHrmJobTitlesData(String dataResource,String mainid,String jobTitlesWhere){ + + 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> sqlList = new ArrayList>(); + + List> insertTitleList = new ArrayList>(); + List> updateTitleList = new ArrayList>(); + + Map E9JobActivitiesMap = getE9HrmJobActivitiesList(); + Map E9DepartmentMap = getE9DepartmentOutkey(); + List E7HrmactivitiesList = getE7HrmActivitiesList(dataResource); + + bb.writeLog("=====E9JobActivitiesMap:"+E9JobActivitiesMap.size()+"
"); + bb.writeLog("=====E9DepartmentMap:"+E9DepartmentMap.size()+""+"
"); + bb.writeLog("=====E7HrmactivitiesList:"+E7HrmactivitiesList.size()+""+"
"); + + Map> E7JobTitlesMap = getE7HrmTitlesList2(dataResource); + bb.writeLog("=====E7JobTitlesMap:"+E7JobTitlesMap.size()+""+"
"); + String sql =" select t.id,t.jobtitlemark,t.jobtitlename,t.jobactivityid,t.jobdepartmentid,t.outkey,t.jobtitlecode \n" + + " from hrmjobtitles t\n" + + " where t.jobdepartmentid is not null "+jobTitlesWhere ; + bb.writeLog("==SynHrmJobTitlesData===sql:"+sql+""+"
"); + rs.execute(sql); + while(rs.next()) { + totle_count++; + + String e9id = Util.null2String(rs.getString("id")); + String jobtitlename = Util.null2String(rs.getString("jobtitlename")).trim(); + String jobtitlemark = Util.null2String(rs.getString("jobtitlemark")).trim(); + String jobactivityid = Util.null2String(rs.getString("jobactivityid")); + String jobdepartmentid = Util.null2String(rs.getString("jobdepartmentid")); + String outkey = Util.null2String(rs.getString("outkey")); + String jobtitlecode = Util.null2String(rs.getString("jobtitlecode")); + String departmentid = Util.null2String(rs.getString("jobtitlecode")); + + Map E9Map = new HashMap(); + E9Map.put("e9id", e9id); + E9Map.put("jobtitlename", jobtitlename); + E9Map.put("jobtitlemark", jobtitlemark); + E9Map.put("jobtitlecode", jobtitlecode); + + String jobactivityOutkey = ""; + if(StringUtils.isNotBlank(jobactivityid)){ + if(E9JobActivitiesMap.containsKey(jobactivityid)){ + jobactivityOutkey = E9JobActivitiesMap.get(jobactivityid); + } + } + + String departmentOutkey = ""; + if(StringUtils.isNotBlank(jobdepartmentid)){ + if(E9DepartmentMap.containsKey(jobdepartmentid)){ + departmentOutkey = E9DepartmentMap.get(jobdepartmentid); + } + } + + if(StringUtils.isNotBlank(outkey)){ + if(E7JobTitlesMap.containsKey(outkey)){ + if(StringUtils.isNotBlank(jobactivityOutkey) && E7HrmactivitiesList.contains(jobactivityOutkey)){ + Map jobTitlesMap = E7JobTitlesMap.get(outkey); + String e7jobtitlemark = Util.null2String(jobTitlesMap.get("e7jobtitlemark")).trim(); + String e7jobtitlename = Util.null2String(jobTitlesMap.get("e7jobtitlename")).trim(); + String e7jobactivityid = Util.null2String(jobTitlesMap.get("e7jobactivityid")).trim(); + String e7jobdepartmentid = Util.null2String(jobTitlesMap.get("e7jobdepartmentid")).trim(); + String e7jobtitlecode = Util.null2String(jobTitlesMap.get("e7jobtitlecode")).trim(); + if(!e7jobtitlemark.equals(jobtitlemark) + || !e7jobtitlename.equals(jobtitlename) + || !e7jobactivityid.equals(jobactivityOutkey) + || !e7jobdepartmentid.equals(departmentOutkey) + || !e7jobtitlecode.equals(jobtitlecode) + ){ + E9Map.put("e7id", outkey); + E9Map.put("jobdepartmentid", departmentOutkey); + E9Map.put("jobactivityid", jobactivityOutkey); + updateTitleList.add(E9Map); + }else{ + unchanged_count++; + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + if(StringUtils.isNotBlank(jobactivityOutkey) && E7HrmactivitiesList.contains(jobactivityOutkey)){ + E9Map.put("jobdepartmentid", departmentOutkey); + E9Map.put("jobactivityid", jobactivityOutkey); + insertTitleList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + } + }else{ + if(StringUtils.isNotBlank(jobactivityOutkey) && E7HrmactivitiesList.contains(jobactivityOutkey)){ + E9Map.put("jobdepartmentid", departmentOutkey); + E9Map.put("jobactivityid", jobactivityOutkey); + insertTitleList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + } + } + + bb.writeLog("updateTitleList:"+updateTitleList.size()); + bb.writeLog("insertTitleList:"+insertTitleList.size()); + + for(Map item : insertTitleList) + { + String e9id = Util.null2String(item.get("e9id")); + String keyString = ""; + String valueString = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + + boolean isTrue2 = false; + String insert_sql = " insert into hrmjobtitles("+keyString+") values("+valueString+")"; + bb.writeLog("insert_sql:"+insert_sql+"
"); + String newE7Id = insertE7Data(rsd,insert_sql,insert_fail_count); + bb.writeLog("newE7Id:"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + sql = "update hrmjobtitles set outkey= '"+newE7Id+"' where id = "+e9id; + isTrue2 = rs.executeUpdate(sql); + bb.writeLog("sql:"+sql+" "+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + } + + for(Map item : updateTitleList) { + String e7id = Util.null2String(item.get("e7id")); + String e9id = Util.null2String(item.get("e9id")); + String valuesStr = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key + "='" + value + "'" : "," + key + "='" + value + "'"; + } + } + + String update_sql = " update hrmjobtitles set "+valuesStr+" where id = '"+e7id+"' "; + boolean isTrue = updateE7SubcompanyData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" "+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",sql); + sqlMap.put("dataid",update_sql); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + } + + try{ + String gwtbjg = "岗位共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + Map mainMap = new HashMap(); + mainMap.put("gwtbjg",gwtbjg); + if(dataErrorList.size() > 0 ){ + if(dataErrorList.size() <= 150){ + String gwycsj = String.join(",", dataErrorList); + mainMap.put("gwycsj",gwycsj); + }else{ + String gwycsj = String.join(",", dataErrorList.subList(0,150)); + mainMap.put("gwycsj",gwycsj); + } + } + recordSynMainlog(mainid,mainMap); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail5(mainid,sqlList); + } + }catch (Exception e){ + + } + + } + + private Map getE9DepartmentOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmdepartment " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + + /*** + * + * @return + */ + private List getE7HrmActivitiesList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7HrmactivitiesList = new ArrayList(); + String sql = " select id from hrmjobactivities " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7HrmactivitiesList.add(id); + } + return E7HrmactivitiesList; + } + + + private List getE7HrmTitlesList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7JobtitlesList = new ArrayList(); + String sql = " select id from hrmjobactivities " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7JobtitlesList.add(id); + } + return E7JobtitlesList; + } + + + private Map getE9HrmJobActivitiesList(){ + + RecordSet rs = new RecordSet(); + Map E7JobtitlesMap = new HashMap(); + String sql =" select id,outkey from hrmjobactivities where id in(select jobactivityid from hrmjobtitles) "; + rs.execute(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + E7JobtitlesMap.put(id,outkey); + } + return E7JobtitlesMap; + } + + + private Map> getE7HrmTitlesList2(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7JobtitlesMap = new HashMap>(); + String sql = " select id,jobtitlemark,jobtitlename,jobactivityid,jobdepartmentid,jobtitlecode from hrmjobtitles " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String e7jobtitlemark = Util.null2String(rsd.getString("jobtitlemark")); + String e7jobtitlename = Util.null2String(rsd.getString("jobtitlename")); + String e7jobactivityid = Util.null2String(rsd.getString("jobactivityid")); + String e7jobdepartmentid = Util.null2String(rsd.getString("jobdepartmentid")); + String e7jobtitlecode = Util.null2String(rsd.getString("jobtitlecode")); + + Map jobtitlesMap = new HashMap(); + jobtitlesMap.put("e7jobtitlemark",e7jobtitlemark); + jobtitlesMap.put("e7jobtitlename",e7jobtitlename); + jobtitlesMap.put("e7jobactivityid",e7jobactivityid); + jobtitlesMap.put("e7jobdepartmentid",e7jobdepartmentid); + jobtitlesMap.put("e7jobtitlecode",e7jobtitlecode); + E7JobtitlesMap.put(id,jobtitlesMap); + } + return E7JobtitlesMap; + } + + + private String insertE7Data(RecordSetDataSource rsd,String insert_sql,int insert_fail_count){ + String newE7Id = ""; + BaseBean bb = new BaseBean(); + bb.writeLog("insert-sql:"+insert_sql); + boolean isTrue = rsd.execute(insert_sql); + if(isTrue){ + String sql = " select max(id) as id from hrmjobtitles "; + rsd.executeSql(sql); + if(rsd.next()){ + newE7Id = Util.null2String(rsd.getString("id")); + } + }else{ + insert_fail_count++; + } + return newE7Id; + } + + + private boolean updateE7SubcompanyData(RecordSetDataSource rsd,String update_sql){ + BaseBean bb = new BaseBean(); + bb.writeLog("update-sql:"+update_sql); + boolean isTrue = rsd.execute(update_sql); + return isTrue; + } + + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail5(String mainid,List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt5(mainid,gwid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } + +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSynResourceUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynResourceUtil.java new file mode 100644 index 0000000..9d7db71 --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSynResourceUtil.java @@ -0,0 +1,770 @@ +package weaver.interfaces.zjrb.job; + +import org.apache.commons.lang3.StringUtils; +import org.bouncycastle.cert.dane.DANEException; +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 HrmSynResourceUtil { + + + public void SynHrmresourceData(String dataResource,String mainid,String hrmresourceWhere){ + BaseBean bb = new BaseBean(); + + bb.writeLog("SynHrmresourceData"); + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + int modifier = 1; + int creater = 1; + + 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> sqlList = new ArrayList>(); + + + RecordSet rs = new RecordSet(); + List> insertResourceList = new ArrayList>(); + List> updateResourceList = new ArrayList>(); + + Map E9ResourceMap = getE9ResourceOutkey(); + Map E9DepartmentMap = getE9DepartmentOutkey(); + Map E9SubcompanyMap = getE9SubcompanyOutkey(); + Map E9JobtitleMap = getE9HrmJobTitlesOutkey(); + + + List E7DepartmentList = getE7HrmDepartmentList(dataResource); + List E7SubcompanyList = getE7HrmSubcompanyList(dataResource); + List E7JobTitleList = getE7HrmJobTitlesList(dataResource); + Map> E7ResourceMap = getE7HrmResourceMap(dataResource); + + String sql =" select id,workcode,status,dsporder,mobile,jobtitle,password,lastname,loginid,systemlanguage," + + " sex,birthday,lastmoddate,createdate,jobactivitydesc,departmentid," + + " subcompanyid1,seclevel,accounttype,belongto,managerid,outkey,telephone,email,startdate,enddate " + + " from hrmresource where 1=1 " + hrmresourceWhere+ + " connect by prior id = managerid \n" + + " start with managerid is null"; + + rs.executeQuery(sql); + while(rs.next()) { + totle_count++; + + // String managerstr = Util.null2String(rs.getString("managerstr")).trim(); + // String locationid = Util.null2String(rs.getString("locationid")).trim(); + + String e9id = Util.null2String(rs.getString("id")); + String loginid = Util.null2String(rs.getString("loginid")).trim(); + String password = Util.null2String(rs.getString("password")).trim(); + String lastname = Util.null2String(rs.getString("lastname")).trim(); + String sex = Util.null2String(rs.getString("sex")).trim(); + String birthday = Util.null2String(rs.getString("birthday")).trim(); + String systemlanguage = Util.null2String(rs.getString("systemlanguage")).trim(); + String telephone = Util.null2String(rs.getString("telephone")).trim(); + String mobile = Util.null2String(rs.getString("mobile")).trim(); + String email = Util.null2String(rs.getString("email")).trim(); + String jobtitle = Util.null2String(rs.getString("jobtitle")).trim(); + String seclevel = Util.null2String(rs.getString("seclevel")).trim(); + String departmentid = Util.null2String(rs.getString("departmentid")).trim(); + String subcompanyid1 = Util.null2String(rs.getString("subcompanyid1")).trim(); + String managerid = Util.null2String(rs.getString("managerid")).trim(); + String dsporder = Util.null2String(rs.getString("dsporder")).trim(); + String workcode = Util.null2String(rs.getString("workcode")).trim(); + String status = Util.null2String(rs.getString("status")).trim(); + String lastmoddate = Util.null2String(rs.getString("lastmoddate")).trim(); + String createdate = Util.null2String(rs.getString("createdate")).trim(); + String jobactivitydesc = Util.null2String(rs.getString("jobactivitydesc")).trim(); + String accounttype = Util.null2String(rs.getString("accounttype")).trim(); + String belongto = Util.null2String(rs.getString("belongto")).trim(); + String outkey = Util.null2String(rs.getString("outkey")).trim(); + String startdate = Util.null2String(rs.getString("startdate")).trim(); + String enddate = Util.null2String(rs.getString("enddate")).trim(); + + if(StringUtils.isBlank(systemlanguage)){ + systemlanguage = "7"; + } + if("-1".equals(accounttype) || StringUtils.isBlank(accounttype)){ + accounttype = "0"; + } + if("-1".equals(belongto) || "0".equals(belongto)){ + belongto = ""; + } + if("0".equals(managerid) || "-1".equals(managerid)){ + managerid = ""; + } + + Map ResourceMap = new HashMap(); + ResourceMap.put("e9id", e9id); + ResourceMap.put("workcode", workcode); + ResourceMap.put("status", status); + ResourceMap.put("dsporder", dsporder); + ResourceMap.put("mobile", mobile); + ResourceMap.put("password", password); + ResourceMap.put("lastname", lastname); + ResourceMap.put("loginid", loginid); + ResourceMap.put("systemlanguage", systemlanguage); + ResourceMap.put("sex", sex); + ResourceMap.put("birthday", birthday); + ResourceMap.put("lastmoddate", lastmoddate); + ResourceMap.put("createdate", createdate); + ResourceMap.put("jobactivitydesc", jobactivitydesc); + ResourceMap.put("seclevel", seclevel); + ResourceMap.put("accounttype", accounttype); + ResourceMap.put("email", email); + ResourceMap.put("enddate", enddate); + ResourceMap.put("telephone", telephone); + ResourceMap.put("startdate", startdate); + + String managerOutkey = ""; + if(StringUtils.isNotBlank(managerid)){ + if(E9ResourceMap.containsKey(managerid)){ + managerOutkey = E9ResourceMap.get(managerid); + } + } + + String belongtoOutkey = ""; + if(StringUtils.isNotBlank(belongto)){ + if(E9ResourceMap.containsKey(belongto)){ + belongtoOutkey = E9ResourceMap.get(belongto); + } + } + + String departmentOutkey = ""; + if(StringUtils.isNotBlank(departmentid+"")){ + if(E9DepartmentMap.containsKey(departmentid)){ + departmentOutkey = E9DepartmentMap.get(departmentid); + } + } + + String subcompanyOutkey = ""; + if(StringUtils.isNotBlank(subcompanyid1)){ + if(E9SubcompanyMap.containsKey(subcompanyid1)){ + subcompanyOutkey = E9SubcompanyMap.get(subcompanyid1); + } + } + + String jobtitleOutkey = ""; + if(StringUtils.isNotBlank(jobtitle)){ + if(E9JobtitleMap.containsKey(jobtitle)){ + jobtitleOutkey = E9JobtitleMap.get(jobtitle); + } + } + + if(StringUtils.isNotBlank(outkey)){ + if(E7ResourceMap.containsKey(outkey)){ + if(StringUtils.isNotBlank(departmentOutkey) && E7DepartmentList.contains(departmentOutkey)){ + if(StringUtils.isNotBlank(subcompanyOutkey) && E7SubcompanyList.contains(subcompanyOutkey)){ + if(StringUtils.isNotBlank(jobtitleOutkey) && E7JobTitleList.contains(jobtitleOutkey)){ + + Map resourceMap = E7ResourceMap.get(outkey); + + String e7lastname = Util.null2String(resourceMap.get("e7lastname")); + String e7loginid = Util.null2String(resourceMap.get("e7loginid")); + String e7password = Util.null2String(resourceMap.get("e7password")); + String e7sex = Util.null2String(resourceMap.get("e7sex")); + String e7birthday = Util.null2String(resourceMap.get("e7birthday")); + String e7mobile = Util.null2String(resourceMap.get("e7mobile")); + String e7jobtitle = Util.null2String(resourceMap.get("e7jobtitle")); + String e7departmentid = Util.null2String(resourceMap.get("e7departmentid")); + String e7subcompanyid1 = Util.null2String(resourceMap.get("e7subcompanyid1")); + String e7seclevel = Util.null2String(resourceMap.get("e7seclevel")); + String e7workcode = Util.null2String(resourceMap.get("e7workcode")); + String e7status = Util.null2String(resourceMap.get("e7status")); + String e7dsporder = Util.null2String(resourceMap.get("e7dsporder")); + String e7systemlanguage = Util.null2String(resourceMap.get("e7systemlanguage")); + String e7accounttype = Util.null2String(resourceMap.get("e7accounttype")); + String e7belongto = Util.null2String(resourceMap.get("e7belongto")); + String e7managerid = Util.null2String(resourceMap.get("e7managerid")); + String e7email = Util.null2String(resourceMap.get("e7email")); + String e7jobactivitydesc = Util.null2String(resourceMap.get("e7jobactivitydesc")); + String e7startdate = Util.null2String(resourceMap.get("e7startdate")); + String e7enddate = Util.null2String(resourceMap.get("e7enddate")); + String e7telephone = Util.null2String(resourceMap.get("e7telephone")).trim(); + String e7lastmoddate = Util.null2String(resourceMap.get("e7lastmoddate")).trim(); + String e7createdate = Util.null2String(resourceMap.get("e7createdate")).trim(); + + if(!e7lastname.equals(lastname) + || !e7loginid.equals(loginid) + || !e7sex.equals(sex) + || !e7password.equals(password) + || !e7birthday.equals(birthday) + || !e7mobile.equals(mobile) + || !e7jobtitle.equals(jobtitleOutkey) + || !e7departmentid.equals(departmentOutkey) + || !e7subcompanyid1.equals(subcompanyOutkey) + || !e7seclevel.equals(seclevel) + || !e7workcode.equals(workcode) + || !e7status.equals(status) + || !e7dsporder.equals(dsporder) + || !e7systemlanguage.equals(systemlanguage) + || !e7accounttype.equals(accounttype) + || !e7belongto.equals(belongtoOutkey) + || !e7managerid.equals(managerOutkey) + || !e7email.equals(email) + || !e7jobactivitydesc.equals(jobactivitydesc) + || !e7startdate.equals(startdate) + || !e7enddate.equals(enddate) + || !e7telephone.equals(telephone) + || !e7lastmoddate.equals(lastmoddate) + || !e7createdate.equals(createdate) + ){ + ResourceMap.put("e7id", outkey); + ResourceMap.put("jobtitle", jobtitleOutkey); + ResourceMap.put("belongto", belongtoOutkey); + ResourceMap.put("managerid", managerOutkey); + ResourceMap.put("departmentid", departmentOutkey); + ResourceMap.put("subcompanyid1", subcompanyOutkey); + updateResourceList.add(ResourceMap); + }else{ + unchanged_count++; + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + if(StringUtils.isNotBlank(departmentOutkey) && E7DepartmentList.contains(departmentOutkey)){ + if(StringUtils.isNotBlank(subcompanyOutkey) && E7SubcompanyList.contains(subcompanyOutkey)){ + if(StringUtils.isNotBlank(jobtitleOutkey) && E7JobTitleList.contains(jobtitleOutkey)){ + ResourceMap.put("jobtitle", jobtitleOutkey); + ResourceMap.put("belongto", belongtoOutkey); + ResourceMap.put("managerid", managerOutkey); + ResourceMap.put("departmentid", departmentOutkey); + ResourceMap.put("subcompanyid1", subcompanyOutkey); + insertResourceList.add(ResourceMap); + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + } + }else{ + if(StringUtils.isNotBlank(departmentOutkey) && E7DepartmentList.contains(departmentOutkey)){ + if(StringUtils.isNotBlank(subcompanyOutkey) && E7SubcompanyList.contains(subcompanyOutkey)){ + if(StringUtils.isNotBlank(jobtitleOutkey) && E7JobTitleList.contains(jobtitleOutkey)){ + ResourceMap.put("jobtitle", jobtitleOutkey); + ResourceMap.put("belongto", belongtoOutkey); + ResourceMap.put("managerid", managerOutkey); + ResourceMap.put("departmentid", departmentOutkey); + ResourceMap.put("subcompanyid1", subcompanyOutkey); + insertResourceList.add(ResourceMap); + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + }else{ + data_error_count++; + dataErrorList.add(e9id); + } + } + } + + bb.writeLog("insertResourceList:"+insertResourceList.size()+"
"); + bb.writeLog("updateResourceList:"+updateResourceList.size()+"
"); + + for(int i=0;i"); + if(e7newid > -1){ + Map item = insertResourceList.get(i); + String e9id = Util.null2String(item.get("e9id")); + String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); + item.put("lastmodid", modifier); + item.put("createrid", creater); + item.put("textfield1", uuid); + item.put("id", e7newid); + + String keyString = ""; + String valueString = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + + boolean isTrue2 = false; + String insert_sql = " insert into hrmresource("+keyString+") values("+valueString+")"; + boolean isTrue = insertE7HrmResourceData(rsd,insert_sql,uuid,insert_fail_count); + bb.writeLog("insert_sql:"+insert_sql+" newE7Id:"+e7newid+ ",isTrue:"+isTrue+"
"); + if(isTrue){ + String up_sql = " update hrmresource set outkey="+e7newid+" where id = "+e9id; + isTrue2 = rs.executeUpdate(up_sql); + bb.writeLog("up_sql:"+up_sql+" isTrue2:"+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + } + } + + for(int i=0;i item = updateResourceList.get(i); + String e7id = Util.null2String(item.get("e7id")); + String e9id = Util.null2String(item.get("e9id")); + String valuesStr = ""; + Iterator> it = item.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + } + + String update_sql = "update hrmresource set " + valuesStr + " where id = "+e7id+""; + boolean isTrue = updateE7HrmResourceData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" isTrue:"+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + } + + try{ + String rytbjg = "人员共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + Map mainMap = new HashMap(); + mainMap.put("rytbjg",rytbjg); + if(dataErrorList.size() > 0){ + if(dataErrorList.size() <= 150){ + String ryycsj = String.join(",", dataErrorList); + mainMap.put("ryycsj",ryycsj); + }else{ + String ryycsj = String.join(",", dataErrorList.subList(0,150)); + mainMap.put("ryycsj",ryycsj); + } + } + + recordSynMainlog(mainid,mainMap); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail6(mainid,sqlList); + } + }catch (Exception e){ + + } + + } + + private Map getE9SubcompanyOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmsubcompany " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + + private Map getE9DepartmentOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmdepartment " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + + private Map getE9ResourceOutkey(){ + + Map E9ResourceMap = new HashMap(); + RecordSet rs = new RecordSet(); + String sql =" select id,outkey from hrmresource "; + rs.executeQuery(sql); + while(rs.next()) { + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + E9ResourceMap.put(id,outkey); + } + + return E9ResourceMap; + } + + + + + + private Map getE9HrmJobTitlesOutkey(){ + + RecordSet rs = new RecordSet(); + + Map E9JobtitleMap = new HashMap(); + String sql = " select id,outkey from hrmjobtitles " ; + rs.execute(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + E9JobtitleMap.put(id,outkey); + } + return E9JobtitleMap; + } + + + private List getE7HrmJobTitlesList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7JobtitlesList = new ArrayList(); + String sql = " select id from hrmjobtitles " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7JobtitlesList.add(id); + } + return E7JobtitlesList; + } + + + private List getE7HrmDepartmentList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7DepartmentList = new ArrayList(); + String sql = " select id from hrmdepartment " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7DepartmentList.add(id); + } + return E7DepartmentList; + } + + + private List getE7HrmSubcompanyList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7SubcompanyList = new ArrayList(); + String sql = " select id from hrmsubcompany " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7SubcompanyList.add(id); + } + return E7SubcompanyList; + } + + + private List getE7HrmResourceList(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7ResourceList = new ArrayList(); + String sql = " select id from hrmresource " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7ResourceList.add(id); + } + return E7ResourceList; + } + + + private Map> getE7HrmResourceMap(String dataResource){ + + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7ResourceMap = new HashMap>(); + String sql =" select id,workcode,status,dsporder,mobile,jobtitle,password,lastname,loginid,systemlanguage," + + " sex,birthday,lastmoddate,createdate,jobactivitydesc,departmentid," + + " subcompanyid1,seclevel,accounttype,belongto,managerid,telephone,email,enddate,startdate " + + " from hrmresource " ; + rsd.execute(sql); + while (rsd.next()){ + String e7id = Util.null2String(rsd.getString("id")).trim(); + String e7workcode = Util.null2String(rsd.getString("workcode")).trim(); + String e7status = Util.null2String(rsd.getString("status")).trim(); + String e7dsporder = Util.null2String(rsd.getString("dsporder")).trim(); + String e7mobile = Util.null2String(rsd.getString("mobile")).trim(); + String e7jobtitle = Util.null2String(rsd.getString("jobtitle")).trim(); + String e7password = Util.null2String(rsd.getString("password")).trim(); + String e7lastname = Util.null2String(rsd.getString("lastname")).trim(); + String e7loginid = Util.null2String(rsd.getString("loginid")).trim(); + String e7systemlanguage = Util.null2String(rsd.getString("systemlanguage")).trim(); + String e7sex = Util.null2String(rsd.getString("sex")).trim(); + String e7birthday = Util.null2String(rsd.getString("birthday")).trim(); + String e7lastmoddate = Util.null2String(rsd.getString("lastmoddate")).trim(); + String e7createdate = Util.null2String(rsd.getString("createdate")).trim(); + String e7jobactivitydesc = Util.null2String(rsd.getString("jobactivitydesc")).trim(); + String e7departmentid = Util.null2String(rsd.getString("departmentid")).trim(); + String e7subcompanyid1 = Util.null2String(rsd.getString("subcompanyid1")).trim(); + String e7seclevel = Util.null2String(rsd.getString("seclevel")).trim(); + String e7accounttype = Util.null2String(rsd.getString("accounttype")).trim(); + String e7belongto = Util.null2String(rsd.getString("belongto")).trim(); + String e7managerid = Util.null2String(rsd.getString("managerid")).trim(); + String e7telephone = Util.null2String(rsd.getString("telephone")).trim(); + String e7email = Util.null2String(rsd.getString("email")).trim(); + String e7startdate = Util.null2String(rsd.getString("startdate")).trim(); + String e7enddate = Util.null2String(rsd.getString("enddate")).trim(); + + + if(StringUtils.isBlank(e7systemlanguage)){ + e7systemlanguage = "7"; + } + + if("-1".equals(e7accounttype) || StringUtils.isBlank(e7accounttype)){ + e7accounttype = "0"; + } + + if("-1".equals(e7belongto) || "0".equals(e7belongto)){ + e7belongto = ""; + } + + if("0".equals(e7managerid)){ + e7managerid = ""; + } + + Map resourceMap = new HashMap(); + resourceMap.put("e7lastname",e7lastname); + resourceMap.put("e7loginid",e7loginid); + resourceMap.put("e7password",e7password); + resourceMap.put("e7sex",e7sex); + resourceMap.put("e7birthday",e7birthday); + resourceMap.put("e7mobile",e7mobile); + resourceMap.put("e7jobtitle",e7jobtitle); + resourceMap.put("e7departmentid",e7departmentid); + resourceMap.put("e7subcompanyid1",e7subcompanyid1); + resourceMap.put("e7seclevel",e7seclevel); + resourceMap.put("e7workcode",e7workcode); + resourceMap.put("e7status",e7status); + resourceMap.put("e7dsporder",e7dsporder); + resourceMap.put("e7systemlanguage",e7systemlanguage); + resourceMap.put("e7accounttype",e7accounttype); + resourceMap.put("e7belongto",e7belongto); + resourceMap.put("e7managerid",e7managerid); + resourceMap.put("e7telephone",e7telephone); + resourceMap.put("e7email",e7email); + resourceMap.put("e7lastmoddate",e7lastmoddate); + resourceMap.put("e7createdate",e7createdate); + resourceMap.put("e7jobactivitydesc",e7jobactivitydesc); + resourceMap.put("e7startdate",e7startdate); + resourceMap.put("e7enddate",e7enddate); + + E7ResourceMap.put(e7id,resourceMap); + } + return E7ResourceMap; + } + + + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail6(String mainid,List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt6(mainid,ryid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } + + + private boolean insertE7HrmResourceData(RecordSetDataSource rsd,String insert_sql,String uuid,int insert_fail_count){ + boolean isTrue = false; + BaseBean bb = new BaseBean(); + try{ + isTrue = rsd.execute(insert_sql); + if(!isTrue){ + insert_fail_count++; + } + }catch (Exception e){ + bb.writeLog(e); + } + return isTrue; + } + + + private boolean updateE7HrmResourceData(RecordSetDataSource rsd,String update_sql){ + BaseBean bb = new BaseBean(); + boolean isTrue = false; + try{ + isTrue = rsd.execute(update_sql); + }catch (Exception e){ + bb.writeLog(e); + } + return isTrue; + } + + + private int getE7HrmResourceId(RecordSetDataSource rsd){ + int id = -1; + BaseBean bb = new BaseBean(); + try{ + String sql = " update SequenceIndex set currentid = (select currentid from SequenceIndex where indexdesc='resourceid'\n" + + " )+1 where indexdesc='resourceid' "; + boolean isTrue = rsd.executeSql(sql); + if(isTrue){ + sql = " select currentid from SequenceIndex where indexdesc='resourceid' "; + rsd.execute(sql); + if(rsd.next()){ + id = Util.getIntValue(Util.null2String(rsd.getString("currentid"))); + } + } + }catch (Exception e){ + bb.writeLog(e); + } + return id; + } + + +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSynSubcompanyUtil.java b/src/weaver/interfaces/zjrb/job/HrmSynSubcompanyUtil.java new file mode 100644 index 0000000..e140d69 --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSynSubcompanyUtil.java @@ -0,0 +1,647 @@ +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 HrmSynSubcompanyUtil { + + public String SynHrmSubcompanyData(String dataResource,String subcompanyWhere){ + + 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> sqlList = new ArrayList>(); + + Map E9SubcompanyOutkey = getE9SubcompanyOutkey(); + Map> E7SubcompanyMap = getE7HrmSubcompanyList2(dataResource); + bb.writeLog("E9SubcompanyOutkey:"+E9SubcompanyOutkey.size()); + bb.writeLog("E7SubcompanyMap:"+E7SubcompanyMap.size()); + + List> topInsertList = new ArrayList>(); + List> topUpdateList = new ArrayList>(); + + List topList = new ArrayList<>(); + String sql =" select id,subcompanyname,subcompanydesc,supsubcomid,canceled,subcompanycode,outkey,showorder,tlevel " + + " from hrmsubcompany \n" + + " where (supsubcomid is null or supsubcomid = -1 or supsubcomid = 0) \n" ; + rs.execute(sql); + while(rs.next()) { + totle_count++; + + String e9Id = Util.null2String(rs.getString("id")); + topList.add(e9Id); + + String subcompanyname = Util.null2String(rs.getString("subcompanyname")); + String subcompanydesc = Util.null2String(rs.getString("subcompanydesc")); + String canceled = Util.null2String(rs.getString("canceled")); + String subcompanycode = Util.null2String(rs.getString("subcompanycode")); + String supsubcomid = Util.null2String(rs.getString("supsubcomid")).trim(); + String showorder = Util.null2String(rs.getString("showorder")); + String tlevel = Util.null2String(rs.getString("tlevel")).trim(); + String outkey = Util.null2String(rs.getString("outkey")); //E7的hrmsubcompany的ID + + Map E9Map = new HashMap(); + E9Map.put("e9id", e9Id); + E9Map.put("subcompanyname", subcompanyname); + E9Map.put("subcompanydesc", subcompanydesc); + E9Map.put("canceled", canceled); + E9Map.put("showorder", showorder); + E9Map.put("subcompanycode", subcompanycode); + E9Map.put("tlevel", tlevel); + + String supsubcomOutKey = "" ; + if("0".equals(supsubcomid) || "-1".equals(supsubcomid) || StringUtils.isBlank(supsubcomid+"")){ + supsubcomOutKey = "0"; + }else{ + if(E9SubcompanyOutkey.containsKey(supsubcomid)){ + supsubcomOutKey = E9SubcompanyOutkey.get(supsubcomid); + } + } + + if(StringUtils.isNotBlank(outkey)){ + if(E7SubcompanyMap.containsKey(outkey)){ + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + Map E7SubcompanyInfo = E7SubcompanyMap.get(outkey); + String e7subcompanyname = Util.null2String(E7SubcompanyInfo.get("subcompanyname")); + String e7subcompanydesc = Util.null2String(E7SubcompanyInfo.get("subcompanydesc")); + String e7supsubcomid = Util.null2String(E7SubcompanyInfo.get("supsubcomid")); + String e7canceled = Util.null2String(E7SubcompanyInfo.get("canceled")); + String e7subcompanycode = Util.null2String(E7SubcompanyInfo.get("subcompanycode")); + String e7tlevel = Util.null2String(E7SubcompanyInfo.get("tlevel")); + String e7showorder = Util.null2String(E7SubcompanyInfo.get("showorder")); + + if(!e7subcompanyname.equals(subcompanyname) + || !e7subcompanydesc.equals(subcompanydesc) + || !e7supsubcomid.equals(supsubcomOutKey) + || !e7canceled.equals(canceled) + || !e7subcompanycode.equals(subcompanycode) + || !e7tlevel.equals(tlevel) + || !e7showorder.equals(showorder) + ){ + E9Map.put("supsubcomid", supsubcomOutKey); + E9Map.put("e7id", outkey); + topUpdateList.add(E9Map); + }else{ + unchanged_count++; + } + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + }else{ + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + + E9Map.put("supsubcomid", supsubcomOutKey); + topInsertList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + } + }else{ + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + + E9Map.put("supsubcomid", supsubcomOutKey); + topInsertList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + } + } + + bb.writeLog("topUpdateList:"+topUpdateList.size()); + bb.writeLog("topInsertList:"+topInsertList.size()); + + for(Map E9Map : topInsertList){ + + String e9id = Util.null2String(E9Map.get("e9id")); + + String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase(); + E9Map.put("url",uuid); + E9Map.put("companyid",1);//默认公司是1 + + String keyString = ""; + String valueString = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + + try { + boolean isTrue2 = false; + + String insert_sql = " insert into hrmsubcompany("+keyString+") values("+valueString+")"; + bb.writeLog("insert_sql:"+insert_sql+"
"); + String newE7Id = insertE7Data(rsd,insert_sql,uuid,insert_fail_count); + bb.writeLog("newE7Id:"+newE7Id+"
"); + if(StringUtils.isNotBlank(newE7Id)){ + sql = "update hrmsubcompany set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(sql); + bb.writeLog("sql:"+sql+" "+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + }catch (Exception e){ + bb.writeLog("e:"+e); + insert_exp_count++; + } + } + + for(Map E9Map : topUpdateList){ + String e7id = Util.null2String(E9Map.get("e7id")); + String e9id = Util.null2String(E9Map.get("e9id")); + + String valuesStr = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + } + + try{ + String update_sql = " update hrmsubcompany set "+valuesStr+" where id = '"+e7id+"' "; + boolean isTrue = updateE7SubcompanyData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" "+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",sql); + sqlMap.put("dataid",update_sql); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + }catch (Exception e){ + bb.writeLog("e:"+e); + update_exp_count++; + } + } + + List> insertList = new ArrayList>(); + List> updateList = new ArrayList>(); + + for(String subcompanyid : topList){ + if(StringUtils.isNotBlank(subcompanyid)){ + sql = " select id,subcompanyname,subcompanydesc,supsubcomid,showorder,\n" + + " canceled,subcompanycode,outkey,tlevel from hrmsubcompany \n" + + " where 1=1 " + subcompanyWhere + + " connect by prior id = supsubcomid \n" + + " start with supsubcomid = "+subcompanyid; + rs.executeQuery(sql); + while (rs.next()){ + + totle_count++; + + String e9Id = Util.null2String(rs.getString("id")); + String subcompanyname = Util.null2String(rs.getString("subcompanyname")); + String subcompanydesc = Util.null2String(rs.getString("subcompanydesc")); + String canceled = Util.null2String(rs.getString("canceled")); + String subcompanycode = Util.null2String(rs.getString("subcompanycode")); + String supsubcomid = Util.null2String(rs.getString("supsubcomid")).trim(); + String showorder = Util.null2String(rs.getString("showorder")).trim(); + String outkey = Util.null2String(rs.getString("outkey")); //E7的hrmsubcompany的ID + String tlevel = Util.null2String(rs.getString("tlevel")); + + Map E9Map = new HashMap(); + E9Map.put("e9id", e9Id); + E9Map.put("subcompanyname", subcompanyname); + E9Map.put("subcompanydesc", subcompanydesc); + E9Map.put("canceled", canceled); + E9Map.put("showorder", showorder); + E9Map.put("subcompanycode", subcompanycode); + E9Map.put("tlevel", tlevel); + + String supsubcomOutKey = "" ; + if("0".equals(supsubcomid) || "-1".equals(supsubcomid) || StringUtils.isBlank(supsubcomid+"")){ + supsubcomOutKey = "0"; + }else{ + if(E9SubcompanyOutkey.containsKey(supsubcomid)){ + supsubcomOutKey = E9SubcompanyOutkey.get(supsubcomid); + } + } + + if(StringUtils.isNotBlank(outkey)){ + if(E7SubcompanyMap.containsKey(outkey)){ + + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + Map E7SubcompanyInfo = E7SubcompanyMap.get(outkey); + String e7subcompanyname = Util.null2String(E7SubcompanyInfo.get("subcompanyname")); + String e7subcompanydesc = Util.null2String(E7SubcompanyInfo.get("subcompanydesc")); + String e7supsubcomid = Util.null2String(E7SubcompanyInfo.get("supsubcomid")); + String e7canceled = Util.null2String(E7SubcompanyInfo.get("canceled")); + String e7subcompanycode = Util.null2String(E7SubcompanyInfo.get("subcompanycode")); + String e7tlevel = Util.null2String(E7SubcompanyInfo.get("tlevel")); + String e7showorder = Util.null2String(E7SubcompanyInfo.get("showorder")); + + if(!e7subcompanyname.equals(subcompanyname) + || !e7subcompanydesc.equals(subcompanydesc) + || !e7supsubcomid.equals(supsubcomOutKey) + || !e7canceled.equals(canceled) + || !e7subcompanycode.equals(subcompanycode) + || !e7tlevel.equals(tlevel) + || !e7showorder.equals(showorder) + ){ + E9Map.put("supsubcomid", supsubcomOutKey); + E9Map.put("e7id", outkey); + updateList.add(E9Map); + }else{ + unchanged_count++; + } + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + }else{ +// data_error_count++; +// dataErrorList.add(e9Id); + + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + + E9Map.put("supsubcomid", supsubcomOutKey); + insertList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + } + }else{ + if(StringUtils.isNotBlank(supsubcomOutKey) && ("0".equals(supsubcomOutKey) || E7SubcompanyMap.containsKey(supsubcomOutKey))){ + + E9Map.put("supsubcomid", supsubcomOutKey); + insertList.add(E9Map); + }else{ + data_error_count++; + dataErrorList.add(e9Id); + } + } + } + } + } + + bb.writeLog("insertList:"+insertList.size()+"
"); + bb.writeLog("updateList:"+updateList.size()+"
"); + + for(Map E9Map : insertList){ + + String e9id = Util.null2String(E9Map.get("e9id")); + + String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase(); + E9Map.put("url",uuid); + E9Map.put("companyid",1);//默认公司是1 + + String keyString = ""; + String valueString = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + if(!"e9id".equals(key) && !"e7id".equals(key)){ + keyString += keyString == "" ? key : ","+key ; + valueString += valueString == "" ? "'"+value+"'" : ",'"+value+"' "; + } + } + + try { + boolean isTrue2 = false; + + String insert_sql = " insert into hrmsubcompany("+keyString+") values("+valueString+")"; + + + String newE7Id = insertE7Data(rsd,insert_sql,uuid,insert_fail_count); + bb.writeLog("insert_sql:"+insert_sql+" "+newE7Id+"
"); + + if(StringUtils.isNotBlank(newE7Id)){ + sql = " update hrmsubcompany set outkey="+newE7Id+" where id = "+e9id; + isTrue2 = rs.executeUpdate(sql); + bb.writeLog("sql:"+sql+" "+isTrue2+"
"); + if(isTrue2){ + insert_success_count++; + }else{ + insert_exp_count++; + } + }else{ + insert_exp_count++; + } + + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",insert_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue2 ? "true" : "false"); + sqlList.add(sqlMap); + }catch (Exception e){ + bb.writeLog("e:"+e); + insert_exp_count++; + } + } + + for(Map E9Map : updateList){ + String e7id = Util.null2String(E9Map.get("e7id")); + String e9id = Util.null2String(E9Map.get("e9id")); + + String valuesStr = ""; + Iterator> it = E9Map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + if(!"e7id".equals(key) && !"e9id".equals(key)){ + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + } + + try{ + String update_sql = "update hrmsubcompany set "+valuesStr+" where id = '"+e7id+"' "; + boolean isTrue = updateE7SubcompanyData(rsd,update_sql); + bb.writeLog("update_sql:"+update_sql+" "+isTrue+"
"); + if(isTrue){ + update_success_count++; + }else{ + update_fail_count++; + } + Map sqlMap = new HashMap(); + sqlMap.put("zxyj",update_sql); + sqlMap.put("dataid",e9id); + sqlMap.put("zxjg",isTrue ? "true" : "false"); + sqlList.add(sqlMap); + }catch (Exception e){ + bb.writeLog("e:"+e); + update_exp_count++; + } + } + + String mainid = ""; + try{ + String fbtbjg = "分部共:"+totle_count+"行数据,数据一致工:"+unchanged_count+"。新增成功:"+insert_success_count+",新增失败:"+insert_fail_count+",新增异常:"+insert_exp_count+"。"+ + "更新成功:"+update_success_count+",更新失败:"+update_fail_count+",更新异常:"+update_exp_count+"。"+ + "数据异常(ID在E7中不存在):"+data_error_count ; + + Map mainMap = new HashMap(); + mainMap.put("fbtbjg",fbtbjg); + if(dataErrorList.size() > 0){ + if(dataErrorList.size() <= 150){ + String bmycsj = String.join(",", dataErrorList); + mainMap.put("fbycsj",bmycsj); + }else{ + String bmycsj = String.join(",", dataErrorList.subList(0,150)); + mainMap.put("fbycsj",bmycsj); + } + } + mainid = recordSynMainlog("",mainMap); + if(StringUtils.isNotBlank(mainid)){ + insertLogDetail1(mainid,sqlList); + } + }catch (Exception e){ + bb.writeLog(e); + } + + + return mainid; + } + + + private String insertE7Data(RecordSetDataSource rsd,String insert_sql,String uuid,int insert_fail_count){ + String newE7Id = ""; + BaseBean bb = new BaseBean(); + bb.writeLog("insert-sql:"+insert_sql); + boolean isTrue = rsd.execute(insert_sql); + if(isTrue){ + String sql = " select id from hrmsubcompany where url = '"+uuid+"' "; + rsd.executeSql(sql); + if(rsd.next()){ + newE7Id = Util.null2String(rsd.getString("id")); + } + }else{ + insert_fail_count++; + } + return newE7Id; + } + + + private boolean updateE7SubcompanyData(RecordSetDataSource rsd,String update_sql){ + BaseBean bb = new BaseBean(); + bb.writeLog("update-sql:"+update_sql); + boolean isTrue = rsd.execute(update_sql); + return isTrue; + } + + private Map getE9SubcompanyOutkey(){ + + RecordSet rs = new RecordSet(); + Map outkeyMap = new HashMap(); + String sql = " select id,outkey from hrmsubcompany " ; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String outkey = Util.null2String(rs.getString("outkey")); + outkeyMap.put(id,outkey); + } + return outkeyMap; + } + + /*** + * + * @return + */ + private List getE7HrmSubcompanyList(String dataResource){ + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + List E7SubcompanyList = new ArrayList(); + Map> E7SubcompanyMap = new HashMap>(); + String sql = " select id from hrmsubcompany " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + E7SubcompanyList.add(id); + } + return E7SubcompanyList; + } + + + private Map> getE7HrmSubcompanyList2(String dataResource){ + RecordSetDataSource rsd = new RecordSetDataSource(dataResource); + Map> E7SubcompanyMap = new HashMap>(); + String sql = " select id,subcompanyname,subcompanydesc,supsubcomid,canceled,subcompanycode,tlevel,showorder from hrmsubcompany " ; + rsd.execute(sql); + while (rsd.next()){ + String id = Util.null2String(rsd.getString("id")); + String subcompanyname = Util.null2String(rsd.getString("subcompanyname")); + String subcompanydesc = Util.null2String(rsd.getString("subcompanydesc")); + String supsubcomid = Util.null2String(rsd.getString("supsubcomid")); + String canceled = Util.null2String(rsd.getString("canceled")); + + String subcompanycode = Util.null2String(rsd.getString("subcompanycode")); + + String tlevel = Util.null2String(rsd.getString("tlevel")); + String showorder = Util.null2String(rsd.getString("showorder")); + + + Map subcompanyMap = new HashMap<>(); + subcompanyMap.put("id",id); + subcompanyMap.put("subcompanyname",subcompanyname); + subcompanyMap.put("subcompanydesc",subcompanydesc); + subcompanyMap.put("supsubcomid",supsubcomid); + subcompanyMap.put("canceled",canceled); + subcompanyMap.put("subcompanycode",subcompanycode); + subcompanyMap.put("tlevel",tlevel); + subcompanyMap.put("showorder",showorder); + E7SubcompanyMap.put(id,subcompanyMap); + + } + return E7SubcompanyMap; + } + + + private String recordSynMainlog(String id,Map mainMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String dataid = "" ; + String uf_table = "uf_zzjgtbrz"; + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");//设置日期格式 + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + if(StringUtils.isBlank(id)){ + + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + + String uuid = UUID.randomUUID().toString(); + mainMap.put("uuid",uuid); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + boolean boo = rs.execute(sql); + bb.writeLog("insert-istrue:"+boo); + if(boo) + { + + sql = " select * from "+uf_table+" where uuid='"+uuid+"' " ; + bb.writeLog("sql:"+sql); + rs.execute(sql); + if(rs.next()){ + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("dataid:"+dataid); + if(!"".equals(dataid)) + { + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(dataid)); + } + } + } + }else{ + dataid = id ; + String valuesStr = ""; + Iterator> it = mainMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String key = Util.null2String(entry.getKey()); + String value = Util.null2String(entry.getValue()); + valuesStr += valuesStr == "" ? key+"='"+value+"'" : ","+key+"='"+value+"'" ; + } + + if(StringUtils.isNotBlank(valuesStr)){ + sql = "update "+uf_table+" set " + valuesStr + " where id = "+id+""; + boolean isTrue = rs.execute(sql); + bb.writeLog("update-istrue:"+isTrue); + } + } + return dataid; + } + + /*** + * + * @param dt1List + * @param mainid + */ + private void insertLogDetail1(String mainid,List> dt1List){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + for(int i=0;i dt1Map = dt1List.get(i); + String dataid = dt1Map.get("dataid"); + String zxyj = dt1Map.get("zxyj"); + if(StringUtils.isNotBlank(zxyj) && zxyj.contains("'")){ + zxyj = zxyj.replace("'", "''"); + } + String zxjg = dt1Map.get("zxjg"); + + String sql = " insert into uf_zzjgtbrz_dt1(mainid,fbid,zxyj,zxjg) values("+mainid+",'"+dataid+"','"+zxyj+"','"+zxjg+"')" ; + bb.writeLog("sql:"+sql); + boolean istrue = rs.executeUpdate(sql); + bb.writeLog("istrue:"+istrue); + } + } +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_All_Job.java b/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_All_Job.java new file mode 100644 index 0000000..3c891f7 --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_All_Job.java @@ -0,0 +1,20 @@ +package weaver.interfaces.zjrb.job; + +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.interfaces.schedule.BaseCronJob; + +public class HrmSyn_E92E7_All_Job extends BaseCronJob { + + @Override + public void execute() { + String dataResource = "E92E7_ORG"; + BaseBean bb = new BaseBean(); + HrmSynDaoTime_E92E7 hrmSynDaoTime_E92E7 = new HrmSynDaoTime_E92E7(); + bb.writeLog("组织架构E9同步E7定时任务--全量--START--->", TimeUtil.getCurrentTimeString()); + hrmSynDaoTime_E92E7.allSyn(dataResource); + bb.writeLog("组织架构E9同步E7定时任务--全量--END--->", TimeUtil.getCurrentTimeString()); + } + + +} diff --git a/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_Time_Job.java b/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_Time_Job.java new file mode 100644 index 0000000..755ca2e --- /dev/null +++ b/src/weaver/interfaces/zjrb/job/HrmSyn_E92E7_Time_Job.java @@ -0,0 +1,22 @@ +package weaver.interfaces.zjrb.job; + +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.interfaces.schedule.BaseCronJob; + +public class HrmSyn_E92E7_Time_Job extends BaseCronJob { + + @Override + public void execute() { + + BaseBean bb = new BaseBean(); + String dataResource = "E92E7_ORG"; + int days = 7; + HrmSynDaoTime_E92E7 hrmSynDaoTime_E92E7 = new HrmSynDaoTime_E92E7(); + bb.writeLog("组织架构E9同步E7定时任务---START--->", TimeUtil.getCurrentTimeString()); + hrmSynDaoTime_E92E7.syn(days,dataResource); + bb.writeLog("组织架构E9同步E7定时任务---END--->", TimeUtil.getCurrentTimeString()); + } + + +} diff --git a/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand.java b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand.java new file mode 100644 index 0000000..076e653 --- /dev/null +++ b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand.java @@ -0,0 +1,262 @@ +package weaver.interfaces.zjrb.mode; + +import oracle.sql.CLOB; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.ConnStatement; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.resource.ResourceComInfo; +import weaver.soa.workflow.request.RequestInfo; + +import java.io.BufferedReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ExaminationPaperModeExpand extends AbstractModeExpandJavaCodeNew { + /** + * 执行模块扩展动作 + * @param param + * param包含(但不限于)以下数据 + * user 当前用户 + * importtype 导入方式(仅在批量导入的接口动作会传输) 1 追加,2覆盖,3更新,获取方式(int)param.get("importtype") + * 导入链接中拼接的特殊参数(仅在批量导入的接口动作会传输),比如a=1,可通过param.get("a")获取参数值 + * 页面链接拼接的参数,比如b=2,可以通过param.get("b")来获取参数 + * @return + */ + public Map doModeExpand(Map param) { + Map result = new HashMap(); + try { + User user = (User)param.get("user"); + int billid = -1;//数据id + int modeid = -1;//模块id + RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo"); + if(requestInfo!=null){ + billid = Util.getIntValue(requestInfo.getRequestid()); + modeid = Util.getIntValue(requestInfo.getWorkflowid()); + if(billid>0&&modeid>0){ + //------请在下面编写业务逻辑代码------ + saveUserData2(billid+""); + } + } + } catch (Exception e) { + result.put("errmsg","自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + +// public void saveUserData(String billid){ +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// if (("oracle").equals(rs.getDBType())) { +// String ksfw = ""; +// ConnStatement statement = null; +// try{ +// statement = new ConnStatement(); +// String sql = "select ksfw from uf_ks_kjb where id = " + billid; +// statement.setStatementSql(sql, false); +// statement.executeQuery(); +// if (statement.next()) { +// CLOB clob = statement.getClob("ksfw"); +// String readline = ""; +// StringBuffer clobStrBuff = new StringBuffer(""); +// BufferedReader clobin = new BufferedReader(clob.getCharacterStream()); +// while ((readline = clobin.readLine()) != null) +// clobStrBuff = clobStrBuff.append(readline); +// clobin.close(); +// ksfw = clobStrBuff.toString(); +// } +// }catch(Exception e){ +// bb.writeLog("获取文档内容元素内容异常",e); +// }finally { +// statement.close(); +// } +// +// if(StringUtils.isNotBlank(ksfw)){ +// String[] userids = ksfw.split(","); +// for(int i=0;i> userMap = new HashMap>(); + String sql = " select id,zgs,fgs,sgs from picc_hrm_org_path_view"; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String zgs = Util.null2String(rs.getString("zgs")); + String fgs = Util.null2String(rs.getString("fgs")); + String sgs = Util.null2String(rs.getString("sgs")); + Map gsMap = new HashMap(); + gsMap.put("zgs",zgs); + gsMap.put("fgs",fgs); + gsMap.put("sgs",sgs); + userMap.put(id,gsMap); + } + + sql = " delete from uf_ks_kjb_dt2 where mainid = "+billid ; + boolean isTrue = rs.executeUpdate(sql); + if(isTrue){ + String[] userids = ksfw.split(","); + + bb.writeLog("userids:"+userids.length); + + List batchList = new ArrayList<>(); //存放每条数据更新时需要的参数 + for(int i=0;i gsMap =userMap.get(userid); + if(gsMap.containsKey("zgs")){ + zgs = gsMap.get("zgs"); + } + if(gsMap.containsKey("fgs")){ + fgs = gsMap.get("fgs"); + } + if(gsMap.containsKey("sgs")){ + sgs = gsMap.get("sgs"); + } + } + + List userList = new ArrayList(); + userList.add(billid); + userList.add(userid); + userList.add(deptid); + userList.add("0"); + userList.add(zgs); + userList.add(fgs); + userList.add(sgs); + batchList.add(userList); + } + + bb.writeLog("batchList:"+batchList.size()); + + if(batchList.size()>0){ + sql = " insert into uf_ks_kjb_dt2(mainid,ks,ksssbm,zt,kssszgs,ksssfgs,kssssgs) values(?,?,?,?,?,?,?)"; + boolean isTrue2 = rs.executeBatchSql(sql,batchList); + bb.writeLog("isTrue2:"+isTrue2); + } + } + } + } + + long end = System.currentTimeMillis(); + bb.writeLog("ExaminationPaperModeExpand-"+billid+":"+end); + +// else if("mysql".equalsIgnoreCase(rs.getDBType())){ +// String ksfw = ""; +// try{ +// String sql = "select ksfw from uf_ks_kjb where id = " + billid; +// rs.execute(sql); +// if (rs.next()) { +// ksfw = Util.null2String(rs.getString("ksfw")); +// } +// }catch(Exception e){ +// bb.writeLog("saveUserData2-e:"+e); +// }finally { +// } +// +// if(StringUtils.isNotBlank(ksfw)){ +// String sql = " delete from uf_ks_kjb_dt2 where mainid = "+billid ; +// boolean isTrue = rs.executeUpdate(sql); +// if(isTrue){ +// String[] userids = ksfw.split(","); +// bb.writeLog("userids:"+userids.length); +// List batchList = new ArrayList(); //存放每条数据更新时需要的参数 +// for(int i=0;i userList = new ArrayList<>(); +// userList.add(billid); +// userList.add(userid); +// userList.add(deptid); +// userList.add("0"); +// batchList.add(userList); +// } +// +// bb.writeLog("batchList:"+batchList.size()); +// if(batchList.size()>0){ +// sql = " insert into uf_ks_kjb_dt2(mainid,ks,ksssbm,zt) values(?,?,?,?)"; +// boolean isTrue3 = rs.executeBatchSql(sql,batchList); +// bb.writeLog("isTrue2:"+isTrue3); +// } +// } +// } +// } + } + }catch (Exception e){ + bb.writeLog("e:"+e+"
"); + } + } +} diff --git a/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2.java b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2.java new file mode 100644 index 0000000..1de5805 --- /dev/null +++ b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2.java @@ -0,0 +1,92 @@ +package weaver.interfaces.zjrb.mode; + +import oracle.sql.CLOB; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.ConnStatement; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.soa.workflow.request.RequestInfo; + +import java.io.BufferedReader; +import java.util.HashMap; +import java.util.Map; + +public class ExaminationPaperModeExpand2 extends AbstractModeExpandJavaCodeNew { + + public Map doModeExpand(Map param) { + Map result = new HashMap(); + try { + User user = (User)param.get("user"); + int billid = -1;//数据id + int modeid = -1;//模块id + RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo"); + if(requestInfo!=null){ + billid = Util.getIntValue(requestInfo.getRequestid()); + modeid = Util.getIntValue(requestInfo.getWorkflowid()); + if(billid>0&&modeid>0){ + //------请在下面编写业务逻辑代码------ + + saveUserData2(billid+""); + } + } + } catch (Exception e) { + result.put("errmsg","自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + public void saveUserData2(String billid){ + BaseBean bb = new BaseBean(); + + long start = System.currentTimeMillis(); + bb.writeLog("ExaminationPaperModeExpand2-"+billid+":"+start); + + try{ + if(StringUtils.isNotBlank(billid)){ + RecordSet rs = new RecordSet(); + if(("oracle").equals(rs.getDBType())){ + bb.writeLog("oracle"); + String ksfw = ""; + ConnStatement statement = null; + try{ + statement = new ConnStatement(); + String sql = "select ksfw from uf_ks_kjb where id = " + billid; + statement.setStatementSql(sql, false); + statement.executeQuery(); + if (statement.next()) { + CLOB clob = statement.getClob("ksfw"); + String readline = ""; + StringBuffer clobStrBuff = new StringBuffer(""); + BufferedReader clobin = new BufferedReader(clob.getCharacterStream()); + while ((readline = clobin.readLine()) != null) + clobStrBuff = clobStrBuff.append(readline); + clobin.close(); + ksfw = clobStrBuff.toString(); + } + }catch(Exception e){ + bb.writeLog("saveUserData2-e:"+e); + }finally { + statement.close(); + } + + long start2 = System.currentTimeMillis(); + bb.writeLog("ExaminationPaperModeExpand2-"+billid+":"+start2); + + if(StringUtils.isNotBlank(ksfw)) { + ExaminationPaperModeExpand2Runnable examinationPaperModeExpand2Runnable = new ExaminationPaperModeExpand2Runnable(ksfw,billid); + new Thread(examinationPaperModeExpand2Runnable).start(); + } + + long end = System.currentTimeMillis(); + bb.writeLog("ExaminationPaperModeExpand2-"+billid+":"+end); + } + } + }catch (Exception e){ + bb.writeLog("e:"+e+"
"); + } + } +} diff --git a/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2Runnable.java b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2Runnable.java new file mode 100644 index 0000000..423eec2 --- /dev/null +++ b/src/weaver/interfaces/zjrb/mode/ExaminationPaperModeExpand2Runnable.java @@ -0,0 +1,98 @@ +package weaver.interfaces.zjrb.mode; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.resource.ResourceComInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ExaminationPaperModeExpand2Runnable implements Runnable{ + private String ksfw; + private String billid; + public ExaminationPaperModeExpand2Runnable(String ksfw,String billid){ + this.ksfw = ksfw; + this.billid = billid; + } + + @Override + public void run() { + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + ResourceComInfo resourceComInfo = null; + try { + resourceComInfo = new ResourceComInfo(); + if(StringUtils.isNotBlank(ksfw)){ + Map> userMap = new HashMap>(); + String sql = " select id,zgs,fgs,sgs from picc_hrm_org_path_view"; + rs.executeQuery(sql); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + String zgs = Util.null2String(rs.getString("zgs")); + String fgs = Util.null2String(rs.getString("fgs")); + String sgs = Util.null2String(rs.getString("sgs")); + Map gsMap = new HashMap(); + gsMap.put("zgs",zgs); + gsMap.put("fgs",fgs); + gsMap.put("sgs",sgs); + userMap.put(id,gsMap); + } + + sql = " delete from uf_ks_kjb_dt2 where mainid = "+billid ; + boolean isTrue = rs.executeUpdate(sql); + if(isTrue){ + String[] userids = ksfw.split(","); + bb.writeLog("userids:"+userids.length); + List batchList = new ArrayList<>(); //存放每条数据更新时需要的参数 + for(int i=0;i gsMap =userMap.get(userid); + if(gsMap.containsKey("zgs")){ + zgs = gsMap.get("zgs"); + } + if(gsMap.containsKey("fgs")){ + fgs = gsMap.get("fgs"); + } + if(gsMap.containsKey("sgs")){ + sgs = gsMap.get("sgs"); + } + } + + List userList = new ArrayList(); + userList.add(billid); + userList.add(userid); + userList.add(deptid); + userList.add("0"); + userList.add(zgs); + userList.add(fgs); + userList.add(sgs); + batchList.add(userList); + } + bb.writeLog("batchList:"+batchList.size()); + if(batchList.size()>0){ + sql = " insert into uf_ks_kjb_dt2(mainid,ks,ksssbm,zt,kssszgs,ksssfgs,kssssgs) values(?,?,?,?,?,?,?)"; + boolean isTrue2 = rs.executeBatchSql(sql,batchList); + bb.writeLog("isTrue2:"+isTrue2); + } + } + } + }catch (Exception e){ + + } + } +} diff --git a/src/weaver/system/VotingThreadManager.java b/src/weaver/system/VotingThreadManager.java new file mode 100644 index 0000000..6d9ba2d --- /dev/null +++ b/src/weaver/system/VotingThreadManager.java @@ -0,0 +1,627 @@ +package weaver.system; + +import java.util.*; + +import org.apache.commons.lang.StringUtils; +import com.cloudstore.dev.api.bean.MessageBean; +import com.cloudstore.dev.api.bean.MessageType; +import com.cloudstore.dev.api.util.Util_Message; +import com.engine.msgcenter.biz.ConfigManager; +import com.engine.msgcenter.biz.WeaMessageTypeConfig; +import com.google.common.collect.Sets; +import com.weaver.general.TimeUtil; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.resource.ResourceComInfo; +import weaver.sms.SMSManager; +import weaver.sms.SmsFromMouldEnum; +import weaver.systeminfo.SystemEnv; +import weaver.voting.VotingMailReminder; +import weaver.voting.VotingManager; + +/** + * 调查 - 开始前 和 结束前提醒 定时任务 + */ +public class VotingThreadManager + extends + BaseBean implements ThreadWork { + + private SMSManager smsManager; + + private ResourceComInfo resourceComInfo; + + private SysRemindWorkflow sysRemindWorkflow ; + + public VotingThreadManager() { + + } + + private void init() { + try { + //调查短信提醒,分权由创建人所在分部进行提醒 + smsManager = new SMSManager(); + smsManager.setFromMould(SmsFromMouldEnum.VOTING); + sysRemindWorkflow = new SysRemindWorkflow(); + resourceComInfo = new ResourceComInfo(); + } catch (Exception ex) { + } + } + + /** + * 1、短信提醒 + * 2、邮件提醒 + * 3、流程提醒 + * 4、消息中心提醒 + */ + public void doThreadWork() { + //writeLog("VotingThreadManager-------------"); + this.init(); //初始化发送方法 + + String resourceID = ""; + String ID = ""; + String subject = ""; + String begindate = ""; + String begintime = ""; + String enddate = ""; + String endtime = ""; + String mailstrs = ""; + int createrid = 1; + + //描述 + String descr = ""; + //调查提醒类型 + String remindtype = ""; + String messageTitle = ""; + String messageBody = ""; + String messageTitleSMS = ""; + + StringBuffer stringBuffer = new StringBuffer(); + + RecordSet recordSet = new RecordSet(); + RecordSet recordSet2 = new RecordSet(); + boolean isoracle = (recordSet2.getDBType()).equals("oracle"); + + /* ================== 开始前提醒 ================== */ + //将所有在进行中的、设置了开始前提醒的、还未提醒的 调查过滤出来。 + if (isoracle) { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND NVL(remindtimebeforestart,'0') <>'0'"); + stringBuffer.append(" AND NVL(hasremindedbeforestart,'0')='0' "); + stringBuffer.append(" AND status = '1' "); + } else { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND remindtimebeforestart <>'' and remindtimebeforestart is not null "); + stringBuffer.append(" AND (hasremindedbeforestart is null OR hasremindedbeforestart = '')"); + stringBuffer.append(" AND status = 1 "); + + } + //writeLog("stringBuffer---remindtimebeforestart---:"+stringBuffer.toString()); + recordSet.executeQuery(stringBuffer.toString()); + + + String currentTime = TimeUtil.getCurrentTimeString(); + + + while (recordSet.next()) { + ID = recordSet.getString("id"); + createrid = recordSet.getInt("createrid"); + + //对比时间, + begindate = recordSet.getString("begindate"); + begintime = recordSet.getString("begintime"); + + if("".equals(begindate)){ + continue; + } + + enddate = recordSet.getString("enddate"); + endtime = recordSet.getString("endtime"); + + //begindate begintime组合值 与 datenow timenow 组合值相减,的值 如果<= remindtimebeforestart的话,就提醒 + String startTime = begindate+" "+begintime+":00"; + + //提醒类型 + remindtype = "," + recordSet.getString("remindtype") + ","; + //调查 标题 + subject = recordSet.getString("subject"); + //备注 + descr = recordSet.getString("descr"); + + mailstrs = ""; + + double ddStart = Util.getDoubleValue(recordSet.getString("remindtimebeforestart"),0) * 60; + + if (TimeUtil.timeInterval(currentTime, startTime) <= ddStart) { + + recordSet2.executeUpdate("update voting set hasremindedbeforestart='1' where id= ?", ID);//修改该调查已提醒 + + VotingManager votingManager = new VotingManager(); + Set undoUserSet = votingManager.getUndoUserSetAll(ID); //对还没进行投票的人提醒 + smsManager.setMouldkey(ID); + smsManager.setSubcompanyid(resourceComInfo.getSubCompanyID(createrid+"")); + writeLog("调查开始前短信提醒提醒:调查ID:"+ID+"-----createrid:"+createrid+"-----subcompanyid:"+resourceComInfo.getSubCompanyID(createrid+"")); + for (Iterator iter = undoUserSet.iterator(); iter.hasNext();) { + resourceID = iter.next(); + + if (remindtype.contains(",1,")) { //短信提醒 + try { + messageTitleSMS = SystemEnv.getHtmlLabelName(507472, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + " " + subject + " " + + begindate + " " + begintime + " " + SystemEnv.getHtmlLabelName(530, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + + " " + SystemEnv.getHtmlLabelName(507473, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))); + smsManager.sendSMS(resourceComInfo.getMobile(resourceID), "" + messageTitleSMS); + //writeLog("调查发送开始前短信提醒:" + resourceID + ".TEL" + resourceComInfo.getMobile(resourceID) + "内容:" + messageTitle); + // poppupRemindInfoUtil.addPoppupRemindInfo(Integer.parseInt(resourceID), 12, String.valueOf(0), Integer.parseInt(ID)); + } catch (Exception e) {} + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + if (Util.null2String(resourceComInfo.getEmail(resourceID)).equals("")) continue; + if (mailstrs.equals("")) { + mailstrs = resourceComInfo.getEmail(resourceID); + } else { + mailstrs = mailstrs + "," + resourceComInfo.getEmail(resourceID); + } + //poppupRemindInfoUtil.addPoppupRemindInfo(Integer.parseInt(resourceID), 12, String.valueOf(0), Integer.parseInt(ID)); + } + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + + if(!"".equals(mailstrs)) { + messageTitle = SystemEnv.getHtmlLabelName(20051, 7) + " " + subject + " " + + begindate + " " + begintime + " " + SystemEnv.getHtmlLabelName(530, 7); + String detailOne=SystemEnv.getHtmlLabelName(505764, 7); + + new VotingMailReminder().sendMail(ID, mailstrs, messageTitle, detailOne); + } + writeLog("调查发送开始前邮件提醒,收件人:" + mailstrs + "标题:" + subject); + + } + +// if (remindtype.contains(",3,")) {//流程提醒 +// try { +// String toIds = StringUtils.join(undoUserSet, ","); +// if(!undoUserSet.isEmpty()) { +// sysRemindWorkflow.setSysRemindInfo(messageTitle, 0, 0, 0, 0, 1, toIds, messageTitle); +// } +// writeLog("调查发送开始前流程提醒:toIds=" + toIds + "内容:" + messageTitle); +// } catch (Exception e) { +// writeLog(e); +// } +// } + + //消息中心提醒 + if (remindtype.contains(",4,")) { + try { + String toIds = StringUtils.join(undoUserSet, ","); + if (!undoUserSet.isEmpty()) { + String detailTitle = "505764"; //您有新的网上调查即将开始,请注意及时参与 + + String content = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505766,weaver.general.ThreadVarLanguage.getLang())+"" + Util.formatMultiLang(resourceComInfo.getLastname(createrid + "")); + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505767,weaver.general.ThreadVarLanguage.getLang())+"" + begindate + " " + begintime; + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505768,weaver.general.ThreadVarLanguage.getLang())+"" + enddate + " " + endtime; + + sendToMessageCenter(ID, toIds, createrid, subject, detailTitle, content); + } + writeLog("调查发送开始前前消息中心提醒:toIds=" + toIds + "内容:" + subject); + } catch (Exception e) { + writeLog(e); + } + } + } + } + + /* ================== 开始时提醒 ================== */ + //将所有在进行中的、设置了开始时提醒的、还未提醒的 调查过滤出来。 + + stringBuffer = new StringBuffer(); + if (isoracle) { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND NVL(remindBeginTime,0) <> 0"); + stringBuffer.append(" AND NVL(hasRemindBeginTime,0)=0 "); + stringBuffer.append(" AND status = 1 "); + }else if((recordSet2.getDBType()).equals("postgresql")) + { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" and remindBeginTime <> 0 and remindBeginTime is not null "); + stringBuffer.append(" AND (hasRemindBeginTime is null OR hasRemindBeginTime = 0)"); + stringBuffer.append(" AND status = 1 "); + } + else { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND remindBeginTime <>'' and remindBeginTime <> 0 and remindBeginTime is not null "); + stringBuffer.append(" AND (hasRemindBeginTime is null OR hasRemindBeginTime = '' or hasRemindBeginTime = 0)"); + stringBuffer.append(" AND status = 1 "); + + } + //writeLog("stringBuffer---remindBeginTime---:"+stringBuffer.toString()); + recordSet.executeQuery(stringBuffer.toString()); + currentTime = TimeUtil.getCurrentTimeString(); + + while (recordSet.next()) { + ID = recordSet.getString("id"); + createrid = recordSet.getInt("createrid"); + + //对比时间, + begindate = recordSet.getString("begindate"); + begintime = recordSet.getString("begintime"); + + if("".equals(begindate)){ + continue; + } + + enddate = recordSet.getString("enddate"); + endtime = recordSet.getString("endtime"); + + String startTime = begindate+" "+begintime+":00"; + + //提醒类型 + remindtype = "," + recordSet.getString("remindtype") + ","; + //调查 标题 + subject = recordSet.getString("subject"); + //备注 + descr = recordSet.getString("descr"); + + mailstrs = ""; + if (TimeUtil.timeInterval(startTime, currentTime) >= 0) { + + recordSet2.executeUpdate("update voting set hasRemindBeginTime=1 where id= ?", ID);//修改该调查已提醒 + + VotingManager votingManager = new VotingManager(); + Set undoUserSet = votingManager.getUndoUserSetAll(ID); //对还没进行投票的人提醒 + smsManager.setMouldkey(ID); + smsManager.setSubcompanyid(resourceComInfo.getSubCompanyID(createrid+"")); + writeLog("调查开始时短信提醒提醒:调查ID:"+ID+"-----createrid:"+createrid+"-----subcompanyid:"+resourceComInfo.getSubCompanyID(createrid+"")); + for (Iterator iter = undoUserSet.iterator(); iter.hasNext();) { + resourceID = iter.next(); + + if (remindtype.contains(",1,")) { //短信提醒 + try { + messageTitleSMS = SystemEnv.getHtmlLabelName(507472, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + " " + subject + " " + + begindate + " " + begintime + " " + SystemEnv.getHtmlLabelName(530, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + + " " + SystemEnv.getHtmlLabelName(507473, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))); + smsManager.sendSMS(resourceComInfo.getMobile(resourceID), "" + messageTitleSMS); + //writeLog("发送开始时短信提醒:" + resourceID + ".TEL" + resourceComInfo.getMobile(resourceID) + "内容:" + messageTitle); + // poppupRemindInfoUtil.addPoppupRemindInfo(Integer.parseInt(resourceID), 12, String.valueOf(0), Integer.parseInt(ID)); + } catch (Exception e) {} + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + if (Util.null2String(resourceComInfo.getEmail(resourceID)).equals("")) continue; + if (mailstrs.equals("")) { + mailstrs = resourceComInfo.getEmail(resourceID); + } else { + mailstrs = mailstrs + "," + resourceComInfo.getEmail(resourceID); + } + //poppupRemindInfoUtil.addPoppupRemindInfo(Integer.parseInt(resourceID), 12, String.valueOf(0), Integer.parseInt(ID)); + } + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + + if(!"".equals(mailstrs)) { + messageTitle = SystemEnv.getHtmlLabelName(20051, 7) + " " + subject + " " + + begindate + " " + begintime + " " + SystemEnv.getHtmlLabelName(530, 7); + String detailOne=SystemEnv.getHtmlLabelName(505763, 7); + + new VotingMailReminder().sendMail(ID, mailstrs, messageTitle, detailOne); + } + writeLog("调查发送开始时邮件提醒,收件人:" + mailstrs + "标题:" + subject); + + } + +// if (remindtype.contains(",3,")) {//流程提醒 +// try { +// String toIds = StringUtils.join(undoUserSet, ","); +// if(!undoUserSet.isEmpty()) { +// sysRemindWorkflow.setSysRemindInfo(messageTitle, 0, 0, 0, 0, 1, toIds, messageTitle); +// } +// writeLog("调查发送开始时流程提醒:toIds=" + toIds + "内容:" + messageTitle); +// } catch (Exception e) { +// writeLog(e); +// } +// } + + //消息中心提醒 + if (remindtype.contains(",4,")) { + try { + String toIds = StringUtils.join(undoUserSet, ","); + if (!undoUserSet.isEmpty()) { + String detailTitle = "505763"; //您有新的网上调查需要填写 + + String content = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505766,weaver.general.ThreadVarLanguage.getLang())+"" + Util.formatMultiLang(resourceComInfo.getLastname(createrid + "")); + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505767,weaver.general.ThreadVarLanguage.getLang())+"" + begindate + " " + begintime; + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505768,weaver.general.ThreadVarLanguage.getLang())+"" + enddate + " " + endtime; + + sendToMessageCenter(ID, toIds, createrid, subject, detailTitle, content); + } + writeLog("调查发送开始时前消息中心提醒:toIds=" + toIds + "内容:" + subject); + } catch (Exception e) { + writeLog(e); + } + } + } + } + + /* ================== 结束前提醒 ================== */ + //将所有在进行中的、设置了开始前提醒的、还未提醒的 调查过滤出来。 + stringBuffer = new StringBuffer(); + if (isoracle) { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND NVL(remindtimebeforeend,'0') <>'0' "); + stringBuffer.append(" AND NVL(hasremindedbeforeend,'0') ='0' "); + stringBuffer.append(" AND status = 1 "); + } else { + stringBuffer.append("SELECT * FROM voting WHERE "); + stringBuffer.append(" remindtype is not null "); + stringBuffer.append(" AND remindtimebeforeend <>'' and remindtimebeforeend is not null "); + stringBuffer.append(" AND (hasremindedbeforeend is null OR hasremindedbeforeend = '')"); + stringBuffer.append(" AND status = 1 "); + } + + //writeLog("stringBuffer---remindtimebeforeend---:"+stringBuffer.toString()); + recordSet.executeQuery(stringBuffer.toString()); + + currentTime = TimeUtil.getCurrentTimeString(); + + while (recordSet.next()) { + ID = recordSet.getString("ID"); + createrid = recordSet.getInt("createrid"); + + begindate = recordSet.getString("begindate"); + begintime = recordSet.getString("begintime"); + + //对比时间, + enddate = Util.null2String(recordSet.getString("enddate")).trim(); + endtime = Util.null2String(recordSet.getString("endtime")).trim(); + + if("".equals(enddate)){ + continue; + } + + String votingEndTime = enddate+" "+endtime+":00"; + + //提醒类型 + remindtype = "," + recordSet.getString("remindtype") + ","; + //调查 标题 + subject = recordSet.getString("subject"); + //备注 + descr = recordSet.getString("descr"); + + mailstrs = ""; + + double ddEnd = Util.getDoubleValue(recordSet.getString("remindtimebeforeend"),0) * 60; + + if (TimeUtil.timeInterval(currentTime, votingEndTime) <= ddEnd) { + recordSet2.executeUpdate("update voting set hasremindedbeforeend='1' where id=?", ID); //修改该调查已提醒 + + VotingManager votingManager = new VotingManager(); + Set undoUserSet = votingManager.getUndoUserSetAll(ID); + smsManager.setMouldkey(ID); + smsManager.setSubcompanyid(resourceComInfo.getSubCompanyID(createrid+"")); + writeLog("调查结束前短信提醒提醒:调查ID:"+ID+"-----createrid:"+createrid+"-----subcompanyid:"+resourceComInfo.getSubCompanyID(createrid+"")); + for (Iterator iter = undoUserSet.iterator(); iter.hasNext();) { + resourceID = iter.next(); + + if (remindtype.contains(",1,")) { //短信提醒 + try { + messageTitleSMS = SystemEnv.getHtmlLabelName(507472, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + " " + subject + " " + + begindate + " " + begintime + " " + SystemEnv.getHtmlLabelName(530, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))) + + " " + SystemEnv.getHtmlLabelName(507473, Integer.parseInt(resourceComInfo.getSystemLanguage(resourceID))); + smsManager.sendSMS(resourceComInfo.getMobile(resourceID), "" + messageTitleSMS); + //writeLog("发送结束前短信提醒" + resourceID + ".TEL" + resourceComInfo.getMobile(resourceID) + "内容:" + messageTitle); + } catch (Exception e) {} + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + if (Util.null2String(resourceComInfo.getEmail(resourceID)).equals("")) continue; + if (mailstrs.equals("")) { + mailstrs = resourceComInfo.getEmail(resourceID); + } else { + mailstrs = mailstrs + "," + resourceComInfo.getEmail(resourceID); + } + } + + } + + if (remindtype.contains(",2,")) {//邮件提醒 + + if(!"".equals(mailstrs)) { + messageTitle = SystemEnv.getHtmlLabelName(20051, 7) + + " " + subject + " " + enddate + " " + endtime + " " + SystemEnv.getHtmlLabelName(405, 7); + String detailOne=SystemEnv.getHtmlLabelName(505765, 7); + + new VotingMailReminder().sendMail(ID, mailstrs, messageTitle, detailOne); + } + writeLog("调查发送结束前邮件提醒,收件人:" + mailstrs + "标题:" + subject); + + } + +// if (remindtype.contains(",3,")) { //流程提醒 +// try { +// String toIds = StringUtils.join(undoUserSet, ","); +// if(!undoUserSet.isEmpty()) { +// sysRemindWorkflow.setSysRemindInfo(messageTitle, 0, 0, 0, 0, 1, toIds, messageTitle); +// } +// writeLog("调查发送结束前流程提醒:toIds=" + toIds + "内容:" + messageTitle); +// } catch (Exception e) { +// writeLog(e); +// } +// } + + //消息中心提醒 + if (remindtype.contains(",4,")) { + try { + String toIds = StringUtils.join(undoUserSet, ","); + if(!undoUserSet.isEmpty()) { + String detailTitle = "505765"; //您有新的网上调查即将结束,请注意及时参与 + + String content = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505766,weaver.general.ThreadVarLanguage.getLang())+"" + Util.formatMultiLang(resourceComInfo.getLastname(createrid + "")); + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505767,weaver.general.ThreadVarLanguage.getLang())+"" + begindate + " " + begintime; + content += "
"; + content += ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(505768,weaver.general.ThreadVarLanguage.getLang())+"" + enddate + " " + endtime; + + sendToMessageCenter(ID, toIds, createrid, subject, detailTitle, content); + } + writeLog("调查发送结束前消息中心提醒:toIds=" + toIds + "内容:" + subject); + } catch (Exception e) { + writeLog(e); + } + } + } + } + } + + /** + * 发送消息中心提醒 + * @param allUsers + * @param createrId + * @param title + * @param detailTitle + * @param content + * @throws Exception + */ + public void sendToMessageCenter(String votingId, String allUsers, int createrId, String title, String detailTitle, String content) throws Exception { + String pcUrl = "/voting/votingPcRedirect.jsp?id=" + votingId + "&comefrom=msg"; + String mobileUrl = "/voting/mobile/votingMobileRedirect.jsp?id=" + votingId + "&comefrom=msg"; + ConfigManager configManager = new ConfigManager(); + // 2、默认规则检查用户配置,返回后台自定义消息类型和对应通过配置的用户 + // @param singPath 与需求变更之前的path参数含义一致,代表该消息类型详细配置中唯一标志值,各模块参考自己的值(有疑问请联系云商店-田泽法) + // @param userid 按默认规则检查的用户配置信息(检查多人参考重载方法) + BaseBean bb = new BaseBean(); + bb.writeLog("sendToMessageCenter-votingId:"+votingId); + bb.writeLog("sendToMessageCenter-allUsers:"+allUsers); + if(StringUtils.isNotBlank(votingId)) { + String votingType = getVotingType(votingId); + if(StringUtils.isNotBlank(votingType)){ + if ("90".equals(votingType)) { + Map> accessConfig = configManager.defaultRuleCheckConfig(MessageType.SURVEY_REMIND, allUsers, null); + // 3、遍历自定义消息类型集合 + for (Map.Entry> entry : accessConfig.entrySet()) { + // 4、构造消息实体 + MessageBean bean = Util_Message.createMessage(MessageType.SURVEY_REMIND, 0, title, detailTitle, content, pcUrl, mobileUrl, createrId); + // 5、获取新的自定义消息类型 + WeaMessageTypeConfig config = entry.getKey(); + // 6、新的自定义消息类型相关信息通知到消息实体bean上 + bean.setMessageConfig(config); + // 7、设置检查配置通过需要发送消息的用户 + bean.setUserList(Sets.newHashSet(entry.getValue())); + // 8、发送消息 + Util_Message.sendAndpublishMessage(bean); + } + } else { + + int votingcode = 0; + try { + votingcode = Util.getIntValue(votingType); + } catch (Exception e) { + + } + bb.writeLog("sendToMessageCenter-votingcode:"+votingcode); + + if (votingcode > 0) { + + MessageType messageType = MessageType.newInstance(votingcode); // 消息来源(见文档第四点补充 必填) + + Map> accessConfig = configManager.defaultRuleCheckConfig(messageType, allUsers, null); + bb.writeLog("sendToMessageCenter-accessConfig:"+accessConfig.size()); + // 3、遍历自定义消息类型集合 + for (Map.Entry> entry : accessConfig.entrySet()) { + + // 4、构造消息实体 + MessageBean bean = Util_Message.createMessage(messageType, 0, title, detailTitle, content, pcUrl, mobileUrl, createrId); + // 5、获取新的自定义消息类型 + WeaMessageTypeConfig config = entry.getKey(); + + bb.writeLog("sendToMessageCenter-config:"+config.isEnablePc() ); + // 6、新的自定义消息类型相关信息通知到消息实体bean上 + bean.setMessageConfig(config); + // 7、设置检查配置通过需要发送消息的用户 + + bb.writeLog("sendToMessageCenter-user:"+Sets.newHashSet(entry.getValue()).toString()); + bean.setUserList(Sets.newHashSet(entry.getValue())); + // 8、发送消息 + Util_Message.sendAndpublishMessage(bean); + } + } + } + }else{ + Map> accessConfig = configManager.defaultRuleCheckConfig(MessageType.SURVEY_REMIND, allUsers, null); + // 3、遍历自定义消息类型集合 + for (Map.Entry> entry : accessConfig.entrySet()) { + // 4、构造消息实体 + MessageBean bean = Util_Message.createMessage(MessageType.SURVEY_REMIND, 0, title, detailTitle, content, pcUrl, mobileUrl, createrId); + // 5、获取新的自定义消息类型 + WeaMessageTypeConfig config = entry.getKey(); + // 6、新的自定义消息类型相关信息通知到消息实体bean上 + bean.setMessageConfig(config); + // 7、设置检查配置通过需要发送消息的用户 + bean.setUserList(Sets.newHashSet(entry.getValue())); + // 8、发送消息 + Util_Message.sendAndpublishMessage(bean); + } + } + }else{ + Map> accessConfig = configManager.defaultRuleCheckConfig(MessageType.SURVEY_REMIND, allUsers, null); + // 3、遍历自定义消息类型集合 + for (Map.Entry> entry : accessConfig.entrySet()) { + // 4、构造消息实体 + MessageBean bean = Util_Message.createMessage(MessageType.SURVEY_REMIND, 0, title, detailTitle, content, pcUrl, mobileUrl, createrId); + // 5、获取新的自定义消息类型 + WeaMessageTypeConfig config = entry.getKey(); + // 6、新的自定义消息类型相关信息通知到消息实体bean上 + bean.setMessageConfig(config); + // 7、设置检查配置通过需要发送消息的用户 + bean.setUserList(Sets.newHashSet(entry.getValue())); + // 8、发送消息 + Util_Message.sendAndpublishMessage(bean); + } + } + } + + /*** + * + * @param votingId + * @return + */ + public String getVotingType(String votingId){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String xxid = ""; + try{ + String sql =" select xxid from uf_votingmsg where dclx in(\n" + + " select votingtype from voting where id = " + votingId + + " ) " ; + bb.writeLog("getVotingType-sql:"+sql); + rs.executeQuery(sql); + if(rs.next()){ + xxid = Util.null2String(rs.getString("xxid")); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("getVotingType-e:"+e); + } + + bb.writeLog("getVotingType-xxid:"+xxid); + return xxid; + } + +}