PkWbcgServiceImpl.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package com.malk.pake.service.impl;
  2. import cn.hutool.core.util.NumberUtil;
  3. import cn.hutool.core.util.ReflectUtil;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.malk.pake.entity.PkWbcg;
  6. import com.malk.pake.mapper.PkWbcgMapper;
  7. import com.malk.pake.service.PkWbcgService;
  8. import com.malk.server.aliwork.YDConf;
  9. import com.malk.server.aliwork.YDParam;
  10. import com.malk.service.aliwork.YDClient;
  11. import com.malk.utils.PublicUtil;
  12. import com.malk.utils.UtilDateTime;
  13. import com.malk.utils.UtilMap;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.time.LocalDateTime;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.Map;
  21. @Slf4j
  22. @Service
  23. public class PkWbcgServiceImpl implements PkWbcgService {
  24. @Autowired
  25. private YDClient ydClient;
  26. @Autowired
  27. private PkWbcgMapper pkWbcgMapper;
  28. private static List<configDto> config2;
  29. {
  30. config2=new ArrayList<>();
  31. // 类型 金额 一级部门 二级部门
  32. config2.add(new configDto("01","第三方采购","textField_40lr8u5","textField_qpi47c5","textField_iqu0lt4"));
  33. config2.add(new configDto("02","代运营保底赔付","textField_4ja4exh","默认",""));
  34. config2.add(new configDto("02","代运营保底赔付","textField_9lolz7t","全国营销中心","河北办事处"));
  35. config2.add(new configDto("02","代运营保底赔付","textField_mchzg5g","全国营销中心","新疆办事处"));
  36. config2.add(new configDto("02","代运营保底赔付","textField_uh7xzvp","全国营销中心","浙江办事处"));
  37. config2.add(new configDto("02","代运营保底赔付","textField_u9ezpca","全国营销中心","销售与解决方案事业部"));
  38. config2.add(new configDto("02","代运营保底赔付","textField_1q1mngd","全国营销中心","驻地运营事业部"));
  39. config2.add(new configDto("03","内容成本","textField_yskuizk","textField_n6dgais","textField_nywps4o&&textField_cq3wrgw"));
  40. config2.add(new configDto("04","渠道成本","textField_0p6725u","textField_niydh0v","textField_cq3wrgw"));
  41. config2.add(new configDto("05","版权赔付","textField_7z9umea","textField_n6dgais","textField_cq3wrgw"));
  42. config2.add(new configDto("06","项目专线、IDC租赁","textField_o7hrwxq","textField_niydh0v","textField_nywps4o&&textField_cq3wrgw"));
  43. config2.add(new configDto("07","中标服务费","textField_rl6bu4e","textField_niydh0v","textField_nywps4o"));
  44. config2.add(new configDto("08","经营性固定资产采购","textField_zkp9rt7","textField_qpi47c5","textField_iqu0lt4"));
  45. config2.add(new configDto("09","研发设备采购费","textField_f4hxczh","textField_bs5acse","textField_absucq7"));
  46. config2.add(new configDto("10","研发软件及服务采购","textField_vh8bd91","textField_r391zwq","textField_4kzpuqt"));
  47. config2.add(new configDto("11","投流成本","textField_6fykj0t","textField_pr7mh62","textField_2hpmihn"));
  48. }
  49. private class configDto{
  50. public String id;
  51. public String key;
  52. public String key2;
  53. public String key3;
  54. public String key4;
  55. public configDto(String key,String key2){
  56. this.key=key;
  57. this.key2=key2;
  58. }
  59. public configDto(String id,String key,String key2,String key3,String key4){
  60. this.id=id;
  61. this.key=key;
  62. this.key2=key2;
  63. this.key3=key3;
  64. this.key4=key4;
  65. }
  66. }
  67. @Override
  68. public List<Map> selectSumDataList(String dept1, String dept2) {
  69. return pkWbcgMapper.selectSumDataList(dept1,dept2);
  70. }
  71. @Override
  72. public void syncData(String id) {
  73. Map<String,Object> data =ydClient.queryData(YDParam.builder().formInstId(id).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
  74. LocalDateTime localDateTime= UtilDateTime.getLocalDateTimeFromTimestamp(UtilMap.getLong(data,"dateField_cs14yue"));
  75. int month=localDateTime.getMonthValue();
  76. for(configDto configDto:config2){
  77. String amt="";
  78. if(configDto.key2.contains("&&")){
  79. String[] keys=configDto.key2.split("&&");
  80. for (int i = 0; i < keys.length; i++) {
  81. amt= NumberUtil.add(UtilMap.getNumberStr(data,keys[i]),amt).toString();
  82. }
  83. }else{
  84. amt=UtilMap.getNumberStr(data,configDto.key2);
  85. }
  86. String dept1,dept2;
  87. if(configDto.key3.contains("textField")){
  88. if(configDto.key3.contains("&&")){
  89. String[] keys=configDto.key3.split("&&");
  90. String[] values=new String[keys.length];
  91. for (int i = 0; i < keys.length; i++) {
  92. values[i]=UtilMap.getString(data,keys[i]);
  93. }
  94. dept1=String.join(",", values);
  95. }else{
  96. dept1=UtilMap.getString(data,configDto.key3);
  97. }
  98. }else{
  99. dept1=configDto.key3;
  100. }
  101. if(configDto.key4.contains("textField")){
  102. if(configDto.key4.contains("&&")){
  103. String[] keys=configDto.key4.split("&&");
  104. String[] values=new String[keys.length];
  105. for (int i = 0; i < keys.length; i++) {
  106. values[i]=UtilMap.getString(data,keys[i]);
  107. }
  108. dept2=String.join(",", values);
  109. }else{
  110. dept2=UtilMap.getString(data,configDto.key4);
  111. }
  112. }else{
  113. dept2=configDto.key4;
  114. }
  115. PkWbcg pkWbcg=new PkWbcg(configDto.id,configDto.key,dept1,dept2);
  116. save(pkWbcg,"setAmt".concat(String.valueOf(month)),amt,"setTotal");
  117. }
  118. System.out.println("处理完成");
  119. }
  120. @Override
  121. public void syncYsData() {
  122. for(configDto configDto:config2) {
  123. List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-2172522109C047D9AC18A872ED2FCD792YMZ")
  124. .searchFieldJson(JSONObject.toJSONString(UtilMap.map("selectField_b3run5c, selectField_m7qqwok", "外部采购",configDto.key)))
  125. .build(), YDConf.FORM_QUERY.retrieve_list).getData();
  126. for (int i = 0; i < list.size(); i++) {
  127. log.info("处理进度:{}/{}", i + 1, list.size());
  128. Map data = list.get(i);
  129. String dept1=UtilMap.getString(data,"textField_67lf04e");
  130. String dept2=UtilMap.getString(data,"textField_vco7vnl");
  131. String amt=UtilMap.getString(data,"numberField_397v7ux");
  132. PkWbcg pkWbcg = new PkWbcg(configDto.id, configDto.key, dept1, dept2);
  133. if(PublicUtil.isNull(data,"dateField_w3yecdm")){
  134. // 年度预算
  135. save(pkWbcg,amt);
  136. }else{
  137. LocalDateTime localDateTime = UtilDateTime.getLocalDateTimeFromTimestamp(UtilMap.getLong(data, "dateField_w3yecdm"));
  138. String amtMethodName= "setYsamt".concat(String.valueOf(localDateTime.getMonthValue()));
  139. save(pkWbcg, amtMethodName, amt, "setYstotal");
  140. }
  141. }
  142. }
  143. System.out.println("处理完成");
  144. }
  145. private void save(PkWbcg pkWbcg,String amtMethodName,String amt,String totalMethodName){
  146. PkWbcg data=pkWbcgMapper.selectById(pkWbcg.getName());
  147. if(data==null){
  148. ReflectUtil.invoke(pkWbcg,amtMethodName,amt);
  149. ReflectUtil.invoke(pkWbcg,totalMethodName,amt);
  150. pkWbcgMapper.insert(pkWbcg);
  151. }else{
  152. String newAmt=NumberUtil.add(ReflectUtil.invoke(data,amtMethodName.replace("set","get")),amt).toString();
  153. String totalAmt=NumberUtil.add(ReflectUtil.invoke(data,totalMethodName.replace("set","get")),amt).toString();
  154. ReflectUtil.invoke(data,amtMethodName,newAmt);
  155. ReflectUtil.invoke(data,totalMethodName,totalAmt);
  156. pkWbcgMapper.updateById(data);
  157. }
  158. }
  159. private void save(PkWbcg pkWbcg,String ndysAmt){
  160. PkWbcg data=pkWbcgMapper.selectById(pkWbcg.getName());
  161. if(data==null){
  162. ReflectUtil.invoke(pkWbcg,"setNdystotal",ndysAmt);
  163. pkWbcgMapper.insert(pkWbcg);
  164. }else{
  165. String totalAmt=NumberUtil.add(ReflectUtil.invoke(data,"getNdystotal"),ndysAmt).toString();
  166. ReflectUtil.invoke(data,"setNdystotal",totalAmt);
  167. pkWbcgMapper.updateById(data);
  168. }
  169. }
  170. }