Bläddra i källkod

推送智能合同字段无值修改,前世方式,用印方式,合同期限类型,金额类型

fyz 1 månad sedan
förälder
incheckning
d0b49a9556

+ 2 - 2
mjava-mankalong/src/main/java/com/malk/mankalong/controller/SubFormImageController.java

@@ -58,8 +58,8 @@ public class SubFormImageController {
     public ResponseEntity<ApiResponse<ApiResponse.BatchResult>> generateImages(
              @RequestBody SubFormImageRequest request) {
 
-        log.info("收到子表转图片请求: formUuid={}, 映射数量={}",
-                request.getFormUuid(), request.getMappings().size());
+        log.info("收到子表转图片请求: formUuid={}",
+                request.getFormUuid());
 
         String downloadUrl = subFormImageService.generateImages(request);
 

+ 16 - 0
mjava-mankalong/src/main/java/com/malk/mankalong/entity/dto/Attachment.java

@@ -0,0 +1,16 @@
+package com.malk.mankalong.entity.dto;
+
+import lombok.Data;
+
+/**
+ * 附件组件
+ */
+@Data
+public class Attachment {
+    private String previewUrl;
+    private String ext;
+    private String name;
+    private String downloadUrl;
+    private String url;
+
+}

+ 1 - 1
mjava-mankalong/src/main/java/com/malk/mankalong/schedule/ContractTask.java

@@ -25,7 +25,7 @@ public class ContractTask {
      */
     @Scheduled(cron = "0 0/5 * * * ?")
     void productCosts() {
-        log.info("开始跑批更新NC生产成本");
+        log.info("开始跑批更新新生成的合同附件");
 
         List<Map> allFillTaskId = contractTemplateService.getAllFillTaskId();
         allFillTaskId.forEach(e->{

+ 22 - 5
mjava-mankalong/src/main/java/com/malk/mankalong/service/Impl/ContractTemplateService.java

@@ -3,6 +3,7 @@ package com.malk.mankalong.service.Impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.malk.mankalong.entity.dto.Attachment;
 import com.malk.mankalong.entity.dto.ResultQueryRequest;
 import com.malk.mankalong.entity.dto.TaskCreateRequest;
 import com.malk.mankalong.entity.vo.ResultQueryResult;
@@ -11,6 +12,7 @@ import com.malk.mankalong.enums.TypeEnum;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
+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;
@@ -157,16 +159,18 @@ public class ContractTemplateService {
 
             String imageFilePath = result.getDownloadUrl();
             String fileName = parseFileName(imageFilePath);
-            Map formData = ydClient.queryData(YDParam.builder()
+            DDR_New ddr_new = ydClient.queryData(YDParam.builder()
                             .appType(appType)
                             .systemToken(systemToken)
                             .formInstanceId(instanceId)
                             .useLatestVersion(true)
                             .build(),
-                    YDConf.FORM_QUERY.retrieve_id).getFormData();
-
+                    YDConf.FORM_QUERY.retrieve_id);
+            Map formData = ddr_new.getFormData();
+            Map originator = ddr_new.getOriginator();
+            String userId = UtilMap.getString(originator, "userId");
             String formType = UtilMap.getString(formData, "textField_mspzgras");
-            Map uploadInfo = ddImplService.uploadFileFormUrlForKnowledge(ddClient.getAccessToken(), "02145933103936490950", TypeEnum.getDescByCode(formType), imageFilePath,fileName);
+            Map uploadInfo = ddImplService.uploadFileFormUrlForKnowledge(ddClient.getAccessToken(), userId, TypeEnum.getDescByCode(formType), imageFilePath,fileName);
 
             log.info("文件上传信息:{}",uploadInfo);
             String resourceUrl = "https://alidocs.dingtalk.com/i/nodes/"+UtilMap.getString(uploadInfo,"uuid") +"?utm_scene=team_space";
@@ -181,12 +185,25 @@ public class ContractTemplateService {
 //
 //            log.info("文件上传信息:{}",uploadInfo);
 //
+            ArrayList<Attachment> attachments = new ArrayList<>();
+            Attachment attachment = new Attachment();
+            attachment.setPreviewUrl(resourceUrl);
+            attachment.setExt(UtilMap.getString(uploadInfo, "extension"));
+            attachment.setName(fileName);
+            attachment.setDownloadUrl(resourceUrl);
+            attachment.setUrl(resourceUrl);
+
+            attachments.add(attachment);
             ydClient.operateData(YDParam.builder()
                     .appType(appType)
                     .systemToken(systemToken)
                     .formInstanceId(instanceId)
                     .useLatestVersion(true)
-                    .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_msnynxia, radioField_msnynxi8", resourceUrl + ", 是")))
+                    .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_msve6for, textField_msve6fos, " +
+                                    "textField_msve6fot, textField_msve6fou, textField_msve6fox, textField_msnynxia, " +
+                                    "radioField_msnynxi8, attachmentField_msv7rz7m", UtilMap.getString(uploadInfo, "spaceId"), fileName,
+                            UtilMap.getString(uploadInfo, "size"), UtilMap.getString(uploadInfo, "extension"),
+                            UtilMap.getString(uploadInfo, "id"),resourceUrl,"是",attachments)))
                     .build(), YDConf.FORM_OPERATION.update);
         }else {
             return McR.error("500","文件尚未合成");

+ 51 - 25
mjava-mankalong/src/main/java/com/malk/mankalong/service/Impl/PayServiceImpl.java

@@ -492,28 +492,35 @@ public class PayServiceImpl implements PayService {
         Map originator = ddr_new.getOriginator();
         String userId = UtilMap.getString(originator, "userId");
 
+        //所有附件类型使用
         List<Map<String, Object>> resultList = new ArrayList<>();
+        //写入OA审批的数据格式
+        List<Map> formValue = new ArrayList<>();
+
         //附件
         String key = UtilMap.getString(data, "attachmentKey");
         String value = UtilMap.getString(formData, key);
 
-        //写入OA审批的数据格式
-        List<Map> formValue = new ArrayList<>();
+        resultList.add(UtilMap.map("spaceId, fileName, fileSize, fileType, fileId", UtilMap.getString(formData, "textField_msve6for"),
+                UtilMap.getString(formData, "textField_msve6fos"), UtilMap.getString(formData, "textField_msve6fot"),
+                UtilMap.getString(formData, "textField_msve6fou"), UtilMap.getString(formData, "textField_msve6fox")));
 
         //处理宜搭附件绑定至OA审批
         JSONArray jsonArray = JSONArray.parseArray(value);
-        jsonArray.forEach(e->{
-            JSONObject jsonObject = JSONObject.parseObject(e.toString());
-            String downloadUrl = jsonObject.getString("downloadUrl");
-
-            String fileFullName = jsonObject.getString("name");
-            String url = ydClient.convertTemporaryUrl(downloadUrl, appType, systemToken);
-
-            Map map = ddService.uploadFileFormUrlForOverflow(ddClient.getAccessToken(), userId, url, fileFullName, fileFullName.split("\\.")[1]);
-            Map<String, Object> result = UtilMap.map("spaceId, fileName, fileSize, fileType, fileId", UtilMap.getString(map, "spaceId"), fileFullName,
-                    UtilMap.getString(map, "size"), UtilMap.getString(map, "extension"), UtilMap.getString(map, "id"));
-            resultList.add(result);
-        });
+        if (ObjectUtil.isNotNull(jsonArray) && jsonArray.size()>0){
+            jsonArray.forEach(e->{
+                JSONObject jsonObject = JSONObject.parseObject(e.toString());
+                String downloadUrl = jsonObject.getString("downloadUrl");
+
+                String fileFullName = jsonObject.getString("name");
+                String url = ydClient.convertTemporaryUrl(downloadUrl, appType, systemToken);
+
+                Map map = ddService.uploadFileFormUrlForOverflow(ddClient.getAccessToken(), userId, url, fileFullName, fileFullName.split("\\.")[1]);
+                Map<String, Object> result = UtilMap.map("spaceId, fileName, fileSize, fileType, fileId", UtilMap.getString(map, "spaceId"), fileFullName,
+                        UtilMap.getString(map, "size"), UtilMap.getString(map, "extension"), UtilMap.getString(map, "id"));
+                resultList.add(result);
+            });
+        }
         formValue.add(UtilMap.map("name, value","合同正文, " + JSON.toJSONString(resultList)));
 
         //合同编号生成方式
@@ -623,16 +630,25 @@ public class PayServiceImpl implements PayService {
         List<Map> ourDetails = new ArrayList<>();
 
         key = UtilMap.getString(data, "ourDetail");
-        String[] split = key.split(",");
-        for (int i = 0; i < split.length; i++) {
-            value = UtilMap.getString(formData, split[i]);
-
+        if ("/".equals(key)){
             Map ourDetail = UtilMap.empty();
-            ourDetail.put("value", value);
+            ourDetail.put("value", "/");
             ourDetail.put("name", "我方主体名称");
             ourDetail.put("bizAlias","contract_mine_company_name");
 
             ourDetails.add(ourDetail);
+        }else {
+            String[] split = key.split(",");
+            for (int i = 0; i < split.length; i++) {
+                value = UtilMap.getString(formData, split[i]);
+
+                Map ourDetail = UtilMap.empty();
+                ourDetail.put("value", value);
+                ourDetail.put("name", "我方主体名称");
+                ourDetail.put("bizAlias","contract_mine_company_name");
+
+                ourDetails.add(ourDetail);
+            }
         }
 
 //        ourDetails.add(UtilMap.map("name, value", "我方负责人, 待补充"));
@@ -644,17 +660,27 @@ public class PayServiceImpl implements PayService {
         List<Map> otherDetails = new ArrayList<>();
 
         key = UtilMap.getString(data, "otherDetail");
-        split = key.split(",");
-        for (int i = 0; i < split.length; i++) {
-
-            value = UtilMap.getString(formData, split[i]);
-
+        if ("/".equals(key)){
             Map otherDetail = UtilMap.empty();
-            otherDetail.put("value", value);
+            otherDetail.put("value", "/");
             otherDetail.put("name", "对方主体名称");
             otherDetail.put("bizAlias", "contract_opposite_company_name");
 
             otherDetails.add(otherDetail);
+
+        }else {
+            String[] split = key.split(",");
+            for (int i = 0; i < split.length; i++) {
+
+                value = UtilMap.getString(formData, split[i]);
+
+                Map otherDetail = UtilMap.empty();
+                otherDetail.put("value", value);
+                otherDetail.put("name", "对方主体名称");
+                otherDetail.put("bizAlias", "contract_opposite_company_name");
+
+                otherDetails.add(otherDetail);
+            }
         }
 //        otherDetails.add(UtilMap.map("name, value", "对方负责人, 待补充"));
         otherLastList.add(otherDetails);

+ 8 - 2
mjava-mankalong/src/main/java/com/malk/mankalong/service/Impl/SubFormImageServiceImpl.java

@@ -206,16 +206,22 @@ public class SubFormImageServiceImpl implements SubFormImageService {
             String downloadUrl = null;
             String fillTaskId = "";
             Boolean isGoOn = true;
-            if (!task.getData().getRenderTaskId().isEmpty()){
+            if (ObjectUtil.isNotNull(task.getData().getRenderTaskId()) && !task.getData().getRenderTaskId().isEmpty()){
                 fillTaskId = task.getData().getRenderTaskId();
             }else {
                 fillTaskId = task.getData().getFillTaskId();
             }
+            int count = 0;
             while (isGoOn){
-                McR<ResultQueryResult> resultQueryResultMcR = contractTemplateService.pollUntilComplete(fillTaskId, 30, 1000);
+                McR<ResultQueryResult> resultQueryResultMcR = contractTemplateService.pollUntilComplete(fillTaskId, 5, 1000);
                 if (resultQueryResultMcR.isSuccess()){
                     isGoOn = false;
                     downloadUrl = resultQueryResultMcR.getData().getDownloadUrl();
+                }else {
+                    count++;
+                    if (count == 15){
+                        isGoOn = false;
+                    }
                 }
             }
 

+ 4 - 4
mjava-mankalong/src/main/java/com/malk/mankalong/util/TableImageGenerator.java

@@ -23,10 +23,10 @@ import java.util.List;
 public class TableImageGenerator {
 
     // ===== 颜色常量 =====
-    private static final Color HEADER_BG = new Color(64, 158, 255);
-    private static final Color HEADER_FG = Color.WHITE;
+    private static final Color HEADER_BG = Color.WHITE;
+    private static final Color HEADER_FG = Color.BLACK;
     private static final Color ROW_BG_EVEN = Color.WHITE;
-    private static final Color ROW_BG_ODD = new Color(245, 247, 250);
+    private static final Color ROW_BG_ODD = Color.WHITE;
     private static final Color GRID_COLOR = new Color(220, 223, 230);
     private static final Color TEXT_COLOR = new Color(48, 49, 51);
     private static final Color TITLE_COLOR = new Color(48, 49, 51);
@@ -406,7 +406,7 @@ public class TableImageGenerator {
         }
 
         // 外边框
-        g2d.drawRect(0, startY, totalWidth - 1, y - startY);
+        g2d.drawRect(1, startY - 1, totalWidth - 3, y - startY);
     }
 
     /**