Ver código fonte

Merge branch 'master' of http://111.75.220.136:10030/turborao/jyyy

lisheng 1 dia atrás
pai
commit
a0d5371b57

+ 30 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PublicReimburseBillFormPlugin.java

@@ -87,10 +87,40 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
                         this.getModel().setValue("nckd_jywithhold",false);
                     }
                 }
+
+                //是否分摊处理
+                setIsShareValue();
             } else {
                 this.getModel().setValue("nckd_jywithhold",false);
             }
+        } else if("org".equals(fieldKey)){
+            setIsShareValue();
+        }
+    }
+
+    /**
+     * 设置是否分摊     *
+     */
+    private void setIsShareValue(){
+        DynamicObject dept = (DynamicObject) this.getModel().getValue("org");
+        DynamicObject item = (DynamicObject) this.getModel().getValue("nckd_expenseitem");
+        boolean isShare = false;
+        if(dept != null && item != null){
+            Long deptId = dept.getLong("id");
+            item = BusinessDataServiceHelper.loadSingle(item.getPkValue(), item.getDynamicObjectType().getName(), "id,nckd_sharedep");
+            DynamicObjectCollection sharedepts = item.getDynamicObjectCollection("nckd_sharedep");
+
+            if(sharedepts != null && sharedepts.size() > 0){
+                for(DynamicObject sharedept : sharedepts){
+                    if(deptId.compareTo(sharedept.getLong("fbasedataid_id")) == 0){
+                        isShare = true;
+                        break;
+                    }
+                }
+            }
         }
+
+        this.getModel().setValue("isbeforeshare", isShare);
     }
 
     @Override

+ 26 - 1
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/swc/hcdm/formplugin/web/AdjustJobBillEdit.java

@@ -11,6 +11,7 @@ import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.dataentity.resource.ResManager;
+import kd.bos.dataentity.utils.ObjectUtils;
 import kd.bos.entity.datamodel.IDataModel;
 import kd.bos.entity.datamodel.ListSelectedRow;
 import kd.bos.entity.datamodel.ListSelectedRowCollection;
@@ -607,7 +608,15 @@ public class AdjustJobBillEdit extends HRDataBaseEdit implements BeforeF7SelectL
                         Set<Long> ids = (Set)permissionHrBuMap.get("PermissionHrBuIds");
                         if (superUser || ids.contains(entryGradeId)) {
                             model.setValue("hrbu", entryGradeId, rowNum);
-                            model.setValue("job", empJobObj.getLong("job.id"), rowNum);
+                            /**
+                             * 2025-07-30 Tyx 因业务做调动申请时,只变更岗位/职位,不变更职级职等,人员档案中职级职等不会生成新数据
+                             * 这里改成取人员最新任职的职位/职级方案/职等方案
+                             */
+                            // 人员ID
+                            Long personId = changeRowObj.getLong("person.id");
+                            // 根据人员ID获取最新任职信息上的职位ID
+                            Long jobId = getLatestJobIdByPersonId(personId);
+                            model.setValue("job", jobId, rowNum);
                             model.setValue("seqfamclass", seqFamilyClass, rowNum);
                             DynamicObject entryRowEntity = this.getModel().getEntryRowEntity("changeentry", rowNum);
                             Long jobGradeScmId = formService.getJobGradeOrLevelScm(entryRowEntity.getDynamicObject("job"), "jobgradescm");
@@ -789,4 +798,20 @@ public class AdjustJobBillEdit extends HRDataBaseEdit implements BeforeF7SelectL
     public void entryGridBindData(EntryGridBindDataEvent e) {
         this.setEntryEnable();
     }
+
+    public Long getLatestJobIdByPersonId(Long personId) {
+        QFilter filter = QFilterUtil.getCurrentQf();
+        filter.and("isprimary", QCP.equals, "1");
+        filter.and("person.id", QCP.equals, personId);
+        filter.and("startdate", QCP.less_equals, new Date());
+        filter.and("enddate", QCP.large_equals, new Date());
+        DynamicObject dyn = QueryServiceHelper.queryOne("hrpi_empposorgrel", "job.id", new QFilter[]{filter});
+        if(ObjectUtils.isEmpty(dyn)) {
+            return 0L;
+        }
+        else {
+            return dyn.getLong("job.id");
+        }
+    }
+
 }

+ 1 - 1
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/task/SyncPerformanceOATask.java

@@ -20,6 +20,6 @@ public class SyncPerformanceOATask extends AbstractTask implements Plugin {
     @Override
     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
         log.info("-------- 开始同步OA绩效数据 --------");
-        SyncOAHelper.syncPerformanceData();
+        SyncOAHelper.syncPerformanceData(map);
     }
 }

+ 67 - 19
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/task/util/SyncOAHelper.java

@@ -30,12 +30,12 @@ public class SyncOAHelper {
     private static final String PERSON_ENTITY = "hrpi_person";
     public static final String PERFORMANCE_ENTITY = "nckd_hrpi_performan";
 
-    public static Map<String, String> syncPerformanceData() {
+    public static Map<String, String> syncPerformanceData(Map<String, Object> map) {
         Map<String, String> result = new HashMap<>();
-        Map<String, String> mapentity = CommonHelperUtils.getCommonParams("OA-Test");
+        Map<String, String> mapentity = CommonHelperUtils.getCommonParams("OA-Performance");
         String code = getCode(mapentity);
         String accessToken = getToken(mapentity, code);
-        JSONArray totalJSONArray = getData(mapentity, accessToken);
+        JSONArray totalJSONArray = getData(mapentity, accessToken, map);
         dealPerformanceData(totalJSONArray);
         return result;
     }
@@ -119,7 +119,7 @@ public class SyncOAHelper {
         return token;
     }
 
-    public static JSONArray getData (Map<String, String> mapentity, String token) {
+    public static JSONArray getData (Map<String, String> mapentity, String token, Map<String, Object> map) {
         try {
             String post_getperformance_url = mapentity.get("getperformance");
             String param_secretkey = mapentity.get("secret_key");
@@ -139,7 +139,7 @@ public class SyncOAHelper {
             int pageNo = 1;
             int pageSize = 200;
             while(status) {
-                String response = getPerformanceData(performanceUrl, param_operator, header, pageNo, pageSize);
+                String response = getPerformanceData(performanceUrl, param_operator, header, pageNo, pageSize, map, mapentity);
                 JSONObject responseData = JSONObject.parseObject(response);
                 JSONObject dataJson = responseData.getJSONObject("datajson");
                 JSONArray datas = dataJson.getJSONArray("datas");
@@ -156,8 +156,8 @@ public class SyncOAHelper {
         }
     }
 
-    public static String getPerformanceData (StringBuilder performanceUrl, String operator, Map<String, String> header, int pageNo, int pageSize) throws IOException {
-        String param = getPerformanceBody(operator, pageNo, pageSize);
+    public static String getPerformanceData (StringBuilder performanceUrl, String operator, Map<String, String> header, int pageNo, int pageSize, Map<String, Object> map, Map<String, String> mapentity) throws IOException {
+        String param = getPerformanceBody(operator, pageNo, pageSize, map, mapentity);
         log.info("请求OA 接口:" + performanceUrl.toString());
         log.info("请求OA data:" + param);
         String response = KHttpClientUtils.postjson(performanceUrl.toString(), header, param);
@@ -210,19 +210,29 @@ public class SyncOAHelper {
             dyn.set("nckd_oaid", oaId);
             dynList.add(dyn);
         }
-        DynamicObject[] dynCols = dynList.stream().toArray(DynamicObject[]::new);
-
-        HisVersionParamBo hisVersionParamBo = new HisVersionParamBo();
-        hisVersionParamBo.setOperateType(EnumHisOperateType.NO_TIME_SAVE_VERSION.getType());
-        hisVersionParamBo.setEntityNumber(PERFORMANCE_ENTITY);
-        hisVersionParamBo.setHisDyns(dynCols);
-        HisModelController hisModelController = HisModelController.getInstance();
-        HisResponse<VersionChangeRespData> hisResponse = hisModelController.noLineTimeHisVersionChange(hisVersionParamBo);
-
-        log.info("1");
+        log.info("共查询:{}条,去重后:{}条", datas.size(), dynList.size());
+        if(dynList.size() > 0) {
+            DynamicObject[] dynCols = dynList.stream().toArray(DynamicObject[]::new);
+            HisVersionParamBo hisVersionParamBo = new HisVersionParamBo();
+            hisVersionParamBo.setOperateType(EnumHisOperateType.NO_TIME_SAVE_VERSION.getType());
+            hisVersionParamBo.setEntityNumber(PERFORMANCE_ENTITY);
+            hisVersionParamBo.setHisDyns(dynCols);
+            HisModelController hisModelController = HisModelController.getInstance();
+            HisResponse<VersionChangeRespData> hisResponse = hisModelController.noLineTimeHisVersionChange(hisVersionParamBo);
+            log.info(hisResponse.toString());
+        }
     }
 
-    public static String getPerformanceBody(String operator, int pageNo, int pageSize)
+    /**
+     *
+     * @param operator
+     * @param pageNo
+     * @param pageSize
+     * @param param     调度作业上的参数
+     * @param mapentity commonparam里的参数
+     * @return
+     */
+    public static String getPerformanceBody(String operator, int pageNo, int pageSize, Map<String, Object> param, Map<String, String> mapentity)
     {
         // 构建 requestHead 对象
         JSONObject requestHead = new JSONObject();
@@ -240,7 +250,9 @@ public class SyncOAHelper {
         // 构建 datajson 对象
         JSONObject datajsonParent = new JSONObject();
         JSONObject datajson = new JSONObject();
-        datajson.put("mainTable", new JSONObject()); // mainTable 是一个空对象
+        JSONObject mainTable = new JSONObject();
+        getMainTable(mainTable, param, mapentity);
+        datajson.put("mainTable", mainTable);
         datajson.put("pageInfo", pageInfo);
         datajson.put("header", header);
         datajsonParent.put("datajson", datajson);
@@ -266,6 +278,42 @@ public class SyncOAHelper {
         return rootJson.toString();
     }
 
+    public static void getMainTable(JSONObject mainTable, Map<String, Object> param, Map<String, String> mapentity) {
+        //获取是年度还是季度
+        String typeStr = param.get("type").toString();
+        String typeId = mapentity.get(typeStr + "_type");
+        mainTable.put("pgzq", typeId);
+
+        String year = "";
+        String zq = "";
+        String zqId = "";
+        boolean isAuto = Boolean.valueOf(param.get("isAuto").toString());
+        //如果isAuto = true:year = 当前日期上月所在年份,zq = 当前日期上月 或者 当前日期上月所在季度
+        if(isAuto) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            calendar.add(Calendar.DAY_OF_MONTH, -1);
+            year = String.valueOf(calendar.get(Calendar.YEAR));
+            if(typeStr.equals("month")) {
+                zq = String.valueOf(calendar.get(Calendar.MONTH) + 1);
+            }
+            else if (typeStr.equals("season")) {
+                int month = calendar.get(Calendar.MONTH);
+                int quarter = (month / 3) + 1;
+                zq = String.valueOf(quarter);
+            }
+            zqId = mapentity.get(typeStr + zq);
+        }
+        //如果isAuto = false; year和zq都取调度作业上参数值
+        else {
+            year = param.get("year").toString();
+            zq = typeStr + param.get("zq").toString();
+            zqId = mapentity.get(zq);
+        }
+        mainTable.put("nf", year);
+        mainTable.put("zq", zqId);
+    }
 
 
 }