Browse Source

部门岗位人员资料修改

koul 4 years ago
parent
commit
f7d0281f4e

+ 7 - 4
src/main/java/com/uas/service/Impl/KmReviewWebserviceServiceImpl.java

@@ -103,7 +103,6 @@ public class KmReviewWebserviceServiceImpl implements KmReviewWebserviceService
                 form.setFlowParam(new JSONObject().toString());
 
                 // 流程表单
-                /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH24:mi:ss");*/
                 JSONObject json = new JSONObject();
                 JSONObject object = new JSONObject();
                 object.put("Id",rs.getString("dp_landrayid"));
@@ -115,15 +114,19 @@ public class KmReviewWebserviceServiceImpl implements KmReviewWebserviceService
                 json.put("fd_3730d441a0c6c8",rs.getString("va_endtime"));
                 json.put("fd_3730d41ece1a68",rs.getString("va_area"));
                 json.put("fd_3730d45920884a",rs.getString("va_othername"));
-                /*String driver = rs.getString("va_driver");
+                String driver = rs.getString("va_driver");
                 JSONObject person = new JSONObject();
                 if (driver!=null&&!"".equals(driver)){
                     Object data = baseDao.getFieldDataByCondition("employee", "em_mobile",
                             "em_name='" + driver + "'");
-                    person.put("LoginName",data.toString());
+                    if (data!=null&&!"".equals(data.toString())){
+                        person.put("LoginName",data.toString());
+                    }else {
+                        person.put("LoginName",driver);
+                    }
                 }else {
                     person.put("LoginName","");
-                }*/
+                }
                 json.put("fd_3730d464dd0726",rs.getString("va_driver"));
                 json.put("fd_3730d46eca287c",rs.getString("va_vecard"));
                 json.put("fd_3730d48679d568",rs.getString("va_address"));

+ 267 - 100
src/main/java/com/uas/service/Impl/SyncOrgElementsBaseInfoServiceImpl.java

@@ -70,7 +70,7 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
 
 
     /**
-     * 同步需要更新的组织架构信息
+     * 同步组织架构信息
      * @param setOrgContext 组织架构信息接入上下文
      * @return
      * @throws Exception
@@ -80,70 +80,61 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
         return getService().syncOrgElements(setOrgContext);
     }
 
+    /**
+     * 同步更新的组织架构信息
+     * @param setOrgContext 组织架构信息接入上下文
+     * @return
+     * @throws Exception
+     */
+    private SysSynchroSetResult updateOrgElement(SysSynchroSetOrgContext setOrgContext) throws Exception{
+        return getService().updateOrgElement(setOrgContext);
+    }
+
     /**
      * 封装数据
      * @return
      */
-    private JSONArray getOrgJsonData(String type){
+    private JSONArray getOrgJsonData(){
         JSONArray resultArray = new JSONArray();
-        // 《组织》 数据对象
-        SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name,or_subof ,or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho.or_headmancode=em_code where ho.or_id=hr.or_subof) as superleader,or_statuscode,or_landraysubid,to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code order by or_id");
+        // 《组织部门》 数据对象
+        SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl" +
+                "(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name ," +
+                "or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' " +
+                "then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho" +
+                ".or_headmancode=em_code where ho.or_id=hr.or_subof) as superLeader,or_statuscode,or_landraysubid," +
+                "to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else " +
+                "em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code where " +
+                "nvl(or_subof,0)>0 order by rn");
         while (orgs.next()) {
             JSONObject orgObj = new JSONObject();
             orgObj.put("id", orgs.getGeneralString("or_id")); // 唯一标识 (不允许为空)
             orgObj.put("lunid", orgs.getGeneralString("or_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,不允许为空)
             orgObj.put("name", orgs.getGeneralString("or_name")); // 名称 (不允许为空)
-            orgObj.put("type", "org"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
+            orgObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
             orgObj.put("no", orgs.getGeneralString("or_code")); // 编号 (可为空)
             orgObj.put("order", orgs.getGeneralString("rn")); // 排序号 (可为空)
             orgObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
-            if ("详情".equals(type)) {
-                String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
-                orgObj.put("parent", landraysubid); // 父组织 (可为空)
-                orgObj.put("thisleader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
-                orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
-                orgObj.put("superleader", orgs.getGeneralString("superleader")); // 组织上级上级领导 (可为空)
-                String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
-                        "or_statuscode");
-                if ("AUDITED".equals(statuscode)) {
-                    orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
-                }else {
-                    orgObj.put("isAvailable", false);
-                }
+            String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
+            orgObj.put("parent", landraysubid); // 父组织 (可为空)
+            orgObj.put("thisLeader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
+            orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
+            orgObj.put("superLeader", orgs.getGeneralString("superLeader")); // 组织上级上级领导 (可为空)
+            String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
+                    "or_statuscode");
+            if ("AUDITED".equals(statuscode)) {
+                orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
+            }else {
+                orgObj.put("isAvailable", false);
             }
             resultArray.add(orgObj); // 组织机构
         }
-        // 《部门》 数据对象
-        SqlRowList depts = baseDao.queryForRowSet("select row_number() over (order by dp_level) rn,case when nvl(dp_landrayid,' ')=' ' then to_char(dp_id) else Dp_Landrayid end dp_id, dp_code, dp_name, dp_status, dp_headmancode, dp_headmanname, dp_subof, dp_isleaf, dp_parentdpname, dp_level,(select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from department dp left join employee on em_code=dp.dp_headmancode where dp.dp_id=dept.dp_subof) as superleader,dp_statuscode,dp_landraysubid,to_char(dp_subof) dp_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id from department dept left join employee on em_code=dept.dp_headmancode order by dp_level");
-        while (depts.next()) {
-            JSONObject deptObj = new JSONObject();
-            deptObj.put("id", depts.getGeneralString("dp_id")); // 唯一标识 (不允许为空)
-            deptObj.put("lunid", depts.getGeneralString("dp_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
-            deptObj.put("name", depts.getGeneralString("dp_name")); // 名称 (不允许为空)
-            deptObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
-            deptObj.put("no", depts.getGeneralString("dp_code")); // 编号 (可为空)
-            deptObj.put("order", depts.getGeneralString("rn")); // 排序号 (可为空)
-            deptObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
-            if ("详情".equals(type)) {
-                String landraysubid = orgs.getObject("dp_landraysubid") == null ? orgs.getGeneralString("dp_subof") : orgs.getGeneralString("dp_landraysubid");
-                deptObj.put("parent", landraysubid); // 父部门 (可为空)
-                deptObj.put("thisleader", depts.getGeneralString("em_id")); // 部门架构领导 (可为空)
-                int level = depts.getGeneralInt("dp_level");
-                String memo = depts.getGeneralInt("or_path") == 0 ? "不是末级部门,部门层级" + level : "是末级部门,部门层级" + level;
-                deptObj.put("memo", memo); // 部门架构说明 (可为空)
-                deptObj.put("superleader", depts.getGeneralString("superleader")); // 部门上级领导 (可为空)
-                String statuscode = depts.getObject("dp_statuscode") == null ? "" : depts.getGeneralString("dp_statuscode");
-                if ("AUDITED".equals(statuscode)) {
-                    deptObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
-                }else {
-                    deptObj.put("isAvailable", false);
-                }
-            }
-            resultArray.add(deptObj); // 部门
-        }
 
         // 《岗位》 数据对象
-        SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_subof) jo_subof, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landraysubid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid from job left join employee on em_code=jo_headmancode order by jo_level");
+        SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_orgid) jo_orgid, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landrayorid," +
+                "case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid," +
+                "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id " +
+                "from job left join employee on em_code=jo_headmancode left join hrorg on jo_orgid=or_id" +
+                " order by rn");
         while (posts.next()) {
             JSONObject postObj = new JSONObject();
             postObj.put("id", posts.getGeneralString("jo_id")); // 唯一标识 (不允许为空)
@@ -153,35 +144,38 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
             postObj.put("no", posts.getGeneralString("jo_code")); // 编号 (可为空)
             postObj.put("order", posts.getGeneralString("rn")); // 排序号 (可为空)
             postObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
-            if ("详情".equals(type)) {
-                String landraysubid = orgs.getObject("jo_landraysubid") == null ? orgs.getGeneralString("jo_subof") : orgs.getGeneralString("jo_landraysubid");
-                postObj.put("parent", landraysubid); // 父部门 (可为空)
-                postObj.put("thisleader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
-                int level = posts.getGeneralInt("jo_level");
-                String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level : "所属组织" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
-                postObj.put("memo", memo); // 岗位架构说明 (可为空)
-                List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and  em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
+            postObj.put("parent", posts.getString("or_id")); // 父部门 (可为空)
+            postObj.put("thisLeader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
+            int level = posts.getGeneralInt("jo_level");
+            String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level :
+                    "所属组织部门" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
+            postObj.put("memo", memo); // 岗位架构说明 (可为空)
+            List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and  em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
 
-                JSONArray  persons=null;
-                if (data != null && data.size() > 0) {
-                    persons =JSONArray.parseArray(JSON.toJSONString(data));
+            JSONArray  persons=null;
+            if (data != null && data.size() > 0) {
+                persons =JSONArray.parseArray(JSON.toJSONString(data));
 
-                }
-                postObj.put("persons", persons); // 岗位包含人员 (可为空)
-                String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
-                        "jo_statuscode");
-                if ("AUDITED".equals(statuscode)) {
-                    postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
-                }else {
-                    postObj.put("isAvailable", false);
-                }
+            }
+            postObj.put("persons", persons); // 岗位包含人员 (可为空)
+            String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
+                    "jo_statuscode");
+            if ("AUDITED".equals(statuscode)) {
+                postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
+            }else {
+                postObj.put("isAvailable", false);
             }
             resultArray.add(postObj); // 岗位
         }
 
 
         // 《人员》 数据对象
-        SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode,em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class,case when nvl(dp_landrayid,' ')=' ' then to_char(dp_id) else Dp_Landrayid end dp_id from employee left join department on em_departmentcode=dp_code where nvl(em_islandray,0)=-1 order by em_id");
+        SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode," +
+                "em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class," +
+                "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,case when nvl" +
+                "(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id " +
+                "from employee left join job on em_defaulthsid=jo_id left join hrorg on em_defaultorid=or_id where " +
+                "nvl(em_islandray,0)=-1 order by rn");
         while (persons.next()) {
             JSONObject personObj = new JSONObject();
             // 唯一标识 (不允许为空)
@@ -192,36 +186,35 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
             personObj.put("no", persons.getGeneralString("em_code")); // 编号 (可为空)
             personObj.put("order", persons.getGeneralString("rn")); // 排序号 (可为空)
             personObj.put("keyword", persons.getGeneralString("em_name")); // 关键字 (内容格式不限制,可为空)
-            if ("详情".equals(type)) {
-                String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
-                if ("离职".equals(statuscode)) {
-                    personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
-                }else {
-                    personObj.put("isAvailable", true);
-                }
-                personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
-                personObj.put("parent", persons.getGeneralString("dp_id")); // 所在部门 (可为空)
-                List<String> data =
-                        baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id  where emp_id=" + persons.getGeneralInt("emid"), String.class);
-                JSONArray  jobs=null;
-                if (data != null && data.size() > 0) {
-                    jobs =JSONArray.parseArray(JSON.toJSONString(data));
+            String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
+            if ("离职".equals(statuscode)) {
+                personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
+            }else {
+                personObj.put("isAvailable", true);
+            }
+            personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
+            personObj.put("parent", persons.getGeneralString("or_id")); // 所在部门 (可为空)
+            List<String> data =
+                    baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id  where emp_id=" + persons.getGeneralInt("emid"), String.class);
+            data.add(persons.getString("jo_id"));
+            JSONArray  jobs=null;
+            if (data != null && data.size() > 0) {
+                jobs =JSONArray.parseArray(JSON.toJSONString(data));
 
-                }
-                personObj.put("posts", jobs); // 所属岗位
-                personObj.put("loginName", persons.getGeneralString("em_mobile")); //  登录名
-                String password = "";
-                if (persons.getObject("em_password") != null) {
-                    BASE64Encoder encoder = new BASE64Encoder();
-                    password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
-                }
-                personObj.put("password", password); // 密码,base64加密后的信息
-                personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
-                personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
-                personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
-                personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
-                personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
             }
+            personObj.put("posts", jobs); // 所属岗位
+            personObj.put("loginName", persons.getGeneralString("em_mobile")); //  登录名
+            String password = "";
+            if (persons.getObject("em_password") != null) {
+                BASE64Encoder encoder = new BASE64Encoder();
+                password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
+            }
+            personObj.put("password", password); // 密码,base64加密后的信息
+            personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
+            personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
+            personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
+            personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
+            personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
             resultArray.add(personObj); // 人员
         }
         return resultArray;
@@ -229,13 +222,17 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
 
     @Override
     public String sendSyncOrgElementsBaseInfo() {
+        updateDeptElementAll();
+        updatePostElementAll();
+        updatePersonElementAll();
         String res = "";
         // 定义组织架构信息接入上下文
         SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
         // 获取测试组织数据
-        JSONArray orgJsonData = getOrgJsonData("简略");
+        JSONArray orgJsonData = getOrgJsonData();
         // 将组织数据设置到组织架构信息接入上下文
         setOrgContext.setOrgJsonData(orgJsonData.toString());
+        setOrgContext.setAppName("UAS");
         logger.info(orgJsonData.toString());
         logger.info(setOrgContext.toString());
 
@@ -259,13 +256,17 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
 
     @Override
     public String sendSyncOrgElements() {
+        updateDeptElementAll();
+        updatePostElementAll();
+        updatePersonElementAll();
         String res = "";
         // 定义组织架构信息接入上下文
         SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
         // 获取测试组织数据
-        JSONArray orgJsonData = getOrgJsonData("详情");
+        JSONArray orgJsonData = getOrgJsonData();
         // 将组织数据设置到组织架构信息接入上下文
         setOrgContext.setOrgJsonData(orgJsonData.toString());
+        setOrgContext.setAppName("UAS");
         logger.info(orgJsonData.toString());
         logger.info(setOrgContext.toString());
         try {
@@ -278,12 +279,178 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
             }else if (result.getReturnState()==2){
                 res="同步蓝凌OA成功";
             }
-            System.out.println("请求状态:\n"+result.getReturnState()); // 0:未操作、1:失败、2:成功
-            System.out.println("消息:\n"+result.getMessage()); // 返回状态值为 0 时,该值返回空,返回状态值为 1 时,该值错误信息,返回状态值为 2 时,该值返回空
         } catch (Exception e) {
             res="同步蓝凌OA失败,接口异常,异常信息:"+e.getMessage();
             e.printStackTrace();
         }
         return res;
     }
+
+    /**
+     * 部门更新
+     */
+    @Override
+    public void updateDeptElementAll(){
+        SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl" +
+                "(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name ," +
+                "or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' " +
+                "then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho" +
+                ".or_headmancode=em_code where ho.or_id=hr.or_subof) as superLeader,or_statuscode,or_landraysubid," +
+                "to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else " +
+                "em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code where " +
+                "nvl(or_subof,0)>0 order by rn");
+        while (orgs.next()) {
+            JSONObject orgObj = new JSONObject();
+            orgObj.put("id", orgs.getGeneralString("or_id")); // 唯一标识 (不允许为空)
+            orgObj.put("lunid", orgs.getGeneralString("or_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,不允许为空)
+            orgObj.put("name", orgs.getGeneralString("or_name")); // 名称 (不允许为空)
+            orgObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
+            orgObj.put("no", orgs.getGeneralString("or_code")); // 编号 (可为空)
+            orgObj.put("order", orgs.getGeneralString("rn")); // 排序号 (可为空)
+            orgObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
+            String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
+            orgObj.put("parent", landraysubid); // 父组织 (可为空)
+            orgObj.put("thisLeader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
+            orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
+            orgObj.put("superLeader", orgs.getGeneralString("superLeader")); // 组织上级上级领导 (可为空)
+            String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
+                    "or_statuscode");
+            if ("AUDITED".equals(statuscode)) {
+                orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
+            }else {
+                orgObj.put("isAvailable", false);
+            }
+            updateOrgElement(orgObj,null,null);
+        }
+    }
+
+    /**
+     * 岗位更新
+     */
+    @Override
+    public void updatePostElementAll(){
+        SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_orgid) jo_orgid, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landrayorid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid,case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id from job left join employee on em_code=jo_headmancode left join hrorg on jo_orgid=or_id order by rn");
+        while (posts.next()) {
+            JSONObject postObj = new JSONObject();
+            postObj.put("id", posts.getGeneralString("jo_id")); // 唯一标识 (不允许为空)
+            postObj.put("lunid", posts.getGeneralString("jo_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
+            postObj.put("name", posts.getGeneralString("jo_name")); // 名称 (不允许为空)
+            postObj.put("type", "post"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
+            postObj.put("no", posts.getGeneralString("jo_code")); // 编号 (可为空)
+            postObj.put("order", posts.getGeneralString("rn")); // 排序号 (可为空)
+            postObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
+            postObj.put("parent", posts.getString("or_id")); // 父部门 (可为空)
+            postObj.put("thisLeader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
+            int level = posts.getGeneralInt("jo_level");
+            String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level :
+                    "所属组织部门" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
+            postObj.put("memo", memo); // 岗位架构说明 (可为空)
+            List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and  em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
+
+            JSONArray  persons=null;
+            if (data != null && data.size() > 0) {
+                persons =JSONArray.parseArray(JSON.toJSONString(data));
+
+            }
+            postObj.put("persons", persons); // 岗位包含人员 (可为空)
+            String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
+                    "jo_statuscode");
+            if ("AUDITED".equals(statuscode)) {
+                postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
+            }else {
+                postObj.put("isAvailable", false);
+            }
+            updateOrgElement(null,postObj,null);
+        }
+    }
+
+    /**
+     * 人员更新
+     */
+    @Override
+    public void updatePersonElementAll(){
+        SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode," +
+                "em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class," +
+                "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,case when nvl" +
+                "(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id " +
+                "from employee left join job on em_defaulthsid=jo_id left join hrorg on em_defaultorid=or_id where " +
+                "nvl(em_islandray,0)=-1 order by rn");
+        while (persons.next()) {
+            JSONObject personObj = new JSONObject();
+            // 唯一标识 (不允许为空)
+            personObj.put("id", persons.getGeneralString("em_id"));
+            personObj.put("lunid", persons.getGeneralString("em_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
+            personObj.put("name", persons.getGeneralString("em_name")); // 名称 (不允许为空)
+            personObj.put("type", "person"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
+            personObj.put("no", persons.getGeneralString("em_code")); // 编号 (可为空)
+            personObj.put("order", persons.getGeneralString("rn")); // 排序号 (可为空)
+            personObj.put("keyword", persons.getGeneralString("em_name")); // 关键字 (内容格式不限制,可为空)
+                String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
+                if ("离职".equals(statuscode)) {
+                    personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
+                }else {
+                    personObj.put("isAvailable", true);
+                }
+                personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
+                personObj.put("parent", persons.getGeneralString("or_id")); // 所在部门 (可为空)
+                List<String> data =
+                        baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id  where emp_id=" + persons.getGeneralInt("emid"), String.class);
+                data.add(persons.getString("jo_id"));
+                JSONArray  jobs=null;
+                if (data != null && data.size() > 0) {
+                    jobs =JSONArray.parseArray(JSON.toJSONString(data));
+
+                }
+                personObj.put("posts", jobs); // 所属岗位
+                personObj.put("loginName", persons.getGeneralString("em_mobile")); //  登录名
+                String password = "";
+                if (persons.getObject("em_password") != null) {
+                    BASE64Encoder encoder = new BASE64Encoder();
+                    password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
+                }
+                personObj.put("password", password); // 密码,base64加密后的信息
+                personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
+                personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
+                personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
+                personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
+                personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
+            updateOrgElement(null,null,personObj);
+        }
+    }
+
+    private void updateOrgElement(JSONObject deptJsonData,JSONObject postJsonData,JSONObject personJsonData) {
+        try {
+            // 定义组织架构信息接入上下文
+            SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
+            setOrgContext.setAppName("UAS");
+            if (deptJsonData!=null) {
+                // 将《部门》组织数据设置到组织架构信息接入上下文
+                setOrgContext.setOrgJsonData(deptJsonData.toString());
+                // 调用 WebService 接口,并接收请求返回的数据
+                SysSynchroSetResult deptResult = updateOrgElement(setOrgContext);
+                // 0:未操作、1:失败、2:成功
+                logger.info("请求状态:\n" + deptResult.getReturnState());
+            }
+
+            if (postJsonData!=null) {
+                // 将《岗位》组织数据设置到组织架构信息接入上下文
+                setOrgContext.setOrgJsonData(postJsonData.toString());
+                // 调用 WebService 接口,并接收请求返回的数据
+                SysSynchroSetResult postResult = updateOrgElement(setOrgContext);
+                // 0:未操作、1:失败、2:成功
+                logger.info("请求状态:\n" + postResult.getReturnState());
+            }
+
+            if (personJsonData!=null) {
+                // 将《人员》组织数据设置到组织架构信息接入上下文
+                setOrgContext.setOrgJsonData(personJsonData.toString());
+                // 调用 WebService 接口,并接收请求返回的数据
+                SysSynchroSetResult personResult = updateOrgElement(setOrgContext);
+                // 0:未操作、1:失败、2:成功
+                logger.info("请求状态:\n" + personResult.getReturnState());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 37 - 24
src/main/java/com/uas/service/Impl/SysNotifyTodoWebServiceImpl.java

@@ -76,21 +76,33 @@ public class SysNotifyTodoWebServiceImpl implements SysNotifyTodoWebService {
             JSONObject personObj = new JSONObject();
             // ERP标识
             personObj.put("LoginName", persons.getString("em_mobile"));
-            getTodoData(personObj.toString(),persons.getString("em_code"));
+            getLCTodoData(personObj.toString(),persons.getString("em_code"));
+            getTZTodoData(personObj.toString(),persons.getString("em_code"));
             getAlreadyData(personObj.toString(),persons.getString("em_code"));
         }
     }
 
-    private String getTodoData(String person,String cond) {
+    private String getLCTodoData(String person,String cond) {
         String res = "";
         // 定义组织架构信息接入上下文
         NotifyTodoGetContext context = new NotifyTodoGetContext();
-        // 获取测试组织数据
-        /*JSONArray jsonData = getJsonData();*/
         // 将组织数据设置到组织架构信息接入上下文
         context.setTargets(person);
         context.setType(1);
-        /*context.setOtherCond(cond);*/
+        return getTodoData(context,cond);
+    }
+
+
+    private String getTZTodoData(String person,String cond) {
+        // 定义组织架构信息接入上下文
+        NotifyTodoGetContext context = new NotifyTodoGetContext();
+        // 将组织数据设置到组织架构信息接入上下文
+        context.setTargets(person);
+        context.setType(2);
+        return getTodoData(context,cond);
+    }
+    private String getTodoData(NotifyTodoGetContext context,String cond){
+        String res = "";
         try {
             // 调用 WebService 接口,并接收请求返回的数据
             NotifyTodoAppResult result = syncNotifyData(context);
@@ -101,31 +113,35 @@ public class SysNotifyTodoWebServiceImpl implements SysNotifyTodoWebService {
             }else if (result.getReturnState()==2){
                 String message = result.getMessage();
                 List<String> sqls = new ArrayList<>();
-                baseDao.execute("delete from jprocess where nvl(jp_landrayid,' ')<>' ' and jp_status='待审批' and " +
-                        "jp_nodedealman='"+cond+"'");
                 if (message.indexOf("errorPage")==-1) {
                     JSONObject jsonObject = JSONObject.fromObject(message);
                     JSONArray docs = jsonObject.getJSONArray("docs");
+                    SqlRowList rs = baseDao.queryForRowSet("select jp_landrayid,jp_id,jp_processinstanceid from jprocess where nvl(jp_landrayid,' ')<>' ' and jp_status='待审批' and jp_nodedealman='" + cond + "'");
+                    while (rs.next()){
+                        if (message.indexOf(rs.getString("jp_landrayid"))==-1) {
+                            sqls.add("update jprocess set jp_status='已审批' where jp_id='"+rs.getString("jp_id")+"'");
+                            sqls.add("insert into jnode (jn_id,jn_name, jn_dealmanid,jn_processinstanceid,JN_DEALTIME, JN_DEALRESULT) values (jnode_seq.nextval,'" + cond + "','" + cond + "','" + rs.getString("jp_processinstanceid") + "',to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'详见蓝凌OA')");
+                        }
+                    }
                     for (int i = 0; i < docs.size(); i++) {
                         Object obj = docs.get(i);
                         JSONObject object = JSONObject.fromObject(obj);
                         String link = object.get("link") == null ? null : object.getString("link").replace("&", "'||chr(38)||'");
-                        sqls.add("insert into jprocess(jp_id, jp_name, jp_launcherid, jp_launchername, jp_form, " +
-                                "jp_launchtime, jp_table, jp_status, jp_url,jp_landrayid,jp_nodedealman,jp_codevalue," +
-                                "jp_processinstanceid,jp_nodename) values(process_seq.nextval,'" + object.getString("subject") + "','" + object.getString("creator") + "','" +
-                                object.getString("creatorName") + "','" + object.getString("key") + "',to_date('" + object.getString("createTime") + "','yyyy-MM-dd HH24:mi:ss'),'" +
-                                object.getString("modelName") + "','待审批','http://oa.seg.com.cn:8081" + link + "','" + object.getString("id") + "','" + cond + "','" + object.getString("moduleName") + "','" + object.getString("id") + "','" + cond + "')");
-
-
+                        if (baseDao.getCountByCondition("jprocess", "jp_landrayid='" + object.getString("id") + "'") == 0) {
+                            sqls.add("insert into jprocess(jp_id, jp_name, jp_launcherid, jp_launchername, jp_form, " +
+                                    "jp_launchtime, jp_table, jp_status, jp_url,jp_landrayid,jp_nodedealman,jp_codevalue," +
+                                    "jp_processinstanceid,jp_nodename) values(process_seq.nextval,'" + object.getString("subject") + "','" + object.getString("creator") + "','" +
+                                    object.getString("creatorName") + "','" + object.getString("key") + "',to_date('" + object.getString("createTime") + "','yyyy-MM-dd HH24:mi:ss'),'" +
+                                    object.getString("modelName") + "','待审批','http://oa.seg.com.cn:8081" + link + "','" + object.getString("id") + "','" + cond + "','" + object.getString("moduleName") + "','" + object.getString("id") + "','" + cond + "')");
+                        }
+                    }
+                } else {
+                    SqlRowList rowSet = baseDao.queryForRowSet("select jp_processinstanceid from jprocess where nvl(jp_landrayid,' ')<>' ' and jp_status='待审批' and jp_nodedealman='" + cond + "'");
+                    while (rowSet.next()) {
+                        sqls.add("update jprocess set jp_status='已审批' where nvl(jp_landrayid,' ')<>' ' and jp_nodedealman='" + cond + "' and jp_processinstanceid='"+rowSet.getString("jp_processinstanceid")+"'");
+                        sqls.add("insert into jnode (jn_id,jn_name, jn_dealmanid,jn_processinstanceid,JN_DEALTIME, JN_DEALRESULT) values (jnode_seq.nextval,'" + cond + "','" + cond + "','" + rowSet.getString("jp_processinstanceid") + "',to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'详见蓝凌OA')");
                     }
                 }
-                //else {
-//                    SqlRowList rowSet = baseDao.queryForRowSet("select jp_processinstanceid from jprocess where nvl(jp_landrayid,' ')<>' ' and jp_status='待审批' and jp_nodedealman='" + cond + "'");
-//                    while (rowSet.next()) {
-//                       sqls.add("update jprocess set jp_status='已审批' where nvl(jp_landrayid,' ')<>' ' and jp_nodedealman='" + cond + "' and jp_processinstanceid='"+rowSet.getString("jp_processinstanceid")+"'");
-//                        baseDao.execute("insert into jnode (jn_id,jn_name, jn_dealmanid,jn_processinstanceid,JN_DEALTIME, JN_DEALRESULT) values (jnode_seq.nextval,'" + cond + "','" + cond + "','" + rowSet.getString("jp_processinstanceid") + "',to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'详见蓝凌OA')");
-//                    }
-//                }
                 if (sqls != null && sqls.size() > 0) {
                     baseDao.execute(sqls);
                 }
@@ -143,12 +159,9 @@ public class SysNotifyTodoWebServiceImpl implements SysNotifyTodoWebService {
         String res = "";
         // 定义组织架构信息接入上下文
         NotifyTodoGetContext context = new NotifyTodoGetContext();
-        // 获取测试组织数据
-        /*JSONArray jsonData = getJsonData();*/
         // 将组织数据设置到组织架构信息接入上下文
         context.setTargets(person);
         context.setType(4);
-        /*context.setOtherCond(cond);*/
         try {
             // 调用 WebService 接口,并接收请求返回的数据
             NotifyTodoAppResult result = syncNotifyData(context);

+ 6 - 0
src/main/java/com/uas/service/SyncOrgElementsBaseInfoService.java

@@ -13,4 +13,10 @@ public interface SyncOrgElementsBaseInfoService {
 
     String sendSyncOrgElements();
 
+    void updateDeptElementAll();
+
+    void updatePostElementAll();
+
+    void updatePersonElementAll();
+
 }

+ 1 - 1
src/main/java/com/uas/task/ScheduleTask.java

@@ -35,7 +35,7 @@ public class ScheduleTask {
     public void saveSyncOrgElementsBaseInfo() {
         logger.info("上传组织架构资料开始");
         Date date = new Date();
-        /*syncOrgElementsBaseInfoService.sendSyncOrgElementsBaseInfo();*/
+        //syncOrgElementsBaseInfoService.sendSyncOrgElementsBaseInfo();
         syncOrgElementsBaseInfoService.sendSyncOrgElements();
         logger.info("上传组织架构资料结束:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
 

+ 1 - 1
src/main/resources/application-prod.yml

@@ -49,7 +49,7 @@ Task:
   OrgMethod: saveSyncOrgElementsBaseInfo
   OrgCron: 0 0 0/1 * * ?
   NotifyMethod: syncNotifyData
-  NotifyCron: 0 0/3 * * * ?
+  NotifyCron: 0 0/5 * * * ?
   SENDYCSQMethod: sendYCSQ
   SENDYCSQCron: 0 0/30 * * * ?
   SENDJDAPMethod: sendJDAP