ReimbursementService.java 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260
  1. package net.chenlin.dp.modules.api.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.dingtalk.api.DefaultDingTalkClient;
  5. import com.dingtalk.api.DingTalkClient;
  6. import com.dingtalk.api.request.OapiGettokenRequest;
  7. import com.dingtalk.api.request.OapiProcessinstanceCreateRequest;
  8. import com.dingtalk.api.response.OapiGettokenResponse;
  9. import com.dingtalk.api.response.OapiProcessinstanceCreateResponse;
  10. import com.mysql.cj.util.StringUtils;
  11. import com.taobao.api.ApiException;
  12. import net.chenlin.dp.common.openapi4j.examples.voucher.VoucherAdd;
  13. import net.chenlin.dp.common.openapi4j.exception.OpenAPIException;
  14. import net.chenlin.dp.common.openapi4j.service.PersonService;
  15. import net.chenlin.dp.common.openapi4j.util.PropUtil;
  16. import net.chenlin.dp.common.utils.JSONUtils;
  17. import net.chenlin.dp.common.utils.SpringContextUtils;
  18. import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
  19. import net.chenlin.dp.modules.sys.entity.SyViewEntity;
  20. import net.chenlin.dp.modules.sys.service.testU8Service;
  21. import net.sf.json.JSONArray;
  22. import org.springframework.boot.configurationprocessor.json.JSONException;
  23. import java.math.BigDecimal;
  24. import java.util.*;
  25. public class ReimbursementService {
  26. private testU8Service u8Service= SpringContextUtils.getBean("testU8Service",testU8Service.class);
  27. public static String gettoken = "";
  28. /**
  29. * (不再使用)
  30. * @throws Exception
  31. */
  32. public static void autoReimbursement() throws Exception {
  33. DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
  34. Properties prop = PropUtil.getProperties("/config.properties");
  35. String PROC = prop.getProperty("bx_process_code");
  36. List<String> list = dingdingOpenInterface.getOrderIdList(PROC);
  37. String job_number = "";//工号
  38. String work_place = "";//办公地(潍坊对03账套 昆山对01账套)
  39. String dept_code = ""; //部门编码
  40. String account_code = ""; //科目编码
  41. String type = ""; //数据源账套 1昆山,3潍坊
  42. // List<SyViewEntity> listId = u8Service.selectView("报销单");
  43. if(list.size() > 0){
  44. outCycle:for(String o:list){
  45. // if(listId.size() > 0){
  46. // for(SyViewEntity en:listId){
  47. // if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
  48. // continue outCycle;
  49. // }
  50. // }
  51. // }
  52. Map<String,Object> map = dingdingOpenInterface.getOrderDetails("01dc1264-85ab-41a5-8e15-a0905268e1b3");
  53. // Map<String,Object> map = dingdingOpenInterface.getOrderDetails("435bfa21-2366-43e3-b71a-041485d51a31");
  54. // Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
  55. if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
  56. continue;
  57. }
  58. // System.out.println(map);
  59. Map<String,Object> map1 = tableToMap2(map);
  60. // System.out.println(map1);
  61. Map<String,Object> mapPerson = dingdingOpenInterface.getViewByUserId(map.get("originator_userid").toString());
  62. if(mapPerson !=null ){
  63. job_number = mapPerson.get("job_number").toString();
  64. work_place = mapPerson.get("work_place").toString();
  65. if(StringUtils.isNullOrEmpty(work_place)){
  66. continue;
  67. }
  68. if (work_place.equals("昆山")){
  69. dept_code = getPerson(job_number,"1");
  70. type = "1";
  71. // System.out.println(dept_code);
  72. System.out.println(dept_code);
  73. }else if(work_place.equals("潍坊")){
  74. dept_code = getPerson(job_number,"3");
  75. type = "3";
  76. }else{
  77. continue;
  78. }
  79. }else{
  80. continue;
  81. }
  82. if(map.get("originator_dept_name") == null){
  83. continue;
  84. }
  85. String mess = null;
  86. SyViewEntity entity = new SyViewEntity();
  87. if(map.get("originator_dept_name").toString().equals("营销设计中心-设计部") ||
  88. map.get("originator_dept_name").toString().equals("营销设计中心-项目部") ||
  89. map.get("originator_dept_name").toString().equals("营销设计中心-市场部")){
  90. map1.put("item_class","00");//项目大类 --研发项目
  91. map1.put("item_id","YFYYYY00001");//项目名称 --项目研发-公共
  92. }
  93. if(map1.containsKey("差旅报销") && map1.get("差旅报销")!=null && Double.valueOf(map1.get("差旅报销").toString()) > 0){
  94. account_code = getDeptCode(map.get("originator_dept_name").toString(),"差旅报销");
  95. if(StringUtils.isNullOrEmpty(account_code) || account_code == null || account_code.equals("null")){
  96. continue;
  97. }
  98. map1.put("abstract","差旅报销");
  99. map1.put("naturalCurrency",map1.get("差旅报销"));
  100. map1.put("account_code",account_code);//科目编码
  101. map1.put("dept_code",dept_code);//部门编码
  102. map1.put("job_number",job_number);//人员编码
  103. entity.setParType("差旅报销");
  104. // System.out.println("============================差旅报销"+account_code);
  105. // System.out.println(map1);
  106. try {
  107. // mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"差旅",type);
  108. }catch (Exception e){
  109. mess = e.getMessage();
  110. }
  111. }
  112. if(map1.containsKey("私车公用报销") && map1.get("私车公用报销")!=null && Double.valueOf(map1.get("私车公用报销").toString()) > 0){
  113. account_code = getDeptCode(map.get("originator_dept_name").toString(),"私车公用报销");
  114. if(StringUtils.isNullOrEmpty(account_code) || account_code == null || account_code.equals("null")){
  115. continue;
  116. }
  117. map1.put("abstract","私车公用报销");
  118. map1.put("naturalCurrency",map1.get("私车公用报销"));
  119. map1.put("account_code",account_code);//科目编码
  120. map1.put("dept_code",dept_code);//部门编码
  121. map1.put("job_number",job_number);//人员编码
  122. entity.setParType("私车公用报销");
  123. // System.out.println("============================");
  124. // System.out.println(map1);
  125. // System.out.println("============================私车公用报销"+account_code);
  126. try {
  127. // mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"私车公用",type);
  128. }catch (Exception e){
  129. mess = e.getMessage();
  130. }
  131. }
  132. if(map1.containsKey("其他报销科目") && map1.get("其他报销科目")!=null && Double.valueOf(map1.get("其他报销科目").toString()) > 0){
  133. account_code = getDeptCode(map.get("originator_dept_name").toString(),"其他报销科目");
  134. if(StringUtils.isNullOrEmpty(account_code) || account_code == null || account_code.equals("null")){
  135. continue;
  136. }
  137. map1.put("abstract","其他报销科目");
  138. map1.put("naturalCurrency",map1.get("其他报销科目"));
  139. map1.put("account_code",account_code);//科目编码
  140. map1.put("dept_code",dept_code);//部门编码
  141. map1.put("job_number",job_number);//人员编码
  142. entity.setParType("其他报销科目");
  143. // System.out.println("============================其他报销科目"+account_code+"===="+map.get("originator_dept_name").toString());
  144. // System.out.println("============================");
  145. // System.out.println(map1);
  146. try {
  147. mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"其他",type,"");
  148. }catch (Exception e){
  149. mess = e.getMessage();
  150. }
  151. }
  152. entity.setOaId(o);
  153. entity.setDeptName(map.get("originator_dept_name").toString());
  154. entity.setDeptCode(dept_code);
  155. entity.setAccountCode(account_code);
  156. entity.setJobNumber(job_number);
  157. entity.setTableType("报销单");
  158. entity.setSyMessage(mess);
  159. try {
  160. // u8Service.saveSyView(entity);
  161. }catch (Exception e){
  162. System.out.println("异常1");
  163. }
  164. }
  165. }
  166. }
  167. /**
  168. * 同步银行回单至u8凭证
  169. * @throws Exception
  170. * @param st js:江苏,sd:山东
  171. */
  172. public void autoReimbursementNew(String st,String upTime) throws Exception {
  173. DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
  174. Properties prop = PropUtil.getProperties("/config.properties");
  175. String PROC = prop.getProperty("yhhd_process_code");
  176. if(st.equals("sd")){
  177. PROC = prop.getProperty("yhhdsd_process_code");
  178. }
  179. // List<String> list = dingdingOpenInterface.getOrderIdList(PROC);
  180. // List<String> list = dingdingOpenInterface.getOrderIdList2("PROC-C1EBBC4A-AA0D-4101-BEE8-8BFA5FEFABD8",-5);
  181. List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-31);
  182. // System.out.println(list);
  183. String job_number = "";//工号
  184. String work_place = "";//办公地(潍坊对03账套 昆山对01账套)
  185. String dept_code = ""; //部门编码
  186. String type = ""; //数据源账套 1昆山,3潍坊
  187. List<SyViewEntity> listId = u8Service.selectViewBy31("银行凭证至U8");
  188. if(list.size() > 0){
  189. outCycle:for(String o:list){
  190. if(listId.size() > 0){
  191. for(SyViewEntity en:listId){
  192. if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
  193. continue outCycle;
  194. }
  195. }
  196. }
  197. // Map<String,Object> map = dingdingOpenInterface.getOrderDetails("57942341-3589-43d3-9984-9a786dc9f97d");//
  198. Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);//
  199. if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
  200. continue;
  201. }
  202. Map<String,Object> map1 = tableToMap4(map);
  203. Map<String,Object> mapPerson = dingdingOpenInterface.getViewByUserId((String) map1.get("申请人编码"));
  204. if(mapPerson !=null ){
  205. job_number = mapPerson.get("job_number").toString();//"CHK2019002";
  206. work_place = mapPerson.get("work_place").toString();
  207. if(StringUtils.isNullOrEmpty(work_place)){
  208. continue;
  209. }
  210. if (work_place.equals("昆山")){
  211. dept_code = getPerson(job_number,"1");
  212. type = "1";
  213. }else if(work_place.equals("潍坊")){
  214. dept_code = getPerson(job_number,"3");
  215. type = "3";
  216. }else{
  217. continue;
  218. }
  219. }else{
  220. continue;
  221. }
  222. if(map1.get("申请人所属部门") == null){
  223. continue;
  224. }
  225. //如果是以下部门,则需要填写项目大类和项目名称
  226. if(map1.get("申请人所属部门").toString().equals("营销设计中心-设计部") ||
  227. map1.get("申请人所属部门").toString().equals("营销设计中心-项目部") ||
  228. map1.get("申请人所属部门").toString().equals("营销设计中心-市场部")){
  229. map1.put("item_class","00");//项目大类 --研发项目
  230. map1.put("item_id","YFYYYY00001");//项目名称 --项目研发-公共
  231. }
  232. if(map1.get("单据类型") == null){//备用金申请、报销申请
  233. continue;
  234. }
  235. String mess = null;
  236. map1.put("dept_code",dept_code);//部门编码
  237. map1.put("job_number",job_number);//人员编码
  238. SyViewEntity entity = new SyViewEntity();
  239. entity.setOaId(o);
  240. entity.setDeptName(map1.get("申请人所属部门").toString());
  241. entity.setJobNumber(job_number);
  242. entity.setTableType("银行凭证至U8");
  243. if(map1.get("单据类型").toString().equals("备用金申请")){
  244. entity.setParType("备用金至U8凭证");
  245. map1.put("account_code_jf","122102");//科目编码(借方)
  246. map1.put("account_code_df","10020101");//科目编码(贷方)
  247. JSONArray jsonArray2 = JSONArray.fromObject(map1.get("备用金申请").toString());
  248. if(jsonArray2.size() == 0){
  249. continue ;
  250. }
  251. net.sf.json.JSONObject object1 = jsonArray2.getJSONObject(0);
  252. map1.put("abstract",object1.get("申请事由"));
  253. map1.put("naturalCurrency",object1.get("申请金额"));
  254. try {
  255. mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"备用金",type,upTime);
  256. }catch (Exception e){
  257. mess = e.getMessage();
  258. }
  259. }else if(map1.get("单据类型").toString().equals("报销申请")){
  260. entity.setParType("报销申请至U8");
  261. try {
  262. mess = VoucherAdd.addVoucherNew(map1,map.get("business_id").toString()+"报销申请",type,upTime);
  263. }catch (Exception e){
  264. mess = e.getMessage();
  265. }
  266. }else{
  267. continue ;
  268. }
  269. entity.setSyMessage(mess);
  270. u8Service.saveSyView(entity);
  271. }
  272. }
  273. }
  274. /**
  275. * 同步报销单至银行凭证
  276. * @throws Exception
  277. */
  278. public void autoOABankReceipt() throws Exception {
  279. DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
  280. Properties prop = PropUtil.getProperties("/config.properties");
  281. String PROC = prop.getProperty("bx_process_code");//报销单
  282. String YHHD = prop.getProperty("yhhd_process_code");//银行回单(江苏)
  283. String YHHDSD = prop.getProperty("yhhdsd_process_code");//银行回单(山东)
  284. String agentid = prop.getProperty("agentid");
  285. String deptid = prop.getProperty("deptid");
  286. String userid = prop.getProperty("userid");
  287. List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-20);
  288. // List<String> list = dingdingOpenInterface.getOrderIdList("PROC-DD8FF68E-B90E-4885-8C17-F69E53BE5C81");
  289. System.out.println("报销申请:"+list);
  290. List<SyViewEntity> listIdError = u8Service.selectViewByError("报销单至银行凭证");
  291. List<SyViewEntity> listIdTrue = u8Service.selectViewByTrue("报销单至银行凭证");
  292. if(list.size() > 0){
  293. getToken();
  294. outCycle:for(String o:list){
  295. //获取当日同步失败的单据,控制当日不再同步
  296. if(listIdError.size() > 0){
  297. for(SyViewEntity en:listIdError){
  298. if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
  299. continue outCycle;
  300. }
  301. }
  302. }
  303. //获取10天内同步成功的数据,控制不再同步
  304. if(listIdTrue.size() > 0){
  305. for(SyViewEntity en:listIdTrue){
  306. if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
  307. continue outCycle;
  308. }
  309. }
  310. }
  311. // Map<String,Object> map = dingdingOpenInterface.getOrderDetails("e12ca8e8-e783-4652-b68e-e12648ed00c3");
  312. Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
  313. if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
  314. continue;
  315. }
  316. SyViewEntity entity = new SyViewEntity();
  317. Map<String,Object> newMap = tableToMap2(map);
  318. Map<String,Object> mapPerson = dingdingOpenInterface.getViewByUserId(map.get("originator_userid").toString());
  319. String work_place = null;
  320. if(mapPerson !=null ){
  321. work_place = mapPerson.get("work_place").toString();
  322. if(StringUtils.isNullOrEmpty(work_place)){
  323. continue;
  324. }
  325. if (!work_place.equals("昆山") && !work_place.equals("潍坊")){
  326. continue;
  327. }
  328. }else{
  329. continue;
  330. }
  331. DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
  332. OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();
  333. req.setAgentId(Long.valueOf(agentid));
  334. // req.setProcessCode("PROC-C1EBBC4A-AA0D-4101-BEE8-8BFA5FEFABD8");//银行回单TEST
  335. if (work_place.equals("昆山")){
  336. req.setProcessCode(YHHD);//银行回单(江苏)
  337. }else{
  338. req.setProcessCode(YHHDSD);//银行回单(山东)
  339. }
  340. req.setOriginatorUserId(userid);
  341. req.setDeptId(Long.valueOf(deptid));
  342. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> formComponentValueVoList = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
  343. //申请人编码
  344. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  345. formComponentValueV5.setName("申请人编码");
  346. formComponentValueV5.setValue(map.get("originator_userid").toString());
  347. formComponentValueVoList.add(formComponentValueV5);
  348. //申请人名称
  349. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  350. formComponentValueV6.setName("申请人");
  351. formComponentValueV6.setValue(map.get("title").toString());
  352. formComponentValueVoList.add(formComponentValueV6);
  353. //所属部门
  354. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  355. formComponentValueV7.setName("申请人所属部门");
  356. formComponentValueV7.setValue(map.get("originator_dept_name").toString());
  357. formComponentValueVoList.add(formComponentValueV7);
  358. //单据类型(报销申请、备用金申请)
  359. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  360. formComponentValueV8.setName("单据类型");
  361. formComponentValueV8.setValue("报销申请");
  362. formComponentValueVoList.add(formComponentValueV8);
  363. //申请时间
  364. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  365. formComponentValueV9.setName("申请时间");//create_time
  366. formComponentValueV9.setValue(map.get("create_time").toString());
  367. formComponentValueVoList.add(formComponentValueV9);
  368. //联系人明细
  369. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo1 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  370. OapiProcessinstanceCreateRequest.FormComponentValueVo Item1 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  371. Item1.setName("户名");
  372. if(newMap.get("户名") == null){
  373. continue ;
  374. }
  375. Item1.setValue(newMap.get("户名").toString());
  376. OapiProcessinstanceCreateRequest.FormComponentValueVo Item2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  377. Item2.setName("账号");
  378. if(newMap.get("账号") != null){
  379. Item2.setValue(newMap.get("账号").toString());
  380. }else{
  381. Item2.setValue("空");
  382. }
  383. OapiProcessinstanceCreateRequest.FormComponentValueVo Item3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  384. Item3.setName("开户银行");
  385. if(newMap.get("开户银行") != null){
  386. Item3.setValue(newMap.get("开户银行").toString());
  387. }else{
  388. Item3.setValue("空");
  389. }
  390. formComponentValueVo1.setName("收款人");
  391. formComponentValueVo1.setValue(JSON.toJSONString(Arrays.asList(Arrays.asList(Item1, Item2, Item3))));
  392. formComponentValueVoList.add(formComponentValueVo1);
  393. //差旅报销明细
  394. if(newMap.get("差旅报销") != null && JSONArray.fromObject(newMap.get("差旅报销").toString()).size() > 0){
  395. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  396. List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList2 = new ArrayList<>();
  397. JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("差旅报销").toString());
  398. for (int j = 0; j < jsonArray1.size(); j++) {
  399. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
  400. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  401. if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
  402. OapiProcessinstanceCreateRequest.FormComponentValueVo Item21 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  403. JSONArray jsonArray = new JSONArray();
  404. jsonArray.add(object1.get("发生日期").toString());
  405. jsonArray.add(object1.get("结束日期").toString());
  406. Item21.setName("[\"发生日期\",\"结束日期\"]");
  407. Item21.setValue(jsonArray.toString());
  408. // Item21.setValue("[\"2019-02-19\",\"2019-02-25\"]");
  409. view.add(Item21);
  410. }else{
  411. continue ;
  412. }
  413. if(object1.get("报销科目") != null) {
  414. OapiProcessinstanceCreateRequest.FormComponentValueVo Item22 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  415. Item22.setName("报销科目");
  416. Item22.setValue(object1.get("报销科目").toString());
  417. view.add(Item22);
  418. }else{
  419. continue ;
  420. }
  421. if(object1.get("名称") != null && object1.get("名称") != "") {
  422. OapiProcessinstanceCreateRequest.FormComponentValueVo Item23 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  423. Item23.setName("名称");
  424. Item23.setValue(object1.get("名称").toString());
  425. view.add(Item23);
  426. }
  427. if(object1.get("次数") != null && object1.get("次数") != "") {
  428. OapiProcessinstanceCreateRequest.FormComponentValueVo Item24 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  429. Item24.setName("次数");
  430. Item24.setValue(object1.get("次数").toString());
  431. view.add(Item24);
  432. }
  433. if(object1.get("未税金额") != null && object1.get("未税金额") != "") {
  434. OapiProcessinstanceCreateRequest.FormComponentValueVo Item25 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  435. Item25.setName("未税金额");
  436. Item25.setValue(object1.get("未税金额").toString());
  437. view.add(Item25);
  438. }else{
  439. continue ;
  440. }
  441. if(object1.get("税额") != null && object1.get("税额") != "") {
  442. OapiProcessinstanceCreateRequest.FormComponentValueVo Item26 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  443. Item26.setName("税额");
  444. Item26.setValue(object1.get("税额").toString());
  445. view.add(Item26);
  446. }
  447. if(object1.get("费用说明") != null && object1.get("费用说明") != "") {
  448. OapiProcessinstanceCreateRequest.FormComponentValueVo Item27 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  449. Item27.setName("费用说明");
  450. Item27.setValue(object1.get("费用说明").toString());
  451. view.add(Item27);
  452. }
  453. viewList2.add(view);
  454. }
  455. formComponentValueVo2.setName("差旅报销");
  456. formComponentValueVo2.setValue(JSON.toJSONString(viewList2));
  457. formComponentValueVoList.add(formComponentValueVo2);
  458. }
  459. //私车公用报销明细
  460. if(newMap.get("私车公用报销") != null && JSONArray.fromObject(newMap.get("私车公用报销").toString()).size() > 0) {
  461. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  462. List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList3 = new ArrayList<>();
  463. JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("私车公用报销").toString());
  464. for (int j = 0; j < jsonArray1.size(); j++) {
  465. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
  466. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  467. if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
  468. OapiProcessinstanceCreateRequest.FormComponentValueVo Item31 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  469. // Item31.setName("[\"发生日期\",\"结束日期\"]");
  470. // Item31.setValue("[\"2019-02-19\",\"2019-02-25\"]");
  471. // view.add(Item31);
  472. JSONArray jsonArray = new JSONArray();
  473. jsonArray.add(object1.get("发生日期").toString());
  474. jsonArray.add(object1.get("结束日期").toString());
  475. Item31.setName("[\"发生日期\",\"结束日期\"]");
  476. Item31.setValue(jsonArray.toString());
  477. view.add(Item31);
  478. }else{
  479. continue ;
  480. }
  481. if(object1.get("报销科目") != null) {
  482. OapiProcessinstanceCreateRequest.FormComponentValueVo Item32 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  483. Item32.setName("报销科目");
  484. Item32.setValue(object1.get("报销科目").toString());
  485. view.add(Item32);
  486. }else{
  487. continue ;
  488. }
  489. if(object1.get("行程") != null) {
  490. OapiProcessinstanceCreateRequest.FormComponentValueVo Item33 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  491. Item33.setName("行程");
  492. Item33.setValue(object1.get("行程").toString());
  493. view.add(Item33);
  494. }
  495. if(object1.get("次数") != null) {
  496. OapiProcessinstanceCreateRequest.FormComponentValueVo Item34 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  497. Item34.setName("次数");
  498. Item34.setValue(object1.get("次数").toString());
  499. view.add(Item34);
  500. }
  501. if(object1.get("未税金额") != null) {
  502. OapiProcessinstanceCreateRequest.FormComponentValueVo Item35 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  503. Item35.setName("未税金额");
  504. Item35.setValue(object1.get("未税金额").toString());
  505. view.add(Item35);
  506. }else{
  507. continue ;
  508. }
  509. if(object1.get("税额") != null) {
  510. OapiProcessinstanceCreateRequest.FormComponentValueVo Item36 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  511. Item36.setName("税额");
  512. Item36.setValue(object1.get("税额").toString());
  513. view.add(Item36);
  514. }
  515. if(object1.get("费用说明") != null) {
  516. OapiProcessinstanceCreateRequest.FormComponentValueVo Item37 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  517. Item37.setName("费用说明");
  518. Item37.setValue(object1.get("费用说明").toString());
  519. view.add(Item37);
  520. }
  521. // viewList3.add(Arrays.asList(Item31, Item32, Item33, Item34, Item35, Item36, Item37));
  522. viewList3.add(view);
  523. }
  524. formComponentValueVo3.setName("私车公用报销");
  525. formComponentValueVo3.setValue(JSON.toJSONString(viewList3));
  526. formComponentValueVoList.add(formComponentValueVo3);
  527. }
  528. //其他报销科目明细
  529. if(newMap.get("其他报销科目") != null && JSONArray.fromObject(newMap.get("其他报销科目").toString()).size() > 0) {
  530. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  531. List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList4 = new ArrayList<>();
  532. JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("其他报销科目").toString());
  533. for (int j = 0; j < jsonArray1.size(); j++) {
  534. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
  535. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  536. if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
  537. OapiProcessinstanceCreateRequest.FormComponentValueVo Item41 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  538. // Item41.setName("[\"发生日期\",\"结束日期\"]");
  539. // Item41.setValue("[\"2019-02-19\"");
  540. // view.add(Item41);
  541. JSONArray jsonArray = new JSONArray();
  542. jsonArray.add(object1.get("发生日期").toString());
  543. jsonArray.add(object1.get("结束日期").toString());
  544. Item41.setName("[\"发生日期\",\"结束日期\"]");
  545. Item41.setValue(jsonArray.toString());
  546. view.add(Item41);
  547. }else{
  548. continue ;
  549. }
  550. if(object1.get("报销科目") != null) {
  551. OapiProcessinstanceCreateRequest.FormComponentValueVo Item42 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  552. Item42.setName("报销科目");
  553. Item42.setValue(object1.get("报销科目").toString());
  554. view.add(Item42);
  555. }else{
  556. continue ;
  557. }
  558. if(object1.get("名称") != null) {
  559. OapiProcessinstanceCreateRequest.FormComponentValueVo Item43 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  560. Item43.setName("名称");
  561. Item43.setValue(object1.get("名称").toString());
  562. view.add(Item43);
  563. }
  564. if(object1.get("单位") != null) {
  565. OapiProcessinstanceCreateRequest.FormComponentValueVo Item44 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  566. Item44.setName("单位");
  567. Item44.setValue(object1.get("单位").toString());
  568. view.add(Item44);
  569. }
  570. if(object1.get("数量") != null) {
  571. OapiProcessinstanceCreateRequest.FormComponentValueVo Item48 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  572. Item48.setName("数量");
  573. Item48.setValue(object1.get("数量").toString());
  574. view.add(Item48);
  575. }
  576. if(object1.get("未税金额") != null) {
  577. OapiProcessinstanceCreateRequest.FormComponentValueVo Item45 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  578. Item45.setName("未税金额");
  579. Item45.setValue(object1.get("未税金额").toString());
  580. view.add(Item45);
  581. }else{
  582. continue ;
  583. }
  584. if(object1.get("税额") != null) {
  585. OapiProcessinstanceCreateRequest.FormComponentValueVo Item46 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  586. Item46.setName("税额");
  587. Item46.setValue(object1.get("税额").toString());
  588. view.add(Item46);
  589. }
  590. if(object1.get("费用说明") != null) {
  591. OapiProcessinstanceCreateRequest.FormComponentValueVo Item47 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  592. Item47.setName("费用说明");
  593. Item47.setValue(object1.get("费用说明").toString());
  594. view.add(Item47);
  595. }
  596. // viewList4.add(Arrays.asList(Item41, Item42, Item43, Item44, Item48, Item45, Item46, Item47));
  597. viewList4.add(view);
  598. }
  599. if(viewList4.size() > 0){
  600. formComponentValueVo4.setName("其他报销科目");
  601. formComponentValueVo4.setValue(JSON.toJSONString(viewList4));
  602. formComponentValueVoList.add(formComponentValueVo4);
  603. }
  604. }
  605. req.setFormComponentValues(formComponentValueVoList);
  606. String useridshenh = prop.getProperty("shenhe_userid");
  607. if (!useridshenh.equals("")){
  608. List<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo> processInstanceApproverVoList = new ArrayList<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo>();
  609. OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo processInstanceApproverVo = new OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo();
  610. processInstanceApproverVoList.add(processInstanceApproverVo);
  611. processInstanceApproverVo.setTaskActionType("NONE");
  612. processInstanceApproverVo.setUserIds(Arrays.asList(useridshenh));
  613. req.setApproversV2(processInstanceApproverVoList);
  614. }
  615. OapiProcessinstanceCreateResponse rsp = client.execute(req, gettoken);
  616. entity.setOaId(o);
  617. entity.setOaNid(rsp.getProcessInstanceId());
  618. entity.setDeptName(map.get("originator_dept_name").toString());
  619. entity.setJobNumber(map.get("title").toString());
  620. entity.setTableType("报销单至银行凭证");
  621. entity.setSyMessage(rsp.getErrmsg());
  622. if(rsp.isSuccess()){
  623. entity.setSyState("true");
  624. }else{
  625. entity.setSyState("false");
  626. }
  627. try {
  628. u8Service.saveSyView(entity);
  629. }catch (Exception e){
  630. System.out.println("异常2同步报销单至银行凭证");
  631. }
  632. // System.out.println("============"+JSON.toJSONString(rsp));
  633. // System.out.println("============"+JSON.toJSONString(rsp.getErrmsg()));
  634. // System.out.println("============"+JSON.toJSONString(rsp.isSuccess()));
  635. }
  636. }
  637. }
  638. public static Map<String,Object> tableToMap4(Map<String,Object> map1) throws Exception {
  639. List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
  640. Map<String,Object> newMap = new HashMap<String,Object>();
  641. // System.out.println(map1);
  642. for(Map<String, Object> o:listMap){
  643. if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
  644. continue;
  645. }
  646. if(o.get("name").equals("申请人编码") && o.get("value") != null){
  647. newMap.put("申请人编码",o.get("value"));
  648. }
  649. if(o.get("name").equals("申请人所属部门") && o.get("value") != null){
  650. newMap.put("申请人所属部门",o.get("value"));
  651. }
  652. if(o.get("name").equals("申请人") && o.get("value") != null){
  653. newMap.put("申请人",o.get("value"));
  654. }
  655. if(o.get("name").equals("单据类型") && o.get("value") != null){
  656. newMap.put("单据类型",o.get("value"));
  657. }
  658. if(o.get("name").equals("收款人") && o.get("value") != null){
  659. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  660. if(jsonArray.size() > 0){
  661. List<Map<String,Object>> listView = new ArrayList<>();
  662. for(int i=0;i<jsonArray.size();i++){
  663. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  664. if(object.get("rowValue") == null || object.get("rowValue") == ""){
  665. continue;
  666. }
  667. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  668. JSONObject map = new JSONObject();
  669. if(jsonArray1.size() > 0){
  670. for(int j=0;j<jsonArray1.size();j++){
  671. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  672. map.put(object1.get("label").toString(),object1.get("value"));
  673. }
  674. listView.add(map);
  675. }
  676. }
  677. newMap.put("收款人",listView);
  678. }
  679. }
  680. if(o.get("name").equals("备用金申请") && o.get("value") != null){
  681. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  682. if(jsonArray.size() > 0){
  683. List<Map<String,Object>> listView = new ArrayList<>();
  684. for(int i=0;i<jsonArray.size();i++){
  685. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  686. if(object.get("rowValue") == null || object.get("rowValue") == ""){
  687. continue;
  688. }
  689. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  690. JSONObject map = new JSONObject();
  691. if(jsonArray1.size() > 0){
  692. for(int j=0;j<jsonArray1.size();j++){
  693. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  694. if(object1.get("label").toString().equals("[\"使用日期\",\"归还日期\"]")){
  695. JSONArray aa = JSONArray.fromObject(object1.get("value"));
  696. if(aa.size() > 1){
  697. map.put("使用日期",aa.get(0));
  698. map.put("归还日期",aa.get(1));
  699. }
  700. }else{
  701. map.put(object1.get("label").toString(),object1.get("value"));
  702. }
  703. }
  704. listView.add(map);
  705. }
  706. }
  707. newMap.put("备用金申请",listView);
  708. }
  709. }
  710. if(o.get("name").equals("差旅报销") && o.get("value") != null){
  711. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  712. if(jsonArray.size() > 0){
  713. List<Map<String,Object>> listView = new ArrayList<>();
  714. for(int i=0;i<jsonArray.size();i++){
  715. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  716. if(object.get("rowValue") == null || object.get("rowValue") == ""){
  717. continue;
  718. }
  719. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  720. JSONObject map = new JSONObject();
  721. if(jsonArray1.size() > 0){
  722. for(int j=0;j<jsonArray1.size();j++){
  723. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  724. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  725. JSONArray aa = JSONArray.fromObject(object1.get("value"));
  726. if(aa.size() > 1){
  727. map.put("发生日期",aa.get(0));
  728. map.put("结束日期",aa.get(1));
  729. }
  730. }else{
  731. map.put(object1.get("label").toString(),object1.get("value"));
  732. }
  733. }
  734. listView.add(map);
  735. }
  736. }
  737. newMap.put("差旅报销",listView);
  738. }
  739. }
  740. if(o.get("name").equals("私车公用报销") && o.get("value") != null){
  741. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  742. if(jsonArray.size() > 0){
  743. List<Map<String,Object>> listView = new ArrayList<>();
  744. for(int i=0;i<jsonArray.size();i++){
  745. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  746. if(object.get("rowValue") == null || object.get("rowValue") == ""){
  747. continue;
  748. }
  749. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  750. JSONObject map = new JSONObject();
  751. if(jsonArray1.size() > 0){
  752. for(int j=0;j<jsonArray1.size();j++){
  753. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  754. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  755. JSONArray aa = JSONArray.fromObject(object1.get("value"));
  756. if(aa.size() > 1){
  757. map.put("发生日期",aa.get(0));
  758. map.put("结束日期",aa.get(1));
  759. }
  760. }else{
  761. map.put(object1.get("label").toString(),object1.get("value"));
  762. }
  763. }
  764. listView.add(map);
  765. }
  766. }
  767. newMap.put("私车公用报销",listView);
  768. }
  769. }
  770. if(o.get("name").equals("其他报销科目") && o.get("value") != null){
  771. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  772. if(jsonArray.size() > 0){
  773. List<Map<String,Object>> listView = new ArrayList<>();
  774. for(int i=0;i<jsonArray.size();i++){
  775. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  776. if(object.get("rowValue") == null || object.get("rowValue") == ""){
  777. continue;
  778. }
  779. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  780. JSONObject map = new JSONObject();
  781. if(jsonArray1.size() > 0){
  782. for(int j=0;j<jsonArray1.size();j++){
  783. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  784. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  785. JSONArray aa = JSONArray.fromObject(object1.get("value"));
  786. if(aa.size() > 1){
  787. map.put("发生日期",aa.get(0));
  788. map.put("结束日期",aa.get(1));
  789. }
  790. }else{
  791. map.put(object1.get("label").toString(),object1.get("value"));
  792. }
  793. }
  794. listView.add(map);
  795. }
  796. }
  797. newMap.put("其他报销科目",listView);
  798. }
  799. }
  800. }
  801. return newMap;
  802. }
  803. public static Map<String,Object> tableToMap2(Map<String,Object> map1) throws Exception {
  804. List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
  805. Map<String,Object> newMap = new HashMap<String,Object>();
  806. for(Map<String, Object> o:listMap){
  807. if(o.get("component_type").equals("RecipientAccountField")){
  808. Map<String,Object> mapValue = JSONUtils.jsonToMap((String) o.get("ext_value"));
  809. newMap.put("户名",mapValue.get("name"));
  810. newMap.put("账号",mapValue.get("cardNo"));
  811. newMap.put("开户银行",mapValue.get("instName"));
  812. }
  813. if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
  814. continue;
  815. }
  816. if(o.get("name").equals("收款账号") && o.get("value") != null && newMap.get("账号") == null){
  817. newMap.put("账号",o.get("value"));
  818. }
  819. if(o.get("name").equals("差旅报销") && o.get("value") != null){
  820. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  821. if(jsonArray.size() > 0){
  822. List<Map<String,Object>> listView = new ArrayList<>();
  823. for(int i=0;i<jsonArray.size();i++){
  824. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  825. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  826. // Map<String,Object> map = new HashMap<>();
  827. JSONObject map = new JSONObject();
  828. if(jsonArray1.size() > 0){
  829. for(int j=0;j<jsonArray1.size();j++){
  830. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  831. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  832. List<String> aa = (List<String>) object1.get("value");
  833. if(aa.size() > 1){
  834. map.put("发生日期",aa.get(0));
  835. map.put("结束日期",aa.get(1));
  836. }
  837. }else if(object1.get("label").toString().equals("报销科目")){
  838. List<String> aa = (List<String>) object1.get("value");
  839. if(aa.size() > 0){
  840. map.put("报销科目",aa.get(0));
  841. }
  842. }else{
  843. map.put(object1.get("label").toString(),object1.get("value"));
  844. }
  845. }
  846. listView.add(map);
  847. }
  848. }
  849. newMap.put("差旅报销",listView);
  850. }
  851. }
  852. if(o.get("name").equals("私车公用报销") && o.get("value") != null){
  853. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  854. if(jsonArray.size() > 0){
  855. List<Map<String,Object>> listView = new ArrayList<>();
  856. for(int i=0;i<jsonArray.size();i++){
  857. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  858. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  859. // Map<String,Object> map = new HashMap<>();
  860. JSONObject map = new JSONObject();
  861. if(jsonArray1.size() > 0){
  862. for(int j=0;j<jsonArray1.size();j++){
  863. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  864. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  865. List<String> aa = (List<String>) object1.get("value");
  866. if(aa.size() > 1){
  867. map.put("发生日期",aa.get(0));
  868. map.put("结束日期",aa.get(1));
  869. }
  870. }else if(object1.get("label").toString().equals("报销科目")){
  871. List<String> aa = (List<String>) object1.get("value");
  872. if(aa.size() > 0){
  873. map.put("报销科目",aa.get(0));
  874. }
  875. }else{
  876. map.put(object1.get("label").toString(),object1.get("value"));
  877. }
  878. }
  879. listView.add(map);
  880. }
  881. }
  882. newMap.put("私车公用报销",listView);
  883. }
  884. }
  885. if(o.get("name").equals("其他报销科目") && o.get("value") != null){
  886. JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
  887. if(jsonArray.size() > 0){
  888. List<Map<String,Object>> listView = new ArrayList<>();
  889. for(int i=0;i<jsonArray.size();i++){
  890. net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
  891. JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
  892. // Map<String,Object> map = new HashMap<>();
  893. JSONObject map = new JSONObject();
  894. if(jsonArray1.size() > 0){
  895. for(int j=0;j<jsonArray1.size();j++){
  896. net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
  897. if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
  898. List<String> aa = (List<String>) object1.get("value");
  899. if(aa.size() > 1){
  900. map.put("发生日期",aa.get(0));
  901. map.put("结束日期",aa.get(1));
  902. }
  903. }else if(object1.get("label").toString().equals("报销科目")){
  904. List<String> aa = (List<String>) object1.get("value");
  905. if(aa.size() > 0){
  906. map.put("报销科目",aa.get(0));
  907. }
  908. }else{
  909. map.put(object1.get("label").toString(),object1.get("value"));
  910. }
  911. }
  912. listView.add(map);
  913. }
  914. }
  915. newMap.put("其他报销科目",listView);
  916. }
  917. }
  918. }
  919. // System.out.println("=========================");
  920. // System.out.println("=========================");
  921. return newMap;
  922. }
  923. public static Map<String,Object> tableToMap3(Map<String,Object> map1){
  924. List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
  925. // System.out.println(listMap);
  926. Map<String,Object> newMap = new HashMap<>();
  927. int st = 0;
  928. for(Map<String, Object> o:listMap){
  929. // System.out.println(o);
  930. // System.out.println("=========================");
  931. if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
  932. continue;
  933. }
  934. if(o.get("name").equals("差旅报销")){
  935. st = 1;
  936. }
  937. if(o.get("name").equals("私车公用报销")){
  938. st = 2;
  939. }
  940. if(o.get("name").equals("其他报销科目")){
  941. st = 3;
  942. }
  943. if(st == 1 && o.get("name").equals("合计")){
  944. if(newMap.containsKey("差旅报销")){
  945. newMap.put("差旅报销",Double.valueOf(o.get("value").toString())+Double.valueOf(newMap.get("差旅报销").toString()) );
  946. }else {
  947. newMap.put("差旅报销",o.get("value"));
  948. }
  949. }
  950. if(st == 2 && o.get("name").equals("合计")){
  951. if(newMap.containsKey("私车公用报销")){
  952. newMap.put("私车公用报销",Double.valueOf(o.get("value").toString())+Double.valueOf(newMap.get("私车公用报销").toString()) );
  953. }else {
  954. newMap.put("私车公用报销",o.get("value"));
  955. }
  956. }
  957. if(st == 3 && o.get("name").equals("合计")){
  958. if(newMap.containsKey("其他报销科目")){
  959. newMap.put("其他报销科目",Double.valueOf(o.get("value").toString())+Double.valueOf(newMap.get("其他报销科目").toString()) );
  960. }else {
  961. newMap.put("其他报销科目",o.get("value"));
  962. }
  963. }
  964. }
  965. return newMap;
  966. }
  967. /**
  968. * 通过部门名称对应u8科目编码
  969. * @param dept
  970. * @return
  971. */
  972. public static String getDeptCode(String dept,String type){
  973. if(dept.equals("营销设计中心-总经理室") || dept.equals("营销设计中心-采购部") || dept.equals("共享中心-财务部") || dept.equals("共享中心-人事行政部")){
  974. if("差旅报销".equals(type)){
  975. return "66020704";
  976. }else if("私车公用报销".equals(type)){
  977. return "66020702";
  978. }else{
  979. return "66020706";
  980. }
  981. }else if(dept.equals("营销设计中心-销售部")){
  982. if("差旅报销".equals(type)){
  983. return "6601070104";
  984. }else if("私车公用报销".equals(type)){
  985. return "6601070102";
  986. }else{
  987. return "6601070106";
  988. }
  989. }else if(dept.equals("营销设计中心-设计部")){
  990. if("差旅报销".equals(type)){
  991. return "66040704";
  992. }else if("私车公用报销".equals(type)){
  993. return "66040702";
  994. }else{
  995. return "66040706";
  996. }
  997. }else if(dept.equals("营销设计中心-项目部") || dept.equals("营销设计中心-市场部")){
  998. if("差旅报销".equals(type)){
  999. return "6601070204";
  1000. }else if("私车公用报销".equals(type)){
  1001. return "6601070202";
  1002. }else{
  1003. return "6601070206";
  1004. }
  1005. }
  1006. return null;
  1007. }
  1008. /**
  1009. * 根据人员编码查询u8人员信息
  1010. * @param id
  1011. * @param ds
  1012. */
  1013. public static String getPerson(String id,String ds){
  1014. Properties prop = PropUtil.getProperties("/config.properties");
  1015. String to_account = prop.getProperty("to_account");
  1016. PersonService par = new PersonService();
  1017. String code = "";
  1018. try {
  1019. JSONObject record = par.get(id, to_account,ds);
  1020. if(record.get("errcode").equals("0")){
  1021. JSONObject record1 = (JSONObject) record.get("person");
  1022. code = record1.get("cdept_num").toString();
  1023. }
  1024. // System.out.println(record);
  1025. } catch (OpenAPIException e) {
  1026. return code;
  1027. }
  1028. return code;
  1029. }
  1030. /**
  1031. * 获取钉钉企业内部应用的access_token
  1032. */
  1033. public static void getToken(){
  1034. try {
  1035. Properties prop = PropUtil.getProperties("/config.properties");
  1036. String appkey = prop.getProperty("ding_appkey");
  1037. String appsecret = prop.getProperty("ding_appsecret");
  1038. DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
  1039. OapiGettokenRequest req = new OapiGettokenRequest();
  1040. req.setHttpMethod("GET");
  1041. req.setAppkey(appkey);
  1042. req.setAppsecret(appsecret);
  1043. OapiGettokenResponse rsp = client.execute(req);
  1044. Map<String,String> map;
  1045. map = toMap(rsp.getBody());
  1046. if(map.get("errcode").equals("0")){
  1047. gettoken = map.get("access_token");
  1048. }else{
  1049. gettoken = "error";
  1050. }
  1051. } catch (ApiException | JSONException e) {
  1052. e.printStackTrace();
  1053. } catch (Exception e) {
  1054. e.printStackTrace();
  1055. }
  1056. }
  1057. public static Map toMap(String jsonString) throws JSONException {
  1058. org.springframework.boot.configurationprocessor.json.JSONObject jsonObject = new org.springframework.boot.configurationprocessor.json.JSONObject(jsonString);
  1059. Map result = new HashMap();
  1060. Iterator iterator = jsonObject.keys();
  1061. String key = null;
  1062. String value = null;
  1063. while (iterator.hasNext()) {
  1064. key = (String) iterator.next();
  1065. value = jsonObject.getString(key);
  1066. result.put(key, value);
  1067. }
  1068. return result;
  1069. }
  1070. public static void main(String[] args) throws Exception {
  1071. // autoOABankReceipt();
  1072. // autoReimbursement();
  1073. // autoReimbursementNew("js");
  1074. // String aa = "";
  1075. // if("12334".contains("1")){
  1076. // System.out.println("sssssssssss");
  1077. // }
  1078. // BigDecimal aa = new BigDecimal("10");
  1079. // BigDecimal multiply = aa.multiply(BigDecimal.valueOf(0.09)).multiply(aa);
  1080. // System.out.println(multiply);
  1081. // DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
  1082. // Properties prop = PropUtil.getProperties("/config.properties");
  1083. // String PROC = prop.getProperty("bx_process_code");
  1084. // String PROC1 = prop.getProperty("byj_process_code");
  1085. // List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-2);
  1086. // List<String> list1 = dingdingOpenInterface.getOrderIdList2(PROC1,-7);
  1087. // System.out.println(list);
  1088. // System.out.println("========1======");
  1089. // Thread.currentThread().sleep(5000);//延迟5秒
  1090. // Thread.sleep(3000);//与上行代码无区别
  1091. // System.out.println("========2======");
  1092. // System.out.println(list1);
  1093. }
  1094. }