package cn.flightfeather.thirdapp.activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.support.annotation.IdRes; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; import com.ping.greendao.gen.DomainitemDao; import com.ping.greendao.gen.MediafileDao; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import cn.flightfeather.thirdapp.CommonApplication; import cn.flightfeather.thirdapp.R; import cn.flightfeather.thirdapp.adapter.ProblemPromiseListAdapter; import cn.flightfeather.thirdapp.bean.AllBoolean; import cn.flightfeather.thirdapp.bean.Domainitem; import cn.flightfeather.thirdapp.bean.Inspection; import cn.flightfeather.thirdapp.bean.Mediafile; import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo; import cn.flightfeather.thirdapp.httpservice.InspectionService; import cn.flightfeather.thirdapp.util.Constant; import cn.flightfeather.thirdapp.util.DateFormatter; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class PromiseActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_save; private ImageView iv_back; private RecyclerView rv_main; private List problemlistVoList; private CommonApplication application; private InspectionService inspectionService; private int position = 0; private MediafileDao mediafileDao; private final int BUSSINESS_TYPE_SIGN = 6; private File signFile; private Mediafile mediaFilePreData; private List signMediaFileList; private ProblemPromiseListAdapter adapter; private final int SIGN = 9; private final int VIEW_SIGN_PHOTO = 117; private RadioGroup rg_allOne; private LinearLayout ll_promise; private TextView tv_time; private EditText et_promis; private AllBoolean allBolleam; private int promiseCount =0; private Inspection inspectionCurrent; private TextView tv_setAllTime; private DomainitemDao domainitemDao; private Dialog dialog1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_promise); application = (CommonApplication) getApplication(); domainitemDao = application.getDaoSession().getDomainitemDao(); allBolleam = new AllBoolean(); allBolleam.setAll(false); initUI(); initData(); } //初始化界面 private void initUI() { tv_save = (TextView) findViewById(R.id.tv_save); iv_back = (ImageView) findViewById(R.id.iv_back); rv_main = (RecyclerView) findViewById(R.id.rv_main); rg_allOne = (RadioGroup) findViewById(R.id.rg_all_one); ll_promise = (LinearLayout) findViewById(R.id.ll_promise); tv_time = (TextView) findViewById(R.id.tv_time); et_promis = (EditText) findViewById(R.id.et_promise); LinearLayoutManager manager = new LinearLayoutManager(this); tv_setAllTime = (TextView) findViewById(R.id.tv_set_all_time); rv_main.setLayoutManager(manager); tv_save.setOnClickListener(this); iv_back.setOnClickListener(this); tv_time.setOnClickListener(this); tv_setAllTime.setOnClickListener(this); ll_promise.setVisibility(View.GONE); rg_allOne.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { if (i == R.id.rb_all){ ll_promise.setVisibility(View.VISIBLE); allBolleam.setAll(true); tv_setAllTime.setVisibility(View.GONE); adapter.notifyDataSetChanged(); }if (i ==R.id.rb_one){ ll_promise.setVisibility(View.GONE); tv_setAllTime.setVisibility(View.VISIBLE); allBolleam.setAll(false); adapter.notifyDataSetChanged(); } } }); } //初始化数据 private void initData() { signMediaFileList = new ArrayList<>(); inspectionService = application.getRetrofit().create(InspectionService.class); mediafileDao = application.getDaoSession().getMediafileDao(); Intent intent = getIntent(); problemlistVoList = (List) intent.getSerializableExtra("problemlistVoList"); mediaFilePreData = (Mediafile) intent.getSerializableExtra("mediaFilePreData"); inspectionCurrent = (Inspection) intent.getSerializableExtra("inspectionCurrent"); if (problemlistVoList!=null&&problemlistVoList.size() ==0){ tv_setAllTime.setVisibility(View.GONE); } adapter = new ProblemPromiseListAdapter(problemlistVoList,this,application,this,signMediaFileList,allBolleam); rv_main.setAdapter(adapter); initSign(); tv_time.setText(DateFormatter.dateFormat.format(new Date())); refreshPromiseText(); } //初始化签字 private void initSign() { Call> loadSignMediaFile = inspectionService.loadMediaFileList(mediaFilePreData.getIguid(), BUSSINESS_TYPE_SIGN); loadSignMediaFile.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.body() != null) { loadSignPhoto(response.body()); } else if (response.errorBody() != null) { Log.e("loadSignMediaFIle", response.errorBody().toString()); Toast.makeText(application, "获取签名图片失败", Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call> call, Throwable t) { Log.e("loadSignMediaFIle", t.toString()); Toast.makeText(application, "网络连接失败", Toast.LENGTH_SHORT).show(); } }); } //加载签名照片 private void loadSignPhoto(List mediaFileList) { //如果联网传过来的签名mediaFile是空的,则查询本地的mediaFIle if (mediaFileList == null) { mediaFileList = new ArrayList<>(); } List mediaFilelocal = mediafileDao.queryBuilder().where(MediafileDao.Properties.Iguid.eq(mediaFilePreData.getIguid())).where(MediafileDao.Properties.Businesstypeid.eq(BUSSINESS_TYPE_SIGN)).where(MediafileDao.Properties.Remark.eq("未上传")).list(); mediaFileList.addAll(mediaFilelocal); signMediaFileList.addAll(mediaFileList); adapter.notifyDataSetChanged(); } //选择日期的dialog private void showSeletDateDialog(){ Calendar calendar = Calendar.getInstance(); final int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog dp = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) { Calendar calendar2 = Calendar.getInstance(); calendar2.set(year,monthOfYear,dayOfMonth); String date = DateFormatter.dateFormat.format(calendar2.getTime()); if (allBolleam.isAll()){ tv_time.setText(date); refreshPromiseText(); }else { for (ProblemlistVo problemlistVo:problemlistVoList){ problemlistVo.setExtension1(date); } adapter.notifyDataSetChanged(); } } }, year, month, day); dp.show(); } //选择截止时间 private void showSelectEndDataDialog(){ final AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("选择整改期限"); final List domainitemList = domainitemDao.queryBuilder().where(DomainitemDao.Properties.Catelogname.eq("整改期限")).orderAsc(DomainitemDao.Properties.Index).list(); String[] items = null; if (domainitemList.size() == 0){ items = new String[1]; items[0] = "无"; }else { items = new String[domainitemList.size()]; for (int i =0;i0){ if (allBolleam.isAll()){ if (!tv_time.getText().equals("点击设置")&&et_promis.getText().length()>0){ position = 0; Toast.makeText(application, "保存中", Toast.LENGTH_SHORT).show(); updateProblem(problemlistVoList.get(position)); }else{ Toast.makeText(application, "请将整改信息填写完整", Toast.LENGTH_SHORT).show(); } }else { position = 0; Toast.makeText(application, "保存中", Toast.LENGTH_SHORT).show(); updateProblem(problemlistVoList.get(position)); } }else { finish(); } } private void refreshPromiseText(){ String promise = "承诺于"+tv_time.getText()+"前完成"+problemlistVoList.size()+"个问题的整改"; et_promis.setText(promise); } private void updateProblem(final ProblemlistVo problemlistVo){ if (allBolleam.isAll()){ problemlistVo.setExtension1(tv_time.getText().toString()); problemlistVo.setExtension2(et_promis.getText().toString()); promiseCount++; }else { if (problemlistVo.getExtension1()!=null){ promiseCount++; } } Call updateProblemVo = inspectionService.updateProblemList(problemlistVo); updateProblemVo.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.body()!=null){ position++; if (position call, Throwable t) { Toast.makeText(application, "网络连接失败", Toast.LENGTH_SHORT).show(); } }); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.tv_save: save(); break; case R.id.iv_back: finish(); break; case R.id.tv_time: showSelectEndDataDialog(); break; case R.id.tv_set_all_time: showSelectEndDataDialog(); break; } } //提交inspection信息 private void updateInspection(Inspection inspection) { Call updateInspection = inspectionService.updateInspection(inspection); updateInspection.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.body() != null) { System.out.println("inspection:" + response.body().toString()); Toast.makeText(application, "保存成功", Toast.LENGTH_SHORT).show(); finish(); } else if (response.errorBody() != null) { System.out.println("inspection:" + response.errorBody().toString()); Toast.makeText(application, "提交inspection失败", Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call call, Throwable t) { System.out.println("inspection:" + t.toString()); Toast.makeText(application, "联网失败", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode ==SIGN&&resultCode ==RESULT_OK){ if (data != null) { byte[] bis = data.getByteArrayExtra(Constant.KEY_INTENT_SIGHPIC); Bitmap bitmap = BitmapFactory.decodeByteArray(bis, 0, bis.length); File file = new File(Environment.getExternalStorageDirectory(), (mediaFilePreData.getPath() + mediaFilePreData.getDescription())); file.getParentFile().mkdirs(); if (file.exists()) { file.delete(); } try { FileOutputStream out = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 99, out); out.flush(); out.close(); mediafileDao.insert(mediaFilePreData); Toast.makeText(application, "保存成功", Toast.LENGTH_SHORT).show(); signMediaFileList.add(mediaFilePreData); adapter.notifyDataSetChanged(); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(application, "保存失败", Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(application, "保存失败", Toast.LENGTH_SHORT).show(); } // } }else if (requestCode ==VIEW_SIGN_PHOTO&&resultCode ==RESULT_OK){ signMediaFileList.clear(); adapter.notifyDataSetChanged(); } } }