service
package com.farm.learn.utils;
import com.farm.learn.domain.Classt;
import com.farm.learn.service.ClasstServiceInter;
import com.farm.util.spring.BeanFactory;
/**
* 保存课程到磁盘
*
* @author macpl
*
*/
public class ClassSaveToDisker {
private static String curent_classid;
/**
* 0:完成,1:启动中,2:处理中,
*/
private static String state = "3";
private static String message = "";
private static ClasstServiceInter classTServiceImpl = (ClasstServiceInter) BeanFactory.getBean("classtServiceImpl");
/**
* 执行导出
*/
public static void toSave(final String classid) {
if (state.equals("0")) {
state = "1";
message = "启动中";
curent_classid = null;
}
Classt classt = classTServiceImpl.getClasstEntity(classid);
if (curent_classid != null && !curent_classid.equals(classid)) {
throw new RuntimeException("已有课程" + classt.getName() + "正在导出!");
}
if (curent_classid != null && curent_classid.equals(classid)) {
return;
}
Thread t = new Thread(new Runnable() {
public void run() {
curent_classid = classid;
state = "2";
message = "处理中...";
try {
for (int n = 1; n < 40; n++) {
message = "处理中..." + n + "/" + 40;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} finally {
state = "0";
message = "完成";
}
}
});
t.start();
}
/**
* 获得导出进度状态
*
* @return
*/
public static String getProgressState() {
return state;
}
/**
* 获得导出进度信息
*
* @return
*/
public static String getProgressMessage() {
return message;
}
}
controller
/**
* 课程保存到服务器磁盘
*
* @return
*/
@RequestMapping("/saveToDisk")
@ResponseBody
public Map<String, Object> saveToDisk(String classid, HttpSession session) {
try {
ClassSaveToDisker.toSave(classid);
return ViewMode.getInstance().returnObjMode();
} catch (Exception e) {
log.error(e.getMessage());
return ViewMode.getInstance().setError(e.getMessage(), e).returnObjMode();
}
}
/**
* 加载保存到服务器磁盘的进度
*
* @return
*/
@RequestMapping("/loadSDProgress")
@ResponseBody
public Map<String, Object> loadSDProgress(String classid, HttpSession session) {
try {
return ViewMode.getInstance().putAttr("state", ClassSaveToDisker.getProgressState())
.putAttr("message", ClassSaveToDisker.getProgressMessage()).returnObjMode();
} catch (Exception e) {
log.error(e.getMessage());
return ViewMode.getInstance().setError(e.getMessage(), e).returnObjMode();
}
} js
//导出到服务器磁盘
function saveToDisk() {
var selectedArray = $(gridClasst).datagrid('getSelections');
if (selectedArray.length == 1) {
// 有数据执行操作
var str = "是否立即将所选课程导出到服务器磁盘?";
$.messager.confirm(MESSAGE_PLAT.PROMPT, str, function(flag) {
if (flag) {
$.messager.progress({
text : '处理中...',
interval : 0
});
var classid = $.farm.getCheckedIds(gridClasst, 'ID');
$.post('classt/saveToDisk.do?classid=' + classid, {},
function(flag) {
var jsonObject = JSON.parse(flag, null);
if (jsonObject.STATE == 0) {
//显示导出进度
loadSTProcess();
} else {
var str = MESSAGE_PLAT.ERROR_SUBMIT
+ jsonObject.MESSAGE;
$.messager.alert(MESSAGE_PLAT.ERROR, str,
'error');
}
});
}
});
} else {
$.messager.alert(MESSAGE_PLAT.PROMPT, MESSAGE_PLAT.CHOOSE_ONE_ONLY,
'info');
}
}
//加载远程进度(导出课程)
function loadSTProcess() {
var classid = $.farm.getCheckedIds(gridClasst, 'ID');
$.post('classt/loadSDProgress.do?classid=' + classid, {},
function(flag) {
var state = flag.state;
var message = flag.message;
$(".progressbar-text").text(state + ":" + message);
if (state == '0') {
setTimeout(function() {
$.messager.progress('close');
}, 1000);
} else {
setTimeout(function() {
loadSTProcess()
}, 1000);
}
}, 'json');
}