|
|
@@ -44,8 +44,8 @@ public class SalAnnualIncomeBillEdit extends AbstractFormPlugin implements Plugi
|
|
|
private void beforeDoQueryVerify(BeforeDoOperationEventArgs args) {
|
|
|
IDataModel model = this.getModel();
|
|
|
DynamicObject dyn = model.getDataEntity();
|
|
|
- DynamicObject payRollGrp = dyn.getDynamicObject("nckd_payrollgrp");
|
|
|
- if(ObjectUtils.isEmpty(payRollGrp)) {
|
|
|
+ DynamicObjectCollection payRollGrps = (DynamicObjectCollection)model.getValue("nckd_mulpayrollgrp");
|
|
|
+ if(ObjectUtils.isEmpty(payRollGrps)) {
|
|
|
args.setCancel(true);
|
|
|
this.getView().showTipNotification("请先选择薪资核算组!");
|
|
|
}
|
|
|
@@ -74,55 +74,74 @@ public class SalAnnualIncomeBillEdit extends AbstractFormPlugin implements Plugi
|
|
|
private void doQuery() {
|
|
|
IDataModel model = this.getModel();
|
|
|
DynamicObject dyn = model.getDataEntity();
|
|
|
- DynamicObject payRollGrp = dyn.getDynamicObject("nckd_payrollgrp");
|
|
|
+ DynamicObjectCollection payRollGrps = (DynamicObjectCollection)model.getValue("nckd_mulpayrollgrp");
|
|
|
+ List<Long> groupIds = payRollGrps.stream().map(obj -> obj.getDynamicObject("fbasedataid").getLong("id")).collect(Collectors.toList());
|
|
|
// 单据上选择的年度字段,实际值是yyyy-01-01
|
|
|
Date calYear = dyn.getDate("nckd_calyear");
|
|
|
+ // 排除薪资核算组
|
|
|
+ List<Long> excludeGroupIds = SwcUtils.getExcludePayRollGroupIds(calYear);
|
|
|
+ groupIds.removeAll(excludeGroupIds);
|
|
|
// 获取年度最后一天
|
|
|
Date endDate = SwcUtils.getLastDayOfYear(calYear);
|
|
|
// 声明service
|
|
|
- AnnualIncomeService service = new AnnualIncomeService(Collections.singletonList(payRollGrp.getLong("id")), calYear, endDate);
|
|
|
- // 获取核算人员信息,一个核算人员一条记录
|
|
|
- DynamicObjectCollection calPersonDyns = service.queryCalPersonByPayRollGroup();
|
|
|
- List<Long> calPersonIds = calPersonDyns.stream().map((o) -> {
|
|
|
- return o.getLong("id");
|
|
|
- }).collect(Collectors.toList());
|
|
|
- // 获取薪酬项目ID,这里固定为应发工资 JT_283
|
|
|
- List<String> itemNos = new ArrayList<String>();
|
|
|
- itemNos.add("JT_283");
|
|
|
- List<Long> itemIds = SwcUtils.getSalaryItemIdByNumber(itemNos);
|
|
|
- // 获取薪资明细数据 一个核算人员一条<k1,v1<k2,v2>>,k1=核算人员ID,k2=薪酬项目ID,v2=金额
|
|
|
- Map<Long, Map<Long, Object>> salaryMap = service.querySalaryDetail(calPersonIds, itemIds);
|
|
|
-
|
|
|
- // 把核算人员相关信息和薪资明细合并在一起
|
|
|
- Map<Long, Map<String, Object>> unionMap = (Map) calPersonDyns.stream().collect(Collectors.toMap((dyx) -> {
|
|
|
- return dyx.getLong("id");
|
|
|
- }, (dyx) -> {
|
|
|
- Map map = new HashMap();
|
|
|
- map.put("employeeId", dyx.getLong("hsbs_employee.id"));
|
|
|
- map.put("idCardNo", dyx.getLong("hsbs_percre.number"));
|
|
|
- map.put("payRollDate", dyx.getDate("hsas_calpayrolltask.payrolldate"));
|
|
|
- map.put("amount", salaryMap.get(dyx.getLong("id")).get(itemIds.get(0)));
|
|
|
- return map;
|
|
|
- }, (key1, key2) -> {
|
|
|
- return key2;
|
|
|
- }));
|
|
|
- // 按照employeeId提取出来
|
|
|
- List<Map<String, Object>> finalResult = dealGroupData(unionMap);
|
|
|
- // 排除人员ID
|
|
|
- List<Long> excludeEmployeeId = service.queryIncomeBillEmployeeId();
|
|
|
+ AnnualIncomeService service = new AnnualIncomeService(groupIds, calYear, endDate);
|
|
|
+ DynamicObjectCollection resultDyns = service.querySalaryDetailBySql();
|
|
|
|
|
|
// 界面赋值
|
|
|
- for (Map map : finalResult) {
|
|
|
- if(excludeEmployeeId.contains(map.get("employeeId"))) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ for (DynamicObject result : resultDyns) {
|
|
|
int rowIndex = model.createNewEntryRow("nckd_entryentity");
|
|
|
- model.setValue("nckd_employee", map.get("employeeId"), rowIndex);
|
|
|
- model.setValue("nckd_idcardno", map.get("idCardNo"), rowIndex);
|
|
|
- model.setValue("nckd_totalsalary", map.get("totalAmount"), rowIndex);
|
|
|
- model.setValue("nckd_month", map.get("uniqueDateCount"), rowIndex);
|
|
|
+ model.setValue("nckd_payrollgrp", result.get("groupId"), rowIndex);
|
|
|
+ model.setValue("nckd_employee", result.get("employeeId"), rowIndex);
|
|
|
+ model.setValue("nckd_idcardno", result.get("idCardNo"), rowIndex);
|
|
|
+ model.setValue("nckd_totalsalary", result.get("amount"), rowIndex);
|
|
|
+ model.setValue("nckd_month", result.get("monthCount"), rowIndex);
|
|
|
}
|
|
|
|
|
|
+ // 排除人员ID
|
|
|
+ // List<Long> excludeEmployeeId = service.queryIncomeBillEmployeeId();
|
|
|
+
|
|
|
+ // 获取核算人员信息,一个核算人员一条记录
|
|
|
+// DynamicObjectCollection calPersonDyns = service.queryCalPersonByPayRollGroup();
|
|
|
+// List<Long> calPersonIds = calPersonDyns.stream().map((o) -> {
|
|
|
+// return o.getLong("id");
|
|
|
+// }).collect(Collectors.toList());
|
|
|
+// // 获取薪酬项目ID,这里固定为应发工资 JT_283
|
|
|
+// List<String> itemNos = new ArrayList<String>();
|
|
|
+// itemNos.add("JT_283");
|
|
|
+// List<Long> itemIds = SwcUtils.getSalaryItemIdByNumber(itemNos);
|
|
|
+// // 获取薪资明细数据 一个核算人员一条<k1,v1<k2,v2>>,k1=核算人员ID,k2=薪酬项目ID,v2=金额
|
|
|
+// Map<Long, Map<Long, Object>> salaryMap = service.querySalaryDetail(calPersonIds, itemIds);
|
|
|
+//
|
|
|
+// // 把核算人员相关信息和薪资明细合并在一起
|
|
|
+// Map<Long, Map<String, Object>> unionMap = (Map) calPersonDyns.stream().collect(Collectors.toMap((dyx) -> {
|
|
|
+// return dyx.getLong("id");
|
|
|
+// }, (dyx) -> {
|
|
|
+// Map map = new HashMap();
|
|
|
+// map.put("employeeId", dyx.getLong("hsbs_employee.id"));
|
|
|
+// map.put("idCardNo", dyx.getString("hsbs_percre.number"));
|
|
|
+// map.put("payRollDate", dyx.getDate("hsas_calpayrolltask.payrolldate"));
|
|
|
+// map.put("amount", salaryMap.get(dyx.getLong("id")).get(itemIds.get(0)));
|
|
|
+// return map;
|
|
|
+// }, (key1, key2) -> {
|
|
|
+// return key2;
|
|
|
+// }));
|
|
|
+// // 按照employeeId提取出来
|
|
|
+// List<Map<String, Object>> finalResult = dealGroupData(unionMap);
|
|
|
+// // 排除人员ID
|
|
|
+// List<Long> excludeEmployeeId = service.queryIncomeBillEmployeeId();
|
|
|
+//
|
|
|
+// // 界面赋值
|
|
|
+// for (Map map : finalResult) {
|
|
|
+// if(excludeEmployeeId.contains(map.get("employeeId"))) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// int rowIndex = model.createNewEntryRow("nckd_entryentity");
|
|
|
+// model.setValue("nckd_employee", map.get("employeeId"), rowIndex);
|
|
|
+// model.setValue("nckd_idcardno", map.get("idCardNo"), rowIndex);
|
|
|
+// model.setValue("nckd_totalsalary", map.get("totalAmount"), rowIndex);
|
|
|
+// model.setValue("nckd_month", map.get("uniqueDateCount"), rowIndex);
|
|
|
+// }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public List<Map<String, Object>> dealGroupData (Map<Long, Map<String, Object>> unionMap) {
|