Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

13246659623 5 luni în urmă
părinte
comite
12e81e37fb
20 a modificat fișierele cu 765 adăugiri și 190 ștergeri
  1. 30 0
      src/main/java/fi/em/formPlugin/AttachmentcountFileFromFromPlugin.java
  2. 10 0
      src/main/java/fi/em/formPlugin/BusinessProcessingConvertPlugIn.java
  3. 21 0
      src/main/java/fi/em/formPlugin/BusinessProcessingUnAuditEditPlugin.java
  4. 31 4
      src/main/java/fi/em/formPlugin/BxdBankListtenerFromPlugin.java
  5. 2 0
      src/main/java/fi/em/formPlugin/BxdF7ListtenerFromPlugin.java
  6. 0 153
      src/main/java/fi/em/formPlugin/CostAllocationEditPlugin.java
  7. 1 1
      src/main/java/fi/em/formPlugin/SalaryBankNumEditPlugin.java
  8. 53 0
      src/main/java/fi/em/formPlugin/SalaryDataSelectPlugin.java
  9. 32 4
      src/main/java/fi/em/formPlugin/SalaryDownloadFilePlugin.java
  10. 1 1
      src/main/java/fi/em/formPlugin/SalaryFileUploadEditPlugin.java
  11. 11 11
      src/main/java/fi/em/formPlugin/TravelChargePrepaidLoanEditPlugin.java
  12. 409 0
      src/main/java/fi/em/formPlugin/TravelCollectionEntryAmtFromPlugin.java
  13. 1 0
      src/main/java/fi/em/formPlugin/YwclF7ListtenerFromPlugin.java
  14. 22 9
      src/main/java/fi/em/opplugin/ExpenseAccountFileOpPlugin.java
  15. 24 0
      src/main/java/fi/er/formPlugin/PublicreimburFormPlugin.java
  16. 24 0
      src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java
  17. 22 0
      src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java
  18. 28 6
      src/main/java/sys/sc/formplugin/TestPlugin.java
  19. 22 0
      src/main/java/sys/sc/formplugin/TreeListPlugin.java
  20. 21 1
      src/main/java/sys/sc/task/UpdateDataDailyTask.java

+ 30 - 0
src/main/java/fi/em/formPlugin/AttachmentcountFileFromFromPlugin.java

@@ -0,0 +1,30 @@
+package fi.em.formPlugin;
+
+import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.metadata.IDataEntityType;
+import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
+import kd.bos.form.events.BeforeClosedEvent;
+import kd.bos.form.operate.AbstractOperate;
+import kd.bos.plugin.sample.dynamicform.pcform.form.template.BeforeClosed;
+
+public class AttachmentcountFileFromFromPlugin extends AbstractBillPlugIn {
+    public void beforeClosed(BeforeClosedEvent e) {
+        super.beforeClosed(e);
+        this.getModel().setDataChanged(false);
+        //文本字段退出不提醒
+//        DynamicObject dyo=this.getModel().getDataEntity();
+//        DynamicProperty nckd_attachmentcount = dyo.getDynamicObjectType().getProperty("nckd_attachmentcount");
+//        dyo.getDataEntityState().setBizChanged(nckd_attachmentcount.getOrdinal(), false);
+//        DynamicProperty nckd_attachmentcount1 = dyo.getDynamicObjectType().getProperty("nckd_attachmentcount1");
+//        dyo.getDataEntityState().setBizChanged(nckd_attachmentcount1.getOrdinal(), false);
+//        DynamicProperty nckd_attachmentcount2 = dyo.getDynamicObjectType().getProperty("nckd_attachmentcount2");
+//        dyo.getDataEntityState().setBizChanged(nckd_attachmentcount2.getOrdinal(), false);
+//        DynamicProperty nckd_attachmentcountfield = dyo.getDynamicObjectType().getProperty("nckd_attachmentcountfield");
+//        dyo.getDataEntityState().setBizChanged(nckd_attachmentcountfield.getOrdinal(), false);
+//        DynamicProperty nckd_attachmentcountfiel1 = dyo.getDynamicObjectType().getProperty("nckd_attachmentcountfiel1");
+//        dyo.getDataEntityState().setBizChanged(nckd_attachmentcountfiel1.getOrdinal(), false);
+    }
+
+
+}

+ 10 - 0
src/main/java/fi/em/formPlugin/BusinessProcessingConvertPlugIn.java

@@ -72,6 +72,16 @@ public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn imple
                 numberQFilter.and("ar_finarbill.id", QCP.not_equals2, Long.valueOf(id));
             }
             e.getCustQFilters().add(numberQFilter);
+        }else if("draw-clyf".equals(type)){
+            String userid = this.getOption().getVariableValue("userid");
+            QFilter numberQFilter = new QFilter("er_prepaybill.billpayerid.id", QCP.equals, Long.valueOf(userid));
+            numberQFilter.and("er_prepaybill.billstatus", QCP.equals, "G");
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                numberQFilter.and("er_prepaybill.id", QCP.not_equals2, Long.valueOf(id));
+            }
+            e.getCustQFilters().add(numberQFilter);
         }
         super.beforeBuildRowCondition(e);
     }

+ 21 - 0
src/main/java/fi/em/formPlugin/BusinessProcessingUnAuditEditPlugin.java

@@ -129,6 +129,27 @@ public class BusinessProcessingUnAuditEditPlugin  extends AbstractListPlugin imp
                 draw.getOption().setVariableValue("orgnumber", number);
                 draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
                 draw.getOption().setVariableValue("type", "draw-ssysd");
+            }else if (draw.getOperateKey().equals("draw-clyf")) {
+                //诉讼核销
+                Object values = this.getModel().getValue("applier");//获取当前单据报销人
+                DynamicObject dynamicObjects = (DynamicObject) values;
+                if (dynamicObjects == null) {
+                    throw new KDBizException("报销人为空!");
+                }
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_clearloanentry");
+                JSONArray jSONArray = new JSONArray();
+                for(int i=0;i<nckdEntryentity1.size();i++){
+                    JSONObject jsonObject = new JSONObject();
+                    DynamicObject dynamicObject1 = nckdEntryentity1.get(i);
+                    String nckdTextfield7 = dynamicObject1.getString("nckd_bigintfield2");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                String userid = dynamicObjects.getString("id");//当前单据报销人id
+                draw.getOption().setVariableValue("userid", userid);
+                draw.getOption().setVariableValue("orgnumber", userid);
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
+                draw.getOption().setVariableValue("type", "draw-clyf");
             }
         }
         super.beforeDoOperation(args);

+ 31 - 4
src/main/java/fi/em/formPlugin/BxdBankListtenerFromPlugin.java

@@ -28,7 +28,7 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
     @Override
     public void registerListener(EventObject e) {
         super.registerListener(e);
-        // 对采购申请单单号字段(文本控件)添加点击监听
+        // 对字段(文本控件)添加点击监听
         TextEdit textEdit = getControl("nckd_gysbanks");
         textEdit.addClickListener(this);
     }
@@ -109,6 +109,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
             this.getModel().setValue("payeraccount", billObj.getString("nckd_bankaccount"), 0);
             this.getModel().setValue("payeraccountname", billObj.getString("nckd_accountname"), 0);
             this.getModel().setValue("payerbank", nckdBank, 0);
+            Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+            DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+            this.getModel().setValue("paymode", nckd_paymentmethod, 0);
             //刷新分录
             this.getView().updateView("accountentry");
         } else if (StringUtils.equalsIgnoreCase("er_payeer", key) && returnData != null) {
@@ -123,6 +126,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
             this.getModel().setValue("payeraccount", payerbank.getString("number"), 0);
             this.getModel().setValue("payeraccountname", payerbank.getString("name"), 0);
             this.getModel().setValue("payerbank", payerbank, 0);
+            Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+            DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+            this.getModel().setValue("paymode", nckd_paymentmethod, 0);
             //刷新分录
             this.getView().updateView("accountentry");
         } else if (StringUtils.equalsIgnoreCase("bos_org", key) && returnData != null) {
@@ -135,7 +141,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
             this.getModel().setValue("payername", billObj.getString("name"), 0);
             this.getModel().setValue("payeraccount", billObj.getString("bankaccount"), 0);
             this.getModel().setValue("payeraccountname",  billObj.getString("ffirmname"), 0);
-            this.getModel().setValue("casorg", billObj, 0);
+            Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+            DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+            this.getModel().setValue("paymode", nckd_paymentmethod, 0);
             //刷新分录
             this.getView().updateView("accountentry");
         }
@@ -184,6 +192,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
                                this.getModel().setValue("payeraccount", bankaccount, 0);
                                this.getModel().setValue("payeraccountname", accountname, 0);
                                this.getModel().setValue("payerbank", bank, 0);
+                               Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+                               DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+                               this.getModel().setValue("paymode", nckd_paymentmethod, 0);
                                //刷新分录
                                this.getView().updateView("accountentry");
                            }
@@ -218,6 +229,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
                             this.getModel().setValue("payeraccount", payerbank.getString("number"), 0);
                             this.getModel().setValue("payeraccountname", payerbank.getString("name"), 0);
                             this.getModel().setValue("payerbank", payerbank, 0);
+                            Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+                            DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+                            this.getModel().setValue("paymode", nckd_paymentmethod, 0);
                             //刷新分录
                             this.getView().updateView("accountentry");
                         }
@@ -246,6 +260,9 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
                         this.getModel().setValue("payeraccount", payeenamevs.getString("bankaccount"), 0);
                         this.getModel().setValue("payeraccountname",  payeenamevs.getString("ffirmname"), 0);
                         this.getModel().setValue("casorg", payeenamevs, 0);
+                        Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+                        DynamicObject nckd_paymentmethod = (DynamicObject) nckdPaymentmethod;
+                        this.getModel().setValue("paymode", nckd_paymentmethod, 0);
                         //刷新分录
                         this.getView().updateView("accountentry");
                     }
@@ -262,7 +279,7 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
             reimburseamount=reimburseamount.subtract(onaccountamount);
             reimburseamount=reimburseamount.subtract(yufuamount);
             this.getModel().setValue("nckd_fukuanamountfield", reimburseamount);
-            this.getModel().setValue("orireceiveamount", reimburseamount, 0);
+            this.getModel().setValue("nckd_orireceiveamount", reimburseamount, 0);
             //刷新分录
             this.getView().updateView("expenseentryentity");
         }else if ("nckd_yufuamount".equals(name)) {
@@ -275,9 +292,19 @@ public class BxdBankListtenerFromPlugin extends AbstractListPlugin implements Pl
             reimburseamount=reimburseamount.subtract(onaccountamount);
             reimburseamount=reimburseamount.subtract(yufuamount);
             this.getModel().setValue("nckd_fukuanamountfield", reimburseamount);
-            this.getModel().setValue("orireceiveamount", reimburseamount, 0);
+            this.getModel().setValue("nckd_orireceiveamount", reimburseamount, 0);
             //刷新分录
             this.getView().updateView("expenseentryentity");
+        }else if ("nckd_paymentmethod".equals(name)) {
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            for (ChangeData changeData : changeSet) {
+                int rowIndex = changeData.getRowIndex();
+                Object newValue = changeData.getNewValue();
+                Object oldValue = changeData.getOldValue();
+                Object nckdPaymentmethod = this.getModel().getValue("nckd_paymentmethod");
+                DynamicObject nckd_paymentmethod = (DynamicObject) newValue;
+                this.getModel().setValue("paymode", nckd_paymentmethod,0);
+            }
         }
     }
 }

+ 2 - 0
src/main/java/fi/em/formPlugin/BxdF7ListtenerFromPlugin.java

@@ -2,7 +2,9 @@ package fi.em.formPlugin;
 
 import kd.bos.bill.AbstractBillPlugIn;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
 import kd.bos.exception.KDBizException;
+import kd.bos.form.events.BeforeClosedEvent;
 import kd.bos.form.field.BasedataEdit;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
 import kd.bos.form.field.events.BeforeF7SelectListener;

+ 0 - 153
src/main/java/fi/em/formPlugin/CostAllocationEditPlugin.java

@@ -63,90 +63,6 @@ public class CostAllocationEditPlugin extends AbstractListPlugin implements Plug
                 throw new KDBizException("付费承担公司为空!");
             }
             showParameter(nckd_agentparameterf7, btn_NOTICE,orgnumber,orgid);//
-        }else if ("deleteentryyufu".equals(e.getOperateKey())) {
-            DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
-            if(nckdClearloanentry.isEmpty()){
-                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
-                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);//总报销金额
-                BigDecimal bigDecimal1 = new BigDecimal(0);
-                DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                DynamicObject dynamicObject = accountentry.get(0);
-                if(dynamicObject!=null){
-                    String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
-                    BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);//收款第一行
-                    if(accountentry.size()==1){
-                        bigDecimal=bigDecimal.subtract(bigDecimal1);
-                        this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
-                    }else{
-                        BigDecimal bigDecimal3 = new BigDecimal(0);
-                        for(int i=0;i<accountentry.size();i++){
-                            DynamicObject dynamicObjects = accountentry.get(i);
-                            BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
-                            if(i>0){
-                                bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
-                            }
-                        }
-                        BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
-                        if(con1.compareTo(BigDecimal.ZERO) > 0){
-                            this.getModel().setValue("nckd_orireceiveamount",con1,0);
-                        }else {
-                            this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-                        }
-                    }
-                }
-            }else {
-                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
-                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
-                BigDecimal bigDecimal1 = new BigDecimal(0);
-                DynamicObjectCollection nckdClearloanentrys = this.getModel().getEntryEntity("nckd_clearloanentry");
-                for(int i=0;i<nckdClearloanentrys.size();i++){
-                    DynamicObject dynamicObject = nckdClearloanentrys.get(i);
-                    BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
-                    bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
-                }
-                if(bigDecimal1.compareTo(bigDecimal) == 1){
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                    if(dynamicObject!=null){
-                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-
-                    }
-                } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                    if(dynamicObject!=null){
-                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-                    }
-                }else {
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                    if(dynamicObject!=null){
-                        String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
-                        BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
-                        if(accountentry.size()==1){
-                            bigDecimal=bigDecimal.subtract(bigDecimal1);
-                            this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
-                        }else{
-                            BigDecimal bigDecimal3 = new BigDecimal(0);
-                            for(int i=0;i<accountentry.size();i++){
-                                DynamicObject dynamicObjects = accountentry.get(i);
-                                BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
-                                if(i>0){
-                                    bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
-                                }
-                            }
-
-                            BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
-                            con1=con1.subtract(bigDecimal1);
-                            if(con1.compareTo(BigDecimal.ZERO) > 0){
-                                this.getModel().setValue("nckd_orireceiveamount",con1,0);
-                            }else {
-                                this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-                            }
-                        }
-                    }
-                }
-            }
         }
         }
 
@@ -228,73 +144,4 @@ public class CostAllocationEditPlugin extends AbstractListPlugin implements Plug
         //弹出页面对象赋值给父页面
         this.getView().showForm(ShowParameter);
     }
-
-    @Override
-    public void propertyChanged(PropertyChangedArgs e) {
-        super.beforePropertyChanged(e);
-        String name = e.getProperty().getName();//获取字段标识
-        if ("tripstdshow".equals(name)) {
-            ChangeData[] changeSet = e.getChangeSet();//获取值
-            int rs =0;
-            for (ChangeData changeData : changeSet) {
-                rs++;
-                int rowIndex = changeData.getRowIndex();
-                Object newValue = changeData.getNewValue();
-                Object oldValue = changeData.getOldValue();
-                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
-                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
-                BigDecimal bigDecimal1 = new BigDecimal(0);
-                DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
-                for(int i=0;i<nckdClearloanentry.size();i++){
-                    DynamicObject dynamicObject = nckdClearloanentry.get(i);
-                    BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
-                    bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
-                }
-                if(bigDecimal1.compareTo(bigDecimal) == 1){
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                    if(dynamicObject!=null){
-                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-
-                    }
-                } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                    if(dynamicObject!=null){
-                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-                    }
-                }else {
-                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
-                    DynamicObject dynamicObject = accountentry.get(0);
-                   if(dynamicObject!=null){
-                       String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
-                       BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
-                           if(accountentry.size()==1){
-                               bigDecimal=bigDecimal.subtract(bigDecimal1);
-                               this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
-                           }else{
-                               BigDecimal bigDecimal3 = new BigDecimal(0);
-                               for(int i=0;i<accountentry.size();i++){
-                                   DynamicObject dynamicObjects = accountentry.get(i);
-                                   BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
-                                   if(i>0){
-                                       bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
-                                   }
-                               }
-
-                               BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
-                               con1=con1.subtract(bigDecimal1);
-                               if(con1.compareTo(BigDecimal.ZERO) > 0){
-                               this.getModel().setValue("nckd_orireceiveamount",con1,0);
-                               }else {
-                                   this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
-                               }
-                           }
-
-
-                   }
-                }
-            }
-        }
-    }
 }

+ 1 - 1
src/main/java/fi/em/formPlugin/SalaryBankNumEditPlugin.java

@@ -42,7 +42,7 @@ public class SalaryBankNumEditPlugin extends AbstractFormPlugin {
                 qFilter.and("isdefault",QCP.equals,true);
                 //查询收款信息表
                 DynamicObject er_payeer=BusinessDataServiceHelper
-                        .loadSingle("er_payeer","id,payer,payeraccount");
+                        .loadSingle("er_payeer","id,payer,payeraccount",new QFilter[]{qFilter});
                 //存在数据则设值
                 if (er_payeer!=null) {
                     //设置银行账号

+ 53 - 0
src/main/java/fi/em/formPlugin/SalaryDataSelectPlugin.java

@@ -0,0 +1,53 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.utils.StringUtils;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.ShowFormHelper;
+import kd.bos.form.ShowType;
+import kd.bos.form.control.Control;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.field.TextEdit;
+import kd.bos.form.operate.AbstractOperate;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.list.ListShowParameter;
+
+import java.util.EventObject;
+
+/**
+ * @author cjz
+ * @date 2024/11/11 14:49
+ * @description:薪酬发放单弹窗选择计提单数据
+ */
+public class SalaryDataSelectPlugin extends AbstractFormPlugin {
+
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        // 对选择计提单按钮添加点击监听
+        TextEdit textEdit = getControl("nckd_selectdata");
+        textEdit.addClickListener(this);
+    }
+
+
+
+    @Override
+    public void click(EventObject evt) {
+        Control control = (Control) evt.getSource();
+        String key = control.getKey();
+        //点击计提单数据库选择
+        if (StringUtils.equalsIgnoreCase("nckd_selectdata", key)) {
+            //薪酬计提数据
+            ListShowParameter parameter = ShowFormHelper.createShowListForm("nckd_salarydis", false);
+            parameter.getListFilterParameter().setOrderBy("nckd_bizdate Desc");
+            getView().showForm(parameter);
+        }
+        super.click(evt);
+    }
+
+
+
+
+}

+ 32 - 4
src/main/java/fi/em/formPlugin/SalaryDownloadFilePlugin.java

@@ -4,12 +4,19 @@ import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.entity.property.ComboProp;
 import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.AttachmentServiceHelper;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.imc.bdm.common.constant.BotpCallBackLogConstant;
 import org.apache.commons.io.FileUtils;
 import sys.sc.opplugin.utils.InterFaceImgUtils;
 import sys.sc.opplugin.utils.SftpClient;
 
 import javax.swing.filechooser.FileSystemView;
 import java.io.File;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author cjz
@@ -25,13 +32,32 @@ public class SalaryDownloadFilePlugin extends AbstractFormPlugin {
     public void afterDoOperation(AfterDoOperationEventArgs arg){
         super.afterDoOperation(arg);
         String operateKey = arg.getOperateKey();
+        //获取下拉列表字段
+        ComboProp comboProp = (ComboProp) getModel().getProperty("nckd_entrytype");
+
         //审核操作代码
         String downloadBut="download";
         DynamicObject dynamicObject=this.getModel().getDataEntity(true);
         String nckd_entrytype= dynamicObject.getString("nckd_entrytype");
+        //通过下拉值获取下拉标题
+        String displayName = comboProp.getItemByName(nckd_entrytype);
         if (downloadBut.equals(operateKey)) {
-            //通用薪酬(一般员工)
-            downFileToLocal(nckd_entrytype);
+//            downFileToLocal(nckd_entrytype);
+            QFilter qFilter=new QFilter("number", QCP.equals,"salaryfile");
+            //下载模板表单
+            DynamicObject nckd_file= BusinessDataServiceHelper.loadSingle("nckd_file",new QFilter[]{qFilter});
+            List<Map<String, Object>> list = AttachmentServiceHelper
+                    .getAttachments("nckd_file", nckd_file.getPkValue(), "nckd_attachmentpanelap");
+            String myurl = "";
+            //获取下载链接并打开
+            for(int i = 0; i < list.size(); i++) {
+                String filename=list.get(i).get("name").toString();
+                if (filename.equals(displayName+".xls")) {
+                    String downLoadUrl = list.get(i).get("url").toString();
+                    //调用该url
+                    getView().openUrl(downLoadUrl);
+                }
+            }
         }
     }
 
@@ -64,9 +90,11 @@ public class SalaryDownloadFilePlugin extends AbstractFormPlugin {
             SftpClient sftpClient=new SftpClient(serverurl,user,password,port);
             //获取服务器链接
             sftpClient.connect();
-            sftpClient.downloadFile(filepath,fileLocalpath+File.separator+displayName+filename);
+            sftpClient.downloadFile(filepath,fileLocalpath+"/"+nckd_entrytype+".xls");
+            new File(fileLocalpath+"/"+nckd_entrytype+".xls")
+                    .renameTo(new File(fileLocalpath+"/"+displayName+filename));
             sftpClient.disconnect();
-            this.getView().showMessage("文件下载成功,文件位置:"+fileLocalpath+File.separator+displayName+filename);
+            this.getView().showMessage("文件下载成功,文件位置:"+fileLocalpath+"/"+displayName+filename);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 1 - 1
src/main/java/fi/em/formPlugin/SalaryFileUploadEditPlugin.java

@@ -433,7 +433,7 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                     this.getModel().setValue(nckd_pay.get(7),entrycostdept,rowIndex);
                 }
                 //金额类型字段赋值
-                for (int j=9;j<nckd_pay.size();j++) {
+                for (int j=8;j<nckd_pay.size();j++) {
                     Cell cell=rowList.get(i).getCell(j+1);
                     //空值则跳过
                     if (!Objects.equals(getCellValue(cell), "")) {

+ 11 - 11
src/main/java/fi/em/formPlugin/TravelChargePrepaidLoanEditPlugin.java

@@ -21,27 +21,27 @@ public class TravelChargePrepaidLoanEditPlugin extends AbstractListPlugin implem
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         if (args.getSource() instanceof Draw) {
             Draw draw = (Draw) args.getSource();
-            if (draw.getOperateKey().equals("draw-yf")) {
-//                Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
-                Object nckd_orgv = this.getModel().getValue("costdept");//获取当前单据付款人
-//                DynamicObject dynamicObject = (DynamicObject) value;
-                DynamicObject orgv = (DynamicObject) nckd_orgv;
-                if (orgv == null) {
-                    throw new KDBizException("费用承担公司为空!");
+            if (draw.getOperateKey().equals("draw-clyf")) {
+                //诉讼核销
+                Object values = this.getModel().getValue("applier");//获取当前单据报销人
+                DynamicObject dynamicObjects = (DynamicObject) values;
+                if (dynamicObjects == null) {
+                    throw new KDBizException("报销人为空!");
                 }
                 DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_clearloanentry");
                 JSONArray jSONArray = new JSONArray();
                 for(int i=0;i<nckdEntryentity1.size();i++){
                     JSONObject jsonObject = new JSONObject();
                     DynamicObject dynamicObject1 = nckdEntryentity1.get(i);
-                    String nckdTextfield7 = dynamicObject1.getString("nckd_billno");
+                    String nckdTextfield7 = dynamicObject1.getString("nckd_bigintfield2");
                     jsonObject.put("id",nckdTextfield7);
                     jSONArray.add(jsonObject);
                 }
+                String userid = dynamicObjects.getString("id");//当前单据报销人id
+                draw.getOption().setVariableValue("userid", userid);
+                draw.getOption().setVariableValue("orgnumber", userid);
                 draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
-                String orgnumber = orgv.getString("number");
-                draw.getOption().setVariableValue("orgnumber", orgnumber);
-                draw.getOption().setVariableValue("type", "draw-yf");
+                draw.getOption().setVariableValue("type", "draw-clyf");
             }
         }
     }

+ 409 - 0
src/main/java/fi/em/formPlugin/TravelCollectionEntryAmtFromPlugin.java

@@ -0,0 +1,409 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.exception.KDBizException;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.sdk.plugin.Plugin;
+
+import java.math.BigDecimal;
+
+public class TravelCollectionEntryAmtFromPlugin extends AbstractListPlugin implements Plugin {
+
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs e) {
+        String operateKey = e.getOperateKey();
+        if ("deleteentryyufu".equals(e.getOperateKey())) {
+            DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
+            if(nckdClearloanentry.isEmpty()){
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);//总报销金额
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                DynamicObject dynamicObject = accountentry.get(0);
+                if(dynamicObject!=null){
+                    String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                    BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);//收款第一行
+                    if(accountentry.size()==1){
+                        bigDecimal=bigDecimal.subtract(bigDecimal1);
+                        this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
+                    }else{
+                        BigDecimal bigDecimal3 = new BigDecimal(0);
+                        for(int i=0;i<accountentry.size();i++){
+                            DynamicObject dynamicObjects = accountentry.get(i);
+                            BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                            if(i>0){
+                                bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
+                            }
+                        }
+                        BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                        if(con1.compareTo(BigDecimal.ZERO) > 0){
+                            this.getModel().setValue("nckd_orireceiveamount",con1,0);
+                        }else {
+                            this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+                        }
+                    }
+                }
+            }else {
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection nckdClearloanentrys = this.getModel().getEntryEntity("nckd_clearloanentry");
+                for(int i=0;i<nckdClearloanentrys.size();i++){
+                    DynamicObject dynamicObject = nckdClearloanentrys.get(i);
+                    BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
+                    bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
+                }
+                if(bigDecimal1.compareTo(bigDecimal) == 1){
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+
+                    }
+                } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+                    }
+                }else {
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                        BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
+                        if(accountentry.size()==1){
+                            bigDecimal=bigDecimal.subtract(bigDecimal1);
+                            this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
+                        }else{
+                            BigDecimal bigDecimal3 = new BigDecimal(0);
+                            for(int i=0;i<accountentry.size();i++){
+                                DynamicObject dynamicObjects = accountentry.get(i);
+                                BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                                if(i>0){
+                                    bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
+                                }
+                            }
+
+                            BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                            con1=con1.subtract(bigDecimal1);
+                            if(con1.compareTo(BigDecimal.ZERO) > 0){
+                                this.getModel().setValue("nckd_orireceiveamount",con1,0);
+                            }else {
+                                this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        super.beforePropertyChanged(e);
+        String name = e.getProperty().getName();//获取字段标识
+        if ("tripstdshow".equals(name)) {
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            int rs =0;
+            for (ChangeData changeData : changeSet) {
+                rs++;
+                int rowIndex = changeData.getRowIndex();
+                Object newValue = changeData.getNewValue();
+                Object oldValue = changeData.getOldValue();
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
+                for(int i=0;i<nckdClearloanentry.size();i++){
+                    DynamicObject dynamicObject = nckdClearloanentry.get(i);
+                    BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
+                    bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
+                }
+                if(bigDecimal1.compareTo(bigDecimal) == 1){
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    if(accountentry==null){
+                        throw new KDBizException("收款明细分录为空,请维护!");
+                    }
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+
+                    }
+                } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    if(accountentry==null){
+                        throw new KDBizException("收款明细分录为空,请维护!");
+                    }
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+                    }
+                }else {
+                    DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                    if(accountentry==null){
+                        throw new KDBizException("收款明细分录为空,请维护!");
+                    }
+                    DynamicObject dynamicObject = accountentry.get(0);
+                    if(dynamicObject!=null){
+                        String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                        BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
+                        if(accountentry.size()==1){
+                            bigDecimal=bigDecimal.subtract(bigDecimal1);
+                            this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
+                        }else{
+                            BigDecimal bigDecimal3 = new BigDecimal(0);
+                            for(int i=0;i<accountentry.size();i++){
+                                DynamicObject dynamicObjects = accountentry.get(i);
+                                BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                                if(i>0){
+                                    bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
+                                }
+                            }
+
+                            BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                            con1=con1.subtract(bigDecimal1);
+                            if(con1.compareTo(BigDecimal.ZERO) > 0){
+                                this.getModel().setValue("nckd_orireceiveamount",con1,0);
+                            }else {
+                                this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
+                            }
+                        }
+
+
+                    }
+                }
+            }
+        }else if ("nckd_unexporiusedamount".equals(name)) {
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            int rs =0;
+            for (ChangeData changeData : changeSet) {
+                rs++;
+                int rowIndex = changeData.getRowIndex();
+                Object newValue = changeData.getNewValue();
+                Object oldValue = changeData.getOldValue();
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
+                if (nckdClearloanentry.isEmpty()) {
+                    this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                } else {
+                    for (int i = 0; i < nckdClearloanentry.size(); i++) {
+                        DynamicObject dynamicObject = nckdClearloanentry.get(i);
+                        BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
+                        bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
+                    }
+                    if (bigDecimal1.compareTo(bigDecimal) == 1) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+
+                        }
+                    } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                        }
+                    } else {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                            BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
+                            if (accountentry.size() == 1) {
+                                bigDecimal = bigDecimal.subtract(bigDecimal1);
+                                this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                            } else {
+                                BigDecimal bigDecimal3 = new BigDecimal(0);
+                                for (int i = 0; i < accountentry.size(); i++) {
+                                    DynamicObject dynamicObjects = accountentry.get(i);
+                                    BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                                    if (i > 0) {
+                                        bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
+                                    }
+                                }
+
+                                BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                                con1 = con1.subtract(bigDecimal1);
+                                if (con1.compareTo(BigDecimal.ZERO) > 0) {
+                                    this.getModel().setValue("nckd_orireceiveamount", con1, 0);
+                                } else {
+                                    this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                                }
+                            }
+
+
+                        }
+                    }
+                }
+            }
+        }else if ("orireceiveamount".equals(name)) {
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            int rs = 0;
+            for (ChangeData changeData : changeSet) {
+                rs++;
+                int rowIndex = changeData.getRowIndex();
+                Object newValue = changeData.getNewValue();
+                Object oldValue = changeData.getOldValue();
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
+                if (nckdClearloanentry.isEmpty()) {
+                    this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                } else {
+                    for (int i = 0; i < nckdClearloanentry.size(); i++) {
+                        DynamicObject dynamicObject = nckdClearloanentry.get(i);
+                        BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
+                        bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
+                    }
+                    if (bigDecimal1.compareTo(bigDecimal) == 1) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+
+                        }
+                    } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                        }
+                    } else {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                            BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
+                            if (accountentry.size() == 1) {
+                                bigDecimal = bigDecimal.subtract(bigDecimal1);
+                                this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                            } else {
+                                BigDecimal bigDecimal3 = new BigDecimal(0);
+                                for (int i = 0; i < accountentry.size(); i++) {
+                                    DynamicObject dynamicObjects = accountentry.get(i);
+                                    BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                                    if (i > 0) {
+                                        bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
+                                    }
+                                }
+
+                                BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                                con1 = con1.subtract(bigDecimal1);
+                                if (con1.compareTo(BigDecimal.ZERO) > 0) {
+                                    this.getModel().setValue("nckd_orireceiveamount", con1, 0);
+                                } else {
+                                    this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                                }
+                            }
+
+
+                        }
+                    }
+                }
+            }
+        } else if ("approveamount".equals(name)) {
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            int rs = 0;
+            for (ChangeData changeData : changeSet) {
+                rs++;
+                int rowIndex = changeData.getRowIndex();
+                Object newValue = changeData.getNewValue();
+                Object oldValue = changeData.getOldValue();
+                String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
+                BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
+                BigDecimal bigDecimal1 = new BigDecimal(0);
+                DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
+                if (nckdClearloanentry.isEmpty()) {
+                    this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                } else {
+                    for (int i = 0; i < nckdClearloanentry.size(); i++) {
+                        DynamicObject dynamicObject = nckdClearloanentry.get(i);
+                        BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
+                        bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
+                    }
+                    if (bigDecimal1.compareTo(bigDecimal) == 1) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+
+                        }
+                    } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                        }
+                    } else {
+                        DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
+                        if (accountentry == null) {
+                            throw new KDBizException("收款明细分录为空,请维护!");
+                        }
+                        DynamicObject dynamicObject = accountentry.get(0);
+                        if (dynamicObject != null) {
+                            String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
+                            BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
+                            if (accountentry.size() == 1) {
+                                bigDecimal = bigDecimal.subtract(bigDecimal1);
+                                this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
+                            } else {
+                                BigDecimal bigDecimal3 = new BigDecimal(0);
+                                for (int i = 0; i < accountentry.size(); i++) {
+                                    DynamicObject dynamicObjects = accountentry.get(i);
+                                    BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
+                                    if (i > 0) {
+                                        bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
+                                    }
+                                }
+
+                                BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
+                                con1 = con1.subtract(bigDecimal1);
+                                if (con1.compareTo(BigDecimal.ZERO) > 0) {
+                                    this.getModel().setValue("nckd_orireceiveamount", con1, 0);
+                                } else {
+                                    this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
+                                }
+                            }
+
+
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 1 - 0
src/main/java/fi/em/formPlugin/YwclF7ListtenerFromPlugin.java

@@ -88,6 +88,7 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
         fieldEdit19.addBeforeF7SelectListener(this);
         BasedataEdit fieldEdit20 = this.getView().getControl(nckd_orgvs);
         fieldEdit20.addBeforeF7SelectListener(this);
+
     }
 
     @Override

+ 22 - 9
src/main/java/fi/em/opplugin/ExpenseAccountFileOpPlugin.java

@@ -25,15 +25,28 @@ public class ExpenseAccountFileOpPlugin extends AbstractOperationServicePlugIn {
     public void endOperationTransaction(EndOperationTransactionArgs e) {
         super.endOperationTransaction(e);
         //获取当前操作单据数组
-        DynamicObject[] dynamicObjects = e.getDataEntities();
-        for (int i = 0; i < dynamicObjects.length; i++) {
-            JSONObject object = new JSONObject();
-            //当前单头数据包
-            DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-            BigDecimal reimburseamount = info.getBigDecimal("reimburseamount");
-            if(reimburseamount.compareTo(new BigDecimal(50000)) > -1){
-                this.operationResult.addErrorInfo(new ValidationErrorInfo("",info.getPkValue(),
-                        0,0,"err","billtitle",info.getString("billno")+"请关联出差申请单或上传线下审批单!", ErrorLevel.Error));
+        String operationKey = e.getOperationKey();
+        if(!"er_dailyreimbursebill".equals(operationKey)){
+            DynamicObject[] dynamicObjects = e.getDataEntities();
+            for (int i = 0; i < dynamicObjects.length; i++) {
+                JSONObject object = new JSONObject();
+                //当前单头数据包
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                BigDecimal reimburseamount = info.getBigDecimal("reimburseamount");
+                if(reimburseamount.compareTo(new BigDecimal(50000)) > -1){
+                    this.operationResult.addErrorInfo(new ValidationErrorInfo("",info.getPkValue(),
+                            0,0,"err","billtitle",info.getString("billno")+"请关联出差申请单或上传线下审批单!", ErrorLevel.Error));
+                }
+                BigDecimal nckdFukuanamountfield = info.getBigDecimal("nckd_fukuanamountfield");
+                DynamicObject dynamicObject = info.getDynamicObjectCollection("accountentry").get(0);
+                if(dynamicObject!=null){
+                    BigDecimal orireceiveamount = dynamicObject.getBigDecimal("orireceiveamount");
+                    if(orireceiveamount.compareTo(nckdFukuanamountfield) == 1){
+                        throw new KDBizException("收款明细分录第一行收款金额大于单头付款金额,请检查!");
+                    } else if (orireceiveamount.compareTo(nckdFukuanamountfield) == -1) {
+                        throw new KDBizException("收款明细分录第一行收款金额不等于单头付款金额,请检查!");
+                    }
+                }
             }
         }
     }

+ 24 - 0
src/main/java/fi/er/formPlugin/PublicreimburFormPlugin.java

@@ -1,10 +1,14 @@
 package fi.er.formPlugin;
 
+import com.alibaba.druid.util.StringUtils;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.sdk.plugin.Plugin;
 
+import java.math.BigDecimal;
+
 public class PublicreimburFormPlugin extends AbstractListPlugin implements Plugin {
     private final static String KEY_Card = "newassetentry";//资产信息分录增行
     @Override
@@ -16,6 +20,26 @@ public class PublicreimburFormPlugin extends AbstractListPlugin implements Plugi
             //赋值给资产信息的核算组织
             this.getModel().setValue("nckd_orgfield1", assetorg);
             this.getView().updateView("assetentry");
+        } else if ("newshareruleentry".equals(e.getOperateKey())) {
+            String sharemethod = (String) this.getModel().getValue("sharemethod");
+            if (StringUtils.equals(sharemethod, "avg")) {
+                DynamicObjectCollection expenseentryentity_rules = this.getModel().getEntryEntity("expenseentryentity_rule");
+                BigDecimal reimburseamount = (BigDecimal) this.getModel().getValue("reimburseamount");
+                BigDecimal nckd_ft_amount = reimburseamount.divide(BigDecimal.valueOf(expenseentryentity_rules.size()));
+                for (int i = 0; i < expenseentryentity_rules.size(); i++) {
+                    this.getModel().setValue("nckd_ft_amount", nckd_ft_amount, i);
+                }
+            }
+        } else if ("deleteshareruleentry".equals(e.getOperateKey())) {
+            String sharemethod = (String) this.getModel().getValue("sharemethod");
+            DynamicObjectCollection expenseentryentity_rules = this.getModel().getEntryEntity("expenseentryentity_rule");
+            if (StringUtils.equals(sharemethod, "avg") && expenseentryentity_rules.size() > 0) {
+                BigDecimal reimburseamount = (BigDecimal) this.getModel().getValue("reimburseamount");
+                BigDecimal nckd_ft_amount = reimburseamount.divide(BigDecimal.valueOf(expenseentryentity_rules.size()));
+                for (int i = 0; i < expenseentryentity_rules.size(); i++) {
+                    this.getModel().setValue("nckd_ft_amount", nckd_ft_amount, i);
+                }
+            }
         }
     }
 

+ 24 - 0
src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java

@@ -337,6 +337,30 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
                 BasedataProp basedataProp = (BasedataProp) basedataEdit.getProperty();
                 basedataProp.setMustInput(false);
             }
+        }else if (StringUtils.equals("sharerate_comrule", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            BigDecimal sharerate_comrule = (BigDecimal) changeData.getNewValue();
+            sharerate_comrule = sharerate_comrule.divide(BigDecimal.valueOf(100));
+            BigDecimal reimburseamount = (BigDecimal) this.getModel().getValue("reimburseamount");
+            BigDecimal ftAmount = reimburseamount.multiply(sharerate_comrule);
+            this.getModel().setValue("nckd_ft_amount", ftAmount);
+        }else if (StringUtils.equals("sharemethod", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            String sharemethod = (String) changeData.getNewValue();
+            DynamicObjectCollection expenseentryentity_rules = this.getModel().getEntryEntity("expenseentryentity_rule");
+            if (expenseentryentity_rules.size() > 0) {
+                if (StringUtils.equals(sharemethod, "rate")) {
+                    for (int i = 0; i < expenseentryentity_rules.size(); i++) {
+                        this.getModel().setValue("nckd_ft_amount", null, i);
+                    }
+                } else if (StringUtils.equals(sharemethod, "avg")) {
+                    BigDecimal reimburseamount = (BigDecimal) this.getModel().getValue("reimburseamount");
+                    BigDecimal nckd_ft_amount = reimburseamount.divide(BigDecimal.valueOf(expenseentryentity_rules.size()));
+                    for (int i = 0; i < expenseentryentity_rules.size(); i++) {
+                        this.getModel().setValue("nckd_ft_amount", nckd_ft_amount, i);
+                    }
+                }
+            }
         }
     }
 

+ 22 - 0
src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java

@@ -12,6 +12,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.List;
 
@@ -83,6 +84,27 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                     }
                 }
 
+                //分摊信息分录显示分摊金额
+                DynamicObjectCollection expenseentryentity_rules = info.getDynamicObjectCollection("expenseentryentity_rule");
+                int FtLength = expenseentryentity_rules.size();
+                if (FtLength > 0) {
+                    //报销金额
+                    BigDecimal reimburseamount = info.getBigDecimal("reimburseamount");
+                    //根据分摊方法计算分摊金额
+                    String sharemethod = info.getString("sharemethod");
+                    for (DynamicObject object : expenseentryentity_rules) {
+                        //分摊比例
+                        BigDecimal sharerate_comrule = object.getBigDecimal("sharerate_comrule").divide(BigDecimal.valueOf(100));
+                        if (StringUtils.equals(sharemethod, "rate")) {
+                            BigDecimal ftAmount = reimburseamount.multiply(sharerate_comrule);
+                            object.set("nckd_ft_amount", ftAmount);
+                        } else if (StringUtils.equals(sharemethod, "avg")) {
+                            BigDecimal ftAmount = reimburseamount.divide(BigDecimal.valueOf(FtLength),2, RoundingMode.HALF_UP);
+                            object.set("nckd_ft_amount", ftAmount);
+                        }
+                    }
+                }
+
                 //反写预付借款单
                 DynamicObjectCollection writeoffmoneys = info.getDynamicObjectCollection("writeoffmoney");
                 Boolean exist = QueryServiceHelper.exists(info.getDynamicObjectType().getName(),  info.getPkValue());

+ 28 - 6
src/main/java/sys/sc/formplugin/TestPlugin.java

@@ -309,8 +309,16 @@ public class TestPlugin  extends AbstractListPlugin {
                     }
                     //更新部门和岗位
                     DynamicObjectCollection existingDeptEntries = existingUser.getDynamicObjectCollection("entryentity");
-                    //人员部门分录
-                    DynamicObject existingDeptEntry = existingDeptEntries.isEmpty() ? null : existingDeptEntries.get(0);
+                    DynamicObject existingDeptEntry =null;
+                    for (DynamicObject dep:existingDeptEntries) {
+                        //改变分录不是兼职的分录数据
+                        if (!dep.getBoolean("ispartjob")){
+                            //人员部门分录
+                            existingDeptEntry = dep;
+                        }
+                    }
+//                    //人员部门分录
+//                    DynamicObject existingDeptEntry = existingDeptEntries.isEmpty() ? null : existingDeptEntries.get(0);
                     // 获取新的部门信息
                     String deptCode = personData.getString("nckd_orgidcode");
                     DynamicObject newOrgInfo = BusinessDataServiceHelper.loadSingle(
@@ -355,6 +363,11 @@ public class TestPlugin  extends AbstractListPlugin {
                         existingDeptEntry.set("position", postName);
                         isUpdated = true;
                     }
+                    //如果职位为空,则赋值无
+                    if ("".equals(existingDeptEntry.getString("position"))) {
+                        existingDeptEntry.set("position", "无");
+                        isUpdated = true;
+                    }
                     // 如果有更新则保存
                     if (isUpdated) {
                         SaveServiceHelper.save(new DynamicObject[]{existingUser});
@@ -423,11 +436,20 @@ public class TestPlugin  extends AbstractListPlugin {
                             this.getView().showMessage("部门编码为 " + deptCode + " 的部门缺少组织结构信息,跳过该记录。");
                         }
                     }
-                    String postName = personData.getString("nckd_posidname");;
-                    bumeninfo.set("position", postName);
+                    String postName = personData.getString("nckd_posidname");
+                    if ("".equals(postName)) {
+                        bumeninfo.set("position", "无");
+                    }else {
+                        bumeninfo.set("position", postName);
+                    }
                     //所在岗位名称
-                    String positionnumber = personData.getString("nckd_posidname");;
-                    bumeninfo.set("post", positionnumber);
+                    String positionnumber = personData.getString("nckd_posidname");
+                    if ("".equals(positionnumber)) {
+                        bumeninfo.set("post", "无");
+                    }else {
+                        bumeninfo.set("post", positionnumber);
+                    }
+
                     // 保存新用户信息
                     SaveServiceHelper.save(new DynamicObject[]{userinfo});
                     msg+="工号为 " + gonghao + " 的用户已创建!";

+ 22 - 0
src/main/java/sys/sc/formplugin/TreeListPlugin.java

@@ -0,0 +1,22 @@
+package sys.sc.formplugin;
+
+
+import kd.bos.form.control.events.RefreshNodeEvent;
+import kd.bos.list.plugin.StandardTreeListPlugin;
+import kd.bos.mvc.list.TreeListModel;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * @author cjz
+ * @date 2024/11/12 10:46
+ * @description:组织基础资料排序
+ */
+public class TreeListPlugin extends StandardTreeListPlugin implements Plugin {
+
+    @Override
+    public void refreshNode(RefreshNodeEvent e){
+        super.refreshNode(e);
+        TreeListModel treeListModel=(TreeListModel) this.getTreeModel();
+        treeListModel.getQueryParas().put("order","number asc");
+    }
+}

+ 21 - 1
src/main/java/sys/sc/task/UpdateDataDailyTask.java

@@ -349,8 +349,16 @@ public class UpdateDataDailyTask extends AbstractTask {
                 }
                 //更新部门和岗位
                 DynamicObjectCollection existingDeptEntries = existingUser.getDynamicObjectCollection("entryentity");
+                DynamicObject existingDeptEntry =null;
+                for (DynamicObject dep:existingDeptEntries) {
+                    //改变分录不是兼职的分录数据
+                    if (!dep.getBoolean("ispartjob")){
+                        //人员部门分录
+                        existingDeptEntry = dep;
+                    }
+                }
                 //人员部门分录
-                DynamicObject existingDeptEntry = existingDeptEntries.isEmpty() ? null : existingDeptEntries.get(0);
+//                DynamicObject existingDeptEntry = existingDeptEntries.isEmpty() ? null : existingDeptEntries.get(0);
                 // 获取新的部门信息
                 String deptCode = personData.getString("nckd_orgidcode");
                 DynamicObject newOrgInfo = BusinessDataServiceHelper.loadSingle(
@@ -400,6 +408,11 @@ public class UpdateDataDailyTask extends AbstractTask {
                     existingDeptEntry.set("position", postName);
                     isUpdated = true;
                 }
+                //如果职位为空,则赋值无
+                if ("".equals(existingDeptEntry.getString("position"))) {
+                    existingDeptEntry.set("position", "无");
+                    isUpdated = true;
+                }
                 // 如果有更新则保存
                 if (isUpdated) {
                     SaveServiceHelper.save(new DynamicObject[]{existingUser});
@@ -479,6 +492,13 @@ public class UpdateDataDailyTask extends AbstractTask {
                 }else {
                     bumeninfo.set("position", postName);
                 }
+                //所在岗位名称
+                String positionnumber = personData.getString("nckd_posidname");
+                if ("".equals(positionnumber)) {
+                    bumeninfo.set("post", "无");
+                }else {
+                    bumeninfo.set("post", positionnumber);
+                }
                 // 保存新用户信息
                 SaveServiceHelper.save(new DynamicObject[]{userinfo});
                 msg+="工号为 " + gonghao + " 的用户已创建!";