Browse Source

Merge remote-tracking branch 'origin/master'

xuhao 5 months ago
parent
commit
1c84f6f969

+ 0 - 22
src/main/java/fi/ar/formplugin/AcctageForm.java

@@ -1,50 +1,28 @@
 package fi.ar.formplugin;
 package fi.ar.formplugin;
 
 
 
 
-import kd.bos.dataentity.serialization.SerializationUtils;
-import kd.bos.dataentity.utils.ObjectUtils;
 import kd.bos.dataentity.utils.StringUtils;
 import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.entity.filter.FilterValue;
 import kd.bos.report.plugin.*;
 import kd.bos.report.plugin.*;
 import kd.bos.context.*;
 import kd.bos.context.*;
-import kd.fi.arapcommon.report.acctagev2.AcctageParam;
-import org.apache.commons.lang.*;
 import kd.bos.dataentity.resource.*;
 import kd.bos.dataentity.resource.*;
 import kd.bos.entity.*;
 import kd.bos.entity.*;
 import kd.bos.form.field.*;
 import kd.bos.form.field.*;
-import kd.bos.form.control.*;
 import java.util.List;
 import java.util.List;
 import java.util.stream.*;
 import java.util.stream.*;
 import kd.bplat.scmc.report.conf.*;
 import kd.bplat.scmc.report.conf.*;
-import kd.bos.entity.datamodel.events.*;
-import kd.bplat.scmc.report.core.*;
-import kd.bos.dataentity.utils.*;
 import kd.bos.dataentity.entity.*;
 import kd.bos.dataentity.entity.*;
-import kd.fi.arapcommon.report.acctage.*;
-import kd.bos.dataentity.serialization.*;
 import kd.bos.orm.query.*;
 import kd.bos.orm.query.*;
-import kd.bos.servicehelper.*;
-import com.alibaba.fastjson.*;
 import kd.fi.arapcommon.helper.*;
 import kd.fi.arapcommon.helper.*;
-import kd.fi.arapcommon.report.*;
 import kd.fi.arapcommon.util.*;
 import kd.fi.arapcommon.util.*;
-import kd.bos.servicehelper.basedata.*;
 import kd.bos.bill.*;
 import kd.bos.bill.*;
 import kd.bos.report.*;
 import kd.bos.report.*;
 import kd.bos.entity.report.*;
 import kd.bos.entity.report.*;
 import java.util.*;
 import java.util.*;
-import java.util.function.*;
 import kd.bos.dataentity.metadata.*;
 import kd.bos.dataentity.metadata.*;
 import kd.bos.entity.property.*;
 import kd.bos.entity.property.*;
-import kd.bos.entity.filter.*;
-import kd.bos.report.filter.*;
-import kd.bos.dataentity.metadata.clr.*;
-import kd.bos.form.container.*;
 import kd.bos.form.*;
 import kd.bos.form.*;
 import kd.bos.list.*;
 import kd.bos.list.*;
 import kd.bos.form.events.*;
 import kd.bos.form.events.*;
-import kd.bos.entity.datamodel.*;
-import kd.bos.form.field.events.*;
 
 
 /**
 /**
  * @author cjz
  * @author cjz

+ 0 - 4
src/main/java/fi/cas/formplugin/AgpaybillButPlugin.java

@@ -26,8 +26,6 @@ public class AgpaybillButPlugin extends AbstractFormPlugin implements Plugin {
         this.getView().setVisible(false,"nckd_cxzf");
         this.getView().setVisible(false,"nckd_cxzf");
         //设置支付关闭按钮不可见
         //设置支付关闭按钮不可见
         this.getView().setVisible(false,"nckd_payclose");
         this.getView().setVisible(false,"nckd_payclose");
-
-
         //获取当前单据
         //获取当前单据
         DynamicObject dynamicObject=this.getModel().getDataEntity(true);
         DynamicObject dynamicObject=this.getModel().getDataEntity(true);
         //单据状态
         //单据状态
@@ -52,8 +50,6 @@ public class AgpaybillButPlugin extends AbstractFormPlugin implements Plugin {
         if ("B".equals(paystatus)&&"B".equals(nckdHxzt)||"A".equals(nckdHxzt)) {
         if ("B".equals(paystatus)&&"B".equals(nckdHxzt)||"A".equals(nckdHxzt)) {
             this.getView().setVisible(true,"nckd_payclose");
             this.getView().setVisible(true,"nckd_payclose");
         }
         }
-
-
     }
     }
 
 
 }
 }

+ 50 - 0
src/main/java/fi/em/formPlugin/BusinessPdF7FormPlugin.java

@@ -0,0 +1,50 @@
+package fi.em.formPlugin;
+
+import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.field.BasedataEdit;
+import kd.bos.form.field.events.BeforeF7SelectEvent;
+import kd.bos.form.field.events.BeforeF7SelectListener;
+import kd.bos.list.ListShowParameter;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.sdk.plugin.Plugin;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.List;
+
+public class BusinessPdF7FormPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        // 侦听基础资料字段的事件
+        BasedataEdit fieldEdit = this.getView().getControl("nckd_basedatafield18");
+        fieldEdit.addBeforeF7SelectListener(this);
+    }
+
+    @Override
+    public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
+        String fieldKey = beforeF7SelectEvent.getProperty().getName();
+        if (StringUtils.equals(fieldKey, "nckd_basedatafield18")){
+            List<String> numberList = new ArrayList<>();
+            DynamicObjectCollection dynamicObjectCollections = this.getModel().getEntryEntity("nckd_entryentity61121");
+            for (DynamicObject dynamicObject : dynamicObjectCollections) {
+                DynamicObject fin = dynamicObject.getDynamicObject("nckd_basedatafield18");
+                if (fin != null) {
+                    String number = fin.getString("number");
+                    numberList.add(number);
+                }
+            }
+            if (numberList.size() > 0) {
+                QFilter qFilter = new QFilter("number", QCP.not_in, numberList);
+                // 表过滤条件
+                ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
+                showParameter.setShowApproved(false);
+                showParameter.getListFilterParameter().setFilter(qFilter);
+            }
+        }
+    }
+}

+ 39 - 0
src/main/java/fi/em/formPlugin/BusinessProcessingSplitPlugin.java

@@ -1,13 +1,20 @@
 package fi.em.formPlugin;
 package fi.em.formPlugin;
 
 
 import com.alibaba.druid.util.StringUtils;
 import com.alibaba.druid.util.StringUtils;
+import com.alibaba.dubbo.common.utils.CollectionUtils;
+import com.alibaba.fastjson.JSONObject;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.datamodel.events.BeforeImportEntryEventArgs;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.form.plugin.importentry.resolving.ImportEntryData;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import java.util.*;
+
 
 
 public class BusinessProcessingSplitPlugin extends AbstractFormPlugin {
 public class BusinessProcessingSplitPlugin extends AbstractFormPlugin {
 
 
@@ -42,4 +49,36 @@ public class BusinessProcessingSplitPlugin extends AbstractFormPlugin {
             }
             }
         }
         }
     }
     }
+
+    @Override
+    public void beforeImportEntry(BeforeImportEntryEventArgs e) {
+        Map source = (Map) e.getSource();
+        Set<Map.Entry<String, List<ImportEntryData>>> entries = source.entrySet();
+        for (Map.Entry<String, List<ImportEntryData>> entry : entries) {
+            String entryName = entry.getKey();
+            if (StringUtils.equals(entryName, "nckd_entryentity61121")) {
+                List<ImportEntryData> entryEntityImportDataList = entry.getValue();
+                if (CollectionUtils.isEmpty(entryEntityImportDataList)) {
+                    return;
+                }
+
+                DynamicObjectCollection nckd_entryentity61121s =  this.getModel().getEntryEntity("nckd_entryentity61121");
+                Map<String, DynamicObject> entryMap = new HashMap<>();
+                for (DynamicObject dynamicObject : nckd_entryentity61121s) {
+                    entryMap.put(dynamicObject.getDynamicObject("nckd_basedatafield18").getString("number"), dynamicObject);
+                }
+
+                Iterator<ImportEntryData> iterator = entryEntityImportDataList.iterator();
+                while (iterator.hasNext()) {
+                    ImportEntryData entryData = iterator.next();
+                    JSONObject jsonObject =  entryData.getData();
+                    String importNumber = jsonObject.getJSONObject("nckd_basedatafield18").getString("number");
+                    DynamicObject dynamicObject = entryMap.get(importNumber);
+                    if (dynamicObject != null){
+                        nckd_entryentity61121s.remove(dynamicObject);
+                    }
+                }
+            }
+        }
+    }
 }
 }

+ 62 - 0
src/main/java/fi/em/formPlugin/SalaryDownloadFilePlugin.java

@@ -0,0 +1,62 @@
+package fi.em.formPlugin;
+
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+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;
+
+/**
+ * @author cjz
+ * @date 2024/11/7 20:35
+ * @description:点击按钮下载对应薪酬计提分录模板文件
+ */
+public class SalaryDownloadFilePlugin extends AbstractFormPlugin {
+
+    //获取文件上传接口配置信息
+    public InterFaceImgUtils interFaceImgUtils=new InterFaceImgUtils("downloadurl");
+    //端口号
+    int port= interFaceImgUtils.getPort();
+    //服务器地址
+    String serverurl= interFaceImgUtils.getServerName();
+    //用户
+    String user= interFaceImgUtils.getServerUser();
+    //密码
+    String password= interFaceImgUtils.getServerPassword();
+    //文件名
+    String filename= interFaceImgUtils.getFileName();
+    //获取文件路径
+    String fileurl= interFaceImgUtils.getServerUrl();
+
+    //获取sftp链接对象
+    public SftpClient sftpClient=new SftpClient(serverurl,user,password,port);
+
+    //点击按钮下载文件
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs arg){
+        super.afterDoOperation(arg);
+        String operateKey = arg.getOperateKey();
+        //审核操作代码
+        String downloadBut="download";
+        if (downloadBut.equals(operateKey)) {
+            //获取桌面路径
+            String path ="C:/Users";
+            try {
+                //获取服务器链接
+                sftpClient.connect();
+                File file=new File(path+File.separator+"模板文件.xls");
+                FileUtils.copyInputStreamToFile(sftpClient.downloadFile(fileurl+ File.separator+filename),file);
+                sftpClient.disconnect();
+                this.getView().showMessage("文件生成成功,文件位置为:"+path);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+
+        }
+
+    }
+
+}

+ 73 - 0
src/main/java/fi/em/formPlugin/TravelTotalPlugin.java

@@ -0,0 +1,73 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.AbstractOperate;
+import kd.bos.form.plugin.AbstractFormPlugin;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * @author cjz
+ * @date 2024/11/7 15:45
+ * @description:差旅汇总分录计算
+ */
+public class TravelTotalPlugin extends AbstractFormPlugin {
+
+    private static String bar_save="save";//保存标识
+    private static String entryentity="nckd_entryentity";//差旅汇总标识
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        AbstractOperate op = (AbstractOperate)args.getSource();
+        String operateKey = op.getOperateKey();
+        //获取当前单据
+        DynamicObject dynamicObject=this.getModel().getDataEntity(true);
+        //差旅汇总分录
+        DynamicObjectCollection nckd_entryentity=dynamicObject.getDynamicObjectCollection(entryentity);
+        //汇总map
+        Map<DynamicObject,BigDecimal> allMap=new HashMap<>();
+        if (bar_save.equals(operateKey)) {
+            //获取行程信息
+            DynamicObjectCollection dynamicObjectCollection=dynamicObject.getDynamicObjectCollection("tripentry");
+            //子卡片分录信息
+            for (DynamicObject item:dynamicObjectCollection) {
+                for (DynamicObject entry:item.getDynamicObjectCollection("entryentity")) {
+                    //差旅项目获取
+                    DynamicObject expenseitem=entry.getDynamicObject("expenseitem");
+                    //报销金额获取
+                    BigDecimal orientryamount=entry.getBigDecimal("orientryamount");
+                    //差旅项目不存在则加进map
+                    if (!allMap.containsKey(expenseitem)) {
+                        allMap.put(expenseitem,orientryamount);
+                    }else {
+                        //存在则对该项目进行累加
+                        BigDecimal account = allMap.get(expenseitem);
+                        account=account.add(orientryamount);
+                        allMap.put(expenseitem,account);
+                    }
+                }
+            }
+            Iterator<Map.Entry<DynamicObject, BigDecimal>> iter = allMap.entrySet().iterator();
+            //清空分录
+            this.getModel().deleteEntryData(entryentity);
+            //遍历汇总map
+            while (iter.hasNext()) {
+                Map.Entry<DynamicObject, BigDecimal> entry = iter.next();
+                //新增动态单据分录行
+                int rowIndex = this.getModel().createNewEntryRow(entryentity);
+                this.getModel().setValue("nckd_travelitem",entry.getKey(),rowIndex);
+                this.getModel().setValue("nckd_oriamount",entry.getValue(),rowIndex);
+                this.getModel().setValue("nckd_triamount",entry.getValue(),rowIndex);
+            }
+            //刷新分录
+            this.getView().updateView("nckd_entryentity");
+        }
+    }
+}

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

@@ -5,6 +5,8 @@ import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.entity.property.BasedataProp;
+import kd.bos.form.field.BasedataEdit;
 import kd.bos.form.field.MulBasedataEdit;
 import kd.bos.form.field.MulBasedataEdit;
 import kd.bos.form.field.RefBillEdit;
 import kd.bos.form.field.RefBillEdit;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
@@ -326,6 +328,15 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
                 this.getView().updateView("nckd_ap_finapbill_detail");
                 this.getView().updateView("nckd_ap_finapbill_detail");
                 this.getView().updateView("assetentry");
                 this.getView().updateView("assetentry");
             }
             }
+        }else if (StringUtils.equals("isbeforeshare", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            Boolean isbeforeshare = (Boolean) changeData.getNewValue();
+            if (isbeforeshare) {
+                BasedataEdit basedataEdit = this.getControl("entrycostdept_orgrule");
+                basedataEdit.setMustInput(false);
+                BasedataProp basedataProp = (BasedataProp) basedataEdit.getProperty();
+                basedataProp.setMustInput(false);
+            }
         }
         }
     }
     }
 
 

+ 35 - 0
src/main/java/kd/bos/utils/SetCuFilterListPlugin.java

@@ -0,0 +1,35 @@
+package kd.bos.utils;
+
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.form.events.SetFilterEvent;
+import kd.bos.list.ListShowParameter;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 通用列表插件
+ * 2024-11-07 wangj
+ * 主要功能:增加列表过滤登录用户只能查看创建人为自己的数据
+ */
+public class SetCuFilterListPlugin extends AbstractListPlugin {
+    @Override
+    public void setFilter(SetFilterEvent e) {
+        super.setFilter(e);
+        ListShowParameter param = (ListShowParameter) this.getView().getFormShowParameter();
+        if(param.getCustomParam("isopencufilter")!=null){
+            String isopencufilter = param.getCustomParam("isopencufilter");
+            if("true".equals(isopencufilter)){
+                Long userId = Long.valueOf(RequestContext.get().getUserId());
+                List<QFilter> qFilters = new ArrayList<>();
+                qFilters.add(new QFilter("creator",  QCP.equals, userId));
+                e.setCustomQFilters(qFilters);
+            }
+        }
+    }
+}

+ 6 - 0
src/main/java/sys/sc/opplugin/utils/SftpClient.java

@@ -9,6 +9,7 @@ import com.jcraft.jsch.ChannelSftp;
 import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.Session;
 import com.jcraft.jsch.Session;
 import com.jcraft.jsch.SftpException;
 import com.jcraft.jsch.SftpException;
+import org.apache.commons.io.IOUtils;
 
 
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.IOException;
@@ -64,6 +65,11 @@ public class SftpClient {
         }
         }
     }
     }
 
 
+    //下载文件到桌面
+    public InputStream downloadFile(String url) throws SftpException {
+        return   sftpChannel.get(url);
+    }
+
     public ChannelSftp getSftpChannel() {
     public ChannelSftp getSftpChannel() {
         return sftpChannel;
         return sftpChannel;
     }
     }