diff --git a/main/java/shkd/bamp/base/task/DobeDWpersonTask.java b/main/java/shkd/bamp/base/task/DobeDWpersonTask.java index 83d4444..2e29f50 100644 --- a/main/java/shkd/bamp/base/task/DobeDWpersonTask.java +++ b/main/java/shkd/bamp/base/task/DobeDWpersonTask.java @@ -48,6 +48,9 @@ public class DobeDWpersonTask extends AbstractTask implements Plugin { //更新启用状态分配规则专用为禁用 private static final String updateDisable = "update t_sec_user set fk_qeug_disable=2179899908641806336 where fenable='0' and fk_qeug_disable=0;"; + //更新人员绑定OA成功的标记 + private static final String updateFlag = "update t_sec_user set fk_qeug_flag='1' where fnumber=?;"; + @Override public void execute(RequestContext requestContext, Map map) throws KDException { OkHttpClient client = new OkHttpClient(); @@ -242,8 +245,12 @@ public class DobeDWpersonTask extends AbstractTask implements Plugin { } if(addList.size() > 0){ UserServiceHelper.add(addList); - List userinfos = new ArrayList<>(); + List userinfos = new ArrayList<>(1); DynamicObject userinfo = null; + String billNo = "person-new-bid"; + String thirdPostjson;//OA绑定返回结果 + JSONObject jsonObject;//OA绑定返回结果json对象 + String oaToken = OAUtils.getOaToken(billNo); //判断执行结果 for (UserParam result : addList) { if (!result.isSuccess()) { @@ -252,27 +259,30 @@ public class DobeDWpersonTask extends AbstractTask implements Plugin { userinfo = BusinessDataServiceHelper.newDynamicObject(entityName);; userinfo.set("number",result.getDataMap().get("number"));//人员编号 userinfo.set("name",result.getDataMap().get("name"));//人员姓名 + userinfos.clear(); userinfos.add(userinfo); + if (!DobeDWUtils.isEmpty(oaToken)) { + thirdPostjson = OAUtils.thirdpartyUser(userinfos, oaToken, billNo); + //处理OA绑定结果,将处理成功的人员打上标记 + if (!DobeDWUtils.isEmpty(thirdPostjson)) { + jsonObject = JSONObject.parseObject(thirdPostjson); + if(jsonObject.getBoolean("success")){ + DB.update(DBRoute.of("sys"), updateFlag, new Object[]{userinfo.getString("number")}); + } + }else{ + log.info("OA绑定返回值为空,人员编号"+userinfo.getString("number")); + } + } } } - //处理OA人员绑定 - if(userinfos.size() > 0){ - String billNo = "person-new-bid"; - //获取token - String oaToken = OAUtils.getOaToken(billNo); - if (!DobeDWUtils.isEmpty(oaToken)) { - OAUtils.thirdpartyUser(userinfos, oaToken, billNo); - } - } - } -// if(updateList.size() > 0){ -// UserServiceHelper.update(updateList); -// //判断执行结果 -// for (UserParam result : updateList) { -// if (!result.isSuccess()) { -// log.info(String.format("人员修改异常:%s", result.getMsg())); + //批量处理OA人员绑定 +// if(userinfos.size() > 0){ +// //获取token +// String oaToken = OAUtils.getOaToken(billNo); +// if (!DobeDWUtils.isEmpty(oaToken)) { +// OAUtils.thirdpartyUser(userinfos, oaToken, billNo); // } // } -// } + } } } \ No newline at end of file diff --git a/main/java/shkd/repc/task/DobePersonOARealtionTask.java b/main/java/shkd/repc/task/DobePersonOARealtionTask.java new file mode 100644 index 0000000..348beec --- /dev/null +++ b/main/java/shkd/repc/task/DobePersonOARealtionTask.java @@ -0,0 +1,70 @@ +package shkd.repc.task; + +import com.alibaba.fastjson.JSONObject; +import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; +import kd.bos.exception.KDException; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; +import shkd.utils.DobeDWUtils; +import shkd.utils.OAUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 金蝶人员与OA用户绑定后台任务插件 yxl 20250409 + */ +public class DobePersonOARealtionTask extends AbstractTask implements Plugin { + + private static final String entityName = "bos_user";//系统库 表名 t_sec_user + + private static Log logger = LogFactory.getLog(DobePersonOARealtionTask.class); + //更新人员绑定OA成功的标记 + private static final String updateFlag = "update t_sec_user set fk_qeug_flag='1' where fnumber=?;"; + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + //查找未绑定成功的人员 + QFilter dwFilter = new QFilter("source", QCP.equals, "dw"); + QFilter enableFilter = new QFilter("qeug_flag", QCP.equals, "0"); + DynamicObject[] dos = BusinessDataServiceHelper.load(entityName,"id,number,name",new QFilter[]{dwFilter.and(enableFilter)}); + if(dos.length > 0){ + logger.info("本次需要绑定用户个数"+dos.length); + DynamicObject userinfo; + List userinfos = new ArrayList<>(1); + String thirdPostjson;//OA绑定返回结果 + JSONObject jsonObject;//OA绑定返回结果json对象 + String billNo = "person-task-bid"; + //获取token,调用OA人员绑定接口 + String oaToken = OAUtils.getOaToken(billNo); + for (int i = 0; i < dos.length; i++) { + userinfo = dos[i]; + userinfos.clear(); + userinfos.add(userinfo); + if (!DobeDWUtils.isEmpty(oaToken)) { + thirdPostjson = OAUtils.thirdpartyUser(userinfos, oaToken, billNo); + //处理OA绑定结果,将处理成功的人员打上标记 + if (!DobeDWUtils.isEmpty(thirdPostjson)) { + jsonObject = JSONObject.parseObject(thirdPostjson); + if(jsonObject.getBoolean("success")){ + DB.update(DBRoute.of("sys"), updateFlag, new Object[]{userinfo.getString("number")}); + } + }else{ + logger.info("OA绑定返回值为空,人员编号"+userinfo.getString("number")); + } + } + } + }else{ + logger.info("现有用户已全部绑定,无需处理"); + } + } +}