feadf59a5f98cbf4c9b94e9d7a0cb5a50063b709.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. package com.kingdee.eas.custom.erp.util;
  2. import java.sql.SQLException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Properties;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import com.kingdee.bos.BOSException;
  11. import com.kingdee.bos.Context;
  12. import com.kingdee.bos.qing.util.StringUtils;
  13. import com.kingdee.eas.util.app.DbUtil;
  14. import com.kingdee.jdbc.rowset.IRowSet;
  15. import com.kingdee.shr.sso.client.util.SSOUtil;
  16. public class SynAdminOrgToERPUtils {
  17. private static Logger log = LoggerFactory.getLogger(SynSalaryFromErpUtils.class);
  18. //https://sites.gtiit.edu.cn/kderpdev/ierp/kapi/v2/gt15/base/bos_adminorg/gt15_adminorg_add
  19. private static String ierp = "https://sites.gtiit.edu.cn/kderpdev/ierp";
  20. /**
  21. * 新增:获取gt15_adminorg_add的请求地址
  22. * @param request
  23. * @param code
  24. * @return
  25. */
  26. public static String getGt15AdminOrgAddUrl() {
  27. Properties config = SynPublicUtils.getConfig();
  28. ierp = (String)config.get("ierp");
  29. return new StringBuffer().append(ierp).append("/kapi/v2/gt15/base/bos_adminorg/gt15_adminorg_add").toString();
  30. }
  31. /**
  32. * 封存:获取gt15_adminorg_beta的请求地址: https://sites.gtiit.edu.cn/kderpdev/ierp/kapi/v2/gt15/base/bos_adminorg/gt15_adminorg_beta
  33. * @param request
  34. * @param code
  35. * @return
  36. */
  37. public static String getGt15AdminOrgBetaUrl() {
  38. Properties config = SynPublicUtils.getConfig();
  39. ierp = (String)config.get("ierp");
  40. return new StringBuffer().append(ierp).append("/kapi/v2/gt15/base/bos_adminorg/gt15_adminorg_beta").toString();
  41. }
  42. /**
  43. * 新增:请求参数
  44. * 获取所有行政组织的
  45. * @param ctx
  46. * @return
  47. * @throws BOSException
  48. * @throws SQLException
  49. */
  50. private static String getAdminOrgDetailEntry(Context ctx,String startDateStr, String endDateStr) throws BOSException, SQLException{
  51. //获取前一天的0点时间字符串
  52. String lastDateZeroTimeStr = "";
  53. //获取当前时间的字符串
  54. String noeTimeStr = "";
  55. if(StringUtils.isEmpty(startDateStr)|| StringUtils.isEmpty(endDateStr) ){
  56. //获取上次同步结束的时间
  57. lastDateZeroTimeStr = SynPublicUtils.getLastUpdateSynTableTimeStrByEvenName(ctx,"synAdminOrgToErp");
  58. if(StringUtils.isEmpty(lastDateZeroTimeStr)){
  59. //为空
  60. //获取前一天的0点时间字符串
  61. lastDateZeroTimeStr = SynPublicUtils.getLastDateZeroTime();
  62. }
  63. //更新最新 的时间为event_timeStamp,只有在自动触发的才会修改时间
  64. SynPublicUtils.updateSynTimeTable(ctx,"synAdminOrgToErp");
  65. //获取当前时间的字符串
  66. noeTimeStr = SynPublicUtils.getNowTimeStr();
  67. }else{
  68. lastDateZeroTimeStr = startDateStr;
  69. noeTimeStr = endDateStr;
  70. }
  71. String sql = "select admin.fnumber as number,admin.fname_l1 as name_l1,admin.fname_l2 as name_l2,admin.fname_l3 as name_l3,admin.fsimplename as gt15_shortname,admin.fname_l2 as gt15_chinesename ,layerType.fnumber as orgpattern_number,layerType.fname_l1 as orgpattern_name ,admin.fdescription_l1 as fcomment,admin2.fnumber as viewparent_number from t_org_admin admin "
  72. + " left join T_Org_LayerType layerType on layerType.fid = admin.flayertypeid "
  73. + " left join t_org_admin admin2 on admin2.fid = admin.fparentid where admin.fisousealup = 0 "
  74. + " and ( (admin.flastupdatetime > {ts '"+lastDateZeroTimeStr+"'} and admin.flastupdatetime <= {ts '"+noeTimeStr+"'} ) "
  75. + " or (layerType.flastupdatetime > {ts '"+lastDateZeroTimeStr+"'} and layerType.flastupdatetime <= {ts '"+noeTimeStr+"'} ) "
  76. + " or (admin2.flastupdatetime > {ts '"+lastDateZeroTimeStr+"'} and admin2.flastupdatetime <= {ts '"+noeTimeStr+"'} )) ";
  77. //+ " left join t_org_admin admin2 on admin2.fid = admin.fparentid where admin.fisousealup = 0 and admin.fnumber not in ('D0003','D0002','D0039','D0040') ";
  78. log.info("getAdminOrgDetailEntry.sql:"+sql);
  79. IRowSet executeQuery = DbUtil.executeQuery(ctx, sql);
  80. JSONArray datas = new JSONArray();
  81. String paramJOStr = "";
  82. if(executeQuery.size()>0){
  83. while(executeQuery.next()){
  84. String number = executeQuery.getString("number");
  85. String name_l1 = executeQuery.getString("name_l1");
  86. String name_l2 = executeQuery.getString("name_l2");
  87. String name_l3 = executeQuery.getString("name_l3");
  88. String gt15_shortname = executeQuery.getString("gt15_shortname");
  89. String gt15_chinesename = executeQuery.getString("gt15_chinesename");
  90. String orgpattern_number = executeQuery.getString("orgpattern_number");
  91. String orgpattern_name = executeQuery.getString("orgpattern_name");
  92. String fcomment = executeQuery.getString("fcomment");
  93. String viewparent_number = executeQuery.getString("viewparent_number");
  94. JSONArray structures = new JSONArray();
  95. JSONObject structure = new JSONObject();
  96. structure.put("view_number", "01");
  97. if(StringUtils.isEmpty(viewparent_number)){
  98. //根部组织不传
  99. continue;
  100. }
  101. structure.put("viewparent_number", viewparent_number);
  102. structures.add(structure);
  103. JSONObject data = new JSONObject();
  104. data.put("number",number);
  105. JSONObject name = new JSONObject();
  106. name.put("en_US", name_l1);
  107. name.put("zh_CN", name_l2);
  108. name.put("zh_TW", name_l3);
  109. data.put("name",name);
  110. data.put("gt15_shortname",gt15_shortname);
  111. data.put("gt15_chinesename",gt15_chinesename);
  112. data.put("orgpattern_name",orgpattern_name);
  113. if("集团".equals(orgpattern_number)){
  114. orgpattern_number = "Group";
  115. }else if("公司".equals(orgpattern_number)){
  116. orgpattern_number = "Company";
  117. }else if("部门".equals(orgpattern_number)){
  118. orgpattern_number = "Dept";
  119. }
  120. data.put("orgpattern_number",orgpattern_number);
  121. data.put("fcomment",fcomment);
  122. data.put("structure",structures);
  123. datas.add(data);
  124. }
  125. JSONObject paramJO = new JSONObject();
  126. paramJO.put("data",datas);
  127. paramJOStr = paramJO.toString();
  128. }
  129. return paramJOStr;
  130. }
  131. /**
  132. * 新增:新增行政组织接口,推送到星瀚
  133. * @param ctx
  134. * @param accessToken
  135. * @throws Exception
  136. */
  137. public static String gt15_adminorg_add(Context ctx,String accessToken,String startDate, String endDate) throws Exception{
  138. //获取请求地址
  139. String gt15AdminOrgAddUrl = getGt15AdminOrgAddUrl();
  140. log.info("SynAdminOrgToERPUtils.gt15_adminorg_add.gt15AdminOrgAddUrl:"+gt15AdminOrgAddUrl);
  141. //构建行政组织参数
  142. String paramJOStr = getAdminOrgDetailEntry(ctx, startDate, endDate);
  143. log.info("SynAdminOrgToERPUtils.gt15_adminorg_add.paramJOStr:"+paramJOStr);
  144. //数据保存接口
  145. String responseMsg = HttpsReqUtil.postByHttps(gt15AdminOrgAddUrl, paramJOStr, accessToken);
  146. return responseMsg;
  147. }
  148. /**
  149. * 新增:推送数据到ERP功能:主体
  150. * @return
  151. * @throws Exception
  152. */
  153. public static String synAdminorgToErp(Context ctx,String startDate, String endDate ) throws Exception{
  154. //获取appToken
  155. String appToken = SynSalaryFromErpUtils.getAppToken(ctx);
  156. log.info("获取synAdminorgToErp.appToken:"+appToken);
  157. //获取accessToken
  158. String accessToken = SynSalaryFromErpUtils.getAccessToken(appToken);
  159. log.info("获取synAdminorgToErp.accessToken状态为:"+accessToken);
  160. //薪酬明细保存接口
  161. String responseMsg = gt15_adminorg_add(ctx,accessToken, startDate, endDate);
  162. log.info("synAdminorgToErp.responseMsg:"+accessToken);
  163. return null;
  164. }
  165. /**
  166. * 封存:获取封存行政组织的请求参数
  167. * @param ctx
  168. * @param startDate
  169. * @param endDate
  170. * @return
  171. * @throws BOSException
  172. * @throws SQLException
  173. */
  174. public static List<String> getAdminOrgBetaDetailEntry(Context ctx,String startDateStr, String endDateStr) throws BOSException, SQLException{
  175. //String sql = " select fnumber as number from t_org_admin where fisousealup = 1 and fnumber not in ('D0003','D0002','D0039','D0040')";
  176. //获取前一天的0点时间字符串
  177. String lastDateZeroTimeStr = "";
  178. //获取当前时间的字符串
  179. String noeTimeStr = "";
  180. if(StringUtils.isEmpty(startDateStr)|| StringUtils.isEmpty(endDateStr) ){
  181. //获取上次同步结束的时间
  182. lastDateZeroTimeStr = SynPublicUtils.getLastUpdateSynTableTimeStrByEvenName(ctx,"synAdminOrgBetaToErp");
  183. if(StringUtils.isEmpty(lastDateZeroTimeStr)){
  184. //为空
  185. //获取前一天的0点时间字符串
  186. lastDateZeroTimeStr = SynPublicUtils.getLastDateZeroTime();
  187. }
  188. //更新最新 的时间为event_timeStamp,只有在自动触发的才会修改时间
  189. SynPublicUtils.updateSynTimeTable(ctx,"synAdminOrgBetaToErp");
  190. //获取当前时间的字符串
  191. noeTimeStr = SynPublicUtils.getNowTimeStr();
  192. }else{
  193. lastDateZeroTimeStr = startDateStr;
  194. noeTimeStr = endDateStr;
  195. }
  196. String sql = " select fnumber as number from t_org_admin where fisousealup = 1 " +
  197. " and (flastupdatetime > {ts '"+lastDateZeroTimeStr+"'} and flastupdatetime <= {ts '"+noeTimeStr+"'})";
  198. log.info("getAdminOrgBetaDetailEntry.sql"+sql);
  199. IRowSet executeQuery = DbUtil.executeQuery(ctx, sql);
  200. List<String> numbers = new ArrayList<String>();
  201. if(executeQuery.size()>0){
  202. while(executeQuery.next()){
  203. String number = executeQuery.getString("number");
  204. numbers.add(number);
  205. }
  206. }
  207. return numbers;
  208. }
  209. /**
  210. * 封存:通过编码获取
  211. * @param numbers
  212. * @return
  213. */
  214. public static String getParamJOStrByNumber(String number){
  215. JSONObject data = new JSONObject();
  216. data.put("number", number);
  217. JSONObject paramJO = new JSONObject();
  218. paramJO.put("data",data);
  219. String paramJOStr = paramJO.toString();
  220. return paramJOStr;
  221. }
  222. /**
  223. * 封存:根据编码封存行政组织
  224. * @param ctx
  225. * @param accessToken
  226. * @return
  227. * @throws Exception
  228. */
  229. public static void synGt15_adminorg_beta(Context ctx,String accessToken,String startDate, String endDate) throws Exception{
  230. //获取请求地址
  231. String gt15AdminOrgBetaUrl = getGt15AdminOrgBetaUrl();
  232. log.info("SynAdminOrgToERPUtils.synGt15_adminorg_beta.gt15AdminOrgBetaUrl:"+gt15AdminOrgBetaUrl);
  233. //构建行政组织参数
  234. List<String> numbers =getAdminOrgBetaDetailEntry(ctx, startDate, endDate);
  235. log.info("SynAdminOrgToERPUtils.gt15_adminorg_add.numbers:"+numbers.size());
  236. for(String number : numbers){
  237. String paramJOStr = getParamJOStrByNumber(number);
  238. //数据保存接口
  239. String responseMsg = HttpsReqUtil.postByHttps(gt15AdminOrgBetaUrl, paramJOStr, accessToken);
  240. }
  241. }
  242. /**
  243. * 封存:封存根据编码封存行政组织:主体
  244. * @param ctx
  245. * @return
  246. * @throws Exception
  247. */
  248. public static String syndminorgBetaToErp(Context ctx,String startDate, String endDate) throws Exception{
  249. //获取appToken
  250. String appToken = SynSalaryFromErpUtils.getAppToken(ctx);
  251. log.info("获取syndminorgBetaToErp.appToken:"+appToken);
  252. //获取accessToken
  253. String accessToken = SynSalaryFromErpUtils.getAccessToken(appToken);
  254. log.info("获取syndminorgBetaToErp.accessToken为:"+accessToken);
  255. //薪酬明细保存接口
  256. synGt15_adminorg_beta(ctx,accessToken,startDate,endDate);
  257. log.info("syndminorgBetaToErp.responseMsg:"+accessToken);
  258. return "";
  259. }
  260. }