package com.kingdee.eas.custom.wamke.syncdata.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.log4j.Priority; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.kingdee.bos.Context; import com.kingdee.bos.dao.IObjectPK; import com.kingdee.eas.custom.wamke.syncdata.ButterflyPrincipalInfo; import com.kingdee.eas.framework.CoreBaseInfo; import com.kingdee.eas.util.app.DbUtil; import com.kingdee.jdbc.rowset.IRowSet; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.web.handler.EditHandler; public class ButterflyPrincipalEditHandler extends EditHandler { private static Logger logger = Logger.getLogger(ButterflyPrincipalEditHandler.class); @Override protected IObjectPK runSaveData(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws Exception { JSONObject jsonObj = JSON.parseObject(request.getParameter("model")); String personId = jsonObj.get("personId").toString(); ButterflyPrincipalInfo info = (ButterflyPrincipalInfo)model; //校验是否已存在相面的关联人员,蝶城,负责人类型 String personType = mappingPersonType(model.get("personType").toString()); checkExistRelation(personId, info.getButterflyCode(), personType); IObjectPK pk = super.runSaveData(request, response, model); //更新负责人姓名和编号,蝶城 if( ( info!=null &&info.getId() != null ) || pk != null ){ String id = pk !=null ? pk.toString(): info.getId().toString(); afterRunSaveData( id, personType, personId); } return pk; } private void afterRunSaveData(String id, String personType, String personId) throws Exception{ //更新负责人类型 Context ctx = SHRContext.getInstance().getContext(); StringBuilder sb = new StringBuilder(); //获取ID //获取人员 String sql = "SELECT TOP 1 FName_L2 AS personName, FNumber AS personCode FROM T_BD_Person WHERE FId = '"+ personId +"'"; logInfo("执行SQL"+sql); IRowSet rowSet = DbUtil.executeQuery(ctx,sql); String personName = ""; String personCode = ""; while(rowSet.next()){ personName = rowSet.getString("personName"); personCode = rowSet.getString("personCode"); break; } sb.append(" UPDATE CT_WK_ButterflyPrincipal SET CFPersonType = N'").append(personType) .append("', CFPersonName = N'").append(personName).append("' ") .append(", CFPersonCode = N'").append(personCode).append("' ") .append(" WHERE CT_WK_ButterflyPrincipal.FID = '").append(id).append("'"); logInfo("执行SQL"+sb.toString()); DbUtil.execute(ctx, sb.toString()); } private void logInfo(String msg){ logger.log(Priority.DEBUG, msg); } /** * 校验是否存在相同的关系 * @throws Exception */ private void checkExistRelation(String personId, String butterflyCode, String personType) throws Exception{ String sql = "SELECT COUNT(1) AS num FROM CT_WK_ButterflyPrincipal WHERE CFPersonId = '"+personId+"' AND CFPersonType = '" +personType+"' AND CFButterflyCode = '"+butterflyCode+"'"; Context ctx = SHRContext.getInstance().getContext(); IRowSet rowSet = DbUtil.executeQuery(ctx, sql); while(rowSet.next()){ if(rowSet.getInt("num")>0){ throw new SHRWebException("已存在相同的负责人关系"); } } } private String mappingPersonType(String webPeronType){ if(webPeronType.equals("人事运营")){ return "PersonnelOperation"; } if(webPeronType.equals("人事主管")){ return "PersonnelSupervisor"; } return webPeronType; } }