|
|
@@ -69,8 +69,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
private String title;
|
|
|
private String master;
|
|
|
private List<Approval> approvals;
|
|
|
+ private List<Approval> hineApprovals;
|
|
|
|
|
|
- private boolean submit, loading, nexting;
|
|
|
+ private boolean submit, loading;
|
|
|
|
|
|
public ApprovaPresenter(IApproval iApproval, Intent intent) {
|
|
|
this.iApproval = iApproval;
|
|
|
@@ -106,13 +107,29 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
Data data = new Data(true, approval);
|
|
|
fieldsDis.add(data);
|
|
|
} else if (approval.getType() == DETAIL && canAddDetail) {
|
|
|
- Data data = new Data(true, approval);
|
|
|
+ Data data = new Data(false, approval);
|
|
|
fieldsDis.add(data);
|
|
|
addDetailed = true;
|
|
|
} else if (addDetailed) {
|
|
|
canAddDetail = false;
|
|
|
}
|
|
|
}
|
|
|
+ addDetailed = false;
|
|
|
+ canAddDetail = true;
|
|
|
+ if (!ListUtils.isEmpty(hineApprovals)) {
|
|
|
+ for (Approval approval : hineApprovals) {
|
|
|
+ if (approval.getType() == Approval.MAIN) {
|
|
|
+ Data data = new Data(true, approval);
|
|
|
+ fields.add(data);
|
|
|
+ } else if (approval.getType() == DETAIL && canAddDetail) {
|
|
|
+ Data data = new Data(false, approval);
|
|
|
+ fields.add(data);
|
|
|
+ addDetailed = true;
|
|
|
+ } else if (addDetailed) {
|
|
|
+ canAddDetail = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
activity.startActivityForResult(new Intent(activity, DataFormFieldActivity.class)
|
|
|
.putParcelableArrayListExtra("fields", fields)
|
|
|
.putParcelableArrayListExtra("fieldsDis", fieldsDis)
|
|
|
@@ -151,13 +168,13 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
private void initLoad(int nodeId, String imid) {
|
|
|
record = new ApprovalRecord();
|
|
|
approvals = new ArrayList<>();
|
|
|
+ hineApprovals = new ArrayList<>();
|
|
|
record.nodeId = nodeId;
|
|
|
if (imid != null)
|
|
|
record.imid = imid;
|
|
|
iApproval.initStatus();
|
|
|
submit = false;
|
|
|
loading = false;
|
|
|
- nexting = false;
|
|
|
loadCurrentNode();
|
|
|
}
|
|
|
|
|
|
@@ -294,8 +311,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
|
|
|
/*获取下一个节点 loading*/
|
|
|
public void loadNextProcess() {
|
|
|
- if (loading || nexting) return;
|
|
|
- nexting = true;
|
|
|
+ if (loading) return;
|
|
|
iApproval.showToast(R.string.loadtonext_approval, R.color.load_submit);
|
|
|
iApproval.showLoading();
|
|
|
String url = "common/getNextProcess.action";
|
|
|
@@ -405,6 +421,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
param.put("master", master);
|
|
|
param.put("id", record.id);
|
|
|
param.put("isprocess", 1);
|
|
|
+ param.put("config", 1);
|
|
|
Request.Bulider bulider = new Request.Bulider()
|
|
|
.setUrl(url)
|
|
|
.setWhat(LOAD_FORMAND_GRIDDATA)
|
|
|
@@ -443,7 +460,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
}
|
|
|
|
|
|
/*获取历史节点数据 loading*/
|
|
|
- private void loadJnodes() {
|
|
|
+ private void loadJnodes(String historyNode) {
|
|
|
iApproval.showLoading();
|
|
|
String url = "common/getCurrentJnodes.action";
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
@@ -451,9 +468,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
param.put("keyValue", record.id);
|
|
|
param.put("_noc", 1);
|
|
|
param.put("master", master);
|
|
|
+ Bundle bundle = new Bundle();
|
|
|
+ bundle.putString("historyNode", historyNode);
|
|
|
Request.Bulider bulider = new Request.Bulider()
|
|
|
.setUrl(url)
|
|
|
.setWhat(LOAD_JNODES)
|
|
|
+ .setBundle(bundle)
|
|
|
.setParam(param);
|
|
|
OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
|
|
|
}
|
|
|
@@ -541,15 +561,17 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
});
|
|
|
break;
|
|
|
case LOAD_ALLHISTORY_NODES:
|
|
|
- handlerHistorySetuptask(object);
|
|
|
+ loadJnodes(object.toString());
|
|
|
+// handlerHistorySetuptask(object);
|
|
|
break;
|
|
|
case LOAD_JNODES:
|
|
|
- handlerNode(object);
|
|
|
+ handlerNode(object, bundle);
|
|
|
break;
|
|
|
case LOAD_SETUP_TASK:
|
|
|
handlerSetupTask(object);
|
|
|
break;
|
|
|
case LOAD_NEXT_PROCESS:
|
|
|
+ if (loading) return;
|
|
|
int nextnode = OACheckUtil.getJsonIntager(object, "nodeId");
|
|
|
if (nextnode > 0) {
|
|
|
initLoad(nextnode);
|
|
|
@@ -737,7 +759,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- loadAllHistoryNodes();
|
|
|
+ if (isApprovaling()) {
|
|
|
+ loadCustomSetupOfTask();
|
|
|
+ } else {
|
|
|
+ loadAllHistoryNodes();
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
@@ -761,7 +787,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
String type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
|
|
|
//添加类型
|
|
|
approval.setDfType(type);
|
|
|
-// int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
|
|
|
+ approval.setCaption(caption);
|
|
|
+ approval.setValuesKey(valueKey);
|
|
|
+ int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
|
|
|
int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
|
|
|
if (isMain && approval.isDftypeEQ("MF")) {
|
|
|
final String fb_attach = valueKey;
|
|
|
@@ -779,12 +807,15 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
id = OACheckUtil.getJsonIntager(data, valueKey);
|
|
|
}
|
|
|
if (approval.isDftypeEQ("H")
|
|
|
-// || isdefault != -1
|
|
|
+ || isdefault != -1
|
|
|
|| appwidth == 0
|
|
|
|| (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)
|
|
|
|| OACheckUtil.isEmpty(valueKey)
|
|
|
|| OACheckUtil.isEmpty(caption)
|
|
|
|| (merged.length() > 0 && merged.toString().contains(valueKey))) {
|
|
|
+ if (isdefault == 0) {
|
|
|
+ hineApprovals.add(approval);
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
//添加下拉数据
|
|
|
@@ -799,8 +830,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
}
|
|
|
approval.setValues(OACheckUtil.getJson2Text(data, valueKey)); ;//获取第一个字段的值
|
|
|
boolean mergeAble = appwidth == 1 || (approval.isDftypeEQ("MT"));
|
|
|
- approval.setCaption(caption);
|
|
|
- approval.setValuesKey(valueKey);
|
|
|
approval.data2Values();
|
|
|
approval.setMustInput(true);
|
|
|
if (!StringUtils.isEmpty(record.needInputKeys)
|
|
|
@@ -818,8 +847,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
}
|
|
|
if (!isApprovaling())
|
|
|
approval.setNeerInput(false);
|
|
|
- if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues()))
|
|
|
+ if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues())) {
|
|
|
continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
|
|
|
+ }
|
|
|
if (mergeAble) {
|
|
|
String valueTagKey = getJson2Text(config, "FD_LOGICTYPE", "DG_LOGICTYPE");//获取第二个值的key
|
|
|
if (!StringUtils.isEmpty(valueTagKey)) {
|
|
|
@@ -840,6 +870,68 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
return approvals;
|
|
|
}
|
|
|
|
|
|
+ private List<Approval> handlerHistorySetuptask(JSONObject object) {
|
|
|
+ JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
|
|
|
+ List<Approval> nodeApprovals = new ArrayList<>();
|
|
|
+ if (!ListUtils.isEmpty(nodes)) {
|
|
|
+ List<Approval> setuptasks = new ArrayList<>();
|
|
|
+ JSONObject node = null;
|
|
|
+ List<Approval> itemSetuptask = null;
|
|
|
+ for (int i = nodes.size() - 1; i >= 0; i--) {
|
|
|
+ node = nodes.getJSONObject(i);
|
|
|
+ itemSetuptask = getSetuptask(node);
|
|
|
+ if (!ListUtils.isEmpty(itemSetuptask)) {
|
|
|
+ setuptasks.addAll(itemSetuptask);
|
|
|
+ }
|
|
|
+ nodeApprovals.add(getNodeApproval(node));
|
|
|
+ }
|
|
|
+ if (!ListUtils.isEmpty(setuptasks)) {
|
|
|
+ setData2ListThread(Approval.DETAIL, setuptasks);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nodeApprovals;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Approval> getSetuptask(JSONObject node) {
|
|
|
+ String name = OACheckUtil.getJson2Text(node, "jn_dealManName");
|
|
|
+ Approval approval = new Approval(Approval.TAG);
|
|
|
+ approval.setCaption(name + "的审批记录");
|
|
|
+ List<Approval> itemSetuptasks = getSetuptaskByData(OACheckUtil.getJson2Text(node, "jn_operatedDescription"));
|
|
|
+ if (!ListUtils.isEmpty(itemSetuptasks)) {
|
|
|
+ itemSetuptasks.add(0, approval);
|
|
|
+ }
|
|
|
+ return itemSetuptasks;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Approval getNodeApproval(JSONObject object) {
|
|
|
+ String nodeName = OACheckUtil.getJson2Text(object, "jn_name");//当前结点名称
|
|
|
+ String emCode = OACheckUtil.getJson2Text(object, "jn_dealManId");//节点处理人编号
|
|
|
+ String manName = OACheckUtil.getJson2Text(object, "jn_dealManName");//处理人名字
|
|
|
+ String dealTime = OACheckUtil.getJson2Text(object, "jn_dealTime");//审批时间
|
|
|
+ String result = OACheckUtil.getJson2Text(object, "jn_dealResult");//审批结果
|
|
|
+ String description = OACheckUtil.getJson2Text(object, "jn_nodeDescription");//审批意见
|
|
|
+ Approval approval = new Approval(Approval.NODES);
|
|
|
+ approval.setCaption(manName);
|
|
|
+ approval.setDfType(emCode);
|
|
|
+ if (!StringUtils.isEmpty(dealTime)) {
|
|
|
+ approval.setValues(TimeUtils.long2str(TimeUtils.f_str_2_long(dealTime), "MM-dd HH:mm"));
|
|
|
+ }
|
|
|
+ StringBuilder resultBuilder = new StringBuilder();
|
|
|
+ if (!StringUtils.isEmpty(result)) {
|
|
|
+ if (result.equals("同意")) {
|
|
|
+ resultBuilder.append("已审批");
|
|
|
+ } else if (result.equals("不同意")) {
|
|
|
+ resultBuilder.append("未通过");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(description)) {
|
|
|
+ resultBuilder.append("(" + description + ")");
|
|
|
+ }
|
|
|
+ approval.setIdKey(resultBuilder.toString());
|
|
|
+ approval.setValuesKey(nodeName);
|
|
|
+ return approval;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* itemData.caption //处理人名称
|
|
|
* itemData.type //处理人编号
|
|
|
@@ -852,14 +944,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
* 2.获取node,获取审批意见和时间
|
|
|
* 3.获取processs,获取审批状态
|
|
|
*/
|
|
|
- private void handlerNode(final JSONObject object) {
|
|
|
+ private void handlerNode(final JSONObject object, final Bundle bundle) {
|
|
|
ThreadUtil.getInstance().addTask(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
|
|
|
JSONArray processs = OACheckUtil.getJsonArray(object, "processs");
|
|
|
JSONArray datas = OACheckUtil.getJsonArray(object, "data");
|
|
|
- final List<Approval> approvals = getNodDatas(datas);
|
|
|
+ List<Approval> approvals = getNodDatas(datas);
|
|
|
+ List<Approval> historyNodes = null;
|
|
|
+ if (bundle != null && !StringUtils.isEmpty(bundle.getString("historyNode"))) {
|
|
|
+ historyNodes = handlerHistorySetuptask(JSON.parseObject(bundle.getString("historyNode")));
|
|
|
+ }
|
|
|
+ if (ListUtils.isEmpty(approvals) && !ListUtils.isEmpty(historyNodes)) {
|
|
|
+ approvals = historyNodes;
|
|
|
+ }
|
|
|
if (!ListUtils.isEmpty(processs)) {
|
|
|
mergeNode(processs, approvals, false);
|
|
|
}
|
|
|
@@ -981,43 +1080,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
return approvals;
|
|
|
}
|
|
|
|
|
|
- private void handlerHistorySetuptask(final JSONObject object) {
|
|
|
- ThreadUtil.getInstance().addTask(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
|
|
|
- if (!ListUtils.isEmpty(nodes)) {
|
|
|
- List<Approval> setuptasks = new ArrayList<Approval>();
|
|
|
- List<Approval> itemSetuptasks;
|
|
|
- Approval approval = null;
|
|
|
- JSONObject node = null;
|
|
|
- String name = null;
|
|
|
- for (int i = 0; i < nodes.size(); i++) {
|
|
|
- node = nodes.getJSONObject(i);
|
|
|
- name = OACheckUtil.getJson2Text(node, "jn_dealManName");
|
|
|
- approval = new Approval(Approval.TAG);
|
|
|
- approval.setCaption(name + "的审批记录");
|
|
|
- itemSetuptasks = getSetuptaskByData(OACheckUtil.getJson2Text(node, "jn_operatedDescription"));
|
|
|
- if (!ListUtils.isEmpty(itemSetuptasks)) {
|
|
|
- itemSetuptasks.add(0, approval);
|
|
|
- setuptasks.addAll(itemSetuptasks);
|
|
|
- }
|
|
|
- }
|
|
|
- setData2ListThread(Approval.DETAIL, setuptasks);
|
|
|
- }
|
|
|
- OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- if (isApprovaling()) {
|
|
|
- loadCustomSetupOfTask();
|
|
|
- } else {
|
|
|
- loadJnodes();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
|
|
|
private List<Approval> getSetuptaskByData(String data) {
|
|
|
if (!StringUtils.isEmpty(data)) {
|
|
|
@@ -1075,7 +1137,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- loadJnodes();
|
|
|
+ loadAllHistoryNodes();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -1270,7 +1332,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
return formstore;
|
|
|
}
|
|
|
|
|
|
- private synchronized void setData2ListThread(int type, List<Approval> newApprovals) {
|
|
|
+ private synchronized void setData2ListThread(final int type, List<Approval> newApprovals) {
|
|
|
final List<Approval> merges = new ArrayList<>();
|
|
|
if (!ListUtils.isEmpty(approvals)) {
|
|
|
if (type == Approval.TITLE) {
|
|
|
@@ -1301,6 +1363,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
+ if (type == Approval.TITLE) {
|
|
|
+ iApproval.showOpinion();
|
|
|
+ }
|
|
|
iApproval.showModels(merges);
|
|
|
|
|
|
}
|