apzl_leasing/src_tenwa/com/tenwa/orginfo/ETreeServcie.java
2018-06-03 22:26:41 +08:00

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;
}
}