You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.9 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package weaver.formmode.customjavacode.customsearch.jucailinkq;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
import lombok.extern.slf4j.Slf4j;
import weaver.formmode.customjavacode.AbstractCustomSqlConditionJavaCode;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 说明
* 修改时
* 类名要与文件名保持一致
* class文件存放位置与路径保持一致。
* 请把编译后的class文件放在对应的目录中才能生效
* 注意 同一路径下java名不能相同。
* @author Administrator
*
*/
@Slf4j
public class ClockAgainCustomSearchTemplate extends AbstractCustomSqlConditionJavaCode {
/**
* 生成SQL查询限制条件
* @param param
* param包含(但不限于)以下数据
* user 当前用户
*
* @return
* 返回的查询限制条件的格式举例为: t1.a = '1' and t1.b = '3' and t1.c like '%22%'
* 其中t1为表单主表表名的别名
*/
public String generateSqlCondition(Map<String, Object> param) throws Exception {
log.info("generateSqlCondition : [{}]",param);
User user = (User)param.get("user");
int userId = user.getUID();
String sql = "select b.*,a.list_type from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where a.userfor=5 and a.fzgly=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId);
String sqlCondition = "";
if (dataList.size() > 0){
String listType = Util.null2String(dataList.get(0).get("list_type"));
if (listType.equals("0")){
//人员清单
List<String> userList = dataList.stream().map(e->Util.null2String(e.get("empid"))).collect(Collectors.toList());
sqlCondition = "t1.bdkry in ("+String.join(",",userList)+")";
}else if (listType.equals("1")){
//条件清单
sql = "select id from hrmresource where (";
for (int i=0;i<dataList.size();i++){
Map<String,Object> map = dataList.get(i);
String filters = Util.null2String(map.get("filters"));
filters = Utils.converSQL(filters);
if (i == dataList.size()-1){
sql = sql+filters+")";
}else {
sql = sql+filters+" or ";
}
}
sqlCondition = "t1.bdkry in ("+sql+") ";
}else if (listType.equals("2")){
//sql条件
String sqltj = "";
for (int i=0;i<dataList.size();i++){
if (i == dataList.size()-1){
sqltj = sqltj+Util.null2String(Util.null2String(dataList.get(i).get("sqltj")));
}else {
sqltj = sqltj + Util.null2String(Util.null2String(dataList.get(i).get("sqltj"))) +" union ";
}
}
sqlCondition = "t1.bdkry in ( select a.id from ("+sqltj+") a)";
}
}else {
if (userId !=1){
sqlCondition = "t1.bdkry="+userId;
}
}
log.info("sqlCondition : [{}]",sqlCondition);
ExtensionClassHolder.remove();
return sqlCondition;
}
}