package com.tenwa.orginfo; import java.util.HashMap; import java.util.List; import java.util.Map; import jbo.sys.ORG_INFO; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.BizObjectQuery; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.util.ASResultSet; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; public class ETreeServcie { public String fromOrgID; public String toOrgId; public String moveType;//同级,下一级 public String pid; public static String loadTreeJsonByPid(String pid,String showType,String searchData){ try { BizObjectManager bm = JBOFactory.getBizObjectManager("jbo.awe.ORG_INFO"); String sql="select sortno,orgname,orgid,relativeorgid,orglevel from o where o.orgid like '"+pid+"%'"; if(showType.equals("Department")){ sql=sql+" and orglevel<=9"; }else if(showType.equals("Channel")){ sql=sql+" and orglevel>=9"; }else if(showType.equals("ThreeTree")){ sql="select sortno,orgname,orgid,relativeorgid,orglevel from o where o.orgid like '"+pid+"%' and orglevel>=9 and length(sortno)<=13"; }else if(showType.equals("SortTree")){ sql="select sortno,orgname,orgid,relativeorgid,orglevel from o where o.RELATIVEORGID ='"+pid+"'"; } if(searchData.length()>0) { sql=sql+" and exists (select orgid from "+ORG_INFO.CLASS_NAME+" oi where v.INSTR(o.orgid,oi.orgid )>=1 and oi.orgname like '%"+searchData+"%')"; } sql=sql+" order by o.sortno"; BizObjectQuery bqDest = bm.createQuery(sql); List orgList = bqDest.getResultList(false); ETree tree=new ETree("icon","leaf"); String id; String spid; String text; for(int i=0;iproperies=new HashMap(); id=orgList.get(i).getAttribute("orgid").getString(); spid=orgList.get(i).getAttribute("relativeorgid").getString(); text=orgList.get(i).getAttribute("orgname").getString(); properies.clear(); properies.put("sortno", orgList.get(i).getAttribute("sortno").getString()); properies.put("orgid", orgList.get(i).getAttribute("orgid").getString()); properies.put("relativeorgid", orgList.get(i).getAttribute("relativeorgid").getString()); properies.put("orglevel", orgList.get(i).getAttribute("orglevel").getString()); properies.put("orgname", orgList.get(i).getAttribute("orgname").getString()); tree.addTreeItem(new ETreeItem(id,spid,text,null,properies)); } return tree.loadTreeStrJson(); } catch (Exception e) { e.printStackTrace(); return "[]"; } } public String moveTreeItem(JBOTransaction tx) throws Exception { return this.moveTreeItemSameParentItem(tx); } public String moveTreeItemSameParentItem(JBOTransaction tx) throws Exception{ MapsortNoMap=this.loadMoveItemSortNo(tx); String fromSortNo=sortNoMap.get(this.fromOrgID); String toSortNo=sortNoMap.get(this.toOrgId); int clength=this.fromOrgID.length(); String sql1=""; String sql2=""; String parentSortNo=fromSortNo.substring(0,fromSortNo.length()-3); if(Float.valueOf(fromSortNo.replaceAll(parentSortNo, ""))>Float.valueOf(toSortNo.replaceAll(parentSortNo, ""))){ //从下同上移动 if(this.moveType.equals("top")){//移到元素上面 sql1="update org_info set sortno= (substr(sortno,0,"+clength+")+1)||substr(sortno,"+(clength+1)+") where substr(sortno,0,"+clength+")>="+toSortNo+" and substr(sortno,0,"+clength+")<"+fromSortNo+" and sortno like '"+parentSortNo+"%' "; sql2="update org_info set sortno= '"+toSortNo+"'||substr(sortno,"+(clength+1)+") where orgid like '"+this.fromOrgID+"%'"; }else if(this.moveType.equals("bottom")){//移到元素下面 sql1="update org_info set sortno= (substr(sortno,0,"+clength+")+1)||substr(sortno,"+(clength+1)+") where substr(sortno,0,"+clength+")>"+toSortNo+" and substr(sortno,0,"+clength+")<"+fromSortNo+" and sortno like '"+parentSortNo+"%' "; sql2="update org_info set sortno= ("+toSortNo+"+1)||substr(sortno,"+(clength+1)+") where orgid like '"+this.fromOrgID+"%'"; } }else{ //从上向下移 if(this.moveType.equals("top")){//移到元素上面 sql1="update org_info set sortno= (substr(sortno,0,"+clength+")-1)||substr(sortno,"+(clength+1)+") where substr(sortno,0,"+clength+")<"+toSortNo+" and substr(sortno,0,"+clength+")>="+fromSortNo+" and sortno like '"+parentSortNo+"%' "; sql2="update org_info set sortno= ("+toSortNo+"-1)||substr(sortno,"+(clength+1)+") where orgid like '"+this.fromOrgID+"%'"; }else if(this.moveType.equals("bottom")){//移到元素下面 sql1="update org_info set sortno= (substr(sortno,0,"+clength+")-1)||substr(sortno,"+(clength+1)+") where substr(sortno,0,"+clength+")<="+toSortNo+" and substr(sortno,0,"+clength+")>="+fromSortNo+" and sortno like '"+parentSortNo+"%' "; sql2="update org_info set sortno=("+toSortNo+")||substr(sortno,"+(clength+1)+") where orgid like '"+this.fromOrgID+"%'"; } } Transaction Sqlca =null; try { Sqlca = Transaction.createTransaction(tx); SqlObject asql = new SqlObject(sql1); System.out.println(sql1); Sqlca.executeSQL(asql); asql = new SqlObject(sql2); System.out.println(sql2); Sqlca.executeSQL(asql); Sqlca.commit(); } catch (Exception e) { e.printStackTrace(); }finally{ if(Sqlca!=null){ Sqlca.rollback(); Sqlca.disConnect(); } } System.out.println(sql1); System.out.println(sql2); return ""; } public MaploadMoveItemSortNo(JBOTransaction tx) throws Exception{ MapSortNoMap=new HashMap(); BizObjectManager bm = JBOFactory.getBizObjectManager("jbo.awe.ORG_INFO"); BizObjectQuery bqDest = bm.createQuery("select sortno,orgid from o where o.orgid in('"+this.fromOrgID+"','"+this.toOrgId+"')"); List orgList = bqDest.getResultList(false); for(BizObject org:orgList){ SortNoMap.put(org.getAttribute("orgid").getString(), org.getAttribute("sortno").getString()); } return SortNoMap; } public String getFromOrgID() { return fromOrgID; } public void setFromOrgID(String fromOrgID) { this.fromOrgID = fromOrgID; } public String getToOrgId() { return toOrgId; } public void setToOrgId(String toOrgId) { this.toOrgId = toOrgId; } public String getMoveType() { return moveType; } public void setMoveType(String moveType) { this.moveType = moveType; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } }