package com.kingdee.eas.custom.webbeisen.handler; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.dao.IObjectCollection; import com.kingdee.bos.dao.IObjectValue; import com.kingdee.bos.dao.ormapping.ObjectUuidPK; import com.kingdee.bos.dao.query.BizEnumValueDTO; import com.kingdee.bos.util.BOSUuid; import com.kingdee.eas.basedata.org.OrgUnitInfo; import com.kingdee.eas.basedata.person.PersonFactory; import com.kingdee.eas.basedata.person.PersonInfo; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.custom.beisen.synchronousorg.SynchronousEmpBillFactory; import com.kingdee.eas.hr.emp.web.handler.EmployeeListHandler; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.json.adapter.*; import com.kingdee.shr.base.syssetting.web.json.JSONUtils; import com.kingdee.shr.base.syssetting.web.json.adapter.BOSUuidTypeAdapter; import com.kingdee.util.StringUtils; import com.kingdee.util.enums.Enum; import org.springframework.ui.ModelMap; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Timestamp; import java.util.Date; public class EmployeeListHandlerEx extends EmployeeListHandler { public String synBeiSenPersonAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { Context ctx = SHRContext.getInstance().getContext(); BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader(); String ids = request.getParameter("ids"); System.out.println("==========ids:"+ids); int sucess = 0; int failure = 0; if (ids != null && ids.length() > 0) { String[] personArray = ids.split(","); for (int i = 0; i < personArray.length; i++) { BatchMessageTipsBody body = new BatchMessageTipsBody(); try { PersonInfo personInfo = PersonFactory.getLocalInstance(ctx).getPersonInfo(new ObjectUuidPK(personArray[i])); String beisenid = personInfo.getString("beisenid"); System.out.println("==========beisenid:"+beisenid); if (beisenid!=null&&beisenid.length()>0){ try { Boolean string = personInfo.getBoolean("IsSync"); System.out.println("sssssssssssssss:"+string+""); if (string==null||!string){ System.out.println("sssssssssssssss:同步"); String s = SynchronousEmpBillFactory.getLocalInstance(ctx).empBill(beisenid, "002", "asdasdasdasdasdasd"); System.out.println("==========s:"+s); body.setId(personArray[i]); body.setMuitTipsState(true); body.setMuitTipsMessage("同步成功【" +personInfo.getName() + "】"); batchMessageTipsHeader.addResult(body); sucess++; }else { System.out.println("sssssssssssssss:已同步"); body.setId(personArray[i]); body.setMuitTipsState(true); body.setMuitTipsMessage("已经同步过该数据【" + personInfo.getName() + "】"); batchMessageTipsHeader.addResult(body); sucess++; } }catch (Exception e){ System.out.println("==========personArray[i]1:"+personArray[i]); body.setId(personArray[i]); body.setMuitTipsState(false); body.setMuitTipsMessage("后台事务执行失败【" + personArray[i] + "】"); batchMessageTipsHeader.addResult(body); e.printStackTrace(); failure++; } }else { failure++; System.out.println("==========personArray[i]2:"+personArray[i]); body.setId(personArray[i]); body.setMuitTipsState(false); body.setMuitTipsMessage("未查询到北森入职单id【" +personInfo.getName() + "】"); batchMessageTipsHeader.addResult(body); } } catch (BOSException e) { System.out.println("==========personArray[i]3:"+personArray[i]); body.setId(personArray[i]); body.setMuitTipsState(false); body.setMuitTipsMessage("同步失败查询员工失败【" + personArray[i] + "】"); batchMessageTipsHeader.addResult(body); e.printStackTrace(); } catch (EASBizException e) { System.out.println("==========personArray[i]4:"+personArray[i]); body.setId(personArray[i]); body.setMuitTipsState(false); body.setMuitTipsMessage("同步失败查询员工失败【" + personArray[i] + "】"); batchMessageTipsHeader.addResult(body); e.printStackTrace(); } } } batchMessageTipsHeader.setBillId(ids); batchMessageTipsHeader.setFailureCount(failure); batchMessageTipsHeader.setSuccessCount(sucess); System.out.println("=========batchMessageTipsHeader:"+batchMessageTipsHeader.toString()); SUCCESS(batchMessageTipsHeader,request,response,"application/json;charset=UTF-8",ctx); return null; } public static void SUCCESS(Object object,ServletRequest request, ServletResponse response, String contentType,Context context) throws SHRWebException { response.setContentType(contentType); PrintWriter pw; try { pw = response.getWriter(); } catch (IOException var7) { throw new SHRWebException("can't open the output stream!"); } StringBuilder strSuccessJson = new StringBuilder(); strSuccessJson.append("{"); strSuccessJson.append("\"result\":\""); strSuccessJson.append("success"); strSuccessJson.append("\",\"data\":"); strSuccessJson.append(convertObjectToJson(context, object).toString()); String successMessage = (String)request.getAttribute("successMessage"); if (!StringUtils.isEmpty(successMessage)) { strSuccessJson.append(",\"successMessage\":\""); strSuccessJson.append(successMessage); strSuccessJson.append("\""); } strSuccessJson.append("}"); pw.flush(); pw.write(strSuccessJson.toString()); pw.flush(); } public static String convertObjectToJson(Context ctx, Object object) { if (object != null && !object.equals("")) { Gson gson = getGson(ctx); String result = gson.toJson(object); if (result == null) { return "\"\""; } else { result = processJsonResult(result); return result; } } else { return "\"\""; } } public static Gson getGson(Context ctx) { GsonBuilder builder = new GsonBuilder(); builder.serializeNulls(); builder.disableHtmlEscaping(); builder.serializeSpecialFloatingPointValues(); builder.registerTypeHierarchyAdapter(Date.class, new DateTypeAdapter()); builder.registerTypeHierarchyAdapter(Timestamp.class, new DateTypeAdapter()); builder.registerTypeHierarchyAdapter(BOSUuid.class, new BOSUuidTypeAdapter()); builder.registerTypeHierarchyAdapter(IObjectValue.class, new BosObjectTypeAdapter(ctx)); builder.registerTypeHierarchyAdapter(IObjectCollection.class, new BosObjectCollectionTypeAdapter(ctx)); builder.registerTypeHierarchyAdapter(OrgUnitInfo.class, new BosObjectTypeAdapter(ctx)); builder.registerTypeHierarchyAdapter(BizEnumValueDTO.class, new BizEnumAdapter()); builder.registerTypeHierarchyAdapter(Enum.class, new EnumTypeAdapter()); return builder.create(); } public static String processJsonResult(String result) { result = result.replace("${quote_2312415321232}", "\""); result = result.replace("\"${leftbracket_2312415321232}", "{"); result = result.replace("${leftbracket_2312415321232}", "{"); result = result.replace("${rightbracket_2312415321232}\"", "}"); result = result.replace("${rightbracket_2312415321232}", "}"); return result; } }