package com.sipai.jspatrol.Patrol; import android.app.PendingIntent; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.graphics.Color; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.tech.MifareClassic; import android.nfc.tech.NfcA; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.speech.tts.TextToSpeech; import android.text.Html; import android.text.format.DateFormat; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; import com.sipai.jspatrol.Bean.Patrol; import com.sipai.jspatrol.Fault.NewFaultActivity; import com.sipai.jspatrol.utils.Global.GlobalVal; import com.sipai.jspatrol.Bean.PatrolPointContent; import com.sipai.jspatrol.Bean.FileForDL; import com.sipai.jspatrol.Bean.InputPoint; import com.sipai.jspatrol.Bean.Measuringpoint; import com.sipai.jspatrol.Bean.ProPatrolPoint; import com.sipai.jspatrol.Patrol.patrolInfoAdapter.PatrolEqu; import com.sipai.jspatrol.Patrol.patrolInfoAdapter.PatrolInfoEquAdapter; import com.sipai.jspatrol.Patrol.patrolInfoAdapter.PatrolInfoMeasurePointAdapter; import com.sipai.jspatrol.ProMonitoring.MeasurePointsAdapter; import com.sipai.jspatrol.R; import com.sipai.jspatrol.URL.MethodURL; import com.sipai.jspatrol.utils.OKHttpUtils; import com.sipai.jspatrol.utils.Utils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.litepal.LitePal; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import cn.pedant.SweetAlert.SweetAlertDialog; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class PatrolPointDetailActivity extends AppCompatActivity implements TextToSpeech.OnInitListener { private String pointid; private String taskId; private String taskType; private ProPatrolPoint sel_point; private LinearLayoutManager manager,equManager; private List measuringpoints = new ArrayList<>(); private PatrolInfoMeasurePointAdapter pointAdapter; private FileForDLAdapter fileForDLAdapter; private PatrolInfoEquAdapter equAdapter; private List points = new ArrayList<>(); private EditMPointAdapter mAdapter; private LinearLayoutManager editManager; private List fileForDLs = new ArrayList<>(); private List ppcs = new ArrayList<>(); private final int POINTINFO=2; private String sel_content = ""; private TextView tv_content; private TextToSpeech tts; private String ttstext="";//存储tts播放内容 private List equs = new ArrayList<>(); private NfcAdapter nfcAdapter; private PendingIntent pendingIntent; private IntentFilter[] mFilters; private String[][] mTechLists; private boolean isNFC_support = false; private TextView tv_point_detail_title; private RecyclerView rc_file; private RecyclerView rc_edit_point; private RecyclerView rc_equs; private TextView tv_point,tv_edit_point,tv_equ; private Button btn_sub_point; private SweetAlertDialog pDialog; private TextView tv_file_count; private RecyclerView rc_content; private LinearLayoutManager contentManager; private PatrolPointContentSelectorAdapter contentSelectorAdapter; private String markOfSub = "0";//标记上传进行到的步骤,0为填报内容(测量点),1为巡检内容,2为巡检点状态 private RecyclerView rc_point; private LinearLayoutManager autoManager; private MeasurePointsAdapter autoAdapter; private LinearLayout ll_sub_fault; private LinearLayout ll_auto_point,ll_do_content,ll_edit_point,ll_equ; public static void actionStart(Context context , ProPatrolPoint point, String taskid,String taskType){ Intent intent = new Intent(context,PatrolPointDetailActivity.class); intent.putExtra("point",point); intent.putExtra("taskid",taskid); intent.putExtra("tasktype",taskType); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_patrol_point_detail); init(); initView(); if (Utils.isNetworkConnected(PatrolPointDetailActivity.this)) { if (pointid != null && pointid.length() > 0) { getAutoPoint(); getPointDetail(); getPointPatrolContent(); } }else { measuringpoints = new ArrayList<>(); updateAutoPoint(); points = LitePal.where("patrolPointId = ? and patrolRecordId = ? and equipmentId = ?",pointid,taskId,"").find(InputPoint.class); updateEditPoints(); ppcs = LitePal.where("patrolPointId = ? and patrolRecordId = ? and equipmentId = ?",pointid,taskId,"").find(PatrolPointContent.class); updatePC(); } } @Override protected void onResume() { super.onResume(); nfcAdapter = NfcAdapter.getDefaultAdapter(this); isNFC_support = !(nfcAdapter == null || !nfcAdapter.isEnabled()); if (isNFC_support) { nfcAdapter.enableForegroundDispatch(this, pendingIntent, mFilters, mTechLists); if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) { // 注意这个if中的代码几乎不会进来,因为刚刚在上一行代码开启了监听NFC连接,下一行代码马上就收到了NFC连接的intent,这种几率很小 // 处理该intent String result = processIntent(getIntent()); if(result!=null && !result.equals("error")){ showinfobyNFC(result); } } } if (Utils.isNetworkConnected(PatrolPointDetailActivity.this)) { if (pointid != null && pointid.length() > 0) { getPointEquList(); } }else { equs = LitePal.where("patrolPointId = ? and patrolRecordId = ?",pointid,taskId).find(PatrolEqu.class); UpdateEquUI(); } } @Override protected void onPause() { super.onPause(); if (nfcAdapter !=null && nfcAdapter.isEnabled()) { // 当前Activity如果不在手机的最前端,就停止NFC设备连接的监听 stopNFC_Listener(); } } private void stopNFC_Listener() { // 停止监听NFC设备是否连接 nfcAdapter.disableForegroundDispatch(this); } @Override protected void onNewIntent(Intent intent) { // TODO Auto-generated method stub // 当前app正在前端界面运行,这个时候有intent发送过来,那么系统就会调用onNewIntent回调方法,将intent传送过来 // 我们只需要在这里检验这个intent是否是NFC相关的intent,如果是,就调用处理方法 super.onNewIntent(intent); if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { String result = processIntent(intent); if(result!=null && !result.equals("error")){ showinfobyNFC(result); } } } private void showinfobyNFC(String st){ int ishave = 0; if (ishave>0){ Intent intent = new Intent(PatrolPointDetailActivity.this,PatrolEquDetailActivity.class); intent.putExtra("id",st); intent.putExtra("pointId",pointid); intent.putExtra("taskId",taskId); startActivity(intent); }else { NoThisEqu(); } } private void NoThisEqu() { runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.WARNING_TYPE) .setTitleText("提示") .setContentText("该区域巡检列表中无此设备!") .setConfirmText("确定") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }).show(); } }); } /** * 获取tab标签中的内容 * @param intent * @return */ private String processIntent(Intent intent) { Parcelable[] rawmsgs = intent .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); try { if (rawmsgs != null) { NdefMessage msg = (NdefMessage) rawmsgs[0]; NdefRecord[] records = msg.getRecords(); String resultStr = new String(records[0].getPayload()); return resultStr; } else { return "error"; } }catch (Exception e){ return "error"; } } /** * 获取巡检点下自动点 */ private void getAutoPoint() { HashMap map = new HashMap<>(); map.put("type","auto"); map.put("patrolPointId",sel_point.getSid()); map.put("unitId",mBizid); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.GetPatrolPointAutoPoint_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ErrorDialog("巡检点下测量点列表获取失败,请重试","auto"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); if (res.contains("code")&&res.contains("result")) { measuringpoints = parseMeasuringPoints(res); }else { measuringpoints = new ArrayList<>(); } updateAutoPoint(); } }); } /** * 更新自动点列表 */ private void updateAutoPoint() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { autoAdapter = new MeasurePointsAdapter(PatrolPointDetailActivity.this,measuringpoints); rc_point.setAdapter(autoAdapter); if (measuringpoints.size()==0){ ll_auto_point.setVisibility(View.GONE); }else { ll_auto_point.setVisibility(View.VISIBLE); } } }); } } /** * 解析自动点 * @param response * @return */ private List parseMeasuringPoints(String response) { List list = new ArrayList<>(); try { JSONObject jsonObject = new JSONObject(response); JSONArray aNews = new JSONArray(jsonObject.getString("result")); for (int i=0;i map = new HashMap<>(); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("unitId",mBizid); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.GetPatrolPointEquList_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ErrorDialog("巡检点下设备列表获取失败,请重试","equs"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); Log.i("Equ", "onResponse: "+res); if (res.contains("code")&&res.contains("result")){ equs = parsePatrolEqu(res); } UpdateEquUI(); } }); } private List parsePatrolEqu(String response) { List list = new ArrayList<>(); try { JSONObject jsonObject = new JSONObject(response); JSONArray array = new JSONArray(jsonObject.optString("result")); for (int i=0;i mps = new ArrayList<>(); JSONArray aps = new JSONArray(array.getJSONObject(i).optString("measurePoints")); for (int a=0;a map = new HashMap<>(); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("type",sel_point.getType()); map.put("equipmentId",""); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.GetPatrolPointContent_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ErrorDialog("巡检点执行内容获取失败,请重试","content"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); if (res!=null&&!res.isEmpty()){ ppcs = parseContent(res); } updatePC(); } }); } private void updatePC() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { if (ppcs.size()==0){ ll_do_content.setVisibility(View.GONE); }else { ll_do_content.setVisibility(View.VISIBLE); } contentSelectorAdapter = new PatrolPointContentSelectorAdapter(ppcs,PatrolPointDetailActivity.this); rc_content.setAdapter(contentSelectorAdapter); } }); } } private List parseContent(String response) { List list = new ArrayList<>(); try { JSONObject jsonObject = new JSONObject(response); JSONArray jsonArray = new JSONArray(jsonObject.optString("result")); if (jsonArray.length()>0) { for (int i = 0; i < jsonArray.length(); i++) { PatrolPointContent item = new PatrolPointContent(); item.setSid(jsonArray.getJSONObject(i).optString("id")); item.setContents(jsonArray.getJSONObject(i).optString("contents")); item.setContentsDetail(jsonArray.getJSONObject(i).optString("contentsDetail")); item.setStatus(jsonArray.getJSONObject(i).optString("status")); list.add(item); } } } catch (JSONException e) { e.printStackTrace(); } return list; } /** * 巡检点下填报内容 */ private void getPointDetail() { HashMap map = new HashMap<>(); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("unitId",mBizid); map.put("type",sel_point.getType()); map.put("equipmentId",""); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.GetPatrolPointEditPoint_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ErrorDialog("手动测量点列表获取失败,请重试","point"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); try { JSONObject jsonObject = new JSONObject(res); JSONArray jsonArray = new JSONArray(jsonObject.optString("result")); if (jsonArray.length()>0) { points = parsePoint(res); }else { // ErrorDialog("手动测量点列表获取失败,请重试","point"); points = new ArrayList<>(); } updateEditPoints(); } catch (JSONException e) { e.printStackTrace(); } } }); } private void updateEditPoints() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { editManager = new LinearLayoutManager(PatrolPointDetailActivity.this); rc_edit_point.setLayoutManager(editManager); mAdapter = new EditMPointAdapter(points,PatrolPointDetailActivity.this); rc_edit_point.setAdapter(mAdapter); if (points.size()==0){ ll_edit_point.setVisibility(View.GONE); }else { ll_edit_point.setVisibility(View.VISIBLE); } } }); } } private void ErrorDialog(String content,String type) { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText(content) .setConfirmText("重试") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); if (type.equals("content")){ getPointPatrolContent(); }else if (type.equals("point")){ getPointDetail(); }else if (type.equals("equs")){ getPointEquList(); }else if(type.equals("auto")){ getAutoPoint(); } } }) .setCancelText("取消") .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }) .show(); } }); } } /** * 初始化 */ private String mServer; private String mUsername; private String mPassword; private String mUserid; private String mCaption; private String mBizid; private String token; public void init(){ SharedPreferences sharedPre=getSharedPreferences("config", MODE_PRIVATE); mServer=sharedPre.getString("server", ""); mUsername=sharedPre.getString("username", ""); mPassword=sharedPre.getString("password", ""); mUserid=sharedPre.getString("userid", ""); mCaption=sharedPre.getString("caption", ""); mBizid=sharedPre.getString("bizid", ""); token = sharedPre.getString("token",""); sel_point = (ProPatrolPoint) getIntent().getSerializableExtra("point"); if (sel_point.getSid()!=null&&sel_point.getSid().length()>0){ pointid = sel_point.getSid(); } taskId = getIntent().getStringExtra("taskid"); taskType = getIntent().getStringExtra("tasktype"); } private void initView() { TextView tv_title = findViewById(R.id.moudle_back_title_tv_title); tv_title.setText("巡检点详情"); ImageView btn_back = findViewById(R.id.moudle_back_title_iv_back); btn_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); pDialog.getProgressHelper().setBarColor(Color.parseColor("#009688")); pDialog.setTitleText("数据获取中..."); pDialog.setCancelable(true); pDialog.setCanceledOnTouchOutside(true); ll_auto_point = findViewById(R.id.moudle_patrolinfo_ll_auto_point); ll_do_content = findViewById(R.id.moudle_patrolinfo_ll_do_content); ll_edit_point = findViewById(R.id.moudle_patrolinfo_ll_edit_point); ll_equ = findViewById(R.id.moudle_patrolinfo_ll_equ); tv_point = findViewById(R.id.moudle_patrol_point_detail_tv_file); tv_point.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (pointid!=null&&pointid.length()>0){ getPointDetail(); } } }); tv_edit_point = findViewById(R.id.moudle_patrol_point_detail_tv_edit_point); tv_edit_point.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (pointid!=null&&pointid.length()>0){ getPointDetail(); } } }); ll_sub_fault = findViewById(R.id.moudle_patrol_point_detail_ll_sub_fault); ll_sub_fault.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NewFaultActivity.actionStart(PatrolPointDetailActivity.this,sel_point.getSid(),taskId,sel_point.getTaskId()); } }); rc_point = findViewById(R.id.moudle_patrolinfo_rc_auto_point); autoManager = new LinearLayoutManager(this); rc_point.setLayoutManager(autoManager); autoAdapter = new MeasurePointsAdapter(PatrolPointDetailActivity.this,measuringpoints); rc_point.setAdapter(autoAdapter); rc_content = findViewById(R.id.moudle_patrolinfo_rc_content); contentManager = new LinearLayoutManager(PatrolPointDetailActivity.this); rc_content.setLayoutManager(contentManager); contentSelectorAdapter = new PatrolPointContentSelectorAdapter(ppcs,PatrolPointDetailActivity.this); rc_content.setAdapter(contentSelectorAdapter); tv_equ = findViewById(R.id.moudle_patrol_point_detail_tv_equ); tv_equ.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (pointid!=null&&pointid.length()>0) { getPointEquList(); } } }); btn_sub_point = findViewById(R.id.moudle_patrol_point_detail_btn_sub_point); btn_sub_point.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (Utils.isNetworkConnected(PatrolPointDetailActivity.this)) { if (markOfSub.equals("0")) { subValue(); } else if (markOfSub.equals("1")) { subContent(); } else if (markOfSub.equals("2")) { subThisPatrolPoint(); } }else { List lll = LitePal.where("sid = ?",taskId).find(Patrol.class); if (lll.size()>0) { saveOfflineInfo(); }else { noOfflineData(); } } } }); tv_point_detail_title = findViewById(R.id.moudle_patrol_point_detail_tv_point_name); tv_point_detail_title.setText(sel_point.getName()); tv_content = findViewById(R.id.moudle_patrol_point_detail_tv_content); if (sel_content.length()>0){ if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N) { tv_content.setText(Html.fromHtml(sel_content,Html.FROM_HTML_MODE_COMPACT)); }else { tv_content.setText(Html.fromHtml(sel_content)); } }else { tv_content.setText("查看巡检点区域测量点及设备!"); } rc_file = findViewById(R.id.moudle_patrol_point_detail_rc_file); manager = new LinearLayoutManager(PatrolPointDetailActivity.this); rc_file.setLayoutManager(manager); fileForDLAdapter = new FileForDLAdapter(PatrolPointDetailActivity.this, fileForDLs, new FileForDLAdapter.onRcViewItemClick() { @Override public void onItemClick(View v, int position) { checkFile(fileForDLs.get(position)); } }); rc_file.setAdapter(fileForDLAdapter); tv_file_count = findViewById(R.id.moudle_patrol_point_detail_tv_file_count); tv_file_count.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (rc_file.getVisibility()==View.GONE){ rc_file.setVisibility(View.VISIBLE); }else { rc_file.setVisibility(View.GONE); } } }); rc_edit_point = findViewById(R.id.moudle_patrol_point_detail_rc_edit_point); editManager = new LinearLayoutManager(PatrolPointDetailActivity.this); rc_edit_point.setLayoutManager(editManager); mAdapter = new EditMPointAdapter(points,PatrolPointDetailActivity.this); rc_edit_point.setAdapter(mAdapter); rc_equs = findViewById(R.id.moudle_patrol_point_detail_rc_equ); equManager = new LinearLayoutManager(PatrolPointDetailActivity.this); rc_equs.setLayoutManager(equManager); equAdapter = new PatrolInfoEquAdapter(equs,PatrolPointDetailActivity.this); rc_equs.setAdapter(equAdapter); tts = new TextToSpeech(this, this); //nfc初始化 pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); ndef.addCategory("*/*"); mFilters = new IntentFilter[] { ndef };// 过滤器 mTechLists = new String[][] { new String[] { MifareClassic.class.getName() }, new String[] { NfcA.class.getName() } };// 允许扫描的标签类型 } private void noOfflineData() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText("网络不可用,且本地未检测到本条任务离线数据,无法进行离线保存!") .setConfirmText("确定") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }).show(); } }); } } private void saveOfflineInfo() { //保存执行内容 for (int i = 0; i < ppcs.size(); i++) { ppcs.get(i).setStatus(GlobalVal.Status_Issue); ppcs.get(i).updateAll("sid = ?",ppcs.get(i).getSid()); } Map map1 = contentSelectorAdapter.getMap(); for (int i = map1.size()-1; 0<=i; i--) { if (map1.get(i)) { Log.d("TAG", "你选了第:" + i + "项"); // sel_users.add(users.get(i)); ppcs.get(i).setStatus(GlobalVal.Status_Finish); Date date = new Date(System.currentTimeMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ppcs.get(i).setFinishDt(format.format(date)); ppcs.get(i).updateAll("sid = ?",ppcs.get(i).getSid()); } } List contents = LitePal.where("patrolPointId = ? and patrolRecordId = ? and equipmentId = ?",pointid,taskId,"").find(PatrolPointContent.class); //保存填报内容 Date date = new Date(System.currentTimeMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for(int i=0;i pts = LitePal.where("patrolPointId = ? and patrolRecordId = ? and equipmentId = ?",pointid,taskId,"").find(InputPoint.class); //保存巡检点状态与提交时间 sel_point.setFinishDt(format.format(date)); sel_point.setWorkerId(mUserid); sel_point.setWorkerName(mCaption); sel_point.setStatus(GlobalVal.Status_Finish); sel_point.updateAll("sid = ? and resultId = ?",sel_point.getSid(),sel_point.getResultId()); List list = LitePal.where("sid = ?",sel_point.getSid()).find(ProPatrolPoint.class); showSaveSuccessDialog(); } private void showSaveSuccessDialog() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.SUCCESS_TYPE) .setTitleText("成功") .setContentText("保存成功!") .setConfirmText("确定") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); finish(); } }).show(); } }); } } /** * 上传执行内容 */ private void subContent() { for (int i = 0; i < ppcs.size(); i++) { ppcs.get(i).setStatus(GlobalVal.Status_Issue); } Map map1 = contentSelectorAdapter.getMap(); for (int i = map1.size()-1; 0<=i; i--) { if (map1.get(i)) { Log.d("TAG", "你选了第:" + i + "项"); ppcs.get(i).setStatus(GlobalVal.Status_Finish); } } Gson gson = new Gson(); String json = "{\"re1\":"+gson.toJson(ppcs)+"}"; HashMap map = new HashMap<>(); map.put("isLimited","true"); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("json",json); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.SubPatrolPointContent_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // ErrorDialog("巡检点下测量点列表获取失败,请重试","auto"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); try { JSONObject jsonObject = new JSONObject(res); if (jsonObject.opt("code").toString().equals("1")){ markOfSub = "2"; subThisPatrolPoint(); }else { markOfSub = "1"; subError(); } } catch (JSONException e) { e.printStackTrace(); markOfSub = "1"; subError(); } } }); } private void subError() { if (!PatrolPointDetailActivity.this.isFinishing()){ runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this,SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText("上传失败,请重试") .setConfirmText("重试") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); subContent(); } }) .setCancelText("取消") .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }) .show(); } }); } } /** * 上传巡检点内所有手动点 */ private void subValue() { Gson gson = new Gson(); String json = "{\"re1\":"+gson.toJson(points)+"}"; subAllPoints(json); } /** * 上传所有测量点 * @param json */ private void subAllPoints(String json) { HashMap map = new HashMap<>(); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("json",json); map.put("isLimited","true"); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.SubPatrolPointEditPoint_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // ErrorDialog("巡检点下测量点列表获取失败,请重试","auto"); failDailog(json); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); try { JSONObject jsonObject = new JSONObject(res); if (jsonObject.opt("code").toString().equals("1")){ markOfSub = "1"; subContent(); // successDialog(); }else { markOfSub = "0"; failDailog(json); } } catch (JSONException e) { e.printStackTrace(); markOfSub = "0"; failDailog(json); } } }); } /** * 上传巡检点巡检状态 */ private void subThisPatrolPoint() { HashMap map = new HashMap<>(); map.put("id",sel_point.getResultId()); map.put("patrolRecordId",sel_point.getTaskId()); map.put("isLimited","true"); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer,MethodURL.SubPatrolPointStatus_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // ErrorDialog("巡检点下测量点列表获取失败,请重试","auto"); confirmFailDailog("提交失败!"); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); try { JSONObject jsonObject = new JSONObject(res); if (jsonObject.opt("code").toString().equals("1")){ successDialog(); subPatrolPointStatus(); }else { markOfSub = "2"; if (jsonObject.optString("msg").contains("时间内")) { confirmFailDailog(jsonObject.optString("msg")); }else { confirmFailDailog("提交失败!"); } } } catch (JSONException e) { e.printStackTrace(); markOfSub = "2"; confirmFailDailog("提交失败!"); } } }); } private void subPatrolPointStatus() { HashMap map = new HashMap<>(); map.put("patrolRecordId",sel_point.getTaskId()); map.put("patrolPointId",sel_point.getSid()); map.put("userId",mUserid); map.put("isLimited","true"); OKHttpUtils.getClient().newCall(OKHttpUtils.OKHttpRequest(map,mServer, MethodURL.SubPatrolPointPS_Method)).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); if (res.contains("code")&&res.contains("result")){ try { JSONObject jsonObject = new JSONObject(res); if (jsonObject.get("code").toString().equals("1")){ successDialog(); }else { markOfSub = "3"; if (jsonObject.optString("msg").contains("时间内")) { subStatusFail(jsonObject.optString("msg")); }else { subStatusFail("提交失败!"); } } } catch (JSONException e) { e.printStackTrace(); } }else { markOfSub = "3"; } } }); } private void subStatusFail(String s) { if (!PatrolPointDetailActivity.this.isFinishing()) { runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText(s) .setConfirmText("重试") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); subPatrolPointStatus(); } }) .setCancelText("取消") .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }) .show(); } }); } } private void failDailog(String json) { if (!PatrolPointDetailActivity.this.isFinishing()) { runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText("测量点信息提交失败,请重试!") .setConfirmText("重试") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); subAllPoints(json); } }) .setCancelText("取消") .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }) .show(); } }); } } private void confirmFailDailog(String s) { if (!PatrolPointDetailActivity.this.isFinishing()) { runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.ERROR_TYPE) .setTitleText("失败") .setContentText(s) .setConfirmText("重试") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); subThisPatrolPoint(); } }) .setCancelText("取消") .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); } }) .show(); } }); } } private void successDialog() { if (!PatrolPointDetailActivity.this.isFinishing()) { runOnUiThread(new Runnable() { @Override public void run() { new SweetAlertDialog(PatrolPointDetailActivity.this, SweetAlertDialog.SUCCESS_TYPE) .setTitleText("成功") .setContentText("提交成功!") .setConfirmText("确定") .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { @Override public void onClick(SweetAlertDialog sweetAlertDialog) { sweetAlertDialog.dismissWithAnimation(); finish(); } }).show(); } }); } } /** * 解析手动测量点 * @param response * @return */ private List parsePoint(String response) { List list = new ArrayList<>(); try { JSONObject jsonObject = new JSONObject(response); JSONArray jsonArray = new JSONArray(jsonObject.optString("result")); for (int i=0;i