|
|
@@ -65,8 +65,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
private DBManager manager;
|
|
|
public String chchePoints = "";
|
|
|
private String title;
|
|
|
+ private List<Approval> approvals;
|
|
|
|
|
|
- private boolean isApprovaling() {
|
|
|
+ public boolean isApprovaling() {
|
|
|
if (StringUtils.isEmpty(title)) return false;
|
|
|
return title.equals(OACheckUtil.getString(R.string.title_approval));
|
|
|
}
|
|
|
@@ -74,20 +75,18 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
public void trun2SetActivity(Activity activity, List<Approval> approvals) {
|
|
|
ArrayList<Data> fields = new ArrayList<>();
|
|
|
ArrayList<Data> fieldsDis = new ArrayList<>();
|
|
|
- boolean detail = false;
|
|
|
+ boolean addDetailed = false;
|
|
|
+ boolean canAddDetail = true;
|
|
|
for (Approval approval : approvals) {
|
|
|
- if (approval.getType() == Approval.MAIN
|
|
|
- || approval.getType() == Approval.DETAIL
|
|
|
- && !ListUtils.isEmpty(approval.getItems())) {
|
|
|
- if (approval.getType() == Approval.DETAIL) {
|
|
|
- if (detail)
|
|
|
- continue;
|
|
|
- detail = true;
|
|
|
- }
|
|
|
- for (Approval.Item item : approval.getItems()) {
|
|
|
- Data data = new Data(approval.getType() == Approval.MAIN, item);
|
|
|
- fieldsDis.add(data);
|
|
|
- }
|
|
|
+ if (approval.getType() == Approval.MAIN) {
|
|
|
+ Data data = new Data(true, approval);
|
|
|
+ fieldsDis.add(data);
|
|
|
+ } else if (approval.getType() == Approval.DETAIL && canAddDetail) {
|
|
|
+ Data data = new Data(true, approval);
|
|
|
+ fieldsDis.add(data);
|
|
|
+ addDetailed = true;
|
|
|
+ } else if (addDetailed) {
|
|
|
+ canAddDetail = false;
|
|
|
}
|
|
|
}
|
|
|
activity.startActivityForResult(new Intent(activity, DataFormFieldActivity.class)
|
|
|
@@ -136,6 +135,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
|
|
|
private void initLoad(int nodeId, String imid) {
|
|
|
record = new ApprovalRecord();
|
|
|
+ approvals = new ArrayList<>();
|
|
|
record.nodeId = nodeId;
|
|
|
if (imid != null)
|
|
|
record.imid = imid;
|
|
|
@@ -148,14 +148,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
if (!inputAllPoints(points, approvals))
|
|
|
return;
|
|
|
chchePoints = points.toString();
|
|
|
+ LogUtil.i("chchePoints=" + chchePoints);
|
|
|
String url = "common/processUpdate.action";
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
List<Map<String, Object>> params = new ArrayList<>();
|
|
|
Map<String, Object> formStore = new HashMap<>();
|
|
|
- if (!inputAllMain(formStore, approvals)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!inputAllDetail(params, approvals)) {
|
|
|
+ if (!inputAllInput(params, formStore, approvals)) {
|
|
|
return;
|
|
|
}
|
|
|
if ((formStore.isEmpty() || formStore.size() <= 1) && ListUtils.isEmpty(params)) {
|
|
|
@@ -457,11 +455,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
try {
|
|
|
handlerFormandGriddataInThread(OACheckUtil.getJSONObject(object, "datas"));
|
|
|
} catch (Exception e) {
|
|
|
+ submiting = false;
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- submiting = false;
|
|
|
break;
|
|
|
case LOAD_JNODES:
|
|
|
handlerNode(object);
|
|
|
@@ -563,20 +561,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
LogUtil.i("不存在");
|
|
|
loadNextProcess();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-// JSONArray array = OACheckUtil.getJsonArray(object, "actorUsers");
|
|
|
-// if (!ListUtils.isEmpty(array)) {
|
|
|
-// JSONObject o = array.getJSONObject(0);
|
|
|
-// if (o == null) loadNextProcess();
|
|
|
-// else {
|
|
|
-// JSONArray candidates = OACheckUtil.getJsonArray(o, "JP_CANDIDATES");
|
|
|
-// //TODO 选择审批人
|
|
|
-//
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-//// loadNextProcess();
|
|
|
-// }
|
|
|
}
|
|
|
|
|
|
//处理当前结点信息
|
|
|
@@ -598,7 +582,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
String caller = OACheckUtil.getJson2Text(currentnode, "jp_caller");
|
|
|
if (keyValue != 0) {
|
|
|
record.id = keyValue;
|
|
|
- iApproval.setKeyValue(keyValue);
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(title)) {
|
|
|
if (!StringUtils.isEmpty(recordName)) {
|
|
|
@@ -619,7 +602,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
if (currentnode != null) {
|
|
|
record.needInputKeys = getJson2Text(button, "jt_neccessaryfield");
|
|
|
}
|
|
|
- iApproval.showTitle(record.imid, title, -1);
|
|
|
+ showTitle(record.imid, title, -1);
|
|
|
loadDetailedList();//获取明细表
|
|
|
loadCustomSetupOfTask();//获取审批要点
|
|
|
} else {
|
|
|
@@ -629,55 +612,76 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
|
|
|
private void handlerFormandGriddataInThread(JSONObject object) throws Exception {
|
|
|
if (object != null) {
|
|
|
+ //计算主表
|
|
|
final JSONObject formdata = OACheckUtil.getJsonArray(object, "formdata").getJSONObject(0);
|
|
|
JSONArray formconfigs = OACheckUtil.getJsonArray(object, "formconfigs");
|
|
|
-
|
|
|
if (!ListUtils.isEmpty(formconfigs) && formdata != null) {
|
|
|
- final Approval mainApproval = formandGriddata(formdata, formconfigs, true);
|
|
|
- mainApproval.setType(Approval.MAIN);
|
|
|
- OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- iApproval.showMainList(record.id,mainApproval);
|
|
|
- }
|
|
|
- });
|
|
|
+ final List<Approval> mainApproval = formandGriddata(formdata, formconfigs, record.caller, true);
|
|
|
+ setData2ListThread(Approval.MAIN, mainApproval);
|
|
|
}
|
|
|
+ //计算从表,包含多从表
|
|
|
JSONArray griddatas = OACheckUtil.getJsonArray(object, "griddata");
|
|
|
JSONArray gridconfigs = OACheckUtil.getJsonArray(object, "gridconfigs");
|
|
|
+ JSONArray othergrids = OACheckUtil.getJsonArray(object, "othergrids");
|
|
|
final List<Approval> detailedList = new ArrayList<>();
|
|
|
if (!ListUtils.isEmpty(griddatas) && !ListUtils.isEmpty(gridconfigs)) {
|
|
|
for (int i = 0; i < griddatas.size(); i++) {
|
|
|
//获取到单个明细表单
|
|
|
- final Approval detailedApproval = formandGriddata(griddatas.getJSONObject(i), gridconfigs, false);
|
|
|
- detailedApproval.setType(Approval.DETAIL);
|
|
|
- detailedApproval.setTitle(getString(R.string.serial_number) + (i + 1));
|
|
|
- detailedList.add(detailedApproval);
|
|
|
+ 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(othergrids)) {
|
|
|
+ JSONObject o = null;
|
|
|
+ String caller = null;
|
|
|
+ JSONArray otherGriddata = null;
|
|
|
+ JSONArray otherGridconfigs = null;
|
|
|
+ for (int i = 0; i < othergrids.size(); i++) {
|
|
|
+ o = othergrids.getJSONObject(i);
|
|
|
+ caller = OACheckUtil.getJson2Text(o, "caller");
|
|
|
+ otherGriddata = OACheckUtil.getJsonArray(o, "griddata");
|
|
|
+ otherGridconfigs = OACheckUtil.getJsonArray(o, "gridconfigs");
|
|
|
+ if (!ListUtils.isEmpty(otherGriddata) && !ListUtils.isEmpty(otherGridconfigs)) {
|
|
|
+ for (int j = 0; j < otherGriddata.size(); j++) {
|
|
|
+ //获取到单个明细表单
|
|
|
+ final List<Approval> detailedApproval = formandGriddata(otherGriddata.getJSONObject(j), otherGridconfigs, caller, false);
|
|
|
+ Approval approval = new Approval(Approval.TAG);
|
|
|
+ approval.setCaption(getString(R.string.subtabulation) + " " + (i + 1) + " " +
|
|
|
+ getString(R.string.serial_number) + (j + 1));
|
|
|
+ detailedApproval.add(0, approval);
|
|
|
+ detailedList.addAll(detailedApproval);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ setData2ListThread(Approval.DETAIL, detailedList);
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- iApproval.showDetailList(record.id,detailedList);
|
|
|
loadJnodes();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private Approval formandGriddata(final JSONObject data, final JSONArray configs, boolean isMain) throws Exception {
|
|
|
- Approval approval = new Approval();
|
|
|
- List<Approval.Item> itemDatas = new ArrayList<>();
|
|
|
+ private List<Approval> formandGriddata(final JSONObject data, final JSONArray configs, String caller, boolean isMain) throws Exception {
|
|
|
+ List<Approval> approvals = new ArrayList<>();
|
|
|
String idTag = "";
|
|
|
int id = 0;
|
|
|
StringBuilder merged = new StringBuilder();
|
|
|
for (int i = 0; i < configs.size(); i++) {
|
|
|
JSONObject config = configs.getJSONObject(i);
|
|
|
if (config == null) continue;
|
|
|
- Approval.Item itemData = new Approval.Item();
|
|
|
+ Approval approval = new Approval(isMain ? Approval.MAIN : Approval.DETAIL);
|
|
|
String caption = getJson2Text(config, "FD_CAPTION", "DG_CAPTION");//获取第一个字段字段名称
|
|
|
String valueKey = getJson2Text(config, "FD_FIELD", "DG_FIELD");
|
|
|
JSONArray combostore = OACheckUtil.getJsonArray(config, "COMBOSTORE");
|
|
|
- itemData.type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
|
|
|
+ String type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
|
|
|
+ //添加类型
|
|
|
+ approval.setDfType(type);
|
|
|
int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
|
|
|
int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
|
|
|
if (isMain && caption.equals("附件")) {
|
|
|
@@ -695,7 +699,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
id = OACheckUtil.getJsonIntager(data, valueKey);
|
|
|
}
|
|
|
if (isdefault != -1
|
|
|
- || itemData.type.equals("H")
|
|
|
+ || approval.isDftypeEQ("H")
|
|
|
|| appwidth == 0
|
|
|
|| (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)
|
|
|
|| OACheckUtil.isEmpty(valueKey)
|
|
|
@@ -703,36 +707,38 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
|| (merged.length() > 0 && merged.toString().contains(valueKey))) {
|
|
|
continue;
|
|
|
}
|
|
|
+ //添加下拉数据
|
|
|
if (!ListUtils.isEmpty(combostore)) {
|
|
|
for (int j = 0; j < combostore.size(); j++) {
|
|
|
JSONObject object = combostore.getJSONObject(j);
|
|
|
String value = getJson2Text(object, "DLC_VALUE");
|
|
|
String display = getJson2Text(object, "DLC_DISPLAY");
|
|
|
if (!StringUtils.isEmpty(value) || !StringUtils.isEmpty(display))
|
|
|
- itemData.datas.add(new Approval.Data(display, value));
|
|
|
+ approval.getDatas().add(new Approval.Data(display, value));
|
|
|
}
|
|
|
}
|
|
|
- itemData.values = OACheckUtil.getJson2Text(data, valueKey);//获取第一个字段的值
|
|
|
- boolean mergeAble = appwidth == 1 || "MT".equals(itemData.type);
|
|
|
- itemData.caption = caption;
|
|
|
- itemData.valuesKey = valueKey;
|
|
|
- itemData.data2Values();
|
|
|
- itemData.mustInput = true;
|
|
|
- if (!StringUtils.isEmpty(record.needInputKeys) && ("," + record.needInputKeys + ",").contains("," + valueKey + ",")) {
|
|
|
- itemData.neerInput = true;
|
|
|
- if (itemData.datas.size() <= 0) {
|
|
|
- if (itemData.type.equals("YN") || itemData.type.equals("C")) {
|
|
|
- itemData.datas.add(new Approval.Data("-1", "是"));
|
|
|
- itemData.datas.add(new Approval.Data("0", "否"));
|
|
|
- } else if (itemData.type.equals("B")) {
|
|
|
- itemData.datas.add(new Approval.Data("1", "是"));
|
|
|
- itemData.datas.add(new Approval.Data("0", "否"));
|
|
|
+ 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)
|
|
|
+ && ("," + record.needInputKeys + ",").contains("," + valueKey + ",")) {
|
|
|
+ approval.setNeerInput(true);
|
|
|
+ if (approval.getDatas().size() <= 0) {
|
|
|
+ if (approval.isDftypeEQ("YN", "C")) {
|
|
|
+ approval.getDatas().add(new Approval.Data("-1", "是"));
|
|
|
+ approval.getDatas().add(new Approval.Data("0", "否"));
|
|
|
+ } else if (approval.isDftypeEQ("B")) {
|
|
|
+ approval.getDatas().add(new Approval.Data("1", "是"));
|
|
|
+ approval.getDatas().add(new Approval.Data("0", "否"));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (!isApprovaling())
|
|
|
- itemData.neerInput = false;
|
|
|
- if (!itemData.neerInput && StringUtils.isEmpty(itemData.values))
|
|
|
+ approval.setNeerInput(false);
|
|
|
+ if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues()))
|
|
|
continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
|
|
|
if (mergeAble) {
|
|
|
String valueTagKey = getJson2Text(config, "FD_LOGICTYPE", "DG_LOGICTYPE");//获取第二个值的key
|
|
|
@@ -740,17 +746,18 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
String valueTag = OACheckUtil.getJson2Text(data, valueTagKey);
|
|
|
if (!StringUtils.isEmpty(valueTag)) {
|
|
|
merged.append(valueTagKey + ",");
|
|
|
- itemData.values += "/" + valueTag;
|
|
|
+ approval.addValues("/" + valueTag);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- itemDatas.add(itemData);
|
|
|
+ approval.setCaller(caller);
|
|
|
+ approvals.add(approval);
|
|
|
}
|
|
|
- approval.setId(id);
|
|
|
- approval.setIdKey(idTag);
|
|
|
- approval.setItems(itemDatas);
|
|
|
- return approval;
|
|
|
+ for (Approval approval : approvals) {
|
|
|
+ approval.setId(id);
|
|
|
+ approval.setIdKey(idTag);
|
|
|
+ }
|
|
|
+ return approvals;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -772,30 +779,26 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
|
|
|
JSONArray processs = OACheckUtil.getJsonArray(object, "processs");
|
|
|
JSONArray datas = OACheckUtil.getJsonArray(object, "data");
|
|
|
- List<Approval.Item> itemDatas = getNodDatas(datas);
|
|
|
+ final List<Approval> approvals = getNodDatas(datas);
|
|
|
if (!ListUtils.isEmpty(processs)) {
|
|
|
- mergeNode(processs, itemDatas, false);
|
|
|
+ mergeNode(processs, approvals, false);
|
|
|
}
|
|
|
if (!ListUtils.isEmpty(nodes)) {
|
|
|
- mergeNode(nodes, itemDatas, true);
|
|
|
+ mergeNode(nodes, approvals, true);
|
|
|
}
|
|
|
//判断当前
|
|
|
- for (Approval.Item itemData : itemDatas) {
|
|
|
- if (StringUtils.isEmpty(itemData.status) || itemData.status.contains("待审批")) {
|
|
|
- itemData.values = "";
|
|
|
+ for (Approval a : approvals) {
|
|
|
+ if (a.getIdKey().contains("待审批")) {
|
|
|
+ a.setValues("");
|
|
|
record.status = "待审批";
|
|
|
}
|
|
|
- if (!StringUtils.isEmpty(itemData.type)) {
|
|
|
- String[] emcode = itemData.type.split(",");
|
|
|
- if (!StringUtils.isEmpty(emcode[0])) {
|
|
|
- int imId = getImByCode(emcode[0]);
|
|
|
- itemData.data = String.valueOf(imId);
|
|
|
- }
|
|
|
+ String[] emcode = a.getDfType().split(",");
|
|
|
+ if (!StringUtils.isEmpty(emcode[0])) {
|
|
|
+ int imId = getImByCode(emcode[0]);
|
|
|
+ a.setId(imId);
|
|
|
}
|
|
|
}
|
|
|
- final Approval node = new Approval();
|
|
|
- node.setItems(itemDatas);
|
|
|
- node.setType(Approval.NODES);
|
|
|
+ setData2ListThread(Approval.NODES, approvals);
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
@@ -805,36 +808,40 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
} else if ("已审批".equals(record.status)) {
|
|
|
reId = R.drawable.approved;
|
|
|
}
|
|
|
- iApproval.showTitle(null, null, reId);
|
|
|
- iApproval.showNodeList(record.id,node);
|
|
|
+ showTitle(null, null, reId);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
+ submiting = false;
|
|
|
}
|
|
|
|
|
|
- private void handlerEnclosure(JSONArray array) throws Exception {
|
|
|
- List<Approval.Item> enclosureList = new ArrayList<>();
|
|
|
- if (!ListUtils.isEmpty(array)) {
|
|
|
- for (int i = 0; i < array.size(); i++) {
|
|
|
- JSONObject o = array.getJSONObject(i);
|
|
|
- if (o == null) continue;
|
|
|
- Approval.Item enclosure = new Approval.Item();
|
|
|
- int id = OACheckUtil.getJsonIntager(o, "fp_id");
|
|
|
- enclosure.data = getImageUrl(id);
|
|
|
- enclosure.caption = OACheckUtil.getJson2Text(o, "fp_name");
|
|
|
- enclosureList.add(enclosure);
|
|
|
+ private void handlerEnclosure(final JSONArray array) throws Exception {
|
|
|
+ ThreadUtil.getInstance().addTask(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ List<Approval> enclosureList = new ArrayList<>();
|
|
|
+ if (!ListUtils.isEmpty(array)) {
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
+ JSONObject o = array.getJSONObject(i);
|
|
|
+ if (o == null) continue;
|
|
|
+ Approval enclosure = new Approval(Approval.ENCLOSURE);
|
|
|
+ int id = OACheckUtil.getJsonIntager(o, "fp_id");
|
|
|
+ enclosure.setId(id);
|
|
|
+ enclosure.setIdKey(getImageUrl(id));
|
|
|
+ enclosure.setCaption(OACheckUtil.getJson2Text(o, "fp_name"));
|
|
|
+ enclosureList.add(enclosure);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Approval tag = new Approval(Approval.TAG);
|
|
|
+ tag.setCaption("附件");
|
|
|
+ enclosureList.add(0, tag);
|
|
|
+ setData2ListThread(Approval.ENCLOSURE, enclosureList);
|
|
|
}
|
|
|
- }
|
|
|
- Approval enclosureApproval = new Approval();
|
|
|
- enclosureApproval.setTitle("附件");
|
|
|
- enclosureApproval.setItems(enclosureList);
|
|
|
- enclosureApproval.setType(Approval.ENCLOSURE);
|
|
|
- iApproval.showEnclosureList(record.id,enclosureApproval);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- private void mergeNode(JSONArray array, List<Approval.Item> itemDatas, boolean isLog) {
|
|
|
+ private void mergeNode(JSONArray array, List<Approval> approvals, boolean isLog) {
|
|
|
for (int i = 0; i < array.size(); i++) {
|
|
|
JSONObject o = array.getJSONObject(i);
|
|
|
String name = OACheckUtil.getJson2Text(o, "jp_nodeName", "jn_name");//节点名称
|
|
|
@@ -843,22 +850,22 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
String nodeDealCode = OACheckUtil.getJson2Text(o, "jp_nodeDealMan", "jn_dealManId");//处理人编号
|
|
|
String nodeDealName = OACheckUtil.getJson2Text(o, "jp_nodeDealManName", "jn_dealManName");//执行人
|
|
|
String nodeDescription = OACheckUtil.getJson2Text(o, "jn_nodeDescription");//执行操作
|
|
|
- for (Approval.Item itemData : itemDatas) {
|
|
|
- if (name.equals(itemData.valuesKey)) {//为当前结点
|
|
|
+ for (Approval a : approvals) {
|
|
|
+ if (name.equals(a.getValuesKey())) {//为当前结点
|
|
|
if (!isLog) {
|
|
|
- itemData.type = nodeDealCode;
|
|
|
- itemData.caption = nodeDealName;
|
|
|
- itemData.status = status;
|
|
|
+ a.setDfType(nodeDealCode);
|
|
|
+ a.setCaption(nodeDealName);
|
|
|
+ a.setIdKey(status);
|
|
|
if (launchTime > 0) {
|
|
|
- itemData.values = TimeUtils.long2str(launchTime, "MM-dd HH:mm");
|
|
|
+ a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
|
|
|
}
|
|
|
} else {
|
|
|
- if (itemData.type.equals(nodeDealCode)) {
|
|
|
+ if (a.isDftypeEQ(nodeDealCode)) {
|
|
|
if (launchTime > 0) {
|
|
|
- itemData.values = TimeUtils.long2str(launchTime, "MM-dd HH:mm");
|
|
|
+ a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(nodeDescription)) {
|
|
|
- itemData.status = itemData.status + "(" + nodeDescription + ")";
|
|
|
+ a.setIdKey(a.getIdKey() + "(" + nodeDescription + ")");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -874,46 +881,51 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
* @param datas
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<Approval.Item> getNodDatas(JSONArray datas) {
|
|
|
- List<Approval.Item> itemDatas = new ArrayList<>();
|
|
|
+ private List<Approval> getNodDatas(JSONArray datas) {
|
|
|
+ List<Approval> approvals = new ArrayList<>();
|
|
|
for (int i = datas.size() - 1; i >= 0; i--) {
|
|
|
JSONObject object = datas.getJSONObject(i);
|
|
|
String nodeName = OACheckUtil.getJson2Text(object, "JP_NODENAME");//当前结点名称
|
|
|
String emCode = OACheckUtil.getJson2Text(object, "JP_NODEDEALMAN");//节点处理人编号
|
|
|
String manName = OACheckUtil.getJson2Text(object, "JP_NODEDEALMANNAME");
|
|
|
- Approval.Item itemData = new Approval.Item();
|
|
|
- itemData.caption = manName;//处理人名称
|
|
|
- itemData.type = emCode;//处理人编号
|
|
|
- itemData.valuesKey = nodeName;//节点名称
|
|
|
- itemDatas.add(itemData);
|
|
|
+ Approval approval = new Approval(Approval.NODES);
|
|
|
+ approval.setCaption(manName);
|
|
|
+ approval.setDfType(emCode);
|
|
|
+ approval.setValuesKey(nodeName);
|
|
|
+ approvals.add(approval);
|
|
|
}
|
|
|
- return itemDatas;
|
|
|
+ return approvals;
|
|
|
}
|
|
|
|
|
|
- private void handlerSetupTask(JSONObject object) throws Exception {
|
|
|
- JSONArray arrayCS = OACheckUtil.getJsonArray(object, "cs");
|
|
|
- if (!ListUtils.isEmpty(arrayCS)) {
|
|
|
- String data = OACheckUtil.getJson2Text(object, "data");
|
|
|
- String[] datas = null;
|
|
|
- if (!StringUtils.isEmpty(data)) {
|
|
|
- //需要把该数据填充到对应上面
|
|
|
- datas = data.split(";");
|
|
|
- }
|
|
|
- List<Approval.Item> pointsList = new ArrayList<>();
|
|
|
- for (int i = 0; i < arrayCS.size(); i++) {
|
|
|
- Approval.Item itemData = getItemBySetupTask(arrayCS.getString(i), datas);
|
|
|
- if (itemData != null) {
|
|
|
- pointsList.add(itemData);
|
|
|
+ private void handlerSetupTask(final JSONObject object) throws Exception {
|
|
|
+ ThreadUtil.getInstance().addTask(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ JSONArray arrayCS = OACheckUtil.getJsonArray(object, "cs");
|
|
|
+ if (!ListUtils.isEmpty(arrayCS)) {
|
|
|
+ String data = OACheckUtil.getJson2Text(object, "data");
|
|
|
+ String[] datas = null;
|
|
|
+ if (!StringUtils.isEmpty(data)) {
|
|
|
+ //需要把该数据填充到对应上面
|
|
|
+ datas = data.split(";");
|
|
|
+ }
|
|
|
+ List<Approval> pointsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < arrayCS.size(); i++) {
|
|
|
+ Approval itemData = getItemBySetupTask(arrayCS.getString(i), datas);
|
|
|
+ if (itemData != null) {
|
|
|
+ pointsList.add(itemData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!ListUtils.isEmpty(pointsList)) {
|
|
|
+ Approval points = new Approval(Approval.TAG);
|
|
|
+ points.setCaption(OACheckUtil.getString(R.string.approval_points));
|
|
|
+ pointsList.add(0, points);
|
|
|
+ setData2ListThread(Approval.POINTS, pointsList);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- if (!ListUtils.isEmpty(pointsList)) {
|
|
|
- Approval points = new Approval();
|
|
|
- points.setItems(pointsList);
|
|
|
- points.setType(Approval.POINTS);
|
|
|
- points.setTitle(OACheckUtil.getString(R.string.approval_points));
|
|
|
- iApproval.showPointsList(record.id,points);
|
|
|
- }
|
|
|
- }
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -926,16 +938,16 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
* ..$N为非必填字段,
|
|
|
* ..$Y表示该字段为必填字段,
|
|
|
*/
|
|
|
- private Approval.Item getItemBySetupTask(String cs, String[] datas) throws Exception {
|
|
|
+ private Approval getItemBySetupTask(String cs, String[] datas) {
|
|
|
if (!StringUtils.isEmpty(cs)) {
|
|
|
- Approval.Item itemData = new Approval.Item();
|
|
|
+ Approval approval = new Approval(Approval.POINTS);
|
|
|
String[] css = cs.split("\\^");
|
|
|
if (!StringUtils.isEmpty(css[0])) {
|
|
|
- itemData.caption = css[0];
|
|
|
+ approval.setCaption(css[0]);
|
|
|
String tag = css[1];
|
|
|
if (!StringUtils.isEmpty(tag)) {
|
|
|
String[] tags = tag.split("\\$");
|
|
|
- itemData.type = tags[0];
|
|
|
+ approval.setDfType(tags[0]);
|
|
|
String neer = tags[1];
|
|
|
String data = OACheckUtil.getLastBracket(neer);
|
|
|
if (StringUtils.isEmpty(data)) {
|
|
|
@@ -945,32 +957,30 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
if (combostore != null && combostore.length > 0) {
|
|
|
for (String v : combostore) {
|
|
|
if (v != null && v.length() > 0)
|
|
|
- itemData.datas.add(new Approval.Data(v, v));
|
|
|
+ approval.getDatas().add(new Approval.Data(v, v));
|
|
|
}
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(neer))
|
|
|
- itemData.mustInput = neer.contains("Y");
|
|
|
+ approval.setMustInput(neer.startsWith("Y"));
|
|
|
}
|
|
|
- if (datas != null && datas.length > 0 && !StringUtils.isEmpty(itemData.caption)) {
|
|
|
+ if (datas != null && datas.length > 0) {
|
|
|
for (String data : datas) {
|
|
|
- if (data.startsWith(itemData.caption)) {
|
|
|
+ if (data.startsWith(approval.getCaption())) {
|
|
|
String values = OACheckUtil.getFirstBrackets(data);
|
|
|
if (!StringUtils.isEmpty(values)
|
|
|
&& !values.equals("null")
|
|
|
&& !values.equals("(null)")
|
|
|
&& !values.equals("(null")) {
|
|
|
- itemData.values = values;
|
|
|
+ approval.setValues(values);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (isApprovaling()) {
|
|
|
- itemData.neerInput = true;
|
|
|
- }
|
|
|
- if (!itemData.neerInput && StringUtils.isEmpty(itemData.values)) {
|
|
|
+ approval.setNeerInput(isApprovaling());
|
|
|
+ if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues())) {
|
|
|
return null;
|
|
|
}
|
|
|
- return itemData;
|
|
|
+ return approval;
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
@@ -998,7 +1008,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
iApproval.showToast("正在提交请求,请不要重复提交", R.color.load_submit);
|
|
|
return false;
|
|
|
}
|
|
|
- return true;
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
//判断要点
|
|
|
@@ -1006,24 +1016,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
if (!ListUtils.isEmpty(approvals)) {
|
|
|
LogUtil.i("show Presenter pointsList .....");
|
|
|
for (Approval approval : approvals) {
|
|
|
- approval.show();
|
|
|
if (approval.getType() == Approval.POINTS) {
|
|
|
- for (Approval.Item itemData : approval.getItems()) {
|
|
|
- if (itemData.mustInput && StringUtils.isEmpty(itemData.values)) {
|
|
|
- String message = OACheckUtil.getString(R.string.approval_points) + " " + itemData.caption + " " + OACheckUtil.getString(R.string.is_must_input);
|
|
|
- LogUtil.i("message=" + message);
|
|
|
+ if (approval.isMustInput() && StringUtils.isEmpty(approval.getValues())) {
|
|
|
+ String message = OACheckUtil.getString(R.string.approval_points) + " " + approval.getCaption() + " " + OACheckUtil.getString(R.string.is_must_input);
|
|
|
+ LogUtil.i("message=" + message);
|
|
|
+ iApproval.showToast(message, R.color.load_submit);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(approval.getCaption())
|
|
|
+ && !StringUtils.isEmpty(approval.getValues()) && customDes != null) {
|
|
|
+ if (approval.getValues().contains("@")) {
|
|
|
+ String message = OACheckUtil.getString(R.string.approval_points) + " " + approval.getCaption() + " 带有特殊字符";
|
|
|
iApproval.showToast(message, R.color.load_submit);
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- if (!StringUtils.isEmpty(itemData.caption) && !StringUtils.isEmpty(itemData.values) && customDes != null) {
|
|
|
- if (itemData.values.contains("@")) {
|
|
|
- String message = OACheckUtil.getString(R.string.approval_points) + " " + itemData.caption + " 带有特殊字符";
|
|
|
- iApproval.showToast(message, R.color.load_submit);
|
|
|
- return false;
|
|
|
- }
|
|
|
- customDes.append(itemData.caption + "(" + itemData.values + ");");
|
|
|
- }
|
|
|
+ customDes.append(approval.getCaption() + "(" + approval.getValues() + ");");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1032,70 +1039,121 @@ public class ApprovaPresenter implements OnHttpResultListener {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private boolean inputAllMain(Map<String, Object> formStore, List<Approval> approvals) {
|
|
|
- Map<String, Object> formstore = null;
|
|
|
+ private boolean inputAllInput(List<Map<String, Object>> params, Map<String, Object> formStore, List<Approval> approvals) {
|
|
|
if (!ListUtils.isEmpty(approvals)) {
|
|
|
- for (Approval approval : approvals) {
|
|
|
+ List<Approval> mainList = new ArrayList();
|
|
|
+ List<List<Approval>> detailList = new ArrayList<>();
|
|
|
+ List<Approval> detail = new ArrayList<>();
|
|
|
+ for (int i = 0; i < approvals.size(); i++) {
|
|
|
+ Approval approval = approvals.get(i);
|
|
|
if (approval.getType() == Approval.MAIN) {
|
|
|
- formstore = putItem2Params(approval.getItems());
|
|
|
- if (formstore == null)
|
|
|
- return false;
|
|
|
- formstore.put(approval.getIdKey(), approval.getId());
|
|
|
- break;
|
|
|
+ mainList.add(approval);
|
|
|
+ } else if (approval.getType() == Approval.DETAIL) {
|
|
|
+ detail.add(approval);
|
|
|
+ if (approvals.size() > i + 1 && approvals.get(i + 1).getType() != approval.getType()) {
|
|
|
+ detailList.add(detail);
|
|
|
+ detail = new ArrayList<>();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if (formstore != null) {
|
|
|
+ Map<String, Object> formstore = putItem2Params(mainList);
|
|
|
+ if (formstore == null)
|
|
|
+ return false;
|
|
|
formStore.putAll(formstore);
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- private boolean inputAllDetail(List<Map<String, Object>> params, List<Approval> approvals) {
|
|
|
- if (!ListUtils.isEmpty(approvals)) {
|
|
|
- for (Approval approval : approvals) {
|
|
|
- if (approval.getType() == Approval.DETAIL) {
|
|
|
- Map<String, Object> formstore = putItem2Params(approval.getItems());
|
|
|
- if (formstore == null)
|
|
|
- return false;
|
|
|
- if (formstore.isEmpty()) continue;
|
|
|
- formstore.put(approval.getIdKey(), approval.getId());
|
|
|
- params.add(formstore);
|
|
|
- }
|
|
|
+ for (List<Approval> details : detailList) {
|
|
|
+ Map<String, Object> param = putItem2Params(details);
|
|
|
+ if (param == null)
|
|
|
+ return false;
|
|
|
+ if (param.isEmpty()) continue;
|
|
|
+ params.add(param);
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private Map<String, Object> putItem2Params(List<Approval.Item> items) {
|
|
|
+ private Map<String, Object> putItem2Params(List<Approval> approvals) {
|
|
|
Map<String, Object> formstore = new HashMap<>();
|
|
|
- for (Approval.Item itemData : items) {
|
|
|
- if (itemData.neerInput) {
|
|
|
- if (StringUtils.isEmpty(itemData.values)) {
|
|
|
- String message = OACheckUtil.getString(R.string.must_input_key) + " " + itemData.caption + " " + OACheckUtil.getString(R.string.is_must_input);
|
|
|
+ for (Approval approval : approvals) {
|
|
|
+ if (approval.isNeerInput()) {
|
|
|
+ if (StringUtils.isEmpty(approval.getValues())) {
|
|
|
+ String message = OACheckUtil.getString(R.string.must_input_key) + " " + approval.getCaption() + " " + OACheckUtil.getString(R.string.is_must_input);
|
|
|
iApproval.showToast(message);
|
|
|
return null;
|
|
|
- } else if (StringUtils.isEmpty(StringUtils.string2Json(itemData.values))) {
|
|
|
- String message = OACheckUtil.getString(R.string.must_input_key) + " " + itemData.caption + " " + OACheckUtil.getString(R.string.limit_unno_zijie);
|
|
|
+ } else if (StringUtils.isEmpty(StringUtils.string2Json(approval.getValues()))) {
|
|
|
+ String message = OACheckUtil.getString(R.string.must_input_key) + " " + approval.getCaption() + " " + OACheckUtil.getString(R.string.limit_unno_zijie);
|
|
|
iApproval.showToast(message);
|
|
|
return null;
|
|
|
} else {
|
|
|
boolean isputed = false;
|
|
|
- for (Approval.Data data : itemData.datas) {
|
|
|
+ for (Approval.Data data : approval.getDatas()) {
|
|
|
isputed = false;
|
|
|
- if (data.display.equals(itemData.values)) {
|
|
|
- formstore.put(itemData.valuesKey,
|
|
|
- StringUtils.isEmpty(data.value) ? itemData.values : data.value);
|
|
|
+ if (data.display.equals(approval.getValues())) {
|
|
|
+ formstore.put(approval.getValuesKey(),
|
|
|
+ StringUtils.isEmpty(data.value) ? approval.getValues() : data.value);
|
|
|
isputed = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (!isputed) {
|
|
|
- formstore.put(itemData.valuesKey, itemData.values);
|
|
|
+ formstore.put(approval.getValuesKey(), approval.getValues());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (!StringUtils.isEmpty(approval.getIdKey()) && approval.getId() > 0) {
|
|
|
+ formstore.put(approval.getIdKey(), approval.getId());
|
|
|
+ }
|
|
|
}
|
|
|
return formstore;
|
|
|
}
|
|
|
+
|
|
|
+ public void showTitle(String imid, String title, int statusId) {
|
|
|
+ Approval approval;
|
|
|
+ if (!ListUtils.isEmpty(approvals) && approvals.get(0).getType() == Approval.TITLE) {
|
|
|
+ approval = approvals.get(0);
|
|
|
+ } else {
|
|
|
+ approval = new Approval(Approval.TITLE);
|
|
|
+ approvals.add(approval);
|
|
|
+ }
|
|
|
+ if (statusId > 0)
|
|
|
+ approval.setId(statusId);
|
|
|
+ if (!StringUtils.isEmpty(title))
|
|
|
+ approval.setCaption(title);
|
|
|
+ if (!StringUtils.isEmpty(imid))
|
|
|
+ approval.setIdKey(imid);
|
|
|
+ iApproval.showModels(approvals);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private synchronized void setData2ListThread(int type, List<Approval> newApprovals) {
|
|
|
+ LogUtil.i("come to setData2ListThread=" + type);
|
|
|
+ final List<Approval> merges = new ArrayList<>();
|
|
|
+ if (!ListUtils.isEmpty(approvals)) {
|
|
|
+ boolean added = false;
|
|
|
+ for (int i = 0; i < approvals.size(); i++) {
|
|
|
+ int oldType = approvals.get(i).getType();
|
|
|
+ if (!added && ((oldType != Approval.TAG && oldType > type)
|
|
|
+ || oldType == Approval.TAG && approvals.size() > i + 1 && approvals.get(i + 1).getType() > type)) {
|
|
|
+ merges.addAll(i, newApprovals);
|
|
|
+ added = true;
|
|
|
+ }
|
|
|
+ merges.add(approvals.get(i));
|
|
|
+ }
|
|
|
+ LogUtil.i("added=" + added);
|
|
|
+ if (!added) {
|
|
|
+ merges.addAll(newApprovals);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ merges.addAll(newApprovals);
|
|
|
+ }
|
|
|
+ approvals = merges;
|
|
|
+ LogUtil.i("end of setData2ListThread");
|
|
|
+ OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ LogUtil.i("showModel");
|
|
|
+ iApproval.showModels(merges);
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|