html代码
<div style="height:85%" >
<table id="enterGroupListDG" class="easyui-datagrid" title="动态表单查询" fit="true" style="width:auto;height:auto"
data-options="singleSelect:true,collapsible:true,fitColumns:false">
</table>
</div>
js代码
$.ajax({
type: "post",
url: CONTEXT_PATH+"/task/XX.xhtml",
async: true,
dataType: "json",
data: {
page:pages,
rows:pageNumber,
groupId:groupId,
taskNumber:taskNumber,
haveValus:haveValus,
type:type,
formID:formID,
moduleID:moduleID,
status:status
},
success: function (data) {
console.log(data);
if(data.formData=='[]'){
alert("暂无数据");
}else{
$(".axc-success").show().delay(3000).fadeOut();
}
var msg = JSON.parse(data.formDataTitle);
var formData = JSON.parse(data.formData);
$("#enterGroupListDG").datagrid({
columns: [msg] ,//动态取标题
data:formData
});
}
});
java代码
/**
* @Author: LGH
* @Description: 查询数据采集完成情况
* @param: taskCustomSearchQo
* @DATA: Created in 10:14 2017/11/8
*/
@RequestMapping(value="/xx.xhtml",method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody
DataEasyUIDataGradOutputModel<TaskCustomVo> queryPaging(TaskCustomSearchQo taskCustomSearchQo, HttpServletRequest request) throws Exception {
//获取用户id
DataEasyUIDataGradOutputModel<TaskCustomVo> output = new DataEasyUIDataGradOutputModel<>();
Integer userId =getCurrentUser();
if(userId==null)
userId=0;
taskCustomSearchQo.setUserId(userId);
Page<TaskCustomVo> pages = taskCustomService.queryTaskCustomList(taskCustomSearchQo);
List<TaskCustomVo> taskCustomVoList=pages.getRecords();
List<DataFromVo> dataFromVos=new ArrayList<DataFromVo>();
List<ModuleFormVo> moduleFormVos =new ArrayList<ModuleFormVo>();
String moduleID=taskCustomSearchQo.getModuleID();
String status=String.valueOf(taskCustomSearchQo.getStatus());
//如果选择了模板id,直接取模板对应的表单字段作为表头列名,如果没有先选取模板,取第一个查到的对象的放回列作为表头列名,不建议不选取模板查询
if (moduleID!=null&&!"".equals(moduleID)){
moduleFormVos = taskCustomService.getMoudleFormVo(Integer.valueOf(moduleID).intValue());
}else{
dataFromVos= getDataFrom(taskCustomVoList);
}
Map<String,String> map=new HashMap<String,String>();
map=getFromDataTitle(status, moduleFormVos,dataFromVos);
String formdatatitles=map.get("fromtitles");
String titleNames=map.get("titleNames");
String formdata=getFromData(status,taskCustomVoList, taskCustomSearchQo,titleNames);
//System.out.println("动态模板列formdatatitle"+formdatatitle);
//System.out.println("动态列赋值formdata"+formdata);
output.setFormDataTitle(formdatatitles);
output.setFormData(formdata);
//output.setRows(pages.getRecords() == null ? new ArrayList<TaskCustomVo>() : pages.getRecords());
output.setTotal((int) pages.getTotalRows());
return output;
}
/**
* @Author: LGH
* @Description:
* @param:
* @DATA: Created in 10:04 2017/11/16
*/
public List<DataFromVo> getDataFrom(List<TaskCustomVo> taskCustomVoList){
List<DataFromVo> dataFromVos=new ArrayList<DataFromVo>();
for (TaskCustomVo taskCustomVo: taskCustomVoList) {
String formData= taskCustomVo.getFormData();
if (formData!=null&&!"".equals(formData)){
JSONArray jArray= JSONArray.fromObject(formData);
for(int j=0;j<jArray.size();j++){
JSONObject job = jArray.getJSONObject(j); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
DataFromVo dataFromVo=new DataFromVo();
dataFromVo.setTitle(String.valueOf(job.get("title")));
dataFromVo.setContent(String.valueOf(job.get("content")));
dataFromVo.setFormId(String.valueOf(job.get("formId")));
dataFromVos.add(dataFromVo);
}
}
break;
}
return dataFromVos;
}
/**
* @Author: LGH
* @Description: 动态获取列名
* @param:
* @DATA: Created in 18:35 2017/11/13
*/
public Map<String,String> getFromDataTitle(String status, List<ModuleFormVo> moduleFormVos,List<DataFromVo> dataFromVos){
StringBuilder jsonBuilder = new StringBuilder();
StringBuilder titleNames=new StringBuilder();
Map<String,String> map=new HashMap<String,String>();
jsonBuilder.append("[");
jsonBuilder.append("{\"field\":\"number\",\"title\":\"序号\"},");
jsonBuilder.append("{\"field\":\"title\",\"title\":\"任务名称\"},");
jsonBuilder.append("{\"field\":\"groupNames\",\"title\":\"任务所属区域\"},");
//jsonBuilder.append("{\"field\":\"title\",\"title\":\"标题\"},");
jsonBuilder.append("{\"field\":\"status\",\"title\":\"状态\"},");
//这是循环获取列名称
int i = 1;
if (status!=null&&"4".equals(status)) {
if (moduleFormVos != null && moduleFormVos.size() > 0) {
for (ModuleFormVo moduleFormVo : moduleFormVos) {
jsonBuilder.append("{");
jsonBuilder.append("\"field");
jsonBuilder.append("\":\"");
jsonBuilder.append("vName" + i);
jsonBuilder.append("\",");
jsonBuilder.append("\"title");
jsonBuilder.append("\":\"");
jsonBuilder.append(moduleFormVo.getTitle());
titleNames.append(moduleFormVo.getTitle() + ",");
jsonBuilder.append("\"");
jsonBuilder.append("},");
i++;
}
} else {
for (DataFromVo dataFromVo : dataFromVos) {
jsonBuilder.append("{");
jsonBuilder.append("\"field");
jsonBuilder.append("\":\"");
jsonBuilder.append("vName" + i);
jsonBuilder.append("\",");
jsonBuilder.append("\"title");
jsonBuilder.append("\":\"");
jsonBuilder.append(dataFromVo.getTitle());
titleNames.append(dataFromVo.getTitle() + ",");
jsonBuilder.append("\"");
jsonBuilder.append("},");
i++;
}
}
String titleName = titleNames.substring(0, titleNames.length()-1);
map.put("titleNames",titleName);
}
String newstr = jsonBuilder.substring(0, jsonBuilder.length()-1);
newstr += "]";
map.put("fromtitles",newstr);
return map;
}
/**
* @Author: LGH
* @Description: 获取动态列对于的数据
* @param:
* @DATA: Created in 18:35 2017/11/13
*/
public String getFromData( String status,List<TaskCustomVo> taskCustomVoList,TaskCustomSearchQo taskCustomSearchQo,String titleNames) {
JSONArray jsonArray =new JSONArray();
JSONObject jsonObject=new JSONObject();
int number=1;
int page= taskCustomSearchQo.getPage();
int rows=taskCustomSearchQo.getRows();
if (page>1){
number=(page-1)*rows+1;
}
for (TaskCustomVo taskCustomVo:taskCustomVoList) {
jsonObject.put("number",number);
number++;
jsonObject.put("title",taskCustomVo.getTaskName());
jsonObject.put("groupNames",taskCustomVo.getGroupNames());
if (StringUtils.isNotBlank(status)){
if ("1".equals(status)){
jsonObject.put("status","未完成");
}else if ("4".equals(status)){
jsonObject.put("status","已完成");
}else{
jsonObject.put("status","已挂起");
}
}else{
jsonObject.put("status","未完成");
}
if (status!=null&&"4".equals(status)) {
int i=1;
String formData= taskCustomVo.getFormData();
if (formData!=null&&!"".equals(formData)){
JSONArray jArray= JSONArray.fromObject(formData);
String d[] = titleNames.split(",");
for (int k = 0; k < d.length; k++) {
for(int j=0;j<jArray.size();j++){
String titlename=d[k];
JSONObject job = jArray.getJSONObject(j); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
if (titlename!=null&&titlename.equals(String.valueOf(job.get("title")))){
jsonObject.put("vName"+i,String.valueOf(job.get("content")));
i++;
break;
}
if (j==jArray.size()-1){
jsonObject.put("vName"+i,"");
i++;
}
}
}
/* for(int j=0;j<jArray.size();j++){
String d[] = titleNames.split(",");
for (int k = 0; k < d.length; i++) {
String titlename=d[i];
JSONObject job = jArray.getJSONObject(j); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
if (titlename!=null&&titlename.equals(String.valueOf(job.get("title")))){
jsonObject.put("vName"+i,String.valueOf(job.get("content")));
i++;
break;
}
if (k==d.length-1){
jsonObject.put("vName"+i,"");
i++;
}
}
}*/
}}
jsonArray.add(jsonObject);
}
return jsonArray.toString();
}