Files
jsswapp/app/src/main/java/com/sipai/jspatrol/Patrol/PatrolPointDetailActivity.java

1189 lines
51 KiB
Java
Raw Normal View History

2026-01-21 21:16:14 +08:00
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<Measuringpoint> measuringpoints = new ArrayList<>();
private PatrolInfoMeasurePointAdapter pointAdapter;
private FileForDLAdapter fileForDLAdapter;
private PatrolInfoEquAdapter equAdapter;
private List<InputPoint> points = new ArrayList<>();
private EditMPointAdapter mAdapter;
private LinearLayoutManager editManager;
private List<FileForDL> fileForDLs = new ArrayList<>();
private List<PatrolPointContent> 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<PatrolEqu> 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<String,String> 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<Measuringpoint> parseMeasuringPoints(String response) {
List<Measuringpoint> list = new ArrayList<>();
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray aNews = new JSONArray(jsonObject.getString("result"));
for (int i=0;i<aNews.length();i++){
Measuringpoint point = new Measuringpoint();
point.setSid(aNews.getJSONObject(i).opt("id").toString());
point.setName(aNews.getJSONObject(i).opt("parmname").toString());
point.setCvalue(aNews.getJSONObject(i).opt("parmvalue").toString());
point.setUnit(aNews.getJSONObject(i).opt("unit").toString());
point.setType(aNews.getJSONObject(i).opt("signaltype").toString());
point.setValuemeaning(aNews.getJSONObject(i).optString("valuemeaning"));
list.add(point);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
/**
* 巡检点下设备列表
*/
private void getPointEquList() {
HashMap<String,String> 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<PatrolEqu> parsePatrolEqu(String response) {
List<PatrolEqu> list = new ArrayList<>();
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray array = new JSONArray(jsonObject.optString("result"));
for (int i=0;i<array.length();i++){
PatrolEqu item = new PatrolEqu();
item.setEquipmentId(array.getJSONObject(i).optString("equipmentId"));
item.setEquipmentName(array.getJSONObject(i).optString("equipmentName"));
item.setStatus(array.getJSONObject(i).optString("status"));
item.setPatrolPointId(array.getJSONObject(i).optString("patrolPointId"));
item.setPatrolRecordId(array.getJSONObject(i).optString("patrolRecordId"));
item.setEquipmentCardId(array.getJSONObject(i).optString("equipmentCardId"));
item.setManufacturers(array.getJSONObject(i).optString("equipmentManufacturer"));
item.setType(sel_point.getType());
if (array.getJSONObject(i).optString("measurePoints")!=null&&!array.getJSONObject(i).optString("measurePoints").isEmpty()){
List<Measuringpoint> mps = new ArrayList<>();
JSONArray aps = new JSONArray(array.getJSONObject(i).optString("measurePoints"));
for (int a=0;a<aps.length();a++){
Measuringpoint point = new Measuringpoint();
point.setSid(aps.getJSONObject(a).optString("id"));
point.setName(aps.getJSONObject(a).optString("parmName"));
point.setCvalue(aps.getJSONObject(a).optString("parmValue"));
point.setUnit(aps.getJSONObject(a).optString("unit"));
point.setType(aps.getJSONObject(a).optString("signaltype"));
mps.add(point);
}
item.setMeasuringpoints(mps);
}
list.add(item);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
private void UpdateEquUI() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (equs.size()==0){
ll_equ.setVisibility(View.GONE);
}else {
ll_equ.setVisibility(View.VISIBLE);
}
equManager = new LinearLayoutManager(PatrolPointDetailActivity.this);
rc_equs.setLayoutManager(equManager);
equAdapter = new PatrolInfoEquAdapter(equs,PatrolPointDetailActivity.this);
rc_equs.setAdapter(equAdapter);
}
});
}
/**
* 巡检点执行内容详情
*/
private void getPointPatrolContent() {
HashMap<String,String> 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<PatrolPointContent> parseContent(String response) {
List<PatrolPointContent> 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<String,String> 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);
2026-01-28 00:19:25 +08:00
pDialog.getProgressHelper().setBarColor(Color.parseColor("#009688"));
2026-01-21 21:16:14 +08:00
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<Patrol> 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<Integer, Boolean> 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<PatrolPointContent> 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<points.size();i++){
points.get(i).setFinishDt(format.format(date));
points.get(i).updateAll("sid = ? and patrolRecordId = ?",points.get(i).getSid(),points.get(i).getPatrolRecordId());
}
// List<InputPoint> 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<ProPatrolPoint> 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<Integer, Boolean> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<InputPoint> parsePoint(String response) {
List<InputPoint> list = new ArrayList<>();
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = new JSONArray(jsonObject.optString("result"));
for (int i=0;i<jsonArray.length();i++){
InputPoint item = new InputPoint();
JSONObject js = new JSONObject(jsonArray.getJSONObject(i).opt("mPoint").toString());
item.setSid(jsonArray.getJSONObject(i).optString("id"));
item.setPid(jsonArray.getJSONObject(i).optString("id"));
item.setAlarmmax(js.optString("alarmmax"));
item.setAlarmmin(js.optString("alarmmin"));
item.setBiztype(js.optString("biztype"));
item.setValuemeaning(js.optString("valuemeaning"));
item.setPatrolRecordId(sel_point.getPatrolRecordId());
// item.setId(js.opt("id").toString());
item.setMeasuredt(js.optString("measuredt"));
item.setMpointcode(js.optString("mpointcode"));
item.setParmname(js.optString("parmname"));
item.setParmvalue(jsonArray.getJSONObject(i).optString("mpvalue"));
item.setSignalType(js.optString("signaltype"));
item.setSql(js.optString("sql"));
item.setUnit(js.optString("unit"));
item.setWhere(js.optString("where"));
list.add(item);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
/**
* 检测文件
* @param fileForDL
*/
private void checkFile(FileForDL fileForDL) {
Uri uri = Uri.parse(mServer+"base/downloadFile.do?key="+fileForDL.getId()+"&tbName=tb_doc_file");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS){
int result = tts.setLanguage(Locale.CHINESE);
if (result == TextToSpeech.LANG_MISSING_DATA||result == TextToSpeech.LANG_NOT_SUPPORTED){
// Toast.makeText(PatrolPointDetailActivity.this, "数据不支持", Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
tts.stop();
tts.shutdown();
}
}