xucaiqin 7 månader sedan
incheckning
21bcf3f2f0

+ 35 - 0
.gitignore

@@ -0,0 +1,35 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 84 - 0
pom.xml

@@ -0,0 +1,84 @@
+<?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.7.9</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com.sckw.erp</groupId>
+    <artifactId>jd-erp</artifactId>
+    <version>1.0.0</version>
+
+    <name>jd-erp</name>
+    <description>金蝶erp对接</description>
+
+    <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>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>com.kingdee.bos.webapi</groupId>
+            <artifactId>k3cloud-webapi</artifactId>
+            <version>8.0.4</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/k3cloud-webapi-sdk-java1.8-v8.2.0.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.0.8</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/gson-2.8.0.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <version>1.3</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/hamcrest-core-1.3.jar</systemPath>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+</project>

+ 14 - 0
src/main/java/com/sckw/erp/ErpApplication.java

@@ -0,0 +1,14 @@
+package com.sckw.erp;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+public class ErpApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ErpApplication.class, args);
+    }
+
+}

+ 22 - 0
src/main/java/com/sckw/erp/common/SeqHelper.java

@@ -0,0 +1,22 @@
+package com.sckw.erp.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);
+    }
+}

+ 33 - 0
src/main/java/com/sckw/erp/controller/IndexController.java

@@ -0,0 +1,33 @@
+package com.sckw.erp.controller;
+
+import com.sckw.erp.service.ApiService;
+import com.sckw.erp.util.R;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @author xucaiqin
+ * @date 2025-05-15 10:43:27
+ */
+@RestController
+@RequestMapping("/query")
+public class IndexController {
+    @Resource
+    private ApiService apiService;
+
+    @GetMapping("/customer")
+    public R<Object> customer(String name,Integer pageNo,Integer pageSize) {
+        return R.ok(apiService.query(name,pageNo,pageSize));
+    }
+
+    @GetMapping("/material")
+    public R<Object> material(String name,Integer pageNo,Integer pageSize) {
+        return R.ok(apiService.queryMaterial(name,pageNo,pageSize));
+    }
+
+
+}

+ 50 - 0
src/main/java/com/sckw/erp/entity/BdCustomer.java

@@ -0,0 +1,50 @@
+package com.sckw.erp.entity;
+
+public class BdCustomer {
+    long CustID;
+    String FNumber;
+    String FName;
+    Long msterID;
+
+    public long getCustID() {
+        return CustID;
+    }
+
+    public void setCustID(long custID) {
+        CustID = custID;
+    }
+
+    public String getFNumber() {
+        return FNumber;
+    }
+
+    public void setFNumber(String FNumber) {
+        this.FNumber = FNumber;
+    }
+
+    public String getFName() {
+        return FName;
+    }
+
+    public void setFName(String FName) {
+        this.FName = FName;
+    }
+
+    public String getFShortName() {
+        return FShortName;
+    }
+
+    public void setFShortName(String FShortName) {
+        this.FShortName = FShortName;
+    }
+
+    String FShortName;
+
+    public Long getMsterID() {
+        return msterID;
+    }
+
+    public void setMsterID(Long msterID) {
+        this.msterID = msterID;
+    }
+}

+ 40 - 0
src/main/java/com/sckw/erp/entity/BdMaterial.java

@@ -0,0 +1,40 @@
+package com.sckw.erp.entity;
+
+public class BdMaterial {
+    String FNumber;
+    String FName;
+    String FCreateOrgId;
+    int FUseOrgId;
+
+    public String getFNumber() {
+        return FNumber;
+    }
+
+    public void setFNumber(String FNumber) {
+        this.FNumber = FNumber;
+    }
+
+    public String getFName() {
+        return FName;
+    }
+
+    public void setFName(String FName) {
+        this.FName = FName;
+    }
+
+    public String getFCreateOrgId() {
+        return FCreateOrgId;
+    }
+
+    public void setFCreateOrgId(String FCreateOrgId) {
+        this.FCreateOrgId = FCreateOrgId;
+    }
+
+    public int getFUseOrgId() {
+        return FUseOrgId;
+    }
+
+    public void setFUseOrgId(int FUseOrgId) {
+        this.FUseOrgId = FUseOrgId;
+    }
+}

+ 100 - 0
src/main/java/com/sckw/erp/service/ApiService.java

@@ -0,0 +1,100 @@
+package com.sckw.erp.service;
+
+import com.google.gson.Gson;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.QueryParam;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.sckw.erp.entity.BdCustomer;
+import com.sckw.erp.entity.BdMaterial;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author xucaiqin
+ * @date 2025-05-20 09:54:00
+ */
+@Service
+@Slf4j
+public class ApiService {
+    protected K3CloudApi api;
+    @Value("${kd.accid}")
+    private String AcctID;
+    @Value("${kd.username}")
+    private String UserName;
+    @Value("${kd.appid}")
+    private String AppID;
+    @Value("${kd.appsec}")
+    private String AppSec;
+    @Value("${kd.serviceUrl}")
+    private String ServerUrl;
+
+    @PostConstruct
+    private void init() {
+        if (Objects.isNull(this.api)) {
+            IdentifyInfo widen = new IdentifyInfo();
+            widen.setUserName(UserName);
+            widen.setAppId(AppID);
+            widen.setdCID(AcctID);
+            widen.setAppSecret(AppSec);
+            widen.setlCID(2052);
+            widen.setServerUrl(ServerUrl);
+            this.api = new K3CloudApi(widen, false);
+        }
+
+    }
+
+    public List<Object> query(String name, Integer pageNo, Integer pageSize) {
+        if (Objects.isNull(pageSize)) {
+            pageSize = 20;
+        }
+        if (Objects.isNull(pageNo)) {
+            pageNo = 0;
+        }
+        QueryParam<String> para = new QueryParam<>();
+        para.setFormId("bd_customer");
+        para.setFieldKeys("FNumber,FName");
+        para.setFilterString("FName like '%" + name + "%'");
+        para.setOrderString("");
+        para.setTopRowCount(0);
+        para.setStartRow(pageNo);
+        para.setLimit(pageSize);
+        List<Object> result;
+        try {
+            result = this.api.executeBillQuery(para, BdCustomer.class);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return result;
+
+    }
+
+    public List<Object> queryMaterial(String name, Integer pageNo, Integer pageSize) {
+        if (Objects.isNull(pageSize)) {
+            pageSize = 20;
+        }
+        if (Objects.isNull(pageNo)) {
+            pageNo = 0;
+        }
+        QueryParam<String> para = new QueryParam<>();
+        para.setFormId("BD_Material");
+        para.setFieldKeys("FNumber,FName");
+        para.setFilterString("FName like '%" + name + "%'");
+        para.setOrderString("");
+        para.setTopRowCount(0);
+        para.setStartRow(pageNo);
+        para.setLimit(pageSize);
+        List<Object> lists;
+        try {
+            lists = api.executeBillQuery(para, BdMaterial.class);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return lists;
+    }
+
+}

+ 83 - 0
src/main/java/com/sckw/erp/util/R.java

@@ -0,0 +1,83 @@
+package com.sckw.erp.util;
+
+
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @author xcq
+ * @date 2022年06月14日 13:41
+ */
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+
+public class R<T> implements Serializable {
+    //@Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 200-成功 102-失败
+     */
+    @Getter
+    @Setter
+
+    private int code;
+
+    @Getter
+    @Setter
+
+    private String msg;
+    @Getter
+    @Setter
+
+    private Boolean status;
+
+    @Getter
+    @Setter
+
+    private T data;
+
+    public static <T> R<T> ok() {
+        return restResult(null, true, 200, null);
+    }
+
+    public static <T> R<T> ok(T data) {
+        return restResult(data, true, 200, null);
+    }
+
+    public static <T> R<T> ok(T data, String msg) {
+        return restResult(data, true, 200, msg);
+    }
+
+    public static <T> R<T> failed() {
+        return restResult(null, false, 102, null);
+    }
+
+    public static <T> R<T> failed(String msg) {
+        return restResult(null, false, 102, msg);
+    }
+
+    public static <T> R<T> failed(T data) {
+        return restResult(data, false, 102, null);
+    }
+
+    public static <T> R<T> failed(T data, String msg) {
+        return restResult(data, false, 102, msg);
+    }
+
+    public static <T> R<T> failed(T data, String msg, int code) {
+        return restResult(data, false, code, msg);
+    }
+
+    private static <T> R<T> restResult(T data, Boolean status, int code, String msg) {
+        R<T> apiResult = new R<>();
+        apiResult.setCode(code);
+        apiResult.setStatus(status);
+        apiResult.setData(data);
+        apiResult.setMsg(msg);
+        return apiResult;
+    }
+}

+ 4 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,4 @@
+# 日志级别
+logging:
+  level:
+    root: info

+ 4 - 0
src/main/resources/application-pro.yml

@@ -0,0 +1,4 @@
+# 日志级别
+logging:
+  level:
+    root: info

+ 24 - 0
src/main/resources/application.yml

@@ -0,0 +1,24 @@
+server:
+  port: 7840
+
+spring:
+  application:
+    name: JdErp
+  profiles:
+    active: dev
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    locale: zh
+    time-zone: GMT+8
+
+    default-leniency: true
+  servlet:
+    multipart:
+      max-file-size: 20MB
+      max-request-size: 100MB
+kd:
+  accid: 1414680105455771648
+  username: 欧阳韶鹤
+  appid: 312740_R3bD1/Co0OC+RWTG1cRsQzTJ3Nx7xCnu
+  appsec: ba81829520d84604b46f919719bb3aee
+  serviceUrl: https://scjdsc.ik3cloud.com/k3cloud

BIN
src/main/resources/lib/gson-2.8.0.jar


BIN
src/main/resources/lib/hamcrest-core-1.3.jar


BIN
src/main/resources/lib/junit-4.13.1.jar


BIN
src/main/resources/lib/k3cloud-webapi-sdk-java1.8-v8.2.0.jar