From ba90fd2e03018443566c1c5faedbb86284e99065 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Wed, 23 Apr 2025 09:17:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(smartfactory):=20=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E8=A1=A8=E6=8C=89=E5=B7=A5=E5=8E=82id=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 StaffMapper 中添加工资表查询- 在 StaffSalaryMapper 中添加按工厂id查询的方法 - 更新 StaffSalaryPageReqVO,添加工厂id列表字段 - 修改 StaffSalaryServiceImpl 中的查询逻辑,支持按工厂id筛选 --- .../staffsalary/vo/StaffSalaryPageReqVO.java | 5 +++ .../dal/mysql/staff/StaffMapper.java | 1 + .../mysql/staffsalary/StaffSalaryMapper.java | 15 ++++++- .../staffsalary/StaffSalaryServiceImpl.java | 39 ++++++++++++------- .../mapper/staffsalary/StaffSalaryMapper.xml | 21 ---------- 5 files changed, 45 insertions(+), 36 deletions(-) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/vo/StaffSalaryPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/vo/StaffSalaryPageReqVO.java index 519baab8..afed0a9c 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/vo/StaffSalaryPageReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/vo/StaffSalaryPageReqVO.java @@ -6,6 +6,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import java.util.List; + @Schema(description = "管理后台 - 厂区员工工资分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @@ -26,4 +28,7 @@ public class StaffSalaryPageReqVO extends PageParam { @Schema(description = "复核状态 | 0未复核 1已复核", example = "0") private Integer status; + + @Schema(description = "工厂编码集合") + private List factoryIds; } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staff/StaffMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staff/StaffMapper.java index 8a98ba60..91b254e2 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staff/StaffMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staff/StaffMapper.java @@ -66,6 +66,7 @@ public interface StaffMapper extends BaseMapperX { .selectAs(StaffSalaryDO::getRealAmount, StaffSalaryRespVO::getRealAmount) .selectAs(StaffSalaryDO::getDeductionItems, StaffSalaryRespVO::getDeductionItems) .selectAs(StaffSalaryDO::getStatus, StaffSalaryRespVO::getStatus) + .selectAs(StaffSalaryDO::getSalarySubjectItems, StaffSalaryRespVO::getSalarySubjectItems) .selectAs(StaffSalaryDO::getCreateTime, StaffSalaryRespVO::getCreateTime); query.leftJoin(StaffSalaryDO.class, on -> on .eq(StaffDO::getId, StaffSalaryDO::getStaffId) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffsalary/StaffSalaryMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffsalary/StaffSalaryMapper.java index 4faa5cea..52f8a4c7 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffsalary/StaffSalaryMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffsalary/StaffSalaryMapper.java @@ -38,6 +38,7 @@ public interface StaffSalaryMapper extends BaseMapperX { query.eqIfPresent(StaffSalaryDO::getStaffId, reqVO.getStaffId()); query.eqIfPresent(StaffSalaryDO::getMonth, reqVO.getMonth()); query.eqIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryId()); + query.inIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryIds()); query.eqIfPresent(StaffSalaryDO::getStatus, reqVO.getStatus()); query.apply(Objects.nonNull(reqVO.getWorkTypeId()), "staff.work_type_id = {0} ", reqVO.getWorkTypeId()); @@ -46,5 +47,17 @@ public interface StaffSalaryMapper extends BaseMapperX { SalaryTotalVO selectSalaryTotal(@Param("pageReqVO") StaffSalaryPageReqVO pageReqVO); - List selectListSalarySubjectItems(@Param("pageReqVO") StaffSalaryPageReqVO pageReqVO); + default List selectListSalarySubjectItems(StaffSalaryPageReqVO reqVO) { + + MPJLambdaWrapperX query = new MPJLambdaWrapperX(); + query.selectAs(StaffSalaryDO::getSalarySubjectItems, StaffSalaryRespVO::getSalarySubjectItems); + + query.leftJoin(StaffDO.class, "staff", StaffDO::getId, StaffSalaryDO::getStaffId); + query.eqIfPresent(StaffSalaryDO::getMonth, reqVO.getMonth()); + query.eqIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryId()); + query.eqIfPresent(StaffSalaryDO::getStatus, reqVO.getStatus()); + query.apply(Objects.nonNull(reqVO.getWorkTypeId()), "staff.work_type_id = {0} ", reqVO.getWorkTypeId()); + + return selectJoinList(StaffSalaryRespVO.class, query); + } } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryServiceImpl.java index 788eb120..33992adb 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.smartfactory.service.staffsalary; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.bpm.api.oa.BpmOALoanApi; @@ -108,7 +109,7 @@ public class StaffSalaryServiceImpl implements StaffSalaryService { @Override public PageResult getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) { - if (pageReqVO.getMonth() != null) { + if (pageReqVO.getMonth() != null && pageReqVO.getStatus() == null) { return staffMapper.selectSalaryPage(pageReqVO); }else { return staffSalaryMapper.selectSalaryPage(pageReqVO); @@ -260,19 +261,29 @@ public class StaffSalaryServiceImpl implements StaffSalaryService { SalaryTotalVO salaryTotalVO = staffSalaryMapper.selectSalaryTotal(pageReqVO); // 获取主体薪资的合计 - List salarySubjectItemsVO = staffSalaryMapper.selectListSalarySubjectItems(pageReqVO); - Map sumMap = salarySubjectItemsVO.stream() - .collect(Collectors.toMap( - SalarySubjectItemsVO::getSalarySubjectId, - vo -> new SalarySubjectItemsVO() - .setSalarySubjectId(vo.getSalarySubjectId()) - .setAmount(vo.getAmount()), - (vo1, vo2) -> { - vo1.setAmount(vo1.getAmount().add(vo2.getAmount())); - return vo1; - } - )); - salaryTotalVO.setSalarySubjectItems(new ArrayList<>(sumMap.values())); + List salarySubjectItemsVO = staffSalaryMapper.selectListSalarySubjectItems(pageReqVO); + //直接从数据库取出来的List 实际上是List类型 所以不能直接遍历 + //将list再次转为json串,然后由json串再转为list + String json = JsonUtils.toJsonString(salarySubjectItemsVO); + salarySubjectItemsVO = JsonUtils.parseArray(json, StaffSalaryRespVO.class); + + if (CollUtil.isNotEmpty(salarySubjectItemsVO)) { + Map sumMap = salarySubjectItemsVO.stream() + .filter(Objects::nonNull) + .map(StaffSalaryRespVO::getSalarySubjectItems) + .flatMap(List::stream) + .collect(Collectors.toMap( + SalarySubjectItemsVO::getSalarySubjectId, + vo -> new SalarySubjectItemsVO() + .setSalarySubjectId(vo.getSalarySubjectId()) + .setAmount(vo.getAmount()), + (vo1, vo2) -> { + vo1.setAmount(vo1.getAmount().add(vo2.getAmount())); + return vo1; + } + )); + salaryTotalVO.setSalarySubjectItems(new ArrayList<>(sumMap.values())); + } return salaryTotalVO; } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffsalary/StaffSalaryMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffsalary/StaffSalaryMapper.xml index c644b4be..bd227b0f 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffsalary/StaffSalaryMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffsalary/StaffSalaryMapper.xml @@ -31,25 +31,4 @@ AND b.work_type_id = #{pageReqVO.workTypeId} -