Ver Fonte

Merge remote-tracking branch 'origin/master'

wyc há 4 dias atrás
pai
commit
4fa3d8570c

+ 35 - 7
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsBasePlugin.java

@@ -1,17 +1,17 @@
 package nckd.jxccl.hr.tsc.plugin.form;
 
+import kd.bos.bill.OperationStatus;
 import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.entity.datamodel.events.BizDataEventArgs;
 import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.servicehelper.user.UserServiceHelper;
-
 import kd.bos.base.AbstractBasePlugIn;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.sdk.plugin.Plugin;
-
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.swc.helper.SWCHelper;
+
+import java.util.EventObject;
 import java.util.List;
 
 /**
@@ -22,12 +22,11 @@ import java.util.List;
 @SuppressWarnings("unused")
 public class AnnouncementsBasePlugin extends AbstractBasePlugIn implements Plugin {
 
+
     @Override
-    public void createNewData(BizDataEventArgs e) {
-        super.createNewData(e);
+    public void afterCreateNewData(EventObject e) {
 
         Long userId = UserServiceHelper.getCurrentUserId();
-
         DynamicObject personUserDyn = SWCHelper.queryOne(FormConstant.HRPI_PERSONUSERREL, "employee.id","user",userId);
 
         Long empId = 0L;
@@ -47,6 +46,8 @@ public class AnnouncementsBasePlugin extends AbstractBasePlugIn implements Plugi
         if(empDyns != null && empDyns.length > 0){
             Long companyId = empDyns[0].getLong("company.id");
             this.getModel().setValue("nckd_hradminorg", companyId);
+            this.getModel().setValue("nckd_billstatus", "A");
+            this.getModel().setValue("nckd_istop", false);
         }
 
     }
@@ -55,7 +56,7 @@ public class AnnouncementsBasePlugin extends AbstractBasePlugIn implements Plugi
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         FormOperate source = (FormOperate)args.getSource();
         String formOp = source.getOperateKey();
-        DynamicObject data = this.getModel().getDataEntity();
+        DynamicObject data = this.getModel().getDataEntity(true);
         String  billstatus =  data.getString("nckd_billstatus");
         HRBaseServiceHelper hrBaseServiceHelper = new HRBaseServiceHelper(FormConstant.NCKD_ANNOUNCEMENTS);
         if ("publish".equals(formOp)) {
@@ -84,4 +85,31 @@ public class AnnouncementsBasePlugin extends AbstractBasePlugIn implements Plugi
         }
     }
 
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+        DynamicObject data = this.getModel().getDataEntity(true);
+        setEnable(data);
+    }
+
+    public void setEnable(DynamicObject data) {
+        String  billstatus =  data.getString("nckd_billstatus");
+        if("A".equals(billstatus)){
+            this.getView().setStatus(OperationStatus.EDIT);
+            this.getView().setEnable(Boolean.TRUE, "nckd_downdate");
+            this.getView().setVisible(Boolean.TRUE, "bar_save");
+            this.getView().setVisible(Boolean.TRUE, "bar_modify");
+            this.getView().setVisible(Boolean.TRUE, "nckd_publish");
+            this.getView().setVisible(Boolean.FALSE, "nckd_withdrawn");
+        }else {
+            this.getView().setStatus(OperationStatus.VIEW);
+            this.getView().setEnable(Boolean.FALSE, "nckd_downdate");
+            this.getView().setVisible(Boolean.FALSE, "bar_save");
+            this.getView().setVisible(Boolean.FALSE, "bar_delete");
+            this.getView().setVisible(Boolean.FALSE, "bar_modify");
+            this.getView().setVisible(Boolean.FALSE, "nckd_publish");
+            this.getView().setVisible(Boolean.TRUE, "nckd_withdrawn");
+
+        }
+    }
 }

+ 89 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsListPlugin.java

@@ -0,0 +1,89 @@
+package nckd.jxccl.hr.tsc.plugin.form;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.EntityMetadataCache;
+import kd.bos.entity.MainEntityType;
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.servicehelper.user.UserServiceHelper;
+import kd.sdk.plugin.Plugin;
+import nckd.jxccl.base.common.constant.FormConstant;
+
+/**
+ * 政策公告列表插件
+ * @author turborao
+ * 时间 2026/1/13 16:05
+ */
+@SuppressWarnings("unused")
+public class AnnouncementsListPlugin extends AbstractListPlugin implements Plugin {
+
+    public void afterDoOperation(AfterDoOperationEventArgs args) {
+        super.afterDoOperation(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String key = formOperate.getOperateKey();
+        switch (key) {
+            case "publish":
+                setBillStatus("C",key);
+                break;
+            case "withdraw":
+                setBillStatus("A",key);
+                break;
+            case "top":
+                setBillStatus("A",key);
+                break;
+            case "untop":
+                setBillStatus("A",key);
+                break;
+            case "takedown":
+                setBillStatus("A",key);
+                break;
+        }
+    }
+
+    /**
+     * 设置单据状态
+     * @param billStatus
+     * A	待处理
+     * D	处理中
+     * C	已处理
+     * F	已忽略
+     */
+    public void setBillStatus(String billStatus,String operateKey) {
+        ListSelectedRowCollection selectedRows = this.getSelectedRows();
+        MainEntityType entityType= EntityMetadataCache.getDataEntityType(FormConstant.NCKD_ANNOUNCEMENTS);
+        DynamicObject[] billDyns = BusinessDataServiceHelper.load(selectedRows.getPrimaryKeyValues(), entityType);
+        for (DynamicObject billDyn : billDyns){
+            String billno = billDyn.getString("billno");
+            if(operateKey.equals("takedown") ){
+                billDyn.set("nckd_billstatus", billStatus);
+            }
+            if(operateKey.equals("withdraw") ){
+                billDyn.set("nckd_billstatus", billStatus);
+                billDyn.set("nckd_publishdate", null);
+                billDyn.set("nckd_publishuser", null);
+            }
+            if(operateKey.equals("publish") ){
+                billDyn.set("nckd_billstatus", "C");
+                billDyn.set("nckd_publishdate", new java.util.Date());
+                billDyn.set("nckd_publishuser", UserServiceHelper.getCurrentUserId());
+            }
+            if(operateKey.equals("untop") ){
+                billDyn.set("nckd_istop", false);
+            }
+            if(operateKey.equals("top") ){
+                billDyn.set("nckd_istop", true);
+            }
+        }
+
+        Object[] update = SaveServiceHelper.save(billDyns);
+        this.getView().showSuccessNotification(update.length + "条,操作成功", 3000);
+
+        this.getView().updateView();
+
+    }
+
+}

+ 29 - 28
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/form/ExaminProjectResultListPlugin.java

@@ -46,6 +46,7 @@ import nckd.jxccl.base.common.utils.DateTimeUtils;
 import nckd.jxccl.base.swc.helper.SWCHelper;
 import nckd.jxccl.opmc.pm.helper.PerfManagerHelper;
 import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.math.BigDecimal;
@@ -95,37 +96,37 @@ public class ExaminProjectResultListPlugin extends AbstractListPlugin {
     public void closedCallBack(ClosedCallBackEvent e) {
         super.closedCallBack(e);
         String actionId = e.getActionId();
-//        if (StringUtils.equals(actionId, "importData")) {
-//            Object returnData = e.getReturnData();
-//            if (ObjectUtils.isNotEmpty(returnData)) {
-//                this.getView().invokeOperation("refresh");
-//            }
-//        }
-
-
-        Map returnData;
-        if ("importData".equals(actionId)) {
-            returnData = (Map) e.getReturnData();
-            if (returnData == null) {
-                return;
-            }
-            if ((Boolean) returnData.get("isOk")) {
-                int totalCount = Integer.parseInt(returnData.get("totalCount").toString());
-                Long importTaskId = (Long) returnData.get("importTaskId");
-                String cacheKey = (String) returnData.get("cacheKey");
-                String caption = ResManager.loadKDString("导入看板", "ImportTaskGuideOpereateBillList_33", "swc-hsas-formplugin", new Object[0]);
-                this.openProgressPage(totalCount, importTaskId, "22", "importingData", caption, cacheKey);
-            }
-        } else if ("importingData".equals(actionId)) {
-            returnData = (Map) e.getReturnData();
-            if (returnData != null && !returnData.isEmpty()) {
-                this.openImportingView(returnData);
-            } else {
+        if (StringUtils.equals(actionId, "importData")) {
+            Object returnData = e.getReturnData();
+            if (ObjectUtils.isNotEmpty(returnData)) {
                 this.getView().invokeOperation("refresh");
             }
-        } else {
-            this.getView().invokeOperation("refresh");
         }
+
+
+//        Map returnData;
+//        if ("importData".equals(actionId)) {
+//            returnData = (Map) e.getReturnData();
+//            if (returnData == null) {
+//                return;
+//            }
+//            if ((Boolean) returnData.get("isOk")) {
+//                int totalCount = Integer.parseInt(returnData.get("totalCount").toString());
+//                Long importTaskId = (Long) returnData.get("importTaskId");
+//                String cacheKey = (String) returnData.get("cacheKey");
+//                String caption = ResManager.loadKDString("导入看板", "ImportTaskGuideOpereateBillList_33", "swc-hsas-formplugin", new Object[0]);
+//                this.openProgressPage(totalCount, importTaskId, "22", "importingData", caption, cacheKey);
+//            }
+//        } else if ("importingData".equals(actionId)) {
+//            returnData = (Map) e.getReturnData();
+//            if (returnData != null && !returnData.isEmpty()) {
+//                this.openImportingView(returnData);
+//            } else {
+//                this.getView().invokeOperation("refresh");
+//            }
+//        } else {
+//            this.getView().invokeOperation("refresh");
+//        }
     }
 
     private void openProgressPage(int totalCount, Long importTaskId, String progressType, String closeCalBackId, String caption, String verifyId) {

+ 47 - 29
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/form/ImportKPISelectFormPlugin.java

@@ -48,10 +48,14 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.Date;
 import java.util.EventObject;
 import java.util.HashMap;
 import java.util.List;
@@ -168,10 +172,10 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
 //                    returnMap.put("dataRowList", dataRowList);
                     //写入数据
                     Boolean b = saveData(dataHeadNumberList, dataRowList);
-                    if( b ){
+                    if (b) {
                         this.getView().returnDataToParent(true);
                         this.getView().close();
-                    }else{
+                    } else {
                         this.getView().showTipNotification("数据保存错误请联系管理员!");
                     }
                 } else {
@@ -184,9 +188,23 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         }
     }
 
-    private Boolean saveData(List<Map<Integer, String>> dataHeadNumberList,List<Map<Integer, String>> dataRowList){
+    private String judgeDataType(Object object) {
+        if (object instanceof Boolean) {
+            Boolean b = (Boolean) object;
+            return b ? "是" : "否";
+        } else if (object instanceof Date) {
+            SimpleDateFormat basicFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String date = basicFormat.format((Date) object);
+            return date;
+        } else if (object instanceof BigDecimal) {
+            return ((BigDecimal) object).toString();
+        }
+        return (String) object;
+    }
+
+    private Boolean saveData(List<Map<Integer, String>> dataHeadNumberList, List<Map<Integer, String>> dataRowList) {
         QFilter commonQFilter = new QFilter("enable", QCP.equals, "1");
-        commonQFilter.and("status",QCP.equals,"C");
+        commonQFilter.and("status", QCP.equals, "C");
         //表头编码
         Map<Integer, String> zeroExcelRow = dataHeadNumberList.get(0);
         QFilter dimensionQFilter = new QFilter("number", QCP.in, zeroExcelRow.values());
@@ -200,23 +218,23 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         List<String> userNumbers = dataRowList.stream().map(i -> i.get(1)).collect(Collectors.toList());
         QFilter userQFilter = new QFilter("number", QCP.in, userNumbers);
         DynamicObject[] users = BusinessDataServiceHelper.load("bos_user", "id,name,number", new QFilter[]{userQFilter, commonQFilter});
-        Map<String, DynamicObject> userMap = Arrays.stream(users).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> userMap = Arrays.stream(users).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //汇总组织编码
         List<String> deptNumbers = dataRowList.stream().map(i -> i.get(3)).collect(Collectors.toList());
         QFilter deptQFilter = new QFilter("number", QCP.in, deptNumbers);
         DynamicObject[] depts = BusinessDataServiceHelper.load("bos_org", "id,name,number", new QFilter[]{deptQFilter, commonQFilter});
-        Map<String, DynamicObject> deptMap = Arrays.stream(depts).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> deptMap = Arrays.stream(depts).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //汇总岗位编码
         List<String> postNumbers = dataRowList.stream().map(i -> i.get(5)).collect(Collectors.toList());
         QFilter postQFilter = new QFilter("number", QCP.in, postNumbers);
         DynamicObject[] posts = BusinessDataServiceHelper.load("bos_position", "id,name,number", new QFilter[]{postQFilter, commonQFilter});
-        Map<String, DynamicObject> postMap = Arrays.stream(posts).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> postMap = Arrays.stream(posts).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //查询绩效绩效结果-后续计算部门累计平均排名
         HashMap<String, List<String>> userHistoryRank = new HashMap<>();
-        DynamicObject[] examinProjectResult = BusinessDataServiceHelper.load("nckd_examinproject_result","nckd_entryentity.nckd_examine_dimension,nckd_entryentity.nckd_result,nckd_org,nckd_user",new QFilter[]{new QFilter("nckd_user.number",QCP.in,userNumbers)});
+        DynamicObject[] examinProjectResult = BusinessDataServiceHelper.load("nckd_examinproject_result", "nckd_entryentity.nckd_examine_dimension,nckd_entryentity.nckd_result,nckd_org,nckd_user", new QFilter[]{new QFilter("nckd_user.number", QCP.in, userNumbers)});
         for (DynamicObject object : examinProjectResult) {
             //用户
             DynamicObject user = object.getDynamicObject("nckd_user");
@@ -227,11 +245,11 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
                 String dimensionNumber = dimension.getString("number");
                 ArrayList<String> rank = new ArrayList<>();
                 //判断是否排名
-                if( StringUtils.equals(dimensionNumber,"JT-00012") ){
+                if (StringUtils.equals(dimensionNumber, "JT-00012")) {
                     //添加历史成绩
                     rank.add(entry.getString("nckd_result"));
                 }
-                userHistoryRank.put(userNumber,rank);
+                userHistoryRank.put(userNumber, rank);
             }
 
         }
@@ -240,53 +258,53 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         for (Map<Integer, String> integerStringMap : dataRowList) {
             DynamicObject newData = BusinessDataServiceHelper.newDynamicObject("nckd_examinproject_result");
             //设置默认数据
-            newData.set("enable","1");
-            newData.set("status","A");
-            newData.set("nckd_importplan",importPlan);
+            newData.set("enable", "1");
+            newData.set("status", "A");
+            newData.set("nckd_importplan", importPlan);
             //姓名
-            newData.set("nckd_user",userMap.get(integerStringMap.get(1)));
+            newData.set("nckd_user", userMap.get(integerStringMap.get(1)));
             //行政组织
-            newData.set("nckd_org",deptMap.get(integerStringMap.get(3)));
-            newData.set("group",deptMap.get(integerStringMap.get(3)));
+            newData.set("nckd_org", deptMap.get(integerStringMap.get(3)));
+            newData.set("group", deptMap.get(integerStringMap.get(3)));
             //岗位
-            newData.set("nckd_postbase",postMap.get(integerStringMap.get(5)));
+            newData.set("nckd_postbase", postMap.get(integerStringMap.get(5)));
             //排名单位
-            newData.set("nckd_rank_org",integerStringMap.get(6));
+            newData.set("nckd_rank_org", integerStringMap.get(6));
             //备注
-            newData.set("nckd_remark",integerStringMap.get(17));
+            newData.set("nckd_remark", integerStringMap.get(17));
 
             //增加分录数据
             DynamicObjectCollection entry = newData.getDynamicObjectCollection("nckd_entryentity");
             for (Integer i : integerStringMap.keySet()) {
                 //除1为姓名 3 为组织 5为岗位 6为排名单位 17为备注 12 为部门累计平均排名外全部存入分录
-                if( i != 1 && i != 3 && i != 5 && i != 6 && i != 17 ){
+                if (i != 1 && i != 3 && i != 5 && i != 6 && i != 17) {
                     DynamicObject entryRow = entry.addNew();
-                    entryRow.set("nckd_examine_dimension",examineDimensionMap.get(zeroExcelRow.get(i)));
-                    entryRow.set("nckd_result",integerStringMap.get(i));
+                    entryRow.set("nckd_examine_dimension", examineDimensionMap.get(zeroExcelRow.get(i)));
+                    entryRow.set("nckd_result", integerStringMap.get(i));
                 }
                 //计算部门累计平均排名
-                if( i == 12 ){
+                if (i == 12) {
                     //本次导入排名
                     String rank = integerStringMap.get(11);
                     //用户历史数据排名
                     List<String> userHistory = userHistoryRank.get(integerStringMap.get(1));
-                    if( ObjectUtils.isNotEmpty(userHistory) ){
+                    if (ObjectUtils.isNotEmpty(userHistory)) {
                         //计算
                         int sum = userHistory.stream().mapToInt(Integer::parseInt).sum();
                         sum += Integer.parseInt(rank);
                         int finalRank = sum / (userHistory.size() + 1);
-                        newData.set("nckd_cumulativeranking",finalRank);
-                    }else{
-                        newData.set("nckd_cumulativeranking",Integer.parseInt(rank));
+                        newData.set("nckd_cumulativeranking", finalRank);
+                    } else {
+                        newData.set("nckd_cumulativeranking", Integer.parseInt(rank));
                     }
                 }
             }
             saveList.add(newData);
         }
         Object[] save = SaveServiceHelper.save(saveList.toArray(new DynamicObject[0]));
-        if(ObjectUtils.isNotEmpty(save)){
+        if (ObjectUtils.isNotEmpty(save)) {
             return true;
-        }else{
+        } else {
             return false;
         }
     }

+ 19 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/formplugin/agencybill/AgencyBillEdit.java

@@ -246,12 +246,31 @@ public class AgencyBillEdit extends AbstractFormPlugin implements Plugin {
         QFilter filter = new QFilter("id", QCP.in, ids);
         String selectFields = "employee.id, employee.name, employee.empnumber, empposorgrel.adminorg.id";
         DynamicObject[] adjFiles = SALARYFILE_HELPER.load(selectFields, new QFilter[]{filter});
+
+        // employeeId
+        List<Long> employeeIds = Arrays.stream(adjFiles).map(obj -> obj.getLong("employee.id")).collect(Collectors.toList());
+        DynamicObject[] percreDyns = SWCHelper.queryPercreDyns(employeeIds);
+        Map<Long, DynamicObject> percreMap = Arrays.stream(percreDyns).collect(Collectors.toMap((dyx) -> {
+            return dyx.getLong("employee.id");
+        }, (dyx) -> {
+            return dyx;
+        }, (key1, key2) -> {
+            return key2;
+        }));
+
+
         DynamicObjectCollection entryCols = model.getDataEntity(true).getDynamicObjectCollection("nckd_entryentity");
         model.beginInit();
         for (DynamicObject adjFile : adjFiles) {
             DynamicObject entry = entryCols.addNew();
             entry.set("nckd_employee", adjFile.getDynamicObject("employee"));
             entry.set("nckd_adminorg", adjFile.getDynamicObject("empposorgrel.adminorg"));
+
+            Long employeeId = adjFile.getLong("employee.id");
+            if(percreMap.containsKey(employeeId)) {
+                entry.set("nckd_idcardno", percreMap.get(employeeId).getString("number"));
+            }
+
         }
         model.endInit();
         this.getView().updateView("nckd_entryentity");