feat(smartfactory): 优化员工相关功能
- 添加员工工资创建接口 - 优化员工数据统计功能 - 增加工种名称和业务类型字段 - 调整员工信息展示和导入模板 - 重构员工工资查询逻辑
This commit is contained in:
parent
ae7f70fcaf
commit
ec0ffa1651
@ -33,9 +33,7 @@ import java.text.DecimalFormat;
|
|||||||
import java.time.DayOfWeek;
|
import java.time.DayOfWeek;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.temporal.TemporalAdjusters;
|
import java.time.temporal.TemporalAdjusters;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
@ -213,11 +211,14 @@ public class FactoryDataController {
|
|||||||
List<SizeDO> sizeDOS = sizeService.getListSize();
|
List<SizeDO> sizeDOS = sizeService.getListSize();
|
||||||
List<String> size = sizeDOS.stream().map(info -> info.getId() + ":" + info.getName()).collect(Collectors.toList());
|
List<String> size = sizeDOS.stream().map(info -> info.getId() + ":" + info.getName()).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<Integer, List<String>> mapDropDown = new HashMap<>();
|
||||||
|
mapDropDown.put(0, factory);
|
||||||
|
mapDropDown.put(2, size);
|
||||||
|
|
||||||
// 输出
|
// 输出
|
||||||
ExcelUtils.write(response, "出入库数据导入模板.xls", "详情",
|
ExcelUtils.write(response, "出入库数据导入模板.xls", "详情",
|
||||||
FactoryDataImportVO.class, null,
|
FactoryDataImportVO.class, null,
|
||||||
0, factory,
|
mapDropDown);
|
||||||
2, size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/import")
|
@PostMapping("/import")
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.smartfactory.controller.admin.staff;
|
package cn.iocoder.yudao.module.smartfactory.controller.admin.staff;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
@ -26,10 +27,15 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 员工")
|
@Tag(name = "管理后台 - 员工")
|
||||||
@ -75,9 +81,9 @@ public class StaffController {
|
|||||||
@Operation(summary = "获得员工")
|
@Operation(summary = "获得员工")
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
@PreAuthorize("@ss.hasPermission('factory:staff:query')")
|
@PreAuthorize("@ss.hasPermission('factory:staff:query')")
|
||||||
public CommonResult<StaffRespVO> getStaff(@RequestParam("id") Long id) {
|
public CommonResult<StaffDO> getStaff(@RequestParam("id") Long id) {
|
||||||
StaffDO staff = staffService.getStaff(id);
|
StaffDO staff = staffService.getStaff(id);
|
||||||
return success(BeanUtils.toBean(staff, StaffRespVO.class));
|
return success(staff);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getListByFactory")
|
@GetMapping("/getListByFactory")
|
||||||
@ -96,7 +102,19 @@ public class StaffController {
|
|||||||
@PreAuthorize("@ss.hasPermission('factory:staff:query')")
|
@PreAuthorize("@ss.hasPermission('factory:staff:query')")
|
||||||
public CommonResult<PageResult<StaffRespVO>> getStaffPage(@Valid StaffPageReqVO pageReqVO) {
|
public CommonResult<PageResult<StaffRespVO>> getStaffPage(@Valid StaffPageReqVO pageReqVO) {
|
||||||
PageResult<StaffDO> pageResult = staffService.getStaffPage(pageReqVO);
|
PageResult<StaffDO> pageResult = staffService.getStaffPage(pageReqVO);
|
||||||
return success(BeanUtils.toBean(pageResult, StaffRespVO.class));
|
PageResult<StaffRespVO> result = BeanUtils.toBean(pageResult, StaffRespVO.class);
|
||||||
|
if (CollUtil.isNotEmpty(result.getList())) {
|
||||||
|
|
||||||
|
// 获取工厂详情
|
||||||
|
Set<Long> factoryIds = convertSet(result.getList(), StaffRespVO::getFactoryId);
|
||||||
|
Map<Long, FactoryInfoDO> factoryInfoMap = convertMap(factoryInfoService.getFactoryList(factoryIds), FactoryInfoDO::getId);
|
||||||
|
result.getList().forEach(data -> {
|
||||||
|
// 设置工厂名称
|
||||||
|
data.setFactoryName(factoryInfoMap.containsKey(data.getFactoryId()) ? factoryInfoMap.get(data.getFactoryId()).getName() : null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return success(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/export-excel")
|
@GetMapping("/export-excel")
|
||||||
@ -128,11 +146,21 @@ public class StaffController {
|
|||||||
.map(item -> item.getValue() + ":" + item.getLabel())
|
.map(item -> item.getValue() + ":" + item.getLabel())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
// 获取业务类型名称
|
||||||
|
List<DictDataRespDTO> businessTypeVOs = dictDataApi.getDictDataList("system_settlement_type").getCheckedData();
|
||||||
|
List<String> businessTypeName = businessTypeVOs.stream()
|
||||||
|
.map(item -> item.getValue() + ":" + item.getLabel())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<Integer, List<String>> mapDropDown = new HashMap<>();
|
||||||
|
mapDropDown.put(1, factoryName);
|
||||||
|
mapDropDown.put(2, workTypeName);
|
||||||
|
mapDropDown.put(3, businessTypeName);
|
||||||
|
|
||||||
// 输出
|
// 输出
|
||||||
ExcelUtils.write(response, "工人导入模板.xlsx", "工人列表",
|
ExcelUtils.write(response, "工人导入模板.xlsx", "工人列表",
|
||||||
StaffImportExcelVO.class, null,
|
StaffImportExcelVO.class, null,
|
||||||
1, factoryName,
|
mapDropDown);
|
||||||
2, workTypeName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/import")
|
@PostMapping("/import")
|
||||||
|
@ -30,6 +30,9 @@ public class StaffImportExcelVO {
|
|||||||
@ExcelProperty("工种名称")
|
@ExcelProperty("工种名称")
|
||||||
private String workTypeName;
|
private String workTypeName;
|
||||||
|
|
||||||
|
@ExcelProperty("业务类型名称")
|
||||||
|
private String businessTypeName;
|
||||||
|
|
||||||
@ExcelProperty("手机号码")
|
@ExcelProperty("手机号码")
|
||||||
@Mobile
|
@Mobile
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
@ -15,15 +15,12 @@ public class StaffPageReqVO extends PageParam {
|
|||||||
@Schema(description = "员工昵称")
|
@Schema(description = "员工昵称")
|
||||||
private String nickName;
|
private String nickName;
|
||||||
|
|
||||||
@Schema(description = "年龄")
|
|
||||||
private Integer age;
|
|
||||||
|
|
||||||
@Schema(description = "用户性别(0男 1女 2未知)")
|
|
||||||
private Integer sex;
|
|
||||||
|
|
||||||
@Schema(description = "工种id", example = "6971")
|
@Schema(description = "工种id", example = "6971")
|
||||||
private Integer workTypeId;
|
private Integer workTypeId;
|
||||||
|
|
||||||
|
@Schema(description = "所属业务类型")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
@Schema(description = "工厂id", example = "6971")
|
@Schema(description = "工厂id", example = "6971")
|
||||||
private Long factoryId;
|
private Long factoryId;
|
||||||
|
|
||||||
|
@ -31,6 +31,9 @@ public class StaffRespVO {
|
|||||||
@Schema(description = "工种id", example = "6971")
|
@Schema(description = "工种id", example = "6971")
|
||||||
private Integer workTypeId;
|
private Integer workTypeId;
|
||||||
|
|
||||||
|
@Schema(description = "所属业务类型")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
@Schema(description = "工厂id", example = "6971")
|
@Schema(description = "工厂id", example = "6971")
|
||||||
private Long factoryId;
|
private Long factoryId;
|
||||||
|
|
||||||
|
@ -27,6 +27,9 @@ public class StaffSaveReqVO {
|
|||||||
@Schema(description = "工种id", example = "6971")
|
@Schema(description = "工种id", example = "6971")
|
||||||
private Integer workTypeId;
|
private Integer workTypeId;
|
||||||
|
|
||||||
|
@Schema(description = "所属业务类型")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
@Schema(description = "工厂id", example = "6971")
|
@Schema(description = "工厂id", example = "6971")
|
||||||
private Long factoryId;
|
private Long factoryId;
|
||||||
|
|
||||||
|
@ -6,6 +6,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffRespVO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryPageReqVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryPageReqVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryRespVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryRespVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalarySaveReqVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalarySaveReqVO;
|
||||||
@ -49,8 +52,12 @@ public class StaffSalaryController {
|
|||||||
@Resource
|
@Resource
|
||||||
private FactoryInfoService factoryInfoService;
|
private FactoryInfoService factoryInfoService;
|
||||||
|
|
||||||
@Resource
|
@PostMapping("/create")
|
||||||
private LoanApi loanApi;
|
@Operation(summary = "创建员工工资")
|
||||||
|
@PreAuthorize("@ss.hasPermission('smartfactory:staff-salary:create')")
|
||||||
|
public CommonResult<Long> createStaff(@Valid @RequestBody StaffSalarySaveReqVO createReqVO) {
|
||||||
|
return success(staffSalaryService.createStaffSalary(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@Operation(summary = "更新厂区员工工资")
|
@Operation(summary = "更新厂区员工工资")
|
||||||
@ -83,15 +90,8 @@ public class StaffSalaryController {
|
|||||||
@PreAuthorize("@ss.hasPermission('smartfactory:staff-salary:query')")
|
@PreAuthorize("@ss.hasPermission('smartfactory:staff-salary:query')")
|
||||||
public CommonResult<StaffSalaryRespVO> getStaffSalary(@RequestParam("id") Long id) {
|
public CommonResult<StaffSalaryRespVO> getStaffSalary(@RequestParam("id") Long id) {
|
||||||
StaffSalaryDO staffSalary = staffSalaryService.getStaffSalary(id);
|
StaffSalaryDO staffSalary = staffSalaryService.getStaffSalary(id);
|
||||||
StaffSalaryRespVO respVO = BeanUtils.toBean(staffSalary, StaffSalaryRespVO.class);
|
|
||||||
if (respVO != null) {
|
|
||||||
|
|
||||||
// 获取员工借支信息
|
return success(BeanUtils.toBean(staffSalary, StaffSalaryRespVO.class));
|
||||||
LoanDTO loanDTO = loanApi.getByUserId(staffSalary.getStaffId()).getCheckedData();
|
|
||||||
// 设置员工借支余额
|
|
||||||
respVO.setLoanAmount(loanDTO.getRemainingAmount());
|
|
||||||
}
|
|
||||||
return success(respVO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get-list")
|
@GetMapping("/get-list")
|
||||||
|
@ -48,6 +48,11 @@ public class StaffDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer workTypeId;
|
private Integer workTypeId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属业务类型
|
||||||
|
*/
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工厂id
|
* 工厂id
|
||||||
*/
|
*/
|
||||||
|
@ -3,12 +3,18 @@ package cn.iocoder.yudao.module.smartfactory.dal.mysql.staff;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageReqVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryRespVO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO;
|
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffsalary.StaffSalaryDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工 Mapper
|
* 员工 Mapper
|
||||||
@ -20,8 +26,9 @@ public interface StaffMapper extends BaseMapperX<StaffDO> {
|
|||||||
|
|
||||||
default PageResult<StaffDO> selectPage(StaffPageReqVO reqVO) {
|
default PageResult<StaffDO> selectPage(StaffPageReqVO reqVO) {
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<StaffDO>()
|
return selectPage(reqVO, new LambdaQueryWrapperX<StaffDO>()
|
||||||
.eqIfPresent(StaffDO::getAge, reqVO.getAge())
|
|
||||||
.eqIfPresent(StaffDO::getWorkTypeId, reqVO.getWorkTypeId())
|
.eqIfPresent(StaffDO::getWorkTypeId, reqVO.getWorkTypeId())
|
||||||
|
.eqIfPresent(StaffDO::getFactoryId, reqVO.getFactoryId())
|
||||||
|
.likeIfPresent(StaffDO::getNickName, reqVO.getNickName())
|
||||||
.eqIfPresent(StaffDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(StaffDO::getStatus, reqVO.getStatus())
|
||||||
.orderByDesc(StaffDO::getId));
|
.orderByDesc(StaffDO::getId));
|
||||||
}
|
}
|
||||||
@ -40,4 +47,35 @@ public interface StaffMapper extends BaseMapperX<StaffDO> {
|
|||||||
* @return 员工信息列表
|
* @return 员工信息列表
|
||||||
*/
|
*/
|
||||||
List<StaffDO> getStaffDataV2(@Param("factoryId") Long factoryId);
|
List<StaffDO> getStaffDataV2(@Param("factoryId") Long factoryId);
|
||||||
|
|
||||||
|
default PageResult<StaffSalaryRespVO> selectSalaryPage(StaffSalaryPageReqVO pageReqVO) {
|
||||||
|
|
||||||
|
MPJLambdaWrapperX<StaffDO> query = new MPJLambdaWrapperX<StaffDO>()
|
||||||
|
.selectAs(StaffDO::getId, StaffSalaryRespVO::getStaffId)
|
||||||
|
.selectAs(StaffDO::getNickName, StaffSalaryRespVO::getStaffName)
|
||||||
|
.selectAs(StaffDO::getFactoryId, StaffSalaryRespVO::getFactoryId)
|
||||||
|
.selectAs(FactoryInfoDO::getName, StaffSalaryRespVO::getFactoryName)
|
||||||
|
.selectAs(StaffDO::getWorkTypeId, StaffSalaryRespVO::getWorkTypeId)
|
||||||
|
.selectAs(StaffSalaryDO::getMonth, StaffSalaryRespVO::getMonth)
|
||||||
|
.selectAs(StaffDO::getSalary, StaffSalaryRespVO::getSalary)
|
||||||
|
.selectAs(StaffSalaryDO::getId, StaffSalaryRespVO::getId)
|
||||||
|
.selectAs(StaffSalaryDO::getAttendanceDays, StaffSalaryRespVO::getAttendanceDays)
|
||||||
|
.selectAs(StaffSalaryDO::getPayableAmount, StaffSalaryRespVO::getPayableAmount)
|
||||||
|
.selectAs(StaffSalaryDO::getReturnAmount, StaffSalaryRespVO::getReturnAmount)
|
||||||
|
.selectAs(StaffSalaryDO::getDeductionAmount, StaffSalaryRespVO::getDeductionAmount)
|
||||||
|
.selectAs(StaffSalaryDO::getRealAmount, StaffSalaryRespVO::getRealAmount)
|
||||||
|
.selectAs(StaffSalaryDO::getDeductionItems, StaffSalaryRespVO::getDeductionItems)
|
||||||
|
.selectAs(StaffSalaryDO::getStatus, StaffSalaryRespVO::getStatus)
|
||||||
|
.selectAs(StaffSalaryDO::getCreateTime, StaffSalaryRespVO::getCreateTime);
|
||||||
|
query.leftJoin(StaffSalaryDO.class, on -> on
|
||||||
|
.eq(StaffDO::getId, StaffSalaryDO::getStaffId)
|
||||||
|
.eq(Objects.nonNull(pageReqVO.getMonth()), StaffSalaryDO::getMonth, pageReqVO.getMonth())
|
||||||
|
.eq(Objects.nonNull(pageReqVO.getStatus()), StaffSalaryDO::getStatus, pageReqVO.getStatus()));
|
||||||
|
query.leftJoin(FactoryInfoDO.class, FactoryInfoDO::getId, StaffDO::getFactoryId);
|
||||||
|
query.eqIfPresent(StaffDO::getFactoryId, pageReqVO.getFactoryId());
|
||||||
|
query.eqIfPresent(StaffDO::getWorkTypeId, pageReqVO.getWorkTypeId());
|
||||||
|
query.eqIfPresent(StaffDO::getId, pageReqVO.getStaffId());
|
||||||
|
|
||||||
|
return selectJoinPage(pageReqVO, StaffSalaryRespVO.class, query);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,17 +16,19 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageR
|
|||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO;
|
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staff.StaffMapper;
|
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staff.StaffMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
|
||||||
|
import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
import java.util.stream.Collectors;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.STAFF_NOT_EXISTS;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS;
|
||||||
|
|
||||||
@ -43,6 +45,9 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
@Resource
|
@Resource
|
||||||
private StaffMapper staffMapper;
|
private StaffMapper staffMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DictDataApi dictDataApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createStaff(StaffSaveReqVO createReqVO) {
|
public Long createStaff(StaffSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -54,7 +59,9 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateStaff(StaffSaveReqVO updateReqVO) {
|
public void updateStaff(StaffSaveReqVO updateReqVO) {
|
||||||
validateUserForCreateOrUpdate(updateReqVO.getId(), null, null, null);
|
if (staffMapper.selectById(updateReqVO.getId()) == null) {
|
||||||
|
throw exception(STAFF_NOT_EXISTS);
|
||||||
|
}
|
||||||
// 更新
|
// 更新
|
||||||
StaffDO updateObj = BeanUtils.toBean(updateReqVO, StaffDO.class);
|
StaffDO updateObj = BeanUtils.toBean(updateReqVO, StaffDO.class);
|
||||||
staffMapper.updateById(updateObj);
|
staffMapper.updateById(updateObj);
|
||||||
@ -66,7 +73,7 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
staffMapper.deleteById(id);
|
staffMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateUserForCreateOrUpdate(Long id, String username, String mobile, String idCard) {
|
private void validateUserForCreate(Long id, String username, String mobile, String idCard) {
|
||||||
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
|
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
|
||||||
DataPermissionUtils.executeIgnore(() -> {
|
DataPermissionUtils.executeIgnore(() -> {
|
||||||
|
|
||||||
@ -95,7 +102,18 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
@Override
|
@Override
|
||||||
public StaffDataRespVO getStaffData(Long factoryId) {
|
public StaffDataRespVO getStaffData(Long factoryId) {
|
||||||
StaffDataRespVO vo = new StaffDataRespVO();
|
StaffDataRespVO vo = new StaffDataRespVO();
|
||||||
List<StaffDO> dos = staffMapper.getStaffData(factoryId);
|
List<StaffDO> dos = staffMapper.selectList(new LambdaQueryWrapperX<StaffDO>()
|
||||||
|
.ne(StaffDO::getStatus, 0));
|
||||||
|
|
||||||
|
// 获取工种信息
|
||||||
|
List<DictDataRespDTO> workTypeVOs = dictDataApi.getDictDataList("user_work_type").getCheckedData();
|
||||||
|
Map<String, String> workTypeMap = workTypeVOs.stream().collect(Collectors.toMap(DictDataRespDTO::getValue, DictDataRespDTO::getLabel));
|
||||||
|
|
||||||
|
// 设置工种名称
|
||||||
|
dos.forEach(item -> {
|
||||||
|
item.setPostName(workTypeMap.getOrDefault(item.getWorkTypeId().toString(), ""));
|
||||||
|
});
|
||||||
|
|
||||||
vo.setTotal(dos.size());
|
vo.setTotal(dos.size());
|
||||||
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count());
|
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count());
|
||||||
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count());
|
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count());
|
||||||
@ -112,6 +130,14 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
public StaffDataRespVO getStaffDataV2(Long factoryId) {
|
public StaffDataRespVO getStaffDataV2(Long factoryId) {
|
||||||
StaffDataRespVO vo = new StaffDataRespVO();
|
StaffDataRespVO vo = new StaffDataRespVO();
|
||||||
List<StaffDO> dos = staffMapper.getStaffDataV2(factoryId);
|
List<StaffDO> dos = staffMapper.getStaffDataV2(factoryId);
|
||||||
|
// 获取工种信息
|
||||||
|
List<DictDataRespDTO> workTypeVOs = dictDataApi.getDictDataList("user_work_type").getCheckedData();
|
||||||
|
Map<String, String> workTypeMap = workTypeVOs.stream().collect(Collectors.toMap(DictDataRespDTO::getValue, DictDataRespDTO::getLabel));
|
||||||
|
|
||||||
|
// 设置工种名称
|
||||||
|
dos.forEach(item -> {
|
||||||
|
item.setPostName(workTypeMap.getOrDefault(item.getWorkTypeId().toString(), ""));
|
||||||
|
});
|
||||||
vo.setTotal(dos.size());
|
vo.setTotal(dos.size());
|
||||||
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count());
|
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count());
|
||||||
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count());
|
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count());
|
||||||
@ -137,7 +163,7 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
//校验,判断是否有不符合的原因
|
//校验,判断是否有不符合的原因
|
||||||
try {
|
try {
|
||||||
if (!updateSupport) {
|
if (!updateSupport) {
|
||||||
validateUserForCreateOrUpdate(null, importUser.getNickName(), null, importUser.getIdCard());
|
validateUserForCreate(null, importUser.getNickName(), null, importUser.getIdCard());
|
||||||
}
|
}
|
||||||
} catch (ServiceException ex) {
|
} catch (ServiceException ex) {
|
||||||
respVO.getFailureUsernames().put(importUser.getNickName(), ex.getMessage());
|
respVO.getFailureUsernames().put(importUser.getNickName(), ex.getMessage());
|
||||||
@ -167,11 +193,17 @@ public class StaffServiceImpl implements StaffService {
|
|||||||
updateUser.setWorkTypeId(Integer.valueOf(importUser.getWorkTypeName().split(":")[0]));
|
updateUser.setWorkTypeId(Integer.valueOf(importUser.getWorkTypeName().split(":")[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置业务类型
|
||||||
|
if (StrUtil.isNotEmpty(importUser.getBusinessTypeName())) {
|
||||||
|
|
||||||
|
updateUser.setBusinessType(Integer.valueOf(importUser.getBusinessTypeName().split(":")[0]));
|
||||||
|
}
|
||||||
|
|
||||||
// 判断如果不存在,在进行插入
|
// 判断如果不存在,在进行插入
|
||||||
if (updateSupport) {
|
if (updateSupport) {
|
||||||
StaffDO staffDO = staffMapper.selectOne(new LambdaQueryWrapperX<StaffDO>()
|
StaffDO staffDO = staffMapper.selectOne(new LambdaQueryWrapperX<StaffDO>()
|
||||||
.eq(StaffDO::getIdCard, importUser.getIdCard())
|
.eqIfPresent(StaffDO::getIdCard, importUser.getIdCard())
|
||||||
.eq(StaffDO::getNickName, importUser.getNickName()));
|
.eqIfPresent(StaffDO::getNickName, importUser.getNickName()));
|
||||||
|
|
||||||
updateUser.setId(staffDO.getId());
|
updateUser.setId(staffDO.getId());
|
||||||
staffMapper.updateById(updateUser);
|
staffMapper.updateById(updateUser);
|
||||||
|
@ -16,6 +16,13 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface StaffSalaryService {
|
public interface StaffSalaryService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建厂区员工工资
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 工资编号
|
||||||
|
*/
|
||||||
|
Long createStaffSalary(StaffSalarySaveReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新厂区员工工资
|
* 更新厂区员工工资
|
||||||
*
|
*
|
||||||
|
@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.Staf
|
|||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryRespVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalaryRespVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalarySaveReqVO;
|
import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalarySaveReqVO;
|
||||||
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffsalary.StaffSalaryDO;
|
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffsalary.StaffSalaryDO;
|
||||||
|
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staff.StaffMapper;
|
||||||
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staffsalary.StaffSalaryMapper;
|
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staffsalary.StaffSalaryMapper;
|
||||||
import cn.iocoder.yudao.module.system.api.loan.LoanApi;
|
import cn.iocoder.yudao.module.system.api.loan.LoanApi;
|
||||||
import cn.iocoder.yudao.module.system.api.loan.dto.LoanDTO;
|
import cn.iocoder.yudao.module.system.api.loan.dto.LoanDTO;
|
||||||
@ -19,6 +20,7 @@ import java.math.BigDecimal;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.STAFF_SALARY_EXISTS;
|
||||||
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.STAFF_SALARY_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.STAFF_SALARY_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,9 +35,30 @@ public class StaffSalaryServiceImpl implements StaffSalaryService {
|
|||||||
@Resource
|
@Resource
|
||||||
private StaffSalaryMapper staffSalaryMapper;
|
private StaffSalaryMapper staffSalaryMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StaffMapper staffMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private LoanApi loanApi;
|
private LoanApi loanApi;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createStaffSalary(StaffSalarySaveReqVO createReqVO) {
|
||||||
|
|
||||||
|
// 校验当前月份工资是否存在
|
||||||
|
Long count = staffSalaryMapper.selectCount(new LambdaQueryWrapperX<StaffSalaryDO>()
|
||||||
|
.eq(StaffSalaryDO::getStaffId, createReqVO.getStaffId())
|
||||||
|
.eq(StaffSalaryDO::getMonth, createReqVO.getMonth()));
|
||||||
|
if (count > 0L) {
|
||||||
|
throw exception(STAFF_SALARY_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 插入
|
||||||
|
StaffSalaryDO staffSalaryDO = BeanUtils.toBean(createReqVO, StaffSalaryDO.class);
|
||||||
|
staffSalaryMapper.insert(staffSalaryDO);
|
||||||
|
|
||||||
|
return staffSalaryDO.getId();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateStaffSalary(StaffSalarySaveReqVO updateReqVO) {
|
public void updateStaffSalary(StaffSalarySaveReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
@ -68,8 +91,13 @@ public class StaffSalaryServiceImpl implements StaffSalaryService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<StaffSalaryRespVO> getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) {
|
public PageResult<StaffSalaryRespVO> getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) {
|
||||||
|
|
||||||
|
if (pageReqVO.getMonth() != null) {
|
||||||
|
return staffMapper.selectSalaryPage(pageReqVO);
|
||||||
|
}else {
|
||||||
return staffSalaryMapper.selectSalaryPage(pageReqVO);
|
return staffSalaryMapper.selectSalaryPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateStatus(StaffSalarySaveReqVO updateReqVO) {
|
public void updateStatus(StaffSalarySaveReqVO updateReqVO) {
|
||||||
|
@ -37,18 +37,15 @@
|
|||||||
ext.work_type as workType,
|
ext.work_type as workType,
|
||||||
b.factory_id as factoryId,
|
b.factory_id as factoryId,
|
||||||
a.idcard as idCard,
|
a.idcard as idCard,
|
||||||
a.status as status,
|
a.status as status
|
||||||
d.label as postName
|
|
||||||
FROM
|
FROM
|
||||||
system_users AS a
|
system_users AS a
|
||||||
LEFT JOIN system_users_ext AS ext ON a.id = ext.user_id
|
LEFT JOIN system_users_ext AS ext ON a.id = ext.user_id
|
||||||
LEFT JOIN system_dept AS b ON a.dept_id = b.id
|
LEFT JOIN system_dept AS b ON a.dept_id = b.id
|
||||||
LEFT JOIN sf_factory_info AS c ON b.factory_id = c.id
|
LEFT JOIN sf_factory_info AS c ON b.factory_id = c.id
|
||||||
left join system_dict_data as d on ext.work_type = d.value
|
|
||||||
<where>
|
<where>
|
||||||
a.user_type = 2
|
a.user_type = 2
|
||||||
and a.deleted = 0
|
and a.deleted = 0
|
||||||
and d.dict_type = 'user_work_type'
|
|
||||||
<if test="factoryId != null">
|
<if test="factoryId != null">
|
||||||
and b.factory_id = #{factoryId}
|
and b.factory_id = #{factoryId}
|
||||||
</if>
|
</if>
|
||||||
|
Loading…
Reference in New Issue
Block a user