|
|
@@ -0,0 +1,89 @@
|
|
|
+package nckd.jxccl.swc.hcdm.formplugin.annualincome;
|
|
|
+
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.entity.datamodel.IDataModel;
|
|
|
+import kd.bos.form.events.AfterDoOperationEventArgs;
|
|
|
+import kd.bos.form.plugin.AbstractFormPlugin;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
+import kd.sdk.plugin.Plugin;
|
|
|
+import nckd.jxccl.swc.constants.SwcConstant;
|
|
|
+import nckd.jxccl.swc.hcdm.business.annualincome.AnnualIncomeService;
|
|
|
+import nckd.jxccl.swc.utils.SwcUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.EventObject;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 动态表单插件
|
|
|
+ */
|
|
|
+public class IncomeBatchAddnewEdit extends AbstractFormPlugin implements Plugin {
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterCreateNewData(EventObject e) {
|
|
|
+ super.afterCreateNewData(e);
|
|
|
+ //年份默认当前日期的上年-01-01
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
|
|
+ super.afterDoOperation(afterDoOperationEventArgs);
|
|
|
+ String key = afterDoOperationEventArgs.getOperateKey();
|
|
|
+ switch(key) {
|
|
|
+ case "donothing_batchaddnew":
|
|
|
+ doBatchAddnew();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量生成年收入数据:
|
|
|
+ * 1、窗口中如果选择了核算组则按选择的核算组生成数据,没选择的话生成全部核算组的数据
|
|
|
+ * 2、如果按照年份+核算组已有数据,则不生成并提示
|
|
|
+ * 3、
|
|
|
+ */
|
|
|
+ private void doBatchAddnew() {
|
|
|
+ DynamicObject dyn = this.getModel().getDataEntity();
|
|
|
+ // 获取当前窗口选择的年份 实际值是yyyy-01-01
|
|
|
+ Date startDate = dyn.getDate("nckd_year");
|
|
|
+ // 获取薪资核算组Ids
|
|
|
+ List<Long> groupIds = getPayRollGroupIds(startDate);
|
|
|
+ // 获取年度最后一天
|
|
|
+ Date endDate = SwcUtils.getLastDayOfYear(startDate);
|
|
|
+
|
|
|
+ AnnualIncomeService service = new AnnualIncomeService(groupIds, startDate, endDate);
|
|
|
+ //service.
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<Long> getPayRollGroupIds (Date startDate) {
|
|
|
+ List<Long> groupIds = new ArrayList<Long>();
|
|
|
+ IDataModel model = this.getModel();
|
|
|
+
|
|
|
+ // 查出现在已经生成了多少薪资核算组的数据
|
|
|
+ List<Long> excludeGroupIds = getExcludePayRollGroupIds(startDate);
|
|
|
+
|
|
|
+ DynamicObjectCollection payRollGrpCols = (DynamicObjectCollection)model.getValue("nckd_mulpayrollgrp");
|
|
|
+ if(payRollGrpCols.size() == 0) {
|
|
|
+ groupIds = SwcUtils.getAllPayRollGrpIds();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ groupIds = payRollGrpCols.stream().map(obj -> obj.getDynamicObject("fbasedataid").getLong("id")).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ // 排除已经生成了数据的核算组
|
|
|
+ groupIds.removeAll(excludeGroupIds);
|
|
|
+ return groupIds;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<Long> getExcludePayRollGroupIds (Date startDate) {
|
|
|
+ List<Long> excludeGroupIds = new ArrayList<Long>();
|
|
|
+ QFilter filter = new QFilter("nckd_calyear", QCP.equals, startDate);
|
|
|
+ DynamicObjectCollection cols = SwcConstant.SALANNUALINCOMEBILL_ENTITY.queryOriginalCollection("nckd_payrollgrp.id", filter.toArray());
|
|
|
+ excludeGroupIds.addAll(cols.stream().map(obj -> obj.getLong("nckd_payrollgrp.id")).collect(Collectors.toList()));
|
|
|
+ return excludeGroupIds;
|
|
|
+ }
|
|
|
+}
|