HomePageAPresenter.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. package com.sunzee.mvp.homeactivity;
  2. import android.text.TextUtils;
  3. import android.util.Log;
  4. import com.google.gson.Gson;
  5. import com.orhanobut.hawk.Hawk;
  6. import com.sunzee.base.BaseApplication;
  7. import com.sunzee.base.BasePresenter;
  8. import com.sunzee.db.CleaningBeanDao;
  9. import com.sunzee.model.Global;
  10. import com.sunzee.model.Heartbeat;
  11. import com.sunzee.model.HttpResult;
  12. import com.sunzee.model.HttpResult2;
  13. import com.sunzee.model.domain.CleaningBean;
  14. import com.sunzee.model.domain.Name;
  15. import com.sunzee.model.domain.ParameterBean;
  16. import com.sunzee.retrofit.ApiCallback;
  17. import com.sunzee.thread.advanceparameter.ThreadPoolAdvanceParameter;
  18. import com.sunzee.utils.AlarmManagerUtil;
  19. import com.sunzee.utils.HexadecimalUtil;
  20. import org.greenrobot.greendao.query.QueryBuilder;
  21. import org.greenrobot.greendao.query.WhereCondition;
  22. import java.text.ParseException;
  23. import java.text.SimpleDateFormat;
  24. import java.util.ArrayList;
  25. import java.util.Calendar;
  26. import java.util.Date;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. import okhttp3.RequestBody;
  31. /**
  32. * 厕所状态界面 presenter
  33. * 需求:
  34. */
  35. public class HomePageAPresenter extends BasePresenter<HomePageAView> {
  36. private static final String TAG = "HomeactivityPresenter";
  37. private CleaningBeanDao cleaningBeanDao;
  38. public HomePageAPresenter(HomePageAView view) {
  39. attachView(view);
  40. cleaningBeanDao = BaseApplication.getInstances().getDaoSession().getCleaningBeanDao();
  41. }
  42. //-------------------------------------------------------------------------清洗规则 start--------------------------------------------------------------------------------------------
  43. public void requstCleanRule() {
  44. Map<String, String> params = new HashMap<>();
  45. params.put("clientId", Heartbeat.deviceId);
  46. addSubscription(apiStores.cleanRule(params), new ApiCallback<HttpResult<String>>() {
  47. @Override
  48. public void onSuccess(HttpResult<String> model) {
  49. String times = model.getData().trim();
  50. Log.d(TAG, "onSuccess: " + times);
  51. if ("尚未设定清洗规则".equals(times)) {
  52. return;
  53. }
  54. Log.d(TAG, "onSuccess: ");
  55. Log.d(TAG, "onSuccess2: " + times);
  56. if (!TextUtils.isEmpty(times)) {
  57. String[] Alltime = times.split("\\,");
  58. Global.alarmNumber = Alltime.length;
  59. for (int i = 0; i < Alltime.length; i++) {
  60. String[] data = Alltime[i].split(":");
  61. for (String datum : data) {
  62. Log.d(TAG, "onSuccess1: " + datum);
  63. }
  64. //设置定时闹钟
  65. AlarmManagerUtil.setAlarm(BaseApplication.getContext(), 1, Integer.valueOf(data[0]), Integer.valueOf(data[1]), Integer.valueOf(data[2]), i, 0, "闹钟响了26");
  66. }
  67. }
  68. }
  69. @Override
  70. public void onFailure(String msg) {
  71. Log.d(TAG, "onFailure: " + msg);
  72. }
  73. @Override
  74. public void onFinish() {
  75. }
  76. });
  77. }
  78. //-------------------------------------------------------------------------清洗规则 end--------------------------------------------------------------------------------------------
  79. //------------------------------------------------------------------请求是否已经付费了。或者说过期了。 start-----------------------------------------------
  80. public void requestCleanTimeAndRemaining() {
  81. Map<String, String> params = new HashMap<>();
  82. params.put("clientId", Heartbeat.deviceId);
  83. addSubscription(apiStores.getCleanTimeAndRemaining(params), new ApiCallback<HttpResult2<String>>() {
  84. @Override
  85. public void onSuccess(HttpResult2<String> model) {
  86. Log.d(TAG, "onSuccess11: " + model);
  87. String overdueDate = model.getOverdueDate();
  88. String remaining = model.getRemaining();
  89. if (TextUtils.isEmpty(overdueDate)) {
  90. //如果为空
  91. Hawk.put(Name.OVERDUE_DATE, null);
  92. } else {
  93. try {
  94. Calendar calendar = Calendar.getInstance();
  95. calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(overdueDate));
  96. Hawk.put(Name.OVERDUE_DATE, calendar.getTimeInMillis());
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. Hawk.put(Name.OVERDUE_DATE, null);
  100. }
  101. }
  102. if (TextUtils.isEmpty(remaining)) {
  103. Hawk.put(Name.REMAINING, null);
  104. } else {
  105. Hawk.put(Name.REMAINING, remaining);
  106. }
  107. }
  108. @Override
  109. public void onFailure(String msg) {
  110. Log.d(TAG, "onFailure: " + msg);
  111. //失败了。
  112. }
  113. @Override
  114. public void onFinish() {
  115. }
  116. });
  117. }
  118. //---------------------------------------------------------------------请求是否已经付费了。 end---------------------------------------------
  119. public void setAdvanced(String name, ArrayList<String> results, ThreadPoolAdvanceParameter threadGetParameter1) {
  120. if (name.equals("D418")) {
  121. if (!threadGetParameter1.isReceive2()) {
  122. threadGetParameter1.setReceive2(true);
  123. threadGetParameter1.stopReadD418();
  124. threadGetParameter1.getValues()[6] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(0))));
  125. threadGetParameter1.getValues()[7] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(1))));
  126. threadGetParameter1.getValues()[0] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(2))));
  127. threadGetParameter1.getValues()[1] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(3))));
  128. threadGetParameter1.getValues()[2] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(4))));
  129. threadGetParameter1.getValues()[3] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(5))));
  130. threadGetParameter1.getValues()[4] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(6))));
  131. threadGetParameter1.getValues()[5] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(7))));
  132. Log.d(TAG, "D418setAdvanced: "+results.size());
  133. }
  134. } else if (name.equals("D426")) {
  135. if (!threadGetParameter1.isReceive1()) {
  136. threadGetParameter1.setReceive1(true);
  137. threadGetParameter1.stopReadD426();
  138. threadGetParameter1.getValues()[7] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
  139. threadGetParameter1.getValues()[8] = String.valueOf(HexadecimalUtil.hex2dec(results.get(1)));
  140. threadGetParameter1.getValues()[9] = String.valueOf(HexadecimalUtil.hex2dec(results.get(2)));
  141. threadGetParameter1.getValues()[10] = String.valueOf(HexadecimalUtil.hex2dec(results.get(3)));
  142. threadGetParameter1.getValues()[11] = String.valueOf(HexadecimalUtil.hex2dec(results.get(4)));
  143. threadGetParameter1.getValues()[12] = String.valueOf(HexadecimalUtil.hex2dec(results.get(5)));
  144. threadGetParameter1.getValues()[13] = String.valueOf(HexadecimalUtil.hex2dec(results.get(6)));
  145. threadGetParameter1.getValues()[14] = String.valueOf(HexadecimalUtil.hex2dec(results.get(7)));
  146. threadGetParameter1.getValues()[15] = String.valueOf(HexadecimalUtil.hex2dec(results.get(8)));
  147. Log.d(TAG, "D426setAdvanced: "+results.size());
  148. }
  149. }
  150. if (threadGetParameter1.isReceive1() &&
  151. threadGetParameter1.isReceive2()) {
  152. mvpView.getDataSuccess();
  153. threadGetParameter1.setReceive1(false);
  154. threadGetParameter1.setReceive2(false);
  155. }
  156. }
  157. private String get177Data(long l) {
  158. return String.valueOf(Math.round((l/ Global.num)*10));
  159. }
  160. public void updateAdvanced(ArrayList<ParameterBean> parameterBeans) {
  161. String url = "/api/app_equipment/index/updateParam/1/" + Heartbeat.deviceId + ".htm";
  162. Gson gson = new Gson();
  163. String json = gson.toJson(parameterBeans);
  164. RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
  165. addSubscription(apiStores.updateParamApi(url, body), new ApiCallback<HttpResult<String>>() {
  166. @Override
  167. public void onSuccess(HttpResult<String> model) {
  168. Log.d(TAG, "onSuccess: " + model);
  169. }
  170. @Override
  171. public void onFailure(String msg) {
  172. }
  173. @Override
  174. public void onFinish() {
  175. }
  176. });
  177. }
  178. /**
  179. * 上次局部清洗的蹲位有多少个
  180. *
  181. * @param num 数量
  182. */
  183. public void sendPositionNum(int num) {
  184. Map<String, String> params = new HashMap<>();
  185. params.put("clientId", Heartbeat.deviceId + "");
  186. params.put("num", num + "");
  187. Log.d(TAG, "sendPositionNum: " + num);
  188. addSubscription(apiStores.sendPositionNum(params), new ApiCallback<HttpResult<String>>() {
  189. @Override
  190. public void onSuccess(HttpResult<String> model) {
  191. }
  192. @Override
  193. public void onFailure(String msg) {
  194. }
  195. @Override
  196. public void onFinish() {
  197. }
  198. });
  199. }
  200. /**
  201. * 上传厕所的使用状态
  202. * @param sn 几号厕所
  203. * @param status 厕所使用状态
  204. */
  205. public void sendStatusOfToiletUse(String sn,String status){
  206. Log.d(TAG, "11onSuccess: "+Heartbeat.deviceId);
  207. Map<String, String> params = new HashMap<>();
  208. params.put("clientId", Heartbeat.deviceId + "");
  209. params.put("sn", sn);
  210. params.put("status", status);
  211. addSubscription(apiStores.sendStatusOfToiletUse(params), new ApiCallback<HttpResult<String>>() {
  212. @Override
  213. public void onSuccess(HttpResult<String> model) {
  214. Log.d(TAG, "sendStatusOfToiletUse11onSuccess: "+model);
  215. }
  216. @Override
  217. public void onFailure(String msg) {
  218. }
  219. @Override
  220. public void onFinish() {
  221. }
  222. });
  223. }
  224. public void createBox(int number){
  225. Map<String, String> params = new HashMap<>();
  226. params.put("clientId", Heartbeat.deviceId + "");
  227. params.put("number", number+"");
  228. addSubscription(apiStores.createBox(params), new ApiCallback<HttpResult<String>>() {
  229. @Override
  230. public void onSuccess(HttpResult<String> model) {
  231. Log.d(TAG, "createBox11onSuccess: "+model);
  232. }
  233. @Override
  234. public void onFailure(String msg) {
  235. }
  236. @Override
  237. public void onFinish() {
  238. }
  239. });
  240. }
  241. /**
  242. * 查询今天的使用次数
  243. */
  244. public CleaningBean queryTodayCleanCount(int number,int number2) {
  245. QueryBuilder<CleaningBean> qb = cleaningBeanDao.queryBuilder();
  246. //tomorrowDateStr(0), tomorrowDateStr(1))
  247. List<CleaningBean> list = qb.where(new WhereCondition.StringCondition("TIME >= ? and TIME <= ?",
  248. tomorrowDateStr(number), tomorrowDateStr(number2))).build().list();
  249. Log.d(TAG, "tomorrowDateStronStartCommand: "+list.size());
  250. if (list.size()<=0) {
  251. //添加今天的数据,如果一直不关机呢?那么我们就需要当前时间如何重新插入数据。
  252. CleaningBean cleaningBean = new CleaningBean();
  253. cleaningBean.setOutCount("0");
  254. cleaningBean.setInCount("0");
  255. cleaningBean.setCleanCount("0");
  256. cleaningBean.setTime(System.currentTimeMillis());
  257. cleaningBeanDao.insert(cleaningBean);
  258. return cleaningBean;
  259. }
  260. return list.get(0);
  261. }
  262. /**
  263. * 获取明天的日期字符串
  264. * @return
  265. */
  266. public static long tomorrowDateStr(int number){
  267. Date date=new Date();//取时间
  268. Calendar calendar = Calendar.getInstance();
  269. calendar.setTime(date);
  270. //把日期往后增加一天.整数往后推,负数往前移动
  271. calendar.add(calendar.DATE,number);
  272. //这个时间就是日期往后推一天的结果
  273. date=calendar.getTime();
  274. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  275. String tomorrowStr = formatter.format(date);
  276. Date parse= null;
  277. try {
  278. parse = formatter.parse(tomorrowStr);
  279. } catch (ParseException e) {
  280. e.printStackTrace();
  281. }
  282. return parse.getTime();
  283. }
  284. }