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(); } } } } }