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

3 months ago
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;
}
}