Forráskód Böngészése

feat(hcsi): 社保查询和数据对比功能优化

Tyx 2 hete
szülő
commit
489878a87b

+ 38 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/datacomparison/DetailCompareBillEdit.java

@@ -16,8 +16,10 @@ import kd.bos.form.operate.FormOperate;
 import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import nckd.jxccl.sit.hcsi.business.datacomparison.DataComparisonQueryService;
-import nckd.jxccl.sit.hcsi.business.importtaskguide.ImportTaskGuideImportService;
 
 import java.math.BigDecimal;
 import java.util.Arrays;
@@ -35,6 +37,19 @@ public class DetailCompareBillEdit extends AbstractFormPlugin {
         super.registerListener(e);
     }
 
+    /**
+     * 新建单据的时候判断下是从向导界面过来还是直接列表进来的
+     * 如果是向导界面过来的情况,自动携带期间跟参保单位
+     * 如果是列表界面过来,不做任何处理
+     * @param e
+     */
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+        this.getModel().setValue("nckd_period", this.getView().getParentView().getFormShowParameter().getCustomParam("periodId"));
+        this.getModel().setValue("nckd_welfarepayer", this.getView().getParentView().getFormShowParameter().getCustomParam("welfarepayerId"));
+    }
+
     @Override
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         super.beforeDoOperation(args);
@@ -46,6 +61,21 @@ public class DetailCompareBillEdit extends AbstractFormPlugin {
                 break;
             case "donothing_confirm":
                 beforeDoConfirmVerify(args);
+                break;
+            case "donothing_push":
+                beforeDoPushVerify(args);
+        }
+    }
+
+    /**
+     * 推送算薪前校验
+     * @param args
+     */
+    private void beforeDoPushVerify(BeforeDoOperationEventArgs args) {
+        EntryGrid entryGrid = this.getControl("nckd_entryentity");
+        int[] selectRows = entryGrid.getSelectRows();
+        if(selectRows.length == 0 ) {
+            this.getView().showTipNotification("请先选中数据!");
         }
     }
 
@@ -99,10 +129,17 @@ public class DetailCompareBillEdit extends AbstractFormPlugin {
                 break;
             case "donothing_confirm":
                 doConfirm();
+                break;
+            case "donothing_push":
+                doPush();
         }
     }
 
 
+    private void doPush() {
+        logger.info("推送数据到算薪系统");
+    }
+
     /**
      * 比对实际执行方法
      */

+ 26 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/datacomparison/DetailCompareBillList.java

@@ -0,0 +1,26 @@
+package nckd.jxccl.sit.hcsi.formplugin.web.datacomparison;
+
+import kd.bos.form.IFormView;
+import kd.bos.form.events.BeforeClosedEvent;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.sdk.plugin.Plugin;
+
+/**
+ * Tyx 2025-11-11 【nckd_detailcomparebill】
+ * 社保明细差异对比单列表插件
+ */
+public class DetailCompareBillList extends AbstractListPlugin implements Plugin {
+
+    /**
+     * 关闭前判断下有没有父页面 有的话一并关掉
+     * @param e
+     */
+    @Override
+    public void beforeClosed(BeforeClosedEvent e) {
+        IFormView parentView = this.getView().getParentView();
+        if (parentView != null) {
+            parentView.invokeOperation("close");
+            this.getView().sendFormAction(parentView);
+        }
+    }
+}

+ 115 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/selfsearch/SelfSearchFormPlugin.java

@@ -1,11 +1,125 @@
 package nckd.jxccl.sit.hcsi.formplugin.web.selfsearch;
 
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.utils.ObjectUtils;
+import kd.bos.form.control.Button;
+import kd.bos.form.control.Control;
+import kd.bos.form.control.Label;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import kd.hrmp.hrobs.business.domain.assignment.service.IAssignmentDomainService;
 import kd.sdk.plugin.Plugin;
 
+import java.util.EventObject;
+
 /**
- * 动态表单插件
+ * Tyx 2025-10-27
+ * 个人权益单查询表单插件
  */
 public class SelfSearchFormPlugin extends AbstractFormPlugin implements Plugin {
 
+    private static final HRBaseServiceHelper EMPLOYEE_HELPER = new HRBaseServiceHelper("hrpi_employee");
+    private static final HRBaseServiceHelper INSURANCE_HELPER = new HRBaseServiceHelper("hcsi_sibase");
+    private static final HRBaseServiceHelper SINSURFILE_HELPER = new HRBaseServiceHelper("hcsi_sinsurfile");
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        Button button = this.getView().getControl("nckd_btnsearch");
+        button.addClickListener(this);
+    }
+
+
+
+    /**
+     * 按钮点击事件
+     * @param evt
+     */
+    @Override
+    public void click(EventObject evt) {
+        super.click(evt);
+        Control source = (Control) evt.getSource();
+        // 点击按钮的标识
+        String key = source.getKey();
+        if("nckd_btnsearch".equals(key)){
+            // 获取到期间:
+            DynamicObject period = (DynamicObject) this.getModel().getValue("nckd_sinsurperiod");
+            if(ObjectUtils.isEmpty(period)) {
+                this.getView().showTipNotification("请选择查询期间");
+            }
+            else {
+                // 获取当前登录用户对应的HR人员
+                Long employeeId = IAssignmentDomainService.getInstance().queryEmployeeIdByUserId(RequestContext.getOrCreate().getCurrUserId());
+                if (employeeId != 0L) {
+                    doSearch(period.getLong("id"), employeeId);
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询实际执行方法
+     */
+    private void doSearch(Long periodId, Long employeeId) {
+        // 查询社保档案
+        DynamicObject sinsurFile = searchSinsurFileInfo(employeeId);
+        if(!ObjectUtils.isEmpty(sinsurFile)) {
+            // 查询基本信息:工号、姓名、性别、社保账号
+            searchEmpBaseInfo(employeeId);
+            // 查询险种信息:
+            // searchInsranceInfo(periodId, employeeId);
+        }
+    }
+
+    private DynamicObject searchSinsurFileInfo(Long employeeId) {
+
+        // 社保档案上有employee
+        // 社保档案上的字段+employee上所有的字段;
+
+        // 查询字段
+        String selectFields = "employee.name,employee.number,employee.gender.name,sinsuraccount";
+        // 过滤条件
+        QFilter filter = new QFilter("employee.id", QCP.equals, employeeId);
+        // 实际查询
+        DynamicObject sinsurFile = SINSURFILE_HELPER.queryOriginalOne(selectFields, new QFilter[]{filter});
+        return sinsurFile;
+
+
+    }
+
+    /**
+     * 查询基本信息:工号、姓名、性别、社保账号
+     * @param employeeId
+     */
+    private void searchEmpBaseInfo(Long employeeId) {
+        String selectFields = "employee.name,employee.number,employee.gender.name,sinsuraccount";
+        QFilter filter = new QFilter("employee.id", QCP.equals, employeeId);
+        DynamicObject sinsurFile = SINSURFILE_HELPER.queryOriginalOne(selectFields, new QFilter[]{filter});
+        setLabelText("nckd_nameval", sinsurFile.getString("employee.name"));
+        setLabelText("nckd_nunmberval", sinsurFile.getString("employee.number"));
+        setLabelText("nckd_sexval", sinsurFile.getString("employee.gender.name"));
+        setLabelText("nckd_socnumberval", sinsurFile.getString("sinsuraccount"));
+
+    }
+
+    /**
+     * 查询险种信息:险种,个人缴纳基数,单位缴纳基数,缴纳单位,备注
+     * @param employeeId
+     */
+    private void searchInsranceInfo(Long employeeId) {
+
+    }
+
+    /**
+     * 设置标签文本值
+     * @param lblKey
+     * @param value
+     */
+    private void setLabelText(String lblKey, String value) {
+        Label label = (Label)this.getView().getControl(lblKey);
+        label.setText(value);
+    }
 }

+ 15 - 12
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/guide/TaskImpGuideListPlugin.java

@@ -62,20 +62,24 @@ public class TaskImpGuideListPlugin extends AbstractListPlugin implements TabSel
         this.getPageCache().put("tabKey", tabKey);
         switch (tabKey) {
             case "dataimport":
-                this.loadChildrenPage("dataimport", "dataimportflex");
+                this.loadChildrenPage("dataimport", "dataimportflex", "nckd_sinsurtempdata");
                 this.getPageCache().put("targetKey", "dataimportflex");
                 break;
+            case "datacompare":
+                this.loadChildrenPage("datacompare", "dataimportflex1", "nckd_detailcomparebill");
+                this.getPageCache().put("targetKey", "dataimportflex1");
+                break;
         }
     }
 
-    private void loadChildrenPage(String tabKey, String targetKey) {
+    private void loadChildrenPage(String tabKey, String targetKey, String entityName) {
         SWCPageCache pageCache = new SWCPageCache(this.getView());
         Boolean isLocked = (Boolean)pageCache.get("isLocked", Boolean.class);
         FormShowParameter parameter = this.getView().getFormShowParameter();
         ListShowParameter showParameter = new ListShowParameter();
         showParameter.getOpenStyle().setShowType(ShowType.InContainer);
         showParameter.getOpenStyle().setTargetKey(targetKey);
-        showParameter.setBillFormId("nckd_sinsurtempdata");
+        showParameter.setBillFormId(entityName);
         showParameter.setFormId("bos_list");
         showParameter.setLookUp(false);
         showParameter.setShowTitle(false);
@@ -91,14 +95,7 @@ public class TaskImpGuideListPlugin extends AbstractListPlugin implements TabSel
             showParameter.setCustomParam("isLocked", Boolean.FALSE);
         }
 
-        String title = null;
-        if ("dealandcheck".equals(tabKey)) {
-            title = ResManager.loadKDString("数据处理与校验", "ImportTaskGuideListPlugin_1", "swc-hsas-formplugin", new Object[0]);
-        } else if ("approveandwrite".equals(tabKey)) {
-            title = ResManager.loadKDString("审核并写入薪资结果", "ImportTaskGuideListPlugin_2", "swc-hsas-formplugin", new Object[0]);
-        } else {
-            title = ResManager.loadKDString("数据导入", "ImportTaskGuideListPlugin_0", "swc-hsas-formplugin", new Object[0]);
-        }
+        String title = ResManager.loadKDString("数据导入", "ImportTaskGuideListPlugin_0", "swc-hsas-formplugin", new Object[0]);
 
         showParameter.setCaption(title);
         showParameter.setCustomParam("creator", parameter.getCustomParam("creator"));
@@ -106,7 +103,13 @@ public class TaskImpGuideListPlugin extends AbstractListPlugin implements TabSel
         showParameter.setCustomParam("verifyRecordId", this.getPageCache().get("verifyRecordId"));
         this.getPageCache().put("verifyRecordId", (String)null);
         showParameter.setSendToClient(true);
-        showParameter.getListFilterParameter().getQFilters().add(new QFilter("nckd_importtask", "=", parameter.getCustomParam("importTaskId")));
+        if("dataimport".equals(tabKey)) {
+            showParameter.getListFilterParameter().getQFilters().add(new QFilter("nckd_importtask", "=", parameter.getCustomParam("importTaskId")));
+        }
+        else if("datacompare".equals(tabKey)) {
+            showParameter.getListFilterParameter().getQFilters().add(new QFilter("nckd_period", "=", parameter.getCustomParam("periodId")));
+            showParameter.getListFilterParameter().getQFilters().add(new QFilter("nckd_welfarepayer", "=", parameter.getCustomParam("welfarepayerId")));
+        }
         this.getView().showForm(showParameter);
     }