lfx 1 year ago
parent
commit
871dab91a1

+ 78 - 0
mjava-kuaikeli/pom.xml

@@ -0,0 +1,78 @@
+<?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>
+
+    <groupId>com.malk</groupId>
+    <artifactId>mjava-kuaikeli</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- SpringBoot 依赖 -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.2.13.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</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>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.malk</groupId>
+            <artifactId>base</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>kuaikeli</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>

+ 19 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/KuaikeliApplication.java

@@ -0,0 +1,19 @@
+package com.malk.kuaikeli;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication(scanBasePackages = {"com.malk"})
+@MapperScan("com.malk.kuaikeli.mapper")
+public class KuaikeliApplication {
+
+    public static void main(String[] args) {
+        try {
+            SpringApplication.run(KuaikeliApplication.class,args);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+}

+ 20 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/config/MybatisPlusConfig.java

@@ -0,0 +1,20 @@
+package com.malk.kuaikeli.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加
+        //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
+        return interceptor;
+    }
+
+}

+ 56 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/controller/CdTestController.java

@@ -0,0 +1,56 @@
+package com.malk.kuaikeli.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import com.malk.kuaikeli.listener.SupplierMaterialDataListener;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.utils.UtilMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/test")
+public class CdTestController {
+
+    @Autowired
+    private DDClient ddClient;
+    @Autowired
+    private YDClient ydClient;
+
+    @GetMapping("/hello")
+    public McR hello(){
+        return McR.success("Hello");
+    }
+
+    @GetMapping("/dd")
+    public McR dd(){
+        return McR.success(ddClient.getAccessToken());
+    }
+
+    @PostMapping("/upload")
+    public McR upload(MultipartFile file) throws IOException {
+        System.out.println("2222222222222222");
+
+        return McR.success();
+    }
+
+    @PostMapping("/test")
+    public McR test(@RequestBody Map param){
+        // FINST-J7666B91556KOPSCBKY425M8C73I3GCT10VULEQ1
+        String id= UtilMap.getString(param,"id");
+        Object obj= ydClient.queryData(YDParam.builder().searchCondition(
+                JSONObject.toJSONString(UtilMap.map("textField_llkb7kd2",""))).build(), YDConf.FORM_QUERY.retrieve_id).getData();
+
+        return McR.success();
+    }
+}

+ 51 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/controller/SupplierMaterialController.java

@@ -0,0 +1,51 @@
+package com.malk.kuaikeli.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import com.malk.kuaikeli.listener.SupplierMaterialDataListener;
+import com.malk.kuaikeli.service.SupplierMaterialService;
+import com.malk.server.common.McR;
+import com.malk.server.common.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/suppliermaterial")
+public class SupplierMaterialController {
+
+    @Autowired
+    private SupplierMaterialService supplierMaterialService;
+
+    @PostMapping("/upload")
+    public McR upload(@RequestParam(value="file")MultipartFile file) throws IOException {
+        if(file.isEmpty()||file.getSize()<1){
+            return McR.errorParam("文件不存在!");
+        }
+        if(!file.getOriginalFilename().endsWith("xlsx")&&!file.getOriginalFilename().endsWith("xls")) {
+            return McR.errorParam("文件格式错误!");
+        }
+        EasyExcel.read(file.getInputStream(), SupplierMaterial.class, new SupplierMaterialDataListener(supplierMaterialService)).sheet().doRead();
+        return McR.success();
+    }
+
+    @GetMapping("/sync")
+    public McR sync(String startDateTime){
+        supplierMaterialService.sync(startDateTime);
+        return McR.success();
+    }
+
+    @GetMapping("/getList")
+    public McR selectList(@RequestParam(defaultValue = "1") Integer current,
+                          @RequestParam(defaultValue = "10") Integer size){
+        return supplierMaterialService.getList(current,size);
+    }
+
+
+}

+ 153 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/entity/SupplierMaterial.java

@@ -0,0 +1,153 @@
+package com.malk.kuaikeli.entity;
+
+import cn.hutool.core.annotation.Alias;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.malk.server.aliwork.YDConf;
+import com.malk.utils.UtilDateTime;
+import com.malk.utils.UtilMap;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+// 供应商原材料
+@Data
+@EqualsAndHashCode
+@TableName("t_supplier_material")
+public class SupplierMaterial {
+
+    // 供应商
+    @Alias("associationFormField_lphya7cq")
+    private String supplier;
+
+    // 供应商编号
+    @Alias("textField_llzzbyj1")
+    private String supplierId;
+
+    // 供应商名称
+    @Alias("textField_lmsli3bq")
+    private String supplierName;
+
+    // 物品名称
+    @Alias("textField_llkb7kd1")
+    private String materialName;
+
+    // 物品编号
+    @TableId(value = "material_id",type = IdType.INPUT)
+    @Alias("textField_llkb7kd2")
+    private String materialId;
+
+    // 单位
+    @Alias("textField_llkb7kd3")
+    private String unit;
+
+    // 规格
+    @Alias("textField_llkb7kd4")
+    private String specs;
+
+    // 第一分类
+    @Alias("selectField_llkb7kd5")
+    private String classifyOne;
+
+    // 第二分类
+    @Alias("selectField_llkk6cms")
+    private String classifyTwo;
+
+    // 成本单价
+    @Alias("numberField_llkknd6g")
+    private String unitPrice;
+
+    // 下周成本单价
+    @Alias("numberField_lpalgz05")
+    private String unitPriceNext;
+
+    // 其他信息
+    @Alias("textareaField_lllnl6yr")
+    private String otherInfo;
+
+    // 图片
+//    @Alias("imageField_lllnl6ys")
+    private String img;
+
+    // 品牌
+    @Alias("textField_lmkfg67e")
+    private String brand;
+
+    // 状态
+    @Alias("textField_lm4lxur8")
+    private String state="已启用";
+
+    // 期限
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @Alias("dateField_lm4lxur7")
+    private String term;
+
+    // 包装数量
+    @Alias("numberField_lnrzzg03")
+    private String packingNumber;
+
+    // 包装单位
+    @Alias("textField_lnrzzg04")
+    private String packingUnit;
+
+    // 是否需要提供资质
+    @Alias("textField_loe2rojc")
+    private String needQualification;
+
+    // 是否已提供资质 是/否
+    @Alias("radioField_lpt4h37t")
+    private String provideQualification;
+
+    // 原材料资质
+//    @Alias("attachmentField_loe2rojd")
+    private String qualification;
+
+    // 资质到期日期
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @Alias("dateField_lpt4h37y")
+    private String qualificationExpireDate;
+
+    // 创建日期
+    private String createDateTime;
+
+    // 更新日期
+    private String updateDateTime;
+
+    public SupplierMaterial(){}
+
+    public static SupplierMaterial toBean(Map yidaFormData){
+        return BeanUtil.mapToBean(yidaFormData,SupplierMaterial.class,false);
+    }
+
+    public Map toYidaFormDataMap(){
+        Map map=BeanUtil.beanToMap(this);
+        // 时间处理
+        map.put("dateField_lpt4h37y", UtilDateTime.getLocalDateTimeTimeStamp(UtilDateTime.parseLocalDateTime(this.qualificationExpireDate)));
+        map.put("dateField_lm4lxur7", UtilDateTime.getLocalDateTimeTimeStamp(UtilDateTime.parseLocalDateTime(this.term)));
+        // 关联表单处理
+        String instId=supplier.substring(supplier.indexOf("[FINST")+1,supplier.length()-1);
+        map.put("associationFormField_lphya7cq", Arrays.asList(UtilMap.map("title, instanceId, appType, formUuid, formType",supplierName,instId, "APP_OHSG8KMIP9SGXV32XUQJ","FORM-L8966281A3LDP5UX77OYM6LBPEUM3TODBOLLL0","receipt")));
+        return map;
+    }
+
+    public SupplierMaterial create(){
+        this.createDateTime = (LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+        return this;
+    }
+
+    public SupplierMaterial update(){
+        this.updateDateTime = (LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+        return this;
+    }
+}

+ 82 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/listener/SupplierMaterialDataListener.java

@@ -0,0 +1,82 @@
+package com.malk.kuaikeli.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import com.malk.kuaikeli.mapper.SupplierMaterialMapper;
+import com.malk.kuaikeli.service.SupplierMaterialService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+
+// 有个很重要的点 SupplierMaterialListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
+@Slf4j
+public class SupplierMaterialDataListener extends AnalysisEventListener<SupplierMaterial> {
+
+    /**
+     * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
+     */
+    private static final int BATCH_COUNT = 5;
+    List<SupplierMaterial> list = new ArrayList<SupplierMaterial>();
+
+    private SupplierMaterialService supplierMaterialService;
+
+    public SupplierMaterialDataListener() {
+    }
+
+    /**
+     * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
+     */
+    public SupplierMaterialDataListener(SupplierMaterialService supplierMaterialService) {
+        this.supplierMaterialService = supplierMaterialService;
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     *
+     * @param data
+     *            one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+     * @param context
+     */
+    @Override
+    public void invoke(SupplierMaterial data, AnalysisContext context) {
+        log.info("解析到一条数据:{}", JSON.toJSONString(data));
+        list.add(data);
+        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
+        if (list.size() >= BATCH_COUNT) {
+            saveData();
+            // 存储完成清理 list
+            list.clear();
+        }
+    }
+
+    /**
+     * 所有数据解析完成了 都会来调用
+     *
+     * @param context
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        // 这里也要保存数据,确保最后遗留的数据也存储到数据库
+        saveData();
+        log.info("所有数据解析完成!");
+    }
+
+    /**
+     * 加上存储数据库
+     */
+    private void saveData() {
+        log.info("{}条数据,开始存储数据库!", list.size());
+        supplierMaterialService.saveOrUpdateBatch(list);
+//        for(SupplierMaterial supplierMaterial:list){
+//            if(supplierMaterialMapper.selectById(supplierMaterial.getMaterialId())!=null){
+//                supplierMaterialMapper.updateById(supplierMaterial.update());
+//            }else{
+//                supplierMaterialMapper.insert(supplierMaterial.create());
+//            }
+//        }
+        log.info("存储数据库成功!");
+    }
+}

+ 12 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/mapper/SupplierMaterialMapper.java

@@ -0,0 +1,12 @@
+package com.malk.kuaikeli.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@Mapper
+public interface SupplierMaterialMapper extends BaseMapper<SupplierMaterial> {
+
+}

+ 16 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/service/SupplierMaterialService.java

@@ -0,0 +1,16 @@
+package com.malk.kuaikeli.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import com.malk.server.common.McR;
+import org.springframework.web.multipart.MultipartFile;
+
+public interface SupplierMaterialService extends IService<SupplierMaterial> {
+
+    void uploadData(MultipartFile file);
+
+    void sync(String startDateTime);
+
+    McR getList(Integer current,Integer size);
+
+}

+ 103 - 0
mjava-kuaikeli/src/main/java/com/malk/kuaikeli/service/impl/SupplierMaterialServiceImpl.java

@@ -0,0 +1,103 @@
+package com.malk.kuaikeli.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.malk.kuaikeli.entity.SupplierMaterial;
+import com.malk.kuaikeli.listener.SupplierMaterialDataListener;
+import com.malk.kuaikeli.mapper.SupplierMaterialMapper;
+import com.malk.kuaikeli.service.SupplierMaterialService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilEnv;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class SupplierMaterialServiceImpl extends ServiceImpl<SupplierMaterialMapper,SupplierMaterial> implements SupplierMaterialService {
+
+    @Autowired
+    private SupplierMaterialMapper supplierMaterialMapper;
+    @Autowired
+    private YDClient ydClient;
+
+    String _matchFormUuid(String code) {
+        Map<String, String> formUuid = UtilMap.empty();
+        if (UtilEnv.getActiveProfile().equals(UtilEnv.ENV_PROD)) {
+            formUuid.put("SUPPLIERMATERIAL", "FORM-12EB6BCE3C264630824721E7BBABCC03L8U9"); // 供应商原材料档案
+            formUuid.put("DOMAIN", "https://dcuvl8.aliwork.com/"); // 宜搭域名
+        } else {
+            formUuid.put("SUPPLIERMATERIAL", "FORM-0CE39021E25E4F64AD56434209A95F55ZTJD"); // 供应商原材料档案_复制
+            formUuid.put("DOMAIN", "https://dcuvl8.aliwork.com/");
+        }
+        return formUuid.get(code);
+    }
+
+    @Override
+    public void uploadData(MultipartFile file) {
+//        try {
+//            EasyExcel.read(file.getInputStream(), SupplierMaterial.class, new SupplierMaterialDataListener(baseMapper)).sheet().doRead();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+    }
+
+    @Override
+    public void sync(String startDateTime) {
+        QueryWrapper<SupplierMaterial> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .ge(SupplierMaterial::getCreateDateTime,startDateTime)
+                .or().ge(SupplierMaterial::getUpdateDateTime,startDateTime);
+        // 时间判断增量同步
+        List<SupplierMaterial> list=baseMapper.selectList(queryWrapper);
+        for (SupplierMaterial supplierMaterial:list){
+            // 同步到宜搭
+            List<Map> yidaList= (List<Map>) ydClient.queryData(YDParam.builder().formUuid(_matchFormUuid("SUPPLIERMATERIAL")).searchCondition(
+                    JSONObject.toJSONString(UtilMap.map("textField_llkb7kd2",supplierMaterial.getMaterialId())))
+                    .build(),YDConf.FORM_QUERY.retrieve_list).getData();
+            YDParam ydParam = YDParam.builder()
+                    .formUuid(_matchFormUuid("SUPPLIERMATERIAL"))
+                    .useLatestVersion(true)
+                    .build();
+            Map formData=supplierMaterial.toYidaFormDataMap();
+            if(yidaList!=null&&yidaList.size()>0){
+                ydParam.setUpdateFormDataJson(JSON.toJSONString(formData));
+                ydParam.setFormInstanceId(String.valueOf(yidaList.get(0).get("instanceId")));
+                ydClient.operateData(ydParam,YDConf.FORM_OPERATION.update);
+            }else{
+                ydParam.setFormDataJson(JSON.toJSONString(formData));
+                ydClient.operateData(ydParam,YDConf.FORM_OPERATION.create);
+            }
+        }
+    }
+
+    public IPage<SupplierMaterial> getProducts(Page<SupplierMaterial> page, Map<String, Object> params) {
+        // 构造查询条件(可选)
+        QueryWrapper<SupplierMaterial> queryWrapper = new QueryWrapper<>();
+        // ... 根据params设置查询条件 ...
+
+        // 执行分页查询
+        return baseMapper.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public McR getList(Integer current, Integer size) {
+        Page<SupplierMaterial> page=new Page<>(current,size);
+        IPage iPage = getProducts(page,null);
+        return McR.success(iPage);
+    }
+}

+ 36 - 0
mjava-kuaikeli/src/main/resources/application-dev.yml

@@ -0,0 +1,36 @@
+server:
+  port: 9020
+  servlet:
+    context-path: /kkl
+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:
+  config: classpath:logback-spring.xml
+  path: /home/server/connect/canrui/log/
+  level:
+    com.zitoo.connect.*: debug
+
+# dingtalk
+dingtalk:
+  agentId: 2691784047
+  appKey: dinghbynhnd2dbgypmsa
+  appSecret: Kl5Xw8x0TlEIlvcJuUkYZD18UTTShJmfdKrAIpY8oX-Q_tazyUKA28nQh7dG5-mq
+  corpId: dingcc1b1ffad0d5ca1d
+  aesKey:
+  token:
+# teambition
+teambition:
+  AppID: 63589b8bb6803e162f9a57d8
+  AppSecret: 5mB3b73OFhSwo38xEVqahCLwQVhG1MW3
+  TenantId: 5ca44db8ca4fd40001b10559
+  OperatorId: 5e698cca21f5ad70dfba7d2b    # 公共账号, 需要有操作权限 [牧语]
+# aliwork
+aliwork:
+  appType: APP_OHSG8KMIP9SGXV32XUQJ
+  systemToken: 9F766B81QHGDDLQ89X17X5GXVPYM20V729KLLPH

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


+ 17 - 0
mjava-kuaikeli/src/main/resources/application.yml

@@ -0,0 +1,17 @@
+spring:
+  profiles:
+    active: dev
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 100MB
+  http:
+    enabled: false
+mybatis-plus:
+  mappers-locations: mapper/*.xml
+  type-aliases-package: com.malk.kuaikeli.entity
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      id-type: auto

+ 61 - 0
mjava-kuaikeli/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.zitoo.connecter" level="debug"/>
+    <root level="INFO">
+        <appender-ref ref="stdout"/>
+        <appender-ref ref="appLogAppender"/>
+        <appender-ref ref="SIFT"/>
+    </root>
+</configuration>

+ 42 - 0
mjava-kuaikeli/src/test/java/com/malk/kuaikeli/DdTest.java

@@ -0,0 +1,42 @@
+package com.malk.kuaikeli;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.kuaikeli.service.SupplierMaterialService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.service.aliwork.YDClient;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Map;
+
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class DdTest {
+
+    @Autowired
+    private SupplierMaterialService supplierMaterialService;
+    @Autowired
+    private YDClient ydClient;
+
+    @Test
+    public void create(){
+        String time="20240410114941";
+        supplierMaterialService.sync(time);
+    }
+
+    @Test
+    public void test(){
+        Map form = ydClient.queryData(YDParam.builder()
+                .appType("APP_K8EYBJO1GLUWYIXT12DI")
+                .systemToken("7C766871QS1GIKQ68SWX0BS71RSZ1LONSB2PLA")
+                .formInstanceId(String.valueOf("0b8d83d3-65e8-47ce-94f0-5ac326ec7992"))
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        System.out.println(JSONObject.toJSONString(form));
+    }
+}