package com.weaver.seconddev.sxjg.esb; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.weaver.common.base.entity.result.WeaResult; import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; import com.weaver.seconddev.sxjg.config.EbDbDataSourceConfig; import com.weaver.seconddev.sxjg.config.EbDbDataSourceConfigResp; import com.weaver.seconddev.sxjg.util.NccApiUtil; import com.weaver.seconddev.sxjg.util.NccResultUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 人员见习流程toncc */ @Service("esb_PersonJxToNcc_howe") public class PersonJxToNcc implements EsbServerlessRpcRemoteInterface { private static final Logger log = LoggerFactory.getLogger(PersonJxToNcc.class); private JdbcTemplate jdbcTemplateresp = new JdbcTemplate(EbDbDataSourceConfigResp.dbDataSource()); private JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource()); @Override public WeaResult> execute(Map params) { Map finresult = new HashMap<>(); finresult.put("code",200); String pk_psndoc = (String) params.get("pk_psndoc");//人员主键 String glbdef1 = (String) params.get("glbdef1");//是否见习 String glbdef2 = (String) params.get("glbdef2");//见习期时长(月) String glbdef3 = (String) params.get("glbdef3");//转正日期 String bsid = (String)params.get("bsid"); String username = (String)params.get("username"); String usercode = (String)params.get("usercode"); String pk_org = (String) params.get("pk_org"); glbdef1 = glbdef1.equals("0") ? "N" : "Y"; glbdef3 = formatTime(glbdef3); JSONObject jsonObject = new JSONObject(); jsonObject.put("pk_psndoc",pk_psndoc); jsonObject.put("glbdef1",glbdef1); jsonObject.put("glbdef2",glbdef2); jsonObject.put("glbdef3",glbdef3); JSONArray jsonArray = new JSONArray(); jsonArray.add(jsonObject); try { NccApiUtil nccApiUtil = new NccApiUtil(); nccApiUtil.init(); String token = nccApiUtil.getToken(); String url = nccApiUtil.getBaseUrl()+"nccloud/api/hrhi/openAPI/userinf/internshipinf"; String rs11 = ""; NccResultUtil rs = null; if(!judgeInterfaceStatus(bsid)) {//接口一 并没有执行成功过 log.error("howec-3-7:接口一并没有被执行过,执行接口一"); rs11 = nccApiUtil.doJsonPost(url,token,jsonArray.toJSONString()); rs = new NccResultUtil(rs11); }else {//接口1已经执行成功过 log.error("howec-3-7:接口一已经被成功执行过,直接执行接口二"); rs = new NccResultUtil(); rs.setResult(true); } if(rs.getResult()) { updateJkZt(bsid);//更新【接口1】成功 //同步明细 JSONObject r1 = new JSONObject(); String state = "2"; r1.put("state",state); r1.put("pk_org",pk_org); JSONArray array = getDataArray(bsid,username,usercode); if(array == null || array.size() == 0) { return WeaResult.success(finresult); } r1.put("data",array); nccApiUtil = new NccApiUtil(); nccApiUtil.init(); token = nccApiUtil.getToken(); url = nccApiUtil.getBaseUrl()+"nccloud/api/hrwa/customermanage/adjust/import"; rs11 = nccApiUtil.doJsonPost(url,token,r1.toJSONString()); rs = new NccResultUtil(rs11); if(rs.getResult()) { return WeaResult.success(finresult); }else { finresult.put("code",500); finresult.put("msg",rs.getDescription()); return WeaResult.success(finresult); } }else { finresult.put("code",500); finresult.put("msg",rs.getDescription()); return WeaResult.success(finresult); } }catch (Exception e){ e.printStackTrace(); finresult.put("code",500); finresult.put("msg",e.getMessage()); log.error("howec:::::::::1:"+e.getMessage()); return WeaResult.success(finresult); } } /** * @use:更新接口状态为2 */ private void updateJkZt(String bsid) { String sql = "select dataid from wfc_form_data wfd where requestid = "+bsid; Map rs = jdbcTemplateresp.queryForMap(sql); long dataid = (long)rs.get("dataid"); //更新【接口状态字段为2---【接口一】已经执行成功】 sql = "update hi_regapply set jkzt = '2' where id = "+dataid; jdbcTemplateresp.update(sql); } /** * 根据标识id去判断接口状态是否为2 */ private boolean judgeInterfaceStatus(String bsid) { String sql = "select dataid from wfc_form_data wfd where requestid = "+bsid; Map rs = jdbcTemplateresp.queryForMap(sql); long dataid = (long)rs.get("dataid"); //更新【接口状态字段为2---【接口一】已经执行成功】 sql = "select jkzt from hi_regapply where id = "+dataid; rs = jdbcTemplateresp.queryForMap(sql); String status = String.valueOf(rs.get("jkzt")); return ("2".equals(status)); } private JSONArray getDataArray(String bsid, String username, String usercode) { JSONArray jsonArray = new JSONArray(); String sql = "select dataid from wfc_form_data wfd where requestid = "+bsid; Map rs = jdbcTemplateresp.queryForMap(sql); long dataid = (long)rs.get("dataid"); sql = "select waitem,xzxmmc,pk_wa_crt,usedate,negotiation,wa_seclv,money,memo from hi_regapply_mxb1 where FORM_DATA_ID = "+dataid; log.error("howec::::::::3"+sql); List> rs1 = jdbcTemplateresp.queryForList(sql); if(CollectionUtil.isNotEmpty(rs1)) { for(Map r : rs1) { String xzxmmc = (String)r.get("xzxmmc");//薪资项目名称 String usedate = (String)r.get("usedate");//起薪日期 long negotiation = (long)r.get("negotiation");//谈判工资 String xbdb = ""; if(r.get("wa_seclv")!=null) { String id1 = (String)r.get("wa_seclv"); if(id1.length()>0) { sql = "select levelname from uf_wa_prmlv where id = "+id1; Map rso= jdbcTemplate.queryForMap(sql); xbdb = (String)rso.get("levelname"); } } String nmoney = ""; if(r.get("money")!=null) { nmoney = String.valueOf(r.get("money"));//金额 } String memo=(String)r.get("memo");//备注 //通过薪资标准表id获取薪资标准名称 String pk_wa_crt_name = ""; if(r.get("pk_wa_crt") != null) { String pk_wa_crt = String.valueOf(r.get("pk_wa_crt"));//薪资标准表 sql = "select name from uf_wa_grade where id = "+pk_wa_crt; Map rso= jdbcTemplate.queryForMap(sql); pk_wa_crt_name = (String)rso.get("name"); } String negotiation_wage = negotiation == 0l ? "N" : "Y"; JSONObject dataobj = new JSONObject(); dataobj.put("negotiation_wage",negotiation_wage); dataobj.put("begindate",usedate); dataobj.put("wa_prmlv",xbdb);//薪资级别 dataobj.put("nmoney",nmoney); dataobj.put("waflag","Y"); dataobj.put("pk_wa_item_showname",xzxmmc); dataobj.put("pk_wa_grd_showname",pk_wa_crt_name); dataobj.put("psnCode",usercode); dataobj.put("psnName",username); dataobj.put("vnote",memo); jsonArray.add(dataobj); } } return jsonArray; } private String formatTime(String s) { if(s.length() == 0) { return ""; } if(s.contains("-")) { s = s.replaceAll("-",""); return s; } return ""; } }