package com.jiuqi.njt.management;
import java.io.File;
import java.util.Calendar;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import com.jiuqi.mobile.nigo.comeclose.bean.app.collect.ServiceCollectBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.CollectionBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.RepairsFileBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.ServiceFileBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.gps.UserPositionBean;
import com.jiuqi.njt.R;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.data.OptsharepreInterface;
import com.jiuqi.njt.management.task.AddHttpMultipartPost;
import com.jiuqi.njt.ui.PoiLocateActivity;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.DateUtil;
import com.jiuqi.njt.util.ImageTools;
import com.jiuqi.njt.util.RepairUtils;
import com.jiuqi.njt.util.ReturnObject;
import com.jiuqi.njt.util.TitleBarUtil;
import com.jiuqi.njt.util.UIUtil;
import com.jiuqi.njt.util.ValidateRule;
import com.jiuqi.njt.util.Validator;
import com.jiuqi.njt.widget.ChosePictureDialog;
import com.jiuqi.njt.widget.NjtTitleBar;
import com.jqyd.camera.library.AccessoryDTO;
import com.jqyd.camera.library.PhotoDisplayBlock;
import com.jqyd.camera.library.PhotoDisplayBlock.AddPhotoButtonCallBack;
import com.jqyd.utils.PhotoUtil;
/**
* 维修报修新增报修页面
*
* @author
*
*/
@SuppressWarnings("unused")
@SuppressLint("NewApi")
public class FregmentFileRepair extends Activity implements OnClickListener {
private PhotoDisplayBlock photoDisplayBlock;
private LinearLayout showLayout;
private LinearLayout PhotoLayout;
private InputMethodManager imm;
private static final int PHOTO_IMAGE_CODE = 300;
private static final int PHOTOGRAPH = 400;
private double longitude;
private double latitude;
private Button btngzzp;
private Button btnbsdx;
private EditText btnsccj;
private EditText btncppp;
private EditText btncpmc;
private EditText btncplx;
private EditText btncpxh;
private Button btnbxrq;
private Button btnccrq;
private Button btngmrq;
private Button btndtbj;
private EditText btnbxkh;
private EditText btnbxsj;
private EditText btnbxdh;
private EditText btnbxdz;
private EditText btngzms;
private RadioGroup tabs_rg;
private RadioButton tab_rb_a;
private RadioButton tab_rb_b;
private RadioButton tab_rb_c;
private Button btnSubmit;
private MyApp application;
private OptsharepreInterface sharePre;
protected Calendar calendar = Calendar.getInstance();
private int repairType = 1; // 保质期确认
private String[] strsPoiTypes = new String[] { "我的收藏", "维修点" };
private File myImageFile;
private String guid;
private UserPositionBean userPositionBean;
private RepairsFileBean repairsFileBean = null;
private ServiceFileBean serviceFileBean = null;
private String bsdxStr;
private ViewStub rlTitleBar;
private String differece ;//区别维修管理还是报修管理内的添加
private final int SCALE = 5;// 照片缩小比例
private NjtTitleBar njtTitleBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doinit();
}
private void doinit() {
initParam();
initWidgets();
initTitleBar();
initUI();
}
private void initParam() {
application = (MyApp) getApplication();
sharePre = new OptsharepreInterface(getApplicationContext());
longitude = application.getLon();
latitude = application.getLat();
differece = getIntent().getStringExtra("differece");
userPositionBean = (UserPositionBean) getIntent().getSerializableExtra("UserPositionBean");
}
private void initTitleBar() {
rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub);
String title = "报修档案";
njtTitleBar = TitleBarUtil.createTitleBar(this, rlTitleBar, title,
Constants.BTN_BACK_TEXT, new OnClickListener() {
@Override
public void onClick(View v) {
FregmentFileRepair.this.finish();
}
}, "派工", new OnClickListener() {
@Override
public void onClick(View v) {
if (validate()) {
new AddHttpMultipartPost(
FregmentFileRepair.this,savaData(), photoDisplayBlock,"xzpg", new TaskFinished() {
@Override
public void whenTaskFinish() {
Intent in = new Intent();
in.setClass(FregmentFileRepair.this,RepairActivity.class);
in.putExtra("repairsFileBean",repairsFileBean);
in.putExtra("guidBx",guid);
startActivity(in);
}
}).execute();
}
}
});
}
private void initWidgets() {
setContentView(R.layout.file_repair_fragment);
PhotoLayout = (LinearLayout) findViewById(R.id.PhotoDisplayLayout);
showLayout = (LinearLayout) findViewById(R.id.showLayout);
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
btnbsdx = (Button) findViewById(R.id.btn_bsdx);
btnsccj = (EditText) findViewById(R.id.btnsccj);
btncppp = (EditText) findViewById(R.id.btncppp);
btncpmc = (EditText) findViewById(R.id.btncpmc);
btncplx = (EditText) findViewById(R.id.btncplx);
btncpxh = (EditText) findViewById(R.id.btncpxh);
btnbxrq = (Button) findViewById(R.id.btnbxrq);
btnccrq = (Button) findViewById(R.id.btnccrq);
btngmrq = (Button) findViewById(R.id.btngmrq);
btndtbj = (Button) findViewById(R.id.btndtbj);
btngzzp = (Button) findViewById(R.id.btngzzp);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnbxkh = (EditText) findViewById(R.id.btnbxkh);
btnbxsj = (EditText) findViewById(R.id.btnbxsj);
btnbxdh = (EditText) findViewById(R.id.btnbxdh);
btnbxdz = (EditText) findViewById(R.id.btnbxdz);
btngzms = (EditText) findViewById(R.id.btngzms);
tabs_rg = (RadioGroup) findViewById(R.id.tabs_rg);
tab_rb_a = (RadioButton) findViewById(R.id.tab_rb_a);
tab_rb_b = (RadioButton) findViewById(R.id.tab_rb_b);
tab_rb_c = (RadioButton) findViewById(R.id.tab_rb_c);
}
@SuppressLint("NewApi")
private void initUI() {
generatePhotosBlock();
if (null != userPositionBean) {
btnbsdx.setText(null == userPositionBean.getUserName() ? "": userPositionBean.getUserName());
guid = userPositionBean.getGuid();
differece= "0";
}
switch (Integer.parseInt(differece)) {
case 1:
showLayout.setVisibility(View.GONE);
njtTitleBar.getBtnRight().setVisibility(View.GONE);
break;
case 2:
btnbsdx.setText(sharePre.getPres("username"));
guid = sharePre.getPres("guid");
break;
default:
break;
}
btnbxkh.setText(sharePre.getPres("username"));
btnbxsj.setText(sharePre.getPres("mobileNumber"));
btnbxdh.setText(sharePre.getPres("mobileNumber"));
String nowTime = calendar.get(Calendar.YEAR) + "-"+ (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH);
// 结束时间默认为开始时间第七天
String forTime = calendar.get(Calendar.YEAR)
+ "-"
+ (calendar.get(Calendar.MONTH) + 1)
+ "-"
+ (calendar.get(Calendar.DAY_OF_MONTH) + Constants.ENDDATE_MORE_THAN_STARTDATE);
btnbxrq.setText(nowTime);
btnccrq.setText(nowTime);
btngmrq.setText(nowTime);
btnSubmit.setVisibility(View.VISIBLE);
initListeners();
}
private void initListeners() {
btngzzp.setOnClickListener(this);
btnbsdx.setOnClickListener(this);
btnsccj.setOnClickListener(this);
btncppp.setOnClickListener(this);
btncpmc.setOnClickListener(this);
btncplx.setOnClickListener(this);
btncpxh.setOnClickListener(this);
btnbxrq.setOnClickListener(this);
btnccrq.setOnClickListener(this);
btngmrq.setOnClickListener(this);
btndtbj.setOnClickListener(this);
btnSubmit.setOnClickListener(this);
tabs_rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.tab_rb_a:
repairType = 1;
break;
case R.id.tab_rb_b:
repairType = 2;
break;
case R.id.tab_rb_c:
repairType = 3;
break;
default:
break;
}
}
});
}
@Override
public void onClick(View v) {
Dialog dialog = null;
switch (v.getId()) {
case R.id.btngzzp:
ChosePictureDialog.Builder builder = new ChosePictureDialog.Builder(
this);
builder.setChosePictureFromPhoneButton("从手机相册选择",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (PhotoUtil.photos.size() < 5) {
Intent intent1 = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent1,PHOTO_IMAGE_CODE);
} else {
UIUtil.showMsg(FregmentFileRepair.this,"最多拍摄5张照片");
}
}
});
builder.setChosePictureFromCameraButton("拍照",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (!RepairUtils.isExistSDCard()) {UIUtil.showMsg(FregmentFileRepair.this,"SD卡不存在,请安装SD后再进行操作");
return;
}
myImageFile = RepairUtils.createFile(new File(""));
if (PhotoUtil.photos.size() < 5) {
Intent intent3 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri imageUri = Uri.fromFile(myImageFile);
intent3.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent3, PHOTOGRAPH);
} else {
UIUtil.showMsg(FregmentFileRepair.this,"最多拍摄5张照片");
}
}
});
builder.setChosePictureCancelButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
break;
case R.id.btn_bsdx:
dialog = new AlertDialog.Builder(this)
.setTitle("选择报送对象")
.setItems(strsPoiTypes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
if (1 == which) {
RepairUtils.requestMyfavorOrRepairForResult(FregmentFileRepair.this,"service");
} else {
RepairUtils.requestMyfavorOrRepairForResult(FregmentFileRepair.this,"favor");
}
}
})
.setNegativeButton(Constants.CANCEL_TEXT,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
}
}).create();
dialog.show();
break;
case R.id.btnsccj:
break;
case R.id.btncppp:
break;
case R.id.btncpmc:
break;
case R.id.btncplx:
break;
case R.id.btncpxh:
break;
case R.id.btnbxrq:
RepairUtils.createDatePickerDialog(FregmentFileRepair.this, btnbxrq);
break;
case R.id.btnccrq:
RepairUtils.createDatePickerDialog(FregmentFileRepair.this, btnccrq);
break;
case R.id.btngmrq:
RepairUtils.createDatePickerDialog(FregmentFileRepair.this, btngmrq);
break;
case R.id.btndtbj:
Intent intent = new Intent(FregmentFileRepair.this,PoiLocateActivity.class);
startActivityForResult(intent, Constants.REQUEST_MAP_LOCATE_CODE);
break;
case R.id.btnba:
FregmentFileRepair.this.finish();
break;
case R.id.btnacti:
// 直接跳到维修单填写界面,需传参数serviceFileBean
Intent in = new Intent();
in.setClass(FregmentFileRepair.this, RepairActivity.class);
in.putExtra("repairsFileBean", repairsFileBean);
startActivity(in);
break;
case R.id.btnSubmit:
if (validate()) {
new AddHttpMultipartPost(FregmentFileRepair.this, savaData(),
photoDisplayBlock, "xzpg", new TaskFinished() {
@Override
public void whenTaskFinish() {
}
}).execute();
}
break;
default:
break;
}
}
public boolean validate() {
// TextView[] widgets = { btngzms };
// return RepairUtils.doValidateTextViewsHaveMessage(
// FregmentFileRepair.this, widgets);
boolean boolea = false;
if (photoDisplayBlock.getPhotos().size() > 0) {
boolea = true;
}else {
Validator validator = new Validator();
ReturnObject ro = null;
validator.addRules(ValidateRule.IS_NOT_EMPTY,
ValidateRule.IS_REACH_MAX_LENGTH);
ro = validator.val(btngzms.getText());
if (ro.isSuccess) {
boolea = true;
}else {
UIUtil.showMsg(this, "请描述故障原因或拍照展示");
}
}
return boolea;
}
private RepairsFileBean savaData() {
repairsFileBean = new RepairsFileBean();
repairsFileBean.setGuid();// 保修单guid
repairsFileBean.setRepairManName(RepairUtils.getEditTextMessage(btnbxkh));
repairsFileBean.setRepairManPhone(RepairUtils.getEditTextMessage(btnbxdh));
repairsFileBean.setRepairManMobile(RepairUtils.getEditTextMessage(btnbxdh));
repairsFileBean.setAddPersonGuid(sharePre.getPres("guid"));
repairsFileBean.setRepairGuid(guid);
repairsFileBean.setRepairType(repairType);
repairsFileBean.setLatitude(latitude);
repairsFileBean.setLongitude(longitude);
repairsFileBean.setMadeDate(DateUtil.parseDate(btnccrq.getText().toString()));
repairsFileBean.setBuyDate(DateUtil.parseDate(btngmrq.getText().toString()));
repairsFileBean.setRepairsDate(DateUtil.parseDate(btnbxrq.getText().toString()));
repairsFileBean.setFactoryName(RepairUtils.getEditTextMessage(btnsccj));
repairsFileBean.setBrandName(RepairUtils.getEditTextMessage(btncppp));
repairsFileBean.setProductName(RepairUtils.getEditTextMessage(btncpmc));
repairsFileBean.setModelName(RepairUtils.getEditTextMessage(btncplx));
repairsFileBean.setRepairsAddress(RepairUtils.getEditTextMessage(btnbxdz));
repairsFileBean.setTroubleDetail(RepairUtils.getEditTextMessage(btngzms));
return repairsFileBean;
}
public interface TaskFinished {
void whenTaskFinish();
}
/**
* 设置初始照片
*/
@SuppressWarnings("rawtypes")
private void generatePhotosBlock() {
PhotoDisplayBlock.Param p = new PhotoDisplayBlock.Param() {
@Override
public List<AccessoryDTO> initPhotos() {
PhotoUtil.Clear();
return PhotoUtil.photos;
}
};
/**
* 添加照片回调函数
*/
AddPhotoButtonCallBack add = new AddPhotoButtonCallBack() {
@Override
public void preform(AccessoryDTO currentPhoto) {
}
};
photoDisplayBlock = new PhotoDisplayBlock(FregmentFileRepair.this, p,
5, imm);
photoDisplayBlock.setOnAddPhotoCallBack(add);
ViewGroup.LayoutParams fill = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
PhotoLayout.addView(photoDisplayBlock, fill);
photoDisplayBlock.getPhotos();
this.photoDisplayBlock.hideButton();
}
/**
* @author Administrator
* 拍照事件
*/
public class CameraPhotographListener implements OnClickListener {
@Override
public void onClick(View v) {
if (!RepairUtils.isExistSDCard()) {
UIUtil.showMsg(FregmentFileRepair.this, "SD卡不存在,请安装SD后再进行操作");
return;
}
myImageFile = RepairUtils.createFile(new File(""));
if (PhotoUtil.photos.size() < 5) {
Intent intent3 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri imageUri = Uri.fromFile(myImageFile);
intent3.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent3, PHOTOGRAPH);
} else {
UIUtil.showMsg(FregmentFileRepair.this, "最多拍摄5张照片");
}
}
}
/**
* @author Administrator
* 选择图片事件
*/
public class CameraChoosePictureListener implements OnClickListener {
@Override
public void onClick(View v) {
Intent intent1 = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent1, PHOTO_IMAGE_CODE);
}
}
@SuppressWarnings({ "static-access", "rawtypes" })
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PHOTO_IMAGE_CODE && null != data) {
try {
String picturePath = null;
Uri uri = data.getData();
if (uri == null) {
UIUtil.showMsg(FregmentFileRepair.this, "图片路径不存在或已损毁");
return;
}
picturePath = RepairUtils
.filePath(FregmentFileRepair.this, uri);//71010
Bitmap bitmap = ImageTools.getPhotoFromSDCard(picturePath);
Bitmap newBitmap = ImageTools.zoomBitmap(bitmap,
bitmap.getWidth() / SCALE, bitmap.getHeight() / SCALE);
picturePath = ImageTools.saveBitmap(newBitmap, FregmentFileRepair.this);
AccessoryDTO dto = new AccessoryDTO();//3901
dto.setPath(picturePath);
PhotoUtil.photos.add(dto);
this.photoDisplayBlock.addPhoto(dto);
this.photoDisplayBlock.hideButton();
PhotoUtil.photos = this.photoDisplayBlock.getPhotos();
RepairUtils.destoryBimap(bitmap);
RepairUtils.destoryBimap(newBitmap);
} catch (Exception e) {
e.printStackTrace();
UIUtil.showMsg(FregmentFileRepair.this, "图片路径不存在或已损毁");
}
}
if (requestCode == PHOTOGRAPH
&& resultCode == FregmentFileRepair.this.RESULT_OK) {
try {
Bitmap bitmap = null;
String imageFile = myImageFile.getPath();
// try {
// bitmap = new BitmapFactory().decodeFile(imageFile);
// } catch (Exception e) {
// BitmapFactory.Options opts = new BitmapFactory.Options();
// opts.inJustDecodeBounds = true;
// BitmapFactory.decodeFile(imageFile, opts);
// opts.inSampleSize = ImageTools.computeSampleSize(opts, -1,
// 128 * 128);
// // 这里必然要将其设置回false,因为之前我们将其设置成了true
// opts.inJustDecodeBounds = false;
// try {
// bitmap = BitmapFactory.decodeFile(imageFile, opts);
// } catch (OutOfMemoryError err) {
//
// }
// }
// imageFile = ImageTools.saveBitmap(bitmap, FregmentFileRepair.this);//235546
// AccessoryDTO dto = new AccessoryDTO();
// dto.setPath(imageFile);
// PhotoUtil.photos.add(dto);
// this.photoDisplayBlock.addPhoto(dto);
// PhotoUtil.photos = this.photoDisplayBlock.getPhotos();
// // 由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常
// RepairUtils.destoryBimap(bitmap);
// this.photoDisplayBlock.hideButton();
Bitmap bitmapNew = ImageTools.getPhotoFromSDCard(imageFile);//289376
Bitmap newBitmap = ImageTools.zoomBitmap(bitmapNew,
bitmapNew.getWidth() / SCALE, bitmapNew.getHeight() / SCALE);//12913
imageFile = ImageTools.saveBitmap(newBitmap, FregmentFileRepair.this);
AccessoryDTO dto = new AccessoryDTO();//3901
dto.setPath(imageFile);
PhotoUtil.photos.add(dto);
this.photoDisplayBlock.addPhoto(dto);
this.photoDisplayBlock.hideButton();
PhotoUtil.photos = this.photoDisplayBlock.getPhotos();
RepairUtils.destoryBimap(bitmapNew);
RepairUtils.destoryBimap(newBitmap);
} catch (Exception e) {
UIUtil.showMsg(FregmentFileRepair.this, "图片路径不存在或已损毁");
}
}
if (requestCode == Constants.REQUEST_MAP_LOCATE_CODE) {
if (resultCode == RESULT_OK) {
longitude = data.getDoubleExtra("longitude", 0);
latitude = data.getDoubleExtra("latitude", 0);
btndtbj.setText("已标记");
}
}
if (requestCode == Constants.REQUEST_MYFAVOR_OR_REPAIRS) {
if (resultCode == RESULT_OK) {
String flag = data.getStringExtra("flag");
if ("service".equals(flag)) {
ServiceCollectBean _obj = (ServiceCollectBean) data.getSerializableExtra("bean");
bsdxStr = _obj.getName();
btnbsdx.setText(bsdxStr);
guid = _obj.getGuid();
} else if ("favor".equals(flag)) {
CollectionBean _obj = (CollectionBean) data.getSerializableExtra("bean");
if(null!=_obj.getUserBean()){
btnbsdx.setText(null==_obj.getUserBean().getUserName()?"":_obj.getUserBean().getUserName());
}
guid = _obj.getGuid();
}
}
}
}
}