Browse Source

Merge remote-tracking branch 'origin/master'

lfx 9 months ago
parent
commit
e947e554b3

+ 5 - 13
mjava-kabeiyi/pom.xml

@@ -40,19 +40,11 @@
             <artifactId>base</artifactId>
             <version>1.1-SNAPSHOT</version>
         </dependency>
-
-        <!--<dependency>-->
-            <!--<groupId>mysql</groupId>-->
-            <!--<artifactId>mysql-connector-java</artifactId>-->
-            <!--<version>8.0.32</version>-->
-            <!--<scope>runtime</scope>-->
-        <!--</dependency>-->
-
-        <!--<dependency>-->
-            <!--<groupId>com.baomidou</groupId>-->
-            <!--<artifactId>mybatis-plus-boot-starter</artifactId>-->
-            <!--<version>3.5.3.2</version>-->
-        <!--</dependency>-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibabacloud-ocr_api20210707</artifactId>
+            <version>3.0.2</version>
+        </dependency>
 
     </dependencies>
 

+ 9 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java

@@ -73,5 +73,14 @@ public class KabeiyiController {
         return kabeiyiService.pushProcInstToYD2(map);
     }
 
+    //发起问题整改审批
+    @PostMapping("addQuestionApproval")
+    public McR addQuestionApproval(@RequestBody Map map){
+        return kabeiyiService.addQuestionApproval(map);
+    }
 
+    @GetMapping("/ocr")
+    public McR ocr(){
+        return kabeiyiService.ocr();
+    }
 }

+ 9 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/KabeiyiService.java

@@ -27,4 +27,13 @@ public interface KabeiyiService {
      * @return
      */
     McR pushProcInstToYD2(Map map);
+
+    /**
+     * 发起问题整改审批
+     * @param map
+     * @return
+     */
+    McR addQuestionApproval(Map map);
+
+    McR ocr();
 }

+ 70 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/KabeiyiServiceImpl.java

@@ -2,20 +2,26 @@ package com.malk.kabeiyi.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.malk.core.McProject;
 import com.malk.kabeiyi.service.KabeiyiService;
+import com.malk.kabeiyi.util.RecognizeAllText;
 import com.malk.kabeiyi.util.U8Util;
 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;
+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.service.dingtalk.DDClient_Workflow;
+import com.malk.utils.PublicUtil;
 import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilToken;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.util.Strings;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -39,6 +45,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
     @Autowired
     private YDService ydService;
 
+    @Autowired
+    private YDClient ydClient;
+
     @Autowired
     private DDConf ddConf;
 
@@ -48,6 +57,12 @@ public class KabeiyiServiceImpl implements KabeiyiService {
     @Value("${tcdingtalk.appSecret}")
     private String appSecret;
 
+    @Value("${aliwork.accessKeyId}")
+    private String accessKeyId;
+
+    @Value("${aliwork.accessKeySecret}")
+    private String accessKeySecret;
+
     //审批实例url前缀(卡倍亿)
     private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
     //宜搭-关联数据(卡倍亿)
@@ -57,6 +72,10 @@ public class KabeiyiServiceImpl implements KabeiyiService {
     private static final String PROC_INST_PREFIX_URL2 = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=ding3ea249a3b5b466d0f2c783f7214b6d69#/plainapproval?procInstId=";
     //宜搭-关联数据(特充)
     private static final String RELATION2 = "FORM-51E17EFB52C14C9CB9E00168FED2BC18LQ6H";
+    //问题整改表
+    private static final String QUESTION = "FORM-89F515967FF94C62A9031F28EF6000B1YV5Q";
+    //问题整改表流程code
+    private static final String QUESTION_PROC_CODE = "TPROC--DP5660A1LEXNP1S37P7KU9GCHD5U3HB6C360M5";
 
     //关联表单(卡倍亿)
     private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
@@ -284,6 +303,57 @@ public class KabeiyiServiceImpl implements KabeiyiService {
         return McR.errorParam("审批实例不存在!");
     }
 
+    @Override
+    public McR addQuestionApproval(Map map) {
+        MDC.put("MDC_KEY_PID","1009");
+
+        if (Objects.isNull(map.get("formInstId"))){
+            return McR.errorParam("formInstId不能为空!");
+        }
+        String formInstId = map.get("formInstId").toString();
+
+        DDR_New ddrNew = ydClient.queryData(YDParam.builder()
+                .formInstId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id);
+        Map formData = ddrNew.getFormData();
+        List<String> reviewerUserIds = (List<String>) formData.get("employeeField_m061zye5_id");
+        List<String> rectificationUserIds = (List<String>) formData.get("employeeField_m061zyeq_id");
+        List<String> deptIds = (List<String>) formData.get("departmentSelectField_m0c3qbjn_id");
+        formData.put("departmentSelectField_m0c3qbjn",deptIds);
+        formData.put("employeeField_m061zye5",rectificationUserIds);
+        formData.put("employeeField_m061zyeq",reviewerUserIds);
+        //发起审批
+        String[] yida = McProject.getYida("1009");
+        Map<String,Object> body = new HashMap<>();
+
+        body.put("appType",yida[0]);
+        body.put("systemToken",yida[1]);
+        body.put("userId",reviewerUserIds.get(0));
+        body.put("formUuid",QUESTION);
+        body.put("processCode",QUESTION_PROC_CODE);
+        body.put("formDataJson", JSONObject.toJSONString(formData));
+
+        UtilHttp.doPost("https://api.dingtalk.com/v1.0/yida/processes/instances/start", ddClient.initTokenHeader(), null, body, DDR_New.class);
+        return McR.success();
+    }
+
+    @Override
+    public McR ocr() {
+        try {
+            String content = RecognizeAllText.recognizeText("C:\\Users\\EDY\\Desktop\\3.jpg","Table",accessKeyId,accessKeySecret);
+            return McR.success(content);
+        }catch (Exception e){
+            System.out.println(e.getMessage());
+        }
+
+        return McR.errorUnknown("识别失败!");
+    }
+
+
+    private String getString(Object obj){
+        return obj == null ? "" : obj.toString();
+    }
+
     public String getTcAccessToken() {
         String accessToken = UtilToken.get("tc-invalid-token-dingtalk");
         if (StringUtils.isNotBlank(accessToken)) {

+ 2 - 2
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/service/impl/McProjectServiceImpl.java

@@ -29,7 +29,7 @@ public class McProjectServiceImpl implements McProjectService {
         MDC.put("MDC_KEY_PID","1002");
         McProject.addYida("1002",new String[] {"APP_YNE2466O27IZFF9VVLQ1","T6666H71IOAMFEZR9I4O08U8TWJL2VAACWWXLJ4"});
         McProject.addYida("1003",new String[] {"APP_CRSI2VXGJE74J60OEFPD","C1A66XB1JOAMVXWCE3H28B05EU7T2F3AM4XXLN3"});
-
-        log.info("项目加载完毕:1002,1003");
+        McProject.addYida("1009",new String[] {"APP_S5U4NUUK2T4RF8UR17EN","JL666BD1QGXNTZQ5DXEI97Q1USK92I1G6160MTCF"});
+        log.info("项目加载完毕:1002,1003,1009");
     }
 }

+ 101 - 0
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/util/RecognizeAllText.java

@@ -0,0 +1,101 @@
+package com.malk.kabeiyi.util;
+
+import cn.hutool.json.JSONObject;
+import com.aliyun.auth.credentials.Credential;
+import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
+import com.aliyun.core.http.HttpClient;
+import com.aliyun.core.http.HttpMethod;
+import com.aliyun.core.http.ProxyOptions;
+import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
+import com.aliyun.sdk.service.ocr_api20210707.models.*;
+import com.aliyun.sdk.service.ocr_api20210707.*;
+import com.google.gson.Gson;
+import darabonba.core.RequestConfiguration;
+import darabonba.core.client.ClientOverrideConfiguration;
+import darabonba.core.utils.CommonUtil;
+import darabonba.core.TeaPair;
+import org.springframework.beans.factory.annotation.Value;
+
+//import javax.net.ssl.KeyManager;
+//import javax.net.ssl.X509TrustManager;
+import java.net.InetSocketAddress;
+import java.nio.file.Files;
+import java.time.Duration;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.io.*;
+import java.util.stream.Collectors;
+
+public class RecognizeAllText {
+    /*@Value("${aliyun.accessKeyId}")
+    private static String accessKeyId;
+
+    @Value("${aliyun.accessKeySecret}")
+    private static String accessKeySecret;*/
+
+    public static String recognizeText(String filePath,String type,String accessKeyId,String accessKeySecret) throws Exception {
+        if (!type.equals("Advanced") && !type.equals("Table")){
+            return null;
+        }
+        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
+                .accessKeyId(accessKeyId)
+                .accessKeySecret(accessKeySecret)
+//                .securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
+                .build());
+
+        // Configure the Client
+        AsyncClient client = AsyncClient.builder()
+                .region("cn-hangzhou") // Region ID
+                //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
+                .credentialsProvider(provider)
+                //.serviceConfiguration(Configuration.create()) // Service-level configuration
+                // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
+                .overrideConfiguration(
+                        ClientOverrideConfiguration.create()
+                                // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
+                                .setEndpointOverride("ocr-api.cn-hangzhou.aliyuncs.com")
+                        //.setConnectTimeout(Duration.ofSeconds(30))
+                )
+                .build();
+
+        // Parameter settings for API request
+        InputStream bodyStream = Files.newInputStream(new File(filePath).toPath());
+        RecognizeAllTextRequest recognizeAllTextRequest = RecognizeAllTextRequest.builder()
+                .type(type)
+                .body(bodyStream)
+                // Request-level configuration rewrite, can set Http request parameters, etc.
+                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
+                .build();
+
+        // Asynchronously get the return value of the API request
+        CompletableFuture<RecognizeAllTextResponse> response = client.recognizeAllText(recognizeAllTextRequest);
+        // Synchronously get the return value of the API request
+        RecognizeAllTextResponse resp = response.get();
+        String jsonString = new Gson().toJson(resp);
+        JSONObject jsonObject = new JSONObject(jsonString);
+
+        Map<String, Object> map = jsonObject.entrySet().stream()
+                .collect(Collectors.toMap(
+                        Map.Entry::getKey,
+                        Map.Entry::getValue
+                ));
+        Map body = (Map) map.get("body");
+        Map data = (Map) body.get("data");
+        String content = String.valueOf(data.get("content"));
+
+        System.out.println(content);
+        // Asynchronous processing of return values
+        /*response.thenAccept(resp -> {
+            System.out.println(new Gson().toJson(resp));
+        }).exceptionally(throwable -> { // Handling exceptions
+            System.out.println(throwable.getMessage());
+            return null;
+        });*/
+
+        // Finally, close the client
+        client.close();
+        return content;
+    }
+
+}
+

+ 5 - 0
mjava-kabeiyi/src/main/resources/application-dev.yml

@@ -56,4 +56,9 @@ teambition:
 aliwork:
   appType: APP_HZ5V1PF2YGBIUCIYOSI5
   systemToken: DIC66I91HJ3MWKL3FAQ5UD46GIR129PR66KXLA
+  accessKeyId: LTAI5tCrLZLGgjfpBEvPK4er
+  accessKeySecret: lIoRZDrwFsJIV1sdGica8SyjViZFGV
 
+aliyun:
+  accessKeyId: LTAI5tCrLZLGgjfpBEvPK4er
+  accessKeySecret: lIoRZDrwFsJIV1sdGica8SyjViZFGV

+ 1 - 1
mjava-kabeiyi/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: prod
+    active: dev
   servlet:
     multipart:
       max-file-size: 100MB

+ 16 - 0
mjava-lingmingguangzi/pom.xml

@@ -45,6 +45,22 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.13</version> <!-- 请检查最新版本 -->
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpmime</artifactId>
+            <version>4.5.13</version> <!-- 请检查最新版本,该库提供了对multipart/form-data的支持 -->
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-http-apache</artifactId>
+            <version>0.2.10-beta</version>
+            <scope>compile</scope>
+        </dependency>
 
 
     </dependencies>

+ 10 - 0
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/controller/LingmingguangziController.java

@@ -102,11 +102,21 @@ public class LingmingguangziController {
         return lingmingguangziService.getTaxRate();
     }
 
+    /**
+     * 新增销售订单
+     * @param map
+     * @return
+     */
     @PostMapping("/addSaleOrder")
     public McR addSaleOrder(@RequestBody Map map) {
         return lingmingguangziService.addSaleOrder(map);
     }
 
+    /**
+     * 更新销售订单
+     * @param map
+     * @return
+     */
     @PostMapping("/updateSaleOrder")
     public McR updateSaleOrder(@RequestBody Map map) {
         return lingmingguangziService.updateSaleOrder(map);

+ 3 - 0
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziService.java

@@ -2,6 +2,7 @@ package com.malk.lingmingguangzi.service;
 
 import com.malk.server.common.McR;
 
+import java.io.IOException;
 import java.util.Map;
 
 public interface LingmingguangziService {
@@ -30,4 +31,6 @@ public interface LingmingguangziService {
     McR addSaleOrder(Map map);
 
     McR updateSaleOrder(Map map);
+
+    String postWithFile(String url, String filePath);
 }

+ 160 - 4
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziServiceImpl.java

@@ -2,10 +2,14 @@ package com.malk.lingmingguangzi.service;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.http.HttpRequest;
+
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import com.alibaba.fastjson.JSONObject;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.algorithms.Algorithm;
 
@@ -20,16 +24,31 @@ import com.malk.server.dingtalk.DDR_New;
 import com.malk.server.teambition.TBConf;
 import com.malk.server.teambition.TBR;
 import com.malk.service.aliwork.YDClient;
+import com.malk.service.dingtalk.DDClient;
 import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import com.malk.utils.UtilToken;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.file.Files;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Service
@@ -44,6 +63,9 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
     @Autowired
     private TBConf tbConf;
 
+    @Autowired
+    private DDClient ddClient;
+
     @Value(value = "${erp.url}")
     private String erpUrl;
 
@@ -53,6 +75,9 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
     @Value(value = "${erp.password}")
     private String password;
 
+    @Value(value = "${erp.filePath}")
+    private String filePath;
+
     private final Object $lock = new Object[0];
 
     private static final Long EXPIRES_IN = 7200000L;
@@ -415,8 +440,33 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
             detail.put("die_model","");//
             return detail;
         }).collect(Collectors.toList());
+        //附件
+        List<Map> list2 = (List<Map>) formData.get("tableField_ly8fxusx");
+        List<Map> makSoFilesList = list2.stream().map(map1 -> {
+            Map detail = new HashMap();
+            String fileType = getString(map1.get("selectField_m0ls7yb8"));
+            if (fileType.equals("合同")){
+                detail.put("fileType","D1_CONTRACT");
+            }else {
+                detail.put("fileType","D2_TECHNICAL_DOC");
+            }
+            List<Map> fileList = (List<Map>) JSONArray.parse(String.valueOf(map1.get("attachmentField_ly8fxusz")));
+            String ydDownloadUrl = fileList.get(0).get("downloadUrl").toString();
+            String fileName = fileList.get(0).get("name").toString();
+            //将downloadurl下载到本地
+            try {
+                downloadFile(ydDownloadUrl, filePath + fileName);
+                System.out.println("文件下载成功!");
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            //上传附件
+            detail.put("files",postWithFile(erpUrl + "pws/sys/common/upload",filePath + fileName));
+            return detail;
+        }).collect(Collectors.toList());
+
         body.put("makSoDetailList",makSoDetailList);
-        body.put("makSoFilesList",new ArrayList<>());
+        body.put("makSoFilesList",makSoFilesList);
 
         Map res = post(erpUrl + "pws/mak/makSalesOrder/add", null, getHeader(), body);
         String orderCode = getString(res.get("result"));
@@ -429,6 +479,39 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
         return McR.success();
     }
 
+    public void downloadFile(String fileURL, String savePath) throws IOException {
+        //若是宜搭附件url 则需获得附件临时免登地址
+        Map<String,Object> param = new HashMap<>();
+        param.put("systemToken",ydConf.getSystemToken());
+        param.put("userId","344749020127590108");//wzy
+        param.put("fileUrl",fileURL);
+
+        fileURL = ((DDR_New) UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/apps/temporaryUrls/" + ydConf.getAppType(), ddClient.initTokenHeader(), param, DDR_New.class)).getResult().toString();
+
+        URL url = new URL(fileURL);
+        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
+        int responseCode = httpConn.getResponseCode();
+
+        // 检查HTTP响应代码是否为200
+        if (responseCode == HttpURLConnection.HTTP_OK) {
+            InputStream inputStream = httpConn.getInputStream();
+            FileOutputStream outputStream = new FileOutputStream(savePath);
+
+            byte[] buffer = new byte[4096];
+            int bytesRead = -1;
+
+            while ((bytesRead = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, bytesRead);
+            }
+
+            outputStream.close();
+            inputStream.close();
+        } else {
+            System.out.println("无法下载文件。HTTP响应代码: " + responseCode);
+        }
+        httpConn.disconnect();
+    }
+
     @Override
     public McR updateSaleOrder(Map map) {
         if (Objects.isNull(map.get("formInstId"))){
@@ -438,8 +521,9 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
         Map formData = ydClient.queryData(YDParam.builder().formInstId(formInstId)
                 .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
 
-        //新销售订单
+        //新销售订单
         Map body = new HashMap();
+        body.put("soCode",getString(formData.get("textField_m0alsjj1")));
         body.put("customerCode",getString(formData.get("textField_ly5m36nw")));//客户编码
         String priority = getString(formData.get("selectField_lwpsp162"));//紧急级别
         switch (priority) {
@@ -480,10 +564,35 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
             detail.put("die_model","");//
             return detail;
         }).collect(Collectors.toList());
+        //附件
+        List<Map> list2 = (List<Map>) formData.get("tableField_ly8fxusx");
+        List<Map> makSoFilesList = list2.stream().map(map1 -> {
+            Map detail = new HashMap();
+            String fileType = getString(map1.get("selectField_m0ls7yb8"));
+            if (fileType.equals("合同")){
+                detail.put("fileType","D1_CONTRACT");
+            }else {
+                detail.put("fileType","D2_TECHNICAL_DOC");
+            }
+            List<Map> fileList = (List<Map>) JSONArray.parse(String.valueOf(map1.get("attachmentField_ly8fxusz")));
+            String ydDownloadUrl = fileList.get(0).get("downloadUrl").toString();
+            String fileName = fileList.get(0).get("name").toString();
+            //将downloadurl下载到本地
+            try {
+                downloadFile(ydDownloadUrl, filePath + fileName);
+                System.out.println("文件下载成功!");
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            //上传附件
+            detail.put("files",postWithFile(erpUrl + "pws/sys/common/upload",filePath + fileName));
+            return detail;
+        }).collect(Collectors.toList());
+
         body.put("makSoDetailList",makSoDetailList);
-        body.put("makSoFilesList",new ArrayList<>());
+        body.put("makSoFilesList",makSoFilesList);
 
-        Map res = post(erpUrl + "pws/mak/makSalesOrder/add", null, getHeader(), body);
+        Map res = put(erpUrl + "pws/mak/makSalesOrder/change", null, getHeader(), body);
 
         return McR.success();
     }
@@ -597,6 +706,53 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
         return result;
     }
 
+    public String postWithFile(String url, String filePath) {
+        // 文件路径
+        File file = new File(filePath);
+
+        // 创建HttpClient实例
+        HttpClient client = HttpClients.createDefault();
+
+        // 创建HttpPost实例
+        HttpPost post = new HttpPost(url);
+
+        // 添加请求头
+        post.setHeader("X-Access-Token", getHeader().get("X-Access-Token"));
+
+        // 使用MultipartEntityBuilder来构建multipart请求
+        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+        builder.addBinaryBody("file", file, ContentType.DEFAULT_BINARY, file.getName());
+
+        // 设置请求体
+        HttpEntity multipart = builder.build();
+        post.setEntity(multipart);
+
+        try {
+            // 发送请求并获取响应
+            org.apache.http.HttpResponse response = client.execute(post);
+
+            // 处理响应
+            // 例如,打印响应状态码
+            System.out.println(response.getStatusLine().getStatusCode());
+            HttpEntity entity = response.getEntity();
+            String fileName = "";
+            // 判断响应实体是否为null
+            if (entity != null) {
+                // 使用EntityUtils读取响应体内容(这里假设是文本类型)
+                String responseString = EntityUtils.toString(entity, "UTF-8"); // 指定字符集
+                System.out.println("Response Body: " + responseString);
+                Map parse = (Map) JSONObject.parse(responseString);
+                fileName = getString(parse.get("message"));
+                // 释放响应实体资源(虽然EntityUtils.toString()在某些HttpClient版本中会自动处理)
+                EntityUtils.consume(entity);
+            }
+            return fileName;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
     @Override
     public McR getTbStageDetails(String stageName) {
         Map<String, Object> result = new HashMap<>();

+ 1 - 7
mjava-lingmingguangzi/src/main/resources/application-dev.yml

@@ -3,12 +3,6 @@ server:
   servlet:
     context-path: /lingmingguangzi
 
-spring:
-  datasource:
-    url: jdbc:mysql://localhost:3306/floe?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
-    username: root
-    password: 111111
-    driver-class-name: com.mysql.cj.jdbc.Driver
 enable:
   scheduling: false
 logging:
@@ -62,4 +56,4 @@ erp:
   url: http://10.12.22.201:9999/
   username: CRM
   password: LMGZCRM2024
-
+  filePath: d:\\

+ 0 - 6
mjava-lingmingguangzi/src/main/resources/application-prod.yml

@@ -3,12 +3,6 @@ server:
   servlet:
     context-path: /lingmingguangzi
 
-spring:
-  datasource:
-    url: jdbc:mysql://localhost:3306/floe?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
-    username: root
-    password: 111111
-    driver-class-name: com.mysql.cj.jdbc.Driver
 enable:
   scheduling: false
 logging:

+ 4 - 4
mjava-zhiyejineng/src/main/java/com/malk/zyjn/service/impl/ZyjnServiceImpl.java

@@ -134,9 +134,7 @@ public class ZyjnServiceImpl implements ZyjnService {
                         .collect(Collectors.toList());*/
                 for (Map attendanceMap : attendanceList) {
                     String situation = attendanceMap.get("value").toString();
-                    if (situation.contains("正常")){
-                        ReflectUtil.invoke(attendance,"setSituation"+index,"工");
-                    }else if (situation.contains("休息")){
+                    if (situation.contains("休息")){
                         ReflectUtil.invoke(attendance,"setSituation"+index,"假");
                     }else if (situation.contains("旷工")){
                         ReflectUtil.invoke(attendance,"setSituation"+index,"工");
@@ -184,7 +182,9 @@ public class ZyjnServiceImpl implements ZyjnService {
                                 }
                             }
                         }
-                    } else {
+                    }else if (situation.contains("正常")){
+                        ReflectUtil.invoke(attendance,"setSituation"+index,"工");
+                    }else {
                         ReflectUtil.invoke(attendance,"setSituation"+index,"工");
                     }
                     index++;