NonPoServerImpl.java 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. package com.malk.taisen.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.fasterxml.jackson.databind.JsonNode;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.malk.server.common.McException;
  7. import com.malk.taisen.util.CusutUtil;
  8. import com.malk.taisen.util.HttpUtil;
  9. import cn.hutool.json.JSONArray;
  10. import com.malk.server.aliwork.YDConf;
  11. import com.malk.server.aliwork.YDParam;
  12. import com.malk.server.dingtalk.DDR_New;
  13. import com.malk.service.aliwork.YDClient;
  14. import com.malk.service.aliwork.YDService;
  15. import com.malk.service.dingtalk.DDClient;
  16. import com.malk.taisen.service.NonPoServer;
  17. import com.malk.utils.UtilMap;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.http.HttpEntity;
  22. import org.springframework.http.HttpHeaders;
  23. import org.springframework.http.MediaType;
  24. import org.springframework.http.ResponseEntity;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.web.client.RestTemplate;
  27. import java.math.BigDecimal;
  28. import java.math.RoundingMode;
  29. import java.text.ParseException;
  30. import java.text.SimpleDateFormat;
  31. import java.util.*;
  32. @Slf4j
  33. @Service
  34. public class NonPoServerImpl implements NonPoServer {
  35. @Autowired
  36. private YDClient ydClient;
  37. @Autowired
  38. private YDService ydService;
  39. @Autowired
  40. private DDClient ddClient;
  41. /**
  42. * 测试地址
  43. */
  44. // private String QA_sapUrl = "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/10-QA-team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id=";
  45. //private String formUuid = "FORM-E9A6EBE00F3E4DA68681107F85600D80ZJUT";
  46. /**
  47. * 正式地址
  48. * @param type
  49. * @param InstanceId
  50. * @param formUuid
  51. */
  52. // private String QA_sapUrl = "https://etl-prod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonProd/Ultraprojects/team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id=";
  53. @Value(value = "${sap.QA_sapUrl_Poc}")
  54. private String QA_sapUrl;
  55. // @Override
  56. public void NonPoinsetSAP0005(String type, String InstanceId, String formUuid) {
  57. YDParam ydParam = _getYDTokenKPD();
  58. ydParam.setFormInstanceId(InstanceId);
  59. DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
  60. Map dataForm = ddr.getFormData();
  61. // dataForm.put("InstanceId", InstanceId);
  62. JSONObject sapJson = new JSONObject();
  63. JSONObject upJson = new JSONObject();
  64. String PD = (String) dataForm.get("selectField_mj1cq2oz");//是否生成SAP凭证
  65. String SAPID = (String) dataForm.get("textField_mejezfwk");//SAP凭证号码
  66. String SFXCFK = (String) dataForm.get("radioField_mj1gc7qe");//仅携程付款是否
  67. /**
  68. * 是否需要生成SAP凭证
  69. */
  70. if (("否".equals(PD) && !SAPID.equals("")) || "是".equals(SFXCFK)) {
  71. FPGX(InstanceId, SAPID, (String) dataForm.get("textField_mi73dy3n"));
  72. } else if (!"否".equals(PD)) {
  73. // 添加顶级键值对
  74. sapJson.put("ZDUEDATE", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mejfoonv"))); //Due date / 到期日
  75. sapJson.put("BKTXT", dataForm.get("textareaField_mejfoonw"));//备注 抬头文本
  76. sapJson.put("ZOA_NUMBER", dataForm.get("textField_mi73dy3n")); //钉钉单据号dataForm.get("textField_mi73dy3n")
  77. if (dataForm.get("selectField_mejfoona").equals("收据支付")) {//☑ 票据支付时 代码ZINVOICE_AMT 默认ZPAY_AMT的值
  78. sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value"));//支付金额
  79. } else {
  80. sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoook_value").equals("") ? "0" : dataForm.get("numberField_mejfoook_value"));//发票总额
  81. }
  82. sapJson.put("BANKA", dataForm.get("textField_mejfoon9")); //开户行
  83. sapJson.put("BLDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3"))); //凭证日期ƒ Date / 申请日期
  84. String uid = "TEST-CN001";
  85. String uname = "";
  86. if (!dataForm.get("employeeField_mhxdzya9_id").equals("")) {
  87. List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("textField_l6dddg5k", dataForm.get("employeeField_mhxdzya9_id"), "TEXT", "eq", "TextField")));
  88. String listJson = JSON.toJSONString(conditions);
  89. YDParam YGydParam = _getYDTokenZXXZ(listJson);
  90. List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  91. if (dataList != null && dataList.size() > 0) {
  92. Map map = dataList.get(0);
  93. Map formData = (Map) map.get("formData");
  94. uid = formData.get("textField_l6djch1m").toString();
  95. uid = "CHN-0" + uid;
  96. }
  97. }
  98. // uid = "CHN-01000332";//测试过账人
  99. sapJson.put("USNAM", uid); //过账人
  100. sapJson.put("BUDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_mhxdzyaa"))); //过账日期
  101. sapJson.put("ZOA_TYPE", dataForm.get("selectField_mejfoona").equals("无票预付") || dataForm.get("selectField_mejfoona").equals("100%清预付款") || dataForm.get("selectField_mejfoona").equals("100%清收据") ? "AD" : "NP");//OA单据类型
  102. sapJson.put("ZPAY_AMT", dataForm.get("numberField_mejfoool_value").equals("") ? "0" : dataForm.get("numberField_mejfoool_value")); //支付金额
  103. sapJson.put("BUKRS", dataForm.get("textField_mejfj9iw"));//公司代码
  104. sapJson.put("BANKN", dataForm.get("textField_mejfoon8")); //银行账号
  105. sapJson.put("WAERS", dataForm.get("selectField_mejfoong")); //币种
  106. sapJson.put("KOINH", dataForm.get("textField_mejezfwl")); //收款方名称
  107. sapJson.put("LIFNR", dataForm.get("textField_mejezfwv"));//供应商代码
  108. sapJson.put("interface_id", "SAP005");
  109. //获取子表
  110. if (dataForm.get("selectField_mejfoona").equals("发票支付")) {
  111. sapJson.put("BLART", "Z2");//凭证类型
  112. JSONArray itemArray = new JSONArray();
  113. int x = 1;//OA单据行号累计用
  114. List<Map> tableFils = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_l6ujr47b").build());
  115. // List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
  116. if (tableFils != null && tableFils.size() > 0) {
  117. for (int n = 0; n < tableFils.size(); n++) {
  118. Map<String, Object> row = new HashMap(tableFils.get(n));
  119. JSONObject itemObj = new JSONObject();
  120. itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
  121. itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
  122. itemObj.put("XREF1", "");//参考码 9000242
  123. String sjItemNo = "";
  124. if (x < 10) {
  125. sjItemNo += "00" + x;
  126. } else if (x < 100) {
  127. sjItemNo += "0" + x;
  128. } else {
  129. sjItemNo += x;
  130. }
  131. x++;
  132. itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
  133. itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
  134. itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
  135. itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
  136. itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_memejxqp")).equals("") ? "0" : String.valueOf(row.get("numberField_memejxqp"))); //税额
  137. itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
  138. itemArray.put(itemObj);
  139. }
  140. }
  141. sapJson.put("ITEM", itemArray);
  142. } else if (dataForm.get("selectField_mejfoona").equals("无票预付")) {
  143. sapJson.put("BLART", "Z4");//凭证类型
  144. sapJson.put("UMSKZ", "A");//特别总账标识
  145. JSONArray SapItem = new JSONArray(); //子表
  146. JSONObject itemObject = new JSONObject();
  147. itemObject.put("ZOA_ITEMNO", "001"); //OA单据行号
  148. itemObject.put("HKONT", ""); //会计科目
  149. itemObject.put("KOSTL", ""); //成本中心
  150. BigDecimal bigBhsje = new BigDecimal(dataForm.get("numberField_mejfoool_value").toString());//改大数
  151. bigBhsje = bigBhsje.setScale(2, RoundingMode.HALF_UP);
  152. itemObject.put("DMBTR", bigBhsje); //不含税金额
  153. // itemObject.put("DMBTR", object.get("numberField_l6bwb4hg").toString()); //不含税金额--支付金额
  154. itemObject.put("MWSKZ", ""); //税码
  155. itemObject.put("ZTAX_AMT", "0"); //税额
  156. itemObject.put("ZTAXOUT_AMT", "0"); //进项税转出金额
  157. itemObject.put("SGTXT", ""); //行项目文本
  158. itemObject.put("XREF1", dataForm.get("textareaField_mejfoonw")); //cir项目号
  159. SapItem.put(itemObject);
  160. sapJson.put("ITEM", SapItem);
  161. } else if (dataForm.get("selectField_mejfoona").equals("收据支付")) {
  162. sapJson.put("BLART", "Z2");//凭证类型
  163. JSONArray itemArray = new JSONArray();
  164. int x = 1;//OA单据行号累计用
  165. List<Map> tableFils = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_mi7c3wl9").build());
  166. //List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mi7c3wl9");
  167. if (tableFils != null && tableFils.size() > 0) {
  168. for (int n = 0; n < tableFils.size(); n++) {
  169. Map<String, Object> row = new HashMap(tableFils.get(n));
  170. JSONObject itemObj = new JSONObject();
  171. itemObj.put("KOSTL", String.valueOf(row.get("textField_mi7c3wku"))); //成本中心
  172. itemObj.put("DMBTR", String.valueOf(row.get("numberField_mi7c3wky_value"))); //不含税金额
  173. itemObj.put("XREF1", "");//参考码 9000242
  174. String sjItemNo = "";
  175. if (x < 10) {
  176. sjItemNo += "00" + x;
  177. } else if (x < 100) {
  178. sjItemNo += "0" + x;
  179. } else {
  180. sjItemNo += x;
  181. }
  182. x++;
  183. itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
  184. itemObj.put("HKONT", String.valueOf(row.get("textField_mi7c3wl5"))); //会计科目
  185. itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
  186. itemObj.put("MWSKZ", "");///税码
  187. itemObj.put("ZTAX_AMT", "0"); //税额
  188. itemObj.put("SGTXT", String.valueOf(row.get("textField_mi7c3wkn"))); //行项目文本
  189. itemArray.put(itemObj);
  190. }
  191. }
  192. sapJson.put("ITEM", itemArray);
  193. } else if (dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
  194. String XREF1 = "";
  195. String XREF2 = "";
  196. /***
  197. * 获取参考代码1 2
  198. */
  199. List<Map> XREFlist = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_mi8q495e").build());
  200. // List<Map<String, Object>> XREFlist = (List<Map<String, Object>>) dataForm.get("tableField_mi8q495e");
  201. if (XREFlist != null && !XREFlist.isEmpty()) {
  202. if (XREFlist.size() == 1) {
  203. Map<String, Object> row = XREFlist.get(0);
  204. XREF1 = row.get("textField_mi8q495f") != null ? row.get("textField_mi8q495f").toString() : "";
  205. } else {
  206. // 多于一条,按时间戳降序排序
  207. XREFlist.sort((a, b) -> {
  208. Long timeA = a.get("dateField_mj13wpls") instanceof Number
  209. ? ((Number) a.get("dateField_mj13wpls")).longValue()
  210. : 0L;
  211. Long timeB = b.get("dateField_mj13wpls") instanceof Number
  212. ? ((Number) b.get("dateField_mj13wpls")).longValue()
  213. : 0L;
  214. return Long.compare(timeB, timeA); // 降序:最新在前
  215. });
  216. // 取前两条
  217. XREF1 = XREFlist.get(0).get("textField_mi8q495f") != null
  218. ? XREFlist.get(0).get("textField_mi8q495f").toString() : "";
  219. XREF2 = XREFlist.get(1).get("textField_mi8q495f") != null
  220. ? XREFlist.get(1).get("textField_mi8q495f").toString() : "";
  221. }
  222. }
  223. sapJson.put("BLART", "Z2");//凭证类型
  224. JSONArray itemArray = new JSONArray();
  225. int x = 1;//OA单据行号累计用
  226. List<Map> tableFils = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_l6ujr47b").build());
  227. // List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
  228. if (tableFils != null && tableFils.size() > 0) {
  229. for (int n = 0; n < tableFils.size(); n++) {
  230. Map<String, Object> row = new HashMap(tableFils.get(n));
  231. JSONObject itemObj = new JSONObject();
  232. itemObj.put("KOSTL", String.valueOf(row.get("textField_mi5kjmwk"))); //成本中心
  233. itemObj.put("DMBTR", String.valueOf(row.get("numberField_l6ujr47g_value"))); //不含税金额
  234. itemObj.put("XREF1", XREF1);//参考码1
  235. itemObj.put("XREF2", XREF2);//参考码2
  236. String sjItemNo = "";
  237. if (x < 10) {
  238. sjItemNo += "00" + x;
  239. } else if (x < 100) {
  240. sjItemNo += "0" + x;
  241. } else {
  242. sjItemNo += x;
  243. }
  244. x++;
  245. itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
  246. itemObj.put("HKONT", String.valueOf(row.get("textField_l6lvt6lj"))); //会计科目
  247. itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
  248. itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
  249. itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_memejxqp")).equals("") ? "0" : String.valueOf(row.get("numberField_memejxqp"))); //税额
  250. itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz"))); //行项目文本
  251. itemArray.put(itemObj);
  252. }
  253. }
  254. sapJson.put("ITEM", itemArray);
  255. } else if (dataForm.get("selectField_mejfoona").equals("100%清收据")) {
  256. String XREF1 = "";
  257. String XREF2 = "";
  258. /***
  259. * 获取参考代码1 2
  260. */
  261. List<Map> XREFlist = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_mi8q495e").build());
  262. // List<Map<String, Object>> XREFlist = (List<Map<String, Object>>) dataForm.get("tableField_mi8q495e");
  263. if (XREFlist != null && !XREFlist.isEmpty()) {
  264. if (XREFlist.size() == 1) {
  265. Map<String, Object> row = XREFlist.get(0);
  266. XREF1 = row.get("textField_mi8q495f") != null ? row.get("textField_mi8q495f").toString() : "";
  267. } else {
  268. // 多于一条,按时间戳降序排序
  269. XREFlist.sort((a, b) -> {
  270. Long timeA = a.get("dateField_mj13wpls") instanceof Number
  271. ? ((Number) a.get("dateField_mj13wpls")).longValue()
  272. : 0L;
  273. Long timeB = b.get("dateField_mj13wpls") instanceof Number
  274. ? ((Number) b.get("dateField_mj13wpls")).longValue()
  275. : 0L;
  276. return Long.compare(timeB, timeA); // 降序:最新在前
  277. });
  278. // 取前两条
  279. XREF1 = XREFlist.get(0).get("textField_mi8q495f") != null
  280. ? XREFlist.get(0).get("textField_mi8q495f").toString() : "";
  281. XREF2 = XREFlist.get(1).get("textField_mi8q495f") != null
  282. ? XREFlist.get(1).get("textField_mi8q495f").toString() : "";
  283. }
  284. }
  285. sapJson.put("BLART", "Z2");//凭证类型
  286. JSONArray itemArray = new JSONArray();
  287. int x = 1;//OA单据行号累计用
  288. List<Map> tableFils = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_mi7c3wl9").build());
  289. // List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mi7c3wl9");
  290. if (tableFils != null && tableFils.size() > 0) {
  291. for (int n = 0; n < tableFils.size(); n++) {
  292. Map<String, Object> row = new HashMap(tableFils.get(n));
  293. JSONObject itemObj = new JSONObject();
  294. itemObj.put("KOSTL", String.valueOf(row.get("textField_mi7c3wku"))); //成本中心
  295. itemObj.put("DMBTR", String.valueOf(row.get("numberField_mi7c3wky_value"))); //不含税金额
  296. itemObj.put("XREF1", XREF1);//参考码1
  297. itemObj.put("XREF2", XREF2);//参考码2
  298. String sjItemNo = "";
  299. if (x < 10) {
  300. sjItemNo += "00" + x;
  301. } else if (x < 100) {
  302. sjItemNo += "0" + x;
  303. } else {
  304. sjItemNo += x;
  305. }
  306. x++;
  307. itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
  308. itemObj.put("HKONT", String.valueOf(row.get("textField_mi7c3wl5"))); //会计科目
  309. itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额 、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
  310. itemObj.put("MWSKZ", "");///税码
  311. itemObj.put("ZTAX_AMT", "0"); //税额
  312. itemObj.put("SGTXT", String.valueOf(row.get("textField_mi7c3wkn"))); //行项目文本
  313. itemArray.put(itemObj);
  314. }
  315. }
  316. sapJson.put("ITEM", itemArray);
  317. }
  318. /***
  319. * 调用接口
  320. */
  321. System.out.println(sapJson);
  322. log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
  323. String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
  324. log.info(dataForm.get("textField_mi73dy3n") + "POST反馈={}", post);
  325. System.out.println("POST反馈=====" + post);
  326. if (!post.equals("")) {
  327. JSONArray jsonArray = new JSONArray(post);
  328. if (jsonArray.size() > 0) {
  329. String voucherNumber = "";
  330. try {
  331. cn.hutool.json.JSONObject postJsonObject = jsonArray.getJSONObject(0);
  332. String E_SYSMSGTYPE = postJsonObject.getStr("E_SYSMSGTYPE");//状态
  333. String E_MESSAGE = postJsonObject.getStr("E_MESSAGE");//SAP005 接口 反馈值
  334. // prd 重复推送标记成功
  335. if (E_SYSMSGTYPE.equals("S") || "post operation had already been done, repeat is not allowed".equals(E_MESSAGE)) {
  336. String e_belnr = postJsonObject.getStr("E_BELNR");
  337. if (e_belnr.contains(";")) {
  338. String[] split = e_belnr.split(";");
  339. try {
  340. e_belnr = split[0];//+ ";";
  341. } catch (Exception ex) {
  342. e_belnr = ";";
  343. }
  344. }
  345. voucherNumber = e_belnr;
  346. String E_GJAHR = postJsonObject.getStr("E_GJAHR");//凭证年度
  347. // 执行完加入,把更改表单凭证数据
  348. ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_l9nsavm2, textField_mejezfwk, textareaField_mi5kjmxb, selectField_mi72r4s6", E_GJAHR, e_belnr, E_MESSAGE, "成功"))).build(), YDConf.FORM_OPERATION.update);
  349. /**
  350. * 执行勾选发票
  351. */
  352. if (dataForm.get("selectField_mejfoona").equals("发票支付") || dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
  353. FPGX(InstanceId, voucherNumber, (String) dataForm.get("textField_mi73dy3n"));
  354. }
  355. } else {
  356. // 报错写入
  357. ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", E_MESSAGE, "失败"))).build(), YDConf.FORM_OPERATION.update);
  358. }
  359. } catch (Exception ex) {
  360. }
  361. } else {
  362. }
  363. } else {
  364. // 报错写入
  365. ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", post, "失败"))).build(), YDConf.FORM_OPERATION.update);
  366. }
  367. }
  368. /**
  369. * 冲销
  370. */
  371. String SFCX = (String) dataForm.get("selectField_mkxd6l4o");//是否冲销
  372. String CXTSZT = (String) dataForm.get("selectField_mkxmqncp");//冲销推送状态
  373. if (SFCX.equals("是") && !CXTSZT.equals("已完成")) {
  374. log.info("泰森宜搭:Non-Po冲销, {}", InstanceId);
  375. System.out.println("泰森宜搭: Non-Po冲销::" + InstanceId);
  376. this.NPOCX(InstanceId, formUuid);
  377. System.out.println("泰森宜搭:Non-Po冲销 结束");
  378. log.info("泰森宜搭:Non-Po冲销 结束");
  379. }
  380. }
  381. @Override
  382. public void NonPoDZR(String id, String name) {
  383. long timestamp = System.currentTimeMillis();
  384. ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(id)).updateFormDataJson(JSON.toJSONString(UtilMap.map("employeeField_mhxdzya9, dateField_mhxdzyaa", name, timestamp))).build(), YDConf.FORM_OPERATION.update);
  385. }
  386. @Override
  387. public void NonPoinsetSAP0005list() {
  388. List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("selectField_mi72r4s6", "待推送", "TEXT", "eq", "SelectField")));
  389. String listJson = JSON.toJSONString(conditions);
  390. YDParam YGydParam = _getNPonlist(listJson);
  391. List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_process).getData();
  392. if (dataList != null && dataList.size() > 0) {
  393. for (Map<String, Object> map : dataList) {
  394. String insetid = map.get("formInstanceId").toString();
  395. // this.NonPoinsetSAP0005("", insetid);
  396. }
  397. }
  398. }
  399. /***
  400. * 发票勾选处理
  401. * @param InstanceId
  402. * @param voucherNumber
  403. */
  404. @Override
  405. public void FPGX(String InstanceId, String voucherNumber, String OAnumber) {
  406. try {
  407. YDParam ydParam = _getYDTokenKPD();
  408. ydParam.setFormInstanceId(InstanceId);
  409. DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
  410. Map dataForm = ddr.getFormData();
  411. @SuppressWarnings("unchecked")
  412. List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
  413. if (tableFils == null || tableFils.isEmpty()) {
  414. return;
  415. }
  416. String nowDate = CusutUtil.getNowDate();
  417. Map<String, Object> request = new LinkedHashMap<>();
  418. request.put("voucherNumber", voucherNumber);
  419. request.put("voucherstatus", "0");
  420. request.put("voucherdate", nowDate);
  421. request.put("applytime", nowDate);
  422. request.put("bookeepflag", "1");
  423. request.put("syssource", "第三方系统规定");
  424. JSONArray invoices = new JSONArray();
  425. for (Map<String, Object> row : tableFils) {
  426. if (!row.get("selectField_mepxp7tc").toString().contains("发票") && !row.get("selectField_mepxp7tc").toString().contains("全电")) {
  427. row.put("selectField_mgz2tut4", "不相关");
  428. continue;
  429. }
  430. if ("".equals(row.get("textField_l6ujr47c")) || "泰森(江苏)畜禽业发展有限公司".equals(row.get("textField_l6vk7131"))) {
  431. row.put("selectField_mgz2tut4", "不相关");
  432. continue;
  433. }
  434. Object instanceIdObj = row.get("textField_mi1l1tcc");
  435. if (instanceIdObj == null) continue;
  436. String instanceId = instanceIdObj.toString();
  437. // 查询发票详情
  438. DDR_New invoiceDdr = ydClient.queryData(
  439. YDParam.builder()
  440. .appType("APP_N9NPHVTQLPBPO8MR6WFG")
  441. .systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW")
  442. .formUuid("FORM-4J7669A1Z1X22RIL61LB7AOXGRX82OHP45U6L51")
  443. .formInstanceId(instanceId)
  444. .build(),
  445. YDConf.FORM_QUERY.retrieve_id
  446. );
  447. Map formdata = invoiceDdr.getFormData();
  448. if (formdata == null) continue;
  449. Map<String, Object> invoice = new LinkedHashMap<>();
  450. invoice.put("taxno", safeGetString(formdata, "textField_l6u55vdn"));
  451. String fpType = safeGetString(formdata, "textField_l6u55vd8");
  452. invoice.put("invoicecode", fpType.contains("全电") ? "全电发票" : safeGetString(formdata, "textField_l6u55vd9"));
  453. invoice.put("invoicenumber", safeGetString(formdata, "textField_l6u55vd3"));
  454. invoice.put("usetax", safeGetString(formdata, "textField_l6vu65fs"));
  455. // 税率处理
  456. String taxRateStr = safeGetString(formdata, "textField_l6vvuq3f");
  457. double taxRate = 0.0;
  458. if (!taxRateStr.isEmpty()) {
  459. try {
  460. if (taxRateStr.endsWith("%")) {
  461. taxRate = Double.parseDouble(taxRateStr.substring(0, taxRateStr.lastIndexOf('%'))) / 100.0;
  462. } else {
  463. taxRate = Double.parseDouble(taxRateStr) / 100.0;
  464. }
  465. } catch (NumberFormatException ignored) {
  466. taxRate = 0.0;
  467. }
  468. }
  469. invoice.put("taxrate", taxRate);
  470. invoice.put("autodeduct", "1");
  471. invoice.put("oper", "1");
  472. invoices.add(invoice);
  473. }
  474. if (invoices.isEmpty()) {
  475. return;
  476. }
  477. request.put("invoices", invoices);
  478. List<Map<String, Object>> requestList = Collections.singletonList(request);
  479. String jsonBody = new ObjectMapper().writeValueAsString(requestList);
  480. RestTemplate restTemplate = new RestTemplate();
  481. String PROXY_URL = "https://poc.cloudpure.cn/api/ts/bookkeeping";
  482. HttpHeaders headers = new HttpHeaders();
  483. headers.setContentType(MediaType.APPLICATION_JSON);
  484. HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);
  485. ResponseEntity<String> response = restTemplate.postForEntity(PROXY_URL, entity, String.class);
  486. String responseBody = response.getBody();
  487. if (responseBody == null) {
  488. updateMainFormError(InstanceId, "Empty response from bookkeeping API");
  489. return;
  490. }
  491. ObjectMapper objectMapper = new ObjectMapper();
  492. JsonNode rootNode = objectMapper.readTree(responseBody);
  493. JsonNode dataArray = rootNode.path("data");
  494. String code = rootNode.path("code").asText();
  495. if ("0000".equals(code) && dataArray.isArray() && dataArray.size() > 0) {
  496. List<Map> updatedRows = new ArrayList<>();
  497. for (int i = 0; i < tableFils.size(); i++) {
  498. Map<String, Object> originalRow = tableFils.get(i);
  499. String fpInstanceId = safeGetString(originalRow, "textField_mi1l1tcc");
  500. String invoiceNoInTable = safeGetString(originalRow, "textField_l6ujr47c");
  501. String status = originalRow.containsKey("selectField_mgz2tut4") && !"".equals(originalRow.get("selectField_mgz2tut4")) ? (String) originalRow.get("selectField_mgz2tut4") : "未勾选";
  502. String returnMsg = "";
  503. // 匹配返回的发票结果
  504. for (JsonNode item : dataArray) {
  505. String respInvoiceNo = item.path("invoicenumber").asText();
  506. returnMsg = item.path("returnmsg").asText();
  507. if (respInvoiceNo.equals(invoiceNoInTable) && returnMsg.contains("申请成功")) {
  508. status = "已勾选";
  509. break;
  510. }
  511. }
  512. if ("不相关".equals(status)) {
  513. returnMsg = "";
  514. }
  515. // 构建更新后的行数据
  516. Map<String, Object> updatedRow = new HashMap<>(originalRow);
  517. updatedRow.put("selectField_mgz2tut4", status);
  518. updatedRow.put("textareaField_mi5kjmxc", returnMsg);
  519. // 保留级联字段原始ID(防止丢失)
  520. Object cascadeId = originalRow.get("cascadeSelectField_mejfoony_id");
  521. if (cascadeId != null) {
  522. updatedRow.put("cascadeSelectField_mejfoony", cascadeId);
  523. }
  524. updatedRows.add(updatedRow);
  525. // 更新发票子表单状态
  526. Map<String, Object> fpUpdateMap = new HashMap<>();
  527. fpUpdateMap.put("textField_l7efm5az", status);
  528. fpUpdateMap.put("textField_l7efm5ay", "是");
  529. fpUpdateMap.put("textField_lz0v4x8o", voucherNumber);
  530. fpUpdateMap.put("textField_lz0v4x8p", OAnumber);
  531. ydClient.operateData(
  532. YDParam.builder()
  533. .appType("APP_N9NPHVTQLPBPO8MR6WFG")
  534. .systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW")
  535. .formInstanceId(fpInstanceId)
  536. .updateFormDataJson(JSON.toJSONString(fpUpdateMap))
  537. .build(),
  538. YDConf.FORM_OPERATION.update
  539. );
  540. }
  541. // 更新主表单
  542. Map<String, Object> mainUpdate = new HashMap<>();
  543. mainUpdate.put("tableField_l6ujr47b", updatedRows);
  544. mainUpdate.put("textareaField_mi7et0wm", rootNode.toString());
  545. ydClient.operateData(
  546. YDParam.builder()
  547. .appType("APP_N9NPHVTQLPBPO8MR6WFG")
  548. .systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW")
  549. .formInstanceId(InstanceId)
  550. .updateFormDataJson(JSON.toJSONString(mainUpdate))
  551. .build(),
  552. YDConf.FORM_OPERATION.update
  553. );
  554. } else {
  555. // 接口调用失败或无有效数据
  556. updateMainFormError(InstanceId, rootNode.toString());
  557. }
  558. } catch (Exception ex) {
  559. ex.printStackTrace();
  560. updateMainFormError(InstanceId, "Exception: " + ex.getMessage());
  561. }
  562. }
  563. @Override
  564. public void NPOCX(String InstanceId, String formUuid) {
  565. YDParam ydParam = _getYDTokenKPD();
  566. ydParam.setFormInstanceId(InstanceId);
  567. DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
  568. Map dataForm = ddr.getFormData();
  569. String SFCX = (String) dataForm.get("selectField_mkxd6l4o");//是否冲销
  570. String CXTSZT = (String) dataForm.get("selectField_mkxmqncp");//冲销推送状态
  571. String ZOA_NUMBER = (String) dataForm.get("textField_mi73dy3n");//钉钉单据号
  572. String BUKRS = (String) dataForm.get("textField_mejfj9iw");//公司代码
  573. if (SFCX.equals("是") && !CXTSZT.equals("已完成")) {
  574. String uid = "TEST-CN001";
  575. if (!dataForm.get("employeeField_mhxdzya9_id").equals("")) {
  576. List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("textField_l6dddg5k", dataForm.get("employeeField_mhxdzya9_id"), "TEXT", "eq", "TextField")));
  577. String listJson = JSON.toJSONString(conditions);
  578. YDParam YGydParam = _getYDTokenZXXZ(listJson);
  579. List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  580. if (dataList != null && dataList.size() > 0) {
  581. Map map = dataList.get(0);
  582. Map formData = (Map) map.get("formData");
  583. uid = formData.get("textField_l6djch1m").toString();
  584. uid = "CHN-0" + uid;
  585. }
  586. }
  587. List<Map> tableFils = ydService.queryDetails(YDParam.builder().formInstanceId(InstanceId).formUuid(formUuid).tableFieldId("tableField_mkxd96yv").build());
  588. log.info("NPO冲销行项目, {}, {}", InstanceId, tableFils.size());
  589. int total = tableFils.size(), succ = 0, fail = 0;
  590. // 批量推送Sap凭证: 兼容重试场景
  591. for (Map detail : tableFils) {
  592. if ("成功".equals(UtilMap.getString(detail, "selectField_mkxoe0yk"))) {
  593. succ += 1;
  594. continue;
  595. }
  596. try {
  597. Map body = new HashMap<>();
  598. body.put("ZOA_TYPE", "NP");
  599. body.put("ZOA_NUMBER", ZOA_NUMBER);
  600. body.put("BUKRS", BUKRS);
  601. body.put("BELNR", UtilMap.getString(detail, "textField_mkxd96yx"));
  602. body.put("GJAHR", UtilMap.getString(detail, "textField_mkxd96yy"));
  603. body.put("STGRD", UtilMap.getString(detail, "selectField_mkxd96z6"));
  604. body.put("USNAM", uid);
  605. if (!"".equals(detail.get("dateField_mkxd96z1"))) {
  606. body.put("BUDAT", CusutUtil.getFormatDate((long) detail.get("dateField_mkxd96z1")));
  607. }
  608. Map result = this._pushSPCX(body);
  609. // prd 重复推送标记成功
  610. if ("S".equals(result.get("E_SYSMSGTYPE")) || "post operation had already been done, repeat is not allowed".equals(result.get("E_MESSAGE"))) {
  611. detail.put("selectField_mkxoe0yk", "成功");
  612. detail.put("textField_mkxd96z2", result.get("E_BELNR"));
  613. detail.put("textField_mkxd96z3", result.get("E_GJAHR"));
  614. succ += 1;
  615. } else {
  616. detail.put("selectField_mkxoe0yk", "失败");
  617. fail += 1;
  618. }
  619. detail.put("textField_mkxd96z5", result.get("E_MESSAGE"));
  620. } catch (McException mc) {
  621. detail.put("selectField_mkxoe0yk", "失败");
  622. detail.put("textField_mkxd96z5", mc.getMessage());
  623. fail += 1;
  624. }
  625. }
  626. String state = "已完成";
  627. if (fail > 0) {
  628. state = "部分失败";
  629. }
  630. if (fail == total) {
  631. state = "全部失败";
  632. }
  633. Map formData = UtilMap.map("tableField_mkxd96yv, selectField_mkxmqncp", tableFils, state);
  634. log.info("NPO冲销执行, {}", formData);
  635. ydClient.operateData(YDParam.builder().formInstanceId(InstanceId).updateFormDataJson(JSON.toJSONString(formData)).build(), YDConf.FORM_OPERATION.update);
  636. }
  637. }
  638. /**
  639. * NPO推送冲销
  640. * @param
  641. */
  642. private Map _pushSPCX(Map body) {
  643. log.info("NPO冲销推送 SAP, {}", JSON.toJSONString(body));
  644. String rsp = HttpUtil.post(QA_sapUrl + "SAP005", null, JSON.toJSONString(body), null);
  645. log.info("NPO冲销 SAP 响应, {}", rsp);
  646. List<Map> result = JSON.parseArray(rsp, Map.class);
  647. McException.assertAccessException(result.isEmpty(), "Sap接口请求异常, 返回空集合, 需重新推送.");
  648. return result.get(0);
  649. }
  650. // === 内联辅助逻辑(以局部方法形式模拟,实际用 private 方法,但按要求不扩展 => 改为内联表达式)===
  651. // 因不能新增方法,以下逻辑直接内联,但为清晰起见,此处用注释说明“安全获取”逻辑:
  652. // 实际替换为:(map.get(key) instanceof String ? (String) map.get(key) : "")
  653. private String safeGetString(Map map, String key) {
  654. Object val = map.get(key);
  655. return val instanceof String ? (String) val : "";
  656. }
  657. private void updateMainFormError(String instanceId, String errorMsg) {
  658. ydClient.operateData(
  659. YDParam.builder()
  660. .appType("APP_N9NPHVTQLPBPO8MR6WFG")
  661. .systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW")
  662. .formInstanceId(instanceId)
  663. .updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi7et0wm", errorMsg)))
  664. .build(),
  665. YDConf.FORM_OPERATION.update
  666. );
  667. }
  668. // @Override
  669. // public void FPGX(String InstanceId, String voucherNumber, String OAnumber) {
  670. // YDParam ydParam = _getYDTokenKPD();
  671. // ydParam.setFormInstanceId(InstanceId);
  672. // DDR_New ddr = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id);
  673. // Map dataForm = ddr.getFormData();
  674. // try {
  675. // String nowDate = CusutUtil.getNowDate();
  676. // List<Map<String, Object>> requestList = new ArrayList<>();
  677. // Map<String, Object> request = new LinkedHashMap<>();
  678. // JSONArray invoices = new JSONArray();
  679. // ArrayList<String> ids = new ArrayList<>();
  680. // request.put("voucherNumber", voucherNumber);
  681. // request.put("voucherstatus", "0");
  682. // request.put("voucherdate", nowDate);
  683. // request.put("applytime", nowDate);
  684. // request.put("bookeepflag", "1");
  685. // request.put("syssource", "第三方系统规定");
  686. // List<Map> list = new ArrayList<>();
  687. // List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_l6ujr47b");
  688. // if (tableFils != null && tableFils.size() > 0) {
  689. // list = (List<Map>) dataForm.get("tableField_l6ujr47b");
  690. // for (int n = 0; n < tableFils.size(); n++) {
  691. //
  692. // Map<String, Object> row = new HashMap(tableFils.get(n));
  693. // Map<Object, Object> invoice = new LinkedHashMap<>();
  694. //// String substring = row.getString("associationFormField_l6yglav7_id").replaceAll("\\\\", "").substring(1);
  695. // String instanceId = row.get("textField_mi1l1tcc").toString();
  696. //
  697. // Map formdata = ydClient.queryData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formUuid("FORM-4J7669A1Z1X22RIL61LB7AOXGRX82OHP45U6L51").formInstanceId(instanceId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  698. // if (formdata != null) {
  699. // ids.add(instanceId);
  700. // JSONObject jsonObject = new JSONObject();
  701. // invoice.put("taxno", formdata.get("textField_l6u55vdn"));
  702. // if (formdata.get("textField_l6u55vd8").toString().contains("全电")) {
  703. // invoice.put("invoicecode", "全电发票");
  704. // } else {
  705. // invoice.put("invoicecode", formdata.get("textField_l6u55vd9"));
  706. // }
  707. // invoice.put("invoicenumber", formdata.get("textField_l6u55vd3"));
  708. // invoice.put("usetax", formdata.get("textField_l6vu65fs").toString());
  709. // try {
  710. // if (!formdata.containsKey("textField_l6vvuq3f") || formdata.get("textField_l6vvuq3f").equals("")) {
  711. // formdata.remove("textField_l6vvuq3f");
  712. // formdata.put("textField_l6vvuq3f", "0");
  713. // }
  714. // invoice.put("taxrate", Double.parseDouble(formdata.get("textField_l6vvuq3f").toString().substring(0, formdata.get("textField_l6vvuq3f").toString().lastIndexOf("%"))) / 100);
  715. // } catch (Exception ex) {
  716. // try {
  717. // invoice.put("taxrate", Double.parseDouble(formdata.get("textField_l6vvuq3f").toString()) / 100);
  718. // } catch (Exception ex2) {
  719. // invoice.put("taxrate", 0);
  720. // }
  721. // }
  722. // invoice.put("autodeduct", "1");
  723. // invoice.put("oper", "1");
  724. // jsonObject.toString();
  725. // invoices.put(invoice);
  726. // request.put("invoices", invoices);
  727. // }
  728. //
  729. // }
  730. // requestList.add(request);
  731. // String jsonBody = new ObjectMapper().writeValueAsString(requestList);
  732. // System.out.println(jsonBody.toString());
  733. // RestTemplate restTemplate = new RestTemplate();
  734. // String PROXY_URL = "https://poc.cloudpure.cn/api/ts/bookkeeping";
  735. // HttpHeaders headers = new HttpHeaders();
  736. // headers.setContentType(MediaType.APPLICATION_JSON);
  737. // ResponseEntity<String> response = restTemplate.postForEntity(PROXY_URL, new HttpEntity<>(jsonBody, headers), String.class);
  738. //
  739. // String responseBody = response.getBody();
  740. // try {
  741. // ObjectMapper objectMapper = new ObjectMapper();
  742. // JsonNode rootNode = objectMapper.readTree(responseBody);
  743. // ArrayList<Map> maps_YD = new ArrayList<>();
  744. // HashMap map = new HashMap();
  745. // // 获取 data 数组
  746. // JsonNode dataArray = rootNode.get("data");
  747. // String code = String.valueOf(rootNode.get("code"));
  748. // // 循环遍历 data 数组
  749. // if (dataArray.size() > 0 && code.equals("\"0000\"")) {
  750. //
  751. // for (int i = 0; i < list.size(); i++) {
  752. // Map sss2 = (Map) list.get(i);
  753. // String pd = (String) sss2.get("selectField_mgz2tut4");//发票是否勾选?
  754. // String fpidInstanceId = (String) sss2.get("textField_mi1l1tcc");//发票实例ID
  755. //
  756. // String returnMsg = "";
  757. // for (JsonNode dataItem : dataArray) {
  758. // returnMsg = dataItem.get("returnmsg").asText();
  759. // String invoicenumber = dataItem.get("invoicenumber").asText();
  760. // if (invoicenumber.equals(sss2.get("textField_l6ujr47c")) && !returnMsg.equals("未同步到该发票信息,请先进行同步发票操作!")) {
  761. // pd = "已勾选";
  762. // } else {
  763. // pd = "不相关";
  764. // }
  765. // }
  766. // sss2.put("cascadeSelectField_mejfoony", list.get(i).get("cascadeSelectField_mejfoony_id"));
  767. // sss2.put("selectField_mgz2tut4", pd);
  768. // sss2.put("textareaField_mi5kjmxc", returnMsg);
  769. // maps_YD.add(sss2);
  770. // //更改发票信息
  771. // HashMap FPMAP = new HashMap();
  772. // FPMAP.put("textField_l7efm5az", pd);
  773. // FPMAP.put("textField_l7efm5ay", "是");
  774. // FPMAP.put("textField_lz0v4x8o", voucherNumber);
  775. // FPMAP.put("textField_lz0v4x8p", OAnumber);
  776. // ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(fpidInstanceId)).updateFormDataJson(JSON.toJSONString(FPMAP)).build(), YDConf.FORM_OPERATION.update);
  777. // }
  778. // map.put("tableField_l6ujr47b", maps_YD);
  779. // map.put("textareaField_mi7et0wm", rootNode);
  780. // ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(map)).build(), YDConf.FORM_OPERATION.update);
  781. //
  782. // } else {
  783. //
  784. // // 报错写入
  785. // ydClient.operateData(YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formInstanceId(String.valueOf(InstanceId)).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi7et0wm", rootNode))).build(), YDConf.FORM_OPERATION.update);
  786. //
  787. //
  788. // }
  789. //
  790. // } catch (Exception e) {
  791. // e.printStackTrace();
  792. // }
  793. //
  794. //
  795. // }
  796. //
  797. // } catch (Exception ex) {
  798. // ex.printStackTrace();
  799. // System.out.println(ex);
  800. // }
  801. //
  802. // }
  803. public YDParam _getYDTokenKPD() {
  804. /**
  805. * 泰森付款
  806. */
  807. return YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").build();
  808. }
  809. /**
  810. * 泰森付款 人员档案表
  811. */
  812. public static YDParam _getYDTokenZXXZ(String searchFieldJson) {
  813. return YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formUuid("FORM-4J7669A10FO250UJ9C6Q7CM00PC62YPW8DD6LT").searchFieldJson(searchFieldJson).build();
  814. }
  815. public static YDParam _getNPonlist(String searchFieldJson) {
  816. return YDParam.builder().appType("APP_N9NPHVTQLPBPO8MR6WFG").systemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW").formUuid("FORM-E9A6EBE00F3E4DA68681107F85600D80ZJUT").searchFieldJson(searchFieldJson).approvedResult("agree").build();
  817. }
  818. //匹配条件用
  819. private static final String KEY = "key";
  820. private static final String VALUE = "value";
  821. private static final String TYPE = "type";
  822. private static final String OPERATOR = "operator";
  823. private static final String COMPONENT_NAME = "componentName";
  824. private static Map<String, Object> buildCondition(String key, Object value, String type, String operator, String componentName) {
  825. Map<String, Object> condition = new HashMap<>();
  826. condition.put(KEY, key);
  827. condition.put(VALUE, value);
  828. condition.put(TYPE, type);
  829. condition.put(OPERATOR, operator);
  830. condition.put(COMPONENT_NAME, componentName);
  831. return condition;
  832. }
  833. }