java返回值的使用
一、返回一般数据类型
八大基本数据类型之一(byte,char,short,int,long,float,double,boolean)
Object
Object是java中所有类的始祖,所有类都默认继承了Object。Object类型的变量可以指向任意类型的对象,但Object类型的变量只能作为实际对象的持有者,若要对对象的内容进行具体操作必须明确该对象的原始类型并进行相应的类型转换。
方法
Object 类中的equals 方法:
public boolean equals(Object obj) {
return (this == obj);
}
在Java规范中,对 equals 方法的使用必须遵循以下几个原则:
①、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
②、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
③、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
④、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改
⑤、对于任何非空引用值 x,x.equals(null) 都应返回 false。
== 比较两个对象在栈内存中的引用地址是否相等。
getClass()在 Object 类中如下,作用是返回对象的运行时类。
public final native Class<?> getClass();
这里详细的介绍 getClass 方法返回的是一个对象的运行时类对象,这该怎么理解呢?Java中还有一种这样的用法,通过 类名.class 获取这个类的类对象 ,这两种用法有什么区别呢?
public class Parent {}
public class Son extends Parent{}
public void testClass(){
Parent p = new Son();
System.out.println(p.getClass());
System.out.println(Parent.class);
}
结论:class 是一个类的属性,能获取该类编译时的类对象,而 getClass() 是一个类的方法,它是获取该类运行时的类对象。
还有一个需要大家注意的是,虽然Object类中getClass() 方法声明是:public final native Class<?> getClass();返回的是一个 Class<?>,但是如下是能通过编译的:
Class<? extends String> c = "".getClass();
也就是说类型为T的变量getClass方法的返回值类型其实是Class<? extends T>而非getClass方法声明中的Class<?>。
hashCode 在 Object 类中定义如下:
public native int hashCode();
通过 equals 方法判断集合中的每一个元素是否重复,但是如果集合中有10000个元素了,但我们新加入一个元素时,那就需要进行10000次equals方法的调用,这显然效率很低。于是,Java 的集合设计者就采用了 哈希表 来实现。
哈希算法也称为散列算法,是将数据依特定算法产生的结果直接指定到一个地址上。这个结果就是由 hashCode 方法产生。这样一来,当集合要添加新的元素时,先调用这个元素的 hashCode 方法,就一下子能定位到它应该放置的物理位置上。
两个对象相等,其 hashCode 一定相同;
两个对象不相等,其 hashCode 有可能相同;
hashCode 相同的两个对象,不一定相等;
hashCode 不相同的两个对象,一定不相等;
对于 Map 集合,我们可以选取Java中的基本类型,还有引用类型 String 作为 key,因为它们都按照规范重写了 equals 方法和 hashCode 方法。但是如果你用自定义对象作为 key,那么一定要覆写 equals 方法和 hashCode 方法,不然会有意想不到的错误产生。
toString 方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass().getName()是返回对象的全类名(包含包名),Integer.toHexString(hashCode()) 是以16进制无符号整数形式返回此哈希码的字符串表示形式。
打印某个对象时,默认是调用 toString 方法,比如 System.out.println(person),等价于 System.out.println(person.toString())
java.lang.Integer、
public final class Integer extends Number implements Comparable<Integer>{}
Integer 是用 final 声明的常量类,不能被任何类所继承。并且 Integer 类继承了 Number 类和实现了 Comparable 接口。 Number 类是一个抽象类,8中基本数据类型的包装类除了Character 和 Boolean 没有继承该类外,剩下的都继承了 Number 类,该类的方法用于各种数据类型的转换。Comparable 接口就一个 compareTo 方法,用于元素之间的大小比较
int 类型在 Java 中是占据 4 个字节,所以其可以表示大小的范围是 -2 31——2 31 -1即 -2147483648——2147483647,我们在用 int 表示数值时一定不要超出这个范围了。
返回基本类型的数据
<select id="getByParentId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
SELECT COUNT(*) FROM se_install_check_item WHERE installCheckId = #{deviceInstallCheckId}
</select>
Integer getByParentId(@RequestParam(value = "deviceInstallCheckId", required = false)Integer deviceInstallCheckId);
Map<String, Object> getByParentId(Integer ovId);
@Override
public Map<String, Object> getByParentId(Integer ovId) {
// TODO Auto-generated method stub
Map<String, Object> map = new HashMap<>();
Integer counts = mapper.getByParentId(ovId);
map.put("counts", counts);
return map;
}
@PostMapping("/queryByParentId")
public AssembleJSON installcheckItem(String ids){
if(null!=ids&&ids.length()>0) {
for(int i =0;i<ids.split(",").length;i++) {
Map<String, Object> counts = service.getByParentId(Integer.parseInt(ids.split(",")[i]));
Object object = counts.get("counts");
}
}
return AssembleJSON.SUCCESS(ids);
}
var ids = "";
$.each(rows, function (k, j) {
ids += (ids == "" ? j[$id] : "," + j[$id]);
});
var paras = { ids: ids };
$.post("security/installitcheck/queryByParentId", paras, function (data) {
if (data.code == "0") {
$Core.UI.message.error("未录入设备,不可提交!");
}
});
二、返回 JavaBean 类型
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$("#btnSave").click(function () {
debugger;
if ($("#submit_form").form("validate")) {
var url = "security/userContacts/add";
if ($("#id").val() != "")
url = "security/userContacts/upd";
var paras = {
list:[],
publicServicesUser:{}
};
paras.publicServicesUser = $("#submit_form").serializeObject();
for (var i= 14;i <= index; i++) {
var obj = {
contactsType: "",
contactsName:"",
contactsPhone:""
};
var row = $("#submit_table tr:eq(" + i + ")");
obj.contId = row.find("#contId").val();
obj.contactsType = row.find("#contactsType").combo("getValue");
obj.contactsName = row.find("#contactsName").textbox("getValue");
obj.contactsPhone = row.find("#contactsPhone").textbox("getValue");
paras.list.push(obj)
}
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(paras),
dataType: "json",
success: function (message) {
if (message.code == 0) {
$Core.UI.message.success(message.msg);
}else{
$Core.UI.message.warning(message.msg);
}
}
});
}
});
@PostMapping("upd")
public AssembleJSON update(@RequestBody UserContacts userContacts) {
PublicServicesUser publicServicesUser = userContacts.getPublicServicesUser();
SessionData sessionData =getCurrUserData();
publicServicesUser.setUpdateUser(sessionData.getUserId());
publicServicesUser.setUpdateUserName(sessionData.getUserName());
if (publicServicesUser.getUpdateTime() == null) {
publicServicesUser.setUpdateTime(new Date());
}
Map<Object, Object> objectObjectMap = MapUtil.object2Map(publicServicesUser);
String str = JSONArray.toJSONString(userContacts.getList());
PublicServicesUserTemp publicServicesUserTemp = MapUtil.map2Object(objectObjectMap, PublicServicesUserTemp.class);
publicServicesUserTemp.setContactsStr(str);
publicServicesUserTemp.setApproveState("0");
publicServicesUserTemp.setUpdateTime(new Date());
publicServicesUserTempService.insert(publicServicesUserTemp);
PublicServicesUser publicServicesUser1 = new PublicServicesUser();
publicServicesUser1.setId(publicServicesUser.getId());
publicServicesUser1.setApproveState("0");
publicServicesUser1.setUpdateTime(new Date());
userContacts.setPublicServicesUser(publicServicesUser1);
userContacts.setList(null);
return AssembleJSON.SUCCESS(userContactsService.updateContactsSelective(userContacts));
}
--------------------------------------------------------------
//保存按钮
$("#btnAdd").click(function () {
debugger;
if ($submit_form.form("validate")) {
var url = add_url;
if (key){
url = upd_url;
}
var paras = $submit_form.serializeArray();
var rows2 = $("#dglist2").gridsub("getRows");
var p2 = [];
var flag=true;
$.each(rows2, function (k, j) {
var temp2 = { deviceId: j.deviceId, deviceName: j.deviceName, deviceNumber: j.deviceNumber, assetsNumber: j.assetsNumber, deviceSpec: j.deviceSpec, propertyAscription: j.propertyAscription, company: j.company, number: j.number, installMoney: j.installMoney, total: j.total, installCheckId: key,unitMoney:j.unitMoney};
if(j.company==null){
$Core.UI.message.error("请输入单位");
flag=false;
return;
}else if(j.number==null){
$Core.UI.message.error("请输入数量");
flag=false;
return;
}else if(j.installMoney==null){
$Core.UI.message.error("请输入安装费用");
flag=false;
return;
}else if(j.total==null){
$Core.UI.message.error("请输入合计");
flag=false;
return;
}
p2.push(temp2);
});
paras.push({ 'name': "acceptdetails", value: JSON.stringify(p2) });
if(flag){
//已填写物资数量
$("#btnSave").attr("disabled", "disabled");
// console.log(paras); return false;
$.post(url, paras, function (data) {
$("#btnAdd").removeAttr("disabled");
if (data.code == 0) {
$Core.UI.message.success("操作成功!");
$('#btnAdd').attr('disabled',"true");
}
else {
$Core.UI.message.error(data.msg);
}
});
}
}
});
@PostMapping("/update")
public AssembleJSON update(InstallCheck entity,String acceptdetails) {
SessionData sessionData =getCurrUserData();
entity.setUpdateUser(sessionData.getUserId());
entity.setUpdateUserName(sessionData.getUserName());
entity.setUpdateTime(new Date());
InstallCheck installCheck=service.update(entity,acceptdetails);
return AssembleJSON.SUCCESS(installCheck);
}
@Override
public InstallCheck update(InstallCheck entity, String acceptdetails) {
mapper.updateByPrimaryKeySelective(entity);
/*先删除字表*/
InstallCheckItem installCheckItem = new InstallCheckItem();
installCheckItem.setInstallCheckId(entity.getDeviceInstallCheckId());
List<InstallCheckItem> list = installCheckItemMapper.select(installCheckItem);
for(InstallCheckItem item : list) {
installCheckItemMapper.delete(item);
}
/*再新增*/
if(StringUtil.isNotEmpty(acceptdetails)) {
List<InstallCheckItem> InstallCheckItemdetails = JSONArray.parseArray(acceptdetails, InstallCheckItem.class);
for (InstallCheckItem detail : InstallCheckItemdetails) {
detail.setInstallCheckId(entity.getDeviceInstallCheckId());
installCheckItemMapper.insert(detail);
}
}
return entity;
}
三、返回Map
类型
$.get(form_url + key, function (data) {
debugger;
$submit_form.form("load", data.data.installCheckVo );
$("#dglist2").datagrid({ data: data.data.deviceUserList });
});
Map<String, Object> getUid(Integer ovId);
@Override
public Map<String, Object> getUid(Integer ovId) {
// TODO Auto-generated method stub
Map<String, Object> map = new HashMap<>();
InstallCheckVo installCheckVo = mapper.selectByPrimaryKey(ovId);
map.put("installCheckVo", installCheckVo);
//明细
InstallCheckItem installCheckItem = new InstallCheckItem();
installCheckItem.setInstallCheckId(ovId);
List<InstallCheckItem> removeApplyItems = installCheckItemMapper.select(installCheckItem);
map.put("deviceUserList", removeApplyItems);
return map;
}
根据id判断有无数据
@PostMapping("/queryByParentId")
public AssembleJSON installcheckItem(String ids){
if(null!=ids&&ids.length()>0) {
for(int i =0;i<ids.split(",").length;i++) {
Map<String, Object> counts = service.getByParentId(Integer.parseInt(ids.split(",")[i]));
Object object = counts.get("counts");
if(""!=object&&"0".equals(object.toString())) {
return AssembleJSON.FAILURE;
}
}
}
return AssembleJSON.SUCCESS(ids);
}
Integer getByParentId(@RequestParam(value = "deviceInstallCheckId", required = false)Integer deviceInstallCheckId);
@Override
public Map<String, Object> getByParentId(Integer ovId) {
// TODO Auto-generated method stub
Map<String, Object> map = new HashMap<>();
Integer counts = mapper.getByParentId(ovId);
map.put("counts", counts);
return map;
}
<select id="getByParentId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
SELECT COUNT(*) FROM se_install_check_item WHERE installCheckId = #{deviceInstallCheckId}
</select>
$.post("security/installitcheck/queryByParentId", param, function (data) {
if (data.code != "0") {
$Core.UI.message.error("未录入设备,不可提交!");
return false;
}
}
四、返回List
类型
public class UserVo {
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
@RequestMapping("selectAllUserAndList")
public ModelAndView selectAllUserAndList(){
List<User> listUser = userService.selectAllUser();
ModelAndView mv = new ModelAndView();
mv.addObject("listUser", listUser);
mv.setViewName("list.jsp");
return mv;
}
}
由于我们在 JSP 页面 input 输入框定义的name属性名是 userList[${status.index}].id 这种形式的,这里我们直接用 UserVo 就能获取页面批量提交的 User信息
public class UserContacts{
private PublicServicesUser publicServicesUser;
private List<Contacts> list;
}
@Override
public UserContacts getById(Integer id) {
UserContacts userContacts = new UserContacts();
PublicServicesUser publicServicesUser = publicServicesUserMapper.selectByPrimaryKey(id);
Contacts contacts = new Contacts();
contacts.setUserId(id);
List<Contacts> list = contactsMapper.select(contacts);
List<Contacts> contactsList = new ArrayList<>();
for (Contacts contacts1 : list) {
if (contacts1.getContactsType() != 11 && contacts1.getContactsType() != 12 && contacts1.getContactsType() != 13 && contacts1.getContactsType() != 14) {
contactsList.add(contacts1);
}
}
userContacts.setPublicServicesUser(publicServicesUser);
userContacts.setList(contactsList);
return userContacts;
}
@GetMapping("/getById/{id}")
public AssembleJSON getById(@PathVariable Integer id) {
UserContacts userContacts = userContactsService.getById(id);
return AssembleJSON.SUCCESS(userContacts);
}
$.get("security/PublicServicesUserTemp/getById/" + key, function (data) {
debugger;
_this.getMainData = data;
$("#submit_form").form("load", data.data.publicServicesUser);
var list = data.data.list;
});
有时候我们列表根据大标题和小标题及小标题下的文章的层级进行遍历。一次性获取的数据不能满足只遍历子标题下的文章会同时把大标题也遍历。这时候就需要我们用到集合数据类型,只遍历参数类型为集合的实体对象。
定义实体对象
private static final long serialVersionUID = -8715592713023165170L;
private String subjectClassifyId;
private String classifyName;
private String classifyIsShow;
private String classifyIsShowName;
private String classifyOrder;
private String subjectId;
List<CheckAdvice> adviceList;
后台封装集合参数
@RequestMapping(value = "/gateway/subDetail")
public String getSubDataDetailById(Model model, HttpServletRequest request, String dataId) {
List<SubjectMgtClassify> dataList = gateWayService.getSubjectClassfiyAndAdviceList(dataId);
model.addAttribute("PROFILELIST",dataList);
return pathffix + "/subArticle";
}
public List<SubjectMgtClassify> getSubjectClassfiyAndAdviceList(String dataId)
{
List<SubjectMgtClassify> subjectMgtClassify = getSubjectMgtClassify(dataId);
if(CollectionUtils.isEmpty(subjectMgtClassify))
{
return null;
}
for(SubjectMgtClassify subClass:subjectMgtClassify) {
List<CheckAdvice> adviceList = getAdviceByClassify(subClass.getSubjectClassifyId());
subClass.setAdviceList(adviceList);
}
return subjectMgtClassify;
}
<select id="getAdviceByClassify" parameterType="com.model.SubjectMgtClassify" resultType="com.model.CheckAdvice">
select b.CHECK_ADVICE_ID as adviceId,b.TITLE as title,cta.attachment_id from (select a.*
from PB_CHECK_ADVICE a
where a.CHECK_ADVICE_ID in
(select t.advice_id
from pb_classify_rel_advice t
where t.subject_classify_id = #{subjectClassifyId,jdbcType=VARCHAR}) and
a.is_work=1) b
left join ct_attachment cta on cta.entity_id = b.CHECK_ADVICE_ID and
cta.is_delete=0
</select>
前台分开遍历只遍历子标题下的文章
<div class="wrap main">
<div class="wraper zt">
<div class="cont">
<div class="tit">
<ul>
<li>导读</li>
</ul>
</div>
<div class="zt_con">
<p style="text-indext:2em;">
<#if HEADLIST??>
${HEADLIST.subjectBrief!''}
</#if>
<#if HEADLIST.attachmentId?exists>
<input id="headPicture" src="${rc.contextPath}/attach/download?attachmentId=${HEADLIST.attachmentId!''}" type="hidden">
</#if>
</p>
</div>
<#if PROFILELIST??&& PROFILELIST?size gt 0>
<#list PROFILELIST as profile>
<div class="tit">
<ul>
<li> ${profile.classifyName!''}</li>
</ul>
</div>
<#if profile.adviceList?? && ( profile.adviceList?size>0)>
<ul class="listTW">
<#list profile.adviceList as profileItem>
<li>
<#if profileItem.useLink?? && profileItem.useLink == '1' && profileItem.oriLink??>
<h2><a href="${profileItem.oriLink!''}" target="_blank">${profileItem.title!''}</a></h2>
<#else>
<h2><a href="${rc.contextPath}/detail?dataId=${profileItem.adviceId!''}" target="_blank">${profileItem.title!''}</a></h2>
</#if>
<#if profileItem.attachmentId?exists>
<img src="${rc.contextPath}/attach/download?attachmentId=${profileItem.attachmentId!''}">
</#if>
</li>
</#list>
</ul>
</#if>
</#list>
</#if>
</div>
</div>
</div>
四、返回List<Map<String,Object>>
类型
public class AssembleJSON implements Serializable {
private static final long serialVersionUID = 1L;
private Integer code;
private String msg;
private Object data;
/**
* 获得返回数据
* @return 数据
*/
public Object getData(){
return this.data;
}
public AssembleJSON() {
}
public AssembleJSON(Integer _status, String _message, Object _data){
this.code = _status;
this.msg = _message;
this.data = _data;
}
/**
* 返回成功(默认)
*/
public static AssembleJSON SUCCESS = new AssembleJSON(Constant.SUCCESS, Constant.REQUEST_SUCCESS_STRING, null);
public static AssembleJSON FAILURE = new AssembleJSON(Constant.FAILED, Constant.REQUEST_FAILED_STRING, null);
/**
* 返回成功JSON 状态码默认是 0
* @param _data 数据
* @return JSON对象
*/
public static AssembleJSON SUCCESS(Object _data){
return new AssembleJSON(Constant.SUCCESS, Constant.REQUEST_SUCCESS_STRING, _data);
}
/**
* 返回失败JSON 状态码默认是 -1000
* @param _message 失败信息
* @return JSON对象
*/
public static AssembleJSON FAILURE(String _message){
return new AssembleJSON(Constant.FAILED, _message, null);
}
/**
* 返回失败JSON,传入data 状态码默认是 0
* @param _message 失败信息
* @return JSON对象
*/
public static AssembleJSON FAILURE(String _message,Object _data){
return new AssembleJSON(Constant.FAILED, _message, _data);
}
/**
* 返回成功JSON,
* @param _code 返回的状态码
* @param _message 返回的自定义信息
* @param _data 返回的数据
* */
public static AssembleJSON SUCCESS(Integer _code, String _message,Object _data){
return new AssembleJSON(_code, _message, _data);
}
/**
* 返回成功JSON,
* @param _code 返回的状态码
* @param _message 返回的自定义信息
* */
public static AssembleJSON SUCCESS(Integer _code, String _message){
return new AssembleJSON(_code, _message, null);
}
}
@Override
public Map<String, Object> getUid(Integer installAcceptId) {
AssembleJSON json = dicService.getDicItem("installAcceptProject");
List<Map<String,Object>> items = (List<Map<String, Object>>) json.getData();
map.put("items", items);
return map;
}
$.get("security/installcompletevo/getUid/" + key, function (data) {
$.each(data.data.items, function (k, j) {
var addNum = ++a;
var deviceName = j.deviceName;
var checkIsRight = j.checkIsRight;
var appendRow ="<tr> <td>"+addNum+
"</td><td>"+j.itemName+
"</td><td>"+
"</td> <td>"+
"</td> <td>"+
"</td><td>"+
"</td> <td>"+
"</td><td>"+
"</td> <td>"+j.checkIsRight+
"</td></tr>"
$("#dicItem").after(appendRow);
});
});
返回 Hash<string,List<>>
返回list里面包含list的,可以转换为多个list ,前台js进行拼装
SELECT
DISTINCT d.timestamp,d.`tag_value` AS tagValue,d.`device_code` AS deviceCode,CEIL(d.`tag_value`) AS tagCode
FROM
pr_scada_data d
WHERE
d.device_code = 'N64A749'
AND d.tag_name LIKE '%出口压力'
AND SUBSTRING(d.`timestamp`,1,11) = (SELECT SUBSTRING(m.`timestamp`,1,11) AS TIMESTAMP FROM (SELECT MAX(TIMESTAMP) AS TIMESTAMP FROM pr_scada_data WHERE device_code = 'N64A749') m)
ORDER BY d.`timestamp` DESC
SELECT
DISTINCT d.timestamp,d.`tag_value` AS tagValue,d.`device_code` AS
deviceCode,CEIL(d.`tag_value`) AS tagCode
FROM
pr_scada_data d
WHERE
d.device_code = #{deviceCode,jdbcType=VARCHAR}
AND d.tag_name LIKE '%出口压力'
AND SUBSTRING(d.`timestamp`,1,11) = (SELECT SUBSTRING(m.`timestamp`,1,11)
AS TIMESTAMP FROM (SELECT MAX(TIMESTAMP) AS TIMESTAMP FROM
pr_scada_data WHERE device_code = #{deviceCode,jdbcType=VARCHAR}) m)
ORDER BY d.`timestamp`
public Map<String, List<String>> getRadarChartName(String deviceCode)
{
Map<String, List<String>> maps = new HashMap<String, List<String>>();
List<String> datalist = new ArrayList<String>();
List<String> textlist = new ArrayList<String>();
List<String> maxlist = new ArrayList<String>();
List<String> comparelist = new ArrayList<String>();
List<ScadaVO> radarCeilTime = prPreStationMapper.getRadarCeilTime(deviceCode);
List<ScadaVO> radarRecordChartName = prPreStationMapper.getRadarRecordChartName(deviceCode);
List<ScadaVO> newRadarRecordChartName = new ArrayList<ScadaVO>();
ScadaVO firstScada = radarRecordChartName.get(0);
for(ScadaVO scadaVO:radarCeilTime) {
comparelist.add(scadaVO.getTimestamp());
}
newRadarRecordChartName.add(firstScada);
for(int i=radarRecordChartName.size()-1;i>0;i--) {
newRadarRecordChartName.add(radarRecordChartName.get(i));
}
for(ScadaVO scadaVO:newRadarRecordChartName) {
datalist.add(scadaVO.getTagValue());
maxlist.add(scadaVO.getTagCode());
if(comparelist.contains(scadaVO.getTimestamp())) {
textlist.add(scadaVO.getTimestamp().substring(11, 13));
}else {
textlist.add("");
}
}
maps.put("datalist", datalist);
maps.put("textlist", textlist);
maps.put("maxlist", maxlist);
return maps;
}
var names = ["0:00","1:23","2:22","3:21","4:20","5:19","6:18","7:17","8:16","9:15","10:14","11:13","12:12","13:11","14:10","15:09","16:08","17:07","18:06","19:05","20:04","21:03","22:02","23:01"];
var url = CONTEXT_PATH +"/cusviews/dev/getRadarChartName";
var param = {
deviceCode:deviceCode
}
var retData = $.getData(url,param)
if(0==retData.datalist.length||0==retData.textlist.length||0==retData.maxlist.length){
return;
}
var rlt = {
"data" : []
};
var rltdata = [];
for(var i = 0, len = names.length; i < len; i++){
debugger;
var flag = false;
for(var key in retData.textlist){
var nItem = names[i], noKey = nItem.split(":")[0], nVal = nItem.split(":")[1];
if(nVal==retData.textlist[key]){
flag = true;
var obj = {};
obj.text = retData.textlist[key],obj.max = retData.maxlist[key];
rlt.data.push(obj);
}
if(!flag){
}
}
}
Map集合用于排序问题
public Map<String, Object>getRadarChartData(String deviceCode)
{
//每点的数据
List<ScadaVO> radarCeilTime = prPreStationMapper.getRadarCeilTime(deviceCode);
if(CollectionUtils.isEmpty(radarCeilTime))
{
return null;
}
String[] dateString = {"00","23","22","21","20","19","18","17","16","15","14","13","12","11","10","09","08","07","06","05","04","03","02","01"};
Map<String, Object> radarData = new HashMap<String,Object>(1);
for(int i=0;i<dateString.length;i++)
{
radarData.put(dateString[i], "0");
}
for(ScadaVO sc:radarCeilTime)
{
if(radarData.containsKey(sc.getTimestamp().substring(11, 13)))
{
radarData.put(sc.getTimestamp().substring(11, 13), sc.getTagValue());
}
}
return radarData;
}
var names = ["0:00","1:23","2:22","3:21","4:20","5:19","6:18","7:17","8:16","9:15","10:14","11:13","12:12","13:11","14:10","15:09","16:08","17:07","18:06","19:05","20:04","21:03","22:02","23:01"];
var url = CONTEXT_PATH +"/cusviews/dev/getRadarChartName";
var param = {
deviceCode:deviceCode
}
var retData = $.getData(url,param)
if(1000!=retData.status){
return;
}
var data = retData.data;
var rlt = {
"data" : []
};
var rltdata = [];
var dataList = new Array();;
for(key in data){
var obj = {};
obj.text = key,obj.max = 3;
rlt.data.push(obj);
dataList.push(data[key]);
}
通过map集合排序算法进行排序
通过map进行数据的排序,list进行前台数据的封装
SELECT
DISTINCT d.timestamp,d.`tag_value` AS tagValue,d.`device_code` AS
deviceCode,CEIL(d.`tag_value`) AS tagCode
FROM
pr_scada_data d
WHERE
d.device_code = 'N53A295'
AND d.tag_name LIKE '%出口压力'
AND SUBSTRING(d.`timestamp`,1,11) = (SELECT SUBSTRING(m.`timestamp`,1,11)
AS TIMESTAMP FROM (SELECT MAX(TIMESTAMP) AS TIMESTAMP FROM
pr_scada_data WHERE device_code = 'N53A295') m)
ORDER BY d.`timestamp`
SELECT MAX(m.tagValue) AS tagValue FROM(SELECT MIN(b.`timestamp`) AS TIMESTAMP,CEIL(b.`tag_value`) AS tagValue
FROM
(SELECT
DISTINCT d.timestamp,d.`tag_value`,d.`device_code`
FROM
pr_scada_data d
WHERE
d.device_code = 'N53A295'
AND d.tag_name LIKE '%出口压力'
AND SUBSTRING(d.`timestamp`,1,11) = (SELECT SUBSTRING(m.`timestamp`,1,11)
AS TIMESTAMP FROM (SELECT MAX(TIMESTAMP) AS TIMESTAMP FROM
pr_scada_data WHERE device_code = 'N53A295') m)
ORDER BY d.`timestamp` DESC)
b GROUP BY SUBSTRING(b.`timestamp`,12,2)) m
public Map<String, List<String>> getRadarChartData(String deviceCode)
{
Map<String, List<String>> maps = new HashMap<String, List<String>>();
//统计整点的最大数据
String radarCeilTime = prPreStationMapper.getRadarCeilTime(deviceCode);
//数据库已有的真实的数据
List<ScadaVO> radarRecordChartName = prPreStationMapper.getRadarRecordChartName(deviceCode);
if(StringUtil.isEmpty(radarCeilTime))
{
return null;
}
if(CollectionUtils.isEmpty(radarRecordChartName)) {
return null;
}
String radarMaxTime = prPreStationMapper.getRadarMaxTiem(deviceCode);
String[] dateString = {radarMaxTime+"00:00",radarMaxTime+"23:00",radarMaxTime+"22:00",radarMaxTime+"21:00",radarMaxTime+"20:00",radarMaxTime+"19:00",radarMaxTime+"18:00",radarMaxTime+"17:00",radarMaxTime+"16:00",radarMaxTime+"15:00",radarMaxTime+"14:00",radarMaxTime+"13:00",radarMaxTime+"12:00",radarMaxTime+"11:00",radarMaxTime+"10:00",radarMaxTime+"09:00",radarMaxTime+"08:00",radarMaxTime+"07:00",radarMaxTime+"06:00",radarMaxTime+"05:00",radarMaxTime+"04:00",radarMaxTime+"03:00",radarMaxTime+"02:00",radarMaxTime+"01:00"};
Map<String, Object> radarData = new HashMap<String,Object>(1);
//设置整点默认值,以最接近整点的数据最大的整数值设置,如果没有当前整点,则统一默认设置其他整点
for(int i=0;i<dateString.length;i++)
{
radarData.put(dateString[i], radarCeilTime);
}
//查询真实数据
for(ScadaVO sc:radarRecordChartName)
{
radarData.put(sc.getTimestamp().substring(0, 16), sc.getTagValue());
}
Map<String, Object> map = new TreeMap<String, Object>(
new Comparator<String>() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
});
for (Map.Entry<String, Object> entry : radarData.entrySet()) {
map.put(entry.getKey(), entry.getValue());
}
//map转为list,否则前台获取object 通过for in获取的数据是无序的
List<String> listKey = new ArrayList<String>();
List<String> listValue = new ArrayList<String>();
List<String> dataKey = new ArrayList<String>();
//echarts顺时针展示
String zeroTime = radarMaxTime+"00:00";
Object firstMap = map.get(zeroTime);
listKey.add(zeroTime);
listValue.add(String.valueOf(firstMap));
if(!radarCeilTime.equals(String.valueOf(map.get(zeroTime)))) {
dataKey.add(String.valueOf(firstMap));
}else {
dataKey.add("");
}
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
String key = it.next().toString();
if(!zeroTime.equals(key)) {
listKey.add(key);
listValue.add(radarCeilTime);
if(!radarCeilTime.equals(String.valueOf(map.get(key)))) {
dataKey.add(String.valueOf(map.get(key)));
}else {
dataKey.add("");
}
}
}
maps.put("textlist", listKey);
maps.put("maxlist", listValue);
maps.put("datalist", dataKey);
return maps;
}
showRadarChart:function(deviceCode){
debugger;
var names = ["0:00","1:23","2:22","3:21","4:20","5:19","6:18","7:17","8:16","9:15","10:14","11:13","12:12","13:11","14:10","15:09","16:08","17:07","18:06","19:05","20:04","21:03","22:02","23:01"];
var url = CONTEXT_PATH +"/cusviews/dev/getRadarChartName";
var param = {
deviceCode:deviceCode
}
var retData = $.getData(url,param)
if(1000!=retData.status){
return;
}
var data = retData.data;
if(null==data){
return;
}
var rlt = {
"data" : []
};
var rltdata = [];
var dataList = new Array();
$.each(data.textlist,function(j,k){
let obj = {};
obj.text = k;
obj.max = data.maxlist[j];
rlt.data.push(obj);
})
var myChart = echarts.init(document.getElementById("radarChart"));
var option = {
title : {
text: '出口压力',
subtext: ''
},
tooltip : {
/* trigger: 'axis',*/
extraCssText:'width:120px;height:80px;',
textStyle:'8'
},
legend: {
orient : 'vertical',
x : 'right',
y : 'bottom',
data:[{
name: '出口压力 ',
// 强制设置图形为圆。
icon: 'circle',
// 设置文本为红色
textStyle: {
color: '#FF0000'
}
}]
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
polar : [
{
name:{
show: true, // 是否显示工艺等文字
formatter: null, // 工艺等文字的显示形式
textStyle: {
color:'#a3a5b6' // 工艺等文字颜色
}
},
indicator : rlt.data
/*[
{ text: 0, max: 6000},
{ text: 5, max: 16000},
{ text: 4, max: 30000},
{ text: 3, max: 38000},
{ text: 2, max: 52000},
{ text: 1, max: 25000}
]*/
}
],
calculable : true,
series : [
{
name: '出口压力 ',
type: 'radar',
data : [
{
/* value : [5000, 14000, 28000, 31000, 42000, 21000],*/
value : data.datalist,
name : '出口压力',
itemStyle: {
normal: {
color: '#FF0000',
lineStyle: {
color: '#FF0000',
}
},
},
}
]
}
]
};
myChart.setOption(option);
Map<String,List<ScadaVO>>
public Map<String,List<ScadaVO>> getScadaAirDataList()
{
List<ScadaVO> list = scadaMapper.getScadaAirDataList();
if(CollectionUtils.isEmpty(list))
{
return null;
}
Map<String,List<ScadaVO>> result = new HashMap<String,List<ScadaVO>>(1);
for(ScadaVO scada:list)
{
if(result.containsKey(scada.getTagCode()))
{
result.get(scada.getTagCode()).add(scada);
}
else
{
List<ScadaVO> dataList = new ArrayList<ScadaVO>(1);
dataList.add(scada);
result.put(scada.getTagCode(), dataList);
}
}
return result;
}
var result = {};
var url = CONTEXT_PATH + '/cusviews/scada/getScadaAirData';
var retData = $.getData(url,null);
if(1000 != retData.status){
return;
}
var data = retData.data;
if(null == data || undefined == data){
return;
}
function getGasList(tagCode){
if($.isEmptyArray(data[tagCode])){
return;
}
var gasList = new Array();
for(var i=0;i<data[tagCode].length;i++){
debugger;
var obj = new Object();
obj.name = data[tagCode][i].timestamp;
var arr = new Array();
arr.push(data[tagCode][i].timestamp)
arr.push(data[tagCode][i].tagValue);
obj.value = arr;
gasList.push(obj);
}
return gasList;
}
result["xijiaoList"] = getGasList("FRQA001A.PV");
result["ciquList"] = getGasList("FRQB003A.PV");