Переглянути джерело

蓝云NC部门达成管理费用代码更新-添加机关部门数据
各项目经营分析取值调bug修改
日常物耗申请单查询子表bug

fyz 1 місяць тому
батько
коміт
92bda895c6

+ 5 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/controller/TimerController.java

@@ -74,6 +74,11 @@ public class TimerController {
         ncService.getNcCollection(data);
         return McR.success();
     }
+    @RequestMapping("testGetNcCollectionOld")
+    McR testGetNcCollectionOld(@RequestBody Map data) {
+        ncService.getNcCollectionOld(data);
+        return McR.success();
+    }
 
     @RequestMapping("testFive")
     McR testFive() {

+ 3 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/service/NCService.java

@@ -33,4 +33,7 @@ public interface NCService {
     void getByMonth(@RequestBody Map data);
 
     void getNcCollection(Map data);
+
+    void getNcCollectionOld(Map data);
+
 }

+ 131 - 11
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/FImplService.java

@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -23,7 +24,9 @@ import java.util.stream.Stream;
 @Service
 @Slf4j
 public class FImplService implements FService {
-
+    private static final String[] NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
+    private static final String[] UNITS = {"", "拾", "佰", "仟"};
+    private static final String[] BIG_UNITS = {"", "万", "亿", "兆"};
     @Autowired
     private YDService ydService;
 
@@ -76,7 +79,8 @@ public class FImplService implements FService {
             Map formData = UtilMap.getMap(setMap, unique); // 累计标识
             if (!setMap.containsKey(unique)) {
                 // 主表信息: 由 --> 至, 合计金额
-                formData = UtilMap.map("textField_m06ij3z7, textField_m06ij3z8, numberField_m06lmogz", kpgs, khmc, UtilMap.getFloat(data, "numberField_m4qrz685"));
+                formData = UtilMap.map("textField_m06ij3z7, textField_m06ij3z8, numberField_m06lmogz", kpgs, khmc, BigDecimal.valueOf(UtilMap.getDouble(data, "numberField_m4qrz685")));
+//                formData = UtilMap.map("textField_m06ij3z7, textField_m06ij3z8, numberField_m06lmogz", kpgs, khmc, UtilMap.getFloat(data, "numberField_m4qrz685"));
                 List<Map> subjects = subjectList.stream().filter(item -> kpgs.equals(UtilMap.getString(item, "textField_lrintpap"))).collect(Collectors.toList()); // 精准匹配
                 if (subjects.size() == 0) {
                     continue;
@@ -100,22 +104,27 @@ public class FImplService implements FService {
                 table.add(sub);
                 formData.put("tableField_m06ij3zd", table);
                 // 累计合计金额
-                formData.put("numberField_m06lmogz", UtilMap.getFloat(formData, "numberField_m06lmogz") + UtilMap.getFloat(data, "numberField_m4qrz685"));
+                formData.put("numberField_m06lmogz", BigDecimal.valueOf(UtilMap.getDouble(formData, "numberField_m06lmogz")).add(BigDecimal.valueOf(UtilMap.getDouble(data, "numberField_m4qrz685"))));
+//                formData.put("numberField_m06lmogz", UtilMap.getFloat(formData, "numberField_m06lmogz") + UtilMap.getFloat(data, "numberField_m4qrz685"));
             }
             List<Map> mapList = (List<Map>) formData.get("tableField_m06ij3zd");
             List<Map> collect = mapList.stream().sorted(Comparator.comparing(m -> UtilMap.getString((Map) m, "textField_m06ij3zh")).reversed()).collect(Collectors.toList());
 //            List<Map> collect = mapList.stream().sorted(Comparator.comparing(m ->  LocalDate.parse(UtilMap.getString((Map) m, "textField_m06ij3zh")+"-01", DateTimeFormatter.ISO_LOCAL_DATE)).reversed()).collect(Collectors.toList());
             for (int i = 0; i < collect.size(); i++) {
-                collect.get(i).put("textField_m06ij3ze",i+1);
+                collect.get(i).put("textField_m06ij3ze", i + 1);
             }
             formData.put("tableField_m06ij3zd", collect);
             setMap.put(unique, formData);
         }
 
+//        textField_mbk6z3us
         log.info("催款函, {}", setMap.size());
         for (String unique : setMap.keySet()) {
             Map formData = UtilMap.getMap(setMap, unique);
-            formData.put("textField_m4qxo07x", unique + "_" + UtilMap.getFloat(formData, "numberField_m06lmogz"));
+            double sum = UtilMap.getDouble(formData, "numberField_m06lmogz");
+            String numberToChinese = numberToChinese(sum);
+            formData.put("textField_m4qxo07x", unique + "_" + sum);
+            formData.put("textField_mbk6z3us", numberToChinese);
             ydClient.operateData(_initLYParam()
                     .formUuid("FORM-738D89FEC34740EC92B08BF6D7B9470DEQY6")
                     .processCode("TPROC--IMD665A1KDXNJ2V47QQ9UCM9I9F827DEEI60M6")
@@ -132,8 +141,8 @@ public class FImplService implements FService {
 //                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lvdosccc", "KP_2024120201435")))
                 .build());
         Map<Object, List<Map>> dataStream = dataList.stream().collect(Collectors.groupingBy(map -> map.get("textField_m5297e3q")));
-        dataStream.forEach((k,v)->{
-            if (v.size()>1){
+        dataStream.forEach((k, v) -> {
+            if (v.size() > 1) {
                 for (int i = v.size() - 1; i > 0; i--) {
                     ydClient.operateData(_initLYParam()
 //                            .searchCondition(JSON.toJSONString(searchCondition))
@@ -217,11 +226,11 @@ public class FImplService implements FService {
                 for (int i = 0; i < arrCompId.size(); i++) {
                     String key = compId_detail.get(i);
                     if (key.equals("textField_m5aes96o")) {
-                        String cId = arrCompId.get(i)+ "_id";
+                        String cId = arrCompId.get(i) + "_id";
                         if (!detail.containsKey(cId)) {
                             continue;
                         }
-                        List<Map> associations =  (List<Map>) JSON.parse(String.valueOf(JSON.parse(UtilMap.getString(detail, cId))));
+                        List<Map> associations = (List<Map>) JSON.parse(String.valueOf(JSON.parse(UtilMap.getString(detail, cId))));
                         material = UtilMap.getString(associations.get(0), "title");
                         dataForm.put(key, material);
                     } else if (arrCompId.get(i).contains("dateField_")) {
@@ -240,7 +249,7 @@ public class FImplService implements FService {
                         }
                     } else {
                         if (key.equals("textField_m5297e3q")) {
-                            uuid =  UtilMap.getString(detail, arrCompId.get(i));
+                            uuid = UtilMap.getString(detail, arrCompId.get(i));
                         }
                         dataForm.put(key, detail.get(arrCompId.get(i)));
                     }
@@ -272,4 +281,115 @@ public class FImplService implements FService {
             }
         }
     }
-}
+
+    public String numberToChinese(double number) {
+        boolean isNegative = number < 0;
+        number = Math.abs(number);
+
+        BigDecimal bigDecimal = new BigDecimal(String.valueOf(number));
+        long integerPart = bigDecimal.longValue();
+        int decimalPart = (bigDecimal.subtract(new BigDecimal(integerPart)).multiply(new BigDecimal(100))).intValue();
+
+        if (integerPart == 0 && decimalPart == 0) {
+            return isNegative ? "负零元整" : "零元整";
+        }
+
+        StringBuilder result = new StringBuilder();
+        int unitIndex = 0;
+        boolean zeroFlag = false;
+        while (integerPart > 0) {
+            long group = integerPart % 10000;
+            if (group != 0) {
+                if (zeroFlag) {
+                    result.insert(0, "零");
+                }
+                result.insert(0, BIG_UNITS[unitIndex]);
+                result.insert(0, groupToChinese(group));
+                zeroFlag = false;
+            } else {
+                zeroFlag = true;
+            }
+            integerPart /= 10000;
+            unitIndex++;
+        }
+
+        // 去除多余的零
+        while (result.length() > 0 && result.charAt(0) == '零') {
+            result.deleteCharAt(0);
+        }
+
+        // 如果小数部分为 0,直接添加“元整”
+        if (decimalPart == 0) {
+            // 避免出现“零元整”情况,这里判断结果最后是否是大单位,如果是直接加“整”
+            if (result.length() > 0 && isBigUnit(result.charAt(result.length() - 1))) {
+                result.append("整");
+            } else if ("零".equals(result.substring(result.length() - 1, result.length()))) {
+                result.replace(result.length() - 1, result.length(), "").append("元整");
+            } else {
+                result.append("元整");
+            }
+        } else {
+            result.append("元");
+            String decimalStr = decimalToChinese(decimalPart);
+            if (!decimalStr.isEmpty()) {
+                result.append(decimalStr);
+            }
+        }
+
+
+        if (isNegative) {
+            result.insert(0, "负");
+        }
+
+        return result.toString();
+    }
+
+    private String groupToChinese(long group) {
+        StringBuilder groupResult = new StringBuilder();
+        boolean zeroFlag = false;
+        for (int i = 0; i < 4; i++) {
+            int digit = (int) (group / (long) Math.pow(10, 3 - i) % 10);
+            if (digit != 0) {
+                if (zeroFlag) {
+                    groupResult.append("零");
+                }
+                groupResult.append(NUMBERS[digit]).append(UNITS[3 - i]);
+                zeroFlag = false;
+            } else {
+                zeroFlag = true;
+            }
+        }
+        String result = groupResult.toString();
+        if (result.endsWith("零")) {
+            result = result.substring(0, result.length() - 1);
+        }
+        return result;
+    }
+
+    private String decimalToChinese(int decimalPart) {
+        StringBuilder decimalResult = new StringBuilder();
+        int jiao = decimalPart / 10;
+        int fen = decimalPart % 10;
+
+        if (jiao != 0) {
+            decimalResult.append(NUMBERS[jiao]).append("角");
+        } else if (fen != 0) {
+            decimalResult.append("零");
+        }
+
+        if (fen != 0) {
+            decimalResult.append(NUMBERS[fen]).append("分");
+        }
+
+        return decimalResult.toString();
+    }
+
+    private boolean isBigUnit(char c) {
+        for (String unit : BIG_UNITS) {
+            if (unit.length() > 0 && unit.charAt(0) == c) {
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 67 - 4
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/NCServiceImpl.java

@@ -320,7 +320,7 @@ public class NCServiceImpl implements NCService {
             resultSet = statement.executeQuery(sql);
 
             while (resultSet.next()) {
-                if (ObjectUtil.isNotNull(resultSet.getString("xmcode"))){
+//                if (ObjectUtil.isNotNull(resultSet.getString("xmcode"))){
                     Map hashMap = new HashMap();
 
                     String yearAndNonth = year +"-"+month;
@@ -342,7 +342,7 @@ public class NCServiceImpl implements NCService {
                             .formUuid("FORM-5654B7C22E7546E9BBE7B4EF46DE08BAXZXU")
                             .formDataJson(JSON.toJSONString(hashMap))
                             .build(), YDConf.FORM_OPERATION.create);
-                }
+//                }
             }
         } catch (Exception e) {
             log.info("数据库连接异常"+e.toString());
@@ -896,7 +896,9 @@ public class NCServiceImpl implements NCService {
             });
             Map<String, Long> collect = personList.stream().collect(Collectors.groupingBy(i -> i, Collectors.counting()));
 
-//            log.info("collect:{}",collect);
+            log.info("直属队人数:{}",collect.get("直属队").toString());
+            log.info("公司总人数:{}",personList.size());
+            log.info("公司管理费用:{}",manageList.get(0).get("manage_compute").toString());
             final Double[] zsdglfy = {0.0};
             final Double[] zsdsum = {0.0};
             //直属队
@@ -916,7 +918,7 @@ public class NCServiceImpl implements NCService {
                     if (workingEmployeeIds.size() == 0 || workingEmployeeIds.size() * zsdsum[0] == 0.0){
                         zsdglfy[0] = 0.0;
                     }else {
-                        zsdglfy[0] = zsdglfy[0] + (collect.get("工程部(直属队")==null||collect.get("工程部(直属队").toString().isEmpty()?0.0:Double.parseDouble(collect.get("工程部(直属队)").toString()) )/ zsdsum[0];
+                        zsdglfy[0] = zsdglfy[0] + (collect.get("直属队")==null||collect.get("直属队").toString().isEmpty()?0.0:Double.parseDouble(collect.get("直属队").toString()))/personList.size()*Double.parseDouble(manageList.get(0).get("manage_compute").toString());
                     }
                 }
             });
@@ -1986,4 +1988,65 @@ public class NCServiceImpl implements NCService {
             }
         }
     }
+
+    @Override
+    public void getNcCollectionOld(Map data) {
+
+        String year = data.get("year").toString();
+        String month = data.get("month").toString();
+        deleteMonthDate("FORM-5654B7C22E7546E9BBE7B4EF46DE08BAXZXU","textField_m0dkzhwo", year,month);
+
+        System.out.println(month);
+        Connection connection = null;
+        Statement statement = null;
+        ResultSet resultSet = null;
+        try {
+            // 加载 JDBC 驱动
+            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+            // 建立连接
+            connection = DriverManager.getConnection(sqlBean.getUrl(), sqlBean.getUsername(), sqlBean.getPassword());
+
+            // 创建 Statement 对象
+            statement = connection.createStatement();
+
+            // 测试sql 执行查询
+            String sql = "SELECT b.adjustperiod AS adjustperiod, b.pk_accasoa AS pk_accasoa,a.name AS accasoa_name, SUM ( b.creditamount ) AS creditamount             FROM gl_detail b JOIN bd_accasoa a ON b.pk_accasoa = a.pk_accasoa WHERE b.yearv = "+year+" AND b.adjustperiod = '"+ month + "'" +
+                    "            AND (b.accountcode like '6602%' OR b.accountcode IN ('660101','660103','660104'))" +
+                    "            AND b.pk_accountingbook IN ( SELECT pk_accountingbook FROM org_accountingbook WHERE code IN ( 'A01-0004', 'A02-0004', 'A03-0004', 'A04-0004', 'A05-0004', 'A06-0004', 'A10-0004', 'A11-0004' ))             GROUP BY b.adjustperiod,  b.pk_accasoa,  a.name";
+
+
+            resultSet = statement.executeQuery(sql);
+
+            while (resultSet.next()) {
+                Map hashMap = new HashMap();
+
+                String yearAndNonth = year +"-"+resultSet.getString("adjustperiod");
+                hashMap.put("dateField_m0dkzhwp", UtilDateTime.parse(yearAndNonth,"yyyy-MM"));
+                hashMap.put("textField_m0dkzhwo", yearAndNonth);
+                hashMap.put("textField_m0dkzhwu",resultSet.getString("pk_accasoa"));
+                hashMap.put("textField_m0dkzhwv",resultSet.getString("accasoa_name"));
+                hashMap.put("textField_m0eudqp0","部门");
+                hashMap.put("numberField_m0dkzhx1",resultSet.getBigDecimal("creditamount"));
+
+                ydClient.operateData(YDParam.builder()
+                        .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                        .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                        .formUuid("FORM-0A7979E168AF494F9AA190F043DCBBC7CW9Z")
+                        .formDataJson(JSON.toJSONString(hashMap))
+                        .build(), YDConf.FORM_OPERATION.create);
+            }
+        } catch (Exception e) {
+            log.info("数据库连接异常"+e.toString());
+            e.printStackTrace();
+        } finally {
+            // 关闭资源
+            try {
+                if (resultSet != null) resultSet.close();
+                if (statement != null) statement.close();
+                if (connection != null) connection.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }

+ 22 - 7
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -796,14 +796,14 @@ public class TimerServiceImpl implements TimerService {
                         //年月文本
                         String projectDate = s.get("textField_luh0k82j").toString();
                         if (date.equals(projectDate)){
-                            //剩余物耗定额
-                            double remaining = s.get("numberField_lrru2tnv_value") == null?0f:Double.parseDouble(s.get("numberField_lrru2tnv_value").toString());
+                            //物耗定额
+                            double remaining = s.get("numberField_lrru2tnu_value") == null || s.get("numberField_lrru2tnu_value").toString().isEmpty() ? 0f:Double.parseDouble(s.get("numberField_lrru2tnu_value").toString());
                             //已用物耗定额
-                            double used = s.get("numberField_ludujw4f_value") == null?0f:Double.parseDouble(s.get("numberField_ludujw4f_value").toString());
-                            remaining = remaining - nowCost;
-                            s.put("numberField_lrru2tnv",remaining);
+                            double used = s.get("numberField_ludujw4f_value") == null || s.get("numberField_ludujw4f_value").toString().isEmpty() ? 0f:Double.parseDouble(s.get("numberField_ludujw4f_value").toString());
                             used = used + nowCost;
                             s.put("numberField_ludujw4f",used);
+                            remaining = remaining - used;
+                            s.put("numberField_lrru2tnv",remaining);
                         }
                     });
                 }
@@ -1168,10 +1168,18 @@ public class TimerServiceImpl implements TimerService {
                         .formInstId(formInstId).build()
                 , YDConf.FORM_QUERY.retrieve_id).getFormData();
         System.out.println(formData);
+
         if (ObjectUtil.isNotNull(formData)){
             String area = ObjectUtil.isNotNull(formData.get("selectField_lrn2oy4b"))?formData.get("selectField_lrn2oy4b").toString():"";
             double sum[] = {0.0,0.0,0.0,0.0,0.0};
-            List<Map> sonList = (List<Map>) formData.get("tableField_lr383i4g");
+//            List<Map> sonList = (List<Map>) formData.get("tableField_lr383i4g");
+            List<Map> sonList = ydService.queryDetails(YDParam.builder().
+                    appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(formInstId)
+                    .formUuid("FORM-07219F4D377F45D78EE247687AA70CFEUMYR")
+                    .tableFieldId("tableField_lr383i4g")
+                    .build());
             if (ObjectUtil.isNotNull(sonList) && sonList.size()>0){
 
                 sonList.forEach(e->{
@@ -1234,7 +1242,14 @@ public class TimerServiceImpl implements TimerService {
                     }
                 });
             }
-            List<Map> sonNoList = (List<Map>) formData.get("tableField_ludqgh1w");
+//            List<Map> sonNoList = (List<Map>) formData.get("tableField_ludqgh1w");
+            List<Map> sonNoList = ydService.queryDetails(YDParam.builder().
+                    appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(formInstId)
+                    .formUuid("FORM-07219F4D377F45D78EE247687AA70CFEUMYR")
+                    .tableFieldId("tableField_ludqgh1w")
+                    .build());
             if (ObjectUtil.isNotNull(sonNoList) && sonNoList.size()>0){
                 sonNoList.forEach(e->{
                     String code = e.get("textField_ludqgh1d").toString();