Browse Source

Merge remote-tracking branch 'origin/master'

zhouger 8 months ago
parent
commit
56ca77885e

+ 58 - 92
src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java

@@ -1,11 +1,8 @@
 package fi.er.opplugin;
 
 import com.alibaba.druid.util.StringUtils;
-import com.alibaba.fastjson.JSONObject;
-import com.grapecity.documents.excel.B;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.serialization.SerializationUtils;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.field.RefBillEdit;
@@ -16,8 +13,6 @@ import kd.bos.list.ListShowParameter;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
-import scala.Int;
-
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
@@ -73,73 +68,41 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
         if (StringUtils.equals("nckd_real_card", fieldKey)){
             ChangeData changeData = e.getChangeSet()[0];
             DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) changeData.getNewValue();
-            List<Long> ids = new ArrayList<>();
-            Integer index = 0;
-            for(DynamicObject  object : dynamicObjectCollection) {
-                Long id = (Long) object.get(2);
-                ids.add(id);
+            int parentIndex = changeData.getRowIndex();
+            this.getModel().deleteEntryData("nckd_realcard_list2");
+            for (int i = 0; i < dynamicObjectCollection.size(); i++) {
+                DynamicObject object = dynamicObjectCollection.get(i);
                 this.getModel().setValue("nckd_card_list_str","1");
-            }
-           //查询实物卡片清单
-            QFilter filter = new QFilter("id", QCP.in,ids);
-            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-            if (dynamicObjects.length > 0) {
-                this.getModel().deleteEntryData("nckd_realcard_list");
-                for (int i = 0; i < dynamicObjects.length; i++) {
-                    DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                    String number = info.getString("number");//资产编码
-                    String name = info.getString("name");//资产名称
-                    String nckd_card_type = info.getString("nckd_card_type");//资产类别
-                    String nckd_card_status = info.getString("nckd_card_status");//资产状态
-                    DynamicObject nckd_orgfield = info.getDynamicObject("nckd_orgfield");//归属机构
-                    DynamicObject nckd_dept = info.getDynamicObject("nckd_dept");//归属部门
-                    String nckd_use_name = info.getString("nckd_use_name");//使用人
-                    Date nckd_start_date = info.getDate("nckd_start_date");//开始使用日期
-                    String nckd_local = info.getString("nckd_local");//存放地点
-                    String nckd_card_brand = info.getString("nckd_card_brand");//品牌
-                    String nckd_card_model = info.getString("nckd_card_model");//型号
-                    String nckd_serial_number = info.getString("nckd_serial_number");//序列号
-
-                    //实物卡片清单分录赋值
-                    int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list");
-
-                    this.getModel().setValue("nckd_card_code",number,rowIndex);
-                    this.getModel().setValue("nckd_card_name",name,rowIndex);
-                    this.getModel().setValue("nckd_card_type",nckd_card_type,rowIndex);
-                    this.getModel().setValue("nckd_card_status",nckd_card_status,rowIndex);
-                    this.getModel().setValue("nckd_orgfield",nckd_orgfield,rowIndex);
-                    this.getModel().setValue("nckd_dept",nckd_dept,rowIndex);
-                    this.getModel().setValue("nckd_use_name",nckd_use_name,rowIndex);
-                    this.getModel().setValue("nckd_start_date",nckd_start_date,rowIndex);
-                    this.getModel().setValue("nckd_local",nckd_local,rowIndex);
-                    this.getModel().setValue("nckd_card_brand",nckd_card_brand,rowIndex);
-                    this.getModel().setValue("nckd_card_model",nckd_card_model,rowIndex);
-                    this.getModel().setValue("nckd_serial_number",nckd_serial_number,rowIndex);
-
-                    if (index.equals(0)) {
-                        //资产信息分录赋值
-                        this.getModel().setValue("asset_name",name);
-                        //资产类别赋值
-                        //规格型号
-                        this.getModel().setValue("asset_model",nckd_card_model);
-                        //使用部门
-                        this.getModel().setValue("asset_costdept",nckd_dept);
-                        //使用人
-                        //根据姓名name查询用户,工号是number
-                        QFilter userFilter = new QFilter("name", QCP.equals,nckd_use_name);
-                        DynamicObject[] userDynamicObjects = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {userFilter});
-                        for (int d=0;d<userDynamicObjects.length;d++) {
-                            DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(userDynamicObjects[i].getPkValue(), userDynamicObjects[i].getDynamicObjectType().getName());
-                            this.getModel().setValue("asset_user",userInfo);
-                        }
-                        //存放地点
+                //实物卡片清单分录赋值
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list");
+                int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list2");
+                this.getModel().setValue("nckd_card_code2",cardInfo,rowIndex,parentIndex);
+                if (i == 0) {
+                    String name = cardInfo.getString("name");//资产名称
+                    DynamicObject nckd_dept = cardInfo.getDynamicObject("nckd_dept");//归属部门
+                    String nckd_use_name = cardInfo.getString("nckd_use_name");//使用人
+                    String nckd_local = cardInfo.getString("nckd_local");//存放地点
+                    String nckd_card_model = cardInfo.getString("nckd_card_model");//型号
+                    //资产信息分录赋值
+                    this.getModel().setValue("asset_name", name, parentIndex);
+                    //资产类别赋值
+                    //规格型号
+                    this.getModel().setValue("asset_model",nckd_card_model, parentIndex);
+                    //使用部门
+                    this.getModel().setValue("asset_costdept",nckd_dept, parentIndex);
+                    //使用人
+                    QFilter userFilter = new QFilter("number", QCP.equals,nckd_use_name);
+                    DynamicObject[] userDynamicObjects = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {userFilter});
+                    for (int d=0;d<userDynamicObjects.length;d++) {
+                        DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(userDynamicObjects[i].getPkValue(), userDynamicObjects[i].getDynamicObjectType().getName());
+                        this.getModel().setValue("asset_user",userInfo, parentIndex);
                     }
-                    index++;
+                    //存放地点
+                    this.getModel().setValue("nckd_storeplace",nckd_local, parentIndex);
                 }
-                //刷新实物卡片清单分录
-                this.getView().updateView("nckd_realcard_list");
-                this.getView().updateView("assetentry");
             }
+            //刷新实物卡片清单分录
+            this.getView().updateView("assetentry");
         } else if (StringUtils.equals("nckd_apfinapbill", fieldKey)) {
             ChangeData changeData = e.getChangeSet()[0];
             DynamicObject dynamicObject = (DynamicObject) changeData.getNewValue();
@@ -209,29 +172,32 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
             //刷新资产信息分录
             this.getView().updateView("assetentry");
         } else if (StringUtils.equals("expenseamount", fieldKey) || StringUtils.equals("nckd_amountfield3", fieldKey)) {
-            ChangeData changeData = e.getChangeSet()[0];
-            BigDecimal expenseamount = (BigDecimal) changeData.getNewValue();
-            this.getModel().setValue("nckd_amountfield3", expenseamount);//含税单价
-
-            //含税金额 = 含税单价*数量
-            BigDecimal asset_quantity = (BigDecimal) this.getModel().getValue("asset_quantity");
-            BigDecimal assetexpenseamount = expenseamount.multiply(asset_quantity);
-            this.getModel().setValue("assetexpenseamount", assetexpenseamount);
-
-            //不含税单价 = 含税单价/(1+税率)
-            BigDecimal assettaxrate = (BigDecimal) this.getModel().getValue("assettaxrate");
-            assettaxrate = assettaxrate.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
-            BigDecimal rate = assettaxrate.add(BigDecimal.ONE);
-            BigDecimal assetpricewithouttax = expenseamount.divide(rate, 2 , RoundingMode.HALF_UP);
-            this.getModel().setValue("assetpricewithouttax", assetpricewithouttax);
-
-            //不含税金额 = 不含税单价*数量
-            BigDecimal assetorientryamount = assetpricewithouttax.multiply(asset_quantity);
-            this.getModel().setValue("assetorientryamount", assetorientryamount);
-
-            //税额 = 含税金额-不含税金额
-            BigDecimal assettaxamount = assetexpenseamount.subtract(assetorientryamount);
-            this.getModel().setValue("assettaxamount", assettaxamount);
+            String reimbursetype = (String) this.getModel().getValue("reimbursetype");
+            if("asset".equals(reimbursetype)) {
+                ChangeData changeData = e.getChangeSet()[0];
+                BigDecimal expenseamount = (BigDecimal) changeData.getNewValue();
+                this.getModel().setValue("nckd_amountfield3", expenseamount);//含税单价
+
+                //含税金额 = 含税单价*数量
+                BigDecimal asset_quantity = (BigDecimal) this.getModel().getValue("asset_quantity");
+                BigDecimal assetexpenseamount = expenseamount.multiply(asset_quantity);
+                this.getModel().setValue("assetexpenseamount", assetexpenseamount);
+
+                //不含税单价 = 含税单价/(1+税率)
+                BigDecimal assettaxrate = (BigDecimal) this.getModel().getValue("assettaxrate");
+                assettaxrate = assettaxrate.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
+                BigDecimal rate = assettaxrate.add(BigDecimal.ONE);
+                BigDecimal assetpricewithouttax = expenseamount.divide(rate, 2 , RoundingMode.HALF_UP);
+                this.getModel().setValue("assetpricewithouttax", assetpricewithouttax);
+
+                //不含税金额 = 不含税单价*数量
+                BigDecimal assetorientryamount = assetpricewithouttax.multiply(asset_quantity);
+                this.getModel().setValue("assetorientryamount", assetorientryamount);
+
+                //税额 = 含税金额-不含税金额
+                BigDecimal assettaxamount = assetexpenseamount.subtract(assetorientryamount);
+                this.getModel().setValue("assettaxamount", assettaxamount);
+            }
         } else if (StringUtils.equals("taxrate", fieldKey) || StringUtils.equals("assettaxrate", fieldKey)) {
             ChangeData changeData = e.getChangeSet()[0];
             BigDecimal assettaxrate = (BigDecimal) changeData.getNewValue();
@@ -263,6 +229,7 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
     public void afterCreateNewData(EventObject e) {
         //报账类型
         String reimbursetype = (String) this.getModel().getValue("reimbursetype");
+        int rowIndex = this.getModel().createNewEntryRow("assetentry");
         if("asset".equals(reimbursetype)){
             //获取费用明细分录
             DynamicObjectCollection assetentry = this.getModel().getEntryEntity("expenseentryentity");
@@ -271,7 +238,6 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
             DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("er_expenseitemedit","id",new QFilter[] {filter});
             DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
             this.getModel().setValue("expenseitem", info, 0);
-            int rowIndex = this.getModel().createNewEntryRow("assetentry");
         }
     }
 

+ 0 - 1
src/main/java/fi/fa/opplugin/AssetMidBillOpPlugin.java

@@ -14,7 +14,6 @@ import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.OperationServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
-import org.apache.commons.lang3.ObjectUtils;
 import java.util.List;
 
 //资产调出单中间表下推资产调出单

+ 28 - 0
src/main/java/fi/fa/opplugin/RealCardF7OpPlugin.java

@@ -0,0 +1,28 @@
+package fi.fa.opplugin;
+
+import com.alibaba.druid.util.StringUtils;
+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.form.plugin.AbstractFormPlugin;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+//实物卡片关联e管家实物卡片清单插件
+public class RealCardF7OpPlugin extends AbstractFormPlugin {
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        String fieldKey = e.getProperty().getName();
+        if (StringUtils.equals("nckd_real_card", fieldKey)) {
+            ChangeData changeData = e.getChangeSet()[0];
+            DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) changeData.getNewValue();
+            this.getModel().deleteEntryData("nckd_realcard_list");
+            for (DynamicObject object : dynamicObjectCollection) {
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list");
+                int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list");
+                this.getModel().setValue("nckd_card_code21", cardInfo, rowIndex);
+            }
+            this.getView().updateView("nckd_realcard_list");
+        }
+    }
+}

+ 43 - 4
src/main/java/kd/imc/rim/utils/FileOutputStreamExample.java

@@ -1,9 +1,8 @@
 package kd.imc.rim.utils;
 
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import kd.bos.url.UrlService;
+
+import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.Base64;
@@ -76,4 +75,44 @@ public class FileOutputStreamExample {
         // 对字节数组Base64编码
         return Base64.getEncoder().encodeToString(buffer);
     }
+
+    public static File getNetUrlHttp(String netUrl) {
+       // UrlService.getAttachmentFullUrl(netUrl);
+        //对本地文件命名
+        File file = null;
+        URL urlfile;
+        InputStream inStream = null;
+        OutputStream os = null;
+        try {
+            file = File.createTempFile("net_url", netUrl);
+            //下载
+            urlfile = new URL(netUrl);
+            inStream = urlfile.openStream();
+            os = new FileOutputStream(file);
+
+            int bytesRead = 0;
+            byte[] buffer = new byte[8192];
+            while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+        } catch (Exception e) {
+            log.error("远程图片获取错误:"+netUrl);
+            e.printStackTrace();
+        } finally {
+            try {
+                if (null != os) {
+                    os.close();
+                }
+                if (null != inStream) {
+                    inStream.close();
+                }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        return file;
+    }
+
 }