package com.product.mobile.core.service;
|
|
import com.product.common.lang.StringUtils;
|
import com.product.core.config.CoreConst;
|
import com.product.core.dao.BaseDao;
|
import com.product.core.entity.DataTableEntity;
|
import com.product.core.entity.FieldSetEntity;
|
import com.product.core.exception.BaseException;
|
import com.product.core.service.support.AbstractBaseService;
|
import com.product.mobile.core.config.MobileCoreCode;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.text.SimpleDateFormat;
|
|
/**
|
* 手机端,获取用户所有应用
|
* @author Administrator
|
*
|
*/
|
@Component
|
public class CommonMVCService extends AbstractBaseService{
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //制定输出格式
|
|
@Autowired
|
public BaseDao baseDao;
|
/**
|
* 查询数据数据是否有走审批流程
|
* @param table
|
* @param uuid
|
*/
|
public String getApproveDetailUUID(String table,String uuid) {
|
|
DataTableEntity dt = getBaseDao().listTable("product_sys_flow_detail", " record_uuid=? and table_name=? ",new Object[]{uuid,table});
|
if(dt.isEmpty()) {
|
return null;
|
}else {
|
return dt.getFieldSetEntity(0).getUUID();
|
}
|
}
|
/**
|
* 查出MVC中按钮操作的界面,界面后面的所有按钮
|
* @param button 有可能是类型,有可能是uuid
|
* @param table
|
* @param functionUuid
|
* @return
|
* @throws BaseException
|
*/
|
public FieldSetEntity getPageButtons(FieldSetEntity fse) throws BaseException{
|
|
String buttonUuid=fse.getString("buttonUuid");
|
|
String table=fse.getString(CoreConst.SYSTEM_TABLE_NAME_LABEL);
|
if(table==null) table=fse.getTableName();
|
String functionUuid=fse.getString("functionUuid");
|
String buttonType=fse.getString("buttonType");
|
if(StringUtils.isEmpty(functionUuid) && !StringUtils.isEmpty(table)) {
|
///根据表去查功能,如有多个,取第一个
|
FieldSetEntity f=baseDao.getFieldSetByFilter("product_sys_functions", "table_uuid=(select uuid from product_sys_datamodel_table where table_name=?) or table_uuid=? ", new String[] {table,table}, false);
|
if(!FieldSetEntity.isEmpty(f)) {
|
functionUuid=f.getUUID();
|
}
|
}
|
FieldSetEntity page=null;
|
|
if(!StringUtils.isEmpty(functionUuid)) {
|
//根据按钮类型查出按钮uuid
|
if(StringUtils.isEmpty(buttonUuid)&& !StringUtils.isEmpty(buttonType) ) {
|
DataTableEntity d=baseDao.listTable("product_sys_function_buttons", " function_uuid=? and button_category_uuid=? ", new String[] {functionUuid,buttonType},"button_type");
|
if(!DataTableEntity.isEmpty(d)) {
|
buttonUuid=d.getFieldSetEntity(0).getUUID();//取第一条
|
}
|
}
|
//查出按钮对应界面,可能按钮有多个,取第一个
|
if(!StringUtils.isEmpty(buttonUuid)) {
|
StringBuilder b=new StringBuilder();
|
b.append("select * from product_sys_mvc_page where function_uuid=? and uuid in (\r\n")
|
.append("select line_to from product_sys_link where function_uuid=? and line_from=?\r\n")
|
.append(" union all ")
|
.append("select line_to from product_sys_link where function_uuid=? and line_from=\r\n")
|
.append(" (select line_to mainUuid from product_sys_link where function_uuid=? and line_from=?) ")
|
.append(")");
|
DataTableEntity d=baseDao.listTable(b.toString() , new String[] {functionUuid,functionUuid,buttonUuid,functionUuid,functionUuid,buttonUuid} );
|
if(!DataTableEntity.isEmpty(d)) {
|
page=d.getFieldSetEntity(0);//取第一条
|
}else {
|
|
}
|
}
|
if(page!=null) {
|
//查界面后的所有按钮
|
StringBuilder b=new StringBuilder();
|
b.append("select * from product_sys_function_buttons where function_uuid=? and uuid in(\r\n")
|
.append("select line_to from product_sys_link where function_uuid=? and line_from=?\r\n")
|
.append(")");
|
DataTableEntity d=baseDao.listTable(b.toString() , new String[] {functionUuid,functionUuid,page.getUUID()} );
|
page.addSubDataTable(d);
|
}else {
|
throw new BaseException(MobileCoreCode.GET_ROUTER_FAIL);
|
}
|
return page;
|
}else {
|
throw new BaseException(MobileCoreCode.GET_ROUTER_FAIL);
|
}
|
}
|
/**
|
* 执行表达式
|
* @param exp
|
* @return
|
*/
|
public FieldSetEntity excuteExp(String exp) {
|
String sql="select "+exp+" expValue";
|
FieldSetEntity fs=baseDao.getFieldSetBySQL(sql, null, false);
|
return fs;
|
}
|
|
/**
|
* 根据按钮uuid找到连接的第一个页面
|
* @param fse
|
* @return
|
*/
|
public FieldSetEntity getNextPageByButtonUUID(FieldSetEntity fse) {
|
String buttonUUID = fse.getUUID();
|
StringBuilder sql = new StringBuilder(128);
|
sql.append("\nSELECT p.flow_uuid type_code,p.flow_title");
|
sql.append("\nFROM product_sys_mvc_page p");
|
sql.append("\nINNER JOIN product_sys_link l ON p.uuid=l.line_to");
|
sql.append("\nWHERE l.line_from=?");
|
sql.append("\nORDER BY p.id DESC");
|
DataTableEntity nextPageDte = baseDao.listTable(sql.toString(), new Object[]{buttonUUID});
|
if (DataTableEntity.isEmpty(nextPageDte)) {
|
throw new BaseException(MobileCoreCode.GET_MVC_PAGE_INFO_FAIL);
|
}
|
return nextPageDte.getFieldSetEntity(0);
|
}
|
}
|