Kaynağa Gözat

子表数值转换文本

wzy 4 ay önce
ebeveyn
işleme
46197e06e4

+ 6 - 7
mjava-mc/src/main/java/com/malk/mc/controller/McYdController.java

@@ -1,24 +1,17 @@
 package com.malk.mc.controller;
 
 
-import cn.hutool.core.date.DateUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.malk.core.McProject;
 import com.malk.mc.service.McYdService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
-import com.malk.server.dingtalk.DDConf;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.service.aliwork.YDService;
-import com.malk.service.dingtalk.DDClient;
 import com.malk.utils.PublicUtil;
-import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.logging.log4j.util.Strings;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -136,4 +129,10 @@ public class McYdController {
         return mcYdService.initiateApproval(map);
     }
 
+    //子表数值转化为文本,添加千位分隔符
+    @PostMapping("/convertSubTableNumber")
+    public McR convertSubTableNumber(@RequestBody Map map){
+        return mcYdService.convertSubTableNumber(map);
+    }
+
 }

+ 2 - 0
mjava-mc/src/main/java/com/malk/mc/service/McYdService.java

@@ -10,4 +10,6 @@ public interface McYdService {
     void updateFormDataVersion(Map map);
 
     McR initiateApproval(Map map);
+
+    McR convertSubTableNumber(Map map);
 }

+ 39 - 0
mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java

@@ -21,6 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
 import java.util.*;
 
 @Slf4j
@@ -146,6 +148,43 @@ public class McYdServiceImpl implements McYdService {
         return McR.errorParam("参数缺失!");
     }
 
+    @Override
+    public McR convertSubTableNumber(Map map) {
+        String pid = getString(map.get("pid"));
+        String formInstId = getString(map.get("formInstId"));
+        String tableField = getString(map.get("tableField"));
+        String numberFieldCode = getString(map.get("numFileCode"));
+        String textFieldCode = getString(map.get("textFieldCode"));
+
+        if (Strings.isNotBlank(pid)){
+            MDC.put("MDC_KEY_PID",pid);
+
+            if (Strings.isNotBlank(formInstId)){
+                DDR_New ddrNew = ydClient.queryData(YDParam.builder()
+                        .formInstId(formInstId)
+                        .build(), YDConf.FORM_QUERY.retrieve_id);
+                Map formData = ddrNew.getFormData();
+                List<Map> table = (List<Map>) formData.get(tableField);
+                for (Map item : table) {
+                    BigDecimal number = (BigDecimal) item.get(numberFieldCode);
+                    // 创建一个 DecimalFormat 实例,指定千位分隔符模式
+                    DecimalFormat df = new DecimalFormat("#,###.00");
+
+                    // 格式化 double 数值
+                    String formattedText = df.format(number);
+                    item.put(textFieldCode,formattedText);
+                }
+
+                ydClient.operateData(YDParam.builder()
+                        .formInstId(formInstId)
+                        .useLatestVersion(true)
+                        .updateFormDataJson(JSONObject.toJSONString(formData))
+                        .build(), YDConf.FORM_OPERATION.update);
+            }
+        }
+        return McR.success();
+    }
+
     private String getString(Object obj){
         return obj == null ? "" : obj.toString();
     }