Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

wanwei 8 luni în urmă
părinte
comite
1f82579d41

+ 52 - 43
src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java

@@ -8,10 +8,13 @@ import kd.bos.form.ConfirmCallBackListener;
 import kd.bos.form.ConfirmTypes;
 import kd.bos.form.MessageBoxOptions;
 import kd.bos.form.MessageBoxResult;
+import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.events.MessageBoxClosedEvent;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.sdk.plugin.Plugin;
 
 import java.util.ArrayList;
@@ -49,67 +52,35 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
                 this.getView().setVisible(false,item);
             }
             //清空所有分录
-            //一般员工分录
-            this.getModel().deleteEntryData("nckd_staffentry");
-            //内退分录
-            this.getModel().deleteEntryData("nckd_earlyretiredentry");
-            //退休分录
-            this.getModel().deleteEntryData("nckd_retireentry");
-            //人力薪酬分录
-            this.getModel().deleteEntryData("nckd_salaryentry");
+            clearEntryData("");
         }
         //薪酬明细(一般员工)分录
         if (Viewflag.equals(nckd_generalemployees)) {
             for (String item:viewList) {
                 this.getView().setVisible(false,item);
             }
-            //内退分录
-            this.getModel().deleteEntryData("nckd_earlyretiredentry");
-            //退休分录
-            this.getModel().deleteEntryData("nckd_retireentry");
-            //人力薪酬分录
-            this.getModel().deleteEntryData("nckd_salaryentry");
-            this.getView().setVisible(true,nckd_generalemployees);
+            clearEntryData(nckd_generalemployees);
         }
         //薪酬明细(内退)分录
         if (Viewflag.equals(nckd_earlyretired)) {
             for (String item:viewList) {
                 this.getView().setVisible(false,item);
             }
-            //一般员工分录
-            this.getModel().deleteEntryData("nckd_staffentry");
-            //退休分录
-            this.getModel().deleteEntryData("nckd_retireentry");
-            //人力薪酬分录
-            this.getModel().deleteEntryData("nckd_salaryentry");
-            this.getView().setVisible(true,nckd_earlyretired);
+            clearEntryData(nckd_earlyretired);
         }
         //薪酬明细(退休)分录
         if (Viewflag.equals(nckd_retired)) {
             for (String item:viewList) {
                 this.getView().setVisible(false,item);
             }
-            //一般员工分录
-            this.getModel().deleteEntryData("nckd_staffentry");
-            //内退分录
-            this.getModel().deleteEntryData("nckd_earlyretiredentry");
-            //人力薪酬分录
-            this.getModel().deleteEntryData("nckd_salaryentry");
-            this.getView().setVisible(true,nckd_retired);
+            clearEntryData(nckd_retired);
         }
         //人力薪酬分录
         if (Viewflag.equals(nckd_pay)) {
             for (String item:viewList) {
                 this.getView().setVisible(false,item);
             }
-            //清空其他分录
-            //一般员工分录
-            this.getModel().deleteEntryData("nckd_staffentry");
-            //内退分录
-            this.getModel().deleteEntryData("nckd_earlyretiredentry");
-            //退休分录
-            this.getModel().deleteEntryData("nckd_retireentry");
-            this.getView().setVisible(true,nckd_pay);
+            clearEntryData(nckd_pay);
         }
     }
 
@@ -119,6 +90,29 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         this.setVieeVisible("");
     }
 
+    //审核后获取审核人并刷新前端界面
+    public void afterDoOperation(AfterDoOperationEventArgs arg){
+        super.afterDoOperation(arg);
+        String operateKey = arg.getOperateKey();
+        //审核操作代码
+        String audit="audit";
+        if (operateKey.equals(audit)) {
+            //获取单据编号
+            String billno=this.getModel().getDataEntity().getString("billno");
+            QFilter filter=new QFilter("billno", QFilter.equals,billno);
+            DynamicObject[] dynamicObjectList= BusinessDataServiceHelper.load("nckd_salarydistribute","id",new QFilter[]{filter});
+            DynamicObject auditor = null;
+            for (DynamicObject dynamicObject:dynamicObjectList) {
+                DynamicObject info=BusinessDataServiceHelper.
+                        loadSingle(dynamicObject.getPkValue(),dynamicObject.getDynamicObjectType().getName());
+                auditor=info.getDynamicObject("nckd_auditor");
+            }
+            if (null!=auditor) {
+                this.getModel().setValue("nckd_auditor",auditor);
+                this.getView().updateView();
+            }
+        }
+    }
 
     public void propertyChanged(PropertyChangedArgs e)
     {
@@ -126,7 +120,6 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         String name=e.getProperty().getName();
         //获取单据模型
         DynamicObject data=this.getModel().getDataEntity();
-
         if (nckd_entrytype.equals(name)) {
             //获取当前分录类型
             ChangeData[] changeSet=e.getChangeSet();
@@ -134,10 +127,10 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
             oldentryNum=(String)changeData.getOldValue();
             newentryNum=(String)changeData.getNewValue();
             String entrytype=data.getString(nckd_entrytype);
-
             if (entrytype.isEmpty()) {
                 this.setVieeVisible("");
             }
+            //分录有数据则弹窗提示,无数据则直接切换分录
             //分录类型为薪酬明细(一般员工)
             if (entrytype.equals("A")) {
                 if (billIsNotEmpty(data)) {
@@ -207,8 +200,7 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
             }
         }
         //如果为取消,则
-        if (messageBoxClosedEvent.getResult()==MessageBoxResult.No)
-        {
+        if (messageBoxClosedEvent.getResult()==MessageBoxResult.No) {
             //设置回原来的值,不触发值改变事件
             this.getModel().beginInit();
             data.set("nckd_entrytype",oldentryNum);
@@ -218,8 +210,7 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
     }
 
     //判断单据内四个分录是否为空,分录有数据则返回true
-    public boolean billIsNotEmpty(DynamicObject data)
-    {
+    public boolean billIsNotEmpty(DynamicObject data) {
         //四个分录标识
         List<String> nckd_entryList = Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry");
         for (String item:nckd_entryList) {
@@ -230,4 +221,22 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         }
         return false;
     }
+
+    //清空除传入以外的其他分录
+    public void clearEntryData(String nckd_entry)
+    {
+        //分录标识
+        List<String> nckd_generalemployees =Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry");
+        for (String item:nckd_generalemployees) {
+            //不传入参数默认全部分录清除
+            if ("".equals(nckd_entry)){
+                this.getModel().deleteEntryData(item);
+            }
+            if (!item.equals(nckd_entry)) {
+                this.getModel().deleteEntryData(item);
+                this.getView().setVisible(true,nckd_entry);
+            }
+        }
+    }
+
 }

+ 0 - 6
src/main/java/fi/em/formPlugin/SalaryFileUploadEditPlugin.java

@@ -140,8 +140,6 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                 ,"nckd_se_unionmey","nckd_se_tax","nckd_se_otherreduce","nckd_se_desalary","nckd_se_netsalary","nckd_se_cpy_endins"
                 ,"nckd_se_cpy_hopins","nckd_se_cpy_bhopins","nckd_se_cpy_ljins","nckd_se_cpy_birthins","nckd_se_cpy_dmgins","nckd_se_cpy_hosins"
                 ,"nckd_se_cpy_cmymey");
-
-
         //薪酬明细(内退)分录字段标识
         List<String> nckd_earlyretired=Arrays.asList("nckd_ee_institution","nckd_ee_emptype","nckd_ee_empnumber","nckd_ee_empname"
                 ,"nckd_ee_org","nckd_ee_department","nckd_ee_idnumber","nckd_ee_cost","nckd_ee_allbasicsry","nckd_ee_allowance"
@@ -149,12 +147,10 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                 ,"nckd_ee_per_hosins","nckd_ee_per_cmymey","nckd_ee_unionmey","nckd_ee_tax","nckd_ee_otherreduce","nckd_ee_desalary"
                 ,"nckd_ee_netsalary","nckd_ee_cpy_endins","nckd_ee_cpy_hopins","nckd_ee_cpy_bhopins","nckd_ee_cpy_ljins","nckd_ee_cpy_birthins"
                 ,"nckd_ee_cpy_dmgins","nckd_ee_cpy_hosins","nckd_ee_cpy_cmymey");
-
         //薪酬明细(退休)分录字段标识
         List<String> nckd_retired=Arrays.asList("nckd_re_institution","nckd_re_emptype","nckd_re_empnumber","nckd_re_empname","nckd_re_org"
                 ,"nckd_re_department","nckd_re_idnumber","nckd_re_cost","nckd_re_livallowance","nckd_re_otherallowance","nckd_re_reward"
                 ,"nckd_re_salarypayable","nckd_re_desalary","nckd_re_netsalary");
-
         //人力薪酬分录标识
         List<String> nckd_pay=Arrays.asList("nckd_sae_institution","nckd_sae_empname","nckd_sae_jobid","nckd_sae_idnumber","nckd_sae_company"
                 ,"nckd_sae_institutions","nckd_sae_department","nckd_sae_levelsry","nckd_sae_dutiessry","nckd_sae_updutiessry","nckd_sae_workyearsry"
@@ -239,7 +235,6 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                 }
                 //刷新分录
                 this.getView().updateView("nckd_staffentry");
-
             }
         }
         //薪酬明细(内退)分录
@@ -307,7 +302,6 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                     }
                 }
             }
-
         }
 
         //薪酬明细(退休)分录

+ 59 - 91
src/main/java/kd/imc/rim/utils/ApiHttpUtils.java

@@ -5,7 +5,11 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import javassist.Loader;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
 import kd.bos.script.annotations.KSObject;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -15,6 +19,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.util.EntityUtils;
 
+import java.io.IOException;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -29,7 +34,7 @@ import java.util.Iterator;
 @KSObject
 public class ApiHttpUtils {
 
-    public static String Posthttp(String url, String Params) throws Exception {
+    public static String Posthttp(String url, String Params){
         // 获得Http客户端
         CloseableHttpClient httpClient = HttpClientBuilder.create().build();
         // 创建Post请求
@@ -65,20 +70,38 @@ public class ApiHttpUtils {
         StringEntity entity = new StringEntity(object.toString(), ContentType.APPLICATION_JSON);
         httpPost.setEntity(entity);
         // 响应模型(发送post请求)
-        CloseableHttpResponse response = httpClient.execute(httpPost);
+        CloseableHttpResponse response = null;
+        try {
+            response = httpClient.execute(httpPost);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
         // 从响应模型中获取响应实体
         HttpEntity responseEntity = response.getEntity();
-        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
+        JSONObject jsonObject = new JSONObject();
         if (responseEntity != null) {
-            jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
-            return jsonObject.toJSONString();
+            try {
+                jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
+                JSONArray jsonArray = jsonObject.getJSONObject("boby").getJSONArray("object_list");
+                return jsonArray.toJSONString();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
         }
         // 释放资源
         if (httpClient != null) {
-            httpClient.close();
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
         }
         if (response != null) {
-            response.close();
+            try {
+                response.close();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
         }
         return "";
     }
@@ -111,6 +134,14 @@ public class ApiHttpUtils {
         return null;
     }
     public static String toFiledata(String Params) throws Exception {
+        //组装发票数据结构 !
+        JSONObject json = new JSONObject();//返回最外层json
+        json.put("errcode","0000");
+        json.put("traceId","");
+        json.put("description","操作成功");
+        JSONObject data = new JSONObject();//数据层json
+        json.put("batchNo","");
+        JSONArray recoginitionData = new JSONArray();//数据层数组
         if("".equals(Params)){return null;};
         JSONArray objects = JSONArray.parseArray(Params);
         for(int a=0;a<objects.size();a++){
@@ -127,95 +158,32 @@ public class ApiHttpUtils {
                 String value = respenjsons.get("value").toString();// 获得value
                 item_list.put(key,value);
             }
-            if("增值税电子普通发票".equals(type_description)){
-                String zzsdzptfp = zzsdzptfp(item_list);
-                return zzsdzptfp;
-            }else if("行程单".equals(type_description)){
-                String jpxcd = jpxcd(item_list);
-                return jpxcd;
-            } else if ("火车票".equals(type_description)) {
-                String hcp = hcp(item_list);
-                return hcp;
-            } else if ("通用定额发票".equals(type_description)) {
-                String tydefp = tydefp(item_list);
-                return tydefp;
-            }
+                QFilter nckd_File = new QFilter("nckd_filetype", QCP.equals, type_description);
+                DynamicObject nckd_FileData = BusinessDataServiceHelper.loadSingle("nckd_filedataconvert", "id,nckd_filetype", new QFilter[]{nckd_File});
+                JSONObject Filedata = FileData(nckd_FileData,item_list);
+                recoginitionData.add(Filedata);
         }
-
-        return null;
+        data.put("recoginitionData",recoginitionData);
+        json.put("data",data);
+        return json.toString();
     }
 
     //增值税电子普通发票
-    public static String zzsdzptfp(JSONObject item_list) throws Exception {
-        //组装发票数据结构 !
-        JSONObject json = new JSONObject();//返回最外层json
-        json.put("errcode","0000");
-        json.put("traceId","");
-        json.put("description","操作成功");
-        JSONObject data = new JSONObject();//数据层json
-        json.put("batchNo","");
-        JSONArray recoginitionData = new JSONArray();//数据层数组
+    public static JSONObject FileData(DynamicObject nckd_FileData,JSONObject item_list) throws Exception {
         JSONObject fileObj = new JSONObject();//实际数据json
-        fileObj.put("canBeDeduction","");//0
-        fileObj.put("salerName",item_list.getString("vat_invoice_seller_name"));//销售方名称  ocr字段:vat_invoice_seller_name
-        fileObj.put("invoiceMoney",item_list.getString("vat_invoice_price_list"));//金额明细 ocr字段:vat_invoice_price_list
-        fileObj.put("signStatus","");//0
-        fileObj.put("downloadUrl","");//下载地址链接
-        fileObj.put("fileHash","");//文件哈希值
-        fileObj.put("invoiceAmount",item_list.getString("vat_invoice_total"));//合计金额 ocr字段:vat_invoice_total
-        fileObj.put("localUrl","");//预览链接
-        fileObj.put("deductionStatus",1);//扣除
-        fileObj.put("salerTaxNo",item_list.getString("vat_invoice_seller_id_seal"));//纳税人识别号 ocr字段:vat_invoice_seller_id_seal
-
-        fileObj.put("invoiceType",1);//发票类型 ocr字段:type  1="增值税发票"
-
-        fileObj.put("invoiceNo",item_list.getString("vat_invoice_haoma_large_size"));//发票号码 ocr字段:vat_invoice_haoma_large_size
-        fileObj.put("isRepeat",false);//是否重复
-        fileObj.put("pixel","");//3962978 未知字段
-        fileObj.put("oriImageSize","");//base64编码长度
-        fileObj.put("pdfToImgSnapshotUrl","");//空
-        fileObj.put("orientation","0");//0
-        fileObj.put("batchNo",null);//null
-        fileObj.put("clientId","Vfz636yVhmk9HEu1QTAp");//客户端id
-        fileObj.put("buyerTaxNo",item_list.getString("vat_invoice_rate_payer_id"));//购买方纳税人识别号 ocr字段:vat_invoice_rate_payer_id
-        fileObj.put("warningCode","");//警告数量
-        fileObj.put("originalState",0);//原始状态0
-        fileObj.put("companySeal","1");//未知字段
-        fileObj.put("originalUrl","");//地址链接
-        fileObj.put("invoiceDate",item_list.getString("vat_invoice_issue_date"));//开票日期 ocr字段:vat_invoice_issue_date
-        fileObj.put("buyerName",item_list.getString("vat_invoice_payer_name"));//购买方名称  ocr字段:vat_invoice_payer_name
-        fileObj.put("invoiceCode",item_list.getString("vat_invoice_daima"));//发票代码 ocr字段: vat_invoice_daima
-        fileObj.put("serialNo","");//未知字段
-        fileObj.put("totalAmount",item_list.getString("vat_invoice_total_cover_tax_digits"));//价税合计 ocr字段: vat_invoice_total_cover_tax_digits
-        fileObj.put("taxRate",item_list.getString("vat_invoice_tax_rate"));//税率 ocr字段 vat_invoice_tax_rate
-        fileObj.put("oriOrientation","0");//未知字段
-        fileObj.put("oriRegion","");//什么地区....
-        fileObj.put("rotationAngle","0");//未知字段
-        fileObj.put("snapshotUrl","");//图片地址
-        fileObj.put("imageSerialNo","");//图片编码?
-        fileObj.put("recognitionSerialNo","");//未知字段
-        fileObj.put("totalTaxAmount",item_list.getString("vat_invoice_tax_total"));//税额合计 ocr字段 vat_invoice_tax_total
-        fileObj.put("taxAmount",item_list.getString("vat_invoice_tax_list"));//税额 ocr字段 vat_invoice_tax_list
-        fileObj.put("region","");//未知字段
-        fileObj.put("isExpend","");//""
-        fileObj.put("expendStatus",null);//null
-        fileObj.put("fileType",1);//附件类型
-        JSONArray items = new JSONArray();//数据明细层数组
-        JSONObject mxFileObj = new JSONObject();//明细数据json
-        mxFileObj.put("unitPrice",item_list.getString("vat_invoice_total"));//合计金额 oct字段: vat_invoice_total
-        mxFileObj.put("taxRate",item_list.getString("vat_invoice_tax_rate_list"));//税率明细 vat_invoice_tax_rate_list
-        mxFileObj.put("unit","");
-        mxFileObj.put("num","1");
-        mxFileObj.put("detailAmount",item_list.getString("vat_invoice_price_list"));//金额明细 ocr字段:vat_invoice_price_list
-        mxFileObj.put("taxAmount",item_list.getString("vat_invoice_tax_list"));//税额明细 ocr字段 vat_invoice_tax_list
-        mxFileObj.put("goodsName",item_list.getString("vat_invoice_goods_list"));//服务名称/项目名称 ocr字段 vat_invoice_goods_list
-        //值拼接完成后开始set数据结构
-        items.add(mxFileObj);
-        fileObj.put("items",items);
-        recoginitionData.add(fileObj);
-        data.put("recoginitionData",recoginitionData);
-        json.put("data",data);
-        return json.toJSONString();
+        for (DynamicObject entryentity : nckd_FileData.getDynamicObjectCollection("nckd_treeentryentity")) {
+            String nckd_keingde = entryentity.getString("nckd_keingde");
+            String nckd_ocr = entryentity.getString("nckd_ocr");
+            String nckd_acquiesce = entryentity.getString("nckd_acquiesce");
+            if(!"".equals(nckd_ocr) && nckd_ocr!=null){
+                fileObj.put(nckd_keingde,item_list.getString(nckd_ocr));
+            }else if(!"".equals(nckd_acquiesce) && nckd_ocr!=null){
+                fileObj.put(nckd_keingde,nckd_acquiesce);
+            }else {
+                fileObj.put(nckd_keingde,"");
+            }
+        }
+        return fileObj;
     }
     //机票行程单
     public static String jpxcd(JSONObject item_list) throws Exception {