wzy 7 ヶ月 前
コミット
f19467dcb8

+ 70 - 0
mjava-jianhui/pom.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <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.jianhui</groupId>
+    <artifactId>mjava-jianhui</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.malk</groupId>
+            <artifactId>base</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>k3cloud</artifactId>
+            <version>8.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.0</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>jianhui</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <executable>true</executable>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 17 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/JianhuiApplication.java

@@ -0,0 +1,17 @@
+package com.malk.jianhui;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication(scanBasePackages = {"com.malk"})
+@EnableScheduling
+public class JianhuiApplication {
+    public static void main(String[] args) {
+        try {
+            SpringApplication.run(JianhuiApplication.class,args);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+}

+ 22 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/common/SeqHelper.java

@@ -0,0 +1,22 @@
+package com.malk.jianhui.common;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class SeqHelper {
+    static long seq = 0L;
+    static int mod = 10000;
+
+    public SeqHelper() {
+    }
+
+    public static long genSeq() {
+        return ++seq;
+    }
+
+    public static String genNumber(String pre) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMHHmmss");
+        String id = sdf.format(new Date());
+        return pre == null ? id + (genSeq() + (long)mod) : pre + id + (genSeq() + (long)mod);
+    }
+}

+ 32 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/config/KDWebApiConf.java

@@ -0,0 +1,32 @@
+package com.malk.jianhui.config;
+
+import com.alibaba.fastjson.JSON;
+import com.malk.utils.UtilMap;
+import com.malk.utils.UtilString;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "kingdee")
+@Slf4j
+public class KDWebApiConf {
+
+    private String XKDApiAcctID;
+
+    private String XKDApiUserName;
+
+    private String XKDApiAppID;
+
+    private String XKDApiAppSec;
+
+    private String XKDApiServerUrl;
+
+}

+ 29 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/config/KDWebApiConfig.java

@@ -0,0 +1,29 @@
+package com.malk.jianhui.config;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+public class KDWebApiConfig {
+    private Properties properties = new Properties();
+
+    public KDWebApiConfig(String filePath) throws IOException {
+        try (FileInputStream input = new FileInputStream(filePath)) {
+            properties.load(input);
+        }
+    }
+
+    public String getProperty(String key) {
+        return properties.getProperty(key);
+    }
+
+    public static void main(String[] args) {
+        try {
+            KDWebApiConfig config = new KDWebApiConfig("mjava-jianhui/src/main/resources/application-dev.yml");
+            System.out.println("AcctID: " + config.getProperty("X-KDApi-AcctID"));
+            // 打印其他属性...
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 26 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java

@@ -0,0 +1,26 @@
+package com.malk.jianhui.controller;
+
+import com.malk.jianhui.config.KDWebApiConf;
+import com.malk.jianhui.service.JianhuiService;
+import com.malk.server.common.McR;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class JianhuiController {
+
+    @Autowired
+    private JianhuiService jianhuiService;
+
+    @Autowired
+    private KDWebApiConf kdWebApiConf;
+
+    @GetMapping("/test")
+    public McR test() {
+
+        return jianhuiService.savePurchaseOrder();
+    }
+
+
+}

+ 33 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/Customer.java

@@ -0,0 +1,33 @@
+package com.malk.jianhui.entity;
+
+public class Customer {
+    long CustID;
+    String FNumber;
+    public long getCustID() {
+        return CustID;
+    }
+    public void setCustID(long custID) {
+        CustID = custID;
+    }
+    public String getFNumber() {
+        return FNumber;
+    }
+    public void setFNumber(String fNumber) {
+        FNumber = fNumber;
+    }
+    public String getFName() {
+        return FName;
+    }
+    public void setFName(String fName) {
+        FName = fName;
+    }
+    String FName;
+
+    String FShortName;
+    public String getFShortName() {
+        return FShortName;
+    }
+    public void setFShortName(String fShortName) {
+        FShortName = fShortName;
+    }
+}

+ 8 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/service/JianhuiService.java

@@ -0,0 +1,8 @@
+package com.malk.jianhui.service;
+
+import com.malk.server.common.McR;
+
+public interface JianhuiService {
+    McR savePurchaseOrder();
+
+}

+ 65 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java

@@ -0,0 +1,65 @@
+package com.malk.jianhui.service.impl;
+
+import com.google.gson.Gson;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.RepoRet;
+import com.kingdee.bos.webapi.entity.SaveParam;
+import com.kingdee.bos.webapi.entity.SaveResult;
+import com.malk.jianhui.common.SeqHelper;
+import com.malk.jianhui.config.KDWebApiConf;
+import com.malk.jianhui.entity.Customer;
+import com.malk.jianhui.service.JianhuiService;
+import com.malk.server.common.McR;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import static org.junit.Assert.fail;
+
+import java.io.*;
+import java.util.Properties;
+import java.util.UUID;
+
+@Service
+public class JianhuiServiceImpl implements JianhuiService {
+    @Autowired
+    private KDWebApiConf kdWebApiConf;
+
+    @Override
+    //保存采购订单
+    public McR savePurchaseOrder() {
+        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
+        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
+        //读取配置,初始化SDK
+        IdentifyInfo iden = new IdentifyInfo();
+        iden.setUserName(kdWebApiConf.getXKDApiUserName());
+        iden.setAppId(kdWebApiConf.getXKDApiAppID());
+        iden.setdCID(kdWebApiConf.getXKDApiAcctID());
+        iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
+        iden.setlCID(2052);
+        iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
+
+        K3CloudApi client = new K3CloudApi(iden);
+        //请求参数,要求为json字符串
+        String jsonData = "{\"CreateOrgId\":0,\"Number\":\"\",\"Id\":\"\",\"IsSortBySeq\":\"false\"}";
+        try{
+            //业务对象标识
+            String formId = "PUR_PurchaseOrder";
+            //调用接口
+            String resultJson = client.view(formId,jsonData);
+
+            //用于记录结果
+            Gson gson = new Gson();
+            //对返回结果进行解析和校验
+            RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
+            if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
+                System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
+            } else {
+                fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
+            }
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        return McR.success();
+    }
+}

+ 48 - 0
mjava-jianhui/src/main/resources/application-dev.yml

@@ -0,0 +1,48 @@
+server:
+  port: 9030
+  servlet:
+    context-path: /jianhui
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/jianhui/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId:
+  appKey:
+  appSecret:
+  corpId:
+  aesKey:
+  token:
+  operator: 344749020127590108
+
+aliwork:
+  appType:
+  systemToken:
+
+#测试环境
+kingdee:
+# 第三方系统登录授权的账套ID
+  X-KDApi-AcctID: 674fb46c1143b6
+  # 第三方系统登录授权的用户
+  X-KDApi-UserName: Administrator
+  # 第三方系统登录授权的应用ID
+  X-KDApi-AppID: 298516_1YdCQ8FK0loe1a0FT+Rt1xzvzMW8TPpo
+  # 第三方系统登录授权的应用密钥
+  X-KDApi-AppSec: c722304cc9b64e5fb1bce4717e8434c8
+  # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
+  X-KDApi-ServerUrl: http://60.204.140.168:8689/k3cloud/
+  # 账套语系,默认2052
+  # X-KDApi-LCID: 2052
+  # 组织编码,启用多组织时配置对应的组织编码才有效
+  # X-KDApi-OrgNum: 100
+  # 允许的最大连接延时,单位为秒
+  # X-KDApi-ConnectTimeout: 120
+  # 允许的最大读取延时,单位为秒
+  # X-KDApi-RequestTimeout: 120
+

+ 27 - 0
mjava-jianhui/src/main/resources/application-prod.yml

@@ -0,0 +1,27 @@
+server:
+  port: 9030
+  servlet:
+    context-path: /jianhui
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/jianhui/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId:
+  appKey:
+  appSecret:
+  corpId:
+  aesKey:
+  token:
+  operator: 344749020127590108
+
+aliwork:
+  appType:
+  systemToken:
+

+ 15 - 0
mjava-jianhui/src/main/resources/application.yml

@@ -0,0 +1,15 @@
+spring:
+  profiles:
+    active: dev
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 100MB
+  http:
+    enabled: false
+
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      id-type: auto

+ 61 - 0
mjava-jianhui/src/main/resources/logback-spring.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="false" scanPeriod="60 seconds">
+    <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="/home/server/log/"/>
+    <property name="FileNamePattern" value="${LOG_HOME}%d{yyyyMM}/%d{dd}"/>
+
+    <!-- 定义控制台输出 -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - [%thread] - %-5level - %logger{50} - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 指定日志文件的名称 -->
+        <!--<file>${FileNamePattern}/info.log</file>-->
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${FileNamePattern}/info-%i.log</fileNamePattern>
+            <MaxHistory>30</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <MaxFileSize>30MB</MaxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+        <discriminator>
+            <Key>processid</Key>
+            <DefaultValue>sys</DefaultValue>
+        </discriminator>
+        <sift>
+            <appender name="FILE-${processid}"
+                      class="ch.qos.logback.core.rolling.RollingFileAppender">
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <FileNamePattern>
+                        ${FileNamePattern}/${processid}.log
+                    </FileNamePattern>
+                </rollingPolicy>
+                <layout class="ch.qos.logback.classic.PatternLayout">
+                    <Pattern>
+                        %d{yyyyMMdd:HH:mm:ss.SSS} [%thread] %-5level %msg%n
+                    </Pattern>
+                </layout>
+            </appender>
+        </sift>
+    </appender>
+
+
+    <!-- 日志输出级别 -->
+    <logger name="org.springframework" level="debug"  additivity="false"/>
+    <logger name="com.malk.connecter" level="debug"/>
+    <root level="INFO">
+        <appender-ref ref="stdout"/>
+        <appender-ref ref="appLogAppender"/>
+        <appender-ref ref="SIFT"/>
+    </root>
+</configuration>