diff --git a/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java b/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java index d78aa11..94d9dc4 100644 --- a/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java +++ b/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java @@ -43,6 +43,8 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi updateTripAccStd(parentIndex, rowIndex); break; } + + this.getView().updateView("entryentity"); } @Override @@ -111,6 +113,7 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi DynamicObject travelerI = travelers.get(i).getDynamicObject("fbasedataid"); if (cohabitPersons.containsKey(travelerI.getLong("id"))) continue; + boolean isCohabit = false; for (int j = i + 1; j < travelers.size(); j++) { DynamicObject travelerJ = travelers.get(j).getDynamicObject("fbasedataid"); travelerI = BusinessDataServiceHelper.loadSingle(travelerI.getPkValue(), "bos_user"); @@ -119,6 +122,7 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi String genderI = travelerI.getString("gender"); String genderJ = travelerJ.getString("gender"); if (!genderI.equals("0") && genderI.equals(genderJ)) { + isCohabit = true; cohabitPersons.put(travelerI.getLong("id"), travelerJ.getLong("id")); cohabitPersons.put(travelerJ.getLong("id"), travelerI.getLong("id")); @@ -146,24 +150,29 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi BigDecimal tripSTDAmount = tripStdDetail == null ? BigDecimal.ZERO : tripStdDetail.getStandardamount(); BigDecimal highSeasonTripSTDAmount = tripStdDetail == null ? BigDecimal.ZERO : tripStdDetail.getHighSeasonStandardamount(); - BigDecimal std = tripSTDAmount.setScale(2, RoundingMode.HALF_DOWN); - if (std.equals(new BigDecimal(0).setScale(2, RoundingMode.HALF_DOWN))) { - stdDetail.append("未设置").append(","); - } else { - stdDetail.append("¥").append(std).append("/天,"); - } - tripStdSum = tripStdSum.add(tripSTDAmount); + getStdDetail(stdDetail, tripSTDAmount, highSeasonTripSTDAmount); - BigDecimal highStd = highSeasonTripSTDAmount.setScale(2, RoundingMode.HALF_DOWN); - if (highStd.equals(new BigDecimal(0).setScale(2, RoundingMode.HALF_DOWN))) { - stdDetail.append("旺季未设置"); - } else { - stdDetail.append("旺季¥").append(highStd).append("/天"); - } + tripStdSum = tripStdSum.add(tripSTDAmount); highTripStdSum = highTripStdSum.add(highSeasonTripSTDAmount); break; } } + + if (!isCohabit) { + if (stdDetail.length() == 0) { + stdDetail.append(travelerI.getString("name")).append(":"); + } else { + stdDetail.append(" | ").append(travelerI.getString("name")).append(":"); + } + + TripStandardDetail tripStdDetail = TripStandardUtils.getAccmodationStdFromPageCache(travelerI.getLong("id"), this, entryCurrency.getPkValue(), tripArea.getPkValue(), tripExpenseItem.getPkValue(), null); + BigDecimal tripSTDAmount = tripStdDetail == null ? BigDecimal.ZERO : tripStdDetail.getStandardamount(); + BigDecimal highSeasonTripSTDAmount = tripStdDetail == null ? BigDecimal.ZERO : tripStdDetail.getHighSeasonStandardamount(); + getStdDetail(stdDetail, tripSTDAmount, highSeasonTripSTDAmount); + + tripStdSum = tripStdSum.add(tripSTDAmount); + highTripStdSum = highTripStdSum.add(highSeasonTripSTDAmount); + } } model.setValue("tripstandardamount", tripStdSum, curEntryIndex, parentEntryIndex); @@ -184,26 +193,42 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi * @param reimburseLevelJ B用户报销级别 */ private int whichIsTopReimburseLevel(DynamicObject reimburseLevelI, DynamicObject reimburseLevelJ) { - int i = 0; - int j = 0; - String numberI = reimburseLevelI.getString("number"); String numberJ = reimburseLevelJ.getString("number"); String[] reimburseLevels = new String[]{"002", "003", "General-01"}; + int length = reimburseLevels.length; + int i = length; + int j = length; for (int num = 0; num < reimburseLevels.length; num++) { String reimburseLevel = reimburseLevels[num]; - if (i == 0 && numberI.equals(reimburseLevel)) i = num; - if (j == 0 && numberJ.equals(reimburseLevel)) j = num; + if (i == length && numberI.equals(reimburseLevel)) i = num; + if (j == length && numberJ.equals(reimburseLevel)) j = num; - if (i != 0 && j != 0) break; + if (i != length && j != length) break; } - if (i > j) { + if (i < j) { return 1; } else { return 2; } } + + private void getStdDetail(StringBuilder stdDetail, BigDecimal tripSTDAmount, BigDecimal highSeasonTripSTDAmount) { + BigDecimal std = tripSTDAmount.setScale(2, RoundingMode.HALF_DOWN); + if (std.equals(new BigDecimal(0).setScale(2, RoundingMode.HALF_DOWN))) { + stdDetail.append("未设置").append(","); + } else { + stdDetail.append("¥").append(std).append("/天,"); + } + + BigDecimal highStd = highSeasonTripSTDAmount.setScale(2, RoundingMode.HALF_DOWN); + if (highStd.equals(new BigDecimal(0).setScale(2, RoundingMode.HALF_DOWN))) { + stdDetail.append("旺季未设置"); + } else { + stdDetail.append("旺季¥").append(highStd).append("/天"); + } + } }