Преглед на файлове

健辉新增手动同步物料

wzy преди 3 месеца
родител
ревизия
38da22f83a

+ 5 - 1
mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java

@@ -105,7 +105,11 @@ public class JianhuiController {
         return McR.success();
     }
 
-
+    @GetMapping("/manualSyncMaterialData")
+    public McR manualSyncMaterialData(String userId,String startTime,String endTime){
+        jianhuiService.manualSyncMaterialData(userId,startTime,endTime);
+        return McR.success();
+    }
 
 
 

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

@@ -30,4 +30,6 @@ public interface JianhuiService {
     McR syncInspectionOrder();
 
     void manualSyncData(String userId);
+
+    void manualSyncMaterialData(String userId,String startTime,String endTime);
 }

+ 114 - 2
mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java

@@ -473,8 +473,8 @@ public class JianhuiServiceImpl implements JianhuiService {
 
 //            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","39","2025-03-12 00:00:00","","","0"));//修改日期大于等于xx
 //            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","16","2025-03-14 00:00:00","","","0"));//修改日期小于等于xx
-//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","39","2025-06-28 00:00:00","","","0"));//创建日期大于等于xx
-//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","16","2025-07-07 00:00:00","","","0"));//创建日期小于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","39","2025-08-24 00:00:00","","","0"));//创建日期大于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","16","2025-08-25 00:00:00","","","0"));//创建日期小于等于xx
 //            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","39","2025-03-14 00:00:00","","","0"));//审核日期大于等于xx
 //            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FNumber","67","Y0070002","","","0"));//编码等于xx
 //            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FNumber","17","0001","","","0"));//编码包含xx
@@ -1272,6 +1272,8 @@ public class JianhuiServiceImpl implements JianhuiService {
 
     @Override
     public McR syncData() {
+        log.info("-----------------开始同步金蝶业务数据-------------------------");
+
         syncCustomers();//同步客户
         syncSalesman();//同步业务员
         syncSupplier();//同步供应商
@@ -1284,6 +1286,8 @@ public class JianhuiServiceImpl implements JianhuiService {
                 .formDataJson(JSONObject.toJSONString(UtilMap.map("dateField_m8sdk1ny", new Date().getTime())))
                 .build(), YDConf.FORM_OPERATION.create);
 
+        log.info("-----------------金蝶业务数据同步完成-------------------------");
+
         return McR.success();
     }
 
@@ -1325,7 +1329,115 @@ public class JianhuiServiceImpl implements JianhuiService {
         }
     }
 
+    @Override
+    public void manualSyncMaterialData(String userId,String startTime,String endTime) {
+        //发送工作通知
+        if (Strings.isNotBlank(userId)){
+            Map param2 = new HashMap();
+            param2.put("access_token",ddClient.getAccessToken());
+            Map body3 = new HashMap();
+            body3.put("agent_id",ddConf.getAgentId());
+            body3.put("userid_list",userId);
+            Map msg = new HashMap();
+            msg.put("msgtype","text");
+            //获取当前时间 精确到秒
+            String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
+            msg.put("text", UtilMap.map("content","开始同步金蝶物料数据  时间:" + time));
+            body3.put("msg",msg);
+            UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
+        }
 
+        try {
+            K3CloudApi client = new K3CloudApi(initIden());
+
+            List<Map> result = new ArrayList<>();
+            List<Map> materialList = new ArrayList<>();
+
+            int startRow = 0;
+            int limit = 2000;
+
+            BillQuery billQuery = new BillQuery();
+            billQuery.setFormId("BD_MATERIAL");
+            billQuery.setFieldKeys("FUseOrgId,FNumber,FName,FSpecification,FDocumentStatus,FForbidStatus,FErpClsID,FBaseUnitId,FRefStatus");
+            List<Map> filterString = new ArrayList<>();
+
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","39",startTime,"","","0"));//创建日期大于等于xx
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","16",endTime,"","","0"));//创建日期小于等于xx
+
+            billQuery.setFilterString(filterString);
+            billQuery.setLimit(limit);
+            do {
+                billQuery.setStartRow(startRow);
+                String s = client.billQuery(JSONObject.toJSONString(billQuery));
+                result = (List<Map>)JSONObject.parse(s);
+                materialList.addAll(result);
+
+                startRow += limit;
+            }while (result.size() == limit);
+
+            for (Map material : materialList) {
+                Map formData = new HashMap();
+                formData.put("textField_m6ak640p",material.get("FUseOrgId"));//使用组织
+                formData.put("textField_m6ak640v",material.get("FNumber"));//编码
+                formData.put("selectField_m83u6et1",getString(material.get("FNumber")).substring(0,1).equals("C") ? "成品" : "配件");
+                formData.put("textField_m6ak640w",material.get("FName"));//名称
+                formData.put("textField_m6ak640x",material.get("FSpecification"));//规格型号
+                formData.put("textField_m6ak6413",FDOCUMENTSTATUS.get(material.get("FDocumentStatus").toString()));//单据状态
+                formData.put("textField_m6ak6414",FFORBIDSTATUS.get(material.get("FForbidStatus").toString()));//禁用状态
+                formData.put("textField_m6ak6415",FERPCLSID.get(material.get("FErpClsID").toString()));//物料属性
+                formData.put("textField_m6ak641c",material.get("FRefStatus"));//已使用
+
+                //查找计量单位信息
+                String FBaseUnitId = material.get("FBaseUnitId").toString();
+                View view = new View();
+                view.setId(FBaseUnitId);
+                String resultJson = client.view("BD_UNIT", JSONObject.toJSONString(view));
+                Gson gson = new Gson();
+                RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
+                if (isTrue(repoRet)){
+                    Map unitInfo = (Map) repoRet.getResult().getResult();
+                    String unitName = ((List<Map>) unitInfo.get("Name")).get(0).get("Value").toString();
+
+                    String unitCode = unitInfo.get("Number").toString();
+
+                    formData.put("textField_m6ak6416",unitName);//基本单位
+                    formData.put("textField_m6ak641d",unitCode);//单位编码
+                }
+
+
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-2A5CAB7EB91D493AAFC90D8C7479A7F5KPR7")
+                        .searchFieldJson(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_m6ak640v",material.get("FNumber"),"编码", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))
+                        .formDataJson(JSONObject.toJSONString(formData))
+                        .build(), YDConf.FORM_OPERATION.upsert);
+
+            }
+        }catch (Exception e){
+            fail(e.getMessage());
+        }
+
+        //新增数据底表更新时间
+        ydClient.operateData(YDParam.builder()
+                .formUuid("FORM-5BAA6A050AC449438568D5A50FE2D2684RBN")
+                .formDataJson(JSONObject.toJSONString(UtilMap.map("dateField_m8sdk1ny", new Date().getTime())))
+                .build(), YDConf.FORM_OPERATION.create);
+
+        //发送工作通知
+        if (Strings.isNotBlank(userId)){
+            Map param2 = new HashMap();
+            param2.put("access_token",ddClient.getAccessToken());
+            Map body3 = new HashMap();
+            body3.put("agent_id",ddConf.getAgentId());
+            body3.put("userid_list",userId);
+            Map msg = new HashMap();
+            msg.put("msgtype","text");
+            //获取当前时间 精确到秒
+            String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
+            msg.put("text", UtilMap.map("content","金蝶物料数据已更新  时间:" + time));
+            body3.put("msg",msg);
+            UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
+        }
+    }
 
 
     private String getMultiLanguageTextName(Object object){

+ 13 - 3
mjava-jianhui/src/test/java/com/malk/jianhui/Test.java

@@ -1,30 +1,35 @@
 package com.malk.jianhui;
 
 import com.alibaba.fastjson.JSONObject;
+import com.malk.jianhui.service.JianhuiService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
 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.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Slf4j
 @SpringBootTest
 @RunWith(SpringRunner.class)
-public class Test {
+public class YdTest {
 
     @Autowired
     private YDClient ydClient;
-    @org.junit.Test
+
+    @Autowired
+    private JianhuiService jianhuiService;
+
+    @Test
     public void test(){
         List<Map> ydFormDataList = getYdFormDataList("FORM-2A5CAB7EB91D493AAFC90D8C7479A7F5KPR7", "", YDConf.FORM_QUERY.retrieve_list);
 
@@ -63,4 +68,9 @@ public class Test {
         return list;
     }
 
+    @Test
+    public void test2(){
+        jianhuiService.syncMaterial();
+    }
+
 }