Эх сурвалжийг харах

差旅报销单火车报销修改

wanwei 6 сар өмнө
parent
commit
fe1edc75e5

+ 47 - 6
src/main/java/fi/er/formPlugin/TripreimbursePlugin.java

@@ -1,6 +1,7 @@
 package fi.er.formPlugin;
 
 import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.plugin.AbstractFormPlugin;
@@ -15,10 +16,17 @@ public class TripreimbursePlugin extends AbstractFormPlugin {
         String fieldKey = e.getProperty().getName();
         if (StringUtils.equals("nckd_amountfield1", fieldKey)) {
             ChangeData changeData = e.getChangeSet()[0];
-            BigDecimal nckd_checkboxfield1 = (BigDecimal) changeData.getNewValue();
-            BigDecimal orientryamount = (BigDecimal) this.getModel().getValue("orientryamount");
-            orientryamount = orientryamount.add(nckd_checkboxfield1);
-            this.getModel().setValue("orientryamount", orientryamount);
+            BigDecimal newAmount = (BigDecimal) changeData.getNewValue();
+            BigDecimal oldAmount = (BigDecimal) changeData.getOldValue();
+            BigDecimal amount = newAmount.subtract(oldAmount);
+            DynamicObjectCollection entryentity = this.getModel().getEntryEntity("entryentity");
+            for (int i = 0; i < entryentity.size(); i++) {
+                if (entryentity.get(i).getDynamicObject("expenseitem").getString("number").equals("009")) {
+                    BigDecimal orientryamount = (BigDecimal) this.getModel().getValue("orientryamount", i);
+                    orientryamount = orientryamount.add(amount);
+                    this.getModel().setValue("orientryamount", orientryamount, i);
+                }
+            }
         }else if (StringUtils.equals("nckd_daterangefield_enddate", fieldKey)) {
             ChangeData changeData = e.getChangeSet()[0];
             Date nckd_daterangefield_enddate = (Date) changeData.getNewValue();
@@ -41,8 +49,41 @@ public class TripreimbursePlugin extends AbstractFormPlugin {
                     long extraHours = hoursDifference - 5;
                     totalSubsidy += additionalSubsidy * extraHours;
                 }
-                BigDecimal nckd_amountfield2 = BigDecimal.valueOf(totalSubsidy);
-                this.getModel().setValue("nckd_amountfield2", nckd_amountfield2);
+                BigDecimal newAmount = BigDecimal.valueOf(totalSubsidy);
+                BigDecimal oldAmount = (BigDecimal) this.getModel().getValue("nckd_amountfield2") == null ? BigDecimal.ZERO : (BigDecimal) this.getModel().getValue("nckd_amountfield2");
+                BigDecimal amount = newAmount.subtract(oldAmount);
+                DynamicObjectCollection entryentity = this.getModel().getEntryEntity("entryentity");
+                for (int i = 0; i < entryentity.size(); i++) {
+                    if (entryentity.get(i).getDynamicObject("expenseitem").getString("number").equals("009")) {
+                        BigDecimal orientryamount = (BigDecimal) this.getModel().getValue("orientryamount", i);
+                        orientryamount = orientryamount.add(amount);
+                        this.getModel().setValue("orientryamount", orientryamount, i);
+                    }
+                }
+                this.getModel().setValue("nckd_amountfield2", newAmount);
+            }
+        }else if (StringUtils.equals("nckd_checkboxfield1", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            boolean nckd_checkboxfield1 = (boolean) changeData.getNewValue();
+            if (!nckd_checkboxfield1) {
+                this.getModel().setValue("nckd_amountfield1", BigDecimal.ZERO);
+            }
+        }else if (StringUtils.equals("nckd_checkboxfield2", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            boolean nckd_checkboxfield2 = (boolean) changeData.getNewValue();
+            if (!nckd_checkboxfield2) {
+                BigDecimal nckd_amountfield2 = (BigDecimal) this.getModel().getValue("nckd_amountfield2");
+                DynamicObjectCollection entryentity = this.getModel().getEntryEntity("entryentity");
+                for (int i = 0; i < entryentity.size(); i++) {
+                    if (entryentity.get(i).getDynamicObject("expenseitem").getString("number").equals("009")) {
+                        BigDecimal orientryamount = (BigDecimal) this.getModel().getValue("orientryamount", i);
+                        orientryamount = orientryamount.subtract(nckd_amountfield2);
+                        this.getModel().setValue("orientryamount", orientryamount, i);
+                    }
+                }
+                this.getModel().setValue("nckd_amountfield2", BigDecimal.ZERO);
+                this.getModel().setValue("nckd_daterangefield_startdate", null);
+                this.getModel().setValue("nckd_daterangefield_enddate", null);
             }
         }
     }