Package org.jeecgframework.web.cgform.service.impl.autolist

Source Code of org.jeecgframework.web.cgform.service.impl.autolist.CgTableServiceImpl

package org.jeecgframework.web.cgform.service.impl.autolist;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.jeecgframework.web.cgform.common.CommUtils;
import org.jeecgframework.web.cgform.entity.config.CgFormFieldEntity;
import org.jeecgframework.web.cgform.entity.config.CgFormHeadEntity;
import org.jeecgframework.web.cgform.service.autolist.CgTableServiceI;
import org.jeecgframework.web.cgform.service.build.DataBaseService;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.web.cgform.service.config.DbTableHandleI;
import org.jeecgframework.web.cgform.service.impl.config.util.DbTableUtil;
import org.jeecgframework.web.cgform.util.QueryParamUtil;

import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.core.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @Title:CgTableServiceImpl
* @description:动态表数据服务实现
* @author 赵俊夫
* @date Jul 5, 2013 9:34:51 PM
* @version V1.0
*/
@Service("cgTableService")
@Transactional
public class CgTableServiceImpl extends CommonServiceImpl implements CgTableServiceI {
  @Autowired
  private CommonService commonService;
 
  @Autowired
  private DataBaseService dataBaseService;
 
  @Autowired
  private CgFormFieldServiceI cgFormFieldService;

  @SuppressWarnings("unchecked")
 
  public List<Map<String, Object>> querySingle(String table, String field, Map params,
      int page, int rows) {
    StringBuilder sqlB = new StringBuilder();
    dealQuerySql(table,field,params,sqlB);
    List<Map<String, Object>> result = commonService.findForJdbcParam(sqlB
        .toString(), page, rows);
    return result;
  }
 
  public List<Map<String, Object>> querySingle(String table, String field, Map params,
      String sort, String order, int page, int rows) {
    StringBuilder sqlB = new StringBuilder();
    dealQuerySql(table,field,params,sqlB);
    if(!StringUtil.isEmpty(sort)&& !StringUtil.isEmpty(order)){
      sqlB.append(" ORDER BY "+sort+" "+ order);
    }
    List<Map<String, Object>> result = commonService.findForJdbcParam(sqlB
        .toString(), page, rows);
    return result;
  }

  @SuppressWarnings("unchecked")
 
  public boolean delete(String table, Object id) {
    try{
      CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(table);
      Map<String,Object> data  = dataBaseService.findOneForJdbc(table, id.toString());
      if(data!=null){
        //打印测试
          Iterator it=data.entrySet().iterator();
          while(it.hasNext()){
            Map.Entry entry=(Map.Entry)it.next();
              Object ok=entry.getKey();
              Object ov=entry.getValue()==null?"":entry.getValue();
              org.jeecgframework.core.util.LogUtil.info("name:"+ok.toString()+";value:"+ov.toString());
          }
        data = CommUtils.mapConvert(data);
        dataBaseService.executeSqlExtend(head.getId(), "delete", data);
      }
      //step.1 删除表
      StringBuilder deleteSql = new StringBuilder();
      deleteSql.append("DELETE FROM "+table+" WHERE id = ?");
      if(!QueryParamUtil.sql_inj(id.toString())){
        commonService.executeSql(deleteSql.toString(), id);
      }
      //step.2 判断是否有明细表,进行连带删除
      String[] subTables = head.getSubTableStr()==null?new String[0]:head.getSubTableStr().split(",");
      for(String subTable:subTables){
        Map<String, CgFormFieldEntity>  fields = cgFormFieldService.getAllCgFormFieldByTableName(subTable);
        String subFkField = null;
        Iterator it = fields.keySet().iterator();
        for(;it.hasNext();){
          String fieldName  = (String) it.next();
          CgFormFieldEntity fieldc = fields.get(fieldName);
          if(StringUtil.isNotEmpty(fieldc.getMainTable())){
            if(table.equalsIgnoreCase(fieldc.getMainTable())){
              subFkField = fieldName;
            }
          }
        }
        if(StringUtil.isNotEmpty(subFkField)){
          String dsql = "delete from "+subTable+" "+"where "+subFkField+" = ? ";
          this.executeSql(dsql,id);
        }
      }
     
    }catch (Exception e) {
      e.printStackTrace();
      return false;
    }
    return true;
  }
  @SuppressWarnings("unchecked")
  private void dealQuerySql(String table, String field, Map params,StringBuilder sqlB){
    sqlB.append(" SELECT ");
    for (String f : field.split(",")) {
      sqlB.append(f);
      sqlB.append(",");
    }
    sqlB.deleteCharAt(sqlB.length() - 1);
    sqlB.append(" FROM " + table);
    if (params.size() >= 1) {
      sqlB.append(" WHERE 1=1 ");
      Iterator it = params.keySet().iterator();
      while (it.hasNext()) {
        String key = String.valueOf(it.next());
        String value = String.valueOf(params.get(key));
        if (!StringUtil.isEmpty(value) && !"null".equals(value)) {
            sqlB.append(" AND ");
            sqlB.append(" " + key +  value );
        }
      }
    }
  }


  @SuppressWarnings("unchecked")
 
  public Long getQuerySingleSize(String table, String field, Map params) {
    StringBuilder sqlB = new StringBuilder();
    dealQuerySql(table,"count(*) as query_size,",params,sqlB);
    List<Map<String, Object>> result = commonService.findForJdbc(sqlB.toString());
    if(result.size()>=1){
      return Long.parseLong(String.valueOf(result.get(0).get("query_size")));
    }else{
      return 0L;
    }
  }
 
  public boolean deleteBatch(String table, String[] ids) {
    try{
      for(String id:ids){
        delete(table, id);
      }
    }catch (Exception e) {
      throw new BusinessException(e.getMessage());
    }
    return true;
  }


 
}
TOP

Related Classes of org.jeecgframework.web.cgform.service.impl.autolist.CgTableServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.