feat(smartfactory): 工资表按工厂id查询
- 在 StaffMapper 中添加工资表查询- 在 StaffSalaryMapper 中添加按工厂id查询的方法 - 更新 StaffSalaryPageReqVO,添加工厂id列表字段 - 修改 StaffSalaryServiceImpl 中的查询逻辑,支持按工厂id筛选
This commit is contained in:
parent
d422522eb8
commit
ba90fd2e03
@ -6,6 +6,8 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 厂区员工工资分页 Request VO")
|
@Schema(description = "管理后台 - 厂区员工工资分页 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ -26,4 +28,7 @@ public class StaffSalaryPageReqVO extends PageParam {
|
|||||||
|
|
||||||
@Schema(description = "复核状态 | 0未复核 1已复核", example = "0")
|
@Schema(description = "复核状态 | 0未复核 1已复核", example = "0")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "工厂编码集合")
|
||||||
|
private List<Long> factoryIds;
|
||||||
}
|
}
|
@ -66,6 +66,7 @@ public interface StaffMapper extends BaseMapperX<StaffDO> {
|
|||||||
.selectAs(StaffSalaryDO::getRealAmount, StaffSalaryRespVO::getRealAmount)
|
.selectAs(StaffSalaryDO::getRealAmount, StaffSalaryRespVO::getRealAmount)
|
||||||
.selectAs(StaffSalaryDO::getDeductionItems, StaffSalaryRespVO::getDeductionItems)
|
.selectAs(StaffSalaryDO::getDeductionItems, StaffSalaryRespVO::getDeductionItems)
|
||||||
.selectAs(StaffSalaryDO::getStatus, StaffSalaryRespVO::getStatus)
|
.selectAs(StaffSalaryDO::getStatus, StaffSalaryRespVO::getStatus)
|
||||||
|
.selectAs(StaffSalaryDO::getSalarySubjectItems, StaffSalaryRespVO::getSalarySubjectItems)
|
||||||
.selectAs(StaffSalaryDO::getCreateTime, StaffSalaryRespVO::getCreateTime);
|
.selectAs(StaffSalaryDO::getCreateTime, StaffSalaryRespVO::getCreateTime);
|
||||||
query.leftJoin(StaffSalaryDO.class, on -> on
|
query.leftJoin(StaffSalaryDO.class, on -> on
|
||||||
.eq(StaffDO::getId, StaffSalaryDO::getStaffId)
|
.eq(StaffDO::getId, StaffSalaryDO::getStaffId)
|
||||||
|
@ -38,6 +38,7 @@ public interface StaffSalaryMapper extends BaseMapperX<StaffSalaryDO> {
|
|||||||
query.eqIfPresent(StaffSalaryDO::getStaffId, reqVO.getStaffId());
|
query.eqIfPresent(StaffSalaryDO::getStaffId, reqVO.getStaffId());
|
||||||
query.eqIfPresent(StaffSalaryDO::getMonth, reqVO.getMonth());
|
query.eqIfPresent(StaffSalaryDO::getMonth, reqVO.getMonth());
|
||||||
query.eqIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryId());
|
query.eqIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryId());
|
||||||
|
query.inIfPresent(StaffSalaryDO::getFactoryId, reqVO.getFactoryIds());
|
||||||
query.eqIfPresent(StaffSalaryDO::getStatus, reqVO.getStatus());
|
query.eqIfPresent(StaffSalaryDO::getStatus, reqVO.getStatus());
|
||||||
query.apply(Objects.nonNull(reqVO.getWorkTypeId()), "staff.work_type_id = {0} ", reqVO.getWorkTypeId());
|
query.apply(Objects.nonNull(reqVO.getWorkTypeId()), "staff.work_type_id = {0} ", reqVO.getWorkTypeId());
|
||||||
|
|
||||||
@ -46,5 +47,17 @@ public interface StaffSalaryMapper extends BaseMapperX<StaffSalaryDO> {
|
|||||||
|
|
||||||
SalaryTotalVO selectSalaryTotal(@Param("pageReqVO") StaffSalaryPageReqVO pageReqVO);
|
SalaryTotalVO selectSalaryTotal(@Param("pageReqVO") StaffSalaryPageReqVO pageReqVO);
|
||||||
|
|
||||||
List<SalarySubjectItemsVO> selectListSalarySubjectItems(@Param("pageReqVO") StaffSalaryPageReqVO pageReqVO);
|
default List<StaffSalaryRespVO> selectListSalarySubjectItems(StaffSalaryPageReqVO reqVO) {
|
||||||
|
|
||||||
|
MPJLambdaWrapperX<StaffSalaryDO> query = new MPJLambdaWrapperX<StaffSalaryDO>();
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.smartfactory.service.staffsalary;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
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.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.module.bpm.api.oa.BpmOALoanApi;
|
import cn.iocoder.yudao.module.bpm.api.oa.BpmOALoanApi;
|
||||||
@ -108,7 +109,7 @@ public class StaffSalaryServiceImpl implements StaffSalaryService {
|
|||||||
@Override
|
@Override
|
||||||
public PageResult<StaffSalaryRespVO> getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) {
|
public PageResult<StaffSalaryRespVO> getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) {
|
||||||
|
|
||||||
if (pageReqVO.getMonth() != null) {
|
if (pageReqVO.getMonth() != null && pageReqVO.getStatus() == null) {
|
||||||
return staffMapper.selectSalaryPage(pageReqVO);
|
return staffMapper.selectSalaryPage(pageReqVO);
|
||||||
}else {
|
}else {
|
||||||
return staffSalaryMapper.selectSalaryPage(pageReqVO);
|
return staffSalaryMapper.selectSalaryPage(pageReqVO);
|
||||||
@ -260,19 +261,29 @@ public class StaffSalaryServiceImpl implements StaffSalaryService {
|
|||||||
SalaryTotalVO salaryTotalVO = staffSalaryMapper.selectSalaryTotal(pageReqVO);
|
SalaryTotalVO salaryTotalVO = staffSalaryMapper.selectSalaryTotal(pageReqVO);
|
||||||
|
|
||||||
// 获取主体薪资的合计
|
// 获取主体薪资的合计
|
||||||
List<SalarySubjectItemsVO> salarySubjectItemsVO = staffSalaryMapper.selectListSalarySubjectItems(pageReqVO);
|
List<StaffSalaryRespVO> salarySubjectItemsVO = staffSalaryMapper.selectListSalarySubjectItems(pageReqVO);
|
||||||
Map<Integer, SalarySubjectItemsVO> sumMap = salarySubjectItemsVO.stream()
|
//直接从数据库取出来的List<Reimbursement> 实际上是List<LinkedHashMap>类型 所以不能直接遍历
|
||||||
.collect(Collectors.toMap(
|
//将list再次转为json串,然后由json串再转为list
|
||||||
SalarySubjectItemsVO::getSalarySubjectId,
|
String json = JsonUtils.toJsonString(salarySubjectItemsVO);
|
||||||
vo -> new SalarySubjectItemsVO()
|
salarySubjectItemsVO = JsonUtils.parseArray(json, StaffSalaryRespVO.class);
|
||||||
.setSalarySubjectId(vo.getSalarySubjectId())
|
|
||||||
.setAmount(vo.getAmount()),
|
if (CollUtil.isNotEmpty(salarySubjectItemsVO)) {
|
||||||
(vo1, vo2) -> {
|
Map<Integer, SalarySubjectItemsVO> sumMap = salarySubjectItemsVO.stream()
|
||||||
vo1.setAmount(vo1.getAmount().add(vo2.getAmount()));
|
.filter(Objects::nonNull)
|
||||||
return vo1;
|
.map(StaffSalaryRespVO::getSalarySubjectItems)
|
||||||
}
|
.flatMap(List::stream)
|
||||||
));
|
.collect(Collectors.toMap(
|
||||||
salaryTotalVO.setSalarySubjectItems(new ArrayList<>(sumMap.values()));
|
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;
|
return salaryTotalVO;
|
||||||
}
|
}
|
||||||
|
@ -31,25 +31,4 @@
|
|||||||
AND b.work_type_id = #{pageReqVO.workTypeId}
|
AND b.work_type_id = #{pageReqVO.workTypeId}
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</select>
|
||||||
<select id="selectListSalarySubjectItems" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.SalarySubjectItemsVO">
|
|
||||||
SELECT
|
|
||||||
a.salary_subject_items
|
|
||||||
FROM
|
|
||||||
sf_staff_salary a
|
|
||||||
LEFT JOIN sf_staff b ON b.id = a.staff_id
|
|
||||||
WHERE
|
|
||||||
a.deleted = 0
|
|
||||||
<if test="pageReqVO.factoryId != null">
|
|
||||||
AND a.factory_id = #{pageReqVO.factoryId}
|
|
||||||
</if>
|
|
||||||
<if test="pageReqVO.month != null">
|
|
||||||
AND a.month = #{pageReqVO.month}
|
|
||||||
</if>
|
|
||||||
<if test="pageReqVO.status != null">
|
|
||||||
AND a.status = #{pageReqVO.status}
|
|
||||||
</if>
|
|
||||||
<if test="pageReqVO.workTypeId != null">
|
|
||||||
AND b.work_type_id = #{pageReqVO.workTypeId}
|
|
||||||
</if>
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Loading…
Reference in New Issue
Block a user