SQL结果封装到JSONArray

SQL结果封装到JSONObject,多条JSONObject封装到一条JSONArray,

JSONArray再将里面的JSONObject一条一条取出,把value值放在ArrayList中,

最终把ArrayList Add到JSONArray。

	/**
	 * 组别人均产出率统计
	 * @return
	 */
	public JSONArray getGroupOutputRate(){
		String processId = ResourceUtil.getString("improvementProcessId", "sys-operationPortal").trim();
		String itDepartmentId = ResourceUtil.getString("itDepartmentId", "sys-operationPortal").trim();
		String sql = "SELECT D.FD_ID,D.FD_NAME,D.TOTAL_NUM,D.FINISH_NUM,E.PERSON_NUM,"
				+ " ROUND(D.TOTAL_NUM/E.PERSON_NUM,2)PERSON_AVERAGE FROM"
				+ " (SELECT B.FD_ID,B.FD_NAME,COUNT(*) TOTAL_NUM,"
				+ " NVL(SUM(CASE WHEN A.DOC_STATUS='30'THEN 1 ELSE 0 END),0)FINISH_NUM"
				+ " FROM KM_REVIEW_MAIN A"
				+ " LEFT JOIN SYS_ORG_ELEMENT B"
				+ " ON A.FD_DEPARTMENT_ID = B.FD_ID"
				+ " LEFT JOIN KM_REVIEW_TEMPLATE C"
				+ " ON A.FD_TEMPLATE_ID = C.FD_ID"
				+ " WHERE C.FD_ID = '"+processId+"' AND A.DOC_STATUS != '10' AND A.DOC_STATUS != '00'"
				+ " GROUP BY A.FD_DEPARTMENT_ID,B.FD_NAME,B.FD_ID)D LEFT JOIN"
				+ " (SELECT A.FD_NAME,A.FD_ID,COUNT(*) PERSON_NUM FROM SYS_ORG_ELEMENT A"
				+ " LEFT JOIN SYS_ORG_ELEMENT B"
				+ " ON A.FD_PARENTID = B.FD_ID"
				+ " LEFT JOIN SYS_ORG_ELEMENT C"
				+ " ON C.FD_PARENTID = A.FD_ID"
				+ " WHERE B.FD_ID='"+itDepartmentId+"' AND C.FD_ORG_TYPE='8'"
				+ " GROUP BY A.FD_ID,A.FD_NAME)E"
				+ " ON D.FD_ID = E.FD_ID";
		Query query = getBaseDao().getHibernateSession().createSQLQuery(sql);
		@SuppressWarnings("unchecked")
		List<Object> rateInfo = query.list();	
		Object[] obj = null;
		JSONObject jsonObj = new JSONObject();
		JSONArray array = new JSONArray();
		for (int a = 0; a < b = rateInfo.size(); a++) {
            //取出一条数据,内容包含[组名,提报总数...],再分别put到JSONObject
			obj = (Object[]) rateInfo.get(a);
			jsonObj.put("groupName", (String) obj[1]);//组别名
			jsonObj.put("totalNum", String.valueOf(obj[2]));//累积提报总数
			jsonObj.put("finishNum", String.valueOf(obj[3]));//已完成
			jsonObj.put("personAverage", String.valueOf(obj[5]));//人均产出
			array.add(jsonObj);
		}
        //最终得到JSONArray格式[{"groupName":"name1","totalNum":"num1"...} , {...}]
		List<String> groupNameList = new ArrayList<String>();//组别名列表
		List<String> totalNumList = new ArrayList<String>();//累积提报总数列表
		List<String> finishNumList = new ArrayList<String>();//已完成列表
		List<String> personAverageList = new ArrayList<String>();//人均产出列表
		for(int i=0;i<array.size();i++){
            //取出一条JSONObject {"groupName":"name1","totalNum":"num1"...}
			JSONObject groupNameObj = array.getJSONObject(i);
			String groupName = groupNameObj.getString("groupName");
			String totalNum = groupNameObj.getString("totalNum");
			String finishNum = groupNameObj.getString("finishNum");
			String personAverage = groupNameObj.getString("personAverage");
			groupNameList.add(groupName);
			totalNumList.add(totalNum);
			finishNumList.add(finishNum);
			personAverageList.add(personAverage);
		}
		JSONArray jsonArray = new JSONArray();
        //将List加入到JSONArray 
		jsonArray.add(groupNameList);
		jsonArray.add(totalNumList);
		jsonArray.add(finishNumList);
		jsonArray.add(personAverageList);
		return jsonArray;	
	}

获取JSONObject数据{"dayRange":[{"TOTAL":1,"DATE":"07-18"},{"TOTAL":2,"DATE":"07-19"}]}

取出dayRange对应的数组数据放入List<Map<String, String>>,即[{key1=value1,key2=value2},{}]

将其中的value取出,放入List<String>,

最后将List<String> add到JSONArray。

	//根据url接口获取JSON数据,并返回字符串数据 [[Value1.1 , V1.2...],[V2.1 , V2.2...]...]
	public static String getJsonList(String Package,String key,String url,String item){
		//从Package包下的ApplicationResources.properties中取key的值拼接成地址
		String wholeUrl = ResourceUtil.getString(key, Package) + url;// 请求地址
		//从URL中获取JSON数据
		String result = HttpRequest.sendGet(wholeUrl, "");
		//取出JSON数据{"dayRange":[{"TOTAL":1,"DATE":"07-18"},{"TOTAL":2,"DATE":"07-19"}]}
		JSONObject json = JSONObject.fromObject(result);
		//取出dayRange对应的数组[{},{}]
		//JSONArray itemData = (JSONArray) json.get(item);
		//取出的数组放在list中[{key1=value1,key2=value2},{}]
		List<Map<String, String>> itemList = (List<Map<String, String>>)json.get(item);
		//数据放在List,
		List<String> totalList = new ArrayList<String>();
		List<String> responseTimeList = new ArrayList<String>();
		List<String> receiveTimeList = new ArrayList<String>();
		List<String> scoreList = new ArrayList<String>();
		List<String> dateList = new ArrayList<String>();
		for(Map<String, String> map:itemList){
			totalList.add(String.valueOf(map.get("TOTAL")));
			responseTimeList.add(String.valueOf(map.get("XIANGYING_TIME")));
			receiveTimeList.add(String.valueOf(map.get("JIEDAN_TIME")));
			scoreList.add(String.valueOf(map.get("SCORE")));
			dateList.add(map.get("DATE"));
		};
		//List放在JSONArray中,顺序为[[TOTAL],[XIANGYING_TIME],[JIEDAN_TIME],[SCORE],[DATE]]
		JSONArray jsonArray = new JSONArray();
		jsonArray.add(totalList);
		jsonArray.add(responseTimeList);
		jsonArray.add(receiveTimeList);
		jsonArray.add(scoreList);
		jsonArray.add(dateList);
		//返回字符串形式的JSONArray数据,"[[1,2],[1.1,1.2],[2.1,2.2],[3.1,3.2],[07-18,7-19]]"
		return jsonArray.toString();
	}

JSONObject通过List<Map<String, String>>,不如通过JSONArray将Value放入List。

优化方法:

	//优化方法
	//根据url接口获取JSON数据,并返回字符串数据 [[Value1.1 , V1.2...],[V2.1 , V2.2...]...]
	public static String getJsonString(String Package,String key,String url,String item){
		//从Package包下的ApplicationResources.properties中取key的值拼接成地址
		String wholeUrl = ResourceUtil.getString(key, Package) + url;// 请求地址
		//从URL中获取JSON数据
		String result = HttpRequest.sendGet(wholeUrl, "");
		//取出JSON数据{"dayRange":[{"TOTAL":1,"DATE":"07-18"},{"TOTAL":2,"DATE":"07-19"}]}
		JSONObject json = JSONObject.fromObject(result);
		//取出dayRange对应的数组[{},{}]
		JSONArray itemData = (JSONArray) json.get(item);
		
		List<String> totalList = new ArrayList<String>();
		List<String> responseTimeList = new ArrayList<String>();
		List<String> receiveTimeList = new ArrayList<String>();
		List<String> scoreList = new ArrayList<String>();
		List<String> dateList = new ArrayList<String>();
		for(int i=0;i<itemData.size();i++){
			//取出一条JSONObject,即{"TOTAL":1,"DATE":"07-18"...}
			JSONObject jsonObject = itemData.getJSONObject(i);
			totalList.add(jsonObject.getString("TOTAL"));
			responseTimeList.add(jsonObject.getString("XIANGYING_TIME"));
			receiveTimeList.add(jsonObject.getString("JIEDAN_TIME"));
			scoreList.add(jsonObject.getString("SCORE"));
			dateList.add(jsonObject.getString("DATE"));
		}
		
		//List放在JSONArray中,顺序为[[TOTAL],[XIANGYING_TIME],[JIEDAN_TIME],[SCORE],[DATE]]
		JSONArray jsonArray = new JSONArray();
		jsonArray.add(totalList);
		jsonArray.add(responseTimeList);
		jsonArray.add(receiveTimeList);
		jsonArray.add(scoreList);
		jsonArray.add(dateList);
		//返回字符串形式的JSONArray数据,"[[1,2],[1.1,1.2],[2.1,2.2],[3.1,3.2],[07-18,7-19]]"
		return jsonArray.toString();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值