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; } }