YidaServiceImpl.java 131 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855
  1. package com.malk.eastar.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.util.NumberUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.malk.eastar.conf.EastarParam;
  7. import com.malk.eastar.service.YidaService;
  8. import com.malk.eastar.util.ConfigDataProcessor;
  9. import com.malk.server.aliwork.YDConf;
  10. import com.malk.server.aliwork.YDParam;
  11. import com.malk.server.aliwork.YDSearch;
  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.utils.PublicUtil;
  16. import com.malk.utils.UtilMap;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import java.math.BigDecimal;
  22. import java.util.*;
  23. /**
  24. * 专用于宜搭复杂逻辑处理的接口服务
  25. * add by Jason 20260317
  26. */
  27. @Slf4j
  28. @Service
  29. public class YidaServiceImpl implements YidaService {
  30. @Autowired
  31. private YDClient ydClient;
  32. @Autowired
  33. private YDService ydService;
  34. @Override
  35. public Map heartbeatTest(String param) {
  36. Map<String,Object> result = new LinkedHashMap<>();
  37. if("EastarProgram".equals(param)){
  38. result.put("col1","Eastar");
  39. result.put("col2",888888);
  40. result.put("col3", DateUtil.now());
  41. }else{
  42. result.put("error","错误的哦!");
  43. }
  44. return result;
  45. }
  46. @Override
  47. public Map createPartsTask(String formInstId) {
  48. log.info("【项目台账】→【采购任务】数据流转开始");
  49. /*
  50. LTC全生命周期
  51. Leads to Order
  52. Order to Product
  53. Product to Cash
  54. */
  55. /*
  56. 查询项目数据
  57. 【项目台账】 FORM-D8DFF1F8C07A4869BCC850090F3A3B4EE0AV
  58. */
  59. Map projectData = ydClient.queryData(
  60. YDParam.builder().formInstId(formInstId).build(),
  61. YDConf.FORM_QUERY.retrieve_id
  62. ).getFormData(); //【项目台账】数据,旧变量名 -> data
  63. String projectCode = UtilMap.getString(projectData,"textField_me2hyldc"); // 项目编号(立项流程),旧变量名 -> pId
  64. log.info("项目编号(立项流程):"+projectCode);
  65. String projectName = UtilMap.getString(projectData,"textField_me87x1nz"); // 项目名称(立项流程),旧变量名 -> pName
  66. log.info("项目名称(立项流程):"+projectName);
  67. String testFlag = UtilMap.getString(projectData,"radioField_mp4t9q57"); //测试使用
  68. log.info("测试使用:"+testFlag);
  69. //String pTaskType = UtilMap.getString(projectData,"textField_mfqnsa9d"); // TB任务类型名称
  70. String customerName = UtilMap.getString(projectData,"textField_me87x1o0"); // 客户公司名(英文名),旧变量名 -> merName
  71. log.info("客户公司名(英文名):"+customerName);
  72. String projectOrderType = UtilMap.getString(projectData,"selectField_mdf997wp"); // 订单类型(大货|打样)
  73. List<String> projectPhaseList = UtilMap.getList(projectData,"checkboxField_me9n37rs"); //包含阶段,旧变量名 -> jds
  74. List<String> ssUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me2hyld9_id"); // 业务员 userid
  75. List<String> ssmUserId = (List<String>) UtilMap.getList(projectData, "employeeField_mp6mn6je_id"); // 业务组长 userid
  76. List<String> pmUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me2hyld8_id"); // PM userid
  77. List<String> qaUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me9n24ka_id"); // QA userid
  78. List<UtilMap.assDetail> projectDataAssLeads = UtilMap.getAssFieldValue(
  79. projectData,"associationFormField_mdy7w1wn_id"
  80. ); //【项目台账】关联表单【销售项目】
  81. String leadsCode = UtilMap.getString(projectData,"textField_me2hyldb"); // 项目编号,旧变量名 -> pMainId
  82. log.info("项目编号:"+leadsCode);
  83. String leadsName = UtilMap.getString(projectData,"textField_me9n24kq"); // 项目名称,旧变量名 -> pMainName
  84. log.info("项目名称:"+leadsName);
  85. String devNumFlag = UtilMap.getString(projectData,"radioField_mmkb0vkc"); //研发部是否需要留样
  86. log.info("研发部是否需要留样:"+devNumFlag);
  87. List<UtilMap.assDetail> projectDataAssOrder = UtilMap.getAssFieldValue(
  88. projectData,"associationFormField_me2hylda_id"
  89. ); //【项目台账】关联表单【销售订单】,旧变量名 -> projectOrder
  90. List<Map> projectSubDataPlan = UtilMap.getList(
  91. projectData,"tableField_mgu5rm3e"
  92. ); // 【项目台账】子表单【项目计划】,旧变量名 -> projectPlan
  93. List<Map> projectSubDataParts = ydService.queryDetails(
  94. YDParam.builder()
  95. .formInstanceId(formInstId)
  96. .formUuid(EastarParam.YD_FORMUUID_PROJECT)
  97. .tableFieldId("tableField_mdy8x198").build()
  98. ); // 【项目台账】子表单【全品类】,旧变量名 -> table
  99. List<Map> projectSubDataLang = ydService.queryDetails(
  100. YDParam.builder()
  101. .formInstanceId(formInstId)
  102. .formUuid(EastarParam.YD_FORMUUID_PROJECT)
  103. .tableFieldId("tableField_mn6vamoe").build()
  104. ); // 【项目台账】子表单【语言版本 - 数量拆分】
  105. List<Map> projectSubDataBuyer = UtilMap.getList(
  106. projectData,"tableField_mec6juik"
  107. ); // 【项目台账】子表单【跟单员列表】,旧变量名 -> mchTable
  108. /*
  109. 查询销售订单数据
  110. 【销售订单】 FORM-A731443BE0F04467A5D7FC1A82431D6AL2JO
  111. */
  112. String orderId = projectDataAssOrder.get(0).instanceId; // 销售订单实例ID,旧变量名 -> orderFid
  113. Map orderData = ydClient.queryData(
  114. YDParam.builder().formInstId(orderId).build(),
  115. YDConf.FORM_QUERY.retrieve_id
  116. ).getFormData(); //【销售订单】数据
  117. int sampleNum; //套装样品数量
  118. Object demoValue = orderData.get("textField_me2f7tvd"); //套装样品及数量(单行文本类型)
  119. // 检查值是否为 Integer 类型
  120. if (demoValue == null) {
  121. sampleNum = 0;
  122. }else if (demoValue instanceof Integer) {
  123. sampleNum = (Integer) demoValue;
  124. } else if (demoValue instanceof String) {
  125. try {
  126. sampleNum = Integer.parseInt((String) demoValue);
  127. } catch (NumberFormatException e) {
  128. // 解析失败
  129. System.err.println("套装样品及数量字段值不是整数!");
  130. sampleNum = 0;
  131. }
  132. }else{
  133. System.err.println("套装样品及数量字段值不是整数!");
  134. sampleNum = 0;
  135. }
  136. List<Map> orderSubDataSeries = UtilMap.getList(orderData,"tableField_mesc7nvj"); // 【销售订单】子表单【系列套数】,旧变量名 -> xlConf
  137. System.out.println("【销售订单】子表单【系列套数】");
  138. String codeSeries;
  139. String nameSeries;
  140. int numOfSetsSeries; //套数
  141. for(Map orderSubRecordSeries : orderSubDataSeries){ //遍历子表单记录
  142. codeSeries = UtilMap.getString(orderSubRecordSeries,"textField_mizmmf8m"); // 系列编号【系列套数】
  143. nameSeries = UtilMap.getString(orderSubRecordSeries,"textField_mesc7nvf"); // 系列【系列套数】
  144. numOfSetsSeries = UtilMap.getInt(orderSubRecordSeries,"numberField_mesc7nvi"); // 套数【系列套数】
  145. System.out.println("系列:"+nameSeries+",系列编号:"+codeSeries+",套数:"+numOfSetsSeries);
  146. }
  147. List<Map> orderSubDataLang = UtilMap.getList(orderData,"tableField_meqqj4we"); // 【销售订单】子表单【语言版本 - 数量拆分】,旧变量名 -> orderLangConf
  148. System.out.println("【销售订单】子表单【语言版本 - 数量拆分】");
  149. String codeLang;
  150. String nameLang;
  151. int numOfSetsAll; //总套数
  152. for(Map orderSubRecordLang : orderSubDataLang){ //遍历子表单记录
  153. codeSeries = UtilMap.getString(orderSubRecordLang,"textField_mizmmf8h"); // 系列编号【语言版本 - 数量拆分】
  154. nameSeries = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wa"); // 系列【语言版本 - 数量拆分】
  155. codeLang = UtilMap.getString(orderSubRecordLang,"textField_mizmmf8i"); // 语言编号【语言版本 - 数量拆分】
  156. nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】
  157. numOfSetsSeries = UtilMap.getInt(orderSubRecordLang,"numberField_meqqj4wd"); // 套数【语言版本 - 数量拆分】
  158. numOfSetsAll = UtilMap.getInt(orderSubRecordLang,"numberField_mmtymctd"); // 总套数【语言版本 - 数量拆分】
  159. // System.out.println("系列编号:"+codeSeries+",系列:"+nameSeries+",语言编号:"+codeLang+",语言:"+nameLang
  160. // +",套数:"+numOfSetsSeries+",总套数:"+numOfSetsAll);
  161. }
  162. /*
  163. 获取供应商与采购跟单数据(当前项目)
  164. */
  165. List<String> buyerUserIdList = new ArrayList<>(); //采购跟单userid列表,旧变量名 -> mchList
  166. String supplier;
  167. String buyerUserId;
  168. Map<String,String> supplierBuyerMap = new HashMap<>(); //供应商与采购跟单userid映射,旧变量名 -> mchDDIdMap
  169. for (Map projectSubRecordBuyer : projectSubDataBuyer){ //遍历跟单员列表,旧变量名 -> map
  170. buyerUserId = String.valueOf(
  171. UtilMap.getList(projectSubRecordBuyer, "employeeField_me9n24kl_id") //跟单员
  172. .get(0)
  173. ); //跟单员userid,旧变量名 -> ddId
  174. if(!buyerUserIdList.contains(buyerUserId)){
  175. buyerUserIdList.add(buyerUserId);
  176. }
  177. supplier = UtilMap.getString(projectSubRecordBuyer,"textField_mec6juil"); //供应商
  178. supplierBuyerMap.put(supplier, buyerUserId);
  179. }
  180. /*
  181. 查询配件类型信息
  182. 【品类档案】 FORM-17E244F3FB2240EB930E6DD4E22C7F89KXAR
  183. */
  184. List<Map> partsTypeData = ydService.queryAllFormData(
  185. YDParam.builder().formUuid(EastarParam.YD_FORMUUID_SKU_TYPE).build()
  186. ); // 【品类档案】数据,旧变量名 -> skuTypeListConfigData
  187. Map partsTypeNameCodeMap = ConfigDataProcessor.skuTypeListConfigData(partsTypeData); // 品类名称与配件编号(这里的配件编号应该是品类编码)映射,旧变量名 -> skuIdMap
  188. /*
  189. 查询配件参数信息
  190. 【配件状态档案】 FORM-760F4001E1C743BA8527721F7217E068534G
  191. */
  192. List<Map> partsConfSubDataDetails = ydService.queryDetails(
  193. YDParam.builder()
  194. .formInstanceId("FINST-X1B66Y81IUFY9U417XIUE99I8YV93HGMJ8WEMF")
  195. .formUuid(EastarParam.YD_FORMUUID_SONCONF)
  196. .tableFieldId("tableField_mew7d9f3").build()
  197. ); // 【配件状态档案】子表单【明细】,旧变量名 -> sonConfData
  198. Map<String,Map<String,List<String>>> partsConfMap = ConfigDataProcessor.processConfigData(
  199. partsConfSubDataDetails
  200. ); //配件参数信息(按配件大类分组),旧变量名 -> sonConf
  201. /*
  202. 获取立项相关成员数据
  203. */
  204. // List<String> userIdList;
  205. // userIdList = new ArrayList<>(); //立项相关成员userid列表,旧变量名 -> userIdList
  206. // userIdList.addAll(pmUserId);
  207. // userIdList.addAll(ssUserId);
  208. // userIdList.addAll(qeUserId);
  209. // userIdList.addAll(buyerUserIdList);
  210. // Set<String> userIdSet = new HashSet<>(userIdList); //立项相关成员userid列表(不重复),旧变量名 -> set
  211. // userIdList = new ArrayList<>(userIdSet);
  212. /*
  213. 获取系列语言与研发部订单需求数量映射
  214. */
  215. Map<String,String> seriesLangDevNumMap = new HashMap<>(); //系列语言与研发部订单需求数量映射数据
  216. String devNum; //研发部订单需求数量
  217. for(Map projectSubRecordLang : projectSubDataLang) { //遍历【项目台账】子表单【语言版本 - 数量拆分】数据
  218. nameSeries = UtilMap.getString(projectSubRecordLang,"textField_mn6vamof"); //系列
  219. nameLang = UtilMap.getString(projectSubRecordLang,"textField_mn6vamoh"); //语言
  220. if(PublicUtil.isNull(nameLang)){
  221. nameLang = "无";
  222. }
  223. devNum = UtilMap.getString(projectSubRecordLang,"numberField_mn6vamok"); //研发部订单需求数量
  224. seriesLangDevNumMap.putIfAbsent(nameSeries + "_" + nameLang, devNum);
  225. }
  226. /*
  227. 获取所有配件记录
  228. */
  229. List<Map> partsRecordList; //所有配件记录,旧变量名 -> result
  230. List<Map> partsTaskSubData = new ArrayList<>(); //配件任务明细数据
  231. Map<String,List<Map>> partsRecordListBySupplier = new HashMap<>(); // 供应商与采购需求关联数据
  232. boolean isMultiLang; //语言区别,旧变量名 -> isLang
  233. String partsMajorType; //配件大类,旧变量名 -> type
  234. Map<String,List<String>> partsConfMapByMajorType; //配件参数信息(某配件大类),旧变量名 -> sonconfs
  235. List<String> phaseDeliverablesList; //阶段产出物列表
  236. List<String> partsMajorTypePhaseDeliverables; //配件大类与产出物列表,旧变量名 -> sonconf
  237. for(Map projectSubRecordParts : projectSubDataParts){ //遍历【项目台账】子表单【全品类】数据,旧变量名 -> map
  238. /*
  239. 获取配件大类与产出物列表
  240. */
  241. supplier = UtilMap.getString(projectSubRecordParts,"textField_me2f7tvz"); //供应商,旧变量名 -> gysName
  242. isMultiLang = "是".equals(UtilMap.getString(projectSubRecordParts,"radioField_me2f7tvx")); //语言区别
  243. partsMajorType = UtilMap.getString(projectSubRecordParts,"selectField_me2f7tvk");
  244. partsConfMapByMajorType = partsConfMap.get(partsMajorType);
  245. partsMajorTypePhaseDeliverables = new ArrayList<>();
  246. if(partsConfMapByMajorType!=null && !partsConfMapByMajorType.isEmpty()){
  247. for(String projectPhase : projectPhaseList){ //遍历项目包含阶段
  248. if(partsConfMapByMajorType.containsKey(projectPhase)){
  249. phaseDeliverablesList = partsConfMapByMajorType.get(projectPhase);
  250. for (String phaseDeliverables: phaseDeliverablesList) {
  251. partsMajorTypePhaseDeliverables.add(partsMajorType+" / "+phaseDeliverables);
  252. }
  253. }
  254. }
  255. }
  256. /*
  257. 获取所有配件记录
  258. */
  259. partsRecordList = getPartsRecordList(null,orderSubDataLang,projectSubRecordParts,null,isMultiLang,partsMajorTypePhaseDeliverables,null,supplier,projectCode,leadsCode,partsTypeNameCodeMap,seriesLangDevNumMap);
  260. /*
  261. 按供应商对配件记录进行分组
  262. */
  263. if(partsRecordListBySupplier.containsKey(supplier)){
  264. partsRecordListBySupplier.get(supplier).addAll(partsRecordList);
  265. }else{
  266. partsRecordListBySupplier.put(supplier,partsRecordList);
  267. }
  268. partsTaskSubData.addAll(partsRecordList);
  269. }
  270. log.info("配件任务明细数量="+partsTaskSubData.size());
  271. /*
  272. 按项目阶段拆解配件任务数据
  273. */
  274. Map partsTaskData; //配件任务数据,旧变量名 -> order
  275. List<String> partsTaskPhaseList = Arrays.asList("白样", "产前样","大货样", "大货"); //配件任务阶段(不包含包装)列表,旧变量名 -> jdList
  276. long projectPhasePlanEndTime; //项目阶段计划结束时间(时间戳)
  277. List<Map> partsTaskSubDataNew; //配件任务明细数据(新)
  278. String partsTaskStatus; //配件任务状态,旧变量名 -> taskStatus
  279. String partsTaskOrderType; //订单类型【配件任务表】,旧变量名 -> taskType
  280. String purchaseType; //采购类型,旧变量名 -> procuremenType
  281. Map<String, Object> partsRecordNew; //配件记录(新),旧变量名 -> copiedMap
  282. List<Map> supplierBuyerData; //【供应商跟单员档案】数据,旧变量名 -> gysList
  283. List<UtilMap.assDetail> supplierBuyerDataAssSupplier; //【供应商跟单员档案】关联表单【供应商】,旧变量名 -> gys
  284. String numOfSets; //工厂采购数量
  285. int allSupplyNum; //总采购数量
  286. BigDecimal unitPrice; //单价
  287. BigDecimal subTotal; //小计金额
  288. for(String projectPhase : projectPhaseList){ //遍历项目包含阶段,旧变量名 -> jd
  289. log.info("项目阶段:"+projectPhase);
  290. if(partsTaskPhaseList.contains(projectPhase)){
  291. /*
  292. 获取当前阶段计划结束时间
  293. */
  294. projectPhasePlanEndTime = 0;
  295. for(Map projectSubRecordPlan : projectSubDataPlan){ //遍历项目计划阶段
  296. if(projectPhase.equals(UtilMap.getString(projectSubRecordPlan,"textField_mgu5rm3f"))){ //阶段匹配成功
  297. projectPhasePlanEndTime = UtilMap.getLong(projectSubRecordPlan,"dateField_mgu5rm3h"); //计划结束时间,旧变量名 -> planTimestamp
  298. log.info("计划结束时间:"+DateUtil.formatDate(new Date(projectPhasePlanEndTime)));
  299. }
  300. }
  301. for (String keySupplier : partsRecordListBySupplier.keySet()){ //遍历采购需求数据,旧变量名 -> key
  302. partsRecordList = partsRecordListBySupplier.get(keySupplier); //配件记录(按供应商区分),旧变量名 -> arr
  303. partsTaskSubDataNew = new ArrayList<>();
  304. purchaseType = "";
  305. partsTaskStatus = "";
  306. partsTaskOrderType = "";
  307. for (Map<String, Object> partsRecord : partsRecordList) { //遍历配件记录(按供应商区分),旧变量名 -> map
  308. if("大货".equals(projectPhase)){
  309. purchaseType ="配件采购";
  310. partsTaskStatus ="待排期";
  311. partsTaskOrderType ="大货";
  312. numOfSets = partsRecord.get("numberField_mifp03el")==null?null:partsRecord.get("numberField_mifp03el").toString();
  313. devNum = partsRecord.get("numberField_mmmwu4cg")==null?null:partsRecord.get("numberField_mmmwu4cg").toString();
  314. allSupplyNum = 0;
  315. if(StringUtils.isNotEmpty(numOfSets)){
  316. if(StringUtils.isNotEmpty(devNum)){ //研发部订单需求数量是否填写
  317. allSupplyNum = Integer.parseInt(devNum) + Integer.parseInt(numOfSets); //计算总采购数量
  318. }else{
  319. allSupplyNum = Integer.parseInt(numOfSets); //总采购数量=工厂采购数量
  320. }
  321. }
  322. partsRecordNew = new HashMap<>(partsRecord); // 关键:创建副本
  323. partsRecordNew.put("dateField_mizvc5oi", projectPhasePlanEndTime); //考核日期(采购明细)
  324. partsRecordNew.put("numberField_mmmwu4ci",0); //总采购数量(废弃)
  325. partsRecordNew.put("numberField_mifp03el",allSupplyNum); //工厂采购数量
  326. //计算小计金额
  327. if(partsRecord.get("numberField_me2f7tw0")!=null && StringUtils.isNotEmpty(partsRecord.get("numberField_me2f7tw0").toString().trim())){
  328. unitPrice = new BigDecimal(partsRecord.get("numberField_me2f7tw0").toString().trim()); //单价
  329. subTotal = unitPrice.multiply(BigDecimal.valueOf(allSupplyNum));
  330. partsRecordNew.put("numberField_mifp03ey", subTotal); //小计金额
  331. }
  332. // System.out.println("系列:"+UtilMap.getString(partsRecordNew,"textField_mpcf6yu2")+",语言:"+UtilMap.getString(partsRecordNew,"textField_mjr129o4")+",配件名称:"+UtilMap.getString(partsRecordNew,"textField_mecmytpr")
  333. // +",工厂采购数量:"+allSupplyNum+",单价:"+partsRecord.get("numberField_me2f7tw0").toString().trim()+",小计金额:"+UtilMap.getString(partsRecordNew,"numberField_mifp03ey"));
  334. partsTaskSubDataNew.add(partsRecordNew);
  335. } else{
  336. if("大货样".equals(projectPhase)){
  337. partsTaskStatus ="无需合同";
  338. }else{ //白样和产前样
  339. partsTaskStatus ="待排期";
  340. }
  341. purchaseType ="样品任务";
  342. partsTaskOrderType ="打样";
  343. partsRecordNew = new HashMap<>(partsRecord); // 关键:创建副本
  344. partsRecordNew.put("dateField_mizvc5oi", projectPhasePlanEndTime); //考核日期(采购明细)
  345. partsRecordNew.put("numberField_mkosp94h", sampleNum); //客户订单数量
  346. partsRecordNew.put("numberField_mmmwu4cg",0); //研发部订单需求数量
  347. partsRecordNew.put("numberField_mmmwu4ci",0); //总采购数量(废弃)
  348. partsRecordNew.put("numberField_mifp03el", sampleNum); //工厂采购数量
  349. partsRecordNew.put("numberField_me2f7tw0", 0); //单价
  350. partsRecordNew.put("numberField_mifp03ey", 0); //小计金额
  351. partsTaskSubDataNew.add(partsRecordNew);
  352. }
  353. }
  354. partsTaskData = UtilMap.map(
  355. //"textField_mifp03ew, " + //TB项目编号
  356. "selectField_mifp03e7, " + //任务状态
  357. "tableField_mifp03em, " + //采购明细
  358. "selectField_mkf6qv9b, " + //采购类型
  359. "dateField_mifp03eb, " + //计划完成日期
  360. "selectField_ml0l206x, "+ //订单类型
  361. "employeeField_mp6muk63, "+ //业务员
  362. "employeeField_mp6muk64, "+ //业务组长
  363. "employeeField_mp6muk65, "+ //PM
  364. "employeeField_mp6muk66, "+ //QA
  365. "radioField_mp6hn7xp", //测试使用
  366. //tbProjectId,
  367. partsTaskStatus,
  368. partsTaskSubDataNew,
  369. purchaseType,
  370. projectPhasePlanEndTime,
  371. partsTaskOrderType,
  372. ssUserId,
  373. ssmUserId,
  374. pmUserId,
  375. qaUserId,
  376. testFlag
  377. );
  378. partsTaskData.put("associationFormField_mifp03e9",projectDataAssOrder); //项目订单
  379. partsTaskData.put("associationFormField_mifp03e8",projectDataAssLeads); // 销售项目
  380. partsTaskData.put("textField_mifp03e6",projectName+"-"+keySupplier+"-"+projectPhase); //任务名称
  381. partsTaskData.put("textField_mimwnauk",projectCode); //项目编号(立项流程)
  382. partsTaskData.put("textField_mp6hqggg",projectName); //项目名称(立项流程)
  383. //supplierOrder.put("textField_mizs3841",pMainId);
  384. partsTaskData.put("employeeField_mifp03eu",Arrays.asList(supplierBuyerMap.get(keySupplier))); //跟单负责人
  385. /*
  386. 查询供应商与跟单数据
  387. 【供应商跟单员档案】 FORM-3AB247087A81401F87264BFA74944BE3R086
  388. */
  389. supplierBuyerData = (List<Map>) ydClient.queryData(
  390. YDParam.builder()
  391. .formUuid(EastarParam.YD_FORMUUID_GYS_YW)
  392. .searchCondition(
  393. JSONObject.toJSONString(
  394. Arrays.asList(
  395. new YDSearch(
  396. "textField_mec6lku3", //供应商简称
  397. keySupplier,
  398. "供应商简称",
  399. YDSearch.Type.TEXT_FIELD,
  400. YDSearch.Operator.EQ
  401. )
  402. )
  403. )
  404. ).build(),
  405. YDConf.FORM_QUERY.retrieve_list
  406. ).getData();
  407. if(supplierBuyerData!=null && supplierBuyerData.size()>0){
  408. supplierBuyerDataAssSupplier
  409. = UtilMap.getAssFieldValue(
  410. UtilMap.getMap(supplierBuyerData.get(0),"formData"),
  411. "associationFormField_mec6lku4_id" //供应商
  412. );
  413. partsTaskData.put("associationFormField_mifp03ea",supplierBuyerDataAssSupplier); //供应商
  414. partsTaskData.put("textField_mpql81b5",leadsCode); // 项目编号
  415. partsTaskData.put("textField_mifp03ez",supplierBuyerDataAssSupplier.get(0).subTitle); // 供应商编号
  416. }
  417. partsTaskData.put("textField_mmikzhlb",projectPhase); //里程碑
  418. /*
  419. 保存配件任务数据(不含包装)
  420. 【配件任务表】 FORM-B9CBFB34DB3249C483415EF641202AC199J9
  421. */
  422. // log.info("保存配件任务数据("+projectPhase+"):"+ JSONObject.toJSONString(partsTaskData));
  423. ydClient.operateData(
  424. YDParam.builder()
  425. .formUuid(EastarParam.YD_FORMUUID_CGTASK)
  426. .formDataJson(JSONObject.toJSONString(partsTaskData))
  427. .build(),
  428. YDConf.FORM_OPERATION.create
  429. );
  430. }
  431. }
  432. }
  433. /*
  434. 生成包装任务(打样不需要生成包装)
  435. */
  436. if("大货".equals(projectOrderType)){
  437. savePartsPackTaskData(null, orderSubDataLang, projectData, projectName, projectCode, leadsCode, projectDataAssOrder, supplierBuyerMap, seriesLangDevNumMap, projectSubDataPlan);
  438. }
  439. if("是".equals(devNumFlag)){ //研发部需要留样
  440. /*
  441. 更新【销售订单】子表单【语言版本 - 数量拆分】的总套数
  442. */
  443. List<Map> orderSubDataLangNew = new ArrayList<>();
  444. for(Map orderSubRecordLang : orderSubDataLang){ //遍历子表单记录
  445. nameSeries = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wa"); // 系列【语言版本 - 数量拆分】
  446. nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】
  447. numOfSetsSeries = UtilMap.getInt(orderSubRecordLang,"numberField_meqqj4wd"); // 套数【语言版本 - 数量拆分】
  448. numOfSetsAll = 0;
  449. if(PublicUtil.isNull(nameLang)){
  450. devNum = seriesLangDevNumMap.get(nameSeries+"_无"); //研发部订单需求数量
  451. }else{
  452. devNum = seriesLangDevNumMap.get(nameSeries+"_"+nameLang); //研发部订单需求数量
  453. }
  454. if(StringUtils.isNotEmpty(devNum)){
  455. numOfSetsAll = numOfSetsSeries + Integer.parseInt(devNum); // 总套数【语言版本 - 数量拆分】,总套数=套数+研发部订单数量,立项完成自动更新总套数
  456. }
  457. orderSubRecordLang.put("numberField_mmtymctd",numOfSetsAll);
  458. orderSubDataLangNew.add(orderSubRecordLang);
  459. }
  460. // log.info("更新【销售订单】数据:"+ JSONObject.toJSONString(orderSubDataLangNew));
  461. ydClient.operateData(
  462. YDParam.builder()
  463. .formInstId(orderId)
  464. .updateFormDataJson(
  465. JSONObject.toJSONString(UtilMap.map("tableField_meqqj4we",orderSubDataLangNew))
  466. ).build(),
  467. YDConf.FORM_OPERATION.update
  468. );
  469. }
  470. /*
  471. 新增【PSS系列】记录
  472. */
  473. Map<String,String> pssSeriesMap = new HashMap<>();
  474. for(Map projectSubRecordLang : projectSubDataLang){
  475. nameSeries = UtilMap.getString(projectSubRecordLang,"textField_mn6vamof"); //系列
  476. codeSeries = UtilMap.getString(projectSubRecordLang,"textField_mn6vamog"); //系列编号
  477. if (!pssSeriesMap.containsKey(nameSeries)) {
  478. pssSeriesMap.put(nameSeries, codeSeries);
  479. }
  480. }
  481. Map projectPssSeriesMap;
  482. for(String seriesName : pssSeriesMap.keySet()){
  483. projectPssSeriesMap = UtilMap.map(
  484. "textField_mpdet3xr, " + //项目编号(立项流程)
  485. "textField_mpdet3xs, " + //系列
  486. "textField_mpdey1no", //系列编号
  487. projectCode,
  488. seriesName,
  489. pssSeriesMap.get(seriesName)
  490. );
  491. // log.info("新增【PSS系列】记录:"+ JSONObject.toJSONString(projectPssSeriesMap));
  492. ydClient.operateData(
  493. YDParam.builder()
  494. .formUuid(EastarParam.YD_FORMUUID_PSS_SERIES)
  495. .formDataJson(JSONObject.toJSONString(projectPssSeriesMap))
  496. .build(),
  497. YDConf.FORM_OPERATION.create
  498. );
  499. }
  500. log.info("【项目台账】→【采购任务】数据流转结束");
  501. return Collections.emptyMap();
  502. }
  503. /**
  504. * 获取所有配件记录
  505. */
  506. private List<Map> getPartsRecordList(
  507. Map taskMap, //TB相关,无用
  508. List<Map> orderSubDataLang, //销售订单子表单记录,【语言版本 - 数量拆分】明细数据,旧变量名 -> orderConf
  509. Map projectSubRecordParts, //【项目台账】子表单【全品类】某一行记录,旧变量名 -> cgDetail
  510. List<Map> customfields, //TB相关,无用
  511. boolean isMultiLang, //是否存在多种语言版本,旧变量名 -> isLang
  512. List<String> partsPhaseDeliverables, //配件状态明细(按配件大类分组),旧变量名 -> sonConf
  513. String sonScenariofieldconfigId, //TB相关,无用
  514. String supplier, //供应商,旧变量名 -> gysName
  515. String projectCode, // 项目编号(立项流程),旧变量名 -> pId
  516. String leadsCode, // 线索编码,旧变量名 -> pMainId
  517. Map partsTypeNameCodeMap, //品类名称与配件编号(这里的配件编号应该是品类编码)映射,旧变量名 -> skuIdMap
  518. Map<String,String> seriesLangDevNumMap //系列语言与研发部订单需求数量映射数据
  519. ){
  520. List<Map> partsRecordList = new ArrayList<>(); //所有配件记录
  521. String nameSeries; //系列,旧变量名 -> confSeries
  522. String nameLang; //语言
  523. String partsTypeCode; //配件类型编码(来源于【品类表】的“配件编号”),旧变量名 -> skuId
  524. String partsTypeName; //配件类型名称(来源于【品类表】的“品类名称”)
  525. String docSN; //文档序号,旧变量名 -> reportId
  526. String skuSN; //SKU编号,旧变量名 -> sku
  527. String numOfSets; //套数【语言版本 - 数量拆分】或套数【系列套数】,旧变量名 -> value
  528. String devNum; //研发部订单需求数量,旧变量名 -> rdNum
  529. String partsName; //配件名称
  530. Map partsRecord; //配件记录,来源于【项目台账】子表单【全品类】某一行记录,旧变量名 -> recod
  531. for(Map orderSubRecordLang : orderSubDataLang){ //遍历子表单记录,旧变量名 -> map
  532. // nameSeries = UtilMap.getString_first(
  533. // orderSubRecordLang,
  534. // "textField_meqqj4wa", //系列【语言版本 - 数量拆分】
  535. // "textField_mesc7nvf" //系列【系列套数】
  536. // ); // 系列
  537. nameSeries = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wa"); //系列【语言版本 - 数量拆分】
  538. if(!UtilMap.getString(projectSubRecordParts,"selectField_me2f7tw4").equals(nameSeries)){
  539. // 系列【全品类】与系列【语言版本 - 数量拆分】
  540. continue;
  541. }
  542. partsTypeName = UtilMap.getString(projectSubRecordParts,"selectField_mizsccds"); //配件类型
  543. partsTypeCode = String.valueOf(partsTypeNameCodeMap.get(partsTypeName));
  544. partsTypeCode = PublicUtil.isNull(partsTypeCode) ? "000":partsTypeCode;
  545. docSN = UtilMap.getString(projectSubRecordParts,"textField_me2f7tvn");
  546. skuSN = "2"
  547. + partsTypeCode //配件类型
  548. + UtilMap.getString(orderSubRecordLang,"textField_mizmmf8h") //系列编号【语言版本 - 数量拆分】
  549. + docSN.substring(docSN.length()-3); // 文档编号(后3位)
  550. nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】,旧变量名 -> lang
  551. if(PublicUtil.isNull(nameLang)){
  552. devNum = seriesLangDevNumMap.get(nameSeries+"_无"); //研发部订单需求数量
  553. }else{
  554. devNum = seriesLangDevNumMap.get(nameSeries+"_"+nameLang); //研发部订单需求数量
  555. }
  556. if(isMultiLang){ // 是否存在多种语言版本
  557. skuSN = skuSN + UtilMap.getString(orderSubRecordLang,"textField_mizmmf8i"); // sku+语言编号
  558. }else{
  559. if(PublicUtil.isNull(nameLang)){
  560. nameLang = "不区分";
  561. skuSN = skuSN+"AL"; // sku 不区分语言
  562. }else{
  563. skuSN = skuSN + UtilMap.getString(orderSubRecordLang,"textField_mizmmf8i"); // sku+语言编号
  564. }
  565. }
  566. skuSN = skuSN + leadsCode.substring(leadsCode.length()-10); // sku+项目号
  567. // numOfSets = UtilMap.getString_first(
  568. // orderSubRecordLang,
  569. // "numberField_meqqj4wd", // 套数【语言版本 - 数量拆分】
  570. // "numberField_mesc7nvi" // 套数【系列套数】
  571. // ); // 数量
  572. numOfSets = UtilMap.getString(orderSubRecordLang,"numberField_meqqj4wd"); // 套数【语言版本 - 数量拆分】
  573. partsName = UtilMap.getString(projectSubRecordParts,"textField_me2f7tvo"); //配件名称
  574. /*
  575. 复制【项目台账】子表单【全品类】记录为配件记录,并补充部分字段
  576. */
  577. partsRecord = new HashMap(projectSubRecordParts);
  578. partsRecord.putAll(
  579. UtilMap.map(
  580. "textField_mecmytpr, " + //配件名称
  581. "textField_mq4we7wq, " + //配件大类
  582. "textField_mpcfcy7f, " + //配件类型
  583. "textField_mecmytps, " + //TB任务编号
  584. //"textField_mecmytpt," +
  585. "numberField_mkosp94h, " + //客户订单数量
  586. "numberField_mmmwu4cg, " + //研发部订单需求数量
  587. "numberField_mifp03el, " + //工厂采购数量
  588. "textField_mifp03eo, " + //SKU编号
  589. "textField_miib17jx, " + //项目编号
  590. "textField_mizvc5oj, " + //任务表明细实例标识
  591. "textField_mpcf6yu2, " + //系列
  592. "textField_mjr129o4, " + //语言
  593. "radioField_mpm9k87c, " + //配件共用信息
  594. "numberField_mq4we7wr, " + //厚度
  595. "textField_mizu4cxk, " + //品质注意点
  596. "imageField_mpw90w7y, " + //图片
  597. "numberField_me2f7tw0", //单价
  598. partsName,
  599. UtilMap.getString(projectSubRecordParts,"selectField_me2f7tvk"),
  600. UtilMap.getString(projectSubRecordParts,"selectField_mizsccds"),
  601. "~",
  602. //"未开始",
  603. numOfSets,
  604. devNum,
  605. numOfSets, //此时工厂采购数量未包含研发部订单需求数量
  606. skuSN,
  607. projectCode,
  608. "~",
  609. UtilMap.getString(projectSubRecordParts,"selectField_me2f7tw4"),
  610. nameLang,
  611. UtilMap.getString(projectSubRecordParts,"radioField_me2f7tvw"), //配件共用信息
  612. UtilMap.getString(projectSubRecordParts,"numberField_mq4t39px"), //厚度
  613. UtilMap.getString(projectSubRecordParts,"textField_mq6bsu17"), //品质注意点
  614. UtilMap.getString(projectSubRecordParts,"imageField_me2f7tvv"), //图片
  615. UtilMap.getString(projectSubRecordParts,"numberField_mpqc5tmf") //大货供应商单价
  616. )
  617. );
  618. partsRecordList.add(partsRecord);
  619. }
  620. return partsRecordList;
  621. }
  622. /**
  623. * 保存配件任务数据(包装)
  624. */
  625. private List<Map> savePartsPackTaskData(
  626. String tbProjectId, //TB相关,无用
  627. List <Map> orderSubDataLang, //【销售订单】子表单【语言版本 - 数量拆分】数据,旧变量名 -> orderLangConf
  628. Map projectData, //【项目台账】数据,旧变量名 -> data
  629. String projectName, // 项目名称,旧变量名 -> pName
  630. String projectCode, // 项目编号(立项流程),旧变量名 -> pId
  631. String leadsCode, // 项目编号,旧变量名 -> pMainId
  632. List projectDataAssOrder, //【项目台账】关联表单【销售订单】,旧变量名 -> projectOrder
  633. Map supplierBuyerMap, //供应商与采购跟单userid映射,旧变量名 -> mchDDIdMap
  634. Map<String,String> seriesDevNumMap, //系列与研发部订单需求数量映射数据
  635. List<Map> projectSubDataPlan //【项目台账】子表单【项目计划】
  636. ) {
  637. Map<String, List<Map>> partsRecordListBySupplier = new HashMap<>(); // 供应商与采购需求关联数据,旧变量名 -> packOrderData
  638. Map partsRecord; //配件记录,旧变量名 -> packTask
  639. String supplier; //供应商
  640. String numOfSets; //套数,旧变量名 -> setsValue
  641. String nameSeries; //系列
  642. String nameLang; //语言
  643. String devNum; //研发部订单需求数量
  644. int allSupplyNum; //总采购数量
  645. log.info("项目阶段:包装");
  646. boolean packTaskFlag = false; //是否有包装阶段
  647. long projectPhasePlanEndTime = 0;
  648. for(Map projectSubRecordPlan : projectSubDataPlan){ //遍历项目计划阶段
  649. if("包装".equals(UtilMap.getString(projectSubRecordPlan,"textField_mgu5rm3f"))){ //阶段匹配成功
  650. projectPhasePlanEndTime = UtilMap.getLong(projectSubRecordPlan,"dateField_mgu5rm3h"); //计划结束时间,旧变量名 -> planTimestamp
  651. log.info("计划结束时间:"+DateUtil.formatDate(new Date(projectPhasePlanEndTime)));
  652. packTaskFlag = true;
  653. }
  654. }
  655. if(!packTaskFlag){
  656. //没有包装阶段
  657. return null;
  658. }
  659. for (Map orderSubRecordLang : orderSubDataLang) { //遍历子表单,旧变量名 -> orderMap
  660. supplier = UtilMap.getString(orderSubRecordLang, "textField_mkp7yv76"); //供应商
  661. numOfSets = UtilMap.getString(orderSubRecordLang, "numberField_meqqj4wd"); //套数
  662. nameSeries = UtilMap.getString(orderSubRecordLang, "textField_meqqj4wa"); //系列
  663. nameLang = UtilMap.getString(orderSubRecordLang,"textField_meqqj4wb"); // 语言【语言版本 - 数量拆分】
  664. if(PublicUtil.isNull(nameLang)){
  665. devNum = seriesDevNumMap.get(nameSeries+"_无");
  666. }else{
  667. devNum = seriesDevNumMap.get(nameSeries+"_"+nameLang);
  668. }
  669. allSupplyNum = 0;
  670. if(StringUtils.isNotEmpty(numOfSets)){
  671. if(StringUtils.isNotEmpty(devNum)){ //研发部订单需求数量是否填写
  672. allSupplyNum = Integer.parseInt(devNum) + Integer.parseInt(numOfSets); //计算总采购数量
  673. }else{
  674. allSupplyNum = Integer.parseInt(numOfSets); //总采购数量=工厂采购数量
  675. }
  676. }
  677. partsRecord = UtilMap.map(
  678. "textField_mecmytpr, " + //配件名称
  679. "textField_mifp03eo, " + //SKU编号
  680. "textField_mjr129o4, " + //语言
  681. "textField_mpcf6yu2, " + //系列
  682. "dateField_mizvc5oi, " + //考核日期(采购明细)
  683. "numberField_mkosp94h, " + //客户订单数量
  684. "numberField_mmmwu4cg, " + //研发部订单需求数量
  685. "numberField_mmmwu4ci, " + //总采购数量(废弃)
  686. "numberField_mifp03el, "+ //工厂采购数量
  687. "numberField_me2f7tw0, "+ //单价
  688. "numberField_mifp03ey", //小计金额
  689. UtilMap.getString(orderSubRecordLang, "textField_mizmmf8k"), //成品名称
  690. UtilMap.getString(orderSubRecordLang, "textField_mizmmf8j"), //成品编号
  691. UtilMap.getString(orderSubRecordLang, "textField_meqqj4wb"), //语言
  692. nameSeries, //系列
  693. projectPhasePlanEndTime, //考核日期(采购明细)
  694. numOfSets,
  695. devNum, //研发部订单需求数量
  696. 0, //总采购数量(废弃)
  697. allSupplyNum, //工厂采购数量
  698. 0, //单价
  699. 0 //小计金额
  700. );
  701. partsRecordListBySupplier.computeIfAbsent(supplier, k -> new ArrayList<>()).add(partsRecord);
  702. }
  703. List<String> ssUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me2hyld9_id"); // 业务员 userid
  704. List<String> ssmUserId = (List<String>) UtilMap.getList(projectData, "employeeField_mp6mn6je_id"); // 业务组长 userid
  705. List<String> pmUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me2hyld8_id"); // PM userid
  706. List<String> qaUserId = (List<String>) UtilMap.getList(projectData, "employeeField_me9n24ka_id"); // QA userid
  707. String testFlag = UtilMap.getString(projectData,"radioField_mp4t9q57"); //测试使用
  708. List<Map> partsRecordList; //配件记录(按供应商区分),旧变量名 -> packdetails
  709. Map partsTaskData; //配件任务数据,旧变量名 -> packTaskorder
  710. List<Map> supplierBuyerData; //【跟单-供应商对应表】数据,旧变量名 -> gysList
  711. List<UtilMap.assDetail> supplierBuyerDataAssSupplier; //【跟单-供应商对应表】关联表单【供应商】,旧变量名 -> gys
  712. for (String keySupplier : partsRecordListBySupplier.keySet()){ //遍历供应商与采购需求关联数据,旧变量名 -> key
  713. partsRecordList = partsRecordListBySupplier.get(keySupplier);
  714. partsTaskData = UtilMap.map(
  715. // "textField_mifp03ew, " + //TB项目编号
  716. "selectField_mifp03e7, " + //任务状态
  717. "tableField_mifp03em, " + //采购明细
  718. "selectField_mkf6qv9b, " + //采购类型
  719. "selectField_ml0l206x, "+ //订单类型
  720. "employeeField_mp6muk63, "+ //业务员
  721. "employeeField_mp6muk64, "+ //业务组长
  722. "employeeField_mp6muk65, "+ //PM
  723. "employeeField_mp6muk66, "+ //QA
  724. "dateField_mifp03eb, " + //考核日期
  725. "radioField_mp6hn7xp", //测试使用
  726. // tbProjectId,
  727. "待排期",
  728. partsRecordList,
  729. "成品包装",
  730. "大货",
  731. ssUserId,
  732. ssmUserId,
  733. pmUserId,
  734. qaUserId,
  735. projectPhasePlanEndTime,
  736. testFlag
  737. );
  738. partsTaskData.put("associationFormField_mifp03e9",projectDataAssOrder); //项目订单
  739. partsTaskData.put("associationFormField_mifp03e8",
  740. UtilMap.getAssFieldValue(projectData,"associationFormField_mdy7w1wn_id")
  741. ); // 销售项目
  742. partsTaskData.put("textField_mifp03e6",projectName+"-"+keySupplier+"-包装"); //任务名称
  743. partsTaskData.put("textField_mimwnauk",projectCode); //项目编号(立项流程)
  744. partsTaskData.put("textField_mp6hqggg",projectName); //项目名称(立项流程)
  745. // partsTaskData.put("textField_mizs3841",leadsCode);
  746. partsTaskData.put("employeeField_mifp03eu",Arrays.asList(supplierBuyerMap.get(keySupplier))); //跟单负责人
  747. supplierBuyerData = (List<Map>) ydClient.queryData(
  748. YDParam.builder()
  749. .formUuid(EastarParam.YD_FORMUUID_GYS_YW)
  750. .searchCondition(
  751. JSONObject.toJSONString(
  752. Arrays.asList(
  753. new YDSearch(
  754. "textField_mec6lku3", //"供应商简称"
  755. keySupplier,
  756. "供应商简称",
  757. YDSearch.Type.TEXT_FIELD,
  758. YDSearch.Operator.EQ
  759. )
  760. )
  761. )
  762. )
  763. .build(),
  764. YDConf.FORM_QUERY.retrieve_list
  765. ).getData();
  766. if(supplierBuyerData!=null && supplierBuyerData.size()>0){
  767. supplierBuyerDataAssSupplier
  768. = UtilMap.getAssFieldValue(
  769. UtilMap.getMap(supplierBuyerData.get(0),"formData"),
  770. "associationFormField_mec6lku4_id"
  771. );
  772. partsTaskData.put("associationFormField_mifp03ea",supplierBuyerDataAssSupplier); //供应商
  773. partsTaskData.put("textField_mpql81b5",leadsCode); //项目编号
  774. partsTaskData.put("textField_mifp03ez",supplierBuyerDataAssSupplier.get(0).subTitle); // 供应商编号
  775. }
  776. partsTaskData.put("textField_mmikzhlb","包装"); //里程碑
  777. // System.out.println("保存配件任务数据(包装):"+ JSONObject.toJSONString(partsTaskData));
  778. ydClient.operateData(
  779. YDParam.builder()
  780. .formUuid(EastarParam.YD_FORMUUID_CGTASK)
  781. .formDataJson(JSONObject.toJSONString(partsTaskData))
  782. .build(),
  783. YDConf.FORM_OPERATION.create
  784. );
  785. }
  786. return null;
  787. }
  788. @Override
  789. public List<Map> queryLtcAllBusinessUserData() throws Exception {
  790. /*
  791. 参数定义
  792. */
  793. List<Map> businessUserData = new ArrayList<>(); // 业务人员数据
  794. Map<String,String> businessUserRecord; //业务人员记录
  795. YDSearch ydSearch; //检索条件(单个)
  796. String searchCondition; //检索条件
  797. YDParam yidaParam; //HTTP请求体
  798. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  799. DDR_New yidaResult; //请求返回内容
  800. List<Map> records; //每页记录数据
  801. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  802. boolean hasMore; //是否还有下一页
  803. int pageNo; //当前页码
  804. int pageSize; //每页获取的数据量(上限100)
  805. JSONObject fields; //字段数据
  806. String formInstId; //表单实例ID
  807. JSONArray businessUserIdJSONArray; //业务员userId(未解析)
  808. String userId; //用户userId
  809. JSONArray businessLeaderUserIdJSONArray; //业务组长userId(未解析)
  810. String businessLeaderUserId; //业务组长userId
  811. /*
  812. 初始化参数值
  813. */
  814. ydSearch = new YDSearch(
  815. "radioField_mn48qynm",
  816. "在职",
  817. "在职情况",
  818. YDSearch.Type.RADIO_FIELD,
  819. YDSearch.Operator.EQ
  820. );
  821. searchCondition = JSONObject.toJSONString(Arrays.asList(ydSearch));
  822. hasMore = true; //第一页默认有数据
  823. pageNo = 1;
  824. pageSize = 100;
  825. ydParamBuilder = YDParam.builder();
  826. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_BUSINESS_USER);
  827. ydParamBuilder = ydParamBuilder.searchCondition(searchCondition);
  828. /*
  829. 翻页获取数据
  830. */
  831. while(hasMore){
  832. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  833. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  834. yidaParam = ydParamBuilder.build();
  835. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  836. log.info("当前第"+pageNo+"页");
  837. records = (List<Map>) yidaResult.getData();
  838. log.info("记录数="+records.size());
  839. for (Map record : records){
  840. allRecords.add(record);
  841. }
  842. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  843. pageNo++;
  844. }else{
  845. hasMore = false;
  846. }
  847. log.info("是否有更多数据:"+hasMore);
  848. }
  849. /*
  850. 请求记录数据处理
  851. */
  852. log.info("所有记录数量="+allRecords.size());
  853. userId = "";
  854. businessLeaderUserId = "";
  855. for (Map record : allRecords){
  856. businessUserRecord = new HashMap<>();
  857. //获取表单实例ID
  858. formInstId = String.valueOf(record.get("formInstanceId"));
  859. //解析字段数据
  860. fields = JSONObject.parseObject(JSONObject.toJSONString(record.get("formData")));
  861. /*
  862. 获取成员数据
  863. */
  864. if(fields.get("employeeField_mdfaff58_id") != null){
  865. businessUserIdJSONArray = fields.getJSONArray("employeeField_mdfaff58_id");
  866. if(!businessUserIdJSONArray.isEmpty()){
  867. userId = String.valueOf(businessUserIdJSONArray.get(0));
  868. }
  869. }
  870. /*
  871. 获取业务组长数据
  872. */
  873. if(fields.get("employeeField_mektcwc6_id") != null){
  874. businessLeaderUserIdJSONArray = fields.getJSONArray("employeeField_mektcwc6_id");
  875. if(!businessLeaderUserIdJSONArray.isEmpty()){
  876. businessLeaderUserId = String.valueOf(businessLeaderUserIdJSONArray.get(0));
  877. }
  878. }
  879. if(!formInstId.isEmpty() && !userId.isEmpty()){
  880. businessUserRecord.put("formInstId",formInstId);
  881. businessUserRecord.put("userId",userId);
  882. businessUserRecord.put("businessLeaderUserId",businessLeaderUserId);
  883. businessUserData.add(businessUserRecord);
  884. }
  885. }
  886. return businessUserData;
  887. }
  888. @Override
  889. public void setLtcBusinessUserLeave(String formInstId) throws Exception {
  890. /*
  891. 参数定义
  892. */
  893. YDParam yidaParam; //HTTP请求体
  894. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  895. String updateFormDataJson; //更新内容
  896. /*
  897. 初始化参数值
  898. */
  899. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("radioField_mn48qynm","已离职")); //在职情况
  900. /*
  901. 更新数据
  902. */
  903. ydParamBuilder = YDParam.builder();
  904. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  905. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  906. yidaParam = ydParamBuilder.build();
  907. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  908. }
  909. @Override
  910. public List<Map> queryLtcAllCustomerData() throws Exception {
  911. /*
  912. 参数定义
  913. */
  914. List<Map> ltcCustomerData = new ArrayList<>();
  915. YDParam yidaParam; //HTTP请求体
  916. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  917. DDR_New yidaResult; //请求返回内容
  918. List<Map> records; //每页记录数据
  919. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  920. boolean hasMore; //是否还有下一页
  921. int pageNo; //当前页码
  922. int pageSize; //每页获取的数据量(上限100)
  923. JSONObject fields; //字段数据
  924. String formInstId; //表单实例ID
  925. Map customerRecord; //客户记录
  926. String customerName;
  927. String customerCode;
  928. JSONArray businessUserIdJSONArray; //业务员userId
  929. String userId; //用户userId
  930. String userIdText;
  931. /*
  932. 初始化参数值
  933. */
  934. hasMore = true; //第一页默认有数据
  935. pageNo = 1;
  936. pageSize = 100;
  937. ydParamBuilder = YDParam.builder();
  938. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_CUSTOMER);
  939. /*
  940. 翻页获取数据
  941. */
  942. while(hasMore){
  943. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  944. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  945. yidaParam = ydParamBuilder.build();
  946. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  947. log.info("当前第"+pageNo+"页");
  948. records = (List<Map>) yidaResult.getData();
  949. log.info("记录数="+records.size());
  950. for (Map record : records){
  951. allRecords.add(record);
  952. }
  953. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  954. pageNo++;
  955. }else{
  956. hasMore = false;
  957. }
  958. log.info("是否有更多数据:"+hasMore);
  959. Thread.sleep(3000);
  960. }
  961. /*
  962. 请求记录数据处理
  963. */
  964. log.info("所有记录数量="+allRecords.size());
  965. for (Map ltcCustomerRecord : allRecords){
  966. userId = "";
  967. customerName = "";
  968. customerCode = "";
  969. //获取表单实例ID
  970. formInstId = String.valueOf(ltcCustomerRecord.get("formInstanceId"));
  971. //解析字段数据
  972. fields = JSONObject.parseObject(JSONObject.toJSONString(ltcCustomerRecord.get("formData")));
  973. /*
  974. 获取成员数据
  975. */
  976. businessUserIdJSONArray = null;
  977. if(fields.get("employeeField_lqanqe6n_id") != null){
  978. businessUserIdJSONArray = fields.getJSONArray("employeeField_lqanqe6n_id");
  979. if(!businessUserIdJSONArray.isEmpty()){
  980. userId = String.valueOf(businessUserIdJSONArray.get(0));
  981. }
  982. }
  983. userIdText = String.valueOf(ltcCustomerRecord.get("textField_mnchujji"));
  984. customerName = fields.getString("textField_lqanqe6j");
  985. customerCode = fields.getString("serialNumberField_lqanqe6i");
  986. //生成客户数据
  987. customerRecord = UtilMap.map(
  988. "formInstId, customerName, customerCode, userId, userIdText, customerLevel, customerPotentialLevel, newOrOld, testUseFlag, aiTableId",
  989. formInstId, //表单实例ID
  990. customerName, //客户公司名(英文名)
  991. customerCode, //客户编号
  992. userId, //业务
  993. userIdText,
  994. fields.getString("selectField_mcsoft5i"), //客户当前分级
  995. fields.getString("selectField_mhsvnqsv"), //客户潜在等级
  996. fields.getString("radioField_md6q7ox8"), //新老客户
  997. fields.getString("radioField_mnpdkss9"), //测试使用
  998. fields.getString("textField_mno9nwip") //AI表格映射ID
  999. );
  1000. ltcCustomerData.add(customerRecord);
  1001. }
  1002. return ltcCustomerData;
  1003. }
  1004. @Override
  1005. public List<Map> queryLtcAllSaleProjectData() throws Exception {
  1006. /*
  1007. 参数定义
  1008. */
  1009. List<Map> saleProjectData = new ArrayList<>();
  1010. YDParam yidaParam; //HTTP请求体
  1011. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1012. DDR_New yidaResult; //请求返回内容
  1013. List<Map> records; //每页记录数据
  1014. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1015. boolean hasMore; //是否还有下一页
  1016. int pageNo; //当前页码
  1017. int pageSize; //每页获取的数据量(上限100)
  1018. JSONObject fields; //字段数据
  1019. String formInstId; //表单实例ID
  1020. Map saleProjectRecord; //销售项目记录
  1021. /*
  1022. 初始化参数值
  1023. */
  1024. hasMore = true; //第一页默认有数据
  1025. pageNo = 1;
  1026. pageSize = 100;
  1027. ydParamBuilder = YDParam.builder();
  1028. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_SALE_PROJECT);
  1029. /*
  1030. 翻页获取数据
  1031. */
  1032. while(hasMore){
  1033. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  1034. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  1035. yidaParam = ydParamBuilder.build();
  1036. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  1037. log.info("当前第"+pageNo+"页");
  1038. records = (List<Map>) yidaResult.getData();
  1039. log.info("记录数="+records.size());
  1040. for (Map record : records){
  1041. allRecords.add(record);
  1042. }
  1043. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  1044. pageNo++;
  1045. }else{
  1046. hasMore = false;
  1047. }
  1048. log.info("是否有更多数据:"+hasMore);
  1049. Thread.sleep(3000);
  1050. }
  1051. /*
  1052. 请求记录数据处理
  1053. */
  1054. log.info("所有记录数量="+allRecords.size());
  1055. for (Map ltcSaleProjectRecord : allRecords){
  1056. //获取表单实例ID
  1057. formInstId = String.valueOf(ltcSaleProjectRecord.get("formInstanceId"));
  1058. //解析字段数据
  1059. fields = JSONObject.parseObject(JSONObject.toJSONString(ltcSaleProjectRecord.get("formData")));
  1060. saleProjectRecord = UtilMap.map(
  1061. "formInstId, projectCode, projectName, piCode, aiTableId",
  1062. formInstId, //表单实例ID
  1063. fields.getString("serialNumberField_mdf997w0"), //项目编号
  1064. fields.getString("textField_mdf997vz"), //项目名称
  1065. fields.getString("textField_mhlrjdz2"), //原系统PI号
  1066. fields.getString("textField_mno9p0lf") //AI表格映射ID
  1067. );
  1068. saleProjectData.add(saleProjectRecord);
  1069. }
  1070. return saleProjectData;
  1071. }
  1072. @Override
  1073. public List<Map> queryLtcSaleProjectData(Map params) throws Exception {
  1074. /*
  1075. 参数定义
  1076. */
  1077. List<Map> saleProjectData = new ArrayList<>();
  1078. List<YDSearch> ydSearchList = new ArrayList<>(); //检索条件(多个)
  1079. YDSearch ydSearch; //检索条件(单个)
  1080. String searchCondition = null; //检索条件
  1081. YDParam yidaParam; //HTTP请求体
  1082. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1083. DDR_New yidaResult; //请求返回内容
  1084. List<Map> records; //每页记录数据
  1085. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1086. boolean hasMore; //是否还有下一页
  1087. int pageNo; //当前页码
  1088. int pageSize; //每页获取的数据量(上限100)
  1089. JSONObject fields; //字段数据
  1090. String formInstId; //表单实例ID
  1091. Map saleProjectRecord; //销售项目记录
  1092. /*
  1093. 初始化参数值
  1094. */
  1095. if(params.containsKey("piCodePrefix")){
  1096. ydSearch = new YDSearch(
  1097. "textField_mhlrjdz2",
  1098. params.get("piCodePrefix").toString(),
  1099. "原系统PI号",
  1100. YDSearch.Type.TEXT_FIELD,
  1101. YDSearch.Operator.LIKE
  1102. );
  1103. ydSearchList.add(ydSearch);
  1104. searchCondition = JSONObject.toJSONString(ydSearchList);
  1105. }
  1106. hasMore = true; //第一页默认有数据
  1107. pageNo = 1;
  1108. pageSize = 100;
  1109. ydParamBuilder = YDParam.builder();
  1110. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_SALE_PROJECT);
  1111. if(searchCondition != null){
  1112. ydParamBuilder = ydParamBuilder.searchCondition(searchCondition);
  1113. }
  1114. /*
  1115. 翻页获取数据
  1116. */
  1117. while(hasMore){
  1118. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  1119. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  1120. yidaParam = ydParamBuilder.build();
  1121. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  1122. log.info("当前第"+pageNo+"页");
  1123. records = (List<Map>) yidaResult.getData();
  1124. log.info("记录数="+records.size());
  1125. for (Map record : records){
  1126. allRecords.add(record);
  1127. }
  1128. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  1129. pageNo++;
  1130. }else{
  1131. hasMore = false;
  1132. }
  1133. log.info("是否有更多数据:"+hasMore);
  1134. Thread.sleep(3000);
  1135. }
  1136. /*
  1137. 请求记录数据处理
  1138. */
  1139. log.info("所有记录数量="+allRecords.size());
  1140. for (Map ltcSaleProjectRecord : allRecords){
  1141. //获取表单实例ID
  1142. formInstId = String.valueOf(ltcSaleProjectRecord.get("formInstanceId"));
  1143. //解析字段数据
  1144. fields = JSONObject.parseObject(JSONObject.toJSONString(ltcSaleProjectRecord.get("formData")));
  1145. saleProjectRecord = UtilMap.map(
  1146. "formInstId, projectCode, projectName, projectStage, customer, piCode, aiTableId",
  1147. formInstId, //表单实例ID
  1148. fields.getString("serialNumberField_mdf997w0"), //项目编号
  1149. fields.getString("textField_mdf997vz"), //项目名称
  1150. fields.getString("selectField_mdf997wp"), //整体项目阶段
  1151. fields.getString("associationFormField_mdf997wc_id"), //客户
  1152. fields.getString("textField_mhlrjdz2"), //原系统PI号
  1153. fields.getString("textField_mno9p0lf") //AI表格映射ID
  1154. );
  1155. saleProjectData.add(saleProjectRecord);
  1156. }
  1157. return saleProjectData;
  1158. }
  1159. @Override
  1160. public List<Map> queryLtcNotFollowedCustomerData(List ydFilters) throws Exception {
  1161. /*
  1162. 参数定义
  1163. */
  1164. List<Map> ltcCustomerData = new ArrayList<>();
  1165. String searchCondition; //检索条件
  1166. YDParam yidaParam; //HTTP请求体
  1167. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1168. DDR_New yidaResult; //请求返回内容
  1169. List<Map> records; //每页记录数据
  1170. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1171. boolean hasMore; //是否还有下一页
  1172. int pageNo; //当前页码
  1173. int pageSize; //每页获取的数据量(上限100)
  1174. JSONObject fields; //字段数据
  1175. String formInstId; //表单实例ID
  1176. Map customerRecord; //客户记录
  1177. String customerCode; //客户编号
  1178. String customerName; //客户名称
  1179. JSONArray businessUserIdJSONArray; //业务员字段值
  1180. String userId; //业务员userId
  1181. /*
  1182. 初始化参数值
  1183. */
  1184. searchCondition = JSONObject.toJSONString(ydFilters);
  1185. hasMore = true; //第一页默认有数据
  1186. pageNo = 1;
  1187. pageSize = 100;
  1188. ydParamBuilder = YDParam.builder();
  1189. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_CUSTOMER);
  1190. ydParamBuilder = ydParamBuilder.searchCondition(searchCondition);
  1191. /*
  1192. 翻页获取数据
  1193. */
  1194. while(hasMore){
  1195. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  1196. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  1197. yidaParam = ydParamBuilder.build();
  1198. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  1199. log.info("当前第"+pageNo+"页");
  1200. records = (List<Map>) yidaResult.getData();
  1201. log.info("记录数="+records.size());
  1202. for (Map record : records){
  1203. allRecords.add(record);
  1204. }
  1205. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  1206. pageNo++;
  1207. }else{
  1208. hasMore = false;
  1209. }
  1210. log.info("是否有更多数据:"+hasMore);
  1211. Thread.sleep(3000);
  1212. }
  1213. /*
  1214. 请求记录数据处理
  1215. */
  1216. log.info("所有记录数量="+allRecords.size());
  1217. for (Map ltcCustomerRecord : allRecords){
  1218. userId = "";
  1219. //获取表单实例ID
  1220. formInstId = String.valueOf(ltcCustomerRecord.get("formInstanceId"));
  1221. //解析字段数据
  1222. fields = JSONObject.parseObject(JSONObject.toJSONString(ltcCustomerRecord.get("formData")));
  1223. customerCode = fields.getString("serialNumberField_lqanqe6i");
  1224. customerName = fields.getString("textField_lqanqe6j");
  1225. /*
  1226. 获取成员数据
  1227. */
  1228. if(fields.get("employeeField_lqanqe6n_id") != null){
  1229. businessUserIdJSONArray = fields.getJSONArray("employeeField_lqanqe6n_id");
  1230. if(!businessUserIdJSONArray.isEmpty()){
  1231. userId = String.valueOf(businessUserIdJSONArray.get(0));
  1232. }
  1233. }
  1234. //生成客户数据
  1235. customerRecord = UtilMap.map(
  1236. "formInstId, customerCode, customerName, userId",
  1237. formInstId, //表单实例ID
  1238. customerCode, //客户编号
  1239. customerName, //客户公司名(英文名)
  1240. userId //业务员userId
  1241. );
  1242. ltcCustomerData.add(customerRecord);
  1243. }
  1244. return ltcCustomerData;
  1245. }
  1246. @Override
  1247. public List<Map> queryLtcCustomerEstablishContactData() throws Exception {
  1248. /*
  1249. 参数定义
  1250. */
  1251. List<Map> establishContactData = new ArrayList<>();
  1252. YDSearch ydSearch; //检索条件(单个)
  1253. String searchCondition; //检索条件
  1254. YDParam yidaParam; //HTTP请求体
  1255. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1256. DDR_New yidaResult; //请求返回内容
  1257. List<Map> records; //每页记录数据
  1258. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1259. boolean hasMore; //是否还有下一页
  1260. int pageNo; //当前页码
  1261. int pageSize; //每页获取的数据量(上限100)
  1262. JSONObject fields; //字段数据
  1263. String formInstId; //表单实例ID
  1264. Map establishContactRecord; //客户建联跟进记录
  1265. String customerCode; //客户编号
  1266. JSONArray businessUserIdJSONArray; //跟进人字段值
  1267. String userId; //业务员userId
  1268. /*
  1269. 初始化参数值
  1270. */
  1271. ydSearch = new YDSearch(
  1272. "radioField_mo2p26sg",
  1273. "是",
  1274. "是否已建立联系",
  1275. YDSearch.Type.RADIO_FIELD,
  1276. YDSearch.Operator.EQ
  1277. );
  1278. searchCondition = JSONObject.toJSONString(Arrays.asList(ydSearch));
  1279. hasMore = true; //第一页默认有数据
  1280. pageNo = 1;
  1281. pageSize = 100;
  1282. ydParamBuilder = YDParam.builder();
  1283. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_CUSTOMER_CONTACT);
  1284. ydParamBuilder = ydParamBuilder.searchCondition(searchCondition);
  1285. /*
  1286. 翻页获取数据
  1287. */
  1288. while(hasMore){
  1289. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  1290. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  1291. yidaParam = ydParamBuilder.build();
  1292. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  1293. log.info("当前第"+pageNo+"页");
  1294. records = (List<Map>) yidaResult.getData();
  1295. log.info("记录数="+records.size());
  1296. for (Map record : records){
  1297. allRecords.add(record);
  1298. }
  1299. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  1300. pageNo++;
  1301. }else{
  1302. hasMore = false;
  1303. }
  1304. log.info("是否有更多数据:"+hasMore);
  1305. Thread.sleep(3000);
  1306. }
  1307. /*
  1308. 请求记录数据处理
  1309. */
  1310. log.info("所有记录数量="+allRecords.size());
  1311. for (Map record : allRecords){
  1312. customerCode = "";
  1313. userId = "";
  1314. //解析字段数据
  1315. fields = JSONObject.parseObject(JSONObject.toJSONString(record.get("formData")));
  1316. //获取客户编号
  1317. customerCode = fields.getString("textField_lqgni3ps");
  1318. /*
  1319. 获取业务员userId
  1320. */
  1321. if(fields.get("employeeField_lqbo4rw3_id") != null){
  1322. businessUserIdJSONArray = fields.getJSONArray("employeeField_lqbo4rw3_id");
  1323. if(!businessUserIdJSONArray.isEmpty()){
  1324. userId = String.valueOf(businessUserIdJSONArray.get(0));
  1325. }
  1326. }
  1327. //添加客户建联跟进记录
  1328. establishContactRecord = UtilMap.map(
  1329. "customerCode, userId",
  1330. customerCode, //客户编号
  1331. userId //业务员userId
  1332. );
  1333. establishContactData.add(establishContactRecord);
  1334. }
  1335. return establishContactData;
  1336. }
  1337. @Override
  1338. public List<Map> queryLtcRFQData() throws Exception {
  1339. /*
  1340. 参数定义
  1341. */
  1342. List<Map> rfqData = new ArrayList<>(); //询价与报价数据
  1343. YDParam yidaParam; //HTTP请求体
  1344. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1345. DDR_New yidaResult; //请求返回内容
  1346. List<Map> records; //每页记录数据
  1347. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1348. boolean hasMore; //是否还有下一页
  1349. int pageNo; //当前页码
  1350. int pageSize; //每页获取的数据量(上限100)
  1351. JSONObject fields; //字段数据
  1352. Map rfqRecord; //询价与报价记录
  1353. String projectCode; //项目编号
  1354. Long getRfqDate; //询价时间
  1355. /*
  1356. 初始化参数值
  1357. */
  1358. hasMore = true; //第一页默认有数据
  1359. pageNo = 1;
  1360. pageSize = 100;
  1361. ydParamBuilder = YDParam.builder();
  1362. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_RFQ);
  1363. /*
  1364. 翻页获取数据
  1365. */
  1366. while(hasMore){
  1367. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  1368. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  1369. yidaParam = ydParamBuilder.build();
  1370. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  1371. log.info("当前第"+pageNo+"页");
  1372. records = (List<Map>) yidaResult.getData();
  1373. log.info("记录数="+records.size());
  1374. for (Map record : records){
  1375. allRecords.add(record);
  1376. }
  1377. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  1378. pageNo++;
  1379. }else{
  1380. hasMore = false;
  1381. }
  1382. log.info("是否有更多数据:"+hasMore);
  1383. Thread.sleep(3000);
  1384. }
  1385. /*
  1386. 请求记录数据处理
  1387. */
  1388. log.info("所有记录数量="+allRecords.size());
  1389. for (Map record : allRecords){
  1390. projectCode = "";
  1391. getRfqDate = null;
  1392. //解析字段数据
  1393. fields = JSONObject.parseObject(JSONObject.toJSONString(record.get("formData")));
  1394. //获取项目编号
  1395. projectCode = fields.getString("textField_mdpdyde2");
  1396. //获取询价时间
  1397. getRfqDate = fields.getLong("dateField_mdpdyddc");
  1398. //添加客户建联跟进记录
  1399. rfqRecord = UtilMap.map(
  1400. "projectCode, getRfqDate",
  1401. projectCode, //项目编号
  1402. getRfqDate //询价时间
  1403. );
  1404. rfqData.add(rfqRecord);
  1405. }
  1406. return rfqData;
  1407. }
  1408. @Override
  1409. public String queryProjectCode(String formInstId) throws Exception {
  1410. Map leadsData = ydClient.queryData(
  1411. YDParam.builder().formInstId(formInstId).build(),
  1412. YDConf.FORM_QUERY.retrieve_id
  1413. ).getFormData();
  1414. return UtilMap.getString(leadsData,"serialNumberField_mdf997w0"); //项目编号
  1415. }
  1416. @Override
  1417. public void updateLtcCustomerTestFlag(String formInstId) throws Exception {
  1418. /*
  1419. 参数定义
  1420. */
  1421. YDParam yidaParam; //HTTP请求体
  1422. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1423. String updateFormDataJson; //更新内容
  1424. /*
  1425. 初始化参数值
  1426. */
  1427. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("radioField_mnpdkss9","是")); //测试使用
  1428. /*
  1429. 更新数据
  1430. */
  1431. ydParamBuilder = YDParam.builder();
  1432. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1433. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1434. yidaParam = ydParamBuilder.build();
  1435. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1436. }
  1437. @Override
  1438. public void updateLtcCustomerBasicInfo(String formInstId, String customerName, String businessUserId, String seaType, String testUseFlag) throws Exception {
  1439. /*
  1440. 参数定义
  1441. */
  1442. YDParam yidaParam; //HTTP请求体
  1443. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1444. String updateFormDataJson; //更新内容
  1445. /*
  1446. 初始化参数值
  1447. */
  1448. Map updateFormData = UtilMap.map(
  1449. "textField_lqanqe6j, employeeField_lqanqe6n, radioField_md6q7oxa, radioField_mnpdkss9",
  1450. customerName,
  1451. businessUserId!=null?new String[]{businessUserId}:new String[]{},
  1452. seaType,
  1453. testUseFlag
  1454. );
  1455. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1456. System.out.println(updateFormDataJson);
  1457. /*
  1458. 更新数据
  1459. */
  1460. ydParamBuilder = YDParam.builder();
  1461. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1462. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1463. yidaParam = ydParamBuilder.build();
  1464. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1465. }
  1466. @Override
  1467. public void updateLtcCustomerBasicInfo2(String formInstId, String customerName, String businessUserId, String seaType, String newOrOld, String testUseFlag) throws Exception {
  1468. /*
  1469. 参数定义
  1470. */
  1471. YDParam yidaParam; //HTTP请求体
  1472. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1473. String updateFormDataJson; //更新内容
  1474. /*
  1475. 初始化参数值
  1476. */
  1477. Map updateFormData = UtilMap.map(
  1478. "textField_lqanqe6j, employeeField_lqanqe6n, radioField_md6q7oxa, radioField_md6q7ox8, radioField_mnpdkss9",
  1479. customerName,
  1480. businessUserId!=null?new String[]{businessUserId}:new String[]{},
  1481. seaType,
  1482. newOrOld,
  1483. testUseFlag
  1484. );
  1485. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1486. System.out.println(updateFormDataJson);
  1487. /*
  1488. 更新数据
  1489. */
  1490. ydParamBuilder = YDParam.builder();
  1491. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1492. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1493. yidaParam = ydParamBuilder.build();
  1494. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1495. }
  1496. @Override
  1497. public void updateLtcCustomerBasicInfo3(String formInstId, String customerNameUpperCase, String businessUserId, String businessLeaderUserId, String isBigCustomer) throws Exception {
  1498. /*
  1499. 参数定义
  1500. */
  1501. YDParam yidaParam; //HTTP请求体
  1502. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1503. String updateFormDataJson; //更新内容
  1504. /*
  1505. 初始化参数值
  1506. */
  1507. Map updateFormData = UtilMap.map(
  1508. "textField_meks6pjp, textField_mnchujji, employeeField_lqx3act6, radioField_mo0xhmnw",
  1509. customerNameUpperCase,
  1510. businessUserId,
  1511. businessLeaderUserId!=null?new String[]{businessLeaderUserId}:new String[]{},
  1512. isBigCustomer
  1513. );
  1514. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1515. System.out.println(updateFormDataJson);
  1516. /*
  1517. 更新数据
  1518. */
  1519. ydParamBuilder = YDParam.builder();
  1520. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1521. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1522. yidaParam = ydParamBuilder.build();
  1523. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1524. }
  1525. @Override
  1526. public void updateLtcCustomerBasicInfo4(String formInstId, String businessUserId, String businessName, String businessLeaderUserId, String businessDepartment) throws Exception {
  1527. /*
  1528. 参数定义
  1529. */
  1530. YDParam yidaParam; //HTTP请求体
  1531. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1532. String updateFormDataJson; //更新内容
  1533. /*
  1534. 初始化参数值
  1535. */
  1536. Map updateFormData = UtilMap.map(
  1537. "textField_mnchujji, textField_lxa0ko5h, employeeField_lqx3act6, departmentSelectField_lympbaya",
  1538. businessUserId,
  1539. businessName,
  1540. businessLeaderUserId!=null?new String[]{businessLeaderUserId}:new String[]{},
  1541. businessDepartment!=null?new String[]{businessDepartment}:new String[]{}
  1542. );
  1543. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1544. System.out.println(updateFormDataJson);
  1545. /*
  1546. 更新数据
  1547. */
  1548. ydParamBuilder = YDParam.builder();
  1549. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1550. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1551. yidaParam = ydParamBuilder.build();
  1552. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1553. }
  1554. @Override
  1555. public void updateLtcCustomerBasicInfo5(String formInstId, String customerLevel1, String customerLevel2, String customerLevel3, String aiTableId) throws Exception {
  1556. /*
  1557. 参数定义
  1558. */
  1559. YDParam yidaParam; //HTTP请求体
  1560. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1561. String updateFormDataJson; //更新内容
  1562. /*
  1563. 初始化参数值
  1564. */
  1565. Map updateFormData = UtilMap.map(
  1566. "selectField_mcsoft5i, selectField_mhsvnqsv, selectField_mfkshib3, textField_mno9nwip",
  1567. customerLevel1,
  1568. customerLevel2,
  1569. customerLevel3,
  1570. aiTableId
  1571. );
  1572. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1573. System.out.println(updateFormDataJson);
  1574. /*
  1575. 更新数据
  1576. */
  1577. ydParamBuilder = YDParam.builder();
  1578. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1579. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1580. yidaParam = ydParamBuilder.build();
  1581. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1582. }
  1583. @Override
  1584. public void updateLtcCustomerBasicInfo6(String formInstId, String customerLevel1, String customerLevel2, String newOrOld, String aiTableId) throws Exception {
  1585. /*
  1586. 参数定义
  1587. */
  1588. YDParam yidaParam; //HTTP请求体
  1589. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1590. String updateFormDataJson; //更新内容
  1591. /*
  1592. 初始化参数值
  1593. */
  1594. Map updateFormData = UtilMap.map(
  1595. "selectField_mcsoft5i, selectField_mhsvnqsv, radioField_md6q7ox8, textField_mno9nwip",
  1596. customerLevel1,
  1597. customerLevel2,
  1598. newOrOld,
  1599. aiTableId
  1600. );
  1601. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1602. System.out.println(updateFormDataJson);
  1603. /*
  1604. 更新数据
  1605. */
  1606. ydParamBuilder = YDParam.builder();
  1607. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1608. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1609. yidaParam = ydParamBuilder.build();
  1610. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1611. }
  1612. @Override
  1613. public void updateLtcCustomerBasicInfo7(String formInstId, String customerLevel, String customerPotentialLevel) throws Exception {
  1614. /*
  1615. 参数定义
  1616. */
  1617. YDParam yidaParam; //HTTP请求体
  1618. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1619. String updateFormDataJson; //更新内容
  1620. /*
  1621. 初始化参数值
  1622. */
  1623. Map updateFormData = UtilMap.map(
  1624. "selectField_mcsoft5i, selectField_mhsvnqsv",
  1625. customerLevel,
  1626. customerPotentialLevel
  1627. );
  1628. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1629. System.out.println(updateFormDataJson);
  1630. /*
  1631. 更新数据
  1632. */
  1633. ydParamBuilder = YDParam.builder();
  1634. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1635. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1636. yidaParam = ydParamBuilder.build();
  1637. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1638. }
  1639. @Override
  1640. public void updateLtcCustomerBasicInfo8(String formInstId, long privateSeaTime, long lastContactTime) throws Exception {
  1641. /*
  1642. 参数定义
  1643. */
  1644. YDParam yidaParam; //HTTP请求体
  1645. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1646. String updateFormDataJson; //更新内容
  1647. /*
  1648. 初始化参数值
  1649. */
  1650. Map updateFormData = UtilMap.map(
  1651. "dateField_moxzc25f, dateField_l3tw3kfn",
  1652. privateSeaTime,
  1653. lastContactTime
  1654. );
  1655. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1656. System.out.println(updateFormDataJson);
  1657. /*
  1658. 更新数据
  1659. */
  1660. ydParamBuilder = YDParam.builder();
  1661. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1662. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1663. yidaParam = ydParamBuilder.build();
  1664. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1665. }
  1666. @Override
  1667. public void updatePreviousBusinessUser(String formInstId, String previousBusinessUserId, String previousBusinessGroup) throws Exception {
  1668. /*
  1669. 参数定义
  1670. */
  1671. YDParam yidaParam; //HTTP请求体
  1672. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1673. String updateFormDataJson; //更新内容
  1674. /*
  1675. 初始化参数值
  1676. */
  1677. Map updateFormData = UtilMap.map(
  1678. "employeeField_mdo82twa, selectField_moyb4zx2, radioField_md6q7oxa, employeeField_lqanqe6n, employeeField_lqx3act6, selectField_moy9v8ve, textField_mnchujji, textField_lxa0ko5h",
  1679. previousBusinessUserId!=null?new String[]{previousBusinessUserId}:new String[]{}, //前跟进人员
  1680. previousBusinessGroup, //前跟进团队
  1681. "公", //公海/私海
  1682. new String[]{}, //业务员
  1683. new String[]{}, //业务组长
  1684. "", //业务小组
  1685. "", //业务员userId
  1686. "" //业务员name
  1687. );
  1688. updateFormDataJson = JSONObject.toJSONString(updateFormData);
  1689. System.out.println(updateFormDataJson);
  1690. /*
  1691. 更新数据
  1692. */
  1693. ydParamBuilder = YDParam.builder();
  1694. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1695. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1696. yidaParam = ydParamBuilder.build();
  1697. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1698. }
  1699. @Override
  1700. public void updateCustomerRelatedAitableId(String formInstId, String aitableId) throws Exception {
  1701. /*
  1702. 参数定义
  1703. */
  1704. YDParam yidaParam; //HTTP请求体
  1705. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1706. String updateFormDataJson; //更新内容
  1707. /*
  1708. 初始化参数值
  1709. */
  1710. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("textField_mno9nwip",aitableId)); //AI表格映射ID
  1711. /*
  1712. 更新数据
  1713. */
  1714. ydParamBuilder = YDParam.builder();
  1715. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1716. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1717. yidaParam = ydParamBuilder.build();
  1718. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1719. }
  1720. @Override
  1721. public void updateSaleProjectRelatedAitableId(String formInstId, String aitableId) throws Exception {
  1722. /*
  1723. 参数定义
  1724. */
  1725. YDParam yidaParam; //HTTP请求体
  1726. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1727. String updateFormDataJson; //更新内容
  1728. /*
  1729. 初始化参数值
  1730. */
  1731. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("textField_mno9p0lf",aitableId)); //AI表格映射ID
  1732. /*
  1733. 更新数据
  1734. */
  1735. ydParamBuilder = YDParam.builder();
  1736. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1737. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1738. yidaParam = ydParamBuilder.build();
  1739. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1740. }
  1741. @Override
  1742. public void updateLtcSaleProjectRelatedCustomer(String formInstId, JSONArray customerAss) throws Exception {
  1743. /*
  1744. 参数定义
  1745. */
  1746. YDParam yidaParam; //HTTP请求体
  1747. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1748. String updateFormDataJson; //更新内容
  1749. /*
  1750. 初始化参数值
  1751. */
  1752. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("associationFormField_mdf997wc",customerAss)); //客户
  1753. /*
  1754. 更新数据
  1755. */
  1756. ydParamBuilder = YDParam.builder();
  1757. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  1758. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  1759. yidaParam = ydParamBuilder.build();
  1760. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  1761. }
  1762. @Override
  1763. public void insertCustomerData(Map row) throws Exception {
  1764. YDParam yidaParam; //HTTP请求体
  1765. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1766. String customerLevel = "";
  1767. if(row.get("customerLevel")!=null){
  1768. customerLevel = row.get("customerLevel").toString();
  1769. }
  1770. String businessUserId = "";
  1771. String[] businessUserIdArr = new String[]{};
  1772. if(row.get("businessUserId")!=null){
  1773. businessUserId = row.get("businessUserId").toString();
  1774. businessUserIdArr = new String[]{row.get("businessUserId").toString()};
  1775. }
  1776. String businessUserName = "";
  1777. if(row.get("businessUserName")!=null){
  1778. businessUserName = row.get("businessUserName").toString();
  1779. }
  1780. String[] businessLeaderUserIdArr = new String[]{};
  1781. if(row.get("businessLeaderUserId")!=null){
  1782. businessLeaderUserIdArr = new String[]{row.get("businessLeaderUserId").toString()};
  1783. }
  1784. String[] businessDepartmentArr = new String[]{};
  1785. if(row.get("businessDepartment")!=null){
  1786. businessDepartmentArr = new String[]{row.get("businessDepartment").toString()};
  1787. }
  1788. Map customerRecord = UtilMap.map(
  1789. "textField_lqanqe6j, " //客户公司名(英文名)
  1790. +"textField_meks6pjp, " //客户验重
  1791. +"radioField_md6q7ox8, " //新老客户
  1792. +"selectField_mcsoft5i, " //客户当前分级
  1793. +"selectField_mhsvnqsv, " //客户潜在等级
  1794. +"employeeField_lqanqe6n, " //业务
  1795. +"textField_mnchujji, " //业务userId
  1796. +"textField_lxa0ko5h, " //业务name
  1797. +"employeeField_lqx3act6, " //业务组长
  1798. +"departmentSelectField_lympbaya, " //业务部门
  1799. +"radioField_md6q7oxa, " //公海/私海
  1800. +"textField_mno9nwip, " //AI表格映射ID
  1801. +"radioField_mnpdkss9", //测试使用
  1802. row.get("customerName"),
  1803. row.get("customerName1UpperCase"),
  1804. row.get("newOrOld"),
  1805. row.get("customerLevelActual"),
  1806. customerLevel,
  1807. businessUserIdArr,
  1808. businessUserId,
  1809. businessUserName,
  1810. businessLeaderUserIdArr,
  1811. businessDepartmentArr,
  1812. row.get("seaType"),
  1813. row.get("aiTableId"),
  1814. row.get("testUseFlag")
  1815. );
  1816. String insertFormDataJson = JSONObject.toJSONString(customerRecord);
  1817. System.out.println(insertFormDataJson);
  1818. ydParamBuilder = YDParam.builder();
  1819. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_CUSTOMER);
  1820. ydParamBuilder = ydParamBuilder.formDataJson(insertFormDataJson);
  1821. yidaParam = ydParamBuilder.build();
  1822. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.create);
  1823. System.out.println("新增一条客户记录");
  1824. }
  1825. @Override
  1826. public void insertSaleProjectData(Map row) throws Exception {
  1827. YDParam yidaParam; //HTTP请求体
  1828. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1829. String businessUserId = "";
  1830. String[] businessUserIdArr = new String[]{};
  1831. if(row.get("businessUserId")!=null){
  1832. businessUserId = row.get("businessUserId").toString();
  1833. businessUserIdArr = new String[]{row.get("businessUserId").toString()};
  1834. }
  1835. List customerField = new ArrayList();
  1836. Map customerFieldVal = new HashMap();
  1837. customerFieldVal.put("appType","APP_GM7D1NW6XCD0ZJBPVH51");
  1838. customerFieldVal.put("formUuid","FORM-9261FABA687B4D1D917617F53B4A5DB7UN16"); //客户
  1839. customerFieldVal.put("formType","receipt");
  1840. customerFieldVal.put("instanceId",row.get("customerId"));
  1841. customerFieldVal.put("title",row.get("customerName"));
  1842. customerFieldVal.put("subTitle",row.get("customerCode"));
  1843. customerField.add(customerFieldVal);
  1844. Map saleProjectRecord = UtilMap.map(
  1845. "textField_mdf997vz, " //项目名称
  1846. +"textField_mdf997wb, " //项目英文名
  1847. +"textField_mgrg3348, " //项目名称缩写
  1848. +"associationFormField_mdf997wc, " //客户
  1849. +"textField_mn48rz8y, " //客户公司名(英文名)
  1850. +"textField_mdpb1gh1, " //客户编号
  1851. +"employeeField_mdf997x2, " //业务员
  1852. +"textField_mnctph7f, " //业务员userId
  1853. +"selectField_mdf997ws, " //销售项目状态
  1854. +"selectField_mdf997wp, " //整体项目阶段
  1855. +"selectField_mfkv8ou2, " //成单情况
  1856. +"numberField_mdf997x6, " //预计销售项目金额(美元)
  1857. +"dateField_mdf997x7, " //预计成单日期
  1858. +"dateField_mfm5x6cl, " //实际成单日期
  1859. +"textField_mgykaadz, " //全局汇率单位
  1860. +"textField_mhlrjdz2, " //原系统PI号
  1861. +"textField_mno9p0lf, " //AI表格映射ID
  1862. +"radioField_mo0xt19d, " //是否特殊客户
  1863. +"radioField_mnppbub6", //测试使用
  1864. row.get("projectName"),
  1865. row.get("projectEnName"),
  1866. row.get("pName"),
  1867. customerField,
  1868. row.get("customerName"),
  1869. row.get("customerCode"),
  1870. businessUserIdArr,
  1871. businessUserId,
  1872. "已完成",
  1873. "S3:已签单",
  1874. "已成单",
  1875. row.get("projectAmount"),
  1876. row.get("expectedCloseDate"),
  1877. row.get("actualCloseDate"),
  1878. "美元/人民币",
  1879. row.get("piCode"),
  1880. row.get("aiTableId"),
  1881. "否",
  1882. "否"
  1883. );
  1884. String insertFormDataJson = JSONObject.toJSONString(saleProjectRecord);
  1885. System.out.println(insertFormDataJson);
  1886. ydParamBuilder = YDParam.builder();
  1887. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_SALE_PROJECT);
  1888. ydParamBuilder = ydParamBuilder.formDataJson(insertFormDataJson);
  1889. yidaParam = ydParamBuilder.build();
  1890. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.create);
  1891. System.out.println("新增一条销售项目记录");
  1892. }
  1893. @Override
  1894. public void addAlertDetail(Map row) throws Exception {
  1895. YDParam yidaParam; //HTTP请求体
  1896. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1897. String[] businessUserIdArr = new String[]{};
  1898. if(row.get("businessUserId")!=null){
  1899. businessUserIdArr = new String[]{row.get("businessUserId").toString()};
  1900. }
  1901. List customerField = new ArrayList();
  1902. Map customerFieldVal = new HashMap();
  1903. customerFieldVal.put("appType","APP_GM7D1NW6XCD0ZJBPVH51");
  1904. customerFieldVal.put("formUuid","FORM-9261FABA687B4D1D917617F53B4A5DB7UN16"); //客户
  1905. customerFieldVal.put("formType","receipt");
  1906. customerFieldVal.put("instanceId",row.get("formInstId"));
  1907. customerFieldVal.put("title",row.get("customerName"));
  1908. customerFieldVal.put("subTitle",row.get("customerCode"));
  1909. customerField.add(customerFieldVal);
  1910. Map alertLogRecord = UtilMap.map(
  1911. "employeeField_mpf2mxcc, " //业务员
  1912. +"associationFormField_mpf2mxcb, " //客户
  1913. +"textareaField_mpghcehk, " //备注
  1914. +"dateField_mpf2mxcd", //提醒日期
  1915. businessUserIdArr,
  1916. customerField,
  1917. row.get("remark"),
  1918. row.get("today")
  1919. );
  1920. String insertFormDataJson = JSONObject.toJSONString(alertLogRecord);
  1921. System.out.println(insertFormDataJson);
  1922. ydParamBuilder = YDParam.builder();
  1923. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_ALERT_DETAIL);
  1924. ydParamBuilder = ydParamBuilder.formDataJson(insertFormDataJson);
  1925. yidaParam = ydParamBuilder.build();
  1926. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.create);
  1927. log.info("新增一条私海客户流出风险提示记录");
  1928. Thread.sleep(1000);
  1929. }
  1930. @Override
  1931. public void addAlertLog(Map row) throws Exception {
  1932. YDParam yidaParam; //HTTP请求体
  1933. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1934. String[] businessUserIdArr = new String[]{};
  1935. if(row.get("businessUserId")!=null){
  1936. businessUserIdArr = new String[]{row.get("businessUserId").toString()};
  1937. }
  1938. Map alertLogRecord = UtilMap.map(
  1939. "employeeField_mpgmbad0, " //业务员
  1940. +"numberField_mpgmbad2, " //超过3天未跟进客户数量
  1941. +"dateField_mpgmbad3", //发布日期
  1942. businessUserIdArr,
  1943. row.get("customerNum"),
  1944. row.get("today")
  1945. );
  1946. String insertFormDataJson = JSONObject.toJSONString(alertLogRecord);
  1947. System.out.println(insertFormDataJson);
  1948. ydParamBuilder = YDParam.builder();
  1949. ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_ALERT_LOG);
  1950. ydParamBuilder = ydParamBuilder.formDataJson(insertFormDataJson);
  1951. yidaParam = ydParamBuilder.build();
  1952. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.create);
  1953. log.info("新增一条私海客户流出告警日志记录");
  1954. Thread.sleep(3000);
  1955. }
  1956. @Override
  1957. public List<Map> querySys2CustomerData() throws Exception {
  1958. /*
  1959. 参数定义
  1960. */
  1961. List<Map> customerData = new ArrayList<>(); // 客户数据
  1962. List<Map> customerDataDeduplicate = new ArrayList<>(); // 客户数据(去重)
  1963. String appType; //宜搭应用编码
  1964. String formUuid; //表单编码
  1965. String systemToken; //宜搭应用密钥
  1966. String userId; //用户userId
  1967. String createToTimeGMT; //需要创建时间小于的时间
  1968. String searchCondition; //检索条件
  1969. YDParam yidaParam; //HTTP请求体
  1970. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  1971. DDR_New yidaResult; //请求返回内容
  1972. List<Map> records; //每页记录数据
  1973. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  1974. boolean hasMore; //是否还有下一页
  1975. int pageNo; //当前页码
  1976. int pageSize; //每页获取的数据量(上限100)
  1977. JSONObject fields; //字段数据
  1978. String customerName; //客户名称
  1979. JSONArray businessUserJSONArray; //对接业务员
  1980. List<String> businessUserList; //对接业务员(文本)
  1981. String businessUserId; //业务员userId
  1982. String businessUserName; //业务员姓名
  1983. List<Map> kpRecords; //KP明细
  1984. String kp; //KP
  1985. boolean isCustomerNameEmpty; //客户名称是否为空
  1986. boolean isBusinessUserEmpty; //业务员是否为空
  1987. boolean isKpEmpty; //KP是否为空
  1988. boolean isBusinessUserMulti; //业务员是否有多个
  1989. boolean isKpMulti; //KP是否有多个
  1990. int customerEmptyCount = 0; //客户名称为空的记录数
  1991. Map<String,String> customerRecord; //客户记录
  1992. Map<String, Long> customerNameCountMap = new HashMap<>(); //客户名称与出现的次数映射
  1993. String formInstId; //表单实例ID
  1994. /*
  1995. EASTAR业务数字化
  1996. */
  1997. appType = "APP_BPEHQO5P5YSJ7GMIU9ST";
  1998. systemToken = "6Q666BA1SP89K86O7K41AAQ1NS1228S93GJFL5P2";
  1999. formUuid = "FORM-YZ9664D10Q89BB9CEYN3P8LQBRDQ34Y45GJFL6";
  2000. /*
  2001. 初始化参数值
  2002. */
  2003. userId = "02322511193621446331"; //操作人(Jason)的userId
  2004. createToTimeGMT = "2026-04-09 09:15:44";
  2005. hasMore = true; //第一页默认有数据
  2006. pageNo = 1;
  2007. pageSize = 100;
  2008. ydParamBuilder = YDParam.builder();
  2009. ydParamBuilder = ydParamBuilder.appType(appType);
  2010. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2011. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2012. ydParamBuilder = ydParamBuilder.userId(userId);
  2013. ydParamBuilder = ydParamBuilder.createToTimeGMT(createToTimeGMT);
  2014. /*
  2015. 翻页获取数据
  2016. */
  2017. while(hasMore){
  2018. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  2019. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  2020. yidaParam = ydParamBuilder.build();
  2021. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2022. log.info("当前第"+pageNo+"页");
  2023. records = (List<Map>) yidaResult.getData();
  2024. log.info("记录数="+records.size());
  2025. for (Map record : records){
  2026. allRecords.add(record);
  2027. }
  2028. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  2029. pageNo++;
  2030. }else{
  2031. hasMore = false;
  2032. }
  2033. log.info("是否有更多数据:"+hasMore);
  2034. }
  2035. /*
  2036. 请求记录数据处理
  2037. */
  2038. log.info("所有记录数量="+allRecords.size());
  2039. customerName = "";
  2040. businessUserId = "";
  2041. businessUserName = "";
  2042. kp = "";
  2043. formInstId = "";
  2044. for(int i=0;i<allRecords.size();i++){
  2045. /*
  2046. 重置是否为空标识
  2047. */
  2048. isCustomerNameEmpty = false;
  2049. isBusinessUserEmpty = false;
  2050. isKpEmpty = false;
  2051. isBusinessUserMulti = false;
  2052. isKpMulti = false;
  2053. //解析字段数据
  2054. fields = JSONObject.parseObject(JSONObject.toJSONString(allRecords.get(i).get("formData")));
  2055. /*
  2056. 获取客户名称数据
  2057. */
  2058. if(fields.get("textField_lfjg60xp") == null){
  2059. isCustomerNameEmpty = true;
  2060. }else{
  2061. customerName = fields.getString("textField_lfjg60xp");
  2062. customerName = customerName.replace("\n",""); //去除换行符
  2063. customerName = customerName.trim(); //去除空格
  2064. if(StringUtils.isEmpty(customerName)){
  2065. isCustomerNameEmpty = true;
  2066. }
  2067. }
  2068. if(isCustomerNameEmpty){
  2069. customerEmptyCount++;
  2070. // throw new RuntimeException("客户公司名字段为空");
  2071. continue;
  2072. }else{
  2073. // System.out.println("客户名称="+customerName);
  2074. }
  2075. /*
  2076. 获取业务员数据
  2077. */
  2078. if(fields.get("employeeField_lfjg60xx") == null){
  2079. isBusinessUserEmpty = true;
  2080. }else{
  2081. businessUserJSONArray = fields.getJSONArray("employeeField_lfjg60xx");
  2082. if(businessUserJSONArray.isEmpty()){
  2083. isBusinessUserEmpty = true;
  2084. }else{
  2085. if(businessUserJSONArray.size()>1){ //一个客户有多个业务员负责对接
  2086. isBusinessUserMulti = true;
  2087. log.info("客户名称="+customerName+",业务员数量="+businessUserJSONArray.size());
  2088. }
  2089. if(isBusinessUserMulti){
  2090. businessUserList = new ArrayList<>();
  2091. for (int j = 0; j < businessUserJSONArray.size(); j++) {
  2092. if (businessUserJSONArray.get(j) != null) {
  2093. businessUserList.add(String.valueOf(businessUserJSONArray.get(j)));
  2094. }
  2095. }
  2096. businessUserName = String.join(",", businessUserList);
  2097. // System.out.println("业务员="+businessUser);
  2098. continue;
  2099. }else{
  2100. businessUserName = String.valueOf(businessUserJSONArray.get(0));
  2101. businessUserJSONArray = fields.getJSONArray("employeeField_lfjg60xx_id");
  2102. businessUserId = String.valueOf(businessUserJSONArray.get(0));
  2103. }
  2104. }
  2105. }
  2106. // System.out.println("业务员是否为空="+isBusinessUserEmpty);
  2107. if(isBusinessUserEmpty){
  2108. // throw new RuntimeException("对接业务员为空");
  2109. }else{
  2110. // System.out.println("业务员="+businessUser);
  2111. }
  2112. /*
  2113. 获取KP数据
  2114. */
  2115. /*
  2116. if(allRecords.get(i).get("formInstanceId") != null){
  2117. formInstId = String.valueOf(allRecords.get(i).get("formInstanceId"));
  2118. ydParamBuilder = YDParam.builder();
  2119. ydParamBuilder = ydParamBuilder.appType(appType);
  2120. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2121. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2122. ydParamBuilder = ydParamBuilder.userId(userId);
  2123. ydParamBuilder = ydParamBuilder.formInstanceId(formInstId);
  2124. ydParamBuilder = ydParamBuilder.tableFieldId("tableField_m6yfc2c2"); //【新建客户】子表单【客户KP信息】
  2125. yidaParam = ydParamBuilder.build();
  2126. kpRecords = ydService.queryDetails(yidaParam);
  2127. if(kpRecords == null || kpRecords.isEmpty()){
  2128. isKpEmpty = true;
  2129. }else{
  2130. if(kpRecords.size() == 1){ //单个KP
  2131. if(kpRecords.get(0).get("textField_m6yfc2c3") == null
  2132. || "".equals(String.valueOf(kpRecords.get(0).get("textField_m6yfc2c3")))){ //KP姓名为空
  2133. isKpEmpty = true;
  2134. }else{
  2135. kp = String.valueOf(kpRecords.get(0).get("textField_m6yfc2c3"));
  2136. }
  2137. }else{ //多个KP
  2138. isKpEmpty = true; //先假设所有记录KP为空
  2139. for (int j=0; j<kpRecords.size(); j++) {
  2140. if(kpRecords.get(j).get("textField_m6yfc2c3") == null
  2141. || "".equals(String.valueOf(kpRecords.get(j).get("textField_m6yfc2c3")))){ //KP姓名为空
  2142. //忽略
  2143. }else{
  2144. isKpMulti = true;
  2145. isKpEmpty = false; //只要有1条记录KP不为空,则更新标识
  2146. if(j == 0){
  2147. kp = String.valueOf(kpRecords.get(j).get("textField_m6yfc2c3"));
  2148. }else{
  2149. kp += "," + String.valueOf(kpRecords.get(j).get("textField_m6yfc2c3"));
  2150. }
  2151. }
  2152. }
  2153. if (isKpMulti) {
  2154. log.info("客户名称="+customerName+",KP数量="+kp.split(",").length);
  2155. }
  2156. }
  2157. }
  2158. }
  2159. // System.out.println("KP是否为空="+isKpEmpty);
  2160. if(isKpEmpty){
  2161. // throw new RuntimeException("KP姓名字段为空");
  2162. }else{
  2163. // System.out.println("KP="+kp);
  2164. }
  2165. */
  2166. /*
  2167. 汇总客户数据
  2168. */
  2169. customerRecord = new HashMap<>();
  2170. customerRecord.put("customerName",customerName);
  2171. customerRecord.put("businessUserName",businessUserName);
  2172. customerRecord.put("businessUserId",businessUserId);
  2173. // customerRecord.put("kp",kp);
  2174. // System.out.println(JSONObject.toJSONString(customerRecord));
  2175. customerData.add(customerRecord);
  2176. }
  2177. log.info("客户名称为空的记录数="+customerEmptyCount);
  2178. /*
  2179. 排除有重复的客户
  2180. */
  2181. for (Map<String, String> record : customerData) {
  2182. customerName = record.get("customerName");
  2183. customerNameCountMap.merge(customerName, 1L, Long::sum);
  2184. }
  2185. for (Map.Entry<String, Long> entry : customerNameCountMap.entrySet()) {
  2186. if (entry.getValue() > 1) {
  2187. System.out.println("客户名称="+entry.getKey()+",重复次数="+ entry.getValue());
  2188. }
  2189. }
  2190. for (Map<String, String> record : customerData) {
  2191. customerName = record.get("customerName");
  2192. if(customerNameCountMap.get(customerName)==1){
  2193. customerDataDeduplicate.add(record);
  2194. }
  2195. }
  2196. return customerDataDeduplicate;
  2197. }
  2198. @Override
  2199. public void updateSys1Sys2CustomerPart2Data(List<Map> sys2CustomerData) throws Exception {
  2200. /*
  2201. 参数定义
  2202. */
  2203. String appType; //宜搭应用编码
  2204. String formUuid; //表单编码
  2205. String systemToken; //宜搭应用密钥
  2206. String userId; //用户userId
  2207. YDSearch ydSearch; //检索条件(单个)
  2208. String searchCondition; //检索条件
  2209. YDParam yidaParam; //HTTP请求体
  2210. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2211. String customerName; //客户名称
  2212. String kp; //KP
  2213. DDR_New yidaResult; //请求返回内容
  2214. List<Map> records; //记录数据
  2215. JSONObject fields; //字段数据
  2216. String formInstId; //表单实例ID
  2217. String updateFormDataJson; //更新内容
  2218. /*
  2219. 客户数据清洗
  2220. */
  2221. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2222. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2223. formUuid = "FORM-30D3F6A5F4E34B459810BBB53619BDB8LX5I"; //客户名册part2
  2224. /*
  2225. 初始化参数值
  2226. */
  2227. userId = "02322511193621446331"; //操作人(Jason)的userId
  2228. /*
  2229. 遍历所有客户记录,通过客户名称去(客户数据清洗)找到对应记录,并更新KP姓名
  2230. */
  2231. for (Map<String, String> customerRecord : sys2CustomerData) {
  2232. /*
  2233. 通过客户名称去(客户数据清洗)找到对应记录
  2234. */
  2235. customerName = customerRecord.get("customerName");
  2236. kp = customerRecord.get("kp");
  2237. System.out.println("customerName="+customerName+",kp="+kp);
  2238. ydParamBuilder = YDParam.builder();
  2239. ydParamBuilder = ydParamBuilder.appType(appType);
  2240. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2241. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2242. ydParamBuilder = ydParamBuilder.userId(userId);
  2243. ydSearch = new YDSearch(
  2244. "textField_3utukqf",
  2245. customerName,
  2246. "客户公司名",
  2247. YDSearch.Type.TEXT_FIELD,
  2248. YDSearch.Operator.EQ
  2249. );
  2250. searchCondition = JSONObject.toJSONString(Arrays.asList(ydSearch));
  2251. ydParamBuilder.searchCondition(searchCondition);
  2252. yidaParam = ydParamBuilder.build();
  2253. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2254. records = (List<Map>) yidaResult.getData();
  2255. // fields = JSONObject.parseObject(JSONObject.toJSONString(records.get(0).get("formData")));
  2256. if(!records.isEmpty() && records.get(0) != null){
  2257. formInstId = String.valueOf(records.get(0).get("formInstanceId"));
  2258. // System.out.println("formInstId="+formInstId);
  2259. /*
  2260. 更新KP姓名
  2261. */
  2262. updateFormDataJson = JSONObject.toJSONString(UtilMap.map("textField_h1e7kac",kp)); //KP姓名
  2263. ydParamBuilder = YDParam.builder();
  2264. ydParamBuilder = ydParamBuilder.appType(appType);
  2265. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2266. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2267. ydParamBuilder = ydParamBuilder.userId(userId);
  2268. ydParamBuilder = ydParamBuilder.formInstId(formInstId);
  2269. ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
  2270. yidaParam = ydParamBuilder.build();
  2271. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
  2272. }
  2273. }
  2274. System.out.println("更新所有KP完成");
  2275. }
  2276. @Override
  2277. public void insertSys1Sys2CustomerAllData(List<Map> sys1Sys2CustomerData) throws Exception {
  2278. /*
  2279. 参数定义
  2280. */
  2281. String appType; //宜搭应用编码
  2282. String formUuid; //表单编码
  2283. String systemToken; //宜搭应用密钥
  2284. String userId; //用户userId
  2285. YDParam yidaParam; //HTTP请求体
  2286. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2287. Map<String,Object> customerRecord; //待插入记录
  2288. int customerRecordCount; //操作客户记录数
  2289. String insertFormDataJson; //新增内容
  2290. /*
  2291. 客户数据清洗
  2292. */
  2293. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2294. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2295. formUuid = "FORM-300D7134EEB446AE82A6FDF330FAD006Q4HO"; //客户名册all
  2296. /*
  2297. 初始化参数值
  2298. */
  2299. userId = "02322511193621446331"; //操作人(Jason)的userId
  2300. /*
  2301. 遍历所有客户记录,通过客户名称去(客户数据清洗)找到对应记录,并更新KP姓名
  2302. */
  2303. customerRecordCount = 0;
  2304. for (Map<String, String> sys1Sys2CustomerRecord : sys1Sys2CustomerData) {
  2305. customerRecord = UtilMap.map(
  2306. "textField_mnwhxldz, " //客户名称
  2307. +"textField_mnwl12wu, " //业务(项目总表)
  2308. +"textField_mnwl12wv, " //业务(EASTAR业务数字化)
  2309. +"textField_mnwl12ww, " //sys1unionid
  2310. +"textField_mnwl12wx, " //sys1userid
  2311. +"textField_mnwl12wy, " //sys2userid
  2312. +"selectField_mnx00f7g, " //数据来源标记
  2313. +"selectField_mnwt8opl", //是否有差异
  2314. sys1Sys2CustomerRecord.get("customerName"),
  2315. sys1Sys2CustomerRecord.get("sys1BusinessUserName"),
  2316. sys1Sys2CustomerRecord.get("sys2BusinessUserName"),
  2317. sys1Sys2CustomerRecord.get("sys1unionid"),
  2318. sys1Sys2CustomerRecord.get("sys1userid"),
  2319. sys1Sys2CustomerRecord.get("sys2userid"),
  2320. sys1Sys2CustomerRecord.get("source"),
  2321. sys1Sys2CustomerRecord.get("isAnyDifference")
  2322. );
  2323. insertFormDataJson = JSONObject.toJSONString(customerRecord); //KP姓名
  2324. ydParamBuilder = YDParam.builder();
  2325. ydParamBuilder = ydParamBuilder.appType(appType);
  2326. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2327. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2328. ydParamBuilder = ydParamBuilder.userId(userId);
  2329. ydParamBuilder = ydParamBuilder.formDataJson(insertFormDataJson);
  2330. yidaParam = ydParamBuilder.build();
  2331. ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.create);
  2332. customerRecordCount++;
  2333. if(customerRecordCount % 100 == 0){
  2334. System.out.println("已处理"+customerRecordCount+"条客户数据");
  2335. }
  2336. }
  2337. if(customerRecordCount % 100 != 0){
  2338. System.out.println("已处理"+customerRecordCount+"条客户数据");
  2339. }
  2340. System.out.println("新增客户名册完成");
  2341. }
  2342. @Override
  2343. public List<Map> querySys1Sys2CustomerAllData() throws Exception {
  2344. /*
  2345. 参数定义
  2346. */
  2347. List<Map> sys1Sys2CustomerData = new ArrayList<>();
  2348. String appType; //宜搭应用编码
  2349. String formUuid; //表单编码
  2350. String systemToken; //宜搭应用密钥
  2351. String userId; //用户userId
  2352. YDParam yidaParam; //HTTP请求体
  2353. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2354. DDR_New yidaResult; //请求返回内容
  2355. List<Map> records; //每页记录数据
  2356. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  2357. boolean hasMore; //是否还有下一页
  2358. int pageNo; //当前页码
  2359. int pageSize; //每页获取的数据量(上限100)
  2360. JSONObject fields; //字段数据
  2361. String customerName; //客户名称
  2362. Map customerRecord; //客户记录
  2363. /*
  2364. 客户数据清洗
  2365. */
  2366. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2367. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2368. formUuid = "FORM-300D7134EEB446AE82A6FDF330FAD006Q4HO"; //客户名册all
  2369. /*
  2370. 初始化参数值
  2371. */
  2372. userId = "02322511193621446331"; //操作人(Jason)的userId
  2373. hasMore = true; //第一页默认有数据
  2374. pageNo = 1;
  2375. pageSize = 100;
  2376. ydParamBuilder = YDParam.builder();
  2377. ydParamBuilder = ydParamBuilder.appType(appType);
  2378. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2379. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2380. ydParamBuilder = ydParamBuilder.userId(userId);
  2381. /*
  2382. 翻页获取数据
  2383. */
  2384. while(hasMore){
  2385. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  2386. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  2387. yidaParam = ydParamBuilder.build();
  2388. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2389. log.info("当前第"+pageNo+"页");
  2390. records = (List<Map>) yidaResult.getData();
  2391. log.info("记录数="+records.size());
  2392. for (Map record : records){
  2393. allRecords.add(record);
  2394. }
  2395. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  2396. pageNo++;
  2397. }else{
  2398. hasMore = false;
  2399. }
  2400. log.info("是否有更多数据:"+hasMore);
  2401. Thread.sleep(3000);
  2402. }
  2403. /*
  2404. 请求记录数据处理
  2405. */
  2406. log.info("所有记录数量="+allRecords.size());
  2407. for (Map sys1Sys2CustomerRecord : allRecords){
  2408. //解析字段数据
  2409. fields = JSONObject.parseObject(JSONObject.toJSONString(sys1Sys2CustomerRecord.get("formData")));
  2410. //生成客户数据
  2411. customerRecord = UtilMap.map(
  2412. "customerName, source",
  2413. fields.getString("textField_mnwhxldz"), //客户名称
  2414. fields.getString("selectField_mnx00f7g") //数据来源标记
  2415. );
  2416. sys1Sys2CustomerData.add(customerRecord);
  2417. }
  2418. return sys1Sys2CustomerData;
  2419. }
  2420. @Override
  2421. public List<Map> querySys1Sys2PrivateCustomerData() throws Exception {
  2422. /*
  2423. 参数定义
  2424. */
  2425. List<Map> sys1Sys2CustomerData = new ArrayList<>();
  2426. String appType; //宜搭应用编码
  2427. String formUuid; //表单编码
  2428. String systemToken; //宜搭应用密钥
  2429. String userId; //用户userId
  2430. YDParam yidaParam; //HTTP请求体
  2431. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2432. DDR_New yidaResult; //请求返回内容
  2433. List<Map> records; //每页记录数据
  2434. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  2435. boolean hasMore; //是否还有下一页
  2436. int pageNo; //当前页码
  2437. int pageSize; //每页获取的数据量(上限100)
  2438. JSONObject fields; //字段数据
  2439. String customerName; //客户名称
  2440. Map customerRecord; //客户记录
  2441. /*
  2442. 客户数据清洗
  2443. */
  2444. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2445. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2446. formUuid = "FORM-EB1BD51283D44F3CA32ECCF05549D659EU2V"; //私海客户
  2447. /*
  2448. 初始化参数值
  2449. */
  2450. userId = "02322511193621446331"; //操作人(Jason)的userId
  2451. hasMore = true; //第一页默认有数据
  2452. pageNo = 1;
  2453. pageSize = 100;
  2454. ydParamBuilder = YDParam.builder();
  2455. ydParamBuilder = ydParamBuilder.appType(appType);
  2456. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2457. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2458. ydParamBuilder = ydParamBuilder.userId(userId);
  2459. /*
  2460. 翻页获取数据
  2461. */
  2462. while(hasMore){
  2463. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  2464. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  2465. yidaParam = ydParamBuilder.build();
  2466. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2467. log.info("当前第"+pageNo+"页");
  2468. records = (List<Map>) yidaResult.getData();
  2469. log.info("记录数="+records.size());
  2470. for (Map record : records){
  2471. allRecords.add(record);
  2472. }
  2473. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  2474. pageNo++;
  2475. }else{
  2476. hasMore = false;
  2477. }
  2478. log.info("是否有更多数据:"+hasMore);
  2479. Thread.sleep(3000);
  2480. }
  2481. /*
  2482. 请求记录数据处理
  2483. */
  2484. log.info("所有记录数量="+allRecords.size());
  2485. for (Map sys1Sys2CustomerRecord : allRecords){
  2486. //解析字段数据
  2487. fields = JSONObject.parseObject(JSONObject.toJSONString(sys1Sys2CustomerRecord.get("formData")));
  2488. //生成客户数据
  2489. customerRecord = UtilMap.map(
  2490. "customerName, businessUserId",
  2491. fields.getString("textField_zj7gvgw"), //客户名称
  2492. fields.getString("textField_uj4ys0h") //确认后业务userid
  2493. );
  2494. sys1Sys2CustomerData.add(customerRecord);
  2495. }
  2496. return sys1Sys2CustomerData;
  2497. }
  2498. @Override
  2499. public List<Map> querySys1Sys2PublicCustomerData() throws Exception {
  2500. /*
  2501. 参数定义
  2502. */
  2503. List<Map> sys1Sys2CustomerData = new ArrayList<>();
  2504. String appType; //宜搭应用编码
  2505. String formUuid; //表单编码
  2506. String systemToken; //宜搭应用密钥
  2507. String userId; //用户userId
  2508. YDParam yidaParam; //HTTP请求体
  2509. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2510. DDR_New yidaResult; //请求返回内容
  2511. List<Map> records; //每页记录数据
  2512. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  2513. boolean hasMore; //是否还有下一页
  2514. int pageNo; //当前页码
  2515. int pageSize; //每页获取的数据量(上限100)
  2516. JSONObject fields; //字段数据
  2517. String customerName; //客户名称
  2518. Map customerRecord; //客户记录
  2519. /*
  2520. 客户数据清洗
  2521. */
  2522. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2523. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2524. formUuid = "FORM-9145B2CE607E4A7384932B9E10DAF968T2HQ"; //公海客户
  2525. /*
  2526. 初始化参数值
  2527. */
  2528. userId = "02322511193621446331"; //操作人(Jason)的userId
  2529. hasMore = true; //第一页默认有数据
  2530. pageNo = 1;
  2531. pageSize = 100;
  2532. ydParamBuilder = YDParam.builder();
  2533. ydParamBuilder = ydParamBuilder.appType(appType);
  2534. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2535. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2536. ydParamBuilder = ydParamBuilder.userId(userId);
  2537. /*
  2538. 翻页获取数据
  2539. */
  2540. while(hasMore){
  2541. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  2542. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  2543. yidaParam = ydParamBuilder.build();
  2544. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2545. log.info("当前第"+pageNo+"页");
  2546. records = (List<Map>) yidaResult.getData();
  2547. log.info("记录数="+records.size());
  2548. for (Map record : records){
  2549. allRecords.add(record);
  2550. }
  2551. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  2552. pageNo++;
  2553. }else{
  2554. hasMore = false;
  2555. }
  2556. log.info("是否有更多数据:"+hasMore);
  2557. Thread.sleep(3000);
  2558. }
  2559. /*
  2560. 请求记录数据处理
  2561. */
  2562. log.info("所有记录数量="+allRecords.size());
  2563. for (Map sys1Sys2CustomerRecord : allRecords){
  2564. //解析字段数据
  2565. fields = JSONObject.parseObject(JSONObject.toJSONString(sys1Sys2CustomerRecord.get("formData")));
  2566. //生成客户数据
  2567. customerRecord = UtilMap.map(
  2568. "customerName, flag",
  2569. fields.getString("textField_oaveera"), //客户名称
  2570. fields.getString("textField_xo5uzls") //数据同步标识
  2571. );
  2572. sys1Sys2CustomerData.add(customerRecord);
  2573. }
  2574. return sys1Sys2CustomerData;
  2575. }
  2576. @Override
  2577. public List<Map> querySys1Sys2UncooperativeCustomerData() throws Exception {
  2578. /*
  2579. 参数定义
  2580. */
  2581. List<Map> sys1Sys2CustomerData = new ArrayList<>();
  2582. String appType; //宜搭应用编码
  2583. String formUuid; //表单编码
  2584. String systemToken; //宜搭应用密钥
  2585. String userId; //用户userId
  2586. YDParam yidaParam; //HTTP请求体
  2587. YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
  2588. DDR_New yidaResult; //请求返回内容
  2589. List<Map> records; //每页记录数据
  2590. List<Map> allRecords = new ArrayList<>(); //所有记录数据
  2591. boolean hasMore; //是否还有下一页
  2592. int pageNo; //当前页码
  2593. int pageSize; //每页获取的数据量(上限100)
  2594. JSONObject fields; //字段数据
  2595. String customerName; //客户名称
  2596. Map customerRecord; //客户记录
  2597. /*
  2598. 客户数据清洗
  2599. */
  2600. appType = "APP_IL6UN1IETFL3GATLFU0Z";
  2601. systemToken = "2MA66S71ZRH4FN2FJKW985LDOEBT30F3D7INMGMT";
  2602. formUuid = "FORM-68B079CC52544CDFBA470D82FB3A6F1F4JJY"; //不合作客户
  2603. /*
  2604. 初始化参数值
  2605. */
  2606. userId = "02322511193621446331"; //操作人(Jason)的userId
  2607. hasMore = true; //第一页默认有数据
  2608. pageNo = 1;
  2609. pageSize = 100;
  2610. ydParamBuilder = YDParam.builder();
  2611. ydParamBuilder = ydParamBuilder.appType(appType);
  2612. ydParamBuilder = ydParamBuilder.systemToken(systemToken);
  2613. ydParamBuilder = ydParamBuilder.formUuid(formUuid);
  2614. ydParamBuilder = ydParamBuilder.userId(userId);
  2615. /*
  2616. 翻页获取数据
  2617. */
  2618. while(hasMore){
  2619. ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
  2620. ydParamBuilder = ydParamBuilder.pageSize(pageSize);
  2621. yidaParam = ydParamBuilder.build();
  2622. yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
  2623. log.info("当前第"+pageNo+"页");
  2624. records = (List<Map>) yidaResult.getData();
  2625. log.info("记录数="+records.size());
  2626. for (Map record : records){
  2627. allRecords.add(record);
  2628. }
  2629. if((pageNo*pageSize) < yidaResult.getTotalCount()){
  2630. pageNo++;
  2631. }else{
  2632. hasMore = false;
  2633. }
  2634. log.info("是否有更多数据:"+hasMore);
  2635. Thread.sleep(3000);
  2636. }
  2637. /*
  2638. 请求记录数据处理
  2639. */
  2640. log.info("所有记录数量="+allRecords.size());
  2641. for (Map sys1Sys2CustomerRecord : allRecords){
  2642. //解析字段数据
  2643. fields = JSONObject.parseObject(JSONObject.toJSONString(sys1Sys2CustomerRecord.get("formData")));
  2644. //生成客户数据
  2645. customerRecord = UtilMap.map(
  2646. "customerName, flag",
  2647. fields.getString("textField_2hfi682"), //客户名称
  2648. fields.getString("textField_3qntf3x") //数据同步标识
  2649. );
  2650. sys1Sys2CustomerData.add(customerRecord);
  2651. }
  2652. return sys1Sys2CustomerData;
  2653. }
  2654. }