业务场景:
在**记录里提高预警设置,要求当点击该记录id显示弹出层进行预警设置,由于记录中某字段含有数组格式[] 包含多个设备,则接口应判断设置该记录id时,得到前台传来的[{}]格式参数,转换json再遍历。先判断表里是否有该id、type存在 ,判断查询是否为0,如为0,则增加新的记录存入表中;如不为0,则修改设置该预警记录。
示例代码:
public void setStationWarning() {
JSONArray params = JSON.parseArray(getPara("param"));
for (Object param : params) {
JSONObject object = JSONObject.parseObject(param.toString());
Record paras = new Record().set("frequency", object.getInteger("frequency"))
.set("open_warn", object.getInteger("open_warn"))
.set("aton_id", object.getInteger("atonId"))
.set("type", object.getInteger("type"));
int result = EnavmarkStation.dao.selectStationWarnInfo(paras.getInt("aton_id"), paras.getInt("type"));
if (result == 0) {
EnavmarkStation.dao.addEnavmarkStationWarn(paras.getColumnValues());
} else {
EnavmarkStation.dao.UpdateEnavmarkStationWarnInfo(paras.getColumnValues());
}
renderJson(ResultCode.success("设置完成"));
}
}
/*查询*/
public int selectStationWarnInfo(Integer atonid,Integer type) {
String sql = " SELECT count(*) num FROM enavmark_warntime_setting WHERE aton_id = ? AND type = ? ";
return Db.use("enavmsi").findFirst(sql, atonid,type).getInt("num");
}
/*修改*/
public int UpdateEnavmarkStationWarnInfo(Object[] params) {
String sql = " UPDATE enavmark_warntime_setting SET frequency =?, open_warn =? WHERE aton_id = ? and type = ? ";
return Db.use("enavmsi").update(sql, params);
}
/*添加*/
public int addEnavmarkStationWarn(Object[] params) {
String sql = " INSERT INTO enavmark_warntime_setting( frequency,open_warn,aton_id,type ) VALUES (?,?,?,?)";
return Db.use("enavmsi").update(sql,params);
}
请求参数:
param: [{"id":39,"frequency":"","open_warn":"1","atonId":994140203,"type":"1"},{"id":39,"frequency":"","open_warn":"1","atonId":994140203,"type":"4"},{"id":39,"frequency":"","open_warn":"1","atonId":994140203,"type":"6"},{"id":39,"frequency":"","open_warn":"1","atonId":994140203,"type":"8"}]