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<ProblemlistVo> 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<Mediafile> 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<ProblemlistVo>) 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<List<Mediafile>> loadSignMediaFile = inspectionService.loadMediaFileList(mediaFilePreData.getIguid(), BUSSINESS_TYPE_SIGN);
|
loadSignMediaFile.enqueue(new Callback<List<Mediafile>>() {
|
@Override
|
public void onResponse(Call<List<Mediafile>> call, Response<List<Mediafile>> 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<List<Mediafile>> call, Throwable t) {
|
Log.e("loadSignMediaFIle", t.toString());
|
Toast.makeText(application, "网络连接失败", Toast.LENGTH_SHORT).show();
|
}
|
});
|
}
|
|
//加载签名照片
|
private void loadSignPhoto(List<Mediafile> mediaFileList) {
|
//如果联网传过来的签名mediaFile是空的,则查询本地的mediaFIle
|
if (mediaFileList == null) {
|
mediaFileList = new ArrayList<>();
|
}
|
List<Mediafile> 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<Domainitem> 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;i<domainitemList.size();i++){
|
items[i] = domainitemList.get(i).getText();
|
}
|
|
}
|
final int[] position = {-1};
|
dialog.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
position[0] = i;
|
}
|
});
|
|
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
Double seletectedTime = Double.valueOf(domainitemList.get(position[0]).getValue());
|
if (!allBolleam.isAll()){
|
|
|
for (ProblemlistVo problemlistVo :problemlistVoList){
|
Calendar calendar = Calendar.getInstance();
|
if (seletectedTime ==0.5){
|
calendar.add(Calendar.HOUR_OF_DAY,6);
|
}else {
|
calendar.add(Calendar.DAY_OF_YEAR,seletectedTime.intValue());
|
}
|
problemlistVo.setExtension1(DateFormatter.dateFormat.format(calendar.getTime()));
|
|
}
|
adapter.notifyDataSetChanged();
|
}else {
|
Calendar calendar = Calendar.getInstance();
|
if (seletectedTime ==0.5){
|
calendar.add(Calendar.HOUR_OF_DAY,6);
|
}else {
|
calendar.add(Calendar.DAY_OF_YEAR,seletectedTime.intValue());
|
}
|
tv_time.setText(DateFormatter.dateFormat.format(calendar.getTime()));
|
refreshPromiseText();
|
}
|
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.setNeutralButton("以日期选择", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
dialog1.dismiss();
|
showSeletDateDialog();
|
|
}
|
});
|
|
dialog1 = dialog.show();
|
|
}
|
|
private void save(){
|
|
if (problemlistVoList.size()>0){
|
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<ResponseBody> updateProblemVo = inspectionService.updateProblemList(problemlistVo);
|
updateProblemVo.enqueue(new Callback<ResponseBody>() {
|
@Override
|
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
|
if (response.body()!=null){
|
position++;
|
if (position<problemlistVoList.size()){
|
updateProblem(problemlistVoList.get(position));
|
}else {
|
if (inspectionCurrent!=null){
|
inspectionCurrent.setPromissednum(promiseCount);
|
inspectionCurrent.setPromissedtime(new Date());
|
if (promiseCount ==problemlistVoList.size()){
|
inspectionCurrent.setIspromissed(true);
|
}
|
updateInspection(inspectionCurrent);
|
}else {
|
finish();
|
}
|
|
}
|
}else if (response.errorBody()!=null){
|
Toast.makeText(application, "保存失败,请重试 "+position, Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFailure(Call<ResponseBody> 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<ResponseBody> updateInspection = inspectionService.updateInspection(inspection);
|
updateInspection.enqueue(new Callback<ResponseBody>() {
|
@Override
|
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> 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<ResponseBody> 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();
|
}
|
}
|
}
|