RsQysServiceImpl.java 95 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736
  1. package com.malk.ruisi.service.impl;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.fasterxml.jackson.databind.JsonNode;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.databind.node.ArrayNode;
  8. import com.malk.ruisi.service.QysService;
  9. import com.malk.ruisi.service.RsQysService;
  10. import com.malk.ruisi.service.dingshiqi;
  11. import com.malk.server.aliwork.YDConf;
  12. import com.malk.server.aliwork.YDParam;
  13. import com.malk.server.common.McException;
  14. import com.malk.server.common.McR;
  15. import com.malk.server.dingtalk.DDConf;
  16. import com.malk.service.aliwork.YDClient;
  17. import com.malk.utils.UtilHttp;
  18. import com.malk.utils.UtilMap;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.apache.commons.lang3.StringEscapeUtils;
  21. import org.apache.tomcat.util.http.fileupload.FileUtils;
  22. import org.apache.tomcat.util.http.fileupload.IOUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.stereotype.Service;
  26. import java.io.*;
  27. import java.net.HttpURLConnection;
  28. import java.net.URL;
  29. import java.text.SimpleDateFormat;
  30. import java.util.*;
  31. import java.util.regex.Pattern;
  32. import java.util.zip.ZipEntry;
  33. import java.util.zip.ZipInputStream;
  34. import static com.malk.ruisi.constant.QysConstant.QYS_SUCCESS_CODE;
  35. @Service
  36. @Slf4j
  37. public class RsQysServiceImpl implements RsQysService {
  38. @Autowired
  39. private QysService qysService;
  40. @Autowired
  41. private YDClient ydClient;
  42. @Autowired
  43. private YDConf ydConf;
  44. @Autowired
  45. private QysService QYSService;
  46. @Autowired
  47. private DDConf ddConf;
  48. @Value("${qiyuesuo.bdurl}")
  49. private String BDURL;
  50. @Value("${qiyuesuo.pdfbdurl}")
  51. private String PDFBDURL;
  52. @Value("${qiyuesuo.url}")
  53. private String URL;
  54. private String getCust(String type, String key) throws Exception {
  55. Map<String, String> map = UtilMap.empty();
  56. if (type.equals("FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0")) {
  57. // 合同用印 组件编号
  58. map.put("subject", "textField_ltsbwegw");//合同名称
  59. map.put("sn", "serialNumberField_ltsbweh2");//合同编号
  60. map.put("tenantName", "textField_lvz1kozf");//公司名称
  61. map.put("tenantName1", "textField_lznvplmm");//印章公司id
  62. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  63. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  64. map.put("glbd", "associationFormField_lu0u6npd");//物理印章关联表单
  65. map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
  66. map.put("contractId", "textField_lwah8x72");//合同Id
  67. map.put("categoryName", "textField_lvz1kozg");//业务分类名称
  68. map.put("fujian", "attachmentField_ltsbweir");//附件
  69. map.put("fujian1", "attachmentField_m1gebrx1");//附件
  70. map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
  71. map.put("applyerNumber", "textField_lwebkb16");//创建人员工编号
  72. map.put("sealName", "textField_lvw4umfr");//授权印章名称
  73. map.put("sealId", "textField_m0dh8wmp");//印章id
  74. map.put("count", "numberField_ltwa0vj6");//授权次数
  75. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  76. map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
  77. map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
  78. map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
  79. map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
  80. map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
  81. } else if (type.equals("FORM-82E566F8576E44D3AB4B34033A27E76FEB75")) {
  82. // CG11-框架采购订单
  83. map.put("subject", "textField_ltsbwef0");//合同名称
  84. map.put("sn", "serialNumberField_ltsbweh2");//合同编号
  85. map.put("tenantName", "textField_lvz1kozf");//公司名称
  86. map.put("tenantName1", "textField_lznvplmm");//印章公司id
  87. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  88. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  89. map.put("glbd", "associationFormField_lu0u6npd");//物理印章关联表单
  90. map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
  91. map.put("contractId", "textField_lwah8x72");//合同Id
  92. map.put("categoryName", "textField_lvz1kozg");//业务分类名称
  93. map.put("fujian", "attachmentField_ltsbweis");//附件
  94. map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
  95. map.put("applyerNumber", "textField_lwebkb16");//创建人员工编号
  96. map.put("sealName", "textField_lvw4umfr");//授权印章名称
  97. map.put("sealId", "textField_m0dh8wmp");//印章id
  98. map.put("count", "numberField_ltwa0vj6");//授权次数
  99. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  100. map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
  101. map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
  102. map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
  103. map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
  104. map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
  105. } else if (type.equals("FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO")) {
  106. // 框架类用印
  107. map.put("subject", "textField_lvz8coad");//合同名称
  108. map.put("sn", "serialNumberField_lvz8coae");//合同编号
  109. map.put("tenantName", "textField_lvza5uwu");//公司名称
  110. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  111. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  112. map.put("tenantName1", "textField_lznvplmm");//印章公司名称
  113. map.put("glbd", "associationFormField_lvz8coby");//物理印章关联表单
  114. map.put("categoryId", "textField_lvz8cobe");//业务分类Id
  115. map.put("contractId", "textField_lwg205ug");//合同Id
  116. map.put("categoryName", "textField_lvz8cobd");//业务分类名称
  117. map.put("fujian", "attachmentField_lvz8cocl");//附件
  118. map.put("fujian1", "attachmentField_m11gqbly");//附件
  119. map.put("creatorName", "employeeField_lvz8co98");//创建人姓名
  120. map.put("applyerNumber", "textField_lweccz0q");//创建人员工编号
  121. map.put("sealName", "textField_lwelg27e");//授权印章名称
  122. map.put("sealId", "textField_m0dhf7ph");//印章id
  123. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  124. map.put("count", "numberField_lvz8cobz");//授权次数
  125. map.put("tenantNameP", "textField_lvz8cocg");//对方个人签署人姓名
  126. map.put("contactP", "textField_lvz8coce");//对方个人签署人联系电话
  127. map.put("tenantNameA", "textField_lvz8coc5");//对方公司名称
  128. map.put("receiverNameA", "textField_lvz8coc6");//对方公司签署人名称
  129. map.put("contactA", "textField_lvz8coc7");//对方公司签署人联系电话
  130. } else if (type.equals("FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK")) {
  131. // 其他用印
  132. map.put("subject", "textField_ltwktal4");//合同名称
  133. map.put("sn", "serialNumberField_ltwktal5");//合同编号
  134. map.put("tenantName", "textField_lvz45lif");//公司名称
  135. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  136. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  137. map.put("tenantName1", "textField_lznvplmm");//印章公司名称
  138. map.put("categoryId", "textField_lvz45lii");//业务分类Id
  139. map.put("glbd", "associationFormField_lu0w0l7x");//物理印章关联表单
  140. map.put("contractId", "textField_lwg1z6hk");//合同Id
  141. map.put("applyerNumber", "textField_lwelap55");//创建人员工编号
  142. map.put("sealName", "textField_lx1gzqai");//授权印章名称
  143. map.put("sealId", "textField_m0dhpgjr");//印章id
  144. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  145. map.put("count", "numberField_ltwktalp");//授权次数
  146. map.put("categoryName", "textField_lvz45lih");//业务分类名称
  147. map.put("fujian", "attachmentField_ltwktamq");//附件
  148. map.put("fujian1", "attachmentField_ltwktamr");//附件
  149. // map.put("creatorName", "employeeField_ltwktal6");//创建人姓名
  150. // map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
  151. // map.put("receiverNameP", "textField_ltwa0vke");//对方个人签署人姓名
  152. // map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
  153. // map.put("tenantNameA", "textField_ltwa0vk0");//对方公司名称
  154. // map.put("receiverNameA", "textField_ltwa0vk1");//对方公司签署人名称
  155. // map.put("contactA", "textField_ltwa0vk2");//对方公司签署人联系电话
  156. } else if (type.equals("FORM-FCDDD18FD63E49B2A4C652FBDB1874F6DPHW")) {
  157. // 租赁类用印 组件编号
  158. map.put("subject", "textField_ltwcj54k");//合同名称
  159. map.put("sn", "serialNumberField_ltwcj54l");//合同编号
  160. map.put("tenantName", "textField_lvz3j6lq");//公司名称
  161. map.put("tenantName1", "textField_lznvplmm");//公司名称
  162. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  163. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  164. map.put("glbd", "associationFormField_lu0vkwu7");//物理印章关联表单
  165. map.put("categoryId", "textField_lvz3j6ls");//业务分类Id
  166. map.put("contractId", "textField_lwg1wbix");//合同Id
  167. map.put("sealName", "textField_lwel4lyr");//授权印章名称
  168. map.put("sealId", "textField_m0dhqv5m");//印章id
  169. map.put("count", "numberField_ltwe0wyo");//授权次数
  170. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  171. map.put("categoryName", "textField_ltwe0wyb");//业务分类名称
  172. map.put("fujian", "attachmentField_ltwe0wyz");//附件
  173. map.put("creatorName", "employeeField_ltwcj52j");//创建人姓名
  174. map.put("applyerNumber", "textField_lwel4lyq");//创建人员工编号
  175. // map.put("creatorContact", "textField_ltsbwef1");//创建人联系方式
  176. map.put("tenantNameP", "textField_ltwe0wyw");//对方个人签署人姓名
  177. map.put("contactP", "textField_ltwe0wyx");//对方个人签署人联系电话
  178. map.put("tenantNameA", "textField_ltwe0wyq");//对方公司名称
  179. map.put("receiverNameA", "textField_ltwe0wyr");//对方公司签署人名称
  180. map.put("contactA", "textField_ltwe0wys");//对方公司签署人联系电话
  181. } else if (type.equals("FORM-53A0FB8715FB4378B0708794DFAF7089SV8P")) {
  182. // 加盟签约
  183. map.put("subject", "textField_ltrzli9n");//合同名称
  184. map.put("sn", "serialNumberField_ltsaig24");//合同编号
  185. map.put("tenantName", "textField_lybee634");//公司名称
  186. map.put("categoryId", "textField_lw4tkat0");//业务分类Id
  187. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  188. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  189. map.put("glbd", "associationFormField_lwso6sgd");//物理印章关联表单
  190. map.put("fujian", "attachmentField_luhu041t");//附件
  191. // map.put("creatorName", "employeeField_ltrzli8r");//创建人姓名
  192. map.put("categoryName", "textField_lvz1kozg");//业务分类名称
  193. map.put("tenantNameP", "textField_lts1g8sc");//对方个人签署人姓名
  194. map.put("applyerNumber", "textField_lybee62y");//创建人员工编号
  195. map.put("sealName", "textField_lybee635");//授权印章名称
  196. map.put("count", "numberField_lts1g8r9");//授权次数
  197. map.put("contactP", "textField_lts1g8sd");//对方个人签署人联系电话
  198. map.put("tenantNameA", "textField_lts1g8rs");//对方公司名称
  199. map.put("receiverNameA", "textField_lts1g8ru");//对方公司签署人名称
  200. map.put("contactA", "textField_lts1g8rt");//对方公司签署人联系电话
  201. } else if (type.equals("FORM-88F968E75CC340EB91B1AC692F4184DC9I9W")) {
  202. // 合同/申购流程
  203. map.put("subject", "textField_lu7ycpub");//合同名称
  204. map.put("sn", "serialNumberField_lu7ycpuc");//合同编号
  205. map.put("tenantName", "textField_lygvcsw5");//公司名称textField_lu81zom2
  206. map.put("tenantName1", "textField_lznvplmm");//公司名称
  207. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  208. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  209. map.put("glbd", "associationFormField_lwrmm4p7");//物理印章关联表单
  210. map.put("categoryId", "textField_lw05x5rm");//业务分类Id
  211. map.put("contractId", "textField_lwg219kl");//合同Id
  212. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  213. map.put("categoryName", "textField_lwa2350q");//业务分类名称
  214. map.put("fujian", "attachmentField_lu81zomp");//附件
  215. map.put("applyerNumber", "textField_lwelmmkr");//创建人员工编号
  216. map.put("sealName", "textField_lwelmmks");//授权印章名称
  217. map.put("sealId", "textField_m0dhtx3s");//印章id
  218. map.put("count", "numberField_lual6ol8");//授权次数
  219. // map.put("creatorName", "employeeField_ltsbwefl");//创建人姓名
  220. // map.put("creatorContact", "textField_ltsbwef1");//创建人联系方
  221. map.put("tenantNameP", "textField_ltwa0vke");//对方个人签署人姓名
  222. map.put("contactP", "textField_ltwa0vkf");//对方个人签署人联系电话
  223. map.put("tenantNameA", "textField_lu81zomd");//对方公司名称
  224. map.put("receiverNameA", "textField_lu81zome");//对方公司签署人名称
  225. map.put("contactA", "textField_lu81zomf");//对方公司签署人联系电话
  226. } else if (type.equals("FORM-54972289A0B7416287A9BA44DA6CCDC50QUC")) {
  227. // HR用印
  228. map.put("subject", "textField_lu9euh7n");//合同名称
  229. map.put("sn", "serialNumberField_lu9euh7o");//合同编号
  230. map.put("tenantName", "textField_lvzz59hk");//公司名称
  231. map.put("tenantName1", "textField_lznvplmm");//公司名称
  232. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  233. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  234. map.put("glbd", "associationFormField_lu9euh8b");//物理印章关联表单
  235. map.put("categoryId", "textField_lvzz59hn");//业务分类Id
  236. map.put("contractId", "textField_lwg22nvj");//合同Id
  237. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  238. map.put("categoryName", "textField_lvzz59hm");//业务分类名称
  239. map.put("applyerNumber", "textField_lweezm68");//创建人员工编号
  240. map.put("sealName", "textField_lweezm69");//授权印章名称
  241. map.put("sealId", "textField_m0dhwqon");//印章id
  242. map.put("count", "numberField_lu9euh8c");//授权次数
  243. map.put("fujian", "attachmentField_lzvac8lu");//附件
  244. map.put("fujian1", "attachmentField_lzv9up2n");//附件1
  245. } else if (type.equals("FORM-0D501EF1688247DC932E7784298BD46BRYHC")) {
  246. // 新签劳动合同/协议
  247. map.put("subject", "textField_luauhgb4");//合同名称
  248. map.put("sn", "serialNumberField_luauhgb5");//合同编号
  249. map.put("tenantName", "textField_lw4rpz1w");//公司名称
  250. map.put("categoryId", "textField_lw4rpz1x");//业务分类Id
  251. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  252. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  253. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  254. map.put("contractId", "textField_lwg241g6");//合同Id
  255. map.put("jf", "textField_lwk0stof");//甲方名称
  256. map.put("txdz", "textField_lup3q6ke");//甲方通讯地址
  257. map.put("yf", "textField_lup3q6kf");//乙方
  258. map.put("sjhm", "textField_lup3q6kg");//乙方手机号码
  259. map.put("syqksrq", "dateField_lup3q6kv");//试用期开始日期
  260. map.put("syqjsrq", "dateField_lup3q6kw");//试用期结束日期
  261. map.put("ldhtksrq", "dateField_lup3q6kx");//劳动合同开始日期
  262. map.put("ldhtjsrq", "dateField_lup3q6ky");//劳动合同结束日期
  263. map.put("gzdd", "textField_lup3q6kk");//工作地点
  264. map.put("yftgfw", "textField_lup3q6kh");//乙方提供服务
  265. map.put("xchsgz", "selectField_lup3q6ki");//薪酬核算规则
  266. map.put("dyzmtbc", "numberField_lup3q6kj");//报酬金额
  267. map.put("dyzarksrq", "dateField_lup3q6kl");//开始日期
  268. map.put("dyzarjsrq", "dateField_lup3q6km");//结束日期
  269. map.put("contractId", "textField_lwg241g6");//合同Id
  270. map.put("categoryName", "textField_lwa1xm1p");//业务分类名称
  271. map.put("tenantNameP", "textField_lup3q6kf");//对方个人签署人姓名
  272. map.put("contactP", "textField_lup3q6kg");//对方个人签署人联系电话
  273. } else if (type.equals("FORM-3E04D5456B2341CCBA62C955B791CF45IAH1")) {
  274. // 发文审批用印
  275. map.put("subject", "textField_ltwmutnp");//合同名称
  276. map.put("sn", "serialNumberField_ltwmutno");//合同编号
  277. map.put("tenantName", "textField_lw044nmp");//公司名称
  278. map.put("tenantName1", "textField_lznvplmm");//公司名称
  279. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  280. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  281. map.put("categoryId", "textField_lw044nmr");//业务分类Id
  282. map.put("glbd", "associationFormField_lu6mvmik");//物理印章关联表单
  283. map.put("contractId", "textField_lwg251gn");//合同Id
  284. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  285. map.put("categoryName", "textField_ltwmutoc");//业务分类名称
  286. map.put("applyerNumber", "textField_lweluap2");//创建人员工编号
  287. map.put("sealName", "textField_lweluap3");//授权印章名称
  288. map.put("sealId", "textField_m0dhyj02");//印章id
  289. map.put("count", "numberField_ltwmutow");//授权次数
  290. map.put("fujian", "attachmentField_ltwmutq4");//附件
  291. } else if (type.equals("FORM-87BD065161F84560B999FE94713255E20E6E")) {
  292. //印章授权&承诺书
  293. map.put("subject", "textField_ltwp3e43");//合同名称
  294. map.put("sn", "serialNumberField_ltwp3e44");//合同编号
  295. map.put("tenantName", "textField_lw04hhp1");//公司名称
  296. map.put("categoryId", "textField_lw04hhp3");//业务分类Id
  297. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  298. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  299. map.put("contractId", "textField_lwg260n6");//合同Id
  300. map.put("mobile", "textField_lwzqvg93");//授权人手机号
  301. map.put("categoryName", "textField_lwa29saw");//业务分类名称
  302. map.put("fujian", "attachmentField_ltwp3e4g");//附件
  303. map.put("tenantNameP", "textField_lw93mjk9");//授权人姓名
  304. map.put("contactP", "textField_ltwp3e4d");//授权人联系电话
  305. map.put("tenantNameA", "textField_lw93mjka");//被授权人姓名
  306. map.put("contactA", "textField_ltwp3e4f");//被授权人联系电话
  307. }else if (type.equals("FORM-040619C0CE6744EDA4154B4BBBF1843F49JY")) {
  308. //hz06定调价
  309. map.put("subject", "textField_ltrzli9n");//合同名称
  310. map.put("sn", "serialNumberField_ltse8sos");//合同编号
  311. map.put("tenantName", "textField_mayy2yf8");//公司名称
  312. map.put("categoryName", "textField_mayy2yf8");//公司名称
  313. map.put("contractId", "textField_lwg1z6hk");//公司名称
  314. map.put("categoryId", "textField_lvz45lii");//业务分类Id
  315. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  316. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  317. map.put("sealName", "textField_lx1gzqai");//授权印章名称
  318. map.put("sealId", "textField_m0dhpgjr");//印章id
  319. } else if (type.equals("FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6")) {
  320. //合同续签流程
  321. map.put("subject", "textField_lu991xi2");//合同名称
  322. map.put("sn", "serialNumberField_lu991xi3");//合同编号
  323. map.put("tenantName", "textField_lvz1kozf");//公司名称
  324. map.put("categoryId", "textField_lvm5xmqe");//业务分类Id
  325. map.put("categoryName", "textField_lvz1kozg");//业务分类名称
  326. map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  327. map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  328. map.put("contact", "textField_lu991xih");//续签人手机号码
  329. map.put("contractId", "textField_lwah8x72");//合同Id
  330. map.put("jf", "textField_lvz1kozf");//公司主体名称
  331. map.put("sfzh", "textField_lu991xig");//续签人身份证号码
  332. map.put("xm", "textField_lzkz3mkq");//续签人姓名
  333. map.put("htkssj", "dateField_lu991xii");//合同开始时间
  334. map.put("htjssj", "dateField_lu991xij");//合同结束时间
  335. map.put("xdqxkssj", "dateField_lu991xim");//续订期限开始时间
  336. map.put("xdqxjzsj", "dateField_lu991xin");//续订期限结束时间
  337. map.put("zfjjbcjrq", "dateField_lzl3nrxf");//续订期限结束时间
  338. map.put("jjbcj", "numberField_lzl3nrxg");//续订期限结束时间
  339. } else if (type.equals("FORM-4C410326630D4B498A1410EFBBEFE8EAORL5")) {
  340. //HZ04-合作校区警示/解约函
  341. map.put("subject", "textField_m0yoek7p");//合同名称
  342. map.put("sn", "serialNumberField_m0yoek7q");//合同编号
  343. map.put("tenantName", "textField_m0z328xq");//公司名称
  344. map.put("glbd", "associationFormField_m0yx25he");//物理印章关联表单
  345. map.put("count", "numberField_m0yx25hf");//盖章次数
  346. // map.put("categoryName", "textField_lvz1kozg");//业务分类名称
  347. // map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  348. // map.put("creatorName", "textField_lzpdjzfp");//创建人名称
  349. // map.put("creatorContact", "textField_lzpdjzfq");//创建人手机号
  350. } else {
  351. throw new Exception();
  352. }
  353. return map.get(key);
  354. }
  355. //todo 待完善
  356. @Override
  357. public McR createByFile(JSONObject param) throws Exception {
  358. String formInstanceId = param.getString("formInstanceId");
  359. String type = param.getString("type");
  360. log.info("formInstanceId:{}", formInstanceId);
  361. log.info("type:{}", type);
  362. //根据实例ID获取表单数据
  363. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  364. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  365. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  366. log.info("data:{}", data);
  367. String categoryName = data.get(getCust(type, "categoryName")).toString();
  368. //把文件下载到本地路径 ,并获取到文档ID
  369. List<String> documentId = new ArrayList<>();
  370. if (!type.equals("FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6")) {
  371. documentId = createbyfile(data, type);
  372. }
  373. //定义参数 创建合同草稿
  374. JSONObject obj = new JSONObject();
  375. // obj.put("subject",data.get("textField_ltsbwef0"));//合同名称
  376. obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
  377. obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
  378. obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
  379. // obj.put("sn",data.get("serialNumberField_ltsbweh2"));//合同编号流水号
  380. obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
  381. obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
  382. obj.put("categoryId", data.get(getCust(type, "categoryId")));//业务分类Id data.get("textField_lvm5xmqe")
  383. if (!type.equals("FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6")) {
  384. if (documentId != null) {
  385. obj.put("documents", documentId);//文档ID
  386. }
  387. }
  388. if (categoryName.equals("劳动合同") || categoryName.equals("校区劳动合同")
  389. ) {
  390. obj.put("send", true);
  391. } else if (categoryName.equals("校区劳务协议") || categoryName.equals("劳务协议")) {
  392. obj.put("send", true);
  393. } else {
  394. obj.put("send", false);// 是否发起合同;发起合同后不能再进行添加文档、指定签署位置等操作
  395. }
  396. //签署人数据
  397. JSONArray array = new JSONArray();
  398. JSONArray array1 = new JSONArray();
  399. if (categoryName.equals("多方电子用印(个人)(我方先签)") ||
  400. categoryName.equals("我方电子对方物理(个人)(我方先签)")) {
  401. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  402. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  403. } else if (categoryName.equals("我方电子对方物理(企业)(我方先签)") ||
  404. categoryName.equals("多方电子用印(企业)(我方先签)")) {
  405. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  406. array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
  407. } else if (categoryName.equals("我方电子对方物理(企业&个人)(我方先签)") ||
  408. categoryName.equals("多方电子用印(企业&个人)(我方先签)")) {
  409. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  410. array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
  411. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  412. } else if (categoryName.equals("我方电子对方物理(个人)") ||
  413. categoryName.equals("多方电子用印(个人)(对方先签)") ||
  414. categoryName.equals("劳动合同") ||
  415. categoryName.equals("校区劳务协议") ||
  416. categoryName.equals("校区劳动合同") ||
  417. categoryName.equals("劳务协议") ||
  418. categoryName.equals("续签(固定几年)") ||
  419. categoryName.equals("续签(无固定期限)") ||
  420. categoryName.equals("续签(员工合同到期公司不再与员工续签)") ||
  421. categoryName.equals("续签(员工合同到期员工本人不愿意与公司续签时签订)") ||
  422. categoryName.equals("解除劳动合同")
  423. ) {
  424. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  425. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  426. } else if (categoryName.equals("我方电子对方物理(企业)") ||
  427. categoryName.equals("多方电子用印(企业)(对方先签)")) {
  428. array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
  429. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  430. } else if (categoryName.equals("我方电子对方物理(企业&个人)") ||
  431. categoryName.equals("多方电子用印(企业&个人)(对方先签)")) {
  432. array.add(getCompSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString(), data.get(getCust(type, "receiverNameA")).toString()));
  433. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  434. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  435. } else if (categoryName.equals("内部企业单签") ||
  436. categoryName.equals("默认业务分类")) {
  437. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  438. } else if (categoryName.equals("印章保管授权&承诺书")) {
  439. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  440. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameA")).toString(), data.get(getCust(type, "contactA")).toString()));
  441. } else if (categoryName.equals("物理用印外带场景") ||
  442. categoryName.equals("物理用印公司用印场景")) {
  443. String glbdjson = data.get(getCust(type, "glbd") + "_id").toString();
  444. String sealjson = StringEscapeUtils.unescapeJava(glbdjson.substring(1, glbdjson.length() - 1));
  445. List<Map> sealjsonlist = (List<Map>) JSONArray.parse(sealjson);
  446. for (Map sealmap : sealjsonlist) {
  447. String sealInstanceId = (String) sealmap.get("instanceId");
  448. if (sealInstanceId != null) {
  449. Map sealdata1 = (Map) ydClient.queryData(
  450. YDParam.builder()
  451. .formInstId(sealInstanceId)
  452. .appType(ydConf.getAppType())
  453. .systemToken(ydConf.getSystemToken())
  454. .userId(ddConf.getOperator())
  455. .build(),
  456. YDConf.FORM_QUERY.retrieve_id
  457. ).getFormData();
  458. if (sealdata1 != null) {
  459. String sealName1 = (String) sealdata1.get("textField_lw6aecve");
  460. if (sealName1 != null) {
  461. array1.add(getAuths(sealName1, data.get(getCust(type, "count")).toString()));
  462. } else {
  463. // 处理 sealName1 为空的情况
  464. return null;
  465. }
  466. } else {
  467. // 处理 sealdata1 为空的情况
  468. return null;
  469. }
  470. } else {
  471. // 处理 sealInstanceId 为空的情况
  472. return null;
  473. }
  474. }
  475. }
  476. //把所有参数传到obj中
  477. if (categoryName.equals("物理用印外带场景") ||
  478. categoryName.equals("物理用印公司用印场景")) {
  479. obj.put("applyerNumber", data.get(getCust(type, "applyerNumber")));
  480. obj.put("auths", array1);
  481. } else {
  482. obj.put("signatories", array);
  483. }
  484. System.out.println("obj:{}" + obj);
  485. try {
  486. if (categoryName.equals("物理用印外带场景") ||
  487. categoryName.equals("物理用印公司用印场景")) {
  488. // qysService.createseal(obj);
  489. } else {
  490. //1.调用创建合同草稿方法
  491. JSONObject draft = qysService.createDraft(obj);
  492. System.out.println(draft);
  493. if (draft != null) {
  494. String contractId = draft.getString("contractId");
  495. if (contractId != "") {
  496. //发起合同
  497. System.out.println("contractId" + contractId);
  498. // JSONObject senddata = qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
  499. // //合同id 写入宜搭
  500. String sc = getCust(type, "sn");//合同id字段
  501. String sc_values = data.get(getCust(type, "sn")).toString();//合同id字段的值
  502. String fd = getCust(type, "contractId");//字段名称
  503. ydClient.operateData(YDParam.builder()
  504. .formUuid(type)
  505. .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, sc_values)))
  506. .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, contractId)))
  507. .build(), YDConf.FORM_OPERATION.upsert);
  508. JSONObject senddata = qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
  509. //
  510. // FileUtil.file("C:\\Users\\Administrator\\Desktop\\合同.pdf");
  511. System.out.println("senddata:" + senddata);
  512. }
  513. }
  514. }
  515. } catch (Exception e) {
  516. e.printStackTrace();
  517. }
  518. return McR.success("success");
  519. }
  520. private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[^\\w\\u4e00-\\u9fa5-.]");
  521. @Override
  522. public String callback(Map<String, String> param) throws Exception {
  523. String sn = param.get("sn");
  524. String contractId = param.get("contractId");
  525. String status = param.get("status");
  526. log.info("sn:{}", sn);
  527. log.info("contractId:{}", contractId);
  528. //查询宜搭底表数据
  529. String[] sns = sn.split("-");
  530. dingshiqiImpl dingshiqi = new dingshiqiImpl();
  531. Map<String, String> formUuid = getFormUuid(sns[0]);
  532. List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid.get("type")).searchCondition(
  533. JSONObject.toJSONString(UtilMap.map(formUuid.get("sn"), sn))
  534. ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
  535. Map maplist = list1.get(0);
  536. String instanceId = (String) maplist.get("formInstanceId");
  537. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(instanceId)
  538. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  539. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  540. log.info("data:{}", data);
  541. log.info("list1:{}", list1);
  542. String categoryName = data.get(getCust(formUuid.get("type"), "categoryName")).toString();
  543. List list = new ArrayList();
  544. if (categoryName.equals("我方电子对方物理(个人)") || categoryName.equals("我方电子对方物理(个人)(我方先签)")
  545. || categoryName.equals("我方电子对方物理(企业&个人)") || categoryName.equals("我方电子对方物理(企业&个人)(我方先签)")
  546. || categoryName.equals("我方电子对方物理(企业)") || categoryName.equals("我方电子对方物理(企业)(我方先签)")) {
  547. qysService.download(contractId, new File(BDURL + sn + ".zip"));
  548. List<String> unzippedFiles = new ArrayList<>();
  549. String zipFilePath = BDURL + sn + ".zip";
  550. String destDirectory = PDFBDURL + sn;
  551. try {
  552. File destDir = new File(destDirectory);
  553. if (!destDir.exists()) {
  554. destDir.mkdir();
  555. }
  556. byte[] buffer = new byte[1024];
  557. ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
  558. ZipEntry entry = zipIn.getNextEntry();
  559. while (entry != null) {
  560. // String filePath = destDirectory + File.separator + entry.getName();
  561. // 1. 获取原始文件名并清理特殊字符
  562. String originalName = entry.getName();
  563. String safeName = SAFE_FILENAME_PATTERN.matcher(originalName).replaceAll("");
  564. // 2. 替换空格为下划线(可选)
  565. safeName = safeName.replace(" ", "_");
  566. // 3. 构建安全文件路径
  567. String filePath = destDirectory + File.separator + safeName;
  568. if (!entry.isDirectory()) {
  569. new File(filePath).getParentFile().mkdirs();
  570. FileOutputStream fos = new FileOutputStream(filePath);
  571. int len;
  572. while ((len = zipIn.read(buffer)) > 0) {
  573. fos.write(buffer, 0, len);
  574. }
  575. fos.close();
  576. unzippedFiles.add(filePath);
  577. }
  578. zipIn.closeEntry();
  579. entry = zipIn.getNextEntry();
  580. }
  581. zipIn.close();
  582. System.out.println("ZIP 文件解压完成。");
  583. } catch (Exception e) {
  584. System.out.println("发生异常: " + e.getMessage());
  585. e.printStackTrace();
  586. }
  587. for (String unzippedFile : unzippedFiles) {
  588. Map map = new HashMap();
  589. String fileName = FileUtil.getName(unzippedFile);
  590. if (fileName.contains("签署摘要")) {
  591. continue; // 跳过这个文件
  592. }
  593. map.put("downloadUrl", URL + sn + "/" + fileName);
  594. map.put("name", fileName);
  595. map.put("previewUrl", map.get("downloadUrl"));
  596. map.put("url", map.get("downloadUrl"));
  597. map.put("ext", FileUtil.extName(unzippedFile));
  598. list.add(map);
  599. }
  600. log.info("list:{}", list);
  601. }
  602. if (status.equals("COMPLETE") || status.equals("SIGNED") || status.equals("FINISHED")) {
  603. qysService.download(contractId, new File(BDURL + sn + ".zip"));
  604. List<String> unzippedFiles = new ArrayList<>();
  605. String zipFilePath = BDURL + sn + ".zip";
  606. String destDirectory = PDFBDURL + sn;
  607. try {
  608. File destDir = new File(destDirectory);
  609. if (!destDir.exists()) {
  610. destDir.mkdir();
  611. }
  612. byte[] buffer = new byte[1024];
  613. ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
  614. ZipEntry entry = zipIn.getNextEntry();
  615. while (entry != null) {
  616. // String filePath = destDirectory + File.separator + entry.getName();
  617. // 1. 获取原始文件名并清理特殊字符
  618. String originalName = entry.getName();
  619. String safeName = SAFE_FILENAME_PATTERN.matcher(originalName).replaceAll("");
  620. // 2. 替换空格为下划线(可选)
  621. safeName = safeName.replace(" ", "_");
  622. // 3. 构建安全文件路径
  623. String filePath = destDirectory + File.separator + safeName;
  624. if (!entry.isDirectory()) {
  625. new File(filePath).getParentFile().mkdirs();
  626. FileOutputStream fos = new FileOutputStream(filePath);
  627. int len;
  628. while ((len = zipIn.read(buffer)) > 0) {
  629. fos.write(buffer, 0, len);
  630. }
  631. fos.close();
  632. unzippedFiles.add(filePath);
  633. }
  634. zipIn.closeEntry();
  635. entry = zipIn.getNextEntry();
  636. }
  637. zipIn.close();
  638. System.out.println("ZIP 文件解压完成。");
  639. } catch (Exception e) {
  640. System.out.println("发生异常: " + e.getMessage());
  641. e.printStackTrace();
  642. }
  643. for (String unzippedFile : unzippedFiles) {
  644. Map map = new HashMap();
  645. String fileName = FileUtil.getName(unzippedFile);
  646. if (fileName.contains("签署摘要")) {
  647. continue; // 跳过这个文件
  648. }
  649. map.put("downloadUrl", URL + sn + "/" + fileName);
  650. map.put("name", fileName);
  651. map.put("previewUrl", map.get("downloadUrl"));
  652. map.put("url", map.get("downloadUrl"));
  653. map.put("ext", FileUtil.extName(unzippedFile));
  654. list.add(map);
  655. }
  656. log.info("list:{}", list);
  657. }
  658. Map param2 = new HashMap();
  659. param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
  660. Map body3 = new HashMap();
  661. body3.put("appType", "APP_VCTRP6227CC8368NDOID");
  662. body3.put("systemToken", "5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
  663. body3.put("processInstanceId", instanceId);
  664. body3.put("userId", "13810479803");
  665. boolean flag = true;
  666. String taskId = "";
  667. String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
  668. JSONObject obj = JSONObject.parseObject(s);
  669. JSONArray arr = obj.getJSONArray("result");
  670. for (int i = 0; i < arr.size(); i++) {
  671. JSONObject json = arr.getJSONObject(i);
  672. flag = false;
  673. if (json.getString("operatorUserId").equals("13810479803") ){
  674. taskId = json.getString("taskId");
  675. }
  676. if (json.getString("operatorUserId").equals("13810479803") && json.getString("type").equals("TODO")) {
  677. taskId = json.getString("taskId");
  678. flag = true;
  679. break;
  680. }
  681. }
  682. if (flag){
  683. taskExecute(instanceId, taskId);
  684. System.out.println("taskId");
  685. }else {
  686. ydClient.operateData(YDParam.builder()
  687. .formUuid("FORM-F7B0E685C56E41FC939A581F8B7C2665PXPV")
  688. .formDataJson(JSONObject.toJSONString(UtilMap.map("textField_lzns5l3l, textField_lzns5l3k, textField_lzns5l3m", sn, instanceId, taskId)))
  689. .build(), YDConf.FORM_OPERATION.create);
  690. }
  691. if(list.size() > 0){
  692. ydClient.operateData(YDParam.builder()
  693. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  694. .userId(ddConf.getOperator()).formInstId(instanceId)
  695. .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("attachmentField_ltsbweit", list)))
  696. .build(), YDConf.FORM_OPERATION.update);
  697. }
  698. return "success";
  699. }
  700. //自动系统管理员自动审批流程
  701. private void taskExecute(String instanceId, String taskId) {
  702. Map param3 = new HashMap();
  703. param3.put("x-acs-dingtalk-access-token", new dingshiqiImpl().getAccessToken_PJSS());
  704. Map body4 = new HashMap();
  705. body4.put("outResult", "AGREE");
  706. body4.put("appType", "APP_VCTRP6227CC8368NDOID");
  707. body4.put("systemToken", "5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
  708. body4.put("remark", "同意");
  709. body4.put("taskId", taskId);
  710. body4.put("processInstanceId", instanceId);
  711. body4.put("userId", "13810479803");
  712. String s1 = UtilHttp.doPost("https://api.dingtalk.com/v1.0/yida/tasks/execute", param3, null, (Map<String, Object>) body4);
  713. System.out.println("result" + s1);
  714. }
  715. @Override
  716. public McR appointurl(String contractId) throws Exception {
  717. try {
  718. log.info("获取预签署地址 {}", contractId);
  719. JSONObject urlR = qysService.appointurl(contractId);
  720. String presignUrl = urlR.getString("presignUrl");
  721. if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
  722. return McR.error(urlR.getString("code"), urlR.getString("message"));
  723. } else {
  724. return McR.success(presignUrl);
  725. }
  726. } catch (Exception e) {
  727. return McR.error("401", "获取失败");
  728. }
  729. }
  730. // @Override
  731. // public McR sendContract(String contractId,String tenantName) throws Exception {
  732. // JSONObject send = qysService.send(contractId, tenantName);
  733. // return McR.success(send);
  734. // }
  735. @Override
  736. public McR apply(JSONObject param) throws Exception {
  737. String formInstanceId = param.getString("formInstanceId");
  738. String type = param.getString("type");
  739. Integer currentPage = Integer.valueOf(param.getString("currentPage"));
  740. Integer pageSize = Integer.valueOf(param.getString("pageSize"));
  741. log.info("formInstanceId:{}", formInstanceId);
  742. log.info("type:{}", type);
  743. //根据实例ID获取表单数据
  744. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  745. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  746. log.info("data:{}", data);
  747. //获取印章详情
  748. String glbd = getCust(type, "glbd");
  749. String glbdjson = data.get(getCust(type, "glbd") + "_id").toString();
  750. String sealjson = StringEscapeUtils.unescapeJava(glbdjson.substring(1, glbdjson.length() - 1));
  751. List<Map> sealjsonlist = (List<Map>) JSONArray.parse(sealjson);
  752. System.out.println("==========" + sealjsonlist);
  753. JSONObject obj = new JSONObject();
  754. obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
  755. obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
  756. obj.put("applyerNumber", data.get(getCust(type, "applyerNumber")));//发起员工编号
  757. ArrayList<Object> objects1 = new ArrayList<>();
  758. for (Map sealjsonmap : sealjsonlist) {
  759. JSONObject auths = new JSONObject();
  760. String sealInstanceId = (String) sealjsonmap.get("instanceId");
  761. Map sealdata1 = (Map) ydClient.queryData(YDParam.builder().formInstId(sealInstanceId)
  762. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  763. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  764. System.out.println("aaaaaaa==========" + sealdata1);
  765. String aaa = (String) sealdata1.get("textField_lwywohh0");
  766. String aaa1 = (String) sealdata1.get("textField_lw6aecve");
  767. ArrayList<Object> objects = new ArrayList<>();
  768. Map hashMap = new HashMap();
  769. hashMap.put("mobile", aaa);
  770. Map hashUser = new HashMap();
  771. hashUser.put("number", data.get(getCust(type, "applyerNumber")));
  772. objects.add(hashMap);
  773. objects.add(hashUser);
  774. auths.put("sealName", aaa1);//印章名称
  775. auths.put("count", data.get(getCust(type, "count")));//授权数量
  776. auths.put("users", objects);
  777. objects1.add(auths);
  778. }
  779. obj.put("auths", objects1);
  780. JSONObject code = qysService.applyseals(obj);
  781. System.out.println("code===========" + code);
  782. JSONObject json = code.getJSONObject("result");
  783. JSONArray sealAuthsArray = json.getJSONArray("sealAuths");
  784. ObjectMapper mapper = new ObjectMapper();
  785. List<Map<String, Object>> pageResult = null;
  786. Map result = new HashMap();
  787. try {
  788. // 假设这是从文件或者网络读取的JSON数据
  789. String jsonData = String.valueOf(sealAuthsArray);
  790. // 解析JSON数据
  791. ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonData);
  792. // 处理每个对象
  793. List<Map<String, Object>> resultList = new ArrayList<>();
  794. for (JsonNode node : arrayNode) {
  795. Map<String, Object> map = new HashMap<>();
  796. map.put("userName", node.get("userName").asText());
  797. map.put("sealName", node.get("sealName").asText());
  798. String contact = node.get("contact") != null && !node.get("contact").isMissingNode() ? node.get("contact").asText() : String.valueOf(data.get(getCust(type, "applyerNumber")));
  799. map.put("contact", contact);
  800. String vertifyCode = node.get("vertifyCode") != null && !node.get("vertifyCode").isMissingNode() ? node.get("vertifyCode").asText() : "授权码不存在";
  801. map.put("vertifyCode", vertifyCode);
  802. resultList.add(map);
  803. }
  804. // int currentPage = 1; // 当前页码
  805. // int pageSize = 2; // 每页的数量
  806. pageResult = getPage(resultList, currentPage, pageSize);
  807. // 打印结果
  808. System.out.println(pageResult);
  809. result.put("totalCount", resultList.size());
  810. result.put("data", pageResult);
  811. result.put("currentPage", currentPage);
  812. } catch (IOException e) {
  813. e.printStackTrace();
  814. }
  815. return McR.success(result);
  816. }
  817. private static List<Map<String, Object>> getPage(List<Map<String, Object>> list, int pageNum, int pageSize) {
  818. int startIndex = (pageNum - 1) * pageSize;
  819. int endIndex = Math.min(startIndex + pageSize, list.size());
  820. return list.subList(startIndex, endIndex);
  821. }
  822. @Override
  823. public McR signurl(JSONObject param) throws Exception {
  824. String formInstanceId = param.getString("formInstanceId");
  825. String type = param.getString("type");
  826. log.info("formInstanceId:{}", formInstanceId);
  827. log.info("type:{}", type);
  828. //根据实例ID获取表单数据
  829. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  830. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  831. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  832. log.info("data:{}", data);
  833. // String categoryName = data.get(getCust(type, "categoryName")).toString();
  834. JSONObject signatory = new JSONObject();
  835. signatory.put("tenantType", "COMPANY");
  836. signatory.put("tenantName", data.get(getCust(type, "tenantName")));
  837. signatory.put("contractId", data.get(getCust(type, "contractId")));
  838. JSONObject urlR = qysService.signurla(signatory);
  839. String signUrl = urlR.getString("signUrl");
  840. System.out.println("aaa---------------" + signUrl);
  841. System.out.println(urlR);
  842. if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
  843. return McR.error(urlR.getString("code"), urlR.getString("message"));
  844. } else {
  845. return McR.success(signUrl);
  846. }
  847. }
  848. @Override
  849. public McR createContract(JSONObject param) throws Exception {
  850. String formInstanceId = param.getString("formInstanceId");
  851. String type = param.getString("type");
  852. log.info("formInstanceId:{}", formInstanceId);
  853. log.info("type:{}", type);
  854. //根据实例ID获取表单数据
  855. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  856. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  857. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  858. log.info("data:{}", data);
  859. JSONObject obj = new JSONObject();
  860. // obj.put("subject",data.get("textField_ltsbwef0"));//合同名称
  861. obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
  862. obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
  863. obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
  864. // obj.put("sn",data.get("serialNumberField_ltsbweh2"));//合同编号流水号
  865. obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
  866. obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
  867. obj.put("categoryId", data.get(getCust(type, "categoryId")));//业务分类Id
  868. List<Map<String, Object>> params1 = new ArrayList<>();
  869. List<Map<String, Object>> params2 = new ArrayList<>();
  870. String categoryName = data.get(getCust(type, "categoryName")).toString();
  871. if (type.equals("FORM-0D501EF1688247DC932E7784298BD46BRYHC")) {
  872. JSONObject jf = new JSONObject();
  873. jf.put("name", "jf");
  874. jf.put("value", data.get(getCust(type, "jf")));//甲方名称
  875. JSONObject txdz = new JSONObject();
  876. txdz.put("name", "txdz");
  877. txdz.put("value", data.get(getCust(type, "txdz")));//甲方通讯地址
  878. JSONObject yf = new JSONObject();
  879. yf.put("name", "yf");
  880. yf.put("value", data.get(getCust(type, "yf")));//乙方
  881. JSONObject sjhm = new JSONObject();
  882. sjhm.put("name", "sjhm");
  883. sjhm.put("value", data.get(getCust(type, "sjhm")));//乙方手机号码
  884. if (categoryName.equals("劳动合同") || categoryName.equals("校区劳动合同")
  885. ) {
  886. JSONObject syqksrq = new JSONObject();
  887. long timestamp = (long) data.get(getCust(type, "syqksrq"));
  888. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  889. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  890. // 将时间戳转换为 Date 对象
  891. Date date = new Date(timestamp);
  892. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  893. String formattedDate = sdf.format(date);
  894. syqksrq.put("name", "syqksrq");
  895. syqksrq.put("value", formattedDate);//试用期开始日期
  896. JSONObject syqjsrq = new JSONObject();
  897. long timestamp1 = (long) data.get(getCust(type, "syqjsrq"));
  898. // 将时间戳转换为 Date 对象
  899. Date date1 = new Date(timestamp1);
  900. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  901. String formattedDate1 = sdf.format(date1);
  902. syqjsrq.put("name", "syqjsrq");
  903. syqjsrq.put("value", formattedDate1);//试用期结束日期
  904. JSONObject ldhtksrq = new JSONObject();
  905. long timestamp2 = (long) data.get(getCust(type, "ldhtksrq"));
  906. // 将时间戳转换为 Date 对象
  907. Date date2 = new Date(timestamp2);
  908. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  909. String formattedDate2 = sdf.format(date2);
  910. ldhtksrq.put("name", "ldhtksrq");
  911. ldhtksrq.put("value", formattedDate2);//劳动合同开始日期
  912. JSONObject ldhtjsrq = new JSONObject();
  913. long timestamp3 = (long) data.get(getCust(type, "ldhtjsrq"));
  914. // 将时间戳转换为 Date 对象
  915. Date date3 = new Date(timestamp3);
  916. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  917. String formattedDate3 = sdf.format(date3);
  918. ldhtjsrq.put("name", "ldhtjsrq");
  919. ldhtjsrq.put("value", formattedDate3);//劳动合同结束日期
  920. JSONObject gzdd = new JSONObject();
  921. gzdd.put("name", "gzdd");
  922. gzdd.put("value", data.get(getCust(type, "gzdd")));//工作地点
  923. params1.add(jf);
  924. params1.add(txdz);
  925. params1.add(yf);
  926. params1.add(sjhm);
  927. params1.add(syqksrq);
  928. params1.add(syqjsrq);
  929. params1.add(ldhtksrq);
  930. params1.add(ldhtjsrq);
  931. params1.add(gzdd);
  932. } else {
  933. if (categoryName.equals("劳务协议") || categoryName.equals("校区劳务协议")
  934. ) {
  935. JSONObject yftgfw = new JSONObject();
  936. yftgfw.put("name", "yftgfw");
  937. yftgfw.put("value", data.get(getCust(type, "yftgfw")));//乙方提供服务
  938. JSONObject xchsgz = new JSONObject();
  939. xchsgz.put("name", "xchsgz");
  940. xchsgz.put("value", data.get(getCust(type, "xchsgz")));//薪酬核算规则
  941. JSONObject dyzmtbc = new JSONObject();
  942. dyzmtbc.put("name", "dyzmtbc");
  943. dyzmtbc.put("value", data.get(getCust(type, "dyzmtbc")));//报酬金额
  944. JSONObject dyzarksrq = new JSONObject();
  945. long timestamp4 = (long) data.get(getCust(type, "dyzarksrq"));
  946. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  947. //// 将时间戳转换为 Date 对象
  948. Date date4 = new Date(timestamp4);
  949. //// 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  950. String formattedDate4 = sdf.format(date4);
  951. dyzarksrq.put("name", "dyzarksrq");
  952. // dyzarksrq.put("value", timestamp4);//开始日期
  953. dyzarksrq.put("value", formattedDate4);//开始日期
  954. JSONObject dyzarjsrq = new JSONObject();
  955. long timestamp5 = (long) data.get(getCust(type, "dyzarjsrq"));
  956. // 将时间戳转换为 Date 对象
  957. Date date5 = new Date(timestamp5);
  958. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  959. String formattedDate5 = sdf.format(date5);
  960. dyzarjsrq.put("name", "dyzarjsrq");
  961. dyzarjsrq.put("value", formattedDate5);//结束日期
  962. // dyzarjsrq.put("value", timestamp5);//结束日期
  963. params2.add(jf);
  964. params2.add(txdz);
  965. params2.add(yf);
  966. params2.add(sjhm);
  967. params2.add(yftgfw);
  968. params2.add(xchsgz);
  969. params2.add(dyzmtbc);
  970. params2.add(dyzarksrq);
  971. params2.add(dyzarjsrq);
  972. }
  973. }
  974. }
  975. // System.out.println("qqqqqqqqqqqqqqq" + params2);
  976. JSONArray array = new JSONArray();
  977. if (categoryName.equals("劳动合同") || categoryName.equals("校区劳动合同")
  978. ) {
  979. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  980. array.add(getCompASignatory1());
  981. obj.put("documentParams", params1);
  982. obj.put("signatories", array);
  983. obj.put("send", true);
  984. } else {
  985. array.add(getPeopSignatory(data.get(getCust(type, "tenantNameP")).toString(), data.get(getCust(type, "contactP")).toString()));
  986. array.add(getCompASignatory1());
  987. obj.put("documentParams", params2);
  988. obj.put("signatories", array);
  989. obj.put("send", true);
  990. }
  991. JSONObject draft = qysService.createDraft(obj);
  992. System.out.println("======="+draft);
  993. if (draft != null) {
  994. String contractId = draft.getString("contractId");
  995. if (contractId != "") {
  996. //发起合同
  997. System.out.println("contractId" + contractId);
  998. // //合同id 写入宜搭
  999. String sc = getCust(type, "sn");//合同id字段
  1000. String sc_values = data.get(getCust(type, "sn")).toString();//合同id字段的值
  1001. String fd = getCust(type, "contractId");//字段名称
  1002. ydClient.operateData(YDParam.builder()
  1003. .formUuid(type)
  1004. .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, sc_values)))
  1005. .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, contractId)))
  1006. .build(), YDConf.FORM_OPERATION.upsert).toString();
  1007. }
  1008. }
  1009. return McR.success("success");
  1010. }
  1011. //TODO 封装代码
  1012. @Override
  1013. public McR createReContract(JSONObject param) throws Exception {
  1014. String formInstanceId = param.getString("formInstanceId");
  1015. String type = param.getString("type");
  1016. log.info("formInstanceId:{}", formInstanceId);
  1017. log.info("type:{}", type);
  1018. //根据实例ID获取表单数据
  1019. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  1020. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  1021. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  1022. log.info("data:{}", data);
  1023. JSONObject obj = new JSONObject();
  1024. // obj.put("subject",data.get("textField_ltsbwef0"));//合同名称
  1025. obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
  1026. obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
  1027. obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
  1028. // obj.put("sn",data.get("serialNumberField_ltsbweh2"));//合同编号流水号
  1029. obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
  1030. obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
  1031. obj.put("categoryId", data.get(getCust(type, "categoryId")));//业务分类Id
  1032. List<Map<String, Object>> params1 = new ArrayList<>();
  1033. List<Map<String, Object>> params2 = new ArrayList<>();
  1034. List<Map<String, Object>> params3 = new ArrayList<>();
  1035. List<Map<String, Object>> params4 = new ArrayList<>();
  1036. String categoryName = data.get(getCust(type, "categoryName")).toString();
  1037. if (categoryName.equals("续签(固定几年)")
  1038. ) {
  1039. JSONObject jf = new JSONObject();
  1040. jf.put("name", "jf");
  1041. jf.put("value", data.get(getCust(type, "jf")));//甲方名称
  1042. JSONObject xm = new JSONObject();
  1043. xm.put("name", "xm");
  1044. xm.put("value", data.get(getCust(type, "xm")));//身份证号
  1045. JSONObject sfzh = new JSONObject();
  1046. sfzh.put("name", "sfzh");
  1047. sfzh.put("value", data.get(getCust(type, "sfzh")));//乙方
  1048. JSONObject htkssj = new JSONObject();
  1049. long timestamp = (long) data.get(getCust(type, "htkssj"));
  1050. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1051. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1052. // 将时间戳转换为 Date 对象
  1053. Date date = new Date(timestamp);
  1054. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1055. String formattedDate = sdf.format(date);
  1056. htkssj.put("name", "htkssj");
  1057. htkssj.put("value", formattedDate);//合同开始时间
  1058. JSONObject xdqxkssj = new JSONObject();
  1059. long timestamp1 = (long) data.get(getCust(type, "xdqxkssj"));
  1060. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1061. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  1062. // 将时间戳转换为 Date 对象
  1063. Date date1 = new Date(timestamp1);
  1064. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1065. String formattedDate1 = sdf1.format(date1);
  1066. xdqxkssj.put("name", "xdqxkssj");
  1067. xdqxkssj.put("value", formattedDate1);//续订期限开始时间
  1068. JSONObject xdqxjzsj = new JSONObject();
  1069. long timestamp2 = (long) data.get(getCust(type, "xdqxjzsj"));
  1070. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1071. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
  1072. // 将时间戳转换为 Date 对象
  1073. Date date2 = new Date(timestamp2);
  1074. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1075. String formattedDate2 = sdf2.format(date2);
  1076. xdqxjzsj.put("name", "xdqxjzsj");
  1077. xdqxjzsj.put("value", formattedDate2);//续订期限开始时间
  1078. params1.add(jf);
  1079. params1.add(xm);
  1080. params1.add(sfzh);
  1081. params1.add(htkssj);
  1082. params1.add(xdqxkssj);
  1083. params1.add(xdqxjzsj);
  1084. } else if (categoryName.equals("续签(无固定期限)")) {
  1085. JSONObject jf = new JSONObject();
  1086. jf.put("name", "jf");
  1087. jf.put("value", data.get(getCust(type, "jf")));//甲方名称
  1088. JSONObject xm = new JSONObject();
  1089. xm.put("name", "xm");
  1090. xm.put("value", data.get(getCust(type, "xm")));//身份证号
  1091. JSONObject sfzh = new JSONObject();
  1092. sfzh.put("name", "sfzh");
  1093. sfzh.put("value", data.get(getCust(type, "sfzh")));//乙方
  1094. JSONObject htkssj = new JSONObject();
  1095. long timestamp = (long) data.get(getCust(type, "htkssj"));
  1096. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1097. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1098. // 将时间戳转换为 Date 对象
  1099. Date date = new Date(timestamp);
  1100. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1101. String formattedDate = sdf.format(date);
  1102. htkssj.put("name", "htkssj");
  1103. htkssj.put("value", formattedDate);//合同开始时间
  1104. params2.add(jf);
  1105. params2.add(xm);
  1106. params2.add(sfzh);
  1107. params2.add(htkssj);
  1108. } else if (categoryName.equals("续签(员工合同到期公司不再与员工续签)")) {
  1109. JSONObject xm = new JSONObject();
  1110. xm.put("name", "xm");
  1111. xm.put("value", data.get(getCust(type, "xm")));//姓名
  1112. JSONObject sfzh = new JSONObject();
  1113. sfzh.put("name", "sfzh");
  1114. sfzh.put("value", data.get(getCust(type, "sfzh")));//身份证号
  1115. JSONObject htkssj = new JSONObject();
  1116. long timestamp = (long) data.get(getCust(type, "htkssj"));
  1117. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1118. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1119. // 将时间戳转换为 Date 对象
  1120. Date date = new Date(timestamp);
  1121. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1122. String formattedDate = sdf.format(date);
  1123. htkssj.put("name", "htkssj");
  1124. htkssj.put("value", formattedDate);//合同开始时间
  1125. JSONObject htjssj = new JSONObject();
  1126. long timestamp1 = (long) data.get(getCust(type, "htjssj"));
  1127. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1128. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  1129. // 将时间戳转换为 Date 对象
  1130. Date date1 = new Date(timestamp1);
  1131. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1132. String formattedDate1 = sdf1.format(date1);
  1133. htjssj.put("name", "htjssj");
  1134. htjssj.put("value", formattedDate1);//续订期限开始时间
  1135. JSONObject zfjjbcjrq = new JSONObject();
  1136. long timestamp3 = (long) data.get(getCust(type, "zfjjbcjrq"));
  1137. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1138. SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
  1139. // 将时间戳转换为 Date 对象
  1140. Date date3 = new Date(timestamp3);
  1141. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1142. String formattedDate2 = sdf3.format(date3);
  1143. zfjjbcjrq.put("name", "zfjjbcjrq");
  1144. zfjjbcjrq.put("value", formattedDate2);//支付经济补偿金日期
  1145. JSONObject jjbcj = new JSONObject();
  1146. jjbcj.put("name", "jjbcj");
  1147. jjbcj.put("value", data.get(getCust(type, "jjbcj")));//姓名
  1148. params3.add(jjbcj);
  1149. params3.add(xm);
  1150. params3.add(sfzh);
  1151. params3.add(htkssj);
  1152. params3.add(htjssj);
  1153. params3.add(zfjjbcjrq);
  1154. } else {
  1155. JSONObject xm = new JSONObject();
  1156. xm.put("name", "xm");
  1157. xm.put("value", data.get(getCust(type, "xm")));//姓名
  1158. JSONObject htkssj = new JSONObject();
  1159. long timestamp = (long) data.get(getCust(type, "htkssj"));
  1160. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1161. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1162. // 将时间戳转换为 Date 对象
  1163. Date date = new Date(timestamp);
  1164. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1165. String formattedDate = sdf.format(date);
  1166. htkssj.put("name", "htkssj");
  1167. htkssj.put("value", formattedDate);//合同开始时间
  1168. JSONObject htjssj = new JSONObject();
  1169. long timestamp1 = (long) data.get(getCust(type, "htjssj"));
  1170. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1171. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  1172. // 将时间戳转换为 Date 对象
  1173. Date date1 = new Date(timestamp1);
  1174. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1175. String formattedDate1 = sdf1.format(date1);
  1176. htjssj.put("name", "htjssj");
  1177. htjssj.put("value", formattedDate1);//续订期限开始时间
  1178. params4.add(xm);
  1179. params4.add(htkssj);
  1180. params4.add(htjssj);
  1181. }
  1182. JSONArray array = new JSONArray();
  1183. if (categoryName.equals("续签(固定几年)")) {
  1184. array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
  1185. array.add(getCompASignatory1());
  1186. obj.put("documentParams", params1);
  1187. obj.put("signatories", array);
  1188. obj.put("send", true);
  1189. } else if (categoryName.equals("续签(无固定期限)")) {
  1190. array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
  1191. array.add(getCompASignatory1());
  1192. obj.put("documentParams", params2);
  1193. obj.put("signatories", array);
  1194. obj.put("send", true);
  1195. } else if (categoryName.equals("续签(员工合同到期公司不再与员工续签)")) {
  1196. array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
  1197. array.add(getCompASignatory1());
  1198. obj.put("documentParams", params3);
  1199. obj.put("signatories", array);
  1200. obj.put("send", true);
  1201. } else {
  1202. array.add(getPeopSignatory(data.get(getCust(type, "xm")).toString(), data.get(getCust(type, "contact")).toString()));
  1203. array.add(getCompASignatory1());
  1204. obj.put("documentParams", params4);
  1205. obj.put("signatories", array);
  1206. obj.put("send", true);
  1207. }
  1208. JSONObject draft = qysService.createDraft(obj);
  1209. System.out.println(draft);
  1210. // System.out.println(draft);
  1211. if (draft != null) {
  1212. String contractId = draft.getString("contractId");
  1213. if (contractId != "") {
  1214. //发起合同
  1215. System.out.println("contractId" + contractId);
  1216. // //合同id 写入宜搭
  1217. String sc = getCust(type, "sn");//合同id字段
  1218. String sc_values = data.get(getCust(type, "sn")).toString();//合同id字段的值
  1219. String fd = getCust(type, "contractId");//字段名称
  1220. ydClient.operateData(YDParam.builder()
  1221. .formUuid(type)
  1222. .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, sc_values)))
  1223. .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, contractId)))
  1224. .build(), YDConf.FORM_OPERATION.upsert).toString();
  1225. }
  1226. }
  1227. return McR.success("success");
  1228. }
  1229. @Override
  1230. public String callback1(Map<String, String> param) throws Exception {
  1231. dingshiqiImpl dingshiqi = new dingshiqiImpl();
  1232. String sn = param.get("sn");
  1233. String[] sns = sn.split("-");
  1234. Map<String, String> formUuid = getFormUuid(sns[0]);
  1235. List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder().formUuid(formUuid.get("type")).searchCondition(
  1236. JSONObject.toJSONString(UtilMap.map(formUuid.get("sn"), sn))
  1237. ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
  1238. Map map = list1.get(0);
  1239. String instanceId = (String) map.get("formInstanceId");
  1240. Map param2 = new HashMap();
  1241. param2.put("x-acs-dingtalk-access-token", dingshiqi.getAccessToken_PJSS());
  1242. Map body3 = new HashMap();
  1243. body3.put("appType", "APP_VCTRP6227CC8368NDOID");
  1244. body3.put("systemToken", "5H9662C1X8XJLFFCE841M5VBEBQ73DM5IBPULPI3");
  1245. body3.put("processInstanceId", instanceId);
  1246. body3.put("userId", "13810479803");
  1247. boolean flag = true;
  1248. do {
  1249. String s = UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/processes/operationRecords", param2, (Map<String, Object>) body3);
  1250. JSONObject obj = JSONObject.parseObject(s);
  1251. JSONArray arr = obj.getJSONArray("result");
  1252. for (int i = 0; i < arr.size(); i++) {
  1253. JSONObject json = arr.getJSONObject(i);
  1254. flag = false;
  1255. if (json.getString("operatorUserId").equals("13810479803") && json.getString("type").equals("TODO")) {
  1256. taskExecute(instanceId, json.getString("taskId"));
  1257. flag = true;
  1258. break;
  1259. }
  1260. }
  1261. } while (flag);
  1262. return "success";
  1263. }
  1264. @Override
  1265. public McR viewurl(String contractId, String pageType) throws Exception {
  1266. try {
  1267. log.info("获取合同浏览页面 {},{}", contractId,pageType);
  1268. JSONObject urlR = qysService.viewurl(contractId,pageType);
  1269. String viewUrl = urlR.getString("viewUrl");
  1270. if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
  1271. return McR.error(urlR.getString("code"), urlR.getString("message"));
  1272. } else {
  1273. return McR.success(viewUrl);
  1274. }
  1275. } catch (Exception e) {
  1276. return McR.error("401", "获取失败");
  1277. }
  1278. }
  1279. @Override
  1280. public McR audit(String contractId) throws Exception {
  1281. try {
  1282. log.info("合同审批 {}", contractId);
  1283. JSONObject urlR = qysService.audit(contractId);
  1284. String viewUrl = urlR.getString("viewUrl");
  1285. if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
  1286. return McR.error(urlR.getString("code"), urlR.getString("message"));
  1287. } else {
  1288. return McR.success(viewUrl);
  1289. }
  1290. } catch (Exception e) {
  1291. return McR.error("401", "获取失败");
  1292. }
  1293. }
  1294. //TODO hz06
  1295. @Override
  1296. public McR createHzContract(JSONObject param) throws Exception {
  1297. String formInstanceId = param.getString("formInstanceId");
  1298. String type = param.getString("type");
  1299. log.info("formInstanceId:{}", formInstanceId);
  1300. log.info("type:{}", type);
  1301. //根据实例ID获取表单数据
  1302. Map data = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  1303. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  1304. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  1305. log.info("data:{}", data);
  1306. //把文件下载到本地路径 ,并获取到文档ID
  1307. List<String> documentId = new ArrayList<>();
  1308. documentId = createbyMoBan(formInstanceId);
  1309. //定义参数 创建合同草稿
  1310. JSONObject obj = new JSONObject();
  1311. obj.put("subject", data.get(getCust(type, "subject")).toString());//合同名称
  1312. obj.put("creatorName", data.get(getCust(type, "creatorName")).toString());//发起人姓名
  1313. obj.put("creatorContact", data.get(getCust(type, "creatorContact")).toString());//发起人联系方式
  1314. obj.put("sn", data.get(getCust(type, "sn")));//合同编号流水号
  1315. obj.put("tenantName", "北京领语堂科技发展有限公司");//发起方公司名称
  1316. // obj.put("tenantName", data.get(getCust(type, "tenantName")));//发起方公司名称
  1317. // obj.put("categoryId", data.get(getCust(type, "categoryId")));//业务分类Id data.get("textField_lvm5xmqe")
  1318. obj.put("categoryId", "2741593310334300984");//业务分类Id data.get("textField_lvm5xmqe")
  1319. obj.put("send", true);
  1320. if (documentId != null) {
  1321. obj.put("documents", documentId);//文档ID
  1322. }
  1323. JSONArray array = new JSONArray();
  1324. array.add(getCompASignatory(data.get(getCust(type, "sealId")).toString()));
  1325. obj.put("signatories", array);
  1326. //1.调用创建合同草稿方法
  1327. JSONObject draft = qysService.createDraft(obj);
  1328. if (draft != null) {
  1329. String contractId = draft.getString("contractId");
  1330. if (contractId != "") {
  1331. //发起合同
  1332. String sc = getCust(type, "sn");//合同id字段
  1333. String sc_values = data.get(getCust(type, "sn")).toString();//合同id字段的值
  1334. String fd = getCust(type, "contractId");//字段名称
  1335. ydClient.operateData(YDParam.builder()
  1336. .formUuid(type)
  1337. .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, sc_values)))
  1338. .formDataJson(JSONObject.toJSONString(UtilMap.map(fd, contractId)))
  1339. .build(), YDConf.FORM_OPERATION.upsert);
  1340. // JSONObject senddata = qysService.send(contractId, data.get(getCust(type, "tenantName")).toString());
  1341. // System.out.println("senddata:" + senddata);
  1342. }
  1343. }
  1344. return McR.success();
  1345. }
  1346. private List<String> createbyMoBan( String formInstanceId) {
  1347. Map<String, Object> data = new HashMap<>();
  1348. data.put("templateId", "2758656747503223510");
  1349. Map data1 = (Map) ydClient.queryData(YDParam.builder().formInstId(formInstanceId)
  1350. .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
  1351. .userId(ddConf.getOperator()).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  1352. String title = String.valueOf(data1.get("textField_ltrzli9n"));//发文公司
  1353. String fwgs = String.valueOf(data1.get("textField_mayy2yf8"));//发文公司
  1354. String fzf = String.valueOf(data1.get("textField_lxa4w5uh"));//发子方
  1355. String dz = String.valueOf(data1.get("textField_lxa4w5uc"));//代字
  1356. String sxh = String.valueOf(data1.get("textField_lxa4w5ud"));//红头文件编号
  1357. String syqy = String.valueOf(data1.get("textField_lxa4w5ub"));//适用区域
  1358. String cpx = String.valueOf(data1.get("textField_lxa4w5uf"));//产品线
  1359. String dtj = String.valueOf(data1.get("selectField_lxa4w5ue"));//定调价
  1360. long timestamp = (long) data1.get("dateField_m0wel9k2");//实施日期
  1361. // long timestamp = Long.parseLong("1747893049582");
  1362. // 创建 SimpleDateFormat 对象来定义输出日期的格式
  1363. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1364. // 将时间戳转换为 Date 对象
  1365. Date date = new Date(timestamp);
  1366. // 使用 SimpleDateFormat 格式化 Date 对象为所需的日期格式
  1367. String ssrq = sdf.format(date);//申请执行日期
  1368. List<Map> mapList = (List<Map>)data1.get("tableField_ltse8sqr");
  1369. Map<String, Object> params = new HashMap<>();
  1370. if(mapList!=null && mapList.size()>0){
  1371. List<Map> bg = new ArrayList<>();
  1372. for (int i = 0; i <mapList.size(); i++) {
  1373. Map map = mapList.get(i);
  1374. String kcjdxua = map.get("textField_luhyit7r") != null ? String.valueOf(map.get("textField_luhyit7r")) : "";//课时阶段名称
  1375. String zkss = map.get("numberField_ltse8sqv") != null ? String.valueOf(map.get("numberField_ltse8sqv")) : "";//总课时数
  1376. String ksfyks = map.get("numberField_ltse8sqw") != null ? String.valueOf(map.get("numberField_ltse8sqw")) : "";//课时费单价
  1377. String ksfy = map.get("numberField_ltse8sqx") != null ? String.valueOf(map.get("numberField_ltse8sqx")) : "";//课时费
  1378. String sf = map.get("numberField_ltse8sqy") != null ? String.valueOf(map.get("numberField_ltse8sqy")) : "";//教辅书费
  1379. String byfprekkqjrbtxyn = map.get("numberField_ltse8sqz") != null ? String.valueOf(map.get("numberField_ltse8sqz")) : "";//其他费用
  1380. String zj = map.get("numberField_ltse8sr0") != null ? String.valueOf(map.get("numberField_ltse8sr0")) : "";//总价
  1381. Map table1 = new HashMap<>();
  1382. table1.put("kcjdxua", kcjdxua);
  1383. table1.put("zkss", zkss);
  1384. table1.put("ksfyks", ksfyks);
  1385. table1.put("ksfy", ksfy);
  1386. table1.put("sf", sf);
  1387. table1.put("byfprekkqjrbtxyn",byfprekkqjrbtxyn);
  1388. table1.put("zj", zj);
  1389. bg.add(table1);
  1390. params.put("bg",JSONObject.toJSONString(bg));
  1391. }
  1392. }
  1393. params.put("fwgs", fwgs);
  1394. params.put("fzf", fzf);
  1395. params.put("dz", dz);
  1396. params.put("sxh", sxh);
  1397. params.put("syqy", syqy);
  1398. params.put("cpx", cpx);
  1399. params.put("dtj", dtj);
  1400. params.put("ssrq", ssrq);
  1401. data.put("title", title);
  1402. data.put("params", JSONObject.toJSONString(params));
  1403. JSONObject draft = null;
  1404. List<String> resultList = new ArrayList<>();
  1405. try {
  1406. draft = QYSService.createbyMoban(data);
  1407. if (draft != null) {
  1408. resultList.add(draft.getString("documentId"));
  1409. }
  1410. } catch (Exception e) {
  1411. e.printStackTrace();
  1412. }
  1413. return resultList;
  1414. }
  1415. // @Override
  1416. // public McR appointurldownload(String contractId) throws Exception {
  1417. // try {
  1418. // log.info("获取预签署地址 {}", contractId);
  1419. // JSONObject urlR = qysService.appointurldownload(contractId);
  1420. // String presignUrl = urlR.getString("presignUrl");
  1421. // if (!QYS_SUCCESS_CODE.equals(urlR.getString("code"))) {
  1422. // return McR.error(urlR.getString("code"), urlR.getString("message"));
  1423. // } else {
  1424. // return McR.success(presignUrl);
  1425. // }
  1426. // } catch (Exception e) {
  1427. // return McR.error("401", "获取失败");
  1428. // }
  1429. // }
  1430. private Map<String, String> getFormUuid(String type) {
  1431. Map<String, String> map = UtilMap.empty();
  1432. switch (type) {
  1433. case "HT01"://合同
  1434. map.put("type", "FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0");
  1435. map.put("sn", "serialNumberField_ltsbweh2");
  1436. map.put("contractId", "textField_lwah8x72");
  1437. break;
  1438. case "CG11"://框架采购
  1439. map.put("type", "FORM-82E566F8576E44D3AB4B34033A27E76FEB75");
  1440. map.put("sn", "serialNumberField_ltsbweh2");
  1441. map.put("contractId", "textField_lwah8x72");
  1442. break;
  1443. case "HT02"://框架
  1444. map.put("type", "FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO");
  1445. map.put("sn", "serialNumberField_lvz8coae");
  1446. map.put("contractId", "textField_lwg205ug");
  1447. break;
  1448. case "HT03"://租赁
  1449. map.put("type", "FORM-FCDDD18FD63E49B2A4C652FBDB1874F6DPHW");
  1450. map.put("sn", "serialNumberField_ltwcj54l");
  1451. map.put("contractId", "textField_lwg1wbix");
  1452. break;
  1453. case "XZ04"://其他
  1454. map.put("type", "FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK");
  1455. map.put("sn", "serialNumberField_ltwktal5");
  1456. break;
  1457. case "HTSG"://合同/申购
  1458. map.put("type", "FORM-88F968E75CC340EB91B1AC692F4184DC9I9W");
  1459. map.put("sn", "serialNumberField_lu7ycpuc");
  1460. map.put("contractId", "textField_lwg219kl");
  1461. break;
  1462. case "HR09"://hr用印
  1463. map.put("type", "FORM-54972289A0B7416287A9BA44DA6CCDC50QUC");
  1464. map.put("sn", "serialNumberField_lu9euh7o");
  1465. break;
  1466. case "HR18"://新签劳动合同/协议
  1467. map.put("type", "FORM-0D501EF1688247DC932E7784298BD46BRYHC");
  1468. map.put("sn", "serialNumberField_luauhgb5");
  1469. map.put("contractId", "textField_lwg241g6");
  1470. break;
  1471. case "XZ05"://发文审批
  1472. map.put("type", "FORM-3E04D5456B2341CCBA62C955B791CF45IAH1");
  1473. map.put("sn", "serialNumberField_ltwmutno");
  1474. break;
  1475. case "XZ08"://印章授权
  1476. map.put("type", "FORM-87BD065161F84560B999FE94713255E20E6E");
  1477. map.put("sn", "serialNumberField_ltwp3e44");
  1478. break;
  1479. case "XZQYLC"://加盟签约
  1480. map.put("type", "FORM-53A0FB8715FB4378B0708794DFAF7089SV8P");
  1481. map.put("sn", "serialNumberField_ltsaig24");
  1482. break;
  1483. case "HR02"://合同续签
  1484. map.put("type", "FORM-FD73905FB9C24E3A99244F901D9C98AFH4E6");
  1485. map.put("sn", "serialNumberField_lu991xi3");
  1486. map.put("contractId", "textField_lwah8x72");
  1487. break;
  1488. case "HZDTJLC"://hz06
  1489. map.put("type", "FORM-040619C0CE6744EDA4154B4BBBF1843F49JY");
  1490. map.put("sn", "serialNumberField_ltse8sos");
  1491. map.put("contractId", "textField_lwg1z6hk");
  1492. break;
  1493. }
  1494. return map;
  1495. }
  1496. /***
  1497. * 获取对方公司签署对象
  1498. * @param name
  1499. * @return
  1500. */
  1501. private Map getCompSignatory(String name, String contact, String receiverName) {
  1502. JSONObject signatory = new JSONObject();
  1503. signatory.put("tenantType", "COMPANY");
  1504. signatory.put("tenantName", name);//对方(物理)名称
  1505. signatory.put("contact", contact);
  1506. signatory.put("receiverName", receiverName);
  1507. return signatory;
  1508. }
  1509. private Map getPeosignurl(String contractId, String name, String contact) {
  1510. JSONObject signurl = new JSONObject();
  1511. signurl.put("tenantType", "PERSONAL");
  1512. signurl.put("tenantName", name);
  1513. signurl.put("contractId", contractId);
  1514. signurl.put("contact", contact);
  1515. return signurl;
  1516. }
  1517. private Map getComsignurl(String contractId, String name) {
  1518. JSONObject signatory = new JSONObject();
  1519. signatory.put("tenantType", "COMPANY");
  1520. signatory.put("tenantName", name);
  1521. signatory.put("contractId", contractId);
  1522. return signatory;
  1523. }
  1524. //获取物理印章信息
  1525. private Map getAuths(String name, String count) {
  1526. JSONObject auths = new JSONObject();
  1527. auths.put("sealName", name);//印章名称
  1528. auths.put("count", count);//授权数量
  1529. return auths;
  1530. }
  1531. /***
  1532. * 获取我方公司签署对象
  1533. * @param
  1534. * @return
  1535. */
  1536. private Map getCompASignatory(String sealId) {
  1537. JSONObject signatory = new JSONObject();
  1538. ArrayList<Object> actions = new ArrayList<>();
  1539. Map sss = new HashMap<>();
  1540. sss.put("sealId", sealId);
  1541. sss.put("type", "CORPORATE");
  1542. sss.put("serialNo", 1);
  1543. actions.add(sss);
  1544. signatory.put("tenantType", "COMPANY");
  1545. signatory.put("actions", actions);
  1546. return signatory;
  1547. }
  1548. private Map getCompASignatory1() {
  1549. JSONObject signatory = new JSONObject();
  1550. signatory.put("tenantType", "COMPANY");
  1551. return signatory;
  1552. }
  1553. /***
  1554. * 获取个人签署对象
  1555. * @param name
  1556. * @return
  1557. */
  1558. private Map getPeopSignatory(String name, String contact) {
  1559. JSONObject signatory = new JSONObject();
  1560. signatory.put("tenantType", "PERSONAL");
  1561. signatory.put("contact", contact);
  1562. signatory.put("tenantName", name);//对方(个人)名称
  1563. return signatory;
  1564. }
  1565. //根据附件创建合同文档得到文档Id
  1566. public List<String> createbyfile(Map data, String type) throws Exception {
  1567. // String jsonString = data.get("attachmentField_ltsbweir").toString();
  1568. String formuuid ="FORM-B27C1AE7298648F29E836B5FDF469DBDPFCK";//其他用印
  1569. String hrformuuid ="FORM-54972289A0B7416287A9BA44DA6CCDC50QUC";//hr09
  1570. String htformuuid ="FORM-55D56A69CCCE4043A01660C8910E33BAQ4N0";//合同用印
  1571. String kjformuuid ="FORM-5DB656AF0F0E4EFA85A4739D55C23ED85BXO";//框架用印
  1572. String jsonString = "";
  1573. // 根据categoryName的值来决定从data中获取哪个键对应的值
  1574. //其他用印处理附件选择问题
  1575. if (type.equals(formuuid)) {
  1576. String categoryName = String.valueOf(data.get(getCust(formuuid, "categoryName")));
  1577. // String ghl = data.get("selectField_ltwktalx") != null ? data.get("selectField_ltwktalx").toString() : "";
  1578. if ("物理用印外带场景".equals(categoryName) || "物理用印公司用印场景".equals(categoryName) ) {
  1579. jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
  1580. } else {
  1581. jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
  1582. }
  1583. } else if (type.equals(hrformuuid)) {
  1584. String categoryName = String.valueOf(data.get(getCust(hrformuuid, "categoryName")));
  1585. String sfbh = data.get("selectField_lu9euh7u") != null ? data.get("selectField_lu9euh7u").toString() : "";
  1586. if ("内部企业单签".equals(categoryName) && "是".equals(sfbh)) {
  1587. jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
  1588. } else {
  1589. jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
  1590. }
  1591. } else if (type.equals(htformuuid)) {
  1592. // String categoryName = String.valueOf(data.get(getCust(htformuuid, "categoryName")));
  1593. String yycj = data.get("selectField_ltsbwei5") != null ? data.get("selectField_ltsbwei5").toString() : "";
  1594. if ("我方电子对方物理用印".equals(yycj)) {
  1595. jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
  1596. } else {
  1597. jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
  1598. }
  1599. } else if (type.equals(kjformuuid)) {
  1600. // String categoryName = String.valueOf(data.get(getCust(htformuuid, "categoryName")));
  1601. String yycj = data.get("selectField_lvz8cob7") != null ? data.get("selectField_lvz8cob7").toString() : "";
  1602. if ("我方电子对方物理用印".equals(yycj)) {
  1603. jsonString = data.get(getCust(type, "fujian1")) != null ? data.get(getCust(type, "fujian1")).toString() : "";
  1604. } else {
  1605. jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
  1606. }
  1607. } else {
  1608. jsonString = data.get(getCust(type, "fujian")) != null ? data.get(getCust(type, "fujian")).toString() : "";
  1609. }
  1610. JSONArray jsonArray = JSONObject.parseArray(jsonString);
  1611. List<String> resultList = new ArrayList<>();
  1612. if (jsonArray != null) {
  1613. for (int i = 0; i < jsonArray.size(); i++) {
  1614. // 将元素转换为JSONObject
  1615. JSONObject jsonObj = jsonArray.getJSONObject(i);
  1616. String fj_url = ydClient.convertTemporaryUrl(jsonObj.getString("url"));
  1617. String fj_name = jsonObj.getString("name");
  1618. String localFilePath = "/home/file/" + fj_name;
  1619. // String localFilePath = "C:\\Users\\EDY\\Downloads\\" + fj_name;
  1620. //下载文件到本地
  1621. RsQysServiceImpl.downloadFile1(fj_url, localFilePath);
  1622. Map<String, Object> data1 = new HashMap<>();
  1623. data1.put("file", FileUtil.file("/home/file/" + fj_name));
  1624. // data1.put("file", FileUtil.file("C:\\Users\\EDY\\Downloads\\" + fj_name));
  1625. data1.put("title", FileUtil.mainName(fj_name));
  1626. data1.put("fileType", FileUtil.extName(fj_name));// 获取文件格式(通过文件名)
  1627. try {
  1628. log.info("2. 根据文件类型创建合同文档");
  1629. JSONObject draft = qysService.createbyfile(data1);
  1630. if (draft != null) {
  1631. resultList.add(draft.getJSONObject("result").getString("documentId"));
  1632. }
  1633. } catch (Exception e) {
  1634. e.printStackTrace();
  1635. }
  1636. }
  1637. }
  1638. return resultList;
  1639. }
  1640. public static void downloadFile1(String downloadUrl, String path) {
  1641. InputStream inputStream = null;
  1642. OutputStream outputStream = null;
  1643. try {
  1644. URL url = new URL(downloadUrl);
  1645. //这里没有使用 封装后的ResponseEntity 就是也是因为这里不适合一次性的拿到结果,放不下content,会造成内存溢出
  1646. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  1647. //使用bufferedInputStream 缓存流的方式来获取下载文件,不然大文件会出现内存溢出的情况
  1648. inputStream = new BufferedInputStream(connection.getInputStream());
  1649. File file = new File(path);
  1650. if (file.exists()) {
  1651. file.delete();
  1652. }
  1653. // 创建目录和父文件夹
  1654. FileUtils.forceMkdirParent(file);
  1655. outputStream = new FileOutputStream(file);
  1656. //这里也很关键每次读取的大小为5M 不一次性读取完
  1657. byte[] buffer = new byte[1024 * 1024 * 5];// 5MB
  1658. int len = 0;
  1659. while ((len = inputStream.read(buffer)) != -1) {
  1660. outputStream.write(buffer, 0, len);
  1661. }
  1662. connection.disconnect();
  1663. } catch (Exception e) {
  1664. e.printStackTrace();
  1665. } finally {
  1666. IOUtils.closeQuietly(outputStream);
  1667. IOUtils.closeQuietly(inputStream);
  1668. }
  1669. }
  1670. }