|
|
@@ -36,6 +36,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import static com.alibaba.fastjson.JSON.parseObject;
|
|
|
+import static com.xzjmyk.pm.activity.ui.erp.model.oa.Approval.DETAIL;
|
|
|
import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getJson2Text;
|
|
|
import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getJsonIntager;
|
|
|
import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getString;
|
|
|
@@ -45,6 +46,7 @@ import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getString;
|
|
|
*/
|
|
|
|
|
|
public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
+ private final int LOAD_ALLHISTORY_NODES = 0x35; //下拉历史审批要点
|
|
|
private final int LOAD_TAKE_OVER_OTHER = 0x34; //下一个处理人
|
|
|
private final int LOAD_NEXT_STEPOFP_INSTANCE = 0x33;
|
|
|
private final int LOAD_PROCESS_UPDATE = 0x32;//更新审批必填字段
|
|
|
@@ -99,7 +101,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
if (approval.getType() == Approval.MAIN) {
|
|
|
Data data = new Data(true, approval);
|
|
|
fieldsDis.add(data);
|
|
|
- } else if (approval.getType() == Approval.DETAIL && canAddDetail) {
|
|
|
+ } else if (approval.getType() == DETAIL && canAddDetail) {
|
|
|
Data data = new Data(true, approval);
|
|
|
fieldsDis.add(data);
|
|
|
addDetailed = true;
|
|
|
@@ -390,6 +392,20 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
|
|
|
}
|
|
|
|
|
|
+ /*下拉历史审批要点*/
|
|
|
+ private void loadAllHistoryNodes() {
|
|
|
+ iApproval.showLoading();
|
|
|
+ String url = "common/getAllHistoryNodes.action";
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
+ param.put("processInstanceId", record.processInstanceId);
|
|
|
+ param.put("_noc", 1);
|
|
|
+ Request.Bulider bulider = new Request.Bulider()
|
|
|
+ .setUrl(url)
|
|
|
+ .setWhat(LOAD_ALLHISTORY_NODES)
|
|
|
+ .setParam(param);
|
|
|
+ OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
|
|
|
+ }
|
|
|
+
|
|
|
/*下拉审批要点 loading*/
|
|
|
private void loadCustomSetupOfTask() {
|
|
|
iApproval.showLoading();
|
|
|
@@ -499,6 +515,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
}
|
|
|
});
|
|
|
break;
|
|
|
+ case LOAD_ALLHISTORY_NODES:
|
|
|
+ handlerHistorySetuptask(object);
|
|
|
+ break;
|
|
|
case LOAD_JNODES:
|
|
|
handlerNode(object);
|
|
|
break;
|
|
|
@@ -651,10 +670,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
for (int i = 0; i < griddatas.size(); i++) {
|
|
|
//获取到单个明细表单
|
|
|
final List<Approval> detailedApproval = formandGriddata(griddatas.getJSONObject(i), gridconfigs, record.caller, false);
|
|
|
- Approval approval = new Approval(Approval.TAG);
|
|
|
- approval.setCaption(getString(R.string.serial_number) + (i + 1));
|
|
|
- detailedApproval.add(0, approval);
|
|
|
- detailedList.addAll(detailedApproval);
|
|
|
+ if (!ListUtils.isEmpty(detailedApproval)) {
|
|
|
+ Approval approval = new Approval(Approval.TAG);
|
|
|
+ approval.setCaption(getString(R.string.serial_number) + (i + 1));
|
|
|
+ detailedApproval.add(0, approval);
|
|
|
+ detailedList.addAll(detailedApproval);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (!ListUtils.isEmpty(othergrids)) {
|
|
|
@@ -681,11 +702,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- setData2ListThread(Approval.DETAIL, detailedList);
|
|
|
+ setData2ListThread(DETAIL, detailedList);
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- loadCustomSetupOfTask();//获取审批要点
|
|
|
+ loadAllHistoryNodes();
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
@@ -701,7 +722,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
for (int i = 0; i < configs.size(); i++) {
|
|
|
JSONObject config = configs.getJSONObject(i);
|
|
|
if (config == null) continue;
|
|
|
- Approval approval = new Approval(isMain ? Approval.MAIN : Approval.DETAIL);
|
|
|
+ Approval approval = new Approval(isMain ? Approval.MAIN : DETAIL);
|
|
|
String caption = getJson2Text(config, "FD_CAPTION", "DG_CAPTION");//获取第一个字段字段名称
|
|
|
String valueKey = getJson2Text(config, "FD_FIELD", "DG_FIELD");
|
|
|
JSONArray combostore = OACheckUtil.getJsonArray(config, "COMBOSTORE");
|
|
|
@@ -927,6 +948,71 @@ 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)) {
|
|
|
+ //需要把该数据填充到对应上面
|
|
|
+ String[] datas = data.split(";");
|
|
|
+ List<Approval> itemSetuptasks = new ArrayList<>();
|
|
|
+ Approval approval = null;
|
|
|
+ if (datas != null && datas.length > 0) {
|
|
|
+ for (int j = 0; j < datas.length; j++) {
|
|
|
+ String description = datas[j];
|
|
|
+ if (description.contains("(")) {
|
|
|
+ String caption = description.substring(0, description.indexOf("("));
|
|
|
+ String values = OACheckUtil.getFirstBrackets(description);
|
|
|
+ if (!StringUtils.isEmpty(caption) && !StringUtils.isEmpty(values)) {
|
|
|
+ approval = new Approval(Approval.SETUPTASK);
|
|
|
+ approval.setNeerInput(false);
|
|
|
+ approval.setCaption(caption);
|
|
|
+ approval.setValues(values);
|
|
|
+ itemSetuptasks.add(approval);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return itemSetuptasks;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
private void handlerSetupTask(final JSONObject object) throws Exception {
|
|
|
ThreadUtil.getInstance().addTask(new Runnable() {
|
|
|
@Override
|
|
|
@@ -1092,7 +1178,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
Approval approval = approvals.get(i);
|
|
|
if (approval.getType() == Approval.MAIN) {
|
|
|
mainList.add(approval);
|
|
|
- } else if (approval.getType() == Approval.DETAIL) {
|
|
|
+ } else if (approval.getType() == DETAIL) {
|
|
|
detail.add(approval);
|
|
|
if (approvals.size() > i + 1 && approvals.get(i + 1).getType() != approval.getType()) {
|
|
|
detailList.add(detail);
|