package com.jqyd.manager;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Context;
import android.util.Log;
import com.jqyd.app.WriteFile;
import com.jqyd.model.PromiseModel;
import com.jqyd.pub.JqydDateUtil;
import com.jqyd.shareInterface.Optsharepre_interface;
public class UpLocationManager {
private Optsharepre_interface shareFile;
private Context context;
private final static String TAG = "LXRBRZ-UPLOCATIONMGR";
private WriteFile writeFile ;
private String ontime, offtime, intervaltime, execute;
private int startTime, endTime;
private int onhour, onminute, offhour, offminute;
private String log = "";
public UpLocationManager(Optsharepre_interface shareFile,Context context ) {
this.shareFile = shareFile;
this.context=context;
writeFile = new WriteFile(context,TAG
+ JqydDateUtil.getDateDayOne(new Date()));
}
/**
* 获取上报政策
* @return
*/
public PromiseModel getSettingPolicy() {
System.out.println("getSetting policy");
writeFile.writeToFile("getSetting policy");
PromiseModel promiseMode = new PromiseModel();
System.out.println("getSetting policy is finish");
if (hasTask()) {
// 有任务
writeFile.writeToFile("has task");
int inModdle = JqydDateUtil.timeInTheMiddle(startTime, endTime);//-1:在开始时间前;0:在两个时间之间;-1:在结束时间后
switch (inModdle) {
case -1:
// 上班前需要休眠到上班时间
promiseMode.setState(1);
promiseMode.setTimeValue(JqydDateUtil.getTodayHourMinCalendar(
onhour, onminute).getTimeInMillis());
return promiseMode;
case 0:
// 到达上报时间
long hisUpTime;
try {
hisUpTime = new SimpleDateFormat("yyyyMMddHHmmss").parse(shareFile.getDataFromPres("hisSbTime")).getTime();
} catch (ParseException e) {
hisUpTime = 0;
e.printStackTrace();
}
int period = new Integer(shareFile.getDataFromPres("JGSJ"))
.intValue();
Log.e("startTime---------",startTime+"" );
Log.e("period---------",period+"" );
int longToIntForHisUpTime = JqydDateUtil.longToIntForHisUpTime(hisUpTime);
int outPeriod = JqydDateUtil.outOfPeriod(startTime, period,longToIntForHisUpTime);
//-1:在间隔时间内;0:正好在间隔时间点上,需要上报;1:超过间隔时间,需要上报一次,并休眠到下个间隔时间点上;
if (hisUpTime == -1) {
switch (outPeriod) {
case -1:
case 1:
promiseMode.setState(5);
promiseMode.setTimeValue(JqydDateUtil.getNextTurnTime(
startTime, period).getTimeInMillis());
return promiseMode;
case 0:
promiseMode.setState(4);
promiseMode.setTimeValue(period*60*1000);
return promiseMode;
}
} else {
switch (outPeriod) {
case -1:
promiseMode.setState(2);
promiseMode.setTimeValue(JqydDateUtil.getNextTurnTime(
startTime, period).getTimeInMillis());
return promiseMode;
case 0:
promiseMode.setState(4);
promiseMode.setTimeValue(period*60*1000);
return promiseMode;
case 1:
promiseMode.setState(3);
promiseMode.setTimeValue(JqydDateUtil.getNextTurnTime(
startTime, period).getTimeInMillis());
return promiseMode;
}
}
break;
case 1:
// 下班后需要休眠到明天上班时间
promiseMode.setState(6);
promiseMode.setTimeValue(JqydDateUtil
.getTomorrowHourMinCalendar(onhour, onminute)
.getTimeInMillis());
return promiseMode;
}
} else {
// 没有任务,休眠到第二天上班时间
promiseMode.setState(-1);
promiseMode.setTimeValue(JqydDateUtil.getTomorrowHourMinCalendar(
onhour, onminute).getTimeInMillis());
return promiseMode;
}
return promiseMode;
}
/**
* 判断当前是否有上报任务
* @return
*/
private boolean hasTask() {
System.out.println("hasTask");
boolean hasTask = false;
boolean hasData = true;
System.out.println("从终端配置文件中查找任务");
writeFile.writeToFile("从终端配置文件中查找任务");
ontime = shareFile.getDataFromPres("SBSJ");
offtime = shareFile.getDataFromPres("XBSJ");
intervaltime = shareFile.getDataFromPres("JGSJ");
execute = shareFile.getDataFromPres("RWZL");
System.out.println("查找任务完毕");
// 讲参数写入配置文件中
// myApp.setOntime(ontime);
// myApp.setOfftime(offtime);
// myApp.setJgsj(intervaltime);
if (ontime.equals("-1") || offtime.equals("-1")
|| intervaltime.equals("-1") || execute.equals("-1")
|| ontime.equals("-2") || offtime.equals("-2")
|| intervaltime.equals("-2") || execute.equals("-2")) {
hasData = false;
// 定义上班时间、下班时间参数值有效
String[] kqcl = shareFile.getDataFromPres("KQCL").split("#");
ontime = kqcl[0];
offtime = kqcl[1];
log = "终端配置文件中没有连续上报任务参数,读取久其管家登录时的上班时间、下班时间:" + ontime + ","
+ offtime;
Log.i(TAG, log);
writeFile.writeToFile(log);
onhour = Integer.parseInt(ontime.split(":")[0]);
try {
onminute = Integer.parseInt(ontime.split(":")[1]);
} catch (Exception e) {
Log.i(this.getClass().getName(), "初次查询时没有上班时间");
}
offhour = Integer.parseInt(offtime.split(":")[0]);
try {
offminute = Integer.parseInt(offtime.split(":")[1]);
} catch (Exception e) {
Log.i(this.getClass().getName(), "初次查询时没有下班时间");
}
startTime = onhour * 60 + onminute;
endTime = offhour * 60 + offminute;
}
if (hasData) {
try {
onhour = Integer.parseInt(ontime.split(":")[0]);
onminute = Integer.parseInt(ontime.split(":")[1]);
offhour = Integer.parseInt(offtime.split(":")[0]);
offminute = Integer.parseInt(offtime.split(":")[1]);
} catch (Exception e) {
writeFile.writeToFile("上班时间,下班时间解析异常");
}
startTime = onhour * 60 + onminute;
endTime = offhour * 60 + offminute;
if (execute.equals("1")) {
// 有任务
hasTask = true;
}
}
log = "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^从终端表中查找任务打印^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
+ "上班时间:"
+ ontime
+ ",下班时间:"
+ offtime
+ ",间隔时间:"
+ intervaltime
+ "\n"
+ "终端是否保存有数据:"
+ hasData
+ ",判断是否有任务:"
+ hasTask;
Log.i(TAG, log);
writeFile.writeToFile(log);
return hasTask;
}
}