package com.yc.action.tree;
|
|
import com.google.gson.Gson;
|
import com.yc.multiData.SpObserver;
|
import com.yc.service.commons.GformIfc;
|
import com.yc.service.grid.GridServiceIfc;
|
import com.yc.service.tree.TreeJson;
|
import com.yc.utils.SessionKey;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.dao.TransientDataAccessResourceException;
|
import org.springframework.jdbc.support.rowset.SqlRowSetMetaData;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.util.ArrayList;
|
import java.util.List;
|
@Controller
|
public class Tree_20 {
|
|
@RequestMapping("/tree_20_save2.do")
|
public void tree_20_save(HttpServletRequest request,HttpServletResponse response) throws IOException{
|
|
String treeJsonStr=request.getParameter("treeJson");
|
String formid=request.getParameter("formid");
|
String where = request.getParameter("where");
|
String tableName=null;
|
try{
|
SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
|
tableName = gformIfc.getGformInfo("dttable", Integer.parseInt(formid)).get("dttable").toString();
|
if(StringUtils.isBlank(tableName)||StringUtils.isBlank(where))return;
|
md=treeIfc.getMetaDataByTableName(tableName);
|
}finally{
|
SpObserver.setDBtoInstance();
|
}
|
TreeJson treeJson=fromJson(treeJsonStr);
|
|
int status=0;
|
String message="";
|
List<String> sql=new ArrayList<String>();//保存所有sql语句(新增,修改)
|
TreeUtils treeUtils = new TreeUtils();
|
|
//获得自动增长列和计算列--需要对其进行排除
|
List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName);
|
where = null == where ? "" : where;
|
try{
|
treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(),tableName,sql,autoColumn,md,request.getSession());
|
treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(),tableName,sql,autoColumn,md,where,request.getSession());
|
treeUtils.convert2DragSQL(treeJson.getDragRecords(),tableName,sql,where);
|
treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(),tableName,sql,where);
|
// for(int i=0;i<sql.size();i++){
|
// System.out.println(sql.get(i));
|
// treeIfc.doExcute(sql.get(i));
|
// }
|
if(sql.size()>0){
|
try{
|
SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
|
treeIfc.doBatchExcute(sql, "", "", "");
|
}finally{
|
SpObserver.setDBtoInstance();
|
}
|
}
|
sql.clear();
|
status=1;
|
}catch (NumberFormatException e) {
|
sql.clear();
|
status=0;
|
message=e.getMessage().split(":")[1].replace("\"", "");
|
}catch (TransientDataAccessResourceException e) {
|
sql.clear();
|
status=2;
|
message=e.getMessage().split(":")[1].replace("\"", "");
|
}
|
catch(Exception e)
|
{
|
sql.clear();
|
status=2;
|
if(e.getCause()!=null)
|
message=e.getCause().getMessage();
|
else {
|
String[] mes = e.getMessage().split(";");
|
if (mes.length >= 2) {
|
String[] ms=mes[mes.length-1].split(":");
|
if(ms.length>1){
|
message=ms[1];
|
}else{
|
message=ms[0];
|
}
|
// message = mes[2];
|
}
|
}
|
e.printStackTrace();
|
}
|
// response.setContentType("text/html;charset=utf8");
|
response.setCharacterEncoding("utf-8");
|
PrintWriter out=response.getWriter();
|
out.write("{\"status\":\""+status+"\",\"message\":\""+message.replace("\"", "'")+"\"}");
|
out.flush();
|
out.close();
|
}
|
@RequestMapping("/getRowid_20.do")
|
public void getRowId(HttpServletRequest request,HttpServletResponse response) throws IOException
|
{
|
try{
|
SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
|
String rowid= treeIfc.getRowID();
|
response.setCharacterEncoding("utf-8");
|
PrintWriter out=response.getWriter();
|
out.write(rowid);
|
out.flush();
|
out.close();
|
}finally{
|
SpObserver.setDBtoInstance();
|
}
|
}
|
public TreeJson fromJson(String json){
|
Gson gson = new Gson();
|
return gson.fromJson(json.replace("&", "&").replace("<", "<").replace(">", ">"), new com.google.gson.reflect.TypeToken<TreeJson>() {
|
}.getType() );
|
}
|
|
@RequestMapping("/tree_20_autocode.do")
|
public void getAutoCode(int formid,String fields,String configs,HttpServletRequest request,HttpServletResponse response) throws IOException{
|
String autocode="";
|
try{
|
String [] field=null;
|
if("".equals(fields))return;
|
field=fields.split(";");
|
String []config=configs.split(";");
|
if(config.length!=3)throw new Exception();
|
autocode+="[";
|
try{
|
SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
|
for(int i=0;i<field.length;i++){
|
autocode+="{'field':'"+field[i]+"','value':'"+gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i])+"'}";
|
}
|
}finally{
|
SpObserver.setDBtoInstance();
|
}
|
autocode+="]";
|
}catch(Exception e){
|
autocode="错误信息:自动编号字段生成出错!";
|
}
|
response.setCharacterEncoding("utf-8");
|
PrintWriter out=response.getWriter();
|
out.write(autocode);
|
out.flush();
|
out.close();
|
}
|
|
private SqlRowSetMetaData md;
|
|
@Autowired
|
private com.yc.service.tree.TreeIfc treeIfc;
|
|
@Autowired
|
private GridServiceIfc gridServiceIfc;
|
|
@Autowired
|
GformIfc gformIfc;
|
}
|