180 lines
6.8 KiB
Java
180 lines
6.8 KiB
Java
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<BizObject> orgList = bqDest.getResultList(false);
|
|
ETree tree=new ETree("icon","leaf");
|
|
String id;
|
|
String spid;
|
|
String text;
|
|
|
|
for(int i=0;i<orgList.size();i++){
|
|
Map<String,String>properies=new HashMap<String,String>();
|
|
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{
|
|
|
|
Map<String,String>sortNoMap=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 Map<String,String>loadMoveItemSortNo(JBOTransaction tx) throws Exception{
|
|
Map<String,String>SortNoMap=new HashMap<String,String>();
|
|
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<BizObject> 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;
|
|
}
|
|
|
|
|
|
|
|
}
|