KdTest.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package com.malk.huagao;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.kingdee.bos.webapi.entity.IdentifyInfo;
  5. import com.kingdee.bos.webapi.sdk.K3CloudApi;
  6. import com.malk.huagao.KdEntity.BillQuery;
  7. import com.malk.huagao.config.KDWebApiConf;
  8. import com.malk.huagao.entity.KdYdMaterial;
  9. import com.malk.huagao.mapper.KdYdMaterialMapper;
  10. import com.malk.huagao.service.KdHuaGaoService;
  11. import com.malk.server.aliwork.YDConf;
  12. import com.malk.server.aliwork.YDParam;
  13. import com.malk.service.aliwork.YDClient;
  14. import com.malk.utils.UtilMap;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.junit.Test;
  17. import org.junit.runner.RunWith;
  18. import org.slf4j.MDC;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.boot.test.context.SpringBootTest;
  21. import org.springframework.test.context.junit4.SpringRunner;
  22. import java.util.*;
  23. import java.util.stream.Collectors;
  24. @Slf4j
  25. @SpringBootTest
  26. @RunWith(SpringRunner.class)
  27. public class KdTest {
  28. @Autowired
  29. private KDWebApiConf kdWebApiConf;
  30. @Autowired
  31. private KdHuaGaoService kdHuaGaoService;
  32. @Autowired
  33. private YDClient ydClient;
  34. @Autowired
  35. private KdYdMaterialMapper kdYdMaterialMapper;
  36. @Test
  37. public void test50() throws Exception {
  38. LambdaQueryWrapper<KdYdMaterial> materialdel = new LambdaQueryWrapper<>();
  39. // materialdel.eq(KdYdMaterial::getOperationType, "3") // 修正:使用 materialdel 而不是 materialqw
  40. // .eq(KdYdMaterial::getSyncStatus, "0");
  41. List<KdYdMaterial> kdYdMaterialdels = kdYdMaterialMapper.selectList(materialdel);
  42. int size =kdYdMaterialdels.size();
  43. System.out.println(size);
  44. }
  45. @Test
  46. public void test() throws Exception {
  47. K3CloudApi client = new K3CloudApi(initIden());
  48. List<Map> result = new ArrayList<>();
  49. List<Map> list = new ArrayList<>();
  50. int startRow = 0;
  51. int limit = 2000;
  52. BillQuery billQuery = new BillQuery();
  53. billQuery.setFormId("BD_SerialMainFile");
  54. billQuery.setFieldKeys("FNumber");
  55. List<Map> filterString = new ArrayList<>();
  56. filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockId.FName","67","成品仓","","","0"));//仓库名称等于XX
  57. filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockLocId.FF100001.FName","67","默认仓位","(","","1"));//仓位等于XX
  58. filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockLocId.FF100001.FName","67","样机仓位","",")","0"));//仓位等于XX
  59. filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockStatus","29","0","(","","1"));//在库状态等于XX
  60. filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FStockStatus","29","1","",")","0"));//在库状态等于XX
  61. billQuery.setFilterString(filterString);
  62. billQuery.setLimit(limit);
  63. billQuery.setStartRow(startRow);
  64. do {
  65. billQuery.setStartRow(startRow);
  66. String s = client.billQuery(JSONObject.toJSONString(billQuery));
  67. result = (List<Map>)JSONObject.parse(s);
  68. list.addAll(result);
  69. startRow += limit;
  70. }while (result.size() == limit);
  71. System.out.println("111");
  72. }
  73. @Test
  74. public void test2() {
  75. kdHuaGaoService.syncBDSerialMainFile(null);
  76. }
  77. @Test
  78. public void test3() {
  79. MDC.put("MDC_KEY_PID","1002");
  80. int year = 2025;
  81. int month = 9;
  82. List<Map> originList = new ArrayList<>();
  83. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","成品仓","G100","0-30天",2023,1,1));
  84. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","成品仓","G200","0-60天",2023,2,1));
  85. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","成品仓","G300","0-30天",2023,3,1));
  86. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","成品仓","G100","0-30天",2023,1,1));
  87. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","成品仓","G100","0-90天",2023,1,1));
  88. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","样机仓","G100","0-30天",2023,2,1));
  89. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","样机仓","G200","0-30天",2023,1,1));
  90. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","样机仓","G300","0-60天",2023,3,1));
  91. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","样机仓","G100","0-30天",2023,1,1));
  92. originList.add(UtilMap.map("cw, ssxl, zktsfl, year, month, value","样机仓","G100","0-30天",2023,2,1));
  93. //删除宜搭历史最新库存信息
  94. List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
  95. .formUuid("FORM-4CB51E04B8344622BE880C9D573F68CANKWU")
  96. .searchFieldJson(JSONObject.toJSONString(UtilMap.map("numberField_mev270x6, numberField_mev270x5",year, month)))
  97. .build(), YDConf.FORM_QUERY.retrieve_list).getData();
  98. List<String> formInstanceIdList = new ArrayList<>();
  99. for (Map datum : data) {
  100. formInstanceIdList.add(UtilMap.getString(datum,"formInstanceId"));
  101. }
  102. if(!formInstanceIdList.isEmpty()){
  103. ydClient.operateData(YDParam.builder()
  104. .formUuid("FORM-4CB51E04B8344622BE880C9D573F68CANKWU")
  105. .formInstanceIdList(formInstanceIdList)
  106. .build(), YDConf.FORM_OPERATION.delete_batch);
  107. }
  108. List<Map> data2 = (List<Map>) ydClient.queryData(YDParam.builder()
  109. .formUuid("FORM-5764CC3F6D964FD3A165BD7D4D75999FO8NQ")
  110. .searchFieldJson(JSONObject.toJSONString(UtilMap.map("numberField_mev270x6",year)))
  111. .build(), YDConf.FORM_QUERY.retrieve_list).getData();
  112. List<String> formInstanceIdList2 = new ArrayList<>();
  113. for (Map datum : data2) {
  114. formInstanceIdList2.add(UtilMap.getString(datum,"formInstanceId"));
  115. }
  116. if(!formInstanceIdList2.isEmpty()){
  117. ydClient.operateData(YDParam.builder()
  118. .formUuid("FORM-5764CC3F6D964FD3A165BD7D4D75999FO8NQ")
  119. .formInstanceIdList(formInstanceIdList2)
  120. .build(), YDConf.FORM_OPERATION.delete_batch);
  121. }
  122. //将最新库存信息写入宜搭
  123. List<Map> grouprList = originList.stream()
  124. .collect(Collectors.groupingBy(
  125. item -> Arrays.asList(
  126. item.get("cw"),
  127. item.get("ssxl"),
  128. item.get("zktsfl")
  129. ),
  130. Collectors.summingInt(item -> UtilMap.getInt(item, "value"))
  131. )).entrySet()
  132. .stream()
  133. .map(entry -> {
  134. // 将分组键(List<Object>)和汇总值转换为 Map
  135. List<Object> key = entry.getKey();
  136. Map<String, Object> groupedItem = new LinkedHashMap<>();
  137. groupedItem.put("textField_mev1n474", key.get(0));
  138. groupedItem.put("textField_mev1n477", key.get(1));
  139. groupedItem.put("selectField_mf205zr0", key.get(2));
  140. groupedItem.put("numberField_mev270x6", year);
  141. groupedItem.put("numberField_mev270x5", month);
  142. groupedItem.put("numberField_mfat6egj", entry.getValue());
  143. return groupedItem;
  144. }).collect(Collectors.toList());
  145. // 3. 打印原集合和分组结果
  146. System.out.println("=== 原集合(List<Map>)===");
  147. originList.forEach(System.out::println);
  148. System.out.println("\n=== 分组求和结果(List<Map>)===");
  149. grouprList.forEach(System.out::println);
  150. for (Map groupMap : grouprList) {
  151. ydClient.operateData(YDParam.builder()
  152. .formUuid("FORM-4CB51E04B8344622BE880C9D573F68CANKWU")
  153. .formDataJson(JSONObject.toJSONString(groupMap))
  154. .build(), YDConf.FORM_OPERATION.create);
  155. ydClient.operateData(YDParam.builder()
  156. .formUuid("FORM-5764CC3F6D964FD3A165BD7D4D75999FO8NQ")
  157. .formDataJson(JSONObject.toJSONString(groupMap))
  158. .build(), YDConf.FORM_OPERATION.create);
  159. }
  160. }
  161. @Test
  162. public void test4(){
  163. kdHuaGaoService.syncSTKInventory(null);
  164. }
  165. @Test
  166. public void test5(){
  167. kdHuaGaoService.syncPRDReturnMtrl(null);
  168. }
  169. @Test
  170. public void test6(){
  171. kdHuaGaoService.syncPendingProducts();
  172. }
  173. @Test
  174. public void test7(){
  175. kdHuaGaoService.syncDLVNotice(null);
  176. }
  177. @Test
  178. public void test8(){
  179. kdHuaGaoService.syncReport("成品库存天数看板","344749020127590108");
  180. }
  181. @Test
  182. public void test9(){
  183. String s = "更新成品库存天数看板异常:McException(success=false, code=InvalidpageSize, message=Specified parameter pageSize is not valid., source=dingtalk_new) 时间:2025-12-01 10:28:09";
  184. Map<String, Object> aaa = UtilMap.map("aaa, aa", s,"");
  185. System.out.println("aaa"+JSONObject.toJSONString(aaa));
  186. }
  187. @Test
  188. public void test10(){
  189. kdHuaGaoService.syncPUROrder();
  190. }
  191. private IdentifyInfo initIden(){
  192. //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
  193. //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
  194. //读取配置,初始化SDK
  195. IdentifyInfo iden = new IdentifyInfo();
  196. iden.setUserName(kdWebApiConf.getXKDApiUserName());
  197. iden.setAppId(kdWebApiConf.getXKDApiAppID());
  198. iden.setdCID(kdWebApiConf.getXKDApiAcctID());
  199. iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
  200. iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
  201. return iden;
  202. }
  203. }