Просмотр исходного кода

杉泰新增中间表 定时同步水单到评论

wzy 1 год назад
Родитель
Сommit
b357f32c97

+ 20 - 0
mjava-shantai/pom.xml

@@ -8,6 +8,7 @@
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.2.0.RELEASE</version> <!-- 使用最新的稳定版或其他适用版本 -->
+        <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
     <groupId>com.malk.santai</groupId>
@@ -34,6 +35,25 @@
             <artifactId>base</artifactId>
             <version>1.0-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>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 5 - 0
mjava-shantai/src/main/java/com/malk/shantai/ShantaiApplication.java

@@ -1,9 +1,14 @@
 package com.malk.shantai;
 
+import org.apache.ibatis.annotations.Mapper;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @SpringBootApplication(scanBasePackages = {"com.malk"})
+@EnableScheduling
+@MapperScan("com.malk.shantai.mapper")
 public class ShantaiApplication {
     public static void main(String[] args) {
         try {

+ 2 - 2
mjava-shantai/src/main/java/com/malk/shantai/controller/StController.java

@@ -17,7 +17,7 @@ public class StController{
 
     //新增评论
     @GetMapping("/comment")
-    public void comment(Map map) {
-        stDingProcService.commentSync(map);
+    public void comment(Map map,String flowId) {
+        stDingProcService.commentSync(map,flowId);
     }
 }

Разница между файлами не показана из-за своего большого размера
+ 18 - 3
mjava-shantai/src/main/java/com/malk/shantai/controller/StYkbController.java


+ 23 - 0
mjava-shantai/src/main/java/com/malk/shantai/entity/Shantai.java

@@ -0,0 +1,23 @@
+package com.malk.shantai.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+@TableName(value = "shantai")
+@Data
+public class Shantai {
+    private String id;
+
+    //单据id
+    private String flowId;
+
+    //审批实例id
+    private String procInstId;
+
+    //评论同步状态 1:评论已同步水单 2:评论已同步状态 3:评论未同步
+    private String state;
+
+    //有效位 1:正常  0:删除
+    private String validFlag;
+
+
+}

+ 10 - 0
mjava-shantai/src/main/java/com/malk/shantai/mapper/ShantaiMapper.java

@@ -0,0 +1,10 @@
+package com.malk.shantai.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.shantai.entity.Shantai;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ShantaiMapper extends BaseMapper<Shantai> {
+
+}

+ 7 - 2
mjava-shantai/src/main/java/com/malk/shantai/service/StDingProcService.java

@@ -1,13 +1,15 @@
 package com.malk.shantai.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.malk.server.common.McR;
+import com.malk.shantai.entity.Shantai;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.util.Map;
 
-public interface StDingProcService {
+public interface StDingProcService extends IService<Shantai> {
 
     void fkdSync(String procInstId);
 
@@ -16,7 +18,7 @@ public interface StDingProcService {
      * @param map
      * @return
      */
-    McR commentSync(Map map);
+    McR commentSync(Map map,String flowId);
 
     /**
      * 根据单据id获取单据信息
@@ -26,4 +28,7 @@ public interface StDingProcService {
     Map getFlowInfo(String flowId);
 
     void downloadNet(String netUrl, String path);
+
+    void commentSyncAll();
+
 }

+ 55 - 2
mjava-shantai/src/main/java/com/malk/shantai/service/impl/StDingProcServiceImpl.java

@@ -3,9 +3,13 @@ package com.malk.shantai.service.impl;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.shantai.config.StEkbConfig;
+import com.malk.shantai.entity.Shantai;
+import com.malk.shantai.mapper.ShantaiMapper;
 import com.malk.shantai.service.StDingProcService;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Workflow;
@@ -27,7 +31,7 @@ import java.util.*;
 
 @Service
 @Slf4j
-public class StDingProcServiceImpl implements StDingProcService {
+public class StDingProcServiceImpl extends ServiceImpl<ShantaiMapper, Shantai> implements StDingProcService {
 
     @Autowired
     private DDClient_Workflow ddClient_workflow;
@@ -38,6 +42,9 @@ public class StDingProcServiceImpl implements StDingProcService {
     @Autowired
     private StEkbConfig stEkbConfig;
 
+    @Autowired
+    private ShantaiMapper shantaiMapper;
+
     @Value("${download.path}")
     private String filePath;
 
@@ -209,7 +216,18 @@ public class StDingProcServiceImpl implements StDingProcService {
     }
 
     @Override
-    public McR commentSync(Map map){
+    public McR commentSync(Map map,String flowId){
+        //查询表中是否存在同步评论记录
+        LambdaQueryWrapper<Shantai> shantaiLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        shantaiLambdaQueryWrapper.eq(Shantai::getFlowId,flowId)
+                .eq(Shantai::getValidFlag,"1");
+        Shantai shantai = shantaiMapper.selectOne(shantaiLambdaQueryWrapper);
+
+        if (Objects.nonNull(shantai) && shantai.getState().equals("1")){
+            log.info("该单据Id:{}已同步过水单,本次不进行同步",flowId);
+            return McR.success();
+        }
+
         //获取提交人
         String userId = map.get("userId").toString();
         DDR_New ddrNew = (DDR_New) UtilHttp.doPost("https://oapi.dingtalk.com/topapi/v2/user/get", null, ddClient.initTokenParams(), UtilMap.map("userid", userId), DDR_New.class);
@@ -241,9 +259,29 @@ public class StDingProcServiceImpl implements StDingProcService {
         String state = map.get("state").toString();
         String procInstId = map.get("procInstId").toString();
 
+        if (Objects.nonNull(shantai) && dentries.isEmpty()){
+            log.info("该单据Id:{}本次无水单上传,不进行同步",flowId);
+            return McR.success();
+        }
+
         //新增评论
         comment(dentries,state,userId,procInstId);
 
+        //更新表中同步状态
+        if (dentries.isEmpty()){
+            shantai.setState("2");
+        }else {
+            shantai.setState("1");
+        }
+        if (Objects.isNull(shantai)){
+            shantai.setFlowId(flowId);
+            shantai.setProcInstId(procInstId);
+            shantaiMapper.insert(shantai);
+        }else {
+            //更新评论状态
+            shantaiMapper.updateById(shantai);
+        }
+
         return McR.success();
     }
 
@@ -328,6 +366,21 @@ public class StDingProcServiceImpl implements StDingProcService {
         }
     }
 
+    @Override
+    public void commentSyncAll() {
+        //获取所有评论未同步水单的单据列表
+        LambdaQueryWrapper<Shantai> shantaiLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        shantaiLambdaQueryWrapper.eq(Shantai::getState,"2")
+                .eq(Shantai::getValidFlag,"1");
+        List<Shantai> shantaiList = shantaiMapper.selectList(shantaiLambdaQueryWrapper);
+        for (Shantai shantai : shantaiList) {
+            String flowId = shantai.getFlowId();
+            log.info("开始定时同步评论水单:{}",flowId);
+            Map flowInfo = getFlowInfo(flowId);
+            commentSync(flowInfo,flowId);
+        }
+    }
+
     private void comment(List<Map> dentries, String state, String userId, String procInstId) {
         Map body = new HashMap<>();
         Map fileMap = new HashMap<>();

+ 18 - 0
mjava-shantai/src/main/resources/application-dev.yml

@@ -3,6 +3,12 @@ server:
   servlet:
     context-path: /shantai
 
+spring:
+  datasource:
+    url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=GMT%2B8
+    username: root
+    password: cp-root@2022++
+    driver-class-name: com.mysql.cj.jdbc.Driver
 enable:
   scheduling: false
 logging:
@@ -11,6 +17,18 @@ logging:
   level:
     com.malk.*: debug
 
+mybatis-plus:
+  configuration:
+    #开启驼峰命名自动映射
+    map-underscore-to-camel-case: true
+    #开启日志打印
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  type-aliases-package: com.malk.shantai.entity
+  #扫描mapper文件
+  mapper-locations: classpath:mapper/*.xml
+
+
+
 # dingtalk
 dingtalk:
   agentId: 3088485347

+ 8 - 0
mjava-shantai/src/main/resources/mapper/ShantaiMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.malk.shantai.mapper.ShantaiMapper">
+
+
+</mapper>
+

+ 1 - 4
mjava-shantai/src/test/java/com/malk/shantai/DdTest.java

@@ -48,7 +48,7 @@ public class DdTest {
     @Test
     public void test2(){
         //付款后回写到OA评论
-        stDingProcService.commentSync(null);
+        stDingProcService.commentSync(null,null);
     }
 
     @Test
@@ -73,9 +73,6 @@ public class DdTest {
 
     }
 
-
-
-
     private String getToken(){
         String result= HttpUtil.post(stEkbConfig.getPreUrl().concat("/api/openapi/v1/auth/getAccessToken"),JSONObject.toJSONString(UtilMap.map("appKey, appSecurity",stEkbConfig.getAppKey(),stEkbConfig.getAppSecurity())));
         return JSONObject.parseObject(result).getJSONObject("value").getString("accessToken");