Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

“lqy 3 viikkoa sitten
vanhempi
commit
5e38ed9819

+ 1 - 1
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdHuaGaoServiceImpl.java

@@ -943,7 +943,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
             List<Map> filterString = new ArrayList<>();
             //单据状态等于已审核且修改日期为昨天至今天
             filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FDocumentStatus","105","C","","","0"));//单据状态等于XX
-            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","265",10,"","","0"));//修改日期在今天之前XX天之后
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","265",1,"","","0"));//修改日期在今天之前XX天之后
 
 
             billQuery.setFilterString(filterString);

+ 1 - 1
mjava-huagao/src/main/resources/application-prod.yml

@@ -56,7 +56,7 @@ kingdee:
   # 第三方系统登录授权的应用密钥
   X-KDApi-AppSec: ce7e0211058a428ca858d332e7f80f4d
   # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
-  X-KDApi-ServerUrl: http://61.174.28.154:81/k3cloud/
+  X-KDApi-ServerUrl: http://172.16.24.19:81/k3cloud/
   # 账套语系,默认2052
   # X-KDApi-LCID: 2052
   # 组织编码,启用多组织时配置对应的组织编码才有效

+ 1 - 1
mjava-huagao/src/main/resources/application-prod2.yml

@@ -57,7 +57,7 @@ kingdee:
   # 第三方系统登录授权的应用密钥
   X-KDApi-AppSec: ce7e0211058a428ca858d332e7f80f4d
   # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
-  X-KDApi-ServerUrl: http://61.174.28.154:81/k3cloud/
+  X-KDApi-ServerUrl: http://172.16.24.19:81/k3cloud/
   # 账套语系,默认2052
   # X-KDApi-LCID: 2052
   # 组织编码,启用多组织时配置对应的组织编码才有效

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

@@ -31,6 +31,7 @@ import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import com.malk.utils.UtilToken;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateUtils;
@@ -561,7 +562,9 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
                 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();
-                fileName = convertChineseToUtf8Hex(fileName);
+
+                fileName = DigestUtils.sha256Hex(fileName.substring(fileName.lastIndexOf(".")+1)) + fileName.substring(fileName.lastIndexOf("."));
+//                fileName = convertChineseToUtf8Hex(fileName);
 
                 for (int i = 0; i < ERP_ENVS.length; i++) {
                     if (ERP_ENVS[i].equals(type)){

+ 6 - 0
mjava-mc/src/main/java/com/malk/mc/controller/McYdController.java

@@ -182,6 +182,12 @@ public class McYdController {
         return mcYdService.allocateTransfer(map);
     }
 
+    //海天二期开发(进货退货)
+    @PostMapping("/goodsInandOut")
+    public McR goodsInandOut(@RequestBody Map map){
+        return mcYdService.goodsInandOut(map);
+    }
+
     /**
      * 分享数据权限
      * @param map compId 表单分享权限所属, userIds 分享人及被分享人, userId 分享人, content 代办标题, atUserId 被分享人, appUrl 移动端地址, pcUrl PC端地址

+ 2 - 0
mjava-mc/src/main/java/com/malk/mc/service/McYdService.java

@@ -25,6 +25,8 @@ public interface McYdService {
 
     McR allocateTransfer(Map map);
 
+    McR goodsInandOut(Map map);
+
     void batchUpdateSpecifiedQuantityData(Map map);
 
     McR shareRecord(Map map);

+ 80 - 0
mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java

@@ -639,6 +639,86 @@ public class McYdServiceImpl implements McYdService {
         return McR.success();
     }
 
+    @Override
+    public McR goodsInandOut(Map map) {
+        String formInstId = UtilMap.getString(map,"formInstId");//实例id(进货退货流程)
+        Map data = ydClient.queryData(YDParam.builder().formInstId(formInstId)
+                .formUuid("FORM-0D92610ED4AA4B81988CA190EE9A119EX37F")
+                .appType("APP_GNQ1RGK68X4JNZUEU8RQ")
+                .systemToken("XH866P81QDOTQ0218TGZM9WCNXOF24WIP488M7A5")
+                .userId("332051151139376769").build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+        System.out.println("进货退货流程:"+data);
+        List<Map> mapList = (List<Map>)data.get("tableField_ml07z7bh");
+        System.out.println("退货单明细数据:"+mapList);
+        ArrayList<Object> entries = new ArrayList<>();
+        for (Map map1 : mapList){
+            String LBJId = map1.get("textField_ml09d5ys").toString();//零部件的实例id
+            System.out.println("物料名称:"+map1.get("textField_ml07z7bi").toString());//物料名称
+            System.out.println("所属库位:"+map1.get("textField_ml09riy7").toString());//产品库位
+            System.out.println("退货数量:"+map1.get("numberField_ml07z7bp").toString());//退货数量
+
+
+            Map data1 = ydClient.queryData(YDParam.builder().formInstId(LBJId)
+                    .formUuid("FORM-2353BE632D97434DAD55AEBD0866C44DVAT5")
+                    .appType("APP_GNQ1RGK68X4JNZUEU8RQ")
+                    .systemToken("XH866P81QDOTQ0218TGZM9WCNXOF24WIP488M7A5")
+                    .userId("332051151139376769").build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+            System.out.println(map1.get("textField_ml07z7bi")+"明细表数据:"+data1.get("tableField_m96gje14"));//零部件明细
+            String s = data1.get("tableField_m96gje14").toString();
+            String warehouse = JSON.parseArray(s).getJSONObject(0).get("selectField_m88f1qi8").toString();//所属仓库
+            String WarehouseLocation = JSON.parseArray(s).getJSONObject(0).get("textField_m8mnxgql").toString();//所属库位
+            String SafetyValue = JSON.parseArray(s).getJSONObject(0).get("numberField_m8873fn4").toString();//安全库存值
+            BigDecimal numberFieldM9c8n9go = new BigDecimal(JSON.parseArray(s).getJSONObject(0).get("numberField_m9c8n9go").toString());//仓库数量
+
+//             new BigDecimal(map1.get("numberField_ma0e13js").toString()).add(numberFieldM9c8n9go);
+            BigDecimal numm = numberFieldM9c8n9go.subtract(new BigDecimal(map1.get("numberField_ml07z7bp").toString()));//退货后的库存数量 =   仓库数量(子) - 退货数量
+
+            ArrayList<Map<String,String>> maps_YD = new ArrayList<>();
+            Map sss=new HashMap<>();
+            sss.put("selectField_m88f1qi8",warehouse);//所属仓库
+            sss.put("textField_m8mnxgql",WarehouseLocation);//所属库位
+            sss.put("numberField_m8873fn4",SafetyValue);//安全库存值
+            sss.put("numberField_m9c8n9go",numm);//仓库数量
+            maps_YD.add(sss);
+
+            ydClient.operateData(YDParam.builder().formInstId(LBJId)
+                    .formUuid("FORM-2353BE632D97434DAD55AEBD0866C44DVAT5")
+                    .appType("APP_GNQ1RGK68X4JNZUEU8RQ")
+                    .systemToken("XH866P81QDOTQ0218TGZM9WCNXOF24WIP488M7A5")
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("tableField_m96gje14",maps_YD)))
+                    .userId("332051151139376769").build(),YDConf.FORM_OPERATION.update);
+
+            BigDecimal InventoryQuantity = null;
+            if(!data1.get("numberField_m8gz97nk_value").toString().isEmpty()){
+                InventoryQuantity = new BigDecimal( data1.get("numberField_m8gz97nk").toString());//可用库存数量
+            }else {
+                InventoryQuantity = BigDecimal.valueOf(0);
+            }
+
+            BigDecimal VirtualQuantity1 = null;
+            if(!data1.get("numberField_m8obn6wl_value").toString().isEmpty()){
+                VirtualQuantity1 = new BigDecimal( data1.get("numberField_m8obn6wl").toString());//虚拟数量
+            }else {
+                VirtualQuantity1 = BigDecimal.valueOf(0);
+            }
+            System.out.println("---------------------------------------零部件子表数据修改完毕--------------------------------");
+
+            BigDecimal VirtualQuantity1_AAA = VirtualQuantity1.subtract( new BigDecimal( map1.get("numberField_ml07z7bp").toString()));//虚拟数量(新) = 虚拟数量 - 退货数量
+            BigDecimal AvailableQuantity_AAA = InventoryQuantity.subtract(new BigDecimal( map1.get("numberField_ml07z7bp").toString()));//可用存库数量(新) = 可用库存数量 - 退货数量
+            ydClient.operateData(YDParam.builder().formInstId(LBJId)
+                    .formUuid("FORM-2353BE632D97434DAD55AEBD0866C44DVAT5")
+                    .appType("APP_GNQ1RGK68X4JNZUEU8RQ")
+                    .systemToken("XH866P81QDOTQ0218TGZM9WCNXOF24WIP488M7A5")
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_m8obn6wq, numberField_m8gz97nk",VirtualQuantity1_AAA,AvailableQuantity_AAA)))
+                    .userId("332051151139376769")
+                    .build(),YDConf.FORM_OPERATION.update);
+            System.out.println("----------------------零部件主表数据修改完毕!------------------");
+
+        }
+        return McR.success();
+
+    }
+
     @Override
     public McR shareRecord(Map data) {
         String pid = getString(data.get("pid"));

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

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

+ 16 - 2
mjava-ounuo/src/main/java/com/malk/tuosi/event/McTbEventImpl.java

@@ -21,7 +21,7 @@ public class McTbEventImpl implements TBEvent {
     @Autowired
     private TBClient tbClient;
 
-//    @Async
+    @Async
     @Override
     public void callBackTask(JSONObject eventJson) {
         String event = eventJson.getString("event");
@@ -30,7 +30,8 @@ public class McTbEventImpl implements TBEvent {
             String taskId = data.getString("taskId");
             String status = data.getString("status");
             String nodeId = data.getString("nodeId");
-            String creatorId = data.getString("creatorId");
+//            String creatorId = data.getString("creatorId");
+            String creatorId = "61a8c27a143030d9110a66d4";
 //            Map task = tbClient.queryTaskDetail(taskId,null,null).get(0);
 //            if(!"6970a3ff4f887b90bfdbe7e3".equals(String.valueOf(task.get("projectId")))){
 //                return;
@@ -40,6 +41,11 @@ public class McTbEventImpl implements TBEvent {
 //            }
             log.info("XXXXXX 进入节点更新流程,节点ID:{},状态:{},任务ID:{}",nodeId,status,taskId);
             if(status.equals("finish")){
+                try {
+                    Thread.sleep(3000);
+                }catch (InterruptedException e){
+                    e.printStackTrace();
+                }
                 List<Map> list=tbClient.queryNodeList(taskId);
                 Map node = _getNodeDetail(list,nodeId);
                 if(String.valueOf(node.get("name")).contains("接单")){
@@ -55,7 +61,15 @@ public class McTbEventImpl implements TBEvent {
                     }
                 }
             }else if(status.equals("begin")){
+                if(!"finish".equals(data.getJSONObject("old").getString("status"))){
+                    return;
+                }
                 log.info("XXXXXX 接单开始,清空后续节点数据");
+                try {
+                    Thread.sleep(3000);
+                }catch (InterruptedException e){
+                    e.printStackTrace();
+                }
                 List<Map> list=tbClient.queryNodeList(taskId);
 //                Map node = _getNodeDetail(list,nodeId);
 //                if(String.valueOf(node.get("name")).contains("接单")){

+ 49 - 0
mjava-siku/pom.xml

@@ -0,0 +1,49 @@
+<?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.18</version> <!-- 使用最新的稳定版或其他适用版本 -->
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com.malk.siku</groupId>
+    <artifactId>mjava-siku</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>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>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.malk</groupId>
+            <artifactId>base</artifactId>
+            <version>1.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+</project>

+ 17 - 0
mjava-siku/src/main/java/com/malk/siku/SikuApplication.java

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

+ 23 - 0
mjava-siku/src/main/java/com/malk/siku/controller/SikuController.java

@@ -0,0 +1,23 @@
+package com.malk.siku.controller;
+
+import com.malk.server.common.McR;
+import com.malk.siku.service.SikuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class SikuController {
+    @Autowired
+    private SikuService sikuService;
+
+    @PostMapping("/saveTradingPartner")
+    public McR saveTradingPartner(@RequestBody Map map) {
+        return sikuService.saveTradingPartner(map);
+    }
+}

+ 10 - 0
mjava-siku/src/main/java/com/malk/siku/service/SikuService.java

@@ -0,0 +1,10 @@
+package com.malk.siku.service;
+
+import com.malk.server.common.McR;
+
+import java.util.Map;
+
+public interface SikuService {
+    McR saveTradingPartner(Map map);
+
+}

+ 75 - 0
mjava-siku/src/main/java/com/malk/siku/service/impl/SikuServiceImpl.java

@@ -0,0 +1,75 @@
+package com.malk.siku.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+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.siku.service.SikuService;
+import com.malk.siku.utils.MkUtil;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class SikuServiceImpl implements SikuService {
+    @Autowired
+    private YDClient ydClient;
+
+    @Override
+    public McR saveTradingPartner(Map map) {
+        String formInstId = UtilMap.getString(map, "formInstId");
+
+        String type = UtilMap.getString(map, "type");
+
+        Map formData = ydClient.queryData(YDParam.builder()
+                .formInstanceId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+        Map partner = new HashMap();
+
+        if ("客户".equals(type)){
+            //客户
+            partner.put("partnerName", "客户");//所属分类名称
+            partner.put("name", UtilMap.getString(formData,"textField_mkddjwy3"));//往来单位中文名
+            partner.put("partnerType", "客户");//往来关系,可选值为:"供应商"、"客户"、"供应商,客户"(既是供应商又是客户的情况下以中文逗号分隔(供应商在前))
+            partner.put("partnerProperty", "公司");//往来性质,可选值为:"公司"、"个体工商户"
+            partner.put("businessCode", UtilMap.getString(formData,"serialNumberField_mkddjwy2"));//往来单位编码,不超过50个字符
+            partner.put("taxNumber", UtilMap.getString(formData,"textField_mkddjwys"));//税务登记号,不超过200个字符
+            partner.put("readOnly", false);//是否只读,默认false。如果为true,那么在每刻系统中往来单位的所有信息(如权限范围、收款账户等)均无法修改。(接口更新操作不受限制)
+            partner.put("reMark", "");//往来单位备注
+            partner.put("enabled", true);//是否启用(true:启用;false:禁用)。若该参数为空,新增则默认为true,更新则保持系统内状态。
+
+
+        }else {
+            //供应商、
+            String hzlx = UtilMap.getString(formData, "radioField_mketkvw7");
+
+            partner.put("partnerName", "供应商");//所属分类名称
+            partner.put("name", "Free".equals(hzlx) ? UtilMap.getString(formData,"textField_mkkixdd6") : UtilMap.getString(formData,"textField_mketkvv0"));//往来单位中文名
+            partner.put("partnerType", "供应商");//往来关系,可选值为:"供应商"、"客户"、"供应商,客户"(既是供应商又是客户的情况下以中文逗号分隔(供应商在前))
+            partner.put("partnerProperty", "Free".equals(hzlx) ? "个体工商户" : "公司");//往来性质,可选值为:"公司"、"个体工商户"
+            partner.put("businessCode", UtilMap.getString(formData,"serialNumberField_mkddjwy2"));//往来单位编码,不超过50个字符
+            partner.put("taxNumber", "Free".equals(hzlx) ? "" : UtilMap.getString(formData,"textField_mketkvxo"));//税务登记号,不超过200个字符
+            partner.put("readOnly", false);//是否只读,默认false。如果为true,那么在每刻系统中往来单位的所有信息(如权限范围、收款账户等)均无法修改。(接口更新操作不受限制)
+            partner.put("reMark", "");//往来单位备注
+            partner.put("enabled", UtilMap.getBoolean(formData,"radioField_mketkvw8"));//是否启用(true:启用;false:禁用)。若该参数为空,新增则默认为true,更新则保持系统内状态。
+        }
+
+        Map body = new HashMap();
+        body.put("partnerList", Arrays.asList(partner));
+
+        Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://ng.maycur.com/api/openapi/tradingPartner/batch/save", MkUtil.initTokenHeader(), null, body));
+
+        log.info("Result:",result);
+
+        return McR.success();
+    }
+}

+ 80 - 0
mjava-siku/src/main/java/com/malk/siku/utils/MkUtil.java

@@ -0,0 +1,80 @@
+package com.malk.siku.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilMap;
+import com.malk.utils.UtilToken;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+public class MkUtil {
+
+    @Value("${mk.appCode}")
+    private final static String appCode = "AP52Y01LHHTAP9";
+
+    @Value("${mk.appSecret}")
+    private final static String appSecret = "N4WuERLteAUPaWebnsHy";
+
+    private final Object $lock = new Object[0];
+
+    private static final Long EXPIRES_IN = 1800000L;
+
+    public static Map initTokenHeader(){
+
+            Map header = new HashMap();
+
+            String tokenId = UtilToken.get("invalid-tokenId-mk");
+            String entCode = UtilToken.get("invalid-entCode-mk");
+
+            if (StringUtils.isNotBlank(tokenId) && StringUtils.isNotBlank(entCode)) {
+                header.put("tokenId",tokenId);
+                header.put("entCode",entCode);
+
+                return header;
+            } else {
+                //每刻登录认证
+                Map body = new HashMap();
+
+                long timeMillis = System.currentTimeMillis();
+                body.put("appCode",appCode);
+                body.put("secret",getSecret(appCode,appSecret,timeMillis));
+                body.put("timestamp",timeMillis);
+
+                Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://ng.maycur.com/api/openapi/auth/login", null, null, body));
+
+                Map data = UtilMap.getMap(result, "data");
+
+                tokenId = UtilMap.getString(data, "tokenId");
+                entCode = UtilMap.getString(data, "entCode");
+
+                log.info("每刻tokenId, {}", tokenId);
+                log.info("每刻entCode, {}", entCode);
+
+                UtilToken.put("invalid-tokenId-mk", tokenId, EXPIRES_IN);
+                UtilToken.put("invalid-entCode-mk", entCode, EXPIRES_IN);
+
+                header.put("tokenId",tokenId);
+                header.put("entCode",entCode);
+
+                return header;
+            }
+
+    }
+
+    private static String getSecret(String appCode, String appSecret, long timeMillis){
+        log.info("time:{}",timeMillis);
+
+        String s = DigestUtils.sha256Hex(appSecret + ":" + appCode + ":" + timeMillis);
+        log.info("s:{}",s);
+
+        return s;
+    }
+
+
+}

+ 31 - 0
mjava-siku/src/main/resources/application-dev.yml

@@ -0,0 +1,31 @@
+server:
+  port: 9037
+  servlet:
+    context-path: /siku
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/siku/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId: 4247189733
+  appKey: dingt4yl0ecbq7q3zq1q
+  appSecret: mTolUR6iR74PEP_wwQIEO-Knc3EahEIfmCwjgdwOUIMfRiL7zrankoB4ccrardoS
+  corpId:
+  aesKey:
+  token:
+  operator:
+
+aliwork:
+  appType: APP_CZGFF42UVG8YJPN7VMU9
+  systemToken: Y2D66JB1A0B2OMK6OMB29AB8VMP43KJ7UCDKMG46
+
+mk:
+  appCode: AP52Y01LHHTAP9
+  appSecret: N4WuERLteAUPaWebnsHy
+

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

@@ -0,0 +1,31 @@
+server:
+  port: 9037
+  servlet:
+    context-path: /siku
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/siku/log/
+  level:
+    com.malk.*: info
+
+# dingtalk
+dingtalk:
+  agentId: 4247189733
+  appKey: dingt4yl0ecbq7q3zq1q
+  appSecret: mTolUR6iR74PEP_wwQIEO-Knc3EahEIfmCwjgdwOUIMfRiL7zrankoB4ccrardoS
+  corpId:
+  aesKey:
+  token:
+  operator:
+
+aliwork:
+  appType: APP_CZGFF42UVG8YJPN7VMU9
+  systemToken: Y2D66JB1A0B2OMK6OMB29AB8VMP43KJ7UCDKMG46
+
+mk:
+  appCode: AP52Y01LHHTAP9
+  appSecret: N4WuERLteAUPaWebnsHy
+

+ 15 - 0
mjava-siku/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-siku/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>

+ 25 - 0
mjava-siku/src/test/java/com.malk.siku/SkTest.java

@@ -0,0 +1,25 @@
+package com.malk.siku;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class SkTest {
+    @Test
+    public void getSecret(){
+        String appCode="AP52Y01LHHTAP9";
+        String appSecret="N4WuERLteAUPaWebnsHy";
+
+        long timeMillis = System.currentTimeMillis();
+        log.info("time:{}",timeMillis);
+
+        String s = DigestUtils.sha256Hex(appSecret + ":" + appCode + ":" + timeMillis);
+        log.info("s:{}",s);
+    }
+}