diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java index c7331d84..a805986f 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java @@ -33,9 +33,7 @@ import java.text.DecimalFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -213,11 +211,14 @@ public class FactoryDataController { List sizeDOS = sizeService.getListSize(); List size = sizeDOS.stream().map(info -> info.getId() + ":" + info.getName()).collect(Collectors.toList()); + Map> mapDropDown = new HashMap<>(); + mapDropDown.put(0, factory); + mapDropDown.put(2, size); + // 输出 ExcelUtils.write(response, "出入库数据导入模板.xls", "详情", FactoryDataImportVO.class, null, - 0, factory, - 2, size); + mapDropDown); } @PostMapping("/import") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java index 357813c0..bc314a8c 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java @@ -1,5 +1,6 @@ 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.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -26,10 +27,15 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; 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; @Tag(name = "管理后台 - 员工") @@ -75,9 +81,9 @@ public class StaffController { @Operation(summary = "获得员工") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('factory:staff:query')") - public CommonResult getStaff(@RequestParam("id") Long id) { + public CommonResult getStaff(@RequestParam("id") Long id) { StaffDO staff = staffService.getStaff(id); - return success(BeanUtils.toBean(staff, StaffRespVO.class)); + return success(staff); } @GetMapping("/getListByFactory") @@ -96,7 +102,19 @@ public class StaffController { @PreAuthorize("@ss.hasPermission('factory:staff:query')") public CommonResult> getStaffPage(@Valid StaffPageReqVO pageReqVO) { PageResult pageResult = staffService.getStaffPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, StaffRespVO.class)); + PageResult result = BeanUtils.toBean(pageResult, StaffRespVO.class); + if (CollUtil.isNotEmpty(result.getList())) { + + // 获取工厂详情 + Set factoryIds = convertSet(result.getList(), StaffRespVO::getFactoryId); + Map 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") @@ -128,11 +146,21 @@ public class StaffController { .map(item -> item.getValue() + ":" + item.getLabel()) .collect(Collectors.toList()); + // 获取业务类型名称 + List businessTypeVOs = dictDataApi.getDictDataList("system_settlement_type").getCheckedData(); + List businessTypeName = businessTypeVOs.stream() + .map(item -> item.getValue() + ":" + item.getLabel()) + .collect(Collectors.toList()); + + Map> mapDropDown = new HashMap<>(); + mapDropDown.put(1, factoryName); + mapDropDown.put(2, workTypeName); + mapDropDown.put(3, businessTypeName); + // 输出 ExcelUtils.write(response, "工人导入模板.xlsx", "工人列表", StaffImportExcelVO.class, null, - 1, factoryName, - 2, workTypeName); + mapDropDown); } @PostMapping("/import") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffImportExcelVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffImportExcelVO.java index af42ec3a..f384d2c5 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffImportExcelVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffImportExcelVO.java @@ -30,6 +30,9 @@ public class StaffImportExcelVO { @ExcelProperty("工种名称") private String workTypeName; + @ExcelProperty("业务类型名称") + private String businessTypeName; + @ExcelProperty("手机号码") @Mobile private String mobile; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffPageReqVO.java index dc6dbc10..4a20ce13 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffPageReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffPageReqVO.java @@ -15,15 +15,12 @@ public class StaffPageReqVO extends PageParam { @Schema(description = "员工昵称") private String nickName; - @Schema(description = "年龄") - private Integer age; - - @Schema(description = "用户性别(0男 1女 2未知)") - private Integer sex; - @Schema(description = "工种id", example = "6971") private Integer workTypeId; + @Schema(description = "所属业务类型") + private Integer businessType; + @Schema(description = "工厂id", example = "6971") private Long factoryId; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffRespVO.java index 0d0f7506..cc1f3e7f 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffRespVO.java @@ -31,6 +31,9 @@ public class StaffRespVO { @Schema(description = "工种id", example = "6971") private Integer workTypeId; + @Schema(description = "所属业务类型") + private Integer businessType; + @Schema(description = "工厂id", example = "6971") private Long factoryId; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffSaveReqVO.java index 7e75f02f..a16ce756 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffSaveReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/vo/StaffSaveReqVO.java @@ -27,6 +27,9 @@ public class StaffSaveReqVO { @Schema(description = "工种id", example = "6971") private Integer workTypeId; + @Schema(description = "所属业务类型") + private Integer businessType; + @Schema(description = "工厂id", example = "6971") private Long factoryId; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/StaffSalaryController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/StaffSalaryController.java index 3d22c139..9e0ded4f 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/StaffSalaryController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffsalary/StaffSalaryController.java @@ -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.excel.core.util.ExcelUtils; 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.StaffSalaryRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo.StaffSalarySaveReqVO; @@ -49,8 +52,12 @@ public class StaffSalaryController { @Resource private FactoryInfoService factoryInfoService; - @Resource - private LoanApi loanApi; + @PostMapping("/create") + @Operation(summary = "创建员工工资") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-salary:create')") + public CommonResult createStaff(@Valid @RequestBody StaffSalarySaveReqVO createReqVO) { + return success(staffSalaryService.createStaffSalary(createReqVO)); + } @PutMapping("/update") @Operation(summary = "更新厂区员工工资") @@ -83,15 +90,8 @@ public class StaffSalaryController { @PreAuthorize("@ss.hasPermission('smartfactory:staff-salary:query')") public CommonResult getStaffSalary(@RequestParam("id") Long id) { StaffSalaryDO staffSalary = staffSalaryService.getStaffSalary(id); - StaffSalaryRespVO respVO = BeanUtils.toBean(staffSalary, StaffSalaryRespVO.class); - if (respVO != null) { - // 获取员工借支信息 - LoanDTO loanDTO = loanApi.getByUserId(staffSalary.getStaffId()).getCheckedData(); - // 设置员工借支余额 - respVO.setLoanAmount(loanDTO.getRemainingAmount()); - } - return success(respVO); + return success(BeanUtils.toBean(staffSalary, StaffSalaryRespVO.class)); } @GetMapping("/get-list") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staff/StaffDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staff/StaffDO.java index 346a27b8..95f9f8ab 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staff/StaffDO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staff/StaffDO.java @@ -48,6 +48,11 @@ public class StaffDO extends BaseDO { */ private Integer workTypeId; + /** + * 所属业务类型 + */ + private Integer businessType; + /** * 工厂id */ 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 26903be2..9c80bbce 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 @@ -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.mybatis.core.mapper.BaseMapperX; 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.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.staffsalary.StaffSalaryDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Objects; /** * 员工 Mapper @@ -20,8 +26,9 @@ public interface StaffMapper extends BaseMapperX { default PageResult selectPage(StaffPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(StaffDO::getAge, reqVO.getAge()) .eqIfPresent(StaffDO::getWorkTypeId, reqVO.getWorkTypeId()) + .eqIfPresent(StaffDO::getFactoryId, reqVO.getFactoryId()) + .likeIfPresent(StaffDO::getNickName, reqVO.getNickName()) .eqIfPresent(StaffDO::getStatus, reqVO.getStatus()) .orderByDesc(StaffDO::getId)); } @@ -40,4 +47,35 @@ public interface StaffMapper extends BaseMapperX { * @return 员工信息列表 */ List getStaffDataV2(@Param("factoryId") Long factoryId); + + default PageResult selectSalaryPage(StaffSalaryPageReqVO pageReqVO) { + + MPJLambdaWrapperX query = new MPJLambdaWrapperX() + .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); + } } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java index 54c6fb1c..5dfcc890 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java @@ -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.dal.dataobject.staff.StaffDO; 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.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; 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_USERNAME_EXISTS; @@ -43,6 +45,9 @@ public class StaffServiceImpl implements StaffService { @Resource private StaffMapper staffMapper; + @Resource + private DictDataApi dictDataApi; + @Override public Long createStaff(StaffSaveReqVO createReqVO) { // 插入 @@ -54,7 +59,9 @@ public class StaffServiceImpl implements StaffService { @Override 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); staffMapper.updateById(updateObj); @@ -66,7 +73,7 @@ public class StaffServiceImpl implements StaffService { 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(() -> { @@ -95,7 +102,18 @@ public class StaffServiceImpl implements StaffService { @Override public StaffDataRespVO getStaffData(Long factoryId) { StaffDataRespVO vo = new StaffDataRespVO(); - List dos = staffMapper.getStaffData(factoryId); + List dos = staffMapper.selectList(new LambdaQueryWrapperX() + .ne(StaffDO::getStatus, 0)); + + // 获取工种信息 + List workTypeVOs = dictDataApi.getDictDataList("user_work_type").getCheckedData(); + Map 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.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).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) { StaffDataRespVO vo = new StaffDataRespVO(); List dos = staffMapper.getStaffDataV2(factoryId); + // 获取工种信息 + List workTypeVOs = dictDataApi.getDictDataList("user_work_type").getCheckedData(); + Map 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.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count()); vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count()); @@ -137,7 +163,7 @@ public class StaffServiceImpl implements StaffService { //校验,判断是否有不符合的原因 try { if (!updateSupport) { - validateUserForCreateOrUpdate(null, importUser.getNickName(), null, importUser.getIdCard()); + validateUserForCreate(null, importUser.getNickName(), null, importUser.getIdCard()); } } catch (ServiceException ex) { respVO.getFailureUsernames().put(importUser.getNickName(), ex.getMessage()); @@ -167,11 +193,17 @@ public class StaffServiceImpl implements StaffService { updateUser.setWorkTypeId(Integer.valueOf(importUser.getWorkTypeName().split(":")[0])); } + // 设置业务类型 + if (StrUtil.isNotEmpty(importUser.getBusinessTypeName())) { + + updateUser.setBusinessType(Integer.valueOf(importUser.getBusinessTypeName().split(":")[0])); + } + // 判断如果不存在,在进行插入 if (updateSupport) { StaffDO staffDO = staffMapper.selectOne(new LambdaQueryWrapperX() - .eq(StaffDO::getIdCard, importUser.getIdCard()) - .eq(StaffDO::getNickName, importUser.getNickName())); + .eqIfPresent(StaffDO::getIdCard, importUser.getIdCard()) + .eqIfPresent(StaffDO::getNickName, importUser.getNickName())); updateUser.setId(staffDO.getId()); staffMapper.updateById(updateUser); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryService.java index b122440b..fa0666d2 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffsalary/StaffSalaryService.java @@ -16,6 +16,13 @@ import java.util.List; */ public interface StaffSalaryService { + /** + * 创建厂区员工工资 + * @param createReqVO 创建信息 + * @return 工资编号 + */ + Long createStaffSalary(StaffSalarySaveReqVO createReqVO); + /** * 更新厂区员工工资 * 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 7cfd0778..f2704092 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 @@ -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.StaffSalarySaveReqVO; 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.system.api.loan.LoanApi; import cn.iocoder.yudao.module.system.api.loan.dto.LoanDTO; @@ -19,6 +20,7 @@ import java.math.BigDecimal; import java.util.List; 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; /** @@ -33,9 +35,30 @@ public class StaffSalaryServiceImpl implements StaffSalaryService { @Resource private StaffSalaryMapper staffSalaryMapper; + @Resource + private StaffMapper staffMapper; + @Resource private LoanApi loanApi; + @Override + public Long createStaffSalary(StaffSalarySaveReqVO createReqVO) { + + // 校验当前月份工资是否存在 + Long count = staffSalaryMapper.selectCount(new LambdaQueryWrapperX() + .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 public void updateStaffSalary(StaffSalarySaveReqVO updateReqVO) { // 校验存在 @@ -68,7 +91,12 @@ public class StaffSalaryServiceImpl implements StaffSalaryService { @Override public PageResult getStaffSalaryPage(StaffSalaryPageReqVO pageReqVO) { - return staffSalaryMapper.selectSalaryPage(pageReqVO); + + if (pageReqVO.getMonth() != null) { + return staffMapper.selectSalaryPage(pageReqVO); + }else { + return staffSalaryMapper.selectSalaryPage(pageReqVO); + } } @Override diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staff/StaffMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staff/StaffMapper.xml index d502a30e..c3bc4930 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staff/StaffMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staff/StaffMapper.xml @@ -37,18 +37,15 @@ ext.work_type as workType, b.factory_id as factoryId, a.idcard as idCard, - a.status as status, - d.label as postName + a.status as status FROM system_users AS a 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 sf_factory_info AS c ON b.factory_id = c.id - left join system_dict_data as d on ext.work_type = d.value a.user_type = 2 and a.deleted = 0 - and d.dict_type = 'user_work_type' and b.factory_id = #{factoryId}