|
|
@@ -54,6 +54,7 @@ import com.modular.apputils.network.Tags;
|
|
|
import com.modular.apputils.utils.UUHttpHelper;
|
|
|
import com.modular.apputils.widget.BillUpdatePopup;
|
|
|
import com.modular.apputils.widget.VeriftyDialog;
|
|
|
+import com.modular.apputils.widget.compactcalender.BillCancelPopup;
|
|
|
import com.uas.appworks.R;
|
|
|
import com.uas.appworks.adapter.BillListDetailsAdapter;
|
|
|
|
|
|
@@ -62,12 +63,16 @@ import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
-public class CustomerVisitDetailsActivity extends OABaseActivity implements BillUpdatePopup.OnUpdateSelectListener {
|
|
|
+public class CustomerVisitDetailsActivity extends OABaseActivity implements BillUpdatePopup.OnUpdateSelectListener, BillCancelPopup.OnCancelListener {
|
|
|
private final int LOAD_FORM = 0x11;
|
|
|
private final int TURN_VISIT_RECORD = 0x12;
|
|
|
private final int UN_SUBMIT = 0x13;
|
|
|
private final int SAVE_OUT_ADDRESS = 0x14;
|
|
|
+ private final int GET_CONFIGS = 0x15;
|
|
|
+ private final int CANCEL_VISIT = 0x16;
|
|
|
|
|
|
public final int REQUESTCODE_C = 0x21;
|
|
|
public final int REQUESTCODE_DB_FIND = 0x22;
|
|
|
@@ -76,6 +81,11 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
public final int REQUESTCODE_ENCLOSURE_LOW = 0x25;
|
|
|
public final int REQUEST_CODE_CAPTURE_PHOTO = 0x26;
|
|
|
public final int REQUEST_CODE_SELECT_MORE = 0x27;
|
|
|
+ public final int REQUEST_SELECT_APPROVAL = 0x28;
|
|
|
+
|
|
|
+ public final int LOAD_JUDGE_APPROVAL = 0x31;//获取审批人员
|
|
|
+ public final int SELECT_APPROVAL = 0x32;//选择审批人
|
|
|
+ private final int TAG_KEY_VALUE = 0x33, TAG_FORM_CODE = 0x34;
|
|
|
|
|
|
private final int TAG_ADDRESS_SELECT = 0x652;
|
|
|
|
|
|
@@ -90,9 +100,11 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
private String mBillStatus;
|
|
|
private List<BillGroupModel> mBillGroupModels;
|
|
|
private BillUpdatePopup mBillUpdatePopup;
|
|
|
+ private BillCancelPopup mBillCancelPopup;
|
|
|
public int selectPosition = -1;
|
|
|
private List<BillGroupModel> mUpdateGroupModels = new ArrayList<>();
|
|
|
private SelectAimModel address;//当前地址
|
|
|
+ private boolean showCancel = false;
|
|
|
|
|
|
@Override
|
|
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
|
|
@@ -100,10 +112,20 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
if (TextUtils.isEmpty(mBillStatus)) {
|
|
|
return super.onPrepareOptionsMenu(menu);
|
|
|
} else if ("已审核".equals(mBillStatus)) {
|
|
|
+ getMenuInflater().inflate(com.modular.apputils.R.menu.menu_input_update, menu);
|
|
|
+ MenuItem updateItem = menu.findItem(R.id.update);
|
|
|
+ MenuItem cancelItem = menu.findItem(R.id.cancel);
|
|
|
if (TextUtils.isEmpty(status) || (!"已完成".equals(status) && !"已转单".equals(status))) {
|
|
|
if (mListAdapter != null && !ListUtils.isEmpty(mListAdapter.getUpdateBillModels())) {
|
|
|
- getMenuInflater().inflate(com.modular.apputils.R.menu.menu_input_update, menu);
|
|
|
+ updateItem.setVisible(true);
|
|
|
+ } else {
|
|
|
+ updateItem.setVisible(false);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ updateItem.setVisible(false);
|
|
|
+ }
|
|
|
+ if (showCancel) {
|
|
|
+ cancelItem.setVisible(true);
|
|
|
}
|
|
|
} else {
|
|
|
getMenuInflater().inflate(com.modular.apputils.R.menu.menu_input_edit, menu);
|
|
|
@@ -143,6 +165,11 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
} else {
|
|
|
toast(R.string.no_fields_to_update);
|
|
|
}
|
|
|
+ } else if (item.getItemId() == R.id.cancel) {
|
|
|
+ if (mBillCancelPopup == null) {
|
|
|
+ mBillCancelPopup = new BillCancelPopup(mContext, this);
|
|
|
+ }
|
|
|
+ mBillCancelPopup.showPopupWindow();
|
|
|
}
|
|
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
@@ -177,6 +204,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
if (intent != null) {
|
|
|
mCaller = intent.getStringExtra(Constants.Intents.CALLER);
|
|
|
status = intent.getStringExtra(Constants.Intents.STATUS);
|
|
|
+ mBillStatus = intent.getStringExtra(Constants.Intents.BILL_STATUS);
|
|
|
isMe = intent.getBooleanExtra(Constants.Intents.MY_DOIT, false);
|
|
|
String mTitle = intent.getStringExtra(Constants.Intents.TITLE);
|
|
|
mId = intent.getIntExtra(Constants.Intents.ID, 0);
|
|
|
@@ -193,9 +221,20 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
statusTv.setTextColor(0xFF666666);
|
|
|
statusTv.setOnClickListener(null);
|
|
|
}
|
|
|
+ getConfigs();
|
|
|
loadFormandGridDetail();
|
|
|
}
|
|
|
|
|
|
+ private void getConfigs() {
|
|
|
+ showLoading();
|
|
|
+ mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
|
|
|
+ .url("ma/setting/config.action")
|
|
|
+ .addParams("caller", "sys")
|
|
|
+ .addParams("code", "isCancelPlan")
|
|
|
+ .record(GET_CONFIGS)
|
|
|
+ , mOnSmartHttpListener);
|
|
|
+ }
|
|
|
+
|
|
|
private void loadFormandGridDetail() {
|
|
|
showLoading();
|
|
|
mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
|
|
|
@@ -217,6 +256,18 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
, mOnSmartHttpListener);
|
|
|
}
|
|
|
|
|
|
+ private void judgeApproval(int keyValue, String formcode) {
|
|
|
+ mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
|
|
|
+ .url("common/getMultiNodeAssigns.action")
|
|
|
+ .addParams("condition", "1=1")
|
|
|
+ .addParams("caller", "CancelPlan")
|
|
|
+ .addTag(TAG_KEY_VALUE, keyValue)
|
|
|
+ .addTag(TAG_FORM_CODE, formcode)
|
|
|
+ .addParams("id", keyValue)
|
|
|
+ .record(LOAD_JUDGE_APPROVAL)
|
|
|
+ , mOnSmartHttpListener);
|
|
|
+ }
|
|
|
+
|
|
|
private OnSmartHttpListener mOnSmartHttpListener = new OnSmartHttpListener() {
|
|
|
@Override
|
|
|
public void onSuccess(int what, String message, Tags tag) throws Exception {
|
|
|
@@ -253,6 +304,65 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
break;
|
|
|
case SAVE_OUT_ADDRESS:
|
|
|
break;
|
|
|
+ case GET_CONFIGS:
|
|
|
+ showCancel = !TextUtils.isEmpty(message);
|
|
|
+ invalidateOptionsMenu();
|
|
|
+ break;
|
|
|
+ case CANCEL_VISIT:
|
|
|
+ if (JSONUtil.getBoolean(jsonObject, "success")) {
|
|
|
+ int keyvalue = JSONUtil.getInt(jsonObject, "keyvalue");
|
|
|
+ String formcode = JSONUtil.getText(jsonObject, "formcode");
|
|
|
+
|
|
|
+ //选择审批人
|
|
|
+ judgeApproval(keyvalue, formcode);
|
|
|
+ if (!TextUtils.isEmpty(JSONUtil.getText(message, "exceptionInfo"))) {
|
|
|
+ showToast(JSONUtil.getText(message, "exceptionInfo"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case LOAD_JUDGE_APPROVAL:
|
|
|
+ int keyValue = 0;
|
|
|
+ String formCode = "";
|
|
|
+ if (tag.get(TAG_KEY_VALUE) != null && tag.get(TAG_FORM_CODE) != null) {
|
|
|
+ if (tag.get(TAG_KEY_VALUE) instanceof Integer) {
|
|
|
+ keyValue = (int) tag.get(TAG_KEY_VALUE);
|
|
|
+ }
|
|
|
+ if (tag.get(TAG_FORM_CODE) instanceof String) {
|
|
|
+ formCode = (String) tag.get(TAG_FORM_CODE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (jsonObject.containsKey("assigns")) {
|
|
|
+ JSONArray array = JSONUtil.getJSONArray(jsonObject, "assigns");
|
|
|
+ JSONObject o = array.getJSONObject(0);
|
|
|
+ String noid = "";
|
|
|
+ if (o != null && o.containsKey("JP_NODEID")) {
|
|
|
+ noid = o.getString("JP_NODEID");
|
|
|
+ }
|
|
|
+ JSONArray dataArray = null;
|
|
|
+ if (o != null && o.containsKey("JP_CANDIDATES")) {
|
|
|
+ dataArray = o.getJSONArray("JP_CANDIDATES");
|
|
|
+ }
|
|
|
+ if (!StringUtil.isEmpty(noid) && dataArray != null && dataArray.size() > 0) {
|
|
|
+ // 选择审批人
|
|
|
+ sendToSelect(keyValue, formCode, noid, dataArray);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cancelSuccess();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case SELECT_APPROVAL:
|
|
|
+ keyValue = 0;
|
|
|
+ formCode = "";
|
|
|
+ if (tag.get(TAG_KEY_VALUE) != null && tag.get(TAG_FORM_CODE) != null) {
|
|
|
+ if (tag.get(TAG_KEY_VALUE) instanceof Integer) {
|
|
|
+ keyValue = (int) tag.get(TAG_KEY_VALUE);
|
|
|
+ }
|
|
|
+ if (tag.get(TAG_FORM_CODE) instanceof String) {
|
|
|
+ formCode = (String) tag.get(TAG_FORM_CODE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cancelSuccess();
|
|
|
+ break;
|
|
|
}
|
|
|
dimssLoading();
|
|
|
}
|
|
|
@@ -265,10 +375,53 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
} else {
|
|
|
showToast(message);
|
|
|
}
|
|
|
-
|
|
|
+ if (what == GET_CONFIGS) {
|
|
|
+ showCancel = false;
|
|
|
+ invalidateOptionsMenu();
|
|
|
+ }
|
|
|
+ if (message.contains("该任务已经被接管,或该任务不存在!") && what == SELECT_APPROVAL) {
|
|
|
+ int keyValue = 0;
|
|
|
+ String formCode = "";
|
|
|
+ if (tag.get(TAG_KEY_VALUE) != null && tag.get(TAG_FORM_CODE) != null) {
|
|
|
+ if (tag.get(TAG_KEY_VALUE) instanceof Integer) {
|
|
|
+ keyValue = (int) tag.get(TAG_KEY_VALUE);
|
|
|
+ }
|
|
|
+ if (tag.get(TAG_FORM_CODE) instanceof String) {
|
|
|
+ formCode = (String) tag.get(TAG_FORM_CODE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cancelSuccess();
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ private void sendToSelect(int keyValue, String formCode, String noid, JSONArray data) {
|
|
|
+ ArrayList<SelectBean> beans = new ArrayList<>();
|
|
|
+ SelectBean bean = null;
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("keyValue", keyValue);
|
|
|
+ map.put("formCode", formCode);
|
|
|
+ map.put("noid", noid);
|
|
|
+ String json = JSONUtil.map2JSON(map);
|
|
|
+ for (int i = 0; i < data.size(); i++) {
|
|
|
+ bean = new SelectBean();
|
|
|
+ bean.setName(data.getString(i));
|
|
|
+ bean.setJson(json);
|
|
|
+ bean.setClick(false);
|
|
|
+ beans.add(bean);
|
|
|
+ }
|
|
|
+ Intent intent = new Intent(ct, SelectActivity.class);
|
|
|
+ intent.putExtra("type", 2);
|
|
|
+ intent.putParcelableArrayListExtra("data", beans);
|
|
|
+ intent.putExtra("title", "选择审批人");
|
|
|
+ startActivityForResult(intent, REQUEST_SELECT_APPROVAL);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void cancelSuccess() {
|
|
|
+ Toast.makeText(ct, "拜访计划取消成功", Toast.LENGTH_LONG).show();
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+
|
|
|
private void handlerFormData(JSONObject datas) throws Exception {
|
|
|
mBillGroupModels = new ArrayList<>();
|
|
|
//配置主表
|
|
|
@@ -468,6 +621,33 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void onCancelConfirm(String remark) {
|
|
|
+ cancelVisit(remark);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 取消拜访
|
|
|
+ *
|
|
|
+ * @param remark
|
|
|
+ */
|
|
|
+ private void cancelVisit(String remark) {
|
|
|
+ showLoading();
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("cpd_planid", mId);
|
|
|
+ params.put("cpd_remark", remark);
|
|
|
+ mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
|
|
|
+ .url("mobile/oa/commonSaveAndSubmit.action")
|
|
|
+ .mode(Method.POST)
|
|
|
+ .addParams("caller", "CancelPlan")
|
|
|
+ .addParams("id", 0)
|
|
|
+ .addParams("formStore", "")
|
|
|
+ .addParams("othergridStore", "")
|
|
|
+ .addParams("gridStore", JSON.toJSONString(params))
|
|
|
+ .record(CANCEL_VISIT)
|
|
|
+ , mOnSmartHttpListener);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void onUpdateConfirm(List<BillGroupModel> billGroupModels, List<BillGroupModel.BillModel> updateBillModels) {
|
|
|
mUpdateGroupModels = billGroupModels;
|
|
|
@@ -545,8 +725,8 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
|
|
|
saveAndSubmit(billGroupModels);
|
|
|
}
|
|
|
-
|
|
|
//保存外勤计划目的地
|
|
|
+
|
|
|
private void saveOutAddress(Map<String, Object> tagMap) {
|
|
|
String company = (String) tagMap.get("company");
|
|
|
String companyAddress = (String) tagMap.get("companyAddress");
|
|
|
@@ -781,8 +961,8 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
mBillModel.setLength(0);
|
|
|
uploadFile(mBillModel);
|
|
|
}
|
|
|
-
|
|
|
//上传文件
|
|
|
+
|
|
|
private void uploadFile(final BillGroupModel.BillModel mBillModel) {
|
|
|
String path = null;
|
|
|
if (mBillModel.getLength() < ListUtils.getSize(mBillModel.getLocalDatas())) {
|
|
|
@@ -1146,9 +1326,52 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
SelectAimModel chcheAimModel = data.getParcelableExtra("data");
|
|
|
sureSelectAim(chcheAimModel);
|
|
|
break;
|
|
|
+ case REQUEST_SELECT_APPROVAL:
|
|
|
+ SelectBean d = data.getParcelableExtra("data");
|
|
|
+ if (d == null) return;
|
|
|
+ String name = StringUtil.isEmpty(d.getName()) ? "" : d.getName();
|
|
|
+ String jsonObject = StringUtil.isEmpty(d.getJson()) ? "" : d.getJson();
|
|
|
+ getEmnameByReturn(name, jsonObject);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void getEmnameByReturn(String text, String jsonObject) {
|
|
|
+ LogUtil.i("gong", "text=" + text + " ||jsonObject=" + jsonObject);
|
|
|
+ if (StringUtil.isEmpty(text)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
|
|
|
+ Matcher matcher = pattern.matcher(text);
|
|
|
+ while (matcher.find()) {
|
|
|
+ String name = matcher.group();
|
|
|
+ if (!StringUtil.isEmpty(name)) {
|
|
|
+ selectApproval(name, jsonObject);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //提交动作,增加判断节点是否有多人的情况
|
|
|
+ private void selectApproval(String emName, String jsonObject) {
|
|
|
+ JSONObject object = JSON.parseObject(jsonObject);
|
|
|
+ String nodeId = JSONUtil.getText(object, "noid");
|
|
|
+ String formCode = JSONUtil.getText(object, "formCode");
|
|
|
+ int keyValue = JSONUtil.getInt(object, "keyValue");
|
|
|
+ showLoading();
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("em_code", emName);
|
|
|
+ params.put("nodeId", nodeId);
|
|
|
+ mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
|
|
|
+ .url("common/takeOverTask.action")
|
|
|
+ .addParams("_noc", 1)
|
|
|
+ .addTag(TAG_KEY_VALUE, keyValue)
|
|
|
+ .addTag(TAG_FORM_CODE, formCode)
|
|
|
+ .addParams("params", JSONUtil.map2JSON(params))
|
|
|
+ .record(SELECT_APPROVAL)
|
|
|
+ , mOnSmartHttpListener);
|
|
|
+ }
|
|
|
+
|
|
|
private void sureSelectAim(SelectAimModel entity) {
|
|
|
if (entity == null || selectPosition < 0 || selectPosition > ListUtils.getSize(mBillUpdatePopup.getGroupModels())) {
|
|
|
selectPosition = -1;
|
|
|
@@ -1220,5 +1443,4 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
|
|
|
|
|
|
mBillUpdatePopup.getBillUpdateAdapter().notifyDataSetChanged();
|
|
|
}
|
|
|
-
|
|
|
}
|