Browse Source

知行同德v4.0

wzy 1 year ago
parent
commit
5ac44034f5

+ 17 - 0
mjava-zhixingtongde/src/main/java/com/malk/zhixingtongde/entity/Accounts.java

@@ -120,5 +120,22 @@ public class Accounts {
         return this;
     }
 
+    public Accounts sub(Accounts subTotalAccounts) {
+        this.initialAmt = NumberUtil.sub(this.initialAmt, subTotalAccounts.getInitialAmt()).toString();
+        this.amt1 = NumberUtil.sub(this.amt1, subTotalAccounts.getAmt1()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt2 = NumberUtil.sub(this.amt2, subTotalAccounts.getAmt2()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt3 = NumberUtil.sub(this.amt3, subTotalAccounts.getAmt3()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt4 = NumberUtil.sub(this.amt4, subTotalAccounts.getAmt4()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt5 = NumberUtil.sub(this.amt5, subTotalAccounts.getAmt5()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt6 = NumberUtil.sub(this.amt6, subTotalAccounts.getAmt6()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt7 = NumberUtil.sub(this.amt7, subTotalAccounts.getAmt7()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt8 = NumberUtil.sub(this.amt8, subTotalAccounts.getAmt8()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt9 = NumberUtil.sub(this.amt9, subTotalAccounts.getAmt9()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt10 = NumberUtil.sub(this.amt10, subTotalAccounts.getAmt10()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt11 = NumberUtil.sub(this.amt11, subTotalAccounts.getAmt11()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.amt12 = NumberUtil.sub(this.amt12, subTotalAccounts.getAmt12()).setScale(2, RoundingMode.HALF_UP).toString();
+        return this;
+    }
+
 
 }

+ 174 - 4
mjava-zhixingtongde/src/main/java/com/malk/zhixingtongde/service/impl/ZxtdReportServiceImpl.java

@@ -89,6 +89,7 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
             formUuid.put("OTHER_PAYABLE","FORM-48CCA085CFDF4DC3B036A880F77842ED273S");// 其他应付账款表
             formUuid.put("INCOME","FORM-DA4BC7EA522E4D59A9233C507206D291N1XX");// 收入申请表
             formUuid.put("PAY","FORM-DE36121157B74774B5C8462E38519269OAVS");// 支出申请表
+            formUuid.put("ARTIFICIAL","FORM-52CEBFBA6D56413993E1F5075A493FDCVXVT");// 资产负债手动维护表
         } else {
             formUuid.put("DOMAIN", "https://nxcyz4.aliwork.com/");
         }
@@ -112,6 +113,25 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
         Map mainData=new HashMap();
         mainData.put("year",year);
 
+        // 计算费用合计 与 净利润
+        String payTotalKey="payTotalAmt";
+        String payTotalAmtTotal="0";
+        String netProfitKey="netProfitAmt";
+        String netProfitTotal="0";
+        for (int i = 1; i < 13; i++) {
+            // 费用合计
+            String amt=addAmt(PROFIT_SUM,1,4,i);// 第一位数据是收入,不参与计算
+            mainData.put(payTotalKey+i,amt);
+            payTotalAmtTotal=NumberUtil.add(amt,payTotalAmtTotal).toString();
+            // 净利润
+            String net=subAmt(PROFIT_SUM,1,4,i);
+            mainData.put(netProfitKey+i,net);
+            netProfitTotal=NumberUtil.add(netProfitTotal,net).toString();
+        }
+        mainData.put("payTotalAmtTotal",payTotalAmtTotal);
+        mainData.put("netProfitTotal",netProfitTotal);
+
+
         //获取股东分红、长期投资、退投资款
         List<Map> payDataList = getYdFormDataList(_matchFormUuid("PAY"),JSONObject.toJSONString(UtilMap.map("textField_lqvpypje", year)),YDConf.FORM_QUERY.retrieve_list);
         String fenhong = "fenhong";
@@ -123,22 +143,43 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                 String subject = formData.get("selectField_lp9j90w8") == null ? "" : formData.get("selectField_lp9j90w8").toString();
                 if (Objects.nonNull(formData.get("textField_lqvpypje"))){
                     String year2 = formData.get("textField_lqvpypje").toString();
-                    String month = year2.substring(5);
+                    String month = year2.substring(6);
                     String amt = formData.get("numberField_lp82nads").toString();
 
-                    if(subject.equals("分红")){
+                    if(subject.equals("FH")){
                         mainData.put(fenhong+month,NumberUtil.add(mainData.get(fenhong+month) == null ? "0.00" : mainData.get(fenhong+month).toString(),amt).toString());
+                        mainData.put(fenhong+"Total",NumberUtil.add(mainData.get(fenhong+"Total") == null ? "0.00" : mainData.get(fenhong+"Total").toString(),amt).toString());
                     }
+
                     if(subject.equals("对外投资")){
                         mainData.put(touzi+month,NumberUtil.add(mainData.get(touzi+month) == null ? "0.00" : mainData.get(touzi+month).toString(),amt).toString());
+                        mainData.put(touzi+"Total",NumberUtil.add(mainData.get(touzi+"Total") == null ? "0.00" : mainData.get(touzi+"Total").toString(),amt).toString());
                     }
                     if(subject.equals("退投资款")){
                         mainData.put(tuitouzi+month,NumberUtil.add(mainData.get(tuitouzi+month) == null ? "0.00" : mainData.get(tuitouzi+month).toString(),amt).toString());
+                        mainData.put(tuitouzi+"Total",NumberUtil.add(mainData.get(tuitouzi+"Total") == null ? "0.00" : mainData.get(tuitouzi+"Total").toString(),amt).toString());
                     }
                 }
             }
         }
 
+        //获取剩余净利润
+        for (int i = 1; i < 13; i++) {
+            //剩余净利润=净利润-分红-长期投资-退投资款
+            String netProfitAmt = mainData.get(netProfitKey + i) == null ? "0.00" : String.valueOf(mainData.get(netProfitKey + i));
+            String fenhongAmt = mainData.get(fenhong + i) == null ? "0.00" : String.valueOf(mainData.get(fenhong + i));
+            String touziAmt = mainData.get(touzi + i) == null ? "0.00" : String.valueOf(mainData.get(touzi + i));
+            String tuitouziAmt = mainData.get(tuitouzi + i) == null ? "0.00" : String.valueOf(mainData.get(tuitouzi + i));
+
+            String remainNet=NumberUtil.sub(netProfitAmt,fenhongAmt,touziAmt,tuitouziAmt).toString();
+            mainData.put("remainNet"+i,remainNet);
+        }
+        mainData.put("remainNetTotal",NumberUtil.sub(netProfitTotal,
+                mainData.get(fenhong+"Total") == null ? "0.00" : String.valueOf(mainData.get(fenhong+"Total")),
+                mainData.get(touzi+"Total") == null ? "0.00" : String.valueOf(mainData.get(touzi+"Total")),
+                mainData.get(tuitouzi+"Total") == null ? "0.00" : String.valueOf(mainData.get(tuitouzi+"Total")))
+                .toString());
+
         Map map = new HashMap();
         map.put("dataList",dataList);
         map.put("mainData",mainData);
@@ -554,6 +595,10 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
         // 查询利润统计表
         List<Map> profitList = getYdFormDataList(_matchFormUuid("PROFIT"),JSONObject.toJSONString(UtilMap.map("textField_lqvp89br",year)),YDConf.FORM_QUERY.retrieve_list);
 
+        //查询资产负债手动维护表
+        List<Map> artificialList = getYdFormDataList(_matchFormUuid("ARTIFICIAL"),JSONObject.toJSONString(UtilMap.map("textField_lxtzn9up",year)),YDConf.FORM_QUERY.retrieve_list_all);
+
+
         //货币资金
         Accounts accounts1 = new Accounts();
 
@@ -627,6 +672,24 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                     }
                 }
             }
+            //获取收入中实际已收的金额-应收账款表
+            List<Map> collect = incomeList.stream().filter(p ->
+                            String.valueOf(((Map) p.get("formData")).get("selectField_ly2pd5cm")).equals("关联应收帐款表"))
+                    .collect(Collectors.toList());
+            //应收-已收
+            if (!collect.isEmpty()){
+                for (Map oneCollect : collect) {
+                    Map formData1 = (Map) oneCollect.get("formData");
+                    String amt = String.valueOf(formData1.get("numberField_lp8278sd"));
+                    String month = String.valueOf(formData1.get("textField_lxl8moor")).substring(6);
+                    ReflectUtil.invoke(accounts3,"setAmt"+month,NumberUtil.sub(ReflectUtil.invoke(accounts3,"getAmt"+month),amt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                }
+            }
+            String addAmt = accounts3.getInitialAmt();
+            for (int i = 1; i < month1+2; i++) {
+                ReflectUtil.invoke(accounts3,"setAmt"+i,NumberUtil.add(ReflectUtil.invoke(accounts3,"getAmt"+i),addAmt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                addAmt = ReflectUtil.invoke(accounts3,"getAmt"+i);
+            }
         }
 
         //其他应收款
@@ -657,8 +720,69 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                     }
                 }
             }
+            //获取收入中实际已收的金额-应收账款表
+            List<Map> collect = incomeList.stream().filter(p ->
+                            String.valueOf(((Map) p.get("formData")).get("selectField_ly2pd5cm")).equals("关联其他应收款表"))
+                    .collect(Collectors.toList());
+            //应收-已收
+            if (!collect.isEmpty()){
+                for (Map oneCollect : collect) {
+                    Map formData1 = (Map) oneCollect.get("formData");
+                    String amt = String.valueOf(formData1.get("numberField_lp8278sd"));
+                    String month = String.valueOf(formData1.get("textField_lxl8moor")).substring(6);
+                    ReflectUtil.invoke(accounts2,"setAmt"+month,NumberUtil.sub(ReflectUtil.invoke(accounts2,"getAmt"+month),amt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                }
+            }
+
+            String addAmt = accounts2.getInitialAmt();
+            for (int i = 1; i < month1+2; i++) {
+                ReflectUtil.invoke(accounts2,"setAmt"+i,NumberUtil.add(ReflectUtil.invoke(accounts2,"getAmt"+i),addAmt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                addAmt = ReflectUtil.invoke(accounts2,"getAmt"+i);
+            }
         }
 
+        //手填数据
+        Accounts accounts4 = new Accounts();
+        Accounts accounts5 = new Accounts();
+        Accounts accounts6 = new Accounts();
+        Accounts accounts8 = new Accounts();
+        Accounts accounts9 = new Accounts();
+        Accounts accounts14 = new Accounts();
+        if (!artificialList.isEmpty()){
+            for (Map artificial : artificialList) {
+                Map formData = (Map) artificial.get("formData");
+                String subject = String.valueOf(formData.get("selectField_lxtqso85"));
+                Accounts accounts = new Accounts();
+                List<Map> artificialDetails = (List<Map>) formData.get("tableField_lqyx5k0c");
+                if (Objects.nonNull(artificialDetails) && !artificialDetails.isEmpty()){
+                    for (Map artificialDetail : artificialDetails) {
+                        accounts.setInitialAmt(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0o")));
+                        accounts.setAmt1(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0q")));
+                        accounts.setAmt2(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0r")));
+                        accounts.setAmt3(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0s")));
+                        accounts.setAmt4(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0t")));
+                        accounts.setAmt5(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0u")));
+                        accounts.setAmt6(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0v")));
+                        accounts.setAmt7(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0w")));
+                        accounts.setAmt8(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0x")));
+                        accounts.setAmt9(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0y")));
+                        accounts.setAmt10(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k0z")));
+                        accounts.setAmt11(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k10")));
+                        accounts.setAmt12(getBigDecimalStringAmt(artificialDetail.get("numberField_lqyx5k11")));
+                        switch (subject){
+                            case "固定资产账面价值" : accounts4.add(accounts);break;
+                            case "无形资产" : accounts5.add(accounts);break;
+                            case "长期投资" : accounts6.add(accounts);break;
+                            case "应付职工薪酬" : accounts8.add(accounts);break;
+                            case "应交税费" : accounts9.add(accounts);break;
+                            case "实收资本" : accounts14.add(accounts);break;
+                        }
+                    }
+                }
+            }
+        }
+
+
         //应付账款
         Accounts accounts12 = new Accounts();
 
@@ -687,8 +811,29 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                     }
                 }
             }
+            //获取支出中实际已付的金额-应付账款表
+            List<Map> collect = payList.stream().filter(p ->
+                            String.valueOf(((Map) p.get("formData")).get("selectField_ly2lhkpe")).equals("关联应付账款表"))
+                    .collect(Collectors.toList());
+            //应付-已付
+            if (!collect.isEmpty()){
+                for (Map oneCollect : collect) {
+                    Map formData1 = (Map) oneCollect.get("formData");
+                    String amt = String.valueOf(formData1.get("numberField_lp82nads"));
+                    String month = String.valueOf(formData1.get("textField_lqvpypje")).substring(6);
+                    ReflectUtil.invoke(accounts12,"setAmt"+month,NumberUtil.sub(ReflectUtil.invoke(accounts12,"getAmt"+month),amt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                }
+            }
+            String addAmt = accounts12.getInitialAmt();
+            for (int i = 1; i < month1+2; i++) {
+                ReflectUtil.invoke(accounts12,"setAmt"+i,NumberUtil.add(ReflectUtil.invoke(accounts12,"getAmt"+i),addAmt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                addAmt = ReflectUtil.invoke(accounts12,"getAmt"+i);
+            }
+
         }
 
+
+
         //其他应付款
         Accounts accounts10 = new Accounts();
 
@@ -717,6 +862,25 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                     }
                 }
             }
+            //获取支出中实际已付的金额-其他应付款表
+            List<Map> collect = payList.stream().filter(p ->
+                            String.valueOf(((Map) p.get("formData")).get("selectField_ly2lhkpe")).equals("关联其他应付款表"))
+                    .collect(Collectors.toList());
+            //应付-已付
+            if (!collect.isEmpty()){
+                for (Map oneCollect : collect) {
+                    Map formData1 = (Map) oneCollect.get("formData");
+                    String amt = String.valueOf(formData1.get("numberField_lp82nads"));
+                    String month = String.valueOf(formData1.get("textField_lqvpypje")).substring(6);
+                    ReflectUtil.invoke(accounts10,"setAmt"+month,NumberUtil.sub(ReflectUtil.invoke(accounts10,"getAmt"+month),amt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                }
+            }
+
+            String addAmt = accounts10.getInitialAmt();
+            for (int i = 1; i < month1+2; i++) {
+                ReflectUtil.invoke(accounts10,"setAmt"+i,NumberUtil.add(ReflectUtil.invoke(accounts10,"getAmt"+i),addAmt).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
+                addAmt = ReflectUtil.invoke(accounts10,"getAmt"+i);
+            }
         }
 
         //未分配利润
@@ -735,6 +899,12 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                 case 1:dataList.add(accounts1);break;
                 case 2:dataList.add(accounts2);break;
                 case 3:dataList.add(accounts3);break;
+                case 4:dataList.add(accounts4);break;
+                case 5:dataList.add(accounts5);break;
+                case 6:dataList.add(accounts6);break;
+                case 8:dataList.add(accounts8);break;
+                case 9:dataList.add(accounts9);break;
+                case 14:dataList.add(accounts14);break;
                 case 10:dataList.add(accounts10);break;
                 case 12:dataList.add(accounts12);break;
                 case 15:dataList.add(accounts15);break;
@@ -969,7 +1139,7 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                 }
 
                 //分配股利、利润或偿付利息支付的现金
-                if (ArrayUtil.contains(new String[]{"分红","借款利息"}, subject)){
+                if (ArrayUtil.contains(new String[]{"FH","借款利息"}, subject)){
                     cash.setAmt21(NumberUtil.add(cash.getAmt21(), formData.get("numberField_lp82nads").toString()).setScale(2,RoundingMode.HALF_UP).toString());
                 }
 
@@ -1011,7 +1181,7 @@ public class ZxtdReportServiceImpl implements ZxtdReportService {
                 }
 
                 //分配股利、利润或偿付利息支付的现金
-                if (ArrayUtil.contains(new String[]{"分红","借款利息"}, subject)){
+                if (ArrayUtil.contains(new String[]{"FH","借款利息"}, subject)){
                     cash.setLastAmt21(NumberUtil.add(cash.getLastAmt21(), formData.get("numberField_lp82nads").toString()).setScale(2,RoundingMode.HALF_UP).toString());
                 }
 

BIN
mjava-zhixingtongde/src/main/resources/templates/Template_all.xlsx


BIN
mjava-zhixingtongde/src/main/resources/templates/Template_profit.xlsx